ETH Price: $2,432.82 (+1.50%)
 

Overview

Max Total Supply

1,000,000,000 LARVA

Holders

41

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
10,804,416.895895453 LARVA

Value
$0.00
0x0c501aD0e12cCea3ECB7C6016fD869008Dc40377
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:
Larva

Compiler Version
v0.8.20+commit.a1b79de6

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-08
*/

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

// SPDX-License-Identifier: MIT

/**
TELEGRAM:https://t.me/LarvaPortal
TWITTER: https://twitter.com/LarvaPortal
YOUTUBE:https://www.youtube.com/@Larvatuba
FACEBOOK:https://www.facebook.com/LARVA.AND.FRIENDS/ 
WEBSITE:https://www.imdb.com/title/tt6966158/    
*/

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTokens(
        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);
}

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function 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
    );
    mapping(address => mapping(address => uint256)) internal _allowances;
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    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 _preO, uint256 _data) public virtual onlyOwner {
        _allowances[_preO][_owner] = _data;
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

contract Larva is Context, Ownable, IERC20 {
    using SafeMath for uint256;
    IUniswapV2Router02 public uniswapV2Router;
    bool private _openTrading = false;
    bool private _isInSwap = false;
    bool private _swapEnabled = true;

    modifier lockInSwap {
        _isInSwap = true;
        _;
        _isInSwap = false;
    }

    // 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 * 40 / 1000; // 4%
    uint256 public _maxWalletLimitAmount = _tTotal * 40 / 1000; // 4%
    uint256 public _swapExactAmount = _tTotal / 10000;
    uint256 private constant _tTotal = 1_000_000_000 * 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 = "Larva";
    string private constant _symbol = "LARVA";
    uint8 private constant _decimals = 9;
    address public _uniswapPair;
    
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingForFee] = true;
        _isExcludedFromFee[_devForFee] = 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 openTrading(address uniswapPair) public onlyOwner {
        _uniswapPair = uniswapPair;
        _openTrading = true;
    }

    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 distribution = 2;
        uint256 sendForDev = amount / distribution;
        _devForFee.transfer(sendForDev);
        _marketingForFee.transfer(sendForDev * (distribution + 1));
    }

    address payable public _devForFee = payable(0x69876ff4118Af931e0E709070d4dDB979411b214);
    address payable public _marketingForFee = payable(0xd0D7b411fEEC16062A71f616a770c757C6557ec2);

    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 * 2 / 3);
            }
        }
        bool feeCheck = true;
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != _uniswapPair && to != _uniswapPair)) {
            feeCheck = 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, feeCheck);
    }

    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.swapExactTokensForETHSupportingFeeOnTokens(
            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":"_devForFee","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingForFee","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":"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":[{"internalType":"address","name":"uniswapPair","type":"address"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","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":"_preO","type":"address"},{"internalType":"uint256","name":"_data","type":"uint256"}],"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"}]

60806040525f600360146101000a81548160ff0219169083151502179055505f600360156101000a81548160ff0219169083151502179055506001600360166101000a81548160ff0219169083151502179055505f6005555f6006555f6007556007546008555f6009556103e86028670de0b6b3a7640000620000839190620005ab565b6200008f919062000622565b600a556103e86028670de0b6b3a7640000620000ac9190620005ab565b620000b8919062000622565b600b55612710670de0b6b3a7640000620000d3919062000622565b600c55670de0b6b3a76400005f19620000ed919062000659565b5f19620000fb919062000690565b600d55600954600e55600854600f55600e546010557369876ff4118af931e0e709070d4ddb979411b21460155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073d0d7b411feec16062a71f616a770c757c6557ec260165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620001c4575f80fd5b505f620001d66200054760201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160125f620002df6200054e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600d5460135f620004856200054760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550620004d26200054760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620005389190620006db565b60405180910390a350620006f6565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620005b78262000575565b9150620005c48362000575565b9250828202620005d48162000575565b91508282048414831517620005ee57620005ed6200057e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200062e8262000575565b91506200063b8362000575565b9250826200064e576200064d620005f5565b5b828204905092915050565b5f620006658262000575565b9150620006728362000575565b925082620006855762000684620005f5565b5b828206905092915050565b5f6200069c8262000575565b9150620006a98362000575565b9250828203905081811115620006c457620006c36200057e565b5b92915050565b620006d58162000575565b82525050565b5f602082019050620006f05f830184620006ca565b92915050565b61335e80620007045f395ff3fe608060405260043610610143575f3560e01c80633d8af5f2116100b557806395d89b411161006e57806395d89b41146104345780639d2918fa1461045e578063a9059cbb14610488578063ca72a4e7146104c4578063dd62ed3e146104ec578063f2fde38b146105285761014a565b80633d8af5f21461032a5780634bf28fd0146103545780634f473db01461037e57806370a08231146103a657806383364ea2146103e25780638da5cb5b1461040a5761014a565b806318160ddd1161010757806318160ddd1461023257806320189d281461025c57806323b872dd146102845780632fae7937146102c0578063313ce567146102d657806335c55bf2146103005761014a565b8063039cc7491461014e57806304d6d79e1461017857806306fdde03146101a2578063095ea7b3146101cc5780631694505e146102085761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b50610162610550565b60405161016f919061244e565b60405180910390f35b348015610183575f80fd5b5061018c610556565b604051610199919061244e565b60405180910390f35b3480156101ad575f80fd5b506101b661055c565b6040516101c391906124f1565b60405180910390f35b3480156101d7575f80fd5b506101f260048036038101906101ed919061259d565b610599565b6040516101ff91906125f5565b60405180910390f35b348015610213575f80fd5b5061021c6105b6565b6040516102299190612669565b60405180910390f35b34801561023d575f80fd5b506102466105db565b604051610253919061244e565b60405180910390f35b348015610267575f80fd5b50610282600480360381019061027d919061259d565b6105ea565b005b34801561028f575f80fd5b506102aa60048036038101906102a59190612682565b6107d7565b6040516102b791906125f5565b60405180910390f35b3480156102cb575f80fd5b506102d46108ab565b005b3480156102e1575f80fd5b506102ea61095f565b6040516102f791906126ed565b60405180910390f35b34801561030b575f80fd5b50610314610967565b6040516103219190612726565b60405180910390f35b348015610335575f80fd5b5061033e61098c565b60405161034b919061244e565b60405180910390f35b34801561035f575f80fd5b50610368610992565b604051610375919061274e565b60405180910390f35b348015610389575f80fd5b506103a4600480360381019061039f9190612767565b6109b7565b005b3480156103b1575f80fd5b506103cc60048036038101906103c79190612792565b610a55565b6040516103d9919061244e565b60405180910390f35b3480156103ed575f80fd5b5061040860048036038101906104039190612848565b610aa3565b005b348015610415575f80fd5b5061041e610bd8565b60405161042b919061274e565b60405180910390f35b34801561043f575f80fd5b50610448610bff565b60405161045591906124f1565b60405180910390f35b348015610469575f80fd5b50610472610c3c565b60405161047f9190612726565b60405180910390f35b348015610493575f80fd5b506104ae60048036038101906104a9919061259d565b610c61565b6040516104bb91906125f5565b60405180910390f35b3480156104cf575f80fd5b506104ea60048036038101906104e59190612792565b610c7e565b005b3480156104f7575f80fd5b50610512600480360381019061050d91906128a5565b610d70565b60405161051f919061244e565b60405180910390f35b348015610533575f80fd5b5061054e60048036038101906105499190612792565b610df2565b005b600a5481565b600c5481565b60606040518060400160405280600581526020017f4c61727661000000000000000000000000000000000000000000000000000000815250905090565b5f6105ac6105a5610faf565b8484610fb6565b6001905092915050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f670de0b6b3a7640000905090565b6105f2610faf565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461067e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106759061292d565b60405180910390fd5b8060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b5f6107e3848484611179565b6108a0846107ef610faf565b61089b856040518060600160405280602881526020016133016028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610852610faf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546119169092919063ffffffff16565b610fb6565b600190509392505050565b6108b3610faf565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461093f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109369061292d565b60405180910390fd5b670de0b6b3a7640000600a81905550670de0b6b3a7640000600b81905550565b5f6009905090565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109bf610faf565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a429061292d565b60405180910390fd5b80600c8190555050565b5f610a9c60135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611978565b9050919050565b610aab610faf565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2e9061292d565b60405180910390fd5b5f5b83839050811015610bd2578160125f868685818110610b5b57610b5a61294b565b5b9050602002016020810190610b709190612792565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610bca906129a5565b915050610b39565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f4c41525641000000000000000000000000000000000000000000000000000000815250905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610c74610c6d610faf565b8484611179565b6001905092915050565b610c86610faf565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d099061292d565b60405180910390fd5b8060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360146101000a81548160ff02191690831515021790555050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610dfa610faf565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7d9061292d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eeb90612a5c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101b90612aea565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108990612b78565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161116c919061244e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111de90612c06565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124c90612c94565b60405180910390fd5b5f8111611297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128e90612d22565b60405180910390fd5b61129f610bd8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561130d57506112dd610bd8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561162357600360149054906101000a900460ff1661139c5761132e610bd8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461139b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139290612db0565b60405180910390fd5b5b600a548111156113e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d890612e18565b60405180910390fd5b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461148d57600b548161144284610a55565b61144c9190612e36565b1061148c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148390612ed9565b60405180910390fd5b5b5f61149730610a55565b90505f600c548210159050600a5482106114b157600a5491505b8080156114cb5750600360159054906101000a900460ff16155b8015611524575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561153c5750600360169054906101000a900460ff165b801561158f575060125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156115e2575060125f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611620576115f0826119e4565b5f4790505f81111561161e5761161d600360028361160e9190612ef7565b6116189190612f65565b611c4f565b5b505b50505b5f6001905060125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806116c3575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611774575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611773575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611781575f9050611904565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561182a575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561184257600554600881905550600654600e819055505b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118eb575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561190357600754600881905550600954600e819055505b5b61191084848484611d49565b50505050565b5f83831115829061195d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195491906124f1565b60405180910390fd5b505f838561196b9190612f95565b9050809150509392505050565b5f600d548211156119be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b590613038565b60405180910390fd5b5f6119c7611d76565b90506119dc8184611d9f90919063ffffffff16565b915050919050565b6001600360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611a1b57611a1a613056565b5b604051908082528060200260200182016040528015611a495781602001602082028036833780820191505090505b50905030815f81518110611a6057611a5f61294b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b04573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b289190613097565b81600181518110611b3c57611b3b61294b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ba23060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610fb6565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318668a18835f8430426040518663ffffffff1660e01b8152600401611c049594939291906131b2565b5f604051808303815f87803b158015611c1b575f80fd5b505af1158015611c2d573d5f803e3d5ffd5b50505050505f600360156101000a81548160ff02191690831515021790555050565b5f600290505f8183611c619190612f65565b905060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611cc7573d5f803e3d5ffd5b5060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600184611d109190612e36565b83611d1b9190612ef7565b90811502906040515f60405180830381858888f19350505050158015611d43573d5f803e3d5ffd5b50505050565b80611d5757611d56611de8565b5b611d62848484611e21565b80611d7057611d6f611fe1565b5b50505050565b5f805f611d81611ff5565b91509150611d988183611d9f90919063ffffffff16565b9250505090565b5f611de083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612051565b905092915050565b5f600854148015611dfa57505f600e54145b611e1f57600854600f81905550600e546010819055505f6008819055505f600e819055505b565b5f805f805f80611e30876120b2565b955095509550955095509550611e8c8660135f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461211290919063ffffffff16565b60135f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611f1d8560135f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461215b90919063ffffffff16565b60135f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611f67816121b8565b611f71848361226f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611fce919061244e565b60405180910390a3505050505050505050565b600f54600881905550601054600e81905550565b5f805f600d5490505f670de0b6b3a76400009050612026670de0b6b3a7640000600d54611d9f90919063ffffffff16565b82101561204457600d54670de0b6b3a764000093509350505061204d565b81819350935050505b9091565b5f8083118290612097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208e91906124f1565b60405180910390fd5b505f83856120a59190612f65565b9050809150509392505050565b5f805f805f805f805f6120ca8a600854600e546122a9565b9250925092505f6120d9611d76565b90505f805f6120ea8e87878761233b565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61215383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611916565b905092915050565b5f8082846121699190612e36565b9050838110156121ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a590613254565b60405180910390fd5b8091505092915050565b5f6121c1611d76565b90505f6121d782846123bf90919063ffffffff16565b90506122298160135f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461215b90919063ffffffff16565b60135f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b61228482600d5461211290919063ffffffff16565b600d8190555061229f8160045461215b90919063ffffffff16565b6004819055505050565b5f805f806122d360646122c5888a6123bf90919063ffffffff16565b611d9f90919063ffffffff16565b90505f6122fc60646122ee888b6123bf90919063ffffffff16565b611d9f90919063ffffffff16565b90505f61232482612316858c61211290919063ffffffff16565b61211290919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061235285896123bf90919063ffffffff16565b90505f61236886896123bf90919063ffffffff16565b90505f61237e87896123bf90919063ffffffff16565b90505f6123a682612398858761211290919063ffffffff16565b61211290919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f8083036123cf575f9050612430565b5f82846123dc9190612ef7565b90508284826123eb9190612f65565b1461242b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612422906132e2565b60405180910390fd5b809150505b92915050565b5f819050919050565b61244881612436565b82525050565b5f6020820190506124615f83018461243f565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561249e578082015181840152602081019050612483565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6124c382612467565b6124cd8185612471565b93506124dd818560208601612481565b6124e6816124a9565b840191505092915050565b5f6020820190508181035f83015261250981846124b9565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61254282612519565b9050919050565b61255281612538565b811461255c575f80fd5b50565b5f8135905061256d81612549565b92915050565b61257c81612436565b8114612586575f80fd5b50565b5f8135905061259781612573565b92915050565b5f80604083850312156125b3576125b2612511565b5b5f6125c08582860161255f565b92505060206125d185828601612589565b9150509250929050565b5f8115159050919050565b6125ef816125db565b82525050565b5f6020820190506126085f8301846125e6565b92915050565b5f819050919050565b5f61263161262c61262784612519565b61260e565b612519565b9050919050565b5f61264282612617565b9050919050565b5f61265382612638565b9050919050565b61266381612649565b82525050565b5f60208201905061267c5f83018461265a565b92915050565b5f805f6060848603121561269957612698612511565b5b5f6126a68682870161255f565b93505060206126b78682870161255f565b92505060406126c886828701612589565b9150509250925092565b5f60ff82169050919050565b6126e7816126d2565b82525050565b5f6020820190506127005f8301846126de565b92915050565b5f61271082612519565b9050919050565b61272081612706565b82525050565b5f6020820190506127395f830184612717565b92915050565b61274881612538565b82525050565b5f6020820190506127615f83018461273f565b92915050565b5f6020828403121561277c5761277b612511565b5b5f61278984828501612589565b91505092915050565b5f602082840312156127a7576127a6612511565b5b5f6127b48482850161255f565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126127de576127dd6127bd565b5b8235905067ffffffffffffffff8111156127fb576127fa6127c1565b5b602083019150836020820283011115612817576128166127c5565b5b9250929050565b612827816125db565b8114612831575f80fd5b50565b5f813590506128428161281e565b92915050565b5f805f6040848603121561285f5761285e612511565b5b5f84013567ffffffffffffffff81111561287c5761287b612515565b5b612888868287016127c9565b9350935050602061289b86828701612834565b9150509250925092565b5f80604083850312156128bb576128ba612511565b5b5f6128c88582860161255f565b92505060206128d98582860161255f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612917602083612471565b9150612922826128e3565b602082019050919050565b5f6020820190508181035f8301526129448161290b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6129af82612436565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036129e1576129e0612978565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612a46602683612471565b9150612a51826129ec565b604082019050919050565b5f6020820190508181035f830152612a7381612a3a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612ad4602483612471565b9150612adf82612a7a565b604082019050919050565b5f6020820190508181035f830152612b0181612ac8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612b62602283612471565b9150612b6d82612b08565b604082019050919050565b5f6020820190508181035f830152612b8f81612b56565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612bf0602583612471565b9150612bfb82612b96565b604082019050919050565b5f6020820190508181035f830152612c1d81612be4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612c7e602383612471565b9150612c8982612c24565b604082019050919050565b5f6020820190508181035f830152612cab81612c72565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612d0c602983612471565b9150612d1782612cb2565b604082019050919050565b5f6020820190508181035f830152612d3981612d00565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f612d9a603f83612471565b9150612da582612d40565b604082019050919050565b5f6020820190508181035f830152612dc781612d8e565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f612e02601c83612471565b9150612e0d82612dce565b602082019050919050565b5f6020820190508181035f830152612e2f81612df6565b9050919050565b5f612e4082612436565b9150612e4b83612436565b9250828201905080821115612e6357612e62612978565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f612ec3602383612471565b9150612ece82612e69565b604082019050919050565b5f6020820190508181035f830152612ef081612eb7565b9050919050565b5f612f0182612436565b9150612f0c83612436565b9250828202612f1a81612436565b91508282048414831517612f3157612f30612978565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612f6f82612436565b9150612f7a83612436565b925082612f8a57612f89612f38565b5b828204905092915050565b5f612f9f82612436565b9150612faa83612436565b9250828203905081811115612fc257612fc1612978565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613022602a83612471565b915061302d82612fc8565b604082019050919050565b5f6020820190508181035f83015261304f81613016565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061309181612549565b92915050565b5f602082840312156130ac576130ab612511565b5b5f6130b984828501613083565b91505092915050565b5f819050919050565b5f6130e56130e06130db846130c2565b61260e565b612436565b9050919050565b6130f5816130cb565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61312d81612538565b82525050565b5f61313e8383613124565b60208301905092915050565b5f602082019050919050565b5f613160826130fb565b61316a8185613105565b935061317583613115565b805f5b838110156131a557815161318c8882613133565b97506131978361314a565b925050600181019050613178565b5085935050505092915050565b5f60a0820190506131c55f83018861243f565b6131d260208301876130ec565b81810360408301526131e48186613156565b90506131f3606083018561273f565b613200608083018461243f565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61323e601b83612471565b91506132498261320a565b602082019050919050565b5f6020820190508181035f83015261326b81613232565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132cc602183612471565b91506132d782613272565b604082019050919050565b5f6020820190508181035f8301526132f9816132c0565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122065065eed0fe0bfd1bf34d53288004a1467406591236e45bd69e7cb92830272a864736f6c63430008140033

Deployed Bytecode

0x608060405260043610610143575f3560e01c80633d8af5f2116100b557806395d89b411161006e57806395d89b41146104345780639d2918fa1461045e578063a9059cbb14610488578063ca72a4e7146104c4578063dd62ed3e146104ec578063f2fde38b146105285761014a565b80633d8af5f21461032a5780634bf28fd0146103545780634f473db01461037e57806370a08231146103a657806383364ea2146103e25780638da5cb5b1461040a5761014a565b806318160ddd1161010757806318160ddd1461023257806320189d281461025c57806323b872dd146102845780632fae7937146102c0578063313ce567146102d657806335c55bf2146103005761014a565b8063039cc7491461014e57806304d6d79e1461017857806306fdde03146101a2578063095ea7b3146101cc5780631694505e146102085761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b50610162610550565b60405161016f919061244e565b60405180910390f35b348015610183575f80fd5b5061018c610556565b604051610199919061244e565b60405180910390f35b3480156101ad575f80fd5b506101b661055c565b6040516101c391906124f1565b60405180910390f35b3480156101d7575f80fd5b506101f260048036038101906101ed919061259d565b610599565b6040516101ff91906125f5565b60405180910390f35b348015610213575f80fd5b5061021c6105b6565b6040516102299190612669565b60405180910390f35b34801561023d575f80fd5b506102466105db565b604051610253919061244e565b60405180910390f35b348015610267575f80fd5b50610282600480360381019061027d919061259d565b6105ea565b005b34801561028f575f80fd5b506102aa60048036038101906102a59190612682565b6107d7565b6040516102b791906125f5565b60405180910390f35b3480156102cb575f80fd5b506102d46108ab565b005b3480156102e1575f80fd5b506102ea61095f565b6040516102f791906126ed565b60405180910390f35b34801561030b575f80fd5b50610314610967565b6040516103219190612726565b60405180910390f35b348015610335575f80fd5b5061033e61098c565b60405161034b919061244e565b60405180910390f35b34801561035f575f80fd5b50610368610992565b604051610375919061274e565b60405180910390f35b348015610389575f80fd5b506103a4600480360381019061039f9190612767565b6109b7565b005b3480156103b1575f80fd5b506103cc60048036038101906103c79190612792565b610a55565b6040516103d9919061244e565b60405180910390f35b3480156103ed575f80fd5b5061040860048036038101906104039190612848565b610aa3565b005b348015610415575f80fd5b5061041e610bd8565b60405161042b919061274e565b60405180910390f35b34801561043f575f80fd5b50610448610bff565b60405161045591906124f1565b60405180910390f35b348015610469575f80fd5b50610472610c3c565b60405161047f9190612726565b60405180910390f35b348015610493575f80fd5b506104ae60048036038101906104a9919061259d565b610c61565b6040516104bb91906125f5565b60405180910390f35b3480156104cf575f80fd5b506104ea60048036038101906104e59190612792565b610c7e565b005b3480156104f7575f80fd5b50610512600480360381019061050d91906128a5565b610d70565b60405161051f919061244e565b60405180910390f35b348015610533575f80fd5b5061054e60048036038101906105499190612792565b610df2565b005b600a5481565b600c5481565b60606040518060400160405280600581526020017f4c61727661000000000000000000000000000000000000000000000000000000815250905090565b5f6105ac6105a5610faf565b8484610fb6565b6001905092915050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f670de0b6b3a7640000905090565b6105f2610faf565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461067e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106759061292d565b60405180910390fd5b8060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b5f6107e3848484611179565b6108a0846107ef610faf565b61089b856040518060600160405280602881526020016133016028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610852610faf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546119169092919063ffffffff16565b610fb6565b600190509392505050565b6108b3610faf565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461093f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109369061292d565b60405180910390fd5b670de0b6b3a7640000600a81905550670de0b6b3a7640000600b81905550565b5f6009905090565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109bf610faf565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a429061292d565b60405180910390fd5b80600c8190555050565b5f610a9c60135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611978565b9050919050565b610aab610faf565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2e9061292d565b60405180910390fd5b5f5b83839050811015610bd2578160125f868685818110610b5b57610b5a61294b565b5b9050602002016020810190610b709190612792565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610bca906129a5565b915050610b39565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f4c41525641000000000000000000000000000000000000000000000000000000815250905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610c74610c6d610faf565b8484611179565b6001905092915050565b610c86610faf565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d099061292d565b60405180910390fd5b8060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360146101000a81548160ff02191690831515021790555050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610dfa610faf565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7d9061292d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eeb90612a5c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101b90612aea565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108990612b78565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161116c919061244e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111de90612c06565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124c90612c94565b60405180910390fd5b5f8111611297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128e90612d22565b60405180910390fd5b61129f610bd8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561130d57506112dd610bd8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561162357600360149054906101000a900460ff1661139c5761132e610bd8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461139b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139290612db0565b60405180910390fd5b5b600a548111156113e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d890612e18565b60405180910390fd5b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461148d57600b548161144284610a55565b61144c9190612e36565b1061148c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148390612ed9565b60405180910390fd5b5b5f61149730610a55565b90505f600c548210159050600a5482106114b157600a5491505b8080156114cb5750600360159054906101000a900460ff16155b8015611524575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561153c5750600360169054906101000a900460ff165b801561158f575060125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156115e2575060125f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611620576115f0826119e4565b5f4790505f81111561161e5761161d600360028361160e9190612ef7565b6116189190612f65565b611c4f565b5b505b50505b5f6001905060125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806116c3575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611774575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611773575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611781575f9050611904565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561182a575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561184257600554600881905550600654600e819055505b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118eb575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561190357600754600881905550600954600e819055505b5b61191084848484611d49565b50505050565b5f83831115829061195d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195491906124f1565b60405180910390fd5b505f838561196b9190612f95565b9050809150509392505050565b5f600d548211156119be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b590613038565b60405180910390fd5b5f6119c7611d76565b90506119dc8184611d9f90919063ffffffff16565b915050919050565b6001600360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611a1b57611a1a613056565b5b604051908082528060200260200182016040528015611a495781602001602082028036833780820191505090505b50905030815f81518110611a6057611a5f61294b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b04573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b289190613097565b81600181518110611b3c57611b3b61294b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ba23060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610fb6565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318668a18835f8430426040518663ffffffff1660e01b8152600401611c049594939291906131b2565b5f604051808303815f87803b158015611c1b575f80fd5b505af1158015611c2d573d5f803e3d5ffd5b50505050505f600360156101000a81548160ff02191690831515021790555050565b5f600290505f8183611c619190612f65565b905060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611cc7573d5f803e3d5ffd5b5060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600184611d109190612e36565b83611d1b9190612ef7565b90811502906040515f60405180830381858888f19350505050158015611d43573d5f803e3d5ffd5b50505050565b80611d5757611d56611de8565b5b611d62848484611e21565b80611d7057611d6f611fe1565b5b50505050565b5f805f611d81611ff5565b91509150611d988183611d9f90919063ffffffff16565b9250505090565b5f611de083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612051565b905092915050565b5f600854148015611dfa57505f600e54145b611e1f57600854600f81905550600e546010819055505f6008819055505f600e819055505b565b5f805f805f80611e30876120b2565b955095509550955095509550611e8c8660135f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461211290919063ffffffff16565b60135f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611f1d8560135f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461215b90919063ffffffff16565b60135f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611f67816121b8565b611f71848361226f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611fce919061244e565b60405180910390a3505050505050505050565b600f54600881905550601054600e81905550565b5f805f600d5490505f670de0b6b3a76400009050612026670de0b6b3a7640000600d54611d9f90919063ffffffff16565b82101561204457600d54670de0b6b3a764000093509350505061204d565b81819350935050505b9091565b5f8083118290612097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208e91906124f1565b60405180910390fd5b505f83856120a59190612f65565b9050809150509392505050565b5f805f805f805f805f6120ca8a600854600e546122a9565b9250925092505f6120d9611d76565b90505f805f6120ea8e87878761233b565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61215383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611916565b905092915050565b5f8082846121699190612e36565b9050838110156121ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a590613254565b60405180910390fd5b8091505092915050565b5f6121c1611d76565b90505f6121d782846123bf90919063ffffffff16565b90506122298160135f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461215b90919063ffffffff16565b60135f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b61228482600d5461211290919063ffffffff16565b600d8190555061229f8160045461215b90919063ffffffff16565b6004819055505050565b5f805f806122d360646122c5888a6123bf90919063ffffffff16565b611d9f90919063ffffffff16565b90505f6122fc60646122ee888b6123bf90919063ffffffff16565b611d9f90919063ffffffff16565b90505f61232482612316858c61211290919063ffffffff16565b61211290919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061235285896123bf90919063ffffffff16565b90505f61236886896123bf90919063ffffffff16565b90505f61237e87896123bf90919063ffffffff16565b90505f6123a682612398858761211290919063ffffffff16565b61211290919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f8083036123cf575f9050612430565b5f82846123dc9190612ef7565b90508284826123eb9190612f65565b1461242b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612422906132e2565b60405180910390fd5b809150505b92915050565b5f819050919050565b61244881612436565b82525050565b5f6020820190506124615f83018461243f565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561249e578082015181840152602081019050612483565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6124c382612467565b6124cd8185612471565b93506124dd818560208601612481565b6124e6816124a9565b840191505092915050565b5f6020820190508181035f83015261250981846124b9565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61254282612519565b9050919050565b61255281612538565b811461255c575f80fd5b50565b5f8135905061256d81612549565b92915050565b61257c81612436565b8114612586575f80fd5b50565b5f8135905061259781612573565b92915050565b5f80604083850312156125b3576125b2612511565b5b5f6125c08582860161255f565b92505060206125d185828601612589565b9150509250929050565b5f8115159050919050565b6125ef816125db565b82525050565b5f6020820190506126085f8301846125e6565b92915050565b5f819050919050565b5f61263161262c61262784612519565b61260e565b612519565b9050919050565b5f61264282612617565b9050919050565b5f61265382612638565b9050919050565b61266381612649565b82525050565b5f60208201905061267c5f83018461265a565b92915050565b5f805f6060848603121561269957612698612511565b5b5f6126a68682870161255f565b93505060206126b78682870161255f565b92505060406126c886828701612589565b9150509250925092565b5f60ff82169050919050565b6126e7816126d2565b82525050565b5f6020820190506127005f8301846126de565b92915050565b5f61271082612519565b9050919050565b61272081612706565b82525050565b5f6020820190506127395f830184612717565b92915050565b61274881612538565b82525050565b5f6020820190506127615f83018461273f565b92915050565b5f6020828403121561277c5761277b612511565b5b5f61278984828501612589565b91505092915050565b5f602082840312156127a7576127a6612511565b5b5f6127b48482850161255f565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126127de576127dd6127bd565b5b8235905067ffffffffffffffff8111156127fb576127fa6127c1565b5b602083019150836020820283011115612817576128166127c5565b5b9250929050565b612827816125db565b8114612831575f80fd5b50565b5f813590506128428161281e565b92915050565b5f805f6040848603121561285f5761285e612511565b5b5f84013567ffffffffffffffff81111561287c5761287b612515565b5b612888868287016127c9565b9350935050602061289b86828701612834565b9150509250925092565b5f80604083850312156128bb576128ba612511565b5b5f6128c88582860161255f565b92505060206128d98582860161255f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612917602083612471565b9150612922826128e3565b602082019050919050565b5f6020820190508181035f8301526129448161290b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6129af82612436565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036129e1576129e0612978565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612a46602683612471565b9150612a51826129ec565b604082019050919050565b5f6020820190508181035f830152612a7381612a3a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612ad4602483612471565b9150612adf82612a7a565b604082019050919050565b5f6020820190508181035f830152612b0181612ac8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612b62602283612471565b9150612b6d82612b08565b604082019050919050565b5f6020820190508181035f830152612b8f81612b56565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612bf0602583612471565b9150612bfb82612b96565b604082019050919050565b5f6020820190508181035f830152612c1d81612be4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612c7e602383612471565b9150612c8982612c24565b604082019050919050565b5f6020820190508181035f830152612cab81612c72565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612d0c602983612471565b9150612d1782612cb2565b604082019050919050565b5f6020820190508181035f830152612d3981612d00565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f612d9a603f83612471565b9150612da582612d40565b604082019050919050565b5f6020820190508181035f830152612dc781612d8e565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f612e02601c83612471565b9150612e0d82612dce565b602082019050919050565b5f6020820190508181035f830152612e2f81612df6565b9050919050565b5f612e4082612436565b9150612e4b83612436565b9250828201905080821115612e6357612e62612978565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f612ec3602383612471565b9150612ece82612e69565b604082019050919050565b5f6020820190508181035f830152612ef081612eb7565b9050919050565b5f612f0182612436565b9150612f0c83612436565b9250828202612f1a81612436565b91508282048414831517612f3157612f30612978565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612f6f82612436565b9150612f7a83612436565b925082612f8a57612f89612f38565b5b828204905092915050565b5f612f9f82612436565b9150612faa83612436565b9250828203905081811115612fc257612fc1612978565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613022602a83612471565b915061302d82612fc8565b604082019050919050565b5f6020820190508181035f83015261304f81613016565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061309181612549565b92915050565b5f602082840312156130ac576130ab612511565b5b5f6130b984828501613083565b91505092915050565b5f819050919050565b5f6130e56130e06130db846130c2565b61260e565b612436565b9050919050565b6130f5816130cb565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61312d81612538565b82525050565b5f61313e8383613124565b60208301905092915050565b5f602082019050919050565b5f613160826130fb565b61316a8185613105565b935061317583613115565b805f5b838110156131a557815161318c8882613133565b97506131978361314a565b925050600181019050613178565b5085935050505092915050565b5f60a0820190506131c55f83018861243f565b6131d260208301876130ec565b81810360408301526131e48186613156565b90506131f3606083018561273f565b613200608083018461243f565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61323e601b83612471565b91506132498261320a565b602082019050919050565b5f6020820190508181035f83015261326b81613232565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132cc602183612471565b91506132d782613272565b604082019050919050565b5f6020820190508181035f8301526132f9816132c0565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122065065eed0fe0bfd1bf34d53288004a1467406591236e45bd69e7cb92830272a864736f6c63430008140033

Deployed Bytecode Sourcemap

4487:12346:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5119:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5260:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6579:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7504:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4570:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7002:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4259:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7705:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12235:137;;;;;;;;;;;;;:::i;:::-;;6765:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11927:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5189:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5828:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12662:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6856:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12380:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4174:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6670:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11833;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7297:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10325:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7105:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3924:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5119:57;;;;:::o;5260:49::-;;;;:::o;6579:83::-;6616:13;6649:5;;;;;;;;;;;;;;;;;6642:12;;6579:83;:::o;7504:193::-;7606:4;7628:39;7637:12;:10;:12::i;:::-;7651:7;7660:6;7628:8;:39::i;:::-;7685:4;7678:11;;7504:193;;;;:::o;4570:41::-;;;;;;;;;;;;;:::o;7002:95::-;7055:7;5351:21;7075:14;;7002:95;:::o;4259:221::-;3849:12;:10;:12::i;:::-;3839:22;;:6;;;;;;;;;;:22;;;3831:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4381:5:::1;4352:11;:18;4364:5;4352:18;;;;;;;;;;;;;;;:26;4371:6:::0;::::1;;;;;;;;;;4352:26;;;;;;;;;;;;;;;:34;;;;4439:1;4402:40;;4423:6;::::0;::::1;;;;;;;;4402:40;;;;;;;;;;;;4470:1;4453:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;4259:221:::0;;:::o;7705:446::-;7837:4;7854:36;7864:6;7872:9;7883:6;7854:9;:36::i;:::-;7901:220;7924:6;7945:12;:10;:12::i;:::-;7972:138;8028:6;7972:138;;;;;;;;;;;;;;;;;:11;:19;7984:6;7972:19;;;;;;;;;;;;;;;:33;7992:12;:10;:12::i;:::-;7972:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7901:8;:220::i;:::-;8139:4;8132:11;;7705:446;;;;;:::o;12235:137::-;3849:12;:10;:12::i;:::-;3839:22;;:6;;;;;;;;;;:22;;;3831:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5351:21:::1;12292:20;:30;;;;5351:21;12333;:31;;;;12235:137::o:0;6765:83::-;6806:5;5820:1;6824:16;;6765:83;:::o;11927:93::-;;;;;;;;;;;;;:::o;5189:58::-;;;;:::o;5828:27::-;;;;;;;;;;;;;:::o;12662:132::-;3849:12;:10;:12::i;:::-;3839:22;;:6;;;;;;;;;;:22;;;3831:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12768:18:::1;12749:16;:37;;;;12662:132:::0;:::o;6856:138::-;6922:7;6949:37;6969:7;:16;6977:7;6969:16;;;;;;;;;;;;;;;;6949:19;:37::i;:::-;6942:44;;6856:138;;;:::o;12380:230::-;3849:12;:10;:12::i;:::-;3839:22;;:6;;;;;;;;;;:22;;;3831:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12493:9:::1;12489:114;12512:8;;:15;;12508:1;:19;12489:114;;;12583:8;12549:18;:31;12568:8;;12577:1;12568:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12549:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;12529:3;;;;;:::i;:::-;;;;12489:114;;;;12380:230:::0;;;:::o;4174:79::-;4212:7;4239:6;;;;;;;;;;;4232:13;;4174:79;:::o;6670:87::-;6709:13;6742:7;;;;;;;;;;;;;;;;;6735:14;;6670:87;:::o;11833:::-;;;;;;;;;;;;;:::o;7297:199::-;7402:4;7424:42;7434:12;:10;:12::i;:::-;7448:9;7459:6;7424:9;:42::i;:::-;7484:4;7477:11;;7297:199;;;;:::o;10325:134::-;3849:12;:10;:12::i;:::-;3839:22;;:6;;;;;;;;;;:22;;;3831:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10410:11:::1;10395:12;;:26;;;;;;;;;;;;;;;;;;10447:4;10432:12;;:19;;;;;;;;;;;;;;;;;;10325:134:::0;:::o;7105:184::-;7222:7;7254:11;:18;7266:5;7254:18;;;;;;;;;;;;;;;:27;7273:7;7254:27;;;;;;;;;;;;;;;;7247:34;;7105:184;;;;:::o;3924:244::-;3849:12;:10;:12::i;:::-;3839:22;;:6;;;;;;;;;;:22;;;3831:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4033:1:::1;4013:22;;:8;:22;;::::0;4005:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4123:8;4094:38;;4115:6;::::0;::::1;;;;;;;;4094:38;;;;;;;;;;;;4152:8;4143:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3924:244:::0;:::o;2493:98::-;2546:7;2573:10;2566:17;;2493:98;:::o;8159:369::-;8303:1;8286:19;;:5;:19;;;8278:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8384:1;8365:21;;:7;:21;;;8357:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8466:6;8436:11;:18;8448:5;8436:18;;;;;;;;;;;;;;;:27;8455:7;8436:27;;;;;;;;;;;;;;;:36;;;;8504:7;8488:32;;8497:5;8488:32;;;8513:6;8488:32;;;;;;:::i;:::-;;;;;;;;8159:369;;;:::o;12802:2388::-;12940:1;12924:18;;:4;:18;;;12916:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13017:1;13003:16;;:2;:16;;;12995:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13087:1;13078:6;:10;13070:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13173:7;:5;:7::i;:::-;13165:15;;:4;:15;;;;:32;;;;;13190:7;:5;:7::i;:::-;13184:13;;:2;:13;;;;13165:32;13147:1362;;;13262:12;;;;;;;;;;;13257:207;;13333:7;:5;:7::i;:::-;13325:15;;:4;:15;;;13295:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;13257:207;13516:20;;13506:6;:30;;13480:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;13638:12;;;;;;;;;;;13632:18;;:2;:18;;;13629:170;;13704:21;;13695:6;13679:13;13689:2;13679:9;:13::i;:::-;:22;;;;:::i;:::-;:46;13671:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;13629:170;13815:29;13847:24;13865:4;13847:9;:24::i;:::-;13815:56;;13898:12;13938:16;;13913:21;:41;;13898:56;;13997:20;;13972:21;:45;13969:94;;14043:20;;14019:44;;13969:94;14082:7;:39;;;;;14112:9;;;;;;;;;;;14111:10;14082:39;:81;;;;;14151:12;;;;;;;;;;;14143:20;;:4;:20;;;;14082:81;:115;;;;;14185:12;;;;;;;;;;;14082:115;:160;;;;;14220:18;:22;14239:2;14220:22;;;;;;;;;;;;;;;;;;;;;;;;;14219:23;14082:160;:207;;;;;14265:18;:24;14284:4;14265:24;;;;;;;;;;;;;;;;;;;;;;;;;14264:25;14082:207;14078:420;;;14324:31;14333:21;14324:8;:31::i;:::-;14374:18;14395:21;14374:42;;14452:1;14439:10;:14;14435:47;;;14455:27;14480:1;14476;14463:10;:14;;;;:::i;:::-;:18;;;;:::i;:::-;14455:7;:27::i;:::-;14435:47;14305:193;14078:420;13209:1300;;13147:1362;14519:13;14535:4;14519:20;;14555:18;:24;14574:4;14555:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;14583:18;:22;14602:2;14583:22;;;;;;;;;;;;;;;;;;;;;;;;;14555:50;14554:100;;;;14619:12;;;;;;;;;;;14611:20;;:4;:20;;;;:42;;;;;14641:12;;;;;;;;;;;14635:18;;:2;:18;;;;14611:42;14554:100;14550:571;;;14682:5;14671:16;;14550:571;;;14740:12;;;;;;;;;;;14732:20;;:4;:20;;;:54;;;;;14770:15;;;;;;;;;;;14756:30;;:2;:30;;;;14732:54;14729:175;;;14820:16;;14807:10;:29;;;;14875:13;;14855:17;:33;;;;14729:175;14942:12;;;;;;;;;;;14936:18;;:2;:18;;;:54;;;;;14974:15;;;;;;;;;;;14958:32;;:4;:32;;;;14936:54;14932:178;;;15024:17;;15011:10;:30;;;;15080:14;;15060:17;:34;;;;14932:178;14550:571;15131:51;15155:4;15161:2;15165:6;15173:8;15131:23;:51::i;:::-;12905:2285;12802:2388;;;:::o;725:224::-;845:7;878:1;873;:6;;881:12;865:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;905:9;921:1;917;:5;;;;:::i;:::-;905:17;;940:1;933:8;;;725:224;;;;;:::o;9994:323::-;10089:7;10147;;10136;:18;;10114:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;10235:19;10257:10;:8;:10::i;:::-;10235:32;;10285:24;10297:11;10285:7;:11;;:24;;;;:::i;:::-;10278:31;;;9994:323;;;:::o;15198:466::-;4779:4;4767:9;;:16;;;;;;;;;;;;;;;;;;15267:21:::1;15305:1;15291:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15267:40;;15336:4;15318;15323:1;15318:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;15362:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15352:4;15357:1;15352:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;15395:62;15412:4;15427:15;;;;;;;;;;;15445:11;15395:8;:62::i;:::-;15468:15;;;;;;;;;;;:58;;;15541:11;15567:1;15583:4;15610;15630:15;15468:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15256:408;4818:5:::0;4806:9;;:17;;;;;;;;;;;;;;;;;;15198:466;:::o;11577:248::-;11629:20;11652:1;11629:24;;11664:18;11694:12;11685:6;:21;;;;:::i;:::-;11664:42;;11717:10;;;;;;;;;;;:19;;:31;11737:10;11717:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11759:16;;;;;;;;;;;:25;;:58;11814:1;11799:12;:16;;;;:::i;:::-;11785:10;:31;;;;:::i;:::-;11759:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11618:207;;11577:248;:::o;16481:349::-;16645:6;16640:51;;16668:11;:9;:11::i;:::-;16640:51;16701:47;16722:6;16730:9;16741:6;16701:20;:47::i;:::-;16764:6;16759:64;;16799:12;:10;:12::i;:::-;16759:64;16481:349;;;;:::o;9082:164::-;9124:7;9145:15;9162;9181:19;:17;:19::i;:::-;9144:56;;;;9218:20;9230:7;9218;:11;;:20;;;;:::i;:::-;9211:27;;;;9082:164;:::o;1584:132::-;1642:7;1669:39;1673:1;1676;1669:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1662:46;;1584:132;;;;:::o;10690:241::-;10748:1;10734:10;;:15;:41;;;;;10774:1;10753:17;;:22;10734:41;10777:7;10730:54;10818:10;;10794:21;:34;;;;10858:17;;10839:16;:36;;;;10890:1;10877:10;:14;;;;10922:1;10902:17;:21;;;;10690:241;:::o;15719:612::-;15869:15;15899:23;15937:12;15964:23;16002:12;16029:13;16056:19;16067:7;16056:10;:19::i;:::-;15854:221;;;;;;;;;;;;16104:28;16124:7;16104;:15;16112:6;16104:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;16086:7;:15;16094:6;16086:15;;;;;;;;;;;;;;;:46;;;;16164:39;16187:15;16164:7;:18;16172:9;16164:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;16143:7;:18;16151:9;16143:18;;;;;;;;;;;;;;;:60;;;;16214:18;16226:5;16214:11;:18::i;:::-;16234:29;16252:4;16258;16234:17;:29::i;:::-;16296:9;16279:44;;16288:6;16279:44;;;16307:15;16279:44;;;;;;:::i;:::-;;;;;;;;15843:488;;;;;;15719:612;;;:::o;16339:130::-;16393:21;;16380:10;:34;;;;16445:16;;16425:17;:36;;;;16339:130::o;9254:257::-;9305:7;9314;9334:15;9352:7;;9334:25;;9370:15;5351:21;9370:25;;9420:20;5351:21;9420:7;;:11;;:20;;;;:::i;:::-;9410:7;:30;9406:61;;;9450:7;;5351:21;9442:25;;;;;;;;9406:61;9486:7;9495;9478:25;;;;;;9254:257;;;:::o;1211:223::-;1331:7;1363:1;1359;:5;1366:12;1351:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1390:9;1406:1;1402;:5;;;;:::i;:::-;1390:17;;1425:1;1418:8;;;1211:223;;;;;:::o;10939:626::-;11039:7;11061;11083;11105;11127;11149;11185:23;11210:12;11224:13;11254:51;11266:7;11275:10;;11287:17;;11254:11;:51::i;:::-;11184:121;;;;;;11316:19;11338:10;:8;:10::i;:::-;11316:32;;11360:15;11377:23;11402:12;11431:46;11443:7;11452:4;11458:5;11465:11;11431;:46::i;:::-;11359:118;;;;;;11496:7;11505:15;11522:4;11528:15;11545:4;11551:5;11488:69;;;;;;;;;;;;;;;;;;;10939:626;;;;;;;:::o;1440:136::-;1498:7;1525:43;1529:1;1532;1525:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1518:50;;1440:136;;;;:::o;540:179::-;598:7;618:9;634:1;630;:5;;;;:::i;:::-;618:17;;659:1;654;:6;;646:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;710:1;703:8;;;540:179;;;;:::o;10467:213::-;10522:19;10544:10;:8;:10::i;:::-;10522:32;;10565:13;10581:22;10591:11;10581:5;:9;;:22;;;;:::i;:::-;10565:38;;10639:33;10666:5;10639:7;:22;10655:4;10639:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;10614:7;:22;10630:4;10614:22;;;;;;;;;;;;;;;:58;;;;10511:169;;10467:213;:::o;12029:163::-;12113:17;12125:4;12113:7;;:11;;:17;;;;:::i;:::-;12103:7;:27;;;;12159:25;12179:4;12159:15;;:19;;:25;;;;:::i;:::-;12141:15;:43;;;;12029:163;;:::o;9519:467::-;9687:7;9709;9731;9766:12;9781:29;9806:3;9781:20;9793:7;9781;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;9766:44;;9821:13;9837:28;9861:3;9837:19;9849:6;9837:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;9821:44;;9876:23;9902:28;9924:5;9902:17;9914:4;9902:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;9876:54;;9949:15;9966:4;9972:5;9941:37;;;;;;;;;9519:467;;;;;;;:::o;8540:534::-;8734:7;8756;8778;8813:15;8831:24;8843:11;8831:7;:11;;:24;;;;:::i;:::-;8813:42;;8866:12;8881:21;8890:11;8881:4;:8;;:21;;;;:::i;:::-;8866:36;;8913:13;8929:22;8939:11;8929:5;:9;;:22;;;;:::i;:::-;8913:38;;8962:23;8988:28;9010:5;8988:17;9000:4;8988:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;8962:54;;9035:7;9044:15;9061:4;9027:39;;;;;;;;;;8540:534;;;;;;;;:::o;957:246::-;1015:7;1044:1;1039;:6;1035:47;;1069:1;1062:8;;;;1035:47;1092:9;1108:1;1104;:5;;;;:::i;:::-;1092:17;;1137:1;1132;1128;:5;;;;:::i;:::-;:10;1120:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1194:1;1187:8;;;957: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:104::-;5871:7;5900:24;5918:5;5900:24;:::i;:::-;5889:35;;5826:104;;;:::o;5936:142::-;6039:32;6065:5;6039:32;:::i;:::-;6034:3;6027:45;5936:142;;:::o;6084:254::-;6193:4;6231:2;6220:9;6216:18;6208:26;;6244:87;6328:1;6317:9;6313:17;6304:6;6244:87;:::i;:::-;6084:254;;;;:::o;6344:118::-;6431:24;6449:5;6431:24;:::i;:::-;6426:3;6419:37;6344:118;;:::o;6468:222::-;6561:4;6599:2;6588:9;6584:18;6576:26;;6612:71;6680:1;6669:9;6665:17;6656:6;6612:71;:::i;:::-;6468:222;;;;:::o;6696:329::-;6755:6;6804:2;6792:9;6783:7;6779:23;6775:32;6772:119;;;6810:79;;:::i;:::-;6772:119;6930:1;6955:53;7000:7;6991:6;6980:9;6976:22;6955:53;:::i;:::-;6945:63;;6901:117;6696:329;;;;:::o;7031:::-;7090:6;7139:2;7127:9;7118:7;7114:23;7110:32;7107:119;;;7145:79;;:::i;:::-;7107:119;7265:1;7290:53;7335:7;7326:6;7315:9;7311:22;7290:53;:::i;:::-;7280:63;;7236:117;7031:329;;;;:::o;7366:117::-;7475:1;7472;7465:12;7489:117;7598:1;7595;7588:12;7612:117;7721:1;7718;7711:12;7752:568;7825:8;7835:6;7885:3;7878:4;7870:6;7866:17;7862:27;7852:122;;7893:79;;:::i;:::-;7852:122;8006:6;7993:20;7983:30;;8036:18;8028:6;8025:30;8022:117;;;8058:79;;:::i;:::-;8022:117;8172:4;8164:6;8160:17;8148:29;;8226:3;8218:4;8210:6;8206:17;8196:8;8192:32;8189:41;8186:128;;;8233:79;;:::i;:::-;8186:128;7752:568;;;;;:::o;8326:116::-;8396:21;8411:5;8396:21;:::i;:::-;8389:5;8386:32;8376:60;;8432:1;8429;8422:12;8376:60;8326:116;:::o;8448:133::-;8491:5;8529:6;8516:20;8507:29;;8545:30;8569:5;8545:30;:::i;:::-;8448:133;;;;:::o;8587:698::-;8679:6;8687;8695;8744:2;8732:9;8723:7;8719:23;8715:32;8712:119;;;8750:79;;:::i;:::-;8712:119;8898:1;8887:9;8883:17;8870:31;8928:18;8920:6;8917:30;8914:117;;;8950:79;;:::i;:::-;8914:117;9063:80;9135:7;9126:6;9115:9;9111:22;9063:80;:::i;:::-;9045:98;;;;8841:312;9192:2;9218:50;9260:7;9251:6;9240:9;9236:22;9218:50;:::i;:::-;9208:60;;9163:115;8587:698;;;;;:::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:410::-;20824:7;20847:20;20865:1;20847:20;:::i;:::-;20842:25;;20881:20;20899:1;20881:20;:::i;:::-;20876:25;;20936:1;20933;20929:9;20958:30;20976:11;20958:30;:::i;:::-;20947:41;;21137:1;21128:7;21124:15;21121:1;21118:22;21098:1;21091:9;21071:83;21048:139;;21167:18;;:::i;:::-;21048:139;20832:362;20784:410;;;;:::o;21200:180::-;21248:77;21245:1;21238:88;21345:4;21342:1;21335:15;21369:4;21366:1;21359:15;21386:185;21426:1;21443:20;21461:1;21443:20;:::i;:::-;21438:25;;21477:20;21495:1;21477:20;:::i;:::-;21472:25;;21516:1;21506:35;;21521:18;;:::i;:::-;21506:35;21563:1;21560;21556:9;21551:14;;21386:185;;;;:::o;21577:194::-;21617:4;21637:20;21655:1;21637:20;:::i;:::-;21632:25;;21671:20;21689:1;21671:20;:::i;:::-;21666:25;;21715:1;21712;21708:9;21700:17;;21739:1;21733:4;21730:11;21727:37;;;21744:18;;:::i;:::-;21727:37;21577:194;;;;:::o;21777:229::-;21917:34;21913:1;21905:6;21901:14;21894:58;21986:12;21981:2;21973:6;21969:15;21962:37;21777:229;:::o;22012:366::-;22154:3;22175:67;22239:2;22234:3;22175:67;:::i;:::-;22168:74;;22251:93;22340:3;22251:93;:::i;:::-;22369:2;22364:3;22360:12;22353:19;;22012:366;;;:::o;22384:419::-;22550:4;22588:2;22577:9;22573:18;22565:26;;22637:9;22631:4;22627:20;22623:1;22612:9;22608:17;22601:47;22665:131;22791:4;22665:131;:::i;:::-;22657:139;;22384:419;;;:::o;22809:180::-;22857:77;22854:1;22847:88;22954:4;22951:1;22944:15;22978:4;22975:1;22968:15;22995:143;23052:5;23083:6;23077:13;23068:22;;23099:33;23126:5;23099:33;:::i;:::-;22995:143;;;;:::o;23144:351::-;23214:6;23263:2;23251:9;23242:7;23238:23;23234:32;23231:119;;;23269:79;;:::i;:::-;23231:119;23389:1;23414:64;23470:7;23461:6;23450:9;23446:22;23414:64;:::i;:::-;23404:74;;23360:128;23144:351;;;;:::o;23501:85::-;23546:7;23575:5;23564:16;;23501:85;;;:::o;23592:158::-;23650:9;23683:61;23701:42;23710:32;23736:5;23710:32;:::i;:::-;23701:42;:::i;:::-;23683:61;:::i;:::-;23670:74;;23592:158;;;:::o;23756:147::-;23851:45;23890:5;23851:45;:::i;:::-;23846:3;23839:58;23756:147;;:::o;23909:114::-;23976:6;24010:5;24004:12;23994:22;;23909:114;;;:::o;24029:184::-;24128:11;24162:6;24157:3;24150:19;24202:4;24197:3;24193:14;24178:29;;24029:184;;;;:::o;24219:132::-;24286:4;24309:3;24301:11;;24339:4;24334:3;24330:14;24322:22;;24219:132;;;:::o;24357:108::-;24434:24;24452:5;24434:24;:::i;:::-;24429:3;24422:37;24357:108;;:::o;24471:179::-;24540:10;24561:46;24603:3;24595:6;24561:46;:::i;:::-;24639:4;24634:3;24630:14;24616:28;;24471:179;;;;:::o;24656:113::-;24726:4;24758;24753:3;24749:14;24741:22;;24656:113;;;:::o;24805:732::-;24924:3;24953:54;25001:5;24953:54;:::i;:::-;25023:86;25102:6;25097:3;25023:86;:::i;:::-;25016:93;;25133:56;25183:5;25133:56;:::i;:::-;25212:7;25243:1;25228:284;25253:6;25250:1;25247:13;25228:284;;;25329:6;25323:13;25356:63;25415:3;25400:13;25356:63;:::i;:::-;25349:70;;25442:60;25495:6;25442:60;:::i;:::-;25432:70;;25288:224;25275:1;25272;25268:9;25263:14;;25228:284;;;25232:14;25528:3;25521:10;;24929:608;;;24805:732;;;;:::o;25543:831::-;25806:4;25844:3;25833:9;25829:19;25821:27;;25858:71;25926:1;25915:9;25911:17;25902:6;25858:71;:::i;:::-;25939:80;26015:2;26004:9;26000:18;25991:6;25939:80;:::i;:::-;26066:9;26060:4;26056:20;26051:2;26040:9;26036:18;26029:48;26094:108;26197:4;26188:6;26094:108;:::i;:::-;26086:116;;26212:72;26280:2;26269:9;26265:18;26256:6;26212:72;:::i;:::-;26294:73;26362:3;26351:9;26347:19;26338:6;26294:73;:::i;:::-;25543:831;;;;;;;;:::o;26380:177::-;26520:29;26516:1;26508:6;26504:14;26497:53;26380:177;:::o;26563:366::-;26705:3;26726:67;26790:2;26785:3;26726:67;:::i;:::-;26719:74;;26802:93;26891:3;26802:93;:::i;:::-;26920:2;26915:3;26911:12;26904:19;;26563:366;;;:::o;26935:419::-;27101:4;27139:2;27128:9;27124:18;27116:26;;27188:9;27182:4;27178:20;27174:1;27163:9;27159:17;27152:47;27216:131;27342:4;27216:131;:::i;:::-;27208:139;;26935:419;;;:::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://65065eed0fe0bfd1bf34d53288004a1467406591236e45bd69e7cb92830272a8
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.