POL Price: $0.714905 (+2.31%)
 

Overview

Max Total Supply

10,000,000,000,000,000 Apesessed

Holders

15

Market

Price

$0.00 @ 0.000000 POL

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
Circle: USDC.e Token
Balance
401,626,612,542,304.495375286 Apesessed

Value
$0.00
0x2791bca1f2de4661ed88a30c99a7a9449aa84174
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
Apesessed

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2022-08-20
*/

/*
Apesessed
https://opensea.io/assets/ethereum/0xbAA4e7aDA32cA16811dc775d3A2b8Aa83D83F9d8/2353
*/

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

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface ApesessedECO {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (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");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

 
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract Apesessed is Context, ApesessedECO, Ownable {
    using SafeMath for uint256;
    using Address for address;

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _isExcluded;
    address[] private _excluded;
   
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _allTotalSupply = 10000000000 * 10**6 * 10**9;
    uint256 private _rTotalSupply = (MAX - (MAX % _allTotalSupply));
    uint256 private _tFeeTotal;

    string private _name = 'Apesessed';
    string private _symbol = 'Apesessed';
    uint8 private _decimals = 9;

    constructor () {
        _rOwned[_msgSender()] = _rTotalSupply;
        emit Transfer(address(0), _msgSender(), _allTotalSupply);
    }

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

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

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

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

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

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

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

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

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

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function isExcluded(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function reflect(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotalSupply = _rTotalSupply.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _allTotalSupply, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

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

    function excludeAccount(address account) external onlyOwner() {
        require(!_isExcluded[account], "Account is not excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeAccount(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is not excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

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

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);       
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);           
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);        
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotalSupply = _rTotalSupply.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee) = _getTValues(tAmount);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee);
    }

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

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

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

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotalSupply;
        uint256 tSupply = _allTotalSupply;      
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotalSupply, _allTotalSupply);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotalSupply.div(_allTotalSupply)) return (_rTotalSupply, _allTotalSupply);
        return (rSupply, tSupply);
    }
}

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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"reflect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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"}]

60806040526a084595161401484a0000006000196200001f9190620002b7565b6000196200002e91906200031e565b6006556040518060400160405280600981526020017f417065736573736564000000000000000000000000000000000000000000000081525060089081620000779190620005c9565b506040518060400160405280600981526020017f417065736573736564000000000000000000000000000000000000000000000081525060099081620000be9190620005c9565b506009600a60006101000a81548160ff021916908360ff160217905550348015620000e857600080fd5b506000620000fb6200027660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460016000620001b06200027660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620001fe6200027660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6a084595161401484a000000604051620002689190620006c1565b60405180910390a3620006de565b600033905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620002c4826200027e565b9150620002d1836200027e565b925082620002e457620002e362000288565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200032b826200027e565b915062000338836200027e565b9250828203905081811115620003535762000352620002ef565b5b92915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003db57607f821691505b602082108103620003f157620003f062000393565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200045b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200041c565b6200046786836200041c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620004aa620004a46200049e846200027e565b6200047f565b6200027e565b9050919050565b6000819050919050565b620004c68362000489565b620004de620004d582620004b1565b84845462000429565b825550505050565b600090565b620004f5620004e6565b62000502818484620004bb565b505050565b5b818110156200052a576200051e600082620004eb565b60018101905062000508565b5050565b601f82111562000579576200054381620003f7565b6200054e846200040c565b810160208510156200055e578190505b620005766200056d856200040c565b83018262000507565b50505b505050565b600082821c905092915050565b60006200059e600019846008026200057e565b1980831691505092915050565b6000620005b983836200058b565b9150826002028217905092915050565b620005d48262000359565b67ffffffffffffffff811115620005f057620005ef62000364565b5b620005fc8254620003c2565b620006098282856200052e565b600060209050601f8311600181146200064157600084156200062c578287015190505b620006388582620005ab565b865550620006a8565b601f1984166200065186620003f7565b60005b828110156200067b5784890151825560018201915060208501945060208101905062000654565b868310156200069b578489015162000697601f8916826200058b565b8355505b6001600288020188555050505b505050505050565b620006bb816200027e565b82525050565b6000602082019050620006d86000830184620006b0565b92915050565b61350b80620006ee6000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a9059cbb1161007c578063a9059cbb14610366578063cba0e99614610396578063dd62ed3e146103c6578063f2cc0c18146103f6578063f2fde38b14610412578063f84354f11461042e57610137565b806370a08231146102c0578063715018a6146102f05780638da5cb5b146102fa57806395d89b4114610318578063a457c2d71461033657610137565b806323b872dd116100ff57806323b872dd146101e25780632d83811914610212578063313ce5671461024257806339509351146102605780634549b0391461029057610137565b8063053ab1821461013c57806306fdde0314610158578063095ea7b31461017657806313114a9d146101a657806318160ddd146101c4575b600080fd5b610156600480360381019061015191906127f5565b61044a565b005b6101606105c4565b60405161016d91906128b2565b60405180910390f35b610190600480360381019061018b9190612932565b610656565b60405161019d919061298d565b60405180910390f35b6101ae610674565b6040516101bb91906129b7565b60405180910390f35b6101cc61067e565b6040516101d991906129b7565b60405180910390f35b6101fc60048036038101906101f791906129d2565b610691565b604051610209919061298d565b60405180910390f35b61022c600480360381019061022791906127f5565b61076a565b60405161023991906129b7565b60405180910390f35b61024a6107d8565b6040516102579190612a41565b60405180910390f35b61027a60048036038101906102759190612932565b6107ef565b604051610287919061298d565b60405180910390f35b6102aa60048036038101906102a59190612a88565b6108a2565b6040516102b791906129b7565b60405180910390f35b6102da60048036038101906102d59190612ac8565b61092d565b6040516102e791906129b7565b60405180910390f35b6102f8610a18565b005b610302610b6b565b60405161030f9190612b04565b60405180910390f35b610320610b94565b60405161032d91906128b2565b60405180910390f35b610350600480360381019061034b9190612932565b610c26565b60405161035d919061298d565b60405180910390f35b610380600480360381019061037b9190612932565b610cf3565b60405161038d919061298d565b60405180910390f35b6103b060048036038101906103ab9190612ac8565b610d11565b6040516103bd919061298d565b60405180910390f35b6103e060048036038101906103db9190612b1f565b610d67565b6040516103ed91906129b7565b60405180910390f35b610410600480360381019061040b9190612ac8565b610dee565b005b61042c60048036038101906104279190612ac8565b6110a2565b005b61044860048036038101906104439190612ac8565b611263565b005b60006104546115b1565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156104e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104da90612bd1565b60405180910390fd5b60006104ee836115b9565b50505050905061054681600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161190919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061059e8160065461161190919063ffffffff16565b6006819055506105b98360075461165b90919063ffffffff16565b600781905550505050565b6060600880546105d390612c20565b80601f01602080910402602001604051908101604052809291908181526020018280546105ff90612c20565b801561064c5780601f106106215761010080835404028352916020019161064c565b820191906000526020600020905b81548152906001019060200180831161062f57829003601f168201915b5050505050905090565b600061066a6106636115b1565b84846116b9565b6001905092915050565b6000600754905090565b60006a084595161401484a000000905090565b600061069e848484611882565b61075f846106aa6115b1565b61075a8560405180606001604052806028815260200161348960289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107106115b1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bdf9092919063ffffffff16565b6116b9565b600190509392505050565b60006006548211156107b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a890612cc3565b60405180910390fd5b60006107bb611c43565b90506107d08184611c6e90919063ffffffff16565b915050919050565b6000600a60009054906101000a900460ff16905090565b60006108986107fc6115b1565b84610893856003600061080d6115b1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165b90919063ffffffff16565b6116b9565b6001905092915050565b60006a084595161401484a0000008311156108f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e990612d2f565b60405180910390fd5b81610911576000610902846115b9565b50505050905080915050610927565b600061091c846115b9565b505050915050809150505b92915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156109c857600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610a13565b610a10600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461076a565b90505b919050565b610a206115b1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa490612d9b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060098054610ba390612c20565b80601f0160208091040260200160405190810160405280929190818152602001828054610bcf90612c20565b8015610c1c5780601f10610bf157610100808354040283529160200191610c1c565b820191906000526020600020905b815481529060010190602001808311610bff57829003601f168201915b5050505050905090565b6000610ce9610c336115b1565b84610ce4856040518060600160405280602581526020016134b16025913960036000610c5d6115b1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bdf9092919063ffffffff16565b6116b9565b6001905092915050565b6000610d07610d006115b1565b8484611882565b6001905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610df66115b1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7a90612d9b565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0790612e07565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610fe457610fa0600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461076a565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6110aa6115b1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112e90612d9b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119d90612e99565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61126b6115b1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ef90612d9b565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137b90612e07565b60405180910390fd5b60005b6005805490508110156115ad578173ffffffffffffffffffffffffffffffffffffffff16600582815481106113bf576113be612eb9565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361159a57600560016005805490506114199190612f17565b8154811061142a57611429612eb9565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166005828154811061146957611468612eb9565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060058054806115605761155f612f4b565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556115ad565b80806115a590612f7a565b915050611387565b5050565b600033905090565b60008060008060008060006115cd88611cb8565b9150915060006115db611c43565b905060008060006115ed8c8686611d0a565b92509250925082828288889a509a509a509a509a5050505050505091939590929450565b600061165383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bdf565b905092915050565b600080828461166a9190612fc2565b9050838110156116af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a690613042565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171f906130d4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178e90613166565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161187591906129b7565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e8906131f8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611960576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119579061328a565b60405180910390fd5b600081116119a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199a9061331c565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611a465750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a5b57611a56838383611d68565b611bda565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611afe5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611b1357611b0e838383611fbb565b611bd9565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611bb75750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bcc57611bc783838361220e565b611bd8565b611bd783838361220e565b5b5b5b505050565b6000838311158290611c27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1e91906128b2565b60405180910390fd5b5060008385611c369190612f17565b9050809150509392505050565b6000806000611c506123cc565b91509150611c678183611c6e90919063ffffffff16565b9250505090565b6000611cb083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126a3565b905092915050565b6000806000611ce46005611cd6606487611c6e90919063ffffffff16565b61270690919063ffffffff16565b90506000611cfb828661161190919063ffffffff16565b90508082935093505050915091565b600080600080611d23858861270690919063ffffffff16565b90506000611d3a868861270690919063ffffffff16565b90506000611d51828461161190919063ffffffff16565b905082818395509550955050505093509350939050565b6000806000806000611d79866115b9565b94509450945094509450611dd586600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e6a85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611eff84600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165b90919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f4c8382612780565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fa991906129b7565b60405180910390a35050505050505050565b6000806000806000611fcc866115b9565b9450945094509450945061202885600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120bd82600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165b90919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061215284600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165b90919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061219f8382612780565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121fc91906129b7565b60405180910390a35050505050505050565b600080600080600061221f866115b9565b9450945094509450945061227b85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061231084600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165b90919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061235d8382612780565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123ba91906129b7565b60405180910390a35050505050505050565b6000806000600654905060006a084595161401484a000000905060005b6005805490508110156126545782600160006005848154811061240f5761240e612eb9565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806124fd575081600260006005848154811061249557612494612eb9565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561251d576006546a084595161401484a0000009450945050505061269f565b6125ad600160006005848154811061253857612537612eb9565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461161190919063ffffffff16565b925061263f60026000600584815481106125ca576125c9612eb9565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361161190919063ffffffff16565b9150808061264c90612f7a565b9150506123e9565b506126756a084595161401484a000000600654611c6e90919063ffffffff16565b821015612696576006546a084595161401484a00000093509350505061269f565b81819350935050505b9091565b600080831182906126ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e191906128b2565b60405180910390fd5b50600083856126f9919061336b565b9050809150509392505050565b6000808303612718576000905061277a565b60008284612726919061339c565b9050828482612735919061336b565b14612775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276c90613468565b60405180910390fd5b809150505b92915050565b6127958260065461161190919063ffffffff16565b6006819055506127b08160075461165b90919063ffffffff16565b6007819055505050565b600080fd5b6000819050919050565b6127d2816127bf565b81146127dd57600080fd5b50565b6000813590506127ef816127c9565b92915050565b60006020828403121561280b5761280a6127ba565b5b6000612819848285016127e0565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561285c578082015181840152602081019050612841565b60008484015250505050565b6000601f19601f8301169050919050565b600061288482612822565b61288e818561282d565b935061289e81856020860161283e565b6128a781612868565b840191505092915050565b600060208201905081810360008301526128cc8184612879565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128ff826128d4565b9050919050565b61290f816128f4565b811461291a57600080fd5b50565b60008135905061292c81612906565b92915050565b60008060408385031215612949576129486127ba565b5b60006129578582860161291d565b9250506020612968858286016127e0565b9150509250929050565b60008115159050919050565b61298781612972565b82525050565b60006020820190506129a2600083018461297e565b92915050565b6129b1816127bf565b82525050565b60006020820190506129cc60008301846129a8565b92915050565b6000806000606084860312156129eb576129ea6127ba565b5b60006129f98682870161291d565b9350506020612a0a8682870161291d565b9250506040612a1b868287016127e0565b9150509250925092565b600060ff82169050919050565b612a3b81612a25565b82525050565b6000602082019050612a566000830184612a32565b92915050565b612a6581612972565b8114612a7057600080fd5b50565b600081359050612a8281612a5c565b92915050565b60008060408385031215612a9f57612a9e6127ba565b5b6000612aad858286016127e0565b9250506020612abe85828601612a73565b9150509250929050565b600060208284031215612ade57612add6127ba565b5b6000612aec8482850161291d565b91505092915050565b612afe816128f4565b82525050565b6000602082019050612b196000830184612af5565b92915050565b60008060408385031215612b3657612b356127ba565b5b6000612b448582860161291d565b9250506020612b558582860161291d565b9150509250929050565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b6000612bbb602c8361282d565b9150612bc682612b5f565b604082019050919050565b60006020820190508181036000830152612bea81612bae565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612c3857607f821691505b602082108103612c4b57612c4a612bf1565b5b50919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000612cad602a8361282d565b9150612cb882612c51565b604082019050919050565b60006020820190508181036000830152612cdc81612ca0565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b6000612d19601f8361282d565b9150612d2482612ce3565b602082019050919050565b60006020820190508181036000830152612d4881612d0c565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612d8560208361282d565b9150612d9082612d4f565b602082019050919050565b60006020820190508181036000830152612db481612d78565b9050919050565b7f4163636f756e74206973206e6f74206578636c75646564000000000000000000600082015250565b6000612df160178361282d565b9150612dfc82612dbb565b602082019050919050565b60006020820190508181036000830152612e2081612de4565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612e8360268361282d565b9150612e8e82612e27565b604082019050919050565b60006020820190508181036000830152612eb281612e76565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f22826127bf565b9150612f2d836127bf565b9250828203905081811115612f4557612f44612ee8565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000612f85826127bf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fb757612fb6612ee8565b5b600182019050919050565b6000612fcd826127bf565b9150612fd8836127bf565b9250828201905080821115612ff057612fef612ee8565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061302c601b8361282d565b915061303782612ff6565b602082019050919050565b6000602082019050818103600083015261305b8161301f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006130be60248361282d565b91506130c982613062565b604082019050919050565b600060208201905081810360008301526130ed816130b1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061315060228361282d565b915061315b826130f4565b604082019050919050565b6000602082019050818103600083015261317f81613143565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006131e260258361282d565b91506131ed82613186565b604082019050919050565b60006020820190508181036000830152613211816131d5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061327460238361282d565b915061327f82613218565b604082019050919050565b600060208201905081810360008301526132a381613267565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061330660298361282d565b9150613311826132aa565b604082019050919050565b60006020820190508181036000830152613335816132f9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613376826127bf565b9150613381836127bf565b9250826133915761339061333c565b5b828204905092915050565b60006133a7826127bf565b91506133b2836127bf565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156133eb576133ea612ee8565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061345260218361282d565b915061345d826133f6565b604082019050919050565b6000602082019050818103600083015261348181613445565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d3fb1e5fec9263d4eefd64ba488c9eded96d36a8661764b79ee6eb0c298d531664736f6c63430008100033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a9059cbb1161007c578063a9059cbb14610366578063cba0e99614610396578063dd62ed3e146103c6578063f2cc0c18146103f6578063f2fde38b14610412578063f84354f11461042e57610137565b806370a08231146102c0578063715018a6146102f05780638da5cb5b146102fa57806395d89b4114610318578063a457c2d71461033657610137565b806323b872dd116100ff57806323b872dd146101e25780632d83811914610212578063313ce5671461024257806339509351146102605780634549b0391461029057610137565b8063053ab1821461013c57806306fdde0314610158578063095ea7b31461017657806313114a9d146101a657806318160ddd146101c4575b600080fd5b610156600480360381019061015191906127f5565b61044a565b005b6101606105c4565b60405161016d91906128b2565b60405180910390f35b610190600480360381019061018b9190612932565b610656565b60405161019d919061298d565b60405180910390f35b6101ae610674565b6040516101bb91906129b7565b60405180910390f35b6101cc61067e565b6040516101d991906129b7565b60405180910390f35b6101fc60048036038101906101f791906129d2565b610691565b604051610209919061298d565b60405180910390f35b61022c600480360381019061022791906127f5565b61076a565b60405161023991906129b7565b60405180910390f35b61024a6107d8565b6040516102579190612a41565b60405180910390f35b61027a60048036038101906102759190612932565b6107ef565b604051610287919061298d565b60405180910390f35b6102aa60048036038101906102a59190612a88565b6108a2565b6040516102b791906129b7565b60405180910390f35b6102da60048036038101906102d59190612ac8565b61092d565b6040516102e791906129b7565b60405180910390f35b6102f8610a18565b005b610302610b6b565b60405161030f9190612b04565b60405180910390f35b610320610b94565b60405161032d91906128b2565b60405180910390f35b610350600480360381019061034b9190612932565b610c26565b60405161035d919061298d565b60405180910390f35b610380600480360381019061037b9190612932565b610cf3565b60405161038d919061298d565b60405180910390f35b6103b060048036038101906103ab9190612ac8565b610d11565b6040516103bd919061298d565b60405180910390f35b6103e060048036038101906103db9190612b1f565b610d67565b6040516103ed91906129b7565b60405180910390f35b610410600480360381019061040b9190612ac8565b610dee565b005b61042c60048036038101906104279190612ac8565b6110a2565b005b61044860048036038101906104439190612ac8565b611263565b005b60006104546115b1565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156104e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104da90612bd1565b60405180910390fd5b60006104ee836115b9565b50505050905061054681600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161190919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061059e8160065461161190919063ffffffff16565b6006819055506105b98360075461165b90919063ffffffff16565b600781905550505050565b6060600880546105d390612c20565b80601f01602080910402602001604051908101604052809291908181526020018280546105ff90612c20565b801561064c5780601f106106215761010080835404028352916020019161064c565b820191906000526020600020905b81548152906001019060200180831161062f57829003601f168201915b5050505050905090565b600061066a6106636115b1565b84846116b9565b6001905092915050565b6000600754905090565b60006a084595161401484a000000905090565b600061069e848484611882565b61075f846106aa6115b1565b61075a8560405180606001604052806028815260200161348960289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107106115b1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bdf9092919063ffffffff16565b6116b9565b600190509392505050565b60006006548211156107b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a890612cc3565b60405180910390fd5b60006107bb611c43565b90506107d08184611c6e90919063ffffffff16565b915050919050565b6000600a60009054906101000a900460ff16905090565b60006108986107fc6115b1565b84610893856003600061080d6115b1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165b90919063ffffffff16565b6116b9565b6001905092915050565b60006a084595161401484a0000008311156108f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e990612d2f565b60405180910390fd5b81610911576000610902846115b9565b50505050905080915050610927565b600061091c846115b9565b505050915050809150505b92915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156109c857600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610a13565b610a10600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461076a565b90505b919050565b610a206115b1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa490612d9b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060098054610ba390612c20565b80601f0160208091040260200160405190810160405280929190818152602001828054610bcf90612c20565b8015610c1c5780601f10610bf157610100808354040283529160200191610c1c565b820191906000526020600020905b815481529060010190602001808311610bff57829003601f168201915b5050505050905090565b6000610ce9610c336115b1565b84610ce4856040518060600160405280602581526020016134b16025913960036000610c5d6115b1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bdf9092919063ffffffff16565b6116b9565b6001905092915050565b6000610d07610d006115b1565b8484611882565b6001905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610df66115b1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7a90612d9b565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0790612e07565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610fe457610fa0600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461076a565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6110aa6115b1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112e90612d9b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119d90612e99565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61126b6115b1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ef90612d9b565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137b90612e07565b60405180910390fd5b60005b6005805490508110156115ad578173ffffffffffffffffffffffffffffffffffffffff16600582815481106113bf576113be612eb9565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361159a57600560016005805490506114199190612f17565b8154811061142a57611429612eb9565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166005828154811061146957611468612eb9565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060058054806115605761155f612f4b565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556115ad565b80806115a590612f7a565b915050611387565b5050565b600033905090565b60008060008060008060006115cd88611cb8565b9150915060006115db611c43565b905060008060006115ed8c8686611d0a565b92509250925082828288889a509a509a509a509a5050505050505091939590929450565b600061165383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bdf565b905092915050565b600080828461166a9190612fc2565b9050838110156116af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a690613042565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171f906130d4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178e90613166565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161187591906129b7565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e8906131f8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611960576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119579061328a565b60405180910390fd5b600081116119a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199a9061331c565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611a465750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a5b57611a56838383611d68565b611bda565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611afe5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611b1357611b0e838383611fbb565b611bd9565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611bb75750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bcc57611bc783838361220e565b611bd8565b611bd783838361220e565b5b5b5b505050565b6000838311158290611c27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1e91906128b2565b60405180910390fd5b5060008385611c369190612f17565b9050809150509392505050565b6000806000611c506123cc565b91509150611c678183611c6e90919063ffffffff16565b9250505090565b6000611cb083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126a3565b905092915050565b6000806000611ce46005611cd6606487611c6e90919063ffffffff16565b61270690919063ffffffff16565b90506000611cfb828661161190919063ffffffff16565b90508082935093505050915091565b600080600080611d23858861270690919063ffffffff16565b90506000611d3a868861270690919063ffffffff16565b90506000611d51828461161190919063ffffffff16565b905082818395509550955050505093509350939050565b6000806000806000611d79866115b9565b94509450945094509450611dd586600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e6a85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611eff84600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165b90919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f4c8382612780565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fa991906129b7565b60405180910390a35050505050505050565b6000806000806000611fcc866115b9565b9450945094509450945061202885600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120bd82600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165b90919063ffffffff16565b600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061215284600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165b90919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061219f8382612780565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121fc91906129b7565b60405180910390a35050505050505050565b600080600080600061221f866115b9565b9450945094509450945061227b85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161190919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061231084600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461165b90919063ffffffff16565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061235d8382612780565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123ba91906129b7565b60405180910390a35050505050505050565b6000806000600654905060006a084595161401484a000000905060005b6005805490508110156126545782600160006005848154811061240f5761240e612eb9565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411806124fd575081600260006005848154811061249557612494612eb9565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561251d576006546a084595161401484a0000009450945050505061269f565b6125ad600160006005848154811061253857612537612eb9565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461161190919063ffffffff16565b925061263f60026000600584815481106125ca576125c9612eb9565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361161190919063ffffffff16565b9150808061264c90612f7a565b9150506123e9565b506126756a084595161401484a000000600654611c6e90919063ffffffff16565b821015612696576006546a084595161401484a00000093509350505061269f565b81819350935050505b9091565b600080831182906126ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e191906128b2565b60405180910390fd5b50600083856126f9919061336b565b9050809150509392505050565b6000808303612718576000905061277a565b60008284612726919061339c565b9050828482612735919061336b565b14612775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276c90613468565b60405180910390fd5b809150505b92915050565b6127958260065461161190919063ffffffff16565b6006819055506127b08160075461165b90919063ffffffff16565b6007819055505050565b600080fd5b6000819050919050565b6127d2816127bf565b81146127dd57600080fd5b50565b6000813590506127ef816127c9565b92915050565b60006020828403121561280b5761280a6127ba565b5b6000612819848285016127e0565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561285c578082015181840152602081019050612841565b60008484015250505050565b6000601f19601f8301169050919050565b600061288482612822565b61288e818561282d565b935061289e81856020860161283e565b6128a781612868565b840191505092915050565b600060208201905081810360008301526128cc8184612879565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128ff826128d4565b9050919050565b61290f816128f4565b811461291a57600080fd5b50565b60008135905061292c81612906565b92915050565b60008060408385031215612949576129486127ba565b5b60006129578582860161291d565b9250506020612968858286016127e0565b9150509250929050565b60008115159050919050565b61298781612972565b82525050565b60006020820190506129a2600083018461297e565b92915050565b6129b1816127bf565b82525050565b60006020820190506129cc60008301846129a8565b92915050565b6000806000606084860312156129eb576129ea6127ba565b5b60006129f98682870161291d565b9350506020612a0a8682870161291d565b9250506040612a1b868287016127e0565b9150509250925092565b600060ff82169050919050565b612a3b81612a25565b82525050565b6000602082019050612a566000830184612a32565b92915050565b612a6581612972565b8114612a7057600080fd5b50565b600081359050612a8281612a5c565b92915050565b60008060408385031215612a9f57612a9e6127ba565b5b6000612aad858286016127e0565b9250506020612abe85828601612a73565b9150509250929050565b600060208284031215612ade57612add6127ba565b5b6000612aec8482850161291d565b91505092915050565b612afe816128f4565b82525050565b6000602082019050612b196000830184612af5565b92915050565b60008060408385031215612b3657612b356127ba565b5b6000612b448582860161291d565b9250506020612b558582860161291d565b9150509250929050565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b6000612bbb602c8361282d565b9150612bc682612b5f565b604082019050919050565b60006020820190508181036000830152612bea81612bae565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612c3857607f821691505b602082108103612c4b57612c4a612bf1565b5b50919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000612cad602a8361282d565b9150612cb882612c51565b604082019050919050565b60006020820190508181036000830152612cdc81612ca0565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b6000612d19601f8361282d565b9150612d2482612ce3565b602082019050919050565b60006020820190508181036000830152612d4881612d0c565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612d8560208361282d565b9150612d9082612d4f565b602082019050919050565b60006020820190508181036000830152612db481612d78565b9050919050565b7f4163636f756e74206973206e6f74206578636c75646564000000000000000000600082015250565b6000612df160178361282d565b9150612dfc82612dbb565b602082019050919050565b60006020820190508181036000830152612e2081612de4565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612e8360268361282d565b9150612e8e82612e27565b604082019050919050565b60006020820190508181036000830152612eb281612e76565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f22826127bf565b9150612f2d836127bf565b9250828203905081811115612f4557612f44612ee8565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000612f85826127bf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fb757612fb6612ee8565b5b600182019050919050565b6000612fcd826127bf565b9150612fd8836127bf565b9250828201905080821115612ff057612fef612ee8565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061302c601b8361282d565b915061303782612ff6565b602082019050919050565b6000602082019050818103600083015261305b8161301f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006130be60248361282d565b91506130c982613062565b604082019050919050565b600060208201905081810360008301526130ed816130b1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061315060228361282d565b915061315b826130f4565b604082019050919050565b6000602082019050818103600083015261317f81613143565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006131e260258361282d565b91506131ed82613186565b604082019050919050565b60006020820190508181036000830152613211816131d5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061327460238361282d565b915061327f82613218565b604082019050919050565b600060208201905081810360008301526132a381613267565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061330660298361282d565b9150613311826132aa565b604082019050919050565b60006020820190508181036000830152613335816132f9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613376826127bf565b9150613381836127bf565b9250826133915761339061333c565b5b828204905092915050565b60006133a7826127bf565b91506133b2836127bf565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156133eb576133ea612ee8565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061345260218361282d565b915061345d826133f6565b604082019050919050565b6000602082019050818103600083015261348181613445565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d3fb1e5fec9263d4eefd64ba488c9eded96d36a8661764b79ee6eb0c298d531664736f6c63430008100033

Deployed Bytecode Sourcemap

8694:10168:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11715:388;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9589:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10509:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11620:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9866:103;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10678:313;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12561:259;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9775:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10999:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12111:442;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9977:198;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8140:148;;;:::i;:::-;;7838:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9680:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11225:269;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10183:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11502:110;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10358:143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12828:328;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8443:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13164:474;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11715:388;11767:14;11784:12;:10;:12::i;:::-;11767:29;;11816:11;:19;11828:6;11816:19;;;;;;;;;;;;;;;;;;;;;;;;;11815:20;11807:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;11896:15;11919:19;11930:7;11919:10;:19::i;:::-;11895:43;;;;;;11967:28;11987:7;11967;:15;11975:6;11967:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;11949:7;:15;11957:6;11949:15;;;;;;;;;;;;;;;:46;;;;12022:26;12040:7;12022:13;;:17;;:26;;;;:::i;:::-;12006:13;:42;;;;12072:23;12087:7;12072:10;;:14;;:23;;;;:::i;:::-;12059:10;:36;;;;11756:347;;11715:388;:::o;9589:83::-;9626:13;9659:5;9652:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9589:83;:::o;10509:161::-;10584:4;10601:39;10610:12;:10;:12::i;:::-;10624:7;10633:6;10601:8;:39::i;:::-;10658:4;10651:11;;10509:161;;;;:::o;11620:87::-;11662:7;11689:10;;11682:17;;11620:87;:::o;9866:103::-;9919:7;9184:27;9939:22;;9866:103;:::o;10678:313::-;10776:4;10793:36;10803:6;10811:9;10822:6;10793:9;:36::i;:::-;10840:121;10849:6;10857:12;:10;:12::i;:::-;10871:89;10909:6;10871:89;;;;;;;;;;;;;;;;;:11;:19;10883:6;10871:19;;;;;;;;;;;;;;;:33;10891:12;:10;:12::i;:::-;10871:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;10840:8;:121::i;:::-;10979:4;10972:11;;10678:313;;;;;:::o;12561:259::-;12627:7;12666:13;;12655:7;:24;;12647:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12737:19;12760:10;:8;:10::i;:::-;12737:33;;12788:24;12800:11;12788:7;:11;;:24;;;;:::i;:::-;12781:31;;;12561:259;;;:::o;9775:83::-;9816:5;9841:9;;;;;;;;;;;9834:16;;9775:83;:::o;10999:218::-;11087:4;11104:83;11113:12;:10;:12::i;:::-;11127:7;11136:50;11175:10;11136:11;:25;11148:12;:10;:12::i;:::-;11136:25;;;;;;;;;;;;;;;:34;11162:7;11136:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11104:8;:83::i;:::-;11205:4;11198:11;;10999:218;;;;:::o;12111:442::-;12201:7;9184:27;12229:7;:26;;12221:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12307:17;12302:244;;12342:15;12365:19;12376:7;12365:10;:19::i;:::-;12341:43;;;;;;12406:7;12399:14;;;;;12302:244;12448:23;12478:19;12489:7;12478:10;:19::i;:::-;12446:51;;;;;;12519:15;12512:22;;;12111:442;;;;;:::o;9977:198::-;10043:7;10067:11;:20;10079:7;10067:20;;;;;;;;;;;;;;;;;;;;;;;;;10063:49;;;10096:7;:16;10104:7;10096:16;;;;;;;;;;;;;;;;10089:23;;;;10063:49;10130:37;10150:7;:16;10158:7;10150:16;;;;;;;;;;;;;;;;10130:19;:37::i;:::-;10123:44;;9977:198;;;;:::o;8140:148::-;8060:12;:10;:12::i;:::-;8050:22;;:6;;;;;;;;;;:22;;;8042:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8247:1:::1;8210:40;;8231:6;::::0;::::1;;;;;;;;8210:40;;;;;;;;;;;;8278:1;8261:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;8140:148::o:0;7838:79::-;7876:7;7903:6;;;;;;;;;;;7896:13;;7838:79;:::o;9680:87::-;9719:13;9752:7;9745:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9680:87;:::o;11225:269::-;11318:4;11335:129;11344:12;:10;:12::i;:::-;11358:7;11367:96;11406:15;11367:96;;;;;;;;;;;;;;;;;:11;:25;11379:12;:10;:12::i;:::-;11367:25;;;;;;;;;;;;;;;:34;11393:7;11367:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;11335:8;:129::i;:::-;11482:4;11475:11;;11225:269;;;;:::o;10183:167::-;10261:4;10278:42;10288:12;:10;:12::i;:::-;10302:9;10313:6;10278:9;:42::i;:::-;10338:4;10331:11;;10183:167;;;;:::o;11502:110::-;11560:4;11584:11;:20;11596:7;11584:20;;;;;;;;;;;;;;;;;;;;;;;;;11577:27;;11502:110;;;:::o;10358:143::-;10439:7;10466:11;:18;10478:5;10466:18;;;;;;;;;;;;;;;:27;10485:7;10466:27;;;;;;;;;;;;;;;;10459:34;;10358:143;;;;:::o;12828:328::-;8060:12;:10;:12::i;:::-;8050:22;;:6;;;;;;;;;;:22;;;8042:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12910:11:::1;:20;12922:7;12910:20;;;;;;;;;;;;;;;;;;;;;;;;;12909:21;12901:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12991:1;12972:7;:16;12980:7;12972:16;;;;;;;;;;;;;;;;:20;12969:108;;;13028:37;13048:7;:16;13056:7;13048:16;;;;;;;;;;;;;;;;13028:19;:37::i;:::-;13009:7;:16;13017:7;13009:16;;;;;;;;;;;;;;;:56;;;;12969:108;13110:4;13087:11;:20;13099:7;13087:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;13125:9;13140:7;13125:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12828:328:::0;:::o;8443:244::-;8060:12;:10;:12::i;:::-;8050:22;;:6;;;;;;;;;;:22;;;8042:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8552:1:::1;8532:22;;:8;:22;;::::0;8524:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8642:8;8613:38;;8634:6;::::0;::::1;;;;;;;;8613:38;;;;;;;;;;;;8671:8;8662:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;8443:244:::0;:::o;13164:474::-;8060:12;:10;:12::i;:::-;8050:22;;:6;;;;;;;;;;:22;;;8042:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13245:11:::1;:20;13257:7;13245:20;;;;;;;;;;;;;;;;;;;;;;;;;13237:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;13309:9;13304:327;13328:9;:16;;;;13324:1;:20;13304:327;;;13386:7;13370:23;;:9;13380:1;13370:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:23;;::::0;13366:254:::1;;13429:9;13458:1;13439:9;:16;;;;:20;;;;:::i;:::-;13429:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13414:9;13424:1;13414:12;;;;;;;;:::i;:::-;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;13498:1;13479:7;:16;13487:7;13479:16;;;;;;;;;;;;;;;:20;;;;13541:5;13518:11;:20;13530:7;13518:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;13565:9;:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;13599:5;;13366:254;13346:3;;;;;:::i;:::-;;;;13304:327;;;;13164:474:::0;:::o;206:99::-;259:7;287:10;280:17;;206:99;:::o;17072:411::-;17131:7;17140;17149;17158;17167;17188:23;17213:12;17229:20;17241:7;17229:11;:20::i;:::-;17187:62;;;;17260:19;17283:10;:8;:10::i;:::-;17260:33;;17305:15;17322:23;17347:12;17363:39;17375:7;17384:4;17390:11;17363;:39::i;:::-;17304:98;;;;;;17421:7;17430:15;17447:4;17453:15;17470:4;17413:62;;;;;;;;;;;;;;;;17072:411;;;;;;;:::o;3411:136::-;3469:7;3496:43;3500:1;3503;3496:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3489:50;;3411:136;;;;:::o;3222:181::-;3280:7;3300:9;3316:1;3312;:5;;;;:::i;:::-;3300:17;;3341:1;3336;:6;;3328:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3394:1;3387:8;;;3222:181;;;;:::o;13646:337::-;13756:1;13739:19;;:5;:19;;;13731:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13837:1;13818:21;;:7;:21;;;13810:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13921:6;13891:11;:18;13903:5;13891:18;;;;;;;;;;;;;;;:27;13910:7;13891:27;;;;;;;;;;;;;;;:36;;;;13959:7;13943:32;;13952:5;13943:32;;;13968:6;13943:32;;;;;;:::i;:::-;;;;;;;;13646:337;;;:::o;13991:799::-;14106:1;14088:20;;:6;:20;;;14080:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14190:1;14169:23;;:9;:23;;;14161:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14260:1;14251:6;:10;14243:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14322:11;:19;14334:6;14322:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;14346:11;:22;14358:9;14346:22;;;;;;;;;;;;;;;;;;;;;;;;;14345:23;14322:46;14318:465;;;14385:48;14407:6;14415:9;14426:6;14385:21;:48::i;:::-;14318:465;;;14456:11;:19;14468:6;14456:19;;;;;;;;;;;;;;;;;;;;;;;;;14455:20;:46;;;;;14479:11;:22;14491:9;14479:22;;;;;;;;;;;;;;;;;;;;;;;;;14455:46;14451:332;;;14518:46;14538:6;14546:9;14557:6;14518:19;:46::i;:::-;14451:332;;;14587:11;:19;14599:6;14587:19;;;;;;;;;;;;;;;;;;;;;;;;;14586:20;:47;;;;;14611:11;:22;14623:9;14611:22;;;;;;;;;;;;;;;;;;;;;;;;;14610:23;14586:47;14582:201;;;14650:44;14668:6;14676:9;14687:6;14650:17;:44::i;:::-;14582:201;;;14727:44;14745:6;14753:9;14764:6;14727:17;:44::i;:::-;14582:201;14451:332;14318:465;13991:799;;;:::o;3555:192::-;3641:7;3674:1;3669;:6;;3677:12;3661:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3701:9;3717:1;3713;:5;;;;:::i;:::-;3701:17;;3738:1;3731:8;;;3555:192;;;;;:::o;18071:163::-;18112:7;18133:15;18150;18169:19;:17;:19::i;:::-;18132:56;;;;18206:20;18218:7;18206;:11;;:20;;;;:::i;:::-;18199:27;;;;18071:163;:::o;4013:132::-;4071:7;4098:39;4102:1;4105;4098:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;4091:46;;4013:132;;;;:::o;17491:230::-;17551:7;17560;17580:12;17595:23;17616:1;17595:16;17607:3;17595:7;:11;;:16;;;;:::i;:::-;:20;;:23;;;;:::i;:::-;17580:38;;17629:23;17655:17;17667:4;17655:7;:11;;:17;;;;:::i;:::-;17629:43;;17691:15;17708:4;17683:30;;;;;;17491:230;;;:::o;17729:334::-;17824:7;17833;17842;17862:15;17880:24;17892:11;17880:7;:11;;:24;;;;:::i;:::-;17862:42;;17915:12;17930:21;17939:11;17930:4;:8;;:21;;;;:::i;:::-;17915:36;;17962:23;17988:17;18000:4;17988:7;:11;;:17;;;;:::i;:::-;17962:43;;18024:7;18033:15;18050:4;18016:39;;;;;;;;;17729:334;;;;;;;:::o;15795:509::-;15898:15;15915:23;15940:12;15954:23;15979:12;15995:19;16006:7;15995:10;:19::i;:::-;15897:117;;;;;;;;;;16043:28;16063:7;16043;:15;16051:6;16043:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;16025:7;:15;16033:6;16025:15;;;;;;;;;;;;;;;:46;;;;16100:28;16120:7;16100;:15;16108:6;16100:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;16082:7;:15;16090:6;16082:15;;;;;;;;;;;;;;;:46;;;;16160:39;16183:15;16160:7;:18;16168:9;16160:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;16139:7;:18;16147:9;16139:18;;;;;;;;;;;;;;;:60;;;;16213:23;16225:4;16231;16213:11;:23::i;:::-;16269:9;16252:44;;16261:6;16252:44;;;16280:15;16252:44;;;;;;:::i;:::-;;;;;;;;15886:418;;;;;15795:509;;;:::o;15258:529::-;15359:15;15376:23;15401:12;15415:23;15440:12;15456:19;15467:7;15456:10;:19::i;:::-;15358:117;;;;;;;;;;15504:28;15524:7;15504;:15;15512:6;15504:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;15486:7;:15;15494:6;15486:15;;;;;;;;;;;;;;;:46;;;;15564:39;15587:15;15564:7;:18;15572:9;15564:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;15543:7;:18;15551:9;15543:18;;;;;;;;;;;;;;;:60;;;;15635:39;15658:15;15635:7;:18;15643:9;15635:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;15614:7;:18;15622:9;15614:18;;;;;;;;;;;;;;;:60;;;;15696:23;15708:4;15714;15696:11;:23::i;:::-;15752:9;15735:44;;15744:6;15735:44;;;15763:15;15735:44;;;;;;:::i;:::-;;;;;;;;15347:440;;;;;15258:529;;;:::o;14798:452::-;14897:15;14914:23;14939:12;14953:23;14978:12;14994:19;15005:7;14994:10;:19::i;:::-;14896:117;;;;;;;;;;15042:28;15062:7;15042;:15;15050:6;15042:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;15024:7;:15;15032:6;15024:15;;;;;;;;;;;;;;;:46;;;;15102:39;15125:15;15102:7;:18;15110:9;15102:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;15081:7;:18;15089:9;15081:18;;;;;;;;;;;;;;;:60;;;;15159:23;15171:4;15177;15159:11;:23::i;:::-;15215:9;15198:44;;15207:6;15198:44;;;15226:15;15198:44;;;;;;:::i;:::-;;;;;;;;14885:365;;;;;14798:452;;;:::o;18242:617::-;18292:7;18301;18321:15;18339:13;;18321:31;;18363:15;9184:27;18363:33;;18418:9;18413:303;18437:9;:16;;;;18433:1;:20;18413:303;;;18503:7;18479;:21;18487:9;18497:1;18487:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18479:21;;;;;;;;;;;;;;;;:31;:66;;;;18538:7;18514;:21;18522:9;18532:1;18522:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18514:21;;;;;;;;;;;;;;;;:31;18479:66;18475:111;;;18555:13;;9184:27;18547:39;;;;;;;;;18475:111;18611:34;18623:7;:21;18631:9;18641:1;18631:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18623:21;;;;;;;;;;;;;;;;18611:7;:11;;:34;;;;:::i;:::-;18601:44;;18670:34;18682:7;:21;18690:9;18700:1;18690:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18682:21;;;;;;;;;;;;;;;;18670:7;:11;;:34;;;;:::i;:::-;18660:44;;18455:3;;;;;:::i;:::-;;;;18413:303;;;;18740:34;9184:27;18740:13;;:17;;:34;;;;:::i;:::-;18730:7;:44;18726:89;;;18784:13;;9184:27;18776:39;;;;;;;;18726:89;18834:7;18843;18826:25;;;;;;18242:617;;;:::o;4153:278::-;4239:7;4271:1;4267;:5;4274:12;4259:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4298:9;4314:1;4310;:5;;;;:::i;:::-;4298:17;;4422:1;4415:8;;;4153:278;;;;;:::o;3755:250::-;3813:7;3842:1;3837;:6;3833:47;;3867:1;3860:8;;;;3833:47;3892:9;3908:1;3904;:5;;;;:::i;:::-;3892:17;;3937:1;3932;3928;:5;;;;:::i;:::-;:10;3920:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3996:1;3989:8;;;3755:250;;;;;:::o;16905:159::-;16989:23;17007:4;16989:13;;:17;;:23;;;;:::i;:::-;16973:13;:39;;;;17036:20;17051:4;17036:10;;:14;;:20;;;;:::i;:::-;17023:10;:33;;;;16905:159;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:99::-;1077:6;1111:5;1105:12;1095:22;;1025:99;;;:::o;1130:169::-;1214:11;1248:6;1243:3;1236:19;1288:4;1283:3;1279:14;1264:29;;1130:169;;;;:::o;1305:246::-;1386:1;1396:113;1410:6;1407:1;1404:13;1396:113;;;1495:1;1490:3;1486:11;1480:18;1476:1;1471:3;1467:11;1460:39;1432:2;1429:1;1425:10;1420:15;;1396:113;;;1543:1;1534:6;1529:3;1525:16;1518:27;1367:184;1305:246;;;:::o;1557:102::-;1598:6;1649:2;1645:7;1640:2;1633:5;1629:14;1625:28;1615:38;;1557:102;;;:::o;1665:377::-;1753:3;1781:39;1814:5;1781:39;:::i;:::-;1836:71;1900:6;1895:3;1836:71;:::i;:::-;1829:78;;1916:65;1974:6;1969:3;1962:4;1955:5;1951:16;1916:65;:::i;:::-;2006:29;2028:6;2006:29;:::i;:::-;2001:3;1997:39;1990:46;;1757:285;1665:377;;;;:::o;2048:313::-;2161:4;2199:2;2188:9;2184:18;2176:26;;2248:9;2242:4;2238:20;2234:1;2223:9;2219:17;2212:47;2276:78;2349:4;2340:6;2276:78;:::i;:::-;2268:86;;2048:313;;;;:::o;2367:126::-;2404:7;2444:42;2437:5;2433:54;2422:65;;2367:126;;;:::o;2499:96::-;2536:7;2565:24;2583:5;2565:24;:::i;:::-;2554:35;;2499:96;;;:::o;2601:122::-;2674:24;2692:5;2674:24;:::i;:::-;2667:5;2664:35;2654:63;;2713:1;2710;2703:12;2654:63;2601:122;:::o;2729:139::-;2775:5;2813:6;2800:20;2791:29;;2829:33;2856:5;2829:33;:::i;:::-;2729:139;;;;:::o;2874:474::-;2942:6;2950;2999:2;2987:9;2978:7;2974:23;2970:32;2967:119;;;3005:79;;:::i;:::-;2967:119;3125:1;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3096:117;3252:2;3278:53;3323:7;3314:6;3303:9;3299:22;3278:53;:::i;:::-;3268:63;;3223:118;2874:474;;;;;:::o;3354:90::-;3388:7;3431:5;3424:13;3417:21;3406:32;;3354:90;;;:::o;3450:109::-;3531:21;3546:5;3531:21;:::i;:::-;3526:3;3519:34;3450:109;;:::o;3565:210::-;3652:4;3690:2;3679:9;3675:18;3667:26;;3703:65;3765:1;3754:9;3750:17;3741:6;3703:65;:::i;:::-;3565:210;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:116::-;5258:21;5273:5;5258:21;:::i;:::-;5251:5;5248:32;5238:60;;5294:1;5291;5284:12;5238:60;5188:116;:::o;5310:133::-;5353:5;5391:6;5378:20;5369:29;;5407:30;5431:5;5407:30;:::i;:::-;5310:133;;;;:::o;5449:468::-;5514:6;5522;5571:2;5559:9;5550:7;5546:23;5542:32;5539:119;;;5577:79;;:::i;:::-;5539:119;5697:1;5722:53;5767:7;5758:6;5747:9;5743:22;5722:53;:::i;:::-;5712:63;;5668:117;5824:2;5850:50;5892:7;5883:6;5872:9;5868:22;5850:50;:::i;:::-;5840:60;;5795:115;5449:468;;;;;:::o;5923:329::-;5982:6;6031:2;6019:9;6010:7;6006:23;6002:32;5999:119;;;6037:79;;:::i;:::-;5999:119;6157:1;6182:53;6227:7;6218:6;6207:9;6203:22;6182:53;:::i;:::-;6172:63;;6128:117;5923:329;;;;:::o;6258:118::-;6345:24;6363:5;6345:24;:::i;:::-;6340:3;6333:37;6258:118;;:::o;6382:222::-;6475:4;6513:2;6502:9;6498:18;6490:26;;6526:71;6594:1;6583:9;6579:17;6570:6;6526:71;:::i;:::-;6382:222;;;;:::o;6610:474::-;6678:6;6686;6735:2;6723:9;6714:7;6710:23;6706:32;6703:119;;;6741:79;;:::i;:::-;6703:119;6861:1;6886:53;6931:7;6922:6;6911:9;6907:22;6886:53;:::i;:::-;6876:63;;6832:117;6988:2;7014:53;7059:7;7050:6;7039:9;7035:22;7014:53;:::i;:::-;7004:63;;6959:118;6610:474;;;;;:::o;7090:231::-;7230:34;7226:1;7218:6;7214:14;7207:58;7299:14;7294:2;7286:6;7282:15;7275:39;7090:231;:::o;7327:366::-;7469:3;7490:67;7554:2;7549:3;7490:67;:::i;:::-;7483:74;;7566:93;7655:3;7566:93;:::i;:::-;7684:2;7679:3;7675:12;7668:19;;7327:366;;;:::o;7699:419::-;7865:4;7903:2;7892:9;7888:18;7880:26;;7952:9;7946:4;7942:20;7938:1;7927:9;7923:17;7916:47;7980:131;8106:4;7980:131;:::i;:::-;7972:139;;7699:419;;;:::o;8124:180::-;8172:77;8169:1;8162:88;8269:4;8266:1;8259:15;8293:4;8290:1;8283:15;8310:320;8354:6;8391:1;8385:4;8381:12;8371:22;;8438:1;8432:4;8428:12;8459:18;8449:81;;8515:4;8507:6;8503:17;8493:27;;8449:81;8577:2;8569:6;8566:14;8546:18;8543:38;8540:84;;8596:18;;:::i;:::-;8540:84;8361:269;8310:320;;;:::o;8636:229::-;8776:34;8772:1;8764:6;8760:14;8753:58;8845:12;8840:2;8832:6;8828:15;8821:37;8636:229;:::o;8871:366::-;9013:3;9034:67;9098:2;9093:3;9034:67;:::i;:::-;9027:74;;9110:93;9199:3;9110:93;:::i;:::-;9228:2;9223:3;9219:12;9212:19;;8871:366;;;:::o;9243:419::-;9409:4;9447:2;9436:9;9432:18;9424:26;;9496:9;9490:4;9486:20;9482:1;9471:9;9467:17;9460:47;9524:131;9650:4;9524:131;:::i;:::-;9516:139;;9243:419;;;:::o;9668:181::-;9808:33;9804:1;9796:6;9792:14;9785:57;9668:181;:::o;9855:366::-;9997:3;10018:67;10082:2;10077:3;10018:67;:::i;:::-;10011:74;;10094:93;10183:3;10094:93;:::i;:::-;10212:2;10207:3;10203:12;10196:19;;9855:366;;;:::o;10227:419::-;10393:4;10431:2;10420:9;10416:18;10408:26;;10480:9;10474:4;10470:20;10466:1;10455:9;10451:17;10444:47;10508:131;10634:4;10508:131;:::i;:::-;10500:139;;10227:419;;;:::o;10652:182::-;10792:34;10788:1;10780:6;10776:14;10769:58;10652:182;:::o;10840:366::-;10982:3;11003:67;11067:2;11062:3;11003:67;:::i;:::-;10996:74;;11079:93;11168:3;11079:93;:::i;:::-;11197:2;11192:3;11188:12;11181:19;;10840:366;;;:::o;11212:419::-;11378:4;11416:2;11405:9;11401:18;11393:26;;11465:9;11459:4;11455:20;11451:1;11440:9;11436:17;11429:47;11493:131;11619:4;11493:131;:::i;:::-;11485:139;;11212:419;;;:::o;11637:173::-;11777:25;11773:1;11765:6;11761:14;11754:49;11637:173;:::o;11816:366::-;11958:3;11979:67;12043:2;12038:3;11979:67;:::i;:::-;11972:74;;12055:93;12144:3;12055:93;:::i;:::-;12173:2;12168:3;12164:12;12157:19;;11816:366;;;:::o;12188:419::-;12354:4;12392:2;12381:9;12377:18;12369:26;;12441:9;12435:4;12431:20;12427:1;12416:9;12412:17;12405:47;12469:131;12595:4;12469:131;:::i;:::-;12461:139;;12188:419;;;:::o;12613:225::-;12753:34;12749:1;12741:6;12737:14;12730:58;12822:8;12817:2;12809:6;12805:15;12798:33;12613:225;:::o;12844:366::-;12986:3;13007:67;13071:2;13066:3;13007:67;:::i;:::-;13000:74;;13083:93;13172:3;13083:93;:::i;:::-;13201:2;13196:3;13192:12;13185:19;;12844:366;;;:::o;13216:419::-;13382:4;13420:2;13409:9;13405:18;13397:26;;13469:9;13463:4;13459:20;13455:1;13444:9;13440:17;13433:47;13497:131;13623:4;13497:131;:::i;:::-;13489:139;;13216:419;;;:::o;13641:180::-;13689:77;13686:1;13679:88;13786:4;13783:1;13776:15;13810:4;13807:1;13800:15;13827:180;13875:77;13872:1;13865:88;13972:4;13969:1;13962:15;13996:4;13993:1;13986:15;14013:194;14053:4;14073:20;14091:1;14073:20;:::i;:::-;14068:25;;14107:20;14125:1;14107:20;:::i;:::-;14102:25;;14151:1;14148;14144:9;14136:17;;14175:1;14169:4;14166:11;14163:37;;;14180:18;;:::i;:::-;14163:37;14013:194;;;;:::o;14213:180::-;14261:77;14258:1;14251:88;14358:4;14355:1;14348:15;14382:4;14379:1;14372:15;14399:233;14438:3;14461:24;14479:5;14461:24;:::i;:::-;14452:33;;14507:66;14500:5;14497:77;14494:103;;14577:18;;:::i;:::-;14494:103;14624:1;14617:5;14613:13;14606:20;;14399:233;;;:::o;14638:191::-;14678:3;14697:20;14715:1;14697:20;:::i;:::-;14692:25;;14731:20;14749:1;14731:20;:::i;:::-;14726:25;;14774:1;14771;14767:9;14760:16;;14795:3;14792:1;14789:10;14786:36;;;14802:18;;:::i;:::-;14786:36;14638:191;;;;:::o;14835:177::-;14975:29;14971:1;14963:6;14959:14;14952:53;14835:177;:::o;15018:366::-;15160:3;15181:67;15245:2;15240:3;15181:67;:::i;:::-;15174:74;;15257:93;15346:3;15257:93;:::i;:::-;15375:2;15370:3;15366:12;15359:19;;15018:366;;;:::o;15390:419::-;15556:4;15594:2;15583:9;15579:18;15571:26;;15643:9;15637:4;15633:20;15629:1;15618:9;15614:17;15607:47;15671:131;15797:4;15671:131;:::i;:::-;15663:139;;15390:419;;;:::o;15815:223::-;15955:34;15951:1;15943:6;15939:14;15932:58;16024:6;16019:2;16011:6;16007:15;16000:31;15815:223;:::o;16044:366::-;16186:3;16207:67;16271:2;16266:3;16207:67;:::i;:::-;16200:74;;16283:93;16372:3;16283:93;:::i;:::-;16401:2;16396:3;16392:12;16385:19;;16044:366;;;:::o;16416:419::-;16582:4;16620:2;16609:9;16605:18;16597:26;;16669:9;16663:4;16659:20;16655:1;16644:9;16640:17;16633:47;16697:131;16823:4;16697:131;:::i;:::-;16689:139;;16416:419;;;:::o;16841:221::-;16981:34;16977:1;16969:6;16965:14;16958:58;17050:4;17045:2;17037:6;17033:15;17026:29;16841:221;:::o;17068:366::-;17210:3;17231:67;17295:2;17290:3;17231:67;:::i;:::-;17224:74;;17307:93;17396:3;17307:93;:::i;:::-;17425:2;17420:3;17416:12;17409:19;;17068:366;;;:::o;17440:419::-;17606:4;17644:2;17633:9;17629:18;17621:26;;17693:9;17687:4;17683:20;17679:1;17668:9;17664:17;17657:47;17721:131;17847:4;17721:131;:::i;:::-;17713:139;;17440:419;;;:::o;17865:224::-;18005:34;18001:1;17993:6;17989:14;17982:58;18074:7;18069:2;18061:6;18057:15;18050:32;17865:224;:::o;18095:366::-;18237:3;18258:67;18322:2;18317:3;18258:67;:::i;:::-;18251:74;;18334:93;18423:3;18334:93;:::i;:::-;18452:2;18447:3;18443:12;18436:19;;18095:366;;;:::o;18467:419::-;18633:4;18671:2;18660:9;18656:18;18648:26;;18720:9;18714:4;18710:20;18706:1;18695:9;18691:17;18684:47;18748:131;18874:4;18748:131;:::i;:::-;18740:139;;18467:419;;;:::o;18892:222::-;19032:34;19028:1;19020:6;19016:14;19009:58;19101:5;19096:2;19088:6;19084:15;19077:30;18892:222;:::o;19120:366::-;19262:3;19283:67;19347:2;19342:3;19283:67;:::i;:::-;19276:74;;19359:93;19448:3;19359:93;:::i;:::-;19477:2;19472:3;19468:12;19461:19;;19120:366;;;:::o;19492:419::-;19658:4;19696:2;19685:9;19681:18;19673:26;;19745:9;19739:4;19735:20;19731:1;19720:9;19716:17;19709:47;19773:131;19899:4;19773:131;:::i;:::-;19765:139;;19492:419;;;:::o;19917:228::-;20057:34;20053:1;20045:6;20041:14;20034:58;20126:11;20121:2;20113:6;20109:15;20102:36;19917:228;:::o;20151:366::-;20293:3;20314:67;20378:2;20373:3;20314:67;:::i;:::-;20307:74;;20390:93;20479:3;20390:93;:::i;:::-;20508:2;20503:3;20499:12;20492:19;;20151:366;;;:::o;20523:419::-;20689:4;20727:2;20716:9;20712:18;20704:26;;20776:9;20770:4;20766:20;20762:1;20751:9;20747:17;20740:47;20804:131;20930:4;20804:131;:::i;:::-;20796:139;;20523:419;;;:::o;20948:180::-;20996:77;20993:1;20986:88;21093:4;21090:1;21083:15;21117:4;21114:1;21107:15;21134:185;21174:1;21191:20;21209:1;21191:20;:::i;:::-;21186:25;;21225:20;21243:1;21225:20;:::i;:::-;21220:25;;21264:1;21254:35;;21269:18;;:::i;:::-;21254:35;21311:1;21308;21304:9;21299:14;;21134:185;;;;:::o;21325:348::-;21365:7;21388:20;21406:1;21388:20;:::i;:::-;21383:25;;21422:20;21440:1;21422:20;:::i;:::-;21417:25;;21610:1;21542:66;21538:74;21535:1;21532:81;21527:1;21520:9;21513:17;21509:105;21506:131;;;21617:18;;:::i;:::-;21506:131;21665:1;21662;21658:9;21647:20;;21325:348;;;;:::o;21679:220::-;21819:34;21815:1;21807:6;21803:14;21796:58;21888:3;21883:2;21875:6;21871:15;21864:28;21679:220;:::o;21905:366::-;22047:3;22068:67;22132:2;22127:3;22068:67;:::i;:::-;22061:74;;22144:93;22233:3;22144:93;:::i;:::-;22262:2;22257:3;22253:12;22246:19;;21905:366;;;:::o;22277:419::-;22443:4;22481:2;22470:9;22466:18;22458:26;;22530:9;22524:4;22520:20;22516:1;22505:9;22501:17;22494:47;22558:131;22684:4;22558:131;:::i;:::-;22550:139;;22277:419;;;:::o

Swarm Source

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