Contract 0xb359e4290573a3974616b7c26ea86939689b9ec4

 

Contract Overview

GRISE: GRSE Token
Balance:
0 BNB

BNB Value:
$0.00

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x6bfbc9983d2700c5760d0ceb0f4cc97e0b3d21377e733eaf838011e6b4139a23Approve131481072021-12-03 3:15:561 day 41 mins ago0x8996f61b14a07baabf54f909d0a2438eb70e84ec IN  GRISE: GRSE Token0 BNB0.000222515
0x780f199e31724caad197939da057ab2427d224e195154df8df9dfe5414aaf70bApprove131357772021-12-02 16:57:271 day 10 hrs ago0x426dd607c3500ae9418da3570ab42f67023e51c9 IN  GRISE: GRSE Token0 BNB0.000222515
0x898a8c4371c0aefeca99ba200d51c744497d92965a8e731e1796fbfde5585982Approve130985182021-12-01 7:40:322 days 20 hrs ago0x331a7eeeca7c9581a3d1f685b157b03fdf847084 IN  GRISE: GRSE Token0 BNB0.000222515
0xb742cb231bc68431d2757542a89a76ab0ee34c4047e8d4a936c1725cd6b5ff6bApprove130534282021-11-29 15:46:594 days 12 hrs ago0x0b2ee272fb1f9dd3c207b70266b86b0d0842689c IN  GRISE: GRSE Token0 BNB0.000221015
0xb37f4a7ab67da681d7ea6d9199e60040f7cd9524f7b4b04affd5e0fcd2092e0bApprove130526872021-11-29 15:07:104 days 12 hrs ago0xe801a4a09123e4d7f106c82f40ce474b31136210 IN  GRISE: GRSE Token0 BNB0.000222515
0x304ce36465cbb6cea586b404dd10e82f04112e840b96f9cc4cd1d264cf7752edApprove130277782021-11-28 16:14:195 days 11 hrs ago0x2d9a226118c393d9c57b27281d629111f2a9e92f IN  GRISE: GRSE Token0 BNB0.000222515
0x0abc3471bd9213ed004a7bb933ccd47214a7cae517c5296ba09611ae3474abcaApprove130275112021-11-28 15:59:325 days 11 hrs ago0x2d9a226118c393d9c57b27281d629111f2a9e92f IN  GRISE: GRSE Token0 BNB0.00089006
0x0e887c172ef967a97ca9fa0d1af9da17847fb3facd7f655ba55ecaf46b624164Approve130074642021-11-27 22:06:316 days 5 hrs ago0xee98ab971f95a89440603c3068921e6eed0abafc IN  GRISE: GRSE Token0 BNB0.000222515
0xff5ce4b2e836ffce30f78e9bef178cd95aef6973e14414886046fbca3004e0f1Approve130074462021-11-27 22:05:346 days 5 hrs ago0xee98ab971f95a89440603c3068921e6eed0abafc IN  GRISE: GRSE Token0 BNB0.000222515
0x460d6cf603eb46de2032729f5ee8d05b7f8625e0dada2d8ddcd993ca430e6235Approve130035982021-11-27 18:40:396 days 9 hrs ago0xaeae551ba70cd6b3cab794d1c3023746215aca79 IN  GRISE: GRSE Token0 BNB0.000222515
0x28185bc01cffa514825edf08e197ff2d0d77630420a20ae386ff1809c5708e7fApprove130020852021-11-27 17:20:196 days 10 hrs ago0xb5d882fdc4f945ec0d0b1f5b6b29373bffdbcc33 IN  GRISE: GRSE Token0 BNB0.000222515
0x9e2359a051a368b9834c1ff74954497e8940f8c5f4866840324744b1b91ed192Approve129737462021-11-26 15:51:477 days 12 hrs ago0x2a7a9dc1c831756a0b7c2925ee2a3e7f17bb7359 IN  GRISE: GRSE Token0 BNB0.000267018
0x392d51017dd6b2a4da45b86fa308779d18c8dadc3deb3022f60c2c58c98358dfApprove129692282021-11-26 11:42:407 days 16 hrs ago0xbe5541c8ff48f37468511798f85d03918755354f IN  GRISE: GRSE Token0 BNB0.000222515
0xdc8ba47d4a50a9ad27cd0528d54e0bae8e7b4dedc3c81d0cfa339d8ae5402698Claim Token Hold...129612162021-11-26 3:54:328 days 2 mins ago0x34d1c3faefbeca73e5ddf3e6292661c30a8aee83 IN  GRISE: GRSE Token0 BNB0.000528225
0xa982bb5511041487543bfa571e51f44c782cbb8144bb376a7d863eb07a815f52Approve129257402021-11-24 19:45:459 days 8 hrs ago0x24962f0b73ec19b670f62967513e65964d869cea IN  GRISE: GRSE Token0 BNB0.000222515
0xccf572f9ffe5000f5b083469b4b21f5f2cc30d58db1885564c40d132c8720b72Approve129119342021-11-24 7:41:219 days 20 hrs ago0x04e733091693494cd9f29a2ef7e030b2594f0a65 IN  GRISE: GRSE Token0 BNB0.000222515
0x96aa01c1ebdcf6a16b706bac7777cb42ecaa821c88b5e35976bf897f2179e484Transfer129103932021-11-24 6:21:219 days 21 hrs ago0xfcf4dee01127574f304e244f3bc7d67de4fb83fb IN  GRISE: GRSE Token0 BNB0.000320615
0x69a3f648e0148ed6939d5535b33755d484cdb8d8b4e1fe6f3ad01dfb7897bc05Transfer129081252021-11-24 4:26:029 days 23 hrs ago0x3e87b48422f95da11d5425922b53495a40501b55 IN  GRISE: GRSE Token0.021 BNB0.000105
0x5cc5a61517edda9f0b10d1068534292f7c208be46d0dc9e77f0cac6ade5e5ea6Transfer129079542021-11-24 4:17:189 days 23 hrs ago0x3e87b48422f95da11d5425922b53495a40501b55 IN  GRISE: GRSE Token0 BNB0.000459985
0x215f76761a59deea3dfc3c04867c69f559e3eb304de7bd1d110b08075b4129f7Approve128941402021-11-23 16:10:1210 days 11 hrs ago0xad37320cc85f74f33f408686f81c604969d34a94 IN  GRISE: GRSE Token0 BNB0.000238313565
0x5691ab374ec891d0ecf4bdf9d1b4b040f486e6d30a0e0d84828544c3bad7d3bdApprove128439872021-11-21 21:08:4012 days 6 hrs ago0xb99de8d636be333ec5c8ce1476e9b6fe7877f02a IN  GRISE: GRSE Token0 BNB0.000222515
0xddddedbb4620da78d40bf67366152f4357d487b81164090b3bb12997af63b820Approve128391702021-11-21 17:04:2012 days 10 hrs ago0xb22a828ee68fff03f07b5262f4b3011e06249fa9 IN  GRISE: GRSE Token0 BNB0.000222515
0xdf3315920f96659e0a1b9b4f310d9d71074773eb9e843ebe0bb333fd037e891eApprove128308072021-11-21 9:47:1012 days 18 hrs ago0x8dfd07ff8ca8db76376188a7c4f8f6f90a905db6 IN  GRISE: GRSE Token0 BNB0.000222515
0x483247aff1d9643821ab2b68cea2b227baeab76d19cd7f0279dbd56ee29db52eApprove128307802021-11-21 9:45:3912 days 18 hrs ago0x8dfd07ff8ca8db76376188a7c4f8f6f90a905db6 IN  GRISE: GRSE Token0 BNB0.000222515
0xa9bec33026cd16fe14dbc66db4711a38565c46aca6fabe43ff65cad763d181ebTransfer127868902021-11-19 19:55:5314 days 8 hrs ago0x3b2909e50f248d1c5665cfa188d066740b6d7702 IN  GRISE: GRSE Token0 BNB0.000534865
[ Download CSV Export 

OVERVIEW

A token with utlity and NFts with full mechanics.

Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
GriseToken

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 1 of 8: GriseToken.sol
// SPDX-License-Identifier: --GRISE--

pragma solidity =0.7.6;

import "./Utils.sol";

contract GriseToken is Utils {

    using SafeMath for uint256;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    address public LIQUIDITY_GATEKEEPER;
    address public STAKE_GATEKEEPER;
    address public VAULT_GATEKEEPER;

    address private liquidtyGateKeeper;
    address private stakeGateKeeper;
    address private vaultGateKeeper;

    /**
     * @dev initial private
     */
    string private _name;
    string private _symbol;
    uint8 private _decimal = 18;

    /**
     * @dev 👻 Initial supply 
     */
    uint256 private _totalSupply = 0;

    event Transfer(
        address indexed from,
        address indexed to,
        uint256 value
    );

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    constructor (string memory tokenName, string memory tokenSymbol) {
        _name = tokenName;
        _symbol = tokenSymbol;
        liquidtyGateKeeper = _msgSender();
        stakeGateKeeper = _msgSender();
        vaultGateKeeper = _msgSender();
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the decimals of the token.
     */
    function decimals() external view returns (uint8) {
        return _decimal;
    }

    /**
     * @dev Returns the total supply of the token.
     */
    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev Returns the token balance of specific address.
     */
    function balanceOf(address account) public view returns (uint256) {
        return _balances[account];
    }

    function transfer(
        address recipient,
        uint256 amount
    )
        external
        returns (bool)
    {  
        _transfer(
            _msgSender(),
            recipient,
            amount
        );

        return true;
    }

    /**
     * @dev Returns approved balance to be spent by another address
     * by using transferFrom method
     */
    function allowance(
        address owner,
        address spender
    )
        external
        view
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    /**
     * @dev Sets the token allowance to another spender
     */
    function approve(
        address spender,
        uint256 amount
    )
        external
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            amount
        );

        return true;
    }

    /**
     * @dev Allows to transfer tokens on senders behalf
     * based on allowance approved for the executer
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    )
        external
        returns (bool)
    {    
        _approve(sender,
            _msgSender(), _allowances[sender][_msgSender()].sub(
                amount
            )
        );

        _transfer(
            sender,
            recipient,
            amount
        );
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * Emits a {Transfer} event.
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    )
        internal
        virtual
    {
        require(
            sender != address(0x0)
        );

        require(
            recipient != address(0x0)
        );

        uint256 stFee;
        uint256 btFee;
        uint256 teamReward;
        uint256 currentGriseDay = _currentGriseDay();

        if (staker[sender] == 0) {
            stFee = _calculateSellTranscFee(amount);

            sellTranscFee[currentGriseDay] = 
            sellTranscFee[currentGriseDay]
                        .add(stFee);
                
            reservoirRewardPerShare[currentGriseDay] = 
            reservoirRewardPerShare[currentGriseDay]
                        .add(stFee.mul(TRANSC_RESERVOIR_REWARD)
                        .div(REWARD_PRECISION_RATE)
                        .div(mediumTermShares));
                
            stakerRewardPerShare[currentGriseDay] = 
            stakerRewardPerShare[currentGriseDay]
                        .add(stFee.mul(TRANSC_STAKER_REWARD)
                        .div(REWARD_PRECISION_RATE)
                        .div(mediumTermShares));
                
            tokenHolderReward[currentGriseDay] = 
            tokenHolderReward[currentGriseDay]
                        .add(stFee.mul(TRANSC_TOKEN_HOLDER_REWARD)
                        .div(REWARD_PRECISION_RATE));
            
            teamReward = stFee.mul(TEAM_SELL_TRANSC_REWARD)
                              .div(REWARD_PRECISION_RATE);
        }

        btFee = _calculateBuyTranscFee(amount);
        
        _balances[sender] =
        _balances[sender].sub(amount);

        _balances[recipient] =
        _balances[recipient].add(amount.sub(btFee).sub(stFee));

        teamReward += btFee.mul(TEAM_BUY_TRANS_REWARD)
                           .div(REWARD_PRECISION_RATE);
        
        _balances[TEAM_ADDRESS] = 
        _balances[TEAM_ADDRESS].add(teamReward.mul(90).div(100));

        _balances[DEVELOPER_ADDRESS] = 
        _balances[DEVELOPER_ADDRESS].add(teamReward.mul(10).div(100));

        // Burn Transction fee
        // We will mint token when user comes
        // to claim transction fee reward.
        _totalSupply =
        _totalSupply.sub(stFee.add(btFee).sub(teamReward));

        totalToken[currentGriseDay] = totalSupply().add(stakedToken);
        
        emit Transfer(
            sender,
            recipient,
            amount
        );
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     * Requirements:
     *
     * - `to` cannot be the zero address.
     */
    function _mint(
        address account,
        uint256 amount
    )
        internal
        virtual
    {
        require(
            account != address(0x0)
        );
        
        _totalSupply =
        _totalSupply.add(amount);

        _balances[account] =
        _balances[account].add(amount);

        totalToken[currentGriseDay()] = totalSupply().add(stakedToken);
        
        emit Transfer(
            address(0x0),
            account,
            amount
        );
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:

     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(
        address account,
        uint256 amount
    )
        internal
        virtual
    {
        require(
            account != address(0x0)
        );
    
        _balances[account] =
        _balances[account].sub(amount);

        _totalSupply =
        _totalSupply.sub(amount);

        totalToken[currentGriseDay()] = _totalSupply.add(stakedToken);
        
        emit Transfer(
            account,
            address(0x0),
            amount
        );
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    )
        internal
        virtual
    {
        require(
            owner != address(0x0)
        );

        require(
            spender != address(0x0)
        );

        _allowances[owner][spender] = amount;

        emit Approval(
            owner,
            spender,
            amount
        );
    }

    /**
     * @notice ability to define liquidity transformer contract
     * @dev this method renounce liquidtyGateKeeper access
     * @param _immutableGateKeeper contract address
     */
    function setLiquidtyGateKeeper(
        address _immutableGateKeeper
    )
        external
    {
        require(
            liquidtyGateKeeper == _msgSender(),
            'GRISE: Operation not allowed'
        );

        LIQUIDITY_GATEKEEPER = _immutableGateKeeper;
        liquidtyGateKeeper = address(0x0);
    }

    /**
     * @notice ability to define Staker contract
     * @dev this method renounce stakeGateKeeper access
     * @param _immutableGateKeeper contract address
     */
    function setStakeGateKeeper(
        address _immutableGateKeeper
    )
        external
    {
        require(
            stakeGateKeeper == _msgSender(),
            'GRISE: Operation not allowed'
        );

        STAKE_GATEKEEPER = _immutableGateKeeper;
        stakeGateKeeper = address(0x0);
    }

    /**
     * @notice ability to define vault contract
     * @dev this method renounce vaultGateKeeper access
     * @param _immutableGateKeeper contract address
     */
    function setVaultGateKeeper(
        address _immutableGateKeeper
    )
        external
    {
        require(
            vaultGateKeeper == _msgSender(),
            'GRISE: Operation not allowed'
        );

        VAULT_GATEKEEPER = _immutableGateKeeper;
        vaultGateKeeper = address(0x0);
    }

    modifier interfaceValidator() {
        require (
            _msgSender() == LIQUIDITY_GATEKEEPER ||
            _msgSender() == STAKE_GATEKEEPER ||
            _msgSender() == VAULT_GATEKEEPER,
            'GRISE: Operation not allowed'
        );
        _;
    }

    /**
     * @notice allows interfaceValidator to mint supply
     * @param _investorAddress address for minting GRISE tokens
     * @param _amount of tokens to mint for _investorAddress
     */
    function mintSupply(
        address _investorAddress,
        uint256 _amount
    )
        external
        interfaceValidator
    {       
        _mint(
            _investorAddress,
            _amount
        );
    }

    /**
     * @notice allows interfaceValidator to burn supply
     * @param _investorAddress address for minting GRISE tokens
     * @param _amount of tokens to mint for _investorAddress
     */
    function burnSupply(
        address _investorAddress,
        uint256 _amount
    )
        external
        interfaceValidator
    {
        _burn(
            _investorAddress,
            _amount
        );
    }
    
    function viewTokenHolderTranscReward() 
        external 
        view 
        returns (uint256 rewardAmount) 
    {
        
        uint256 _day = currentGriseDay();
        
        if( (balanceOf(_msgSender()) <= 0) ||
            isTranscFeeClaimed[_msgSender()][calculateGriseWeek(_day)] ||  
            calculateGriseWeek(_day) != currentGriseWeek())
        {
            rewardAmount = 0;
        }
        else
        {    
            uint256 calculationDay = _day.mod(GRISE_WEEK) > 0 ? 
                                    _day.sub(_day.mod(GRISE_WEEK)) :
                                    _day.sub(GRISE_WEEK);

            for (uint256 day = calculationDay; day < _day; day++)
            {
                rewardAmount += tokenHolderReward[day]
                                            .mul(_balances[_msgSender()])
                                            .div(totalToken[day]);
            }
        }
    }
    
    function claimTokenHolderTranscReward()
        external 
        returns (uint256 rewardAmount)
    {    
        uint256 _day = currentGriseDay();
        require( 
            balanceOf(_msgSender()) > 0,
            'GRISE - Token holder doesnot enough balance to claim reward'
        );
        
        require(
            (currentGriseDay().mod(GRISE_WEEK)) == 0,
            'GRISE - Transcation Reward window is not yeat open'
        );
        
        require(
            calculateGriseWeek(_day) == currentGriseWeek(),
            'GRISE - You are late/early to claim reward'
        );
        
        require( 
            !isTranscFeeClaimed[_msgSender()][currentGriseWeek()],
            'GRISE - Transcation Reward is already been claimed'
        );

        for (uint256 day = _day.sub(GRISE_WEEK); day < _day; day++)
        {
            rewardAmount += tokenHolderReward[day]
                                        .mul(_balances[_msgSender()])
                                        .div(totalToken[day]);
        }
                                        
        _mint(
            _msgSender(),
            rewardAmount
        );
        
        isTranscFeeClaimed[_msgSender()][currentGriseWeek()] = true;

        TranscFeeClaimed(_msgSender(), currentGriseWeek(), rewardAmount);
    }

    function setStaker(
        address _staker
    ) 
        external
    {    
        require(
            _msgSender() == STAKE_GATEKEEPER,
            'GRISE: Operation not allowed'
        );
        
        staker[_staker] = staker[_staker] + 1;
    }
    
    function resetStaker(
        address _staker
    ) 
        external
    {    
        require(
            _msgSender() == STAKE_GATEKEEPER,
            'GRISE: Operation not allowed'
        );
        
        if (staker[_staker] > 0)
        {
            staker[_staker] = staker[_staker] - 1;
        }
    }

    function updateStakedToken(
        uint256 _stakedToken
    ) 
        external
    {
        require(
            _msgSender() == STAKE_GATEKEEPER,
            'GRISE: Operation not allowed'
        );
            
        stakedToken = _stakedToken;
        totalToken[currentGriseDay()] = totalSupply().add(stakedToken);
    }

    function updateMedTermShares(
        uint256 _shares
    ) 
        external
    {    
        require(
            _msgSender() == STAKE_GATEKEEPER,
            'GRISE: Operation not allowed'
        );
        
        mediumTermShares = _shares;
    }

    function getTransFeeReward(
        uint256 _fromDay,
        uint256 _toDay
    ) 
        external 
        view 
        returns (uint256 rewardAmount)
    {
        require(
            _msgSender() == STAKE_GATEKEEPER,
            'GRISE: Operation not allowed'
        );

        for(uint256 day = _fromDay; day < _toDay; day++)
        {
            rewardAmount += stakerRewardPerShare[day];
        }
    }

    function getReservoirReward(
        uint256 _fromDay,
        uint256 _toDay
    ) 
        external
        view 
        returns (uint256 rewardAmount)
    {
        require(
            _msgSender() == STAKE_GATEKEEPER,
            'GRISE: Operation not allowed'
        );

        for(uint256 day = _fromDay; day < _toDay; day++)
        {
            rewardAmount += reservoirRewardPerShare[day];
        }
    }

    function getTokenHolderReward(
        uint256 _fromDay,
        uint256 _toDay
    ) 
        external
        view 
        returns (uint256 rewardAmount)
    {

        require(
            _msgSender() == STAKE_GATEKEEPER,
            'GRISE: Operation not allowed'
        );

        for(uint256 day = _fromDay; day < _toDay; day++)
        {
            rewardAmount += tokenHolderReward[day]
                            .mul(PRECISION_RATE)
                            .div(totalToken[day]);
        }
    }

    function timeToClaimWeeklyReward() 
        public
        view
        returns (uint256 _days)
    {
        _days = currentGriseDay().mod(GRISE_WEEK) > 0 ?
                    GRISE_WEEK - currentGriseDay().mod(GRISE_WEEK) :
                    0;
    }

    function timeToClaimMonthlyReward() 
        public 
        view 
        returns (uint256 _days)
    {
        _days = currentGriseDay().mod(GRISE_MONTH) > 0 ?
                    GRISE_MONTH - currentGriseDay().mod(GRISE_MONTH) :
                    0;
    }

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

    function getEpocTime() 
        external
        view 
        returns (uint256)
    {
        return block.timestamp;
    }

    function getLaunchTime()
        external
        view
        returns (uint256)
    {
        return LAUNCH_TIME;
    }

    function getLPLaunchTime()
        external
        view
        returns (uint256)
    {
        return LP_LAUNCH_TIME;
    }

    function isStaker(
        address _staker
    ) 
        external
        view
        returns (bool status)
    {
        status = (staker[_staker] > 0) ? true : false;
    }
}

File 2 of 8: Context.sol
// SPDX-License-Identifier: --GRISE--

pragma solidity =0.7.6;

contract Context {

    /**
     * @dev returns address executing the method
     */
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }

    /**
     * @dev returns data passed into the method
     */
    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

import "./SafeMath.sol";

File 3 of 8: Declaration.sol
// SPDX-License-Identifier: --GRISE--

import "./Context.sol";
import "./Events.sol";

pragma solidity =0.7.6;

abstract contract Declaration is Context, Events {

    uint256 constant _decimals = 18;
    uint256 constant REI_PER_GRISE = 10 ** _decimals;

    uint32 constant SECONDS_IN_DAY = 24 hours;
    uint32 constant SECONDS_IN_DAY_LP = 4 hours; 
    uint32 constant GRISE_WEEK = 7;
    uint32 constant GRISE_MONTH = 4 * GRISE_WEEK;
    uint32 constant GRISE_YEAR = 12 * GRISE_MONTH;

    uint64 constant PRECISION_RATE = 1E18;
    uint16 constant REWARD_PRECISION_RATE = 1E4;
    uint256 immutable LAUNCH_TIME;
    uint256 immutable LP_LAUNCH_TIME; // PreSale Launch Time
    
    uint16 constant SELL_TRANS_FEE = 347; // 3.47% multiple 1E4 Precision
    uint16 constant TRANSC_RESERVOIR_REWARD = 3054;
    uint16 constant TRANSC_STAKER_REWARD = 1642;
    uint16 constant TRANSC_TOKEN_HOLDER_REWARD = 2622;
    uint16 constant TEAM_SELL_TRANSC_REWARD = 1441;
    uint16 constant SELL_TRANS_BURN = 1239;
    
    uint16 constant BUY_TRANS_FEE = 30; // .30 multiple 1E4 Precision
    uint16 constant TEAM_BUY_TRANS_REWARD = 6667; // 66.67 multiple 1E2 Precisions
    uint16 constant BUY_TRANS_BURN = 3333;
    address constant TEAM_ADDRESS = 0xa377433831E83C7a4Fa10fB75C33217cD7CABec2;
    address constant DEVELOPER_ADDRESS = 0xcD8DcbA8e4791B19719934886A8bA77EA3fad447;
    
    constructor() {
        LAUNCH_TIME = 1619740800; // (30th April 2021 @00:00 GMT == day 0)
        LP_LAUNCH_TIME = 1620777600;  // (12th May 2021 @00:00 GMT == day 0)
    }


    uint256 internal stakedToken;
    uint256 internal mediumTermShares;
    mapping(uint256 => uint256) internal sellTranscFee;  // week ==> weekly Accumalted transc fee
    mapping(uint256 => uint256) internal reservoirRewardPerShare;
    mapping(uint256 => uint256) internal stakerRewardPerShare;
    mapping(uint256 => uint256) internal tokenHolderReward;
    mapping(address => mapping(uint256 => bool)) internal isTranscFeeClaimed;
    mapping(uint256 => uint256) internal totalToken;
    mapping(address => uint16) internal staker;
}

File 4 of 8: Events.sol
// SPDX-License-Identifier: --GRISE--

pragma solidity =0.7.6;

contract Events {

    event TranscFeeClaimed(
        address indexed tokenHolderAddress,
        uint256 griseWeek,
        uint256 claimedAmount
    );
}

File 5 of 8: Migrations.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.7.6;

contract Migrations {
    address public owner;
    uint public last_completed_migration;

    constructor() {
        owner = msg.sender;
    }

    modifier restricted() {
        if (msg.sender == owner)
        _;
    }

    function setCompleted(uint completed) public restricted {
        last_completed_migration = completed;
    }

    function upgrade(address new_address) public restricted {
        Migrations upgraded = Migrations(new_address);
        upgraded.setCompleted(last_completed_migration);
    }
}

File 6 of 8: SafeMath.sol
// SPDX-License-Identifier: --GRISE--

pragma solidity =0.7.6;

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, 'GRISE: SafeMath Add failed');
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, 'GRISE: SafeMath Sub failed');
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {

        if (a == 0 || b == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, 'GRISE: SafeMath Mul failed');
        return c;
    }

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

        uint256 c = a / b;
        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0, 'GRISE: SafeMath Mod failed');
        return a % b;
    }
}

File 7 of 8: Timing.sol
// SPDX-License-Identifier: --GRISE--

pragma solidity =0.7.6;

import "./Declaration.sol";

abstract contract Timing is Declaration {

    function currentLPDay() public view returns (uint256) {
        return _getNow() >= LP_LAUNCH_TIME ? _currentLPDay() : 0;
    } 

    function _currentLPDay() internal view returns (uint256) {
        return _LPDayFromStamp(_getNow()) + 1;
    }

    function _LPDayFromStamp(uint256 _timestamp) internal view returns (uint256) {
        return uint256((_timestamp - LP_LAUNCH_TIME) / SECONDS_IN_DAY_LP);
    }

    function currentGriseWeek() public view returns (uint256) {
        return (currentGriseDay() / GRISE_WEEK);
    }

    function currentGriseDay() public view returns (uint256) {
        return _getNow() >= LAUNCH_TIME ? _currentGriseDay() : 0;
    }

    function _currentGriseDay() internal view returns (uint256) {
        return _griseDayFromStamp(_getNow());
    }

    function _nextGriseDay() internal view returns (uint256) {
        return _currentGriseDay() + 1;
    }

    function _previousGriseDay() internal view returns (uint256) {
        return _currentGriseDay() - 1;
    }

    function _griseDayFromStamp(uint256 _timestamp) internal view returns (uint256) {
        return uint256((_timestamp - LAUNCH_TIME) / SECONDS_IN_DAY);
    }

    function _getNow() internal view returns (uint256) {
        return block.timestamp;
    }
}

File 8 of 8: Utils.sol
// SPDX-License-Identifier: --GRISE--

pragma solidity =0.7.6;

import "./Timing.sol";

abstract contract Utils is Timing {

    using SafeMath for uint256;

    function toUint256(bytes memory _bytes)   
    internal
    pure
    returns (uint256 value) {

    assembly {
      value := mload(add(_bytes, 0x20))
    }
    }

    function notContract(address _addr) internal view returns (bool) {
        uint32 size;
        assembly {
            size := extcodesize(_addr)
        }
        return (size == 0);
    }

    function toBytes16(uint256 x) internal pure returns (bytes16 b) {
       return bytes16(bytes32(x));
    }
    
    function _notFuture(uint256 _day) internal view returns (bool) {
        return _day <= _currentGriseDay();
    }

    function _notPast(uint256 _day) internal view returns (bool) {
        return _day >= _currentGriseDay();
    }

    function _nonZeroAddress(address _address) internal pure returns (bool) {
        return _address != address(0x0);
    }

    function _calculateSellTranscFee(uint256 _tAmount) internal pure returns (uint256) {
        return _tAmount.mul(SELL_TRANS_FEE).div(REWARD_PRECISION_RATE);
    }

    function _calculateBuyTranscFee(uint256 _tAmount) internal pure returns (uint256) {
        return _tAmount.mul(BUY_TRANS_FEE).div(REWARD_PRECISION_RATE);
    }
    
    function calculateGriseWeek(uint256 _day) internal pure returns (uint256) {
        return (_day / GRISE_WEEK);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"tokenName","type":"string"},{"internalType":"string","name":"tokenSymbol","type":"string"}],"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":"tokenHolderAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"griseWeek","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"claimedAmount","type":"uint256"}],"name":"TranscFeeClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"LIQUIDITY_GATEKEEPER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STAKE_GATEKEEPER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VAULT_GATEKEEPER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOfStaker","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_investorAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burnSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimTokenHolderTranscReward","outputs":[{"internalType":"uint256","name":"rewardAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentGriseDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentGriseWeek","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentLPDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getEpocTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLPLaunchTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLaunchTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fromDay","type":"uint256"},{"internalType":"uint256","name":"_toDay","type":"uint256"}],"name":"getReservoirReward","outputs":[{"internalType":"uint256","name":"rewardAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fromDay","type":"uint256"},{"internalType":"uint256","name":"_toDay","type":"uint256"}],"name":"getTokenHolderReward","outputs":[{"internalType":"uint256","name":"rewardAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fromDay","type":"uint256"},{"internalType":"uint256","name":"_toDay","type":"uint256"}],"name":"getTransFeeReward","outputs":[{"internalType":"uint256","name":"rewardAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_staker","type":"address"}],"name":"isStaker","outputs":[{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_investorAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mintSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_staker","type":"address"}],"name":"resetStaker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_immutableGateKeeper","type":"address"}],"name":"setLiquidtyGateKeeper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_immutableGateKeeper","type":"address"}],"name":"setStakeGateKeeper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_staker","type":"address"}],"name":"setStaker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_immutableGateKeeper","type":"address"}],"name":"setVaultGateKeeper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeToClaimMonthlyReward","outputs":[{"internalType":"uint256","name":"_days","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeToClaimWeeklyReward","outputs":[{"internalType":"uint256","name":"_days","type":"uint256"}],"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":[{"internalType":"uint256","name":"_shares","type":"uint256"}],"name":"updateMedTermShares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_stakedToken","type":"uint256"}],"name":"updateStakedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"viewTokenHolderTranscReward","outputs":[{"internalType":"uint256","name":"rewardAmount","type":"uint256"}],"stateMutability":"view","type":"function"}]

60c06040526012601360006101000a81548160ff021916908360ff16021790555060006014553480156200003257600080fd5b5060405162003ae338038062003ae3833981810160405260408110156200005857600080fd5b81019080805160405193929190846401000000008211156200007957600080fd5b838201915060208201858111156200009057600080fd5b8251866001820283011164010000000082111715620000ae57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000e4578082015181840152602081019050620000c7565b50505050905090810190601f168015620001125780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200013657600080fd5b838201915060208201858111156200014d57600080fd5b82518660018202830111640100000000821117156200016b57600080fd5b8083526020830192505050908051906020019080838360005b83811015620001a157808201518184015260208101905062000184565b50505050905090810190601f168015620001cf5780820380516001836020036101000a031916815260200191505b5060405250505063608b48806080818152505063609b1a8060a0818152505081601190805190602001906200020692919062000320565b5080601290805190602001906200021f92919062000320565b50620002306200031860201b60201c565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002806200031860201b60201c565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002d06200031860201b60201c565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050620003d6565b600033905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620003585760008555620003a4565b82601f106200037357805160ff1916838001178555620003a4565b82800160010185558215620003a4579182015b82811115620003a357825182559160200191906001019062000386565b5b509050620003b39190620003b7565b5090565b5b80821115620003d2576000816000905550600101620003b8565b5090565b60805160a0516136d56200040e60003980610b79528061222952806135a6525080611d725280611da2528061356952506136d56000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c806387cd0cd211610125578063b9459b61116100ad578063dd62ed3e1161007c578063dd62ed3e14610a0c578063e742806a14610a84578063edc9a25f14610ad2578063f0f4f32314610af0578063f172d29314610b0e5761021c565b8063b9459b611461095e578063c2889b571461097c578063cdbf54ed1461099a578063d2931944146109c85761021c565b8063a7d10eab116100f4578063a7d10eab14610816578063a9059cbb1461085a578063ab909492146108be578063aecf8a6d146108f2578063b7746086146109405761021c565b806387cd0cd2146106e557806395d89b41146107035780639df6292614610786578063a29a43bb146107d25761021c565b80633f5e932b116101a85780636de41837116101775780636de41837146105b35780636f1e8533146105d157806370a082311461062b5780637f0f4026146106835780638491a110146106b15761021c565b80633f5e932b146104c1578063480f5e2e146105055780634ad356f4146105235780635d349c3a146105675761021c565b8063095ea7b3116101ef578063095ea7b31461036657806318160ddd146103ca57806318613e67146103e857806323b872dd1461041c578063313ce567146104a05761021c565b80630293068e146102215780630496dc7d1461027957806306fdde031461029757806308fcfd3c1461031a575b600080fd5b6102636004803603602081101561023757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b2c565b6040518082815260200191505060405180910390f35b610281610b75565b6040518082815260200191505060405180910390f35b61029f610b9d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102df5780820151818401526020810190506102c4565b50505050905090810190601f16801561030c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103506004803603604081101561033057600080fd5b810190808035906020019092919080359060200190929190505050610c3f565b6040518082815260200191505060405180910390f35b6103b26004803603604081101561037c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d8e565b60405180821515815260200191505060405180910390f35b6103d2610dac565b6040518082815260200191505060405180910390f35b6103f0610db6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104886004803603606081101561043257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ddc565b60405180821515815260200191505060405180910390f35b6104a8610e9b565b604051808260ff16815260200191505060405180910390f35b610503600480360360208110156104d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610eb2565b005b61050d611084565b6040518082815260200191505060405180910390f35b6105656004803603602081101561053957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611268565b005b61059d6004803603604081101561057d57600080fd5b8101908080359060200190929190803590602001909291905050506113b8565b6040518082815260200191505060405180910390f35b6105bb6114be565b6040518082815260200191505060405180910390f35b610613600480360360208110156105e757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061151e565b60405180821515815260200191505060405180910390f35b61066d6004803603602081101561064157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611589565b6040518082815260200191505060405180910390f35b6106af6004803603602081101561069957600080fd5b81019080803590602001909291905050506115d2565b005b6106b96116e0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106ed611706565b6040518082815260200191505060405180910390f35b61070b611725565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561074b578082015181840152602081019050610730565b50505050905090810190601f1680156107785780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107bc6004803603604081101561079c57600080fd5b8101908080359060200190929190803590602001909291905050506117c7565b6040518082815260200191505060405180910390f35b610814600480360360208110156107e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118cd565b005b6108586004803603602081101561082c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a44565b005b6108a66004803603604081101561087057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b94565b60405180821515815260200191505060405180910390f35b6108c6611bb2565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61093e6004803603604081101561090857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611bd8565b005b610948611d6e565b6040518082815260200191505060405180910390f35b610966611d96565b6040518082815260200191505060405180910390f35b610984611d9e565b6040518082815260200191505060405180910390f35b6109c6600480360360208110156109b057600080fd5b8101908080359060200190929190505050611de4565b005b610a0a600480360360208110156109de57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611eb8565b005b610a6e60048036036040811015610a2257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612008565b6040518082815260200191505060405180910390f35b610ad060048036036040811015610a9a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061208f565b005b610ada612225565b6040518082815260200191505060405180910390f35b610af861226b565b6040518082815260200191505060405180910390f35b610b166122d4565b6040518082815260200191505060405180910390f35b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b606060118054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c355780601f10610c0a57610100808354040283529160200191610c35565b820191906000526020600020905b815481529060010190602001808311610c1857829003601f168201915b5050505050905090565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c826126a5565b73ffffffffffffffffffffffffffffffffffffffff1614610d0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f47524953453a204f7065726174696f6e206e6f7420616c6c6f7765640000000081525060200191505060405180910390fd5b60008390505b82811015610d8757610d766007600083815260200190815260200160002054610d68670de0b6b3a764000067ffffffffffffffff1660056000868152602001908152602001600020546126ad90919063ffffffff16565b61275b90919063ffffffff16565b820191508080600101915050610d11565b5092915050565b6000610da2610d9b6126a5565b8484612787565b6001905092915050565b6000601454905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610e8584610dea6126a5565b610e8085600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e376126a5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128e690919063ffffffff16565b612787565b610e9084848461296f565b600190509392505050565b6000601360009054906101000a900460ff16905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ef36126a5565b73ffffffffffffffffffffffffffffffffffffffff1614610f7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f47524953453a204f7065726174696f6e206e6f7420616c6c6f7765640000000081525060200191505060405180910390fd5b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff1661ffff161115611081576001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff1603600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548161ffff021916908361ffff1602179055505b50565b60008061108f611d9e565b905060006110a361109e6126a5565b611589565b1115806111195750600660006110b76126a5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110fc8361306c565b815260200190815260200160002060009054906101000a900460ff165b806111335750611127611706565b6111308261306c565b14155b156111415760009150611264565b60008061115e600763ffffffff168461308690919063ffffffff16565b116111825761117d600763ffffffff16836128e690919063ffffffff16565b6111af565b6111ae61119f600763ffffffff168461308690919063ffffffff16565b836128e690919063ffffffff16565b5b905060008190505b82811015611261576112506007600083815260200190815260200160002054611242600960006111e56126a5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460056000868152602001908152602001600020546126ad90919063ffffffff16565b61275b90919063ffffffff16565b8401935080806001019150506111b7565b50505b5090565b6112706126a5565b73ffffffffffffffffffffffffffffffffffffffff16600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611332576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f47524953453a204f7065726174696f6e206e6f7420616c6c6f7765640000000081525060200191505060405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113fb6126a5565b73ffffffffffffffffffffffffffffffffffffffff1614611484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f47524953453a204f7065726174696f6e206e6f7420616c6c6f7765640000000081525060200191505060405180910390fd5b60008390505b828110156114b757600360008281526020019081526020016000205482019150808060010191505061148a565b5092915050565b6000806114e2600763ffffffff166114d4611d9e565b61308690919063ffffffff16565b116114ee576000611519565b61150f600763ffffffff16611501611d9e565b61308690919063ffffffff16565b600763ffffffff16035b905090565b600080600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff1661ffff161161157f576000611582565b60015b9050919050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116136126a5565b73ffffffffffffffffffffffffffffffffffffffff161461169c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f47524953453a204f7065726174696f6e206e6f7420616c6c6f7765640000000081525060200191505060405180910390fd5b806000819055506116bf6000546116b1610dac565b61311090919063ffffffff16565b600760006116cb611d9e565b81526020019081526020016000208190555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600763ffffffff16611718611d9e565b8161171f57fe5b04905090565b606060128054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117bd5780601f10611792576101008083540402835291602001916117bd565b820191906000526020600020905b8154815290600101906020018083116117a057829003601f168201915b5050505050905090565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661180a6126a5565b73ffffffffffffffffffffffffffffffffffffffff1614611893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f47524953453a204f7065726174696f6e206e6f7420616c6c6f7765640000000081525060200191505060405180910390fd5b60008390505b828110156118c6576004600082815260200190815260200160002054820191508080600101915050611899565b5092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661190e6126a5565b73ffffffffffffffffffffffffffffffffffffffff1614611997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f47524953453a204f7065726174696f6e206e6f7420616c6c6f7765640000000081525060200191505060405180910390fd5b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff1601600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548161ffff021916908361ffff16021790555050565b611a4c6126a5565b73ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f47524953453a204f7065726174696f6e206e6f7420616c6c6f7765640000000081525060200191505060405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611ba8611ba16126a5565b848461296f565b6001905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611c196126a5565b73ffffffffffffffffffffffffffffffffffffffff161480611c8f5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611c776126a5565b73ffffffffffffffffffffffffffffffffffffffff16145b80611cee5750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611cd66126a5565b73ffffffffffffffffffffffffffffffffffffffff16145b611d60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f47524953453a204f7065726174696f6e206e6f7420616c6c6f7765640000000081525060200191505060405180910390fd5b611d6a8282613198565b5050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b600042905090565b60007f0000000000000000000000000000000000000000000000000000000000000000611dc9613321565b1015611dd6576000611ddf565b611dde613329565b5b905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611e256126a5565b73ffffffffffffffffffffffffffffffffffffffff1614611eae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f47524953453a204f7065726174696f6e206e6f7420616c6c6f7765640000000081525060200191505060405180910390fd5b8060018190555050565b611ec06126a5565b73ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f47524953453a204f7065726174696f6e206e6f7420616c6c6f7765640000000081525060200191505060405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166120d06126a5565b73ffffffffffffffffffffffffffffffffffffffff1614806121465750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661212e6126a5565b73ffffffffffffffffffffffffffffffffffffffff16145b806121a55750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661218d6126a5565b73ffffffffffffffffffffffffffffffffffffffff16145b612217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f47524953453a204f7065726174696f6e206e6f7420616c6c6f7765640000000081525060200191505060405180910390fd5b6122218282613340565b5050565b60007f0000000000000000000000000000000000000000000000000000000000000000612250613321565b101561225d576000612266565b6122656134ce565b5b905090565b600080612292600760040263ffffffff16612284611d9e565b61308690919063ffffffff16565b1161229e5760006122cf565b6122c2600760040263ffffffff166122b4611d9e565b61308690919063ffffffff16565b600760040263ffffffff16035b905090565b6000806122df611d9e565b905060006122f36122ee6126a5565b611589565b11612349576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180613633603b913960400191505060405180910390fd5b600061236c600763ffffffff1661235e611d9e565b61308690919063ffffffff16565b146123c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603281526020018061366e6032913960400191505060405180910390fd5b6123ca611706565b6123d38261306c565b14612429576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613609602a913960400191505060405180910390fd5b600660006124356126a5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000612479611706565b815260200190815260200160002060009054906101000a900460ff16156124eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806135d76032913960400191505060405180910390fd5b6000612507600763ffffffff16836128e690919063ffffffff16565b90505b818110156125b4576125a36007600083815260200190815260200160002054612595600960006125386126a5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460056000868152602001908152602001600020546126ad90919063ffffffff16565b61275b90919063ffffffff16565b83019250808060010191505061250a565b506125c66125c06126a5565b83613340565b6001600660006125d46126a5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000612618611706565b815260200190815260200160002060006101000a81548160ff0219169083151502179055506126456126a5565b73ffffffffffffffffffffffffffffffffffffffff167f311a233fc02c36f3725ecba64fab4ba466b3d199fa2b41121a1a0840671416e6612684611706565b84604051808381526020018281526020019250505060405180910390a25090565b600033905090565b6000808314806126bd5750600082145b156126cb5760009050612755565b60008284029050828482816126dc57fe5b0414612750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f47524953453a20536166654d617468204d756c206661696c656400000000000081525060200191505060405180910390fd5b809150505b92915050565b60008082141561276e5760009050612781565b600082848161277957fe5b049050809150505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127c157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127fb57600080fd5b80600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b60008282111561295e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f47524953453a20536166654d61746820537562206661696c656400000000000081525060200191505060405180910390fd5b600082840390508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129a957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129e357600080fd5b6000806000806129f1613329565b90506000600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff1661ffff161415612c3857612a56856134e8565b9350612a7e84600260008481526020019081526020016000205461311090919063ffffffff16565b6002600083815260200190815260200160002081905550612aff612add600154612acf61271061ffff16612ac1610bee61ffff168a6126ad90919063ffffffff16565b61275b90919063ffffffff16565b61275b90919063ffffffff16565b600360008481526020019081526020016000205461311090919063ffffffff16565b6003600083815260200190815260200160002081905550612b80612b5e600154612b5061271061ffff16612b4261066a61ffff168a6126ad90919063ffffffff16565b61275b90919063ffffffff16565b61275b90919063ffffffff16565b600460008481526020019081526020016000205461311090919063ffffffff16565b6004600083815260200190815260200160002081905550612bed612bcb61271061ffff16612bbd610a3e61ffff16886126ad90919063ffffffff16565b61275b90919063ffffffff16565b600560008481526020019081526020016000205461311090919063ffffffff16565b6005600083815260200190815260200160002081905550612c3561271061ffff16612c276105a161ffff16876126ad90919063ffffffff16565b61275b90919063ffffffff16565b91505b612c4185613522565b9250612c9585600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128e690919063ffffffff16565b600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d4e612d0085612cf286896128e690919063ffffffff16565b6128e690919063ffffffff16565b600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461311090919063ffffffff16565b600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612dc261271061ffff16612db4611a0b61ffff16866126ad90919063ffffffff16565b61275b90919063ffffffff16565b82019150612e52612df06064612de2605a866126ad90919063ffffffff16565b61275b90919063ffffffff16565b6009600073a377433831e83c7a4fa10fb75c33217cd7cabec273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461311090919063ffffffff16565b6009600073a377433831e83c7a4fa10fb75c33217cd7cabec273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f35612ed36064612ec5600a866126ad90919063ffffffff16565b61275b90919063ffffffff16565b6009600073cd8dcba8e4791b19719934886a8ba77ea3fad44773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461311090919063ffffffff16565b6009600073cd8dcba8e4791b19719934886a8ba77ea3fad44773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612fc5612fb483612fa6868861311090919063ffffffff16565b6128e690919063ffffffff16565b6014546128e690919063ffffffff16565b601481905550612fe7600054612fd9610dac565b61311090919063ffffffff16565b60076000838152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a350505050505050565b6000600763ffffffff16828161307e57fe5b049050919050565b6000808214156130fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f47524953453a20536166654d617468204d6f64206661696c656400000000000081525060200191505060405180910390fd5b81838161310757fe5b06905092915050565b60008082840190508381101561318e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f47524953453a20536166654d61746820416464206661696c656400000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156131d257600080fd5b61322481600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128e690919063ffffffff16565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061327c816014546128e690919063ffffffff16565b60148190555061329960005460145461311090919063ffffffff16565b600760006132a5611d9e565b815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600042905090565b600061333b613336613321565b61355b565b905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561337a57600080fd5b61338f8160145461311090919063ffffffff16565b6014819055506133e781600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461311090919063ffffffff16565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613446600054613438610dac565b61311090919063ffffffff16565b60076000613452611d9e565b8152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600060016134e26134dd613321565b613599565b01905090565b600061351b61271061ffff1661350d61015b61ffff16856126ad90919063ffffffff16565b61275b90919063ffffffff16565b9050919050565b600061355461271061ffff16613546601e61ffff16856126ad90919063ffffffff16565b61275b90919063ffffffff16565b9050919050565b60006201518063ffffffff167f000000000000000000000000000000000000000000000000000000000000000083038161359157fe5b049050919050565b600061384063ffffffff167f00000000000000000000000000000000000000000000000000000000000000008303816135ce57fe5b04905091905056fe4752495345202d205472616e73636174696f6e2052657761726420697320616c7265616479206265656e20636c61696d65644752495345202d20596f7520617265206c6174652f6561726c7920746f20636c61696d207265776172644752495345202d20546f6b656e20686f6c64657220646f65736e6f7420656e6f7567682062616c616e636520746f20636c61696d207265776172644752495345202d205472616e73636174696f6e205265776172642077696e646f77206973206e6f742079656174206f70656ea264697066735822122093537cbdcf92071b83c90a906e00dd6e5d4a006ad23d8d948d9395e4ca34eee564736f6c6343000706003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b475249534520544f4b454e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044752534500000000000000000000000000000000000000000000000000000000

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b475249534520544f4b454e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044752534500000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : tokenName (string): GRISE TOKEN
Arg [1] : tokenSymbol (string): GRSE

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [3] : 475249534520544f4b454e000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [5] : 4752534500000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

93:17810:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17130:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17577:131;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1331:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16039:535;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2778:254;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1813:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;339:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3168:430;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1651:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14193:329;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11570:962;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9057:331;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15595:436;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16582:263;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17716:184;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1990:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14530:342;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;377:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;576:116:6;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1488:89:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15154:433;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13914:267;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9574:318;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2108:262;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;297:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11331:227;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17443:126;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17305:130;;;:::i;:::-;;;;;;;;;;;;;;;;;;;700:132:6;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14880:266:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10077:318;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2502:193;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10887:234;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;148:129:6;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16853:269:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12544:1362;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17130:167;17239:7;17271:9;:18;17281:7;17271:18;;;;;;;;;;;;;;;;17264:25;;17130:167;;;:::o;17577:131::-;17654:7;17686:14;17679:21;;17577:131;:::o;1331:85::-;1370:13;1403:5;1396:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1331:85;:::o;16039:535::-;16180:20;16258:16;;;;;;;;;;;16242:32;;:12;:10;:12::i;:::-;:32;;;16220:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16347:11;16361:8;16347:22;;16343:224;16377:6;16371:3;:12;16343:224;;;16432:123;16539:10;:15;16550:3;16539:15;;;;;;;;;;;;16432:72;546:4:1;16432:72:3;;:17;:22;16450:3;16432:22;;;;;;;;;;;;:56;;:72;;;;:::i;:::-;:106;;:123;;;;:::i;:::-;16416:139;;;;16385:5;;;;;;;16343:224;;;;16039:535;;;;:::o;2778:254::-;2889:4;2911:89;2934:12;:10;:12::i;:::-;2961:7;2983:6;2911:8;:89::i;:::-;3020:4;3013:11;;2778:254;;;;:::o;1813:91::-;1857:7;1884:12;;1877:19;;1813:91;:::o;339:31::-;;;;;;;;;;;;;:::o;3168:430::-;3311:4;3337:132;3346:6;3367:12;:10;:12::i;:::-;3381:77;3437:6;3381:11;:19;3393:6;3381:19;;;;;;;;;;;;;;;:33;3401:12;:10;:12::i;:::-;3381:33;;;;;;;;;;;;;;;;:37;;:77;;;;:::i;:::-;3337:8;:132::i;:::-;3482:86;3506:6;3527:9;3551:6;3482:9;:86::i;:::-;3586:4;3579:11;;3168:430;;;;;:::o;1651:84::-;1694:5;1719:8;;;;;;;;;;;1712:15;;1651:84;:::o;14193:329::-;14324:16;;;;;;;;;;;14308:32;;:12;:10;:12::i;:::-;:32;;;14286:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14439:1;14421:6;:15;14428:7;14421:15;;;;;;;;;;;;;;;;;;;;;;;;;:19;;;14417:98;;;14502:1;14484:6;:15;14491:7;14484:15;;;;;;;;;;;;;;;;;;;;;;;;;:19;14466:6;:15;14473:7;14466:15;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;14417:98;14193:329;:::o;11570:962::-;11662:20;11711:12;11726:17;:15;:17::i;:::-;11711:32;;11796:1;11769:23;11779:12;:10;:12::i;:::-;11769:9;:23::i;:::-;:28;;11768:105;;;;11815:18;:32;11834:12;:10;:12::i;:::-;11815:32;;;;;;;;;;;;;;;:58;11848:24;11867:4;11848:18;:24::i;:::-;11815:58;;;;;;;;;;;;;;;;;;;;;11768:105;:170;;;;11920:18;:16;:18::i;:::-;11892:24;11911:4;11892:18;:24::i;:::-;:46;;11768:170;11764:761;;;11979:1;11964:16;;11764:761;;;12035:22;12083:1;12060:20;400:1:1;12060:20:3;;:4;:8;;:20;;;;:::i;:::-;:24;:155;;12195:20;400:1:1;12195:20:3;;:4;:8;;:20;;;;:::i;:::-;12060:155;;;12125:30;12134:20;400:1:1;12134:20:3;;:4;:8;;:20;;;;:::i;:::-;12125:4;:8;;:30;;;;:::i;:::-;12060:155;12035:180;;12237:11;12251:14;12237:28;;12232:282;12273:4;12267:3;:10;12232:282;;;12334:164;12482:10;:15;12493:3;12482:15;;;;;;;;;;;;12334:97;12407:9;:23;12417:12;:10;:12::i;:::-;12407:23;;;;;;;;;;;;;;;;12334:17;:22;12352:3;12334:22;;;;;;;;;;;;:72;;:97;;;;:::i;:::-;:147;;:164;;;;:::i;:::-;12318:180;;;;12279:5;;;;;;;12232:282;;;;11764:761;;11570:962;;:::o;9057:331::-;9212:12;:10;:12::i;:::-;9190:34;;:18;;;;;;;;;;;:34;;;9168:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9316:20;9293;;:43;;;;;;;;;;;;;;;;;;9376:3;9347:18;;:33;;;;;;;;;;;;;;;;;;9057:331;:::o;15595:436::-;15734:20;15810:16;;;;;;;;;;;15794:32;;:12;:10;:12::i;:::-;:32;;;15772:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15899:11;15913:8;15899:22;;15895:129;15929:6;15923:3;:12;15895:129;;;15984:23;:28;16008:3;15984:28;;;;;;;;;;;;15968:44;;;;15937:5;;;;;;;15895:129;;;;15595:436;;;;:::o;16582:263::-;16666:13;16741:1;16705:33;400:1:1;16705:33:3;;:17;:15;:17::i;:::-;:21;;:33;;;;:::i;:::-;:37;:132;;16836:1;16705:132;;;16779:33;400:1:1;16779:33:3;;:17;:15;:17::i;:::-;:21;;:33;;;;:::i;:::-;400:1:1;16766:46:3;;;16705:132;16697:140;;16582:263;:::o;17716:184::-;17818:11;17875:1;17857:6;:15;17864:7;17857:15;;;;;;;;;;;;;;;;;;;;;;;;;:19;;;17856:36;;17887:5;17856:36;;;17880:4;17856:36;17847:45;;17716:184;;;:::o;1990:110::-;2047:7;2074:9;:18;2084:7;2074:18;;;;;;;;;;;;;;;;2067:25;;1990:110;;;:::o;14530:342::-;14668:16;;;;;;;;;;;14652:32;;:12;:10;:12::i;:::-;:32;;;14630:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14779:12;14765:11;:26;;;;14834:30;14852:11;;14834:13;:11;:13::i;:::-;:17;;:30;;;;:::i;:::-;14802:10;:29;14813:17;:15;:17::i;:::-;14802:29;;;;;;;;;;;:62;;;;14530:342;:::o;377:31::-;;;;;;;;;;;;;:::o;576:116:6:-;625:7;400:1:1;653:30:6;;:17;:15;:17::i;:::-;:30;;;;;;645:39;;576:116;:::o;1488:89:3:-;1529:13;1562:7;1555:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1488:89;:::o;15154:433::-;15293:20;15369:16;;;;;;;;;;;15353:32;;:12;:10;:12::i;:::-;:32;;;15331:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15458:11;15472:8;15458:22;;15454:126;15488:6;15482:3;:12;15454:126;;;15543:20;:25;15564:3;15543:25;;;;;;;;;;;;15527:41;;;;15496:5;;;;;;;15454:126;;;;15154:433;;;;:::o;13914:267::-;14043:16;;;;;;;;;;;14027:32;;:12;:10;:12::i;:::-;:32;;;14005:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14172:1;14154:6;:15;14161:7;14154:15;;;;;;;;;;;;;;;;;;;;;;;;;:19;14136:6;:15;14143:7;14136:15;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;13914:267;:::o;9574:318::-;9723:12;:10;:12::i;:::-;9704:31;;:15;;;;;;;;;;;:31;;;9682:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9823:20;9804:16;;:39;;;;;;;;;;;;;;;;;;9880:3;9854:15;;:30;;;;;;;;;;;;;;;;;;9574:318;:::o;2108:262::-;2222:4;2246:92;2270:12;:10;:12::i;:::-;2297:9;2321:6;2246:9;:92::i;:::-;2358:4;2351:11;;2108:262;;;;:::o;297:35::-;;;;;;;;;;;;;:::o;11331:227::-;10483:20;;;;;;;;;;;10467:36;;:12;:10;:12::i;:::-;:36;;;:85;;;;10536:16;;;;;;;;;;;10520:32;;:12;:10;:12::i;:::-;:32;;;10467:85;:134;;;;10585:16;;;;;;;;;;;10569:32;;:12;:10;:12::i;:::-;:32;;;10467:134;10444:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11481:69:::1;11501:16;11532:7;11481:5;:69::i;:::-;11331:227:::0;;:::o;17443:126::-;17518:7;17550:11;17543:18;;17443:126;:::o;17305:130::-;17380:7;17412:15;17405:22;;17305:130;:::o;700:132:6:-;748:7;788:11;775:9;:7;:9::i;:::-;:24;;:49;;823:1;775:49;;;802:18;:16;:18::i;:::-;775:49;768:56;;700:132;:::o;14880:266:3:-;15019:16;;;;;;;;;;;15003:32;;:12;:10;:12::i;:::-;:32;;;14981:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15131:7;15112:16;:26;;;;14880:266;:::o;10077:318::-;10226:12;:10;:12::i;:::-;10207:31;;:15;;;;;;;;;;;:31;;;10185:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10326:20;10307:16;;:39;;;;;;;;;;;;;;;;;;10383:3;10357:15;;:30;;;;;;;;;;;;;;;;;;10077:318;:::o;2502:193::-;2628:7;2660:11;:18;2672:5;2660:18;;;;;;;;;;;;;;;:27;2679:7;2660:27;;;;;;;;;;;;;;;;2653:34;;2502:193;;;;:::o;10887:234::-;10483:20;;;;;;;;;;;10467:36;;:12;:10;:12::i;:::-;:36;;;:85;;;;10536:16;;;;;;;;;;;10520:32;;:12;:10;:12::i;:::-;:32;;;10467:85;:134;;;;10585:16;;;;;;;;;;;10569:32;;:12;:10;:12::i;:::-;:32;;;10467:134;10444:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11044:69:::1;11064:16;11095:7;11044:5;:69::i;:::-;10887:234:::0;;:::o;148:129:6:-;193:7;233:14;220:9;:7;:9::i;:::-;:27;;:49;;268:1;220:49;;;250:15;:13;:15::i;:::-;220:49;213:56;;148:129;:::o;16853:269:3:-;16940:13;17016:1;16979:34;400:1:1;438;:14;16979:34:3;;:17;:15;:17::i;:::-;:21;;:34;;;;:::i;:::-;:38;:135;;17113:1;16979:135;;;17055:34;400:1:1;438;:14;17055:34:3;;:17;:15;:17::i;:::-;:21;;:34;;;;:::i;:::-;400:1:1;438;:14;17041:48:3;;;16979:135;16971:143;;16853:269;:::o;12544:1362::-;12621:20;12663:12;12678:17;:15;:17::i;:::-;12663:32;;12755:1;12729:23;12739:12;:10;:12::i;:::-;12729:9;:23::i;:::-;:27;12706:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12925:1;12887:33;400:1:1;12887:33:3;;:17;:15;:17::i;:::-;:21;;:33;;;;:::i;:::-;12886:40;12864:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13075:18;:16;:18::i;:::-;13047:24;13066:4;13047:18;:24::i;:::-;:46;13025:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13208:18;:32;13227:12;:10;:12::i;:::-;13208:32;;;;;;;;;;;;;;;:52;13241:18;:16;:18::i;:::-;13208:52;;;;;;;;;;;;;;;;;;;;;13207:53;13184:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13356:11;13370:20;400:1:1;13370:20:3;;:4;:8;;:20;;;;:::i;:::-;13356:34;;13351:268;13398:4;13392:3;:10;13351:268;;;13451:156;13591:10;:15;13602:3;13591:15;;;;;;;;;;;;13451:93;13520:9;:23;13530:12;:10;:12::i;:::-;13520:23;;;;;;;;;;;;;;;;13451:17;:22;13469:3;13451:22;;;;;;;;;;;;:68;;:93;;;;:::i;:::-;:139;;:156;;;;:::i;:::-;13435:172;;;;13404:5;;;;;;;13351:268;;;;13671:70;13691:12;:10;:12::i;:::-;13718;13671:5;:70::i;:::-;13817:4;13762:18;:32;13781:12;:10;:12::i;:::-;13762:32;;;;;;;;;;;;;;;:52;13795:18;:16;:18::i;:::-;13762:52;;;;;;;;;;;;:59;;;;;;;;;;;;;;;;;;13851:12;:10;:12::i;:::-;13834:64;;;13865:18;:16;:18::i;:::-;13885:12;13834:64;;;;;;;;;;;;;;;;;;;;;;;;12544:1362;;:::o;162:106:0:-;215:15;250:10;243:17;;162:106;:::o;466:253:5:-;524:7;555:1;550;:6;:16;;;;565:1;560;:6;550:16;546:57;;;590:1;583:8;;;;546:57;615:9;631:1;627;:5;615:17;;660:1;655;651;:5;;;;;;:10;643:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;710:1;703:8;;;466:253;;;;;:::o;727:191::-;785:7;824:1;819;:6;815:47;;;849:1;842:8;;;;815:47;874:9;890:1;886;:5;;;;;;874:17;;909:1;902:8;;;727:191;;;;;:::o;8422:431:3:-;8612:3;8595:21;;:5;:21;;;;8573:54;;;;;;8681:3;8662:23;;:7;:23;;;;8640:56;;;;;;8739:6;8709:11;:18;8721:5;8709:18;;;;;;;;;;;;;;;:27;8728:7;8709:27;;;;;;;;;;;;;;;:36;;;;8806:7;8763:82;;8786:5;8763:82;;;8828:6;8763:82;;;;;;;;;;;;;;;;;;8422:431;;;:::o;280:178:5:-;338:7;371:1;366;:6;;358:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;414:9;430:1;426;:5;414:17;;449:1;442:8;;;280:178;;;;:::o;3919:2583:3:-;4114:3;4096:22;;:6;:22;;;;4074:55;;;;;;4185:3;4164:25;;:9;:25;;;;4142:58;;;;;;4213:13;4237;4261:18;4290:23;4316:18;:16;:18::i;:::-;4290:44;;4369:1;4351:6;:14;4358:6;4351:14;;;;;;;;;;;;;;;;;;;;;;;;;:19;;;4347:1182;;;4395:31;4419:6;4395:23;:31::i;:::-;4387:39;;4490:67;4551:5;4490:13;:30;4504:15;4490:30;;;;;;;;;;;;:60;;:67;;;;:::i;:::-;4443:13;:30;4457:15;4443:30;;;;;;;;;;;:114;;;;4647:207;4718:135;4836:16;;4718:87;597:3:1;4718:87:3;;:34;828:4:1;4718:34:3;;:5;:9;;:34;;;;:::i;:::-;:64;;:87;;;;:::i;:::-;:117;;:135;;;;:::i;:::-;4647:23;:40;4671:15;4647:40;;;;;;;;;;;;:70;;:207;;;;:::i;:::-;4590:23;:40;4614:15;4590:40;;;;;;;;;;;:264;;;;4941:201;5009:132;5124:16;;5009:84;597:3:1;5009:84:3;;:31;878:4:1;5009:31:3;;:5;:9;;:31;;;;:::i;:::-;:61;;:84;;;;:::i;:::-;:114;;:132;;;;:::i;:::-;4941:20;:37;4962:15;4941:37;;;;;;;;;;;;:67;;:201;;;;:::i;:::-;4887:20;:37;4908:15;4887:37;;;;;;;;;;;:255;;;;5226:156;5291:90;597:3:1;5291:90:3;;:37;934:4:1;5291:37:3;;:5;:9;;:37;;;;:::i;:::-;:67;;:90;;;;:::i;:::-;5226:17;:34;5244:15;5226:34;;;;;;;;;;;;:64;;:156;;;;:::i;:::-;5175:17;:34;5193:15;5175:34;;;;;;;;;;;:207;;;;5424:93;597:3:1;5424:93:3;;:34;987:4:1;5424:34:3;;:5;:9;;:34;;;;:::i;:::-;:70;;:93;;;;:::i;:::-;5411:106;;4347:1182;5549:30;5572:6;5549:22;:30::i;:::-;5541:38;;5629:29;5651:6;5629:9;:17;5639:6;5629:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;5600:9;:17;5610:6;5600:17;;;;;;;;;;;;;;;:58;;;;5703:54;5728:28;5750:5;5728:17;5739:5;5728:6;:10;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;5703:9;:20;5713:9;5703:20;;;;;;;;;;;;;;;;:24;;:54;;;;:::i;:::-;5671:9;:20;5681:9;5671:20;;;;;;;;;;;;;;;:86;;;;5784:88;597:3:1;5784:88:3;;:32;1160:4:1;5784:32:3;;:5;:9;;:32;;;;:::i;:::-;:65;;:88;;;;:::i;:::-;5770:102;;;;5929:56;5957:27;5980:3;5957:18;5972:2;5957:10;:14;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;5929:9;:23;1280:42:1;5929:23:3;;;;;;;;;;;;;;;;:27;;:56;;;;:::i;:::-;5893:9;:23;1280:42:1;5893:23:3;;;;;;;;;;;;;;;:92;;;;6039:61;6072:27;6095:3;6072:18;6087:2;6072:10;:14;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;6039:9;:28;1366:42:1;6039:28:3;;;;;;;;;;;;;;;;:32;;:61;;;;:::i;:::-;5998:9;:28;1366:42:1;5998:28:3;;;;;;;;;;;;;;;:102;;;;6260:50;6277:32;6298:10;6277:16;6287:5;6277;:9;;:16;;;;:::i;:::-;:20;;:32;;;;:::i;:::-;6260:12;;:16;;:50;;;;:::i;:::-;6236:12;:74;;;;6353:30;6371:11;;6353:13;:11;:13::i;:::-;:17;;:30;;;;:::i;:::-;6323:10;:27;6334:15;6323:27;;;;;;;;;;;:60;;;;6453:9;6409:85;;6432:6;6409:85;;;6477:6;6409:85;;;;;;;;;;;;;;;;;;3919:2583;;;;;;;:::o;1393:119:7:-;1458:7;400:1:1;1486:17:7;;:4;:17;;;;;;1478:26;;1393:119;;;:::o;926:154:5:-;984:7;1017:1;1012;:6;;1004:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1071:1;1067;:5;;;;;;1060:12;;926:154;;;;:::o;94:178::-;152:7;172:9;188:1;184;:5;172:17;;213:1;208;:6;;200:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;263:1;256:8;;;94:178;;;;:::o;7631:515:3:-;7796:3;7777:23;;:7;:23;;;;7755:56;;;;;;7858:30;7881:6;7858:9;:18;7868:7;7858:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;7828:9;:18;7838:7;7828:18;;;;;;;;;;;;;;;:60;;;;7925:24;7942:6;7925:12;;:16;;:24;;;;:::i;:::-;7901:12;:48;;;;7994:29;8011:11;;7994:12;;:16;;:29;;;;:::i;:::-;7962:10;:29;7973:17;:15;:17::i;:::-;7962:29;;;;;;;;;;;:61;;;;8102:3;8049:89;;8072:7;8049:89;;;8121:6;8049:89;;;;;;;;;;;;;;;;;;7631:515;;:::o;1359:92:6:-;1401:7;1428:15;1421:22;;1359:92;:::o;840:115::-;891:7;918:29;937:9;:7;:9::i;:::-;918:18;:29::i;:::-;911:36;;840:115;:::o;6776:520:3:-;6941:3;6922:23;;:7;:23;;;;6900:56;;;;;;7001:24;7018:6;7001:12;;:16;;:24;;;;:::i;:::-;6977:12;:48;;;;7068:30;7091:6;7068:9;:18;7078:7;7068:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;7038:9;:18;7048:7;7038:18;;;;;;;;;;;;;;;:60;;;;7143:30;7161:11;;7143:13;:11;:13::i;:::-;:17;;:30;;;;:::i;:::-;7111:10;:29;7122:17;:15;:17::i;:::-;7111:29;;;;;;;;;;;:62;;;;7249:7;7199:89;;7230:3;7199:89;;;7271:6;7199:89;;;;;;;;;;;;;;;;;;6776:520;;:::o;286:113:6:-;334:7;390:1;361:26;377:9;:7;:9::i;:::-;361:15;:26::i;:::-;:30;354:37;;286:113;:::o;1047:164:7:-;1121:7;1148:55;597:3:1;1148:55:7;;:28;744:3:1;1148:28:7;;:8;:12;;:28;;;;:::i;:::-;:32;;:55;;;;:::i;:::-;1141:62;;1047:164;;;:::o;1219:162::-;1292:7;1319:54;597:3:1;1319:54:7;;:27;1081:2:1;1319:27:7;;:8;:12;;:27;;;;:::i;:::-;:31;;:54;;;;:::i;:::-;1312:61;;1219:162;;;:::o;1193:158:6:-;1264:7;305:8:1;1299:43:6;;1313:11;1300:10;:24;1299:43;;;;;;1284:59;;1193:158;;;:::o;407:161::-;475:7;356::1;510:49:6;;524:14;511:10;:27;510:49;;;;;;495:65;;407:161;;;:::o

Swarm Source

ipfs://93537cbdcf92071b83c90a906e00dd6e5d4a006ad23d8d948d9395e4ca34eee5
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.