ETH Price: $3,241.86 (+1.76%)
 

Overview

ETH Balance

1 wei

Eth Value

Less Than $0.01 (@ $3,241.86/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer216040832025-01-11 21:59:4719 days ago1736632787IN
HYPE Token
0 ETH0.000387663.85218609
Transfer215826522025-01-08 22:09:3522 days ago1736374175IN
HYPE Token
0 ETH0.00072377.19126983
Transfer215469892025-01-03 22:38:1127 days ago1735943891IN
HYPE Token
0 ETH0.0011682911.60913142
Transfer209029192024-10-06 0:26:59117 days ago1728174419IN
HYPE Token
0 ETH0.00016312.45589704
Approve202962062024-07-13 7:51:11201 days ago1720857071IN
HYPE Token
0 ETH0.000066321.42817918
Transfer202617872024-07-08 12:27:47206 days ago1720441667IN
HYPE Token
0 ETH0.000402544
Transfer194758502024-03-20 12:16:35316 days ago1710936995IN
HYPE Token
0 ETH0.003786637.62674461
Transfer192374962024-02-16 2:29:11350 days ago1708050551IN
HYPE Token
0 ETH0.0028219128.04083127
Transfer188258752023-12-20 8:16:47407 days ago1703060207IN
HYPE Token
0 ETH0.0070770.25322599
Transfer166568692023-02-18 17:01:47712 days ago1676739707IN
HYPE Token
0 ETH0.0017247226.76649999
Transfer158515382022-10-29 5:09:23825 days ago1667020163IN
HYPE Token
0 ETH0.000932869.26973115
Transfer154989802022-09-08 21:41:24875 days ago1662673284IN
HYPE Token
0 ETH0.0034618731.40758908
Transfer154987632022-09-08 20:52:06875 days ago1662670326IN
HYPE Token
0 ETH0.0040254440
Transfer154226392022-08-27 16:23:47887 days ago1661617427IN
HYPE Token
0 ETH0.000515488
Transfer152586672022-08-01 19:54:28913 days ago1659383668IN
HYPE Token
0 ETH0.0014666914.57428835
Transfer152465992022-07-30 22:53:02915 days ago1659221582IN
HYPE Token
0 ETH0.000301873
Transfer144421912022-03-23 11:08:311044 days ago1648033711IN
HYPE Token
0 ETH0.0019120819
Transfer141752462022-02-10 0:54:251086 days ago1644454465IN
HYPE Token
0 ETH0.0062588962.193447
Transfer141710352022-02-09 9:19:301086 days ago1644398370IN
HYPE Token
0 ETH0.0042941142.66972983
Approve139023472021-12-29 20:16:001128 days ago1640808960IN
HYPE Token
0 ETH0.00509466109
Transfer137068602021-11-29 5:49:201159 days ago1638164960IN
HYPE Token
0 ETH0.01240803112.558833
Transfer135557812021-11-05 9:26:131182 days ago1636104373IN
HYPE Token
0 ETH0.01191646118.4115227
Transfer131195342021-08-29 9:21:401250 days ago1630228900IN
HYPE Token
0 ETH0.0071451571.00000145
Transfer130139612021-08-13 1:56:341267 days ago1628819794IN
HYPE Token
0 ETH0.0045196741
Transfer129811852021-08-08 0:24:511272 days ago1628382291IN
HYPE Token
0 ETH0.0062394362
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block
From
To
86390272019-09-28 19:00:001951 days ago1569697200
HYPE Token
1 wei
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
HYPEtoken

Compiler Version
v0.5.10+commit.5a6ea5b1

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-07-20
*/

pragma solidity 0.5.10;  /*


    
    ___________________________________________________________________
      _      _                                        ______           
      |  |  /          /                                /              
    --|-/|-/-----__---/----__----__---_--_----__-------/-------__------
      |/ |/    /___) /   /   ' /   ) / /  ) /___)     /      /   )     
    __/__|____(___ _/___(___ _(___/_/_/__/_(___ _____/______(___/__o_o_
    
        
       
        
    ██╗  ██╗██╗   ██╗██████╗ ███████╗    ████████╗ ██████╗ ██╗  ██╗███████╗███╗   ██╗
    ██║  ██║╚██╗ ██╔╝██╔══██╗██╔════╝    ╚══██╔══╝██╔═══██╗██║ ██╔╝██╔════╝████╗  ██║
    ███████║ ╚████╔╝ ██████╔╝█████╗         ██║   ██║   ██║█████╔╝ █████╗  ██╔██╗ ██║
    ██╔══██║  ╚██╔╝  ██╔═══╝ ██╔══╝         ██║   ██║   ██║██╔═██╗ ██╔══╝  ██║╚██╗██║
    ██║  ██║   ██║   ██║     ███████╗       ██║   ╚██████╔╝██║  ██╗███████╗██║ ╚████║
    ╚═╝  ╚═╝   ╚═╝   ╚═╝     ╚══════╝       ╚═╝    ╚═════╝ ╚═╝  ╚═╝╚══════╝╚═╝  ╚═══╝
                                                                                     
                                                                                     


----------------------------------------------------------------------------------------------------

=== MAIN FEATURES ===
    => Higher degree of control by owner - safeGuard functionality
    => SafeMath implementation 
    => Earning on token for fixed-deposit

------------------------------------------------------------------------------------------------------
 Copyright (c) 2019 onwards HYPE Inc. ( https://hypetoken.io )
 Contract designed with ❤ by EtherAuthority  ( https://EtherAuthority.io )
------------------------------------------------------------------------------------------------------
*/

/* Safemath library */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, "SafeMath: division by zero");
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0, "SafeMath: modulo by zero");
        return a % b;
    }
}

// Owner Handler
contract ownerShip    // Auction Contract Owner and OwherShip change
{
    //Global storage declaration
    address payable public owner;

    address payable public newOwner;

    bool public safeGuard ; // To hault all non owner functions in case of imergency

    //Event defined for ownership transfered
    event OwnershipTransferredEv(address payable indexed previousOwner, address payable indexed newOwner);


    //Sets owner only on first run
    constructor() public 
    {
        //Set contract owner
        owner = msg.sender;
        // Disabled global hault on first deploy
        safeGuard = false;

    }

    //This will restrict function only for owner where attached
    modifier onlyOwner() 
    {
        require(msg.sender == owner);
        _;
    }


    function transferOwnership(address payable _newOwner) public onlyOwner 
    {
        newOwner = _newOwner;
    }


    //the reason for this flow is to protect owners from sending ownership to unintended address due to human error
    function acceptOwnership() public 
    {
        require(msg.sender == newOwner);
        emit OwnershipTransferredEv(owner, newOwner);
        owner = newOwner;
        newOwner = address(0);
    }

    function changesafeGuardStatus() onlyOwner public
    {
        if (safeGuard == false)
        {
            safeGuard = true;
        }
        else
        {
            safeGuard = false;    
        }
    }

}



contract tokenERC20 is  ownerShip
{
    // Public variables of the token
    using SafeMath for uint256;
    bytes32 public name;
    bytes8 public symbol;
    uint8 public decimals; // places of decimal
    uint256 public totalSupply;
    uint256 public totalMintAfterInitial;
    uint256 public maximumSupply;

    uint public burningRate = 500;    // 500=5%

    // struct to store token and ether value 
    struct userBalance 
    {
        uint256 totalValue;
        uint256 freezeValue;
        uint256 freezeDate;
        uint256 meltValue;    
    }

    // Mapped storage for token  ( If token address is 0 means ether)
    mapping (address => mapping (address => userBalance)) public tokens;


        // This creates an array with all balances
    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) public allowance;
    
    /* Records for the fronzen accounts */
    mapping (address => bool) public frozenAccount;
        
    /* This generates a public event on the blockchain that will notify clients */
    event FrozenFunds(address target, bool frozen);
    
    // This generates a public event on the blockchain that will notify clients
    event Transfer(address indexed from, address indexed to, uint256 value);
  
    
    // This notifies clients about the amount burnt
    event Burn(address indexed from, uint256 value);

     //Calculate percent and return result
    function calculatePercentage(uint256 PercentOf, uint256 percentTo ) internal pure returns (uint256) 
    {
        uint256 factor = 10000;
        require(percentTo <= factor);
        uint256 c = PercentOf.mul(percentTo).div(factor);
        return c;
    }   

    function setBurningRate(uint _burningRate) onlyOwner public returns(bool success)
    {
        burningRate = _burningRate;
        return true;
    }



    //Token type defnition
    struct tokenTypeData
    {
        bytes32 tokenName;
        bytes8 tokenSymbol;
        uint decimalCount;
        uint minFreezingValue;
        uint rateFactor;      // % of token balance amount = "effective balance amount" to calculate interest
        uint perDayFreezeRate;   //1000 = 10% ,10 = 0.1%, 1 = 0.01%
        bool freezingAllowed;   // If false this token type is not allowed or accepted to freeze
    }
    // Mapped storage struct for token type  data
    mapping (address => tokenTypeData) public tokenTypeDatas;


        /**
         * Constrctor function
         *
         * Initializes contract with initial supply tokens to the creator of the contract
         */
    constructor () public {
    	decimals = 18; // 18 decimal places
        totalSupply = 50000000000000000000000000;       // 50 Million with 18 decimal places
        maximumSupply = 100000000000000000000000000;         // 100 Million with 18 decimal places
        balanceOf[msg.sender]=totalSupply;       // tokens will be sent to owner
        tokens[address(this)][owner].totalValue = balanceOf[msg.sender];
        name = "HYPE Token";                           // Set the name for display purposes
        symbol = "HYPE";                       // Set the symbol for display purposes

        //In house token type data update
        tokenTypeData memory temp;

        temp.tokenName=name;
        temp.tokenSymbol=symbol;
        temp.decimalCount=decimals;
        temp.minFreezingValue=100;
        temp.rateFactor=10000;   //10000 = 100% means token amount = effective amount   
        temp.perDayFreezeRate=100;   // 1% daily freezing reward
        temp.freezingAllowed=true;  
        tokenTypeDatas[address(this)] = temp;
        emit Transfer(address(0), msg.sender, totalSupply);
    }
    
         /* Internal transfer, only can be called by this contract */
        function _transfer(address _from, address _to, uint _value) internal {
            require(!safeGuard,"safeGuard Active");
			require (_to != address(0),"to is address 0");                               // Prevent transfer to 0x0 address. Use burn() instead
			require (balanceOf[_from] >= _value, "no balance in from");               // Check if the sender has enough
			require (balanceOf[_to].add(_value) >= balanceOf[_to],"overflow balance"); // Check for overflows
			require(!frozenAccount[_from],"from account frozen");                     // Check if sender is frozen
			require(!frozenAccount[_to],"to account frozen");                       // Check if recipient is frozen
			balanceOf[_from] = balanceOf[_from].sub(_value);    // Subtract from the sender
            tokens[address(this)][_from].totalValue = tokens[address(this)][_from].totalValue.sub(_value); //parallel record for multi token addressing need
			balanceOf[_to] = balanceOf[_to].add(_value);        // Add the same to the recipient
            tokens[address(this)][_to].totalValue = tokens[address(this)][_to].totalValue.add(_value);   //parallel record for multi token addressing need         
            uint burnValue;
            if(!(msg.sender == owner || msg.sender == address(this)))   // burn if sender is not this contract or owner
            {
                burnValue = calculatePercentage(_value,burningRate); //amount to burn
                require(burnInternal(_to, burnValue),"burning failed");   // burnt from receiver
            }
			emit Transfer(_from, _to,_value);
            
        } 

        function burnInternal(address _burnFrom, uint _burnValue) internal returns(bool success)
        {   
            require(!safeGuard,"safeGuard Active");
            require(_burnFrom != address(0));
            require(balanceOf[_burnFrom] >= _burnValue);   // Check if the sender has enough
			require(!frozenAccount[_burnFrom],"to account frozen");                       // Check if recipient is frozen
			balanceOf[_burnFrom] = balanceOf[_burnFrom].sub(_burnValue);    // Subtract from the sender
            tokens[address(this)][_burnFrom].totalValue = tokens[address(this)][_burnFrom].totalValue.sub(_burnValue); //parallel record for multi token addressing need
			balanceOf[address(0)] = balanceOf[address(0)].add(_burnValue);        // Add the same to the recipient
            tokens[address(this)][address(0)].totalValue = tokens[address(this)][address(0)].totalValue.add(_burnValue);   //parallel record for multi token addressing need         
            totalSupply = totalSupply.sub(_burnValue);            
			emit Transfer(_burnFrom, address(0),_burnValue);                         // Update totalSupply
            return true;            
        }

		function mintInternal(uint256 mintedAmount)  internal returns (bool success) {                         
			totalSupply = totalSupply.add(mintedAmount);
            totalMintAfterInitial = totalMintAfterInitial.add(mintedAmount);
		 	//emit Transfer(address(0), address(this), mintedAmount);
            return true;
		}



        /**
         * Transfer tokens
         *
         * Send `_value` tokens to `_to` from your account
         *
         * @param _to The address of the recipient
         * @param _value the amount to send
         */
    function transfer(address _to, uint256 _value) public returns (bool success) {
         _transfer(msg.sender, _to, _value);
        return true;
    }
    
        /**
         * Transfer tokens from other address
         *
         * Send `_value` tokens to `_to` in behalf of `_from`
         *
         * @param _from The address of the sender
         * @param _to The address of the recipient
         * @param _value the amount to send
         */
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
        require(!safeGuard);
        require(_from != address(0),"transfer from adderss(0) is invalid");
        require(_value <= allowance[_from][msg.sender]);     // Check allowance
        allowance[_from][msg.sender] = allowance[_from][msg.sender].sub(_value);
        _transfer(_from, _to, _value);
        return true;
    }
    
        /**
         * Set allowance for other address
         *
         * Allows `_spender` to spend no more than `_value` tokens in your behalf
         *
         * @param _spender The address authorized to spend
         * @param _value the max amount they can spend
         */
    function approve(address _spender, uint256 _value) public
        returns (bool success) {
        require(!safeGuard);
        allowance[msg.sender][_spender] = _value;
        return true;
    }

        
		/// @notice Create `mintedAmount` tokens and send it to `target`
		/// @param target Address to receive the tokens
		/// @param mintedAmount the amount of tokens it will receive
		function mintToken(address target, uint256 mintedAmount)  public onlyOwner returns (bool success) {
			balanceOf[target] = balanceOf[target].add(mintedAmount);
            tokens[address(this)][target].totalValue = tokens[address(this)][target].totalValue.add(mintedAmount); //parallel record for multi token addressing need                         
			totalSupply = totalSupply.add(mintedAmount);
            totalMintAfterInitial = totalMintAfterInitial.add(mintedAmount);
		 	emit Transfer(address(0), address(this), mintedAmount);
            return true;
		}


        /**
         * Destroy tokens
         *
         * Remove `_value` tokens from the system irreversibly
         *
         * @param _value the amount of money to burn
         */
    function burn(uint256 _value) public onlyOwner returns (bool success) {
        burnInternal(msg.sender, _value);
        return true;
    }
    
        /**
         * Destroy tokens from other account
         *
         * Remove `_value` tokens from the system irreversibly on behalf of `_from`.
         *
         * @param _from the address of the sender
         * @param _value the amount of money to burn
         */
    function burnFrom(address _from, uint256 _value) public onlyOwner returns (bool success) {
        burnInternal(_from, _value);
        return true;
    }
        
}



interface ERC20Essential 
{

    function transfer(address _to, uint256 _amount) external returns (bool);
    function transferFrom(address _from, address _to, uint256 _amount) external returns (bool);

}

//Main contract starts here
contract HYPEtoken is tokenERC20
{

    using SafeMath for uint256;
    
    
    	/*************************************/
        /*  User whitelisting functionality  */
        /*************************************/
        bool public whitelistingStatus = false;
        mapping (address => bool) public whitelisted;

        
        /**
         * Change whitelisting status on or off
         *
         * When whitelisting is true, then crowdsale will only accept investors who are whitelisted.
         */
        function changeWhitelistingStatus() onlyOwner public{
            if (whitelistingStatus == false){
			    whitelistingStatus = true;
                whitelisted[owner]= true;
            }
            else{
                whitelistingStatus = false;    
            }
		}
		
		/**
         * Whitelist any user address - only Owner can do this
         *
         * It will add user address in whitelisted mapping
         */
        function whitelistUser(address userAddress) onlyOwner public{
            require(whitelistingStatus == true);
            require(userAddress != address(0));
            whitelisted[userAddress] = true;
		}    
		



		/// @notice `freeze? Prevent | Allow` `target` from sending & receiving tokens
		/// @param target Address to be frozen
		/// @param freeze either to freeze it or not
		function freezeAccount(address target, bool freeze) onlyOwner public {
				frozenAccount[target] = freeze;
			emit  FrozenFunds(target, freeze);
		}
        

        
        //Just in case, owner wants to transfer Tokens from contract to owner address
        function manualWithdrawToken(uint256 _amount) onlyOwner public {
      		uint256 tokenAmount = _amount.mul(100);
            _transfer(address(this), msg.sender, tokenAmount);
        }
          
        //Just in case, owner wants to transfer Ether from contract to owner address
        function manualWithdrawEther()onlyOwner public{
			uint256 amount=address(this).balance;
			owner.transfer(amount);
		}
		

        //To air drop
        function airDrop(address[] memory recipients,uint[] memory tokenAmount) public onlyOwner returns (bool) {
            uint reciversLength  = recipients.length;
            require(reciversLength <= 150);
            for(uint i = 0; i < reciversLength; i++)
            {
                  //This will loop through all the recipients and send them the specified tokens
                  _transfer(owner, recipients[i], tokenAmount[i]);
            }
            return true;
        }
        
        
        

    uint public meltHoldSeconds = 172800;  // 172800 seconds = 48 Hr. user can withdraw only after this period




    //Event for eexternal token deposit and withdraw

    event tokenDepositEv(address token, address user, uint amount, uint balance);
    event tokenWithdrawEv(address token, address user, uint amount, uint balance);

    function setWithdrawWaitingPeriod(uint valueInSeconds) onlyOwner public returns (bool)
    {
        meltHoldSeconds = valueInSeconds;
        return true;
    }

    function newTokenTypeData(address token,bytes32 _tokenName, bytes8 _tokenSymbol, uint _decimalCount, uint _minFreezingValue, uint _rateFactor, uint _perDayFreezeRate) onlyOwner public returns (bool)
    {
        tokenTypeData memory temp;

        temp.tokenName=_tokenName;
        temp.tokenSymbol=_tokenSymbol;
        temp.decimalCount=_decimalCount;
        temp.minFreezingValue=_minFreezingValue;
        temp.rateFactor=_rateFactor;      
        temp.perDayFreezeRate=_perDayFreezeRate;   
        temp.freezingAllowed=true;  
        tokenTypeDatas[token] = temp;
        return true;
    }

    function freezingOnOffForTokenType(address token) onlyOwner public returns (bool)
    {
        if (tokenTypeDatas[token].freezingAllowed == false)
        {
            tokenTypeDatas[token].freezingAllowed = true;
        }
        else
        {
            tokenTypeDatas[token].freezingAllowed = false;    
        } 
        return true;     
    }

    function setMinFreezingValue(address token, uint _minFreezingValue) onlyOwner public returns (bool)
    {
        tokenTypeDatas[token].minFreezingValue = _minFreezingValue;
        return true;
    }

    function setRateFactor(address token, uint _rateFactor) onlyOwner public returns (bool)
    {
        tokenTypeDatas[token].rateFactor = _rateFactor;
        return true;
    }

    function setPerDayFreezeRate(address token, uint _perDayFreezeRate) onlyOwner public returns (bool)
    {
        tokenTypeDatas[token].perDayFreezeRate = _perDayFreezeRate;
        return true;
    }

   
    

    //To deposit token
    function tokenDeposit(address token, uint amount) public 
    {
        //remember to call Token(address).approve(this, amount) or this contract will not be able to do the transfer on your behalf.
        require(token!=address(0),"Address(0) found, can't continue");
        require(ERC20Essential(token).transferFrom(msg.sender, address(this), amount),"ERC20 'transferFrom' call failed");
        tokens[token][msg.sender].totalValue = tokens[token][msg.sender].totalValue.add(amount);
        emit tokenDepositEv(token, msg.sender, amount, tokens[token][msg.sender].totalValue);
    }

    //To withdraw token
    function tokenWithdraw(address token, uint amount) public
    {
        require(!safeGuard,"System Paused By Admin");
        require(token != address(this));
        require(token!=address(0),"Address(0) found, can't continue");
        if(now.sub(meltHoldSeconds) > tokens[token][msg.sender].freezeDate)
        {
           tokens[token][msg.sender].meltValue = 0; 
        }
        require(tokens[token][msg.sender].totalValue.sub(tokens[token][msg.sender].freezeValue.add(tokens[token][msg.sender].meltValue)) >= amount,"Required amount is not free to withdraw");       
        tokens[token][msg.sender].totalValue = tokens[token][msg.sender].totalValue.sub(amount);
        ERC20Essential(token).transfer(msg.sender, amount);
        emit tokenWithdrawEv(token, msg.sender, amount, tokens[token][msg.sender].totalValue);
    }

    event releaseMyHypeEv(address token, uint amount);
    //releasing after minumum waiting period to withdraw HYPE 
    function releaseMyHype(address token) public returns (bool)
    {
        require(!safeGuard,"System Paused By Admin");
        require(token!=address(0),"Address(0) found, can't continue");
        require(token == address(this),"Only pissible for HYPE ");
        require(now.sub(meltHoldSeconds) > tokens[token][msg.sender].freezeDate,"wait period is not over");
        uint amount = tokens[token][msg.sender].meltValue;
        balanceOf[msg.sender] = balanceOf[msg.sender].add(amount);
        tokens[token][msg.sender].totalValue = balanceOf[msg.sender].add(tokens[token][msg.sender].freezeValue );
        tokens[token][msg.sender].meltValue = 0; 
        emit releaseMyHypeEv(token, amount);
        return true;
    }

    event tokenBalanceFreezeEv(address token, uint amount, uint earning);


    function tokenBalanceFreeze(address token, uint amount)   public returns (bool)
    {
        require(!safeGuard,"System Paused By Admin");
        require(tokenTypeDatas[token].freezingAllowed,"token type not allowed to freeze");
        require(token!=address(0),"Address(0) found, can't continue");
        address callingUser = msg.sender;
        require(msg.sender != address(0),"Address(0) found, can't continue");

        require(amount <=  tokens[token][callingUser].totalValue.sub(tokens[token][callingUser].freezeValue.add(tokens[token][callingUser].meltValue)) && amount >= tokenTypeDatas[token].minFreezingValue, "less than required or less balance");
        
        //before adding more freezing amount calculating earning on existing freeze amount and updating same in user ether balance
        uint freezeValue = tokens[token][callingUser].freezeValue;
        uint earnedValue;
        if (freezeValue > 0)
        {
            earnedValue = getEarning(token,callingUser,freezeValue);
            require(mintInternal(earnedValue),"minting failed");
            tokens[address(this)][callingUser].meltValue = tokens[address(this)][callingUser].meltValue.add(earnedValue);
        }

        tokens[token][callingUser].freezeValue = tokens[token][callingUser].freezeValue.add(amount);
        if (token==address(this))
        {
            balanceOf[callingUser] = balanceOf[callingUser].sub(amount);
        }
        tokens[token][callingUser].freezeDate = now;

        emit tokenBalanceFreezeEv(token,amount,earnedValue);
        return true;
    }

    function getEarning(address token,address user,uint amount) internal view returns(uint256)
    {
        uint effectiveAmount = calculatePercentage(amount,tokenTypeDatas[token].rateFactor);
        uint interestAmount = calculatePercentage(effectiveAmount,tokenTypeDatas[token].perDayFreezeRate);
        uint secondsPassed = (now - tokens[token][user].freezeDate);
        uint daysPassed=0;
        if (secondsPassed >= 86400)  // if less than one day earning will be zero
        {
           daysPassed = secondsPassed.div(86400); 
        }
        return daysPassed.mul(interestAmount);
    }


    event tokenBalanceMeltEv(address token, uint amount, uint earning);


    function tokenBalanceMelt(address token, uint amount)   public returns (bool)
    {
        require(!safeGuard,"System Paused By Admin");
        require(token!=address(0),"Address(0) found, can't continue");
        address callingUser = msg.sender;
        require(msg.sender != address(0),"Address(0) found, can't continue");
        require(amount <=  tokens[token][callingUser].freezeValue && amount > 0, "less than required or less balance");
        
        //before melting amount calculating earning on existing freeze amount and updating same in user ether balance
        uint freezeValue = tokens[token][callingUser].freezeValue;
        uint earnedValue = getEarning(token,callingUser,freezeValue);
        require(mintInternal(earnedValue),"minting failed");
        tokens[address(this)][callingUser].meltValue = tokens[address(this)][callingUser].meltValue.add(earnedValue);       
        
        tokens[token][callingUser].freezeValue = tokens[token][callingUser].freezeValue.sub(amount);
        if (token==address(this))
        {
            tokens[token][callingUser].meltValue = tokens[token][callingUser].meltValue.add(amount);
        }

        tokens[token][callingUser].freezeDate = now;
        emit tokenBalanceMeltEv(token,amount,earnedValue);
        return true;
    }

    function viewMyReward(address token) public view returns(uint freezedValue, uint rewardValue)
    {
        address callingUser = msg.sender;
        uint freezeValue = tokens[token][callingUser].freezeValue;
        uint earnedValue = getEarning(token,callingUser,freezeValue);
        return (freezeValue,earnedValue);
    }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"maximumSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"token","type":"address"}],"name":"viewMyReward","outputs":[{"name":"freezedValue","type":"uint256"},{"name":"rewardValue","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokenTypeDatas","outputs":[{"name":"tokenName","type":"bytes32"},{"name":"tokenSymbol","type":"bytes8"},{"name":"decimalCount","type":"uint256"},{"name":"minFreezingValue","type":"uint256"},{"name":"rateFactor","type":"uint256"},{"name":"perDayFreezeRate","type":"uint256"},{"name":"freezingAllowed","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"}],"name":"tokenDeposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"userAddress","type":"address"}],"name":"whitelistUser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"_tokenName","type":"bytes32"},{"name":"_tokenSymbol","type":"bytes8"},{"name":"_decimalCount","type":"uint256"},{"name":"_minFreezingValue","type":"uint256"},{"name":"_rateFactor","type":"uint256"},{"name":"_perDayFreezeRate","type":"uint256"}],"name":"newTokenTypeData","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"tokens","outputs":[{"name":"totalValue","type":"uint256"},{"name":"freezeValue","type":"uint256"},{"name":"freezeDate","type":"uint256"},{"name":"meltValue","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"manualWithdrawEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"manualWithdrawToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"recipients","type":"address[]"},{"name":"tokenAmount","type":"uint256[]"}],"name":"airDrop","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"releaseMyHype","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"safeGuard","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"mintedAmount","type":"uint256"}],"name":"mintToken","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_value","type":"uint256"}],"name":"burnFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"freezingOnOffForTokenType","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"changeWhitelistingStatus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"bytes8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"frozenAccount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"whitelistingStatus","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"}],"name":"tokenWithdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalMintAfterInitial","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"meltHoldSeconds","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"changesafeGuardStatus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelisted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"valueInSeconds","type":"uint256"}],"name":"setWithdrawWaitingPeriod","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"burningRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"freeze","type":"bool"}],"name":"freezeAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"_perDayFreezeRate","type":"uint256"}],"name":"setPerDayFreezeRate","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"_minFreezingValue","type":"uint256"}],"name":"setMinFreezingValue","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_burningRate","type":"uint256"}],"name":"setBurningRate","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"}],"name":"tokenBalanceMelt","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"_rateFactor","type":"uint256"}],"name":"setRateFactor","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"}],"name":"tokenBalanceFreeze","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"tokenDepositEv","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"tokenWithdrawEv","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"releaseMyHypeEv","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"earning","type":"uint256"}],"name":"tokenBalanceFreezeEv","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"earning","type":"uint256"}],"name":"tokenBalanceMeltEv","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"target","type":"address"},{"indexed":false,"name":"frozen","type":"bool"}],"name":"FrozenFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferredEv","type":"event"}]

608060409081526101f4600755600d805460ff191690556202a300600f5560008054336001600160a01b0319909116811782556001805460ff60a01b191690556003805460ff60401b1916681200000000000000001781556a295be96e6406697200000060048190556a52b7d2dcc80cd2e4000000600655918352600960209081528484208390553084526008815284842084546001600160a01b03168552905292909120557f4859504520546f6b656e0000000000000000000000000000000000000000000060025580546001600160401b0319166748595045000000001790556100e96101e4565b6002805482526003805460c081811b6001600160c01b03191660208087019182526801000000000000000090930460ff16604080880191825260646060890181815261271060808b0190815260a08b019283526001878c01818152306000908152600c8b528681208e518155985192890180546001600160401b03191693909a1c92909217909855945199860199909955519684019690965595516004808401919091559451600583015591516006909101805460ff191691151591909117905591548351908152925133937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92908290030190a350610220565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b612d408061022f6000396000f3fe608060405234801561001057600080fd5b506004361061028a5760003560e01c80637ec69c501161015c578063d936547e116100ce578063ee3f39c211610087578063ee3f39c2146108fe578063eee3ea471461092a578063efea921f14610947578063f04fd98c14610973578063f2fde38b1461099f578063ff4496c0146109c55761028a565b8063d936547e1461082b578063dd62ed3e14610851578063e56ccc3b1461087f578063e64c3e921461089c578063e724529c146108a4578063edd9a46b146108d25761028a565b8063bd694af211610120578063bd694af2146107d7578063be50af2e146107df578063c01830a11461080b578063c3e3f8fd14610813578063d085f6ea1461081b578063d4ee1d90146108235761028a565b80637ec69c50146107345780638da5cb5b1461073c57806395d89b4114610760578063a9059cbb14610785578063b414d4b6146107b15761028a565b80634b2210841161020057806370a08231116101b957806370a082311461068057806379279fd1146106a657806379ba5097146106ae57806379c65068146106b657806379cc6790146106e25780637c022bb41461070e5761028a565b80634b22108414610466578063508493bc146104ba5780635954c8c51461050e5780635d22a3521461051657806365216a41146105335780636d7525d91461065a5761028a565b806323784ea71161025257806323784ea71461033857806323b872dd146103a1578063313ce567146103d757806342966c68146103f5578063443f41d5146104125780634a4c560d146104405761028a565b80630480e58b1461028f57806306fdde03146102a9578063095ea7b3146102b15780630f2e92d3146102f157806318160ddd14610330575b600080fd5b6102976109f1565b60408051918252519081900360200190f35b6102976109f7565b6102dd600480360360408110156102c757600080fd5b506001600160a01b0381351690602001356109fd565b604080519115158252519081900360200190f35b6103176004803603602081101561030757600080fd5b50356001600160a01b0316610a47565b6040805192835260208301919091528051918290030190f35b610297610a8a565b61035e6004803603602081101561034e57600080fd5b50356001600160a01b0316610a90565b604080519788526001600160c01b03199096166020880152868601949094526060860192909252608085015260a0840152151560c0830152519081900360e00190f35b6102dd600480360360608110156103b757600080fd5b506001600160a01b03813581169160208101359091169060400135610ad5565b6103df610bd1565b6040805160ff9092168252519081900360200190f35b6102dd6004803603602081101561040b57600080fd5b5035610be6565b61043e6004803603604081101561042857600080fd5b506001600160a01b038135169060200135610c11565b005b61043e6004803603602081101561045657600080fd5b50356001600160a01b0316610dd3565b6102dd600480360360e081101561047c57600080fd5b506001600160a01b03813516906020810135906001600160c01b03196040820135169060608101359060808101359060a08101359060c00135610e35565b6104e8600480360360408110156104d057600080fd5b506001600160a01b0381358116916020013516610f01565b604080519485526020850193909352838301919091526060830152519081900360800190f35b61043e610f33565b61043e6004803603602081101561052c57600080fd5b5035610f8a565b6102dd6004803603604081101561054957600080fd5b81019060208101813564010000000081111561056457600080fd5b82018360208201111561057657600080fd5b8035906020019184602083028401116401000000008311171561059857600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156105e857600080fd5b8201836020820111156105fa57600080fd5b8035906020019184602083028401116401000000008311171561061c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610fc1945050505050565b6102dd6004803603602081101561067057600080fd5b50356001600160a01b0316611047565b6102976004803603602081101561069657600080fd5b50356001600160a01b03166112cc565b6102dd6112de565b61043e6112ee565b6102dd600480360360408110156106cc57600080fd5b506001600160a01b038135169060200135611369565b6102dd600480360360408110156106f857600080fd5b506001600160a01b03813516906020013561147d565b6102dd6004803603602081101561072457600080fd5b50356001600160a01b031661149f565b61043e611531565b610744611597565b604080516001600160a01b039092168252519081900360200190f35b6107686115a6565b604080516001600160c01b03199092168252519081900360200190f35b6102dd6004803603604081101561079b57600080fd5b506001600160a01b0381351690602001356115af565b6102dd600480360360208110156107c757600080fd5b50356001600160a01b03166115bc565b6102dd6115d1565b61043e600480360360408110156107f557600080fd5b506001600160a01b0381351690602001356115da565b6102976118dc565b6102976118e2565b61043e6118e8565b610744611937565b6102dd6004803603602081101561084157600080fd5b50356001600160a01b0316611946565b6102976004803603604081101561086757600080fd5b506001600160a01b038135811691602001351661195b565b6102dd6004803603602081101561089557600080fd5b5035611978565b610297611999565b61043e600480360360408110156108ba57600080fd5b506001600160a01b038135169060200135151561199f565b6102dd600480360360408110156108e857600080fd5b506001600160a01b038135169060200135611a1a565b6102dd6004803603604081101561091457600080fd5b506001600160a01b038135169060200135611a56565b6102dd6004803603602081101561094057600080fd5b5035611a92565b6102dd6004803603604081101561095d57600080fd5b506001600160a01b038135169060200135611ab3565b6102dd6004803603604081101561098957600080fd5b506001600160a01b038135169060200135611e2a565b61043e600480360360208110156109b557600080fd5b50356001600160a01b0316611e66565b6102dd600480360360408110156109db57600080fd5b506001600160a01b038135169060200135611e9f565b60065481565b60025481565b600154600090600160a01b900460ff1615610a1757600080fd5b50336000908152600a602090815260408083206001600160a01b0386168452909152902081905560015b92915050565b6001600160a01b038116600090815260086020908152604080832033808552925282206001015482919082610a7d8684846122db565b9194509092505050915091565b60045481565b600c602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560c09490941b949293919290919060ff1687565b600154600090600160a01b900460ff1615610aef57600080fd5b6001600160a01b038416610b345760405162461bcd60e51b8152600401808060200182810382526023815260200180612c5f6023913960400191505060405180910390fd5b6001600160a01b0384166000908152600a60209081526040808320338452909152902054821115610b6457600080fd5b6001600160a01b0384166000908152600a60209081526040808320338452909152902054610b98908363ffffffff61239f16565b6001600160a01b0385166000908152600a60209081526040808320338452909152902055610bc78484846123fc565b5060019392505050565b60035468010000000000000000900460ff1681565b600080546001600160a01b03163314610bfe57600080fd5b610c08338361280a565b50600192915050565b6001600160a01b038216610c5a576040805162461bcd60e51b81526020600482018190526024820152600080516020612ca9833981519152604482015290519081900360640190fd5b604080516323b872dd60e01b81523360048201523060248201526044810183905290516001600160a01b038416916323b872dd9160648083019260209291908290030181600087803b158015610caf57600080fd5b505af1158015610cc3573d6000803e3d6000fd5b505050506040513d6020811015610cd957600080fd5b5051610d2c576040805162461bcd60e51b815260206004820181905260248201527f455243323020277472616e7366657246726f6d272063616c6c206661696c6564604482015290519081900360640190fd5b6001600160a01b0382166000908152600860209081526040808320338452909152902054610d60908263ffffffff612a8a16565b6001600160a01b03831660008181526008602090815260408083203380855290835292819020859055805193845290830191909152818101849052606082019290925290517fe57520e183743e5e5fb8e2304562449ccfe980ba4144b066aff77bcd98b678c19181900360800190a15050565b6000546001600160a01b03163314610dea57600080fd5b600d5460ff161515600114610dfe57600080fd5b6001600160a01b038116610e1157600080fd5b6001600160a01b03166000908152600e60205260409020805460ff19166001179055565b600080546001600160a01b03163314610e4d57600080fd5b610e55612c22565b968752506001600160c01b03199490941660208087019182526040808801958652606088019485526080880193845260a08801968752600160c0808a018281526001600160a01b039b909b166000908152600c90945291909220975188559151878201805467ffffffffffffffff19169190931c1790915592516002860155905160038501555160048401559051600583015591516006909101805460ff191691151591909117905590565b600860209081526000928352604080842090915290825290208054600182015460028301546003909301549192909184565b6000546001600160a01b03163314610f4a57600080fd5b600080546040513031926001600160a01b03909216916108fc841502918491818181858888f19350505050158015610f86573d6000803e3d6000fd5b5050565b6000546001600160a01b03163314610fa157600080fd5b6000610fb482606463ffffffff612aeb16565b9050610f863033836123fc565b600080546001600160a01b03163314610fd957600080fd5b82516096811115610fe957600080fd5b60005b8181101561103c576000548551611034916001600160a01b03169087908490811061101357fe5b602002602001015186848151811061102757fe5b60200260200101516123fc565b600101610fec565b506001949350505050565b600154600090600160a01b900460ff16156110a2576040805162461bcd60e51b815260206004820152601660248201527529bcb9ba32b6902830bab9b2b210213c9020b236b4b760511b604482015290519081900360640190fd5b6001600160a01b0382166110eb576040805162461bcd60e51b81526020600482018190526024820152600080516020612ca9833981519152604482015290519081900360640190fd5b6001600160a01b0382163014611148576040805162461bcd60e51b815260206004820152601760248201527f4f6e6c79207069737369626c6520666f72204859504520000000000000000000604482015290519081900360640190fd5b6001600160a01b0382166000908152600860209081526040808320338452909152902060020154600f5461118390429063ffffffff61239f16565b116111d5576040805162461bcd60e51b815260206004820152601760248201527f7761697420706572696f64206973206e6f74206f766572000000000000000000604482015290519081900360640190fd5b6001600160a01b0382166000908152600860209081526040808320338452825280832060030154600990925290912054611215908263ffffffff612a8a16565b3360008181526009602081815260408084208690556001600160a01b0389168452600882528084209484529381529290912060010154915261125d919063ffffffff612a8a16565b6001600160a01b038416600081815260086020908152604080832033845282528083209485556003909401919091558251918252810183905281517f0fa859234b3c35d2136476e097ebfb39666c05648f72caece35e93d5d985184d929181900390910190a150600192915050565b60096020526000908152604090205481565b600154600160a01b900460ff1681565b6001546001600160a01b0316331461130557600080fd5b600154600080546040516001600160a01b0393841693909116917f7b9f4dbf19021732cc1236215fb8368569be3a9c57a729f6c306471afc35505191a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b600080546001600160a01b0316331461138157600080fd5b6001600160a01b0383166000908152600960205260409020546113aa908363ffffffff612a8a16565b6001600160a01b038416600081815260096020908152604080832094909455308252600881528382209282529190915220546113ec908363ffffffff612a8a16565b3060009081526008602090815260408083206001600160a01b0388168452909152902055600454611423908363ffffffff612a8a16565b600455600554611439908363ffffffff612a8a16565b60055560408051838152905130916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350600192915050565b600080546001600160a01b0316331461149557600080fd5b610bc7838361280a565b600080546001600160a01b031633146114b757600080fd5b6001600160a01b0382166000908152600c602052604090206006015460ff16611505576001600160a01b0382166000908152600c60205260409020600601805460ff19166001179055611529565b6001600160a01b0382166000908152600c60205260409020600601805460ff191690555b506001919050565b6000546001600160a01b0316331461154857600080fd5b600d5460ff1661158a57600d8054600160ff199182168117909255600080546001600160a01b03168152600e6020526040902080549091169091179055611595565b600d805460ff191690555b565b6000546001600160a01b031681565b60035460c01b81565b6000610c083384846123fc565b600b6020526000908152604090205460ff1681565b600d5460ff1681565b600154600160a01b900460ff1615611632576040805162461bcd60e51b815260206004820152601660248201527529bcb9ba32b6902830bab9b2b210213c9020b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821630141561164857600080fd5b6001600160a01b038216611691576040805162461bcd60e51b81526020600482018190526024820152600080516020612ca9833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152600860209081526040808320338452909152902060020154600f546116cc90429063ffffffff61239f16565b11156116fa576001600160a01b03821660009081526008602090815260408083203384529091528120600301555b6001600160a01b03821660009081526008602090815260408083203384529091529020600381015460019091015482916117679161173791612a8a565b6001600160a01b03851660009081526008602090815260408083203384529091529020549063ffffffff61239f16565b10156117a45760405162461bcd60e51b8152600401808060200182810382526027815260200180612c826027913960400191505060405180910390fd5b6001600160a01b03821660009081526008602090815260408083203384529091529020546117d8908263ffffffff61239f16565b6001600160a01b03831660008181526008602090815260408083203380855290835281842095909555805163a9059cbb60e01b815260048101959095526024850186905251929363a9059cbb9360448083019491928390030190829087803b15801561184357600080fd5b505af1158015611857573d6000803e3d6000fd5b505050506040513d602081101561186d57600080fd5b50506001600160a01b03821660008181526008602090815260408083203380855290835292819020548151948552918401929092528282018490526060830152517f544b39701afd1119e68c6e95a6107ec843364e9fbaae5e99637a368cc82adfc89181900360800190a15050565b60055481565b600f5481565b6000546001600160a01b031633146118ff57600080fd5b600154600160a01b900460ff16611928576001805460ff60a01b1916600160a01b179055611595565b6001805460ff60a01b19169055565b6001546001600160a01b031681565b600e6020526000908152604090205460ff1681565b600a60209081526000928352604080842090915290825290205481565b600080546001600160a01b0316331461199057600080fd5b50600f55600190565b60075481565b6000546001600160a01b031633146119b657600080fd5b6001600160a01b0382166000818152600b6020908152604091829020805460ff191685151590811790915582519384529083015280517f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a59281900390910190a15050565b600080546001600160a01b03163314611a3257600080fd5b506001600160a01b03919091166000908152600c6020526040902060050155600190565b600080546001600160a01b03163314611a6e57600080fd5b506001600160a01b03919091166000908152600c6020526040902060030155600190565b600080546001600160a01b03163314611aaa57600080fd5b50600755600190565b600154600090600160a01b900460ff1615611b0e576040805162461bcd60e51b815260206004820152601660248201527529bcb9ba32b6902830bab9b2b210213c9020b236b4b760511b604482015290519081900360640190fd5b6001600160a01b038316611b57576040805162461bcd60e51b81526020600482018190526024820152600080516020612ca9833981519152604482015290519081900360640190fd5b3380611b98576040805162461bcd60e51b81526020600482018190526024820152600080516020612ca9833981519152604482015290519081900360640190fd5b6001600160a01b038085166000908152600860209081526040808320938516835292905220600101548311801590611bd05750600083115b611c0b5760405162461bcd60e51b8152600401808060200182810382526022815260200180612cea6022913960400191505060405180910390fd5b6001600160a01b03808516600090815260086020908152604080832093851683529290529081206001015490611c428684846122db565b9050611c4d81612b44565b611c8f576040805162461bcd60e51b815260206004820152600e60248201526d1b5a5b9d1a5b99c819985a5b195960921b604482015290519081900360640190fd5b3060009081526008602090815260408083206001600160a01b0387168452909152902060030154611cc6908263ffffffff612a8a16565b3060009081526008602081815260408084206001600160a01b0389811680875291845282862060030196909655948b168452918152818320938352929092522060010154611d1a908663ffffffff61239f16565b6001600160a01b03808816600081815260086020908152604080832094891683529390529190912060010191909155301415611db3576001600160a01b03808716600090815260086020908152604080832093871683529290522060030154611d89908663ffffffff612a8a16565b6001600160a01b038088166000908152600860209081526040808320938816835292905220600301555b6001600160a01b038087166000818152600860209081526040808320948816835293815290839020426002909101558251918252810187905280820183905290517f05ed4f81bc443fc929332d09ad813fcbd31f52653b5e27569abd927f851836d39181900360600190a150600195945050505050565b600080546001600160a01b03163314611e4257600080fd5b506001600160a01b03919091166000908152600c6020526040902060040155600190565b6000546001600160a01b03163314611e7d57600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600154600090600160a01b900460ff1615611efa576040805162461bcd60e51b815260206004820152601660248201527529bcb9ba32b6902830bab9b2b210213c9020b236b4b760511b604482015290519081900360640190fd5b6001600160a01b0383166000908152600c602052604090206006015460ff16611f6a576040805162461bcd60e51b815260206004820181905260248201527f746f6b656e2074797065206e6f7420616c6c6f77656420746f20667265657a65604482015290519081900360640190fd5b6001600160a01b038316611fb3576040805162461bcd60e51b81526020600482018190526024820152600080516020612ca9833981519152604482015290519081900360640190fd5b3380611ff4576040805162461bcd60e51b81526020600482018190526024820152600080516020612ca9833981519152604482015290519081900360640190fd5b6001600160a01b0384811660009081526008602090815260408083209385168352929052206003810154600190910154612064916120329190612a8a565b6001600160a01b038087166000908152600860209081526040808320938716835292905220549063ffffffff61239f16565b831115801561208e57506001600160a01b0384166000908152600c60205260409020600301548310155b6120c95760405162461bcd60e51b8152600401808060200182810382526022815260200180612cea6022913960400191505060405180910390fd5b6001600160a01b0380851660009081526008602090815260408083209385168352929052908120600101549081156121b2576121068684846122db565b905061211181612b44565b612153576040805162461bcd60e51b815260206004820152600e60248201526d1b5a5b9d1a5b99c819985a5b195960921b604482015290519081900360640190fd5b3060009081526008602090815260408083206001600160a01b038716845290915290206003015461218a908263ffffffff612a8a16565b3060009081526008602090815260408083206001600160a01b03881684529091529020600301555b6001600160a01b038087166000908152600860209081526040808320938716835292905220600101546121eb908663ffffffff612a8a16565b6001600160a01b03808816600081815260086020908152604080832094891683529390529190912060010191909155301415612264576001600160a01b03831660009081526009602052604090205461224a908663ffffffff61239f16565b6001600160a01b0384166000908152600960205260409020555b6001600160a01b038087166000818152600860209081526040808320948816835293815290839020426002909101558251918252810187905280820183905290517f72cb02c58250b8f066d50b43c9a45a6d81b4ac7435f56ae25ed9f7e0e2f8ecfc9181900360600190a150600195945050505050565b6001600160a01b0383166000908152600c60205260408120600401548190612304908490612b7b565b6001600160a01b0386166000908152600c60205260408120600501549192509061232f908390612b7b565b6001600160a01b038088166000908152600860209081526040808320938a1683529290529081206002015491925042919091039062015180821061238357612380826201518063ffffffff612bb816565b90505b612393818463ffffffff612aeb16565b98975050505050505050565b6000828211156123f6576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600154600160a01b900460ff161561244e576040805162461bcd60e51b815260206004820152601060248201526f7361666547756172642041637469766560801b604482015290519081900360640190fd5b6001600160a01b03821661249b576040805162461bcd60e51b815260206004820152600f60248201526e0746f2069732061646472657373203608c1b604482015290519081900360640190fd5b6001600160a01b0383166000908152600960205260409020548111156124fd576040805162461bcd60e51b81526020600482015260126024820152716e6f2062616c616e636520696e2066726f6d60701b604482015290519081900360640190fd5b6001600160a01b038216600090815260096020526040902054612526818363ffffffff612a8a16565b101561256c576040805162461bcd60e51b815260206004820152601060248201526f6f766572666c6f772062616c616e636560801b604482015290519081900360640190fd5b6001600160a01b0383166000908152600b602052604090205460ff16156125d0576040805162461bcd60e51b8152602060048201526013602482015272333937b69030b1b1b7bab73a10333937bd32b760691b604482015290519081900360640190fd5b6001600160a01b0382166000908152600b602052604090205460ff1615612632576040805162461bcd60e51b81526020600482015260116024820152703a379030b1b1b7bab73a10333937bd32b760791b604482015290519081900360640190fd5b6001600160a01b03831660009081526009602052604090205461265b908263ffffffff61239f16565b6001600160a01b0384166000818152600960209081526040808320949094553082526008815283822092825291909152205461269d908263ffffffff61239f16565b3060009081526008602090815260408083206001600160a01b0388811685529083528184209490945592851682526009905220546126e1908263ffffffff612a8a16565b6001600160a01b03831660008181526009602090815260408083209490945530825260088152838220928252919091522054612723908263ffffffff612a8a16565b3060009081526008602090815260408083206001600160a01b0387811685529252822092909255805490911633148061275b57503330145b6127b95761276b82600754612b7b565b9050612777838261280a565b6127b9576040805162461bcd60e51b815260206004820152600e60248201526d189d5c9b9a5b99c819985a5b195960921b604482015290519081900360640190fd5b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a350505050565b600154600090600160a01b900460ff161561285f576040805162461bcd60e51b815260206004820152601060248201526f7361666547756172642041637469766560801b604482015290519081900360640190fd5b6001600160a01b03831661287257600080fd5b6001600160a01b03831660009081526009602052604090205482111561289757600080fd5b6001600160a01b0383166000908152600b602052604090205460ff16156128f9576040805162461bcd60e51b81526020600482015260116024820152703a379030b1b1b7bab73a10333937bd32b760791b604482015290519081900360640190fd5b6001600160a01b038316600090815260096020526040902054612922908363ffffffff61239f16565b6001600160a01b03841660008181526009602090815260408083209490945530825260088152838220928252919091522054612964908363ffffffff61239f16565b3060009081526008602090815260408083206001600160a01b038816845282528220929092558052600990527fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b546129c2908363ffffffff612a8a16565b7fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b55306000908152600860209081526040808320838052909152902054612a0f908363ffffffff612a8a16565b306000908152600860209081526040808320838052909152902055600454612a3d908363ffffffff61239f16565b6004556040805183815290516000916001600160a01b038616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350600192915050565b600082820183811015612ae4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082612afa57506000610a41565b82820282848281612b0757fe5b0414612ae45760405162461bcd60e51b8152600401808060200182810382526021815260200180612cc96021913960400191505060405180910390fd5b600454600090612b5a908363ffffffff612a8a16565b600455600554612b70908363ffffffff612a8a16565b600555506001919050565b600061271080831115612b8d57600080fd5b6000612baf82612ba3878763ffffffff612aeb16565b9063ffffffff612bb816565b95945050505050565b6000808211612c0e576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481612c1957fe5b04949350505050565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c08101919091529056fe7472616e736665722066726f6d206164646572737328302920697320696e76616c6964526571756972656420616d6f756e74206973206e6f74206672656520746f2077697468647261774164647265737328302920666f756e642c2063616e277420636f6e74696e7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776c657373207468616e207265717569726564206f72206c6573732062616c616e6365a265627a7a7230582055853f24039b1ded6754d632b64fdf8c6b70c28cf4b1871f527687a98130d4d964736f6c634300050a0032

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061028a5760003560e01c80637ec69c501161015c578063d936547e116100ce578063ee3f39c211610087578063ee3f39c2146108fe578063eee3ea471461092a578063efea921f14610947578063f04fd98c14610973578063f2fde38b1461099f578063ff4496c0146109c55761028a565b8063d936547e1461082b578063dd62ed3e14610851578063e56ccc3b1461087f578063e64c3e921461089c578063e724529c146108a4578063edd9a46b146108d25761028a565b8063bd694af211610120578063bd694af2146107d7578063be50af2e146107df578063c01830a11461080b578063c3e3f8fd14610813578063d085f6ea1461081b578063d4ee1d90146108235761028a565b80637ec69c50146107345780638da5cb5b1461073c57806395d89b4114610760578063a9059cbb14610785578063b414d4b6146107b15761028a565b80634b2210841161020057806370a08231116101b957806370a082311461068057806379279fd1146106a657806379ba5097146106ae57806379c65068146106b657806379cc6790146106e25780637c022bb41461070e5761028a565b80634b22108414610466578063508493bc146104ba5780635954c8c51461050e5780635d22a3521461051657806365216a41146105335780636d7525d91461065a5761028a565b806323784ea71161025257806323784ea71461033857806323b872dd146103a1578063313ce567146103d757806342966c68146103f5578063443f41d5146104125780634a4c560d146104405761028a565b80630480e58b1461028f57806306fdde03146102a9578063095ea7b3146102b15780630f2e92d3146102f157806318160ddd14610330575b600080fd5b6102976109f1565b60408051918252519081900360200190f35b6102976109f7565b6102dd600480360360408110156102c757600080fd5b506001600160a01b0381351690602001356109fd565b604080519115158252519081900360200190f35b6103176004803603602081101561030757600080fd5b50356001600160a01b0316610a47565b6040805192835260208301919091528051918290030190f35b610297610a8a565b61035e6004803603602081101561034e57600080fd5b50356001600160a01b0316610a90565b604080519788526001600160c01b03199096166020880152868601949094526060860192909252608085015260a0840152151560c0830152519081900360e00190f35b6102dd600480360360608110156103b757600080fd5b506001600160a01b03813581169160208101359091169060400135610ad5565b6103df610bd1565b6040805160ff9092168252519081900360200190f35b6102dd6004803603602081101561040b57600080fd5b5035610be6565b61043e6004803603604081101561042857600080fd5b506001600160a01b038135169060200135610c11565b005b61043e6004803603602081101561045657600080fd5b50356001600160a01b0316610dd3565b6102dd600480360360e081101561047c57600080fd5b506001600160a01b03813516906020810135906001600160c01b03196040820135169060608101359060808101359060a08101359060c00135610e35565b6104e8600480360360408110156104d057600080fd5b506001600160a01b0381358116916020013516610f01565b604080519485526020850193909352838301919091526060830152519081900360800190f35b61043e610f33565b61043e6004803603602081101561052c57600080fd5b5035610f8a565b6102dd6004803603604081101561054957600080fd5b81019060208101813564010000000081111561056457600080fd5b82018360208201111561057657600080fd5b8035906020019184602083028401116401000000008311171561059857600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156105e857600080fd5b8201836020820111156105fa57600080fd5b8035906020019184602083028401116401000000008311171561061c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610fc1945050505050565b6102dd6004803603602081101561067057600080fd5b50356001600160a01b0316611047565b6102976004803603602081101561069657600080fd5b50356001600160a01b03166112cc565b6102dd6112de565b61043e6112ee565b6102dd600480360360408110156106cc57600080fd5b506001600160a01b038135169060200135611369565b6102dd600480360360408110156106f857600080fd5b506001600160a01b03813516906020013561147d565b6102dd6004803603602081101561072457600080fd5b50356001600160a01b031661149f565b61043e611531565b610744611597565b604080516001600160a01b039092168252519081900360200190f35b6107686115a6565b604080516001600160c01b03199092168252519081900360200190f35b6102dd6004803603604081101561079b57600080fd5b506001600160a01b0381351690602001356115af565b6102dd600480360360208110156107c757600080fd5b50356001600160a01b03166115bc565b6102dd6115d1565b61043e600480360360408110156107f557600080fd5b506001600160a01b0381351690602001356115da565b6102976118dc565b6102976118e2565b61043e6118e8565b610744611937565b6102dd6004803603602081101561084157600080fd5b50356001600160a01b0316611946565b6102976004803603604081101561086757600080fd5b506001600160a01b038135811691602001351661195b565b6102dd6004803603602081101561089557600080fd5b5035611978565b610297611999565b61043e600480360360408110156108ba57600080fd5b506001600160a01b038135169060200135151561199f565b6102dd600480360360408110156108e857600080fd5b506001600160a01b038135169060200135611a1a565b6102dd6004803603604081101561091457600080fd5b506001600160a01b038135169060200135611a56565b6102dd6004803603602081101561094057600080fd5b5035611a92565b6102dd6004803603604081101561095d57600080fd5b506001600160a01b038135169060200135611ab3565b6102dd6004803603604081101561098957600080fd5b506001600160a01b038135169060200135611e2a565b61043e600480360360208110156109b557600080fd5b50356001600160a01b0316611e66565b6102dd600480360360408110156109db57600080fd5b506001600160a01b038135169060200135611e9f565b60065481565b60025481565b600154600090600160a01b900460ff1615610a1757600080fd5b50336000908152600a602090815260408083206001600160a01b0386168452909152902081905560015b92915050565b6001600160a01b038116600090815260086020908152604080832033808552925282206001015482919082610a7d8684846122db565b9194509092505050915091565b60045481565b600c602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560c09490941b949293919290919060ff1687565b600154600090600160a01b900460ff1615610aef57600080fd5b6001600160a01b038416610b345760405162461bcd60e51b8152600401808060200182810382526023815260200180612c5f6023913960400191505060405180910390fd5b6001600160a01b0384166000908152600a60209081526040808320338452909152902054821115610b6457600080fd5b6001600160a01b0384166000908152600a60209081526040808320338452909152902054610b98908363ffffffff61239f16565b6001600160a01b0385166000908152600a60209081526040808320338452909152902055610bc78484846123fc565b5060019392505050565b60035468010000000000000000900460ff1681565b600080546001600160a01b03163314610bfe57600080fd5b610c08338361280a565b50600192915050565b6001600160a01b038216610c5a576040805162461bcd60e51b81526020600482018190526024820152600080516020612ca9833981519152604482015290519081900360640190fd5b604080516323b872dd60e01b81523360048201523060248201526044810183905290516001600160a01b038416916323b872dd9160648083019260209291908290030181600087803b158015610caf57600080fd5b505af1158015610cc3573d6000803e3d6000fd5b505050506040513d6020811015610cd957600080fd5b5051610d2c576040805162461bcd60e51b815260206004820181905260248201527f455243323020277472616e7366657246726f6d272063616c6c206661696c6564604482015290519081900360640190fd5b6001600160a01b0382166000908152600860209081526040808320338452909152902054610d60908263ffffffff612a8a16565b6001600160a01b03831660008181526008602090815260408083203380855290835292819020859055805193845290830191909152818101849052606082019290925290517fe57520e183743e5e5fb8e2304562449ccfe980ba4144b066aff77bcd98b678c19181900360800190a15050565b6000546001600160a01b03163314610dea57600080fd5b600d5460ff161515600114610dfe57600080fd5b6001600160a01b038116610e1157600080fd5b6001600160a01b03166000908152600e60205260409020805460ff19166001179055565b600080546001600160a01b03163314610e4d57600080fd5b610e55612c22565b968752506001600160c01b03199490941660208087019182526040808801958652606088019485526080880193845260a08801968752600160c0808a018281526001600160a01b039b909b166000908152600c90945291909220975188559151878201805467ffffffffffffffff19169190931c1790915592516002860155905160038501555160048401559051600583015591516006909101805460ff191691151591909117905590565b600860209081526000928352604080842090915290825290208054600182015460028301546003909301549192909184565b6000546001600160a01b03163314610f4a57600080fd5b600080546040513031926001600160a01b03909216916108fc841502918491818181858888f19350505050158015610f86573d6000803e3d6000fd5b5050565b6000546001600160a01b03163314610fa157600080fd5b6000610fb482606463ffffffff612aeb16565b9050610f863033836123fc565b600080546001600160a01b03163314610fd957600080fd5b82516096811115610fe957600080fd5b60005b8181101561103c576000548551611034916001600160a01b03169087908490811061101357fe5b602002602001015186848151811061102757fe5b60200260200101516123fc565b600101610fec565b506001949350505050565b600154600090600160a01b900460ff16156110a2576040805162461bcd60e51b815260206004820152601660248201527529bcb9ba32b6902830bab9b2b210213c9020b236b4b760511b604482015290519081900360640190fd5b6001600160a01b0382166110eb576040805162461bcd60e51b81526020600482018190526024820152600080516020612ca9833981519152604482015290519081900360640190fd5b6001600160a01b0382163014611148576040805162461bcd60e51b815260206004820152601760248201527f4f6e6c79207069737369626c6520666f72204859504520000000000000000000604482015290519081900360640190fd5b6001600160a01b0382166000908152600860209081526040808320338452909152902060020154600f5461118390429063ffffffff61239f16565b116111d5576040805162461bcd60e51b815260206004820152601760248201527f7761697420706572696f64206973206e6f74206f766572000000000000000000604482015290519081900360640190fd5b6001600160a01b0382166000908152600860209081526040808320338452825280832060030154600990925290912054611215908263ffffffff612a8a16565b3360008181526009602081815260408084208690556001600160a01b0389168452600882528084209484529381529290912060010154915261125d919063ffffffff612a8a16565b6001600160a01b038416600081815260086020908152604080832033845282528083209485556003909401919091558251918252810183905281517f0fa859234b3c35d2136476e097ebfb39666c05648f72caece35e93d5d985184d929181900390910190a150600192915050565b60096020526000908152604090205481565b600154600160a01b900460ff1681565b6001546001600160a01b0316331461130557600080fd5b600154600080546040516001600160a01b0393841693909116917f7b9f4dbf19021732cc1236215fb8368569be3a9c57a729f6c306471afc35505191a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b600080546001600160a01b0316331461138157600080fd5b6001600160a01b0383166000908152600960205260409020546113aa908363ffffffff612a8a16565b6001600160a01b038416600081815260096020908152604080832094909455308252600881528382209282529190915220546113ec908363ffffffff612a8a16565b3060009081526008602090815260408083206001600160a01b0388168452909152902055600454611423908363ffffffff612a8a16565b600455600554611439908363ffffffff612a8a16565b60055560408051838152905130916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350600192915050565b600080546001600160a01b0316331461149557600080fd5b610bc7838361280a565b600080546001600160a01b031633146114b757600080fd5b6001600160a01b0382166000908152600c602052604090206006015460ff16611505576001600160a01b0382166000908152600c60205260409020600601805460ff19166001179055611529565b6001600160a01b0382166000908152600c60205260409020600601805460ff191690555b506001919050565b6000546001600160a01b0316331461154857600080fd5b600d5460ff1661158a57600d8054600160ff199182168117909255600080546001600160a01b03168152600e6020526040902080549091169091179055611595565b600d805460ff191690555b565b6000546001600160a01b031681565b60035460c01b81565b6000610c083384846123fc565b600b6020526000908152604090205460ff1681565b600d5460ff1681565b600154600160a01b900460ff1615611632576040805162461bcd60e51b815260206004820152601660248201527529bcb9ba32b6902830bab9b2b210213c9020b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821630141561164857600080fd5b6001600160a01b038216611691576040805162461bcd60e51b81526020600482018190526024820152600080516020612ca9833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152600860209081526040808320338452909152902060020154600f546116cc90429063ffffffff61239f16565b11156116fa576001600160a01b03821660009081526008602090815260408083203384529091528120600301555b6001600160a01b03821660009081526008602090815260408083203384529091529020600381015460019091015482916117679161173791612a8a565b6001600160a01b03851660009081526008602090815260408083203384529091529020549063ffffffff61239f16565b10156117a45760405162461bcd60e51b8152600401808060200182810382526027815260200180612c826027913960400191505060405180910390fd5b6001600160a01b03821660009081526008602090815260408083203384529091529020546117d8908263ffffffff61239f16565b6001600160a01b03831660008181526008602090815260408083203380855290835281842095909555805163a9059cbb60e01b815260048101959095526024850186905251929363a9059cbb9360448083019491928390030190829087803b15801561184357600080fd5b505af1158015611857573d6000803e3d6000fd5b505050506040513d602081101561186d57600080fd5b50506001600160a01b03821660008181526008602090815260408083203380855290835292819020548151948552918401929092528282018490526060830152517f544b39701afd1119e68c6e95a6107ec843364e9fbaae5e99637a368cc82adfc89181900360800190a15050565b60055481565b600f5481565b6000546001600160a01b031633146118ff57600080fd5b600154600160a01b900460ff16611928576001805460ff60a01b1916600160a01b179055611595565b6001805460ff60a01b19169055565b6001546001600160a01b031681565b600e6020526000908152604090205460ff1681565b600a60209081526000928352604080842090915290825290205481565b600080546001600160a01b0316331461199057600080fd5b50600f55600190565b60075481565b6000546001600160a01b031633146119b657600080fd5b6001600160a01b0382166000818152600b6020908152604091829020805460ff191685151590811790915582519384529083015280517f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a59281900390910190a15050565b600080546001600160a01b03163314611a3257600080fd5b506001600160a01b03919091166000908152600c6020526040902060050155600190565b600080546001600160a01b03163314611a6e57600080fd5b506001600160a01b03919091166000908152600c6020526040902060030155600190565b600080546001600160a01b03163314611aaa57600080fd5b50600755600190565b600154600090600160a01b900460ff1615611b0e576040805162461bcd60e51b815260206004820152601660248201527529bcb9ba32b6902830bab9b2b210213c9020b236b4b760511b604482015290519081900360640190fd5b6001600160a01b038316611b57576040805162461bcd60e51b81526020600482018190526024820152600080516020612ca9833981519152604482015290519081900360640190fd5b3380611b98576040805162461bcd60e51b81526020600482018190526024820152600080516020612ca9833981519152604482015290519081900360640190fd5b6001600160a01b038085166000908152600860209081526040808320938516835292905220600101548311801590611bd05750600083115b611c0b5760405162461bcd60e51b8152600401808060200182810382526022815260200180612cea6022913960400191505060405180910390fd5b6001600160a01b03808516600090815260086020908152604080832093851683529290529081206001015490611c428684846122db565b9050611c4d81612b44565b611c8f576040805162461bcd60e51b815260206004820152600e60248201526d1b5a5b9d1a5b99c819985a5b195960921b604482015290519081900360640190fd5b3060009081526008602090815260408083206001600160a01b0387168452909152902060030154611cc6908263ffffffff612a8a16565b3060009081526008602081815260408084206001600160a01b0389811680875291845282862060030196909655948b168452918152818320938352929092522060010154611d1a908663ffffffff61239f16565b6001600160a01b03808816600081815260086020908152604080832094891683529390529190912060010191909155301415611db3576001600160a01b03808716600090815260086020908152604080832093871683529290522060030154611d89908663ffffffff612a8a16565b6001600160a01b038088166000908152600860209081526040808320938816835292905220600301555b6001600160a01b038087166000818152600860209081526040808320948816835293815290839020426002909101558251918252810187905280820183905290517f05ed4f81bc443fc929332d09ad813fcbd31f52653b5e27569abd927f851836d39181900360600190a150600195945050505050565b600080546001600160a01b03163314611e4257600080fd5b506001600160a01b03919091166000908152600c6020526040902060040155600190565b6000546001600160a01b03163314611e7d57600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600154600090600160a01b900460ff1615611efa576040805162461bcd60e51b815260206004820152601660248201527529bcb9ba32b6902830bab9b2b210213c9020b236b4b760511b604482015290519081900360640190fd5b6001600160a01b0383166000908152600c602052604090206006015460ff16611f6a576040805162461bcd60e51b815260206004820181905260248201527f746f6b656e2074797065206e6f7420616c6c6f77656420746f20667265657a65604482015290519081900360640190fd5b6001600160a01b038316611fb3576040805162461bcd60e51b81526020600482018190526024820152600080516020612ca9833981519152604482015290519081900360640190fd5b3380611ff4576040805162461bcd60e51b81526020600482018190526024820152600080516020612ca9833981519152604482015290519081900360640190fd5b6001600160a01b0384811660009081526008602090815260408083209385168352929052206003810154600190910154612064916120329190612a8a565b6001600160a01b038087166000908152600860209081526040808320938716835292905220549063ffffffff61239f16565b831115801561208e57506001600160a01b0384166000908152600c60205260409020600301548310155b6120c95760405162461bcd60e51b8152600401808060200182810382526022815260200180612cea6022913960400191505060405180910390fd5b6001600160a01b0380851660009081526008602090815260408083209385168352929052908120600101549081156121b2576121068684846122db565b905061211181612b44565b612153576040805162461bcd60e51b815260206004820152600e60248201526d1b5a5b9d1a5b99c819985a5b195960921b604482015290519081900360640190fd5b3060009081526008602090815260408083206001600160a01b038716845290915290206003015461218a908263ffffffff612a8a16565b3060009081526008602090815260408083206001600160a01b03881684529091529020600301555b6001600160a01b038087166000908152600860209081526040808320938716835292905220600101546121eb908663ffffffff612a8a16565b6001600160a01b03808816600081815260086020908152604080832094891683529390529190912060010191909155301415612264576001600160a01b03831660009081526009602052604090205461224a908663ffffffff61239f16565b6001600160a01b0384166000908152600960205260409020555b6001600160a01b038087166000818152600860209081526040808320948816835293815290839020426002909101558251918252810187905280820183905290517f72cb02c58250b8f066d50b43c9a45a6d81b4ac7435f56ae25ed9f7e0e2f8ecfc9181900360600190a150600195945050505050565b6001600160a01b0383166000908152600c60205260408120600401548190612304908490612b7b565b6001600160a01b0386166000908152600c60205260408120600501549192509061232f908390612b7b565b6001600160a01b038088166000908152600860209081526040808320938a1683529290529081206002015491925042919091039062015180821061238357612380826201518063ffffffff612bb816565b90505b612393818463ffffffff612aeb16565b98975050505050505050565b6000828211156123f6576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600154600160a01b900460ff161561244e576040805162461bcd60e51b815260206004820152601060248201526f7361666547756172642041637469766560801b604482015290519081900360640190fd5b6001600160a01b03821661249b576040805162461bcd60e51b815260206004820152600f60248201526e0746f2069732061646472657373203608c1b604482015290519081900360640190fd5b6001600160a01b0383166000908152600960205260409020548111156124fd576040805162461bcd60e51b81526020600482015260126024820152716e6f2062616c616e636520696e2066726f6d60701b604482015290519081900360640190fd5b6001600160a01b038216600090815260096020526040902054612526818363ffffffff612a8a16565b101561256c576040805162461bcd60e51b815260206004820152601060248201526f6f766572666c6f772062616c616e636560801b604482015290519081900360640190fd5b6001600160a01b0383166000908152600b602052604090205460ff16156125d0576040805162461bcd60e51b8152602060048201526013602482015272333937b69030b1b1b7bab73a10333937bd32b760691b604482015290519081900360640190fd5b6001600160a01b0382166000908152600b602052604090205460ff1615612632576040805162461bcd60e51b81526020600482015260116024820152703a379030b1b1b7bab73a10333937bd32b760791b604482015290519081900360640190fd5b6001600160a01b03831660009081526009602052604090205461265b908263ffffffff61239f16565b6001600160a01b0384166000818152600960209081526040808320949094553082526008815283822092825291909152205461269d908263ffffffff61239f16565b3060009081526008602090815260408083206001600160a01b0388811685529083528184209490945592851682526009905220546126e1908263ffffffff612a8a16565b6001600160a01b03831660008181526009602090815260408083209490945530825260088152838220928252919091522054612723908263ffffffff612a8a16565b3060009081526008602090815260408083206001600160a01b0387811685529252822092909255805490911633148061275b57503330145b6127b95761276b82600754612b7b565b9050612777838261280a565b6127b9576040805162461bcd60e51b815260206004820152600e60248201526d189d5c9b9a5b99c819985a5b195960921b604482015290519081900360640190fd5b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a350505050565b600154600090600160a01b900460ff161561285f576040805162461bcd60e51b815260206004820152601060248201526f7361666547756172642041637469766560801b604482015290519081900360640190fd5b6001600160a01b03831661287257600080fd5b6001600160a01b03831660009081526009602052604090205482111561289757600080fd5b6001600160a01b0383166000908152600b602052604090205460ff16156128f9576040805162461bcd60e51b81526020600482015260116024820152703a379030b1b1b7bab73a10333937bd32b760791b604482015290519081900360640190fd5b6001600160a01b038316600090815260096020526040902054612922908363ffffffff61239f16565b6001600160a01b03841660008181526009602090815260408083209490945530825260088152838220928252919091522054612964908363ffffffff61239f16565b3060009081526008602090815260408083206001600160a01b038816845282528220929092558052600990527fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b546129c2908363ffffffff612a8a16565b7fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b55306000908152600860209081526040808320838052909152902054612a0f908363ffffffff612a8a16565b306000908152600860209081526040808320838052909152902055600454612a3d908363ffffffff61239f16565b6004556040805183815290516000916001600160a01b038616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350600192915050565b600082820183811015612ae4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082612afa57506000610a41565b82820282848281612b0757fe5b0414612ae45760405162461bcd60e51b8152600401808060200182810382526021815260200180612cc96021913960400191505060405180910390fd5b600454600090612b5a908363ffffffff612a8a16565b600455600554612b70908363ffffffff612a8a16565b600555506001919050565b600061271080831115612b8d57600080fd5b6000612baf82612ba3878763ffffffff612aeb16565b9063ffffffff612bb816565b95945050505050565b6000808211612c0e576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481612c1957fe5b04949350505050565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c08101919091529056fe7472616e736665722066726f6d206164646572737328302920697320696e76616c6964526571756972656420616d6f756e74206973206e6f74206672656520746f2077697468647261774164647265737328302920666f756e642c2063616e277420636f6e74696e7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776c657373207468616e207265717569726564206f72206c6573732062616c616e6365a265627a7a7230582055853f24039b1ded6754d632b64fdf8c6b70c28cf4b1871f527687a98130d4d964736f6c634300050a0032

Deployed Bytecode Sourcemap

17659:11218:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17659:11218:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7429:28;;;:::i;:::-;;;;;;;;;;;;;;;;7251:19;;;:::i;15621:201::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;15621:201:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;28540:332;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28540:332:0;-1:-1:-1;;;;;28540:332:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7353:26;;;:::i;9584:56::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9584:56:0;-1:-1:-1;;;;;9584:56:0;;:::i;:::-;;;;;;;-1:-1:-1;;;;;;9584:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14880:436;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14880:436:0;;;;;;;;;;;;;;;;;:::i;7304:21::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16796:143;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16796:143:0;;:::i;22471:594::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;22471:594:0;;;;;;;;:::i;:::-;;18651:211;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18651:211:0;-1:-1:-1;;;;;18651:211:0;;:::i;20827:614::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;20827:614:0;;;;;;;;;-1:-1:-1;;;;;;20827:614:0;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7796:67::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7796:67:0;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19618:122;;;:::i;19322:188::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19322:188:0;;:::i;19779:492::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19779:492:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;19779:492:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;19779:492:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;19779:492:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;19779:492:0;;;;;;;;-1:-1:-1;19779:492:0;;-1:-1:-1;;21:11;5:28;;2:2;;;46:1;43;36:12;2:2;19779:492:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;19779:492:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;19779:492:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;19779:492:0;;-1:-1:-1;19779:492:0;;-1:-1:-1;;;;;19779:492:0:i;24073:739::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24073:739:0;-1:-1:-1;;;;;24073:739:0;;:::i;7926:45::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7926:45:0;-1:-1:-1;;;;;7926:45:0;;:::i;5824:21::-;;;:::i;6692:204::-;;;:::i;16021:570::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;16021:570:0;;;;;;;;:::i;17238:157::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;17238:157:0;;;;;;;;:::i;21449:365::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21449:365:0;-1:-1:-1;;;;;21449:365:0;;:::i;18200:281::-;;;:::i;5747:28::-;;;:::i;:::-;;;;-1:-1:-1;;;;;5747:28:0;;;;;;;;;;;;;;7277:20;;;:::i;:::-;;;;-1:-1:-1;;;;;;7277:20:0;;;;;;;;;;;;;;14407:153;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14407:153:0;;;;;;;;:::i;8101:46::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8101:46:0;-1:-1:-1;;;;;8101:46:0;;:::i;17895:38::-;;;:::i;23098:847::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;23098:847:0;;;;;;;;:::i;7386:36::-;;;:::i;20309:::-;;;:::i;6904:221::-;;;:::i;5784:31::-;;;:::i;17944:44::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17944:44:0;-1:-1:-1;;;;;17944:44:0;;:::i;7978:66::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7978:66:0;;;;;;;;;;:::i;20654:165::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20654:165:0;;:::i;7466:29::-;;;:::i;19052:151::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;19052:151:0;;;;;;;;;;:::i;22222:204::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;22222:204:0;;;;;;;;:::i;21822:::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;21822:204:0;;;;;;;;:::i;8904:154::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8904:154:0;;:::i;27206:1326::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;27206:1326:0;;;;;;;;:::i;22034:180::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;22034:180:0;;;;;;;;:::i;6449:116::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6449:116:0;-1:-1:-1;;;;;6449:116:0;;:::i;24899:1603::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;24899:1603:0;;;;;;;;:::i;7429:28::-;;;;:::o;7251:19::-;;;;:::o;15621:201::-;15731:9;;15697:12;;-1:-1:-1;;;15731:9:0;;;;15730:10;15722:19;;;;;;-1:-1:-1;15762:10:0;15752:21;;;;:9;:21;;;;;;;;-1:-1:-1;;;;;15752:31:0;;;;;;;;;:40;;;15810:4;15621:201;;;;;:::o;28540:332::-;-1:-1:-1;;;;;28712:13:0;;28597:17;28712:13;;;:6;:13;;;;;;;;28672:10;28712:26;;;;;;;:38;;;28597:17;;28672:10;28597:17;28780:41;28719:5;28672:10;28712:38;28780:10;:41::i;:::-;28840:11;;-1:-1:-1;28761:60:0;;-1:-1:-1;;;28540:332:0;;;:::o;7353:26::-;;;;:::o;9584:56::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14880:436::-;14996:9;;14962:12;;-1:-1:-1;;;14996:9:0;;;;14995:10;14987:19;;;;;;-1:-1:-1;;;;;15025:19:0;;15017:66;;;;-1:-1:-1;;;15017:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15112:16:0;;;;;;:9;:16;;;;;;;;15129:10;15112:28;;;;;;;;15102:38;;;15094:47;;;;;;-1:-1:-1;;;;;15206:16:0;;;;;;:9;:16;;;;;;;;15223:10;15206:28;;;;;;;;:40;;15239:6;15206:40;:32;:40;:::i;:::-;-1:-1:-1;;;;;15175:16:0;;;;;;:9;:16;;;;;;;;15192:10;15175:28;;;;;;;:71;15257:29;15185:5;15274:3;15279:6;15257:9;:29::i;:::-;-1:-1:-1;15304:4:0;14880:436;;;;;:::o;7304:21::-;;;;;;;;;:::o;16796:143::-;16852:12;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;16877:32;16890:10;16902:6;16877:12;:32::i;:::-;-1:-1:-1;16927:4:0;;16796:143;-1:-1:-1;;16796:143:0:o;22471:594::-;-1:-1:-1;;;;;22687:17:0;;22679:61;;;;;-1:-1:-1;;;22679:61:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22679:61:0;;;;;;;;;;;;;;;22759:69;;;-1:-1:-1;;;22759:69:0;;22794:10;22759:69;;;;22814:4;22759:69;;;;;;;;;;;;-1:-1:-1;;;;;22759:34:0;;;;;:69;;;;;;;;;;;;;;-1:-1:-1;22759:34:0;:69;;;5:2:-1;;;;30:1;27;20:12;5:2;22759:69:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22759:69:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22759:69:0;22751:113;;;;;-1:-1:-1;;;22751:113:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22914:13:0;;;;;;:6;:13;;;;;;;;22928:10;22914:25;;;;;;;:36;:48;;22955:6;22914:48;:40;:48;:::i;:::-;-1:-1:-1;;;;;22875:13:0;;;;;;:6;:13;;;;;;;;22889:10;22875:25;;;;;;;;;;:87;;;22978:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22471:594;;:::o;18651:211::-;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;18734:18;;;;:26;;:18;:26;18726:35;;;;;;-1:-1:-1;;;;;18784:25:0;;18776:34;;;;;;-1:-1:-1;;;;;18825:24:0;;;;;:11;:24;;;;;:31;;-1:-1:-1;;18825:31:0;18852:4;18825:31;;;18651:211::o;20827:614::-;21020:4;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;21042:25;;:::i;:::-;21080;;;-1:-1:-1;;;;;;;21116:29:0;;;;:16;;;;:29;;;21156:17;;;;:31;;;21198:21;;;:39;;;21248:15;;;:27;;;21292:21;;;:39;;;21366:4;21345:20;;;;:25;;;-1:-1:-1;;;;;21383:21:0;;;;-1:-1:-1;21383:21:0;;;:14;:21;;;;;;;:28;;;;;;;;;;;-1:-1:-1;;21383:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21383:28:0;;;;;;;;;;21366:4;20827:614::o;7796:67::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;19618:122::-;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;19670:14;19712:5;;:22;;19693:4;19685:21;;-1:-1:-1;;;;;19712:5:0;;;;:22;;;;;19685:21;;19712:22;19670:14;19712:22;19685:21;19712:5;:22;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19712:22:0;6430:1;19618:122::o;19322:188::-;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;19396:19;19418:16;:7;19430:3;19418:16;:11;:16;:::i;:::-;19396:38;;19449:49;19467:4;19474:10;19486:11;19449:9;:49::i;19779:492::-;19877:4;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;19921:17;;19979:3;19961:21;;;19953:30;;;;;;20002:6;19998:236;20018:14;20014:1;:18;19998:236;;;20181:5;;20188:13;;20171:47;;-1:-1:-1;;;;;20181:5:0;;20188:10;;20199:1;;20188:13;;;;;;;;;;;;20203:11;20215:1;20203:14;;;;;;;;;;;;;;20171:9;:47::i;:::-;20034:3;;19998:236;;;-1:-1:-1;20255:4:0;;19779:492;-1:-1:-1;;;;19779:492:0:o;24073:739::-;24158:9;;24127:4;;-1:-1:-1;;;24158:9:0;;;;24157:10;24149:44;;;;;-1:-1:-1;;;24149:44:0;;;;;;;;;;;;-1:-1:-1;;;24149:44:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;24212:17:0;;24204:61;;;;;-1:-1:-1;;;24204:61:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;24204:61:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;24284:22:0;;24301:4;24284:22;24276:57;;;;;-1:-1:-1;;;24276:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24379:13:0;;;;;;:6;:13;;;;;;;;24393:10;24379:25;;;;;;;:36;;;24360:15;;24352:24;;:3;;:24;:7;:24;:::i;:::-;:63;24344:98;;;;;-1:-1:-1;;;24344:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24467:13:0;;24453:11;24467:13;;;:6;:13;;;;;;;;24481:10;24467:25;;;;;;;:35;;;24537:9;:21;;;;;;;:33;;24467:35;24537:33;:25;:33;:::i;:::-;24523:10;24513:21;;;;:9;:21;;;;;;;;:57;;;-1:-1:-1;;;;;24646:13:0;;;;:6;:13;;;;;:25;;;;;;;;;;:37;;;24620:21;;:65;;24513:57;24620:65;:25;:65;:::i;:::-;-1:-1:-1;;;;;24581:13:0;;;;;;:6;:13;;;;;;;;24595:10;24581:25;;;;;;;:104;;;24696:35;;;;:39;;;;24752:30;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24800:4:0;;24073:739;-1:-1:-1;;24073:739:0:o;7926:45::-;;;;;;;;;;;;;:::o;5824:21::-;;;-1:-1:-1;;;5824:21:0;;;;;:::o;6692:204::-;6765:8;;-1:-1:-1;;;;;6765:8:0;6751:10;:22;6743:31;;;;;;6820:8;;;6813:5;;6790:39;;-1:-1:-1;;;;;6820:8:0;;;;6813:5;;;;6790:39;;;6848:8;;;;6840:16;;-1:-1:-1;;;;;;6840:16:0;;;-1:-1:-1;;;;;6848:8:0;;6840:16;;;;6867:21;;;6692:204::o;16021:570::-;16105:12;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;-1:-1:-1;;;;;16145:17:0;;;;;;:9;:17;;;;;;:35;;16167:12;16145:35;:21;:35;:::i;:::-;-1:-1:-1;;;;;16125:17:0;;;;;;:9;:17;;;;;;;;:55;;;;16253:4;16238:21;;:6;:21;;;;;:29;;;;;;;;:40;:58;;16283:12;16238:58;:44;:58;:::i;:::-;16210:4;16195:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;16195:29:0;;;;;;;;;:101;16391:11;;:29;;16407:12;16391:29;:15;:29;:::i;:::-;16377:11;:43;16459:21;;:39;;16485:12;16459:39;:25;:39;:::i;:::-;16435:21;:63;16510:49;;;;;;;;16539:4;;16527:1;;16510:49;;;;;;;;;-1:-1:-1;16581:4:0;16021:570;;;;:::o;17238:157::-;17313:12;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;17338:27;17351:5;17358:6;17338:12;:27::i;21449:365::-;21525:4;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;-1:-1:-1;;;;;21551:21:0;;;;;;:14;:21;;;;;:37;;;;;21547:232;;-1:-1:-1;;;;;21623:21:0;;;;;;:14;:21;;;;;:37;;:44;;-1:-1:-1;;21623:44:0;21663:4;21623:44;;;21547:232;;;-1:-1:-1;;;;;21718:21:0;;21758:5;21718:21;;;:14;:21;;;;;:37;;:45;;-1:-1:-1;;21718:45:0;;;21547:232;-1:-1:-1;21797:4:0;21449:365;;;:::o;18200:281::-;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;18271:18;;;;18267:209;;18309:18;:25;;18330:4;-1:-1:-1;;18309:25:0;;;;;;;;-1:-1:-1;18365:5:0;;-1:-1:-1;;;;;18365:5:0;18353:18;;:11;:18;;;;;:24;;;;;;;;;;18267:209;;;18430:18;:26;;-1:-1:-1;;18430:26:0;;;18267:209;18200:281::o;5747:28::-;;;-1:-1:-1;;;;;5747:28:0;;:::o;7277:20::-;;;;;;:::o;14407:153::-;14470:12;14496:34;14506:10;14518:3;14523:6;14496:9;:34::i;8101:46::-;;;;;;;;;;;;;;;:::o;17895:38::-;;;;;;:::o;23098:847::-;23181:9;;-1:-1:-1;;;23181:9:0;;;;23180:10;23172:44;;;;;-1:-1:-1;;;23172:44:0;;;;;;;;;;;;-1:-1:-1;;;23172:44:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;23235:22:0;;23252:4;23235:22;;23227:31;;;;;;-1:-1:-1;;;;;23277:17:0;;23269:61;;;;;-1:-1:-1;;;23269:61:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;23269:61:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;23371:13:0;;;;;;:6;:13;;;;;;;;23385:10;23371:25;;;;;;;:36;;;23352:15;;23344:24;;:3;;:24;:7;:24;:::i;:::-;:63;23341:143;;;-1:-1:-1;;;;;23432:13:0;;23470:1;23432:13;;;:6;:13;;;;;;;;23446:10;23432:25;;;;;;;:35;;:39;23341:143;-1:-1:-1;;;;;23585:13:0;;;;;;:6;:13;;;;;;;;23599:10;23585:25;;;;;;;:35;;;;23543:37;;;;;23626:6;;23502:120;;23543:78;;:41;:78::i;:::-;-1:-1:-1;;;;;23502:13:0;;;;;;:6;:13;;;;;;;;23516:10;23502:25;;;;;;;:36;;:120;:40;:120;:::i;:::-;:130;;23494:181;;;;-1:-1:-1;;;23494:181:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23732:13:0;;;;;;:6;:13;;;;;;;;23746:10;23732:25;;;;;;;:36;:48;;23773:6;23732:48;:40;:48;:::i;:::-;-1:-1:-1;;;;;23693:13:0;;;;;;:6;:13;;;;;;;;23707:10;23693:25;;;;;;;;;:87;;;;23791:50;;-1:-1:-1;;;23791:50:0;;;;;;;;;;;;;;;;23693:13;;23791:30;;:50;;;;;;;;;;;;;;23693:13;23791:50;;;5:2:-1;;;;30:1;27;20:12;5:2;23791:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23791:50:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;;23900:13:0;;;;;;:6;23791:50;23900:13;;;;;;;23880:10;23900:25;;;;;;;;;;:36;23857:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23098:847;;:::o;7386:36::-;;;;:::o;20309:::-;;;;:::o;6904:221::-;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;6974:9;;-1:-1:-1;;;6974:9:0;;;;6970:148;;7030:4;7018:16;;-1:-1:-1;;;;7018:16:0;-1:-1:-1;;;7018:16:0;;;6970:148;;;7085:9;:17;;-1:-1:-1;;;;7085:17:0;;;6904:221::o;5784:31::-;;;-1:-1:-1;;;;;5784:31:0;;:::o;17944:44::-;;;;;;;;;;;;;;;:::o;7978:66::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;20654:165::-;20735:4;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;-1:-1:-1;20757:15:0;:32;20807:4;;20654:165::o;7466:29::-;;;;:::o;19052:151::-;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;-1:-1:-1;;;;;19128:21:0;;;;;;:13;:21;;;;;;;;;:30;;-1:-1:-1;;19128:30:0;;;;;;;;;;19170:27;;;;;;;;;;;;;;;;;;;;;19052:151;;:::o;22222:204::-;22316:4;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;-1:-1:-1;;;;;;22338:21:0;;;;;;;;:14;:21;;;;;:38;;:58;22414:4;;22222:204::o;21822:::-;21916:4;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;-1:-1:-1;;;;;;21938:21:0;;;;;;;;:14;:21;;;;;:38;;:58;22014:4;;21822:204::o;8904:154::-;8972:12;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;-1:-1:-1;9002:11:0;:26;9046:4;;8904:154::o;27206:1326::-;27309:9;;27278:4;;-1:-1:-1;;;27309:9:0;;;;27308:10;27300:44;;;;;-1:-1:-1;;;27300:44:0;;;;;;;;;;;;-1:-1:-1;;;27300:44:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;27363:17:0;;27355:61;;;;;-1:-1:-1;;;27355:61:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;27355:61:0;;;;;;;;;;;;;;;27449:10;27478:24;27470:68;;;;;-1:-1:-1;;;27470:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;27470:68:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;27568:13:0;;;;;;;:6;:13;;;;;;;;:26;;;;;;;;;:38;;;27557:49;;;;;:63;;;27619:1;27610:6;:10;27557:63;27549:110;;;;-1:-1:-1;;;27549:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27818:13:0;;;27799:16;27818:13;;;:6;:13;;;;;;;;:26;;;;;;;;;;;:38;;;;27886:41;27825:5;27832:11;27818:38;27886:10;:41::i;:::-;27867:60;;27946:25;27959:11;27946:12;:25::i;:::-;27938:51;;;;;-1:-1:-1;;;27938:51:0;;;;;;;;;;;;-1:-1:-1;;;27938:51:0;;;;;;;;;;;;;;;28062:4;28047:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;28047:34:0;;;;;;;;;:44;;;:61;;28096:11;28047:61;:48;:61;:::i;:::-;28015:4;28000:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;28000:34:0;;;;;;;;;;;;:44;;:108;;;;28177:13;;;;;;;;;;;:26;;;;;;;;:38;;;:50;;28220:6;28177:50;:42;:50;:::i;:::-;-1:-1:-1;;;;;28136:13:0;;;;;;;:6;:13;;;;;;;;:26;;;;;;;;;;;;:38;;:91;;;;28257:4;28242:20;28238:149;;;-1:-1:-1;;;;;28327:13:0;;;;;;;:6;:13;;;;;;;;:26;;;;;;;;;:36;;;:48;;28368:6;28327:48;:40;:48;:::i;:::-;-1:-1:-1;;;;;28288:13:0;;;;;;;:6;:13;;;;;;;;:26;;;;;;;;;:36;;:87;28238:149;-1:-1:-1;;;;;28399:13:0;;;;;;;:6;:13;;;;;;;;:26;;;;;;;;;;;;28439:3;28399:37;;;;:43;28458:44;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28520:4:0;;27206:1326;-1:-1:-1;;;;;27206:1326:0:o;22034:180::-;22116:4;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;-1:-1:-1;;;;;;22138:21:0;;;;;;;;:14;:21;;;;;:32;;:46;22202:4;;22034:180::o;6449:116::-;6413:5;;-1:-1:-1;;;;;6413:5:0;6399:10;:19;6391:28;;;;;;6537:8;:20;;-1:-1:-1;;;;;;6537:20:0;-1:-1:-1;;;;;6537:20:0;;;;;;;;;;6449:116::o;24899:1603::-;25004:9;;24973:4;;-1:-1:-1;;;25004:9:0;;;;25003:10;24995:44;;;;;-1:-1:-1;;;24995:44:0;;;;;;;;;;;;-1:-1:-1;;;24995:44:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;25058:21:0;;;;;;:14;:21;;;;;:37;;;;;25050:81;;;;;-1:-1:-1;;;25050:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25150:17:0;;25142:61;;;;;-1:-1:-1;;;25142:61:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;25142:61:0;;;;;;;;;;;;;;;25236:10;25265:24;25257:68;;;;;-1:-1:-1;;;25257:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;25257:68:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;25442:13:0;;;;;;;:6;:13;;;;;;;;:26;;;;;;;;;:36;;;;25399:38;;;;;25357:123;;25399:80;;:38;:42;:80::i;:::-;-1:-1:-1;;;;;25357:13:0;;;;;;;:6;:13;;;;;;;;:26;;;;;;;;;:37;;:123;:41;:123;:::i;:::-;25346:6;:134;;:186;;;;-1:-1:-1;;;;;;25494:21:0;;;;;;:14;:21;;;;;:38;;;25484:48;;;25346:186;25338:233;;;;-1:-1:-1;;;25338:233:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25743:13:0;;;25724:16;25743:13;;;:6;:13;;;;;;;;:26;;;;;;;;;;;:38;;;;25823:15;;25819:301;;25878:41;25889:5;25895:11;25907;25878:10;:41::i;:::-;25864:55;;25942:25;25955:11;25942:12;:25::i;:::-;25934:51;;;;;-1:-1:-1;;;25934:51:0;;;;;;;;;;;;-1:-1:-1;;;25934:51:0;;;;;;;;;;;;;;;26062:4;26047:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;26047:34:0;;;;;;;;;:44;;;:61;;26096:11;26047:61;:48;:61;:::i;:::-;26015:4;26000:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;26000:34:0;;;;;;;;;:44;;:108;25819:301;-1:-1:-1;;;;;26173:13:0;;;;;;;:6;:13;;;;;;;;:26;;;;;;;;;:38;;;:50;;26216:6;26173:50;:42;:50;:::i;:::-;-1:-1:-1;;;;;26132:13:0;;;;;;;:6;:13;;;;;;;;:26;;;;;;;;;;;;:38;;:91;;;;26253:4;26238:20;26234:121;;;-1:-1:-1;;;;;26309:22:0;;;;;;:9;:22;;;;;;:34;;26336:6;26309:34;:26;:34;:::i;:::-;-1:-1:-1;;;;;26284:22:0;;;;;;:9;:22;;;;;:59;26234:121;-1:-1:-1;;;;;26365:13:0;;;;;;;:6;:13;;;;;;;;:26;;;;;;;;;;;;26405:3;26365:37;;;;:43;26426:46;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26490:4:0;;24899:1603;-1:-1:-1;;;;;24899:1603:0:o;26510:609::-;-1:-1:-1;;;;;26667:21:0;;26592:7;26667:21;;;:14;:21;;;;;:32;;;26592:7;;26640:60;;26660:6;;26640:19;:60::i;:::-;-1:-1:-1;;;;;26769:21:0;;26711:19;26769:21;;;:14;:21;;;;;:38;;;26617:83;;-1:-1:-1;26711:19:0;26733:75;;26617:83;;26733:19;:75::i;:::-;-1:-1:-1;;;;;26847:13:0;;;26819:18;26847:13;;;:6;:13;;;;;;;;:19;;;;;;;;;;;:30;;;26711:97;;-1:-1:-1;26841:3:0;:36;;;;;26938:5;26921:22;;26917:147;;27027:24;:13;27045:5;27027:24;:17;:24;:::i;:::-;27014:37;;26917:147;27081:30;:10;27096:14;27081:30;:14;:30;:::i;:::-;27074:37;26510:609;-1:-1:-1;;;;;;;;26510:609:0:o;3296:184::-;3354:7;3387:1;3382;:6;;3374:49;;;;;-1:-1:-1;;;3374:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3446:5:0;;;3296:184::o;11023:1612::-;11116:9;;-1:-1:-1;;;11116:9:0;;;;11115:10;11107:38;;;;;-1:-1:-1;;;11107:38:0;;;;;;;;;;;;-1:-1:-1;;;11107:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;11160:17:0;;11151:45;;;;;-1:-1:-1;;;11151:45:0;;;;;;;;;;;;-1:-1:-1;;;11151:45:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;11296:16:0;;;;;;:9;:16;;;;;;:26;-1:-1:-1;11296:26:0;11287:58;;;;;-1:-1:-1;;;11287:58:0;;;;;;;;;;;;-1:-1:-1;;;11287:58:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;11438:14:0;;;;;;:9;:14;;;;;;11408:26;11438:14;11427:6;11408:26;:18;:26;:::i;:::-;:44;;11399:73;;;;;-1:-1:-1;;;11399:73:0;;;;;;;;;;;;-1:-1:-1;;;11399:73:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;11510:20:0;;;;;;:13;:20;;;;;;;;11509:21;11501:52;;;;;-1:-1:-1;;;11501:52:0;;;;;;;;;;;;-1:-1:-1;;;11501:52:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;11617:18:0;;;;;;:13;:18;;;;;;;;11616:19;11608:48;;;;;-1:-1:-1;;;11608:48:0;;;;;;;;;;;;-1:-1:-1;;;11608:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;11735:16:0;;;;;;:9;:16;;;;;;:28;;11756:6;11735:28;:20;:28;:::i;:::-;-1:-1:-1;;;;;11716:16:0;;;;;;:9;:16;;;;;;;;:47;;;;11866:4;11851:21;;:6;:21;;;;;:28;;;;;;;;:39;:51;;11895:6;11851:51;:43;:51;:::i;:::-;11824:4;11809:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;11809:28:0;;;;;;;;;;;:93;;;;11975:14;;;;;:9;:14;;;;:26;;11994:6;11975:26;:18;:26;:::i;:::-;-1:-1:-1;;;;;11958:14:0;;;;;;:9;:14;;;;;;;;:43;;;;12111:4;12096:21;;:6;:21;;;;;:26;;;;;;;;:37;:49;;12138:6;12096:49;:41;:49;:::i;:::-;12071:4;12056:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;12056:26:0;;;;;;;;;:89;;;;12269:5;;12056:21;;12269:5;12255:10;:19;;:50;;-1:-1:-1;12278:10:0;12300:4;12278:27;12255:50;12250:322;;12402:39;12422:6;12429:11;;12402:19;:39::i;:::-;12390:51;;12485:28;12498:3;12503:9;12485:12;:28::i;:::-;12477:54;;;;;-1:-1:-1;;;12477:54:0;;;;;;;;;;;;-1:-1:-1;;;12477:54:0;;;;;;;;;;;;;;;12598:3;-1:-1:-1;;;;;12582:27:0;12591:5;-1:-1:-1;;;;;12582:27:0;;12602:6;12582:27;;;;;;;;;;;;;;;;;;11023:1612;;;;:::o;12648:1182::-;12773:9;;12723:12;;-1:-1:-1;;;12773:9:0;;;;12772:10;12764:38;;;;;-1:-1:-1;;;12764:38:0;;;;;;;;;;;;-1:-1:-1;;;12764:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;12825:23:0;;12817:32;;;;;;-1:-1:-1;;;;;12872:20:0;;;;;;:9;:20;;;;;;:34;-1:-1:-1;12872:34:0;12864:43;;;;;;-1:-1:-1;;;;;12958:24:0;;;;;;:13;:24;;;;;;;;12957:25;12949:54;;;;;-1:-1:-1;;;12949:54:0;;;;;;;;;;;;-1:-1:-1;;;12949:54:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;13086:20:0;;;;;;:9;:20;;;;;;:36;;13111:10;13086:36;:24;:36;:::i;:::-;-1:-1:-1;;;;;13063:20:0;;;;;;:9;:20;;;;;;;;:59;;;;13229:4;13214:21;;:6;:21;;;;;:32;;;;;;;;:43;:59;;13262:10;13214:59;:47;:59;:::i;:::-;13183:4;13168:21;;;;:6;:21;;;;;;;;-1:-1:-1;;;;;13168:32:0;;;;;;;;:105;;;;13353:21;;:9;:21;;;;:37;;13379:10;13353:37;:25;:37;:::i;:::-;13329:21;:61;13507:4;13329:21;13492;;;:6;13329:21;13492;;;13329;13492;;;:33;;;;;;;;:44;:60;;13541:10;13492:60;:48;:60;:::i;:::-;13460:4;13445:21;;;;:6;:21;;;;;;;;:33;;;;;;;;:107;13642:11;;:27;;13658:10;13642:27;:15;:27;:::i;:::-;13628:11;:41;13692:42;;;;;;;;13720:1;;-1:-1:-1;;;;;13692:42:0;;;;;;;;;;;;-1:-1:-1;13802:4:0;12648:1182;;;;:::o;2840:181::-;2898:7;2930:5;;;2954:6;;;;2946:46;;;;;-1:-1:-1;;;2946:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3012:1;2840:181;-1:-1:-1;;;2840:181:0:o;3731:470::-;3789:7;4033:6;4029:47;;-1:-1:-1;4063:1:0;4056:8;;4029:47;4100:5;;;4104:1;4100;:5;:1;4124:5;;;;;:10;4116:56;;;;-1:-1:-1;;;4116:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13836:324;13958:11;;13899:12;;13958:29;;13974:12;13958:29;:15;:29;:::i;:::-;13944:11;:43;14026:21;;:39;;14052:12;14026:39;:25;:39;:::i;:::-;14002:21;:63;-1:-1:-1;14150:4:0;13836:324;;;:::o;8629:264::-;8720:7;8763:5;8787:19;;;;8779:28;;;;;;8818:9;8830:36;8859:6;8830:24;:9;8844;8830:24;:13;:24;:::i;:::-;:28;:36;:28;:36;:::i;:::-;8818:48;8629:264;-1:-1:-1;;;;;8629:264:0:o;4669:333::-;4727:7;4826:1;4822;:5;4814:44;;;;;-1:-1:-1;;;4814:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4869:9;4885:1;4881;:5;;;;;;;4669:333;-1:-1:-1;;;;4669:333:0:o;17659:11218::-;;;;;;;;;-1:-1:-1;17659:11218:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://55853f24039b1ded6754d632b64fdf8c6b70c28cf4b1871f527687a98130d4d9

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.