ETH Price: $3,107.32 (+0.12%)

Token

Frenlandia (Fren)
 

Overview

Max Total Supply

666,666,666,666 Fren

Holders

165

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
72,096.786735921781534805 Fren

Value
$0.00
0xbbf5a4f3831a96ba3b6ffa88c69212c354d1d453
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
Frenlandia

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-06-28
*/

// File: @openzeppelin/contracts/utils/Context.sol


// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)

pragma solidity ^0.8.20;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }

    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

// File: @openzeppelin/contracts/access/Ownable.sol


// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)

pragma solidity ^0.8.20;


/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * The initial owner is set to the address provided by the deployer. This can
 * later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    /**
     * @dev The caller account is not authorized to perform an operation.
     */
    error OwnableUnauthorizedAccount(address account);

    /**
     * @dev The owner is not a valid owner account. (eg. `address(0)`)
     */
    error OwnableInvalidOwner(address owner);

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

    /**
     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.
     */
    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(initialOwner);
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// File: frenkingdom.sol


pragma solidity ^0.8.20;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}


library IterableMapping {
    // Iterable mapping from address to uint;
    struct Map {
        address[] keys;
        mapping(address => uint256) values;
        mapping(address => uint256) indexOf;
        mapping(address => bool) inserted;
    }

    function exists(Map storage map, address key) internal view returns (bool) {
        return map.inserted[key];
    }

    function get(Map storage map, address key) internal view returns (uint256) {
        return map.values[key];
    }

    function getKeyAtIndex(Map storage map, uint256 index) internal view returns (address) {
        return map.keys[index];
    }

    function size(Map storage map) internal view returns (uint256) {
        return map.keys.length;
    }

    function set(Map storage map, address key, uint256 val) internal {
        if (map.inserted[key]) {
            map.values[key] = val;
        } else {
            map.inserted[key] = true;
            map.values[key] = val;
            map.indexOf[key] = map.keys.length;
            map.keys.push(key);
        }
    }

    function remove(Map storage map, address key) internal {
        if (!map.inserted[key]) {
            return;
        }

        delete map.inserted[key];
        delete map.values[key];

        uint256 index = map.indexOf[key];
        address lastKey = map.keys[map.keys.length - 1];

        map.indexOf[lastKey] = index;
        delete map.indexOf[key];

        map.keys[index] = lastKey;
        map.keys.pop();
    }
}

contract Frenlandia is IERC20, Ownable {

    mapping(address account => uint256) private _balances;
    mapping(address account => mapping(address spender => uint256)) private _allowances;
    mapping(address => bool) private _blacklist;

    uint256 constant private _totalSupply = 666666666666 * 10**18; // 666666666666 tokens with 18 decimals
    string constant private _name = "Frenlandia";
    string constant private _symbol = "Fren";
    uint8 constant private _decimals = 18;

    uint256 constant private _taxFee = 1; // 1% tax fee
    uint256 constant private _maxSends = 5; // maximum number of random holders who receive their reflection per transaction
    uint256 private _reflectionTotal;
    mapping(address => bool) private _excludedFromReflection;
    uint256 private _excludedSupply;

    using IterableMapping for IterableMapping.Map;
    IterableMapping.Map private _reflections;

    constructor() Ownable (_msgSender()) {
        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
        _reflections.set(_msgSender(), _reflectionTotal);
        _excludedFromReflection[address(0)] = true;
        _excludedFromReflection[address(0x000000000000000000000000000000000000dEaD)] = true;
    }

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

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

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

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

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount);
        return true;
    }

    function totalReflection() public view returns (uint256) {
        return _reflectionTotal;
    }

    function _approve(address owner, address spender, uint256 amount) internal {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        require(!_blacklist[owner], "Owner is blacklisted");
        require(!_blacklist[spender], "Spender is blacklisted");

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

        _excludeReflection(spender); // no reflections for router
    }

    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "ERC20: transfer amount must be greater than zero");
        require(!_blacklist[sender], "Sender is blacklisted");
        require(!_blacklist[recipient], "Recipient is blacklisted");

        uint256 taxAmount = amount * _taxFee / 100; // Calculate the tax amount
        uint256 transferAmount = amount - taxAmount; // Calculate the transfer amount after tax

        address owner = owner();
        if(sender != owner) { _checkAccount(sender); }
        if(recipient != owner) { _checkAccount(recipient); }
        if((sender == owner) || (recipient == owner) || (_excludedFromReflection[sender] && _excludedFromReflection[recipient])) {
            taxAmount = 0;
            transferAmount = amount;
        }

        if(taxAmount > 0) {
            // take fee and store in contract
            _balances[address(this)] = _balances[address(this)] + taxAmount;
            emit Transfer(sender, address(this), taxAmount);
            _reflectionTotal = _reflectionTotal + taxAmount;
        }
        _redistributeReflection(sender, recipient); // Distribute reflection on each transfer

        _balances[sender] = _balances[sender] - amount;
        if(_excludedFromReflection[sender]) {
            _excludedSupply-= amount;
        }
        _balances[recipient] = _balances[recipient] + transferAmount;
        if(_excludedFromReflection[recipient]) {
            _excludedSupply+= transferAmount;
        }
        emit Transfer(sender, recipient, transferAmount);
    }

    function _redistributeReflection(address sender, address recipient) internal {
        _redistributeReflectionFor(sender);
        _redistributeReflectionFor(recipient);

        uint256 size = _reflections.size();
        uint256 randomIndex = uint256(keccak256(abi.encodePacked(block.number, _msgSender(), _reflectionTotal))) % size;
        uint256 count = size;
        if(_reflections.exists(sender)) count--;
        if(_reflections.exists(recipient)) count--;
        uint256 max = (count > _maxSends) ? _maxSends : count;
        uint256 i = 0;
        while(i < max) {
            address holder = _reflections.getKeyAtIndex(randomIndex);
            if((holder != sender) && (holder != recipient)) { 
                if(!_redistributeReflectionFor(holder)) break;
                i++;
            }
            randomIndex = (randomIndex + 1) % size;
        }
    }

    function _redistributeReflectionFor(address holder) internal  returns (bool){
        if(_reflections.exists(holder)) {
            uint256 balance = _balances[holder];
            uint256 lastReflectionTotal = _reflections.get(holder);
            uint256 reflection_amount = balance * (_reflectionTotal - lastReflectionTotal) / (_totalSupply - _excludedSupply);
            if(reflection_amount > 0) {
                if(_balances[address(this)] >= (reflection_amount)) {
                    _balances[address(this)] = _balances[address(this)] - reflection_amount;
                    _balances[holder] = _balances[holder] + reflection_amount;
                    _reflections.set(holder, _reflectionTotal);
                    emit Transfer(address(this), holder, reflection_amount);
                    return true;
                } else return false;
            }
        }
        _reflections.set(holder, _reflectionTotal);
        return true;
    }

    event BlacklistUpdated(address indexed account, bool isBlacklisted);

    function blacklist(address account) public onlyOwner {
        require(!_blacklist[account], "Account is already blacklisted");
        _blacklist[account] = true;
        emit BlacklistUpdated(account, true);
    }

    function unBlacklist(address account) public onlyOwner {
        require(_blacklist[account], "Account is not blacklisted");
        delete(_blacklist[account]);
        emit BlacklistUpdated(account, false);
    }

    function isBlacklisted(address account) public view returns (bool) {
        return _blacklist[account];
    }
    
    event ExcludedUpdated(address indexed account, bool isExcluded, uint256 balance, uint256 excludedSupply);

    function _excludeReflection(address account) internal {
        if(!_excludedFromReflection[account]) {
            _excludedFromReflection[account] = true;
            _excludedSupply+= _balances[account];
            emit ExcludedUpdated(account, true, _balances[account], _excludedSupply);
        }
    }

    function _checkAccount(address account) internal {
        if(!_excludedFromReflection[account]) {
            if(_isPair(account)) {
                _excludeReflection(account);
            }
        }
    }

    function _isPair(address account) internal view returns (bool) {
        bool success;
        bytes memory data;
        (success, data) = account.staticcall(abi.encodeWithSelector(0x0dfe1681));//token0
        if(success && (data.length == 32)) {
            if(address(uint160(uint256(bytes32(data)))) == address(this)) return true;
        } else return false;
        (success, data) = account.staticcall(abi.encodeWithSelector(0xd21220a7));//token1
        if(success && (data.length == 32)) {
            if(address(uint160(uint256(bytes32(data)))) == address(this)) return true;
        }
        return false;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"BlacklistUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"},{"indexed":false,"internalType":"uint256","name":"balance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"excludedSupply","type":"uint256"}],"name":"ExcludedUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"unBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561000f575f80fd5b5061001e61024f60201b60201c565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361008e575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610085919061053c565b60405180910390fd5b61009d8161025660201b60201c565b506c086a1dbde025b824cf1068000060015f6100bd61024f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061010861024f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6c086a1dbde025b824cf10680000604051610171919061056d565b60405180910390a361019e61018a61024f60201b60201c565b600454600761031760201b9092919060201c565b600160055f8073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610586565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b826003015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156103b15780836001015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506104f8565b6001836003015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080836001015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550825f0180549050836002015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550825f0182908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610526826104fd565b9050919050565b6105368161051c565b82525050565b5f60208201905061054f5f83018461052d565b92915050565b5f819050919050565b61056781610555565b82525050565b5f6020820190506105805f83018461055e565b92915050565b612c1b806105935f395ff3fe608060405234801561000f575f80fd5b50600436106100fe575f3560e01c8063715018a611610095578063dd62ed3e11610064578063dd62ed3e1461029c578063f2fde38b146102cc578063f9f92be4146102e8578063fe575a8714610304576100fe565b8063715018a6146102265780638da5cb5b1461023057806395d89b411461024e578063a9059cbb1461026c576100fe565b806322849720116100d1578063228497201461018a57806323b872dd146101a8578063313ce567146101d857806370a08231146101f6576100fe565b806306fdde0314610102578063095ea7b31461012057806318160ddd146101505780631a8952661461016e575b5f80fd5b61010a610334565b6040516101179190612086565b60405180910390f35b61013a60048036038101906101359190612137565b610371565b604051610147919061218f565b60405180910390f35b61015861038e565b60405161016591906121b7565b60405180910390f35b610188600480360381019061018391906121d0565b6103a2565b005b6101926104d0565b60405161019f91906121b7565b60405180910390f35b6101c260048036038101906101bd91906121fb565b6104d9565b6040516101cf919061218f565b60405180910390f35b6101e061058c565b6040516101ed9190612266565b60405180910390f35b610210600480360381019061020b91906121d0565b610594565b60405161021d91906121b7565b60405180910390f35b61022e6105df565b005b6102386105f2565b604051610245919061228e565b60405180910390f35b610256610619565b6040516102639190612086565b60405180910390f35b61028660048036038101906102819190612137565b610656565b604051610293919061218f565b60405180910390f35b6102b660048036038101906102b191906122a7565b610673565b6040516102c391906121b7565b60405180910390f35b6102e660048036038101906102e191906121d0565b6106f5565b005b61030260048036038101906102fd91906121d0565b610779565b005b61031e600480360381019061031991906121d0565b6108b2565b60405161032b919061218f565b60405180910390f35b60606040518060400160405280600a81526020017f4672656e6c616e64696100000000000000000000000000000000000000000000815250905090565b5f61038461037d610904565b848461090b565b6001905092915050565b5f6c086a1dbde025b824cf10680000905090565b6103aa610beb565b60035f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042a9061232f565b60405180910390fd5b60035f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81549060ff02191690558073ffffffffffffffffffffffffffffffffffffffff167f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac5f6040516104c5919061218f565b60405180910390a250565b5f600454905090565b5f6104e5848484610c72565b610581846104f1610904565b8460025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610538610904565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461057c919061237a565b61090b565b600190509392505050565b5f6012905090565b5f8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905080915050919050565b6105e7610beb565b6105f05f6113cf565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4672656e00000000000000000000000000000000000000000000000000000000815250905090565b5f610669610662610904565b8484610c72565b6001905092915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6106fd610beb565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361076d575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610764919061228e565b60405180910390fd5b610776816113cf565b50565b610781610beb565b60035f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561080b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610802906123f7565b60405180910390fd5b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac60016040516108a7919061218f565b60405180910390a250565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097090612485565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109de90612513565b60405180910390fd5b60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a689061257b565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af2906125e3565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610bd591906121b7565b60405180910390a3610be682611490565b505050565b610bf3610904565b73ffffffffffffffffffffffffffffffffffffffff16610c116105f2565b73ffffffffffffffffffffffffffffffffffffffff1614610c7057610c34610904565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610c67919061228e565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd790612671565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d45906126ff565b60405180910390fd5b5f8111610d90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d879061278d565b60405180910390fd5b60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e11906127f5565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9b9061285d565b60405180910390fd5b5f6064600183610eb4919061287b565b610ebe91906128e9565b90505f8183610ecd919061237a565b90505f610ed86105f2565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614610f1757610f168661161d565b5b8073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614610f5457610f538561161d565b5b8073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480610fb957508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8061105c575060055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561105b575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b5b15611068575f92508391505b5f831115611174578260015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546110b99190612919565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161115791906121b7565b60405180910390a38260045461116d9190612919565b6004819055505b61117e8686611687565b8360015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546111c7919061237a565b60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611270578360065f828254611268919061237a565b925050819055505b8160015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546112b99190612919565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611362578160065f82825461135a9190612919565b925050819055505b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113bf91906121b7565b60405180910390a3505050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60055f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661161a57600160055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460065f8282546115819190612919565b925050819055508073ffffffffffffffffffffffffffffffffffffffff167f37c047793ae82a9fd59504a5e5b06ac3fd4c3d4f088ec01230bb586e362081906001805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546006546040516116119392919061294c565b60405180910390a25b50565b60055f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611684576116748161182d565b156116835761168281611490565b5b5b50565b61169082611a70565b5061169a81611a70565b505f6116a66007611d3d565b90505f81436116b3610904565b6004546040516020016116c8939291906129e6565b604051602081830303815290604052805190602001205f1c6116ea9190612a22565b90505f829050611704856007611d4c90919063ffffffff16565b1561171857808061171490612a52565b9150505b61172c846007611d4c90919063ffffffff16565b1561174057808061173c90612a52565b9150505b5f6005821161174f5781611752565b60055b90505f5b81811015611824575f611773856007611da190919063ffffffff16565b90508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156117dd57508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15611804576117eb81611a70565b6117f55750611824565b818061180090612a79565b9250505b856001866118129190612919565b61181c9190612a22565b945050611756565b50505050505050565b5f8060608373ffffffffffffffffffffffffffffffffffffffff16630dfe16816040516024016040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516118a19190612b04565b5f60405180830381855afa9150503d805f81146118d9576040519150601f19603f3d011682016040523d82523d5f602084013e6118de565b606091505b5080925081935050508180156118f5575060208151145b15611948573073ffffffffffffffffffffffffffffffffffffffff168161191b90612b52565b5f1c73ffffffffffffffffffffffffffffffffffffffff160361194357600192505050611a6b565b611952565b5f92505050611a6b565b8373ffffffffffffffffffffffffffffffffffffffff1663d21220a76040516024016040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516119c29190612b04565b5f60405180830381855afa9150503d805f81146119fa576040519150601f19603f3d011682016040523d82523d5f602084013e6119ff565b606091505b508092508193505050818015611a16575060208151145b15611a65573073ffffffffffffffffffffffffffffffffffffffff1681611a3c90612b52565b5f1c73ffffffffffffffffffffffffffffffffffffffff1603611a6457600192505050611a6b565b5b5f925050505b919050565b5f611a85826007611d4c90919063ffffffff16565b15611d1b575f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f611ae0846007611de790919063ffffffff16565b90505f6006546c086a1dbde025b824cf10680000611afe919061237a565b82600454611b0c919061237a565b84611b17919061287b565b611b2191906128e9565b90505f811115611d17578060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611d0c578060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611bb8919061237a565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611c429190612919565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611c9b856004546007611e309092919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cf891906121b7565b60405180910390a360019350505050611d38565b5f9350505050611d38565b5050505b611d33826004546007611e309092919063ffffffff16565b600190505b919050565b5f815f01805490509050919050565b5f826003015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f825f018281548110611db757611db6612bb8565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b5f826001015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b826003015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611eca5780836001015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612011565b6001836003015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080836001015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550825f0180549050836002015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550825f0182908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61205882612016565b6120628185612020565b9350612072818560208601612030565b61207b8161203e565b840191505092915050565b5f6020820190508181035f83015261209e818461204e565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6120d3826120aa565b9050919050565b6120e3816120c9565b81146120ed575f80fd5b50565b5f813590506120fe816120da565b92915050565b5f819050919050565b61211681612104565b8114612120575f80fd5b50565b5f813590506121318161210d565b92915050565b5f806040838503121561214d5761214c6120a6565b5b5f61215a858286016120f0565b925050602061216b85828601612123565b9150509250929050565b5f8115159050919050565b61218981612175565b82525050565b5f6020820190506121a25f830184612180565b92915050565b6121b181612104565b82525050565b5f6020820190506121ca5f8301846121a8565b92915050565b5f602082840312156121e5576121e46120a6565b5b5f6121f2848285016120f0565b91505092915050565b5f805f60608486031215612212576122116120a6565b5b5f61221f868287016120f0565b9350506020612230868287016120f0565b925050604061224186828701612123565b9150509250925092565b5f60ff82169050919050565b6122608161224b565b82525050565b5f6020820190506122795f830184612257565b92915050565b612288816120c9565b82525050565b5f6020820190506122a15f83018461227f565b92915050565b5f80604083850312156122bd576122bc6120a6565b5b5f6122ca858286016120f0565b92505060206122db858286016120f0565b9150509250929050565b7f4163636f756e74206973206e6f7420626c61636b6c69737465640000000000005f82015250565b5f612319601a83612020565b9150612324826122e5565b602082019050919050565b5f6020820190508181035f8301526123468161230d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61238482612104565b915061238f83612104565b92508282039050818111156123a7576123a661234d565b5b92915050565b7f4163636f756e7420697320616c726561647920626c61636b6c697374656400005f82015250565b5f6123e1601e83612020565b91506123ec826123ad565b602082019050919050565b5f6020820190508181035f83015261240e816123d5565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61246f602483612020565b915061247a82612415565b604082019050919050565b5f6020820190508181035f83015261249c81612463565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6124fd602283612020565b9150612508826124a3565b604082019050919050565b5f6020820190508181035f83015261252a816124f1565b9050919050565b7f4f776e657220697320626c61636b6c69737465640000000000000000000000005f82015250565b5f612565601483612020565b915061257082612531565b602082019050919050565b5f6020820190508181035f83015261259281612559565b9050919050565b7f5370656e64657220697320626c61636b6c6973746564000000000000000000005f82015250565b5f6125cd601683612020565b91506125d882612599565b602082019050919050565b5f6020820190508181035f8301526125fa816125c1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61265b602583612020565b915061266682612601565b604082019050919050565b5f6020820190508181035f8301526126888161264f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6126e9602383612020565b91506126f48261268f565b604082019050919050565b5f6020820190508181035f830152612716816126dd565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206d75737420626520675f8201527f726561746572207468616e207a65726f00000000000000000000000000000000602082015250565b5f612777603083612020565b91506127828261271d565b604082019050919050565b5f6020820190508181035f8301526127a48161276b565b9050919050565b7f53656e64657220697320626c61636b6c697374656400000000000000000000005f82015250565b5f6127df601583612020565b91506127ea826127ab565b602082019050919050565b5f6020820190508181035f83015261280c816127d3565b9050919050565b7f526563697069656e7420697320626c61636b6c697374656400000000000000005f82015250565b5f612847601883612020565b915061285282612813565b602082019050919050565b5f6020820190508181035f8301526128748161283b565b9050919050565b5f61288582612104565b915061289083612104565b925082820261289e81612104565b915082820484148315176128b5576128b461234d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6128f382612104565b91506128fe83612104565b92508261290e5761290d6128bc565b5b828204905092915050565b5f61292382612104565b915061292e83612104565b92508282019050808211156129465761294561234d565b5b92915050565b5f60608201905061295f5f830186612180565b61296c60208301856121a8565b61297960408301846121a8565b949350505050565b5f819050919050565b61299b61299682612104565b612981565b82525050565b5f8160601b9050919050565b5f6129b7826129a1565b9050919050565b5f6129c8826129ad565b9050919050565b6129e06129db826120c9565b6129be565b82525050565b5f6129f1828661298a565b602082019150612a0182856129cf565b601482019150612a11828461298a565b602082019150819050949350505050565b5f612a2c82612104565b9150612a3783612104565b925082612a4757612a466128bc565b5b828206905092915050565b5f612a5c82612104565b91505f8203612a6e57612a6d61234d565b5b600182039050919050565b5f612a8382612104565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ab557612ab461234d565b5b600182019050919050565b5f81519050919050565b5f81905092915050565b5f612ade82612ac0565b612ae88185612aca565b9350612af8818560208601612030565b80840191505092915050565b5f612b0f8284612ad4565b915081905092915050565b5f819050602082019050919050565b5f819050919050565b5f612b3d8251612b29565b80915050919050565b5f82821b905092915050565b5f612b5c82612ac0565b82612b6684612b1a565b9050612b7181612b32565b92506020821015612bb157612bac7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802612b46565b831692505b5050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea264697066735822122040830be31ffbb6ab36e2985f5cd53069494ea4e3bb8940c0c3fcc91c715740eb64736f6c634300081a0033

Deployed Bytecode

0x608060405234801561000f575f80fd5b50600436106100fe575f3560e01c8063715018a611610095578063dd62ed3e11610064578063dd62ed3e1461029c578063f2fde38b146102cc578063f9f92be4146102e8578063fe575a8714610304576100fe565b8063715018a6146102265780638da5cb5b1461023057806395d89b411461024e578063a9059cbb1461026c576100fe565b806322849720116100d1578063228497201461018a57806323b872dd146101a8578063313ce567146101d857806370a08231146101f6576100fe565b806306fdde0314610102578063095ea7b31461012057806318160ddd146101505780631a8952661461016e575b5f80fd5b61010a610334565b6040516101179190612086565b60405180910390f35b61013a60048036038101906101359190612137565b610371565b604051610147919061218f565b60405180910390f35b61015861038e565b60405161016591906121b7565b60405180910390f35b610188600480360381019061018391906121d0565b6103a2565b005b6101926104d0565b60405161019f91906121b7565b60405180910390f35b6101c260048036038101906101bd91906121fb565b6104d9565b6040516101cf919061218f565b60405180910390f35b6101e061058c565b6040516101ed9190612266565b60405180910390f35b610210600480360381019061020b91906121d0565b610594565b60405161021d91906121b7565b60405180910390f35b61022e6105df565b005b6102386105f2565b604051610245919061228e565b60405180910390f35b610256610619565b6040516102639190612086565b60405180910390f35b61028660048036038101906102819190612137565b610656565b604051610293919061218f565b60405180910390f35b6102b660048036038101906102b191906122a7565b610673565b6040516102c391906121b7565b60405180910390f35b6102e660048036038101906102e191906121d0565b6106f5565b005b61030260048036038101906102fd91906121d0565b610779565b005b61031e600480360381019061031991906121d0565b6108b2565b60405161032b919061218f565b60405180910390f35b60606040518060400160405280600a81526020017f4672656e6c616e64696100000000000000000000000000000000000000000000815250905090565b5f61038461037d610904565b848461090b565b6001905092915050565b5f6c086a1dbde025b824cf10680000905090565b6103aa610beb565b60035f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042a9061232f565b60405180910390fd5b60035f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81549060ff02191690558073ffffffffffffffffffffffffffffffffffffffff167f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac5f6040516104c5919061218f565b60405180910390a250565b5f600454905090565b5f6104e5848484610c72565b610581846104f1610904565b8460025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610538610904565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461057c919061237a565b61090b565b600190509392505050565b5f6012905090565b5f8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905080915050919050565b6105e7610beb565b6105f05f6113cf565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4672656e00000000000000000000000000000000000000000000000000000000815250905090565b5f610669610662610904565b8484610c72565b6001905092915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6106fd610beb565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361076d575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610764919061228e565b60405180910390fd5b610776816113cf565b50565b610781610beb565b60035f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561080b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610802906123f7565b60405180910390fd5b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac60016040516108a7919061218f565b60405180910390a250565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097090612485565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109de90612513565b60405180910390fd5b60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610a71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a689061257b565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af2906125e3565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610bd591906121b7565b60405180910390a3610be682611490565b505050565b610bf3610904565b73ffffffffffffffffffffffffffffffffffffffff16610c116105f2565b73ffffffffffffffffffffffffffffffffffffffff1614610c7057610c34610904565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610c67919061228e565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd790612671565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d45906126ff565b60405180910390fd5b5f8111610d90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d879061278d565b60405180910390fd5b60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e11906127f5565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9b9061285d565b60405180910390fd5b5f6064600183610eb4919061287b565b610ebe91906128e9565b90505f8183610ecd919061237a565b90505f610ed86105f2565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614610f1757610f168661161d565b5b8073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614610f5457610f538561161d565b5b8073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480610fb957508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8061105c575060055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561105b575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b5b15611068575f92508391505b5f831115611174578260015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546110b99190612919565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161115791906121b7565b60405180910390a38260045461116d9190612919565b6004819055505b61117e8686611687565b8360015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546111c7919061237a565b60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611270578360065f828254611268919061237a565b925050819055505b8160015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546112b99190612919565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611362578160065f82825461135a9190612919565b925050819055505b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113bf91906121b7565b60405180910390a3505050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60055f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661161a57600160055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460065f8282546115819190612919565b925050819055508073ffffffffffffffffffffffffffffffffffffffff167f37c047793ae82a9fd59504a5e5b06ac3fd4c3d4f088ec01230bb586e362081906001805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546006546040516116119392919061294c565b60405180910390a25b50565b60055f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611684576116748161182d565b156116835761168281611490565b5b5b50565b61169082611a70565b5061169a81611a70565b505f6116a66007611d3d565b90505f81436116b3610904565b6004546040516020016116c8939291906129e6565b604051602081830303815290604052805190602001205f1c6116ea9190612a22565b90505f829050611704856007611d4c90919063ffffffff16565b1561171857808061171490612a52565b9150505b61172c846007611d4c90919063ffffffff16565b1561174057808061173c90612a52565b9150505b5f6005821161174f5781611752565b60055b90505f5b81811015611824575f611773856007611da190919063ffffffff16565b90508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156117dd57508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15611804576117eb81611a70565b6117f55750611824565b818061180090612a79565b9250505b856001866118129190612919565b61181c9190612a22565b945050611756565b50505050505050565b5f8060608373ffffffffffffffffffffffffffffffffffffffff16630dfe16816040516024016040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516118a19190612b04565b5f60405180830381855afa9150503d805f81146118d9576040519150601f19603f3d011682016040523d82523d5f602084013e6118de565b606091505b5080925081935050508180156118f5575060208151145b15611948573073ffffffffffffffffffffffffffffffffffffffff168161191b90612b52565b5f1c73ffffffffffffffffffffffffffffffffffffffff160361194357600192505050611a6b565b611952565b5f92505050611a6b565b8373ffffffffffffffffffffffffffffffffffffffff1663d21220a76040516024016040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516119c29190612b04565b5f60405180830381855afa9150503d805f81146119fa576040519150601f19603f3d011682016040523d82523d5f602084013e6119ff565b606091505b508092508193505050818015611a16575060208151145b15611a65573073ffffffffffffffffffffffffffffffffffffffff1681611a3c90612b52565b5f1c73ffffffffffffffffffffffffffffffffffffffff1603611a6457600192505050611a6b565b5b5f925050505b919050565b5f611a85826007611d4c90919063ffffffff16565b15611d1b575f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f611ae0846007611de790919063ffffffff16565b90505f6006546c086a1dbde025b824cf10680000611afe919061237a565b82600454611b0c919061237a565b84611b17919061287b565b611b2191906128e9565b90505f811115611d17578060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611d0c578060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611bb8919061237a565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611c429190612919565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611c9b856004546007611e309092919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cf891906121b7565b60405180910390a360019350505050611d38565b5f9350505050611d38565b5050505b611d33826004546007611e309092919063ffffffff16565b600190505b919050565b5f815f01805490509050919050565b5f826003015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f825f018281548110611db757611db6612bb8565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b5f826001015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b826003015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611eca5780836001015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612011565b6001836003015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080836001015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550825f0180549050836002015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550825f0182908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61205882612016565b6120628185612020565b9350612072818560208601612030565b61207b8161203e565b840191505092915050565b5f6020820190508181035f83015261209e818461204e565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6120d3826120aa565b9050919050565b6120e3816120c9565b81146120ed575f80fd5b50565b5f813590506120fe816120da565b92915050565b5f819050919050565b61211681612104565b8114612120575f80fd5b50565b5f813590506121318161210d565b92915050565b5f806040838503121561214d5761214c6120a6565b5b5f61215a858286016120f0565b925050602061216b85828601612123565b9150509250929050565b5f8115159050919050565b61218981612175565b82525050565b5f6020820190506121a25f830184612180565b92915050565b6121b181612104565b82525050565b5f6020820190506121ca5f8301846121a8565b92915050565b5f602082840312156121e5576121e46120a6565b5b5f6121f2848285016120f0565b91505092915050565b5f805f60608486031215612212576122116120a6565b5b5f61221f868287016120f0565b9350506020612230868287016120f0565b925050604061224186828701612123565b9150509250925092565b5f60ff82169050919050565b6122608161224b565b82525050565b5f6020820190506122795f830184612257565b92915050565b612288816120c9565b82525050565b5f6020820190506122a15f83018461227f565b92915050565b5f80604083850312156122bd576122bc6120a6565b5b5f6122ca858286016120f0565b92505060206122db858286016120f0565b9150509250929050565b7f4163636f756e74206973206e6f7420626c61636b6c69737465640000000000005f82015250565b5f612319601a83612020565b9150612324826122e5565b602082019050919050565b5f6020820190508181035f8301526123468161230d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61238482612104565b915061238f83612104565b92508282039050818111156123a7576123a661234d565b5b92915050565b7f4163636f756e7420697320616c726561647920626c61636b6c697374656400005f82015250565b5f6123e1601e83612020565b91506123ec826123ad565b602082019050919050565b5f6020820190508181035f83015261240e816123d5565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61246f602483612020565b915061247a82612415565b604082019050919050565b5f6020820190508181035f83015261249c81612463565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6124fd602283612020565b9150612508826124a3565b604082019050919050565b5f6020820190508181035f83015261252a816124f1565b9050919050565b7f4f776e657220697320626c61636b6c69737465640000000000000000000000005f82015250565b5f612565601483612020565b915061257082612531565b602082019050919050565b5f6020820190508181035f83015261259281612559565b9050919050565b7f5370656e64657220697320626c61636b6c6973746564000000000000000000005f82015250565b5f6125cd601683612020565b91506125d882612599565b602082019050919050565b5f6020820190508181035f8301526125fa816125c1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61265b602583612020565b915061266682612601565b604082019050919050565b5f6020820190508181035f8301526126888161264f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6126e9602383612020565b91506126f48261268f565b604082019050919050565b5f6020820190508181035f830152612716816126dd565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206d75737420626520675f8201527f726561746572207468616e207a65726f00000000000000000000000000000000602082015250565b5f612777603083612020565b91506127828261271d565b604082019050919050565b5f6020820190508181035f8301526127a48161276b565b9050919050565b7f53656e64657220697320626c61636b6c697374656400000000000000000000005f82015250565b5f6127df601583612020565b91506127ea826127ab565b602082019050919050565b5f6020820190508181035f83015261280c816127d3565b9050919050565b7f526563697069656e7420697320626c61636b6c697374656400000000000000005f82015250565b5f612847601883612020565b915061285282612813565b602082019050919050565b5f6020820190508181035f8301526128748161283b565b9050919050565b5f61288582612104565b915061289083612104565b925082820261289e81612104565b915082820484148315176128b5576128b461234d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6128f382612104565b91506128fe83612104565b92508261290e5761290d6128bc565b5b828204905092915050565b5f61292382612104565b915061292e83612104565b92508282019050808211156129465761294561234d565b5b92915050565b5f60608201905061295f5f830186612180565b61296c60208301856121a8565b61297960408301846121a8565b949350505050565b5f819050919050565b61299b61299682612104565b612981565b82525050565b5f8160601b9050919050565b5f6129b7826129a1565b9050919050565b5f6129c8826129ad565b9050919050565b6129e06129db826120c9565b6129be565b82525050565b5f6129f1828661298a565b602082019150612a0182856129cf565b601482019150612a11828461298a565b602082019150819050949350505050565b5f612a2c82612104565b9150612a3783612104565b925082612a4757612a466128bc565b5b828206905092915050565b5f612a5c82612104565b91505f8203612a6e57612a6d61234d565b5b600182039050919050565b5f612a8382612104565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ab557612ab461234d565b5b600182019050919050565b5f81519050919050565b5f81905092915050565b5f612ade82612ac0565b612ae88185612aca565b9350612af8818560208601612030565b80840191505092915050565b5f612b0f8284612ad4565b915081905092915050565b5f819050602082019050919050565b5f819050919050565b5f612b3d8251612b29565b80915050919050565b5f82821b905092915050565b5f612b5c82612ac0565b82612b6684612b1a565b9050612b7181612b32565b92506020821015612bb157612bac7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802612b46565b831692505b5050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea264697066735822122040830be31ffbb6ab36e2985f5cd53069494ea4e3bb8940c0c3fcc91c715740eb64736f6c634300081a0033

Deployed Bytecode Sourcemap

6482:8901:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7782:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8657:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8059:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13737:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9100:99;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8826:266;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7968:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8167:156;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3361:103;;;:::i;:::-;;2686:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7873;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8331:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8506:143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3619:220;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13510:219;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13963:112;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7782:83;7819:13;7852:5;;;;;;;;;;;;;;;;;7845:12;;7782:83;:::o;8657:161::-;8732:4;8749:39;8758:12;:10;:12::i;:::-;8772:7;8781:6;8749:8;:39::i;:::-;8806:4;8799:11;;8657:161;;;;:::o;8059:100::-;8112:7;6772:21;8132:19;;8059:100;:::o;13737:218::-;2572:13;:11;:13::i;:::-;13811:10:::1;:19;13822:7;13811:19;;;;;;;;;;;;;;;;;;;;;;;;;13803:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;13879:10;:19;13890:7;13879:19;;;;;;;;;;;;;;;;13872:27;;;;;;;;;;;13932:7;13915:32;;;13941:5;13915:32;;;;;;:::i;:::-;;;;;;;;13737:218:::0;:::o;9100:99::-;9148:7;9175:16;;9168:23;;9100:99;:::o;8826:266::-;8924:4;8941:36;8951:6;8959:9;8970:6;8941:9;:36::i;:::-;8988:74;8997:6;9005:12;:10;:12::i;:::-;9055:6;9019:11;:19;9031:6;9019:19;;;;;;;;;;;;;;;:33;9039:12;:10;:12::i;:::-;9019:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;8988:8;:74::i;:::-;9080:4;9073:11;;8826:266;;;;;:::o;7968:83::-;8009:5;6973:2;8027:16;;7968:83;:::o;8167:156::-;8233:7;8253:15;8271:9;:18;8281:7;8271:18;;;;;;;;;;;;;;;;8253:36;;8308:7;8300:15;;;8167:156;;;:::o;3361:103::-;2572:13;:11;:13::i;:::-;3426:30:::1;3453:1;3426:18;:30::i;:::-;3361:103::o:0;2686:87::-;2732:7;2759:6;;;;;;;;;;;2752:13;;2686:87;:::o;7873:::-;7912:13;7945:7;;;;;;;;;;;;;;;;;7938:14;;7873:87;:::o;8331:167::-;8409:4;8426:42;8436:12;:10;:12::i;:::-;8450:9;8461:6;8426:9;:42::i;:::-;8486:4;8479:11;;8331:167;;;;:::o;8506:143::-;8587:7;8614:11;:18;8626:5;8614:18;;;;;;;;;;;;;;;:27;8633:7;8614:27;;;;;;;;;;;;;;;;8607:34;;8506:143;;;;:::o;3619:220::-;2572:13;:11;:13::i;:::-;3724:1:::1;3704:22;;:8;:22;;::::0;3700:93:::1;;3778:1;3750:31;;;;;;;;;;;:::i;:::-;;;;;;;;3700:93;3803:28;3822:8;3803:18;:28::i;:::-;3619:220:::0;:::o;13510:219::-;2572:13;:11;:13::i;:::-;13583:10:::1;:19;13594:7;13583:19;;;;;;;;;;;;;;;;;;;;;;;;;13582:20;13574:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;13670:4;13648:10;:19;13659:7;13648:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;13707:7;13690:31;;;13716:4;13690:31;;;;;;:::i;:::-;;;;;;;;13510:219:::0;:::o;13963:112::-;14024:4;14048:10;:19;14059:7;14048:19;;;;;;;;;;;;;;;;;;;;;;;;;14041:26;;13963:112;;;:::o;695:98::-;748:7;775:10;768:17;;695:98;:::o;9207:535::-;9318:1;9301:19;;:5;:19;;;9293:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9399:1;9380:21;;:7;:21;;;9372:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9460:10;:17;9471:5;9460:17;;;;;;;;;;;;;;;;;;;;;;;;;9459:18;9451:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;9522:10;:19;9533:7;9522:19;;;;;;;;;;;;;;;;;;;;;;;;;9521:20;9513:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;9611:6;9581:11;:18;9593:5;9581:18;;;;;;;;;;;;;;;:27;9600:7;9581:27;;;;;;;;;;;;;;;:36;;;;9649:7;9633:32;;9642:5;9633:32;;;9658:6;9633:32;;;;;;:::i;:::-;;;;;;;;9678:27;9697:7;9678:18;:27::i;:::-;9207:535;;;:::o;2851:166::-;2922:12;:10;:12::i;:::-;2911:23;;:7;:5;:7::i;:::-;:23;;;2907:103;;2985:12;:10;:12::i;:::-;2958:40;;;;;;;;;;;:::i;:::-;;;;;;;;2907:103;2851:166::o;9750:1789::-;9866:1;9848:20;;:6;:20;;;9840:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9950:1;9929:23;;:9;:23;;;9921:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10020:1;10011:6;:10;10003:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10094:10;:18;10105:6;10094:18;;;;;;;;;;;;;;;;;;;;;;;;;10093:19;10085:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;10158:10;:21;10169:9;10158:21;;;;;;;;;;;;;;;;;;;;;;;;;10157:22;10149:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;10221:17;10260:3;7019:1;10241:6;:16;;;;:::i;:::-;:22;;;;:::i;:::-;10221:42;;10302:22;10336:9;10327:6;:18;;;;:::i;:::-;10302:43;;10401:13;10417:7;:5;:7::i;:::-;10401:23;;10448:5;10438:15;;:6;:15;;;10435:46;;10457:21;10471:6;10457:13;:21::i;:::-;10435:46;10507:5;10494:18;;:9;:18;;;10491:52;;10516:24;10530:9;10516:13;:24::i;:::-;10491:52;10567:5;10557:15;;:6;:15;;;10556:41;;;;10591:5;10578:18;;:9;:18;;;10556:41;:116;;;;10602:23;:31;10626:6;10602:31;;;;;;;;;;;;;;;;;;;;;;;;;:69;;;;;10637:23;:34;10661:9;10637:34;;;;;;;;;;;;;;;;;;;;;;;;;10602:69;10556:116;10553:199;;;10701:1;10689:13;;10734:6;10717:23;;10553:199;10779:1;10767:9;:13;10764:279;;;10898:9;10871;:24;10889:4;10871:24;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;10844:9;:24;10862:4;10844:24;;;;;;;;;;;;;;;:63;;;;10952:4;10927:42;;10936:6;10927:42;;;10959:9;10927:42;;;;;;:::i;:::-;;;;;;;;11022:9;11003:16;;:28;;;;:::i;:::-;10984:16;:47;;;;10764:279;11053:42;11077:6;11085:9;11053:23;:42::i;:::-;11190:6;11170:9;:17;11180:6;11170:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;11150:9;:17;11160:6;11150:17;;;;;;;;;;;;;;;:46;;;;11210:23;:31;11234:6;11210:31;;;;;;;;;;;;;;;;;;;;;;;;;11207:87;;;11276:6;11258:15;;:24;;;;;;;:::i;:::-;;;;;;;;11207:87;11350:14;11327:9;:20;11337:9;11327:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;11304:9;:20;11314:9;11304:20;;;;;;;;;;;;;;;:60;;;;11378:23;:34;11402:9;11378:34;;;;;;;;;;;;;;;;;;;;;;;;;11375:98;;;11447:14;11429:15;;:32;;;;;;;:::i;:::-;;;;;;;;11375:98;11505:9;11488:43;;11497:6;11488:43;;;11516:14;11488:43;;;;;;:::i;:::-;;;;;;;;9829:1710;;;9750:1789;;;:::o;3999:191::-;4073:16;4092:6;;;;;;;;;;;4073:25;;4118:8;4109:6;;:17;;;;;;;;;;;;;;;;;;4173:8;4142:40;;4163:8;4142:40;;;;;;;;;;;;4062:128;3999:191;:::o;14200:314::-;14269:23;:32;14293:7;14269:32;;;;;;;;;;;;;;;;;;;;;;;;;14265:242;;14353:4;14318:23;:32;14342:7;14318:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;14390:9;:18;14400:7;14390:18;;;;;;;;;;;;;;;;14372:15;;:36;;;;;;;:::i;:::-;;;;;;;;14444:7;14428:67;;;14453:4;14459:9;:18;14469:7;14459:18;;;;;;;;;;;;;;;;14479:15;;14428:67;;;;;;;;:::i;:::-;;;;;;;;14265:242;14200:314;:::o;14522:214::-;14586:23;:32;14610:7;14586:32;;;;;;;;;;;;;;;;;;;;;;;;;14582:147;;14638:16;14646:7;14638;:16::i;:::-;14635:83;;;14675:27;14694:7;14675:18;:27::i;:::-;14635:83;14582:147;14522:214;:::o;11547:895::-;11635:34;11662:6;11635:26;:34::i;:::-;;11680:37;11707:9;11680:26;:37::i;:::-;;11730:12;11745:19;:12;:17;:19::i;:::-;11730:34;;11775:19;11882:4;11832:12;11846;:10;:12::i;:::-;11860:16;;11815:62;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;11805:73;;;;;;11797:82;;:89;;;;:::i;:::-;11775:111;;11897:13;11913:4;11897:20;;11931:27;11951:6;11931:12;:19;;:27;;;;:::i;:::-;11928:39;;;11960:7;;;;;:::i;:::-;;;;11928:39;11981:30;12001:9;11981:12;:19;;:30;;;;:::i;:::-;11978:42;;;12013:7;;;;;:::i;:::-;;;;11978:42;12031:11;7078:1;12046:5;:17;12045:39;;12079:5;12045:39;;;7078:1;12045:39;12031:53;;12095:9;12119:316;12129:3;12125:1;:7;12119:316;;;12149:14;12166:39;12193:11;12166:12;:26;;:39;;;;:::i;:::-;12149:56;;12234:6;12224:16;;:6;:16;;;;12223:43;;;;;12256:9;12246:19;;:6;:19;;;;12223:43;12220:151;;;12292:34;12319:6;12292:26;:34::i;:::-;12288:45;;12328:5;;;12288:45;12352:3;;;;;:::i;:::-;;;;12220:151;12419:4;12414:1;12400:11;:15;;;;:::i;:::-;12399:24;;;;:::i;:::-;12385:38;;12134:301;12119:316;;;11624:818;;;;;11547:895;;:::o;14744:636::-;14801:4;14818:12;14841:17;14887:7;:18;;14929:10;14906:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14887:54;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14869:72;;;;;;;;14963:7;:30;;;;;14990:2;14975:4;:11;:17;14963:30;14960:153;;;15065:4;15013:57;;15045:4;15037:13;;;:::i;:::-;15029:22;;15013:57;;;15010:73;;15079:4;15072:11;;;;;;15010:73;14960:153;;;15108:5;15101:12;;;;;;14960:153;15142:7;:18;;15184:10;15161:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15142:54;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15124:72;;;;;;;;15218:7;:30;;;;;15245:2;15230:4;:11;:17;15218:30;15215:135;;;15320:4;15268:57;;15300:4;15292:13;;;:::i;:::-;15284:22;;15268:57;;;15265:73;;15334:4;15327:11;;;;;;15265:73;15215:135;15367:5;15360:12;;;;14744:636;;;;:::o;12450:976::-;12521:4;12540:27;12560:6;12540:12;:19;;:27;;;;:::i;:::-;12537:807;;;12584:15;12602:9;:17;12612:6;12602:17;;;;;;;;;;;;;;;;12584:35;;12634:27;12664:24;12681:6;12664:12;:16;;:24;;;;:::i;:::-;12634:54;;12703:25;12800:15;;6772:21;12785:30;;;;:::i;:::-;12761:19;12742:16;;:38;;;;:::i;:::-;12731:7;:50;;;;:::i;:::-;:85;;;;:::i;:::-;12703:113;;12854:1;12834:17;:21;12831:502;;;12908:17;12879:9;:24;12897:4;12879:24;;;;;;;;;;;;;;;;:47;12876:441;;13005:17;12978:9;:24;12996:4;12978:24;;;;;;;;;;;;;;;;:44;;;;:::i;:::-;12951:9;:24;12969:4;12951:24;;;;;;;;;;;;;;;:71;;;;13085:17;13065:9;:17;13075:6;13065:17;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;13045:9;:17;13055:6;13045:17;;;;;;;;;;;;;;;:57;;;;13125:42;13142:6;13150:16;;13125:12;:16;;:42;;;;;:::i;:::-;13219:6;13195:50;;13212:4;13195:50;;;13227:17;13195:50;;;;;;:::i;:::-;;;;;;;;13275:4;13268:11;;;;;;;12876:441;13312:5;13305:12;;;;;;;12831:502;12569:775;;;12537:807;13354:42;13371:6;13379:16;;13354:12;:16;;:42;;;;;:::i;:::-;13414:4;13407:11;;12450:976;;;;:::o;5585:104::-;5639:7;5666:3;:8;;:15;;;;5659:22;;5585:104;;;:::o;5199:118::-;5268:4;5292:3;:12;;:17;5305:3;5292:17;;;;;;;;;;;;;;;;;;;;;;;;;5285:24;;5199:118;;;;:::o;5449:128::-;5527:7;5554:3;:8;;5563:5;5554:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5547:22;;5449:128;;;;:::o;5325:116::-;5391:7;5418:3;:10;;:15;5429:3;5418:15;;;;;;;;;;;;;;;;5411:22;;5325:116;;;;:::o;5697:329::-;5777:3;:12;;:17;5790:3;5777:17;;;;;;;;;;;;;;;;;;;;;;;;;5773:246;;;5829:3;5811;:10;;:15;5822:3;5811:15;;;;;;;;;;;;;;;:21;;;;5773:246;;;5885:4;5865:3;:12;;:17;5878:3;5865:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;5922:3;5904;:10;;:15;5915:3;5904:15;;;;;;;;;;;;;;;:21;;;;5959:3;:8;;:15;;;;5940:3;:11;;:16;5952:3;5940:16;;;;;;;;;;;;;;;:34;;;;5989:3;:8;;6003:3;5989:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5773:246;5697:329;;;:::o;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:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:329::-;3750:6;3799:2;3787:9;3778:7;3774:23;3770:32;3767:119;;;3805:79;;:::i;:::-;3767:119;3925:1;3950:53;3995:7;3986:6;3975:9;3971:22;3950:53;:::i;:::-;3940:63;;3896:117;3691:329;;;;:::o;4026:619::-;4103:6;4111;4119;4168:2;4156:9;4147:7;4143:23;4139:32;4136:119;;;4174:79;;:::i;:::-;4136:119;4294:1;4319:53;4364:7;4355:6;4344:9;4340:22;4319:53;:::i;:::-;4309:63;;4265:117;4421:2;4447:53;4492:7;4483:6;4472:9;4468:22;4447:53;:::i;:::-;4437:63;;4392:118;4549:2;4575:53;4620:7;4611:6;4600:9;4596:22;4575:53;:::i;:::-;4565:63;;4520:118;4026:619;;;;;:::o;4651:86::-;4686:7;4726:4;4719:5;4715:16;4704:27;;4651:86;;;:::o;4743:112::-;4826:22;4842:5;4826:22;:::i;:::-;4821:3;4814:35;4743:112;;:::o;4861:214::-;4950:4;4988:2;4977:9;4973:18;4965:26;;5001:67;5065:1;5054:9;5050:17;5041:6;5001:67;:::i;:::-;4861:214;;;;:::o;5081:118::-;5168:24;5186:5;5168:24;:::i;:::-;5163:3;5156:37;5081:118;;:::o;5205:222::-;5298:4;5336:2;5325:9;5321:18;5313:26;;5349:71;5417:1;5406:9;5402:17;5393:6;5349:71;:::i;:::-;5205:222;;;;:::o;5433:474::-;5501:6;5509;5558:2;5546:9;5537:7;5533:23;5529:32;5526:119;;;5564:79;;:::i;:::-;5526:119;5684:1;5709:53;5754:7;5745:6;5734:9;5730:22;5709:53;:::i;:::-;5699:63;;5655:117;5811:2;5837:53;5882:7;5873:6;5862:9;5858:22;5837:53;:::i;:::-;5827:63;;5782:118;5433:474;;;;;:::o;5913:176::-;6053:28;6049:1;6041:6;6037:14;6030:52;5913:176;:::o;6095:366::-;6237:3;6258:67;6322:2;6317:3;6258:67;:::i;:::-;6251:74;;6334:93;6423:3;6334:93;:::i;:::-;6452:2;6447:3;6443:12;6436:19;;6095:366;;;:::o;6467:419::-;6633:4;6671:2;6660:9;6656:18;6648:26;;6720:9;6714:4;6710:20;6706:1;6695:9;6691:17;6684:47;6748:131;6874:4;6748:131;:::i;:::-;6740:139;;6467:419;;;:::o;6892:180::-;6940:77;6937:1;6930:88;7037:4;7034:1;7027:15;7061:4;7058:1;7051:15;7078:194;7118:4;7138:20;7156:1;7138:20;:::i;:::-;7133:25;;7172:20;7190:1;7172:20;:::i;:::-;7167:25;;7216:1;7213;7209:9;7201:17;;7240:1;7234:4;7231:11;7228:37;;;7245:18;;:::i;:::-;7228:37;7078:194;;;;:::o;7278:180::-;7418:32;7414:1;7406:6;7402:14;7395:56;7278:180;:::o;7464:366::-;7606:3;7627:67;7691:2;7686:3;7627:67;:::i;:::-;7620:74;;7703:93;7792:3;7703:93;:::i;:::-;7821:2;7816:3;7812:12;7805:19;;7464:366;;;:::o;7836:419::-;8002:4;8040:2;8029:9;8025:18;8017:26;;8089:9;8083:4;8079:20;8075:1;8064:9;8060:17;8053:47;8117:131;8243:4;8117:131;:::i;:::-;8109:139;;7836:419;;;:::o;8261:223::-;8401:34;8397:1;8389:6;8385:14;8378:58;8470:6;8465:2;8457:6;8453:15;8446:31;8261:223;:::o;8490:366::-;8632:3;8653:67;8717:2;8712:3;8653:67;:::i;:::-;8646:74;;8729:93;8818:3;8729:93;:::i;:::-;8847:2;8842:3;8838:12;8831:19;;8490:366;;;:::o;8862:419::-;9028:4;9066:2;9055:9;9051:18;9043:26;;9115:9;9109:4;9105:20;9101:1;9090:9;9086:17;9079:47;9143:131;9269:4;9143:131;:::i;:::-;9135:139;;8862:419;;;:::o;9287:221::-;9427:34;9423:1;9415:6;9411:14;9404:58;9496:4;9491:2;9483:6;9479:15;9472:29;9287:221;:::o;9514:366::-;9656:3;9677:67;9741:2;9736:3;9677:67;:::i;:::-;9670:74;;9753:93;9842:3;9753:93;:::i;:::-;9871:2;9866:3;9862:12;9855:19;;9514:366;;;:::o;9886:419::-;10052:4;10090:2;10079:9;10075:18;10067:26;;10139:9;10133:4;10129:20;10125:1;10114:9;10110:17;10103:47;10167:131;10293:4;10167:131;:::i;:::-;10159:139;;9886:419;;;:::o;10311:170::-;10451:22;10447:1;10439:6;10435:14;10428:46;10311:170;:::o;10487:366::-;10629:3;10650:67;10714:2;10709:3;10650:67;:::i;:::-;10643:74;;10726:93;10815:3;10726:93;:::i;:::-;10844:2;10839:3;10835:12;10828:19;;10487:366;;;:::o;10859:419::-;11025:4;11063:2;11052:9;11048:18;11040:26;;11112:9;11106:4;11102:20;11098:1;11087:9;11083:17;11076:47;11140:131;11266:4;11140:131;:::i;:::-;11132:139;;10859:419;;;:::o;11284:172::-;11424:24;11420:1;11412:6;11408:14;11401:48;11284:172;:::o;11462:366::-;11604:3;11625:67;11689:2;11684:3;11625:67;:::i;:::-;11618:74;;11701:93;11790:3;11701:93;:::i;:::-;11819:2;11814:3;11810:12;11803:19;;11462:366;;;:::o;11834:419::-;12000:4;12038:2;12027:9;12023:18;12015:26;;12087:9;12081:4;12077:20;12073:1;12062:9;12058:17;12051:47;12115:131;12241:4;12115:131;:::i;:::-;12107:139;;11834:419;;;:::o;12259:224::-;12399:34;12395:1;12387:6;12383:14;12376:58;12468:7;12463:2;12455:6;12451:15;12444:32;12259:224;:::o;12489:366::-;12631:3;12652:67;12716:2;12711:3;12652:67;:::i;:::-;12645:74;;12728:93;12817:3;12728:93;:::i;:::-;12846:2;12841:3;12837:12;12830:19;;12489:366;;;:::o;12861:419::-;13027:4;13065:2;13054:9;13050:18;13042:26;;13114:9;13108:4;13104:20;13100:1;13089:9;13085:17;13078:47;13142:131;13268:4;13142:131;:::i;:::-;13134:139;;12861:419;;;:::o;13286:222::-;13426:34;13422:1;13414:6;13410:14;13403:58;13495:5;13490:2;13482:6;13478:15;13471:30;13286:222;:::o;13514:366::-;13656:3;13677:67;13741:2;13736:3;13677:67;:::i;:::-;13670:74;;13753:93;13842:3;13753:93;:::i;:::-;13871:2;13866:3;13862:12;13855:19;;13514:366;;;:::o;13886:419::-;14052:4;14090:2;14079:9;14075:18;14067:26;;14139:9;14133:4;14129:20;14125:1;14114:9;14110:17;14103:47;14167:131;14293:4;14167:131;:::i;:::-;14159:139;;13886:419;;;:::o;14311:235::-;14451:34;14447:1;14439:6;14435:14;14428:58;14520:18;14515:2;14507:6;14503:15;14496:43;14311:235;:::o;14552:366::-;14694:3;14715:67;14779:2;14774:3;14715:67;:::i;:::-;14708:74;;14791:93;14880:3;14791:93;:::i;:::-;14909:2;14904:3;14900:12;14893:19;;14552:366;;;:::o;14924:419::-;15090:4;15128:2;15117:9;15113:18;15105:26;;15177:9;15171:4;15167:20;15163:1;15152:9;15148:17;15141:47;15205:131;15331:4;15205:131;:::i;:::-;15197:139;;14924:419;;;:::o;15349:171::-;15489:23;15485:1;15477:6;15473:14;15466:47;15349:171;:::o;15526:366::-;15668:3;15689:67;15753:2;15748:3;15689:67;:::i;:::-;15682:74;;15765:93;15854:3;15765:93;:::i;:::-;15883:2;15878:3;15874:12;15867:19;;15526:366;;;:::o;15898:419::-;16064:4;16102:2;16091:9;16087:18;16079:26;;16151:9;16145:4;16141:20;16137:1;16126:9;16122:17;16115:47;16179:131;16305:4;16179:131;:::i;:::-;16171:139;;15898:419;;;:::o;16323:174::-;16463:26;16459:1;16451:6;16447:14;16440:50;16323:174;:::o;16503:366::-;16645:3;16666:67;16730:2;16725:3;16666:67;:::i;:::-;16659:74;;16742:93;16831:3;16742:93;:::i;:::-;16860:2;16855:3;16851:12;16844:19;;16503:366;;;:::o;16875:419::-;17041:4;17079:2;17068:9;17064:18;17056:26;;17128:9;17122:4;17118:20;17114:1;17103:9;17099:17;17092:47;17156:131;17282:4;17156:131;:::i;:::-;17148:139;;16875:419;;;:::o;17300:410::-;17340:7;17363:20;17381:1;17363:20;:::i;:::-;17358:25;;17397:20;17415:1;17397:20;:::i;:::-;17392:25;;17452:1;17449;17445:9;17474:30;17492:11;17474:30;:::i;:::-;17463:41;;17653:1;17644:7;17640:15;17637:1;17634:22;17614:1;17607:9;17587:83;17564:139;;17683:18;;:::i;:::-;17564:139;17348:362;17300:410;;;;:::o;17716:180::-;17764:77;17761:1;17754:88;17861:4;17858:1;17851:15;17885:4;17882:1;17875:15;17902:185;17942:1;17959:20;17977:1;17959:20;:::i;:::-;17954:25;;17993:20;18011:1;17993:20;:::i;:::-;17988:25;;18032:1;18022:35;;18037:18;;:::i;:::-;18022:35;18079:1;18076;18072:9;18067:14;;17902:185;;;;:::o;18093:191::-;18133:3;18152:20;18170:1;18152:20;:::i;:::-;18147:25;;18186:20;18204:1;18186:20;:::i;:::-;18181:25;;18229:1;18226;18222:9;18215:16;;18250:3;18247:1;18244:10;18241:36;;;18257:18;;:::i;:::-;18241:36;18093:191;;;;:::o;18290:430::-;18433:4;18471:2;18460:9;18456:18;18448:26;;18484:65;18546:1;18535:9;18531:17;18522:6;18484:65;:::i;:::-;18559:72;18627:2;18616:9;18612:18;18603:6;18559:72;:::i;:::-;18641;18709:2;18698:9;18694:18;18685:6;18641:72;:::i;:::-;18290:430;;;;;;:::o;18726:79::-;18765:7;18794:5;18783:16;;18726:79;;;:::o;18811:157::-;18916:45;18936:24;18954:5;18936:24;:::i;:::-;18916:45;:::i;:::-;18911:3;18904:58;18811:157;;:::o;18974:94::-;19007:8;19055:5;19051:2;19047:14;19026:35;;18974:94;;;:::o;19074:::-;19113:7;19142:20;19156:5;19142:20;:::i;:::-;19131:31;;19074:94;;;:::o;19174:100::-;19213:7;19242:26;19262:5;19242:26;:::i;:::-;19231:37;;19174:100;;;:::o;19280:157::-;19385:45;19405:24;19423:5;19405:24;:::i;:::-;19385:45;:::i;:::-;19380:3;19373:58;19280:157;;:::o;19443:538::-;19611:3;19626:75;19697:3;19688:6;19626:75;:::i;:::-;19726:2;19721:3;19717:12;19710:19;;19739:75;19810:3;19801:6;19739:75;:::i;:::-;19839:2;19834:3;19830:12;19823:19;;19852:75;19923:3;19914:6;19852:75;:::i;:::-;19952:2;19947:3;19943:12;19936:19;;19972:3;19965:10;;19443:538;;;;;;:::o;19987:176::-;20019:1;20036:20;20054:1;20036:20;:::i;:::-;20031:25;;20070:20;20088:1;20070:20;:::i;:::-;20065:25;;20109:1;20099:35;;20114:18;;:::i;:::-;20099:35;20155:1;20152;20148:9;20143:14;;19987:176;;;;:::o;20169:171::-;20208:3;20231:24;20249:5;20231:24;:::i;:::-;20222:33;;20277:4;20270:5;20267:15;20264:41;;20285:18;;:::i;:::-;20264:41;20332:1;20325:5;20321:13;20314:20;;20169:171;;;:::o;20346:233::-;20385:3;20408:24;20426:5;20408:24;:::i;:::-;20399:33;;20454:66;20447:5;20444:77;20441:103;;20524:18;;:::i;:::-;20441:103;20571:1;20564:5;20560:13;20553:20;;20346:233;;;:::o;20585:98::-;20636:6;20670:5;20664:12;20654:22;;20585:98;;;:::o;20689:147::-;20790:11;20827:3;20812:18;;20689:147;;;;:::o;20842:386::-;20946:3;20974:38;21006:5;20974:38;:::i;:::-;21028:88;21109:6;21104:3;21028:88;:::i;:::-;21021:95;;21125:65;21183:6;21178:3;21171:4;21164:5;21160:16;21125:65;:::i;:::-;21215:6;21210:3;21206:16;21199:23;;20950:278;20842:386;;;;:::o;21234:271::-;21364:3;21386:93;21475:3;21466:6;21386:93;:::i;:::-;21379:100;;21496:3;21489:10;;21234:271;;;;:::o;21511:116::-;21562:4;21585:3;21577:11;;21615:4;21610:3;21606:14;21598:22;;21511:116;;;:::o;21633:77::-;21670:7;21699:5;21688:16;;21633:77;;;:::o;21716:154::-;21759:11;21795:29;21819:3;21813:10;21795:29;:::i;:::-;21858:5;21834:29;;21771:99;21716:154;;;:::o;21876:107::-;21920:8;21970:5;21964:4;21960:16;21939:37;;21876:107;;;;:::o;21989:594::-;22073:5;22104:38;22136:5;22104:38;:::i;:::-;22167:5;22194:40;22228:5;22194:40;:::i;:::-;22182:52;;22253:35;22279:8;22253:35;:::i;:::-;22244:44;;22312:2;22304:6;22301:14;22298:278;;;22383:169;22468:66;22438:6;22434:2;22430:15;22427:1;22423:23;22383:169;:::i;:::-;22360:5;22339:227;22330:236;;22298:278;22079:504;;21989:594;;;:::o;22589:180::-;22637:77;22634:1;22627:88;22734:4;22731:1;22724:15;22758:4;22755:1;22748:15

Swarm Source

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