ETH Price: $3,107.63 (+0.85%)
Gas: 4 Gwei

Token

Fred Flinstone (FRED)
 

Overview

Max Total Supply

1,000,000,000 FRED

Holders

21

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,216,714.413340214353020937 FRED

Value
$0.00
0x0de64e321bb655ddb19877a6d28ea07c8c232a16
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x49CaCD4e...dEa481976
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
FredFlinstone

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

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

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

// SPDX-License-Identifier: MIT                                                                               
                                                    
pragma solidity 0.8.20;

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract ERC20 is Context, IERC20 {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _createInitialSupply(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        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);
    }
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

library Address {
    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }

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

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, "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);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    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");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    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");
        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling
     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.
     *
     * _Available since v4.8._
     */
    function verifyCallResultFromTarget(
        address target,
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        if (success) {
            if (returndata.length == 0) {
                // only check isContract if the call was successful and the return data is empty
                // otherwise we already know that it was a contract
                require(isContract(target), "Address: call to non-contract");
            }
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    /**
     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason or using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    function _revert(bytes memory returndata, string memory errorMessage) private pure {
        // 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
            /// @solidity memory-safe-assembly
            assembly {
                let returndata_size := mload(returndata)
                revert(add(32, returndata), returndata_size)
            }
        } else {
            revert(errorMessage);
        }
    }
}

library SafeERC20 {
    using Address for address;

    function safeTransfer(
        IERC20 token,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
        if (returndata.length > 0) {
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

interface IUniswapV3Router {
    function factory() external view returns (address);
}

interface IUniswapV3Factory {
    function createPool(
        address tokenA,
        address tokenB,
        uint24 fee
    ) external returns (address pool);
}

contract FredFlinstone is Ownable, ERC20 {

    IUniswapV3Router public immutable v3Router;
    address public immutable pool;
    IERC20 public immutable WETH;

    mapping (address => bool) public isPool;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isMaxTxExempt;


    uint256 public maxTransactionAmt;
    uint256 public maxWallet;

    bool public limitsInEffect = true;
    bool public tradingActive = false;

    receive() payable external{}

    constructor() ERC20("Fred Flinstone", "FRED"){
        address wethContract;
        address _v3Router;
        // @dev assumes WETH pair
        if(block.chainid == 1){
            wethContract = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
            _v3Router = 0xE592427A0AEce92De3Edee1F18E0157C05861564;
        } else if(block.chainid == 5){
            wethContract  = 0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6;
            _v3Router = 0xE592427A0AEce92De3Edee1F18E0157C05861564;
        } else {
            revert("Chain not configured");
        }
        
        WETH = IERC20(wethContract);
        v3Router = IUniswapV3Router(_v3Router);
        pool = IUniswapV3Factory(v3Router.factory()).createPool(address(this), address(WETH), 10000);
        isPool[pool] = true;

        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(v3Router)] = true;
        isFeeExempt[address(0xdead)] = true;

        isMaxTxExempt[msg.sender] = true;
        isMaxTxExempt[address(v3Router)] = true;
        isMaxTxExempt[address(0xdead)] = true;

        uint256 totalSupply = 1 * 1e9 * 1e18;
        
        maxTransactionAmt = totalSupply * 1000 / 1000; // @dev update
        maxWallet = totalSupply * 100 / 100; // @dev update

        _createInitialSupply(msg.sender, totalSupply);

    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        if(limitsInEffect && !isFeeExempt[to] && !isFeeExempt[from]) {
            require(tradingActive, "Trading not active");
            //when buy
            if (isPool[from] && !isMaxTxExempt[to]) {
                require(amount <= maxTransactionAmt, "Buy transfer amt exceeds the max buy.");
                require(amount + balanceOf(to) <= maxWallet, "Cannot Exceed max wallet");
            } 
            //when sell
            else if (isPool[to] && !isMaxTxExempt[from]) {
                require(amount <= maxTransactionAmt, "Sell transfer amt exceeds the max sell.");
            }
            //when transfer
            else if (!isMaxTxExempt[to]){
                require(amount + balanceOf(to) <= maxWallet, "Cannot Exceed max wallet");
            }
        }
        super._transfer(from, to, amount);
    }

    function enableTrading() external onlyOwner {
        tradingActive = true;
    }

    function removeLimits() external onlyOwner {
        limitsInEffect = false;
    }

    function updateMaxAmt(uint256 newNum) external onlyOwner {
        require(newNum > (totalSupply() * 1 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.1%");
        maxTransactionAmt = newNum * (10**18);
    }
    
    function updateMaxWalletAmt(uint256 newNum) external onlyOwner {
        require(newNum > (totalSupply() * 1 / 100)/1e18, "Cannot set maxWallet lower than 1%");
        maxWallet = newNum * (10**18);
    }

    function setIsFeeEx(address account, bool exempt) external onlyOwner {
        isFeeExempt[account] = exempt;
    }

    function setIsMaxTxEx(address account, bool exempt) external onlyOwner {
        require(!isPool[account], "Cannot remove exemption from pool");
        isMaxTxExempt[account] = exempt;
    }

    function setIsPool(address _pool, bool _isPool) external onlyOwner {
        require(_pool != address(pool), "Cannot remove original pool");
        isPool[_pool] = _isPool;
    }

    function sendEth() external onlyOwner {
        bool success;
        (success, ) = msg.sender.call{value: address(this).balance}("");
        require(success, "withdraw unsuccessful");
    }

    function transferToken(address _token, address _to) external onlyOwner {
        require(_token != address(0), "_token address cannot be 0");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        SafeERC20.safeTransfer(IERC20(_token),_to, _contractBalance);
    }
}

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":[],"name":"WETH","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":[],"name":"enableTrading","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":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMaxTxExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"pool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sendEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeEx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsMaxTxEx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pool","type":"address"},{"internalType":"bool","name":"_isPool","type":"bool"}],"name":"setIsPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxAmt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"v3Router","outputs":[{"internalType":"contract IUniswapV3Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e06040526001600b5f6101000a81548160ff0219169083151502179055505f600b60016101000a81548160ff02191690831515021790555034801562000044575f80fd5b506040518060400160405280600e81526020017f4672656420466c696e73746f6e650000000000000000000000000000000000008152506040518060400160405280600481526020017f46524544000000000000000000000000000000000000000000000000000000008152505f620000c26200069d60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081600490816200016f919062000a53565b50806005908162000181919062000a53565b5050505f8060014603620001c35773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2915073e592427a0aece92de3edee1f18e0157c0586156490506200023e565b60054603620002005773b4fbf271143f4fbf7b91a5ded31805e42b2208d6915073e592427a0aece92de3edee1f18e0157c0586156490506200023d565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002349062000b95565b60405180910390fd5b5b8173ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000318919062000c1a565b73ffffffffffffffffffffffffffffffffffffffff1663a16712953060c0516127106040518463ffffffff1660e01b81526004016200035a9392919062000caa565b6020604051808303815f875af115801562000377573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200039d919062000c1a565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050600160065f60a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f60805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f60805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f6b033b2e3c9fd0803ce800000090506103e880826200064e919062000d12565b6200065a919062000d89565b6009819055506064808262000670919062000d12565b6200067c919062000d89565b600a81905550620006943382620006a460201b60201c565b50505062000e94565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000715576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200070c9062000e0e565b60405180910390fd5b8060035f82825462000728919062000e2e565b925050819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546200077d919062000e2e565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620007e3919062000e79565b60405180910390a35050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200086b57607f821691505b60208210810362000881576200088062000826565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620008e57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620008a8565b620008f18683620008a8565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6200093b620009356200092f8462000909565b62000912565b62000909565b9050919050565b5f819050919050565b62000956836200091b565b6200096e620009658262000942565b848454620008b4565b825550505050565b5f90565b6200098462000976565b620009918184846200094b565b505050565b5b81811015620009b857620009ac5f826200097a565b60018101905062000997565b5050565b601f82111562000a0757620009d18162000887565b620009dc8462000899565b81016020851015620009ec578190505b62000a04620009fb8562000899565b83018262000996565b50505b505050565b5f82821c905092915050565b5f62000a295f198460080262000a0c565b1980831691505092915050565b5f62000a43838362000a18565b9150826002028217905092915050565b62000a5e82620007ef565b67ffffffffffffffff81111562000a7a5762000a79620007f9565b5b62000a86825462000853565b62000a93828285620009bc565b5f60209050601f83116001811462000ac9575f841562000ab4578287015190505b62000ac0858262000a36565b86555062000b2f565b601f19841662000ad98662000887565b5f5b8281101562000b025784890151825560018201915060208501945060208101905062000adb565b8683101562000b22578489015162000b1e601f89168262000a18565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f436861696e206e6f7420636f6e666967757265640000000000000000000000005f82015250565b5f62000b7d60148362000b37565b915062000b8a8262000b47565b602082019050919050565b5f6020820190508181035f83015262000bae8162000b6f565b9050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000be48262000bb9565b9050919050565b62000bf68162000bd8565b811462000c01575f80fd5b50565b5f8151905062000c148162000beb565b92915050565b5f6020828403121562000c325762000c3162000bb5565b5b5f62000c418482850162000c04565b91505092915050565b62000c558162000bd8565b82525050565b5f819050919050565b5f62ffffff82169050919050565b5f62000c9262000c8c62000c868462000c5b565b62000912565b62000c64565b9050919050565b62000ca48162000c72565b82525050565b5f60608201905062000cbf5f83018662000c4a565b62000cce602083018562000c4a565b62000cdd604083018462000c99565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000d1e8262000909565b915062000d2b8362000909565b925082820262000d3b8162000909565b9150828204841483151762000d555762000d5462000ce5565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000d958262000909565b915062000da28362000909565b92508262000db55762000db462000d5c565b5b828204905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000df6601f8362000b37565b915062000e038262000dc0565b602082019050919050565b5f6020820190508181035f83015262000e278162000de8565b9050919050565b5f62000e3a8262000909565b915062000e478362000909565b925082820190508082111562000e625762000e6162000ce5565b5b92915050565b62000e738162000909565b82525050565b5f60208201905062000e8e5f83018462000e68565b92915050565b60805160a05160c05161383262000ec65f395f61172c01525f81816109d00152610a9101525f6109ac01526138325ff3fe6080604052600436106101f1575f3560e01c80635b16ebb71161010c578063a457c2d71161009f578063c1ec8d4b1161006e578063c1ec8d4b146106ca578063dd62ed3e14610706578063f01c75e114610742578063f2fde38b1461076a578063f8b45b0514610792576101f8565b8063a457c2d7146105fe578063a9059cbb1461063a578063ad5c464814610676578063bbc0c742146106a0576101f8565b8063751039fc116100db578063751039fc1461057e5780638a8c523c146105945780638da5cb5b146105aa57806395d89b41146105d4576101f8565b80635b16ebb7146104c8578063657f644b1461050457806370a082311461052c578063715018a614610568576101f8565b806323b872dd116101845780634221b508116101535780634221b5081461042657806343befc121461044e57806348ae238f146104765780634a62bb651461049e576101f8565b806323b872dd14610348578063313ce5671461038457806339509351146103ae5780633f4218e0146103ea576101f8565b806316f0115b116101c057806316f0115b146102a257806318160ddd146102cc5780631cb5a549146102f657806320d830551461031e576101f8565b806306e99fef146101fc57806306fdde0314610212578063095ea7b31461023c5780630dc9130614610278576101f8565b366101f857005b5f80fd5b348015610207575f80fd5b506102106107bc565b005b34801561021d575f80fd5b506102266108fd565b60405161023391906126a2565b60405180910390f35b348015610247575f80fd5b50610262600480360381019061025d9190612753565b61098d565b60405161026f91906127ab565b60405180910390f35b348015610283575f80fd5b5061028c6109aa565b604051610299919061281f565b60405180910390f35b3480156102ad575f80fd5b506102b66109ce565b6040516102c39190612847565b60405180910390f35b3480156102d7575f80fd5b506102e06109f2565b6040516102ed919061286f565b60405180910390f35b348015610301575f80fd5b5061031c600480360381019061031791906128b2565b6109fb565b005b348015610329575f80fd5b50610332610b75565b60405161033f919061286f565b60405180910390f35b348015610353575f80fd5b5061036e600480360381019061036991906128f0565b610b7b565b60405161037b91906127ab565b60405180910390f35b34801561038f575f80fd5b50610398610c6d565b6040516103a5919061295b565b60405180910390f35b3480156103b9575f80fd5b506103d460048036038101906103cf9190612753565b610c75565b6040516103e191906127ab565b60405180910390f35b3480156103f5575f80fd5b50610410600480360381019061040b9190612974565b610d1c565b60405161041d91906127ab565b60405180910390f35b348015610431575f80fd5b5061044c600480360381019061044791906128b2565b610d39565b005b348015610459575f80fd5b50610474600480360381019061046f91906128b2565b610eaf565b005b348015610481575f80fd5b5061049c6004803603810190610497919061299f565b610f9b565b005b3480156104a9575f80fd5b506104b2611128565b6040516104bf91906127ab565b60405180910390f35b3480156104d3575f80fd5b506104ee60048036038101906104e99190612974565b61113a565b6040516104fb91906127ab565b60405180910390f35b34801561050f575f80fd5b5061052a600480360381019061052591906129dd565b611157565b005b348015610537575f80fd5b50610552600480360381019061054d9190612974565b61127c565b60405161055f919061286f565b60405180910390f35b348015610573575f80fd5b5061057c6112c2565b005b348015610589575f80fd5b50610592611410565b005b34801561059f575f80fd5b506105a86114bf565b005b3480156105b5575f80fd5b506105be611570565b6040516105cb9190612847565b60405180910390f35b3480156105df575f80fd5b506105e8611597565b6040516105f591906126a2565b60405180910390f35b348015610609575f80fd5b50610624600480360381019061061f9190612753565b611627565b60405161063191906127ab565b60405180910390f35b348015610645575f80fd5b50610660600480360381019061065b9190612753565b61170d565b60405161066d91906127ab565b60405180910390f35b348015610681575f80fd5b5061068a61172a565b6040516106979190612a28565b60405180910390f35b3480156106ab575f80fd5b506106b461174e565b6040516106c191906127ab565b60405180910390f35b3480156106d5575f80fd5b506106f060048036038101906106eb9190612974565b611761565b6040516106fd91906127ab565b60405180910390f35b348015610711575f80fd5b5061072c6004803603810190610727919061299f565b61177e565b604051610739919061286f565b60405180910390f35b34801561074d575f80fd5b50610768600480360381019061076391906129dd565b611800565b005b348015610775575f80fd5b50610790600480360381019061078b9190612974565b611926565b005b34801561079d575f80fd5b506107a6611ae3565b6040516107b3919061286f565b60405180910390f35b6107c4611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610850576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084790612a8b565b60405180910390fd5b5f3373ffffffffffffffffffffffffffffffffffffffff164760405161087590612ad6565b5f6040518083038185875af1925050503d805f81146108af576040519150601f19603f3d011682016040523d82523d5f602084013e6108b4565b606091505b505080915050806108fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f190612b34565b60405180910390fd5b50565b60606004805461090c90612b7f565b80601f016020809104026020016040519081016040528092919081815260200182805461093890612b7f565b80156109835780601f1061095a57610100808354040283529160200191610983565b820191905f5260205f20905b81548152906001019060200180831161096657829003601f168201915b5050505050905090565b5f6109a0610999611ae9565b8484611af0565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600354905090565b610a03611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8690612a8b565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1490612bf9565b60405180910390fd5b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60095481565b5f610b87848484611cb3565b5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610bce611ae9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4490612c87565b60405180910390fd5b610c6185610c59611ae9565b858403611af0565b60019150509392505050565b5f6012905090565b5f610d12610c81611ae9565b848460025f610c8e611ae9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d0d9190612cd2565b611af0565b6001905092915050565b6007602052805f5260405f205f915054906101000a900460ff1681565b610d41611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc490612a8b565b60405180910390fd5b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610e57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4e90612d75565b60405180910390fd5b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b610eb7611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3a90612a8b565b60405180910390fd5b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b610fa3611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461102f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102690612a8b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361109d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109490612ddd565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110d79190612847565b602060405180830381865afa1580156110f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111169190612e0f565b90506111238383836120a6565b505050565b600b5f9054906101000a900460ff1681565b6006602052805f5260405f205f915054906101000a900460ff1681565b61115f611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e290612a8b565b60405180910390fd5b670de0b6b3a7640000606460016112006109f2565b61120a9190612e3a565b6112149190612ea8565b61121e9190612ea8565b811161125f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125690612f48565b60405180910390fd5b670de0b6b3a7640000816112739190612e3a565b600a8190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6112ca611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134d90612a8b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611418611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149b90612a8b565b60405180910390fd5b5f600b5f6101000a81548160ff021916908315150217905550565b6114c7611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611553576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154a90612a8b565b60405180910390fd5b6001600b60016101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546115a690612b7f565b80601f01602080910402602001604051908101604052809291908181526020018280546115d290612b7f565b801561161d5780601f106115f45761010080835404028352916020019161161d565b820191905f5260205f20905b81548152906001019060200180831161160057829003601f168201915b5050505050905090565b5f8060025f611634611ae9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156116ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e590612fd6565b60405180910390fd5b6117026116f9611ae9565b85858403611af0565b600191505092915050565b5f611720611719611ae9565b8484611cb3565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b60019054906101000a900460ff1681565b6008602052805f5260405f205f915054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611808611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188b90612a8b565b60405180910390fd5b670de0b6b3a76400006103e860016118aa6109f2565b6118b49190612e3a565b6118be9190612ea8565b6118c89190612ea8565b8111611909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190090613064565b60405180910390fd5b670de0b6b3a76400008161191d9190612e3a565b60098190555050565b61192e611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b190612a8b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1f906130f2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5590613180565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc39061320e565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ca6919061286f565b60405180910390a3505050565b600b5f9054906101000a900460ff168015611d15575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d68575060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561209657600b60019054906101000a900460ff16611dbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db390613276565b60405180910390fd5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611e59575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611f0057600954811115611ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9a90613304565b60405180910390fd5b600a54611eaf8361127c565b82611eba9190612cd2565b1115611efb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef29061336c565b60405180910390fd5b612095565b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611f9d575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611fec57600954811115611fe7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fde906133fa565b60405180910390fd5b612094565b60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661209357600a546120468361127c565b826120519190612cd2565b1115612092576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120899061336c565b60405180910390fd5b5b5b5b5b6120a183838361212c565b505050565b6121278363a9059cbb60e01b84846040516024016120c5929190613418565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061238e565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361219a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612191906134af565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ff9061353d565b60405180910390fd5b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561228c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612283906135cb565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461231c9190612cd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612380919061286f565b60405180910390a350505050565b5f6123ef826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166124539092919063ffffffff16565b90505f8151111561244e578080602001905181019061240e91906135fd565b61244d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244490613698565b60405180910390fd5b5b505050565b606061246184845f8561246a565b90509392505050565b6060824710156124af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a690613726565b60405180910390fd5b5f808673ffffffffffffffffffffffffffffffffffffffff1685876040516124d7919061377e565b5f6040518083038185875af1925050503d805f8114612511576040519150601f19603f3d011682016040523d82523d5f602084013e612516565b606091505b509150915061252787838387612533565b92505050949350505050565b60608315612594575f83510361258c5761254c856125a7565b61258b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612582906137de565b60405180910390fd5b5b82905061259f565b61259e83836125c9565b5b949350505050565b5f808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b5f825111156125db5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260f91906126a2565b60405180910390fd5b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561264f578082015181840152602081019050612634565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61267482612618565b61267e8185612622565b935061268e818560208601612632565b6126978161265a565b840191505092915050565b5f6020820190508181035f8301526126ba818461266a565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6126ef826126c6565b9050919050565b6126ff816126e5565b8114612709575f80fd5b50565b5f8135905061271a816126f6565b92915050565b5f819050919050565b61273281612720565b811461273c575f80fd5b50565b5f8135905061274d81612729565b92915050565b5f8060408385031215612769576127686126c2565b5b5f6127768582860161270c565b92505060206127878582860161273f565b9150509250929050565b5f8115159050919050565b6127a581612791565b82525050565b5f6020820190506127be5f83018461279c565b92915050565b5f819050919050565b5f6127e76127e26127dd846126c6565b6127c4565b6126c6565b9050919050565b5f6127f8826127cd565b9050919050565b5f612809826127ee565b9050919050565b612819816127ff565b82525050565b5f6020820190506128325f830184612810565b92915050565b612841816126e5565b82525050565b5f60208201905061285a5f830184612838565b92915050565b61286981612720565b82525050565b5f6020820190506128825f830184612860565b92915050565b61289181612791565b811461289b575f80fd5b50565b5f813590506128ac81612888565b92915050565b5f80604083850312156128c8576128c76126c2565b5b5f6128d58582860161270c565b92505060206128e68582860161289e565b9150509250929050565b5f805f60608486031215612907576129066126c2565b5b5f6129148682870161270c565b93505060206129258682870161270c565b92505060406129368682870161273f565b9150509250925092565b5f60ff82169050919050565b61295581612940565b82525050565b5f60208201905061296e5f83018461294c565b92915050565b5f60208284031215612989576129886126c2565b5b5f6129968482850161270c565b91505092915050565b5f80604083850312156129b5576129b46126c2565b5b5f6129c28582860161270c565b92505060206129d38582860161270c565b9150509250929050565b5f602082840312156129f2576129f16126c2565b5b5f6129ff8482850161273f565b91505092915050565b5f612a12826127ee565b9050919050565b612a2281612a08565b82525050565b5f602082019050612a3b5f830184612a19565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612a75602083612622565b9150612a8082612a41565b602082019050919050565b5f6020820190508181035f830152612aa281612a69565b9050919050565b5f81905092915050565b50565b5f612ac15f83612aa9565b9150612acc82612ab3565b5f82019050919050565b5f612ae082612ab6565b9150819050919050565b7f776974686472617720756e7375636365737366756c00000000000000000000005f82015250565b5f612b1e601583612622565b9150612b2982612aea565b602082019050919050565b5f6020820190508181035f830152612b4b81612b12565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612b9657607f821691505b602082108103612ba957612ba8612b52565b5b50919050565b7f43616e6e6f742072656d6f7665206f726967696e616c20706f6f6c00000000005f82015250565b5f612be3601b83612622565b9150612bee82612baf565b602082019050919050565b5f6020820190508181035f830152612c1081612bd7565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612c71602883612622565b9150612c7c82612c17565b604082019050919050565b5f6020820190508181035f830152612c9e81612c65565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612cdc82612720565b9150612ce783612720565b9250828201905080821115612cff57612cfe612ca5565b5b92915050565b7f43616e6e6f742072656d6f7665206578656d7074696f6e2066726f6d20706f6f5f8201527f6c00000000000000000000000000000000000000000000000000000000000000602082015250565b5f612d5f602183612622565b9150612d6a82612d05565b604082019050919050565b5f6020820190508181035f830152612d8c81612d53565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000005f82015250565b5f612dc7601a83612622565b9150612dd282612d93565b602082019050919050565b5f6020820190508181035f830152612df481612dbb565b9050919050565b5f81519050612e0981612729565b92915050565b5f60208284031215612e2457612e236126c2565b5b5f612e3184828501612dfb565b91505092915050565b5f612e4482612720565b9150612e4f83612720565b9250828202612e5d81612720565b91508282048414831517612e7457612e73612ca5565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612eb282612720565b9150612ebd83612720565b925082612ecd57612ecc612e7b565b5b828204905092915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f3125000000000000000000000000000000000000000000000000000000000000602082015250565b5f612f32602283612622565b9150612f3d82612ed8565b604082019050919050565b5f6020820190508181035f830152612f5f81612f26565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612fc0602583612622565b9150612fcb82612f66565b604082019050919050565b5f6020820190508181035f830152612fed81612fb4565b9050919050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f61304e602f83612622565b915061305982612ff4565b604082019050919050565b5f6020820190508181035f83015261307b81613042565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6130dc602683612622565b91506130e782613082565b604082019050919050565b5f6020820190508181035f830152613109816130d0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61316a602483612622565b915061317582613110565b604082019050919050565b5f6020820190508181035f8301526131978161315e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131f8602283612622565b91506132038261319e565b604082019050919050565b5f6020820190508181035f830152613225816131ec565b9050919050565b7f54726164696e67206e6f742061637469766500000000000000000000000000005f82015250565b5f613260601283612622565b915061326b8261322c565b602082019050919050565b5f6020820190508181035f83015261328d81613254565b9050919050565b7f427579207472616e7366657220616d74206578636565647320746865206d61785f8201527f206275792e000000000000000000000000000000000000000000000000000000602082015250565b5f6132ee602583612622565b91506132f982613294565b604082019050919050565b5f6020820190508181035f83015261331b816132e2565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c657400000000000000005f82015250565b5f613356601883612622565b915061336182613322565b602082019050919050565b5f6020820190508181035f8301526133838161334a565b9050919050565b7f53656c6c207472616e7366657220616d74206578636565647320746865206d615f8201527f782073656c6c2e00000000000000000000000000000000000000000000000000602082015250565b5f6133e4602783612622565b91506133ef8261338a565b604082019050919050565b5f6020820190508181035f830152613411816133d8565b9050919050565b5f60408201905061342b5f830185612838565b6134386020830184612860565b9392505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613499602583612622565b91506134a48261343f565b604082019050919050565b5f6020820190508181035f8301526134c68161348d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613527602383612622565b9150613532826134cd565b604082019050919050565b5f6020820190508181035f8301526135548161351b565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6135b5602683612622565b91506135c08261355b565b604082019050919050565b5f6020820190508181035f8301526135e2816135a9565b9050919050565b5f815190506135f781612888565b92915050565b5f60208284031215613612576136116126c2565b5b5f61361f848285016135e9565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e5f8201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b5f613682602a83612622565b915061368d82613628565b604082019050919050565b5f6020820190508181035f8301526136af81613676565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f5f8201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b5f613710602683612622565b915061371b826136b6565b604082019050919050565b5f6020820190508181035f83015261373d81613704565b9050919050565b5f81519050919050565b5f61375882613744565b6137628185612aa9565b9350613772818560208601612632565b80840191505092915050565b5f613789828461374e565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000005f82015250565b5f6137c8601d83612622565b91506137d382613794565b602082019050919050565b5f6020820190508181035f8301526137f5816137bc565b905091905056fea26469706673582212206769cabb9e9ca8affc7dab987887dd43e3b270a7d103440256ffa30afacd7fe364736f6c63430008140033

Deployed Bytecode

0x6080604052600436106101f1575f3560e01c80635b16ebb71161010c578063a457c2d71161009f578063c1ec8d4b1161006e578063c1ec8d4b146106ca578063dd62ed3e14610706578063f01c75e114610742578063f2fde38b1461076a578063f8b45b0514610792576101f8565b8063a457c2d7146105fe578063a9059cbb1461063a578063ad5c464814610676578063bbc0c742146106a0576101f8565b8063751039fc116100db578063751039fc1461057e5780638a8c523c146105945780638da5cb5b146105aa57806395d89b41146105d4576101f8565b80635b16ebb7146104c8578063657f644b1461050457806370a082311461052c578063715018a614610568576101f8565b806323b872dd116101845780634221b508116101535780634221b5081461042657806343befc121461044e57806348ae238f146104765780634a62bb651461049e576101f8565b806323b872dd14610348578063313ce5671461038457806339509351146103ae5780633f4218e0146103ea576101f8565b806316f0115b116101c057806316f0115b146102a257806318160ddd146102cc5780631cb5a549146102f657806320d830551461031e576101f8565b806306e99fef146101fc57806306fdde0314610212578063095ea7b31461023c5780630dc9130614610278576101f8565b366101f857005b5f80fd5b348015610207575f80fd5b506102106107bc565b005b34801561021d575f80fd5b506102266108fd565b60405161023391906126a2565b60405180910390f35b348015610247575f80fd5b50610262600480360381019061025d9190612753565b61098d565b60405161026f91906127ab565b60405180910390f35b348015610283575f80fd5b5061028c6109aa565b604051610299919061281f565b60405180910390f35b3480156102ad575f80fd5b506102b66109ce565b6040516102c39190612847565b60405180910390f35b3480156102d7575f80fd5b506102e06109f2565b6040516102ed919061286f565b60405180910390f35b348015610301575f80fd5b5061031c600480360381019061031791906128b2565b6109fb565b005b348015610329575f80fd5b50610332610b75565b60405161033f919061286f565b60405180910390f35b348015610353575f80fd5b5061036e600480360381019061036991906128f0565b610b7b565b60405161037b91906127ab565b60405180910390f35b34801561038f575f80fd5b50610398610c6d565b6040516103a5919061295b565b60405180910390f35b3480156103b9575f80fd5b506103d460048036038101906103cf9190612753565b610c75565b6040516103e191906127ab565b60405180910390f35b3480156103f5575f80fd5b50610410600480360381019061040b9190612974565b610d1c565b60405161041d91906127ab565b60405180910390f35b348015610431575f80fd5b5061044c600480360381019061044791906128b2565b610d39565b005b348015610459575f80fd5b50610474600480360381019061046f91906128b2565b610eaf565b005b348015610481575f80fd5b5061049c6004803603810190610497919061299f565b610f9b565b005b3480156104a9575f80fd5b506104b2611128565b6040516104bf91906127ab565b60405180910390f35b3480156104d3575f80fd5b506104ee60048036038101906104e99190612974565b61113a565b6040516104fb91906127ab565b60405180910390f35b34801561050f575f80fd5b5061052a600480360381019061052591906129dd565b611157565b005b348015610537575f80fd5b50610552600480360381019061054d9190612974565b61127c565b60405161055f919061286f565b60405180910390f35b348015610573575f80fd5b5061057c6112c2565b005b348015610589575f80fd5b50610592611410565b005b34801561059f575f80fd5b506105a86114bf565b005b3480156105b5575f80fd5b506105be611570565b6040516105cb9190612847565b60405180910390f35b3480156105df575f80fd5b506105e8611597565b6040516105f591906126a2565b60405180910390f35b348015610609575f80fd5b50610624600480360381019061061f9190612753565b611627565b60405161063191906127ab565b60405180910390f35b348015610645575f80fd5b50610660600480360381019061065b9190612753565b61170d565b60405161066d91906127ab565b60405180910390f35b348015610681575f80fd5b5061068a61172a565b6040516106979190612a28565b60405180910390f35b3480156106ab575f80fd5b506106b461174e565b6040516106c191906127ab565b60405180910390f35b3480156106d5575f80fd5b506106f060048036038101906106eb9190612974565b611761565b6040516106fd91906127ab565b60405180910390f35b348015610711575f80fd5b5061072c6004803603810190610727919061299f565b61177e565b604051610739919061286f565b60405180910390f35b34801561074d575f80fd5b50610768600480360381019061076391906129dd565b611800565b005b348015610775575f80fd5b50610790600480360381019061078b9190612974565b611926565b005b34801561079d575f80fd5b506107a6611ae3565b6040516107b3919061286f565b60405180910390f35b6107c4611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610850576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084790612a8b565b60405180910390fd5b5f3373ffffffffffffffffffffffffffffffffffffffff164760405161087590612ad6565b5f6040518083038185875af1925050503d805f81146108af576040519150601f19603f3d011682016040523d82523d5f602084013e6108b4565b606091505b505080915050806108fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f190612b34565b60405180910390fd5b50565b60606004805461090c90612b7f565b80601f016020809104026020016040519081016040528092919081815260200182805461093890612b7f565b80156109835780601f1061095a57610100808354040283529160200191610983565b820191905f5260205f20905b81548152906001019060200180831161096657829003601f168201915b5050505050905090565b5f6109a0610999611ae9565b8484611af0565b6001905092915050565b7f000000000000000000000000e592427a0aece92de3edee1f18e0157c0586156481565b7f00000000000000000000000081bc432ecd22f6591e4dba85ab93bc4b1038933d81565b5f600354905090565b610a03611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8690612a8b565b60405180910390fd5b7f00000000000000000000000081bc432ecd22f6591e4dba85ab93bc4b1038933d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1490612bf9565b60405180910390fd5b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60095481565b5f610b87848484611cb3565b5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610bce611ae9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4490612c87565b60405180910390fd5b610c6185610c59611ae9565b858403611af0565b60019150509392505050565b5f6012905090565b5f610d12610c81611ae9565b848460025f610c8e611ae9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d0d9190612cd2565b611af0565b6001905092915050565b6007602052805f5260405f205f915054906101000a900460ff1681565b610d41611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc490612a8b565b60405180910390fd5b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610e57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4e90612d75565b60405180910390fd5b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b610eb7611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3a90612a8b565b60405180910390fd5b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b610fa3611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461102f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102690612a8b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361109d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109490612ddd565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110d79190612847565b602060405180830381865afa1580156110f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111169190612e0f565b90506111238383836120a6565b505050565b600b5f9054906101000a900460ff1681565b6006602052805f5260405f205f915054906101000a900460ff1681565b61115f611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e290612a8b565b60405180910390fd5b670de0b6b3a7640000606460016112006109f2565b61120a9190612e3a565b6112149190612ea8565b61121e9190612ea8565b811161125f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125690612f48565b60405180910390fd5b670de0b6b3a7640000816112739190612e3a565b600a8190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6112ca611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134d90612a8b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611418611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149b90612a8b565b60405180910390fd5b5f600b5f6101000a81548160ff021916908315150217905550565b6114c7611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611553576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154a90612a8b565b60405180910390fd5b6001600b60016101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546115a690612b7f565b80601f01602080910402602001604051908101604052809291908181526020018280546115d290612b7f565b801561161d5780601f106115f45761010080835404028352916020019161161d565b820191905f5260205f20905b81548152906001019060200180831161160057829003601f168201915b5050505050905090565b5f8060025f611634611ae9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156116ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e590612fd6565b60405180910390fd5b6117026116f9611ae9565b85858403611af0565b600191505092915050565b5f611720611719611ae9565b8484611cb3565b6001905092915050565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b600b60019054906101000a900460ff1681565b6008602052805f5260405f205f915054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611808611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188b90612a8b565b60405180910390fd5b670de0b6b3a76400006103e860016118aa6109f2565b6118b49190612e3a565b6118be9190612ea8565b6118c89190612ea8565b8111611909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190090613064565b60405180910390fd5b670de0b6b3a76400008161191d9190612e3a565b60098190555050565b61192e611ae9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b190612a8b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1f906130f2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5590613180565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc39061320e565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ca6919061286f565b60405180910390a3505050565b600b5f9054906101000a900460ff168015611d15575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d68575060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561209657600b60019054906101000a900460ff16611dbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db390613276565b60405180910390fd5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611e59575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611f0057600954811115611ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9a90613304565b60405180910390fd5b600a54611eaf8361127c565b82611eba9190612cd2565b1115611efb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef29061336c565b60405180910390fd5b612095565b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611f9d575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611fec57600954811115611fe7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fde906133fa565b60405180910390fd5b612094565b60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661209357600a546120468361127c565b826120519190612cd2565b1115612092576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120899061336c565b60405180910390fd5b5b5b5b5b6120a183838361212c565b505050565b6121278363a9059cbb60e01b84846040516024016120c5929190613418565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061238e565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361219a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612191906134af565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ff9061353d565b60405180910390fd5b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561228c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612283906135cb565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461231c9190612cd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612380919061286f565b60405180910390a350505050565b5f6123ef826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166124539092919063ffffffff16565b90505f8151111561244e578080602001905181019061240e91906135fd565b61244d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244490613698565b60405180910390fd5b5b505050565b606061246184845f8561246a565b90509392505050565b6060824710156124af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a690613726565b60405180910390fd5b5f808673ffffffffffffffffffffffffffffffffffffffff1685876040516124d7919061377e565b5f6040518083038185875af1925050503d805f8114612511576040519150601f19603f3d011682016040523d82523d5f602084013e612516565b606091505b509150915061252787838387612533565b92505050949350505050565b60608315612594575f83510361258c5761254c856125a7565b61258b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612582906137de565b60405180910390fd5b5b82905061259f565b61259e83836125c9565b5b949350505050565b5f808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b5f825111156125db5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260f91906126a2565b60405180910390fd5b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561264f578082015181840152602081019050612634565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61267482612618565b61267e8185612622565b935061268e818560208601612632565b6126978161265a565b840191505092915050565b5f6020820190508181035f8301526126ba818461266a565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6126ef826126c6565b9050919050565b6126ff816126e5565b8114612709575f80fd5b50565b5f8135905061271a816126f6565b92915050565b5f819050919050565b61273281612720565b811461273c575f80fd5b50565b5f8135905061274d81612729565b92915050565b5f8060408385031215612769576127686126c2565b5b5f6127768582860161270c565b92505060206127878582860161273f565b9150509250929050565b5f8115159050919050565b6127a581612791565b82525050565b5f6020820190506127be5f83018461279c565b92915050565b5f819050919050565b5f6127e76127e26127dd846126c6565b6127c4565b6126c6565b9050919050565b5f6127f8826127cd565b9050919050565b5f612809826127ee565b9050919050565b612819816127ff565b82525050565b5f6020820190506128325f830184612810565b92915050565b612841816126e5565b82525050565b5f60208201905061285a5f830184612838565b92915050565b61286981612720565b82525050565b5f6020820190506128825f830184612860565b92915050565b61289181612791565b811461289b575f80fd5b50565b5f813590506128ac81612888565b92915050565b5f80604083850312156128c8576128c76126c2565b5b5f6128d58582860161270c565b92505060206128e68582860161289e565b9150509250929050565b5f805f60608486031215612907576129066126c2565b5b5f6129148682870161270c565b93505060206129258682870161270c565b92505060406129368682870161273f565b9150509250925092565b5f60ff82169050919050565b61295581612940565b82525050565b5f60208201905061296e5f83018461294c565b92915050565b5f60208284031215612989576129886126c2565b5b5f6129968482850161270c565b91505092915050565b5f80604083850312156129b5576129b46126c2565b5b5f6129c28582860161270c565b92505060206129d38582860161270c565b9150509250929050565b5f602082840312156129f2576129f16126c2565b5b5f6129ff8482850161273f565b91505092915050565b5f612a12826127ee565b9050919050565b612a2281612a08565b82525050565b5f602082019050612a3b5f830184612a19565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612a75602083612622565b9150612a8082612a41565b602082019050919050565b5f6020820190508181035f830152612aa281612a69565b9050919050565b5f81905092915050565b50565b5f612ac15f83612aa9565b9150612acc82612ab3565b5f82019050919050565b5f612ae082612ab6565b9150819050919050565b7f776974686472617720756e7375636365737366756c00000000000000000000005f82015250565b5f612b1e601583612622565b9150612b2982612aea565b602082019050919050565b5f6020820190508181035f830152612b4b81612b12565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612b9657607f821691505b602082108103612ba957612ba8612b52565b5b50919050565b7f43616e6e6f742072656d6f7665206f726967696e616c20706f6f6c00000000005f82015250565b5f612be3601b83612622565b9150612bee82612baf565b602082019050919050565b5f6020820190508181035f830152612c1081612bd7565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612c71602883612622565b9150612c7c82612c17565b604082019050919050565b5f6020820190508181035f830152612c9e81612c65565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612cdc82612720565b9150612ce783612720565b9250828201905080821115612cff57612cfe612ca5565b5b92915050565b7f43616e6e6f742072656d6f7665206578656d7074696f6e2066726f6d20706f6f5f8201527f6c00000000000000000000000000000000000000000000000000000000000000602082015250565b5f612d5f602183612622565b9150612d6a82612d05565b604082019050919050565b5f6020820190508181035f830152612d8c81612d53565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000005f82015250565b5f612dc7601a83612622565b9150612dd282612d93565b602082019050919050565b5f6020820190508181035f830152612df481612dbb565b9050919050565b5f81519050612e0981612729565b92915050565b5f60208284031215612e2457612e236126c2565b5b5f612e3184828501612dfb565b91505092915050565b5f612e4482612720565b9150612e4f83612720565b9250828202612e5d81612720565b91508282048414831517612e7457612e73612ca5565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612eb282612720565b9150612ebd83612720565b925082612ecd57612ecc612e7b565b5b828204905092915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f3125000000000000000000000000000000000000000000000000000000000000602082015250565b5f612f32602283612622565b9150612f3d82612ed8565b604082019050919050565b5f6020820190508181035f830152612f5f81612f26565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612fc0602583612622565b9150612fcb82612f66565b604082019050919050565b5f6020820190508181035f830152612fed81612fb4565b9050919050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f61304e602f83612622565b915061305982612ff4565b604082019050919050565b5f6020820190508181035f83015261307b81613042565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6130dc602683612622565b91506130e782613082565b604082019050919050565b5f6020820190508181035f830152613109816130d0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61316a602483612622565b915061317582613110565b604082019050919050565b5f6020820190508181035f8301526131978161315e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131f8602283612622565b91506132038261319e565b604082019050919050565b5f6020820190508181035f830152613225816131ec565b9050919050565b7f54726164696e67206e6f742061637469766500000000000000000000000000005f82015250565b5f613260601283612622565b915061326b8261322c565b602082019050919050565b5f6020820190508181035f83015261328d81613254565b9050919050565b7f427579207472616e7366657220616d74206578636565647320746865206d61785f8201527f206275792e000000000000000000000000000000000000000000000000000000602082015250565b5f6132ee602583612622565b91506132f982613294565b604082019050919050565b5f6020820190508181035f83015261331b816132e2565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c657400000000000000005f82015250565b5f613356601883612622565b915061336182613322565b602082019050919050565b5f6020820190508181035f8301526133838161334a565b9050919050565b7f53656c6c207472616e7366657220616d74206578636565647320746865206d615f8201527f782073656c6c2e00000000000000000000000000000000000000000000000000602082015250565b5f6133e4602783612622565b91506133ef8261338a565b604082019050919050565b5f6020820190508181035f830152613411816133d8565b9050919050565b5f60408201905061342b5f830185612838565b6134386020830184612860565b9392505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613499602583612622565b91506134a48261343f565b604082019050919050565b5f6020820190508181035f8301526134c68161348d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613527602383612622565b9150613532826134cd565b604082019050919050565b5f6020820190508181035f8301526135548161351b565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6135b5602683612622565b91506135c08261355b565b604082019050919050565b5f6020820190508181035f8301526135e2816135a9565b9050919050565b5f815190506135f781612888565b92915050565b5f60208284031215613612576136116126c2565b5b5f61361f848285016135e9565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e5f8201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b5f613682602a83612622565b915061368d82613628565b604082019050919050565b5f6020820190508181035f8301526136af81613676565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f5f8201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b5f613710602683612622565b915061371b826136b6565b604082019050919050565b5f6020820190508181035f83015261373d81613704565b9050919050565b5f81519050919050565b5f61375882613744565b6137628185612aa9565b9350613772818560208601612632565b80840191505092915050565b5f613789828461374e565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000005f82015250565b5f6137c8601d83612622565b91506137d382613794565b602082019050919050565b5f6020820190508181035f8301526137f5816137bc565b905091905056fea26469706673582212206769cabb9e9ca8affc7dab987887dd43e3b270a7d103440256ffa30afacd7fe364736f6c63430008140033

Deployed Bytecode Sourcemap

13331:4490:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17318:195;;;;;;;;;;;;;:::i;:::-;;1957:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2871:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13381:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13430:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2278:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17128:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13657:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3048:458;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2177:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3514:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13549:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16926:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16801:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17521:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13729:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13503:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16585:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2394:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5936:150;;;;;;;;;;;;;:::i;:::-;;16257:84;;;;;;;;;;;;;:::i;:::-;;16166:83;;;;;;;;;;;;;:::i;:::-;;5722:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2065:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3737:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2529:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13466:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13769:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13600:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2712:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16349:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6094:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13696:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17318:195;5859:12;:10;:12::i;:::-;5849:22;;:6;;;;;;;;;;:22;;;5841:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17367:12:::1;17404:10;:15;;17427:21;17404:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17390:63;;;;;17472:7;17464:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;17356:157;17318:195::o:0;1957:100::-;2011:13;2044:5;2037:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1957:100;:::o;2871:169::-;2954:4;2971:39;2980:12;:10;:12::i;:::-;2994:7;3003:6;2971:8;:39::i;:::-;3028:4;3021:11;;2871:169;;;;:::o;13381:42::-;;;:::o;13430:29::-;;;:::o;2278:108::-;2339:7;2366:12;;2359:19;;2278:108;:::o;17128:182::-;5859:12;:10;:12::i;:::-;5849:22;;:6;;;;;;;;;;:22;;;5841:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17231:4:::1;17214:22;;:5;:22;;::::0;17206:62:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17295:7;17279:6;:13;17286:5;17279:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;17128:182:::0;;:::o;13657:32::-;;;;:::o;3048:458::-;3154:4;3171:36;3181:6;3189:9;3200:6;3171:9;:36::i;:::-;3220:24;3247:11;:19;3259:6;3247:19;;;;;;;;;;;;;;;:33;3267:12;:10;:12::i;:::-;3247:33;;;;;;;;;;;;;;;;3220:60;;3319:6;3299:16;:26;;3291:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;3406:57;3415:6;3423:12;:10;:12::i;:::-;3456:6;3437:16;:25;3406:8;:57::i;:::-;3494:4;3487:11;;;3048:458;;;;;:::o;2177:93::-;2235:5;2260:2;2253:9;;2177:93;:::o;3514:215::-;3602:4;3619:80;3628:12;:10;:12::i;:::-;3642:7;3688:10;3651:11;:25;3663:12;:10;:12::i;:::-;3651:25;;;;;;;;;;;;;;;:34;3677:7;3651:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;3619:8;:80::i;:::-;3717:4;3710:11;;3514:215;;;;:::o;13549:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;16926:194::-;5859:12;:10;:12::i;:::-;5849:22;;:6;;;;;;;;;;:22;;;5841:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17017:6:::1;:15;17024:7;17017:15;;;;;;;;;;;;;;;;;;;;;;;;;17016:16;17008:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;17106:6;17081:13;:22;17095:7;17081:22;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;16926:194:::0;;:::o;16801:117::-;5859:12;:10;:12::i;:::-;5849:22;;:6;;;;;;;;;;:22;;;5841:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16904:6:::1;16881:11;:20;16893:7;16881:20;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;16801:117:::0;;:::o;17521:297::-;5859:12;:10;:12::i;:::-;5849:22;;:6;;;;;;;;;;:22;;;5841:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17629:1:::1;17611:20;;:6;:20;;::::0;17603:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17673:24;17707:6;17700:24;;;17733:4;17700:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17673:66;;17750:60;17780:6;17788:3;17793:16;17750:22;:60::i;:::-;17592:226;17521:297:::0;;:::o;13729:33::-;;;;;;;;;;;;;:::o;13503:39::-;;;;;;;;;;;;;;;;;;;;;;:::o;16585:208::-;5859:12;:10;:12::i;:::-;5849:22;;:6;;;;;;;;;;:22;;;5841:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16702:4:::1;16697:3;16693:1;16677:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:23;;;;:::i;:::-;16676:30;;;;:::i;:::-;16667:6;:39;16659:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;16778:6;16768;:17;;;;:::i;:::-;16756:9;:29;;;;16585:208:::0;:::o;2394:127::-;2468:7;2495:9;:18;2505:7;2495:18;;;;;;;;;;;;;;;;2488:25;;2394:127;;;:::o;5936:150::-;5859:12;:10;:12::i;:::-;5849:22;;:6;;;;;;;;;;:22;;;5841:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6045:1:::1;6008:40;;6029:6;::::0;::::1;;;;;;;;6008:40;;;;;;;;;;;;6076:1;6059:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;5936:150::o:0;16257:84::-;5859:12;:10;:12::i;:::-;5849:22;;:6;;;;;;;;;;:22;;;5841:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16328:5:::1;16311:14;;:22;;;;;;;;;;;;;;;;;;16257:84::o:0;16166:83::-;5859:12;:10;:12::i;:::-;5849:22;;:6;;;;;;;;;;:22;;;5841:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16237:4:::1;16221:13;;:20;;;;;;;;;;;;;;;;;;16166:83::o:0;5722:79::-;5760:7;5787:6;;;;;;;;;;;5780:13;;5722:79;:::o;2065:104::-;2121:13;2154:7;2147:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2065:104;:::o;3737:413::-;3830:4;3847:24;3874:11;:25;3886:12;:10;:12::i;:::-;3874:25;;;;;;;;;;;;;;;:34;3900:7;3874:34;;;;;;;;;;;;;;;;3847:61;;3947:15;3927:16;:35;;3919:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4040:67;4049:12;:10;:12::i;:::-;4063:7;4091:15;4072:16;:34;4040:8;:67::i;:::-;4138:4;4131:11;;;3737:413;;;;:::o;2529:175::-;2615:4;2632:42;2642:12;:10;:12::i;:::-;2656:9;2667:6;2632:9;:42::i;:::-;2692:4;2685:11;;2529:175;;;;:::o;13466:28::-;;;:::o;13769:33::-;;;;;;;;;;;;;:::o;13600:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;2712:151::-;2801:7;2828:11;:18;2840:5;2828:18;;;;;;;;;;;;;;;:27;2847:7;2828:27;;;;;;;;;;;;;;;;2821:34;;2712:151;;;;:::o;16349:224::-;5859:12;:10;:12::i;:::-;5849:22;;:6;;;;;;;;;;:22;;;5841:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16461:4:::1;16455;16451:1;16435:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;16434:31;;;;:::i;:::-;16425:6;:40;16417:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;16558:6;16548;:17;;;;:::i;:::-;16528;:37;;;;16349:224:::0;:::o;6094:244::-;5859:12;:10;:12::i;:::-;5849:22;;:6;;;;;;;;;;:22;;;5841:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6203:1:::1;6183:22;;:8;:22;;::::0;6175:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6293:8;6264:38;;6285:6;::::0;::::1;;;;;;;;6264:38;;;;;;;;;;;;6322:8;6313:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6094:244:::0;:::o;13696:24::-;;;;:::o;368:98::-;421:7;448:10;441:17;;368:98;:::o;5045:346::-;5164:1;5147:19;;:5;:19;;;5139:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5245:1;5226:21;;:7;:21;;;5218:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5329:6;5299:11;:18;5311:5;5299:18;;;;;;;;;;;;;;;:27;5318:7;5299:27;;;;;;;;;;;;;;;:36;;;;5367:7;5351:32;;5360:5;5351:32;;;5376:6;5351:32;;;;;;:::i;:::-;;;;;;;;5045:346;;;:::o;15193:965::-;15320:14;;;;;;;;;;;:34;;;;;15339:11;:15;15351:2;15339:15;;;;;;;;;;;;;;;;;;;;;;;;;15338:16;15320:34;:56;;;;;15359:11;:17;15371:4;15359:17;;;;;;;;;;;;;;;;;;;;;;;;;15358:18;15320:56;15317:790;;;15401:13;;;;;;;;;;;15393:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;15480:6;:12;15487:4;15480:12;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;;15497:13;:17;15511:2;15497:17;;;;;;;;;;;;;;;;;;;;;;;;;15496:18;15480:34;15476:620;;;15553:17;;15543:6;:27;;15535:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;15665:9;;15648:13;15658:2;15648:9;:13::i;:::-;15639:6;:22;;;;:::i;:::-;:35;;15631:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15476:620;;;15768:6;:10;15775:2;15768:10;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;;15783:13;:19;15797:4;15783:19;;;;;;;;;;;;;;;;;;;;;;;;;15782:20;15768:34;15764:332;;;15841:17;;15831:6;:27;;15823:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;15764:332;;;15971:13;:17;15985:2;15971:17;;;;;;;;;;;;;;;;;;;;;;;;;15966:130;;16042:9;;16025:13;16035:2;16025:9;:13::i;:::-;16016:6;:22;;;;:::i;:::-;:35;;16008:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15966:130;15764:332;15476:620;15317:790;16117:33;16133:4;16139:2;16143:6;16117:15;:33::i;:::-;15193:965;;;:::o;12508:211::-;12625:86;12645:5;12675:23;;;12700:2;12704:5;12652:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12625:19;:86::i;:::-;12508:211;;;:::o;4158:580::-;4282:1;4264:20;;:6;:20;;;4256:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4366:1;4345:23;;:9;:23;;;4337:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;4421:21;4445:9;:17;4455:6;4445:17;;;;;;;;;;;;;;;;4421:41;;4498:6;4481:13;:23;;4473:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;4619:6;4603:13;:22;4583:9;:17;4593:6;4583:17;;;;;;;;;;;;;;;:42;;;;4671:6;4647:9;:20;4657:9;4647:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;4712:9;4695:35;;4704:6;4695:35;;;4723:6;4695:35;;;;;;:::i;:::-;;;;;;;;4245:493;4158:580;;;:::o;12727:333::-;12808:23;12834:69;12862:4;12834:69;;;;;;;;;;;;;;;;;12842:5;12834:27;;;;:69;;;;;:::i;:::-;12808:95;;12938:1;12918:10;:17;:21;12914:139;;;12975:10;12964:30;;;;;;;;;;;;:::i;:::-;12956:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;12914:139;12797:263;12727:333;;:::o;7011:229::-;7148:12;7180:52;7202:6;7210:4;7216:1;7219:12;7180:21;:52::i;:::-;7173:59;;7011:229;;;;;:::o;8131:455::-;8301:12;8359:5;8334:21;:30;;8326:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;8419:12;8433:23;8460:6;:11;;8479:5;8486:4;8460:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8418:73;;;;8509:69;8536:6;8544:7;8553:10;8565:12;8509:26;:69::i;:::-;8502:76;;;;8131:455;;;;;;:::o;10704:644::-;10889:12;10918:7;10914:427;;;10967:1;10946:10;:17;:22;10942:290;;11164:18;11175:6;11164:10;:18::i;:::-;11156:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;10942:290;11253:10;11246:17;;;;10914:427;11296:33;11304:10;11316:12;11296:7;:33::i;:::-;10704:644;;;;;;;:::o;6368:115::-;6428:4;6474:1;6452:7;:19;;;:23;6445:30;;6368:115;;;:::o;11890:552::-;12071:1;12051:10;:17;:21;12047:388;;;12283:10;12277:17;12340:15;12327:10;12323:2;12319:19;12312:44;12047:388;12410:12;12403:20;;;;;;;;;;;:::i;:::-;;;;;;;;7:99:1;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:150::-;3866:9;3899:37;3930:5;3899:37;:::i;:::-;3886:50;;3792:150;;;:::o;3948:179::-;4059:61;4114:5;4059:61;:::i;:::-;4054:3;4047:74;3948:179;;:::o;4133:270::-;4250:4;4288:2;4277:9;4273:18;4265:26;;4301:95;4393:1;4382:9;4378:17;4369:6;4301:95;:::i;:::-;4133:270;;;;:::o;4409:118::-;4496:24;4514:5;4496:24;:::i;:::-;4491:3;4484:37;4409:118;;:::o;4533:222::-;4626:4;4664:2;4653:9;4649:18;4641:26;;4677:71;4745:1;4734:9;4730:17;4721:6;4677:71;:::i;:::-;4533:222;;;;:::o;4761:118::-;4848:24;4866:5;4848:24;:::i;:::-;4843:3;4836:37;4761:118;;:::o;4885:222::-;4978:4;5016:2;5005:9;5001:18;4993:26;;5029:71;5097:1;5086:9;5082:17;5073:6;5029:71;:::i;:::-;4885:222;;;;:::o;5113:116::-;5183:21;5198:5;5183:21;:::i;:::-;5176:5;5173:32;5163:60;;5219:1;5216;5209:12;5163:60;5113:116;:::o;5235:133::-;5278:5;5316:6;5303:20;5294:29;;5332:30;5356:5;5332:30;:::i;:::-;5235:133;;;;:::o;5374:468::-;5439:6;5447;5496:2;5484:9;5475:7;5471:23;5467:32;5464:119;;;5502:79;;:::i;:::-;5464:119;5622:1;5647:53;5692:7;5683:6;5672:9;5668:22;5647:53;:::i;:::-;5637:63;;5593:117;5749:2;5775:50;5817:7;5808:6;5797:9;5793:22;5775:50;:::i;:::-;5765:60;;5720:115;5374:468;;;;;:::o;5848:619::-;5925:6;5933;5941;5990:2;5978:9;5969:7;5965:23;5961:32;5958:119;;;5996:79;;:::i;:::-;5958:119;6116:1;6141:53;6186:7;6177:6;6166:9;6162:22;6141:53;:::i;:::-;6131:63;;6087:117;6243:2;6269:53;6314:7;6305:6;6294:9;6290:22;6269:53;:::i;:::-;6259:63;;6214:118;6371:2;6397:53;6442:7;6433:6;6422:9;6418:22;6397:53;:::i;:::-;6387:63;;6342:118;5848:619;;;;;:::o;6473:86::-;6508:7;6548:4;6541:5;6537:16;6526:27;;6473:86;;;:::o;6565:112::-;6648:22;6664:5;6648:22;:::i;:::-;6643:3;6636:35;6565:112;;:::o;6683:214::-;6772:4;6810:2;6799:9;6795:18;6787:26;;6823:67;6887:1;6876:9;6872:17;6863:6;6823:67;:::i;:::-;6683:214;;;;:::o;6903:329::-;6962:6;7011:2;6999:9;6990:7;6986:23;6982:32;6979:119;;;7017:79;;:::i;:::-;6979:119;7137:1;7162:53;7207:7;7198:6;7187:9;7183:22;7162:53;:::i;:::-;7152:63;;7108:117;6903:329;;;;:::o;7238:474::-;7306:6;7314;7363:2;7351:9;7342:7;7338:23;7334:32;7331:119;;;7369:79;;:::i;:::-;7331:119;7489:1;7514:53;7559:7;7550:6;7539:9;7535:22;7514:53;:::i;:::-;7504:63;;7460:117;7616:2;7642:53;7687:7;7678:6;7667:9;7663:22;7642:53;:::i;:::-;7632:63;;7587:118;7238:474;;;;;:::o;7718:329::-;7777:6;7826:2;7814:9;7805:7;7801:23;7797:32;7794:119;;;7832:79;;:::i;:::-;7794:119;7952:1;7977:53;8022:7;8013:6;8002:9;7998:22;7977:53;:::i;:::-;7967:63;;7923:117;7718:329;;;;:::o;8053:140::-;8117:9;8150:37;8181:5;8150:37;:::i;:::-;8137:50;;8053:140;;;:::o;8199:159::-;8300:51;8345:5;8300:51;:::i;:::-;8295:3;8288:64;8199:159;;:::o;8364:250::-;8471:4;8509:2;8498:9;8494:18;8486:26;;8522:85;8604:1;8593:9;8589:17;8580:6;8522:85;:::i;:::-;8364:250;;;;:::o;8620:182::-;8760:34;8756:1;8748:6;8744:14;8737:58;8620:182;:::o;8808:366::-;8950:3;8971:67;9035:2;9030:3;8971:67;:::i;:::-;8964:74;;9047:93;9136:3;9047:93;:::i;:::-;9165:2;9160:3;9156:12;9149:19;;8808:366;;;:::o;9180:419::-;9346:4;9384:2;9373:9;9369:18;9361:26;;9433:9;9427:4;9423:20;9419:1;9408:9;9404:17;9397:47;9461:131;9587:4;9461:131;:::i;:::-;9453:139;;9180:419;;;:::o;9605:147::-;9706:11;9743:3;9728:18;;9605:147;;;;:::o;9758:114::-;;:::o;9878:398::-;10037:3;10058:83;10139:1;10134:3;10058:83;:::i;:::-;10051:90;;10150:93;10239:3;10150:93;:::i;:::-;10268:1;10263:3;10259:11;10252:18;;9878:398;;;:::o;10282:379::-;10466:3;10488:147;10631:3;10488:147;:::i;:::-;10481:154;;10652:3;10645:10;;10282:379;;;:::o;10667:171::-;10807:23;10803:1;10795:6;10791:14;10784:47;10667:171;:::o;10844:366::-;10986:3;11007:67;11071:2;11066:3;11007:67;:::i;:::-;11000:74;;11083:93;11172:3;11083:93;:::i;:::-;11201:2;11196:3;11192:12;11185:19;;10844:366;;;:::o;11216:419::-;11382:4;11420:2;11409:9;11405:18;11397:26;;11469:9;11463:4;11459:20;11455:1;11444:9;11440:17;11433:47;11497:131;11623:4;11497:131;:::i;:::-;11489:139;;11216:419;;;:::o;11641:180::-;11689:77;11686:1;11679:88;11786:4;11783:1;11776:15;11810:4;11807:1;11800:15;11827:320;11871:6;11908:1;11902:4;11898:12;11888:22;;11955:1;11949:4;11945:12;11976:18;11966:81;;12032:4;12024:6;12020:17;12010:27;;11966:81;12094:2;12086:6;12083:14;12063:18;12060:38;12057:84;;12113:18;;:::i;:::-;12057:84;11878:269;11827:320;;;:::o;12153:177::-;12293:29;12289:1;12281:6;12277:14;12270:53;12153:177;:::o;12336:366::-;12478:3;12499:67;12563:2;12558:3;12499:67;:::i;:::-;12492:74;;12575:93;12664:3;12575:93;:::i;:::-;12693:2;12688:3;12684:12;12677:19;;12336:366;;;:::o;12708:419::-;12874:4;12912:2;12901:9;12897:18;12889:26;;12961:9;12955:4;12951:20;12947:1;12936:9;12932:17;12925:47;12989:131;13115:4;12989:131;:::i;:::-;12981:139;;12708:419;;;:::o;13133:227::-;13273:34;13269:1;13261:6;13257:14;13250:58;13342:10;13337:2;13329:6;13325:15;13318:35;13133:227;:::o;13366:366::-;13508:3;13529:67;13593:2;13588:3;13529:67;:::i;:::-;13522:74;;13605:93;13694:3;13605:93;:::i;:::-;13723:2;13718:3;13714:12;13707:19;;13366:366;;;:::o;13738:419::-;13904:4;13942:2;13931:9;13927:18;13919:26;;13991:9;13985:4;13981:20;13977:1;13966:9;13962:17;13955:47;14019:131;14145:4;14019:131;:::i;:::-;14011:139;;13738:419;;;:::o;14163:180::-;14211:77;14208:1;14201:88;14308:4;14305:1;14298:15;14332:4;14329:1;14322:15;14349:191;14389:3;14408:20;14426:1;14408:20;:::i;:::-;14403:25;;14442:20;14460:1;14442:20;:::i;:::-;14437:25;;14485:1;14482;14478:9;14471:16;;14506:3;14503:1;14500:10;14497:36;;;14513:18;;:::i;:::-;14497:36;14349:191;;;;:::o;14546:220::-;14686:34;14682:1;14674:6;14670:14;14663:58;14755:3;14750:2;14742:6;14738:15;14731:28;14546:220;:::o;14772:366::-;14914:3;14935:67;14999:2;14994:3;14935:67;:::i;:::-;14928:74;;15011:93;15100:3;15011:93;:::i;:::-;15129:2;15124:3;15120:12;15113:19;;14772:366;;;:::o;15144:419::-;15310:4;15348:2;15337:9;15333:18;15325:26;;15397:9;15391:4;15387:20;15383:1;15372:9;15368:17;15361:47;15425:131;15551:4;15425:131;:::i;:::-;15417:139;;15144:419;;;:::o;15569:176::-;15709:28;15705:1;15697:6;15693:14;15686:52;15569:176;:::o;15751:366::-;15893:3;15914:67;15978:2;15973:3;15914:67;:::i;:::-;15907:74;;15990:93;16079:3;15990:93;:::i;:::-;16108:2;16103:3;16099:12;16092:19;;15751:366;;;:::o;16123:419::-;16289:4;16327:2;16316:9;16312:18;16304:26;;16376:9;16370:4;16366:20;16362:1;16351:9;16347:17;16340:47;16404:131;16530:4;16404:131;:::i;:::-;16396:139;;16123:419;;;:::o;16548:143::-;16605:5;16636:6;16630:13;16621:22;;16652:33;16679:5;16652:33;:::i;:::-;16548:143;;;;:::o;16697:351::-;16767:6;16816:2;16804:9;16795:7;16791:23;16787:32;16784:119;;;16822:79;;:::i;:::-;16784:119;16942:1;16967:64;17023:7;17014:6;17003:9;16999:22;16967:64;:::i;:::-;16957:74;;16913:128;16697:351;;;;:::o;17054:410::-;17094:7;17117:20;17135:1;17117:20;:::i;:::-;17112:25;;17151:20;17169:1;17151:20;:::i;:::-;17146:25;;17206:1;17203;17199:9;17228:30;17246:11;17228:30;:::i;:::-;17217:41;;17407:1;17398:7;17394:15;17391:1;17388:22;17368:1;17361:9;17341:83;17318:139;;17437:18;;:::i;:::-;17318:139;17102:362;17054:410;;;;:::o;17470:180::-;17518:77;17515:1;17508:88;17615:4;17612:1;17605:15;17639:4;17636:1;17629:15;17656:185;17696:1;17713:20;17731:1;17713:20;:::i;:::-;17708:25;;17747:20;17765:1;17747:20;:::i;:::-;17742:25;;17786:1;17776:35;;17791:18;;:::i;:::-;17776:35;17833:1;17830;17826:9;17821:14;;17656:185;;;;:::o;17847:221::-;17987:34;17983:1;17975:6;17971:14;17964:58;18056:4;18051:2;18043:6;18039:15;18032:29;17847:221;:::o;18074:366::-;18216:3;18237:67;18301:2;18296:3;18237:67;:::i;:::-;18230:74;;18313:93;18402:3;18313:93;:::i;:::-;18431:2;18426:3;18422:12;18415:19;;18074:366;;;:::o;18446:419::-;18612:4;18650:2;18639:9;18635:18;18627:26;;18699:9;18693:4;18689:20;18685:1;18674:9;18670:17;18663:47;18727:131;18853:4;18727:131;:::i;:::-;18719:139;;18446:419;;;:::o;18871:224::-;19011:34;19007:1;18999:6;18995:14;18988:58;19080:7;19075:2;19067:6;19063:15;19056:32;18871:224;:::o;19101:366::-;19243:3;19264:67;19328:2;19323:3;19264:67;:::i;:::-;19257:74;;19340:93;19429:3;19340:93;:::i;:::-;19458:2;19453:3;19449:12;19442:19;;19101:366;;;:::o;19473:419::-;19639:4;19677:2;19666:9;19662:18;19654:26;;19726:9;19720:4;19716:20;19712:1;19701:9;19697:17;19690:47;19754:131;19880:4;19754:131;:::i;:::-;19746:139;;19473:419;;;:::o;19898:234::-;20038:34;20034:1;20026:6;20022:14;20015:58;20107:17;20102:2;20094:6;20090:15;20083:42;19898:234;:::o;20138:366::-;20280:3;20301:67;20365:2;20360:3;20301:67;:::i;:::-;20294:74;;20377:93;20466:3;20377:93;:::i;:::-;20495:2;20490:3;20486:12;20479:19;;20138:366;;;:::o;20510:419::-;20676:4;20714:2;20703:9;20699:18;20691:26;;20763:9;20757:4;20753:20;20749:1;20738:9;20734:17;20727:47;20791:131;20917:4;20791:131;:::i;:::-;20783:139;;20510:419;;;:::o;20935:225::-;21075:34;21071:1;21063:6;21059:14;21052:58;21144:8;21139:2;21131:6;21127:15;21120:33;20935:225;:::o;21166:366::-;21308:3;21329:67;21393:2;21388:3;21329:67;:::i;:::-;21322:74;;21405:93;21494:3;21405:93;:::i;:::-;21523:2;21518:3;21514:12;21507:19;;21166:366;;;:::o;21538:419::-;21704:4;21742:2;21731:9;21727:18;21719:26;;21791:9;21785:4;21781:20;21777:1;21766:9;21762:17;21755:47;21819:131;21945:4;21819:131;:::i;:::-;21811:139;;21538:419;;;:::o;21963:223::-;22103:34;22099:1;22091:6;22087:14;22080:58;22172:6;22167:2;22159:6;22155:15;22148:31;21963:223;:::o;22192:366::-;22334:3;22355:67;22419:2;22414:3;22355:67;:::i;:::-;22348:74;;22431:93;22520:3;22431:93;:::i;:::-;22549:2;22544:3;22540:12;22533:19;;22192:366;;;:::o;22564:419::-;22730:4;22768:2;22757:9;22753:18;22745:26;;22817:9;22811:4;22807:20;22803:1;22792:9;22788:17;22781:47;22845:131;22971:4;22845:131;:::i;:::-;22837:139;;22564:419;;;:::o;22989:221::-;23129:34;23125:1;23117:6;23113:14;23106:58;23198:4;23193:2;23185:6;23181:15;23174:29;22989:221;:::o;23216:366::-;23358:3;23379:67;23443:2;23438:3;23379:67;:::i;:::-;23372:74;;23455:93;23544:3;23455:93;:::i;:::-;23573:2;23568:3;23564:12;23557:19;;23216:366;;;:::o;23588:419::-;23754:4;23792:2;23781:9;23777:18;23769:26;;23841:9;23835:4;23831:20;23827:1;23816:9;23812:17;23805:47;23869:131;23995:4;23869:131;:::i;:::-;23861:139;;23588:419;;;:::o;24013:168::-;24153:20;24149:1;24141:6;24137:14;24130:44;24013:168;:::o;24187:366::-;24329:3;24350:67;24414:2;24409:3;24350:67;:::i;:::-;24343:74;;24426:93;24515:3;24426:93;:::i;:::-;24544:2;24539:3;24535:12;24528:19;;24187:366;;;:::o;24559:419::-;24725:4;24763:2;24752:9;24748:18;24740:26;;24812:9;24806:4;24802:20;24798:1;24787:9;24783:17;24776:47;24840:131;24966:4;24840:131;:::i;:::-;24832:139;;24559:419;;;:::o;24984:224::-;25124:34;25120:1;25112:6;25108:14;25101:58;25193:7;25188:2;25180:6;25176:15;25169:32;24984:224;:::o;25214:366::-;25356:3;25377:67;25441:2;25436:3;25377:67;:::i;:::-;25370:74;;25453:93;25542:3;25453:93;:::i;:::-;25571:2;25566:3;25562:12;25555:19;;25214:366;;;:::o;25586:419::-;25752:4;25790:2;25779:9;25775:18;25767:26;;25839:9;25833:4;25829:20;25825:1;25814:9;25810:17;25803:47;25867:131;25993:4;25867:131;:::i;:::-;25859:139;;25586:419;;;:::o;26011:174::-;26151:26;26147:1;26139:6;26135:14;26128:50;26011:174;:::o;26191:366::-;26333:3;26354:67;26418:2;26413:3;26354:67;:::i;:::-;26347:74;;26430:93;26519:3;26430:93;:::i;:::-;26548:2;26543:3;26539:12;26532:19;;26191:366;;;:::o;26563:419::-;26729:4;26767:2;26756:9;26752:18;26744:26;;26816:9;26810:4;26806:20;26802:1;26791:9;26787:17;26780:47;26844:131;26970:4;26844:131;:::i;:::-;26836:139;;26563:419;;;:::o;26988:226::-;27128:34;27124:1;27116:6;27112:14;27105:58;27197:9;27192:2;27184:6;27180:15;27173:34;26988:226;:::o;27220:366::-;27362:3;27383:67;27447:2;27442:3;27383:67;:::i;:::-;27376:74;;27459:93;27548:3;27459:93;:::i;:::-;27577:2;27572:3;27568:12;27561:19;;27220:366;;;:::o;27592:419::-;27758:4;27796:2;27785:9;27781:18;27773:26;;27845:9;27839:4;27835:20;27831:1;27820:9;27816:17;27809:47;27873:131;27999:4;27873:131;:::i;:::-;27865:139;;27592:419;;;:::o;28017:332::-;28138:4;28176:2;28165:9;28161:18;28153:26;;28189:71;28257:1;28246:9;28242:17;28233:6;28189:71;:::i;:::-;28270:72;28338:2;28327:9;28323:18;28314:6;28270:72;:::i;:::-;28017:332;;;;;:::o;28355:224::-;28495:34;28491:1;28483:6;28479:14;28472:58;28564:7;28559:2;28551:6;28547:15;28540:32;28355:224;:::o;28585:366::-;28727:3;28748:67;28812:2;28807:3;28748:67;:::i;:::-;28741:74;;28824:93;28913:3;28824:93;:::i;:::-;28942:2;28937:3;28933:12;28926:19;;28585:366;;;:::o;28957:419::-;29123:4;29161:2;29150:9;29146:18;29138:26;;29210:9;29204:4;29200:20;29196:1;29185:9;29181:17;29174:47;29238:131;29364:4;29238:131;:::i;:::-;29230:139;;28957:419;;;:::o;29382:222::-;29522:34;29518:1;29510:6;29506:14;29499:58;29591:5;29586:2;29578:6;29574:15;29567:30;29382:222;:::o;29610:366::-;29752:3;29773:67;29837:2;29832:3;29773:67;:::i;:::-;29766:74;;29849:93;29938:3;29849:93;:::i;:::-;29967:2;29962:3;29958:12;29951:19;;29610:366;;;:::o;29982:419::-;30148:4;30186:2;30175:9;30171:18;30163:26;;30235:9;30229:4;30225:20;30221:1;30210:9;30206:17;30199:47;30263:131;30389:4;30263:131;:::i;:::-;30255:139;;29982:419;;;:::o;30407:225::-;30547:34;30543:1;30535:6;30531:14;30524:58;30616:8;30611:2;30603:6;30599:15;30592:33;30407:225;:::o;30638:366::-;30780:3;30801:67;30865:2;30860:3;30801:67;:::i;:::-;30794:74;;30877:93;30966:3;30877:93;:::i;:::-;30995:2;30990:3;30986:12;30979:19;;30638:366;;;:::o;31010:419::-;31176:4;31214:2;31203:9;31199:18;31191:26;;31263:9;31257:4;31253:20;31249:1;31238:9;31234:17;31227:47;31291:131;31417:4;31291:131;:::i;:::-;31283:139;;31010:419;;;:::o;31435:137::-;31489:5;31520:6;31514:13;31505:22;;31536:30;31560:5;31536:30;:::i;:::-;31435:137;;;;:::o;31578:345::-;31645:6;31694:2;31682:9;31673:7;31669:23;31665:32;31662:119;;;31700:79;;:::i;:::-;31662:119;31820:1;31845:61;31898:7;31889:6;31878:9;31874:22;31845:61;:::i;:::-;31835:71;;31791:125;31578:345;;;;:::o;31929:229::-;32069:34;32065:1;32057:6;32053:14;32046:58;32138:12;32133:2;32125:6;32121:15;32114:37;31929:229;:::o;32164:366::-;32306:3;32327:67;32391:2;32386:3;32327:67;:::i;:::-;32320:74;;32403:93;32492:3;32403:93;:::i;:::-;32521:2;32516:3;32512:12;32505:19;;32164:366;;;:::o;32536:419::-;32702:4;32740:2;32729:9;32725:18;32717:26;;32789:9;32783:4;32779:20;32775:1;32764:9;32760:17;32753:47;32817:131;32943:4;32817:131;:::i;:::-;32809:139;;32536:419;;;:::o;32961:225::-;33101:34;33097:1;33089:6;33085:14;33078:58;33170:8;33165:2;33157:6;33153:15;33146:33;32961:225;:::o;33192:366::-;33334:3;33355:67;33419:2;33414:3;33355:67;:::i;:::-;33348:74;;33431:93;33520:3;33431:93;:::i;:::-;33549:2;33544:3;33540:12;33533:19;;33192:366;;;:::o;33564:419::-;33730:4;33768:2;33757:9;33753:18;33745:26;;33817:9;33811:4;33807:20;33803:1;33792:9;33788:17;33781:47;33845:131;33971:4;33845:131;:::i;:::-;33837:139;;33564:419;;;:::o;33989:98::-;34040:6;34074:5;34068:12;34058:22;;33989:98;;;:::o;34093:386::-;34197:3;34225:38;34257:5;34225:38;:::i;:::-;34279:88;34360:6;34355:3;34279:88;:::i;:::-;34272:95;;34376:65;34434:6;34429:3;34422:4;34415:5;34411:16;34376:65;:::i;:::-;34466:6;34461:3;34457:16;34450:23;;34201:278;34093:386;;;;:::o;34485:271::-;34615:3;34637:93;34726:3;34717:6;34637:93;:::i;:::-;34630:100;;34747:3;34740:10;;34485:271;;;;:::o;34762:179::-;34902:31;34898:1;34890:6;34886:14;34879:55;34762:179;:::o;34947:366::-;35089:3;35110:67;35174:2;35169:3;35110:67;:::i;:::-;35103:74;;35186:93;35275:3;35186:93;:::i;:::-;35304:2;35299:3;35295:12;35288:19;;34947:366;;;:::o;35319:419::-;35485:4;35523:2;35512:9;35508:18;35500:26;;35572:9;35566:4;35562:20;35558:1;35547:9;35543:17;35536:47;35600:131;35726:4;35600:131;:::i;:::-;35592:139;;35319:419;;;:::o

Swarm Source

ipfs://6769cabb9e9ca8affc7dab987887dd43e3b270a7d103440256ffa30afacd7fe3
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.