ETH Price: $3,434.07 (-1.44%)

Token

Beluga (Beluga)
 

Overview

Max Total Supply

10,000,000 Beluga

Holders

340

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
4,903.612252356 Beluga

Value
$0.00
0x57D37aD26BFdFe91D7FB606112C29C3310cB5297
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:
BelugaERC20

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-06-13
*/

/*

    X: https://x.com/BelugaERC20
    Tg: https://t.me/BelugaErc20

*/
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.18;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}
contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
 
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}
interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}
contract BelugaERC20 is Context, IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "Beluga";
    string private constant _symbol = "Beluga";
    uint8 private constant _decimals = 9;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 10000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;  
    uint256 private BuyFees = 30;  
    uint256 private _redisFeeOnSell = 0;  
    uint256 private SellFees = 60;
 
    //Original Fee
    uint256 private _redisFee = 0;
    uint256 private _taxFee = SellFees;
 
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
 
    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap; 
    address payable public _developmentAddress;
    address payable public  _marketingAddress;
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    uint256 public _maxTxAmount = 200000 * 10**9; 
    uint256 public _maxWalletSize = 200000 * 10**9; 
    uint256 public _swapTokensAtAmount = 20000 * 10**9;
 
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor() {
 
        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        _developmentAddress = payable(owner());
        _marketingAddress = payable(0xeE43d40f0BcB2b71c6a8CC7329278FA47Eb68964);
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;
 
        emit Transfer(address(0), _msgSender(), _tTotal);
    }
 
    function name() public pure returns (string memory) {
        return _name;
    }
 
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
 
    function decimals() public pure returns (uint8) {
        return _decimals;
    }
 
    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }
 
    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }
 
    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
 
    function allowance(address owner, address spender)
        public
        view
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }
 
    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }
 
    function 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 removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;
 
        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;
 
        _redisFee = 0;
        _taxFee = 0;
    }
 
    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }
 
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
 
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
 
        if (from != owner() && to != owner()) {
 
            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: cannot send tokens until trading is enabled");
            }
 
            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");
 
            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }
 
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
 
            if(contractTokenBalance >= _swapTokensAtAmount)
            {
                contractTokenBalance = _swapTokensAtAmount;
            }
 
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
 
        bool takeFee = true;
 
        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
 
            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = BuyFees;
            }
 
            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = SellFees;
            }
 
        }
 
        _tokenTransfer(from, to, amount, takeFee);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
 
    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }
    function openTrading() public onlyOwner {
        tradingOpen = true;
    }
    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
 
    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
 
    function BlockWallets(address[] memory addys) public onlyOwner {
        for (uint256 i = 0; i < addys.length; i++) {
            bots[addys[i]] = true;
        }
    }
    function unBlockWallet(address _addy) public onlyOwner {
        bots[_addy] = false;
    }
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }
 
    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
 
    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }
 
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
 
    receive() external payable {}
 
    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
 
    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }
 
    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }
 
    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }
 
    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
 
    function changeFees(uint256 _buyTaxes, uint256 _sellTaxes) public onlyOwner {
        BuyFees = _buyTaxes;
        SellFees = _sellTaxes;
    }
    function changeSwapbackThreshold(uint256 _amount) public onlyOwner {
        _swapTokensAtAmount = _amount;
    }
    function _toggleSwapback(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }
    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }
    function changeTaxWallet(address _marketing) public onlyOwner{
        _marketingAddress = payable(_marketing);
    }
    function setMaxTx(uint256 maxTxAmount) public onlyOwner {
           _maxTxAmount = maxTxAmount;       
    }
    function setMaxWallet(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }
    function removeLimits() public onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
    }
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"addys","type":"address[]"}],"name":"BlockWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_developmentAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"_toggleSwapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyTaxes","type":"uint256"},{"internalType":"uint256","name":"_sellTaxes","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"changeSwapbackThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"}],"name":"changeTaxWallet","outputs":[],"stateMutability":"nonpayable","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":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWallet","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":[{"internalType":"address","name":"_addy","type":"address"}],"name":"unBlockWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052662386f26fc100005f1961001891906106ba565b5f196100249190610717565b6006555f600855601e6009555f600a55603c600b555f600c55600b54600d55600c54600e55600d54600f555f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555065b5e620f4800060165565b5e620f480006017556512309ce540006018553480156100ac575f80fd5b505f6100bc61065660201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f61016c61065660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561024a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061026e91906107a8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102f791906107a8565b6040518363ffffffff1660e01b81526004016103149291906107e2565b6020604051808303815f875af1158015610330573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061035491906107a8565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103a161065d60201b60201c565b60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073ee43d40f0bcb2b71c6a8cc7329278fa47eb6896460135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f61044761065d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506105e561065660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef662386f26fc100006040516106489190610818565b60405180910390a350610831565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6106c482610684565b91506106cf83610684565b9250826106df576106de61068d565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61072182610684565b915061072c83610684565b9250828203905081811115610744576107436106ea565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6107778261074e565b9050919050565b6107878161076d565b8114610791575f80fd5b50565b5f815190506107a28161077e565b92915050565b5f602082840312156107bd576107bc61074a565b5b5f6107ca84828501610794565b91505092915050565b6107dc8161076d565b82525050565b5f6040820190506107f55f8301856107d3565b61080260208301846107d3565b9392505050565b61081281610684565b82525050565b5f60208201905061082b5f830184610809565b92915050565b613e2b8061083e5f395ff3fe6080604052600436106101fc575f3560e01c80637f2feddc1161010c578063c3c2cb7e1161009f578063c9567bf91161006e578063c9567bf9146106d5578063caac7934146106eb578063cb71159514610715578063dd62ed3e1461073d578063f2fde38b1461077957610203565b8063c3c2cb7e14610647578063c3c8cd801461066f578063c492f04614610685578063c767d9f1146106ad57610203565b8063a9059cbb116100db578063a9059cbb1461057f578063ba759f0e146105bb578063bc337182146105e3578063bfd792841461060b57610203565b80637f2feddc146104c55780638da5cb5b146105015780638f9a55c01461052b57806395d89b411461055557610203565b80633d6a9afe1161018f5780636fc3eaec1161015e5780636fc3eaec1461041d57806370a0823114610433578063715018a61461046f578063751039fc146104855780637d1db4a51461049b57610203565b80633d6a9afe1461037957806349bd5a5e146103a35780635c67d12d146103cd5780635d0044ca146103f557610203565b806321ecff5b116101cb57806321ecff5b146102c157806323b872dd146102e95780632fd689e314610325578063313ce5671461034f57610203565b806306fdde0314610207578063095ea7b3146102315780631694505e1461026d57806318160ddd1461029757610203565b3661020357005b5f80fd5b348015610212575f80fd5b5061021b6107a1565b6040516102289190612d82565b60405180910390f35b34801561023c575f80fd5b5061025760048036038101906102529190612e40565b6107de565b6040516102649190612e98565b60405180910390f35b348015610278575f80fd5b506102816107fb565b60405161028e9190612f0c565b60405180910390f35b3480156102a2575f80fd5b506102ab610820565b6040516102b89190612f34565b60405180910390f35b3480156102cc575f80fd5b506102e760048036038101906102e29190612f4d565b61082e565b005b3480156102f4575f80fd5b5061030f600480360381019061030a9190612f8b565b6108d4565b60405161031c9190612e98565b60405180910390f35b348015610330575f80fd5b506103396109a8565b6040516103469190612f34565b60405180910390f35b34801561035a575f80fd5b506103636109ae565b6040516103709190612ff6565b60405180910390f35b348015610384575f80fd5b5061038d6109b6565b60405161039a919061302f565b60405180910390f35b3480156103ae575f80fd5b506103b76109db565b6040516103c49190613057565b60405180910390f35b3480156103d8575f80fd5b506103f360048036038101906103ee919061309a565b610a00565b005b348015610400575f80fd5b5061041b600480360381019061041691906130c5565b610ab1565b005b348015610428575f80fd5b50610431610b4f565b005b34801561043e575f80fd5b50610459600480360381019061045491906130f0565b610c1c565b6040516104669190612f34565b60405180910390f35b34801561047a575f80fd5b50610483610c6a565b005b348015610490575f80fd5b50610499610db8565b005b3480156104a6575f80fd5b506104af610e6a565b6040516104bc9190612f34565b60405180910390f35b3480156104d0575f80fd5b506104eb60048036038101906104e691906130f0565b610e70565b6040516104f89190612f34565b60405180910390f35b34801561050c575f80fd5b50610515610e85565b6040516105229190613057565b60405180910390f35b348015610536575f80fd5b5061053f610eac565b60405161054c9190612f34565b60405180910390f35b348015610560575f80fd5b50610569610eb2565b6040516105769190612d82565b60405180910390f35b34801561058a575f80fd5b506105a560048036038101906105a09190612e40565b610eef565b6040516105b29190612e98565b60405180910390f35b3480156105c6575f80fd5b506105e160048036038101906105dc91906130c5565b610f0c565b005b3480156105ee575f80fd5b50610609600480360381019061060491906130c5565b610faa565b005b348015610616575f80fd5b50610631600480360381019061062c91906130f0565b611048565b60405161063e9190612e98565b60405180910390f35b348015610652575f80fd5b5061066d6004803603810190610668919061325b565b611065565b005b34801561067a575f80fd5b50610683611184565b005b348015610690575f80fd5b506106ab60048036038101906106a691906132fb565b611259565b005b3480156106b8575f80fd5b506106d360048036038101906106ce91906130f0565b611388565b005b3480156106e0575f80fd5b506106e9611473565b005b3480156106f6575f80fd5b506106ff611524565b60405161070c919061302f565b60405180910390f35b348015610720575f80fd5b5061073b600480360381019061073691906130f0565b611549565b005b348015610748575f80fd5b50610763600480360381019061075e9190613358565b611620565b6040516107709190612f34565b60405180910390f35b348015610784575f80fd5b5061079f600480360381019061079a91906130f0565b6116a2565b005b60606040518060400160405280600681526020017f42656c7567610000000000000000000000000000000000000000000000000000815250905090565b5f6107f16107ea61185f565b8484611866565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f662386f26fc10000905090565b61083661185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b9906133e0565b60405180910390fd5b8160098190555080600b819055505050565b5f6108e0848484611a29565b61099d846108ec61185f565b61099885604051806060016040528060288152602001613dce6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61094f61185f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122899092919063ffffffff16565b611866565b600190509392505050565b60185481565b5f6009905090565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a0861185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8b906133e0565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b610ab961185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3c906133e0565b60405180910390fd5b8060178190555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b8f61185f565b73ffffffffffffffffffffffffffffffffffffffff161480610c04575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bec61185f565b73ffffffffffffffffffffffffffffffffffffffff16145b610c0c575f80fd5b5f479050610c19816122eb565b50565b5f610c6360025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612353565b9050919050565b610c7261185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf5906133e0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610dc061185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e43906133e0565b60405180910390fd5b662386f26fc10000601681905550662386f26fc10000601781905550565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600681526020017f42656c7567610000000000000000000000000000000000000000000000000000815250905090565b5f610f02610efb61185f565b8484611a29565b6001905092915050565b610f1461185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f97906133e0565b60405180910390fd5b8060188190555050565b610fb261185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461103e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611035906133e0565b60405180910390fd5b8060168190555050565b6010602052805f5260405f205f915054906101000a900460ff1681565b61106d61185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f0906133e0565b60405180910390fd5b5f5b815181101561118057600160105f84848151811061111c5761111b6133fe565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506110fb565b5050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111c461185f565b73ffffffffffffffffffffffffffffffffffffffff161480611239575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661122161185f565b73ffffffffffffffffffffffffffffffffffffffff16145b611241575f80fd5b5f61124b30610c1c565b9050611256816123bf565b50565b61126161185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e4906133e0565b60405180910390fd5b5f5b83839050811015611382578160055f868685818110611311576113106133fe565b5b905060200201602081019061132691906130f0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506112ef565b50505050565b61139061185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461141c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611413906133e0565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b61147b61185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fe906133e0565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61155161185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d4906133e0565b60405180910390fd5b8060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6116aa61185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611736576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172d906133e0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b9061349b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cb90613529565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611942576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611939906135b7565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a1c9190612f34565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8e90613645565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afc906136d3565b60405180910390fd5b5f8111611b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3e90613761565b60405180910390fd5b611b4f610e85565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611bbd5750611b8d610e85565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611f9657601560149054906101000a900460ff16611c4c57611bde610e85565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c42906137ef565b60405180910390fd5b5b601654811115611c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8890613857565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611d2f575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611d6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d65906138e5565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611e1a5760175481611dcf84610c1c565b611dd99190613930565b10611e19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e10906139d3565b60405180910390fd5b5b5f611e2430610c1c565b90505f60185482101590506018548210611e3e5760185491505b808015611e56575060158054906101000a900460ff16155b8015611eaf575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611ec75750601560169054906101000a900460ff165b8015611f1a575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611f6d575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611f9357611f7b826123bf565b5f4790505f811115611f9157611f90476122eb565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612036575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806120e7575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156120e6575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156120f4575f9050612277565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561219d575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156121b557600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561225e575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561227657600a54600c81905550600b54600d819055505b5b61228384848484612628565b50505050565b5f8383111582906122d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c79190612d82565b60405180910390fd5b505f83856122de91906139f1565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561234f573d5f803e3d5ffd5b5050565b5f600654821115612399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239090613a94565b60405180910390fd5b5f6123a2612655565b90506123b7818461267e90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156123f5576123f461311f565b5b6040519080825280602002602001820160405280156124235781602001602082028036833780820191505090505b50905030815f8151811061243a576124396133fe565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124de573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125029190613ac6565b81600181518110612516576125156133fe565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061257c3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611866565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016125de959493929190613be1565b5f604051808303815f87803b1580156125f5575f80fd5b505af1158015612607573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b80612636576126356126c7565b5b612641848484612700565b8061264f5761264e6128c0565b5b50505050565b5f805f6126606128d4565b91509150612677818361267e90919063ffffffff16565b9250505090565b5f6126bf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061292d565b905092915050565b5f600c541480156126d957505f600d54145b6126fe57600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061270f8761298e565b95509550955095509550955061276b8660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129ee90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506127fc8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a3790919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061284681612a94565b6128508483612b4b565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128ad9190612f34565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f662386f26fc100009050612903662386f26fc1000060065461267e90919063ffffffff16565b82101561292057600654662386f26fc10000935093505050612929565b81819350935050505b9091565b5f8083118290612973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296a9190612d82565b60405180910390fd5b505f83856129819190613c66565b9050809150509392505050565b5f805f805f805f805f6129a68a600c54600d54612b85565b9250925092505f6129b5612655565b90505f805f6129c68e878787612c17565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f612a2f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612289565b905092915050565b5f808284612a459190613930565b905083811015612a8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8190613ce0565b60405180910390fd5b8091505092915050565b5f612a9d612655565b90505f612ab38284612c9b90919063ffffffff16565b9050612b058160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a3790919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612b60826006546129ee90919063ffffffff16565b600681905550612b7b81600754612a3790919063ffffffff16565b6007819055505050565b5f805f80612baf6064612ba1888a612c9b90919063ffffffff16565b61267e90919063ffffffff16565b90505f612bd86064612bca888b612c9b90919063ffffffff16565b61267e90919063ffffffff16565b90505f612c0082612bf2858c6129ee90919063ffffffff16565b6129ee90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612c2e8589612c9b90919063ffffffff16565b90505f612c448689612c9b90919063ffffffff16565b90505f612c5a8789612c9b90919063ffffffff16565b90505f612c8282612c7485876129ee90919063ffffffff16565b6129ee90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612cab575f9050612d0c565b5f8284612cb89190613cfe565b9050828482612cc79190613c66565b14612d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cfe90613daf565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612d5482612d12565b612d5e8185612d1c565b9350612d6e818560208601612d2c565b612d7781612d3a565b840191505092915050565b5f6020820190508181035f830152612d9a8184612d4a565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ddc82612db3565b9050919050565b612dec81612dd2565b8114612df6575f80fd5b50565b5f81359050612e0781612de3565b92915050565b5f819050919050565b612e1f81612e0d565b8114612e29575f80fd5b50565b5f81359050612e3a81612e16565b92915050565b5f8060408385031215612e5657612e55612dab565b5b5f612e6385828601612df9565b9250506020612e7485828601612e2c565b9150509250929050565b5f8115159050919050565b612e9281612e7e565b82525050565b5f602082019050612eab5f830184612e89565b92915050565b5f819050919050565b5f612ed4612ecf612eca84612db3565b612eb1565b612db3565b9050919050565b5f612ee582612eba565b9050919050565b5f612ef682612edb565b9050919050565b612f0681612eec565b82525050565b5f602082019050612f1f5f830184612efd565b92915050565b612f2e81612e0d565b82525050565b5f602082019050612f475f830184612f25565b92915050565b5f8060408385031215612f6357612f62612dab565b5b5f612f7085828601612e2c565b9250506020612f8185828601612e2c565b9150509250929050565b5f805f60608486031215612fa257612fa1612dab565b5b5f612faf86828701612df9565b9350506020612fc086828701612df9565b9250506040612fd186828701612e2c565b9150509250925092565b5f60ff82169050919050565b612ff081612fdb565b82525050565b5f6020820190506130095f830184612fe7565b92915050565b5f61301982612db3565b9050919050565b6130298161300f565b82525050565b5f6020820190506130425f830184613020565b92915050565b61305181612dd2565b82525050565b5f60208201905061306a5f830184613048565b92915050565b61307981612e7e565b8114613083575f80fd5b50565b5f8135905061309481613070565b92915050565b5f602082840312156130af576130ae612dab565b5b5f6130bc84828501613086565b91505092915050565b5f602082840312156130da576130d9612dab565b5b5f6130e784828501612e2c565b91505092915050565b5f6020828403121561310557613104612dab565b5b5f61311284828501612df9565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61315582612d3a565b810181811067ffffffffffffffff821117156131745761317361311f565b5b80604052505050565b5f613186612da2565b9050613192828261314c565b919050565b5f67ffffffffffffffff8211156131b1576131b061311f565b5b602082029050602081019050919050565b5f80fd5b5f6131d86131d384613197565b61317d565b905080838252602082019050602084028301858111156131fb576131fa6131c2565b5b835b8181101561322457806132108882612df9565b8452602084019350506020810190506131fd565b5050509392505050565b5f82601f8301126132425761324161311b565b5b81356132528482602086016131c6565b91505092915050565b5f602082840312156132705761326f612dab565b5b5f82013567ffffffffffffffff81111561328d5761328c612daf565b5b6132998482850161322e565b91505092915050565b5f80fd5b5f8083601f8401126132bb576132ba61311b565b5b8235905067ffffffffffffffff8111156132d8576132d76132a2565b5b6020830191508360208202830111156132f4576132f36131c2565b5b9250929050565b5f805f6040848603121561331257613311612dab565b5b5f84013567ffffffffffffffff81111561332f5761332e612daf565b5b61333b868287016132a6565b9350935050602061334e86828701613086565b9150509250925092565b5f806040838503121561336e5761336d612dab565b5b5f61337b85828601612df9565b925050602061338c85828601612df9565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6133ca602083612d1c565b91506133d582613396565b602082019050919050565b5f6020820190508181035f8301526133f7816133be565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613485602683612d1c565b91506134908261342b565b604082019050919050565b5f6020820190508181035f8301526134b281613479565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613513602483612d1c565b915061351e826134b9565b604082019050919050565b5f6020820190508181035f83015261354081613507565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6135a1602283612d1c565b91506135ac82613547565b604082019050919050565b5f6020820190508181035f8301526135ce81613595565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61362f602583612d1c565b915061363a826135d5565b604082019050919050565b5f6020820190508181035f83015261365c81613623565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6136bd602383612d1c565b91506136c882613663565b604082019050919050565b5f6020820190508181035f8301526136ea816136b1565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61374b602983612d1c565b9150613756826136f1565b604082019050919050565b5f6020820190508181035f8301526137788161373f565b9050919050565b7f544f4b454e3a2063616e6e6f742073656e6420746f6b656e7320756e74696c205f8201527f74726164696e6720697320656e61626c65640000000000000000000000000000602082015250565b5f6137d9603283612d1c565b91506137e48261377f565b604082019050919050565b5f6020820190508181035f830152613806816137cd565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f613841601c83612d1c565b915061384c8261380d565b602082019050919050565b5f6020820190508181035f83015261386e81613835565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f6138cf602383612d1c565b91506138da82613875565b604082019050919050565b5f6020820190508181035f8301526138fc816138c3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61393a82612e0d565b915061394583612e0d565b925082820190508082111561395d5761395c613903565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f6139bd602383612d1c565b91506139c882613963565b604082019050919050565b5f6020820190508181035f8301526139ea816139b1565b9050919050565b5f6139fb82612e0d565b9150613a0683612e0d565b9250828203905081811115613a1e57613a1d613903565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613a7e602a83612d1c565b9150613a8982613a24565b604082019050919050565b5f6020820190508181035f830152613aab81613a72565b9050919050565b5f81519050613ac081612de3565b92915050565b5f60208284031215613adb57613ada612dab565b5b5f613ae884828501613ab2565b91505092915050565b5f819050919050565b5f613b14613b0f613b0a84613af1565b612eb1565b612e0d565b9050919050565b613b2481613afa565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613b5c81612dd2565b82525050565b5f613b6d8383613b53565b60208301905092915050565b5f602082019050919050565b5f613b8f82613b2a565b613b998185613b34565b9350613ba483613b44565b805f5b83811015613bd4578151613bbb8882613b62565b9750613bc683613b79565b925050600181019050613ba7565b5085935050505092915050565b5f60a082019050613bf45f830188612f25565b613c016020830187613b1b565b8181036040830152613c138186613b85565b9050613c226060830185613048565b613c2f6080830184612f25565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613c7082612e0d565b9150613c7b83612e0d565b925082613c8b57613c8a613c39565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613cca601b83612d1c565b9150613cd582613c96565b602082019050919050565b5f6020820190508181035f830152613cf781613cbe565b9050919050565b5f613d0882612e0d565b9150613d1383612e0d565b9250828202613d2181612e0d565b91508282048414831517613d3857613d37613903565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d99602183612d1c565b9150613da482613d3f565b604082019050919050565b5f6020820190508181035f830152613dc681613d8d565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209cdd95a993c3650d52e16416619b692d1beecccebe62468b3d3aef9e1f73d94064736f6c634300081a0033

Deployed Bytecode

0x6080604052600436106101fc575f3560e01c80637f2feddc1161010c578063c3c2cb7e1161009f578063c9567bf91161006e578063c9567bf9146106d5578063caac7934146106eb578063cb71159514610715578063dd62ed3e1461073d578063f2fde38b1461077957610203565b8063c3c2cb7e14610647578063c3c8cd801461066f578063c492f04614610685578063c767d9f1146106ad57610203565b8063a9059cbb116100db578063a9059cbb1461057f578063ba759f0e146105bb578063bc337182146105e3578063bfd792841461060b57610203565b80637f2feddc146104c55780638da5cb5b146105015780638f9a55c01461052b57806395d89b411461055557610203565b80633d6a9afe1161018f5780636fc3eaec1161015e5780636fc3eaec1461041d57806370a0823114610433578063715018a61461046f578063751039fc146104855780637d1db4a51461049b57610203565b80633d6a9afe1461037957806349bd5a5e146103a35780635c67d12d146103cd5780635d0044ca146103f557610203565b806321ecff5b116101cb57806321ecff5b146102c157806323b872dd146102e95780632fd689e314610325578063313ce5671461034f57610203565b806306fdde0314610207578063095ea7b3146102315780631694505e1461026d57806318160ddd1461029757610203565b3661020357005b5f80fd5b348015610212575f80fd5b5061021b6107a1565b6040516102289190612d82565b60405180910390f35b34801561023c575f80fd5b5061025760048036038101906102529190612e40565b6107de565b6040516102649190612e98565b60405180910390f35b348015610278575f80fd5b506102816107fb565b60405161028e9190612f0c565b60405180910390f35b3480156102a2575f80fd5b506102ab610820565b6040516102b89190612f34565b60405180910390f35b3480156102cc575f80fd5b506102e760048036038101906102e29190612f4d565b61082e565b005b3480156102f4575f80fd5b5061030f600480360381019061030a9190612f8b565b6108d4565b60405161031c9190612e98565b60405180910390f35b348015610330575f80fd5b506103396109a8565b6040516103469190612f34565b60405180910390f35b34801561035a575f80fd5b506103636109ae565b6040516103709190612ff6565b60405180910390f35b348015610384575f80fd5b5061038d6109b6565b60405161039a919061302f565b60405180910390f35b3480156103ae575f80fd5b506103b76109db565b6040516103c49190613057565b60405180910390f35b3480156103d8575f80fd5b506103f360048036038101906103ee919061309a565b610a00565b005b348015610400575f80fd5b5061041b600480360381019061041691906130c5565b610ab1565b005b348015610428575f80fd5b50610431610b4f565b005b34801561043e575f80fd5b50610459600480360381019061045491906130f0565b610c1c565b6040516104669190612f34565b60405180910390f35b34801561047a575f80fd5b50610483610c6a565b005b348015610490575f80fd5b50610499610db8565b005b3480156104a6575f80fd5b506104af610e6a565b6040516104bc9190612f34565b60405180910390f35b3480156104d0575f80fd5b506104eb60048036038101906104e691906130f0565b610e70565b6040516104f89190612f34565b60405180910390f35b34801561050c575f80fd5b50610515610e85565b6040516105229190613057565b60405180910390f35b348015610536575f80fd5b5061053f610eac565b60405161054c9190612f34565b60405180910390f35b348015610560575f80fd5b50610569610eb2565b6040516105769190612d82565b60405180910390f35b34801561058a575f80fd5b506105a560048036038101906105a09190612e40565b610eef565b6040516105b29190612e98565b60405180910390f35b3480156105c6575f80fd5b506105e160048036038101906105dc91906130c5565b610f0c565b005b3480156105ee575f80fd5b50610609600480360381019061060491906130c5565b610faa565b005b348015610616575f80fd5b50610631600480360381019061062c91906130f0565b611048565b60405161063e9190612e98565b60405180910390f35b348015610652575f80fd5b5061066d6004803603810190610668919061325b565b611065565b005b34801561067a575f80fd5b50610683611184565b005b348015610690575f80fd5b506106ab60048036038101906106a691906132fb565b611259565b005b3480156106b8575f80fd5b506106d360048036038101906106ce91906130f0565b611388565b005b3480156106e0575f80fd5b506106e9611473565b005b3480156106f6575f80fd5b506106ff611524565b60405161070c919061302f565b60405180910390f35b348015610720575f80fd5b5061073b600480360381019061073691906130f0565b611549565b005b348015610748575f80fd5b50610763600480360381019061075e9190613358565b611620565b6040516107709190612f34565b60405180910390f35b348015610784575f80fd5b5061079f600480360381019061079a91906130f0565b6116a2565b005b60606040518060400160405280600681526020017f42656c7567610000000000000000000000000000000000000000000000000000815250905090565b5f6107f16107ea61185f565b8484611866565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f662386f26fc10000905090565b61083661185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b9906133e0565b60405180910390fd5b8160098190555080600b819055505050565b5f6108e0848484611a29565b61099d846108ec61185f565b61099885604051806060016040528060288152602001613dce6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61094f61185f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122899092919063ffffffff16565b611866565b600190509392505050565b60185481565b5f6009905090565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a0861185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8b906133e0565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b610ab961185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3c906133e0565b60405180910390fd5b8060178190555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b8f61185f565b73ffffffffffffffffffffffffffffffffffffffff161480610c04575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bec61185f565b73ffffffffffffffffffffffffffffffffffffffff16145b610c0c575f80fd5b5f479050610c19816122eb565b50565b5f610c6360025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612353565b9050919050565b610c7261185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf5906133e0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610dc061185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e43906133e0565b60405180910390fd5b662386f26fc10000601681905550662386f26fc10000601781905550565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600681526020017f42656c7567610000000000000000000000000000000000000000000000000000815250905090565b5f610f02610efb61185f565b8484611a29565b6001905092915050565b610f1461185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f97906133e0565b60405180910390fd5b8060188190555050565b610fb261185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461103e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611035906133e0565b60405180910390fd5b8060168190555050565b6010602052805f5260405f205f915054906101000a900460ff1681565b61106d61185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f0906133e0565b60405180910390fd5b5f5b815181101561118057600160105f84848151811061111c5761111b6133fe565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506110fb565b5050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111c461185f565b73ffffffffffffffffffffffffffffffffffffffff161480611239575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661122161185f565b73ffffffffffffffffffffffffffffffffffffffff16145b611241575f80fd5b5f61124b30610c1c565b9050611256816123bf565b50565b61126161185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e4906133e0565b60405180910390fd5b5f5b83839050811015611382578160055f868685818110611311576113106133fe565b5b905060200201602081019061132691906130f0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506112ef565b50505050565b61139061185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461141c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611413906133e0565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b61147b61185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fe906133e0565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61155161185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d4906133e0565b60405180910390fd5b8060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6116aa61185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611736576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172d906133e0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b9061349b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cb90613529565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611942576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611939906135b7565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a1c9190612f34565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8e90613645565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afc906136d3565b60405180910390fd5b5f8111611b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3e90613761565b60405180910390fd5b611b4f610e85565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611bbd5750611b8d610e85565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611f9657601560149054906101000a900460ff16611c4c57611bde610e85565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c42906137ef565b60405180910390fd5b5b601654811115611c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8890613857565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611d2f575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611d6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d65906138e5565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611e1a5760175481611dcf84610c1c565b611dd99190613930565b10611e19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e10906139d3565b60405180910390fd5b5b5f611e2430610c1c565b90505f60185482101590506018548210611e3e5760185491505b808015611e56575060158054906101000a900460ff16155b8015611eaf575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611ec75750601560169054906101000a900460ff165b8015611f1a575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611f6d575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611f9357611f7b826123bf565b5f4790505f811115611f9157611f90476122eb565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612036575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806120e7575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156120e6575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156120f4575f9050612277565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561219d575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156121b557600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561225e575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561227657600a54600c81905550600b54600d819055505b5b61228384848484612628565b50505050565b5f8383111582906122d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c79190612d82565b60405180910390fd5b505f83856122de91906139f1565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561234f573d5f803e3d5ffd5b5050565b5f600654821115612399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239090613a94565b60405180910390fd5b5f6123a2612655565b90506123b7818461267e90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156123f5576123f461311f565b5b6040519080825280602002602001820160405280156124235781602001602082028036833780820191505090505b50905030815f8151811061243a576124396133fe565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124de573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125029190613ac6565b81600181518110612516576125156133fe565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061257c3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611866565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016125de959493929190613be1565b5f604051808303815f87803b1580156125f5575f80fd5b505af1158015612607573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b80612636576126356126c7565b5b612641848484612700565b8061264f5761264e6128c0565b5b50505050565b5f805f6126606128d4565b91509150612677818361267e90919063ffffffff16565b9250505090565b5f6126bf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061292d565b905092915050565b5f600c541480156126d957505f600d54145b6126fe57600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061270f8761298e565b95509550955095509550955061276b8660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129ee90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506127fc8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a3790919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061284681612a94565b6128508483612b4b565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128ad9190612f34565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f662386f26fc100009050612903662386f26fc1000060065461267e90919063ffffffff16565b82101561292057600654662386f26fc10000935093505050612929565b81819350935050505b9091565b5f8083118290612973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296a9190612d82565b60405180910390fd5b505f83856129819190613c66565b9050809150509392505050565b5f805f805f805f805f6129a68a600c54600d54612b85565b9250925092505f6129b5612655565b90505f805f6129c68e878787612c17565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f612a2f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612289565b905092915050565b5f808284612a459190613930565b905083811015612a8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8190613ce0565b60405180910390fd5b8091505092915050565b5f612a9d612655565b90505f612ab38284612c9b90919063ffffffff16565b9050612b058160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a3790919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612b60826006546129ee90919063ffffffff16565b600681905550612b7b81600754612a3790919063ffffffff16565b6007819055505050565b5f805f80612baf6064612ba1888a612c9b90919063ffffffff16565b61267e90919063ffffffff16565b90505f612bd86064612bca888b612c9b90919063ffffffff16565b61267e90919063ffffffff16565b90505f612c0082612bf2858c6129ee90919063ffffffff16565b6129ee90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612c2e8589612c9b90919063ffffffff16565b90505f612c448689612c9b90919063ffffffff16565b90505f612c5a8789612c9b90919063ffffffff16565b90505f612c8282612c7485876129ee90919063ffffffff16565b6129ee90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612cab575f9050612d0c565b5f8284612cb89190613cfe565b9050828482612cc79190613c66565b14612d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cfe90613daf565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612d5482612d12565b612d5e8185612d1c565b9350612d6e818560208601612d2c565b612d7781612d3a565b840191505092915050565b5f6020820190508181035f830152612d9a8184612d4a565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ddc82612db3565b9050919050565b612dec81612dd2565b8114612df6575f80fd5b50565b5f81359050612e0781612de3565b92915050565b5f819050919050565b612e1f81612e0d565b8114612e29575f80fd5b50565b5f81359050612e3a81612e16565b92915050565b5f8060408385031215612e5657612e55612dab565b5b5f612e6385828601612df9565b9250506020612e7485828601612e2c565b9150509250929050565b5f8115159050919050565b612e9281612e7e565b82525050565b5f602082019050612eab5f830184612e89565b92915050565b5f819050919050565b5f612ed4612ecf612eca84612db3565b612eb1565b612db3565b9050919050565b5f612ee582612eba565b9050919050565b5f612ef682612edb565b9050919050565b612f0681612eec565b82525050565b5f602082019050612f1f5f830184612efd565b92915050565b612f2e81612e0d565b82525050565b5f602082019050612f475f830184612f25565b92915050565b5f8060408385031215612f6357612f62612dab565b5b5f612f7085828601612e2c565b9250506020612f8185828601612e2c565b9150509250929050565b5f805f60608486031215612fa257612fa1612dab565b5b5f612faf86828701612df9565b9350506020612fc086828701612df9565b9250506040612fd186828701612e2c565b9150509250925092565b5f60ff82169050919050565b612ff081612fdb565b82525050565b5f6020820190506130095f830184612fe7565b92915050565b5f61301982612db3565b9050919050565b6130298161300f565b82525050565b5f6020820190506130425f830184613020565b92915050565b61305181612dd2565b82525050565b5f60208201905061306a5f830184613048565b92915050565b61307981612e7e565b8114613083575f80fd5b50565b5f8135905061309481613070565b92915050565b5f602082840312156130af576130ae612dab565b5b5f6130bc84828501613086565b91505092915050565b5f602082840312156130da576130d9612dab565b5b5f6130e784828501612e2c565b91505092915050565b5f6020828403121561310557613104612dab565b5b5f61311284828501612df9565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61315582612d3a565b810181811067ffffffffffffffff821117156131745761317361311f565b5b80604052505050565b5f613186612da2565b9050613192828261314c565b919050565b5f67ffffffffffffffff8211156131b1576131b061311f565b5b602082029050602081019050919050565b5f80fd5b5f6131d86131d384613197565b61317d565b905080838252602082019050602084028301858111156131fb576131fa6131c2565b5b835b8181101561322457806132108882612df9565b8452602084019350506020810190506131fd565b5050509392505050565b5f82601f8301126132425761324161311b565b5b81356132528482602086016131c6565b91505092915050565b5f602082840312156132705761326f612dab565b5b5f82013567ffffffffffffffff81111561328d5761328c612daf565b5b6132998482850161322e565b91505092915050565b5f80fd5b5f8083601f8401126132bb576132ba61311b565b5b8235905067ffffffffffffffff8111156132d8576132d76132a2565b5b6020830191508360208202830111156132f4576132f36131c2565b5b9250929050565b5f805f6040848603121561331257613311612dab565b5b5f84013567ffffffffffffffff81111561332f5761332e612daf565b5b61333b868287016132a6565b9350935050602061334e86828701613086565b9150509250925092565b5f806040838503121561336e5761336d612dab565b5b5f61337b85828601612df9565b925050602061338c85828601612df9565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6133ca602083612d1c565b91506133d582613396565b602082019050919050565b5f6020820190508181035f8301526133f7816133be565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613485602683612d1c565b91506134908261342b565b604082019050919050565b5f6020820190508181035f8301526134b281613479565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613513602483612d1c565b915061351e826134b9565b604082019050919050565b5f6020820190508181035f83015261354081613507565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6135a1602283612d1c565b91506135ac82613547565b604082019050919050565b5f6020820190508181035f8301526135ce81613595565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61362f602583612d1c565b915061363a826135d5565b604082019050919050565b5f6020820190508181035f83015261365c81613623565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6136bd602383612d1c565b91506136c882613663565b604082019050919050565b5f6020820190508181035f8301526136ea816136b1565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61374b602983612d1c565b9150613756826136f1565b604082019050919050565b5f6020820190508181035f8301526137788161373f565b9050919050565b7f544f4b454e3a2063616e6e6f742073656e6420746f6b656e7320756e74696c205f8201527f74726164696e6720697320656e61626c65640000000000000000000000000000602082015250565b5f6137d9603283612d1c565b91506137e48261377f565b604082019050919050565b5f6020820190508181035f830152613806816137cd565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f613841601c83612d1c565b915061384c8261380d565b602082019050919050565b5f6020820190508181035f83015261386e81613835565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f6138cf602383612d1c565b91506138da82613875565b604082019050919050565b5f6020820190508181035f8301526138fc816138c3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61393a82612e0d565b915061394583612e0d565b925082820190508082111561395d5761395c613903565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f6139bd602383612d1c565b91506139c882613963565b604082019050919050565b5f6020820190508181035f8301526139ea816139b1565b9050919050565b5f6139fb82612e0d565b9150613a0683612e0d565b9250828203905081811115613a1e57613a1d613903565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613a7e602a83612d1c565b9150613a8982613a24565b604082019050919050565b5f6020820190508181035f830152613aab81613a72565b9050919050565b5f81519050613ac081612de3565b92915050565b5f60208284031215613adb57613ada612dab565b5b5f613ae884828501613ab2565b91505092915050565b5f819050919050565b5f613b14613b0f613b0a84613af1565b612eb1565b612e0d565b9050919050565b613b2481613afa565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613b5c81612dd2565b82525050565b5f613b6d8383613b53565b60208301905092915050565b5f602082019050919050565b5f613b8f82613b2a565b613b998185613b34565b9350613ba483613b44565b805f5b83811015613bd4578151613bbb8882613b62565b9750613bc683613b79565b925050600181019050613ba7565b5085935050505092915050565b5f60a082019050613bf45f830188612f25565b613c016020830187613b1b565b8181036040830152613c138186613b85565b9050613c226060830185613048565b613c2f6080830184612f25565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613c7082612e0d565b9150613c7b83612e0d565b925082613c8b57613c8a613c39565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613cca601b83612d1c565b9150613cd582613c96565b602082019050919050565b5f6020820190508181035f830152613cf781613cbe565b9050919050565b5f613d0882612e0d565b9150613d1383612e0d565b9250828202613d2181612e0d565b91508282048414831517613d3857613d37613903565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d99602183612d1c565b9150613da482613d3f565b604082019050919050565b5f6020820190508181035f830152613dc681613d8d565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209cdd95a993c3650d52e16416619b692d1beecccebe62468b3d3aef9e1f73d94064736f6c634300081a0033

Deployed Bytecode Sourcemap

4098:13441:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6577:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7509:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5309:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6857:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16429:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7711:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5607:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6765:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5209:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5357:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16702:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17296:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12500:235;;;;;;;;;;;;;:::i;:::-;;6961:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1610:148;;;;;;;;;;;;;:::i;:::-;;17413:117;;;;;;;;;;;;;:::i;:::-;;5501:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5158:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1400:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5553:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6669:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7108:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16581:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17179:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5120:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12744:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12255:236;;;;;;;;;;;;;:::i;:::-;;16814:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12922:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12172:77;;;;;;;;;;;;;:::i;:::-;;5258:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17054:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7316:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1767:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6577:83;6614:13;6647:5;;;;;;;;;;;;;;;;;6640:12;;6577:83;:::o;7509:193::-;7611:4;7633:39;7642:12;:10;:12::i;:::-;7656:7;7665:6;7633:8;:39::i;:::-;7690:4;7683:11;;7509:193;;;;:::o;5309:41::-;;;;;;;;;;;;;:::o;6857:95::-;6910:7;4642:16;6930:14;;6857:95;:::o;16429:146::-;1535:12;:10;:12::i;:::-;1525:22;;:6;;;;;;;;;;:22;;;1517:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16526:9:::1;16516:7;:19;;;;16557:10;16546:8;:21;;;;16429:146:::0;;:::o;7711:446::-;7843:4;7860:36;7870:6;7878:9;7889:6;7860:9;:36::i;:::-;7907:220;7930:6;7951:12;:10;:12::i;:::-;7978:138;8034:6;7978:138;;;;;;;;;;;;;;;;;:11;:19;7990:6;7978:19;;;;;;;;;;;;;;;:33;7998:12;:10;:12::i;:::-;7978:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7907:8;:220::i;:::-;8145:4;8138:11;;7711:446;;;;;:::o;5607:50::-;;;;:::o;6765:83::-;6806:5;4318:1;6824:16;;6765:83;:::o;5209:42::-;;;;;;;;;;;;;:::o;5357:28::-;;;;;;;;;;;;;:::o;16702:106::-;1535:12;:10;:12::i;:::-;1525:22;;:6;;;;;;;;;;:22;;;1517:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16788:12:::1;16774:11;;:26;;;;;;;;;;;;;;;;;;16702:106:::0;:::o;17296:111::-;1535:12;:10;:12::i;:::-;1525:22;;:6;;;;;;;;;;:22;;;1517:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17386:13:::1;17369:14;:30;;;;17296:111:::0;:::o;12500:235::-;12566:19;;;;;;;;;;;12550:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12605:17;;;;;;;;;;;12589:33;;:12;:10;:12::i;:::-;:33;;;12550:72;12542:81;;;;;;12634:26;12663:21;12634:50;;12695:32;12708:18;12695:12;:32::i;:::-;12531:204;12500:235::o;6961:138::-;7027:7;7054:37;7074:7;:16;7082:7;7074:16;;;;;;;;;;;;;;;;7054:19;:37::i;:::-;7047:44;;6961:138;;;:::o;1610:148::-;1535:12;:10;:12::i;:::-;1525:22;;:6;;;;;;;;;;:22;;;1517:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1717:1:::1;1680:40;;1701:6;::::0;::::1;;;;;;;;1680:40;;;;;;;;;;;;1748:1;1731:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1610:148::o:0;17413:117::-;1535:12;:10;:12::i;:::-;1525:22;;:6;;;;;;;;;;:22;;;1517:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4642:16:::1;17465:12;:22;;;;4642:16;17498:14;:24;;;;17413:117::o:0;5501:44::-;;;;:::o;5158:43::-;;;;;;;;;;;;;;;;;:::o;1400:79::-;1438:7;1465:6;;;;;;;;;;;1458:13;;1400:79;:::o;5553:46::-;;;;:::o;6669:87::-;6708:13;6741:7;;;;;;;;;;;;;;;;;6734:14;;6669:87;:::o;7108:199::-;7213:4;7235:42;7245:12;:10;:12::i;:::-;7259:9;7270:6;7235:9;:42::i;:::-;7295:4;7288:11;;7108:199;;;;:::o;16581:115::-;1535:12;:10;:12::i;:::-;1525:22;;:6;;;;;;;;;;:22;;;1517:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16681:7:::1;16659:19;:29;;;;16581:115:::0;:::o;17179:111::-;1535:12;:10;:12::i;:::-;1525:22;;:6;;;;;;;;;;:22;;;1517:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17264:11:::1;17249:12;:26;;;;17179:111:::0;:::o;5120:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12744:172::-;1535:12;:10;:12::i;:::-;1525:22;;:6;;;;;;;;;;:22;;;1517:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12823:9:::1;12818:91;12842:5;:12;12838:1;:16;12818:91;;;12893:4;12876;:14;12881:5;12887:1;12881:8;;;;;;;;:::i;:::-;;;;;;;;12876:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12856:3;;;;;;;12818:91;;;;12744:172:::0;:::o;12255:236::-;12321:19;;;;;;;;;;;12305:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12360:17;;;;;;;;;;;12344:33;;:12;:10;:12::i;:::-;:33;;;12305:72;12297:81;;;;;;12389:23;12415:24;12433:4;12415:9;:24::i;:::-;12389:50;;12450:33;12467:15;12450:16;:33::i;:::-;12286:205;12255:236::o;16814:234::-;1535:12;:10;:12::i;:::-;1525:22;;:6;;;;;;;;;;:22;;;1517:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16931:9:::1;16927:114;16950:8;;:15;;16946:1;:19;16927:114;;;17021:8;16987:18;:31;17006:8;;17015:1;17006:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16987:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;16967:3;;;;;;;16927:114;;;;16814:234:::0;;;:::o;12922:93::-;1535:12;:10;:12::i;:::-;1525:22;;:6;;;;;;;;;;:22;;;1517:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13002:5:::1;12988:4;:11;12993:5;12988:11;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;12922:93:::0;:::o;12172:77::-;1535:12;:10;:12::i;:::-;1525:22;;:6;;;;;;;;;;:22;;;1517:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12237:4:::1;12223:11;;:18;;;;;;;;;;;;;;;;;;12172:77::o:0;5258:41::-;;;;;;;;;;;;;:::o;17054:119::-;1535:12;:10;:12::i;:::-;1525:22;;:6;;;;;;;;;;:22;;;1517:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17154:10:::1;17126:17;;:39;;;;;;;;;;;;;;;;;;17054:119:::0;:::o;7316:184::-;7433:7;7465:11;:18;7477:5;7465:18;;;;;;;;;;;;;;;:27;7484:7;7465:27;;;;;;;;;;;;;;;;7458:34;;7316:184;;;;:::o;1767:244::-;1535:12;:10;:12::i;:::-;1525:22;;:6;;;;;;;;;;:22;;;1517:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1876:1:::1;1856:22;;:8;:22;;::::0;1848:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1966:8;1937:38;;1958:6;::::0;::::1;;;;;;;;1937:38;;;;;;;;;;;;1995:8;1986:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1767:244:::0;:::o;179:98::-;232:7;259:10;252:17;;179:98;:::o;8854:369::-;8998:1;8981:19;;:5;:19;;;8973:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9079:1;9060:21;;:7;:21;;;9052:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9161:6;9131:11;:18;9143:5;9131:18;;;;;;;;;;;;;;;:27;9150:7;9131:27;;;;;;;;;;;;;;;:36;;;;9199:7;9183:32;;9192:5;9183:32;;;9208:6;9183:32;;;;;;:::i;:::-;;;;;;;;8854:369;;;:::o;9232:2334::-;9370:1;9354:18;;:4;:18;;;9346:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9447:1;9433:16;;:2;:16;;;9425:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9517:1;9508:6;:10;9500:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9590:7;:5;:7::i;:::-;9582:15;;:4;:15;;;;:32;;;;;9607:7;:5;:7::i;:::-;9601:13;;:2;:13;;;;9582:32;9578:1266;;;9672:11;;;;;;;;;;;9667:131;;9720:7;:5;:7::i;:::-;9712:15;;:4;:15;;;9704:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;9667:131;9833:12;;9823:6;:22;;9815:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9902:4;:10;9907:4;9902:10;;;;;;;;;;;;;;;;;;;;;;;;;9901:11;:24;;;;;9917:4;:8;9922:2;9917:8;;;;;;;;;;;;;;;;;;;;;;;;;9916:9;9901:24;9893:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;9992:13;;;;;;;;;;;9986:19;;:2;:19;;;9983:146;;10059:14;;10050:6;10034:13;10044:2;10034:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10026:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;9983:146;10146:28;10177:24;10195:4;10177:9;:24::i;:::-;10146:55;;10216:12;10255:19;;10231:20;:43;;10216:58;;10319:19;;10295:20;:43;10292:138;;10395:19;;10372:42;;10292:138;10451:7;:18;;;;;10463:6;;;;;;;;;;10462:7;10451:18;:43;;;;;10481:13;;;;;;;;;;;10473:21;;:4;:21;;;;10451:43;:58;;;;;10498:11;;;;;;;;;;;10451:58;:87;;;;;10514:18;:24;10533:4;10514:24;;;;;;;;;;;;;;;;;;;;;;;;;10513:25;10451:87;:114;;;;;10543:18;:22;10562:2;10543:22;;;;;;;;;;;;;;;;;;;;;;;;;10542:23;10451:114;10447:386;;;10586:38;10603:20;10586:16;:38::i;:::-;10643:26;10672:21;10643:50;;10737:1;10716:18;:22;10712:106;;;10763:35;10776:21;10763:12;:35::i;:::-;10712:106;10567:266;10447:386;9616:1228;;9578:1266;10857:12;10872:4;10857:19;;10922:18;:24;10941:4;10922:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10950:18;:22;10969:2;10950:22;;;;;;;;;;;;;;;;;;;;;;;;;10922:50;10921:102;;;;10986:13;;;;;;;;;;;10978:21;;:4;:21;;;;:44;;;;;11009:13;;;;;;;;;;;11003:19;;:2;:19;;;;10978:44;10921:102;10917:587;;;11050:5;11040:15;;10917:587;;;11134:13;;;;;;;;;;;11126:21;;:4;:21;;;:55;;;;;11165:15;;;;;;;;;;;11151:30;;:2;:30;;;;11126:55;11123:157;;;11214:14;;11202:9;:26;;;;11257:7;;11247;:17;;;;11123:157;11340:13;;;;;;;;;;;11334:19;;:2;:19;;;:55;;;;;11373:15;;;;;;;;;;;11357:32;;:4;:32;;;;11334:55;11330:160;;;11422:15;;11410:9;:27;;;;11466:8;;11456:7;:18;;;;11330:160;10917:587;11517:41;11532:4;11538:2;11542:6;11550:7;11517:14;:41::i;:::-;9335:2231;9232:2334;;;:::o;2367:224::-;2487:7;2520:1;2515;:6;;2523:12;2507:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2547:9;2563:1;2559;:5;;;;:::i;:::-;2547:17;;2582:1;2575:8;;;2367:224;;;;;:::o;12067:99::-;12124:17;;;;;;;;;;;:26;;:34;12151:6;12124:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12067:99;:::o;8166:323::-;8261:7;8319;;8308;:18;;8286:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8407:19;8429:10;:8;:10::i;:::-;8407:32;;8457:24;8469:11;8457:7;:11;;:24;;;;:::i;:::-;8450:31;;;8166:323;;;:::o;11575:483::-;5761:4;5752:6;;:13;;;;;;;;;;;;;;;;;;11653:21:::1;11691:1;11677:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11653:40;;11722:4;11704;11709:1;11704:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11748:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11738:4;11743:1;11738:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11781:62;11798:4;11813:15;;;;;;;;;;;11831:11;11781:8;:62::i;:::-;11854:15;;;;;;;;;;;:66;;;11935:11;11961:1;11977:4;12004;12024:15;11854:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11642:416;5797:5:::0;5788:6;;:14;;;;;;;;;;;;;;;;;;11575:483;:::o;13021:282::-;13177:7;13172:28;;13186:14;:12;:14::i;:::-;13172:28;13211:44;13229:6;13237:9;13248:6;13211:17;:44::i;:::-;13271:7;13266:29;;13280:15;:13;:15::i;:::-;13266:29;13021:282;;;;:::o;15990:164::-;16032:7;16053:15;16070;16089:19;:17;:19::i;:::-;16052:56;;;;16126:20;16138:7;16126;:11;;:20;;;;:::i;:::-;16119:27;;;;15990:164;:::o;2849:132::-;2907:7;2934:39;2938:1;2941;2934:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2927:46;;2849:132;;;;:::o;8498:221::-;8558:1;8545:9;;:14;:30;;;;;8574:1;8563:7;;:12;8545:30;8577:7;8541:43;8617:9;;8597:17;:29;;;;8655:7;;8637:15;:25;;;;8688:1;8676:9;:13;;;;8710:1;8700:7;:11;;;;8498:221;:::o;13312:610::-;13459:15;13489:23;13527:12;13554:23;13592:12;13619:13;13646:19;13657:7;13646:10;:19::i;:::-;13444:221;;;;;;;;;;;;13694:28;13714:7;13694;:15;13702:6;13694:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13676:7;:15;13684:6;13676:15;;;;;;;;;;;;;;;:46;;;;13754:39;13777:15;13754:7;:18;13762:9;13754:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13733:7;:18;13741:9;13733:18;;;;;;;;;;;;;;;:60;;;;13804:16;13814:5;13804:9;:16::i;:::-;13831:23;13843:4;13849;13831:11;:23::i;:::-;13887:9;13870:44;;13879:6;13870:44;;;13898:15;13870:44;;;;;;:::i;:::-;;;;;;;;13433:489;;;;;;13312:610;;;:::o;8728:117::-;8784:17;;8772:9;:29;;;;8822:15;;8812:7;:25;;;;8728:117::o;16163:257::-;16214:7;16223;16243:15;16261:7;;16243:25;;16279:15;4642:16;16279:25;;16329:20;4642:16;16329:7;;:11;;:20;;;;:::i;:::-;16319:7;:30;16315:61;;;16359:7;;4642:16;16351:25;;;;;;;;16315:61;16395:7;16404;16387:25;;;;;;16163:257;;;:::o;2987:223::-;3107:7;3139:1;3135;:5;3142:12;3127:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3166:9;3182:1;3178;:5;;;;:::i;:::-;3166:17;;3201:1;3194:8;;;2987:223;;;;;:::o;14345:615::-;14445:7;14467;14489;14511;14533;14555;14591:23;14616:12;14630:13;14660:40;14672:7;14681:9;;14692:7;;14660:11;:40::i;:::-;14590:110;;;;;;14711:19;14733:10;:8;:10::i;:::-;14711:32;;14755:15;14772:23;14797:12;14826:46;14838:7;14847:4;14853:5;14860:11;14826;:46::i;:::-;14754:118;;;;;;14891:7;14900:15;14917:4;14923:15;14940:4;14946:5;14883:69;;;;;;;;;;;;;;;;;;;14345:615;;;;;;;:::o;2225:136::-;2283:7;2310:43;2314:1;2317;2310:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2303:50;;2225:136;;;;:::o;2040:179::-;2098:7;2118:9;2134:1;2130;:5;;;;:::i;:::-;2118:17;;2159:1;2154;:6;;2146:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2210:1;2203:8;;;2040:179;;;;:::o;13931:211::-;13984:19;14006:10;:8;:10::i;:::-;13984:32;;14027:13;14043:22;14053:11;14043:5;:9;;:22;;;;:::i;:::-;14027:38;;14101:33;14128:5;14101:7;:22;14117:4;14101:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14076:7;:22;14092:4;14076:22;;;;;;;;;;;;;;;:58;;;;13973:169;;13931:211;:::o;14151:147::-;14229:17;14241:4;14229:7;;:11;;:17;;;;:::i;:::-;14219:7;:27;;;;14270:20;14285:4;14270:10;;:14;;:20;;;;:::i;:::-;14257:10;:33;;;;14151:147;;:::o;14969:469::-;15138:7;15160;15182;15217:12;15232:30;15258:3;15232:21;15244:8;15232:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15217:45;;15273:13;15289:28;15313:3;15289:19;15301:6;15289:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15273:44;;15328:23;15354:28;15376:5;15354:17;15366:4;15354:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15328:54;;15401:15;15418:4;15424:5;15393:37;;;;;;;;;14969:469;;;;;;;:::o;15447:534::-;15641:7;15663;15685;15720:15;15738:24;15750:11;15738:7;:11;;:24;;;;:::i;:::-;15720:42;;15773:12;15788:21;15797:11;15788:4;:8;;:21;;;;:::i;:::-;15773:36;;15820:13;15836:22;15846:11;15836:5;:9;;:22;;;;:::i;:::-;15820:38;;15869:23;15895:28;15917:5;15895:17;15907:4;15895:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15869:54;;15942:7;15951:15;15968:4;15934:39;;;;;;;;;;15447:534;;;;;;;;:::o;2597:246::-;2655:7;2684:1;2679;:6;2675:47;;2709:1;2702:8;;;;2675:47;2732:9;2748:1;2744;:5;;;;:::i;:::-;2732:17;;2777:1;2772;2768;:5;;;;:::i;:::-;:10;2760:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2834:1;2827:8;;;2597:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1242:75::-;1275:6;1308:2;1302:9;1292:19;;1242:75;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:60::-;3367:3;3388:5;3381:12;;3339:60;;;:::o;3405:142::-;3455:9;3488:53;3506:34;3515:24;3533:5;3515:24;:::i;:::-;3506:34;:::i;:::-;3488:53;:::i;:::-;3475:66;;3405:142;;;:::o;3553:126::-;3603:9;3636:37;3667:5;3636:37;:::i;:::-;3623:50;;3553:126;;;:::o;3685:152::-;3761:9;3794:37;3825:5;3794:37;:::i;:::-;3781:50;;3685:152;;;:::o;3843:183::-;3956:63;4013:5;3956:63;:::i;:::-;3951:3;3944:76;3843:183;;:::o;4032:274::-;4151:4;4189:2;4178:9;4174:18;4166:26;;4202:97;4296:1;4285:9;4281:17;4272:6;4202:97;:::i;:::-;4032:274;;;;:::o;4312:118::-;4399:24;4417:5;4399:24;:::i;:::-;4394:3;4387:37;4312:118;;:::o;4436:222::-;4529:4;4567:2;4556:9;4552:18;4544:26;;4580:71;4648:1;4637:9;4633:17;4624:6;4580:71;:::i;:::-;4436:222;;;;:::o;4664:474::-;4732:6;4740;4789:2;4777:9;4768:7;4764:23;4760:32;4757:119;;;4795:79;;:::i;:::-;4757:119;4915:1;4940:53;4985:7;4976:6;4965:9;4961:22;4940:53;:::i;:::-;4930:63;;4886:117;5042:2;5068:53;5113:7;5104:6;5093:9;5089:22;5068:53;:::i;:::-;5058:63;;5013:118;4664:474;;;;;:::o;5144:619::-;5221:6;5229;5237;5286:2;5274:9;5265:7;5261:23;5257:32;5254:119;;;5292:79;;:::i;:::-;5254:119;5412:1;5437:53;5482:7;5473:6;5462:9;5458:22;5437:53;:::i;:::-;5427:63;;5383:117;5539:2;5565:53;5610:7;5601:6;5590:9;5586:22;5565:53;:::i;:::-;5555:63;;5510:118;5667:2;5693:53;5738:7;5729:6;5718:9;5714:22;5693:53;:::i;:::-;5683:63;;5638:118;5144:619;;;;;:::o;5769:86::-;5804:7;5844:4;5837:5;5833:16;5822:27;;5769:86;;;:::o;5861:112::-;5944:22;5960:5;5944:22;:::i;:::-;5939:3;5932:35;5861:112;;:::o;5979:214::-;6068:4;6106:2;6095:9;6091:18;6083:26;;6119:67;6183:1;6172:9;6168:17;6159:6;6119:67;:::i;:::-;5979:214;;;;:::o;6199:104::-;6244:7;6273:24;6291:5;6273:24;:::i;:::-;6262:35;;6199:104;;;:::o;6309:142::-;6412:32;6438:5;6412:32;:::i;:::-;6407:3;6400:45;6309:142;;:::o;6457:254::-;6566:4;6604:2;6593:9;6589:18;6581:26;;6617:87;6701:1;6690:9;6686:17;6677:6;6617:87;:::i;:::-;6457:254;;;;:::o;6717:118::-;6804:24;6822:5;6804:24;:::i;:::-;6799:3;6792:37;6717:118;;:::o;6841:222::-;6934:4;6972:2;6961:9;6957:18;6949:26;;6985:71;7053:1;7042:9;7038:17;7029:6;6985:71;:::i;:::-;6841:222;;;;:::o;7069:116::-;7139:21;7154:5;7139:21;:::i;:::-;7132:5;7129:32;7119:60;;7175:1;7172;7165:12;7119:60;7069:116;:::o;7191:133::-;7234:5;7272:6;7259:20;7250:29;;7288:30;7312:5;7288:30;:::i;:::-;7191:133;;;;:::o;7330:323::-;7386:6;7435:2;7423:9;7414:7;7410:23;7406:32;7403:119;;;7441:79;;:::i;:::-;7403:119;7561:1;7586:50;7628:7;7619:6;7608:9;7604:22;7586:50;:::i;:::-;7576:60;;7532:114;7330:323;;;;:::o;7659:329::-;7718:6;7767:2;7755:9;7746:7;7742:23;7738:32;7735:119;;;7773:79;;:::i;:::-;7735:119;7893:1;7918:53;7963:7;7954:6;7943:9;7939:22;7918:53;:::i;:::-;7908:63;;7864:117;7659:329;;;;:::o;7994:::-;8053:6;8102:2;8090:9;8081:7;8077:23;8073:32;8070:119;;;8108:79;;:::i;:::-;8070:119;8228:1;8253:53;8298:7;8289:6;8278:9;8274:22;8253:53;:::i;:::-;8243:63;;8199:117;7994:329;;;;:::o;8329:117::-;8438:1;8435;8428:12;8452:180;8500:77;8497:1;8490:88;8597:4;8594:1;8587:15;8621:4;8618:1;8611:15;8638:281;8721:27;8743:4;8721:27;:::i;:::-;8713:6;8709:40;8851:6;8839:10;8836:22;8815:18;8803:10;8800:34;8797:62;8794:88;;;8862:18;;:::i;:::-;8794:88;8902:10;8898:2;8891:22;8681:238;8638:281;;:::o;8925:129::-;8959:6;8986:20;;:::i;:::-;8976:30;;9015:33;9043:4;9035:6;9015:33;:::i;:::-;8925:129;;;:::o;9060:311::-;9137:4;9227:18;9219:6;9216:30;9213:56;;;9249:18;;:::i;:::-;9213:56;9299:4;9291:6;9287:17;9279:25;;9359:4;9353;9349:15;9341:23;;9060:311;;;:::o;9377:117::-;9486:1;9483;9476:12;9517:710;9613:5;9638:81;9654:64;9711:6;9654:64;:::i;:::-;9638:81;:::i;:::-;9629:90;;9739:5;9768:6;9761:5;9754:21;9802:4;9795:5;9791:16;9784:23;;9855:4;9847:6;9843:17;9835:6;9831:30;9884:3;9876:6;9873:15;9870:122;;;9903:79;;:::i;:::-;9870:122;10018:6;10001:220;10035:6;10030:3;10027:15;10001:220;;;10110:3;10139:37;10172:3;10160:10;10139:37;:::i;:::-;10134:3;10127:50;10206:4;10201:3;10197:14;10190:21;;10077:144;10061:4;10056:3;10052:14;10045:21;;10001:220;;;10005:21;9619:608;;9517:710;;;;;:::o;10250:370::-;10321:5;10370:3;10363:4;10355:6;10351:17;10347:27;10337:122;;10378:79;;:::i;:::-;10337:122;10495:6;10482:20;10520:94;10610:3;10602:6;10595:4;10587:6;10583:17;10520:94;:::i;:::-;10511:103;;10327:293;10250:370;;;;:::o;10626:539::-;10710:6;10759:2;10747:9;10738:7;10734:23;10730:32;10727:119;;;10765:79;;:::i;:::-;10727:119;10913:1;10902:9;10898:17;10885:31;10943:18;10935:6;10932:30;10929:117;;;10965:79;;:::i;:::-;10929:117;11070:78;11140:7;11131:6;11120:9;11116:22;11070:78;:::i;:::-;11060:88;;10856:302;10626:539;;;;:::o;11171:117::-;11280:1;11277;11270:12;11311:568;11384:8;11394:6;11444:3;11437:4;11429:6;11425:17;11421:27;11411:122;;11452:79;;:::i;:::-;11411:122;11565:6;11552:20;11542:30;;11595:18;11587:6;11584:30;11581:117;;;11617:79;;:::i;:::-;11581:117;11731:4;11723:6;11719:17;11707:29;;11785:3;11777:4;11769:6;11765:17;11755:8;11751:32;11748:41;11745:128;;;11792:79;;:::i;:::-;11745:128;11311:568;;;;;:::o;11885:698::-;11977:6;11985;11993;12042:2;12030:9;12021:7;12017:23;12013:32;12010:119;;;12048:79;;:::i;:::-;12010:119;12196:1;12185:9;12181:17;12168:31;12226:18;12218:6;12215:30;12212:117;;;12248:79;;:::i;:::-;12212:117;12361:80;12433:7;12424:6;12413:9;12409:22;12361:80;:::i;:::-;12343:98;;;;12139:312;12490:2;12516:50;12558:7;12549:6;12538:9;12534:22;12516:50;:::i;:::-;12506:60;;12461:115;11885:698;;;;;:::o;12589:474::-;12657:6;12665;12714:2;12702:9;12693:7;12689:23;12685:32;12682:119;;;12720:79;;:::i;:::-;12682:119;12840:1;12865:53;12910:7;12901:6;12890:9;12886:22;12865:53;:::i;:::-;12855:63;;12811:117;12967:2;12993:53;13038:7;13029:6;13018:9;13014:22;12993:53;:::i;:::-;12983:63;;12938:118;12589:474;;;;;:::o;13069:182::-;13209:34;13205:1;13197:6;13193:14;13186:58;13069:182;:::o;13257:366::-;13399:3;13420:67;13484:2;13479:3;13420:67;:::i;:::-;13413:74;;13496:93;13585:3;13496:93;:::i;:::-;13614:2;13609:3;13605:12;13598:19;;13257:366;;;:::o;13629:419::-;13795:4;13833:2;13822:9;13818:18;13810:26;;13882:9;13876:4;13872:20;13868:1;13857:9;13853:17;13846:47;13910:131;14036:4;13910:131;:::i;:::-;13902:139;;13629:419;;;:::o;14054:180::-;14102:77;14099:1;14092:88;14199:4;14196:1;14189:15;14223:4;14220:1;14213:15;14240:225;14380:34;14376:1;14368:6;14364:14;14357:58;14449:8;14444:2;14436:6;14432:15;14425:33;14240:225;:::o;14471:366::-;14613:3;14634:67;14698:2;14693:3;14634:67;:::i;:::-;14627:74;;14710:93;14799:3;14710:93;:::i;:::-;14828:2;14823:3;14819:12;14812:19;;14471:366;;;:::o;14843:419::-;15009:4;15047:2;15036:9;15032:18;15024:26;;15096:9;15090:4;15086:20;15082:1;15071:9;15067:17;15060:47;15124:131;15250:4;15124:131;:::i;:::-;15116:139;;14843:419;;;:::o;15268:223::-;15408:34;15404:1;15396:6;15392:14;15385:58;15477:6;15472:2;15464:6;15460:15;15453:31;15268:223;:::o;15497:366::-;15639:3;15660:67;15724:2;15719:3;15660:67;:::i;:::-;15653:74;;15736:93;15825:3;15736:93;:::i;:::-;15854:2;15849:3;15845:12;15838:19;;15497:366;;;:::o;15869:419::-;16035:4;16073:2;16062:9;16058:18;16050:26;;16122:9;16116:4;16112:20;16108:1;16097:9;16093:17;16086:47;16150:131;16276:4;16150:131;:::i;:::-;16142:139;;15869:419;;;:::o;16294:221::-;16434:34;16430:1;16422:6;16418:14;16411:58;16503:4;16498:2;16490:6;16486:15;16479:29;16294:221;:::o;16521:366::-;16663:3;16684:67;16748:2;16743:3;16684:67;:::i;:::-;16677:74;;16760:93;16849:3;16760:93;:::i;:::-;16878:2;16873:3;16869:12;16862:19;;16521:366;;;:::o;16893:419::-;17059:4;17097:2;17086:9;17082:18;17074:26;;17146:9;17140:4;17136:20;17132:1;17121:9;17117:17;17110:47;17174:131;17300:4;17174:131;:::i;:::-;17166:139;;16893:419;;;:::o;17318:224::-;17458:34;17454:1;17446:6;17442:14;17435:58;17527:7;17522:2;17514:6;17510:15;17503:32;17318:224;:::o;17548:366::-;17690:3;17711:67;17775:2;17770:3;17711:67;:::i;:::-;17704:74;;17787:93;17876:3;17787:93;:::i;:::-;17905:2;17900:3;17896:12;17889:19;;17548:366;;;:::o;17920:419::-;18086:4;18124:2;18113:9;18109:18;18101:26;;18173:9;18167:4;18163:20;18159:1;18148:9;18144:17;18137:47;18201:131;18327:4;18201:131;:::i;:::-;18193:139;;17920:419;;;:::o;18345:222::-;18485:34;18481:1;18473:6;18469:14;18462:58;18554:5;18549:2;18541:6;18537:15;18530:30;18345:222;:::o;18573:366::-;18715:3;18736:67;18800:2;18795:3;18736:67;:::i;:::-;18729:74;;18812:93;18901:3;18812:93;:::i;:::-;18930:2;18925:3;18921:12;18914:19;;18573:366;;;:::o;18945:419::-;19111:4;19149:2;19138:9;19134:18;19126:26;;19198:9;19192:4;19188:20;19184:1;19173:9;19169:17;19162:47;19226:131;19352:4;19226:131;:::i;:::-;19218:139;;18945:419;;;:::o;19370:228::-;19510:34;19506:1;19498:6;19494:14;19487:58;19579:11;19574:2;19566:6;19562:15;19555:36;19370:228;:::o;19604:366::-;19746:3;19767:67;19831:2;19826:3;19767:67;:::i;:::-;19760:74;;19843:93;19932:3;19843:93;:::i;:::-;19961:2;19956:3;19952:12;19945:19;;19604:366;;;:::o;19976:419::-;20142:4;20180:2;20169:9;20165:18;20157:26;;20229:9;20223:4;20219:20;20215:1;20204:9;20200:17;20193:47;20257:131;20383:4;20257:131;:::i;:::-;20249:139;;19976:419;;;:::o;20401:237::-;20541:34;20537:1;20529:6;20525:14;20518:58;20610:20;20605:2;20597:6;20593:15;20586:45;20401:237;:::o;20644:366::-;20786:3;20807:67;20871:2;20866:3;20807:67;:::i;:::-;20800:74;;20883:93;20972:3;20883:93;:::i;:::-;21001:2;20996:3;20992:12;20985:19;;20644:366;;;:::o;21016:419::-;21182:4;21220:2;21209:9;21205:18;21197:26;;21269:9;21263:4;21259:20;21255:1;21244:9;21240:17;21233:47;21297:131;21423:4;21297:131;:::i;:::-;21289:139;;21016:419;;;:::o;21441:178::-;21581:30;21577:1;21569:6;21565:14;21558:54;21441:178;:::o;21625:366::-;21767:3;21788:67;21852:2;21847:3;21788:67;:::i;:::-;21781:74;;21864:93;21953:3;21864:93;:::i;:::-;21982:2;21977:3;21973:12;21966:19;;21625:366;;;:::o;21997:419::-;22163:4;22201:2;22190:9;22186:18;22178:26;;22250:9;22244:4;22240:20;22236:1;22225:9;22221:17;22214:47;22278:131;22404:4;22278:131;:::i;:::-;22270:139;;21997:419;;;:::o;22422:222::-;22562:34;22558:1;22550:6;22546:14;22539:58;22631:5;22626:2;22618:6;22614:15;22607:30;22422:222;:::o;22650:366::-;22792:3;22813:67;22877:2;22872:3;22813:67;:::i;:::-;22806:74;;22889:93;22978:3;22889:93;:::i;:::-;23007:2;23002:3;22998:12;22991:19;;22650:366;;;:::o;23022:419::-;23188:4;23226:2;23215:9;23211:18;23203:26;;23275:9;23269:4;23265:20;23261:1;23250:9;23246:17;23239:47;23303:131;23429:4;23303:131;:::i;:::-;23295:139;;23022:419;;;:::o;23447:180::-;23495:77;23492:1;23485:88;23592:4;23589:1;23582:15;23616:4;23613:1;23606:15;23633:191;23673:3;23692:20;23710:1;23692:20;:::i;:::-;23687:25;;23726:20;23744:1;23726:20;:::i;:::-;23721:25;;23769:1;23766;23762:9;23755:16;;23790:3;23787:1;23784:10;23781:36;;;23797:18;;:::i;:::-;23781:36;23633:191;;;;:::o;23830:222::-;23970:34;23966:1;23958:6;23954:14;23947:58;24039:5;24034:2;24026:6;24022:15;24015:30;23830:222;:::o;24058:366::-;24200:3;24221:67;24285:2;24280:3;24221:67;:::i;:::-;24214:74;;24297:93;24386:3;24297:93;:::i;:::-;24415:2;24410:3;24406:12;24399:19;;24058:366;;;:::o;24430:419::-;24596:4;24634:2;24623:9;24619:18;24611:26;;24683:9;24677:4;24673:20;24669:1;24658:9;24654:17;24647:47;24711:131;24837:4;24711:131;:::i;:::-;24703:139;;24430:419;;;:::o;24855:194::-;24895:4;24915:20;24933:1;24915:20;:::i;:::-;24910:25;;24949:20;24967:1;24949:20;:::i;:::-;24944:25;;24993:1;24990;24986:9;24978:17;;25017:1;25011:4;25008:11;25005:37;;;25022:18;;:::i;:::-;25005:37;24855:194;;;;:::o;25055:229::-;25195:34;25191:1;25183:6;25179:14;25172:58;25264:12;25259:2;25251:6;25247:15;25240:37;25055:229;:::o;25290:366::-;25432:3;25453:67;25517:2;25512:3;25453:67;:::i;:::-;25446:74;;25529:93;25618:3;25529:93;:::i;:::-;25647:2;25642:3;25638:12;25631:19;;25290:366;;;:::o;25662:419::-;25828:4;25866:2;25855:9;25851:18;25843:26;;25915:9;25909:4;25905:20;25901:1;25890:9;25886:17;25879:47;25943:131;26069:4;25943:131;:::i;:::-;25935:139;;25662:419;;;:::o;26087:143::-;26144:5;26175:6;26169:13;26160:22;;26191:33;26218:5;26191:33;:::i;:::-;26087:143;;;;:::o;26236:351::-;26306:6;26355:2;26343:9;26334:7;26330:23;26326:32;26323:119;;;26361:79;;:::i;:::-;26323:119;26481:1;26506:64;26562:7;26553:6;26542:9;26538:22;26506:64;:::i;:::-;26496:74;;26452:128;26236:351;;;;:::o;26593:85::-;26638:7;26667:5;26656:16;;26593:85;;;:::o;26684:158::-;26742:9;26775:61;26793:42;26802:32;26828:5;26802:32;:::i;:::-;26793:42;:::i;:::-;26775:61;:::i;:::-;26762:74;;26684:158;;;:::o;26848:147::-;26943:45;26982:5;26943:45;:::i;:::-;26938:3;26931:58;26848:147;;:::o;27001:114::-;27068:6;27102:5;27096:12;27086:22;;27001:114;;;:::o;27121:184::-;27220:11;27254:6;27249:3;27242:19;27294:4;27289:3;27285:14;27270:29;;27121:184;;;;:::o;27311:132::-;27378:4;27401:3;27393:11;;27431:4;27426:3;27422:14;27414:22;;27311:132;;;:::o;27449:108::-;27526:24;27544:5;27526:24;:::i;:::-;27521:3;27514:37;27449:108;;:::o;27563:179::-;27632:10;27653:46;27695:3;27687:6;27653:46;:::i;:::-;27731:4;27726:3;27722:14;27708:28;;27563:179;;;;:::o;27748:113::-;27818:4;27850;27845:3;27841:14;27833:22;;27748:113;;;:::o;27897:732::-;28016:3;28045:54;28093:5;28045:54;:::i;:::-;28115:86;28194:6;28189:3;28115:86;:::i;:::-;28108:93;;28225:56;28275:5;28225:56;:::i;:::-;28304:7;28335:1;28320:284;28345:6;28342:1;28339:13;28320:284;;;28421:6;28415:13;28448:63;28507:3;28492:13;28448:63;:::i;:::-;28441:70;;28534:60;28587:6;28534:60;:::i;:::-;28524:70;;28380:224;28367:1;28364;28360:9;28355:14;;28320:284;;;28324:14;28620:3;28613:10;;28021:608;;;27897:732;;;;:::o;28635:831::-;28898:4;28936:3;28925:9;28921:19;28913:27;;28950:71;29018:1;29007:9;29003:17;28994:6;28950:71;:::i;:::-;29031:80;29107:2;29096:9;29092:18;29083:6;29031:80;:::i;:::-;29158:9;29152:4;29148:20;29143:2;29132:9;29128:18;29121:48;29186:108;29289:4;29280:6;29186:108;:::i;:::-;29178:116;;29304:72;29372:2;29361:9;29357:18;29348:6;29304:72;:::i;:::-;29386:73;29454:3;29443:9;29439:19;29430:6;29386:73;:::i;:::-;28635:831;;;;;;;;:::o;29472:180::-;29520:77;29517:1;29510:88;29617:4;29614:1;29607:15;29641:4;29638:1;29631:15;29658:185;29698:1;29715:20;29733:1;29715:20;:::i;:::-;29710:25;;29749:20;29767:1;29749:20;:::i;:::-;29744:25;;29788:1;29778:35;;29793:18;;:::i;:::-;29778:35;29835:1;29832;29828:9;29823:14;;29658:185;;;;:::o;29849:177::-;29989:29;29985:1;29977:6;29973:14;29966:53;29849:177;:::o;30032:366::-;30174:3;30195:67;30259:2;30254:3;30195:67;:::i;:::-;30188:74;;30271:93;30360:3;30271:93;:::i;:::-;30389:2;30384:3;30380:12;30373:19;;30032:366;;;:::o;30404:419::-;30570:4;30608:2;30597:9;30593:18;30585:26;;30657:9;30651:4;30647:20;30643:1;30632:9;30628:17;30621:47;30685:131;30811:4;30685:131;:::i;:::-;30677:139;;30404:419;;;:::o;30829:410::-;30869:7;30892:20;30910:1;30892:20;:::i;:::-;30887:25;;30926:20;30944:1;30926:20;:::i;:::-;30921:25;;30981:1;30978;30974:9;31003:30;31021:11;31003:30;:::i;:::-;30992:41;;31182:1;31173:7;31169:15;31166:1;31163:22;31143:1;31136:9;31116:83;31093:139;;31212:18;;:::i;:::-;31093:139;30877:362;30829:410;;;;:::o;31245:220::-;31385:34;31381:1;31373:6;31369:14;31362:58;31454:3;31449:2;31441:6;31437:15;31430:28;31245:220;:::o;31471:366::-;31613:3;31634:67;31698:2;31693:3;31634:67;:::i;:::-;31627:74;;31710:93;31799:3;31710:93;:::i;:::-;31828:2;31823:3;31819:12;31812:19;;31471:366;;;:::o;31843:419::-;32009:4;32047:2;32036:9;32032:18;32024:26;;32096:9;32090:4;32086:20;32082:1;32071:9;32067:17;32060:47;32124:131;32250:4;32124:131;:::i;:::-;32116:139;;31843:419;;;:::o

Swarm Source

ipfs://9cdd95a993c3650d52e16416619b692d1beecccebe62468b3d3aef9e1f73d940
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.