ETH Price: $3,097.66 (+0.88%)
Gas: 6 Gwei

Token

Ordinal Bridge (ORDIBRIDGE)
 

Overview

Max Total Supply

100,000,000 ORDIBRIDGE

Holders

1,022

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0 ORDIBRIDGE

Value
$0.00
0xf5bb53884894dbd504e9bb10db8ca43f66bda7d5
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:
OrdinalBridge

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**

Telegram BOT: https://t.me/ordinalbridge_bot

Website: https://ordinalbridge.org
Telegram: https://t.me/OrdiBridgeETH
Twitter: https://twitter.com/OrdiBridgeETH


*/

// 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 OrdinalBridge is Context, IERC20, Ownable {
    using SafeMath for uint256;

    string private constant _name = "Ordinal Bridge";
    string private constant _symbol = "ORDIBRIDGE";

    address payable private _teamAddress = payable(0xffD3aa80676EF645B0A95C7c0Efc3E511daa3526);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 100000000 * 10 ** _decimals;
    uint256 public _maxTxAmount = 1000000 * 10 ** _decimals;
    uint256 public _maxWalletSize = 1000000 * 10 ** _decimals;
    uint256 public _swapTokensAtAmount = 10000 * 10 ** _decimals;

    mapping(address => bool) public bots; 
    mapping (address => uint256) public _buyMap;

    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 _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 5;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 5;

    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    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[_teamAddress] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (from != owner() && to != owner()) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: 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 >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _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 {
        _teamAddress.transfer(amount);
    }

    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

    function manualswap() external {
        require(_msgSender() == _teamAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _teamAddress);
        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, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

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

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

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    //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 = maxTxAmount;
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

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

}

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":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","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":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","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"},{"stateMutability":"payable","type":"receive"}]

608060405273ffd3aa80676ef645b0a95c7c0efc3e511daa352660025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600460146101000a81548160ff0219169083151502179055505f600460156101000a81548160ff0219169083151502179055506001600460166101000a81548160ff0219169083151502179055506009600a620000b7919062000807565b620f4240620000c7919062000857565b6005556009600a620000da919062000807565b620f4240620000ea919062000857565b6006556009600a620000fd919062000807565b6127106200010c919062000857565b6007556009600a6200011f919062000807565b6305f5e10062000130919062000857565b5f196200013e9190620008ce565b5f196200014c919062000905565b600e555f60105560056011555f601255600560135560125460145560135460155560145460165560155460175534801562000185575f80fd5b505f620001976200064760201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600e54600a5f620002496200064760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000328573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200034e9190620009a4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003b4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003da9190620009a4565b6040518363ffffffff1660e01b8152600401620003f9929190620009e5565b6020604051808303815f875af115801562000416573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200043c9190620009a4565b60045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d5f620004906200064e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600d5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600d5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620005ba6200064760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a62000618919062000807565b6305f5e10062000629919062000857565b60405162000638919062000a21565b60405180910390a35062000a3c565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620006ff57808604811115620006d757620006d662000675565b5b6001851615620006e75780820291505b8081029050620006f785620006a2565b9450620006b7565b94509492505050565b5f82620007195760019050620007eb565b8162000728575f9050620007eb565b81600181146200074157600281146200074c5762000782565b6001915050620007eb565b60ff84111562000761576200076062000675565b5b8360020a9150848211156200077b576200077a62000675565b5b50620007eb565b5060208310610133831016604e8410600b8410161715620007bc5782820a905083811115620007b657620007b562000675565b5b620007eb565b620007cb8484846001620006ae565b92509050818404811115620007e557620007e462000675565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200081382620007f2565b91506200082083620007fb565b92506200084f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000708565b905092915050565b5f6200086382620007f2565b91506200087083620007f2565b92508282026200088081620007f2565b915082820484148315176200089a576200089962000675565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620008da82620007f2565b9150620008e783620007f2565b925082620008fa57620008f9620008a1565b5b828206905092915050565b5f6200091182620007f2565b91506200091e83620007f2565b925082820390508181111562000939576200093862000675565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200096e8262000943565b9050919050565b620009808162000962565b81146200098b575f80fd5b50565b5f815190506200099e8162000975565b92915050565b5f60208284031215620009bc57620009bb6200093f565b5b5f620009cb848285016200098e565b91505092915050565b620009df8162000962565b82525050565b5f604082019050620009fa5f830185620009d4565b62000a096020830184620009d4565b9392505050565b62000a1b81620007f2565b82525050565b5f60208201905062000a365f83018462000a10565b92915050565b613cd78062000a4a5f395ff3fe6080604052600436106101cf575f3560e01c80637d1db4a5116100f6578063a2a957bb11610094578063c492f04611610063578063c492f04614610640578063dd62ed3e14610668578063ea1644d5146106a4578063f2fde38b146106cc576101d6565b8063a2a957bb1461058a578063a9059cbb146105b2578063bfd79284146105ee578063c3c8cd801461062a576101d6565b80638f70ccf7116100d05780638f70ccf7146104e65780638f9a55c01461050e57806395d89b411461053857806398a5c31514610562576101d6565b80637d1db4a5146104565780637f2feddc146104805780638da5cb5b146104bc576101d6565b8063313ce5671161016e5780636fc3eaec1161013d5780636fc3eaec146103c657806370a08231146103dc578063715018a61461041857806374010ece1461042e576101d6565b8063313ce5671461032257806349bd5a5e1461034c5780636b999053146103765780636d8aa8f81461039e576101d6565b80631694505e116101aa5780631694505e1461026857806318160ddd1461029257806323b872dd146102bc5780632fd689e3146102f8576101d6565b8062b8cf2a146101da57806306fdde0314610202578063095ea7b31461022c576101d6565b366101d657005b5f80fd5b3480156101e5575f80fd5b5061020060048036038101906101fb9190612bf9565b6106f4565b005b34801561020d575f80fd5b50610216610813565b6040516102239190612cba565b60405180910390f35b348015610237575f80fd5b50610252600480360381019061024d9190612d0d565b610850565b60405161025f9190612d65565b60405180910390f35b348015610273575f80fd5b5061027c61086d565b6040516102899190612dd9565b60405180910390f35b34801561029d575f80fd5b506102a6610892565b6040516102b39190612e01565b60405180910390f35b3480156102c7575f80fd5b506102e260048036038101906102dd9190612e1a565b6108b5565b6040516102ef9190612d65565b60405180910390f35b348015610303575f80fd5b5061030c610989565b6040516103199190612e01565b60405180910390f35b34801561032d575f80fd5b5061033661098f565b6040516103439190612e85565b60405180910390f35b348015610357575f80fd5b50610360610997565b60405161036d9190612ead565b60405180910390f35b348015610381575f80fd5b5061039c60048036038101906103979190612ec6565b6109bc565b005b3480156103a9575f80fd5b506103c460048036038101906103bf9190612f1b565b610aa7565b005b3480156103d1575f80fd5b506103da610b58565b005b3480156103e7575f80fd5b5061040260048036038101906103fd9190612ec6565b610bc7565b60405161040f9190612e01565b60405180910390f35b348015610423575f80fd5b5061042c610c15565b005b348015610439575f80fd5b50610454600480360381019061044f9190612f46565b610d63565b005b348015610461575f80fd5b5061046a610e01565b6040516104779190612e01565b60405180910390f35b34801561048b575f80fd5b506104a660048036038101906104a19190612ec6565b610e07565b6040516104b39190612e01565b60405180910390f35b3480156104c7575f80fd5b506104d0610e1c565b6040516104dd9190612ead565b60405180910390f35b3480156104f1575f80fd5b5061050c60048036038101906105079190612f1b565b610e43565b005b348015610519575f80fd5b50610522610ef4565b60405161052f9190612e01565b60405180910390f35b348015610543575f80fd5b5061054c610efa565b6040516105599190612cba565b60405180910390f35b34801561056d575f80fd5b5061058860048036038101906105839190612f46565b610f37565b005b348015610595575f80fd5b506105b060048036038101906105ab9190612f71565b610fd5565b005b3480156105bd575f80fd5b506105d860048036038101906105d39190612d0d565b61108b565b6040516105e59190612d65565b60405180910390f35b3480156105f9575f80fd5b50610614600480360381019061060f9190612ec6565b6110a8565b6040516106219190612d65565b60405180910390f35b348015610635575f80fd5b5061063e6110c5565b005b34801561064b575f80fd5b506106666004803603810190610661919061302e565b61113c565b005b348015610673575f80fd5b5061068e6004803603810190610689919061308b565b61126b565b60405161069b9190612e01565b60405180910390f35b3480156106af575f80fd5b506106ca60048036038101906106c59190612f46565b6112ed565b005b3480156106d7575f80fd5b506106f260048036038101906106ed9190612ec6565b61138b565b005b6106fc611548565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077f90613113565b60405180910390fd5b5f5b815181101561080f57600160085f8484815181106107ab576107aa613131565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061078a565b5050565b60606040518060400160405280600e81526020017f4f7264696e616c20427269646765000000000000000000000000000000000000815250905090565b5f61086361085c611548565b848461154f565b6001905092915050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6009600a6108a191906132ba565b6305f5e1006108b09190613304565b905090565b5f6108c1848484611712565b61097e846108cd611548565b61097985604051806060016040528060288152602001613c7a60289139600c5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610930611548565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f749092919063ffffffff16565b61154f565b600190509392505050565b60075481565b5f6009905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109c4611548565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4790613113565b60405180910390fd5b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610aaf611548565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3290613113565b60405180910390fd5b80600460166101000a81548160ff02191690831515021790555050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b98611548565b73ffffffffffffffffffffffffffffffffffffffff1614610bb7575f80fd5b5f479050610bc481611fd6565b50565b5f610c0e600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461203e565b9050919050565b610c1d611548565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca090613113565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d6b611548565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dee90613113565b60405180910390fd5b8060058190555050565b60055481565b6009602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e4b611548565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ece90613113565b60405180910390fd5b80600460146101000a81548160ff02191690831515021790555050565b60065481565b60606040518060400160405280600a81526020017f4f52444942524944474500000000000000000000000000000000000000000000815250905090565b610f3f611548565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc290613113565b60405180910390fd5b8060078190555050565b610fdd611548565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611069576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106090613113565b60405180910390fd5b8360108190555082601281905550816011819055508060138190555050505050565b5f61109e611097611548565b8484611712565b6001905092915050565b6008602052805f5260405f205f915054906101000a900460ff1681565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611105611548565b73ffffffffffffffffffffffffffffffffffffffff1614611124575f80fd5b5f61112e30610bc7565b9050611139816120aa565b50565b611144611548565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c790613113565b60405180910390fd5b5f5b838390508110156112655781600d5f8686858181106111f4576111f3613131565b5b90506020020160208101906112099190612ec6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506111d2565b50505050565b5f600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6112f5611548565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611381576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137890613113565b60405180910390fd5b8060068190555050565b611393611548565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461141f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141690613113565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361148d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611484906133b5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b490613443565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361162b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611622906134d1565b60405180910390fd5b80600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117059190612e01565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611780576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117779061355f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e5906135ed565b60405180910390fd5b5f8111611830576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118279061367b565b60405180910390fd5b611838610e1c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118a65750611876610e1c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c8157600460149054906101000a900460ff16611935576118c7610e1c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192b90613709565b60405180910390fd5b5b60055481111561197a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197190613771565b60405180910390fd5b60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611a18575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4e906137ff565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611b035760065481611ab884610bc7565b611ac2919061381d565b10611b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af9906138c0565b60405180910390fd5b5b5f611b0d30610bc7565b90505f60075482101590506005548210611b275760055491505b808015611b415750600460159054906101000a900460ff16155b8015611b9a575060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611bb25750600460169054906101000a900460ff165b8015611c055750600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611c585750600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c7e57611c66826120aa565b5f4790505f811115611c7c57611c7b47611fd6565b5b505b50505b5f60019050600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611d215750600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611dd2575060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611dd1575060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611ddf575f9050611f62565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e88575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ea0576010546014819055506011546015819055505b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f49575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f61576012546014819055506013546015819055505b5b611f6e84848484612315565b50505050565b5f838311158290611fbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb29190612cba565b60405180910390fd5b505f8385611fc991906138de565b9050809150509392505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561203a573d5f803e3d5ffd5b5050565b5f600e54821115612084576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207b90613981565b60405180910390fd5b5f61208d612342565b90506120a2818461236b90919063ffffffff16565b915050919050565b6001600460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156120e1576120e0612a63565b5b60405190808252806020026020018201604052801561210f5781602001602082028036833780820191505090505b50905030815f8151811061212657612125613131565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121ee91906139b3565b8160018151811061220257612201613131565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506122683060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461154f565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016122ca959493929190613ace565b5f604051808303815f87803b1580156122e1575f80fd5b505af11580156122f3573d5f803e3d5ffd5b50505050505f600460156101000a81548160ff02191690831515021790555050565b80612323576123226123b4565b5b61232e8484846123ed565b8061233c5761233b6125ad565b5b50505050565b5f805f61234d6125c1565b91509150612364818361236b90919063ffffffff16565b9250505090565b5f6123ac83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612659565b905092915050565b5f6014541480156123c657505f601554145b6123eb576014546016819055506015546017819055505f6014819055505f6015819055505b565b5f805f805f806123fc876126ba565b95509550955095509550955061245886600a5f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461271a90919063ffffffff16565b600a5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506124e985600a5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461276390919063ffffffff16565b600a5f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612533816127c0565b61253d8483612877565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161259a9190612e01565b60405180910390a3505050505050505050565b601654601481905550601754601581905550565b5f805f600e5490505f6009600a6125d891906132ba565b6305f5e1006125e79190613304565b905061261a6009600a6125fa91906132ba565b6305f5e1006126099190613304565b600e5461236b90919063ffffffff16565b82101561264c57600e546009600a61263291906132ba565b6305f5e1006126419190613304565b935093505050612655565b81819350935050505b9091565b5f808311829061269f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126969190612cba565b60405180910390fd5b505f83856126ad9190613b53565b9050809150509392505050565b5f805f805f805f805f6126d28a6014546015546128b1565b9250925092505f6126e1612342565b90505f805f6126f28e878787612943565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61275b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f74565b905092915050565b5f808284612771919061381d565b9050838110156127b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ad90613bcd565b60405180910390fd5b8091505092915050565b5f6127c9612342565b90505f6127df82846129c790919063ffffffff16565b905061283181600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461276390919063ffffffff16565b600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b61288c82600e5461271a90919063ffffffff16565b600e819055506128a781600f5461276390919063ffffffff16565b600f819055505050565b5f805f806128db60646128cd888a6129c790919063ffffffff16565b61236b90919063ffffffff16565b90505f61290460646128f6888b6129c790919063ffffffff16565b61236b90919063ffffffff16565b90505f61292c8261291e858c61271a90919063ffffffff16565b61271a90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061295a85896129c790919063ffffffff16565b90505f61297086896129c790919063ffffffff16565b90505f61298687896129c790919063ffffffff16565b90505f6129ae826129a0858761271a90919063ffffffff16565b61271a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f8083036129d7575f9050612a38565b5f82846129e49190613304565b90508284826129f39190613b53565b14612a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2a90613c5b565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612a9982612a53565b810181811067ffffffffffffffff82111715612ab857612ab7612a63565b5b80604052505050565b5f612aca612a3e565b9050612ad68282612a90565b919050565b5f67ffffffffffffffff821115612af557612af4612a63565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612b3382612b0a565b9050919050565b612b4381612b29565b8114612b4d575f80fd5b50565b5f81359050612b5e81612b3a565b92915050565b5f612b76612b7184612adb565b612ac1565b90508083825260208201905060208402830185811115612b9957612b98612b06565b5b835b81811015612bc25780612bae8882612b50565b845260208401935050602081019050612b9b565b5050509392505050565b5f82601f830112612be057612bdf612a4f565b5b8135612bf0848260208601612b64565b91505092915050565b5f60208284031215612c0e57612c0d612a47565b5b5f82013567ffffffffffffffff811115612c2b57612c2a612a4b565b5b612c3784828501612bcc565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612c77578082015181840152602081019050612c5c565b5f8484015250505050565b5f612c8c82612c40565b612c968185612c4a565b9350612ca6818560208601612c5a565b612caf81612a53565b840191505092915050565b5f6020820190508181035f830152612cd28184612c82565b905092915050565b5f819050919050565b612cec81612cda565b8114612cf6575f80fd5b50565b5f81359050612d0781612ce3565b92915050565b5f8060408385031215612d2357612d22612a47565b5b5f612d3085828601612b50565b9250506020612d4185828601612cf9565b9150509250929050565b5f8115159050919050565b612d5f81612d4b565b82525050565b5f602082019050612d785f830184612d56565b92915050565b5f819050919050565b5f612da1612d9c612d9784612b0a565b612d7e565b612b0a565b9050919050565b5f612db282612d87565b9050919050565b5f612dc382612da8565b9050919050565b612dd381612db9565b82525050565b5f602082019050612dec5f830184612dca565b92915050565b612dfb81612cda565b82525050565b5f602082019050612e145f830184612df2565b92915050565b5f805f60608486031215612e3157612e30612a47565b5b5f612e3e86828701612b50565b9350506020612e4f86828701612b50565b9250506040612e6086828701612cf9565b9150509250925092565b5f60ff82169050919050565b612e7f81612e6a565b82525050565b5f602082019050612e985f830184612e76565b92915050565b612ea781612b29565b82525050565b5f602082019050612ec05f830184612e9e565b92915050565b5f60208284031215612edb57612eda612a47565b5b5f612ee884828501612b50565b91505092915050565b612efa81612d4b565b8114612f04575f80fd5b50565b5f81359050612f1581612ef1565b92915050565b5f60208284031215612f3057612f2f612a47565b5b5f612f3d84828501612f07565b91505092915050565b5f60208284031215612f5b57612f5a612a47565b5b5f612f6884828501612cf9565b91505092915050565b5f805f8060808587031215612f8957612f88612a47565b5b5f612f9687828801612cf9565b9450506020612fa787828801612cf9565b9350506040612fb887828801612cf9565b9250506060612fc987828801612cf9565b91505092959194509250565b5f80fd5b5f8083601f840112612fee57612fed612a4f565b5b8235905067ffffffffffffffff81111561300b5761300a612fd5565b5b60208301915083602082028301111561302757613026612b06565b5b9250929050565b5f805f6040848603121561304557613044612a47565b5b5f84013567ffffffffffffffff81111561306257613061612a4b565b5b61306e86828701612fd9565b9350935050602061308186828701612f07565b9150509250925092565b5f80604083850312156130a1576130a0612a47565b5b5f6130ae85828601612b50565b92505060206130bf85828601612b50565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6130fd602083612c4a565b9150613108826130c9565b602082019050919050565b5f6020820190508181035f83015261312a816130f1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156131e0578086048111156131bc576131bb61315e565b5b60018516156131cb5780820291505b80810290506131d98561318b565b94506131a0565b94509492505050565b5f826131f857600190506132b3565b81613205575f90506132b3565b816001811461321b576002811461322557613254565b60019150506132b3565b60ff8411156132375761323661315e565b5b8360020a91508482111561324e5761324d61315e565b5b506132b3565b5060208310610133831016604e8410600b84101617156132895782820a9050838111156132845761328361315e565b5b6132b3565b6132968484846001613197565b925090508184048111156132ad576132ac61315e565b5b81810290505b9392505050565b5f6132c482612cda565b91506132cf83612e6a565b92506132fc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846131e9565b905092915050565b5f61330e82612cda565b915061331983612cda565b925082820261332781612cda565b9150828204841483151761333e5761333d61315e565b5b5092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61339f602683612c4a565b91506133aa82613345565b604082019050919050565b5f6020820190508181035f8301526133cc81613393565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61342d602483612c4a565b9150613438826133d3565b604082019050919050565b5f6020820190508181035f83015261345a81613421565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6134bb602283612c4a565b91506134c682613461565b604082019050919050565b5f6020820190508181035f8301526134e8816134af565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613549602583612c4a565b9150613554826134ef565b604082019050919050565b5f6020820190508181035f8301526135768161353d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6135d7602383612c4a565b91506135e28261357d565b604082019050919050565b5f6020820190508181035f830152613604816135cb565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613665602983612c4a565b91506136708261360b565b604082019050919050565b5f6020820190508181035f83015261369281613659565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f6136f3603f83612c4a565b91506136fe82613699565b604082019050919050565b5f6020820190508181035f830152613720816136e7565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f61375b601c83612c4a565b915061376682613727565b602082019050919050565b5f6020820190508181035f8301526137888161374f565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f6137e9602383612c4a565b91506137f48261378f565b604082019050919050565b5f6020820190508181035f830152613816816137dd565b9050919050565b5f61382782612cda565b915061383283612cda565b925082820190508082111561384a5761384961315e565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f6138aa602383612c4a565b91506138b582613850565b604082019050919050565b5f6020820190508181035f8301526138d78161389e565b9050919050565b5f6138e882612cda565b91506138f383612cda565b925082820390508181111561390b5761390a61315e565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f61396b602a83612c4a565b915061397682613911565b604082019050919050565b5f6020820190508181035f8301526139988161395f565b9050919050565b5f815190506139ad81612b3a565b92915050565b5f602082840312156139c8576139c7612a47565b5b5f6139d58482850161399f565b91505092915050565b5f819050919050565b5f613a016139fc6139f7846139de565b612d7e565b612cda565b9050919050565b613a11816139e7565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613a4981612b29565b82525050565b5f613a5a8383613a40565b60208301905092915050565b5f602082019050919050565b5f613a7c82613a17565b613a868185613a21565b9350613a9183613a31565b805f5b83811015613ac1578151613aa88882613a4f565b9750613ab383613a66565b925050600181019050613a94565b5085935050505092915050565b5f60a082019050613ae15f830188612df2565b613aee6020830187613a08565b8181036040830152613b008186613a72565b9050613b0f6060830185612e9e565b613b1c6080830184612df2565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613b5d82612cda565b9150613b6883612cda565b925082613b7857613b77613b26565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613bb7601b83612c4a565b9150613bc282613b83565b602082019050919050565b5f6020820190508181035f830152613be481613bab565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613c45602183612c4a565b9150613c5082613beb565b604082019050919050565b5f6020820190508181035f830152613c7281613c39565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220bbb787190599743f760bd777f5df316bae566a005d123c97dbc713e5b16c54c064736f6c63430008160033

Deployed Bytecode

0x6080604052600436106101cf575f3560e01c80637d1db4a5116100f6578063a2a957bb11610094578063c492f04611610063578063c492f04614610640578063dd62ed3e14610668578063ea1644d5146106a4578063f2fde38b146106cc576101d6565b8063a2a957bb1461058a578063a9059cbb146105b2578063bfd79284146105ee578063c3c8cd801461062a576101d6565b80638f70ccf7116100d05780638f70ccf7146104e65780638f9a55c01461050e57806395d89b411461053857806398a5c31514610562576101d6565b80637d1db4a5146104565780637f2feddc146104805780638da5cb5b146104bc576101d6565b8063313ce5671161016e5780636fc3eaec1161013d5780636fc3eaec146103c657806370a08231146103dc578063715018a61461041857806374010ece1461042e576101d6565b8063313ce5671461032257806349bd5a5e1461034c5780636b999053146103765780636d8aa8f81461039e576101d6565b80631694505e116101aa5780631694505e1461026857806318160ddd1461029257806323b872dd146102bc5780632fd689e3146102f8576101d6565b8062b8cf2a146101da57806306fdde0314610202578063095ea7b31461022c576101d6565b366101d657005b5f80fd5b3480156101e5575f80fd5b5061020060048036038101906101fb9190612bf9565b6106f4565b005b34801561020d575f80fd5b50610216610813565b6040516102239190612cba565b60405180910390f35b348015610237575f80fd5b50610252600480360381019061024d9190612d0d565b610850565b60405161025f9190612d65565b60405180910390f35b348015610273575f80fd5b5061027c61086d565b6040516102899190612dd9565b60405180910390f35b34801561029d575f80fd5b506102a6610892565b6040516102b39190612e01565b60405180910390f35b3480156102c7575f80fd5b506102e260048036038101906102dd9190612e1a565b6108b5565b6040516102ef9190612d65565b60405180910390f35b348015610303575f80fd5b5061030c610989565b6040516103199190612e01565b60405180910390f35b34801561032d575f80fd5b5061033661098f565b6040516103439190612e85565b60405180910390f35b348015610357575f80fd5b50610360610997565b60405161036d9190612ead565b60405180910390f35b348015610381575f80fd5b5061039c60048036038101906103979190612ec6565b6109bc565b005b3480156103a9575f80fd5b506103c460048036038101906103bf9190612f1b565b610aa7565b005b3480156103d1575f80fd5b506103da610b58565b005b3480156103e7575f80fd5b5061040260048036038101906103fd9190612ec6565b610bc7565b60405161040f9190612e01565b60405180910390f35b348015610423575f80fd5b5061042c610c15565b005b348015610439575f80fd5b50610454600480360381019061044f9190612f46565b610d63565b005b348015610461575f80fd5b5061046a610e01565b6040516104779190612e01565b60405180910390f35b34801561048b575f80fd5b506104a660048036038101906104a19190612ec6565b610e07565b6040516104b39190612e01565b60405180910390f35b3480156104c7575f80fd5b506104d0610e1c565b6040516104dd9190612ead565b60405180910390f35b3480156104f1575f80fd5b5061050c60048036038101906105079190612f1b565b610e43565b005b348015610519575f80fd5b50610522610ef4565b60405161052f9190612e01565b60405180910390f35b348015610543575f80fd5b5061054c610efa565b6040516105599190612cba565b60405180910390f35b34801561056d575f80fd5b5061058860048036038101906105839190612f46565b610f37565b005b348015610595575f80fd5b506105b060048036038101906105ab9190612f71565b610fd5565b005b3480156105bd575f80fd5b506105d860048036038101906105d39190612d0d565b61108b565b6040516105e59190612d65565b60405180910390f35b3480156105f9575f80fd5b50610614600480360381019061060f9190612ec6565b6110a8565b6040516106219190612d65565b60405180910390f35b348015610635575f80fd5b5061063e6110c5565b005b34801561064b575f80fd5b506106666004803603810190610661919061302e565b61113c565b005b348015610673575f80fd5b5061068e6004803603810190610689919061308b565b61126b565b60405161069b9190612e01565b60405180910390f35b3480156106af575f80fd5b506106ca60048036038101906106c59190612f46565b6112ed565b005b3480156106d7575f80fd5b506106f260048036038101906106ed9190612ec6565b61138b565b005b6106fc611548565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077f90613113565b60405180910390fd5b5f5b815181101561080f57600160085f8484815181106107ab576107aa613131565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061078a565b5050565b60606040518060400160405280600e81526020017f4f7264696e616c20427269646765000000000000000000000000000000000000815250905090565b5f61086361085c611548565b848461154f565b6001905092915050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6009600a6108a191906132ba565b6305f5e1006108b09190613304565b905090565b5f6108c1848484611712565b61097e846108cd611548565b61097985604051806060016040528060288152602001613c7a60289139600c5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610930611548565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f749092919063ffffffff16565b61154f565b600190509392505050565b60075481565b5f6009905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109c4611548565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4790613113565b60405180910390fd5b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610aaf611548565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3290613113565b60405180910390fd5b80600460166101000a81548160ff02191690831515021790555050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b98611548565b73ffffffffffffffffffffffffffffffffffffffff1614610bb7575f80fd5b5f479050610bc481611fd6565b50565b5f610c0e600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461203e565b9050919050565b610c1d611548565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca090613113565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d6b611548565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dee90613113565b60405180910390fd5b8060058190555050565b60055481565b6009602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e4b611548565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ece90613113565b60405180910390fd5b80600460146101000a81548160ff02191690831515021790555050565b60065481565b60606040518060400160405280600a81526020017f4f52444942524944474500000000000000000000000000000000000000000000815250905090565b610f3f611548565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc290613113565b60405180910390fd5b8060078190555050565b610fdd611548565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611069576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106090613113565b60405180910390fd5b8360108190555082601281905550816011819055508060138190555050505050565b5f61109e611097611548565b8484611712565b6001905092915050565b6008602052805f5260405f205f915054906101000a900460ff1681565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611105611548565b73ffffffffffffffffffffffffffffffffffffffff1614611124575f80fd5b5f61112e30610bc7565b9050611139816120aa565b50565b611144611548565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c790613113565b60405180910390fd5b5f5b838390508110156112655781600d5f8686858181106111f4576111f3613131565b5b90506020020160208101906112099190612ec6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506111d2565b50505050565b5f600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6112f5611548565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611381576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137890613113565b60405180910390fd5b8060068190555050565b611393611548565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461141f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141690613113565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361148d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611484906133b5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b490613443565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361162b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611622906134d1565b60405180910390fd5b80600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117059190612e01565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611780576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117779061355f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e5906135ed565b60405180910390fd5b5f8111611830576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118279061367b565b60405180910390fd5b611838610e1c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118a65750611876610e1c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c8157600460149054906101000a900460ff16611935576118c7610e1c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192b90613709565b60405180910390fd5b5b60055481111561197a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197190613771565b60405180910390fd5b60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611a18575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4e906137ff565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611b035760065481611ab884610bc7565b611ac2919061381d565b10611b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af9906138c0565b60405180910390fd5b5b5f611b0d30610bc7565b90505f60075482101590506005548210611b275760055491505b808015611b415750600460159054906101000a900460ff16155b8015611b9a575060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611bb25750600460169054906101000a900460ff165b8015611c055750600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611c585750600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c7e57611c66826120aa565b5f4790505f811115611c7c57611c7b47611fd6565b5b505b50505b5f60019050600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611d215750600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611dd2575060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611dd1575060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611ddf575f9050611f62565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e88575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ea0576010546014819055506011546015819055505b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f49575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f61576012546014819055506013546015819055505b5b611f6e84848484612315565b50505050565b5f838311158290611fbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb29190612cba565b60405180910390fd5b505f8385611fc991906138de565b9050809150509392505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561203a573d5f803e3d5ffd5b5050565b5f600e54821115612084576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207b90613981565b60405180910390fd5b5f61208d612342565b90506120a2818461236b90919063ffffffff16565b915050919050565b6001600460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156120e1576120e0612a63565b5b60405190808252806020026020018201604052801561210f5781602001602082028036833780820191505090505b50905030815f8151811061212657612125613131565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121ee91906139b3565b8160018151811061220257612201613131565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506122683060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461154f565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016122ca959493929190613ace565b5f604051808303815f87803b1580156122e1575f80fd5b505af11580156122f3573d5f803e3d5ffd5b50505050505f600460156101000a81548160ff02191690831515021790555050565b80612323576123226123b4565b5b61232e8484846123ed565b8061233c5761233b6125ad565b5b50505050565b5f805f61234d6125c1565b91509150612364818361236b90919063ffffffff16565b9250505090565b5f6123ac83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612659565b905092915050565b5f6014541480156123c657505f601554145b6123eb576014546016819055506015546017819055505f6014819055505f6015819055505b565b5f805f805f806123fc876126ba565b95509550955095509550955061245886600a5f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461271a90919063ffffffff16565b600a5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506124e985600a5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461276390919063ffffffff16565b600a5f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612533816127c0565b61253d8483612877565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161259a9190612e01565b60405180910390a3505050505050505050565b601654601481905550601754601581905550565b5f805f600e5490505f6009600a6125d891906132ba565b6305f5e1006125e79190613304565b905061261a6009600a6125fa91906132ba565b6305f5e1006126099190613304565b600e5461236b90919063ffffffff16565b82101561264c57600e546009600a61263291906132ba565b6305f5e1006126419190613304565b935093505050612655565b81819350935050505b9091565b5f808311829061269f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126969190612cba565b60405180910390fd5b505f83856126ad9190613b53565b9050809150509392505050565b5f805f805f805f805f6126d28a6014546015546128b1565b9250925092505f6126e1612342565b90505f805f6126f28e878787612943565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61275b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f74565b905092915050565b5f808284612771919061381d565b9050838110156127b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ad90613bcd565b60405180910390fd5b8091505092915050565b5f6127c9612342565b90505f6127df82846129c790919063ffffffff16565b905061283181600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461276390919063ffffffff16565b600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b61288c82600e5461271a90919063ffffffff16565b600e819055506128a781600f5461276390919063ffffffff16565b600f819055505050565b5f805f806128db60646128cd888a6129c790919063ffffffff16565b61236b90919063ffffffff16565b90505f61290460646128f6888b6129c790919063ffffffff16565b61236b90919063ffffffff16565b90505f61292c8261291e858c61271a90919063ffffffff16565b61271a90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061295a85896129c790919063ffffffff16565b90505f61297086896129c790919063ffffffff16565b90505f61298687896129c790919063ffffffff16565b90505f6129ae826129a0858761271a90919063ffffffff16565b61271a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f8083036129d7575f9050612a38565b5f82846129e49190613304565b90508284826129f39190613b53565b14612a33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2a90613c5b565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612a9982612a53565b810181811067ffffffffffffffff82111715612ab857612ab7612a63565b5b80604052505050565b5f612aca612a3e565b9050612ad68282612a90565b919050565b5f67ffffffffffffffff821115612af557612af4612a63565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612b3382612b0a565b9050919050565b612b4381612b29565b8114612b4d575f80fd5b50565b5f81359050612b5e81612b3a565b92915050565b5f612b76612b7184612adb565b612ac1565b90508083825260208201905060208402830185811115612b9957612b98612b06565b5b835b81811015612bc25780612bae8882612b50565b845260208401935050602081019050612b9b565b5050509392505050565b5f82601f830112612be057612bdf612a4f565b5b8135612bf0848260208601612b64565b91505092915050565b5f60208284031215612c0e57612c0d612a47565b5b5f82013567ffffffffffffffff811115612c2b57612c2a612a4b565b5b612c3784828501612bcc565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612c77578082015181840152602081019050612c5c565b5f8484015250505050565b5f612c8c82612c40565b612c968185612c4a565b9350612ca6818560208601612c5a565b612caf81612a53565b840191505092915050565b5f6020820190508181035f830152612cd28184612c82565b905092915050565b5f819050919050565b612cec81612cda565b8114612cf6575f80fd5b50565b5f81359050612d0781612ce3565b92915050565b5f8060408385031215612d2357612d22612a47565b5b5f612d3085828601612b50565b9250506020612d4185828601612cf9565b9150509250929050565b5f8115159050919050565b612d5f81612d4b565b82525050565b5f602082019050612d785f830184612d56565b92915050565b5f819050919050565b5f612da1612d9c612d9784612b0a565b612d7e565b612b0a565b9050919050565b5f612db282612d87565b9050919050565b5f612dc382612da8565b9050919050565b612dd381612db9565b82525050565b5f602082019050612dec5f830184612dca565b92915050565b612dfb81612cda565b82525050565b5f602082019050612e145f830184612df2565b92915050565b5f805f60608486031215612e3157612e30612a47565b5b5f612e3e86828701612b50565b9350506020612e4f86828701612b50565b9250506040612e6086828701612cf9565b9150509250925092565b5f60ff82169050919050565b612e7f81612e6a565b82525050565b5f602082019050612e985f830184612e76565b92915050565b612ea781612b29565b82525050565b5f602082019050612ec05f830184612e9e565b92915050565b5f60208284031215612edb57612eda612a47565b5b5f612ee884828501612b50565b91505092915050565b612efa81612d4b565b8114612f04575f80fd5b50565b5f81359050612f1581612ef1565b92915050565b5f60208284031215612f3057612f2f612a47565b5b5f612f3d84828501612f07565b91505092915050565b5f60208284031215612f5b57612f5a612a47565b5b5f612f6884828501612cf9565b91505092915050565b5f805f8060808587031215612f8957612f88612a47565b5b5f612f9687828801612cf9565b9450506020612fa787828801612cf9565b9350506040612fb887828801612cf9565b9250506060612fc987828801612cf9565b91505092959194509250565b5f80fd5b5f8083601f840112612fee57612fed612a4f565b5b8235905067ffffffffffffffff81111561300b5761300a612fd5565b5b60208301915083602082028301111561302757613026612b06565b5b9250929050565b5f805f6040848603121561304557613044612a47565b5b5f84013567ffffffffffffffff81111561306257613061612a4b565b5b61306e86828701612fd9565b9350935050602061308186828701612f07565b9150509250925092565b5f80604083850312156130a1576130a0612a47565b5b5f6130ae85828601612b50565b92505060206130bf85828601612b50565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6130fd602083612c4a565b9150613108826130c9565b602082019050919050565b5f6020820190508181035f83015261312a816130f1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156131e0578086048111156131bc576131bb61315e565b5b60018516156131cb5780820291505b80810290506131d98561318b565b94506131a0565b94509492505050565b5f826131f857600190506132b3565b81613205575f90506132b3565b816001811461321b576002811461322557613254565b60019150506132b3565b60ff8411156132375761323661315e565b5b8360020a91508482111561324e5761324d61315e565b5b506132b3565b5060208310610133831016604e8410600b84101617156132895782820a9050838111156132845761328361315e565b5b6132b3565b6132968484846001613197565b925090508184048111156132ad576132ac61315e565b5b81810290505b9392505050565b5f6132c482612cda565b91506132cf83612e6a565b92506132fc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846131e9565b905092915050565b5f61330e82612cda565b915061331983612cda565b925082820261332781612cda565b9150828204841483151761333e5761333d61315e565b5b5092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61339f602683612c4a565b91506133aa82613345565b604082019050919050565b5f6020820190508181035f8301526133cc81613393565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61342d602483612c4a565b9150613438826133d3565b604082019050919050565b5f6020820190508181035f83015261345a81613421565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6134bb602283612c4a565b91506134c682613461565b604082019050919050565b5f6020820190508181035f8301526134e8816134af565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613549602583612c4a565b9150613554826134ef565b604082019050919050565b5f6020820190508181035f8301526135768161353d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6135d7602383612c4a565b91506135e28261357d565b604082019050919050565b5f6020820190508181035f830152613604816135cb565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613665602983612c4a565b91506136708261360b565b604082019050919050565b5f6020820190508181035f83015261369281613659565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f6136f3603f83612c4a565b91506136fe82613699565b604082019050919050565b5f6020820190508181035f830152613720816136e7565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f61375b601c83612c4a565b915061376682613727565b602082019050919050565b5f6020820190508181035f8301526137888161374f565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f6137e9602383612c4a565b91506137f48261378f565b604082019050919050565b5f6020820190508181035f830152613816816137dd565b9050919050565b5f61382782612cda565b915061383283612cda565b925082820190508082111561384a5761384961315e565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f6138aa602383612c4a565b91506138b582613850565b604082019050919050565b5f6020820190508181035f8301526138d78161389e565b9050919050565b5f6138e882612cda565b91506138f383612cda565b925082820390508181111561390b5761390a61315e565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f61396b602a83612c4a565b915061397682613911565b604082019050919050565b5f6020820190508181035f8301526139988161395f565b9050919050565b5f815190506139ad81612b3a565b92915050565b5f602082840312156139c8576139c7612a47565b5b5f6139d58482850161399f565b91505092915050565b5f819050919050565b5f613a016139fc6139f7846139de565b612d7e565b612cda565b9050919050565b613a11816139e7565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613a4981612b29565b82525050565b5f613a5a8383613a40565b60208301905092915050565b5f602082019050919050565b5f613a7c82613a17565b613a868185613a21565b9350613a9183613a31565b805f5b83811015613ac1578151613aa88882613a4f565b9750613ab383613a66565b925050600181019050613a94565b5085935050505092915050565b5f60a082019050613ae15f830188612df2565b613aee6020830187613a08565b8181036040830152613b008186613a72565b9050613b0f6060830185612e9e565b613b1c6080830184612df2565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613b5d82612cda565b9150613b6883612cda565b925082613b7857613b77613b26565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613bb7601b83612c4a565b9150613bc282613b83565b602082019050919050565b5f6020820190508181035f830152613be481613bab565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613c45602183612c4a565b9150613c5082613beb565b604082019050919050565b5f6020820190508181035f830152613c7281613c39565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220bbb787190599743f760bd777f5df316bae566a005d123c97dbc713e5b16c54c064736f6c63430008160033

Deployed Bytecode Sourcemap

4251:13276:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12700:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6621:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7546:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4553:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6898:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7747:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4989:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6807:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4601:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12877:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16909:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12501:191;;;;;;;;;;;;;:::i;:::-;;7001:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1738:148;;;;;;;;;;;;;:::i;:::-;;17049:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4863:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5102:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1524:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12192:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4925:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6712:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16718:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16375:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7147:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5058:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12301:192;;;;;;;;;;;;;:::i;:::-;;17288:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7354:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17165:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1894:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12700:169;1661:12;:10;:12::i;:::-;1651:22;;:6;;;;;;;;;;:22;;;1643:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12776:9:::1;12771:91;12795:5;:12;12791:1;:16;12771:91;;;12846:4;12829;:14;12834:5;12840:1;12834:8;;;;;;;;:::i;:::-;;;;;;;;12829:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12809:3;;;;;;;12771:91;;;;12700:169:::0;:::o;6621:83::-;6658:13;6691:5;;;;;;;;;;;;;;;;;6684:12;;6621:83;:::o;7546:193::-;7648:4;7670:39;7679:12;:10;:12::i;:::-;7693:7;7702:6;7670:8;:39::i;:::-;7727:4;7720:11;;7546:193;;;;:::o;4553:41::-;;;;;;;;;;;;;:::o;6898:95::-;6951:7;4786:1;4841:2;:15;;;;:::i;:::-;4829:9;:27;;;;:::i;:::-;6971:14;;6898:95;:::o;7747:446::-;7879:4;7896:36;7906:6;7914:9;7925:6;7896:9;:36::i;:::-;7943:220;7966:6;7987:12;:10;:12::i;:::-;8014:138;8070:6;8014:138;;;;;;;;;;;;;;;;;:11;:19;8026:6;8014:19;;;;;;;;;;;;;;;:33;8034:12;:10;:12::i;:::-;8014:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7943:8;:220::i;:::-;8181:4;8174:11;;7747:446;;;;;:::o;4989:60::-;;;;:::o;6807:83::-;6848:5;4786:1;6866:16;;6807:83;:::o;4601:28::-;;;;;;;;;;;;;:::o;12877:92::-;1661:12;:10;:12::i;:::-;1651:22;;:6;;;;;;;;;;:22;;;1643:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12956:5:::1;12941:4;:12;12946:6;12941:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;12877:92:::0;:::o;16909:101::-;1661:12;:10;:12::i;:::-;1651:22;;:6;;;;;;;;;;:22;;;1643:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16990:12:::1;16976:11;;:26;;;;;;;;;;;;;;;;;;16909:101:::0;:::o;12501:191::-;12567:12;;;;;;;;;;;12551:28;;:12;:10;:12::i;:::-;:28;;;12543:37;;;;;;12591:26;12620:21;12591:50;;12652:32;12665:18;12652:12;:32::i;:::-;12532:160;12501:191::o;7001:138::-;7067:7;7094:37;7114:7;:16;7122:7;7114:16;;;;;;;;;;;;;;;;7094:19;:37::i;:::-;7087:44;;7001:138;;;:::o;1738:148::-;1661:12;:10;:12::i;:::-;1651:22;;:6;;;;;;;;;;:22;;;1643:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1845:1:::1;1808:40;;1829:6;::::0;::::1;;;;;;;;1808:40;;;;;;;;;;;;1876:1;1859:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1738:148::o:0;17049:108::-;1661:12;:10;:12::i;:::-;1651:22;;:6;;;;;;;;;;:22;;;1643:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17138:11:::1;17123:12;:26;;;;17049:108:::0;:::o;4863:55::-;;;;:::o;5102:43::-;;;;;;;;;;;;;;;;;:::o;1524:79::-;1562:7;1589:6;;;;;;;;;;;1582:13;;1524:79;:::o;12192:101::-;1661:12;:10;:12::i;:::-;1651:22;;:6;;;;;;;;;;:22;;;1643:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12273:12:::1;12259:11;;:26;;;;;;;;;;;;;;;;;;12192:101:::0;:::o;4925:57::-;;;;:::o;6712:87::-;6751:13;6784:7;;;;;;;;;;;;;;;;;6777:14;;6712:87;:::o;16718:139::-;1661:12;:10;:12::i;:::-;1651:22;;:6;;;;;;;;;;:22;;;1643:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16831:18:::1;16809:19;:40;;;;16718:139:::0;:::o;16375:291::-;1661:12;:10;:12::i;:::-;1651:22;;:6;;;;;;;;;;:22;;;1643:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16526:13:::1;16509:14;:30;;;;16568:14;16550:15;:32;;;;16608:11;16593:12;:26;;;;16646:12;16630:13;:28;;;;16375:291:::0;;;;:::o;7147:199::-;7252:4;7274:42;7284:12;:10;:12::i;:::-;7298:9;7309:6;7274:9;:42::i;:::-;7334:4;7327:11;;7147:199;;;;:::o;5058:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12301:192::-;12367:12;;;;;;;;;;;12351:28;;:12;:10;:12::i;:::-;:28;;;12343:37;;;;;;12391:23;12417:24;12435:4;12417:9;:24::i;:::-;12391:50;;12452:33;12469:15;12452:16;:33::i;:::-;12332:161;12301:192::o;17288:234::-;1661:12;:10;:12::i;:::-;1651:22;;:6;;;;;;;;;;:22;;;1643:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17405:9:::1;17401:114;17424:8;;:15;;17420:1;:19;17401:114;;;17495:8;17461:18;:31;17480:8;;17489:1;17480:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17461:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17441:3;;;;;;;17401:114;;;;17288:234:::0;;;:::o;7354:184::-;7471:7;7503:11;:18;7515:5;7503:18;;;;;;;;;;;;;;;:27;7522:7;7503:27;;;;;;;;;;;;;;;;7496:34;;7354:184;;;;:::o;17165:115::-;1661:12;:10;:12::i;:::-;1651:22;;:6;;;;;;;;;;:22;;;1643:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17259:13:::1;17242:14;:30;;;;17165:115:::0;:::o;1894:244::-;1661:12;:10;:12::i;:::-;1651:22;;:6;;;;;;;;;;:22;;;1643:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2003:1:::1;1983:22;;:8;:22;;::::0;1975:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2093:8;2064:38;;2085:6;::::0;::::1;;;;;;;;2064:38;;;;;;;;;;;;2122:8;2113:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1894:244:::0;:::o;283:98::-;336:7;363:10;356:17;;283:98;:::o;8884:369::-;9028:1;9011:19;;:5;:19;;;9003:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9109:1;9090:21;;:7;:21;;;9082:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9191:6;9161:11;:18;9173:5;9161:18;;;;;;;;;;;;;;;:27;9180:7;9161:27;;;;;;;;;;;;;;;:36;;;;9229:7;9213:32;;9222:5;9213:32;;;9238:6;9213:32;;;;;;:::i;:::-;;;;;;;;8884:369;;;:::o;9261:2330::-;9399:1;9383:18;;:4;:18;;;9375:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9476:1;9462:16;;:2;:16;;;9454:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9546:1;9537:6;:10;9529:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9618:7;:5;:7::i;:::-;9610:15;;:4;:15;;;;:32;;;;;9635:7;:5;:7::i;:::-;9629:13;;:2;:13;;;;9610:32;9606:1259;;;9699:11;;;;;;;;;;;9694:144;;9747:7;:5;:7::i;:::-;9739:15;;:4;:15;;;9731:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9694:144;9872:12;;9862:6;:22;;9854:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9941:4;:10;9946:4;9941:10;;;;;;;;;;;;;;;;;;;;;;;;;9940:11;:24;;;;;9956:4;:8;9961:2;9956:8;;;;;;;;;;;;;;;;;;;;;;;;;9955:9;9940:24;9932:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10030:13;;;;;;;;;;;10024:19;;:2;:19;;;10021:146;;10097:14;;10088:6;10072:13;10082:2;10072:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10064:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10021:146;10183:28;10214:24;10232:4;10214:9;:24::i;:::-;10183:55;;10253:12;10292:19;;10268:20;:43;;10253:58;;10355:12;;10331:20;:36;10328:124;;10424:12;;10401:35;;10328:124;10472:7;:18;;;;;10484:6;;;;;;;;;;;10483:7;10472:18;:43;;;;;10502:13;;;;;;;;;;;10494:21;;:4;:21;;;;10472:43;:58;;;;;10519:11;;;;;;;;;;;10472:58;:87;;;;;10535:18;:24;10554:4;10535:24;;;;;;;;;;;;;;;;;;;;;;;;;10534:25;10472:87;:114;;;;;10564:18;:22;10583:2;10564:22;;;;;;;;;;;;;;;;;;;;;;;;;10563:23;10472:114;10468:386;;;10607:38;10624:20;10607:16;:38::i;:::-;10664:26;10693:21;10664:50;;10758:1;10737:18;:22;10733:106;;;10784:35;10797:21;10784:12;:35::i;:::-;10733:106;10588:266;10468:386;9644:1221;;9606:1259;10877:12;10892:4;10877:19;;10941:18;:24;10960:4;10941:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10969:18;:22;10988:2;10969:22;;;;;;;;;;;;;;;;;;;;;;;;;10941:50;10940:102;;;;11005:13;;;;;;;;;;;10997:21;;:4;:21;;;;:44;;;;;11028:13;;;;;;;;;;;11022:19;;:2;:19;;;;10997:44;10940:102;10936:594;;;11069:5;11059:15;;10936:594;;;11152:13;;;;;;;;;;;11144:21;;:4;:21;;;:55;;;;;11183:15;;;;;;;;;;;11169:30;;:2;:30;;;;11144:55;11141:162;;;11232:14;;11220:9;:26;;;;11275:12;;11265:7;:22;;;;11141:162;11362:13;;;;;;;;;;;11356:19;;:2;:19;;;:55;;;;;11395:15;;;;;;;;;;;11379:32;;:4;:32;;;;11356:55;11352:165;;;11444:15;;11432:9;:27;;;;11488:13;;11478:7;:23;;;;11352:165;10936:594;11542:41;11557:4;11563:2;11567:6;11575:7;11542:14;:41::i;:::-;9364:2227;9261:2330;;;:::o;2502:224::-;2622:7;2655:1;2650;:6;;2658:12;2642:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2682:9;2698:1;2694;:5;;;;:::i;:::-;2682:17;;2717:1;2710:8;;;2502:224;;;;;:::o;12090:94::-;12147:12;;;;;;;;;;;:21;;:29;12169:6;12147:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12090:94;:::o;8201:323::-;8296:7;8354;;8343;:18;;8321:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8442:19;8464:10;:8;:10::i;:::-;8442:32;;8492:24;8504:11;8492:7;:11;;:24;;;;:::i;:::-;8485:31;;;8201:323;;;:::o;11599:483::-;5984:4;5975:6;;:13;;;;;;;;;;;;;;;;;;11677:21:::1;11715:1;11701:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11677:40;;11746:4;11728;11733:1;11728:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11772:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11762:4;11767:1;11762:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11805:62;11822:4;11837:15;;;;;;;;;;;11855:11;11805:8;:62::i;:::-;11878:15;;;;;;;;;;;:66;;;11959:11;11985:1;12001:4;12028;12048:15;11878:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11666:416;6020:5:::0;6011:6;;:14;;;;;;;;;;;;;;;;;;11599:483;:::o;12977:282::-;13133:7;13128:28;;13142:14;:12;:14::i;:::-;13128:28;13167:44;13185:6;13193:9;13204:6;13167:17;:44::i;:::-;13227:7;13222:29;;13236:15;:13;:15::i;:::-;13222:29;12977:282;;;;:::o;15938:164::-;15980:7;16001:15;16018;16037:19;:17;:19::i;:::-;16000:56;;;;16074:20;16086:7;16074;:11;;:20;;;;:::i;:::-;16067:27;;;;15938:164;:::o;2988:132::-;3046:7;3073:39;3077:1;3080;3073:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3066:46;;2988:132;;;;:::o;8532:219::-;8592:1;8579:9;;:14;:30;;;;;8608:1;8597:7;;:12;8579:30;8611:7;8575:43;8650:9;;8630:17;:29;;;;8688:7;;8670:15;:25;;;;8720:1;8708:9;:13;;;;8742:1;8732:7;:11;;;;8532:219;:::o;13267:610::-;13414:15;13444:23;13482:12;13509:23;13547:12;13574:13;13601:19;13612:7;13601:10;:19::i;:::-;13399:221;;;;;;;;;;;;13649:28;13669:7;13649;:15;13657:6;13649:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13631:7;:15;13639:6;13631:15;;;;;;;;;;;;;;;:46;;;;13709:39;13732:15;13709:7;:18;13717:9;13709:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13688:7;:18;13696:9;13688:18;;;;;;;;;;;;;;;:60;;;;13759:16;13769:5;13759:9;:16::i;:::-;13786:23;13798:4;13804;13786:11;:23::i;:::-;13842:9;13825:44;;13834:6;13825:44;;;13853:15;13825:44;;;;;;:::i;:::-;;;;;;;;13388:489;;;;;;13267:610;;;:::o;8759:117::-;8815:17;;8803:9;:29;;;;8853:15;;8843:7;:25;;;;8759:117::o;16110:257::-;16161:7;16170;16190:15;16208:7;;16190:25;;16226:15;4786:1;4841:2;:15;;;;:::i;:::-;4829:9;:27;;;;:::i;:::-;16226:25;;16276:20;4786:1;4841:2;:15;;;;:::i;:::-;4829:9;:27;;;;:::i;:::-;16276:7;;:11;;:20;;;;:::i;:::-;16266:7;:30;16262:61;;;16306:7;;4786:1;4841:2;:15;;;;:::i;:::-;4829:9;:27;;;;:::i;:::-;16298:25;;;;;;;;16262:61;16342:7;16351;16334:25;;;;;;16110:257;;;:::o;3128:223::-;3248:7;3280:1;3276;:5;3283:12;3268:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3307:9;3323:1;3319;:5;;;;:::i;:::-;3307:17;;3342:1;3335:8;;;3128:223;;;;;:::o;14296:615::-;14396:7;14418;14440;14462;14484;14506;14542:23;14567:12;14581:13;14611:40;14623:7;14632:9;;14643:7;;14611:11;:40::i;:::-;14541:110;;;;;;14662:19;14684:10;:8;:10::i;:::-;14662:32;;14706:15;14723:23;14748:12;14777:46;14789:7;14798:4;14804:5;14811:11;14777;:46::i;:::-;14705:118;;;;;;14842:7;14851:15;14868:4;14874:15;14891:4;14897:5;14834:69;;;;;;;;;;;;;;;;;;;14296:615;;;;;;;:::o;2358:136::-;2416:7;2443:43;2447:1;2450;2443:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2436:50;;2358:136;;;;:::o;2171:179::-;2229:7;2249:9;2265:1;2261;:5;;;;:::i;:::-;2249:17;;2290:1;2285;:6;;2277:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2341:1;2334:8;;;2171:179;;;;:::o;13885:211::-;13938:19;13960:10;:8;:10::i;:::-;13938:32;;13981:13;13997:22;14007:11;13997:5;:9;;:22;;;;:::i;:::-;13981:38;;14055:33;14082:5;14055:7;:22;14071:4;14055:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14030:7;:22;14046:4;14030:22;;;;;;;;;;;;;;;:58;;;;13927:169;;13885:211;:::o;14104:147::-;14182:17;14194:4;14182:7;;:11;;:17;;;;:::i;:::-;14172:7;:27;;;;14223:20;14238:4;14223:10;;:14;;:20;;;;:::i;:::-;14210:10;:33;;;;14104:147;;:::o;14919:469::-;15088:7;15110;15132;15167:12;15182:30;15208:3;15182:21;15194:8;15182:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15167:45;;15223:13;15239:28;15263:3;15239:19;15251:6;15239:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15223:44;;15278:23;15304:28;15326:5;15304:17;15316:4;15304:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15278:54;;15351:15;15368:4;15374:5;15343:37;;;;;;;;;14919:469;;;;;;;:::o;15396:534::-;15590:7;15612;15634;15669:15;15687:24;15699:11;15687:7;:11;;:24;;;;:::i;:::-;15669:42;;15722:12;15737:21;15746:11;15737:4;:8;;:21;;;;:::i;:::-;15722:36;;15769:13;15785:22;15795:11;15785:5;:9;;:22;;;;:::i;:::-;15769:38;;15818:23;15844:28;15866:5;15844:17;15856:4;15844:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15818:54;;15891:7;15900:15;15917:4;15883:39;;;;;;;;;;15396:534;;;;;;;;:::o;2734:246::-;2792:7;2821:1;2816;:6;2812:47;;2846:1;2839:8;;;;2812:47;2869:9;2885:1;2881;:5;;;;:::i;:::-;2869:17;;2914:1;2909;2905;:5;;;;:::i;:::-;:10;2897:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2971:1;2964:8;;;2734: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:619::-;7690:6;7698;7706;7755:2;7743:9;7734:7;7730:23;7726:32;7723:119;;;7761:79;;:::i;:::-;7723:119;7881:1;7906:53;7951:7;7942:6;7931:9;7927:22;7906:53;:::i;:::-;7896:63;;7852:117;8008:2;8034:53;8079:7;8070:6;8059:9;8055:22;8034:53;:::i;:::-;8024:63;;7979:118;8136:2;8162:53;8207:7;8198:6;8187:9;8183:22;8162:53;:::i;:::-;8152:63;;8107:118;7613:619;;;;;:::o;8238:86::-;8273:7;8313:4;8306:5;8302:16;8291:27;;8238:86;;;:::o;8330:112::-;8413:22;8429:5;8413:22;:::i;:::-;8408:3;8401:35;8330:112;;:::o;8448:214::-;8537:4;8575:2;8564:9;8560:18;8552:26;;8588:67;8652:1;8641:9;8637:17;8628:6;8588:67;:::i;:::-;8448:214;;;;:::o;8668:118::-;8755:24;8773:5;8755:24;:::i;:::-;8750:3;8743:37;8668:118;;:::o;8792:222::-;8885:4;8923:2;8912:9;8908:18;8900:26;;8936:71;9004:1;8993:9;8989:17;8980:6;8936:71;:::i;:::-;8792:222;;;;:::o;9020:329::-;9079:6;9128:2;9116:9;9107:7;9103:23;9099:32;9096:119;;;9134:79;;:::i;:::-;9096:119;9254:1;9279:53;9324:7;9315:6;9304:9;9300:22;9279:53;:::i;:::-;9269:63;;9225:117;9020:329;;;;:::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:102;14348:8;14395:5;14392:1;14388:13;14367:34;;14306:102;;;:::o;14414:848::-;14475:5;14482:4;14506:6;14497:15;;14530:5;14521:14;;14544:712;14565:1;14555:8;14552:15;14544:712;;;14660:4;14655:3;14651:14;14645:4;14642:24;14639:50;;;14669:18;;:::i;:::-;14639:50;14719:1;14709:8;14705:16;14702:451;;;15134:4;15127:5;15123:16;15114:25;;14702:451;15184:4;15178;15174:15;15166:23;;15214:32;15237:8;15214:32;:::i;:::-;15202:44;;14544:712;;;14414:848;;;;;;;:::o;15268:1073::-;15322:5;15513:8;15503:40;;15534:1;15525:10;;15536:5;;15503:40;15562:4;15552:36;;15579:1;15570:10;;15581:5;;15552:36;15648:4;15696:1;15691:27;;;;15732:1;15727:191;;;;15641:277;;15691:27;15709:1;15700:10;;15711:5;;;15727:191;15772:3;15762:8;15759:17;15756:43;;;15779:18;;:::i;:::-;15756:43;15828:8;15825:1;15821:16;15812:25;;15863:3;15856:5;15853:14;15850:40;;;15870:18;;:::i;:::-;15850:40;15903:5;;;15641:277;;16027:2;16017:8;16014:16;16008:3;16002:4;15999:13;15995:36;15977:2;15967:8;15964:16;15959:2;15953:4;15950:12;15946:35;15930:111;15927:246;;;16083:8;16077:4;16073:19;16064:28;;16118:3;16111:5;16108:14;16105:40;;;16125:18;;:::i;:::-;16105:40;16158:5;;15927:246;16198:42;16236:3;16226:8;16220:4;16217:1;16198:42;:::i;:::-;16183:57;;;;16272:4;16267:3;16263:14;16256:5;16253:25;16250:51;;;16281:18;;:::i;:::-;16250:51;16330:4;16323:5;16319:16;16310:25;;15268:1073;;;;;;:::o;16347:281::-;16405:5;16429:23;16447:4;16429:23;:::i;:::-;16421:31;;16473:25;16489:8;16473:25;:::i;:::-;16461:37;;16517:104;16554:66;16544:8;16538:4;16517:104;:::i;:::-;16508:113;;16347:281;;;;:::o;16634:410::-;16674:7;16697:20;16715:1;16697:20;:::i;:::-;16692:25;;16731:20;16749:1;16731:20;:::i;:::-;16726:25;;16786:1;16783;16779:9;16808:30;16826:11;16808:30;:::i;:::-;16797:41;;16987:1;16978:7;16974:15;16971:1;16968:22;16948:1;16941:9;16921:83;16898:139;;17017:18;;:::i;:::-;16898:139;16682:362;16634:410;;;;:::o;17050:225::-;17190:34;17186:1;17178:6;17174:14;17167:58;17259:8;17254:2;17246:6;17242:15;17235:33;17050:225;:::o;17281:366::-;17423:3;17444:67;17508:2;17503:3;17444:67;:::i;:::-;17437:74;;17520:93;17609:3;17520:93;:::i;:::-;17638:2;17633:3;17629:12;17622:19;;17281:366;;;:::o;17653:419::-;17819:4;17857:2;17846:9;17842:18;17834:26;;17906:9;17900:4;17896:20;17892:1;17881:9;17877:17;17870:47;17934:131;18060:4;17934:131;:::i;:::-;17926:139;;17653:419;;;:::o;18078:223::-;18218:34;18214:1;18206:6;18202:14;18195:58;18287:6;18282:2;18274:6;18270:15;18263:31;18078:223;:::o;18307:366::-;18449:3;18470:67;18534:2;18529:3;18470:67;:::i;:::-;18463:74;;18546:93;18635:3;18546:93;:::i;:::-;18664:2;18659:3;18655:12;18648:19;;18307:366;;;:::o;18679:419::-;18845:4;18883:2;18872:9;18868:18;18860:26;;18932:9;18926:4;18922:20;18918:1;18907:9;18903:17;18896:47;18960:131;19086:4;18960:131;:::i;:::-;18952:139;;18679:419;;;:::o;19104:221::-;19244:34;19240:1;19232:6;19228:14;19221:58;19313:4;19308:2;19300:6;19296:15;19289:29;19104:221;:::o;19331:366::-;19473:3;19494:67;19558:2;19553:3;19494:67;:::i;:::-;19487:74;;19570:93;19659:3;19570:93;:::i;:::-;19688:2;19683:3;19679:12;19672:19;;19331:366;;;:::o;19703:419::-;19869:4;19907:2;19896:9;19892:18;19884:26;;19956:9;19950:4;19946:20;19942:1;19931:9;19927:17;19920:47;19984:131;20110:4;19984:131;:::i;:::-;19976:139;;19703:419;;;:::o;20128:224::-;20268:34;20264:1;20256:6;20252:14;20245:58;20337:7;20332:2;20324:6;20320:15;20313:32;20128:224;:::o;20358:366::-;20500:3;20521:67;20585:2;20580:3;20521:67;:::i;:::-;20514:74;;20597:93;20686:3;20597:93;:::i;:::-;20715:2;20710:3;20706:12;20699:19;;20358:366;;;:::o;20730:419::-;20896:4;20934:2;20923:9;20919:18;20911:26;;20983:9;20977:4;20973:20;20969:1;20958:9;20954:17;20947:47;21011:131;21137:4;21011:131;:::i;:::-;21003:139;;20730:419;;;:::o;21155:222::-;21295:34;21291:1;21283:6;21279:14;21272:58;21364:5;21359:2;21351:6;21347:15;21340:30;21155:222;:::o;21383:366::-;21525:3;21546:67;21610:2;21605:3;21546:67;:::i;:::-;21539:74;;21622:93;21711:3;21622:93;:::i;:::-;21740:2;21735:3;21731:12;21724:19;;21383:366;;;:::o;21755:419::-;21921:4;21959:2;21948:9;21944:18;21936:26;;22008:9;22002:4;21998:20;21994:1;21983:9;21979:17;21972:47;22036:131;22162:4;22036:131;:::i;:::-;22028:139;;21755:419;;;:::o;22180:228::-;22320:34;22316:1;22308:6;22304:14;22297:58;22389:11;22384:2;22376:6;22372:15;22365:36;22180:228;:::o;22414:366::-;22556:3;22577:67;22641:2;22636:3;22577:67;:::i;:::-;22570:74;;22653:93;22742:3;22653:93;:::i;:::-;22771:2;22766:3;22762:12;22755:19;;22414:366;;;:::o;22786:419::-;22952:4;22990:2;22979:9;22975:18;22967:26;;23039:9;23033:4;23029:20;23025:1;23014:9;23010:17;23003:47;23067:131;23193:4;23067:131;:::i;:::-;23059:139;;22786:419;;;:::o;23211:250::-;23351:34;23347:1;23339:6;23335:14;23328:58;23420:33;23415:2;23407:6;23403:15;23396:58;23211:250;:::o;23467:366::-;23609:3;23630:67;23694:2;23689:3;23630:67;:::i;:::-;23623:74;;23706:93;23795:3;23706:93;:::i;:::-;23824:2;23819:3;23815:12;23808:19;;23467:366;;;:::o;23839:419::-;24005:4;24043:2;24032:9;24028:18;24020:26;;24092:9;24086:4;24082:20;24078:1;24067:9;24063:17;24056:47;24120:131;24246:4;24120:131;:::i;:::-;24112:139;;23839:419;;;:::o;24264:178::-;24404:30;24400:1;24392:6;24388:14;24381:54;24264:178;:::o;24448:366::-;24590:3;24611:67;24675:2;24670:3;24611:67;:::i;:::-;24604:74;;24687:93;24776:3;24687:93;:::i;:::-;24805:2;24800:3;24796:12;24789:19;;24448:366;;;:::o;24820:419::-;24986:4;25024:2;25013:9;25009:18;25001:26;;25073:9;25067:4;25063:20;25059:1;25048:9;25044:17;25037:47;25101:131;25227:4;25101:131;:::i;:::-;25093:139;;24820:419;;;:::o;25245:222::-;25385:34;25381:1;25373:6;25369:14;25362:58;25454:5;25449:2;25441:6;25437:15;25430:30;25245:222;:::o;25473:366::-;25615:3;25636:67;25700:2;25695:3;25636:67;:::i;:::-;25629:74;;25712:93;25801:3;25712:93;:::i;:::-;25830:2;25825:3;25821:12;25814:19;;25473:366;;;:::o;25845:419::-;26011:4;26049:2;26038:9;26034:18;26026:26;;26098:9;26092:4;26088:20;26084:1;26073:9;26069:17;26062:47;26126:131;26252:4;26126:131;:::i;:::-;26118:139;;25845:419;;;:::o;26270:191::-;26310:3;26329:20;26347:1;26329:20;:::i;:::-;26324:25;;26363:20;26381:1;26363:20;:::i;:::-;26358:25;;26406:1;26403;26399:9;26392:16;;26427:3;26424:1;26421:10;26418:36;;;26434:18;;:::i;:::-;26418:36;26270:191;;;;:::o;26467:222::-;26607:34;26603:1;26595:6;26591:14;26584:58;26676:5;26671:2;26663:6;26659:15;26652:30;26467:222;:::o;26695:366::-;26837:3;26858:67;26922:2;26917:3;26858:67;:::i;:::-;26851:74;;26934:93;27023:3;26934:93;:::i;:::-;27052:2;27047:3;27043:12;27036:19;;26695:366;;;:::o;27067:419::-;27233:4;27271:2;27260:9;27256:18;27248:26;;27320:9;27314:4;27310:20;27306:1;27295:9;27291:17;27284:47;27348:131;27474:4;27348:131;:::i;:::-;27340:139;;27067:419;;;:::o;27492:194::-;27532:4;27552:20;27570:1;27552:20;:::i;:::-;27547:25;;27586:20;27604:1;27586:20;:::i;:::-;27581:25;;27630:1;27627;27623:9;27615:17;;27654:1;27648:4;27645:11;27642:37;;;27659:18;;:::i;:::-;27642:37;27492:194;;;;:::o;27692:229::-;27832:34;27828:1;27820:6;27816:14;27809:58;27901:12;27896:2;27888:6;27884:15;27877:37;27692:229;:::o;27927:366::-;28069:3;28090:67;28154:2;28149:3;28090:67;:::i;:::-;28083:74;;28166:93;28255:3;28166:93;:::i;:::-;28284:2;28279:3;28275:12;28268:19;;27927:366;;;:::o;28299:419::-;28465:4;28503:2;28492:9;28488:18;28480:26;;28552:9;28546:4;28542:20;28538:1;28527:9;28523:17;28516:47;28580:131;28706:4;28580:131;:::i;:::-;28572:139;;28299:419;;;:::o;28724:143::-;28781:5;28812:6;28806:13;28797:22;;28828:33;28855:5;28828:33;:::i;:::-;28724:143;;;;:::o;28873:351::-;28943:6;28992:2;28980:9;28971:7;28967:23;28963:32;28960:119;;;28998:79;;:::i;:::-;28960:119;29118:1;29143:64;29199:7;29190:6;29179:9;29175:22;29143:64;:::i;:::-;29133:74;;29089:128;28873:351;;;;:::o;29230:85::-;29275:7;29304:5;29293:16;;29230:85;;;:::o;29321:158::-;29379:9;29412:61;29430:42;29439:32;29465:5;29439:32;:::i;:::-;29430:42;:::i;:::-;29412:61;:::i;:::-;29399:74;;29321:158;;;:::o;29485:147::-;29580:45;29619:5;29580:45;:::i;:::-;29575:3;29568:58;29485:147;;:::o;29638:114::-;29705:6;29739:5;29733:12;29723:22;;29638:114;;;:::o;29758:184::-;29857:11;29891:6;29886:3;29879:19;29931:4;29926:3;29922:14;29907:29;;29758:184;;;;:::o;29948:132::-;30015:4;30038:3;30030:11;;30068:4;30063:3;30059:14;30051:22;;29948:132;;;:::o;30086:108::-;30163:24;30181:5;30163:24;:::i;:::-;30158:3;30151:37;30086:108;;:::o;30200:179::-;30269:10;30290:46;30332:3;30324:6;30290:46;:::i;:::-;30368:4;30363:3;30359:14;30345:28;;30200:179;;;;:::o;30385:113::-;30455:4;30487;30482:3;30478:14;30470:22;;30385:113;;;:::o;30534:732::-;30653:3;30682:54;30730:5;30682:54;:::i;:::-;30752:86;30831:6;30826:3;30752:86;:::i;:::-;30745:93;;30862:56;30912:5;30862:56;:::i;:::-;30941:7;30972:1;30957:284;30982:6;30979:1;30976:13;30957:284;;;31058:6;31052:13;31085:63;31144:3;31129:13;31085:63;:::i;:::-;31078:70;;31171:60;31224:6;31171:60;:::i;:::-;31161:70;;31017:224;31004:1;31001;30997:9;30992:14;;30957:284;;;30961:14;31257:3;31250:10;;30658:608;;;30534:732;;;;:::o;31272:831::-;31535:4;31573:3;31562:9;31558:19;31550:27;;31587:71;31655:1;31644:9;31640:17;31631:6;31587:71;:::i;:::-;31668:80;31744:2;31733:9;31729:18;31720:6;31668:80;:::i;:::-;31795:9;31789:4;31785:20;31780:2;31769:9;31765:18;31758:48;31823:108;31926:4;31917:6;31823:108;:::i;:::-;31815:116;;31941:72;32009:2;31998:9;31994:18;31985:6;31941:72;:::i;:::-;32023:73;32091:3;32080:9;32076:19;32067:6;32023:73;:::i;:::-;31272:831;;;;;;;;:::o;32109:180::-;32157:77;32154:1;32147:88;32254:4;32251:1;32244:15;32278:4;32275:1;32268:15;32295:185;32335:1;32352:20;32370:1;32352:20;:::i;:::-;32347:25;;32386:20;32404:1;32386:20;:::i;:::-;32381:25;;32425:1;32415:35;;32430:18;;:::i;:::-;32415:35;32472:1;32469;32465:9;32460:14;;32295:185;;;;:::o;32486:177::-;32626:29;32622:1;32614:6;32610:14;32603:53;32486:177;:::o;32669:366::-;32811:3;32832:67;32896:2;32891:3;32832:67;:::i;:::-;32825:74;;32908:93;32997:3;32908:93;:::i;:::-;33026:2;33021:3;33017:12;33010:19;;32669:366;;;:::o;33041:419::-;33207:4;33245:2;33234:9;33230:18;33222:26;;33294:9;33288:4;33284:20;33280:1;33269:9;33265:17;33258:47;33322:131;33448:4;33322:131;:::i;:::-;33314:139;;33041:419;;;:::o;33466:220::-;33606:34;33602:1;33594:6;33590:14;33583:58;33675:3;33670:2;33662:6;33658:15;33651:28;33466:220;:::o;33692:366::-;33834:3;33855:67;33919:2;33914:3;33855:67;:::i;:::-;33848:74;;33931:93;34020:3;33931:93;:::i;:::-;34049:2;34044:3;34040:12;34033:19;;33692:366;;;:::o;34064:419::-;34230:4;34268:2;34257:9;34253:18;34245:26;;34317:9;34311:4;34307:20;34303:1;34292:9;34288:17;34281:47;34345:131;34471:4;34345:131;:::i;:::-;34337:139;;34064:419;;;:::o

Swarm Source

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