ETH Price: $3,271.99 (-4.21%)
Gas: 10 Gwei

Token

Tower Of Babel (BABEL)
 

Overview

Max Total Supply

1,000,000,000,000 BABEL

Holders

78

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
0xbytecode.eth
Balance
7,755,741.292283745 BABEL

Value
$0.00
0x5917B7523E0cdDa6B4E2c88Fe6e1C70138E91ac7
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
TowerOfBabel

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-06-27
*/

// Telegram:  https://t.me/TowerOfBabelDAO
// Website:  https://babeldao.xyz/
// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.4;

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

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

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

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

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

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

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

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

}

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

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

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

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

    function renounceOwnership() public virtual onlyOwner {
        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 TowerOfBabel is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping (address => uint) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1 * 10**12 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    uint256 private _feeAddr1;
    uint256 private _feeAddr2;
    uint256 private _feeAddr3;
    uint256 private fee1=2;
    uint256 private fee2=4;
    uint256 private liqfee=1;
    uint256 private burn=1;
    uint256 private time;
    uint256 private feemax=10;
    
    address payable private _feeAddrWallet1;
    address payable private _feeAddrWallet2;
    
    string private constant _name = "Tower Of Babel";
    string private constant _symbol = "BABEL";
    uint8 private constant _decimals = 9;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    uint256 private _maxTxAmount = _tTotal;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor () payable {
        _feeAddrWallet1 = payable(msg.sender);
        _feeAddrWallet2 = payable(0x29f9EE0870c907154bA0581489EFc0fbAF9ab7ad);
        _rOwned[msg.sender] = _rTotal.div(100).mul(5);
        _rOwned[address(this)] = _rTotal.div(100).mul(95);
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_feeAddrWallet1] = true;
        _isExcludedFromFee[_feeAddrWallet2] = true;
        
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());

        emit Transfer(address(0),address(this),_tTotal.div(100).mul(95));
        emit Transfer(address(0),msg.sender,_tTotal.div(100).mul(5));
    }

    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 tokenFromReflection(_rOwned[account]);
    }

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

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

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

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

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        cooldownEnabled = onoff;
    }
    
    function reduceFees(uint8 _fee1,uint8 _fee2) external {
        
        require(_msgSender() == _feeAddrWallet1);
        require(_fee1 <= feemax && _fee2 <= feemax,"Cannot increase fees beyond max");
        fee1 = _fee1;
        fee2 = _fee2;
    }

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        _feeAddr1 = 0;
        _feeAddr2 = fee1;
        _feeAddr3 = 0;
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] && cooldownEnabled) {
                // Cooldown
                require(amount <= _maxTxAmount);
                require(cooldown[to] < block.timestamp);
                cooldown[to] = block.timestamp + (30 seconds);
            }
            
            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && swapEnabled) {
                require(block.timestamp > time,"Sells prohibited for the first 5 minutes");
                swapAndLiquify(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
		if (to == uniswapV2Pair && from != address(uniswapV2Router) && ! _isExcludedFromFee[from]) {
                _feeAddr1 = 1;
                _feeAddr2 = fee2 + liqfee;
                _feeAddr3 = burn;
            }
        _tokenTransfer(from,to,amount);
    }

    function swapAndLiquify(uint256 tokenAmount) private {
        
        uint256 sum = _feeAddr1.add(fee1).add(fee2).add(liqfee);
        uint256 liqTokens = tokenAmount.div(sum).mul(liqfee);
        uint256 swapTotal = tokenAmount.sub(liqTokens);
        swapTokensForEth(swapTotal);
        addLiquidity(liqTokens,address(this).balance.mul(liqfee).div(sum),_feeAddrWallet1);
    }

    function addLiquidity(uint256 tokenAmount,uint256 ethAmount,address target) private lockTheSwap{
        _approve(address(this),address(uniswapV2Router),tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,target,block.timestamp);
    }


    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
        
    function sendETHToFee(uint256 amount) private {
        _feeAddrWallet1.transfer(amount.div(3));
        _feeAddrWallet2.transfer(amount.div(3).mul(2));
    }
    
    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        
        addLiquidity(balanceOf(address(this)),address(this).balance,_feeAddrWallet1);
        swapEnabled = true;
        cooldownEnabled = true;
        _maxTxAmount = _tTotal.mul(2).div(100);
        tradingOpen = true;
        time = block.timestamp + (5 minutes);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }
    
    function setBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
    
    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
        
    function _tokenTransfer(address sender, address recipient, uint256 amount) private {
        _transferStandard(sender, recipient, amount);
    }

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

    function _burn(uint256 tBurn) private{
        uint256 currentRate = _getRate();
        uint256 rBurn = tBurn.mul(currentRate);
        _rOwned[address(0)] = _rOwned[address(0)].add(rBurn);
    }

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

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

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

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

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

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liftMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_fee1","type":"uint8"},{"internalType":"uint8","name":"_fee2","type":"uint8"}],"name":"reduceFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052683635c9adc5dea000006000196200001d919062000c86565b6000196200002c919062000bd7565b6008556002600d556004600e556001600f556001601055600a6012556000601660156101000a81548160ff02191690831515021790555060006016806101000a81548160ff0219169083151502179055506000601660176101000a81548160ff021916908315150217905550683635c9adc5dea000006017556000620000b76200085060201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35033601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507329f9ee0870c907154ba0581489efc0fbaf9ab7ad601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200022260056200020e60646008546200085860201b620010191790919060201c565b620008aa60201b620010631790919060201c565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200029c605f6200028860646008546200085860201b620010191790919060201c565b620008aa60201b620010631790919060201c565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160056000620002f56200092e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200055057600080fd5b505afa15801562000565573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200058b9190620009d6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200061057600080fd5b505afa15801562000625573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200064b9190620009d6565b6040518363ffffffff1660e01b81526004016200066a92919062000a92565b602060405180830381600087803b1580156200068557600080fd5b505af11580156200069a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006c09190620009d6565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200078e605f6200077a6064683635c9adc5dea000006200085860201b620010191790919060201c565b620008aa60201b620010631790919060201c565b6040516200079d919062000b05565b60405180910390a33373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200083360056200081f6064683635c9adc5dea000006200085860201b620010191790919060201c565b620008aa60201b620010631790919060201c565b60405162000842919062000b05565b60405180910390a362000d9b565b600033905090565b6000620008a283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200095760201b60201c565b905092915050565b600080831415620008bf576000905062000928565b60008284620008cf919062000b76565b9050828482620008e0919062000b3e565b1462000923576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200091a9062000ae3565b60405180910390fd5b809150505b92915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008083118290620009a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000998919062000abf565b60405180910390fd5b5060008385620009b2919062000b3e565b9050809150509392505050565b600081519050620009d08162000d81565b92915050565b600060208284031215620009ef57620009ee62000d1c565b5b6000620009ff84828501620009bf565b91505092915050565b62000a138162000c12565b82525050565b600062000a268262000b22565b62000a32818562000b2d565b935062000a4481856020860162000c50565b62000a4f8162000d21565b840191505092915050565b600062000a6960218362000b2d565b915062000a768262000d32565b604082019050919050565b62000a8c8162000c46565b82525050565b600060408201905062000aa9600083018562000a08565b62000ab8602083018462000a08565b9392505050565b6000602082019050818103600083015262000adb818462000a19565b905092915050565b6000602082019050818103600083015262000afe8162000a5a565b9050919050565b600060208201905062000b1c600083018462000a81565b92915050565b600081519050919050565b600082825260208201905092915050565b600062000b4b8262000c46565b915062000b588362000c46565b92508262000b6b5762000b6a62000ced565b5b828204905092915050565b600062000b838262000c46565b915062000b908362000c46565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000bcc5762000bcb62000cbe565b5b828202905092915050565b600062000be48262000c46565b915062000bf18362000c46565b92508282101562000c075762000c0662000cbe565b5b828203905092915050565b600062000c1f8262000c26565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562000c7057808201518184015260208101905062000c53565b8381111562000c80576000848401525b50505050565b600062000c938262000c46565b915062000ca08362000c46565b92508262000cb35762000cb262000ced565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b62000d8c8162000c12565b811462000d9857600080fd5b50565b61377f8062000dab6000396000f3fe6080604052600436106101185760003560e01c8063715018a6116100a0578063a9059cbb11610064578063a9059cbb14610372578063b515566a146103af578063c3c8cd80146103d8578063c9567bf9146103ef578063dd62ed3e146104065761011f565b8063715018a6146102c55780638da5cb5b146102dc578063950406c31461030757806395d89b411461031e578063a769958a146103495761011f565b8063273123b7116100e7578063273123b7146101f4578063313ce5671461021d5780635932ead1146102485780636fc3eaec1461027157806370a08231146102885761011f565b806306fdde0314610124578063095ea7b31461014f57806318160ddd1461018c57806323b872dd146101b75761011f565b3661011f57005b600080fd5b34801561013057600080fd5b50610139610443565b6040516101469190612dc7565b60405180910390f35b34801561015b57600080fd5b50610176600480360381019061017191906128e4565b610480565b6040516101839190612dac565b60405180910390f35b34801561019857600080fd5b506101a161049e565b6040516101ae9190612f69565b60405180910390f35b3480156101c357600080fd5b506101de60048036038101906101d99190612891565b6104af565b6040516101eb9190612dac565b60405180910390f35b34801561020057600080fd5b5061021b600480360381019061021691906127f7565b610588565b005b34801561022957600080fd5b50610232610678565b60405161023f9190612fde565b60405180910390f35b34801561025457600080fd5b5061026f600480360381019061026a919061296d565b610681565b005b34801561027d57600080fd5b50610286610733565b005b34801561029457600080fd5b506102af60048036038101906102aa91906127f7565b6107a5565b6040516102bc9190612f69565b60405180910390f35b3480156102d157600080fd5b506102da6107f6565b005b3480156102e857600080fd5b506102f1610949565b6040516102fe9190612d07565b60405180910390f35b34801561031357600080fd5b5061031c610972565b005b34801561032a57600080fd5b50610333610a19565b6040516103409190612dc7565b60405180910390f35b34801561035557600080fd5b50610370600480360381019061036b9190612a1a565b610a56565b005b34801561037e57600080fd5b50610399600480360381019061039491906128e4565b610b28565b6040516103a69190612dac565b60405180910390f35b3480156103bb57600080fd5b506103d660048036038101906103d19190612924565b610b46565b005b3480156103e457600080fd5b506103ed610c70565b005b3480156103fb57600080fd5b50610404610cea565b005b34801561041257600080fd5b5061042d60048036038101906104289190612851565b610f92565b60405161043a9190612f69565b60405180910390f35b60606040518060400160405280600e81526020017f546f776572204f6620426162656c000000000000000000000000000000000000815250905090565b600061049461048d6110de565b84846110e6565b6001905092915050565b6000683635c9adc5dea00000905090565b60006104bc8484846112b1565b61057d846104c86110de565b6105788560405180606001604052806028815260200161372260289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061052e6110de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119189092919063ffffffff16565b6110e6565b600190509392505050565b6105906110de565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461061d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061490612ec9565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b6106896110de565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070d90612ec9565b60405180910390fd5b80601660176101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107746110de565b73ffffffffffffffffffffffffffffffffffffffff161461079457600080fd5b60004790506107a28161197c565b50565b60006107ef600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8a565b9050919050565b6107fe6110de565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088290612ec9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61097a6110de565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fe90612ec9565b60405180910390fd5b683635c9adc5dea00000601781905550565b60606040518060400160405280600581526020017f424142454c000000000000000000000000000000000000000000000000000000815250905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a976110de565b73ffffffffffffffffffffffffffffffffffffffff1614610ab757600080fd5b6012548260ff1611158015610ad157506012548160ff1611155b610b10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0790612e69565b60405180910390fd5b8160ff16600d819055508060ff16600e819055505050565b6000610b3c610b356110de565b84846112b1565b6001905092915050565b610b4e6110de565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd290612ec9565b60405180910390fd5b60005b8151811015610c6c57600160066000848481518110610c0057610bff613326565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610c649061327f565b915050610bde565b5050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cb16110de565b73ffffffffffffffffffffffffffffffffffffffff1614610cd157600080fd5b6000610cdc306107a5565b9050610ce781611af8565b50565b610cf26110de565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7690612ec9565b60405180910390fd5b601660149054906101000a900460ff1615610dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc690612f49565b60405180910390fd5b610e04610ddb306107a5565b47601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611d80565b60016016806101000a81548160ff0219169083151502179055506001601660176101000a81548160ff021916908315150217905550610e696064610e5b6002683635c9adc5dea0000061106390919063ffffffff16565b61101990919063ffffffff16565b6017819055506001601660146101000a81548160ff02191690831515021790555061012c42610e98919061309f565b601181905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610f3d929190612d22565b602060405180830381600087803b158015610f5757600080fd5b505af1158015610f6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8f919061299a565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600061105b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ea4565b905092915050565b60008083141561107657600090506110d8565b600082846110849190613126565b905082848261109391906130f5565b146110d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ca90612ea9565b60405180910390fd5b809150505b92915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114d90612f29565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bd90612e49565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112a49190612f69565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131890612f09565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611391576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138890612e09565b60405180910390fd5b600081116113d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cb90612ee9565b60405180910390fd5b6000600a81905550600d54600b819055506000600c819055506113f5610949565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156114635750611433610949565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156117da57600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561150c5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61151557600080fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156115c05750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156116165750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561162e5750601660179054906101000a900460ff165b156116de5760175481111561164257600080fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061168d57600080fd5b601e4261169a919061309f565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60006116e9306107a5565b9050601660159054906101000a900460ff161580156117565750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561176c575060168054906101000a900460ff165b156117d85760115442116117b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ac90612de9565b60405180910390fd5b6117be81611f07565b600047905060008111156117d6576117d54761197c565b5b505b505b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156118855750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156118db5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611908576001600a81905550600f54600e546118f8919061309f565b600b81905550601054600c819055505b611913838383611fee565b505050565b6000838311158290611960576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119579190612dc7565b60405180910390fd5b506000838561196f9190613180565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6119cc60038461101990919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156119f7573d6000803e3d6000fd5b50601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611a5b6002611a4d60038661101990919063ffffffff16565b61106390919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611a86573d6000803e3d6000fd5b5050565b6000600854821115611ad1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac890612e29565b60405180910390fd5b6000611adb611ffe565b9050611af0818461101990919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611b3057611b2f613355565b5b604051908082528060200260200182016040528015611b5e5781602001602082028036833780820191505090505b5090503081600081518110611b7657611b75613326565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611c1857600080fd5b505afa158015611c2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c509190612824565b81600181518110611c6457611c63613326565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ccb30601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846110e6565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611d2f959493929190612f84565b600060405180830381600087803b158015611d4957600080fd5b505af1158015611d5d573d6000803e3d6000fd5b50505050506000601660156101000a81548160ff02191690831515021790555050565b6001601660156101000a81548160ff021916908315150217905550611dc830601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856110e6565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308660008087426040518863ffffffff1660e01b8152600401611e2f96959493929190612d4b565b6060604051808303818588803b158015611e4857600080fd5b505af1158015611e5c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611e8191906129c7565b5050506000601660156101000a81548160ff021916908315150217905550505050565b60008083118290611eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee29190612dc7565b60405180910390fd5b5060008385611efa91906130f5565b9050809150509392505050565b6000611f48600f54611f3a600e54611f2c600d54600a5461202990919063ffffffff16565b61202990919063ffffffff16565b61202990919063ffffffff16565b90506000611f73600f54611f65848661101990919063ffffffff16565b61106390919063ffffffff16565b90506000611f8a828561208790919063ffffffff16565b9050611f9581611af8565b611fe882611fc085611fb2600f544761106390919063ffffffff16565b61101990919063ffffffff16565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611d80565b50505050565b611ff98383836120d1565b505050565b600080600061200b6122aa565b91509150612022818361101990919063ffffffff16565b9250505090565b6000808284612038919061309f565b90508381101561207d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207490612e89565b60405180910390fd5b8091505092915050565b60006120c983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611918565b905092915050565b60008060008060008060006120e58861230c565b965096509650965096509650965061214587600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461208790919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121da86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202990919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061222682612375565b61222f81612432565b61223985846124ef565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516122969190612f69565b60405180910390a350505050505050505050565b600080600060085490506000683635c9adc5dea0000090506122e0683635c9adc5dea0000060085461101990919063ffffffff16565b8210156122ff57600854683635c9adc5dea00000935093505050612308565b81819350935050505b9091565b600080600080600080600080600080600061232f8c600a54600b54600c54612529565b935093509350935060008060006123488f878787612606565b925092509250828282898989899d509d509d509d509d509d509d5050505050505050919395979092949650565b600061237f611ffe565b90506000612396828461106390919063ffffffff16565b90506123ea81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202990919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b600061243c611ffe565b90506000612453828461106390919063ffffffff16565b90506124a781600260008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202990919063ffffffff16565b600260008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6125048260085461208790919063ffffffff16565b60088190555061251f8160095461202990919063ffffffff16565b6009819055505050565b600080600080600061255760646125498a8c61106390919063ffffffff16565b61101990919063ffffffff16565b9050600061258160646125738a8d61106390919063ffffffff16565b61101990919063ffffffff16565b905060006125ab606461259d8a8e61106390919063ffffffff16565b61101990919063ffffffff16565b905060006125c2848d61208790919063ffffffff16565b90506125e9826125db858461208790919063ffffffff16565b61208790919063ffffffff16565b905080848484975097509750975050505050945094509450949050565b600080600080612614611ffe565b9050600061262b828a61106390919063ffffffff16565b90506000612642838a61106390919063ffffffff16565b90506000612659848a61106390919063ffffffff16565b90506000612670858a61106390919063ffffffff16565b905060006126ab8261269d8561268f888a61208790919063ffffffff16565b61208790919063ffffffff16565b61208790919063ffffffff16565b90508481859850985098505050505050509450945094915050565b60006126d96126d48461301e565b612ff9565b905080838252602082019050828560208602820111156126fc576126fb613389565b5b60005b8581101561272c57816127128882612736565b8452602084019350602083019250506001810190506126ff565b5050509392505050565b600081359050612745816136c5565b92915050565b60008151905061275a816136c5565b92915050565b600082601f83011261277557612774613384565b5b81356127858482602086016126c6565b91505092915050565b60008135905061279d816136dc565b92915050565b6000815190506127b2816136dc565b92915050565b6000813590506127c7816136f3565b92915050565b6000815190506127dc816136f3565b92915050565b6000813590506127f18161370a565b92915050565b60006020828403121561280d5761280c613393565b5b600061281b84828501612736565b91505092915050565b60006020828403121561283a57612839613393565b5b60006128488482850161274b565b91505092915050565b6000806040838503121561286857612867613393565b5b600061287685828601612736565b925050602061288785828601612736565b9150509250929050565b6000806000606084860312156128aa576128a9613393565b5b60006128b886828701612736565b93505060206128c986828701612736565b92505060406128da868287016127b8565b9150509250925092565b600080604083850312156128fb576128fa613393565b5b600061290985828601612736565b925050602061291a858286016127b8565b9150509250929050565b60006020828403121561293a57612939613393565b5b600082013567ffffffffffffffff8111156129585761295761338e565b5b61296484828501612760565b91505092915050565b60006020828403121561298357612982613393565b5b60006129918482850161278e565b91505092915050565b6000602082840312156129b0576129af613393565b5b60006129be848285016127a3565b91505092915050565b6000806000606084860312156129e0576129df613393565b5b60006129ee868287016127cd565b93505060206129ff868287016127cd565b9250506040612a10868287016127cd565b9150509250925092565b60008060408385031215612a3157612a30613393565b5b6000612a3f858286016127e2565b9250506020612a50858286016127e2565b9150509250929050565b6000612a668383612a72565b60208301905092915050565b612a7b816131b4565b82525050565b612a8a816131b4565b82525050565b6000612a9b8261305a565b612aa5818561307d565b9350612ab08361304a565b8060005b83811015612ae1578151612ac88882612a5a565b9750612ad383613070565b925050600181019050612ab4565b5085935050505092915050565b612af7816131c6565b82525050565b612b0681613209565b82525050565b6000612b1782613065565b612b21818561308e565b9350612b3181856020860161321b565b612b3a81613398565b840191505092915050565b6000612b5260288361308e565b9150612b5d826133a9565b604082019050919050565b6000612b7560238361308e565b9150612b80826133f8565b604082019050919050565b6000612b98602a8361308e565b9150612ba382613447565b604082019050919050565b6000612bbb60228361308e565b9150612bc682613496565b604082019050919050565b6000612bde601f8361308e565b9150612be9826134e5565b602082019050919050565b6000612c01601b8361308e565b9150612c0c8261350e565b602082019050919050565b6000612c2460218361308e565b9150612c2f82613537565b604082019050919050565b6000612c4760208361308e565b9150612c5282613586565b602082019050919050565b6000612c6a60298361308e565b9150612c75826135af565b604082019050919050565b6000612c8d60258361308e565b9150612c98826135fe565b604082019050919050565b6000612cb060248361308e565b9150612cbb8261364d565b604082019050919050565b6000612cd360178361308e565b9150612cde8261369c565b602082019050919050565b612cf2816131f2565b82525050565b612d01816131fc565b82525050565b6000602082019050612d1c6000830184612a81565b92915050565b6000604082019050612d376000830185612a81565b612d446020830184612ce9565b9392505050565b600060c082019050612d606000830189612a81565b612d6d6020830188612ce9565b612d7a6040830187612afd565b612d876060830186612afd565b612d946080830185612a81565b612da160a0830184612ce9565b979650505050505050565b6000602082019050612dc16000830184612aee565b92915050565b60006020820190508181036000830152612de18184612b0c565b905092915050565b60006020820190508181036000830152612e0281612b45565b9050919050565b60006020820190508181036000830152612e2281612b68565b9050919050565b60006020820190508181036000830152612e4281612b8b565b9050919050565b60006020820190508181036000830152612e6281612bae565b9050919050565b60006020820190508181036000830152612e8281612bd1565b9050919050565b60006020820190508181036000830152612ea281612bf4565b9050919050565b60006020820190508181036000830152612ec281612c17565b9050919050565b60006020820190508181036000830152612ee281612c3a565b9050919050565b60006020820190508181036000830152612f0281612c5d565b9050919050565b60006020820190508181036000830152612f2281612c80565b9050919050565b60006020820190508181036000830152612f4281612ca3565b9050919050565b60006020820190508181036000830152612f6281612cc6565b9050919050565b6000602082019050612f7e6000830184612ce9565b92915050565b600060a082019050612f996000830188612ce9565b612fa66020830187612afd565b8181036040830152612fb88186612a90565b9050612fc76060830185612a81565b612fd46080830184612ce9565b9695505050505050565b6000602082019050612ff36000830184612cf8565b92915050565b6000613003613014565b905061300f828261324e565b919050565b6000604051905090565b600067ffffffffffffffff82111561303957613038613355565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006130aa826131f2565b91506130b5836131f2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156130ea576130e96132c8565b5b828201905092915050565b6000613100826131f2565b915061310b836131f2565b92508261311b5761311a6132f7565b5b828204905092915050565b6000613131826131f2565b915061313c836131f2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613175576131746132c8565b5b828202905092915050565b600061318b826131f2565b9150613196836131f2565b9250828210156131a9576131a86132c8565b5b828203905092915050565b60006131bf826131d2565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613214826131f2565b9050919050565b60005b8381101561323957808201518184015260208101905061321e565b83811115613248576000848401525b50505050565b61325782613398565b810181811067ffffffffffffffff8211171561327657613275613355565b5b80604052505050565b600061328a826131f2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156132bd576132bc6132c8565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f53656c6c732070726f6869626974656420666f7220746865206669727374203560008201527f206d696e75746573000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f7420696e6372656173652066656573206265796f6e64206d617800600082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6136ce816131b4565b81146136d957600080fd5b50565b6136e5816131c6565b81146136f057600080fd5b50565b6136fc816131f2565b811461370757600080fd5b50565b613713816131fc565b811461371e57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206422b01b5cf026d6c06d25a876807ca740fd3f3c1e8245b7fe947faba6906d9564736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101185760003560e01c8063715018a6116100a0578063a9059cbb11610064578063a9059cbb14610372578063b515566a146103af578063c3c8cd80146103d8578063c9567bf9146103ef578063dd62ed3e146104065761011f565b8063715018a6146102c55780638da5cb5b146102dc578063950406c31461030757806395d89b411461031e578063a769958a146103495761011f565b8063273123b7116100e7578063273123b7146101f4578063313ce5671461021d5780635932ead1146102485780636fc3eaec1461027157806370a08231146102885761011f565b806306fdde0314610124578063095ea7b31461014f57806318160ddd1461018c57806323b872dd146101b75761011f565b3661011f57005b600080fd5b34801561013057600080fd5b50610139610443565b6040516101469190612dc7565b60405180910390f35b34801561015b57600080fd5b50610176600480360381019061017191906128e4565b610480565b6040516101839190612dac565b60405180910390f35b34801561019857600080fd5b506101a161049e565b6040516101ae9190612f69565b60405180910390f35b3480156101c357600080fd5b506101de60048036038101906101d99190612891565b6104af565b6040516101eb9190612dac565b60405180910390f35b34801561020057600080fd5b5061021b600480360381019061021691906127f7565b610588565b005b34801561022957600080fd5b50610232610678565b60405161023f9190612fde565b60405180910390f35b34801561025457600080fd5b5061026f600480360381019061026a919061296d565b610681565b005b34801561027d57600080fd5b50610286610733565b005b34801561029457600080fd5b506102af60048036038101906102aa91906127f7565b6107a5565b6040516102bc9190612f69565b60405180910390f35b3480156102d157600080fd5b506102da6107f6565b005b3480156102e857600080fd5b506102f1610949565b6040516102fe9190612d07565b60405180910390f35b34801561031357600080fd5b5061031c610972565b005b34801561032a57600080fd5b50610333610a19565b6040516103409190612dc7565b60405180910390f35b34801561035557600080fd5b50610370600480360381019061036b9190612a1a565b610a56565b005b34801561037e57600080fd5b50610399600480360381019061039491906128e4565b610b28565b6040516103a69190612dac565b60405180910390f35b3480156103bb57600080fd5b506103d660048036038101906103d19190612924565b610b46565b005b3480156103e457600080fd5b506103ed610c70565b005b3480156103fb57600080fd5b50610404610cea565b005b34801561041257600080fd5b5061042d60048036038101906104289190612851565b610f92565b60405161043a9190612f69565b60405180910390f35b60606040518060400160405280600e81526020017f546f776572204f6620426162656c000000000000000000000000000000000000815250905090565b600061049461048d6110de565b84846110e6565b6001905092915050565b6000683635c9adc5dea00000905090565b60006104bc8484846112b1565b61057d846104c86110de565b6105788560405180606001604052806028815260200161372260289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061052e6110de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119189092919063ffffffff16565b6110e6565b600190509392505050565b6105906110de565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461061d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061490612ec9565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b6106896110de565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070d90612ec9565b60405180910390fd5b80601660176101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107746110de565b73ffffffffffffffffffffffffffffffffffffffff161461079457600080fd5b60004790506107a28161197c565b50565b60006107ef600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a8a565b9050919050565b6107fe6110de565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088290612ec9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61097a6110de565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fe90612ec9565b60405180910390fd5b683635c9adc5dea00000601781905550565b60606040518060400160405280600581526020017f424142454c000000000000000000000000000000000000000000000000000000815250905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a976110de565b73ffffffffffffffffffffffffffffffffffffffff1614610ab757600080fd5b6012548260ff1611158015610ad157506012548160ff1611155b610b10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0790612e69565b60405180910390fd5b8160ff16600d819055508060ff16600e819055505050565b6000610b3c610b356110de565b84846112b1565b6001905092915050565b610b4e6110de565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd290612ec9565b60405180910390fd5b60005b8151811015610c6c57600160066000848481518110610c0057610bff613326565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610c649061327f565b915050610bde565b5050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cb16110de565b73ffffffffffffffffffffffffffffffffffffffff1614610cd157600080fd5b6000610cdc306107a5565b9050610ce781611af8565b50565b610cf26110de565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7690612ec9565b60405180910390fd5b601660149054906101000a900460ff1615610dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc690612f49565b60405180910390fd5b610e04610ddb306107a5565b47601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611d80565b60016016806101000a81548160ff0219169083151502179055506001601660176101000a81548160ff021916908315150217905550610e696064610e5b6002683635c9adc5dea0000061106390919063ffffffff16565b61101990919063ffffffff16565b6017819055506001601660146101000a81548160ff02191690831515021790555061012c42610e98919061309f565b601181905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610f3d929190612d22565b602060405180830381600087803b158015610f5757600080fd5b505af1158015610f6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8f919061299a565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600061105b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ea4565b905092915050565b60008083141561107657600090506110d8565b600082846110849190613126565b905082848261109391906130f5565b146110d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ca90612ea9565b60405180910390fd5b809150505b92915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114d90612f29565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bd90612e49565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112a49190612f69565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131890612f09565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611391576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138890612e09565b60405180910390fd5b600081116113d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cb90612ee9565b60405180910390fd5b6000600a81905550600d54600b819055506000600c819055506113f5610949565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156114635750611433610949565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156117da57600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561150c5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61151557600080fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156115c05750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156116165750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561162e5750601660179054906101000a900460ff165b156116de5760175481111561164257600080fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061168d57600080fd5b601e4261169a919061309f565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60006116e9306107a5565b9050601660159054906101000a900460ff161580156117565750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561176c575060168054906101000a900460ff165b156117d85760115442116117b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ac90612de9565b60405180910390fd5b6117be81611f07565b600047905060008111156117d6576117d54761197c565b5b505b505b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156118855750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156118db5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611908576001600a81905550600f54600e546118f8919061309f565b600b81905550601054600c819055505b611913838383611fee565b505050565b6000838311158290611960576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119579190612dc7565b60405180910390fd5b506000838561196f9190613180565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6119cc60038461101990919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156119f7573d6000803e3d6000fd5b50601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611a5b6002611a4d60038661101990919063ffffffff16565b61106390919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611a86573d6000803e3d6000fd5b5050565b6000600854821115611ad1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac890612e29565b60405180910390fd5b6000611adb611ffe565b9050611af0818461101990919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611b3057611b2f613355565b5b604051908082528060200260200182016040528015611b5e5781602001602082028036833780820191505090505b5090503081600081518110611b7657611b75613326565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611c1857600080fd5b505afa158015611c2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c509190612824565b81600181518110611c6457611c63613326565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ccb30601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846110e6565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611d2f959493929190612f84565b600060405180830381600087803b158015611d4957600080fd5b505af1158015611d5d573d6000803e3d6000fd5b50505050506000601660156101000a81548160ff02191690831515021790555050565b6001601660156101000a81548160ff021916908315150217905550611dc830601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856110e6565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308660008087426040518863ffffffff1660e01b8152600401611e2f96959493929190612d4b565b6060604051808303818588803b158015611e4857600080fd5b505af1158015611e5c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611e8191906129c7565b5050506000601660156101000a81548160ff021916908315150217905550505050565b60008083118290611eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee29190612dc7565b60405180910390fd5b5060008385611efa91906130f5565b9050809150509392505050565b6000611f48600f54611f3a600e54611f2c600d54600a5461202990919063ffffffff16565b61202990919063ffffffff16565b61202990919063ffffffff16565b90506000611f73600f54611f65848661101990919063ffffffff16565b61106390919063ffffffff16565b90506000611f8a828561208790919063ffffffff16565b9050611f9581611af8565b611fe882611fc085611fb2600f544761106390919063ffffffff16565b61101990919063ffffffff16565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611d80565b50505050565b611ff98383836120d1565b505050565b600080600061200b6122aa565b91509150612022818361101990919063ffffffff16565b9250505090565b6000808284612038919061309f565b90508381101561207d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207490612e89565b60405180910390fd5b8091505092915050565b60006120c983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611918565b905092915050565b60008060008060008060006120e58861230c565b965096509650965096509650965061214587600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461208790919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121da86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202990919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061222682612375565b61222f81612432565b61223985846124ef565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516122969190612f69565b60405180910390a350505050505050505050565b600080600060085490506000683635c9adc5dea0000090506122e0683635c9adc5dea0000060085461101990919063ffffffff16565b8210156122ff57600854683635c9adc5dea00000935093505050612308565b81819350935050505b9091565b600080600080600080600080600080600061232f8c600a54600b54600c54612529565b935093509350935060008060006123488f878787612606565b925092509250828282898989899d509d509d509d509d509d509d5050505050505050919395979092949650565b600061237f611ffe565b90506000612396828461106390919063ffffffff16565b90506123ea81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202990919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b600061243c611ffe565b90506000612453828461106390919063ffffffff16565b90506124a781600260008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202990919063ffffffff16565b600260008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6125048260085461208790919063ffffffff16565b60088190555061251f8160095461202990919063ffffffff16565b6009819055505050565b600080600080600061255760646125498a8c61106390919063ffffffff16565b61101990919063ffffffff16565b9050600061258160646125738a8d61106390919063ffffffff16565b61101990919063ffffffff16565b905060006125ab606461259d8a8e61106390919063ffffffff16565b61101990919063ffffffff16565b905060006125c2848d61208790919063ffffffff16565b90506125e9826125db858461208790919063ffffffff16565b61208790919063ffffffff16565b905080848484975097509750975050505050945094509450949050565b600080600080612614611ffe565b9050600061262b828a61106390919063ffffffff16565b90506000612642838a61106390919063ffffffff16565b90506000612659848a61106390919063ffffffff16565b90506000612670858a61106390919063ffffffff16565b905060006126ab8261269d8561268f888a61208790919063ffffffff16565b61208790919063ffffffff16565b61208790919063ffffffff16565b90508481859850985098505050505050509450945094915050565b60006126d96126d48461301e565b612ff9565b905080838252602082019050828560208602820111156126fc576126fb613389565b5b60005b8581101561272c57816127128882612736565b8452602084019350602083019250506001810190506126ff565b5050509392505050565b600081359050612745816136c5565b92915050565b60008151905061275a816136c5565b92915050565b600082601f83011261277557612774613384565b5b81356127858482602086016126c6565b91505092915050565b60008135905061279d816136dc565b92915050565b6000815190506127b2816136dc565b92915050565b6000813590506127c7816136f3565b92915050565b6000815190506127dc816136f3565b92915050565b6000813590506127f18161370a565b92915050565b60006020828403121561280d5761280c613393565b5b600061281b84828501612736565b91505092915050565b60006020828403121561283a57612839613393565b5b60006128488482850161274b565b91505092915050565b6000806040838503121561286857612867613393565b5b600061287685828601612736565b925050602061288785828601612736565b9150509250929050565b6000806000606084860312156128aa576128a9613393565b5b60006128b886828701612736565b93505060206128c986828701612736565b92505060406128da868287016127b8565b9150509250925092565b600080604083850312156128fb576128fa613393565b5b600061290985828601612736565b925050602061291a858286016127b8565b9150509250929050565b60006020828403121561293a57612939613393565b5b600082013567ffffffffffffffff8111156129585761295761338e565b5b61296484828501612760565b91505092915050565b60006020828403121561298357612982613393565b5b60006129918482850161278e565b91505092915050565b6000602082840312156129b0576129af613393565b5b60006129be848285016127a3565b91505092915050565b6000806000606084860312156129e0576129df613393565b5b60006129ee868287016127cd565b93505060206129ff868287016127cd565b9250506040612a10868287016127cd565b9150509250925092565b60008060408385031215612a3157612a30613393565b5b6000612a3f858286016127e2565b9250506020612a50858286016127e2565b9150509250929050565b6000612a668383612a72565b60208301905092915050565b612a7b816131b4565b82525050565b612a8a816131b4565b82525050565b6000612a9b8261305a565b612aa5818561307d565b9350612ab08361304a565b8060005b83811015612ae1578151612ac88882612a5a565b9750612ad383613070565b925050600181019050612ab4565b5085935050505092915050565b612af7816131c6565b82525050565b612b0681613209565b82525050565b6000612b1782613065565b612b21818561308e565b9350612b3181856020860161321b565b612b3a81613398565b840191505092915050565b6000612b5260288361308e565b9150612b5d826133a9565b604082019050919050565b6000612b7560238361308e565b9150612b80826133f8565b604082019050919050565b6000612b98602a8361308e565b9150612ba382613447565b604082019050919050565b6000612bbb60228361308e565b9150612bc682613496565b604082019050919050565b6000612bde601f8361308e565b9150612be9826134e5565b602082019050919050565b6000612c01601b8361308e565b9150612c0c8261350e565b602082019050919050565b6000612c2460218361308e565b9150612c2f82613537565b604082019050919050565b6000612c4760208361308e565b9150612c5282613586565b602082019050919050565b6000612c6a60298361308e565b9150612c75826135af565b604082019050919050565b6000612c8d60258361308e565b9150612c98826135fe565b604082019050919050565b6000612cb060248361308e565b9150612cbb8261364d565b604082019050919050565b6000612cd360178361308e565b9150612cde8261369c565b602082019050919050565b612cf2816131f2565b82525050565b612d01816131fc565b82525050565b6000602082019050612d1c6000830184612a81565b92915050565b6000604082019050612d376000830185612a81565b612d446020830184612ce9565b9392505050565b600060c082019050612d606000830189612a81565b612d6d6020830188612ce9565b612d7a6040830187612afd565b612d876060830186612afd565b612d946080830185612a81565b612da160a0830184612ce9565b979650505050505050565b6000602082019050612dc16000830184612aee565b92915050565b60006020820190508181036000830152612de18184612b0c565b905092915050565b60006020820190508181036000830152612e0281612b45565b9050919050565b60006020820190508181036000830152612e2281612b68565b9050919050565b60006020820190508181036000830152612e4281612b8b565b9050919050565b60006020820190508181036000830152612e6281612bae565b9050919050565b60006020820190508181036000830152612e8281612bd1565b9050919050565b60006020820190508181036000830152612ea281612bf4565b9050919050565b60006020820190508181036000830152612ec281612c17565b9050919050565b60006020820190508181036000830152612ee281612c3a565b9050919050565b60006020820190508181036000830152612f0281612c5d565b9050919050565b60006020820190508181036000830152612f2281612c80565b9050919050565b60006020820190508181036000830152612f4281612ca3565b9050919050565b60006020820190508181036000830152612f6281612cc6565b9050919050565b6000602082019050612f7e6000830184612ce9565b92915050565b600060a082019050612f996000830188612ce9565b612fa66020830187612afd565b8181036040830152612fb88186612a90565b9050612fc76060830185612a81565b612fd46080830184612ce9565b9695505050505050565b6000602082019050612ff36000830184612cf8565b92915050565b6000613003613014565b905061300f828261324e565b919050565b6000604051905090565b600067ffffffffffffffff82111561303957613038613355565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006130aa826131f2565b91506130b5836131f2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156130ea576130e96132c8565b5b828201905092915050565b6000613100826131f2565b915061310b836131f2565b92508261311b5761311a6132f7565b5b828204905092915050565b6000613131826131f2565b915061313c836131f2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613175576131746132c8565b5b828202905092915050565b600061318b826131f2565b9150613196836131f2565b9250828210156131a9576131a86132c8565b5b828203905092915050565b60006131bf826131d2565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613214826131f2565b9050919050565b60005b8381101561323957808201518184015260208101905061321e565b83811115613248576000848401525b50505050565b61325782613398565b810181811067ffffffffffffffff8211171561327657613275613355565b5b80604052505050565b600061328a826131f2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156132bd576132bc6132c8565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f53656c6c732070726f6869626974656420666f7220746865206669727374203560008201527f206d696e75746573000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f7420696e6372656173652066656573206265796f6e64206d617800600082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6136ce816131b4565b81146136d957600080fd5b50565b6136e5816131c6565b81146136f057600080fd5b50565b6136fc816131f2565b811461370757600080fd5b50565b613713816131fc565b811461371e57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206422b01b5cf026d6c06d25a876807ca740fd3f3c1e8245b7fe947faba6906d9564736f6c63430008070033

Deployed Bytecode Sourcemap

3599:12265:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6031:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6883:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6308:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7052:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11994:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6217:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7373:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13617:194;;;;;;;;;;;;;:::i;:::-;;6411:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2678:148;;;;;;;;;;;;;:::i;:::-;;2464:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15488:99;;;;;;;;;;;;;:::i;:::-;;6122:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7488:257;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6557:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11818:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13410:195;;;;;;;;;;;;;:::i;:::-;;11330:476;;;;;;;;;;;;;:::i;:::-;;6732:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6031:83;6068:13;6101:5;;;;;;;;;;;;;;;;;6094:12;;6031:83;:::o;6883:161::-;6958:4;6975:39;6984:12;:10;:12::i;:::-;6998:7;7007:6;6975:8;:39::i;:::-;7032:4;7025:11;;6883:161;;;;:::o;6308:95::-;6361:7;4104:18;6381:14;;6308:95;:::o;7052:313::-;7150:4;7167:36;7177:6;7185:9;7196:6;7167:9;:36::i;:::-;7214:121;7223:6;7231:12;:10;:12::i;:::-;7245:89;7283:6;7245:89;;;;;;;;;;;;;;;;;:11;:19;7257:6;7245:19;;;;;;;;;;;;;;;:33;7265:12;:10;:12::i;:::-;7245:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7214:8;:121::i;:::-;7353:4;7346:11;;7052:313;;;;;:::o;11994:88::-;2601:12;:10;:12::i;:::-;2591:22;;:6;;;;;;;;;;:22;;;2583:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12069:5:::1;12054:4;:12;12059:6;12054:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;11994:88:::0;:::o;6217:83::-;6258:5;4739:1;6276:16;;6217:83;:::o;7373:103::-;2601:12;:10;:12::i;:::-;2591:22;;:6;;;;;;;;;;:22;;;2583:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7463:5:::1;7445:15;;:23;;;;;;;;;;;;;;;;;;7373:103:::0;:::o;13617:194::-;13683:15;;;;;;;;;;;13667:31;;:12;:10;:12::i;:::-;:31;;;13659:40;;;;;;13710:26;13739:21;13710:50;;13771:32;13784:18;13771:12;:32::i;:::-;13648:163;13617:194::o;6411:138::-;6477:7;6504:37;6524:7;:16;6532:7;6524:16;;;;;;;;;;;;;;;;6504:19;:37::i;:::-;6497:44;;6411:138;;;:::o;2678:148::-;2601:12;:10;:12::i;:::-;2591:22;;:6;;;;;;;;;;:22;;;2583:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2785:1:::1;2748:40;;2769:6;::::0;::::1;;;;;;;;2748:40;;;;;;;;;;;;2816:1;2799:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2678:148::o:0;2464:79::-;2502:7;2529:6;;;;;;;;;;;2522:13;;2464:79;:::o;15488:99::-;2601:12;:10;:12::i;:::-;2591:22;;:6;;;;;;;;;;:22;;;2583:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4104:18:::1;15557:12;:22;;;;15488:99::o:0;6122:87::-;6161:13;6194:7;;;;;;;;;;;;;;;;;6187:14;;6122:87;:::o;7488:257::-;7587:15;;;;;;;;;;;7571:31;;:12;:10;:12::i;:::-;:31;;;7563:40;;;;;;7631:6;;7622:5;:15;;;;:34;;;;;7650:6;;7641:5;:15;;;;7622:34;7614:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;7709:5;7702:12;;:4;:12;;;;7732:5;7725:12;;:4;:12;;;;7488:257;;:::o;6557:167::-;6635:4;6652:42;6662:12;:10;:12::i;:::-;6676:9;6687:6;6652:9;:42::i;:::-;6712:4;6705:11;;6557:167;;;;:::o;11818:164::-;2601:12;:10;:12::i;:::-;2591:22;;:6;;;;;;;;;;:22;;;2583:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11892:6:::1;11887:88;11908:5;:12;11904:1;:16;11887:88;;;11959:4;11942;:14;11947:5;11953:1;11947:8;;;;;;;;:::i;:::-;;;;;;;;11942:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11922:3;;;;;:::i;:::-;;;;11887:88;;;;11818:164:::0;:::o;13410:195::-;13476:15;;;;;;;;;;;13460:31;;:12;:10;:12::i;:::-;:31;;;13452:40;;;;;;13503:23;13529:24;13547:4;13529:9;:24::i;:::-;13503:50;;13564:33;13581:15;13564:16;:33::i;:::-;13441:164;13410:195::o;11330:476::-;2601:12;:10;:12::i;:::-;2591:22;;:6;;;;;;;;;;:22;;;2583:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11394:11:::1;;;;;;;;;;;11393:12;11385:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11453:76;11466:24;11484:4;11466:9;:24::i;:::-;11491:21;11513:15;;;;;;;;;;;11453:12;:76::i;:::-;11554:4;11540:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;11587:4;11569:15;;:22;;;;;;;;;;;;;;;;;;11617:23;11636:3;11617:14;11629:1;4104:18;11617:11;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;11602:12;:38;;;;11665:4;11651:11;;:18;;;;;;;;;;;;;;;;;;11706:9;11687:15;:29;;;;:::i;:::-;11680:4;:36;;;;11734:13;;;;;;;;;;;11727:29;;;11765:15;;;;;;;;;;;11783:14;11727:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11330:476::o:0;6732:143::-;6813:7;6840:11;:18;6852:5;6840:18;;;;;;;;;;;;;;;:27;6859:7;6840:27;;;;;;;;;;;;;;;;6833:34;;6732:143;;;;:::o;1771:132::-;1829:7;1856:39;1860:1;1863;1856:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1849:46;;1771:132;;;;:::o;1517:246::-;1575:7;1604:1;1599;:6;1595:47;;;1629:1;1622:8;;;;1595:47;1652:9;1668:1;1664;:5;;;;:::i;:::-;1652:17;;1697:1;1692;1688;:5;;;;:::i;:::-;:10;1680:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1754:1;1747:8;;;1517:246;;;;;:::o;182:98::-;235:7;262:10;255:17;;182:98;:::o;8015:335::-;8125:1;8108:19;;:5;:19;;;;8100:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8206:1;8187:21;;:7;:21;;;;8179:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8288:6;8258:11;:18;8270:5;8258:18;;;;;;;;;;;;;;;:27;8277:7;8258:27;;;;;;;;;;;;;;;:36;;;;8326:7;8310:32;;8319:5;8310:32;;;8335:6;8310:32;;;;;;:::i;:::-;;;;;;;;8015:335;;;:::o;8358:1598::-;8462:1;8446:18;;:4;:18;;;;8438:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8539:1;8525:16;;:2;:16;;;;8517:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8609:1;8600:6;:10;8592:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8679:1;8667:9;:13;;;;8703:4;;8691:9;:16;;;;8730:1;8718:9;:13;;;;8754:7;:5;:7::i;:::-;8746:15;;:4;:15;;;;:32;;;;;8771:7;:5;:7::i;:::-;8765:13;;:2;:13;;;;8746:32;8742:944;;;8804:4;:10;8809:4;8804:10;;;;;;;;;;;;;;;;;;;;;;;;;8803:11;:24;;;;;8819:4;:8;8824:2;8819:8;;;;;;;;;;;;;;;;;;;;;;;;;8818:9;8803:24;8795:33;;;;;;8855:13;;;;;;;;;;;8847:21;;:4;:21;;;:55;;;;;8886:15;;;;;;;;;;;8872:30;;:2;:30;;;;8847:55;:83;;;;;8908:18;:22;8927:2;8908:22;;;;;;;;;;;;;;;;;;;;;;;;;8906:24;8847:83;:102;;;;;8934:15;;;;;;;;;;;8847:102;8843:325;;;9017:12;;9007:6;:22;;8999:31;;;;;;9072:15;9057:8;:12;9066:2;9057:12;;;;;;;;;;;;;;;;:30;9049:39;;;;;;9141:10;9122:15;:30;;;;:::i;:::-;9107:8;:12;9116:2;9107:12;;;;;;;;;;;;;;;:45;;;;8843:325;9196:28;9227:24;9245:4;9227:9;:24::i;:::-;9196:55;;9271:6;;;;;;;;;;;9270:7;:32;;;;;9289:13;;;;;;;;;;;9281:21;;:4;:21;;;;9270:32;:47;;;;;9306:11;;;;;;;;;;9270:47;9266:409;;;9364:4;;9346:15;:22;9338:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;9431:36;9446:20;9431:14;:36::i;:::-;9486:26;9515:21;9486:50;;9579:1;9558:18;:22;9555:105;;;9605:35;9618:21;9605:12;:35::i;:::-;9555:105;9319:356;9266:409;8780:906;8742:944;9700:13;;;;;;;;;;;9694:19;;:2;:19;;;:55;;;;;9733:15;;;;;;;;;;;9717:32;;:4;:32;;;;9694:55;:85;;;;;9755:18;:24;9774:4;9755:24;;;;;;;;;;;;;;;;;;;;;;;;;9753:26;9694:85;9690:218;;;9812:1;9800:9;:13;;;;9851:6;;9844:4;;:13;;;;:::i;:::-;9832:9;:25;;;;9888:4;;9876:9;:16;;;;9690:218;9918:30;9933:4;9938:2;9941:6;9918:14;:30::i;:::-;8358:1598;;;:::o;1319:190::-;1405:7;1438:1;1433;:6;;1441:12;1425:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1465:9;1481:1;1477;:5;;;;:::i;:::-;1465:17;;1500:1;1493:8;;;1319:190;;;;;:::o;11157:161::-;11214:15;;;;;;;;;;;:24;;:39;11239:13;11250:1;11239:6;:10;;:13;;;;:::i;:::-;11214:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11264:15;;;;;;;;;;;:24;;:46;11289:20;11307:1;11289:13;11300:1;11289:6;:10;;:13;;;;:::i;:::-;:17;;:20;;;;:::i;:::-;11264:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11157:161;:::o;7753:254::-;7820:7;7859;;7848;:18;;7840:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7924:19;7947:10;:8;:10::i;:::-;7924:33;;7975:24;7987:11;7975:7;:11;;:24;;;;:::i;:::-;7968:31;;;7753:254;;;:::o;10658:483::-;5121:4;5112:6;;:13;;;;;;;;;;;;;;;;;;10736:21:::1;10774:1;10760:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10736:40;;10805:4;10787;10792:1;10787:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10831:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10821:4;10826:1;10821:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10864:62;10881:4;10896:15;;;;;;;;;;;10914:11;10864:8;:62::i;:::-;10937:15;;;;;;;;;;;:66;;;11018:11;11044:1;11060:4;11087;11107:15;10937:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10725:416;5157:5:::0;5148:6;;:14;;;;;;;;;;;;;;;;;;10658:483;:::o;10360:288::-;5121:4;5112:6;;:13;;;;;;;;;;;;;;;;;;10466:60:::1;10483:4;10497:15;;;;;;;;;;;10514:11;10466:8;:60::i;:::-;10537:15;;;;;;;;;;;:31;;;10576:9;10595:4;10601:11;10613:1;10615::::0;10617:6:::1;10624:15;10537:103;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;5157:5:::0;5148:6;;:14;;;;;;;;;;;;;;;;;;10360:288;;;:::o;1911:189::-;1997:7;2029:1;2025;:5;2032:12;2017:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2056:9;2072:1;2068;:5;;;;:::i;:::-;2056:17;;2091:1;2084:8;;;1911:189;;;;;:::o;9964:388::-;10038:11;10052:41;10086:6;;10052:29;10076:4;;10052:19;10066:4;;10052:9;;:13;;:19;;;;:::i;:::-;:23;;:29;;;;:::i;:::-;:33;;:41;;;;:::i;:::-;10038:55;;10104:17;10124:32;10149:6;;10124:20;10140:3;10124:11;:15;;:20;;;;:::i;:::-;:24;;:32;;;;:::i;:::-;10104:52;;10167:17;10187:26;10203:9;10187:11;:15;;:26;;;;:::i;:::-;10167:46;;10224:27;10241:9;10224:16;:27::i;:::-;10262:82;10275:9;10285:42;10323:3;10285:33;10311:6;;10285:21;:25;;:33;;;;:::i;:::-;:37;;:42;;;;:::i;:::-;10328:15;;;;;;;;;;;10262:12;:82::i;:::-;10017:335;;;9964:388;:::o;12098:146::-;12192:44;12210:6;12218:9;12229:6;12192:17;:44::i;:::-;12098:146;;;:::o;15317:163::-;15358:7;15379:15;15396;15415:19;:17;:19::i;:::-;15378:56;;;;15452:20;15464:7;15452;:11;;:20;;;;:::i;:::-;15445:27;;;;15317:163;:::o;988:179::-;1046:7;1066:9;1082:1;1078;:5;;;;:::i;:::-;1066:17;;1107:1;1102;:6;;1094:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1158:1;1151:8;;;988:179;;;;:::o;1175:136::-;1233:7;1260:43;1264:1;1267;1260:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1253:50;;1175:136;;;;:::o;12252:526::-;12351:15;12368:23;12393:12;12407:23;12432:12;12446:13;12461;12478:19;12489:7;12478:10;:19::i;:::-;12350:147;;;;;;;;;;;;;;12526:28;12546:7;12526;:15;12534:6;12526:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;12508:7;:15;12516:6;12508:15;;;;;;;;;;;;;;;:46;;;;12586:39;12609:15;12586:7;:18;12594:9;12586:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;12565:7;:18;12573:9;12565:18;;;;;;;;;;;;;;;:60;;;;12637:16;12647:5;12637:9;:16::i;:::-;12664:12;12670:5;12664;:12::i;:::-;12687:23;12699:4;12705;12687:11;:23::i;:::-;12743:9;12726:44;;12735:6;12726:44;;;12754:15;12726:44;;;;;;:::i;:::-;;;;;;;;12339:439;;;;;;;12252:526;;;:::o;15599:262::-;15649:7;15658;15678:15;15696:7;;15678:25;;15714:15;4104:18;15714:25;;15770:20;4104:18;15770:7;;:11;;:20;;;;:::i;:::-;15760:7;:30;15756:61;;;15800:7;;4104:18;15792:25;;;;;;;;15756:61;15836:7;15845;15828:25;;;;;;15599:262;;;:::o;13825:462::-;13884:7;13893;13902;13911;13920;13929;13938;13959:23;13984:12;13998:13;14013;14030:52;14042:7;14051:9;;14062;;14072;;14030:11;:52::i;:::-;13958:124;;;;;;;;14094:15;14111:23;14136:12;14152:40;14164:7;14173:4;14179:5;14186;14152:11;:40::i;:::-;14093:99;;;;;;14211:7;14220:15;14237:4;14243:15;14260:4;14266:5;14273;14203:76;;;;;;;;;;;;;;;;;;;;;13825:462;;;;;;;;;:::o;12994:212::-;13047:19;13070:10;:8;:10::i;:::-;13047:33;;13091:13;13107:22;13117:11;13107:5;:9;;:22;;;;:::i;:::-;13091:38;;13165:33;13192:5;13165:7;:22;13181:4;13165:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13140:7;:22;13156:4;13140:22;;;;;;;;;;;;;;;:58;;;;13036:170;;12994:212;:::o;12786:200::-;12834:19;12856:10;:8;:10::i;:::-;12834:32;;12877:13;12893:22;12903:11;12893:5;:9;;:22;;;;:::i;:::-;12877:38;;12948:30;12972:5;12948:7;:19;12964:1;12948:19;;;;;;;;;;;;;;;;:23;;:30;;;;:::i;:::-;12926:7;:19;12942:1;12926:19;;;;;;;;;;;;;;;:52;;;;12823:163;;12786:200;:::o;13214:147::-;13292:17;13304:4;13292:7;;:11;;:17;;;;:::i;:::-;13282:7;:27;;;;13333:20;13348:4;13333:10;;:14;;:20;;;;:::i;:::-;13320:10;:33;;;;13214:147;;:::o;14295:495::-;14405:7;14414;14423;14432;14452:12;14467:28;14491:3;14467:19;14479:6;14467:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14452:43;;14506:13;14522:29;14547:3;14522:20;14534:7;14522;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;14506:45;;14562:13;14578:29;14603:3;14578:20;14590:7;14578;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;14562:45;;14618:23;14644:17;14656:4;14644:7;:11;;:17;;;;:::i;:::-;14618:43;;14690:37;14721:5;14690:26;14710:5;14690:15;:19;;:26;;;;:::i;:::-;:30;;:37;;;;:::i;:::-;14672:55;;14746:15;14763:4;14769:5;14776;14738:44;;;;;;;;;;;;14295:495;;;;;;;;;:::o;14798:514::-;14902:7;14911;14920;14940:19;14962:10;:8;:10::i;:::-;14940:32;;14991:15;15009:24;15021:11;15009:7;:11;;:24;;;;:::i;:::-;14991:42;;15044:12;15059:21;15068:11;15059:4;:8;;:21;;;;:::i;:::-;15044:36;;15091:13;15107:22;15117:11;15107:5;:9;;:22;;;;:::i;:::-;15091:38;;15140:13;15156:22;15166:11;15156:5;:9;;:22;;;;:::i;:::-;15140:38;;15189:23;15215:39;15248:5;15215:28;15237:5;15215:17;15227:4;15215:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;:32;;:39;;;;:::i;:::-;15189:65;;15273:7;15282:15;15299:4;15265:39;;;;;;;;;;;;14798:514;;;;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;752:139::-;798:5;836:6;823:20;814:29;;852:33;879:5;852:33;:::i;:::-;752:139;;;;:::o;897:143::-;954:5;985:6;979:13;970:22;;1001:33;1028:5;1001:33;:::i;:::-;897:143;;;;:::o;1063:370::-;1134:5;1183:3;1176:4;1168:6;1164:17;1160:27;1150:122;;1191:79;;:::i;:::-;1150:122;1308:6;1295:20;1333:94;1423:3;1415:6;1408:4;1400:6;1396:17;1333:94;:::i;:::-;1324:103;;1140:293;1063:370;;;;:::o;1439:133::-;1482:5;1520:6;1507:20;1498:29;;1536:30;1560:5;1536:30;:::i;:::-;1439:133;;;;:::o;1578:137::-;1632:5;1663:6;1657:13;1648:22;;1679:30;1703:5;1679:30;:::i;:::-;1578:137;;;;:::o;1721:139::-;1767:5;1805:6;1792:20;1783:29;;1821:33;1848:5;1821:33;:::i;:::-;1721:139;;;;:::o;1866:143::-;1923:5;1954:6;1948:13;1939:22;;1970:33;1997:5;1970:33;:::i;:::-;1866:143;;;;:::o;2015:135::-;2059:5;2097:6;2084:20;2075:29;;2113:31;2138:5;2113:31;:::i;:::-;2015:135;;;;:::o;2156:329::-;2215:6;2264:2;2252:9;2243:7;2239:23;2235:32;2232:119;;;2270:79;;:::i;:::-;2232:119;2390:1;2415:53;2460:7;2451:6;2440:9;2436:22;2415:53;:::i;:::-;2405:63;;2361:117;2156:329;;;;:::o;2491:351::-;2561:6;2610:2;2598:9;2589:7;2585:23;2581:32;2578:119;;;2616:79;;:::i;:::-;2578:119;2736:1;2761:64;2817:7;2808:6;2797:9;2793:22;2761:64;:::i;:::-;2751:74;;2707:128;2491:351;;;;:::o;2848:474::-;2916:6;2924;2973:2;2961:9;2952:7;2948:23;2944:32;2941:119;;;2979:79;;:::i;:::-;2941:119;3099:1;3124:53;3169:7;3160:6;3149:9;3145:22;3124:53;:::i;:::-;3114:63;;3070:117;3226:2;3252:53;3297:7;3288:6;3277:9;3273:22;3252:53;:::i;:::-;3242:63;;3197:118;2848:474;;;;;:::o;3328:619::-;3405:6;3413;3421;3470:2;3458:9;3449:7;3445:23;3441:32;3438:119;;;3476:79;;:::i;:::-;3438:119;3596:1;3621:53;3666:7;3657:6;3646:9;3642:22;3621:53;:::i;:::-;3611:63;;3567:117;3723:2;3749:53;3794:7;3785:6;3774:9;3770:22;3749:53;:::i;:::-;3739:63;;3694:118;3851:2;3877:53;3922:7;3913:6;3902:9;3898:22;3877:53;:::i;:::-;3867:63;;3822:118;3328:619;;;;;:::o;3953:474::-;4021:6;4029;4078:2;4066:9;4057:7;4053:23;4049:32;4046:119;;;4084:79;;:::i;:::-;4046:119;4204:1;4229:53;4274:7;4265:6;4254:9;4250:22;4229:53;:::i;:::-;4219:63;;4175:117;4331:2;4357:53;4402:7;4393:6;4382:9;4378:22;4357:53;:::i;:::-;4347:63;;4302:118;3953:474;;;;;:::o;4433:539::-;4517:6;4566:2;4554:9;4545:7;4541:23;4537:32;4534:119;;;4572:79;;:::i;:::-;4534:119;4720:1;4709:9;4705:17;4692:31;4750:18;4742:6;4739:30;4736:117;;;4772:79;;:::i;:::-;4736:117;4877:78;4947:7;4938:6;4927:9;4923:22;4877:78;:::i;:::-;4867:88;;4663:302;4433:539;;;;:::o;4978:323::-;5034:6;5083:2;5071:9;5062:7;5058:23;5054:32;5051:119;;;5089:79;;:::i;:::-;5051:119;5209:1;5234:50;5276:7;5267:6;5256:9;5252:22;5234:50;:::i;:::-;5224:60;;5180:114;4978:323;;;;:::o;5307:345::-;5374:6;5423:2;5411:9;5402:7;5398:23;5394:32;5391:119;;;5429:79;;:::i;:::-;5391:119;5549:1;5574:61;5627:7;5618:6;5607:9;5603:22;5574:61;:::i;:::-;5564:71;;5520:125;5307:345;;;;:::o;5658:663::-;5746:6;5754;5762;5811:2;5799:9;5790:7;5786:23;5782:32;5779:119;;;5817:79;;:::i;:::-;5779:119;5937:1;5962:64;6018:7;6009:6;5998:9;5994:22;5962:64;:::i;:::-;5952:74;;5908:128;6075:2;6101:64;6157:7;6148:6;6137:9;6133:22;6101:64;:::i;:::-;6091:74;;6046:129;6214:2;6240:64;6296:7;6287:6;6276:9;6272:22;6240:64;:::i;:::-;6230:74;;6185:129;5658:663;;;;;:::o;6327:466::-;6391:6;6399;6448:2;6436:9;6427:7;6423:23;6419:32;6416:119;;;6454:79;;:::i;:::-;6416:119;6574:1;6599:51;6642:7;6633:6;6622:9;6618:22;6599:51;:::i;:::-;6589:61;;6545:115;6699:2;6725:51;6768:7;6759:6;6748:9;6744:22;6725:51;:::i;:::-;6715:61;;6670:116;6327:466;;;;;:::o;6799:179::-;6868:10;6889:46;6931:3;6923:6;6889:46;:::i;:::-;6967:4;6962:3;6958:14;6944:28;;6799:179;;;;:::o;6984:108::-;7061:24;7079:5;7061:24;:::i;:::-;7056:3;7049:37;6984:108;;:::o;7098:118::-;7185:24;7203:5;7185:24;:::i;:::-;7180:3;7173:37;7098:118;;:::o;7252:732::-;7371:3;7400:54;7448:5;7400:54;:::i;:::-;7470:86;7549:6;7544:3;7470:86;:::i;:::-;7463:93;;7580:56;7630:5;7580:56;:::i;:::-;7659:7;7690:1;7675:284;7700:6;7697:1;7694:13;7675:284;;;7776:6;7770:13;7803:63;7862:3;7847:13;7803:63;:::i;:::-;7796:70;;7889:60;7942:6;7889:60;:::i;:::-;7879:70;;7735:224;7722:1;7719;7715:9;7710:14;;7675:284;;;7679:14;7975:3;7968:10;;7376:608;;;7252:732;;;;:::o;7990:109::-;8071:21;8086:5;8071:21;:::i;:::-;8066:3;8059:34;7990:109;;:::o;8105:147::-;8200:45;8239:5;8200:45;:::i;:::-;8195:3;8188:58;8105:147;;:::o;8258:364::-;8346:3;8374:39;8407:5;8374:39;:::i;:::-;8429:71;8493:6;8488:3;8429:71;:::i;:::-;8422:78;;8509:52;8554:6;8549:3;8542:4;8535:5;8531:16;8509:52;:::i;:::-;8586:29;8608:6;8586:29;:::i;:::-;8581:3;8577:39;8570:46;;8350:272;8258:364;;;;:::o;8628:366::-;8770:3;8791:67;8855:2;8850:3;8791:67;:::i;:::-;8784:74;;8867:93;8956:3;8867:93;:::i;:::-;8985:2;8980:3;8976:12;8969:19;;8628:366;;;:::o;9000:::-;9142:3;9163:67;9227:2;9222:3;9163:67;:::i;:::-;9156:74;;9239:93;9328:3;9239:93;:::i;:::-;9357:2;9352:3;9348:12;9341:19;;9000:366;;;:::o;9372:::-;9514:3;9535:67;9599:2;9594:3;9535:67;:::i;:::-;9528:74;;9611:93;9700:3;9611:93;:::i;:::-;9729:2;9724:3;9720:12;9713:19;;9372:366;;;:::o;9744:::-;9886:3;9907:67;9971:2;9966:3;9907:67;:::i;:::-;9900:74;;9983:93;10072:3;9983:93;:::i;:::-;10101:2;10096:3;10092:12;10085:19;;9744:366;;;:::o;10116:::-;10258:3;10279:67;10343:2;10338:3;10279:67;:::i;:::-;10272:74;;10355:93;10444:3;10355:93;:::i;:::-;10473:2;10468:3;10464:12;10457:19;;10116:366;;;:::o;10488:::-;10630:3;10651:67;10715:2;10710:3;10651:67;:::i;:::-;10644:74;;10727:93;10816:3;10727:93;:::i;:::-;10845:2;10840:3;10836:12;10829:19;;10488:366;;;:::o;10860:::-;11002:3;11023:67;11087:2;11082:3;11023:67;:::i;:::-;11016:74;;11099:93;11188:3;11099:93;:::i;:::-;11217:2;11212:3;11208:12;11201:19;;10860:366;;;:::o;11232:::-;11374:3;11395:67;11459:2;11454:3;11395:67;:::i;:::-;11388:74;;11471:93;11560:3;11471:93;:::i;:::-;11589:2;11584:3;11580:12;11573:19;;11232:366;;;:::o;11604:::-;11746:3;11767:67;11831:2;11826:3;11767:67;:::i;:::-;11760:74;;11843:93;11932:3;11843:93;:::i;:::-;11961:2;11956:3;11952:12;11945:19;;11604:366;;;:::o;11976:::-;12118:3;12139:67;12203:2;12198:3;12139:67;:::i;:::-;12132:74;;12215:93;12304:3;12215:93;:::i;:::-;12333:2;12328:3;12324:12;12317:19;;11976:366;;;:::o;12348:::-;12490:3;12511:67;12575:2;12570:3;12511:67;:::i;:::-;12504:74;;12587:93;12676:3;12587:93;:::i;:::-;12705:2;12700:3;12696:12;12689:19;;12348:366;;;:::o;12720:::-;12862:3;12883:67;12947:2;12942:3;12883:67;:::i;:::-;12876:74;;12959:93;13048:3;12959:93;:::i;:::-;13077:2;13072:3;13068:12;13061:19;;12720:366;;;:::o;13092:118::-;13179:24;13197:5;13179:24;:::i;:::-;13174:3;13167:37;13092:118;;:::o;13216:112::-;13299:22;13315:5;13299:22;:::i;:::-;13294:3;13287:35;13216:112;;:::o;13334:222::-;13427:4;13465:2;13454:9;13450:18;13442:26;;13478:71;13546:1;13535:9;13531:17;13522:6;13478:71;:::i;:::-;13334:222;;;;:::o;13562:332::-;13683:4;13721:2;13710:9;13706:18;13698:26;;13734:71;13802:1;13791:9;13787:17;13778:6;13734:71;:::i;:::-;13815:72;13883:2;13872:9;13868:18;13859:6;13815:72;:::i;:::-;13562:332;;;;;:::o;13900:807::-;14149:4;14187:3;14176:9;14172:19;14164:27;;14201:71;14269:1;14258:9;14254:17;14245:6;14201:71;:::i;:::-;14282:72;14350:2;14339:9;14335:18;14326:6;14282:72;:::i;:::-;14364:80;14440:2;14429:9;14425:18;14416:6;14364:80;:::i;:::-;14454;14530:2;14519:9;14515:18;14506:6;14454:80;:::i;:::-;14544:73;14612:3;14601:9;14597:19;14588:6;14544:73;:::i;:::-;14627;14695:3;14684:9;14680:19;14671:6;14627:73;:::i;:::-;13900:807;;;;;;;;;:::o;14713:210::-;14800:4;14838:2;14827:9;14823:18;14815:26;;14851:65;14913:1;14902:9;14898:17;14889:6;14851:65;:::i;:::-;14713:210;;;;:::o;14929:313::-;15042:4;15080:2;15069:9;15065:18;15057:26;;15129:9;15123:4;15119:20;15115:1;15104:9;15100:17;15093:47;15157:78;15230:4;15221:6;15157:78;:::i;:::-;15149:86;;14929:313;;;;:::o;15248:419::-;15414:4;15452:2;15441:9;15437:18;15429:26;;15501:9;15495:4;15491:20;15487:1;15476:9;15472:17;15465:47;15529:131;15655:4;15529:131;:::i;:::-;15521:139;;15248:419;;;:::o;15673:::-;15839:4;15877:2;15866:9;15862:18;15854:26;;15926:9;15920:4;15916:20;15912:1;15901:9;15897:17;15890:47;15954:131;16080:4;15954:131;:::i;:::-;15946:139;;15673:419;;;:::o;16098:::-;16264:4;16302:2;16291:9;16287:18;16279:26;;16351:9;16345:4;16341:20;16337:1;16326:9;16322:17;16315:47;16379:131;16505:4;16379:131;:::i;:::-;16371:139;;16098:419;;;:::o;16523:::-;16689:4;16727:2;16716:9;16712:18;16704:26;;16776:9;16770:4;16766:20;16762:1;16751:9;16747:17;16740:47;16804:131;16930:4;16804:131;:::i;:::-;16796:139;;16523:419;;;:::o;16948:::-;17114:4;17152:2;17141:9;17137:18;17129:26;;17201:9;17195:4;17191:20;17187:1;17176:9;17172:17;17165:47;17229:131;17355:4;17229:131;:::i;:::-;17221:139;;16948:419;;;:::o;17373:::-;17539:4;17577:2;17566:9;17562:18;17554:26;;17626:9;17620:4;17616:20;17612:1;17601:9;17597:17;17590:47;17654:131;17780:4;17654:131;:::i;:::-;17646:139;;17373:419;;;:::o;17798:::-;17964:4;18002:2;17991:9;17987:18;17979:26;;18051:9;18045:4;18041:20;18037:1;18026:9;18022:17;18015:47;18079:131;18205:4;18079:131;:::i;:::-;18071:139;;17798:419;;;:::o;18223:::-;18389:4;18427:2;18416:9;18412:18;18404:26;;18476:9;18470:4;18466:20;18462:1;18451:9;18447:17;18440:47;18504:131;18630:4;18504:131;:::i;:::-;18496:139;;18223:419;;;:::o;18648:::-;18814:4;18852:2;18841:9;18837:18;18829:26;;18901:9;18895:4;18891:20;18887:1;18876:9;18872:17;18865:47;18929:131;19055:4;18929:131;:::i;:::-;18921:139;;18648:419;;;:::o;19073:::-;19239:4;19277:2;19266:9;19262:18;19254:26;;19326:9;19320:4;19316:20;19312:1;19301:9;19297:17;19290:47;19354:131;19480:4;19354:131;:::i;:::-;19346:139;;19073:419;;;:::o;19498:::-;19664:4;19702:2;19691:9;19687:18;19679:26;;19751:9;19745:4;19741:20;19737:1;19726:9;19722:17;19715:47;19779:131;19905:4;19779:131;:::i;:::-;19771:139;;19498:419;;;:::o;19923:::-;20089:4;20127:2;20116:9;20112:18;20104:26;;20176:9;20170:4;20166:20;20162:1;20151:9;20147:17;20140:47;20204:131;20330:4;20204:131;:::i;:::-;20196:139;;19923:419;;;:::o;20348:222::-;20441:4;20479:2;20468:9;20464:18;20456:26;;20492:71;20560:1;20549:9;20545:17;20536:6;20492:71;:::i;:::-;20348:222;;;;:::o;20576:831::-;20839:4;20877:3;20866:9;20862:19;20854:27;;20891:71;20959:1;20948:9;20944:17;20935:6;20891:71;:::i;:::-;20972:80;21048:2;21037:9;21033:18;21024:6;20972:80;:::i;:::-;21099:9;21093:4;21089:20;21084:2;21073:9;21069:18;21062:48;21127:108;21230:4;21221:6;21127:108;:::i;:::-;21119:116;;21245:72;21313:2;21302:9;21298:18;21289:6;21245:72;:::i;:::-;21327:73;21395:3;21384:9;21380:19;21371:6;21327:73;:::i;:::-;20576:831;;;;;;;;:::o;21413:214::-;21502:4;21540:2;21529:9;21525:18;21517:26;;21553:67;21617:1;21606:9;21602:17;21593:6;21553:67;:::i;:::-;21413:214;;;;:::o;21633:129::-;21667:6;21694:20;;:::i;:::-;21684:30;;21723:33;21751:4;21743:6;21723:33;:::i;:::-;21633:129;;;:::o;21768:75::-;21801:6;21834:2;21828:9;21818:19;;21768:75;:::o;21849:311::-;21926:4;22016:18;22008:6;22005:30;22002:56;;;22038:18;;:::i;:::-;22002:56;22088:4;22080:6;22076:17;22068:25;;22148:4;22142;22138:15;22130:23;;21849:311;;;:::o;22166:132::-;22233:4;22256:3;22248:11;;22286:4;22281:3;22277:14;22269:22;;22166:132;;;:::o;22304:114::-;22371:6;22405:5;22399:12;22389:22;;22304:114;;;:::o;22424:99::-;22476:6;22510:5;22504:12;22494:22;;22424:99;;;:::o;22529:113::-;22599:4;22631;22626:3;22622:14;22614:22;;22529:113;;;:::o;22648:184::-;22747:11;22781:6;22776:3;22769:19;22821:4;22816:3;22812:14;22797:29;;22648:184;;;;:::o;22838:169::-;22922:11;22956:6;22951:3;22944:19;22996:4;22991:3;22987:14;22972:29;;22838:169;;;;:::o;23013:305::-;23053:3;23072:20;23090:1;23072:20;:::i;:::-;23067:25;;23106:20;23124:1;23106:20;:::i;:::-;23101:25;;23260:1;23192:66;23188:74;23185:1;23182:81;23179:107;;;23266:18;;:::i;:::-;23179:107;23310:1;23307;23303:9;23296:16;;23013:305;;;;:::o;23324:185::-;23364:1;23381:20;23399:1;23381:20;:::i;:::-;23376:25;;23415:20;23433:1;23415:20;:::i;:::-;23410:25;;23454:1;23444:35;;23459:18;;:::i;:::-;23444:35;23501:1;23498;23494:9;23489:14;;23324:185;;;;:::o;23515:348::-;23555:7;23578:20;23596:1;23578:20;:::i;:::-;23573:25;;23612:20;23630:1;23612:20;:::i;:::-;23607:25;;23800:1;23732:66;23728:74;23725:1;23722:81;23717:1;23710:9;23703:17;23699:105;23696:131;;;23807:18;;:::i;:::-;23696:131;23855:1;23852;23848:9;23837:20;;23515:348;;;;:::o;23869:191::-;23909:4;23929:20;23947:1;23929:20;:::i;:::-;23924:25;;23963:20;23981:1;23963:20;:::i;:::-;23958:25;;24002:1;23999;23996:8;23993:34;;;24007:18;;:::i;:::-;23993:34;24052:1;24049;24045:9;24037:17;;23869:191;;;;:::o;24066:96::-;24103:7;24132:24;24150:5;24132:24;:::i;:::-;24121:35;;24066:96;;;:::o;24168:90::-;24202:7;24245:5;24238:13;24231:21;24220:32;;24168:90;;;:::o;24264:126::-;24301:7;24341:42;24334:5;24330:54;24319:65;;24264:126;;;:::o;24396:77::-;24433:7;24462:5;24451:16;;24396:77;;;:::o;24479:86::-;24514:7;24554:4;24547:5;24543:16;24532:27;;24479:86;;;:::o;24571:121::-;24629:9;24662:24;24680:5;24662:24;:::i;:::-;24649:37;;24571:121;;;:::o;24698:307::-;24766:1;24776:113;24790:6;24787:1;24784:13;24776:113;;;24875:1;24870:3;24866:11;24860:18;24856:1;24851:3;24847:11;24840:39;24812:2;24809:1;24805:10;24800:15;;24776:113;;;24907:6;24904:1;24901:13;24898:101;;;24987:1;24978:6;24973:3;24969:16;24962:27;24898:101;24747:258;24698:307;;;:::o;25011:281::-;25094:27;25116:4;25094:27;:::i;:::-;25086:6;25082:40;25224:6;25212:10;25209:22;25188:18;25176:10;25173:34;25170:62;25167:88;;;25235:18;;:::i;:::-;25167:88;25275:10;25271:2;25264:22;25054:238;25011:281;;:::o;25298:233::-;25337:3;25360:24;25378:5;25360:24;:::i;:::-;25351:33;;25406:66;25399:5;25396:77;25393:103;;;25476:18;;:::i;:::-;25393:103;25523:1;25516:5;25512:13;25505:20;;25298:233;;;:::o;25537:180::-;25585:77;25582:1;25575:88;25682:4;25679:1;25672:15;25706:4;25703:1;25696:15;25723:180;25771:77;25768:1;25761:88;25868:4;25865:1;25858:15;25892:4;25889:1;25882:15;25909:180;25957:77;25954:1;25947:88;26054:4;26051:1;26044:15;26078:4;26075:1;26068:15;26095:180;26143:77;26140:1;26133:88;26240:4;26237:1;26230:15;26264:4;26261:1;26254:15;26281:117;26390:1;26387;26380:12;26404:117;26513:1;26510;26503:12;26527:117;26636:1;26633;26626:12;26650:117;26759:1;26756;26749:12;26773:102;26814:6;26865:2;26861:7;26856:2;26849:5;26845:14;26841:28;26831:38;;26773:102;;;:::o;26881:227::-;27021:34;27017:1;27009:6;27005:14;26998:58;27090:10;27085:2;27077:6;27073:15;27066:35;26881:227;:::o;27114:222::-;27254:34;27250:1;27242:6;27238:14;27231:58;27323:5;27318:2;27310:6;27306:15;27299:30;27114:222;:::o;27342:229::-;27482:34;27478:1;27470:6;27466:14;27459:58;27551:12;27546:2;27538:6;27534:15;27527:37;27342:229;:::o;27577:221::-;27717:34;27713:1;27705:6;27701:14;27694:58;27786:4;27781:2;27773:6;27769:15;27762:29;27577:221;:::o;27804:181::-;27944:33;27940:1;27932:6;27928:14;27921:57;27804:181;:::o;27991:177::-;28131:29;28127:1;28119:6;28115:14;28108:53;27991:177;:::o;28174:220::-;28314:34;28310:1;28302:6;28298:14;28291:58;28383:3;28378:2;28370:6;28366:15;28359:28;28174:220;:::o;28400:182::-;28540:34;28536:1;28528:6;28524:14;28517:58;28400:182;:::o;28588:228::-;28728:34;28724:1;28716:6;28712:14;28705:58;28797:11;28792:2;28784:6;28780:15;28773:36;28588:228;:::o;28822:224::-;28962:34;28958:1;28950:6;28946:14;28939:58;29031:7;29026:2;29018:6;29014:15;29007:32;28822:224;:::o;29052:223::-;29192:34;29188:1;29180:6;29176:14;29169:58;29261:6;29256:2;29248:6;29244:15;29237:31;29052:223;:::o;29281:173::-;29421:25;29417:1;29409:6;29405:14;29398:49;29281:173;:::o;29460:122::-;29533:24;29551:5;29533:24;:::i;:::-;29526:5;29523:35;29513:63;;29572:1;29569;29562:12;29513:63;29460:122;:::o;29588:116::-;29658:21;29673:5;29658:21;:::i;:::-;29651:5;29648:32;29638:60;;29694:1;29691;29684:12;29638:60;29588:116;:::o;29710:122::-;29783:24;29801:5;29783:24;:::i;:::-;29776:5;29773:35;29763:63;;29822:1;29819;29812:12;29763:63;29710:122;:::o;29838:118::-;29909:22;29925:5;29909:22;:::i;:::-;29902:5;29899:33;29889:61;;29946:1;29943;29936:12;29889:61;29838:118;:::o

Swarm Source

ipfs://6422b01b5cf026d6c06d25a876807ca740fd3f3c1e8245b7fe947faba6906d95
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.