ETH Price: $2,360.04 (+1.28%)

Token

Quark 3.0 Token (QUARK 3)
 

Overview

Max Total Supply

10,000,000,000,000 QUARK 3

Holders

32

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,330,015,338.091905674314051858 QUARK 3

Value
$0.00
0x64cb2aa6fcb7a47c7337e2206dc689c31360ffb3
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:
QuarkToken3

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-02-14
*/

/*

░██████╗░██╗░░░██╗░█████╗░██████╗░██╗░░██╗  ██████╗░░░░░█████╗░
██╔═══██╗██║░░░██║██╔══██╗██╔══██╗██║░██╔╝  ╚════██╗░░░██╔══██╗
██║██╗██║██║░░░██║███████║██████╔╝█████═╝░  ░█████╔╝░░░██║░░██║
╚██████╔╝██║░░░██║██╔══██║██╔══██╗██╔═██╗░  ░╚═══██╗░░░██║░░██║
░╚═██╔═╝░╚██████╔╝██║░░██║██║░░██║██║░╚██╗  ██████╔╝██╗╚█████╔╝
░░░╚═╝░░░░╚═════╝░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝  ╚═════╝░╚═╝░╚════╝░


Website:  https://www.quarktoken.io
Marketplace: https://quarkmarket.com
Telegram: https://t.me/QuarkToken
Twitter:  @QuarkToken

CEO: @jimango
CA author: @bLock_doctor

*/
// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.12;
 
library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }
    function _verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) private pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
interface IUniRouterV1
{
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
 
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
interface IUniRouterV2 is IUniRouterV1
{
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}
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);
}
interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}
contract Ownable {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), _owner);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(msg.sender==owner(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        _owner = address(0);
        emit OwnershipTransferred(_owner, address(0));
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
    }
}
contract QuarkToken3 is IERC20, Ownable {

    uint8 private _buyTax = 5;
    uint8 private _sellTax = 5;
    uint8 private constant _decimals = 18;

    uint256 private constant _totalSupply = 10000000000000 * 10 ** _decimals; // 10T
    uint256 private _swapTokenThreshold = 50000000000 * 10 ** _decimals;

    string private constant _tokenName = "Quark 3.0 Token";
    string private constant _tokenSymbol = "QUARK 3";

    bool private _tradingEnabled;
    bool private _swapEnabled;
    bool private _inSwap;

    IUniRouterV2 private _router;
    address private _pairAddress;
    address public constant quarkCEO = address(0x6F0a450e3C949f3063f625f1004C360Ef4d2B49e);
    address public constant burnWallet = address(0xdead);
    address public constant zeroAddress = address(0);

    mapping(address => uint256) private _balances;
    mapping(address => bool) private _excludedFromFees;
    mapping(address => bool) private _automatedMarketMakers;
    mapping(address => mapping (address => uint256)) private _allowances;

    modifier LockTheSwap {
        _inSwap = true;
        _;
        _inSwap = false;
    }
    constructor() {
        _excludedFromFees[msg.sender] = true;
        _excludedFromFees[address(this)] = true;
        _excludedFromFees[burnWallet] = true;
        _excludedFromFees[zeroAddress] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        bool isExcluded = _excludedFromFees[from] || _excludedFromFees[to];
        bool isBuy = _automatedMarketMakers[from];
        bool isSell = _automatedMarketMakers[to];
        if (isExcluded) _transferTokens(from, to, amount, 0);
        else {
            require(_tradingEnabled, "Trading is not enabled!");
            if (isBuy) _transferTokens(from, to, amount, _buyTax);
            else if (isSell) {
                if (!_inSwap && _swapEnabled) _swapContractTokens();
                _transferTokens(from, to, amount, _sellTax);
            } else _transferTokens(from, to, amount, 0);
        }
    }
    function _transferTokens(
        address from,
        address to,
        uint256 amount,
        uint8 taxPercent
    ) private {
        uint256 taxAmount = amount * taxPercent / 100;
        _balances[from] -= amount;
        _balances[address(this)] += taxAmount;
        _balances[to] += amount - taxAmount;
        emit Transfer(from, to, amount - taxAmount);
    }
    function _swapContractTokens() private LockTheSwap {
        uint256 contractTokenBalance = _balances[address(this)];
        if (contractTokenBalance >= _swapTokenThreshold) {
            uint256 oldETH = address(this).balance;
            _swapTokensForETH(contractTokenBalance);
            uint256 newETH = address(this).balance - oldETH;
            require(newETH > 0);
            (bool transferMarketing,) = payable(quarkCEO).call{value: address(this).balance, gas: 30000}("");
            require(transferMarketing, "Error transferring ETH.");
        }
    }
    // LIQUIDTY FUNCTIONS \\
    function _swapTokensForETH(
        uint256 tokenAmount
    ) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _router.WETH();
        _approve(address(this), address(_router), tokenAmount);
        _router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, 
            path,
            address(this),
            block.timestamp
        );
    }
    // OWNER FUNCTIONS \\ 
    function ownerCreatePair(
        address routerAddress
    ) public onlyOwner {
        require(!_tradingEnabled, "Cannot create pair after trading enabled!");
        _router = IUniRouterV2(routerAddress);
        _pairAddress = IDEXFactory(_router.factory()).createPair(_router.WETH(), address(this));
        _allowances[address(this)][address(_router)] = type(uint256).max;
        _automatedMarketMakers[_pairAddress] = true;
    }
    // Trading can only be enabled, not disabled.
    function ownerEnableTrading() public onlyOwner {
        require(!_tradingEnabled, "Cannot disable trading!");
        _tradingEnabled = !_tradingEnabled;
    }
    // Swap tokens from contract for ETH / ALV
    function ownerTriggerSwap() public onlyOwner {
        _swapContractTokens();
    }
    // Set taxes, buy tax + sell tax cannot exceed 10% .
    function ownerUpdateTax(
        uint8 buyTax,
        uint8 sellTax
    ) public onlyOwner {
        require(buyTax + sellTax <= 20, "Buy tax + sell tax cannot exceed 10% !");
        _buyTax = buyTax;
        _sellTax = sellTax;
    }
    // Exclude address from fees.
    function ownerExcludeFromFee(
        address account,
        bool enabled
    ) public onlyOwner {
        _excludedFromFees[account] = enabled;
    }
    function ownerToggleSwapEnabled(
        bool swapEnabled
    ) public onlyOwner {
        _swapEnabled = swapEnabled;
    }
    // Tokens to be sold by the contract.
    function ownerSetSwapThreshold(
        uint256 swapTokenThreshold
    ) public onlyOwner {
        require(_swapTokenThreshold > 0, "Must be greater than zero.");
        require(swapTokenThreshold <= 50000000000, "Cannot exceed 50 billion.");
        _swapTokenThreshold = swapTokenThreshold * 10 ** _decimals;
    }
    // Withdraw any stuck ETH balance in contract.
    function ownerWithdrawETH() public onlyOwner {
        (bool success,) = msg.sender.call{value: (address(this).balance)}("");
        require(success, "Error withdrawing ETH.");
    }
    // Remove foreign tokens from contract balance.
    function ownerWithdrawStrandedToken(
        address strandedToken
    ) public onlyOwner {
        require(strandedToken != _pairAddress && strandedToken != address(this));
        IERC20 token = IERC20(strandedToken);
        token.transfer(msg.sender, token.balanceOf(address(this)));
    }
    // END OF OWNER FUNCTIONS \\ 

    // START OF GETTERS \\
    function showTradeTaxes() public view returns (
        uint8 buyTax,
        uint8 sellTax
    ) {
        buyTax = _buyTax;
        sellTax = _sellTax;
    }
    function getPairAddress() public view returns (address) {
        return _pairAddress;
    }
    function isSwapEnabled() public view returns (bool) {
        return _swapEnabled;
    }
    function getSwapTokenThreshold() public view returns (uint256) {
        return _swapTokenThreshold;
    }
    // END OF GETTERS \\ 

    function transfer(
        address recipient, 
        uint256 amount
    ) external override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }
    function transferFrom(
        address sender, 
        address recipient, 
        uint256 amount
    ) external override returns (bool) {
        uint256 allowance_ = _allowances[sender][msg.sender];
        _transfer(sender, recipient, amount);
        require(allowance_ >= amount);
        _approve(sender, msg.sender, allowance_ - amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }
    function _approve(
        address owner, 
        address spender, 
        uint256 amount
    ) private {
        require((owner != address(0) && spender != address(0)), "Owner/Spender address cannot be 0.");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function approve(
        address spender, 
        uint256 amount
    ) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }
    function allowance(
        address owner_,
        address spender
    ) external view override returns (uint256) {
        return _allowances[owner_][spender];
    }
    function balanceOf(
        address account
    ) external view override returns (uint256) {
        return _balances[account];
    }
    function name() external pure returns (string memory) {
        return _tokenName;
    }
    function symbol() external pure returns (string memory) {
        return _tokenSymbol;
    }
    function totalSupply() external pure override returns (uint256) {
        return _totalSupply;
    }
    function decimals() external pure returns (uint8) {
        return _decimals;
    }
    function getOwner() external view returns (address) {
        return owner();
    }
    receive() external payable  {}
}

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":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":"owner_","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSwapTokenThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"address","name":"routerAddress","type":"address"}],"name":"ownerCreatePair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ownerEnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"ownerExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokenThreshold","type":"uint256"}],"name":"ownerSetSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"}],"name":"ownerToggleSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ownerTriggerSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buyTax","type":"uint8"},{"internalType":"uint8","name":"sellTax","type":"uint8"}],"name":"ownerUpdateTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ownerWithdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"strandedToken","type":"address"}],"name":"ownerWithdrawStrandedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"quarkCEO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"showTradeTaxes","outputs":[{"internalType":"uint8","name":"buyTax","type":"uint8"},{"internalType":"uint8","name":"sellTax","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526005600060146101000a81548160ff021916908360ff1602179055506005600060156101000a81548160ff021916908360ff1602179055506012600a6200004c91906200051c565b640ba43b74006200005e91906200056d565b6001553480156200006e57600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36001600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016005600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506012600a6200029c91906200051c565b6509184e72a000620002af91906200056d565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a6200035291906200051c565b6509184e72a0006200036591906200056d565b604051620003749190620005df565b60405180910390a3620005fc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200041057808604811115620003e857620003e762000382565b5b6001851615620003f85780820291505b80810290506200040885620003b1565b9450620003c8565b94509492505050565b6000826200042b5760019050620004fe565b816200043b5760009050620004fe565b81600181146200045457600281146200045f5762000495565b6001915050620004fe565b60ff84111562000474576200047362000382565b5b8360020a9150848211156200048e576200048d62000382565b5b50620004fe565b5060208310610133831016604e8410600b8410161715620004cf5782820a905083811115620004c957620004c862000382565b5b620004fe565b620004de8484846001620003be565b92509050818404811115620004f857620004f762000382565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620005298262000505565b915062000536836200050f565b9250620005657fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000419565b905092915050565b60006200057a8262000505565b9150620005878362000505565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620005c357620005c262000382565b5b828202905092915050565b620005d98162000505565b82525050565b6000602082019050620005f66000830184620005ce565b92915050565b6132c0806200060c6000396000f3fe6080604052600436106101c65760003560e01c8063715018a6116100f7578063a9059cbb11610095578063ea45eac611610064578063ea45eac614610605578063ec79d52a14610631578063eeb63f5c1461065a578063f2fde38b14610685576101cd565b8063a9059cbb14610539578063c15a1ae814610576578063c17f3f5a1461059f578063dd62ed3e146105c8576101cd565b80638d5f81e2116100d15780638d5f81e2146104a15780638da5cb5b146104cc57806395d89b41146104f7578063a446f14014610522576101cd565b8063715018a614610448578063729338e81461045f578063893d20e814610476576101cd565b806323b872dd11610164578063351a964d1161013e578063351a964d1461038e57806359f1b79e146103b95780635fb6e59f146103e257806370a082311461040b576101cd565b806323b872dd1461030f57806327a910dc1461034c578063313ce56714610363576101cd565b80630930907b116101a05780630930907b14610251578063095ea7b31461027c57806318160ddd146102b95780631d175ab5146102e4576101cd565b806301d74199146101d257806306228749146101fb57806306fdde0314610226576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101f960048036038101906101f491906122db565b6106ae565b005b34801561020757600080fd5b506102106107af565b60405161021d919061235c565b60405180910390f35b34801561023257600080fd5b5061023b6107b5565b6040516102489190612410565b60405180910390f35b34801561025d57600080fd5b506102666107f2565b604051610273919061235c565b60405180910390f35b34801561028857600080fd5b506102a3600480360381019061029e9190612494565b6107f7565b6040516102b091906124ef565b60405180910390f35b3480156102c557600080fd5b506102ce61080e565b6040516102db9190612519565b60405180910390f35b3480156102f057600080fd5b506102f9610834565b604051610306919061235c565b60405180910390f35b34801561031b57600080fd5b5061033660048036038101906103319190612534565b61084c565b60405161034391906124ef565b60405180910390f35b34801561035857600080fd5b5061036161096d565b005b34801561036f57600080fd5b50610378610a91565b6040516103859190612596565b60405180910390f35b34801561039a57600080fd5b506103a3610a9a565b6040516103b091906124ef565b60405180910390f35b3480156103c557600080fd5b506103e060048036038101906103db91906125b1565b610ab1565b005b3480156103ee57600080fd5b506104096004803603810190610404919061260a565b610ed5565b005b34801561041757600080fd5b50610432600480360381019061042d91906125b1565b610fa5565b60405161043f9190612519565b60405180910390f35b34801561045457600080fd5b5061045d610fee565b005b34801561046b57600080fd5b50610474611121565b005b34801561048257600080fd5b5061048b611212565b604051610498919061235c565b60405180910390f35b3480156104ad57600080fd5b506104b6611221565b6040516104c3919061235c565b60405180910390f35b3480156104d857600080fd5b506104e161124b565b6040516104ee919061235c565b60405180910390f35b34801561050357600080fd5b5061050c611274565b6040516105199190612410565b60405180910390f35b34801561052e57600080fd5b506105376112b1565b005b34801561054557600080fd5b50610560600480360381019061055b9190612494565b611330565b60405161056d91906124ef565b60405180910390f35b34801561058257600080fd5b5061059d6004803603810190610598919061264a565b611347565b005b3480156105ab57600080fd5b506105c660048036038101906105c19190612677565b61146b565b005b3480156105d457600080fd5b506105ef60048036038101906105ea91906126a4565b6114fd565b6040516105fc9190612519565b60405180910390f35b34801561061157600080fd5b5061061a611584565b6040516106289291906126e4565b60405180910390f35b34801561063d57600080fd5b50610658600480360381019061065391906125b1565b6115af565b005b34801561066657600080fd5b5061066f6117b8565b60405161067c9190612519565b60405180910390f35b34801561069157600080fd5b506106ac60048036038101906106a791906125b1565b6117c2565b005b6106b661124b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071a90612759565b60405180910390fd5b6014818361073191906127a8565b60ff161115610775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076c90612851565b60405180910390fd5b81600060146101000a81548160ff021916908360ff16021790555080600060156101000a81548160ff021916908360ff1602179055505050565b61dead81565b60606040518060400160405280600f81526020017f517561726b20332e3020546f6b656e0000000000000000000000000000000000815250905090565b600081565b6000610804338484611964565b6001905092915050565b60006012600a61081e91906129a4565b6509184e72a00061082f91906129ef565b905090565b736f0a450e3c949f3063f625f1004c360ef4d2b49e81565b600080600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506108d9858585611af8565b828110156108e657600080fd5b6108fc853385846108f79190612a49565b611964565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516109599190612519565b60405180910390a360019150509392505050565b61097561124b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d990612759565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051610a0890612aae565b60006040518083038185875af1925050503d8060008114610a45576040519150601f19603f3d011682016040523d82523d6000602084013e610a4a565b606091505b5050905080610a8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8590612b0f565b60405180910390fd5b50565b60006012905090565b6000600260019054906101000a900460ff16905090565b610ab961124b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1d90612759565b60405180910390fd5b600260009054906101000a900460ff1615610b76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6d90612ba1565b60405180910390fd5b80600260036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c489190612bd6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf49190612bd6565b306040518363ffffffff1660e01b8152600401610d12929190612c03565b6020604051808303816000875af1158015610d31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d559190612bd6565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600260039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160066000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610edd61124b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4190612759565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ff661124b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105a90612759565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b61112961124b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118d90612759565b60405180910390fd5b600260009054906101000a900460ff16156111e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111dd90612c78565b60405180910390fd5b600260009054906101000a900460ff1615600260006101000a81548160ff021916908315150217905550565b600061121c61124b565b905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f515541524b203300000000000000000000000000000000000000000000000000815250905090565b6112b961124b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131d90612759565b60405180910390fd5b61132e611d3f565b565b600061133d338484611af8565b6001905092915050565b61134f61124b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b390612759565b60405180910390fd5b600060015411611401576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f890612ce4565b60405180910390fd5b640ba43b7400811115611449576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144090612d50565b60405180910390fd5b6012600a61145791906129a4565b8161146291906129ef565b60018190555050565b61147361124b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d790612759565b60405180910390fd5b80600260016101000a81548160ff02191690831515021790555050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080600060149054906101000a900460ff169150600060159054906101000a900460ff1690509091565b6115b761124b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161b90612759565b60405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156116ae57503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b6116b757600080fd5b60008190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611712919061235c565b602060405180830381865afa15801561172f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117539190612d85565b6040518363ffffffff1660e01b8152600401611770929190612db2565b6020604051808303816000875af115801561178f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b39190612df0565b505050565b6000600154905090565b6117ca61124b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182e90612759565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189e90612e8f565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119ce5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0490612f21565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611aeb9190612519565b60405180910390a3505050565b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b9b5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b90506000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690506000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690508215611c5757611c528686866000611eb7565b611d37565b600260009054906101000a900460ff16611ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9d90612f8d565b60405180910390fd5b8115611ccc57611cc7868686600060149054906101000a900460ff16611eb7565b611d36565b8015611d275760028054906101000a900460ff16158015611cf95750600260019054906101000a900460ff165b15611d0757611d06611d3f565b5b611d22868686600060159054906101000a900460ff16611eb7565b611d35565b611d348686866000611eb7565b5b5b5b505050505050565b60016002806101000a81548160ff0219169083151502179055506000600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506001548110611e9a576000479050611db48261205a565b60008147611dc29190612a49565b905060008111611dd157600080fd5b6000736f0a450e3c949f3063f625f1004c360ef4d2b49e73ffffffffffffffffffffffffffffffffffffffff164761753090604051611e0f90612aae565b600060405180830381858888f193505050503d8060008114611e4d576040519150601f19603f3d011682016040523d82523d6000602084013e611e52565b606091505b5050905080611e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8d90612ff9565b60405180910390fd5b5050505b5060006002806101000a81548160ff021916908315150217905550565b600060648260ff1684611eca91906129ef565b611ed49190613048565b905082600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f259190612a49565b9250508190555080600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f7b9190613079565b925050819055508083611f8e9190612a49565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611fdc9190613079565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838661203e9190612a49565b60405161204b9190612519565b60405180910390a35050505050565b6000600267ffffffffffffffff811115612077576120766130cf565b5b6040519080825280602002602001820160405280156120a55781602001602082028036833780820191505090505b50905030816000815181106120bd576120bc6130fe565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612164573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121889190612bd6565b8160018151811061219c5761219b6130fe565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061220330600260039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611964565b600260039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612267959493929190613230565b600060405180830381600087803b15801561228157600080fd5b505af1158015612295573d6000803e3d6000fd5b505050505050565b600080fd5b600060ff82169050919050565b6122b8816122a2565b81146122c357600080fd5b50565b6000813590506122d5816122af565b92915050565b600080604083850312156122f2576122f161229d565b5b6000612300858286016122c6565b9250506020612311858286016122c6565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006123468261231b565b9050919050565b6123568161233b565b82525050565b6000602082019050612371600083018461234d565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156123b1578082015181840152602081019050612396565b838111156123c0576000848401525b50505050565b6000601f19601f8301169050919050565b60006123e282612377565b6123ec8185612382565b93506123fc818560208601612393565b612405816123c6565b840191505092915050565b6000602082019050818103600083015261242a81846123d7565b905092915050565b61243b8161233b565b811461244657600080fd5b50565b60008135905061245881612432565b92915050565b6000819050919050565b6124718161245e565b811461247c57600080fd5b50565b60008135905061248e81612468565b92915050565b600080604083850312156124ab576124aa61229d565b5b60006124b985828601612449565b92505060206124ca8582860161247f565b9150509250929050565b60008115159050919050565b6124e9816124d4565b82525050565b600060208201905061250460008301846124e0565b92915050565b6125138161245e565b82525050565b600060208201905061252e600083018461250a565b92915050565b60008060006060848603121561254d5761254c61229d565b5b600061255b86828701612449565b935050602061256c86828701612449565b925050604061257d8682870161247f565b9150509250925092565b612590816122a2565b82525050565b60006020820190506125ab6000830184612587565b92915050565b6000602082840312156125c7576125c661229d565b5b60006125d584828501612449565b91505092915050565b6125e7816124d4565b81146125f257600080fd5b50565b600081359050612604816125de565b92915050565b600080604083850312156126215761262061229d565b5b600061262f85828601612449565b9250506020612640858286016125f5565b9150509250929050565b6000602082840312156126605761265f61229d565b5b600061266e8482850161247f565b91505092915050565b60006020828403121561268d5761268c61229d565b5b600061269b848285016125f5565b91505092915050565b600080604083850312156126bb576126ba61229d565b5b60006126c985828601612449565b92505060206126da85828601612449565b9150509250929050565b60006040820190506126f96000830185612587565b6127066020830184612587565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612743602083612382565b915061274e8261270d565b602082019050919050565b6000602082019050818103600083015261277281612736565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006127b3826122a2565b91506127be836122a2565b92508260ff038211156127d4576127d3612779565b5b828201905092915050565b7f42757920746178202b2073656c6c207461782063616e6e6f742065786365656460008201527f2031302520210000000000000000000000000000000000000000000000000000602082015250565b600061283b602683612382565b9150612846826127df565b604082019050919050565b6000602082019050818103600083015261286a8161282e565b9050919050565b60008160011c9050919050565b6000808291508390505b60018511156128c8578086048111156128a4576128a3612779565b5b60018516156128b35780820291505b80810290506128c185612871565b9450612888565b94509492505050565b6000826128e1576001905061299d565b816128ef576000905061299d565b8160018114612905576002811461290f5761293e565b600191505061299d565b60ff84111561292157612920612779565b5b8360020a91508482111561293857612937612779565b5b5061299d565b5060208310610133831016604e8410600b84101617156129735782820a90508381111561296e5761296d612779565b5b61299d565b612980848484600161287e565b9250905081840481111561299757612996612779565b5b81810290505b9392505050565b60006129af8261245e565b91506129ba836122a2565b92506129e77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846128d1565b905092915050565b60006129fa8261245e565b9150612a058361245e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612a3e57612a3d612779565b5b828202905092915050565b6000612a548261245e565b9150612a5f8361245e565b925082821015612a7257612a71612779565b5b828203905092915050565b600081905092915050565b50565b6000612a98600083612a7d565b9150612aa382612a88565b600082019050919050565b6000612ab982612a8b565b9150819050919050565b7f4572726f72207769746864726177696e67204554482e00000000000000000000600082015250565b6000612af9601683612382565b9150612b0482612ac3565b602082019050919050565b60006020820190508181036000830152612b2881612aec565b9050919050565b7f43616e6e6f742063726561746520706169722061667465722074726164696e6760008201527f20656e61626c6564210000000000000000000000000000000000000000000000602082015250565b6000612b8b602983612382565b9150612b9682612b2f565b604082019050919050565b60006020820190508181036000830152612bba81612b7e565b9050919050565b600081519050612bd081612432565b92915050565b600060208284031215612bec57612beb61229d565b5b6000612bfa84828501612bc1565b91505092915050565b6000604082019050612c18600083018561234d565b612c25602083018461234d565b9392505050565b7f43616e6e6f742064697361626c652074726164696e6721000000000000000000600082015250565b6000612c62601783612382565b9150612c6d82612c2c565b602082019050919050565b60006020820190508181036000830152612c9181612c55565b9050919050565b7f4d7573742062652067726561746572207468616e207a65726f2e000000000000600082015250565b6000612cce601a83612382565b9150612cd982612c98565b602082019050919050565b60006020820190508181036000830152612cfd81612cc1565b9050919050565b7f43616e6e6f74206578636565642035302062696c6c696f6e2e00000000000000600082015250565b6000612d3a601983612382565b9150612d4582612d04565b602082019050919050565b60006020820190508181036000830152612d6981612d2d565b9050919050565b600081519050612d7f81612468565b92915050565b600060208284031215612d9b57612d9a61229d565b5b6000612da984828501612d70565b91505092915050565b6000604082019050612dc7600083018561234d565b612dd4602083018461250a565b9392505050565b600081519050612dea816125de565b92915050565b600060208284031215612e0657612e0561229d565b5b6000612e1484828501612ddb565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612e79602683612382565b9150612e8482612e1d565b604082019050919050565b60006020820190508181036000830152612ea881612e6c565b9050919050565b7f4f776e65722f5370656e64657220616464726573732063616e6e6f742062652060008201527f302e000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f0b602283612382565b9150612f1682612eaf565b604082019050919050565b60006020820190508181036000830152612f3a81612efe565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656421000000000000000000600082015250565b6000612f77601783612382565b9150612f8282612f41565b602082019050919050565b60006020820190508181036000830152612fa681612f6a565b9050919050565b7f4572726f72207472616e7366657272696e67204554482e000000000000000000600082015250565b6000612fe3601783612382565b9150612fee82612fad565b602082019050919050565b6000602082019050818103600083015261301281612fd6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006130538261245e565b915061305e8361245e565b92508261306e5761306d613019565b5b828204905092915050565b60006130848261245e565b915061308f8361245e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156130c4576130c3612779565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000819050919050565b600061315c6131576131528461312d565b613137565b61245e565b9050919050565b61316c81613141565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6131a78161233b565b82525050565b60006131b9838361319e565b60208301905092915050565b6000602082019050919050565b60006131dd82613172565b6131e7818561317d565b93506131f28361318e565b8060005b8381101561322357815161320a88826131ad565b9750613215836131c5565b9250506001810190506131f6565b5085935050505092915050565b600060a082019050613245600083018861250a565b6132526020830187613163565b818103604083015261326481866131d2565b9050613273606083018561234d565b613280608083018461250a565b969550505050505056fea264697066735822122059e59bd57ba4324c19872852d0b271cdd9724d5d997b6d13eacf2e8dfea4eb2e64736f6c634300080c0033

Deployed Bytecode

0x6080604052600436106101c65760003560e01c8063715018a6116100f7578063a9059cbb11610095578063ea45eac611610064578063ea45eac614610605578063ec79d52a14610631578063eeb63f5c1461065a578063f2fde38b14610685576101cd565b8063a9059cbb14610539578063c15a1ae814610576578063c17f3f5a1461059f578063dd62ed3e146105c8576101cd565b80638d5f81e2116100d15780638d5f81e2146104a15780638da5cb5b146104cc57806395d89b41146104f7578063a446f14014610522576101cd565b8063715018a614610448578063729338e81461045f578063893d20e814610476576101cd565b806323b872dd11610164578063351a964d1161013e578063351a964d1461038e57806359f1b79e146103b95780635fb6e59f146103e257806370a082311461040b576101cd565b806323b872dd1461030f57806327a910dc1461034c578063313ce56714610363576101cd565b80630930907b116101a05780630930907b14610251578063095ea7b31461027c57806318160ddd146102b95780631d175ab5146102e4576101cd565b806301d74199146101d257806306228749146101fb57806306fdde0314610226576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101f960048036038101906101f491906122db565b6106ae565b005b34801561020757600080fd5b506102106107af565b60405161021d919061235c565b60405180910390f35b34801561023257600080fd5b5061023b6107b5565b6040516102489190612410565b60405180910390f35b34801561025d57600080fd5b506102666107f2565b604051610273919061235c565b60405180910390f35b34801561028857600080fd5b506102a3600480360381019061029e9190612494565b6107f7565b6040516102b091906124ef565b60405180910390f35b3480156102c557600080fd5b506102ce61080e565b6040516102db9190612519565b60405180910390f35b3480156102f057600080fd5b506102f9610834565b604051610306919061235c565b60405180910390f35b34801561031b57600080fd5b5061033660048036038101906103319190612534565b61084c565b60405161034391906124ef565b60405180910390f35b34801561035857600080fd5b5061036161096d565b005b34801561036f57600080fd5b50610378610a91565b6040516103859190612596565b60405180910390f35b34801561039a57600080fd5b506103a3610a9a565b6040516103b091906124ef565b60405180910390f35b3480156103c557600080fd5b506103e060048036038101906103db91906125b1565b610ab1565b005b3480156103ee57600080fd5b506104096004803603810190610404919061260a565b610ed5565b005b34801561041757600080fd5b50610432600480360381019061042d91906125b1565b610fa5565b60405161043f9190612519565b60405180910390f35b34801561045457600080fd5b5061045d610fee565b005b34801561046b57600080fd5b50610474611121565b005b34801561048257600080fd5b5061048b611212565b604051610498919061235c565b60405180910390f35b3480156104ad57600080fd5b506104b6611221565b6040516104c3919061235c565b60405180910390f35b3480156104d857600080fd5b506104e161124b565b6040516104ee919061235c565b60405180910390f35b34801561050357600080fd5b5061050c611274565b6040516105199190612410565b60405180910390f35b34801561052e57600080fd5b506105376112b1565b005b34801561054557600080fd5b50610560600480360381019061055b9190612494565b611330565b60405161056d91906124ef565b60405180910390f35b34801561058257600080fd5b5061059d6004803603810190610598919061264a565b611347565b005b3480156105ab57600080fd5b506105c660048036038101906105c19190612677565b61146b565b005b3480156105d457600080fd5b506105ef60048036038101906105ea91906126a4565b6114fd565b6040516105fc9190612519565b60405180910390f35b34801561061157600080fd5b5061061a611584565b6040516106289291906126e4565b60405180910390f35b34801561063d57600080fd5b50610658600480360381019061065391906125b1565b6115af565b005b34801561066657600080fd5b5061066f6117b8565b60405161067c9190612519565b60405180910390f35b34801561069157600080fd5b506106ac60048036038101906106a791906125b1565b6117c2565b005b6106b661124b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071a90612759565b60405180910390fd5b6014818361073191906127a8565b60ff161115610775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076c90612851565b60405180910390fd5b81600060146101000a81548160ff021916908360ff16021790555080600060156101000a81548160ff021916908360ff1602179055505050565b61dead81565b60606040518060400160405280600f81526020017f517561726b20332e3020546f6b656e0000000000000000000000000000000000815250905090565b600081565b6000610804338484611964565b6001905092915050565b60006012600a61081e91906129a4565b6509184e72a00061082f91906129ef565b905090565b736f0a450e3c949f3063f625f1004c360ef4d2b49e81565b600080600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506108d9858585611af8565b828110156108e657600080fd5b6108fc853385846108f79190612a49565b611964565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516109599190612519565b60405180910390a360019150509392505050565b61097561124b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d990612759565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051610a0890612aae565b60006040518083038185875af1925050503d8060008114610a45576040519150601f19603f3d011682016040523d82523d6000602084013e610a4a565b606091505b5050905080610a8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8590612b0f565b60405180910390fd5b50565b60006012905090565b6000600260019054906101000a900460ff16905090565b610ab961124b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1d90612759565b60405180910390fd5b600260009054906101000a900460ff1615610b76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6d90612ba1565b60405180910390fd5b80600260036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c489190612bd6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf49190612bd6565b306040518363ffffffff1660e01b8152600401610d12929190612c03565b6020604051808303816000875af1158015610d31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d559190612bd6565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600260039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160066000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610edd61124b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4190612759565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ff661124b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105a90612759565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b61112961124b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118d90612759565b60405180910390fd5b600260009054906101000a900460ff16156111e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111dd90612c78565b60405180910390fd5b600260009054906101000a900460ff1615600260006101000a81548160ff021916908315150217905550565b600061121c61124b565b905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f515541524b203300000000000000000000000000000000000000000000000000815250905090565b6112b961124b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131d90612759565b60405180910390fd5b61132e611d3f565b565b600061133d338484611af8565b6001905092915050565b61134f61124b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b390612759565b60405180910390fd5b600060015411611401576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f890612ce4565b60405180910390fd5b640ba43b7400811115611449576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144090612d50565b60405180910390fd5b6012600a61145791906129a4565b8161146291906129ef565b60018190555050565b61147361124b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d790612759565b60405180910390fd5b80600260016101000a81548160ff02191690831515021790555050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080600060149054906101000a900460ff169150600060159054906101000a900460ff1690509091565b6115b761124b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161b90612759565b60405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156116ae57503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b6116b757600080fd5b60008190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611712919061235c565b602060405180830381865afa15801561172f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117539190612d85565b6040518363ffffffff1660e01b8152600401611770929190612db2565b6020604051808303816000875af115801561178f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b39190612df0565b505050565b6000600154905090565b6117ca61124b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182e90612759565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189e90612e8f565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119ce5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0490612f21565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611aeb9190612519565b60405180910390a3505050565b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b9b5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b90506000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690506000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690508215611c5757611c528686866000611eb7565b611d37565b600260009054906101000a900460ff16611ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9d90612f8d565b60405180910390fd5b8115611ccc57611cc7868686600060149054906101000a900460ff16611eb7565b611d36565b8015611d275760028054906101000a900460ff16158015611cf95750600260019054906101000a900460ff165b15611d0757611d06611d3f565b5b611d22868686600060159054906101000a900460ff16611eb7565b611d35565b611d348686866000611eb7565b5b5b5b505050505050565b60016002806101000a81548160ff0219169083151502179055506000600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506001548110611e9a576000479050611db48261205a565b60008147611dc29190612a49565b905060008111611dd157600080fd5b6000736f0a450e3c949f3063f625f1004c360ef4d2b49e73ffffffffffffffffffffffffffffffffffffffff164761753090604051611e0f90612aae565b600060405180830381858888f193505050503d8060008114611e4d576040519150601f19603f3d011682016040523d82523d6000602084013e611e52565b606091505b5050905080611e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8d90612ff9565b60405180910390fd5b5050505b5060006002806101000a81548160ff021916908315150217905550565b600060648260ff1684611eca91906129ef565b611ed49190613048565b905082600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f259190612a49565b9250508190555080600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f7b9190613079565b925050819055508083611f8e9190612a49565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611fdc9190613079565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838661203e9190612a49565b60405161204b9190612519565b60405180910390a35050505050565b6000600267ffffffffffffffff811115612077576120766130cf565b5b6040519080825280602002602001820160405280156120a55781602001602082028036833780820191505090505b50905030816000815181106120bd576120bc6130fe565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612164573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121889190612bd6565b8160018151811061219c5761219b6130fe565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061220330600260039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611964565b600260039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612267959493929190613230565b600060405180830381600087803b15801561228157600080fd5b505af1158015612295573d6000803e3d6000fd5b505050505050565b600080fd5b600060ff82169050919050565b6122b8816122a2565b81146122c357600080fd5b50565b6000813590506122d5816122af565b92915050565b600080604083850312156122f2576122f161229d565b5b6000612300858286016122c6565b9250506020612311858286016122c6565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006123468261231b565b9050919050565b6123568161233b565b82525050565b6000602082019050612371600083018461234d565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156123b1578082015181840152602081019050612396565b838111156123c0576000848401525b50505050565b6000601f19601f8301169050919050565b60006123e282612377565b6123ec8185612382565b93506123fc818560208601612393565b612405816123c6565b840191505092915050565b6000602082019050818103600083015261242a81846123d7565b905092915050565b61243b8161233b565b811461244657600080fd5b50565b60008135905061245881612432565b92915050565b6000819050919050565b6124718161245e565b811461247c57600080fd5b50565b60008135905061248e81612468565b92915050565b600080604083850312156124ab576124aa61229d565b5b60006124b985828601612449565b92505060206124ca8582860161247f565b9150509250929050565b60008115159050919050565b6124e9816124d4565b82525050565b600060208201905061250460008301846124e0565b92915050565b6125138161245e565b82525050565b600060208201905061252e600083018461250a565b92915050565b60008060006060848603121561254d5761254c61229d565b5b600061255b86828701612449565b935050602061256c86828701612449565b925050604061257d8682870161247f565b9150509250925092565b612590816122a2565b82525050565b60006020820190506125ab6000830184612587565b92915050565b6000602082840312156125c7576125c661229d565b5b60006125d584828501612449565b91505092915050565b6125e7816124d4565b81146125f257600080fd5b50565b600081359050612604816125de565b92915050565b600080604083850312156126215761262061229d565b5b600061262f85828601612449565b9250506020612640858286016125f5565b9150509250929050565b6000602082840312156126605761265f61229d565b5b600061266e8482850161247f565b91505092915050565b60006020828403121561268d5761268c61229d565b5b600061269b848285016125f5565b91505092915050565b600080604083850312156126bb576126ba61229d565b5b60006126c985828601612449565b92505060206126da85828601612449565b9150509250929050565b60006040820190506126f96000830185612587565b6127066020830184612587565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612743602083612382565b915061274e8261270d565b602082019050919050565b6000602082019050818103600083015261277281612736565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006127b3826122a2565b91506127be836122a2565b92508260ff038211156127d4576127d3612779565b5b828201905092915050565b7f42757920746178202b2073656c6c207461782063616e6e6f742065786365656460008201527f2031302520210000000000000000000000000000000000000000000000000000602082015250565b600061283b602683612382565b9150612846826127df565b604082019050919050565b6000602082019050818103600083015261286a8161282e565b9050919050565b60008160011c9050919050565b6000808291508390505b60018511156128c8578086048111156128a4576128a3612779565b5b60018516156128b35780820291505b80810290506128c185612871565b9450612888565b94509492505050565b6000826128e1576001905061299d565b816128ef576000905061299d565b8160018114612905576002811461290f5761293e565b600191505061299d565b60ff84111561292157612920612779565b5b8360020a91508482111561293857612937612779565b5b5061299d565b5060208310610133831016604e8410600b84101617156129735782820a90508381111561296e5761296d612779565b5b61299d565b612980848484600161287e565b9250905081840481111561299757612996612779565b5b81810290505b9392505050565b60006129af8261245e565b91506129ba836122a2565b92506129e77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846128d1565b905092915050565b60006129fa8261245e565b9150612a058361245e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612a3e57612a3d612779565b5b828202905092915050565b6000612a548261245e565b9150612a5f8361245e565b925082821015612a7257612a71612779565b5b828203905092915050565b600081905092915050565b50565b6000612a98600083612a7d565b9150612aa382612a88565b600082019050919050565b6000612ab982612a8b565b9150819050919050565b7f4572726f72207769746864726177696e67204554482e00000000000000000000600082015250565b6000612af9601683612382565b9150612b0482612ac3565b602082019050919050565b60006020820190508181036000830152612b2881612aec565b9050919050565b7f43616e6e6f742063726561746520706169722061667465722074726164696e6760008201527f20656e61626c6564210000000000000000000000000000000000000000000000602082015250565b6000612b8b602983612382565b9150612b9682612b2f565b604082019050919050565b60006020820190508181036000830152612bba81612b7e565b9050919050565b600081519050612bd081612432565b92915050565b600060208284031215612bec57612beb61229d565b5b6000612bfa84828501612bc1565b91505092915050565b6000604082019050612c18600083018561234d565b612c25602083018461234d565b9392505050565b7f43616e6e6f742064697361626c652074726164696e6721000000000000000000600082015250565b6000612c62601783612382565b9150612c6d82612c2c565b602082019050919050565b60006020820190508181036000830152612c9181612c55565b9050919050565b7f4d7573742062652067726561746572207468616e207a65726f2e000000000000600082015250565b6000612cce601a83612382565b9150612cd982612c98565b602082019050919050565b60006020820190508181036000830152612cfd81612cc1565b9050919050565b7f43616e6e6f74206578636565642035302062696c6c696f6e2e00000000000000600082015250565b6000612d3a601983612382565b9150612d4582612d04565b602082019050919050565b60006020820190508181036000830152612d6981612d2d565b9050919050565b600081519050612d7f81612468565b92915050565b600060208284031215612d9b57612d9a61229d565b5b6000612da984828501612d70565b91505092915050565b6000604082019050612dc7600083018561234d565b612dd4602083018461250a565b9392505050565b600081519050612dea816125de565b92915050565b600060208284031215612e0657612e0561229d565b5b6000612e1484828501612ddb565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612e79602683612382565b9150612e8482612e1d565b604082019050919050565b60006020820190508181036000830152612ea881612e6c565b9050919050565b7f4f776e65722f5370656e64657220616464726573732063616e6e6f742062652060008201527f302e000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f0b602283612382565b9150612f1682612eaf565b604082019050919050565b60006020820190508181036000830152612f3a81612efe565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656421000000000000000000600082015250565b6000612f77601783612382565b9150612f8282612f41565b602082019050919050565b60006020820190508181036000830152612fa681612f6a565b9050919050565b7f4572726f72207472616e7366657272696e67204554482e000000000000000000600082015250565b6000612fe3601783612382565b9150612fee82612fad565b602082019050919050565b6000602082019050818103600083015261301281612fd6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006130538261245e565b915061305e8361245e565b92508261306e5761306d613019565b5b828204905092915050565b60006130848261245e565b915061308f8361245e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156130c4576130c3612779565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000819050919050565b600061315c6131576131528461312d565b613137565b61245e565b9050919050565b61316c81613141565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6131a78161233b565b82525050565b60006131b9838361319e565b60208301905092915050565b6000602082019050919050565b60006131dd82613172565b6131e7818561317d565b93506131f28361318e565b8060005b8381101561322357815161320a88826131ad565b9750613215836131c5565b9250506001810190506131f6565b5085935050505092915050565b600060a082019050613245600083018861250a565b6132526020830187613163565b818103604083015261326481866131d2565b9050613273606083018561234d565b613280608083018461250a565b969550505050505056fea264697066735822122059e59bd57ba4324c19872852d0b271cdd9724d5d997b6d13eacf2e8dfea4eb2e64736f6c634300080c0033

Deployed Bytecode Sourcemap

11425:8729:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16029:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12124:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19635:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12183:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19121:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19831:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12031:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18359:433;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17035:186;;;;;;;;;;;;;:::i;:::-;;19939:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17921:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15161:445;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16313:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19492:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11022:148;;;;;;;;;;;;;:::i;:::-;;15663:163;;;;;;;;;;;;;:::i;:::-;;20030:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17821:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10815:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19731:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15880:85;;;;;;;;;;;;;:::i;:::-;;18160:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16653:324;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16476:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19314:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17650:165;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;17280:299;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18017:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11176:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16029:243;10952:7;:5;:7::i;:::-;10940:19;;:10;:19;;;10932:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16163:2:::1;16152:7;16143:6;:16;;;;:::i;:::-;:22;;;;16135:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;16229:6;16219:7;;:16;;;;;;;;;;;;;;;;;;16257:7;16246:8;;:18;;;;;;;;;;;;;;;;;;16029:243:::0;;:::o;12124:52::-;12169:6;12124:52;:::o;19635:90::-;19674:13;19707:10;;;;;;;;;;;;;;;;;19700:17;;19635:90;:::o;12183:48::-;12229:1;12183:48;:::o;19121:187::-;19224:4;19241:37;19250:10;19262:7;19271:6;19241:8;:37::i;:::-;19296:4;19289:11;;19121:187;;;;:::o;19831:102::-;19886:7;11574:2;11642;:15;;;;:::i;:::-;11625:14;:32;;;;:::i;:::-;19906:19;;19831:102;:::o;12031:86::-;12074:42;12031:86;:::o;18359:433::-;18495:4;18512:18;18533:11;:19;18545:6;18533:19;;;;;;;;;;;;;;;:31;18553:10;18533:31;;;;;;;;;;;;;;;;18512:52;;18575:36;18585:6;18593:9;18604:6;18575:9;:36::i;:::-;18644:6;18630:10;:20;;18622:29;;;;;;18662:49;18671:6;18679:10;18704:6;18691:10;:19;;;;:::i;:::-;18662:8;:49::i;:::-;18744:9;18727:35;;18736:6;18727:35;;;18755:6;18727:35;;;;;;:::i;:::-;;;;;;;;18780:4;18773:11;;;18359:433;;;;;:::o;17035:186::-;10952:7;:5;:7::i;:::-;10940:19;;:10;:19;;;10932:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;17092:12:::1;17109:10;:15;;17133:21;17109:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17091:69;;;17179:7;17171:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;17080:141;17035:186::o:0;19939:85::-;19982:5;11574:2;20000:16;;19939:85;:::o;17921:90::-;17967:4;17991:12;;;;;;;;;;;17984:19;;17921:90;:::o;15161:445::-;10952:7;:5;:7::i;:::-;10940:19;;:10;:19;;;10932:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15262:15:::1;;;;;;;;;;;15261:16;15253:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;15357:13;15334:7;;:37;;;;;;;;;;;;;;;;;;15409:7;;;;;;;;;;;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15397:41;;;15439:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15463:4;15397:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15382:12;;:87;;;;;;;;;;;;;;;;;;15527:17;15480:11;:26;15500:4;15480:26;;;;;;;;;;;;;;;:44;15515:7;;;;;;;;;;;15480:44;;;;;;;;;;;;;;;:64;;;;15594:4;15555:22;:36;15578:12;;;;;;;;;;;15555:36;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;15161:445:::0;:::o;16313:157::-;10952:7;:5;:7::i;:::-;10940:19;;:10;:19;;;10932:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16455:7:::1;16426:17;:26;16444:7;16426:26;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;16313:157:::0;;:::o;19492:137::-;19576:7;19603:9;:18;19613:7;19603:18;;;;;;;;;;;;;;;;19596:25;;19492:137;;;:::o;11022:148::-;10952:7;:5;:7::i;:::-;10940:19;;:10;:19;;;10932:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11104:1:::1;11087:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;11159:1;11122:40;;11143:6;::::0;::::1;;;;;;;;11122:40;;;;;;;;;;;;11022:148::o:0;15663:163::-;10952:7;:5;:7::i;:::-;10940:19;;:10;:19;;;10932:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15730:15:::1;;;;;;;;;;;15729:16;15721:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;15803:15;;;;;;;;;;;15802:16;15784:15;;:34;;;;;;;;;;;;;;;;;;15663:163::o:0;20030:85::-;20073:7;20100;:5;:7::i;:::-;20093:14;;20030:85;:::o;17821:94::-;17868:7;17895:12;;;;;;;;;;;17888:19;;17821:94;:::o;10815:79::-;10853:7;10880:6;;;;;;;;;;;10873:13;;10815:79;:::o;19731:94::-;19772:13;19805:12;;;;;;;;;;;;;;;;;19798:19;;19731:94;:::o;15880:85::-;10952:7;:5;:7::i;:::-;10940:19;;:10;:19;;;10932:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15936:21:::1;:19;:21::i;:::-;15880:85::o:0;18160:193::-;18266:4;18283:40;18293:10;18305:9;18316:6;18283:9;:40::i;:::-;18341:4;18334:11;;18160:193;;;;:::o;16653:324::-;10952:7;:5;:7::i;:::-;10940:19;;:10;:19;;;10932:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16786:1:::1;16764:19;;:23;16756:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;16859:11;16837:18;:33;;16829:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11574:2;16954;:15;;;;:::i;:::-;16933:18;:36;;;;:::i;:::-;16911:19;:58;;;;16653:324:::0;:::o;16476:128::-;10952:7;:5;:7::i;:::-;10940:19;;:10;:19;;;10932:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16585:11:::1;16570:12;;:26;;;;;;;;;;;;;;;;;;16476:128:::0;:::o;19314:172::-;19423:7;19450:11;:19;19462:6;19450:19;;;;;;;;;;;;;;;:28;19470:7;19450:28;;;;;;;;;;;;;;;;19443:35;;19314:172;;;;:::o;17650:165::-;17707:12;17730:13;17771:7;;;;;;;;;;;17762:16;;17799:8;;;;;;;;;;;17789:18;;17650:165;;:::o;17280:299::-;10952:7;:5;:7::i;:::-;10940:19;;:10;:19;;;10932:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;17408:12:::1;;;;;;;;;;;17391:29;;:13;:29;;;;:63;;;;;17449:4;17424:30;;:13;:30;;;;17391:63;17383:72;;;::::0;::::1;;17466:12;17488:13;17466:36;;17513:5;:14;;;17528:10;17540:5;:15;;;17564:4;17540:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17513:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17372:207;17280:299:::0;:::o;18017:108::-;18071:7;18098:19;;18091:26;;18017:108;:::o;11176:244::-;10952:7;:5;:7::i;:::-;10940:19;;:10;:19;;;10932:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11285:1:::1;11265:22;;:8;:22;;;;11257:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11350:8;11341:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;11403:8;11374:38;;11395:6;::::0;::::1;;;;;;;;11374:38;;;;;;;;;;;;11176:244:::0;:::o;18798:317::-;18945:1;18928:19;;:5;:19;;;;:44;;;;;18970:1;18951:21;;:7;:21;;;;18928:44;18919:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;19053:6;19023:11;:18;19035:5;19023:18;;;;;;;;;;;;;;;:27;19042:7;19023:27;;;;;;;;;;;;;;;:36;;;;19091:7;19075:32;;19084:5;19075:32;;;19100:6;19075:32;;;;;;:::i;:::-;;;;;;;;18798:317;;;:::o;12915:737::-;13029:15;13047:17;:23;13065:4;13047:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;13074:17;:21;13092:2;13074:21;;;;;;;;;;;;;;;;;;;;;;;;;13047:48;13029:66;;13106:10;13119:22;:28;13142:4;13119:28;;;;;;;;;;;;;;;;;;;;;;;;;13106:41;;13158:11;13172:22;:26;13195:2;13172:26;;;;;;;;;;;;;;;;;;;;;;;;;13158:40;;13213:10;13209:436;;;13225:36;13241:4;13247:2;13251:6;13259:1;13225:15;:36::i;:::-;13209:436;;;13300:15;;;;;;;;;;;13292:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;13362:5;13358:275;;;13369:42;13385:4;13391:2;13395:6;13403:7;;;;;;;;;;;13369:15;:42::i;:::-;13358:275;;;13435:6;13431:202;;;13467:7;;;;;;;;;;13466:8;:24;;;;;13478:12;;;;;;;;;;;13466:24;13462:51;;;13492:21;:19;:21::i;:::-;13462:51;13532:43;13548:4;13554:2;13558:6;13566:8;;;;;;;;;;;13532:15;:43::i;:::-;13431:202;;;13597:36;13613:4;13619:2;13623:6;13631:1;13597:15;:36::i;:::-;13431:202;13358:275;13209:436;13018:634;;;12915:737;;;:::o;14048:578::-;12530:4;12520:7;;:14;;;;;;;;;;;;;;;;;;14110:28:::1;14141:9;:24;14159:4;14141:24;;;;;;;;;;;;;;;;14110:55;;14204:19;;14180:20;:43;14176:443;;14240:14;14257:21;14240:38;;14293:39;14311:20;14293:17;:39::i;:::-;14347:14;14388:6;14364:21;:30;;;;:::i;:::-;14347:47;;14426:1;14417:6;:10;14409:19;;;::::0;::::1;;14444:22;12074:42;14471:22;;14501:21;14529:5;14471:68;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14443:96;;;14562:17;14554:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;14225:394;;;14176:443;14099:527;12567:5:::0;12557:7;;:15;;;;;;;;;;;;;;;;;;14048:578::o;13658:384::-;13805:17;13847:3;13834:10;13825:19;;:6;:19;;;;:::i;:::-;:25;;;;:::i;:::-;13805:45;;13880:6;13861:9;:15;13871:4;13861:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;13925:9;13897;:24;13915:4;13897:24;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;13971:9;13962:6;:18;;;;:::i;:::-;13945:9;:13;13955:2;13945:13;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;14011:2;13996:38;;14005:4;13996:38;;;14024:9;14015:6;:18;;;;:::i;:::-;13996:38;;;;;;:::i;:::-;;;;;;;;13794:248;13658:384;;;;:::o;14662:465::-;14745:21;14783:1;14769:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14745:40;;14814:4;14796;14801:1;14796:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;14840:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14830:4;14835:1;14830:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;14865:54;14882:4;14897:7;;;;;;;;;;;14907:11;14865:8;:54::i;:::-;14930:7;;;;;;;;;;;:58;;;15003:11;15029:1;15046:4;15073;15093:15;14930:189;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14734:393;14662:465;:::o;88:117:1:-;197:1;194;187:12;334:86;369:7;409:4;402:5;398:16;387:27;;334:86;;;:::o;426:118::-;497:22;513:5;497:22;:::i;:::-;490:5;487:33;477:61;;534:1;531;524:12;477:61;426:118;:::o;550:135::-;594:5;632:6;619:20;610:29;;648:31;673:5;648:31;:::i;:::-;550:135;;;;:::o;691:466::-;755:6;763;812:2;800:9;791:7;787:23;783:32;780:119;;;818:79;;:::i;:::-;780:119;938:1;963:51;1006:7;997:6;986:9;982:22;963:51;:::i;:::-;953:61;;909:115;1063:2;1089:51;1132:7;1123:6;1112:9;1108:22;1089:51;:::i;:::-;1079:61;;1034:116;691:466;;;;;:::o;1163:126::-;1200:7;1240:42;1233:5;1229:54;1218:65;;1163:126;;;:::o;1295:96::-;1332:7;1361:24;1379:5;1361:24;:::i;:::-;1350:35;;1295:96;;;:::o;1397:118::-;1484:24;1502:5;1484:24;:::i;:::-;1479:3;1472:37;1397:118;;:::o;1521:222::-;1614:4;1652:2;1641:9;1637:18;1629:26;;1665:71;1733:1;1722:9;1718:17;1709:6;1665:71;:::i;:::-;1521:222;;;;:::o;1749:99::-;1801:6;1835:5;1829:12;1819:22;;1749:99;;;:::o;1854:169::-;1938:11;1972:6;1967:3;1960:19;2012:4;2007:3;2003:14;1988:29;;1854:169;;;;:::o;2029:307::-;2097:1;2107:113;2121:6;2118:1;2115:13;2107:113;;;2206:1;2201:3;2197:11;2191:18;2187:1;2182:3;2178:11;2171:39;2143:2;2140:1;2136:10;2131:15;;2107:113;;;2238:6;2235:1;2232:13;2229:101;;;2318:1;2309:6;2304:3;2300:16;2293:27;2229:101;2078:258;2029:307;;;:::o;2342:102::-;2383:6;2434:2;2430:7;2425:2;2418:5;2414:14;2410:28;2400:38;;2342:102;;;:::o;2450:364::-;2538:3;2566:39;2599:5;2566:39;:::i;:::-;2621:71;2685:6;2680:3;2621:71;:::i;:::-;2614:78;;2701:52;2746:6;2741:3;2734:4;2727:5;2723:16;2701:52;:::i;:::-;2778:29;2800:6;2778:29;:::i;:::-;2773:3;2769:39;2762:46;;2542:272;2450:364;;;;:::o;2820:313::-;2933:4;2971:2;2960:9;2956:18;2948:26;;3020:9;3014:4;3010:20;3006:1;2995:9;2991:17;2984:47;3048:78;3121:4;3112:6;3048:78;:::i;:::-;3040:86;;2820:313;;;;:::o;3139:122::-;3212:24;3230:5;3212:24;:::i;:::-;3205:5;3202:35;3192:63;;3251:1;3248;3241:12;3192:63;3139:122;:::o;3267:139::-;3313:5;3351:6;3338:20;3329:29;;3367:33;3394:5;3367:33;:::i;:::-;3267:139;;;;:::o;3412:77::-;3449:7;3478:5;3467:16;;3412:77;;;:::o;3495:122::-;3568:24;3586:5;3568:24;:::i;:::-;3561:5;3558:35;3548:63;;3607:1;3604;3597:12;3548:63;3495:122;:::o;3623:139::-;3669:5;3707:6;3694:20;3685:29;;3723:33;3750:5;3723:33;:::i;:::-;3623:139;;;;:::o;3768:474::-;3836:6;3844;3893:2;3881:9;3872:7;3868:23;3864:32;3861:119;;;3899:79;;:::i;:::-;3861:119;4019:1;4044:53;4089:7;4080:6;4069:9;4065:22;4044:53;:::i;:::-;4034:63;;3990:117;4146:2;4172:53;4217:7;4208:6;4197:9;4193:22;4172:53;:::i;:::-;4162:63;;4117:118;3768:474;;;;;:::o;4248:90::-;4282:7;4325:5;4318:13;4311:21;4300:32;;4248:90;;;:::o;4344:109::-;4425:21;4440:5;4425:21;:::i;:::-;4420:3;4413:34;4344:109;;:::o;4459:210::-;4546:4;4584:2;4573:9;4569:18;4561:26;;4597:65;4659:1;4648:9;4644:17;4635:6;4597:65;:::i;:::-;4459:210;;;;:::o;4675:118::-;4762:24;4780:5;4762:24;:::i;:::-;4757:3;4750:37;4675:118;;:::o;4799:222::-;4892:4;4930:2;4919:9;4915:18;4907:26;;4943:71;5011:1;5000:9;4996:17;4987:6;4943:71;:::i;:::-;4799:222;;;;:::o;5027:619::-;5104:6;5112;5120;5169:2;5157:9;5148:7;5144:23;5140:32;5137:119;;;5175:79;;:::i;:::-;5137:119;5295:1;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5266:117;5422:2;5448:53;5493:7;5484:6;5473:9;5469:22;5448:53;:::i;:::-;5438:63;;5393:118;5550:2;5576:53;5621:7;5612:6;5601:9;5597:22;5576:53;:::i;:::-;5566:63;;5521:118;5027:619;;;;;:::o;5652:112::-;5735:22;5751:5;5735:22;:::i;:::-;5730:3;5723:35;5652:112;;:::o;5770:214::-;5859:4;5897:2;5886:9;5882:18;5874:26;;5910:67;5974:1;5963:9;5959:17;5950:6;5910:67;:::i;:::-;5770:214;;;;:::o;5990:329::-;6049:6;6098:2;6086:9;6077:7;6073:23;6069:32;6066:119;;;6104:79;;:::i;:::-;6066:119;6224:1;6249:53;6294:7;6285:6;6274:9;6270:22;6249:53;:::i;:::-;6239:63;;6195:117;5990:329;;;;:::o;6325:116::-;6395:21;6410:5;6395:21;:::i;:::-;6388:5;6385:32;6375:60;;6431:1;6428;6421:12;6375:60;6325:116;:::o;6447:133::-;6490:5;6528:6;6515:20;6506:29;;6544:30;6568:5;6544:30;:::i;:::-;6447:133;;;;:::o;6586:468::-;6651:6;6659;6708:2;6696:9;6687:7;6683:23;6679:32;6676:119;;;6714:79;;:::i;:::-;6676:119;6834:1;6859:53;6904:7;6895:6;6884:9;6880:22;6859:53;:::i;:::-;6849:63;;6805:117;6961:2;6987:50;7029:7;7020:6;7009:9;7005:22;6987:50;:::i;:::-;6977:60;;6932:115;6586:468;;;;;:::o;7060:329::-;7119:6;7168:2;7156:9;7147:7;7143:23;7139:32;7136:119;;;7174:79;;:::i;:::-;7136:119;7294:1;7319:53;7364:7;7355:6;7344:9;7340:22;7319:53;:::i;:::-;7309:63;;7265:117;7060:329;;;;:::o;7395:323::-;7451:6;7500:2;7488:9;7479:7;7475:23;7471:32;7468:119;;;7506:79;;:::i;:::-;7468:119;7626:1;7651:50;7693:7;7684:6;7673:9;7669:22;7651:50;:::i;:::-;7641:60;;7597:114;7395:323;;;;:::o;7724:474::-;7792:6;7800;7849:2;7837:9;7828:7;7824:23;7820:32;7817:119;;;7855:79;;:::i;:::-;7817:119;7975:1;8000:53;8045:7;8036:6;8025:9;8021:22;8000:53;:::i;:::-;7990:63;;7946:117;8102:2;8128:53;8173:7;8164:6;8153:9;8149:22;8128:53;:::i;:::-;8118:63;;8073:118;7724:474;;;;;:::o;8204:316::-;8317:4;8355:2;8344:9;8340:18;8332:26;;8368:67;8432:1;8421:9;8417:17;8408:6;8368:67;:::i;:::-;8445:68;8509:2;8498:9;8494:18;8485:6;8445:68;:::i;:::-;8204:316;;;;;:::o;8526:182::-;8666:34;8662:1;8654:6;8650:14;8643:58;8526:182;:::o;8714:366::-;8856:3;8877:67;8941:2;8936:3;8877:67;:::i;:::-;8870:74;;8953:93;9042:3;8953:93;:::i;:::-;9071:2;9066:3;9062:12;9055:19;;8714:366;;;:::o;9086:419::-;9252:4;9290:2;9279:9;9275:18;9267:26;;9339:9;9333:4;9329:20;9325:1;9314:9;9310:17;9303:47;9367:131;9493:4;9367:131;:::i;:::-;9359:139;;9086:419;;;:::o;9511:180::-;9559:77;9556:1;9549:88;9656:4;9653:1;9646:15;9680:4;9677:1;9670:15;9697:237;9735:3;9754:18;9770:1;9754:18;:::i;:::-;9749:23;;9786:18;9802:1;9786:18;:::i;:::-;9781:23;;9876:1;9870:4;9866:12;9863:1;9860:19;9857:45;;;9882:18;;:::i;:::-;9857:45;9926:1;9923;9919:9;9912:16;;9697:237;;;;:::o;9940:225::-;10080:34;10076:1;10068:6;10064:14;10057:58;10149:8;10144:2;10136:6;10132:15;10125:33;9940:225;:::o;10171:366::-;10313:3;10334:67;10398:2;10393:3;10334:67;:::i;:::-;10327:74;;10410:93;10499:3;10410:93;:::i;:::-;10528:2;10523:3;10519:12;10512:19;;10171:366;;;:::o;10543:419::-;10709:4;10747:2;10736:9;10732:18;10724:26;;10796:9;10790:4;10786:20;10782:1;10771:9;10767:17;10760:47;10824:131;10950:4;10824:131;:::i;:::-;10816:139;;10543:419;;;:::o;10968:102::-;11010:8;11057:5;11054:1;11050:13;11029:34;;10968:102;;;:::o;11076:848::-;11137:5;11144:4;11168:6;11159:15;;11192:5;11183:14;;11206:712;11227:1;11217:8;11214:15;11206:712;;;11322:4;11317:3;11313:14;11307:4;11304:24;11301:50;;;11331:18;;:::i;:::-;11301:50;11381:1;11371:8;11367:16;11364:451;;;11796:4;11789:5;11785:16;11776:25;;11364:451;11846:4;11840;11836:15;11828:23;;11876:32;11899:8;11876:32;:::i;:::-;11864:44;;11206:712;;;11076:848;;;;;;;:::o;11930:1073::-;11984:5;12175:8;12165:40;;12196:1;12187:10;;12198:5;;12165:40;12224:4;12214:36;;12241:1;12232:10;;12243:5;;12214:36;12310:4;12358:1;12353:27;;;;12394:1;12389:191;;;;12303:277;;12353:27;12371:1;12362:10;;12373:5;;;12389:191;12434:3;12424:8;12421:17;12418:43;;;12441:18;;:::i;:::-;12418:43;12490:8;12487:1;12483:16;12474:25;;12525:3;12518:5;12515:14;12512:40;;;12532:18;;:::i;:::-;12512:40;12565:5;;;12303:277;;12689:2;12679:8;12676:16;12670:3;12664:4;12661:13;12657:36;12639:2;12629:8;12626:16;12621:2;12615:4;12612:12;12608:35;12592:111;12589:246;;;12745:8;12739:4;12735:19;12726:28;;12780:3;12773:5;12770:14;12767:40;;;12787:18;;:::i;:::-;12767:40;12820:5;;12589:246;12860:42;12898:3;12888:8;12882:4;12879:1;12860:42;:::i;:::-;12845:57;;;;12934:4;12929:3;12925:14;12918:5;12915:25;12912:51;;;12943:18;;:::i;:::-;12912:51;12992:4;12985:5;12981:16;12972:25;;11930:1073;;;;;;:::o;13009:281::-;13067:5;13091:23;13109:4;13091:23;:::i;:::-;13083:31;;13135:25;13151:8;13135:25;:::i;:::-;13123:37;;13179:104;13216:66;13206:8;13200:4;13179:104;:::i;:::-;13170:113;;13009:281;;;;:::o;13296:348::-;13336:7;13359:20;13377:1;13359:20;:::i;:::-;13354:25;;13393:20;13411:1;13393:20;:::i;:::-;13388:25;;13581:1;13513:66;13509:74;13506:1;13503:81;13498:1;13491:9;13484:17;13480:105;13477:131;;;13588:18;;:::i;:::-;13477:131;13636:1;13633;13629:9;13618:20;;13296:348;;;;:::o;13650:191::-;13690:4;13710:20;13728:1;13710:20;:::i;:::-;13705:25;;13744:20;13762:1;13744:20;:::i;:::-;13739:25;;13783:1;13780;13777:8;13774:34;;;13788:18;;:::i;:::-;13774:34;13833:1;13830;13826:9;13818:17;;13650:191;;;;:::o;13847:147::-;13948:11;13985:3;13970:18;;13847:147;;;;:::o;14000:114::-;;:::o;14120:398::-;14279:3;14300:83;14381:1;14376:3;14300:83;:::i;:::-;14293:90;;14392:93;14481:3;14392:93;:::i;:::-;14510:1;14505:3;14501:11;14494:18;;14120:398;;;:::o;14524:379::-;14708:3;14730:147;14873:3;14730:147;:::i;:::-;14723:154;;14894:3;14887:10;;14524:379;;;:::o;14909:172::-;15049:24;15045:1;15037:6;15033:14;15026:48;14909:172;:::o;15087:366::-;15229:3;15250:67;15314:2;15309:3;15250:67;:::i;:::-;15243:74;;15326:93;15415:3;15326:93;:::i;:::-;15444:2;15439:3;15435:12;15428:19;;15087:366;;;:::o;15459:419::-;15625:4;15663:2;15652:9;15648:18;15640:26;;15712:9;15706:4;15702:20;15698:1;15687:9;15683:17;15676:47;15740:131;15866:4;15740:131;:::i;:::-;15732:139;;15459:419;;;:::o;15884:228::-;16024:34;16020:1;16012:6;16008:14;16001:58;16093:11;16088:2;16080:6;16076:15;16069:36;15884:228;:::o;16118:366::-;16260:3;16281:67;16345:2;16340:3;16281:67;:::i;:::-;16274:74;;16357:93;16446:3;16357:93;:::i;:::-;16475:2;16470:3;16466:12;16459:19;;16118:366;;;:::o;16490:419::-;16656:4;16694:2;16683:9;16679:18;16671:26;;16743:9;16737:4;16733:20;16729:1;16718:9;16714:17;16707:47;16771:131;16897:4;16771:131;:::i;:::-;16763:139;;16490:419;;;:::o;16915:143::-;16972:5;17003:6;16997:13;16988:22;;17019:33;17046:5;17019:33;:::i;:::-;16915:143;;;;:::o;17064:351::-;17134:6;17183:2;17171:9;17162:7;17158:23;17154:32;17151:119;;;17189:79;;:::i;:::-;17151:119;17309:1;17334:64;17390:7;17381:6;17370:9;17366:22;17334:64;:::i;:::-;17324:74;;17280:128;17064:351;;;;:::o;17421:332::-;17542:4;17580:2;17569:9;17565:18;17557:26;;17593:71;17661:1;17650:9;17646:17;17637:6;17593:71;:::i;:::-;17674:72;17742:2;17731:9;17727:18;17718:6;17674:72;:::i;:::-;17421:332;;;;;:::o;17759:173::-;17899:25;17895:1;17887:6;17883:14;17876:49;17759:173;:::o;17938:366::-;18080:3;18101:67;18165:2;18160:3;18101:67;:::i;:::-;18094:74;;18177:93;18266:3;18177:93;:::i;:::-;18295:2;18290:3;18286:12;18279:19;;17938:366;;;:::o;18310:419::-;18476:4;18514:2;18503:9;18499:18;18491:26;;18563:9;18557:4;18553:20;18549:1;18538:9;18534:17;18527:47;18591:131;18717:4;18591:131;:::i;:::-;18583:139;;18310:419;;;:::o;18735:176::-;18875:28;18871:1;18863:6;18859:14;18852:52;18735:176;:::o;18917:366::-;19059:3;19080:67;19144:2;19139:3;19080:67;:::i;:::-;19073:74;;19156:93;19245:3;19156:93;:::i;:::-;19274:2;19269:3;19265:12;19258:19;;18917:366;;;:::o;19289:419::-;19455:4;19493:2;19482:9;19478:18;19470:26;;19542:9;19536:4;19532:20;19528:1;19517:9;19513:17;19506:47;19570:131;19696:4;19570:131;:::i;:::-;19562:139;;19289:419;;;:::o;19714:175::-;19854:27;19850:1;19842:6;19838:14;19831:51;19714:175;:::o;19895:366::-;20037:3;20058:67;20122:2;20117:3;20058:67;:::i;:::-;20051:74;;20134:93;20223:3;20134:93;:::i;:::-;20252:2;20247:3;20243:12;20236:19;;19895:366;;;:::o;20267:419::-;20433:4;20471:2;20460:9;20456:18;20448:26;;20520:9;20514:4;20510:20;20506:1;20495:9;20491:17;20484:47;20548:131;20674:4;20548:131;:::i;:::-;20540:139;;20267:419;;;:::o;20692:143::-;20749:5;20780:6;20774:13;20765:22;;20796:33;20823:5;20796:33;:::i;:::-;20692:143;;;;:::o;20841:351::-;20911:6;20960:2;20948:9;20939:7;20935:23;20931:32;20928:119;;;20966:79;;:::i;:::-;20928:119;21086:1;21111:64;21167:7;21158:6;21147:9;21143:22;21111:64;:::i;:::-;21101:74;;21057:128;20841:351;;;;:::o;21198:332::-;21319:4;21357:2;21346:9;21342:18;21334:26;;21370:71;21438:1;21427:9;21423:17;21414:6;21370:71;:::i;:::-;21451:72;21519:2;21508:9;21504:18;21495:6;21451:72;:::i;:::-;21198:332;;;;;:::o;21536:137::-;21590:5;21621:6;21615:13;21606:22;;21637:30;21661:5;21637:30;:::i;:::-;21536:137;;;;:::o;21679:345::-;21746:6;21795:2;21783:9;21774:7;21770:23;21766:32;21763:119;;;21801:79;;:::i;:::-;21763:119;21921:1;21946:61;21999:7;21990:6;21979:9;21975:22;21946:61;:::i;:::-;21936:71;;21892:125;21679:345;;;;:::o;22030:225::-;22170:34;22166:1;22158:6;22154:14;22147:58;22239:8;22234:2;22226:6;22222:15;22215:33;22030:225;:::o;22261:366::-;22403:3;22424:67;22488:2;22483:3;22424:67;:::i;:::-;22417:74;;22500:93;22589:3;22500:93;:::i;:::-;22618:2;22613:3;22609:12;22602:19;;22261:366;;;:::o;22633:419::-;22799:4;22837:2;22826:9;22822:18;22814:26;;22886:9;22880:4;22876:20;22872:1;22861:9;22857:17;22850:47;22914:131;23040:4;22914:131;:::i;:::-;22906:139;;22633:419;;;:::o;23058:221::-;23198:34;23194:1;23186:6;23182:14;23175:58;23267:4;23262:2;23254:6;23250:15;23243:29;23058:221;:::o;23285:366::-;23427:3;23448:67;23512:2;23507:3;23448:67;:::i;:::-;23441:74;;23524:93;23613:3;23524:93;:::i;:::-;23642:2;23637:3;23633:12;23626:19;;23285:366;;;:::o;23657:419::-;23823:4;23861:2;23850:9;23846:18;23838:26;;23910:9;23904:4;23900:20;23896:1;23885:9;23881:17;23874:47;23938:131;24064:4;23938:131;:::i;:::-;23930:139;;23657:419;;;:::o;24082:173::-;24222:25;24218:1;24210:6;24206:14;24199:49;24082:173;:::o;24261:366::-;24403:3;24424:67;24488:2;24483:3;24424:67;:::i;:::-;24417:74;;24500:93;24589:3;24500:93;:::i;:::-;24618:2;24613:3;24609:12;24602:19;;24261:366;;;:::o;24633:419::-;24799:4;24837:2;24826:9;24822:18;24814:26;;24886:9;24880:4;24876:20;24872:1;24861:9;24857:17;24850:47;24914:131;25040:4;24914:131;:::i;:::-;24906:139;;24633:419;;;:::o;25058:173::-;25198:25;25194:1;25186:6;25182:14;25175:49;25058:173;:::o;25237:366::-;25379:3;25400:67;25464:2;25459:3;25400:67;:::i;:::-;25393:74;;25476:93;25565:3;25476:93;:::i;:::-;25594:2;25589:3;25585:12;25578:19;;25237:366;;;:::o;25609:419::-;25775:4;25813:2;25802:9;25798:18;25790:26;;25862:9;25856:4;25852:20;25848:1;25837:9;25833:17;25826:47;25890:131;26016:4;25890:131;:::i;:::-;25882:139;;25609:419;;;:::o;26034:180::-;26082:77;26079:1;26072:88;26179:4;26176:1;26169:15;26203:4;26200:1;26193:15;26220:185;26260:1;26277:20;26295:1;26277:20;:::i;:::-;26272:25;;26311:20;26329:1;26311:20;:::i;:::-;26306:25;;26350:1;26340:35;;26355:18;;:::i;:::-;26340:35;26397:1;26394;26390:9;26385:14;;26220:185;;;;:::o;26411:305::-;26451:3;26470:20;26488:1;26470:20;:::i;:::-;26465:25;;26504:20;26522:1;26504:20;:::i;:::-;26499:25;;26658:1;26590:66;26586:74;26583:1;26580:81;26577:107;;;26664:18;;:::i;:::-;26577:107;26708:1;26705;26701:9;26694:16;;26411:305;;;;:::o;26722:180::-;26770:77;26767:1;26760:88;26867:4;26864:1;26857:15;26891:4;26888:1;26881:15;26908:180;26956:77;26953:1;26946:88;27053:4;27050:1;27043:15;27077:4;27074:1;27067:15;27094:85;27139:7;27168:5;27157:16;;27094:85;;;:::o;27185:60::-;27213:3;27234:5;27227:12;;27185:60;;;:::o;27251:158::-;27309:9;27342:61;27360:42;27369:32;27395:5;27369:32;:::i;:::-;27360:42;:::i;:::-;27342:61;:::i;:::-;27329:74;;27251:158;;;:::o;27415:147::-;27510:45;27549:5;27510:45;:::i;:::-;27505:3;27498:58;27415:147;;:::o;27568:114::-;27635:6;27669:5;27663:12;27653:22;;27568:114;;;:::o;27688:184::-;27787:11;27821:6;27816:3;27809:19;27861:4;27856:3;27852:14;27837:29;;27688:184;;;;:::o;27878:132::-;27945:4;27968:3;27960:11;;27998:4;27993:3;27989:14;27981:22;;27878:132;;;:::o;28016:108::-;28093:24;28111:5;28093:24;:::i;:::-;28088:3;28081:37;28016:108;;:::o;28130:179::-;28199:10;28220:46;28262:3;28254:6;28220:46;:::i;:::-;28298:4;28293:3;28289:14;28275:28;;28130:179;;;;:::o;28315:113::-;28385:4;28417;28412:3;28408:14;28400:22;;28315:113;;;:::o;28464:732::-;28583:3;28612:54;28660:5;28612:54;:::i;:::-;28682:86;28761:6;28756:3;28682:86;:::i;:::-;28675:93;;28792:56;28842:5;28792:56;:::i;:::-;28871:7;28902:1;28887:284;28912:6;28909:1;28906:13;28887:284;;;28988:6;28982:13;29015:63;29074:3;29059:13;29015:63;:::i;:::-;29008:70;;29101:60;29154:6;29101:60;:::i;:::-;29091:70;;28947:224;28934:1;28931;28927:9;28922:14;;28887:284;;;28891:14;29187:3;29180:10;;28588:608;;;28464:732;;;;:::o;29202:831::-;29465:4;29503:3;29492:9;29488:19;29480:27;;29517:71;29585:1;29574:9;29570:17;29561:6;29517:71;:::i;:::-;29598:80;29674:2;29663:9;29659:18;29650:6;29598:80;:::i;:::-;29725:9;29719:4;29715:20;29710:2;29699:9;29695:18;29688:48;29753:108;29856:4;29847:6;29753:108;:::i;:::-;29745:116;;29871:72;29939:2;29928:9;29924:18;29915:6;29871:72;:::i;:::-;29953:73;30021:3;30010:9;30006:19;29997:6;29953:73;:::i;:::-;29202:831;;;;;;;;:::o

Swarm Source

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