ETH Price: $2,507.22 (+1.56%)

Token

ChargeV2 (ChargeV2)
 

Overview

Max Total Supply

1,152,379.653391511089197512 ChargeV2

Holders

217

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
760 ChargeV2

Value
$0.00
0x0728c378e70581ef0daa4f0595a09432b3e6ec87
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:
Charge

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-04-04
*/

// SPDX-License-Identifier: NONE

//    ____ _                                  
//   / ___| |__   __ _ _ __ __ _  ___  
//  | |   | '_ \ / _` | '__/ _` |/ _ \
//  | |___| | | | (_| | | | (_| |  __/
//   \____|_|_|_|\__,_|_|  \__, |\___|
//         _ __            |___/
//  __   _|___ \
//  \ \ / / __) |
//   \ V / / __/
//    \_/ |_____|
                
pragma solidity 0.8.10;

interface IERC721 {
	function ownerOf(uint256 _user) external view returns(address);
    function balanceOf(address owner) external view returns (uint256);
    function totalSupply() external view returns (uint256);
}

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);
}

abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;
        _;
        _status = _NOT_ENTERED;
    }
}

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

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() external view virtual returns (string memory) {
        return _name;
    }

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

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external virtual override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }
        _transfer(sender, recipient, amount);
        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 _mint(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;
    }
}

contract Charge is ERC20("ChargeV2", "ChargeV2"), ReentrancyGuard {
    uint256 constant private rewardtimeframe = 86400; 
	uint256 private FirstRedeemRate = 70 ether; 
	bool private isPauseEnabled;
    address private _owner;
    IERC20 chargeContract;
    mapping(address => uint) private rateForNFT;
    mapping(address => mapping(uint => uint)) private lastUpdateMap;

	constructor() {
		_owner = _msgSender();

        // Charge V1
        chargeContract = IERC20(0x0235a4Fa8374fd49BB2f01aC953f99748756f3Bd);
        // Charged Punks
        rateForNFT[0x14b98025B6e87c0B8F297F4456797D22cbDF99a8] = 10;
	}

    function payRateFrom(address nftContract) private view returns (uint) {
        unchecked {
            return rateForNFT[nftContract] * 1e18;
        }
    }

	function aGetRewards(uint256[] calldata _tokenIds, address nftContract) nonReentrant external {
        require(isPauseEnabled == false, "Staking is on pause");
        uint256 count =  _tokenIds.length;
		uint256 ramount = 0;
		uint256 tamount = 0;
        uint256 payRate = payRateFrom(nftContract);
        uint256 time = block.timestamp;

        require(payRate > 0, "This NFT cant generate CHARGE");

        unchecked {
            for(uint256 i = 0; i < count; i++) {
                uint punk = _tokenIds[i];
                require(msg.sender == IERC721(nftContract).ownerOf(punk), "You are not the owner of this punk");
                if(lastUpdateMap[nftContract][punk] == 0) {
                    ramount = FirstRedeemRate;
                } else {
                    ramount = uint(time - lastUpdateMap[nftContract][punk]) / rewardtimeframe * payRate;
                }
                
                if(ramount > 1){
                    lastUpdateMap[nftContract][punk] = time;
                    tamount += ramount;
                }
            }
        }
		require(tamount > 1, "Your punks didn't work hard enough");	
		_mint(msg.sender, tamount);
	}

	function aGetReward(uint256 _punk, address nftContract) nonReentrant external {
        require(isPauseEnabled == false, "Staking is on pause");
		require(msg.sender == IERC721(nftContract).ownerOf(_punk), "You are not the owner of this punk");

		uint256 ramount = 0;
        uint payRate = payRateFrom(nftContract);

        require(payRate > 0, "This NFT cant generate CHARGE");

		if(lastUpdateMap[nftContract][_punk] == 0) {
		    ramount = FirstRedeemRate;
		} else {
            unchecked {
                ramount = uint(block.timestamp - lastUpdateMap[nftContract][_punk]) / rewardtimeframe * payRate;
            }
        }

		require(ramount > 1, "Your punk didn't work hard enough");
		lastUpdateMap[nftContract][_punk] = block.timestamp;
		_mint(msg.sender, ramount);
	}

    function bResetStaking(uint[] calldata _tokenIds, address nftContract) external nonReentrant {
        unchecked {
            for (uint256 index = 0; index < _tokenIds.length; index++) {
                lastUpdateMap[nftContract][_tokenIds[index]] = block.timestamp;
            }
        }
    }

	function zSetPauseStatus(bool _isPauseEnabled) external {
	    require(_owner == _msgSender(), "Ownable: caller is not the owner");
        isPauseEnabled = _isPauseEnabled;
    }
	
	function zMint(uint256 coins) external {
	    require(_owner == _msgSender(), "Ownable: caller is not the owner");
	    coins = coins * 1 ether;
        _mint(msg.sender, coins);
	}
	
	function zAirdrop(address[] calldata _addresses, uint256 coins) external {
	    require(_owner == _msgSender(), "Ownable: caller is not the owner");
        if(coins < 1 ether) {
            coins = coins * 1 ether;
        }
        unchecked {
            for (uint256 ind = 0; ind < _addresses.length; ind++) {
                _mint(_addresses[ind], coins);
            }
        }
	}

	function zAirdropToTokens(uint256[] calldata _tokenIds, uint256 coins, address nftContract) external {
	    require(_owner == _msgSender(), "Ownable: caller is not the owner");
		coins = coins * 1 ether;
        if(coins < 1 ether) {
            coins = coins * 1 ether;
        }
        unchecked {
            for (uint256 ind = 0; ind < _tokenIds.length; ind++) {
                _mint(address(IERC721(nftContract).ownerOf(_tokenIds[ind])), coins);
            }
        }
    }

    function zSetFirstRedeemRate(uint256 _FirstRedeemRate) external {
        require(_FirstRedeemRate != 0, "Cant set a redeemRate of Zero for first");
	    require(_owner == _msgSender(), "Ownable: caller is not the owner");
		FirstRedeemRate = _FirstRedeemRate * 1e18;
    }

    function zUpdateRewardTime(uint256[] calldata _tokenIds, uint256 newTime, address nftContract) external {
	    require(_owner == _msgSender(), "Ownable: caller is not the owner");
		for (uint256 index = 0; index < _tokenIds.length; index++) {
            lastUpdateMap[nftContract][_tokenIds[index]] = newTime;
	    }
	}

    function zGenerationRate(uint[] calldata amounts, address[] calldata nftContracts) external {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        require(amounts.length == nftContracts.length, "Must have equal array size");

        for (uint256 index = 0; index < amounts.length; index++) {
            rateForNFT[nftContracts[index]] = amounts[index];
	    }
    }

    function zTradeYa(uint amount) external nonReentrant {
        require(amount > 0, "Amount must be greater than zero");
        require(chargeContract.allowance(msg.sender, address(this)) >= amount, "Not enough allowance");
        require(chargeContract.transferFrom(msg.sender, address(this), amount));

        _mint(msg.sender, amount);
    }

    function lastTimestamp(uint punkId, address nftContract) external view returns (uint) {
        return lastUpdateMap[nftContract][punkId];
    }

    function zCheckReward(uint256 _punk, address nftContract) external view returns (uint)  {
        require(isPauseEnabled == false, "Staking is on pause");
		uint256 ramount = 0;
        uint payRate = payRateFrom(nftContract);

        require(payRate > 0, "This NFT cant generate CHARGE");

		if(lastUpdateMap[nftContract][_punk] == 0) {
		    ramount = FirstRedeemRate;
		} else {
            unchecked {
                ramount = uint(block.timestamp - lastUpdateMap[nftContract][_punk]) / rewardtimeframe * payRate;
            }
        }
        return ramount;
	}

    function zCheckRewards(uint256[] calldata _punk, address nftContract) external view returns (uint)  {
        uint rAmount = 0;
        for (uint256 index = 0; index < _punk.length; index++) {
            rAmount += this.zCheckReward(_punk[index], nftContract);
	    }
        return rAmount;
    }

    function viewTime() external view returns (uint) {
        return block.timestamp;
    }
}

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":"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":"uint256","name":"_punk","type":"uint256"},{"internalType":"address","name":"nftContract","type":"address"}],"name":"aGetReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"address","name":"nftContract","type":"address"}],"name":"aGetRewards","outputs":[],"stateMutability":"nonpayable","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":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"address","name":"nftContract","type":"address"}],"name":"bResetStaking","outputs":[],"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":"uint256","name":"punkId","type":"uint256"},{"internalType":"address","name":"nftContract","type":"address"}],"name":"lastTimestamp","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":"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":[{"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":[],"name":"viewTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256","name":"coins","type":"uint256"}],"name":"zAirdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256","name":"coins","type":"uint256"},{"internalType":"address","name":"nftContract","type":"address"}],"name":"zAirdropToTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_punk","type":"uint256"},{"internalType":"address","name":"nftContract","type":"address"}],"name":"zCheckReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_punk","type":"uint256[]"},{"internalType":"address","name":"nftContract","type":"address"}],"name":"zCheckRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address[]","name":"nftContracts","type":"address[]"}],"name":"zGenerationRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"coins","type":"uint256"}],"name":"zMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_FirstRedeemRate","type":"uint256"}],"name":"zSetFirstRedeemRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isPauseEnabled","type":"bool"}],"name":"zSetPauseStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"zTradeYa","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256","name":"newTime","type":"uint256"},{"internalType":"address","name":"nftContract","type":"address"}],"name":"zUpdateRewardTime","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526803cb71f51fc55800006006553480156200001e57600080fd5b5060408051808201825260088082526721b430b933b2ab1960c11b602080840182815285518087019096529285528401528151919291620000629160039162000106565b5080516200007890600490602084019062000106565b505060016005555060078054610100600160a81b031916610100330217905560088054730235a4fa8374fd49bb2f01ac953f99748756f3bd6001600160a01b03199091161790557314b98025b6e87c0b8f297f4456797d22cbdf99a86000526009602052600a7fe19dd43a89cb4ff37232b4653b11db7f90a9e46ceb8cbb7a37b0350e6f41618055620001e9565b8280546200011490620001ac565b90600052602060002090601f01602090048101928262000138576000855562000183565b82601f106200015357805160ff191683800117855562000183565b8280016001018555821562000183579182015b828111156200018357825182559160200191906001019062000166565b506200019192915062000195565b5090565b5b8082111562000191576000815560010162000196565b600181811c90821680620001c157607f821691505b60208210811415620001e357634e487b7160e01b600052602260045260246000fd5b50919050565b611b2980620001f96000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c806395d89b41116100c3578063dd62ed3e1161007c578063dd62ed3e146102c9578063e270ff3e14610302578063e725d73714610315578063ef0d410714610348578063f86f2c591461035b578063f9026b861461036e57600080fd5b806395d89b411461026f578063a9059cbb14610277578063ac1a161c1461028a578063b11cd64a1461029d578063b920a669146102a3578063d7e66f02146102b657600080fd5b806323b872dd1161011557806323b872dd146101eb57806327a85293146101fe578063313ce567146102115780633c3b0dc71461022057806370a08231146102335780638bd79d281461025c57600080fd5b806306fdde031461015d578063095ea7b31461017b5780630d2a2c7a1461019e5780631102b7da146101b357806318160ddd146101c65780631b635236146101d8575b600080fd5b610165610381565b604051610172919061157e565b60405180910390f35b61018e6101893660046115e8565b610413565b6040519015158152602001610172565b6101b16101ac366004611660565b610429565b005b6101b16101c13660046116b7565b6106a7565b6002545b604051908152602001610172565b6101b16101e6366004611731565b6107a8565b61018e6101f9366004611755565b6107eb565b6101b161020c366004611796565b61089c565b60405160128152602001610172565b6101ca61022e3660046117af565b610a5e565b6101ca6102413660046117df565b6001600160a01b031660009081526020819052604090205490565b6101b161026a3660046117fc565b610b30565b610165610bce565b61018e6102853660046115e8565b610bdd565b6101b16102983660046117af565b610bea565b426101ca565b6101b16102b1366004611660565b610e07565b6101ca6102c4366004611660565b610e88565b6101ca6102d7366004611848565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101b1610310366004611796565b610f4c565b6101ca6103233660046117af565b6001600160a01b03166000908152600a60209081526040808320938352929052205490565b6101b1610356366004611796565b610f9d565b6101b1610369366004611876565b611042565b6101b161037c366004611876565b6110d5565b606060038054610390906118d5565b80601f01602080910402602001604051908101604052809291908181526020018280546103bc906118d5565b80156104095780601f106103de57610100808354040283529160200191610409565b820191906000526020600020905b8154815290600101906020018083116103ec57829003601f168201915b5050505050905090565b60006104203384846111e1565b50600192915050565b600260055414156104555760405162461bcd60e51b815260040161044c90611910565b60405180910390fd5b600260055560075460ff161561047d5760405162461bcd60e51b815260040161044c90611947565b81600080806104ab856001600160a01b0316600090815260096020526040902054670de0b6b3a76400000290565b905042816104cb5760405162461bcd60e51b815260040161044c90611974565b60005b858110156106325760008989838181106104ea576104ea6119ab565b905060200201359050876001600160a01b0316636352211e826040518263ffffffff1660e01b815260040161052191815260200190565b602060405180830381865afa15801561053e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056291906119c1565b6001600160a01b0316336001600160a01b0316146105925760405162461bcd60e51b815260040161044c906119de565b6001600160a01b0388166000908152600a602090815260408083208484529091529020546105c45760065495506105f5565b6001600160a01b0388166000908152600a602090815260408083208484529091529020546201518090840304840295505b6001861115610629576001600160a01b0388166000908152600a602090815260408083208484529091529020839055938501935b506001016104ce565b506001831161068e5760405162461bcd60e51b815260206004820152602260248201527f596f75722070756e6b73206469646e277420776f726b206861726420656e6f756044820152610ced60f31b606482015260840161044c565b61069833846112d0565b50506001600555505050505050565b6007546001600160a01b036101009091041633146106d75760405162461bcd60e51b815260040161044c90611a20565b8281146107265760405162461bcd60e51b815260206004820152601a60248201527f4d757374206861766520657175616c2061727261792073697a65000000000000604482015260640161044c565b60005b838110156107a157848482818110610743576107436119ab565b9050602002013560096000858585818110610760576107606119ab565b905060200201602081019061077591906117df565b6001600160a01b031681526020810191909152604001600020558061079981611a6b565b915050610729565b5050505050565b6007546001600160a01b036101009091041633146107d85760405162461bcd60e51b815260040161044c90611a20565b6007805460ff1916911515919091179055565b6001600160a01b0383166000908152600160209081526040808320338452909152812054600019811461088657828110156108795760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161044c565b61088685338584036111e1565b6108918585856113af565b506001949350505050565b600260055414156108bf5760405162461bcd60e51b815260040161044c90611910565b6002600555806109115760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f604482015260640161044c565b600854604051636eb1769f60e11b815233600482015230602482015282916001600160a01b03169063dd62ed3e90604401602060405180830381865afa15801561095f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109839190611a86565b10156109c85760405162461bcd60e51b81526020600482015260146024820152734e6f7420656e6f75676820616c6c6f77616e636560601b604482015260640161044c565b6008546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015610a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a439190611a9f565b610a4c57600080fd5b610a5633826112d0565b506001600555565b60075460009060ff1615610a845760405162461bcd60e51b815260040161044c90611947565b6001600160a01b038216600090815260096020526040812054670de0b6b3a76400000280610ac45760405162461bcd60e51b815260040161044c90611974565b6001600160a01b0384166000908152600a60209081526040808320888452909152902054610af6576006549150610b28565b6001600160a01b0384166000908152600a60209081526040808320888452909152902054819062015180904203040291505b509392505050565b6007546001600160a01b03610100909104163314610b605760405162461bcd60e51b815260040161044c90611a20565b670de0b6b3a7640000811015610b8557610b8281670de0b6b3a7640000611abc565b90505b60005b82811015610bc857610bc0848483818110610ba557610ba56119ab565b9050602002016020810190610bba91906117df565b836112d0565b600101610b88565b50505050565b606060048054610390906118d5565b60006104203384846113af565b60026005541415610c0d5760405162461bcd60e51b815260040161044c90611910565b600260055560075460ff1615610c355760405162461bcd60e51b815260040161044c90611947565b6040516331a9108f60e11b8152600481018390526001600160a01b03821690636352211e90602401602060405180830381865afa158015610c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9e91906119c1565b6001600160a01b0316336001600160a01b031614610cce5760405162461bcd60e51b815260040161044c906119de565b6001600160a01b038116600090815260096020526040812054670de0b6b3a76400000280610d0e5760405162461bcd60e51b815260040161044c90611974565b6001600160a01b0383166000908152600a60209081526040808320878452909152902054610d40576006549150610d72565b6001600160a01b0383166000908152600a60209081526040808320878452909152902054819062015180904203040291505b60018211610dcc5760405162461bcd60e51b815260206004820152602160248201527f596f75722070756e6b206469646e277420776f726b206861726420656e6f75676044820152600d60fb1b606482015260840161044c565b6001600160a01b0383166000908152600a602090815260408083208784529091529020429055610dfc33836112d0565b505060016005555050565b60026005541415610e2a5760405162461bcd60e51b815260040161044c90611910565b600260055560005b82811015610dfc576001600160a01b0382166000908152600a602052604081204291868685818110610e6657610e666119ab565b6020908102929092013583525081019190915260400160002055600101610e32565b600080805b84811015610f435730633c3b0dc7878784818110610ead57610ead6119ab565b90506020020135866040518363ffffffff1660e01b8152600401610ee49291909182526001600160a01b0316602082015260400190565b602060405180830381865afa158015610f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f259190611a86565b610f2f9083611adb565b915080610f3b81611a6b565b915050610e8d565b50949350505050565b6007546001600160a01b03610100909104163314610f7c5760405162461bcd60e51b815260040161044c90611a20565b610f8e81670de0b6b3a7640000611abc565b9050610f9a33826112d0565b50565b80610ffa5760405162461bcd60e51b815260206004820152602760248201527f43616e742073657420612072656465656d52617465206f66205a65726f20666f6044820152661c88199a5c9cdd60ca1b606482015260840161044c565b6007546001600160a01b0361010090910416331461102a5760405162461bcd60e51b815260040161044c90611a20565b61103c81670de0b6b3a7640000611abc565b60065550565b6007546001600160a01b036101009091041633146110725760405162461bcd60e51b815260040161044c90611a20565b60005b838110156107a1576001600160a01b0382166000908152600a6020526040812084918787858181106110a9576110a96119ab565b9050602002013581526020019081526020016000208190555080806110cd90611a6b565b915050611075565b6007546001600160a01b036101009091041633146111055760405162461bcd60e51b815260040161044c90611a20565b61111782670de0b6b3a7640000611abc565b9150670de0b6b3a764000082101561113e5761113b82670de0b6b3a7640000611abc565b91505b60005b838110156107a1576111d9826001600160a01b0316636352211e87878581811061116d5761116d6119ab565b905060200201356040518263ffffffff1660e01b815260040161119291815260200190565b602060405180830381865afa1580156111af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d391906119c1565b846112d0565b600101611141565b6001600160a01b0383166112435760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161044c565b6001600160a01b0382166112a45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161044c565b6001600160a01b0392831660009081526001602090815260408083209490951682529290925291902055565b6001600160a01b0382166113265760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161044c565b80600260008282546113389190611adb565b90915550506001600160a01b03821660009081526020819052604081208054839290611365908490611adb565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0383166114135760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161044c565b6001600160a01b0382166114755760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161044c565b6001600160a01b038316600090815260208190526040902054818110156114ed5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161044c565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611524908490611adb565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161157091815260200190565b60405180910390a350505050565b600060208083528351808285015260005b818110156115ab5785810183015185820160400152820161158f565b818111156115bd576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610f9a57600080fd5b600080604083850312156115fb57600080fd5b8235611606816115d3565b946020939093013593505050565b60008083601f84011261162657600080fd5b50813567ffffffffffffffff81111561163e57600080fd5b6020830191508360208260051b850101111561165957600080fd5b9250929050565b60008060006040848603121561167557600080fd5b833567ffffffffffffffff81111561168c57600080fd5b61169886828701611614565b90945092505060208401356116ac816115d3565b809150509250925092565b600080600080604085870312156116cd57600080fd5b843567ffffffffffffffff808211156116e557600080fd5b6116f188838901611614565b9096509450602087013591508082111561170a57600080fd5b5061171787828801611614565b95989497509550505050565b8015158114610f9a57600080fd5b60006020828403121561174357600080fd5b813561174e81611723565b9392505050565b60008060006060848603121561176a57600080fd5b8335611775816115d3565b92506020840135611785816115d3565b929592945050506040919091013590565b6000602082840312156117a857600080fd5b5035919050565b600080604083850312156117c257600080fd5b8235915060208301356117d4816115d3565b809150509250929050565b6000602082840312156117f157600080fd5b813561174e816115d3565b60008060006040848603121561181157600080fd5b833567ffffffffffffffff81111561182857600080fd5b61183486828701611614565b909790965060209590950135949350505050565b6000806040838503121561185b57600080fd5b8235611866816115d3565b915060208301356117d4816115d3565b6000806000806060858703121561188c57600080fd5b843567ffffffffffffffff8111156118a357600080fd5b6118af87828801611614565b9095509350506020850135915060408501356118ca816115d3565b939692955090935050565b600181811c908216806118e957607f821691505b6020821081141561190a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601390820152725374616b696e67206973206f6e20706175736560681b604082015260600190565b6020808252601d908201527f54686973204e46542063616e742067656e657261746520434841524745000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156119d357600080fd5b815161174e816115d3565b60208082526022908201527f596f7520617265206e6f7420746865206f776e6572206f6620746869732070756040820152616e6b60f01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000600019821415611a7f57611a7f611a55565b5060010190565b600060208284031215611a9857600080fd5b5051919050565b600060208284031215611ab157600080fd5b815161174e81611723565b6000816000190483118215151615611ad657611ad6611a55565b500290565b60008219821115611aee57611aee611a55565b50019056fea264697066735822122087870c0f55e4c43c1757221ff584e1735cef51dea6b9d620cd9ce2c21a8e22cf64736f6c634300080a0033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101585760003560e01c806395d89b41116100c3578063dd62ed3e1161007c578063dd62ed3e146102c9578063e270ff3e14610302578063e725d73714610315578063ef0d410714610348578063f86f2c591461035b578063f9026b861461036e57600080fd5b806395d89b411461026f578063a9059cbb14610277578063ac1a161c1461028a578063b11cd64a1461029d578063b920a669146102a3578063d7e66f02146102b657600080fd5b806323b872dd1161011557806323b872dd146101eb57806327a85293146101fe578063313ce567146102115780633c3b0dc71461022057806370a08231146102335780638bd79d281461025c57600080fd5b806306fdde031461015d578063095ea7b31461017b5780630d2a2c7a1461019e5780631102b7da146101b357806318160ddd146101c65780631b635236146101d8575b600080fd5b610165610381565b604051610172919061157e565b60405180910390f35b61018e6101893660046115e8565b610413565b6040519015158152602001610172565b6101b16101ac366004611660565b610429565b005b6101b16101c13660046116b7565b6106a7565b6002545b604051908152602001610172565b6101b16101e6366004611731565b6107a8565b61018e6101f9366004611755565b6107eb565b6101b161020c366004611796565b61089c565b60405160128152602001610172565b6101ca61022e3660046117af565b610a5e565b6101ca6102413660046117df565b6001600160a01b031660009081526020819052604090205490565b6101b161026a3660046117fc565b610b30565b610165610bce565b61018e6102853660046115e8565b610bdd565b6101b16102983660046117af565b610bea565b426101ca565b6101b16102b1366004611660565b610e07565b6101ca6102c4366004611660565b610e88565b6101ca6102d7366004611848565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101b1610310366004611796565b610f4c565b6101ca6103233660046117af565b6001600160a01b03166000908152600a60209081526040808320938352929052205490565b6101b1610356366004611796565b610f9d565b6101b1610369366004611876565b611042565b6101b161037c366004611876565b6110d5565b606060038054610390906118d5565b80601f01602080910402602001604051908101604052809291908181526020018280546103bc906118d5565b80156104095780601f106103de57610100808354040283529160200191610409565b820191906000526020600020905b8154815290600101906020018083116103ec57829003601f168201915b5050505050905090565b60006104203384846111e1565b50600192915050565b600260055414156104555760405162461bcd60e51b815260040161044c90611910565b60405180910390fd5b600260055560075460ff161561047d5760405162461bcd60e51b815260040161044c90611947565b81600080806104ab856001600160a01b0316600090815260096020526040902054670de0b6b3a76400000290565b905042816104cb5760405162461bcd60e51b815260040161044c90611974565b60005b858110156106325760008989838181106104ea576104ea6119ab565b905060200201359050876001600160a01b0316636352211e826040518263ffffffff1660e01b815260040161052191815260200190565b602060405180830381865afa15801561053e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056291906119c1565b6001600160a01b0316336001600160a01b0316146105925760405162461bcd60e51b815260040161044c906119de565b6001600160a01b0388166000908152600a602090815260408083208484529091529020546105c45760065495506105f5565b6001600160a01b0388166000908152600a602090815260408083208484529091529020546201518090840304840295505b6001861115610629576001600160a01b0388166000908152600a602090815260408083208484529091529020839055938501935b506001016104ce565b506001831161068e5760405162461bcd60e51b815260206004820152602260248201527f596f75722070756e6b73206469646e277420776f726b206861726420656e6f756044820152610ced60f31b606482015260840161044c565b61069833846112d0565b50506001600555505050505050565b6007546001600160a01b036101009091041633146106d75760405162461bcd60e51b815260040161044c90611a20565b8281146107265760405162461bcd60e51b815260206004820152601a60248201527f4d757374206861766520657175616c2061727261792073697a65000000000000604482015260640161044c565b60005b838110156107a157848482818110610743576107436119ab565b9050602002013560096000858585818110610760576107606119ab565b905060200201602081019061077591906117df565b6001600160a01b031681526020810191909152604001600020558061079981611a6b565b915050610729565b5050505050565b6007546001600160a01b036101009091041633146107d85760405162461bcd60e51b815260040161044c90611a20565b6007805460ff1916911515919091179055565b6001600160a01b0383166000908152600160209081526040808320338452909152812054600019811461088657828110156108795760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161044c565b61088685338584036111e1565b6108918585856113af565b506001949350505050565b600260055414156108bf5760405162461bcd60e51b815260040161044c90611910565b6002600555806109115760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f604482015260640161044c565b600854604051636eb1769f60e11b815233600482015230602482015282916001600160a01b03169063dd62ed3e90604401602060405180830381865afa15801561095f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109839190611a86565b10156109c85760405162461bcd60e51b81526020600482015260146024820152734e6f7420656e6f75676820616c6c6f77616e636560601b604482015260640161044c565b6008546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015610a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a439190611a9f565b610a4c57600080fd5b610a5633826112d0565b506001600555565b60075460009060ff1615610a845760405162461bcd60e51b815260040161044c90611947565b6001600160a01b038216600090815260096020526040812054670de0b6b3a76400000280610ac45760405162461bcd60e51b815260040161044c90611974565b6001600160a01b0384166000908152600a60209081526040808320888452909152902054610af6576006549150610b28565b6001600160a01b0384166000908152600a60209081526040808320888452909152902054819062015180904203040291505b509392505050565b6007546001600160a01b03610100909104163314610b605760405162461bcd60e51b815260040161044c90611a20565b670de0b6b3a7640000811015610b8557610b8281670de0b6b3a7640000611abc565b90505b60005b82811015610bc857610bc0848483818110610ba557610ba56119ab565b9050602002016020810190610bba91906117df565b836112d0565b600101610b88565b50505050565b606060048054610390906118d5565b60006104203384846113af565b60026005541415610c0d5760405162461bcd60e51b815260040161044c90611910565b600260055560075460ff1615610c355760405162461bcd60e51b815260040161044c90611947565b6040516331a9108f60e11b8152600481018390526001600160a01b03821690636352211e90602401602060405180830381865afa158015610c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9e91906119c1565b6001600160a01b0316336001600160a01b031614610cce5760405162461bcd60e51b815260040161044c906119de565b6001600160a01b038116600090815260096020526040812054670de0b6b3a76400000280610d0e5760405162461bcd60e51b815260040161044c90611974565b6001600160a01b0383166000908152600a60209081526040808320878452909152902054610d40576006549150610d72565b6001600160a01b0383166000908152600a60209081526040808320878452909152902054819062015180904203040291505b60018211610dcc5760405162461bcd60e51b815260206004820152602160248201527f596f75722070756e6b206469646e277420776f726b206861726420656e6f75676044820152600d60fb1b606482015260840161044c565b6001600160a01b0383166000908152600a602090815260408083208784529091529020429055610dfc33836112d0565b505060016005555050565b60026005541415610e2a5760405162461bcd60e51b815260040161044c90611910565b600260055560005b82811015610dfc576001600160a01b0382166000908152600a602052604081204291868685818110610e6657610e666119ab565b6020908102929092013583525081019190915260400160002055600101610e32565b600080805b84811015610f435730633c3b0dc7878784818110610ead57610ead6119ab565b90506020020135866040518363ffffffff1660e01b8152600401610ee49291909182526001600160a01b0316602082015260400190565b602060405180830381865afa158015610f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f259190611a86565b610f2f9083611adb565b915080610f3b81611a6b565b915050610e8d565b50949350505050565b6007546001600160a01b03610100909104163314610f7c5760405162461bcd60e51b815260040161044c90611a20565b610f8e81670de0b6b3a7640000611abc565b9050610f9a33826112d0565b50565b80610ffa5760405162461bcd60e51b815260206004820152602760248201527f43616e742073657420612072656465656d52617465206f66205a65726f20666f6044820152661c88199a5c9cdd60ca1b606482015260840161044c565b6007546001600160a01b0361010090910416331461102a5760405162461bcd60e51b815260040161044c90611a20565b61103c81670de0b6b3a7640000611abc565b60065550565b6007546001600160a01b036101009091041633146110725760405162461bcd60e51b815260040161044c90611a20565b60005b838110156107a1576001600160a01b0382166000908152600a6020526040812084918787858181106110a9576110a96119ab565b9050602002013581526020019081526020016000208190555080806110cd90611a6b565b915050611075565b6007546001600160a01b036101009091041633146111055760405162461bcd60e51b815260040161044c90611a20565b61111782670de0b6b3a7640000611abc565b9150670de0b6b3a764000082101561113e5761113b82670de0b6b3a7640000611abc565b91505b60005b838110156107a1576111d9826001600160a01b0316636352211e87878581811061116d5761116d6119ab565b905060200201356040518263ffffffff1660e01b815260040161119291815260200190565b602060405180830381865afa1580156111af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d391906119c1565b846112d0565b600101611141565b6001600160a01b0383166112435760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161044c565b6001600160a01b0382166112a45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161044c565b6001600160a01b0392831660009081526001602090815260408083209490951682529290925291902055565b6001600160a01b0382166113265760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161044c565b80600260008282546113389190611adb565b90915550506001600160a01b03821660009081526020819052604081208054839290611365908490611adb565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0383166114135760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161044c565b6001600160a01b0382166114755760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161044c565b6001600160a01b038316600090815260208190526040902054818110156114ed5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161044c565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611524908490611adb565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161157091815260200190565b60405180910390a350505050565b600060208083528351808285015260005b818110156115ab5785810183015185820160400152820161158f565b818111156115bd576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610f9a57600080fd5b600080604083850312156115fb57600080fd5b8235611606816115d3565b946020939093013593505050565b60008083601f84011261162657600080fd5b50813567ffffffffffffffff81111561163e57600080fd5b6020830191508360208260051b850101111561165957600080fd5b9250929050565b60008060006040848603121561167557600080fd5b833567ffffffffffffffff81111561168c57600080fd5b61169886828701611614565b90945092505060208401356116ac816115d3565b809150509250925092565b600080600080604085870312156116cd57600080fd5b843567ffffffffffffffff808211156116e557600080fd5b6116f188838901611614565b9096509450602087013591508082111561170a57600080fd5b5061171787828801611614565b95989497509550505050565b8015158114610f9a57600080fd5b60006020828403121561174357600080fd5b813561174e81611723565b9392505050565b60008060006060848603121561176a57600080fd5b8335611775816115d3565b92506020840135611785816115d3565b929592945050506040919091013590565b6000602082840312156117a857600080fd5b5035919050565b600080604083850312156117c257600080fd5b8235915060208301356117d4816115d3565b809150509250929050565b6000602082840312156117f157600080fd5b813561174e816115d3565b60008060006040848603121561181157600080fd5b833567ffffffffffffffff81111561182857600080fd5b61183486828701611614565b909790965060209590950135949350505050565b6000806040838503121561185b57600080fd5b8235611866816115d3565b915060208301356117d4816115d3565b6000806000806060858703121561188c57600080fd5b843567ffffffffffffffff8111156118a357600080fd5b6118af87828801611614565b9095509350506020850135915060408501356118ca816115d3565b939692955090935050565b600181811c908216806118e957607f821691505b6020821081141561190a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601390820152725374616b696e67206973206f6e20706175736560681b604082015260600190565b6020808252601d908201527f54686973204e46542063616e742067656e657261746520434841524745000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156119d357600080fd5b815161174e816115d3565b60208082526022908201527f596f7520617265206e6f7420746865206f776e6572206f6620746869732070756040820152616e6b60f01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000600019821415611a7f57611a7f611a55565b5060010190565b600060208284031215611a9857600080fd5b5051919050565b600060208284031215611ab157600080fd5b815161174e81611723565b6000816000190483118215151615611ad657611ad6611a55565b500290565b60008219821115611aee57611aee611a55565b50019056fea264697066735822122087870c0f55e4c43c1757221ff584e1735cef51dea6b9d620cd9ce2c21a8e22cf64736f6c634300080a0033

Deployed Bytecode Sourcemap

5202:6954:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2306:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3207:171;;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;3207:171:0;1072:187:1;6003:1202:0;;;;;;:::i;:::-;;:::i;:::-;;10230:406;;;;;;:::i;:::-;;:::i;2606:110::-;2696:12;;2606:110;;;3137:25:1;;;3125:2;3110:18;2606:110:0;2991:177:1;8330:182:0;;;;;;:::i;:::-;;:::i;3386:571::-;;;;;;:::i;:::-;;:::i;10644:352::-;;;;;;:::i;:::-;;:::i;2512:86::-;;;2588:2;4330:36:1;;4318:2;4303:18;2512:86:0;4188:184:1;11158:585:0;;;;;;:::i;:::-;;:::i;2724:129::-;;;;;;:::i;:::-;-1:-1:-1;;;;;2827:18:0;2800:7;2827:18;;;;;;;;;;;;2724:129;8709:397;;;;;;:::i;:::-;;:::i;2407:97::-;;;:::i;2861:177::-;;;;;;:::i;:::-;;:::i;7210:804::-;;;;;;:::i;:::-;;:::i;12063:90::-;12130:15;12063:90;;8022:303;;;;;;:::i;:::-;;:::i;11751:304::-;;;;;;:::i;:::-;;:::i;3046:153::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3164:18:0;;;3137:7;3164:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3046:153;8518:185;;;;;;:::i;:::-;;:::i;11004:146::-;;;;;;:::i;:::-;-1:-1:-1;;;;;11108:26:0;11084:4;11108:26;;;:13;:26;;;;;;;;:34;;;;;;;;;11004:146;9612:277;;;;;;:::i;:::-;;:::i;9897:325::-;;;;;;:::i;:::-;;:::i;9111:493::-;;;;;;:::i;:::-;;:::i;2306:93::-;2353:13;2386:5;2379:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2306:93;:::o;3207:171::-;3292:4;3309:39;1895:10;3332:7;3341:6;3309:8;:39::i;:::-;-1:-1:-1;3366:4:0;3207:171;;;;:::o;6003:1202::-;1425:1;1573:7;;:19;;1565:63;;;;-1:-1:-1;;;1565:63:0;;;;;;;:::i;:::-;;;;;;;;;1425:1;1704:7;:18;6116:14:::1;::::0;::::1;;:23;6108:55;;;;-1:-1:-1::0;;;6108:55:0::1;;;;;;;:::i;:::-;6191:9:::0;6174:13:::1;::::0;;6284:24:::1;6296:11:::0;-1:-1:-1;;;;;5949:23:0;5900:4;5949:23;;;:10;:23;;;;;;5975:4;5949:30;;5836:162;6284:24:::1;6266:42:::0;-1:-1:-1;6334:15:0::1;6370:11:::0;6362:53:::1;;;;-1:-1:-1::0;;;6362:53:0::1;;;;;;;:::i;:::-;6457:9;6453:642;6476:5;6472:1;:9;6453:642;;;6507:9;6519;;6529:1;6519:12;;;;;;;:::i;:::-;;;;;;;6507:24;;6580:11;-1:-1:-1::0;;;;;6572:28:0::1;;6601:4;6572:34;;;;;;;;;;;;;3137:25:1::0;;3125:2;3110:18;;2991:177;6572:34:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6558:48:0::1;:10;-1:-1:-1::0;;;;;6558:48:0::1;;6550:95;;;;-1:-1:-1::0;;;6550:95:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6667:26:0;::::1;;::::0;;;:13:::1;:26;::::0;;;;;;;:32;;;;;;;;;6664:242:::1;;6739:15;;6729:25;;6664:242;;;-1:-1:-1::0;;;;;6825:26:0;::::1;;::::0;;;:13:::1;:26;::::0;;;;;;;:32;;;;;;;;;5318:5:::1;6818:39:::0;;::::1;6813:63;:73:::0;::::1;::::0;-1:-1:-1;6664:242:0::1;6955:1;6945:7;:11;6942:138;;;-1:-1:-1::0;;;;;6980:26:0;::::1;;::::0;;;:13:::1;:26;::::0;;;;;;;:32;;;;;;;;:39;;;7042:18;;::::1;::::0;6942:138:::1;-1:-1:-1::0;6483:3:0::1;;6453:642;;;;7128:1;7118:7;:11;7110:58;;;::::0;-1:-1:-1;;;7110:58:0;;9073:2:1;7110:58:0::1;::::0;::::1;9055:21:1::0;9112:2;9092:18;;;9085:30;9151:34;9131:18;;;9124:62;-1:-1:-1;;;9202:18:1;;;9195:32;9244:19;;7110:58:0::1;8871:398:1::0;7110:58:0::1;7174:26;7180:10;7192:7;7174:5;:26::i;:::-;-1:-1:-1::0;;1381:1:0;1745:7;:22;-1:-1:-1;;;;;;6003:1202:0:o;10230:406::-;10341:6;;-1:-1:-1;;;;;10341:6:0;;;;;1895:10;10341:22;10333:67;;;;-1:-1:-1;;;10333:67:0;;;;;;;:::i;:::-;10419:37;;;10411:76;;;;-1:-1:-1;;;10411:76:0;;9837:2:1;10411:76:0;;;9819:21:1;9876:2;9856:18;;;9849:30;9915:28;9895:18;;;9888:56;9961:18;;10411:76:0;9635:350:1;10411:76:0;10505:13;10500:129;10524:22;;;10500:129;;;10606:7;;10614:5;10606:14;;;;;;;:::i;:::-;;;;;;;10572:10;:31;10583:12;;10596:5;10583:19;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10572:31:0;;;;;;;;;;;;-1:-1:-1;10572:31:0;:48;10548:7;;;;:::i;:::-;;;;10500:129;;;;10230:406;;;;:::o;8330:182::-;8402:6;;-1:-1:-1;;;;;8402:6:0;;;;;1895:10;8402:22;8394:67;;;;-1:-1:-1;;;8394:67:0;;;;;;;:::i;:::-;8472:14;:32;;-1:-1:-1;;8472:32:0;;;;;;;;;;8330:182::o;3386:571::-;-1:-1:-1;;;;;3572:19:0;;3528:4;3572:19;;;:11;:19;;;;;;;;1895:10;3572:33;;;;;;;;-1:-1:-1;;3620:37:0;;3616:265;;3702:6;3682:16;:26;;3674:79;;;;-1:-1:-1;;;3674:79:0;;10464:2:1;3674:79:0;;;10446:21:1;10503:2;10483:18;;;10476:30;10542:34;10522:18;;;10515:62;-1:-1:-1;;;10593:18:1;;;10586:38;10641:19;;3674:79:0;10262:404:1;3674:79:0;3797:57;3806:6;1895:10;3847:6;3828:16;:25;3797:8;:57::i;:::-;3891:36;3901:6;3909:9;3920:6;3891:9;:36::i;:::-;-1:-1:-1;3945:4:0;;3386:571;-1:-1:-1;;;;3386:571:0:o;10644:352::-;1425:1;1573:7;;:19;;1565:63;;;;-1:-1:-1;;;1565:63:0;;;;;;;:::i;:::-;1425:1;1704:7;:18;10716:10;10708:55:::1;;;::::0;-1:-1:-1;;;10708:55:0;;10873:2:1;10708:55:0::1;::::0;::::1;10855:21:1::0;;;10892:18;;;10885:30;10951:34;10931:18;;;10924:62;11003:18;;10708:55:0::1;10671:356:1::0;10708:55:0::1;10782:14;::::0;:51:::1;::::0;-1:-1:-1;;;10782:51:0;;10807:10:::1;10782:51;::::0;::::1;11244:34:1::0;10827:4:0::1;11294:18:1::0;;;11287:43;10837:6:0;;-1:-1:-1;;;;;10782:14:0::1;::::0;:24:::1;::::0;11179:18:1;;10782:51:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:61;;10774:94;;;::::0;-1:-1:-1;;;10774:94:0;;11732:2:1;10774:94:0::1;::::0;::::1;11714:21:1::0;11771:2;11751:18;;;11744:30;-1:-1:-1;;;11790:18:1;;;11783:50;11850:18;;10774:94:0::1;11530:344:1::0;10774:94:0::1;10887:14;::::0;:62:::1;::::0;-1:-1:-1;;;10887:62:0;;10915:10:::1;10887:62;::::0;::::1;12119:34:1::0;10935:4:0::1;12169:18:1::0;;;12162:43;12221:18;;;12214:34;;;-1:-1:-1;;;;;10887:14:0;;::::1;::::0;:27:::1;::::0;12054:18:1;;10887:62:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10879:71;;;::::0;::::1;;10963:25;10969:10;10981:6;10963:5;:25::i;:::-;-1:-1:-1::0;1381:1:0;1745:7;:22;10644:352::o;11158:585::-;11265:14;;11239:4;;11265:14;;:23;11257:55;;;;-1:-1:-1;;;11257:55:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5949:23:0;;11317:15;5949:23;;;:10;:23;;;;;;5975:4;5949:30;11407:11;11399:53;;;;-1:-1:-1;;;11399:53:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11462:26:0;;;;;;:13;:26;;;;;;;;:33;;;;;;;;;11459:255;;11521:15;;11511:25;;11459:255;;;-1:-1:-1;;;;;11625:26:0;;;;;;:13;:26;;;;;;;;:33;;;;;;;;;11680:7;;5318:5;;11607:15;:51;11602:75;:85;11592:95;;11459:255;-1:-1:-1;11731:7:0;11158:585;-1:-1:-1;;;11158:585:0:o;8709:397::-;8798:6;;-1:-1:-1;;;;;8798:6:0;;;;;1895:10;8798:22;8790:67;;;;-1:-1:-1;;;8790:67:0;;;;;;;:::i;:::-;8879:7;8871:5;:15;8868:70;;;8911:15;:5;8919:7;8911:15;:::i;:::-;8903:23;;8868:70;8978:11;8973:118;8995:23;;;8973:118;;;9046:29;9052:10;;9063:3;9052:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;9069:5;9046;:29::i;:::-;9020:5;;8973:118;;;;8709:397;;;:::o;2407:97::-;2456:13;2489:7;2482:14;;;;;:::i;2861:177::-;2949:4;2966:42;1895:10;2990:9;3001:6;2966:9;:42::i;7210:804::-;1425:1;1573:7;;:19;;1565:63;;;;-1:-1:-1;;;1565:63:0;;;;;;;:::i;:::-;1425:1;1704:7;:18;7307:14:::1;::::0;::::1;;:23;7299:55;;;;-1:-1:-1::0;;;7299:55:0::1;;;;;;;:::i;:::-;7381:35;::::0;-1:-1:-1;;;7381:35:0;;::::1;::::0;::::1;3137:25:1::0;;;-1:-1:-1;;;;;7381:28:0;::::1;::::0;::::1;::::0;3110:18:1;;7381:35:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7367:49:0::1;:10;-1:-1:-1::0;;;;;7367:49:0::1;;7359:96;;;;-1:-1:-1::0;;;7359:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;5949:23:0;;7462:15:::1;5949:23:::0;;;:10;:23;;;;;;5975:4;5949:30;7552:11;7544:53:::1;;;;-1:-1:-1::0;;;7544:53:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7607:26:0;::::1;;::::0;;;:13:::1;:26;::::0;;;;;;;:33;;;;;;;;;7604:255:::1;;7666:15;;7656:25;;7604:255;;;-1:-1:-1::0;;;;;7770:26:0;::::1;;::::0;;;:13:::1;:26;::::0;;;;;;;:33;;;;;;;;;7825:7;;5318:5:::1;::::0;7752:15:::1;:51;7747:75;:85;7737:95;;7604:255;7883:1;7873:7;:11;7865:57;;;::::0;-1:-1:-1;;;7865:57:0;;12884:2:1;7865:57:0::1;::::0;::::1;12866:21:1::0;12923:2;12903:18;;;12896:30;12962:34;12942:18;;;12935:62;-1:-1:-1;;;13013:18:1;;;13006:31;13054:19;;7865:57:0::1;12682:397:1::0;7865:57:0::1;-1:-1:-1::0;;;;;7927:26:0;::::1;;::::0;;;:13:::1;:26;::::0;;;;;;;:33;;;;;;;;7963:15:::1;7927:51:::0;;7983:26:::1;7989:10;8001:7:::0;7983:5:::1;:26::i;:::-;-1:-1:-1::0;;1381:1:0;1745:7;:22;-1:-1:-1;;7210:804:0:o;8022:303::-;1425:1;1573:7;;:19;;1565:63;;;;-1:-1:-1;;;1565:63:0;;;;;;;:::i;:::-;1425:1;1704:7;:18;8156:13:::1;8151:156;8175:24:::0;;::::1;8151:156;;;-1:-1:-1::0;;;;;8229:26:0;::::1;;::::0;;;:13:::1;:26;::::0;;;;8276:15:::1;::::0;8256:9;;8266:5;8256:16;;::::1;;;;;:::i;:::-;;::::0;;::::1;::::0;;;::::1;;8229:44:::0;;-1:-1:-1;8229:44:0;::::1;::::0;;;;;;-1:-1:-1;8229:44:0;:62;8201:7:::1;;8151:156;;11751:304:::0;11844:4;;;11889:134;11913:20;;;11889:134;;;11970:4;:17;11988:5;;11994;11988:12;;;;;;;:::i;:::-;;;;;;;12002:11;11970:44;;;;;;;;;;;;;;;13258:25:1;;;-1:-1:-1;;;;;13319:32:1;13314:2;13299:18;;13292:60;13246:2;13231:18;;13084:274;11970:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11959:55;;;;:::i;:::-;;-1:-1:-1;11935:7:0;;;;:::i;:::-;;;;11889:134;;;-1:-1:-1;12040:7:0;11751:304;-1:-1:-1;;;;11751:304:0:o;8518:185::-;8573:6;;-1:-1:-1;;;;;8573:6:0;;;;;1895:10;8573:22;8565:67;;;;-1:-1:-1;;;8565:67:0;;;;;;;:::i;:::-;8648:15;:5;8656:7;8648:15;:::i;:::-;8640:23;;8674:24;8680:10;8692:5;8674;:24::i;:::-;8518:185;:::o;9612:277::-;9695:21;9687:73;;;;-1:-1:-1;;;9687:73:0;;13698:2:1;9687:73:0;;;13680:21:1;13737:2;13717:18;;;13710:30;13776:34;13756:18;;;13749:62;-1:-1:-1;;;13827:18:1;;;13820:37;13874:19;;9687:73:0;13496:403:1;9687:73:0;9776:6;;-1:-1:-1;;;;;9776:6:0;;;;;1895:10;9776:22;9768:67;;;;-1:-1:-1;;;9768:67:0;;;;;;;:::i;:::-;9858:23;:16;9877:4;9858:23;:::i;:::-;9840:15;:41;-1:-1:-1;9612:277:0:o;9897:325::-;10017:6;;-1:-1:-1;;;;;10017:6:0;;;;;1895:10;10017:22;10009:67;;;;-1:-1:-1;;;10009:67:0;;;;;;;:::i;:::-;10086:13;10081:137;10105:24;;;10081:137;;;-1:-1:-1;;;;;10155:26:0;;;;;;:13;:26;;;;;10202:7;;10182:9;;10192:5;10182:16;;;;;;;:::i;:::-;;;;;;;10155:44;;;;;;;;;;;:54;;;;10131:7;;;;;:::i;:::-;;;;10081:137;;9111:493;9228:6;;-1:-1:-1;;;;;9228:6:0;;;;;1895:10;9228:22;9220:67;;;;-1:-1:-1;;;9220:67:0;;;;;;;:::i;:::-;9300:15;:5;9308:7;9300:15;:::i;:::-;9292:23;;9337:7;9329:5;:15;9326:70;;;9369:15;:5;9377:7;9369:15;:::i;:::-;9361:23;;9326:70;9436:11;9431:155;9453:22;;;9431:155;;;9503:67;9525:11;-1:-1:-1;;;;;9517:28:0;;9546:9;;9556:3;9546:14;;;;;;;:::i;:::-;;;;;;;9517:44;;;;;;;;;;;;;3137:25:1;;3125:2;3110:18;;2991:177;9517:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9564:5;9503;:67::i;:::-;9477:5;;9431:155;;4865:330;-1:-1:-1;;;;;5001:19:0;;4993:68;;;;-1:-1:-1;;;4993:68:0;;14106:2:1;4993:68:0;;;14088:21:1;14145:2;14125:18;;;14118:30;14184:34;14164:18;;;14157:62;-1:-1:-1;;;14235:18:1;;;14228:34;14279:19;;4993:68:0;13904:400:1;4993:68:0;-1:-1:-1;;;;;5080:21:0;;5072:68;;;;-1:-1:-1;;;5072:68:0;;14511:2:1;5072:68:0;;;14493:21:1;14550:2;14530:18;;;14523:30;14589:34;14569:18;;;14562:62;-1:-1:-1;;;14640:18:1;;;14633:32;14682:19;;5072:68:0;14309:398:1;5072:68:0;-1:-1:-1;;;;;5151:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;4865:330::o;4583:274::-;-1:-1:-1;;;;;4667:21:0;;4659:65;;;;-1:-1:-1;;;4659:65:0;;14914:2:1;4659:65:0;;;14896:21:1;14953:2;14933:18;;;14926:30;14992:33;14972:18;;;14965:61;15043:18;;4659:65:0;14712:355:1;4659:65:0;4751:6;4735:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;4768:18:0;;:9;:18;;;;;;;;;;:28;;4790:6;;4768:9;:28;;4790:6;;4768:28;:::i;:::-;;;;-1:-1:-1;;4812:37:0;;3137:25:1;;;-1:-1:-1;;;;;4812:37:0;;;4829:1;;4812:37;;3125:2:1;3110:18;4812:37:0;;;;;;;4583:274;;:::o;3965:610::-;-1:-1:-1;;;;;4105:20:0;;4097:70;;;;-1:-1:-1;;;4097:70:0;;15274:2:1;4097:70:0;;;15256:21:1;15313:2;15293:18;;;15286:30;15352:34;15332:18;;;15325:62;-1:-1:-1;;;15403:18:1;;;15396:35;15448:19;;4097:70:0;15072:401:1;4097:70:0;-1:-1:-1;;;;;4186:23:0;;4178:71;;;;-1:-1:-1;;;4178:71:0;;15680:2:1;4178:71:0;;;15662:21:1;15719:2;15699:18;;;15692:30;15758:34;15738:18;;;15731:62;-1:-1:-1;;;15809:18:1;;;15802:33;15852:19;;4178:71:0;15478:399:1;4178:71:0;-1:-1:-1;;;;;4284:17:0;;4260:21;4284:17;;;;;;;;;;;4320:23;;;;4312:74;;;;-1:-1:-1;;;4312:74:0;;16084:2:1;4312:74:0;;;16066:21:1;16123:2;16103:18;;;16096:30;16162:34;16142:18;;;16135:62;-1:-1:-1;;;16213:18:1;;;16206:36;16259:19;;4312:74:0;15882:402:1;4312:74:0;-1:-1:-1;;;;;4422:17:0;;;:9;:17;;;;;;;;;;;4442:22;;;4422:42;;4486:20;;;;;;;;:30;;4458:6;;4422:9;4486:30;;4458:6;;4486:30;:::i;:::-;;;;;;;;4549:9;-1:-1:-1;;;;;4532:35:0;4541:6;-1:-1:-1;;;;;4532:35:0;;4560:6;4532:35;;;;3137:25:1;;3125:2;3110:18;;2991:177;4532:35:0;;;;;;;;4086:489;3965:610;;;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1264:367::-;1327:8;1337:6;1391:3;1384:4;1376:6;1372:17;1368:27;1358:55;;1409:1;1406;1399:12;1358:55;-1:-1:-1;1432:20:1;;1475:18;1464:30;;1461:50;;;1507:1;1504;1497:12;1461:50;1544:4;1536:6;1532:17;1520:29;;1604:3;1597:4;1587:6;1584:1;1580:14;1572:6;1568:27;1564:38;1561:47;1558:67;;;1621:1;1618;1611:12;1558:67;1264:367;;;;;:::o;1636:572::-;1731:6;1739;1747;1800:2;1788:9;1779:7;1775:23;1771:32;1768:52;;;1816:1;1813;1806:12;1768:52;1856:9;1843:23;1889:18;1881:6;1878:30;1875:50;;;1921:1;1918;1911:12;1875:50;1960:70;2022:7;2013:6;2002:9;1998:22;1960:70;:::i;:::-;2049:8;;-1:-1:-1;1934:96:1;-1:-1:-1;;2134:2:1;2119:18;;2106:32;2147:31;2106:32;2147:31;:::i;:::-;2197:5;2187:15;;;1636:572;;;;;:::o;2213:773::-;2335:6;2343;2351;2359;2412:2;2400:9;2391:7;2387:23;2383:32;2380:52;;;2428:1;2425;2418:12;2380:52;2468:9;2455:23;2497:18;2538:2;2530:6;2527:14;2524:34;;;2554:1;2551;2544:12;2524:34;2593:70;2655:7;2646:6;2635:9;2631:22;2593:70;:::i;:::-;2682:8;;-1:-1:-1;2567:96:1;-1:-1:-1;2770:2:1;2755:18;;2742:32;;-1:-1:-1;2786:16:1;;;2783:36;;;2815:1;2812;2805:12;2783:36;;2854:72;2918:7;2907:8;2896:9;2892:24;2854:72;:::i;:::-;2213:773;;;;-1:-1:-1;2945:8:1;-1:-1:-1;;;;2213:773:1:o;3173:118::-;3259:5;3252:13;3245:21;3238:5;3235:32;3225:60;;3281:1;3278;3271:12;3296:241;3352:6;3405:2;3393:9;3384:7;3380:23;3376:32;3373:52;;;3421:1;3418;3411:12;3373:52;3460:9;3447:23;3479:28;3501:5;3479:28;:::i;:::-;3526:5;3296:241;-1:-1:-1;;;3296:241:1:o;3542:456::-;3619:6;3627;3635;3688:2;3676:9;3667:7;3663:23;3659:32;3656:52;;;3704:1;3701;3694:12;3656:52;3743:9;3730:23;3762:31;3787:5;3762:31;:::i;:::-;3812:5;-1:-1:-1;3869:2:1;3854:18;;3841:32;3882:33;3841:32;3882:33;:::i;:::-;3542:456;;3934:7;;-1:-1:-1;;;3988:2:1;3973:18;;;;3960:32;;3542:456::o;4003:180::-;4062:6;4115:2;4103:9;4094:7;4090:23;4086:32;4083:52;;;4131:1;4128;4121:12;4083:52;-1:-1:-1;4154:23:1;;4003:180;-1:-1:-1;4003:180:1:o;4377:315::-;4445:6;4453;4506:2;4494:9;4485:7;4481:23;4477:32;4474:52;;;4522:1;4519;4512:12;4474:52;4558:9;4545:23;4535:33;;4618:2;4607:9;4603:18;4590:32;4631:31;4656:5;4631:31;:::i;:::-;4681:5;4671:15;;;4377:315;;;;;:::o;4697:247::-;4756:6;4809:2;4797:9;4788:7;4784:23;4780:32;4777:52;;;4825:1;4822;4815:12;4777:52;4864:9;4851:23;4883:31;4908:5;4883:31;:::i;4949:505::-;5044:6;5052;5060;5113:2;5101:9;5092:7;5088:23;5084:32;5081:52;;;5129:1;5126;5119:12;5081:52;5169:9;5156:23;5202:18;5194:6;5191:30;5188:50;;;5234:1;5231;5224:12;5188:50;5273:70;5335:7;5326:6;5315:9;5311:22;5273:70;:::i;:::-;5362:8;;5247:96;;-1:-1:-1;5444:2:1;5429:18;;;;5416:32;;4949:505;-1:-1:-1;;;;4949:505:1:o;5459:388::-;5527:6;5535;5588:2;5576:9;5567:7;5563:23;5559:32;5556:52;;;5604:1;5601;5594:12;5556:52;5643:9;5630:23;5662:31;5687:5;5662:31;:::i;:::-;5712:5;-1:-1:-1;5769:2:1;5754:18;;5741:32;5782:33;5741:32;5782:33;:::i;5852:640::-;5956:6;5964;5972;5980;6033:2;6021:9;6012:7;6008:23;6004:32;6001:52;;;6049:1;6046;6039:12;6001:52;6089:9;6076:23;6122:18;6114:6;6111:30;6108:50;;;6154:1;6151;6144:12;6108:50;6193:70;6255:7;6246:6;6235:9;6231:22;6193:70;:::i;:::-;6282:8;;-1:-1:-1;6167:96:1;-1:-1:-1;;6364:2:1;6349:18;;6336:32;;-1:-1:-1;6418:2:1;6403:18;;6390:32;6431:31;6390:32;6431:31;:::i;:::-;5852:640;;;;-1:-1:-1;5852:640:1;;-1:-1:-1;;5852:640:1:o;6497:380::-;6576:1;6572:12;;;;6619;;;6640:61;;6694:4;6686:6;6682:17;6672:27;;6640:61;6747:2;6739:6;6736:14;6716:18;6713:38;6710:161;;;6793:10;6788:3;6784:20;6781:1;6774:31;6828:4;6825:1;6818:15;6856:4;6853:1;6846:15;6710:161;;6497:380;;;:::o;6882:355::-;7084:2;7066:21;;;7123:2;7103:18;;;7096:30;7162:33;7157:2;7142:18;;7135:61;7228:2;7213:18;;6882:355::o;7242:343::-;7444:2;7426:21;;;7483:2;7463:18;;;7456:30;-1:-1:-1;;;7517:2:1;7502:18;;7495:49;7576:2;7561:18;;7242:343::o;7590:353::-;7792:2;7774:21;;;7831:2;7811:18;;;7804:30;7870:31;7865:2;7850:18;;7843:59;7934:2;7919:18;;7590:353::o;7948:127::-;8009:10;8004:3;8000:20;7997:1;7990:31;8040:4;8037:1;8030:15;8064:4;8061:1;8054:15;8080:251;8150:6;8203:2;8191:9;8182:7;8178:23;8174:32;8171:52;;;8219:1;8216;8209:12;8171:52;8251:9;8245:16;8270:31;8295:5;8270:31;:::i;8336:398::-;8538:2;8520:21;;;8577:2;8557:18;;;8550:30;8616:34;8611:2;8596:18;;8589:62;-1:-1:-1;;;8682:2:1;8667:18;;8660:32;8724:3;8709:19;;8336:398::o;9274:356::-;9476:2;9458:21;;;9495:18;;;9488:30;9554:34;9549:2;9534:18;;9527:62;9621:2;9606:18;;9274:356::o;9990:127::-;10051:10;10046:3;10042:20;10039:1;10032:31;10082:4;10079:1;10072:15;10106:4;10103:1;10096:15;10122:135;10161:3;-1:-1:-1;;10182:17:1;;10179:43;;;10202:18;;:::i;:::-;-1:-1:-1;10249:1:1;10238:13;;10122:135::o;11341:184::-;11411:6;11464:2;11452:9;11443:7;11439:23;11435:32;11432:52;;;11480:1;11477;11470:12;11432:52;-1:-1:-1;11503:16:1;;11341:184;-1:-1:-1;11341:184:1:o;12259:245::-;12326:6;12379:2;12367:9;12358:7;12354:23;12350:32;12347:52;;;12395:1;12392;12385:12;12347:52;12427:9;12421:16;12446:28;12468:5;12446:28;:::i;12509:168::-;12549:7;12615:1;12611;12607:6;12603:14;12600:1;12597:21;12592:1;12585:9;12578:17;12574:45;12571:71;;;12622:18;;:::i;:::-;-1:-1:-1;12662:9:1;;12509:168::o;13363:128::-;13403:3;13434:1;13430:6;13427:1;13424:13;13421:39;;;13440:18;;:::i;:::-;-1:-1:-1;13476:9:1;;13363:128::o

Swarm Source

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