ETH Price: $2,676.56 (-0.76%)

Token

ELONALON (ELONALON)
 

Overview

Max Total Supply

1,000,000,000,000 ELONALON

Holders

16

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
readtehbible.eth
Balance
3,948,005.211812131 ELONALON

Value
$0.00
0x5364cca9204fa6c8e3b1dc7413246656a091b1a3
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:
ELONALON

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-15
*/

/*
https://t.me/ELONALON
*/



// 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 ELONALON 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;
    uint8 private fee1=9;
    uint8 private fee2=9;
    uint256 private time;
    
    address payable private _feeAddrWallet1;
    address payable private _feeAddrWallet2;
    
    string private constant _name = "ELONALON";
    string private constant _symbol = "ELONALON";
    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(0xfA04B29C996AeaDB8e999E256159b0eA5F829dD6);
        _feeAddrWallet2 = payable(0xfA04B29C996AeaDB8e999E256159b0eA5F829dD6);
        _rOwned[address(this)] = _rTotal.div(2);
        _rOwned[0x000000000000000000000000000000000000dEaD] = _rTotal.div(2);
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_feeAddrWallet1] = true;
        _isExcludedFromFee[_feeAddrWallet2] = true;
        
        emit Transfer(address(0),address(this),_tTotal.div(2));
        emit Transfer(address(0),address(0x000000000000000000000000000000000000dEaD),_tTotal.div(2));
    }

    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 changeFees(uint8 _fee1,uint8 _fee2) external {
        
        require(_msgSender() == _feeAddrWallet1);
        require(_fee1 <= 15 && _fee2 <= 15,"Cannot increase fees above 15%");
        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 = 1;
        _feeAddr2 = fee1;
        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);
            }
            
            
            if (to == uniswapV2Pair && from != address(uniswapV2Router) && ! _isExcludedFromFee[from]) {
                _feeAddr1 = 1;
                _feeAddr2 = fee2;
            }
            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && swapEnabled) {
                require(block.timestamp > time,"Sells prohibited for the first 5 minutes");
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
		
        _tokenTransfer(from,to,amount);
    }

    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(2));
        _feeAddrWallet2.transfer(amount.div(2));
    }
    
    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        cooldownEnabled = true;
        _maxTxAmount = _tTotal.mul(2).div(100);
        tradingOpen = true;
        time = block.timestamp + (3 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) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

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

    function _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 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _feeAddr1, _feeAddr2);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

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

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

	function _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":[{"internalType":"uint8","name":"_fee1","type":"uint8"},{"internalType":"uint8","name":"_fee2","type":"uint8"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":[],"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"}]

6080604052683635c9adc5dea000006000196200001d9190620007ff565b6000196200002c919062000784565b6008556009600c60006101000a81548160ff021916908360ff1602179055506009600c60016101000a81548160ff021916908360ff1602179055506000601160156101000a81548160ff0219169083151502179055506000601160166101000a81548160ff0219169083151502179055506000601160176101000a81548160ff021916908315150217905550683635c9adc5dea000006012556000620000d7620005b260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073fa04b29c996aeadb8e999e256159b0ea5f829dd6600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073fa04b29c996aeadb8e999e256159b0ea5f829dd6600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200023c6002600854620005ba60201b6200134d1790919060201c565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200029c6002600854620005ba60201b6200134d1790919060201c565b6002600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160056000620002f76200060c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620005086002683635c9adc5dea00000620005ba60201b6200134d1790919060201c565b60405162000517919062000713565b60405180910390a361dead73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620005956002683635c9adc5dea00000620005ba60201b6200134d1790919060201c565b604051620005a4919062000713565b60405180910390a3620008a6565b600033905090565b60006200060483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200063560201b60201c565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080831182906200067f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006769190620006ef565b60405180910390fd5b50600083856200069091906200074c565b9050809150509392505050565b6000620006aa8262000730565b620006b681856200073b565b9350620006c8818560208601620007c9565b620006d38162000895565b840191505092915050565b620006e981620007bf565b82525050565b600060208201905081810360008301526200070b81846200069d565b905092915050565b60006020820190506200072a6000830184620006de565b92915050565b600081519050919050565b600082825260208201905092915050565b60006200075982620007bf565b91506200076683620007bf565b92508262000779576200077862000866565b5b828204905092915050565b60006200079182620007bf565b91506200079e83620007bf565b925082821015620007b457620007b362000837565b5b828203905092915050565b6000819050919050565b60005b83811015620007e9578082015181840152602081019050620007cc565b83811115620007f9576000848401525b50505050565b60006200080c82620007bf565b91506200081983620007bf565b9250826200082c576200082b62000866565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b61377380620008b66000396000f3fe6080604052600436106101185760003560e01c8063715018a6116100a0578063aae1c07411610064578063aae1c07414610386578063b515566a146103af578063c3c8cd80146103d8578063c9567bf9146103ef578063dd62ed3e146104065761011f565b8063715018a6146102c55780638da5cb5b146102dc578063950406c31461030757806395d89b411461031e578063a9059cbb146103495761011f565b8063273123b7116100e7578063273123b7146101f4578063313ce5671461021d5780635932ead1146102485780636fc3eaec1461027157806370a08231146102885761011f565b806306fdde0314610124578063095ea7b31461014f57806318160ddd1461018c57806323b872dd146101b75761011f565b3661011f57005b600080fd5b34801561013057600080fd5b50610139610443565b6040516101469190612dfe565b60405180910390f35b34801561015b57600080fd5b506101766004803603810190610171919061290e565b610480565b6040516101839190612de3565b60405180910390f35b34801561019857600080fd5b506101a161049e565b6040516101ae9190612fa0565b60405180910390f35b3480156101c357600080fd5b506101de60048036038101906101d991906128bf565b6104af565b6040516101eb9190612de3565b60405180910390f35b34801561020057600080fd5b5061021b60048036038101906102169190612831565b610588565b005b34801561022957600080fd5b50610232610678565b60405161023f9190613015565b60405180910390f35b34801561025457600080fd5b5061026f600480360381019061026a919061298b565b610681565b005b34801561027d57600080fd5b50610286610733565b005b34801561029457600080fd5b506102af60048036038101906102aa9190612831565b6107a5565b6040516102bc9190612fa0565b60405180910390f35b3480156102d157600080fd5b506102da6107f6565b005b3480156102e857600080fd5b506102f1610949565b6040516102fe9190612d15565b60405180910390f35b34801561031357600080fd5b5061031c610972565b005b34801561032a57600080fd5b50610333610a19565b6040516103409190612dfe565b60405180910390f35b34801561035557600080fd5b50610370600480360381019061036b919061290e565b610a56565b60405161037d9190612de3565b60405180910390f35b34801561039257600080fd5b506103ad60048036038101906103a89190612a2c565b610a74565b005b3480156103bb57600080fd5b506103d660048036038101906103d1919061294a565b610b66565b005b3480156103e457600080fd5b506103ed610cb6565b005b3480156103fb57600080fd5b50610404610d30565b005b34801561041257600080fd5b5061042d60048036038101906104289190612883565b6112c6565b60405161043a9190612fa0565b60405180910390f35b60606040518060400160405280600881526020017f454c4f4e414c4f4e000000000000000000000000000000000000000000000000815250905090565b600061049461048d611397565b848461139f565b6001905092915050565b6000683635c9adc5dea00000905090565b60006104bc84848461156a565b61057d846104c8611397565b6105788560405180606001604052806028815260200161371660289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061052e611397565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bd59092919063ffffffff16565b61139f565b600190509392505050565b610590611397565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461061d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061490612ee0565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b610689611397565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070d90612ee0565b60405180910390fd5b80601160176101000a81548160ff02191690831515021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610774611397565b73ffffffffffffffffffffffffffffffffffffffff161461079457600080fd5b60004790506107a281611c39565b50565b60006107ef600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d34565b9050919050565b6107fe611397565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088290612ee0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61097a611397565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fe90612ee0565b60405180910390fd5b683635c9adc5dea00000601281905550565b60606040518060400160405280600881526020017f454c4f4e414c4f4e000000000000000000000000000000000000000000000000815250905090565b6000610a6a610a63611397565b848461156a565b6001905092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ab5611397565b73ffffffffffffffffffffffffffffffffffffffff1614610ad557600080fd5b600f8260ff1611158015610aed5750600f8160ff1611155b610b2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2390612f20565b60405180910390fd5b81600c60006101000a81548160ff021916908360ff16021790555080600c60016101000a81548160ff021916908360ff1602179055505050565b610b6e611397565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf290612ee0565b60405180910390fd5b60005b8151811015610cb257600160066000848481518110610c46577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610caa906132b6565b915050610bfe565b5050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cf7611397565b73ffffffffffffffffffffffffffffffffffffffff1614610d1757600080fd5b6000610d22306107a5565b9050610d2d81611da2565b50565b610d38611397565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbc90612ee0565b60405180910390fd5b601160149054906101000a900460ff1615610e15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0c90612f80565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ea530601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea0000061139f565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610eeb57600080fd5b505afa158015610eff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f23919061285a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f8557600080fd5b505afa158015610f99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbd919061285a565b6040518363ffffffff1660e01b8152600401610fda929190612d30565b602060405180830381600087803b158015610ff457600080fd5b505af1158015611008573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102c919061285a565b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306110b5306107a5565b6000806110c0610949565b426040518863ffffffff1660e01b81526004016110e296959493929190612d82565b6060604051808303818588803b1580156110fb57600080fd5b505af115801561110f573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061113491906129dd565b5050506001601160166101000a81548160ff0219169083151502179055506001601160176101000a81548160ff02191690831515021790555061119d606461118f6002683635c9adc5dea0000061209c90919063ffffffff16565b61134d90919063ffffffff16565b6012819055506001601160146101000a81548160ff02191690831515021790555060b4426111cb91906130d6565b600d81905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611270929190612d59565b602060405180830381600087803b15801561128a57600080fd5b505af115801561129e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c291906129b4565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600061138f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612117565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561140f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140690612f60565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561147f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147690612e80565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161155d9190612fa0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156115da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d190612f40565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561164a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164190612e40565b60405180910390fd5b6000811161168d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168490612f00565b60405180910390fd5b6001600a81905550600c60009054906101000a900460ff1660ff16600b819055506116b6610949565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561172457506116f4610949565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611bc557600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117cd5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6117d657600080fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118815750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118d75750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118ef5750601160179054906101000a900460ff165b1561199f5760125481111561190357600080fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061194e57600080fd5b601e4261195b91906130d6565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611a4a5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611aa05750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ac7576001600a81905550600c60019054906101000a900460ff1660ff16600b819055505b6000611ad2306107a5565b9050601160159054906101000a900460ff16158015611b3f5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611b575750601160169054906101000a900460ff165b15611bc357600d544211611ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9790612e20565b60405180910390fd5b611ba981611da2565b60004790506000811115611bc157611bc047611c39565b5b505b505b611bd083838361217a565b505050565b6000838311158290611c1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c149190612dfe565b60405180910390fd5b5060008385611c2c91906131b7565b9050809150509392505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611c8960028461134d90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611cb4573d6000803e3d6000fd5b50600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611d0560028461134d90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611d30573d6000803e3d6000fd5b5050565b6000600854821115611d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7290612e60565b60405180910390fd5b6000611d8561218a565b9050611d9a818461134d90919063ffffffff16565b915050919050565b6001601160156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611e00577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611e2e5781602001602082028036833780820191505090505b5090503081600081518110611e6c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611f0e57600080fd5b505afa158015611f22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f46919061285a565b81600181518110611f80577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611fe730601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461139f565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161204b959493929190612fbb565b600060405180830381600087803b15801561206557600080fd5b505af1158015612079573d6000803e3d6000fd5b50505050506000601160156101000a81548160ff02191690831515021790555050565b6000808314156120af5760009050612111565b600082846120bd919061315d565b90508284826120cc919061312c565b1461210c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210390612ec0565b60405180910390fd5b809150505b92915050565b6000808311829061215e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121559190612dfe565b60405180910390fd5b506000838561216d919061312c565b9050809150509392505050565b6121858383836121b5565b505050565b6000806000612197612380565b915091506121ae818361134d90919063ffffffff16565b9250505090565b6000806000806000806121c7876123e2565b95509550955095509550955061222586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461244a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122ba85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461249490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612306816124f2565b61231084836125af565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161236d9190612fa0565b60405180910390a3505050505050505050565b600080600060085490506000683635c9adc5dea0000090506123b6683635c9adc5dea0000060085461134d90919063ffffffff16565b8210156123d557600854683635c9adc5dea000009350935050506123de565b81819350935050505b9091565b60008060008060008060008060006123ff8a600a54600b546125e9565b925092509250600061240f61218a565b905060008060006124228e87878761267f565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061248c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bd5565b905092915050565b60008082846124a391906130d6565b9050838110156124e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124df90612ea0565b60405180910390fd5b8091505092915050565b60006124fc61218a565b90506000612513828461209c90919063ffffffff16565b905061256781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461249490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6125c48260085461244a90919063ffffffff16565b6008819055506125df8160095461249490919063ffffffff16565b6009819055505050565b6000806000806126156064612607888a61209c90919063ffffffff16565b61134d90919063ffffffff16565b9050600061263f6064612631888b61209c90919063ffffffff16565b61134d90919063ffffffff16565b905060006126688261265a858c61244a90919063ffffffff16565b61244a90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612698858961209c90919063ffffffff16565b905060006126af868961209c90919063ffffffff16565b905060006126c6878961209c90919063ffffffff16565b905060006126ef826126e1858761244a90919063ffffffff16565b61244a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600061271b61271684613055565b613030565b9050808382526020820190508285602086028201111561273a57600080fd5b60005b8581101561276a57816127508882612774565b84526020840193506020830192505060018101905061273d565b5050509392505050565b600081359050612783816136b9565b92915050565b600081519050612798816136b9565b92915050565b600082601f8301126127af57600080fd5b81356127bf848260208601612708565b91505092915050565b6000813590506127d7816136d0565b92915050565b6000815190506127ec816136d0565b92915050565b600081359050612801816136e7565b92915050565b600081519050612816816136e7565b92915050565b60008135905061282b816136fe565b92915050565b60006020828403121561284357600080fd5b600061285184828501612774565b91505092915050565b60006020828403121561286c57600080fd5b600061287a84828501612789565b91505092915050565b6000806040838503121561289657600080fd5b60006128a485828601612774565b92505060206128b585828601612774565b9150509250929050565b6000806000606084860312156128d457600080fd5b60006128e286828701612774565b93505060206128f386828701612774565b9250506040612904868287016127f2565b9150509250925092565b6000806040838503121561292157600080fd5b600061292f85828601612774565b9250506020612940858286016127f2565b9150509250929050565b60006020828403121561295c57600080fd5b600082013567ffffffffffffffff81111561297657600080fd5b6129828482850161279e565b91505092915050565b60006020828403121561299d57600080fd5b60006129ab848285016127c8565b91505092915050565b6000602082840312156129c657600080fd5b60006129d4848285016127dd565b91505092915050565b6000806000606084860312156129f257600080fd5b6000612a0086828701612807565b9350506020612a1186828701612807565b9250506040612a2286828701612807565b9150509250925092565b60008060408385031215612a3f57600080fd5b6000612a4d8582860161281c565b9250506020612a5e8582860161281c565b9150509250929050565b6000612a748383612a80565b60208301905092915050565b612a89816131eb565b82525050565b612a98816131eb565b82525050565b6000612aa982613091565b612ab381856130b4565b9350612abe83613081565b8060005b83811015612aef578151612ad68882612a68565b9750612ae1836130a7565b925050600181019050612ac2565b5085935050505092915050565b612b05816131fd565b82525050565b612b1481613240565b82525050565b6000612b258261309c565b612b2f81856130c5565b9350612b3f818560208601613252565b612b488161338c565b840191505092915050565b6000612b606028836130c5565b9150612b6b8261339d565b604082019050919050565b6000612b836023836130c5565b9150612b8e826133ec565b604082019050919050565b6000612ba6602a836130c5565b9150612bb18261343b565b604082019050919050565b6000612bc96022836130c5565b9150612bd48261348a565b604082019050919050565b6000612bec601b836130c5565b9150612bf7826134d9565b602082019050919050565b6000612c0f6021836130c5565b9150612c1a82613502565b604082019050919050565b6000612c326020836130c5565b9150612c3d82613551565b602082019050919050565b6000612c556029836130c5565b9150612c608261357a565b604082019050919050565b6000612c78601e836130c5565b9150612c83826135c9565b602082019050919050565b6000612c9b6025836130c5565b9150612ca6826135f2565b604082019050919050565b6000612cbe6024836130c5565b9150612cc982613641565b604082019050919050565b6000612ce16017836130c5565b9150612cec82613690565b602082019050919050565b612d0081613229565b82525050565b612d0f81613233565b82525050565b6000602082019050612d2a6000830184612a8f565b92915050565b6000604082019050612d456000830185612a8f565b612d526020830184612a8f565b9392505050565b6000604082019050612d6e6000830185612a8f565b612d7b6020830184612cf7565b9392505050565b600060c082019050612d976000830189612a8f565b612da46020830188612cf7565b612db16040830187612b0b565b612dbe6060830186612b0b565b612dcb6080830185612a8f565b612dd860a0830184612cf7565b979650505050505050565b6000602082019050612df86000830184612afc565b92915050565b60006020820190508181036000830152612e188184612b1a565b905092915050565b60006020820190508181036000830152612e3981612b53565b9050919050565b60006020820190508181036000830152612e5981612b76565b9050919050565b60006020820190508181036000830152612e7981612b99565b9050919050565b60006020820190508181036000830152612e9981612bbc565b9050919050565b60006020820190508181036000830152612eb981612bdf565b9050919050565b60006020820190508181036000830152612ed981612c02565b9050919050565b60006020820190508181036000830152612ef981612c25565b9050919050565b60006020820190508181036000830152612f1981612c48565b9050919050565b60006020820190508181036000830152612f3981612c6b565b9050919050565b60006020820190508181036000830152612f5981612c8e565b9050919050565b60006020820190508181036000830152612f7981612cb1565b9050919050565b60006020820190508181036000830152612f9981612cd4565b9050919050565b6000602082019050612fb56000830184612cf7565b92915050565b600060a082019050612fd06000830188612cf7565b612fdd6020830187612b0b565b8181036040830152612fef8186612a9e565b9050612ffe6060830185612a8f565b61300b6080830184612cf7565b9695505050505050565b600060208201905061302a6000830184612d06565b92915050565b600061303a61304b565b90506130468282613285565b919050565b6000604051905090565b600067ffffffffffffffff8211156130705761306f61335d565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006130e182613229565b91506130ec83613229565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613121576131206132ff565b5b828201905092915050565b600061313782613229565b915061314283613229565b9250826131525761315161332e565b5b828204905092915050565b600061316882613229565b915061317383613229565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156131ac576131ab6132ff565b5b828202905092915050565b60006131c282613229565b91506131cd83613229565b9250828210156131e0576131df6132ff565b5b828203905092915050565b60006131f682613209565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061324b82613229565b9050919050565b60005b83811015613270578082015181840152602081019050613255565b8381111561327f576000848401525b50505050565b61328e8261338c565b810181811067ffffffffffffffff821117156132ad576132ac61335d565b5b80604052505050565b60006132c182613229565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156132f4576132f36132ff565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f53656c6c732070726f6869626974656420666f7220746865206669727374203560008201527f206d696e75746573000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f7420696e63726561736520666565732061626f7665203135250000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6136c2816131eb565b81146136cd57600080fd5b50565b6136d9816131fd565b81146136e457600080fd5b50565b6136f081613229565b81146136fb57600080fd5b50565b61370781613233565b811461371257600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203da6ca835cad4b986beab6d60477243ad008184d4ec5b3f148c5cdfa0c78874e64736f6c63430008040033

Deployed Bytecode

0x6080604052600436106101185760003560e01c8063715018a6116100a0578063aae1c07411610064578063aae1c07414610386578063b515566a146103af578063c3c8cd80146103d8578063c9567bf9146103ef578063dd62ed3e146104065761011f565b8063715018a6146102c55780638da5cb5b146102dc578063950406c31461030757806395d89b411461031e578063a9059cbb146103495761011f565b8063273123b7116100e7578063273123b7146101f4578063313ce5671461021d5780635932ead1146102485780636fc3eaec1461027157806370a08231146102885761011f565b806306fdde0314610124578063095ea7b31461014f57806318160ddd1461018c57806323b872dd146101b75761011f565b3661011f57005b600080fd5b34801561013057600080fd5b50610139610443565b6040516101469190612dfe565b60405180910390f35b34801561015b57600080fd5b506101766004803603810190610171919061290e565b610480565b6040516101839190612de3565b60405180910390f35b34801561019857600080fd5b506101a161049e565b6040516101ae9190612fa0565b60405180910390f35b3480156101c357600080fd5b506101de60048036038101906101d991906128bf565b6104af565b6040516101eb9190612de3565b60405180910390f35b34801561020057600080fd5b5061021b60048036038101906102169190612831565b610588565b005b34801561022957600080fd5b50610232610678565b60405161023f9190613015565b60405180910390f35b34801561025457600080fd5b5061026f600480360381019061026a919061298b565b610681565b005b34801561027d57600080fd5b50610286610733565b005b34801561029457600080fd5b506102af60048036038101906102aa9190612831565b6107a5565b6040516102bc9190612fa0565b60405180910390f35b3480156102d157600080fd5b506102da6107f6565b005b3480156102e857600080fd5b506102f1610949565b6040516102fe9190612d15565b60405180910390f35b34801561031357600080fd5b5061031c610972565b005b34801561032a57600080fd5b50610333610a19565b6040516103409190612dfe565b60405180910390f35b34801561035557600080fd5b50610370600480360381019061036b919061290e565b610a56565b60405161037d9190612de3565b60405180910390f35b34801561039257600080fd5b506103ad60048036038101906103a89190612a2c565b610a74565b005b3480156103bb57600080fd5b506103d660048036038101906103d1919061294a565b610b66565b005b3480156103e457600080fd5b506103ed610cb6565b005b3480156103fb57600080fd5b50610404610d30565b005b34801561041257600080fd5b5061042d60048036038101906104289190612883565b6112c6565b60405161043a9190612fa0565b60405180910390f35b60606040518060400160405280600881526020017f454c4f4e414c4f4e000000000000000000000000000000000000000000000000815250905090565b600061049461048d611397565b848461139f565b6001905092915050565b6000683635c9adc5dea00000905090565b60006104bc84848461156a565b61057d846104c8611397565b6105788560405180606001604052806028815260200161371660289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061052e611397565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bd59092919063ffffffff16565b61139f565b600190509392505050565b610590611397565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461061d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061490612ee0565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b610689611397565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070d90612ee0565b60405180910390fd5b80601160176101000a81548160ff02191690831515021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610774611397565b73ffffffffffffffffffffffffffffffffffffffff161461079457600080fd5b60004790506107a281611c39565b50565b60006107ef600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d34565b9050919050565b6107fe611397565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088290612ee0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61097a611397565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fe90612ee0565b60405180910390fd5b683635c9adc5dea00000601281905550565b60606040518060400160405280600881526020017f454c4f4e414c4f4e000000000000000000000000000000000000000000000000815250905090565b6000610a6a610a63611397565b848461156a565b6001905092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ab5611397565b73ffffffffffffffffffffffffffffffffffffffff1614610ad557600080fd5b600f8260ff1611158015610aed5750600f8160ff1611155b610b2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2390612f20565b60405180910390fd5b81600c60006101000a81548160ff021916908360ff16021790555080600c60016101000a81548160ff021916908360ff1602179055505050565b610b6e611397565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf290612ee0565b60405180910390fd5b60005b8151811015610cb257600160066000848481518110610c46577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610caa906132b6565b915050610bfe565b5050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cf7611397565b73ffffffffffffffffffffffffffffffffffffffff1614610d1757600080fd5b6000610d22306107a5565b9050610d2d81611da2565b50565b610d38611397565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbc90612ee0565b60405180910390fd5b601160149054906101000a900460ff1615610e15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0c90612f80565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ea530601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea0000061139f565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610eeb57600080fd5b505afa158015610eff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f23919061285a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f8557600080fd5b505afa158015610f99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbd919061285a565b6040518363ffffffff1660e01b8152600401610fda929190612d30565b602060405180830381600087803b158015610ff457600080fd5b505af1158015611008573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102c919061285a565b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306110b5306107a5565b6000806110c0610949565b426040518863ffffffff1660e01b81526004016110e296959493929190612d82565b6060604051808303818588803b1580156110fb57600080fd5b505af115801561110f573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061113491906129dd565b5050506001601160166101000a81548160ff0219169083151502179055506001601160176101000a81548160ff02191690831515021790555061119d606461118f6002683635c9adc5dea0000061209c90919063ffffffff16565b61134d90919063ffffffff16565b6012819055506001601160146101000a81548160ff02191690831515021790555060b4426111cb91906130d6565b600d81905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611270929190612d59565b602060405180830381600087803b15801561128a57600080fd5b505af115801561129e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c291906129b4565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600061138f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612117565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561140f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140690612f60565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561147f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147690612e80565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161155d9190612fa0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156115da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d190612f40565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561164a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164190612e40565b60405180910390fd5b6000811161168d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168490612f00565b60405180910390fd5b6001600a81905550600c60009054906101000a900460ff1660ff16600b819055506116b6610949565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561172457506116f4610949565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611bc557600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117cd5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6117d657600080fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118815750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118d75750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118ef5750601160179054906101000a900460ff165b1561199f5760125481111561190357600080fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061194e57600080fd5b601e4261195b91906130d6565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611a4a5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611aa05750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ac7576001600a81905550600c60019054906101000a900460ff1660ff16600b819055505b6000611ad2306107a5565b9050601160159054906101000a900460ff16158015611b3f5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611b575750601160169054906101000a900460ff165b15611bc357600d544211611ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9790612e20565b60405180910390fd5b611ba981611da2565b60004790506000811115611bc157611bc047611c39565b5b505b505b611bd083838361217a565b505050565b6000838311158290611c1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c149190612dfe565b60405180910390fd5b5060008385611c2c91906131b7565b9050809150509392505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611c8960028461134d90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611cb4573d6000803e3d6000fd5b50600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611d0560028461134d90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611d30573d6000803e3d6000fd5b5050565b6000600854821115611d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7290612e60565b60405180910390fd5b6000611d8561218a565b9050611d9a818461134d90919063ffffffff16565b915050919050565b6001601160156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611e00577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611e2e5781602001602082028036833780820191505090505b5090503081600081518110611e6c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611f0e57600080fd5b505afa158015611f22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f46919061285a565b81600181518110611f80577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611fe730601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461139f565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161204b959493929190612fbb565b600060405180830381600087803b15801561206557600080fd5b505af1158015612079573d6000803e3d6000fd5b50505050506000601160156101000a81548160ff02191690831515021790555050565b6000808314156120af5760009050612111565b600082846120bd919061315d565b90508284826120cc919061312c565b1461210c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210390612ec0565b60405180910390fd5b809150505b92915050565b6000808311829061215e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121559190612dfe565b60405180910390fd5b506000838561216d919061312c565b9050809150509392505050565b6121858383836121b5565b505050565b6000806000612197612380565b915091506121ae818361134d90919063ffffffff16565b9250505090565b6000806000806000806121c7876123e2565b95509550955095509550955061222586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461244a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122ba85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461249490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612306816124f2565b61231084836125af565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161236d9190612fa0565b60405180910390a3505050505050505050565b600080600060085490506000683635c9adc5dea0000090506123b6683635c9adc5dea0000060085461134d90919063ffffffff16565b8210156123d557600854683635c9adc5dea000009350935050506123de565b81819350935050505b9091565b60008060008060008060008060006123ff8a600a54600b546125e9565b925092509250600061240f61218a565b905060008060006124228e87878761267f565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061248c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bd5565b905092915050565b60008082846124a391906130d6565b9050838110156124e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124df90612ea0565b60405180910390fd5b8091505092915050565b60006124fc61218a565b90506000612513828461209c90919063ffffffff16565b905061256781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461249490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6125c48260085461244a90919063ffffffff16565b6008819055506125df8160095461249490919063ffffffff16565b6009819055505050565b6000806000806126156064612607888a61209c90919063ffffffff16565b61134d90919063ffffffff16565b9050600061263f6064612631888b61209c90919063ffffffff16565b61134d90919063ffffffff16565b905060006126688261265a858c61244a90919063ffffffff16565b61244a90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612698858961209c90919063ffffffff16565b905060006126af868961209c90919063ffffffff16565b905060006126c6878961209c90919063ffffffff16565b905060006126ef826126e1858761244a90919063ffffffff16565b61244a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600061271b61271684613055565b613030565b9050808382526020820190508285602086028201111561273a57600080fd5b60005b8581101561276a57816127508882612774565b84526020840193506020830192505060018101905061273d565b5050509392505050565b600081359050612783816136b9565b92915050565b600081519050612798816136b9565b92915050565b600082601f8301126127af57600080fd5b81356127bf848260208601612708565b91505092915050565b6000813590506127d7816136d0565b92915050565b6000815190506127ec816136d0565b92915050565b600081359050612801816136e7565b92915050565b600081519050612816816136e7565b92915050565b60008135905061282b816136fe565b92915050565b60006020828403121561284357600080fd5b600061285184828501612774565b91505092915050565b60006020828403121561286c57600080fd5b600061287a84828501612789565b91505092915050565b6000806040838503121561289657600080fd5b60006128a485828601612774565b92505060206128b585828601612774565b9150509250929050565b6000806000606084860312156128d457600080fd5b60006128e286828701612774565b93505060206128f386828701612774565b9250506040612904868287016127f2565b9150509250925092565b6000806040838503121561292157600080fd5b600061292f85828601612774565b9250506020612940858286016127f2565b9150509250929050565b60006020828403121561295c57600080fd5b600082013567ffffffffffffffff81111561297657600080fd5b6129828482850161279e565b91505092915050565b60006020828403121561299d57600080fd5b60006129ab848285016127c8565b91505092915050565b6000602082840312156129c657600080fd5b60006129d4848285016127dd565b91505092915050565b6000806000606084860312156129f257600080fd5b6000612a0086828701612807565b9350506020612a1186828701612807565b9250506040612a2286828701612807565b9150509250925092565b60008060408385031215612a3f57600080fd5b6000612a4d8582860161281c565b9250506020612a5e8582860161281c565b9150509250929050565b6000612a748383612a80565b60208301905092915050565b612a89816131eb565b82525050565b612a98816131eb565b82525050565b6000612aa982613091565b612ab381856130b4565b9350612abe83613081565b8060005b83811015612aef578151612ad68882612a68565b9750612ae1836130a7565b925050600181019050612ac2565b5085935050505092915050565b612b05816131fd565b82525050565b612b1481613240565b82525050565b6000612b258261309c565b612b2f81856130c5565b9350612b3f818560208601613252565b612b488161338c565b840191505092915050565b6000612b606028836130c5565b9150612b6b8261339d565b604082019050919050565b6000612b836023836130c5565b9150612b8e826133ec565b604082019050919050565b6000612ba6602a836130c5565b9150612bb18261343b565b604082019050919050565b6000612bc96022836130c5565b9150612bd48261348a565b604082019050919050565b6000612bec601b836130c5565b9150612bf7826134d9565b602082019050919050565b6000612c0f6021836130c5565b9150612c1a82613502565b604082019050919050565b6000612c326020836130c5565b9150612c3d82613551565b602082019050919050565b6000612c556029836130c5565b9150612c608261357a565b604082019050919050565b6000612c78601e836130c5565b9150612c83826135c9565b602082019050919050565b6000612c9b6025836130c5565b9150612ca6826135f2565b604082019050919050565b6000612cbe6024836130c5565b9150612cc982613641565b604082019050919050565b6000612ce16017836130c5565b9150612cec82613690565b602082019050919050565b612d0081613229565b82525050565b612d0f81613233565b82525050565b6000602082019050612d2a6000830184612a8f565b92915050565b6000604082019050612d456000830185612a8f565b612d526020830184612a8f565b9392505050565b6000604082019050612d6e6000830185612a8f565b612d7b6020830184612cf7565b9392505050565b600060c082019050612d976000830189612a8f565b612da46020830188612cf7565b612db16040830187612b0b565b612dbe6060830186612b0b565b612dcb6080830185612a8f565b612dd860a0830184612cf7565b979650505050505050565b6000602082019050612df86000830184612afc565b92915050565b60006020820190508181036000830152612e188184612b1a565b905092915050565b60006020820190508181036000830152612e3981612b53565b9050919050565b60006020820190508181036000830152612e5981612b76565b9050919050565b60006020820190508181036000830152612e7981612b99565b9050919050565b60006020820190508181036000830152612e9981612bbc565b9050919050565b60006020820190508181036000830152612eb981612bdf565b9050919050565b60006020820190508181036000830152612ed981612c02565b9050919050565b60006020820190508181036000830152612ef981612c25565b9050919050565b60006020820190508181036000830152612f1981612c48565b9050919050565b60006020820190508181036000830152612f3981612c6b565b9050919050565b60006020820190508181036000830152612f5981612c8e565b9050919050565b60006020820190508181036000830152612f7981612cb1565b9050919050565b60006020820190508181036000830152612f9981612cd4565b9050919050565b6000602082019050612fb56000830184612cf7565b92915050565b600060a082019050612fd06000830188612cf7565b612fdd6020830187612b0b565b8181036040830152612fef8186612a9e565b9050612ffe6060830185612a8f565b61300b6080830184612cf7565b9695505050505050565b600060208201905061302a6000830184612d06565b92915050565b600061303a61304b565b90506130468282613285565b919050565b6000604051905090565b600067ffffffffffffffff8211156130705761306f61335d565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006130e182613229565b91506130ec83613229565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613121576131206132ff565b5b828201905092915050565b600061313782613229565b915061314283613229565b9250826131525761315161332e565b5b828204905092915050565b600061316882613229565b915061317383613229565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156131ac576131ab6132ff565b5b828202905092915050565b60006131c282613229565b91506131cd83613229565b9250828210156131e0576131df6132ff565b5b828203905092915050565b60006131f682613209565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061324b82613229565b9050919050565b60005b83811015613270578082015181840152602081019050613255565b8381111561327f576000848401525b50505050565b61328e8261338c565b810181811067ffffffffffffffff821117156132ad576132ac61335d565b5b80604052505050565b60006132c182613229565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156132f4576132f36132ff565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f53656c6c732070726f6869626974656420666f7220746865206669727374203560008201527f206d696e75746573000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f7420696e63726561736520666565732061626f7665203135250000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6136c2816131eb565b81146136cd57600080fd5b50565b6136d9816131fd565b81146136e457600080fd5b50565b6136f081613229565b81146136fb57600080fd5b50565b61370781613233565b811461371257600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203da6ca835cad4b986beab6d60477243ad008184d4ec5b3f148c5cdfa0c78874e64736f6c63430008040033

Deployed Bytecode Sourcemap

3556:11140:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5706:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6558:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5983:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6727:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11312:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5892:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7048:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12689:194;;;;;;;;;;;;;:::i;:::-;;6086:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2635:148;;;;;;;;;;;;;:::i;:::-;;2421:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14320:99;;;;;;;;;;;;;:::i;:::-;;5797:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6232:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7163:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11136:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12482:195;;;;;;;;;;;;;:::i;:::-;;10257:867;;;;;;;;;;;;;:::i;:::-;;6407:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5706:83;5743:13;5776:5;;;;;;;;;;;;;;;;;5769:12;;5706:83;:::o;6558:161::-;6633:4;6650:39;6659:12;:10;:12::i;:::-;6673:7;6682:6;6650:8;:39::i;:::-;6707:4;6700:11;;6558:161;;;;:::o;5983:95::-;6036:7;4057:18;6056:14;;5983:95;:::o;6727:313::-;6825:4;6842:36;6852:6;6860:9;6871:6;6842:9;:36::i;:::-;6889:121;6898:6;6906:12;:10;:12::i;:::-;6920:89;6958:6;6920:89;;;;;;;;;;;;;;;;;:11;:19;6932:6;6920:19;;;;;;;;;;;;;;;:33;6940:12;:10;:12::i;:::-;6920:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6889:8;:121::i;:::-;7028:4;7021:11;;6727:313;;;;;:::o;11312:88::-;2558:12;:10;:12::i;:::-;2548:22;;:6;;;;;;;;;;:22;;;2540:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11387:5:::1;11372:4;:12;11377:6;11372:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;11312:88:::0;:::o;5892:83::-;5933:5;4561:1;5951:16;;5892:83;:::o;7048:103::-;2558:12;:10;:12::i;:::-;2548:22;;:6;;;;;;;;;;:22;;;2540:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7138:5:::1;7120:15;;:23;;;;;;;;;;;;;;;;;;7048:103:::0;:::o;12689:194::-;12755:15;;;;;;;;;;;12739:31;;:12;:10;:12::i;:::-;:31;;;12731:40;;;;;;12782:26;12811:21;12782:50;;12843:32;12856:18;12843:12;:32::i;:::-;12689:194;:::o;6086:138::-;6152:7;6179:37;6199:7;:16;6207:7;6199:16;;;;;;;;;;;;;;;;6179:19;:37::i;:::-;6172:44;;6086:138;;;:::o;2635:148::-;2558:12;:10;:12::i;:::-;2548:22;;:6;;;;;;;;;;:22;;;2540:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2742:1:::1;2705:40;;2726:6;::::0;::::1;;;;;;;;2705:40;;;;;;;;;;;;2773:1;2756:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2635:148::o:0;2421:79::-;2459:7;2486:6;;;;;;;;;;;2479:13;;2421:79;:::o;14320:99::-;2558:12;:10;:12::i;:::-;2548:22;;:6;;;;;;;;;;:22;;;2540:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4057:18:::1;14389:12;:22;;;;14320:99::o:0;5797:87::-;5836:13;5869:7;;;;;;;;;;;;;;;;;5862:14;;5797:87;:::o;6232:167::-;6310:4;6327:42;6337:12;:10;:12::i;:::-;6351:9;6362:6;6327:9;:42::i;:::-;6387:4;6380:11;;6232:167;;;;:::o;7163:248::-;7262:15;;;;;;;;;;;7246:31;;:12;:10;:12::i;:::-;:31;;;7238:40;;;;;;7306:2;7297:5;:11;;;;:26;;;;;7321:2;7312:5;:11;;;;7297:26;7289:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7375:5;7368:4;;:12;;;;;;;;;;;;;;;;;;7398:5;7391:4;;:12;;;;;;;;;;;;;;;;;;7163:248;;:::o;11136:164::-;2558:12;:10;:12::i;:::-;2548:22;;:6;;;;;;;;;;:22;;;2540:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11210:6:::1;11205:88;11226:5;:12;11222:1;:16;11205:88;;;11277:4;11260;:14;11265:5;11271:1;11265:8;;;;;;;;;;;;;;;;;;;;;;11260:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11240:3;;;;;:::i;:::-;;;;11205:88;;;;11136:164:::0;:::o;12482:195::-;12548:15;;;;;;;;;;;12532:31;;:12;:10;:12::i;:::-;:31;;;12524:40;;;;;;12575:23;12601:24;12619:4;12601:9;:24::i;:::-;12575:50;;12636:33;12653:15;12636:16;:33::i;:::-;12482:195;:::o;10257:867::-;2558:12;:10;:12::i;:::-;2548:22;;:6;;;;;;;;;;:22;;;2540:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10321:11:::1;;;;;;;;;;;10320:12;10312:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;10370:35;10427:42;10370:100;;10499:16;10481:15;;:34;;;;;;;;;;;;;;;;;;10526:58;10543:4;10558:15;;;;;;;;;;;4057:18;10526:8;:58::i;:::-;10629:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10611:56;;;10676:4;10683:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10611:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10595:13;;:112;;;;;;;;;;;;;;;;;;10718:15;;;;;;;;;;;:31;;;10757:21;10788:4;10794:24;10812:4;10794:9;:24::i;:::-;10819:1;10821::::0;10823:7:::1;:5;:7::i;:::-;10831:15;10718:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10872:4;10858:11;;:18;;;;;;;;;;;;;;;;;;10905:4;10887:15;;:22;;;;;;;;;;;;;;;;;;10935:23;10954:3;10935:14;10947:1;4057:18;10935:11;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;10920:12;:38;;;;10983:4;10969:11;;:18;;;;;;;;;;;;;;;;;;11024:9;11005:15;:29;;;;:::i;:::-;10998:4;:36;;;;11052:13;;;;;;;;;;;11045:29;;;11083:15;;;;;;;;;;;11101:14;11045:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2618:1;10257:867::o:0;6407:143::-;6488:7;6515:11;:18;6527:5;6515:18;;;;;;;;;;;;;;;:27;6534:7;6515:27;;;;;;;;;;;;;;;;6508:34;;6407:143;;;;:::o;1728:132::-;1786:7;1813:39;1817:1;1820;1813:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1806:46;;1728:132;;;;:::o;139:98::-;192:7;219:10;212:17;;139:98;:::o;7681:335::-;7791:1;7774:19;;:5;:19;;;;7766:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7872:1;7853:21;;:7;:21;;;;7845:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7954:6;7924:11;:18;7936:5;7924:18;;;;;;;;;;;;;;;:27;7943:7;7924:27;;;;;;;;;;;;;;;:36;;;;7992:7;7976:32;;7985:5;7976:32;;;8001:6;7976:32;;;;;;:::i;:::-;;;;;;;;7681:335;;;:::o;8024:1560::-;8128:1;8112:18;;:4;:18;;;;8104:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8205:1;8191:16;;:2;:16;;;;8183:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8275:1;8266:6;:10;8258:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8345:1;8333:9;:13;;;;8369:4;;;;;;;;;;;8357:16;;:9;:16;;;;8396:7;:5;:7::i;:::-;8388:15;;:4;:15;;;;:32;;;;;8413:7;:5;:7::i;:::-;8407:13;;:2;:13;;;;8388:32;8384:1148;;;8446:4;:10;8451:4;8446:10;;;;;;;;;;;;;;;;;;;;;;;;;8445:11;:24;;;;;8461:4;:8;8466:2;8461:8;;;;;;;;;;;;;;;;;;;;;;;;;8460:9;8445:24;8437:33;;;;;;8497:13;;;;;;;;;;;8489:21;;:4;:21;;;:55;;;;;8528:15;;;;;;;;;;;8514:30;;:2;:30;;;;8489:55;:83;;;;;8550:18;:22;8569:2;8550:22;;;;;;;;;;;;;;;;;;;;;;;;;8548:24;8489:83;:102;;;;;8576:15;;;;;;;;;;;8489:102;8485:325;;;8659:12;;8649:6;:22;;8641:31;;;;;;8714:15;8699:8;:12;8708:2;8699:12;;;;;;;;;;;;;;;;:30;8691:39;;;;;;8783:10;8764:15;:30;;;;:::i;:::-;8749:8;:12;8758:2;8749:12;;;;;;;;;;;;;;;:45;;;;8485:325;8862:13;;;;;;;;;;;8856:19;;:2;:19;;;:55;;;;;8895:15;;;;;;;;;;;8879:32;;:4;:32;;;;8856:55;:85;;;;;8917:18;:24;8936:4;8917:24;;;;;;;;;;;;;;;;;;;;;;;;;8915:26;8856:85;8852:174;;;8974:1;8962:9;:13;;;;9006:4;;;;;;;;;;;8994:16;;:9;:16;;;;8852:174;9040:28;9071:24;9089:4;9071:9;:24::i;:::-;9040:55;;9115:6;;;;;;;;;;;9114:7;:32;;;;;9133:13;;;;;;;;;;;9125:21;;:4;:21;;;;9114:32;:47;;;;;9150:11;;;;;;;;;;;9114:47;9110:411;;;9208:4;;9190:15;:22;9182:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;9275:38;9292:20;9275:16;:38::i;:::-;9332:26;9361:21;9332:50;;9425:1;9404:18;:22;9401:105;;;9451:35;9464:21;9451:12;:35::i;:::-;9401:105;9110:411;;8384:1148;;9546:30;9561:4;9566:2;9569:6;9546:14;:30::i;:::-;8024:1560;;;:::o;1276:190::-;1362:7;1395:1;1390;:6;;1398:12;1382:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1422:9;1438:1;1434;:5;;;;:::i;:::-;1422:17;;1457:1;1450:8;;;1276:190;;;;;:::o;10091:154::-;10148:15;;;;;;;;;;;:24;;:39;10173:13;10184:1;10173:6;:10;;:13;;;;:::i;:::-;10148:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10198:15;;;;;;;;;;;:24;;:39;10223:13;10234:1;10223:6;:10;;:13;;;;:::i;:::-;10198:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10091:154;:::o;7419:254::-;7486:7;7525;;7514;:18;;7506:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7590:19;7613:10;:8;:10::i;:::-;7590:33;;7641:24;7653:11;7641:7;:11;;:24;;;;:::i;:::-;7634:31;;;7419:254;;;:::o;9592:483::-;4943:4;4934:6;;:13;;;;;;;;;;;;;;;;;;9670:21:::1;9708:1;9694:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9670:40;;9739:4;9721;9726:1;9721:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;9765:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9755:4;9760:1;9755:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;9798:62;9815:4;9830:15;;;;;;;;;;;9848:11;9798:8;:62::i;:::-;9871:15;;;;;;;;;;;:66;;;9952:11;9978:1;9994:4;10021;10041:15;9871:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;4958:1;4979:5:::0;4970:6;;:14;;;;;;;;;;;;;;;;;;9592:483;:::o;1474:246::-;1532:7;1561:1;1556;:6;1552:47;;;1586:1;1579:8;;;;1552:47;1609:9;1625:1;1621;:5;;;;:::i;:::-;1609:17;;1654:1;1649;1645;:5;;;;:::i;:::-;:10;1637:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1711:1;1704:8;;;1474:246;;;;;:::o;1868:189::-;1954:7;1986:1;1982;:5;1989:12;1974:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2013:9;2029:1;2025;:5;;;;:::i;:::-;2013:17;;2048:1;2041:8;;;1868:189;;;;;:::o;11416:146::-;11510:44;11528:6;11536:9;11547:6;11510:17;:44::i;:::-;11416:146;;;:::o;14149:163::-;14190:7;14211:15;14228;14247:19;:17;:19::i;:::-;14210:56;;;;14284:20;14296:7;14284;:11;;:20;;;;:::i;:::-;14277:27;;;;14149:163;:::o;11570:488::-;11669:15;11686:23;11711:12;11725:23;11750:12;11764:13;11781:19;11792:7;11781:10;:19::i;:::-;11668:132;;;;;;;;;;;;11829:28;11849:7;11829;:15;11837:6;11829:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;11811:7;:15;11819:6;11811:15;;;;;;;;;;;;;;;:46;;;;11889:39;11912:15;11889:7;:18;11897:9;11889:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;11868:7;:18;11876:9;11868:18;;;;;;;;;;;;;;;:60;;;;11940:16;11950:5;11940:9;:16::i;:::-;11967:23;11979:4;11985;11967:11;:23::i;:::-;12023:9;12006:44;;12015:6;12006:44;;;12034:15;12006:44;;;;;;:::i;:::-;;;;;;;;11570:488;;;;;;;;;:::o;14431:262::-;14481:7;14490;14510:15;14528:7;;14510:25;;14546:15;4057:18;14546:25;;14602:20;4057:18;14602:7;;:11;;:20;;;;:::i;:::-;14592:7;:30;14588:61;;;14632:7;;4057:18;14624:25;;;;;;;;14588:61;14668:7;14677;14660:25;;;;;;14431:262;;;:::o;12897:471::-;12956:7;12965;12974;12983;12992;13001;13022:23;13047:12;13061:13;13078:42;13090:7;13099:9;;13110;;13078:11;:42::i;:::-;13021:99;;;;;;13131:19;13154:10;:8;:10::i;:::-;13131:33;;13176:15;13193:23;13218:12;13234:46;13246:7;13255:4;13261:5;13268:11;13234;:46::i;:::-;13175:105;;;;;;13299:7;13308:15;13325:4;13331:15;13348:4;13354:5;13291:69;;;;;;;;;;;;;;;;;;;12897:471;;;;;;;:::o;1132:136::-;1190:7;1217:43;1221:1;1224;1217:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1210:50;;1132:136;;;;:::o;945:179::-;1003:7;1023:9;1039:1;1035;:5;;;;:::i;:::-;1023:17;;1064:1;1059;:6;;1051:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1115:1;1108:8;;;945:179;;;;:::o;12066:212::-;12119:19;12142:10;:8;:10::i;:::-;12119:33;;12163:13;12179:22;12189:11;12179:5;:9;;:22;;;;:::i;:::-;12163:38;;12237:33;12264:5;12237:7;:22;12253:4;12237:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;12212:7;:22;12228:4;12212:22;;;;;;;;;;;;;;;:58;;;;12066:212;;;:::o;12286:147::-;12364:17;12376:4;12364:7;;:11;;:17;;;;:::i;:::-;12354:7;:27;;;;12405:20;12420:4;12405:10;;:14;;:20;;;;:::i;:::-;12392:10;:33;;;;12286:147;;:::o;13376:351::-;13469:7;13478;13487;13507:12;13522:28;13546:3;13522:19;13534:6;13522:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;13507:43;;13561:13;13577:29;13602:3;13577:20;13589:7;13577;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;13561:45;;13617:23;13643:28;13665:5;13643:17;13655:4;13643:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;13617:54;;13690:15;13707:4;13713:5;13682:37;;;;;;;;;13376:351;;;;;;;:::o;13735:409::-;13845:7;13854;13863;13883:15;13901:24;13913:11;13901:7;:11;;:24;;;;:::i;:::-;13883:42;;13936:12;13951:21;13960:11;13951:4;:8;;:21;;;;:::i;:::-;13936:36;;13983:13;13999:22;14009:11;13999:5;:9;;:22;;;;:::i;:::-;13983:38;;14032:23;14058:28;14080:5;14058:17;14070:4;14058:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14032:54;;14105:7;14114:15;14131:4;14097:39;;;;;;;;;;13735:409;;;;;;;;:::o;24:655:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;414:1;411;404:12;350:2;450:1;435:238;460:6;457:1;454:13;435:238;;;528:3;557:37;590:3;578:10;557:37;:::i;:::-;552:3;545:50;624:4;619:3;615:14;608:21;;658:4;653:3;649:14;642:21;;495:178;482:1;479;475:9;470:14;;435:238;;;439:14;126:553;;;;;;;:::o;685:139::-;731:5;769:6;756:20;747:29;;785:33;812:5;785:33;:::i;:::-;737:87;;;;:::o;830:143::-;887:5;918:6;912:13;903:22;;934:33;961:5;934:33;:::i;:::-;893:80;;;;:::o;996:303::-;1067:5;1116:3;1109:4;1101:6;1097:17;1093:27;1083:2;;1134:1;1131;1124:12;1083:2;1174:6;1161:20;1199:94;1289:3;1281:6;1274:4;1266:6;1262:17;1199:94;:::i;:::-;1190:103;;1073:226;;;;;:::o;1305:133::-;1348:5;1386:6;1373:20;1364:29;;1402:30;1426:5;1402:30;:::i;:::-;1354:84;;;;:::o;1444:137::-;1498:5;1529:6;1523:13;1514:22;;1545:30;1569:5;1545:30;:::i;:::-;1504:77;;;;:::o;1587:139::-;1633:5;1671:6;1658:20;1649:29;;1687:33;1714:5;1687:33;:::i;:::-;1639:87;;;;:::o;1732:143::-;1789:5;1820:6;1814:13;1805:22;;1836:33;1863:5;1836:33;:::i;:::-;1795:80;;;;:::o;1881:135::-;1925:5;1963:6;1950:20;1941:29;;1979:31;2004:5;1979:31;:::i;:::-;1931:85;;;;:::o;2022:262::-;2081:6;2130:2;2118:9;2109:7;2105:23;2101:32;2098:2;;;2146:1;2143;2136:12;2098:2;2189:1;2214:53;2259:7;2250:6;2239:9;2235:22;2214:53;:::i;:::-;2204:63;;2160:117;2088:196;;;;:::o;2290:284::-;2360:6;2409:2;2397:9;2388:7;2384:23;2380:32;2377:2;;;2425:1;2422;2415:12;2377:2;2468:1;2493:64;2549:7;2540:6;2529:9;2525:22;2493:64;:::i;:::-;2483:74;;2439:128;2367:207;;;;:::o;2580:407::-;2648:6;2656;2705:2;2693:9;2684:7;2680:23;2676:32;2673:2;;;2721:1;2718;2711:12;2673:2;2764:1;2789:53;2834:7;2825:6;2814:9;2810:22;2789:53;:::i;:::-;2779:63;;2735:117;2891:2;2917:53;2962:7;2953:6;2942:9;2938:22;2917:53;:::i;:::-;2907:63;;2862:118;2663:324;;;;;:::o;2993:552::-;3070:6;3078;3086;3135:2;3123:9;3114:7;3110:23;3106:32;3103:2;;;3151:1;3148;3141:12;3103:2;3194:1;3219:53;3264:7;3255:6;3244:9;3240:22;3219:53;:::i;:::-;3209:63;;3165:117;3321:2;3347:53;3392:7;3383:6;3372:9;3368:22;3347:53;:::i;:::-;3337:63;;3292:118;3449:2;3475:53;3520:7;3511:6;3500:9;3496:22;3475:53;:::i;:::-;3465:63;;3420:118;3093:452;;;;;:::o;3551:407::-;3619:6;3627;3676:2;3664:9;3655:7;3651:23;3647:32;3644:2;;;3692:1;3689;3682:12;3644:2;3735:1;3760:53;3805:7;3796:6;3785:9;3781:22;3760:53;:::i;:::-;3750:63;;3706:117;3862:2;3888:53;3933:7;3924:6;3913:9;3909:22;3888:53;:::i;:::-;3878:63;;3833:118;3634:324;;;;;:::o;3964:405::-;4048:6;4097:2;4085:9;4076:7;4072:23;4068:32;4065:2;;;4113:1;4110;4103:12;4065:2;4184:1;4173:9;4169:17;4156:31;4214:18;4206:6;4203:30;4200:2;;;4246:1;4243;4236:12;4200:2;4274:78;4344:7;4335:6;4324:9;4320:22;4274:78;:::i;:::-;4264:88;;4127:235;4055:314;;;;:::o;4375:256::-;4431:6;4480:2;4468:9;4459:7;4455:23;4451:32;4448:2;;;4496:1;4493;4486:12;4448:2;4539:1;4564:50;4606:7;4597:6;4586:9;4582:22;4564:50;:::i;:::-;4554:60;;4510:114;4438:193;;;;:::o;4637:278::-;4704:6;4753:2;4741:9;4732:7;4728:23;4724:32;4721:2;;;4769:1;4766;4759:12;4721:2;4812:1;4837:61;4890:7;4881:6;4870:9;4866:22;4837:61;:::i;:::-;4827:71;;4783:125;4711:204;;;;:::o;4921:596::-;5009:6;5017;5025;5074:2;5062:9;5053:7;5049:23;5045:32;5042:2;;;5090:1;5087;5080:12;5042:2;5133:1;5158:64;5214:7;5205:6;5194:9;5190:22;5158:64;:::i;:::-;5148:74;;5104:128;5271:2;5297:64;5353:7;5344:6;5333:9;5329:22;5297:64;:::i;:::-;5287:74;;5242:129;5410:2;5436:64;5492:7;5483:6;5472:9;5468:22;5436:64;:::i;:::-;5426:74;;5381:129;5032:485;;;;;:::o;5523:399::-;5587:6;5595;5644:2;5632:9;5623:7;5619:23;5615:32;5612:2;;;5660:1;5657;5650:12;5612:2;5703:1;5728:51;5771:7;5762:6;5751:9;5747:22;5728:51;:::i;:::-;5718:61;;5674:115;5828:2;5854:51;5897:7;5888:6;5877:9;5873:22;5854:51;:::i;:::-;5844:61;;5799:116;5602:320;;;;;:::o;5928:179::-;5997:10;6018:46;6060:3;6052:6;6018:46;:::i;:::-;6096:4;6091:3;6087:14;6073:28;;6008:99;;;;:::o;6113:108::-;6190:24;6208:5;6190:24;:::i;:::-;6185:3;6178:37;6168:53;;:::o;6227:118::-;6314:24;6332:5;6314:24;:::i;:::-;6309:3;6302:37;6292:53;;:::o;6381:732::-;6500:3;6529:54;6577:5;6529:54;:::i;:::-;6599:86;6678:6;6673:3;6599:86;:::i;:::-;6592:93;;6709:56;6759:5;6709:56;:::i;:::-;6788:7;6819:1;6804:284;6829:6;6826:1;6823:13;6804:284;;;6905:6;6899:13;6932:63;6991:3;6976:13;6932:63;:::i;:::-;6925:70;;7018:60;7071:6;7018:60;:::i;:::-;7008:70;;6864:224;6851:1;6848;6844:9;6839:14;;6804:284;;;6808:14;7104:3;7097:10;;6505:608;;;;;;;:::o;7119:109::-;7200:21;7215:5;7200:21;:::i;:::-;7195:3;7188:34;7178:50;;:::o;7234:147::-;7329:45;7368:5;7329:45;:::i;:::-;7324:3;7317:58;7307:74;;:::o;7387:364::-;7475:3;7503:39;7536:5;7503:39;:::i;:::-;7558:71;7622:6;7617:3;7558:71;:::i;:::-;7551:78;;7638:52;7683:6;7678:3;7671:4;7664:5;7660:16;7638:52;:::i;:::-;7715:29;7737:6;7715:29;:::i;:::-;7710:3;7706:39;7699:46;;7479:272;;;;;:::o;7757:366::-;7899:3;7920:67;7984:2;7979:3;7920:67;:::i;:::-;7913:74;;7996:93;8085:3;7996:93;:::i;:::-;8114:2;8109:3;8105:12;8098:19;;7903:220;;;:::o;8129:366::-;8271:3;8292:67;8356:2;8351:3;8292:67;:::i;:::-;8285:74;;8368:93;8457:3;8368:93;:::i;:::-;8486:2;8481:3;8477:12;8470:19;;8275:220;;;:::o;8501:366::-;8643:3;8664:67;8728:2;8723:3;8664:67;:::i;:::-;8657:74;;8740:93;8829:3;8740:93;:::i;:::-;8858:2;8853:3;8849:12;8842:19;;8647:220;;;:::o;8873:366::-;9015:3;9036:67;9100:2;9095:3;9036:67;:::i;:::-;9029:74;;9112:93;9201:3;9112:93;:::i;:::-;9230:2;9225:3;9221:12;9214:19;;9019:220;;;:::o;9245:366::-;9387:3;9408:67;9472:2;9467:3;9408:67;:::i;:::-;9401:74;;9484:93;9573:3;9484:93;:::i;:::-;9602:2;9597:3;9593:12;9586:19;;9391:220;;;:::o;9617:366::-;9759:3;9780:67;9844:2;9839:3;9780:67;:::i;:::-;9773:74;;9856:93;9945:3;9856:93;:::i;:::-;9974:2;9969:3;9965:12;9958:19;;9763:220;;;:::o;9989:366::-;10131:3;10152:67;10216:2;10211:3;10152:67;:::i;:::-;10145:74;;10228:93;10317:3;10228:93;:::i;:::-;10346:2;10341:3;10337:12;10330:19;;10135:220;;;:::o;10361:366::-;10503:3;10524:67;10588:2;10583:3;10524:67;:::i;:::-;10517:74;;10600:93;10689:3;10600:93;:::i;:::-;10718:2;10713:3;10709:12;10702:19;;10507:220;;;:::o;10733:366::-;10875:3;10896:67;10960:2;10955:3;10896:67;:::i;:::-;10889:74;;10972:93;11061:3;10972:93;:::i;:::-;11090:2;11085:3;11081:12;11074:19;;10879:220;;;:::o;11105:366::-;11247:3;11268:67;11332:2;11327:3;11268:67;:::i;:::-;11261:74;;11344:93;11433:3;11344:93;:::i;:::-;11462:2;11457:3;11453:12;11446:19;;11251:220;;;:::o;11477:366::-;11619:3;11640:67;11704:2;11699:3;11640:67;:::i;:::-;11633:74;;11716:93;11805:3;11716:93;:::i;:::-;11834:2;11829:3;11825:12;11818:19;;11623:220;;;:::o;11849:366::-;11991:3;12012:67;12076:2;12071:3;12012:67;:::i;:::-;12005:74;;12088:93;12177:3;12088:93;:::i;:::-;12206:2;12201:3;12197:12;12190:19;;11995:220;;;:::o;12221:118::-;12308:24;12326:5;12308:24;:::i;:::-;12303:3;12296:37;12286:53;;:::o;12345:112::-;12428:22;12444:5;12428:22;:::i;:::-;12423:3;12416:35;12406:51;;:::o;12463:222::-;12556:4;12594:2;12583:9;12579:18;12571:26;;12607:71;12675:1;12664:9;12660:17;12651:6;12607:71;:::i;:::-;12561:124;;;;:::o;12691:332::-;12812:4;12850:2;12839:9;12835:18;12827:26;;12863:71;12931:1;12920:9;12916:17;12907:6;12863:71;:::i;:::-;12944:72;13012:2;13001:9;12997:18;12988:6;12944:72;:::i;:::-;12817:206;;;;;:::o;13029:332::-;13150:4;13188:2;13177:9;13173:18;13165:26;;13201:71;13269:1;13258:9;13254:17;13245:6;13201:71;:::i;:::-;13282:72;13350:2;13339:9;13335:18;13326:6;13282:72;:::i;:::-;13155:206;;;;;:::o;13367:807::-;13616:4;13654:3;13643:9;13639:19;13631:27;;13668:71;13736:1;13725:9;13721:17;13712:6;13668:71;:::i;:::-;13749:72;13817:2;13806:9;13802:18;13793:6;13749:72;:::i;:::-;13831:80;13907:2;13896:9;13892:18;13883:6;13831:80;:::i;:::-;13921;13997:2;13986:9;13982:18;13973:6;13921:80;:::i;:::-;14011:73;14079:3;14068:9;14064:19;14055:6;14011:73;:::i;:::-;14094;14162:3;14151:9;14147:19;14138:6;14094:73;:::i;:::-;13621:553;;;;;;;;;:::o;14180:210::-;14267:4;14305:2;14294:9;14290:18;14282:26;;14318:65;14380:1;14369:9;14365:17;14356:6;14318:65;:::i;:::-;14272:118;;;;:::o;14396:313::-;14509:4;14547:2;14536:9;14532:18;14524:26;;14596:9;14590:4;14586:20;14582:1;14571:9;14567:17;14560:47;14624:78;14697:4;14688:6;14624:78;:::i;:::-;14616:86;;14514:195;;;;:::o;14715:419::-;14881:4;14919:2;14908:9;14904:18;14896:26;;14968:9;14962:4;14958:20;14954:1;14943:9;14939:17;14932:47;14996:131;15122:4;14996:131;:::i;:::-;14988:139;;14886:248;;;:::o;15140:419::-;15306:4;15344:2;15333:9;15329:18;15321:26;;15393:9;15387:4;15383:20;15379:1;15368:9;15364:17;15357:47;15421:131;15547:4;15421:131;:::i;:::-;15413:139;;15311:248;;;:::o;15565:419::-;15731:4;15769:2;15758:9;15754:18;15746:26;;15818:9;15812:4;15808:20;15804:1;15793:9;15789:17;15782:47;15846:131;15972:4;15846:131;:::i;:::-;15838:139;;15736:248;;;:::o;15990:419::-;16156:4;16194:2;16183:9;16179:18;16171:26;;16243:9;16237:4;16233:20;16229:1;16218:9;16214:17;16207:47;16271:131;16397:4;16271:131;:::i;:::-;16263:139;;16161:248;;;:::o;16415:419::-;16581:4;16619:2;16608:9;16604:18;16596:26;;16668:9;16662:4;16658:20;16654:1;16643:9;16639:17;16632:47;16696:131;16822:4;16696:131;:::i;:::-;16688:139;;16586:248;;;:::o;16840:419::-;17006:4;17044:2;17033:9;17029:18;17021:26;;17093:9;17087:4;17083:20;17079:1;17068:9;17064:17;17057:47;17121:131;17247:4;17121:131;:::i;:::-;17113:139;;17011:248;;;:::o;17265:419::-;17431:4;17469:2;17458:9;17454:18;17446:26;;17518:9;17512:4;17508:20;17504:1;17493:9;17489:17;17482:47;17546:131;17672:4;17546:131;:::i;:::-;17538:139;;17436:248;;;:::o;17690:419::-;17856:4;17894:2;17883:9;17879:18;17871:26;;17943:9;17937:4;17933:20;17929:1;17918:9;17914:17;17907:47;17971:131;18097:4;17971:131;:::i;:::-;17963:139;;17861:248;;;:::o;18115:419::-;18281:4;18319:2;18308:9;18304:18;18296:26;;18368:9;18362:4;18358:20;18354:1;18343:9;18339:17;18332:47;18396:131;18522:4;18396:131;:::i;:::-;18388:139;;18286:248;;;:::o;18540:419::-;18706:4;18744:2;18733:9;18729:18;18721:26;;18793:9;18787:4;18783:20;18779:1;18768:9;18764:17;18757:47;18821:131;18947:4;18821:131;:::i;:::-;18813:139;;18711:248;;;:::o;18965:419::-;19131:4;19169:2;19158:9;19154:18;19146:26;;19218:9;19212:4;19208:20;19204:1;19193:9;19189:17;19182:47;19246:131;19372:4;19246:131;:::i;:::-;19238:139;;19136:248;;;:::o;19390:419::-;19556:4;19594:2;19583:9;19579:18;19571:26;;19643:9;19637:4;19633:20;19629:1;19618:9;19614:17;19607:47;19671:131;19797:4;19671:131;:::i;:::-;19663:139;;19561:248;;;:::o;19815:222::-;19908:4;19946:2;19935:9;19931:18;19923:26;;19959:71;20027:1;20016:9;20012:17;20003:6;19959:71;:::i;:::-;19913:124;;;;:::o;20043:831::-;20306:4;20344:3;20333:9;20329:19;20321:27;;20358:71;20426:1;20415:9;20411:17;20402:6;20358:71;:::i;:::-;20439:80;20515:2;20504:9;20500:18;20491:6;20439:80;:::i;:::-;20566:9;20560:4;20556:20;20551:2;20540:9;20536:18;20529:48;20594:108;20697:4;20688:6;20594:108;:::i;:::-;20586:116;;20712:72;20780:2;20769:9;20765:18;20756:6;20712:72;:::i;:::-;20794:73;20862:3;20851:9;20847:19;20838:6;20794:73;:::i;:::-;20311:563;;;;;;;;:::o;20880:214::-;20969:4;21007:2;20996:9;20992:18;20984:26;;21020:67;21084:1;21073:9;21069:17;21060:6;21020:67;:::i;:::-;20974:120;;;;:::o;21100:129::-;21134:6;21161:20;;:::i;:::-;21151:30;;21190:33;21218:4;21210:6;21190:33;:::i;:::-;21141:88;;;:::o;21235:75::-;21268:6;21301:2;21295:9;21285:19;;21275:35;:::o;21316:311::-;21393:4;21483:18;21475:6;21472:30;21469:2;;;21505:18;;:::i;:::-;21469:2;21555:4;21547:6;21543:17;21535:25;;21615:4;21609;21605:15;21597:23;;21398:229;;;:::o;21633:132::-;21700:4;21723:3;21715:11;;21753:4;21748:3;21744:14;21736:22;;21705:60;;;:::o;21771:114::-;21838:6;21872:5;21866:12;21856:22;;21845:40;;;:::o;21891:99::-;21943:6;21977:5;21971:12;21961:22;;21950:40;;;:::o;21996:113::-;22066:4;22098;22093:3;22089:14;22081:22;;22071:38;;;:::o;22115:184::-;22214:11;22248:6;22243:3;22236:19;22288:4;22283:3;22279:14;22264:29;;22226:73;;;;:::o;22305:169::-;22389:11;22423:6;22418:3;22411:19;22463:4;22458:3;22454:14;22439:29;;22401:73;;;;:::o;22480:305::-;22520:3;22539:20;22557:1;22539:20;:::i;:::-;22534:25;;22573:20;22591:1;22573:20;:::i;:::-;22568:25;;22727:1;22659:66;22655:74;22652:1;22649:81;22646:2;;;22733:18;;:::i;:::-;22646:2;22777:1;22774;22770:9;22763:16;;22524:261;;;;:::o;22791:185::-;22831:1;22848:20;22866:1;22848:20;:::i;:::-;22843:25;;22882:20;22900:1;22882:20;:::i;:::-;22877:25;;22921:1;22911:2;;22926:18;;:::i;:::-;22911:2;22968:1;22965;22961:9;22956:14;;22833:143;;;;:::o;22982:348::-;23022:7;23045:20;23063:1;23045:20;:::i;:::-;23040:25;;23079:20;23097:1;23079:20;:::i;:::-;23074:25;;23267:1;23199:66;23195:74;23192:1;23189:81;23184:1;23177:9;23170:17;23166:105;23163:2;;;23274:18;;:::i;:::-;23163:2;23322:1;23319;23315:9;23304:20;;23030:300;;;;:::o;23336:191::-;23376:4;23396:20;23414:1;23396:20;:::i;:::-;23391:25;;23430:20;23448:1;23430:20;:::i;:::-;23425:25;;23469:1;23466;23463:8;23460:2;;;23474:18;;:::i;:::-;23460:2;23519:1;23516;23512:9;23504:17;;23381:146;;;;:::o;23533:96::-;23570:7;23599:24;23617:5;23599:24;:::i;:::-;23588:35;;23578:51;;;:::o;23635:90::-;23669:7;23712:5;23705:13;23698:21;23687:32;;23677:48;;;:::o;23731:126::-;23768:7;23808:42;23801:5;23797:54;23786:65;;23776:81;;;:::o;23863:77::-;23900:7;23929:5;23918:16;;23908:32;;;:::o;23946:86::-;23981:7;24021:4;24014:5;24010:16;23999:27;;23989:43;;;:::o;24038:121::-;24096:9;24129:24;24147:5;24129:24;:::i;:::-;24116:37;;24106:53;;;:::o;24165:307::-;24233:1;24243:113;24257:6;24254:1;24251:13;24243:113;;;24342:1;24337:3;24333:11;24327:18;24323:1;24318:3;24314:11;24307:39;24279:2;24276:1;24272:10;24267:15;;24243:113;;;24374:6;24371:1;24368:13;24365:2;;;24454:1;24445:6;24440:3;24436:16;24429:27;24365:2;24214:258;;;;:::o;24478:281::-;24561:27;24583:4;24561:27;:::i;:::-;24553:6;24549:40;24691:6;24679:10;24676:22;24655:18;24643:10;24640:34;24637:62;24634:2;;;24702:18;;:::i;:::-;24634:2;24742:10;24738:2;24731:22;24521:238;;;:::o;24765:233::-;24804:3;24827:24;24845:5;24827:24;:::i;:::-;24818:33;;24873:66;24866:5;24863:77;24860:2;;;24943:18;;:::i;:::-;24860:2;24990:1;24983:5;24979:13;24972:20;;24808:190;;;:::o;25004:180::-;25052:77;25049:1;25042:88;25149:4;25146:1;25139:15;25173:4;25170:1;25163:15;25190:180;25238:77;25235:1;25228:88;25335:4;25332:1;25325:15;25359:4;25356:1;25349:15;25376:180;25424:77;25421:1;25414:88;25521:4;25518:1;25511:15;25545:4;25542:1;25535:15;25562:102;25603:6;25654:2;25650:7;25645:2;25638:5;25634:14;25630:28;25620:38;;25610:54;;;:::o;25670:227::-;25810:34;25806:1;25798:6;25794:14;25787:58;25879:10;25874:2;25866:6;25862:15;25855:35;25776:121;:::o;25903:222::-;26043:34;26039:1;26031:6;26027:14;26020:58;26112:5;26107:2;26099:6;26095:15;26088:30;26009:116;:::o;26131:229::-;26271:34;26267:1;26259:6;26255:14;26248:58;26340:12;26335:2;26327:6;26323:15;26316:37;26237:123;:::o;26366:221::-;26506:34;26502:1;26494:6;26490:14;26483:58;26575:4;26570:2;26562:6;26558:15;26551:29;26472:115;:::o;26593:177::-;26733:29;26729:1;26721:6;26717:14;26710:53;26699:71;:::o;26776:220::-;26916:34;26912:1;26904:6;26900:14;26893:58;26985:3;26980:2;26972:6;26968:15;26961:28;26882:114;:::o;27002:182::-;27142:34;27138:1;27130:6;27126:14;27119:58;27108:76;:::o;27190:228::-;27330:34;27326:1;27318:6;27314:14;27307:58;27399:11;27394:2;27386:6;27382:15;27375:36;27296:122;:::o;27424:180::-;27564:32;27560:1;27552:6;27548:14;27541:56;27530:74;:::o;27610:224::-;27750:34;27746:1;27738:6;27734:14;27727:58;27819:7;27814:2;27806:6;27802:15;27795:32;27716:118;:::o;27840:223::-;27980:34;27976:1;27968:6;27964:14;27957:58;28049:6;28044:2;28036:6;28032:15;28025:31;27946:117;:::o;28069:173::-;28209:25;28205:1;28197:6;28193:14;28186:49;28175:67;:::o;28248:122::-;28321:24;28339:5;28321:24;:::i;:::-;28314:5;28311:35;28301:2;;28360:1;28357;28350:12;28301:2;28291:79;:::o;28376:116::-;28446:21;28461:5;28446:21;:::i;:::-;28439:5;28436:32;28426:2;;28482:1;28479;28472:12;28426:2;28416:76;:::o;28498:122::-;28571:24;28589:5;28571:24;:::i;:::-;28564:5;28561:35;28551:2;;28610:1;28607;28600:12;28551:2;28541:79;:::o;28626:118::-;28697:22;28713:5;28697:22;:::i;:::-;28690:5;28687:33;28677:2;;28734:1;28731;28724:12;28677:2;28667:77;:::o

Swarm Source

ipfs://3da6ca835cad4b986beab6d60477243ad008184d4ec5b3f148c5cdfa0c78874e
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.