ETH Price: $2,539.48 (+0.24%)
Gas: 7.78 Gwei

Token

TelePay (Pay)
 

Overview

Max Total Supply

100,000,000 Pay

Holders

94

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
9,732.051401406 Pay

Value
$0.00
0xA9843A3f33214cbe9D6E2bAeCE3576267681073E
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:
TelePay

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-10
*/

/* 
TelePay revolutionizes the way cryptocurrency transactions occur within the Telegram ecosystem. Imagine a seamless experience where you can send ETH, BNB, and various other assets to anyone on Telegram instantly, without the need for their wallet address or leaving the Telegram Ecosystem of Degens. 
With TelePay, the future of secure,  instantaneous transactions within Telegram Ecosystem has surely arrived.

Telegram : https://t.me/TelepayERC

X : https://x.com/TelePayERC

Website : https://telepay.live

**/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.9;

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 TelePay is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "TelePay";
    string private constant _symbol = "Pay";
    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 = 100000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _MFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 20;
    uint256 private _MFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 20;

    //Original Fee
    uint256 private _MFee = _MFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousMFee = _MFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
    address payable private _developmentAddress = payable(0x7AAa5A2Db04C9c962Ce3c2b0d441ca3B75b5419F);
    address payable private _marketingAddress = payable(0x7AAa5A2Db04C9c962Ce3c2b0d441ca3B75b5419F);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = true;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = _tTotal;
    uint256 public _maxWalletSize = _tTotal * 2 / 100;
    uint256 public _swapTokensAtAmount = _tTotal / 1000;

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

        _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 (_MFee == 0 && _taxFee == 0) return;

        _previousMFee = _MFee;
        _previoustaxFee = _taxFee;

        _MFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _MFee = _previousMFee;
        _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: This account 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*8)
            {
                contractTokenBalance = _swapTokensAtAmount*8;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 80000000000000000) {
                    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)) {
                _MFee = _MFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _MFee = _MFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _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 manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = 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, _MFee, _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 MFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(MFee).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 setFee(uint256 MFeeOnBuy, uint256 MFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _MFeeOnBuy = MFeeOnBuy;
        _MFeeOnSell = MFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
        uint256 totalFee = _MFeeOnBuy+_MFeeOnSell+_taxFeeOnBuy+_taxFeeOnSell;
        require (totalFee <= 25,"Total Fees cannot be more than 25%");
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = _tTotal*maxTxAmount/100;
        require (_maxTxAmount>= _tTotal/100);
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = _tTotal*maxWalletSize/100;
        require (_maxWalletSize>= _tTotal/100);
    }

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

     function updateMarketingAddress(address _newmarketingAddress) public onlyOwner {
        _marketingAddress = payable(_newmarketingAddress);
    }


}

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":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"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":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"MFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"MFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","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":"notbot","type":"address"}],"name":"unblockBot","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"},{"inputs":[{"internalType":"address","name":"_newmarketingAddress","type":"address"}],"name":"updateMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405267016345785d8a00005f196200001b91906200072c565b5f1962000029919062000790565b6006555f60085560146009555f600a556014600b55600a54600c55600b54600d55600c54600e55600d54600f55737aaa5a2db04c9c962ce3c2b0d441ca3b75b5419f60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737aaa5a2db04c9c962ce3c2b0d441ca3b75b5419f60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff0219169083151502179055505f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555067016345785d8a00006016556064600267016345785d8a0000620001729190620007ca565b6200017e919062000814565b6017556103e867016345785d8a000062000199919062000814565b601855348015620001a8575f80fd5b505f620001ba620006c860201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f6200026c620006c860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200034b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003719190620008b0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003d7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003fd9190620008b0565b6040518363ffffffff1660e01b81526004016200041c929190620008f1565b6020604051808303815f875af115801562000439573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200045f9190620008b0565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f620004b3620006cf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000653620006c860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a0000604051620006b991906200092d565b60405180910390a35062000948565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200073882620006f6565b91506200074583620006f6565b925082620007585762000757620006ff565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200079c82620006f6565b9150620007a983620006f6565b9250828203905081811115620007c457620007c362000763565b5b92915050565b5f620007d682620006f6565b9150620007e383620006f6565b9250828202620007f381620006f6565b915082820484148315176200080d576200080c62000763565b5b5092915050565b5f6200082082620006f6565b91506200082d83620006f6565b92508262000840576200083f620006ff565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200087a826200084f565b9050919050565b6200088c816200086e565b811462000897575f80fd5b50565b5f81519050620008aa8162000881565b92915050565b5f60208284031215620008c857620008c76200084b565b5b5f620008d7848285016200089a565b91505092915050565b620008eb816200086e565b82525050565b5f604082019050620009065f830185620008e0565b620009156020830184620008e0565b9392505050565b6200092781620006f6565b82525050565b5f602082019050620009425f8301846200091c565b92915050565b613cd180620009565f395ff3fe6080604052600436106101cf575f3560e01c806374010ece116100f6578063a2a957bb11610094578063c492f04611610063578063c492f04614610640578063dd62ed3e14610668578063ea1644d5146106a4578063f2fde38b146106cc576101d6565b8063a2a957bb1461058a578063a9059cbb146105b2578063bfd79284146105ee578063c3c8cd801461062a576101d6565b80638da5cb5b116100d05780638da5cb5b146104e45780638f9a55c01461050e57806395d89b411461053857806398a5c31514610562576101d6565b806374010ece146104565780637d1db4a51461047e5780637f2feddc146104a8576101d6565b80632fd689e31161016e5780636d8aa8f81161013d5780636d8aa8f8146103c65780636fc3eaec146103ee57806370a0823114610404578063715018a614610440576101d6565b80632fd689e314610320578063313ce5671461034a57806349bd5a5e146103745780636b9990531461039e576101d6565b80631694505e116101aa5780631694505e1461026857806318160ddd146102925780632369bf83146102bc57806323b872dd146102e4576101d6565b8062b8cf2a146101da57806306fdde0314610202578063095ea7b31461022c576101d6565b366101d657005b5f80fd5b3480156101e5575f80fd5b5061020060048036038101906101fb9190612cde565b6106f4565b005b34801561020d575f80fd5b50610216610813565b6040516102239190612d9f565b60405180910390f35b348015610237575f80fd5b50610252600480360381019061024d9190612df2565b610850565b60405161025f9190612e4a565b60405180910390f35b348015610273575f80fd5b5061027c61086d565b6040516102899190612ebe565b60405180910390f35b34801561029d575f80fd5b506102a6610892565b6040516102b39190612ee6565b60405180910390f35b3480156102c7575f80fd5b506102e260048036038101906102dd9190612eff565b6108a1565b005b3480156102ef575f80fd5b5061030a60048036038101906103059190612f2a565b610978565b6040516103179190612e4a565b60405180910390f35b34801561032b575f80fd5b50610334610a4c565b6040516103419190612ee6565b60405180910390f35b348015610355575f80fd5b5061035e610a52565b60405161036b9190612f95565b60405180910390f35b34801561037f575f80fd5b50610388610a5a565b6040516103959190612fbd565b60405180910390f35b3480156103a9575f80fd5b506103c460048036038101906103bf9190612eff565b610a7f565b005b3480156103d1575f80fd5b506103ec60048036038101906103e79190613000565b610b6a565b005b3480156103f9575f80fd5b50610402610c1b565b005b34801561040f575f80fd5b5061042a60048036038101906104259190612eff565b610c2b565b6040516104379190612ee6565b60405180910390f35b34801561044b575f80fd5b50610454610c79565b005b348015610461575f80fd5b5061047c6004803603810190610477919061302b565b610dc7565b005b348015610489575f80fd5b50610492610ea6565b60405161049f9190612ee6565b60405180910390f35b3480156104b3575f80fd5b506104ce60048036038101906104c99190612eff565b610eac565b6040516104db9190612ee6565b60405180910390f35b3480156104ef575f80fd5b506104f8610ec1565b6040516105059190612fbd565b60405180910390f35b348015610519575f80fd5b50610522610ee8565b60405161052f9190612ee6565b60405180910390f35b348015610543575f80fd5b5061054c610eee565b6040516105599190612d9f565b60405180910390f35b34801561056d575f80fd5b506105886004803603810190610583919061302b565b610f2b565b005b348015610595575f80fd5b506105b060048036038101906105ab9190613056565b610fc9565b005b3480156105bd575f80fd5b506105d860048036038101906105d39190612df2565b6110f1565b6040516105e59190612e4a565b60405180910390f35b3480156105f9575f80fd5b50610614600480360381019061060f9190612eff565b61110e565b6040516106219190612e4a565b60405180910390f35b348015610635575f80fd5b5061063e61112b565b005b34801561064b575f80fd5b5061066660048036038101906106619190613113565b611200565b005b348015610673575f80fd5b5061068e60048036038101906106899190613170565b61132f565b60405161069b9190612ee6565b60405180910390f35b3480156106af575f80fd5b506106ca60048036038101906106c5919061302b565b6113b1565b005b3480156106d7575f80fd5b506106f260048036038101906106ed9190612eff565b611490565b005b6106fc61164d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077f906131f8565b60405180910390fd5b5f5b815181101561080f57600160105f8484815181106107ab576107aa613216565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061078a565b5050565b60606040518060400160405280600781526020017f54656c6550617900000000000000000000000000000000000000000000000000815250905090565b5f61086361085c61164d565b8484611654565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f67016345785d8a0000905090565b6108a961164d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092c906131f8565b60405180910390fd5b8060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610984848484611817565b610a418461099061164d565b610a3c85604051806060016040528060288152602001613c746028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6109f361164d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120979092919063ffffffff16565b611654565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a8761164d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0a906131f8565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610b7261164d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf5906131f8565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b5f479050610c28816120f9565b50565b5f610c7260025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612161565b9050919050565b610c8161164d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d04906131f8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610dcf61164d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e52906131f8565b60405180910390fd5b60648167016345785d8a0000610e719190613270565b610e7b91906132de565b601681905550606467016345785d8a0000610e9691906132de565b6016541015610ea3575f80fd5b50565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600381526020017f5061790000000000000000000000000000000000000000000000000000000000815250905090565b610f3361164d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb6906131f8565b60405180910390fd5b8060188190555050565b610fd161164d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461105d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611054906131f8565b60405180910390fd5b8360088190555082600a819055508160098190555080600b819055505f600b54600954600a54600854611090919061330e565b61109a919061330e565b6110a4919061330e565b905060198111156110ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e1906133b1565b60405180910390fd5b5050505050565b5f6111046110fd61164d565b8484611817565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661116b61164d565b73ffffffffffffffffffffffffffffffffffffffff1614806111e0575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111c861164d565b73ffffffffffffffffffffffffffffffffffffffff16145b6111e8575f80fd5b5f6111f230610c2b565b90506111fd816121cd565b50565b61120861164d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128b906131f8565b60405180910390fd5b5f5b83839050811015611329578160055f8686858181106112b8576112b7613216565b5b90506020020160208101906112cd9190612eff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611296565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6113b961164d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143c906131f8565b60405180910390fd5b60648167016345785d8a000061145b9190613270565b61146591906132de565b601781905550606467016345785d8a000061148091906132de565b601754101561148d575f80fd5b50565b61149861164d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151b906131f8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611592576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115899061343f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b9906134cd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611730576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117279061355b565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161180a9190612ee6565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187c906135e9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ea90613677565b60405180910390fd5b5f8111611935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192c90613705565b60405180910390fd5b61193d610ec1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119ab575061197b610ec1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611da457601560149054906101000a900460ff16611a3a576119cc610ec1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3090613793565b60405180910390fd5b5b601654811115611a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a76906137fb565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611b1d575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5390613889565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c085760175481611bbd84610c2b565b611bc7919061330e565b10611c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfe90613917565b60405180910390fd5b5b5f611c1230610c2b565b90505f60185482101590506008601854611c2c9190613270565b8210611c44576008601854611c419190613270565b91505b808015611c5c575060158054906101000a900460ff16155b8015611cb5575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611ccd5750601560169054906101000a900460ff165b8015611d20575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d73575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611da157611d81826121cd565b5f47905067011c37937e080000811115611d9f57611d9e476120f9565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611e44575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611ef5575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611ef4575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611f02575f9050612085565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611fab575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fc357600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561206c575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561208457600a54600c81905550600b54600d819055505b5b61209184848484612436565b50505050565b5f8383111582906120de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d59190612d9f565b60405180910390fd5b505f83856120ec9190613935565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561215d573d5f803e3d5ffd5b5050565b5f6006548211156121a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219e906139d8565b60405180910390fd5b5f6121b0612463565b90506121c5818461248c90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561220357612202612b48565b5b6040519080825280602002602001820160405280156122315781602001602082028036833780820191505090505b50905030815f8151811061224857612247613216565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122ec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123109190613a0a565b8160018151811061232457612323613216565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061238a3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611654565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016123ec959493929190613b25565b5f604051808303815f87803b158015612403575f80fd5b505af1158015612415573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b80612444576124436124d5565b5b61244f84848461250e565b8061245d5761245c6126ce565b5b50505050565b5f805f61246e6126e2565b91509150612485818361248c90919063ffffffff16565b9250505090565b5f6124cd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061273e565b905092915050565b5f600c541480156124e757505f600d54145b61250c57600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061251d8761279f565b9550955095509550955095506125798660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127ff90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061260a8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461284890919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612654816128a5565b61265e848361295c565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126bb9190612ee6565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f67016345785d8a0000905061271367016345785d8a000060065461248c90919063ffffffff16565b8210156127315760065467016345785d8a000093509350505061273a565b81819350935050505b9091565b5f8083118290612784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277b9190612d9f565b60405180910390fd5b505f838561279291906132de565b9050809150509392505050565b5f805f805f805f805f6127b78a600c54600d54612996565b9250925092505f6127c6612463565b90505f805f6127d78e878787612a28565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61284083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612097565b905092915050565b5f808284612856919061330e565b90508381101561289b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289290613bc7565b60405180910390fd5b8091505092915050565b5f6128ae612463565b90505f6128c48284612aac90919063ffffffff16565b90506129168160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461284890919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612971826006546127ff90919063ffffffff16565b60068190555061298c8160075461284890919063ffffffff16565b6007819055505050565b5f805f806129c060646129b2888a612aac90919063ffffffff16565b61248c90919063ffffffff16565b90505f6129e960646129db888b612aac90919063ffffffff16565b61248c90919063ffffffff16565b90505f612a1182612a03858c6127ff90919063ffffffff16565b6127ff90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612a3f8589612aac90919063ffffffff16565b90505f612a558689612aac90919063ffffffff16565b90505f612a6b8789612aac90919063ffffffff16565b90505f612a9382612a8585876127ff90919063ffffffff16565b6127ff90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612abc575f9050612b1d565b5f8284612ac99190613270565b9050828482612ad891906132de565b14612b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0f90613c55565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612b7e82612b38565b810181811067ffffffffffffffff82111715612b9d57612b9c612b48565b5b80604052505050565b5f612baf612b23565b9050612bbb8282612b75565b919050565b5f67ffffffffffffffff821115612bda57612bd9612b48565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612c1882612bef565b9050919050565b612c2881612c0e565b8114612c32575f80fd5b50565b5f81359050612c4381612c1f565b92915050565b5f612c5b612c5684612bc0565b612ba6565b90508083825260208201905060208402830185811115612c7e57612c7d612beb565b5b835b81811015612ca75780612c938882612c35565b845260208401935050602081019050612c80565b5050509392505050565b5f82601f830112612cc557612cc4612b34565b5b8135612cd5848260208601612c49565b91505092915050565b5f60208284031215612cf357612cf2612b2c565b5b5f82013567ffffffffffffffff811115612d1057612d0f612b30565b5b612d1c84828501612cb1565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612d5c578082015181840152602081019050612d41565b5f8484015250505050565b5f612d7182612d25565b612d7b8185612d2f565b9350612d8b818560208601612d3f565b612d9481612b38565b840191505092915050565b5f6020820190508181035f830152612db78184612d67565b905092915050565b5f819050919050565b612dd181612dbf565b8114612ddb575f80fd5b50565b5f81359050612dec81612dc8565b92915050565b5f8060408385031215612e0857612e07612b2c565b5b5f612e1585828601612c35565b9250506020612e2685828601612dde565b9150509250929050565b5f8115159050919050565b612e4481612e30565b82525050565b5f602082019050612e5d5f830184612e3b565b92915050565b5f819050919050565b5f612e86612e81612e7c84612bef565b612e63565b612bef565b9050919050565b5f612e9782612e6c565b9050919050565b5f612ea882612e8d565b9050919050565b612eb881612e9e565b82525050565b5f602082019050612ed15f830184612eaf565b92915050565b612ee081612dbf565b82525050565b5f602082019050612ef95f830184612ed7565b92915050565b5f60208284031215612f1457612f13612b2c565b5b5f612f2184828501612c35565b91505092915050565b5f805f60608486031215612f4157612f40612b2c565b5b5f612f4e86828701612c35565b9350506020612f5f86828701612c35565b9250506040612f7086828701612dde565b9150509250925092565b5f60ff82169050919050565b612f8f81612f7a565b82525050565b5f602082019050612fa85f830184612f86565b92915050565b612fb781612c0e565b82525050565b5f602082019050612fd05f830184612fae565b92915050565b612fdf81612e30565b8114612fe9575f80fd5b50565b5f81359050612ffa81612fd6565b92915050565b5f6020828403121561301557613014612b2c565b5b5f61302284828501612fec565b91505092915050565b5f602082840312156130405761303f612b2c565b5b5f61304d84828501612dde565b91505092915050565b5f805f806080858703121561306e5761306d612b2c565b5b5f61307b87828801612dde565b945050602061308c87828801612dde565b935050604061309d87828801612dde565b92505060606130ae87828801612dde565b91505092959194509250565b5f80fd5b5f8083601f8401126130d3576130d2612b34565b5b8235905067ffffffffffffffff8111156130f0576130ef6130ba565b5b60208301915083602082028301111561310c5761310b612beb565b5b9250929050565b5f805f6040848603121561312a57613129612b2c565b5b5f84013567ffffffffffffffff81111561314757613146612b30565b5b613153868287016130be565b9350935050602061316686828701612fec565b9150509250925092565b5f806040838503121561318657613185612b2c565b5b5f61319385828601612c35565b92505060206131a485828601612c35565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6131e2602083612d2f565b91506131ed826131ae565b602082019050919050565b5f6020820190508181035f83015261320f816131d6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61327a82612dbf565b915061328583612dbf565b925082820261329381612dbf565b915082820484148315176132aa576132a9613243565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6132e882612dbf565b91506132f383612dbf565b925082613303576133026132b1565b5b828204905092915050565b5f61331882612dbf565b915061332383612dbf565b925082820190508082111561333b5761333a613243565b5b92915050565b7f546f74616c20466565732063616e6e6f74206265206d6f7265207468616e20325f8201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b5f61339b602283612d2f565b91506133a682613341565b604082019050919050565b5f6020820190508181035f8301526133c88161338f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613429602683612d2f565b9150613434826133cf565b604082019050919050565b5f6020820190508181035f8301526134568161341d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6134b7602483612d2f565b91506134c28261345d565b604082019050919050565b5f6020820190508181035f8301526134e4816134ab565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613545602283612d2f565b9150613550826134eb565b604082019050919050565b5f6020820190508181035f83015261357281613539565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6135d3602583612d2f565b91506135de82613579565b604082019050919050565b5f6020820190508181035f830152613600816135c7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613661602383612d2f565b915061366c82613607565b604082019050919050565b5f6020820190508181035f83015261368e81613655565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6136ef602983612d2f565b91506136fa82613695565b604082019050919050565b5f6020820190508181035f83015261371c816136e3565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f61377d603f83612d2f565b915061378882613723565b604082019050919050565b5f6020820190508181035f8301526137aa81613771565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f6137e5601c83612d2f565b91506137f0826137b1565b602082019050919050565b5f6020820190508181035f830152613812816137d9565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f613873602383612d2f565b915061387e82613819565b604082019050919050565b5f6020820190508181035f8301526138a081613867565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f613901602383612d2f565b915061390c826138a7565b604082019050919050565b5f6020820190508181035f83015261392e816138f5565b9050919050565b5f61393f82612dbf565b915061394a83612dbf565b925082820390508181111561396257613961613243565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f6139c2602a83612d2f565b91506139cd82613968565b604082019050919050565b5f6020820190508181035f8301526139ef816139b6565b9050919050565b5f81519050613a0481612c1f565b92915050565b5f60208284031215613a1f57613a1e612b2c565b5b5f613a2c848285016139f6565b91505092915050565b5f819050919050565b5f613a58613a53613a4e84613a35565b612e63565b612dbf565b9050919050565b613a6881613a3e565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613aa081612c0e565b82525050565b5f613ab18383613a97565b60208301905092915050565b5f602082019050919050565b5f613ad382613a6e565b613add8185613a78565b9350613ae883613a88565b805f5b83811015613b18578151613aff8882613aa6565b9750613b0a83613abd565b925050600181019050613aeb565b5085935050505092915050565b5f60a082019050613b385f830188612ed7565b613b456020830187613a5f565b8181036040830152613b578186613ac9565b9050613b666060830185612fae565b613b736080830184612ed7565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613bb1601b83612d2f565b9150613bbc82613b7d565b602082019050919050565b5f6020820190508181035f830152613bde81613ba5565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613c3f602183612d2f565b9150613c4a82613be5565b604082019050919050565b5f6020820190508181035f830152613c6c81613c33565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e27a0e2157522e7613d3a3023ad7de1f4e2622e10d48782faa748f429f89b2c864736f6c63430008160033

Deployed Bytecode

0x6080604052600436106101cf575f3560e01c806374010ece116100f6578063a2a957bb11610094578063c492f04611610063578063c492f04614610640578063dd62ed3e14610668578063ea1644d5146106a4578063f2fde38b146106cc576101d6565b8063a2a957bb1461058a578063a9059cbb146105b2578063bfd79284146105ee578063c3c8cd801461062a576101d6565b80638da5cb5b116100d05780638da5cb5b146104e45780638f9a55c01461050e57806395d89b411461053857806398a5c31514610562576101d6565b806374010ece146104565780637d1db4a51461047e5780637f2feddc146104a8576101d6565b80632fd689e31161016e5780636d8aa8f81161013d5780636d8aa8f8146103c65780636fc3eaec146103ee57806370a0823114610404578063715018a614610440576101d6565b80632fd689e314610320578063313ce5671461034a57806349bd5a5e146103745780636b9990531461039e576101d6565b80631694505e116101aa5780631694505e1461026857806318160ddd146102925780632369bf83146102bc57806323b872dd146102e4576101d6565b8062b8cf2a146101da57806306fdde0314610202578063095ea7b31461022c576101d6565b366101d657005b5f80fd5b3480156101e5575f80fd5b5061020060048036038101906101fb9190612cde565b6106f4565b005b34801561020d575f80fd5b50610216610813565b6040516102239190612d9f565b60405180910390f35b348015610237575f80fd5b50610252600480360381019061024d9190612df2565b610850565b60405161025f9190612e4a565b60405180910390f35b348015610273575f80fd5b5061027c61086d565b6040516102899190612ebe565b60405180910390f35b34801561029d575f80fd5b506102a6610892565b6040516102b39190612ee6565b60405180910390f35b3480156102c7575f80fd5b506102e260048036038101906102dd9190612eff565b6108a1565b005b3480156102ef575f80fd5b5061030a60048036038101906103059190612f2a565b610978565b6040516103179190612e4a565b60405180910390f35b34801561032b575f80fd5b50610334610a4c565b6040516103419190612ee6565b60405180910390f35b348015610355575f80fd5b5061035e610a52565b60405161036b9190612f95565b60405180910390f35b34801561037f575f80fd5b50610388610a5a565b6040516103959190612fbd565b60405180910390f35b3480156103a9575f80fd5b506103c460048036038101906103bf9190612eff565b610a7f565b005b3480156103d1575f80fd5b506103ec60048036038101906103e79190613000565b610b6a565b005b3480156103f9575f80fd5b50610402610c1b565b005b34801561040f575f80fd5b5061042a60048036038101906104259190612eff565b610c2b565b6040516104379190612ee6565b60405180910390f35b34801561044b575f80fd5b50610454610c79565b005b348015610461575f80fd5b5061047c6004803603810190610477919061302b565b610dc7565b005b348015610489575f80fd5b50610492610ea6565b60405161049f9190612ee6565b60405180910390f35b3480156104b3575f80fd5b506104ce60048036038101906104c99190612eff565b610eac565b6040516104db9190612ee6565b60405180910390f35b3480156104ef575f80fd5b506104f8610ec1565b6040516105059190612fbd565b60405180910390f35b348015610519575f80fd5b50610522610ee8565b60405161052f9190612ee6565b60405180910390f35b348015610543575f80fd5b5061054c610eee565b6040516105599190612d9f565b60405180910390f35b34801561056d575f80fd5b506105886004803603810190610583919061302b565b610f2b565b005b348015610595575f80fd5b506105b060048036038101906105ab9190613056565b610fc9565b005b3480156105bd575f80fd5b506105d860048036038101906105d39190612df2565b6110f1565b6040516105e59190612e4a565b60405180910390f35b3480156105f9575f80fd5b50610614600480360381019061060f9190612eff565b61110e565b6040516106219190612e4a565b60405180910390f35b348015610635575f80fd5b5061063e61112b565b005b34801561064b575f80fd5b5061066660048036038101906106619190613113565b611200565b005b348015610673575f80fd5b5061068e60048036038101906106899190613170565b61132f565b60405161069b9190612ee6565b60405180910390f35b3480156106af575f80fd5b506106ca60048036038101906106c5919061302b565b6113b1565b005b3480156106d7575f80fd5b506106f260048036038101906106ed9190612eff565b611490565b005b6106fc61164d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077f906131f8565b60405180910390fd5b5f5b815181101561080f57600160105f8484815181106107ab576107aa613216565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061078a565b5050565b60606040518060400160405280600781526020017f54656c6550617900000000000000000000000000000000000000000000000000815250905090565b5f61086361085c61164d565b8484611654565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f67016345785d8a0000905090565b6108a961164d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092c906131f8565b60405180910390fd5b8060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610984848484611817565b610a418461099061164d565b610a3c85604051806060016040528060288152602001613c746028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6109f361164d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120979092919063ffffffff16565b611654565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a8761164d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0a906131f8565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610b7261164d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf5906131f8565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b5f479050610c28816120f9565b50565b5f610c7260025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612161565b9050919050565b610c8161164d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d04906131f8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610dcf61164d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e52906131f8565b60405180910390fd5b60648167016345785d8a0000610e719190613270565b610e7b91906132de565b601681905550606467016345785d8a0000610e9691906132de565b6016541015610ea3575f80fd5b50565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600381526020017f5061790000000000000000000000000000000000000000000000000000000000815250905090565b610f3361164d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb6906131f8565b60405180910390fd5b8060188190555050565b610fd161164d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461105d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611054906131f8565b60405180910390fd5b8360088190555082600a819055508160098190555080600b819055505f600b54600954600a54600854611090919061330e565b61109a919061330e565b6110a4919061330e565b905060198111156110ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e1906133b1565b60405180910390fd5b5050505050565b5f6111046110fd61164d565b8484611817565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661116b61164d565b73ffffffffffffffffffffffffffffffffffffffff1614806111e0575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111c861164d565b73ffffffffffffffffffffffffffffffffffffffff16145b6111e8575f80fd5b5f6111f230610c2b565b90506111fd816121cd565b50565b61120861164d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128b906131f8565b60405180910390fd5b5f5b83839050811015611329578160055f8686858181106112b8576112b7613216565b5b90506020020160208101906112cd9190612eff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611296565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6113b961164d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143c906131f8565b60405180910390fd5b60648167016345785d8a000061145b9190613270565b61146591906132de565b601781905550606467016345785d8a000061148091906132de565b601754101561148d575f80fd5b50565b61149861164d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151b906131f8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611592576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115899061343f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b9906134cd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611730576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117279061355b565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161180a9190612ee6565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187c906135e9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ea90613677565b60405180910390fd5b5f8111611935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192c90613705565b60405180910390fd5b61193d610ec1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119ab575061197b610ec1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611da457601560149054906101000a900460ff16611a3a576119cc610ec1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3090613793565b60405180910390fd5b5b601654811115611a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a76906137fb565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611b1d575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5390613889565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c085760175481611bbd84610c2b565b611bc7919061330e565b10611c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfe90613917565b60405180910390fd5b5b5f611c1230610c2b565b90505f60185482101590506008601854611c2c9190613270565b8210611c44576008601854611c419190613270565b91505b808015611c5c575060158054906101000a900460ff16155b8015611cb5575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611ccd5750601560169054906101000a900460ff165b8015611d20575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d73575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611da157611d81826121cd565b5f47905067011c37937e080000811115611d9f57611d9e476120f9565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611e44575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611ef5575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611ef4575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611f02575f9050612085565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611fab575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fc357600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561206c575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561208457600a54600c81905550600b54600d819055505b5b61209184848484612436565b50505050565b5f8383111582906120de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d59190612d9f565b60405180910390fd5b505f83856120ec9190613935565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561215d573d5f803e3d5ffd5b5050565b5f6006548211156121a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219e906139d8565b60405180910390fd5b5f6121b0612463565b90506121c5818461248c90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561220357612202612b48565b5b6040519080825280602002602001820160405280156122315781602001602082028036833780820191505090505b50905030815f8151811061224857612247613216565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122ec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123109190613a0a565b8160018151811061232457612323613216565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061238a3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611654565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016123ec959493929190613b25565b5f604051808303815f87803b158015612403575f80fd5b505af1158015612415573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b80612444576124436124d5565b5b61244f84848461250e565b8061245d5761245c6126ce565b5b50505050565b5f805f61246e6126e2565b91509150612485818361248c90919063ffffffff16565b9250505090565b5f6124cd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061273e565b905092915050565b5f600c541480156124e757505f600d54145b61250c57600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061251d8761279f565b9550955095509550955095506125798660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127ff90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061260a8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461284890919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612654816128a5565b61265e848361295c565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126bb9190612ee6565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f67016345785d8a0000905061271367016345785d8a000060065461248c90919063ffffffff16565b8210156127315760065467016345785d8a000093509350505061273a565b81819350935050505b9091565b5f8083118290612784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277b9190612d9f565b60405180910390fd5b505f838561279291906132de565b9050809150509392505050565b5f805f805f805f805f6127b78a600c54600d54612996565b9250925092505f6127c6612463565b90505f805f6127d78e878787612a28565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61284083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612097565b905092915050565b5f808284612856919061330e565b90508381101561289b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289290613bc7565b60405180910390fd5b8091505092915050565b5f6128ae612463565b90505f6128c48284612aac90919063ffffffff16565b90506129168160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461284890919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612971826006546127ff90919063ffffffff16565b60068190555061298c8160075461284890919063ffffffff16565b6007819055505050565b5f805f806129c060646129b2888a612aac90919063ffffffff16565b61248c90919063ffffffff16565b90505f6129e960646129db888b612aac90919063ffffffff16565b61248c90919063ffffffff16565b90505f612a1182612a03858c6127ff90919063ffffffff16565b6127ff90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612a3f8589612aac90919063ffffffff16565b90505f612a558689612aac90919063ffffffff16565b90505f612a6b8789612aac90919063ffffffff16565b90505f612a9382612a8585876127ff90919063ffffffff16565b6127ff90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612abc575f9050612b1d565b5f8284612ac99190613270565b9050828482612ad891906132de565b14612b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0f90613c55565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612b7e82612b38565b810181811067ffffffffffffffff82111715612b9d57612b9c612b48565b5b80604052505050565b5f612baf612b23565b9050612bbb8282612b75565b919050565b5f67ffffffffffffffff821115612bda57612bd9612b48565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612c1882612bef565b9050919050565b612c2881612c0e565b8114612c32575f80fd5b50565b5f81359050612c4381612c1f565b92915050565b5f612c5b612c5684612bc0565b612ba6565b90508083825260208201905060208402830185811115612c7e57612c7d612beb565b5b835b81811015612ca75780612c938882612c35565b845260208401935050602081019050612c80565b5050509392505050565b5f82601f830112612cc557612cc4612b34565b5b8135612cd5848260208601612c49565b91505092915050565b5f60208284031215612cf357612cf2612b2c565b5b5f82013567ffffffffffffffff811115612d1057612d0f612b30565b5b612d1c84828501612cb1565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612d5c578082015181840152602081019050612d41565b5f8484015250505050565b5f612d7182612d25565b612d7b8185612d2f565b9350612d8b818560208601612d3f565b612d9481612b38565b840191505092915050565b5f6020820190508181035f830152612db78184612d67565b905092915050565b5f819050919050565b612dd181612dbf565b8114612ddb575f80fd5b50565b5f81359050612dec81612dc8565b92915050565b5f8060408385031215612e0857612e07612b2c565b5b5f612e1585828601612c35565b9250506020612e2685828601612dde565b9150509250929050565b5f8115159050919050565b612e4481612e30565b82525050565b5f602082019050612e5d5f830184612e3b565b92915050565b5f819050919050565b5f612e86612e81612e7c84612bef565b612e63565b612bef565b9050919050565b5f612e9782612e6c565b9050919050565b5f612ea882612e8d565b9050919050565b612eb881612e9e565b82525050565b5f602082019050612ed15f830184612eaf565b92915050565b612ee081612dbf565b82525050565b5f602082019050612ef95f830184612ed7565b92915050565b5f60208284031215612f1457612f13612b2c565b5b5f612f2184828501612c35565b91505092915050565b5f805f60608486031215612f4157612f40612b2c565b5b5f612f4e86828701612c35565b9350506020612f5f86828701612c35565b9250506040612f7086828701612dde565b9150509250925092565b5f60ff82169050919050565b612f8f81612f7a565b82525050565b5f602082019050612fa85f830184612f86565b92915050565b612fb781612c0e565b82525050565b5f602082019050612fd05f830184612fae565b92915050565b612fdf81612e30565b8114612fe9575f80fd5b50565b5f81359050612ffa81612fd6565b92915050565b5f6020828403121561301557613014612b2c565b5b5f61302284828501612fec565b91505092915050565b5f602082840312156130405761303f612b2c565b5b5f61304d84828501612dde565b91505092915050565b5f805f806080858703121561306e5761306d612b2c565b5b5f61307b87828801612dde565b945050602061308c87828801612dde565b935050604061309d87828801612dde565b92505060606130ae87828801612dde565b91505092959194509250565b5f80fd5b5f8083601f8401126130d3576130d2612b34565b5b8235905067ffffffffffffffff8111156130f0576130ef6130ba565b5b60208301915083602082028301111561310c5761310b612beb565b5b9250929050565b5f805f6040848603121561312a57613129612b2c565b5b5f84013567ffffffffffffffff81111561314757613146612b30565b5b613153868287016130be565b9350935050602061316686828701612fec565b9150509250925092565b5f806040838503121561318657613185612b2c565b5b5f61319385828601612c35565b92505060206131a485828601612c35565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6131e2602083612d2f565b91506131ed826131ae565b602082019050919050565b5f6020820190508181035f83015261320f816131d6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61327a82612dbf565b915061328583612dbf565b925082820261329381612dbf565b915082820484148315176132aa576132a9613243565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6132e882612dbf565b91506132f383612dbf565b925082613303576133026132b1565b5b828204905092915050565b5f61331882612dbf565b915061332383612dbf565b925082820190508082111561333b5761333a613243565b5b92915050565b7f546f74616c20466565732063616e6e6f74206265206d6f7265207468616e20325f8201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b5f61339b602283612d2f565b91506133a682613341565b604082019050919050565b5f6020820190508181035f8301526133c88161338f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613429602683612d2f565b9150613434826133cf565b604082019050919050565b5f6020820190508181035f8301526134568161341d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6134b7602483612d2f565b91506134c28261345d565b604082019050919050565b5f6020820190508181035f8301526134e4816134ab565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613545602283612d2f565b9150613550826134eb565b604082019050919050565b5f6020820190508181035f83015261357281613539565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6135d3602583612d2f565b91506135de82613579565b604082019050919050565b5f6020820190508181035f830152613600816135c7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613661602383612d2f565b915061366c82613607565b604082019050919050565b5f6020820190508181035f83015261368e81613655565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6136ef602983612d2f565b91506136fa82613695565b604082019050919050565b5f6020820190508181035f83015261371c816136e3565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f61377d603f83612d2f565b915061378882613723565b604082019050919050565b5f6020820190508181035f8301526137aa81613771565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f6137e5601c83612d2f565b91506137f0826137b1565b602082019050919050565b5f6020820190508181035f830152613812816137d9565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f613873602383612d2f565b915061387e82613819565b604082019050919050565b5f6020820190508181035f8301526138a081613867565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f613901602383612d2f565b915061390c826138a7565b604082019050919050565b5f6020820190508181035f83015261392e816138f5565b9050919050565b5f61393f82612dbf565b915061394a83612dbf565b925082820390508181111561396257613961613243565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f6139c2602a83612d2f565b91506139cd82613968565b604082019050919050565b5f6020820190508181035f8301526139ef816139b6565b9050919050565b5f81519050613a0481612c1f565b92915050565b5f60208284031215613a1f57613a1e612b2c565b5b5f613a2c848285016139f6565b91505092915050565b5f819050919050565b5f613a58613a53613a4e84613a35565b612e63565b612dbf565b9050919050565b613a6881613a3e565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613aa081612c0e565b82525050565b5f613ab18383613a97565b60208301905092915050565b5f602082019050919050565b5f613ad382613a6e565b613add8185613a78565b9350613ae883613a88565b805f5b83811015613b18578151613aff8882613aa6565b9750613b0a83613abd565b925050600181019050613aeb565b5085935050505092915050565b5f60a082019050613b385f830188612ed7565b613b456020830187613a5f565b8181036040830152613b578186613ac9565b9050613b666060830185612fae565b613b736080830184612ed7565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613bb1601b83612d2f565b9150613bbc82613b7d565b602082019050919050565b5f6020820190508181035f830152613bde81613ba5565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613c3f602183612d2f565b9150613c4a82613be5565b604082019050919050565b5f6020820190508181035f830152613c6c81613c33565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e27a0e2157522e7613d3a3023ad7de1f4e2622e10d48782faa748f429f89b2c864736f6c63430008160033

Deployed Bytecode Sourcemap

4599:13650:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13029:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7064:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7989:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5914:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7341:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18095:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8190:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6211:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7250:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5962:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13206:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17353:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12878:143;;;;;;;;;;;;;:::i;:::-;;7444:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2086:148;;;;;;;;;;;;;:::i;:::-;;17493:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6111:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5656:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1872:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6155:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7155:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17162:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16692:418;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7590:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5618:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12634:236;;;;;;;;;;;;;:::i;:::-;;17852:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7797:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17668:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2242:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13029:169;2009:12;:10;:12::i;:::-;1999:22;;:6;;;;;;;;;;:22;;;1991:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13105:9:::1;13100:91;13124:5;:12;13120:1;:16;13100:91;;;13175:4;13158;:14;13163:5;13169:1;13163:8;;;;;;;;:::i;:::-;;;;;;;;13158:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13138:3;;;;;;;13100:91;;;;13029:169:::0;:::o;7064:83::-;7101:13;7134:5;;;;;;;;;;;;;;;;;7127:12;;7064:83;:::o;7989:193::-;8091:4;8113:39;8122:12;:10;:12::i;:::-;8136:7;8145:6;8113:8;:39::i;:::-;8170:4;8163:11;;7989:193;;;;:::o;5914:41::-;;;;;;;;;;;;;:::o;7341:95::-;7394:7;5143:17;7414:14;;7341:95;:::o;18095:147::-;2009:12;:10;:12::i;:::-;1999:22;;:6;;;;;;;;;;:22;;;1991:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18213:20:::1;18185:17;;:49;;;;;;;;;;;;;;;;;;18095:147:::0;:::o;8190:446::-;8322:4;8339:36;8349:6;8357:9;8368:6;8339:9;:36::i;:::-;8386:220;8409:6;8430:12;:10;:12::i;:::-;8457:138;8513:6;8457:138;;;;;;;;;;;;;;;;;:11;:19;8469:6;8457:19;;;;;;;;;;;;;;;:33;8477:12;:10;:12::i;:::-;8457:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8386:8;:220::i;:::-;8624:4;8617:11;;8190:446;;;;;:::o;6211:51::-;;;;:::o;7250:83::-;7291:5;4817:1;7309:16;;7250:83;:::o;5962:28::-;;;;;;;;;;;;;:::o;13206:92::-;2009:12;:10;:12::i;:::-;1999:22;;:6;;;;;;;;;;:22;;;1991:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13285:5:::1;13270:4;:12;13275:6;13270:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13206:92:::0;:::o;17353:101::-;2009:12;:10;:12::i;:::-;1999:22;;:6;;;;;;;;;;:22;;;1991:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17434:12:::1;17420:11;;:26;;;;;;;;;;;;;;;;;;17353:101:::0;:::o;12878:143::-;12920:26;12949:21;12920:50;;12981:32;12994:18;12981:12;:32::i;:::-;12909:112;12878:143::o;7444:138::-;7510:7;7537:37;7557:7;:16;7565:7;7557:16;;;;;;;;;;;;;;;;7537:19;:37::i;:::-;7530:44;;7444:138;;;:::o;2086:148::-;2009:12;:10;:12::i;:::-;1999:22;;:6;;;;;;;;;;:22;;;1991:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2193:1:::1;2156:40;;2177:6;::::0;::::1;;;;;;;;2156:40;;;;;;;;;;;;2224:1;2207:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2086:148::o:0;17493:167::-;2009:12;:10;:12::i;:::-;1999:22;;:6;;;;;;;;;;:22;;;1991:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17602:3:::1;17590:11;5143:17;17582:19;;;;:::i;:::-;:23;;;;:::i;:::-;17567:12;:38;;;;17648:3;5143:17;17640:11;;;;:::i;:::-;17625:12;;:26;;17616:36;;;::::0;::::1;;17493:167:::0;:::o;6111:37::-;;;;:::o;5656:43::-;;;;;;;;;;;;;;;;;:::o;1872:79::-;1910:7;1937:6;;;;;;;;;;;1930:13;;1872:79;:::o;6155:49::-;;;;:::o;7155:87::-;7194:13;7227:7;;;;;;;;;;;;;;;;;7220:14;;7155:87;:::o;17162:139::-;2009:12;:10;:12::i;:::-;1999:22;;:6;;;;;;;;;;:22;;;1991:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17275:18:::1;17253:19;:40;;;;17162:139:::0;:::o;16692:418::-;2009:12;:10;:12::i;:::-;1999:22;;:6;;;;;;;;;;:22;;;1991:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16831:9:::1;16818:10;:22;;;;16865:10;16851:11;:24;;;;16901:11;16886:12;:26;;;;16939:12;16923:13;:28;;;;16962:16;17017:13;;17004:12;;16992:11;;16981:10;;:22;;;;:::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;16962:68;;17062:2;17050:8;:14;;17041:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;16807:303;16692:418:::0;;;;:::o;7590:199::-;7695:4;7717:42;7727:12;:10;:12::i;:::-;7741:9;7752:6;7717:9;:42::i;:::-;7777:4;7770:11;;7590:199;;;;:::o;5618:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12634:236::-;12700:19;;;;;;;;;;;12684:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12739:17;;;;;;;;;;;12723:33;;:12;:10;:12::i;:::-;:33;;;12684:72;12676:81;;;;;;12768:23;12794:24;12812:4;12794:9;:24::i;:::-;12768:50;;12829:33;12846:15;12829:16;:33::i;:::-;12665:205;12634:236::o;17852:234::-;2009:12;:10;:12::i;:::-;1999:22;;:6;;;;;;;;;;:22;;;1991:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17969:9:::1;17965:114;17988:8;;:15;;17984:1;:19;17965:114;;;18059:8;18025:18;:31;18044:8;;18053:1;18044:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18025:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;18005:3;;;;;;;17965:114;;;;17852:234:::0;;;:::o;7797:184::-;7914:7;7946:11;:18;7958:5;7946:18;;;;;;;;;;;;;;;:27;7965:7;7946:27;;;;;;;;;;;;;;;;7939:34;;7797:184;;;;:::o;17668:176::-;2009:12;:10;:12::i;:::-;1999:22;;:6;;;;;;;;;;:22;;;1991:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17784:3:::1;17770:13;5143:17;17762:21;;;;:::i;:::-;:25;;;;:::i;:::-;17745:14;:42;;;;17832:3;5143:17;17824:11;;;;:::i;:::-;17807:14;;:28;;17798:38;;;::::0;::::1;;17668:176:::0;:::o;2242:244::-;2009:12;:10;:12::i;:::-;1999:22;;:6;;;;;;;;;;:22;;;1991:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2351:1:::1;2331:22;;:8;:22;;::::0;2323:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2441:8;2412:38;;2433:6;::::0;::::1;;;;;;;;2412:38;;;;;;;;;;;;2470:8;2461:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2242:244:::0;:::o;631:98::-;684:7;711:10;704:17;;631:98;:::o;9303:369::-;9447:1;9430:19;;:5;:19;;;9422:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9528:1;9509:21;;:7;:21;;;9501:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9610:6;9580:11;:18;9592:5;9580:18;;;;;;;;;;;;;;;:27;9599:7;9580:27;;;;;;;;;;;;;;;:36;;;;9648:7;9632:32;;9641:5;9632:32;;;9657:6;9632:32;;;;;;:::i;:::-;;;;;;;;9303:369;;;:::o;9680:2348::-;9818:1;9802:18;;:4;:18;;;9794:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9895:1;9881:16;;:2;:16;;;9873:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9965:1;9956:6;:10;9948:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10037:7;:5;:7::i;:::-;10029:15;;:4;:15;;;;:32;;;;;10054:7;:5;:7::i;:::-;10048:13;;:2;:13;;;;10029:32;10025:1293;;;10118:11;;;;;;;;;;;10113:144;;10166:7;:5;:7::i;:::-;10158:15;;:4;:15;;;10150:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;10113:144;10291:12;;10281:6;:22;;10273:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10360:4;:10;10365:4;10360:10;;;;;;;;;;;;;;;;;;;;;;;;;10359:11;:24;;;;;10375:4;:8;10380:2;10375:8;;;;;;;;;;;;;;;;;;;;;;;;;10374:9;10359:24;10351:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10449:13;;;;;;;;;;;10443:19;;:2;:19;;;10440:146;;10516:14;;10507:6;10491:13;10501:2;10491:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10483:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10440:146;10602:28;10633:24;10651:4;10633:9;:24::i;:::-;10602:55;;10672:12;10711:19;;10687:20;:43;;10672:58;;10794:1;10774:19;;:21;;;;:::i;:::-;10750:20;:45;10747:142;;10872:1;10852:19;;:21;;;;:::i;:::-;10829:44;;10747:142;10909:7;:18;;;;;10921:6;;;;;;;;;;10920:7;10909:18;:43;;;;;10939:13;;;;;;;;;;;10931:21;;:4;:21;;;;10909:43;:58;;;;;10956:11;;;;;;;;;;;10909:58;:87;;;;;10972:18;:24;10991:4;10972:24;;;;;;;;;;;;;;;;;;;;;;;;;10971:25;10909:87;:114;;;;;11001:18;:22;11020:2;11001:22;;;;;;;;;;;;;;;;;;;;;;;;;11000:23;10909:114;10905:402;;;11044:38;11061:20;11044:16;:38::i;:::-;11101:26;11130:21;11101:50;;11195:17;11174:18;:38;11170:122;;;11237:35;11250:21;11237:12;:35::i;:::-;11170:122;11025:282;10905:402;10063:1255;;10025:1293;11330:12;11345:4;11330:19;;11394:18;:24;11413:4;11394:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11422:18;:22;11441:2;11422:22;;;;;;;;;;;;;;;;;;;;;;;;;11394:50;11393:102;;;;11458:13;;;;;;;;;;;11450:21;;:4;:21;;;;:44;;;;;11481:13;;;;;;;;;;;11475:19;;:2;:19;;;;11450:44;11393:102;11389:578;;;11522:5;11512:15;;11389:578;;;11605:13;;;;;;;;;;;11597:21;;:4;:21;;;:55;;;;;11636:15;;;;;;;;;;;11622:30;;:2;:30;;;;11597:55;11594:154;;;11681:10;;11673:5;:18;;;;11720:12;;11710:7;:22;;;;11594:154;11807:13;;;;;;;;;;;11801:19;;:2;:19;;;:55;;;;;11840:15;;;;;;;;;;;11824:32;;:4;:32;;;;11801:55;11797:157;;;11885:11;;11877:5;:19;;;;11925:13;;11915:7;:23;;;;11797:157;11389:578;11979:41;11994:4;12000:2;12004:6;12012:7;11979:14;:41::i;:::-;9783:2245;9680:2348;;;:::o;2850:224::-;2970:7;3003:1;2998;:6;;3006:12;2990:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3030:9;3046:1;3042;:5;;;;:::i;:::-;3030:17;;3065:1;3058:8;;;2850:224;;;;;:::o;12527:99::-;12584:17;;;;;;;;;;;:26;;:34;12611:6;12584:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12527:99;:::o;8644:323::-;8739:7;8797;;8786;:18;;8764:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8885:19;8907:10;:8;:10::i;:::-;8885:32;;8935:24;8947:11;8935:7;:11;;:24;;;;:::i;:::-;8928:31;;;8644:323;;;:::o;12036:483::-;6365:4;6356:6;;:13;;;;;;;;;;;;;;;;;;12114:21:::1;12152:1;12138:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12114:40;;12183:4;12165;12170:1;12165:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12209:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12199:4;12204:1;12199:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12242:62;12259:4;12274:15;;;;;;;;;;;12292:11;12242:8;:62::i;:::-;12315:15;;;;;;;;;;;:66;;;12396:11;12422:1;12438:4;12465;12485:15;12315:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12103:416;6401:5:::0;6392:6;;:14;;;;;;;;;;;;;;;;;;12036:483;:::o;13306:282::-;13462:7;13457:28;;13471:14;:12;:14::i;:::-;13457:28;13496:44;13514:6;13522:9;13533:6;13496:17;:44::i;:::-;13556:7;13551:29;;13565:15;:13;:15::i;:::-;13551:29;13306:282;;;;:::o;16255:164::-;16297:7;16318:15;16335;16354:19;:17;:19::i;:::-;16317:56;;;;16391:20;16403:7;16391;:11;;:20;;;;:::i;:::-;16384:27;;;;16255:164;:::o;3336:132::-;3394:7;3421:39;3425:1;3428;3421:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3414:46;;3336:132;;;;:::o;8975:203::-;9031:1;9022:5;;:10;:26;;;;;9047:1;9036:7;;:12;9022:26;9050:7;9018:39;9085:5;;9069:13;:21;;;;9119:7;;9101:15;:25;;;;9147:1;9139:5;:9;;;;9169:1;9159:7;:11;;;;8975:203;:::o;13596:610::-;13743:15;13773:23;13811:12;13838:23;13876:12;13903:13;13930:19;13941:7;13930:10;:19::i;:::-;13728:221;;;;;;;;;;;;13978:28;13998:7;13978;:15;13986:6;13978:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13960:7;:15;13968:6;13960:15;;;;;;;;;;;;;;;:46;;;;14038:39;14061:15;14038:7;:18;14046:9;14038:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14017:7;:18;14025:9;14017:18;;;;;;;;;;;;;;;:60;;;;14088:16;14098:5;14088:9;:16::i;:::-;14115:23;14127:4;14133;14115:11;:23::i;:::-;14171:9;14154:44;;14163:6;14154:44;;;14182:15;14154:44;;;;;;:::i;:::-;;;;;;;;13717:489;;;;;;13596:610;;;:::o;9186:109::-;9238:13;;9230:5;:21;;;;9272:15;;9262:7;:25;;;;9186:109::o;16427:257::-;16478:7;16487;16507:15;16525:7;;16507:25;;16543:15;5143:17;16543:25;;16593:20;5143:17;16593:7;;:11;;:20;;;;:::i;:::-;16583:7;:30;16579:61;;;16623:7;;5143:17;16615:25;;;;;;;;16579:61;16659:7;16668;16651:25;;;;;;16427:257;;;:::o;3476:223::-;3596:7;3628:1;3624;:5;3631:12;3616:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3655:9;3671:1;3667;:5;;;;:::i;:::-;3655:17;;3690:1;3683:8;;;3476:223;;;;;:::o;14625:611::-;14725:7;14747;14769;14791;14813;14835;14871:23;14896:12;14910:13;14940:36;14952:7;14961:5;;14968:7;;14940:11;:36::i;:::-;14870:106;;;;;;14987:19;15009:10;:8;:10::i;:::-;14987:32;;15031:15;15048:23;15073:12;15102:46;15114:7;15123:4;15129:5;15136:11;15102;:46::i;:::-;15030:118;;;;;;15167:7;15176:15;15193:4;15199:15;15216:4;15222:5;15159:69;;;;;;;;;;;;;;;;;;;14625:611;;;;;;;:::o;2706:136::-;2764:7;2791:43;2795:1;2798;2791:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2784:50;;2706:136;;;;:::o;2519:179::-;2577:7;2597:9;2613:1;2609;:5;;;;:::i;:::-;2597:17;;2638:1;2633;:6;;2625:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2689:1;2682:8;;;2519:179;;;;:::o;14214:211::-;14267:19;14289:10;:8;:10::i;:::-;14267:32;;14310:13;14326:22;14336:11;14326:5;:9;;:22;;;;:::i;:::-;14310:38;;14384:33;14411:5;14384:7;:22;14400:4;14384:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14359:7;:22;14375:4;14359:22;;;;;;;;;;;;;;;:58;;;;14256:169;;14214:211;:::o;14433:147::-;14511:17;14523:4;14511:7;;:11;;:17;;;;:::i;:::-;14501:7;:27;;;;14552:20;14567:4;14552:10;;:14;;:20;;;;:::i;:::-;14539:10;:33;;;;14433:147;;:::o;15244:461::-;15409:7;15431;15453;15488:12;15503:26;15525:3;15503:17;15515:4;15503:7;:11;;:17;;;;:::i;:::-;:21;;:26;;;;:::i;:::-;15488:41;;15540:13;15556:28;15580:3;15556:19;15568:6;15556:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15540:44;;15595:23;15621:28;15643:5;15621:17;15633:4;15621:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15595:54;;15668:15;15685:4;15691:5;15660:37;;;;;;;;;15244:461;;;;;;;:::o;15713:534::-;15907:7;15929;15951;15986:15;16004:24;16016:11;16004:7;:11;;:24;;;;:::i;:::-;15986:42;;16039:12;16054:21;16063:11;16054:4;:8;;:21;;;;:::i;:::-;16039:36;;16086:13;16102:22;16112:11;16102:5;:9;;:22;;;;:::i;:::-;16086:38;;16135:23;16161:28;16183:5;16161:17;16173:4;16161:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16135:54;;16208:7;16217:15;16234:4;16200:39;;;;;;;;;;15713:534;;;;;;;;:::o;3082:246::-;3140:7;3169:1;3164;:6;3160:47;;3194:1;3187:8;;;;3160:47;3217:9;3233:1;3229;:5;;;;:::i;:::-;3217:17;;3262:1;3257;3253;:5;;;;:::i;:::-;:10;3245:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3319:1;3312:8;;;3082:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:246::-;4152:1;4162:113;4176:6;4173:1;4170:13;4162:113;;;4261:1;4256:3;4252:11;4246:18;4242:1;4237:3;4233:11;4226:39;4198:2;4195:1;4191:10;4186:15;;4162:113;;;4309:1;4300:6;4295:3;4291:16;4284:27;4133:184;4071:246;;;:::o;4323:377::-;4411:3;4439:39;4472:5;4439:39;:::i;:::-;4494:71;4558:6;4553:3;4494:71;:::i;:::-;4487:78;;4574:65;4632:6;4627:3;4620:4;4613:5;4609:16;4574:65;:::i;:::-;4664:29;4686:6;4664:29;:::i;:::-;4659:3;4655:39;4648:46;;4415:285;4323:377;;;;:::o;4706:313::-;4819:4;4857:2;4846:9;4842:18;4834:26;;4906:9;4900:4;4896:20;4892:1;4881:9;4877:17;4870:47;4934:78;5007:4;4998:6;4934:78;:::i;:::-;4926:86;;4706:313;;;;:::o;5025:77::-;5062:7;5091:5;5080:16;;5025:77;;;:::o;5108:122::-;5181:24;5199:5;5181:24;:::i;:::-;5174:5;5171:35;5161:63;;5220:1;5217;5210:12;5161:63;5108:122;:::o;5236:139::-;5282:5;5320:6;5307:20;5298:29;;5336:33;5363:5;5336:33;:::i;:::-;5236:139;;;;:::o;5381:474::-;5449:6;5457;5506:2;5494:9;5485:7;5481:23;5477:32;5474:119;;;5512:79;;:::i;:::-;5474:119;5632:1;5657:53;5702:7;5693:6;5682:9;5678:22;5657:53;:::i;:::-;5647:63;;5603:117;5759:2;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5730:118;5381:474;;;;;:::o;5861:90::-;5895:7;5938:5;5931:13;5924:21;5913:32;;5861:90;;;:::o;5957:109::-;6038:21;6053:5;6038:21;:::i;:::-;6033:3;6026:34;5957:109;;:::o;6072:210::-;6159:4;6197:2;6186:9;6182:18;6174:26;;6210:65;6272:1;6261:9;6257:17;6248:6;6210:65;:::i;:::-;6072:210;;;;:::o;6288:60::-;6316:3;6337:5;6330:12;;6288:60;;;:::o;6354:142::-;6404:9;6437:53;6455:34;6464:24;6482:5;6464:24;:::i;:::-;6455:34;:::i;:::-;6437:53;:::i;:::-;6424:66;;6354:142;;;:::o;6502:126::-;6552:9;6585:37;6616:5;6585:37;:::i;:::-;6572:50;;6502:126;;;:::o;6634:152::-;6710:9;6743:37;6774:5;6743:37;:::i;:::-;6730:50;;6634:152;;;:::o;6792:183::-;6905:63;6962:5;6905:63;:::i;:::-;6900:3;6893:76;6792:183;;:::o;6981:274::-;7100:4;7138:2;7127:9;7123:18;7115:26;;7151:97;7245:1;7234:9;7230:17;7221:6;7151:97;:::i;:::-;6981:274;;;;:::o;7261:118::-;7348:24;7366:5;7348:24;:::i;:::-;7343:3;7336:37;7261:118;;:::o;7385:222::-;7478:4;7516:2;7505:9;7501:18;7493:26;;7529:71;7597:1;7586:9;7582:17;7573:6;7529:71;:::i;:::-;7385:222;;;;:::o;7613:329::-;7672:6;7721:2;7709:9;7700:7;7696:23;7692:32;7689:119;;;7727:79;;:::i;:::-;7689:119;7847:1;7872:53;7917:7;7908:6;7897:9;7893:22;7872:53;:::i;:::-;7862:63;;7818:117;7613:329;;;;:::o;7948:619::-;8025:6;8033;8041;8090:2;8078:9;8069:7;8065:23;8061:32;8058:119;;;8096:79;;:::i;:::-;8058:119;8216:1;8241:53;8286:7;8277:6;8266:9;8262:22;8241:53;:::i;:::-;8231:63;;8187:117;8343:2;8369:53;8414:7;8405:6;8394:9;8390:22;8369:53;:::i;:::-;8359:63;;8314:118;8471:2;8497:53;8542:7;8533:6;8522:9;8518:22;8497:53;:::i;:::-;8487:63;;8442:118;7948:619;;;;;:::o;8573:86::-;8608:7;8648:4;8641:5;8637:16;8626:27;;8573:86;;;:::o;8665:112::-;8748:22;8764:5;8748:22;:::i;:::-;8743:3;8736:35;8665:112;;:::o;8783:214::-;8872:4;8910:2;8899:9;8895:18;8887:26;;8923:67;8987:1;8976:9;8972:17;8963:6;8923:67;:::i;:::-;8783:214;;;;:::o;9003:118::-;9090:24;9108:5;9090:24;:::i;:::-;9085:3;9078:37;9003:118;;:::o;9127:222::-;9220:4;9258:2;9247:9;9243:18;9235:26;;9271:71;9339:1;9328:9;9324:17;9315:6;9271:71;:::i;:::-;9127:222;;;;:::o;9355:116::-;9425:21;9440:5;9425:21;:::i;:::-;9418:5;9415:32;9405:60;;9461:1;9458;9451:12;9405:60;9355:116;:::o;9477:133::-;9520:5;9558:6;9545:20;9536:29;;9574:30;9598:5;9574:30;:::i;:::-;9477:133;;;;:::o;9616:323::-;9672:6;9721:2;9709:9;9700:7;9696:23;9692:32;9689:119;;;9727:79;;:::i;:::-;9689:119;9847:1;9872:50;9914:7;9905:6;9894:9;9890:22;9872:50;:::i;:::-;9862:60;;9818:114;9616:323;;;;:::o;9945:329::-;10004:6;10053:2;10041:9;10032:7;10028:23;10024:32;10021:119;;;10059:79;;:::i;:::-;10021:119;10179:1;10204:53;10249:7;10240:6;10229:9;10225:22;10204:53;:::i;:::-;10194:63;;10150:117;9945:329;;;;:::o;10280:765::-;10366:6;10374;10382;10390;10439:3;10427:9;10418:7;10414:23;10410:33;10407:120;;;10446:79;;:::i;:::-;10407:120;10566:1;10591:53;10636:7;10627:6;10616:9;10612:22;10591:53;:::i;:::-;10581:63;;10537:117;10693:2;10719:53;10764:7;10755:6;10744:9;10740:22;10719:53;:::i;:::-;10709:63;;10664:118;10821:2;10847:53;10892:7;10883:6;10872:9;10868:22;10847:53;:::i;:::-;10837:63;;10792:118;10949:2;10975:53;11020:7;11011:6;11000:9;10996:22;10975:53;:::i;:::-;10965:63;;10920:118;10280:765;;;;;;;:::o;11051:117::-;11160:1;11157;11150:12;11191:568;11264:8;11274:6;11324:3;11317:4;11309:6;11305:17;11301:27;11291:122;;11332:79;;:::i;:::-;11291:122;11445:6;11432:20;11422:30;;11475:18;11467:6;11464:30;11461:117;;;11497:79;;:::i;:::-;11461:117;11611:4;11603:6;11599:17;11587:29;;11665:3;11657:4;11649:6;11645:17;11635:8;11631:32;11628:41;11625:128;;;11672:79;;:::i;:::-;11625:128;11191:568;;;;;:::o;11765:698::-;11857:6;11865;11873;11922:2;11910:9;11901:7;11897:23;11893:32;11890:119;;;11928:79;;:::i;:::-;11890:119;12076:1;12065:9;12061:17;12048:31;12106:18;12098:6;12095:30;12092:117;;;12128:79;;:::i;:::-;12092:117;12241:80;12313:7;12304:6;12293:9;12289:22;12241:80;:::i;:::-;12223:98;;;;12019:312;12370:2;12396:50;12438:7;12429:6;12418:9;12414:22;12396:50;:::i;:::-;12386:60;;12341:115;11765:698;;;;;:::o;12469:474::-;12537:6;12545;12594:2;12582:9;12573:7;12569:23;12565:32;12562:119;;;12600:79;;:::i;:::-;12562:119;12720:1;12745:53;12790:7;12781:6;12770:9;12766:22;12745:53;:::i;:::-;12735:63;;12691:117;12847:2;12873:53;12918:7;12909:6;12898:9;12894:22;12873:53;:::i;:::-;12863:63;;12818:118;12469:474;;;;;:::o;12949:182::-;13089:34;13085:1;13077:6;13073:14;13066:58;12949:182;:::o;13137:366::-;13279:3;13300:67;13364:2;13359:3;13300:67;:::i;:::-;13293:74;;13376:93;13465:3;13376:93;:::i;:::-;13494:2;13489:3;13485:12;13478:19;;13137:366;;;:::o;13509:419::-;13675:4;13713:2;13702:9;13698:18;13690:26;;13762:9;13756:4;13752:20;13748:1;13737:9;13733:17;13726:47;13790:131;13916:4;13790:131;:::i;:::-;13782:139;;13509:419;;;:::o;13934:180::-;13982:77;13979:1;13972:88;14079:4;14076:1;14069:15;14103:4;14100:1;14093:15;14120:180;14168:77;14165:1;14158:88;14265:4;14262:1;14255:15;14289:4;14286:1;14279:15;14306:410;14346:7;14369:20;14387:1;14369:20;:::i;:::-;14364:25;;14403:20;14421:1;14403:20;:::i;:::-;14398:25;;14458:1;14455;14451:9;14480:30;14498:11;14480:30;:::i;:::-;14469:41;;14659:1;14650:7;14646:15;14643:1;14640:22;14620:1;14613:9;14593:83;14570:139;;14689:18;;:::i;:::-;14570:139;14354:362;14306:410;;;;:::o;14722:180::-;14770:77;14767:1;14760:88;14867:4;14864:1;14857:15;14891:4;14888:1;14881:15;14908:185;14948:1;14965:20;14983:1;14965:20;:::i;:::-;14960:25;;14999:20;15017:1;14999:20;:::i;:::-;14994:25;;15038:1;15028:35;;15043:18;;:::i;:::-;15028:35;15085:1;15082;15078:9;15073:14;;14908:185;;;;:::o;15099:191::-;15139:3;15158:20;15176:1;15158:20;:::i;:::-;15153:25;;15192:20;15210:1;15192:20;:::i;:::-;15187:25;;15235:1;15232;15228:9;15221:16;;15256:3;15253:1;15250:10;15247:36;;;15263:18;;:::i;:::-;15247:36;15099:191;;;;:::o;15296:221::-;15436:34;15432:1;15424:6;15420:14;15413:58;15505:4;15500:2;15492:6;15488:15;15481:29;15296:221;:::o;15523:366::-;15665:3;15686:67;15750:2;15745:3;15686:67;:::i;:::-;15679:74;;15762:93;15851:3;15762:93;:::i;:::-;15880:2;15875:3;15871:12;15864:19;;15523:366;;;:::o;15895:419::-;16061:4;16099:2;16088:9;16084:18;16076:26;;16148:9;16142:4;16138:20;16134:1;16123:9;16119:17;16112:47;16176:131;16302:4;16176:131;:::i;:::-;16168:139;;15895:419;;;:::o;16320:225::-;16460:34;16456:1;16448:6;16444:14;16437:58;16529:8;16524:2;16516:6;16512:15;16505:33;16320:225;:::o;16551:366::-;16693:3;16714:67;16778:2;16773:3;16714:67;:::i;:::-;16707:74;;16790:93;16879:3;16790:93;:::i;:::-;16908:2;16903:3;16899:12;16892:19;;16551:366;;;:::o;16923:419::-;17089:4;17127:2;17116:9;17112:18;17104:26;;17176:9;17170:4;17166:20;17162:1;17151:9;17147:17;17140:47;17204:131;17330:4;17204:131;:::i;:::-;17196:139;;16923:419;;;:::o;17348:223::-;17488:34;17484:1;17476:6;17472:14;17465:58;17557:6;17552:2;17544:6;17540:15;17533:31;17348:223;:::o;17577:366::-;17719:3;17740:67;17804:2;17799:3;17740:67;:::i;:::-;17733:74;;17816:93;17905:3;17816:93;:::i;:::-;17934:2;17929:3;17925:12;17918:19;;17577:366;;;:::o;17949:419::-;18115:4;18153:2;18142:9;18138:18;18130:26;;18202:9;18196:4;18192:20;18188:1;18177:9;18173:17;18166:47;18230:131;18356:4;18230:131;:::i;:::-;18222:139;;17949:419;;;:::o;18374:221::-;18514:34;18510:1;18502:6;18498:14;18491:58;18583:4;18578:2;18570:6;18566:15;18559:29;18374:221;:::o;18601:366::-;18743:3;18764:67;18828:2;18823:3;18764:67;:::i;:::-;18757:74;;18840:93;18929:3;18840:93;:::i;:::-;18958:2;18953:3;18949:12;18942:19;;18601:366;;;:::o;18973:419::-;19139:4;19177:2;19166:9;19162:18;19154:26;;19226:9;19220:4;19216:20;19212:1;19201:9;19197:17;19190:47;19254:131;19380:4;19254:131;:::i;:::-;19246:139;;18973:419;;;:::o;19398:224::-;19538:34;19534:1;19526:6;19522:14;19515:58;19607:7;19602:2;19594:6;19590:15;19583:32;19398:224;:::o;19628:366::-;19770:3;19791:67;19855:2;19850:3;19791:67;:::i;:::-;19784:74;;19867:93;19956:3;19867:93;:::i;:::-;19985:2;19980:3;19976:12;19969:19;;19628:366;;;:::o;20000:419::-;20166:4;20204:2;20193:9;20189:18;20181:26;;20253:9;20247:4;20243:20;20239:1;20228:9;20224:17;20217:47;20281:131;20407:4;20281:131;:::i;:::-;20273:139;;20000:419;;;:::o;20425:222::-;20565:34;20561:1;20553:6;20549:14;20542:58;20634:5;20629:2;20621:6;20617:15;20610:30;20425:222;:::o;20653:366::-;20795:3;20816:67;20880:2;20875:3;20816:67;:::i;:::-;20809:74;;20892:93;20981:3;20892:93;:::i;:::-;21010:2;21005:3;21001:12;20994:19;;20653:366;;;:::o;21025:419::-;21191:4;21229:2;21218:9;21214:18;21206:26;;21278:9;21272:4;21268:20;21264:1;21253:9;21249:17;21242:47;21306:131;21432:4;21306:131;:::i;:::-;21298:139;;21025:419;;;:::o;21450:228::-;21590:34;21586:1;21578:6;21574:14;21567:58;21659:11;21654:2;21646:6;21642:15;21635:36;21450:228;:::o;21684:366::-;21826:3;21847:67;21911:2;21906:3;21847:67;:::i;:::-;21840:74;;21923:93;22012:3;21923:93;:::i;:::-;22041:2;22036:3;22032:12;22025:19;;21684:366;;;:::o;22056:419::-;22222:4;22260:2;22249:9;22245:18;22237:26;;22309:9;22303:4;22299:20;22295:1;22284:9;22280:17;22273:47;22337:131;22463:4;22337:131;:::i;:::-;22329:139;;22056:419;;;:::o;22481:250::-;22621:34;22617:1;22609:6;22605:14;22598:58;22690:33;22685:2;22677:6;22673:15;22666:58;22481:250;:::o;22737:366::-;22879:3;22900:67;22964:2;22959:3;22900:67;:::i;:::-;22893:74;;22976:93;23065:3;22976:93;:::i;:::-;23094:2;23089:3;23085:12;23078:19;;22737:366;;;:::o;23109:419::-;23275:4;23313:2;23302:9;23298:18;23290:26;;23362:9;23356:4;23352:20;23348:1;23337:9;23333:17;23326:47;23390:131;23516:4;23390:131;:::i;:::-;23382:139;;23109:419;;;:::o;23534:178::-;23674:30;23670:1;23662:6;23658:14;23651:54;23534:178;:::o;23718:366::-;23860:3;23881:67;23945:2;23940:3;23881:67;:::i;:::-;23874:74;;23957:93;24046:3;23957:93;:::i;:::-;24075:2;24070:3;24066:12;24059:19;;23718:366;;;:::o;24090:419::-;24256:4;24294:2;24283:9;24279:18;24271:26;;24343:9;24337:4;24333:20;24329:1;24318:9;24314:17;24307:47;24371:131;24497:4;24371:131;:::i;:::-;24363:139;;24090:419;;;:::o;24515:222::-;24655:34;24651:1;24643:6;24639:14;24632:58;24724:5;24719:2;24711:6;24707:15;24700:30;24515:222;:::o;24743:366::-;24885:3;24906:67;24970:2;24965:3;24906:67;:::i;:::-;24899:74;;24982:93;25071:3;24982:93;:::i;:::-;25100:2;25095:3;25091:12;25084:19;;24743:366;;;:::o;25115:419::-;25281:4;25319:2;25308:9;25304:18;25296:26;;25368:9;25362:4;25358:20;25354:1;25343:9;25339:17;25332:47;25396:131;25522:4;25396:131;:::i;:::-;25388:139;;25115:419;;;:::o;25540:222::-;25680:34;25676:1;25668:6;25664:14;25657:58;25749:5;25744:2;25736:6;25732:15;25725:30;25540:222;:::o;25768:366::-;25910:3;25931:67;25995:2;25990:3;25931:67;:::i;:::-;25924:74;;26007:93;26096:3;26007:93;:::i;:::-;26125:2;26120:3;26116:12;26109:19;;25768:366;;;:::o;26140:419::-;26306:4;26344:2;26333:9;26329:18;26321:26;;26393:9;26387:4;26383:20;26379:1;26368:9;26364:17;26357:47;26421:131;26547:4;26421:131;:::i;:::-;26413:139;;26140:419;;;:::o;26565:194::-;26605:4;26625:20;26643:1;26625:20;:::i;:::-;26620:25;;26659:20;26677:1;26659:20;:::i;:::-;26654:25;;26703:1;26700;26696:9;26688:17;;26727:1;26721:4;26718:11;26715:37;;;26732:18;;:::i;:::-;26715:37;26565:194;;;;:::o;26765:229::-;26905:34;26901:1;26893:6;26889:14;26882:58;26974:12;26969:2;26961:6;26957:15;26950:37;26765:229;:::o;27000:366::-;27142:3;27163:67;27227:2;27222:3;27163:67;:::i;:::-;27156:74;;27239:93;27328:3;27239:93;:::i;:::-;27357:2;27352:3;27348:12;27341:19;;27000:366;;;:::o;27372:419::-;27538:4;27576:2;27565:9;27561:18;27553:26;;27625:9;27619:4;27615:20;27611:1;27600:9;27596:17;27589:47;27653:131;27779:4;27653:131;:::i;:::-;27645:139;;27372:419;;;:::o;27797:143::-;27854:5;27885:6;27879:13;27870:22;;27901:33;27928:5;27901:33;:::i;:::-;27797:143;;;;:::o;27946:351::-;28016:6;28065:2;28053:9;28044:7;28040:23;28036:32;28033:119;;;28071:79;;:::i;:::-;28033:119;28191:1;28216:64;28272:7;28263:6;28252:9;28248:22;28216:64;:::i;:::-;28206:74;;28162:128;27946:351;;;;:::o;28303:85::-;28348:7;28377:5;28366:16;;28303:85;;;:::o;28394:158::-;28452:9;28485:61;28503:42;28512:32;28538:5;28512:32;:::i;:::-;28503:42;:::i;:::-;28485:61;:::i;:::-;28472:74;;28394:158;;;:::o;28558:147::-;28653:45;28692:5;28653:45;:::i;:::-;28648:3;28641:58;28558:147;;:::o;28711:114::-;28778:6;28812:5;28806:12;28796:22;;28711:114;;;:::o;28831:184::-;28930:11;28964:6;28959:3;28952:19;29004:4;28999:3;28995:14;28980:29;;28831:184;;;;:::o;29021:132::-;29088:4;29111:3;29103:11;;29141:4;29136:3;29132:14;29124:22;;29021:132;;;:::o;29159:108::-;29236:24;29254:5;29236:24;:::i;:::-;29231:3;29224:37;29159:108;;:::o;29273:179::-;29342:10;29363:46;29405:3;29397:6;29363:46;:::i;:::-;29441:4;29436:3;29432:14;29418:28;;29273:179;;;;:::o;29458:113::-;29528:4;29560;29555:3;29551:14;29543:22;;29458:113;;;:::o;29607:732::-;29726:3;29755:54;29803:5;29755:54;:::i;:::-;29825:86;29904:6;29899:3;29825:86;:::i;:::-;29818:93;;29935:56;29985:5;29935:56;:::i;:::-;30014:7;30045:1;30030:284;30055:6;30052:1;30049:13;30030:284;;;30131:6;30125:13;30158:63;30217:3;30202:13;30158:63;:::i;:::-;30151:70;;30244:60;30297:6;30244:60;:::i;:::-;30234:70;;30090:224;30077:1;30074;30070:9;30065:14;;30030:284;;;30034:14;30330:3;30323:10;;29731:608;;;29607:732;;;;:::o;30345:831::-;30608:4;30646:3;30635:9;30631:19;30623:27;;30660:71;30728:1;30717:9;30713:17;30704:6;30660:71;:::i;:::-;30741:80;30817:2;30806:9;30802:18;30793:6;30741:80;:::i;:::-;30868:9;30862:4;30858:20;30853:2;30842:9;30838:18;30831:48;30896:108;30999:4;30990:6;30896:108;:::i;:::-;30888:116;;31014:72;31082:2;31071:9;31067:18;31058:6;31014:72;:::i;:::-;31096:73;31164:3;31153:9;31149:19;31140:6;31096:73;:::i;:::-;30345:831;;;;;;;;:::o;31182:177::-;31322:29;31318:1;31310:6;31306:14;31299:53;31182:177;:::o;31365:366::-;31507:3;31528:67;31592:2;31587:3;31528:67;:::i;:::-;31521:74;;31604:93;31693:3;31604:93;:::i;:::-;31722:2;31717:3;31713:12;31706:19;;31365:366;;;:::o;31737:419::-;31903:4;31941:2;31930:9;31926:18;31918:26;;31990:9;31984:4;31980:20;31976:1;31965:9;31961:17;31954:47;32018:131;32144:4;32018:131;:::i;:::-;32010:139;;31737:419;;;:::o;32162:220::-;32302:34;32298:1;32290:6;32286:14;32279:58;32371:3;32366:2;32358:6;32354:15;32347:28;32162:220;:::o;32388:366::-;32530:3;32551:67;32615:2;32610:3;32551:67;:::i;:::-;32544:74;;32627:93;32716:3;32627:93;:::i;:::-;32745:2;32740:3;32736:12;32729:19;;32388:366;;;:::o;32760:419::-;32926:4;32964:2;32953:9;32949:18;32941:26;;33013:9;33007:4;33003:20;32999:1;32988:9;32984:17;32977:47;33041:131;33167:4;33041:131;:::i;:::-;33033:139;;32760:419;;;:::o

Swarm Source

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