ETH Price: $3,337.06 (-0.79%)

Token

UNILAYERX (LAYERX)
 

Overview

Max Total Supply

40,000 LAYERX

Holders

146

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.133187184480253937 LAYERX

Value
$0.00
0xe540c45c504b348ad4d6eb9344e6cfa07c959be6
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
Layerx

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2020-12-02
*/

pragma solidity ^0.5.0;

 /**
 * @title SafeMath
 * @dev   Unsigned math operations with safety checks that revert on error
 */
library SafeMath {
    /**
    * @dev Multiplies two unsigned integers, reverts on overflow.
    */
    function mul(uint256 a, uint256 b) internal pure returns (uint256){
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b,"Calculation error");
        return c;
    }
    
    /**
    * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256){
        // Solidity only automatically asserts when dividing by 0
        require(b > 0,"Calculation error");
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return c;
    }

    /**
    * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b) internal pure returns (uint256){
        require(b <= a,"Calculation error");
        uint256 c = a - b;
        return c;
    }

    /**
    * @dev Adds two unsigned integers, reverts on overflow.
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256){
        uint256 c = a + b;
        require(c >= a,"Calculation error");
        return c;
    }

    /**
    * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),
    * reverts when dividing by zero.
    */
    function mod(uint256 a, uint256 b) internal pure returns (uint256){
        require(b != 0,"Calculation error");
        return a % b;
    }
}

 /**
 * @title ERC20 interface
 * @dev see https://eips.ethereum.org/EIPS/eip-20
 */
interface IERC20 {
  function totalSupply() external view returns (uint256);
  function balanceOf(address account) external view returns (uint256);
  function transfer(address recipient, uint256 amount) external returns (bool);
  function allowance(address owner, address spender) external view returns (uint256);
  function approve(address spender, uint256 amount) external returns (bool);
  function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract Owned {
    address public owner;

    event OwnershipTransferred(address indexed _from, address indexed _to);

    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }

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

contract ApproveAndCallFallBack {
    function receiveApproval(address from, uint256 tokens, address token, bytes memory data) public;
}

 /**
 * @title Layerx Contract For ERC20 Tokens
 * @dev LAYERX tokens as per ERC20 Standards
 */
contract Layerx is IERC20, Owned {
    using SafeMath for uint256;
    
    string public symbol;
    string public  name;
    uint8 public decimals;
    uint _totalSupply;
    uint public ethToNextStake = 0;
    uint stakeNum = 0;
    uint amtByDay = 27397260274000000000;
    address public stakeCreator; 
    bool isPaused = false;
    
    struct Stake {
        uint start;
        uint end;
        uint layerLockedTotal;
        uint layerxReward;
        uint ethReward;
    }
    
    struct StakeHolder {
        uint layerLocked;
        uint layerLockedToNextStake;
        uint numStake;
    }
    
    struct Rewards {
        uint layerLocked;
        uint layersx;
        uint eth;
        bool isReceived;
    }    
    
    event logLockedTokens(address holder, uint amountLocked, uint stakeId);
    event logUnlockedTokens(address holder, uint amountUnlocked);
    event logNewStakePayment(uint id, uint amount);
    event logWithdraw(address holder, uint layerx, uint eth, uint stakeId);    
    
    modifier paused {
        require(isPaused == false, "This contract was paused by the owner!");
        _;
    }
    
    modifier exist (uint index) {
        require(index <= stakeNum, 'This stake does not exist.');
        _;        
    }
    
    mapping (address => StakeHolder) public stakeHolders;
    mapping (uint => Stake) public stakes;
    mapping (address => mapping (uint => Rewards)) public rewards;
    mapping (address => uint) balances;
    mapping (address => mapping(address => uint)) allowed;   
    mapping (address => bool) private swap;
    
    IERC20 UNILAYER = IERC20(0x0fF6ffcFDa92c53F615a4A75D982f399C989366b);

    
    constructor(address _owner) public {
        owner = _owner;
        stakeCreator = owner;
        symbol = "LAYERX";
        name = "UNILAYERX";
        decimals = 18;
        _totalSupply = 40000 * 10**uint(decimals);
        balances[owner] = _totalSupply;
        emit Transfer(address(0), owner, _totalSupply);
        stakes[0] = Stake(now, 0, 0, 0, 0);
    }
    
    /**
     * @dev Total number of tokens in existence.
     */
    function totalSupply() public view returns (uint) {
        return _totalSupply.sub(balances[address(0)]);
    }

    /**
     * @dev Gets the balance of the specified address.
     * @param tokenOwner The address to query the balance of.
     * @return A uint256 representing the amount owned by the passed address.
     */
    function balanceOf(address tokenOwner) public view returns (uint balance) {
        return balances[tokenOwner];
    }
    
    function transfer(address to, uint tokens) public returns (bool success) {
        balances[msg.sender] = balances[msg.sender].sub(tokens);
        balances[to] = balances[to].add(tokens);
        emit Transfer(msg.sender, to, tokens);
        return true;
    }

    function approve(address spender, uint tokens) public returns (bool success) {
        allowed[msg.sender][spender] = tokens;
        emit Approval(msg.sender, spender, tokens);
        return true;
    }

    function transferFrom(address from, address to, uint tokens) public returns (bool success) {
        balances[from] = balances[from].sub(tokens);
        allowed[from][msg.sender] = allowed[from][msg.sender].sub(tokens);
        balances[to] = balances[to].add(tokens);
        emit Transfer(from, to, tokens);
        return true;
    }
    
    function allowance(address tokenOwner, address spender) public view returns (uint remaining) {
        return allowed[tokenOwner][spender];
    }

    function approveAndCall(address spender, uint tokens, bytes memory data) public returns (bool success) {
        allowed[msg.sender][spender] = tokens;
        emit Approval(msg.sender, spender, tokens);
        ApproveAndCallFallBack(spender).receiveApproval(msg.sender, tokens, address(this), data);
        return true;
    }   
    
    /**
     * @dev Burns a specific amount of tokens.
     * @param value The amount of token to be burned.
     */
    function burn(uint256 value) public onlyOwner {
        require(value > 0, "Invalid Amount.");
        require(_totalSupply >= value, "Invalid account state.");
        require(balances[owner] >= value, "Invalid account balances state.");
        _totalSupply = _totalSupply.sub(value);
        balances[owner] = balances[owner].sub(value);
        emit Transfer(owner, address(0), value);
    }    
    
    /**
     * @dev Set new Stake Creator address.
     * @param _stakeCreator The address of the new Stake Creator.
     */    
    function setNewStakeCreator(address _stakeCreator) external onlyOwner {
        require(_stakeCreator != address(0), 'Do not use 0 address');
        stakeCreator = _stakeCreator;
    }
    
    /**
     * @dev Set new pause status.
     * @param newIsPaused The pause status: 0 - not paused, 1 - paused.
     */ 
    function setIsPaused(bool newIsPaused) external onlyOwner {
        isPaused = newIsPaused;
    }     
    
    /**
    * @dev Stake LAYER tokens for earning rewards, Tokens will be deducted from message sender account
    * @param payment Amount of LAYER to be staked in the pool
    */    
    function lock(uint payment) external paused {
        require(payment > 0, 'Payment must be greater than 0.');
        require(UNILAYER.balanceOf(msg.sender) >= payment, 'Holder does not have enough tokens.');
        UNILAYER.transferFrom(msg.sender, address(this), payment);
        
        StakeHolder memory holder = stakeHolders[msg.sender];
        Stake memory stake = stakes[stakeNum];

        if(now <= stake.start) { 
            holder.layerLocked = holder.layerLocked.add(payment);
            holder.numStake = stakeNum;
            stake.layerLockedTotal = stake.layerLockedTotal.add(payment);
            emit logLockedTokens(msg.sender, payment, stakeNum);
            stakes[stakeNum] = stake;
        } else {
            holder.layerLockedToNextStake = holder.layerLockedToNextStake.add(payment);
            emit logLockedTokens(msg.sender, payment, stakeNum+1);
        }
        stakeHolders[msg.sender] = holder;
    }
    
    /**
    * @dev Withdraw My Staked Tokens from staker pool
    */    
    function unlock() external paused {
        StakeHolder memory holder = stakeHolders[msg.sender]; 
        uint amt = holder.layerLocked + holder.layerLockedToNextStake;
        require(amt > 0, 'You do not have locked tokens.');
        require(UNILAYER.balanceOf(address(this))  >= amt, 'Insufficient account balance!');
        
        if(holder.layerLocked > 0) {
            Rewards memory rwds = rewards[msg.sender][stakeNum-1];
            require(rwds.isReceived == true,'Withdraw your rewards.');
        }
        
        Stake memory stake = stakes[stakeNum];
        stake.layerLockedTotal = stake.layerLockedTotal.sub(holder.layerLocked);
        stakes[stakeNum] = stake;
        
        holder.layerLocked = 0;
        holder.layerLockedToNextStake = 0;
        holder.numStake = 0;
        stakeHolders[msg.sender] = holder;
        
        emit logUnlockedTokens(msg.sender, amt);
        UNILAYER.transfer(msg.sender, amt);
    }    
    
    /**
    * @dev Stake Creator finalizes the stake, the stake receives the accumulated ETH as reward and calculates everyone's percentages.
    */      
    function addStakePayment() external {
        require(msg.sender == stakeCreator, 'You cannot call this function');
        Stake memory stake = stakes[stakeNum]; 
        stake.end = now;
        stake.ethReward = stake.ethReward.add(ethToNextStake);
        ethToNextStake = 0;
  
        uint amtLayerx = stake.end.sub(stake.start).div(1 days).mul(amtByDay);
        if(amtLayerx > balances[owner]) { amtLayerx = balances[owner]; }
        stake.layerxReward = amtLayerx;
        stakes[stakeNum] = stake;
        emit logNewStakePayment(stakeNum, ethToNextStake);  
        stakeNum++;
        stakes[stakeNum] = Stake(now, 0, stake.layerLockedTotal, 0, 0);
    }
    
    /**
    * @dev Withdraw Reward Layerx Tokens and ETH
    * @param index Stake index
    */
    function withdraw(uint index) external paused exist(index) {
        Rewards memory rwds = rewards[msg.sender][index];
        Stake memory stake = stakes[index];
        StakeHolder memory holder = stakeHolders[msg.sender];
     
        if(index > holder.numStake && holder.numStake > 0) {
            Rewards memory rwdsb = rewards[msg.sender][index-1];
            require(rwdsb.isReceived == true, 'Get past rewards first.');
        }
        
        require(stake.end <= now, 'Invalid date for withdrawal.');
        require(rwds.isReceived == false, 'You already withdrawal your rewards.');
        require(balances[owner] >= rwds.layersx, 'Insufficient account balance!');
        require(address(this).balance >= rwds.eth,'Invalid account state, not enough funds.');
        
        rwds.isReceived = true;
        rwds.layerLocked = holder.layerLocked;
        
        if(rwds.layerLocked > 0) {
            rwds.layersx = rwds.layerLocked.mul(stake.layerxReward).div(stake.layerLockedTotal);
            rwds.eth = rwds.layerLocked.mul(stake.ethReward).div(stake.layerLockedTotal);            
        }
        
        if(index == (stakeNum-1) && holder.layerLockedToNextStake > 0) {
            Stake memory stakeN = stakes[stakeNum];
            holder.layerLocked = holder.layerLocked.add(holder.layerLockedToNextStake);
            stakeN.layerLockedTotal = stakeN.layerLockedTotal.add(holder.layerLockedToNextStake);
            holder.layerLockedToNextStake = 0; 
            stakes[stakeNum] = stakeN;
        }
        
        holder.numStake = (index+1);
        stakeHolders[msg.sender] = holder;

        rewards[msg.sender][index] = rwds;
        emit logWithdraw(msg.sender, rwds.layersx, rwds.eth, index);

        if(rwds.layersx > 0) {
            balances[owner] = balances[owner].sub(rwds.layersx);
            balances[msg.sender] = balances[msg.sender].add(rwds.layersx);  
            emit Transfer(owner, msg.sender, rwds.layersx);
        }
        
        if(rwds.eth > 0) { msg.sender.transfer(rwds.eth); }
    }

    /**
    * @dev Function to get the number of stakes
    * @return number of stakes
    */    
    function getStakesNum() external view returns (uint) {
        return stakeNum+1;
    }
    
    /**
    * @dev Receive ETH and add value to the accumulated eth for stake
    */      
    function() external payable {
        ethToNextStake = ethToNextStake.add(msg.value); 
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountLocked","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"stakeId","type":"uint256"}],"name":"logLockedTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"logNewStakePayment","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountUnlocked","type":"uint256"}],"name":"logUnlockedTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"uint256","name":"layerx","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eth","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"stakeId","type":"uint256"}],"name":"logWithdraw","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":false,"inputs":[],"name":"addStakePayment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ethToNextStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getStakesNum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"payment","type":"uint256"}],"name":"lock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"rewards","outputs":[{"internalType":"uint256","name":"layerLocked","type":"uint256"},{"internalType":"uint256","name":"layersx","type":"uint256"},{"internalType":"uint256","name":"eth","type":"uint256"},{"internalType":"bool","name":"isReceived","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"newIsPaused","type":"bool"}],"name":"setIsPaused","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_stakeCreator","type":"address"}],"name":"setNewStakeCreator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stakeCreator","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakeHolders","outputs":[{"internalType":"uint256","name":"layerLocked","type":"uint256"},{"internalType":"uint256","name":"layerLockedToNextStake","type":"uint256"},{"internalType":"uint256","name":"numStake","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakes","outputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"uint256","name":"layerLockedTotal","type":"uint256"},{"internalType":"uint256","name":"layerxReward","type":"uint256"},{"internalType":"uint256","name":"ethReward","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unlock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040526000600555600060065568017c369f0ff2b0f4006007556000600860146101000a81548160ff021916908315150217905550730ff6ffcfda92c53f615a4a75d982f399c989366b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200009857600080fd5b5060405162003ffa38038062003ffa83398181016040526020811015620000be57600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600681526020017f4c4159455258000000000000000000000000000000000000000000000000000081525060019080519060200190620001be929190620003b3565b506040518060400160405280600981526020017f554e494c41594552580000000000000000000000000000000000000000000000815250600290805190602001906200020c929190620003b3565b506012600360006101000a81548160ff021916908360ff160217905550600360009054906101000a900460ff1660ff16600a0a619c4002600481905550600454600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040518082815260200191505060405180910390a36040518060a001604052804281526020016000815260200160008152602001600081526020016000815250600a600080815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030155608082015181600401559050505062000462565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003f657805160ff191683800117855562000427565b8280016001018555821562000427579182015b828111156200042657825182559160200191906001019062000409565b5b5090506200043691906200043a565b5090565b6200045f91905b808211156200045b57600081600090555060010162000441565b5090565b90565b613b8880620004726000396000f3fe6080604052600436106101665760003560e01c8063a69df4b5116100d1578063dd4670641161008a578063ea40450e11610064578063ea40450e146109d6578063eba39ef514610a01578063f20d76be14610a2c578063f2fde38b14610a4357610166565b8063dd467064146108a3578063dd62ed3e146108de578063e26ff10a1461096357610166565b8063a69df4b5146105c5578063a9059cbb146105dc578063b933ceac1461064f578063cae9ca51146106d7578063d5a44f86146107e1578063d73531b91461084c57610166565b80632e1a7d4d116101235780632e1a7d4d146103d2578063313ce5671461040d57806342966c681461043e57806370a08231146104795780638da5cb5b146104de57806395d89b411461053557610166565b806305e55e221461018357806306fdde03146101d4578063095ea7b31461026457806318160ddd146102d757806323b872dd14610302578063240976bf14610395575b61017b34600554610a9490919063ffffffff16565b600581905550005b34801561018f57600080fd5b506101d2600480360360208110156101a657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b1c565b005b3480156101e057600080fd5b506101e9610c5c565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022957808201518184015260208101905061020e565b50505050905090810190601f1680156102565780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027057600080fd5b506102bd6004803603604081101561028757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cfa565b604051808215151515815260200191505060405180910390f35b3480156102e357600080fd5b506102ec610dec565b6040518082815260200191505060405180910390f35b34801561030e57600080fd5b5061037b6004803603606081101561032557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e47565b604051808215151515815260200191505060405180910390f35b3480156103a157600080fd5b506103d0600480360360208110156103b857600080fd5b810190808035151590602001909291905050506110f2565b005b3480156103de57600080fd5b5061040b600480360360208110156103f557600080fd5b8101908080359060200190929190505050611168565b005b34801561041957600080fd5b50610422611caf565b604051808260ff1660ff16815260200191505060405180910390f35b34801561044a57600080fd5b506104776004803603602081101561046157600080fd5b8101908080359060200190929190505050611cc2565b005b34801561048557600080fd5b506104c86004803603602081101561049c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061205b565b6040518082815260200191505060405180910390f35b3480156104ea57600080fd5b506104f36120a4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054157600080fd5b5061054a6120c9565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561058a57808201518184015260208101905061056f565b50505050905090810190601f1680156105b75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105d157600080fd5b506105da612167565b005b3480156105e857600080fd5b50610635600480360360408110156105ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506127eb565b604051808215151515815260200191505060405180910390f35b34801561065b57600080fd5b506106a86004803603604081101561067257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612986565b604051808581526020018481526020018381526020018215151515815260200194505050505060405180910390f35b3480156106e357600080fd5b506107c7600480360360608110156106fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561074157600080fd5b82018360208201111561075357600080fd5b8035906020019184600183028401116401000000008311171561077557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506129d0565b604051808215151515815260200191505060405180910390f35b3480156107ed57600080fd5b5061081a6004803603602081101561080457600080fd5b8101908080359060200190929190505050612c03565b604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b34801561085857600080fd5b50610861612c39565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108af57600080fd5b506108dc600480360360208110156108c657600080fd5b8101908080359060200190929190505050612c5f565b005b3480156108ea57600080fd5b5061094d6004803603604081101561090157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613275565b6040518082815260200191505060405180910390f35b34801561096f57600080fd5b506109b26004803603602081101561098657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506132fc565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156109e257600080fd5b506109eb613326565b6040518082815260200191505060405180910390f35b348015610a0d57600080fd5b50610a16613333565b6040518082815260200191505060405180910390f35b348015610a3857600080fd5b50610a41613339565b005b348015610a4f57600080fd5b50610a9260048036036020811015610a6657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506136c6565b005b600080828401905083811015610b12576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f43616c63756c6174696f6e206572726f7200000000000000000000000000000081525060200191505060405180910390fd5b8091505092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b7557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c18576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f446f206e6f74207573652030206164647265737300000000000000000000000081525060200191505060405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610cf25780601f10610cc757610100808354040283529160200191610cf2565b820191906000526020600020905b815481529060010190602001808311610cd557829003601f168201915b505050505081565b600081600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000610e42600c60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460045461386390919063ffffffff16565b905090565b6000610e9b82600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461386390919063ffffffff16565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f6d82600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461386390919063ffffffff16565b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061103f82600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a9490919063ffffffff16565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461114b57600080fd5b80600860146101000a81548160ff02191690831515021790555050565b60001515600860149054906101000a900460ff161515146111d4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613b0b6026913960400191505060405180910390fd5b8060065481111561124d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f54686973207374616b6520646f6573206e6f742065786973742e00000000000081525060200191505060405180910390fd5b611255613a1e565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16151515158152505090506112f3613a48565b600a60008581526020019081526020016000206040518060a001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481525050905061134d613a77565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806060016040529081600082015481526020016001820154815260200160028201548152505090508060400151851180156113ce575060008160400151115b156114f4576113db613a1e565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001880381526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16151515158152505090506001151581606001511515146114f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f476574207061737420726577617264732066697273742e00000000000000000081525060200191505060405180910390fd5b505b428260200151111561156e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496e76616c6964206461746520666f72207769746864726177616c2e0000000081525060200191505060405180910390fd5b6000151583606001511515146115cf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613abf6024913960400191505060405180910390fd5b8260200151600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156116a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496e73756666696369656e74206163636f756e742062616c616e63652100000081525060200191505060405180910390fd5b8260400151471015611706576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613ae36028913960400191505060405180910390fd5b600183606001901515908115158152505080600001518360000181815250506000836000015111156117a7576117638260400151611755846060015186600001516138ec90919063ffffffff16565b61398f90919063ffffffff16565b83602001818152505061179d826040015161178f846080015186600001516138ec90919063ffffffff16565b61398f90919063ffffffff16565b8360400181815250505b600160065403851480156117bf575060008160200151115b156118c0576117cc613a48565b600a600060065481526020019081526020016000206040518060a001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481525050905061183b82602001518360000151610a9490919063ffffffff16565b82600001818152505061185f82602001518260400151610a9490919063ffffffff16565b816040018181525050600082602001818152505080600a600060065481526020019081526020016000206000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040155905050505b6001850181604001818152505080600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600101556040820151816002015590505082600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff0219169083151502179055509050507f77ba55cea52637902d444be011a3d69dcdf1cc0e412c38d3f936ae2aad7b013f338460200151856040015188604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200194505050505060405180910390a1600083602001511115611c4f57611ac78360200151600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461386390919063ffffffff16565b600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b818360200151600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a9490919063ffffffff16565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85602001516040518082815260200191505060405180910390a35b600083604001511115611ca8573373ffffffffffffffffffffffffffffffffffffffff166108fc84604001519081150290604051600060405180830381858888f19350505050158015611ca6573d6000803e3d6000fd5b505b5050505050565b600360009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d1b57600080fd5b60008111611d91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e76616c696420416d6f756e742e000000000000000000000000000000000081525060200191505060405180910390fd5b806004541015611e09576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f496e76616c6964206163636f756e742073746174652e0000000000000000000081525060200191505060405180910390fd5b80600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611edf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206163636f756e742062616c616e6365732073746174652e0081525060200191505060405180910390fd5b611ef48160045461386390919063ffffffff16565b600481905550611f6d81600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461386390919063ffffffff16565b600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561215f5780601f106121345761010080835404028352916020019161215f565b820191906000526020600020905b81548152906001019060200180831161214257829003601f168201915b505050505081565b60001515600860149054906101000a900460ff161515146121d3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613b0b6026913960400191505060405180910390fd5b6121db613a77565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180606001604052908160008201548152602001600182015481526020016002820154815250509050600081602001518260000151019050600081116122ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f596f7520646f206e6f742068617665206c6f636b656420746f6b656e732e000081525060200191505060405180910390fd5b80600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561236a57600080fd5b505afa15801561237e573d6000803e3d6000fd5b505050506040513d602081101561239457600080fd5b81019080805190602001909291905050501015612419576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496e73756666696369656e74206163636f756e742062616c616e63652100000081525060200191505060405180910390fd5b6000826000015111156125495761242e613a1e565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060016006540381526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff1615151515815250509050600115158160600151151514612547576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f576974686472617720796f757220726577617264732e0000000000000000000081525060200191505060405180910390fd5b505b612551613a48565b600a600060065481526020019081526020016000206040518060a00160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152505090506125c08360000151826040015161386390919063ffffffff16565b81604001818152505080600a60006006548152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015590505060008360000181815250506000836020018181525050600083604001818152505082600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010155604082015181600201559050507f1e1c7315f93a6e1b6bfe0e451712d9bbed8801b4181d6b6156ac15cfdec523173383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156127aa57600080fd5b505af11580156127be573d6000803e3d6000fd5b505050506040513d60208110156127d457600080fd5b810190808051906020019092919050505050505050565b600061283f82600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461386390919063ffffffff16565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128d482600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a9490919063ffffffff16565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600b602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020154908060030160009054906101000a900460ff16905084565b600082600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612b91578082015181840152602081019050612b76565b50505050905090810190601f168015612bbe5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015612be057600080fd5b505af1158015612bf4573d6000803e3d6000fd5b50505050600190509392505050565b600a6020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154905085565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60001515600860149054906101000a900460ff16151514612ccb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613b0b6026913960400191505060405180910390fd5b60008111612d41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5061796d656e74206d7573742062652067726561746572207468616e20302e0081525060200191505060405180910390fd5b80600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612de157600080fd5b505afa158015612df5573d6000803e3d6000fd5b505050506040513d6020811015612e0b57600080fd5b81019080805190602001909291905050501015612e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613b316023913960400191505060405180910390fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015612f5057600080fd5b505af1158015612f64573d6000803e3d6000fd5b505050506040513d6020811015612f7a57600080fd5b810190808051906020019092919050505050612f94613a77565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180606001604052908160008201548152602001600182015481526020016002820154815250509050613006613a48565b600a600060065481526020019081526020016000206040518060a0016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815250509050806000015142116131765761307c838360000151610a9490919063ffffffff16565b8260000181815250506006548260400181815250506130a8838260400151610a9490919063ffffffff16565b8160400181815250507f2ee996d27bca8b62e571470f16dbf7738e6fb7b30525d09904e20647f863edd23384600654604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a180600a60006006548152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015590505061320f565b61318d838360200151610a9490919063ffffffff16565b8260200181815250507f2ee996d27bca8b62e571470f16dbf7738e6fb7b30525d09904e20647f863edd23384600160065401604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a15b81600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050505050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60096020528060005260406000206000915090508060000154908060010154908060020154905083565b6000600160065401905090565b60055481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146133fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f596f752063616e6e6f742063616c6c20746869732066756e6374696f6e00000081525060200191505060405180910390fd5b613404613a48565b600a600060065481526020019081526020016000206040518060a00160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152505090504281602001818152505061347b6005548260800151610a9490919063ffffffff16565b816080018181525050600060058190555060006134d26007546134c4620151806134b68660000151876020015161386390919063ffffffff16565b61398f90919063ffffffff16565b6138ec90919063ffffffff16565b9050600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111156135a057600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b8082606001818152505081600a6000600654815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030155608082015181600401559050507fd1b6b1ffebabe406cdd91d77a18826f8cc1b35e378a6e042b48524ea86b906f6600654600554604051808381526020018281526020019250505060405180910390a16006600081548092919060010191905055506040518060a001604052804281526020016000815260200183604001518152602001600081526020016000815250600a6000600654815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030155608082015181600401559050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461371f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156137a5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613a996026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000828211156138db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f43616c63756c6174696f6e206572726f7200000000000000000000000000000081525060200191505060405180910390fd5b600082840390508091505092915050565b6000808314156138ff5760009050613989565b600082840290508284828161391057fe5b0414613984576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f43616c63756c6174696f6e206572726f7200000000000000000000000000000081525060200191505060405180910390fd5b809150505b92915050565b6000808211613a06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f43616c63756c6174696f6e206572726f7200000000000000000000000000000081525060200191505060405180910390fd5b6000828481613a1157fe5b0490508091505092915050565b60405180608001604052806000815260200160008152602001600081526020016000151581525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6040518060600160405280600081526020016000815260200160008152509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373596f7520616c7265616479207769746864726177616c20796f757220726577617264732e496e76616c6964206163636f756e742073746174652c206e6f7420656e6f7567682066756e64732e5468697320636f6e7472616374207761732070617573656420627920746865206f776e657221486f6c64657220646f6573206e6f74206861766520656e6f75676820746f6b656e732ea265627a7a72315820d8e515aec87056d78325ca0d7a9fa9529d12ffdb839137fa414fa3ab093b45c264736f6c63430005110032000000000000000000000000abe87e2062405c1dc456141ee40ecb778cf4426f

Deployed Bytecode

0x6080604052600436106101665760003560e01c8063a69df4b5116100d1578063dd4670641161008a578063ea40450e11610064578063ea40450e146109d6578063eba39ef514610a01578063f20d76be14610a2c578063f2fde38b14610a4357610166565b8063dd467064146108a3578063dd62ed3e146108de578063e26ff10a1461096357610166565b8063a69df4b5146105c5578063a9059cbb146105dc578063b933ceac1461064f578063cae9ca51146106d7578063d5a44f86146107e1578063d73531b91461084c57610166565b80632e1a7d4d116101235780632e1a7d4d146103d2578063313ce5671461040d57806342966c681461043e57806370a08231146104795780638da5cb5b146104de57806395d89b411461053557610166565b806305e55e221461018357806306fdde03146101d4578063095ea7b31461026457806318160ddd146102d757806323b872dd14610302578063240976bf14610395575b61017b34600554610a9490919063ffffffff16565b600581905550005b34801561018f57600080fd5b506101d2600480360360208110156101a657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b1c565b005b3480156101e057600080fd5b506101e9610c5c565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022957808201518184015260208101905061020e565b50505050905090810190601f1680156102565780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027057600080fd5b506102bd6004803603604081101561028757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cfa565b604051808215151515815260200191505060405180910390f35b3480156102e357600080fd5b506102ec610dec565b6040518082815260200191505060405180910390f35b34801561030e57600080fd5b5061037b6004803603606081101561032557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e47565b604051808215151515815260200191505060405180910390f35b3480156103a157600080fd5b506103d0600480360360208110156103b857600080fd5b810190808035151590602001909291905050506110f2565b005b3480156103de57600080fd5b5061040b600480360360208110156103f557600080fd5b8101908080359060200190929190505050611168565b005b34801561041957600080fd5b50610422611caf565b604051808260ff1660ff16815260200191505060405180910390f35b34801561044a57600080fd5b506104776004803603602081101561046157600080fd5b8101908080359060200190929190505050611cc2565b005b34801561048557600080fd5b506104c86004803603602081101561049c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061205b565b6040518082815260200191505060405180910390f35b3480156104ea57600080fd5b506104f36120a4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054157600080fd5b5061054a6120c9565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561058a57808201518184015260208101905061056f565b50505050905090810190601f1680156105b75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105d157600080fd5b506105da612167565b005b3480156105e857600080fd5b50610635600480360360408110156105ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506127eb565b604051808215151515815260200191505060405180910390f35b34801561065b57600080fd5b506106a86004803603604081101561067257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612986565b604051808581526020018481526020018381526020018215151515815260200194505050505060405180910390f35b3480156106e357600080fd5b506107c7600480360360608110156106fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561074157600080fd5b82018360208201111561075357600080fd5b8035906020019184600183028401116401000000008311171561077557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506129d0565b604051808215151515815260200191505060405180910390f35b3480156107ed57600080fd5b5061081a6004803603602081101561080457600080fd5b8101908080359060200190929190505050612c03565b604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b34801561085857600080fd5b50610861612c39565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108af57600080fd5b506108dc600480360360208110156108c657600080fd5b8101908080359060200190929190505050612c5f565b005b3480156108ea57600080fd5b5061094d6004803603604081101561090157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613275565b6040518082815260200191505060405180910390f35b34801561096f57600080fd5b506109b26004803603602081101561098657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506132fc565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156109e257600080fd5b506109eb613326565b6040518082815260200191505060405180910390f35b348015610a0d57600080fd5b50610a16613333565b6040518082815260200191505060405180910390f35b348015610a3857600080fd5b50610a41613339565b005b348015610a4f57600080fd5b50610a9260048036036020811015610a6657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506136c6565b005b600080828401905083811015610b12576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f43616c63756c6174696f6e206572726f7200000000000000000000000000000081525060200191505060405180910390fd5b8091505092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b7557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c18576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f446f206e6f74207573652030206164647265737300000000000000000000000081525060200191505060405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610cf25780601f10610cc757610100808354040283529160200191610cf2565b820191906000526020600020905b815481529060010190602001808311610cd557829003601f168201915b505050505081565b600081600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000610e42600c60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460045461386390919063ffffffff16565b905090565b6000610e9b82600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461386390919063ffffffff16565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f6d82600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461386390919063ffffffff16565b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061103f82600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a9490919063ffffffff16565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461114b57600080fd5b80600860146101000a81548160ff02191690831515021790555050565b60001515600860149054906101000a900460ff161515146111d4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613b0b6026913960400191505060405180910390fd5b8060065481111561124d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f54686973207374616b6520646f6573206e6f742065786973742e00000000000081525060200191505060405180910390fd5b611255613a1e565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16151515158152505090506112f3613a48565b600a60008581526020019081526020016000206040518060a001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481525050905061134d613a77565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806060016040529081600082015481526020016001820154815260200160028201548152505090508060400151851180156113ce575060008160400151115b156114f4576113db613a1e565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001880381526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16151515158152505090506001151581606001511515146114f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f476574207061737420726577617264732066697273742e00000000000000000081525060200191505060405180910390fd5b505b428260200151111561156e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496e76616c6964206461746520666f72207769746864726177616c2e0000000081525060200191505060405180910390fd5b6000151583606001511515146115cf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613abf6024913960400191505060405180910390fd5b8260200151600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156116a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496e73756666696369656e74206163636f756e742062616c616e63652100000081525060200191505060405180910390fd5b8260400151471015611706576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613ae36028913960400191505060405180910390fd5b600183606001901515908115158152505080600001518360000181815250506000836000015111156117a7576117638260400151611755846060015186600001516138ec90919063ffffffff16565b61398f90919063ffffffff16565b83602001818152505061179d826040015161178f846080015186600001516138ec90919063ffffffff16565b61398f90919063ffffffff16565b8360400181815250505b600160065403851480156117bf575060008160200151115b156118c0576117cc613a48565b600a600060065481526020019081526020016000206040518060a001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481525050905061183b82602001518360000151610a9490919063ffffffff16565b82600001818152505061185f82602001518260400151610a9490919063ffffffff16565b816040018181525050600082602001818152505080600a600060065481526020019081526020016000206000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040155905050505b6001850181604001818152505080600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600101556040820151816002015590505082600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff0219169083151502179055509050507f77ba55cea52637902d444be011a3d69dcdf1cc0e412c38d3f936ae2aad7b013f338460200151856040015188604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200194505050505060405180910390a1600083602001511115611c4f57611ac78360200151600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461386390919063ffffffff16565b600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b818360200151600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a9490919063ffffffff16565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85602001516040518082815260200191505060405180910390a35b600083604001511115611ca8573373ffffffffffffffffffffffffffffffffffffffff166108fc84604001519081150290604051600060405180830381858888f19350505050158015611ca6573d6000803e3d6000fd5b505b5050505050565b600360009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d1b57600080fd5b60008111611d91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e76616c696420416d6f756e742e000000000000000000000000000000000081525060200191505060405180910390fd5b806004541015611e09576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f496e76616c6964206163636f756e742073746174652e0000000000000000000081525060200191505060405180910390fd5b80600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611edf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206163636f756e742062616c616e6365732073746174652e0081525060200191505060405180910390fd5b611ef48160045461386390919063ffffffff16565b600481905550611f6d81600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461386390919063ffffffff16565b600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561215f5780601f106121345761010080835404028352916020019161215f565b820191906000526020600020905b81548152906001019060200180831161214257829003601f168201915b505050505081565b60001515600860149054906101000a900460ff161515146121d3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613b0b6026913960400191505060405180910390fd5b6121db613a77565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180606001604052908160008201548152602001600182015481526020016002820154815250509050600081602001518260000151019050600081116122ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f596f7520646f206e6f742068617665206c6f636b656420746f6b656e732e000081525060200191505060405180910390fd5b80600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561236a57600080fd5b505afa15801561237e573d6000803e3d6000fd5b505050506040513d602081101561239457600080fd5b81019080805190602001909291905050501015612419576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496e73756666696369656e74206163636f756e742062616c616e63652100000081525060200191505060405180910390fd5b6000826000015111156125495761242e613a1e565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060016006540381526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff1615151515815250509050600115158160600151151514612547576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f576974686472617720796f757220726577617264732e0000000000000000000081525060200191505060405180910390fd5b505b612551613a48565b600a600060065481526020019081526020016000206040518060a00160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152505090506125c08360000151826040015161386390919063ffffffff16565b81604001818152505080600a60006006548152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015590505060008360000181815250506000836020018181525050600083604001818152505082600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010155604082015181600201559050507f1e1c7315f93a6e1b6bfe0e451712d9bbed8801b4181d6b6156ac15cfdec523173383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156127aa57600080fd5b505af11580156127be573d6000803e3d6000fd5b505050506040513d60208110156127d457600080fd5b810190808051906020019092919050505050505050565b600061283f82600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461386390919063ffffffff16565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128d482600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a9490919063ffffffff16565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600b602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020154908060030160009054906101000a900460ff16905084565b600082600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612b91578082015181840152602081019050612b76565b50505050905090810190601f168015612bbe5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015612be057600080fd5b505af1158015612bf4573d6000803e3d6000fd5b50505050600190509392505050565b600a6020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154905085565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60001515600860149054906101000a900460ff16151514612ccb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613b0b6026913960400191505060405180910390fd5b60008111612d41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5061796d656e74206d7573742062652067726561746572207468616e20302e0081525060200191505060405180910390fd5b80600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612de157600080fd5b505afa158015612df5573d6000803e3d6000fd5b505050506040513d6020811015612e0b57600080fd5b81019080805190602001909291905050501015612e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613b316023913960400191505060405180910390fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015612f5057600080fd5b505af1158015612f64573d6000803e3d6000fd5b505050506040513d6020811015612f7a57600080fd5b810190808051906020019092919050505050612f94613a77565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180606001604052908160008201548152602001600182015481526020016002820154815250509050613006613a48565b600a600060065481526020019081526020016000206040518060a0016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815250509050806000015142116131765761307c838360000151610a9490919063ffffffff16565b8260000181815250506006548260400181815250506130a8838260400151610a9490919063ffffffff16565b8160400181815250507f2ee996d27bca8b62e571470f16dbf7738e6fb7b30525d09904e20647f863edd23384600654604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a180600a60006006548152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015590505061320f565b61318d838360200151610a9490919063ffffffff16565b8260200181815250507f2ee996d27bca8b62e571470f16dbf7738e6fb7b30525d09904e20647f863edd23384600160065401604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a15b81600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020155905050505050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60096020528060005260406000206000915090508060000154908060010154908060020154905083565b6000600160065401905090565b60055481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146133fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f596f752063616e6e6f742063616c6c20746869732066756e6374696f6e00000081525060200191505060405180910390fd5b613404613a48565b600a600060065481526020019081526020016000206040518060a00160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152505090504281602001818152505061347b6005548260800151610a9490919063ffffffff16565b816080018181525050600060058190555060006134d26007546134c4620151806134b68660000151876020015161386390919063ffffffff16565b61398f90919063ffffffff16565b6138ec90919063ffffffff16565b9050600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111156135a057600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b8082606001818152505081600a6000600654815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030155608082015181600401559050507fd1b6b1ffebabe406cdd91d77a18826f8cc1b35e378a6e042b48524ea86b906f6600654600554604051808381526020018281526020019250505060405180910390a16006600081548092919060010191905055506040518060a001604052804281526020016000815260200183604001518152602001600081526020016000815250600a6000600654815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030155608082015181600401559050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461371f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156137a5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613a996026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000828211156138db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f43616c63756c6174696f6e206572726f7200000000000000000000000000000081525060200191505060405180910390fd5b600082840390508091505092915050565b6000808314156138ff5760009050613989565b600082840290508284828161391057fe5b0414613984576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f43616c63756c6174696f6e206572726f7200000000000000000000000000000081525060200191505060405180910390fd5b809150505b92915050565b6000808211613a06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f43616c63756c6174696f6e206572726f7200000000000000000000000000000081525060200191505060405180910390fd5b6000828481613a1157fe5b0490508091505092915050565b60405180608001604052806000815260200160008152602001600081526020016000151581525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6040518060600160405280600081526020016000815260200160008152509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373596f7520616c7265616479207769746864726177616c20796f757220726577617264732e496e76616c6964206163636f756e742073746174652c206e6f7420656e6f7567682066756e64732e5468697320636f6e7472616374207761732070617573656420627920746865206f776e657221486f6c64657220646f6573206e6f74206861766520656e6f75676820746f6b656e732ea265627a7a72315820d8e515aec87056d78325ca0d7a9fa9529d12ffdb839137fa414fa3ab093b45c264736f6c63430005110032

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

000000000000000000000000abe87e2062405c1dc456141ee40ecb778cf4426f

-----Decoded View---------------
Arg [0] : _owner (address): 0xabe87E2062405C1DC456141EE40ecB778CF4426f

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000abe87e2062405c1dc456141ee40ecb778cf4426f


Deployed Bytecode Sourcemap

3245:10802:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14004:29;14023:9;14004:14;;:18;;:29;;;;:::i;:::-;13987:14;:46;;;;3245:10802;7923:188;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7923:188:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7923:188:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;3351:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3351:19:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3351:19:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6177:208;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6177:208:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6177:208:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5432:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5432:114:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6393:343;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6393:343:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6393:343:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8250:99;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8250:99:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8250:99:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;11543:2100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11543:2100:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11543:2100:0;;;;;;;;;;;;;;;;;:::i;:::-;;3377:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3377:21:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7372:402;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7372:402:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7372:402:0;;;;;;;;;;;;;;;;;:::i;:::-;;5770:120;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5770:120:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5770:120:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2563:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2563:20:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3324;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3324:20:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3324:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9604:973;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9604:973:0;;;:::i;:::-;;5902:267;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5902:267:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5902:267:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4671:61;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4671:61:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4671:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6903:333;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6903:333:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6903:333:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6903:333:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6903:333:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6903:333:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;6903:333:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4627:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4627:37:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4627:37:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3533:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3533:27:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8554:962;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8554:962:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8554:962:0;;;;;;;;;;;;;;;;;:::i;:::-;;6748:147;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6748:147:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6748:147:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4568:52;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4568:52:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4568:52:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13753:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13753:89:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3429:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3429:30:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10751:681;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10751:681:0;;;:::i;:::-;;2757:238;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2757:238:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2757:238:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;1316:167;1374:7;1393:9;1409:1;1405;:5;1393:17;;1434:1;1429;:6;;1421:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1474:1;1467:8;;;1316:167;;;;:::o;7923:188::-;2723:5;;;;;;;;;;;2709:19;;:10;:19;;;2701:28;;;;;;8037:1;8012:27;;:13;:27;;;;8004:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8090:13;8075:12;;:28;;;;;;;;;;;;;;;;;;7923:188;:::o;3351:19::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6177:208::-;6240:12;6296:6;6265:7;:19;6273:10;6265:19;;;;;;;;;;;;;;;:28;6285:7;6265:28;;;;;;;;;;;;;;;:37;;;;6339:7;6318:37;;6327:10;6318:37;;;6348:6;6318:37;;;;;;;;;;;;;;;;;;6373:4;6366:11;;6177:208;;;;:::o;5432:114::-;5476:4;5500:38;5517:8;:20;5534:1;5517:20;;;;;;;;;;;;;;;;5500:12;;:16;;:38;;;;:::i;:::-;5493:45;;5432:114;:::o;6393:343::-;6470:12;6512:26;6531:6;6512:8;:14;6521:4;6512:14;;;;;;;;;;;;;;;;:18;;:26;;;;:::i;:::-;6495:8;:14;6504:4;6495:14;;;;;;;;;;;;;;;:43;;;;6577:37;6607:6;6577:7;:13;6585:4;6577:13;;;;;;;;;;;;;;;:25;6591:10;6577:25;;;;;;;;;;;;;;;;:29;;:37;;;;:::i;:::-;6549:7;:13;6557:4;6549:13;;;;;;;;;;;;;;;:25;6563:10;6549:25;;;;;;;;;;;;;;;:65;;;;6640:24;6657:6;6640:8;:12;6649:2;6640:12;;;;;;;;;;;;;;;;:16;;:24;;;;:::i;:::-;6625:8;:12;6634:2;6625:12;;;;;;;;;;;;;;;:39;;;;6695:2;6680:26;;6689:4;6680:26;;;6699:6;6680:26;;;;;;;;;;;;;;;;;;6724:4;6717:11;;6393:343;;;;;:::o;8250:99::-;2723:5;;;;;;;;;;;2709:19;;:10;:19;;;2701:28;;;;;;8330:11;8319:8;;:22;;;;;;;;;;;;;;;;;;8250:99;:::o;11543:2100::-;4353:5;4341:17;;:8;;;;;;;;;;;:17;;;4333:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11595:5;4489:8;;4480:5;:17;;4472:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11613:19;;:::i;:::-;11635:7;:19;11643:10;11635:19;;;;;;;;;;;;;;;:26;11655:5;11635:26;;;;;;;;;;;11613:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11672:18;;:::i;:::-;11693:6;:13;11700:5;11693:13;;;;;;;;;;;11672:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11717:25;;:::i;:::-;11745:12;:24;11758:10;11745:24;;;;;;;;;;;;;;;11717:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11798:6;:15;;;11790:5;:23;:46;;;;;11835:1;11817:6;:15;;;:19;11790:46;11787:204;;;11853:20;;:::i;:::-;11876:7;:19;11884:10;11876:19;;;;;;;;;;;;;;;:28;11902:1;11896:5;:7;11876:28;;;;;;;;;;;11853:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11947:4;11927:24;;:5;:16;;;:24;;;11919:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11787:204;;12032:3;12019:5;:9;;;:16;;12011:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12106:5;12087:24;;:4;:15;;;:24;;;12079:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12190:4;:12;;;12171:8;:15;12180:5;;;;;;;;;;;12171:15;;;;;;;;;;;;;;;;:31;;12163:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12280:4;:8;;;12255:21;:33;;12247:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12371:4;12353;:15;;:22;;;;;;;;;;;12405:6;:18;;;12386:4;:16;;:37;;;;;12466:1;12447:4;:16;;;:20;12444:238;;;12499:68;12544:5;:22;;;12499:40;12520:5;:18;;;12499:4;:16;;;:20;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;12484:4;:12;;:83;;;;;12593:65;12635:5;:22;;;12593:37;12614:5;:15;;;12593:4;:16;;;:20;;:37;;;;:::i;:::-;:41;;:65;;;;:::i;:::-;12582:4;:8;;:76;;;;;12444:238;12724:1;12715:8;;:10;12705:5;:21;:58;;;;;12762:1;12730:6;:29;;;:33;12705:58;12702:405;;;12780:19;;:::i;:::-;12802:6;:16;12809:8;;12802:16;;;;;;;;;;;12780:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12854:53;12877:6;:29;;;12854:6;:18;;;:22;;:53;;;;:::i;:::-;12833:6;:18;;:74;;;;;12948:58;12976:6;:29;;;12948:6;:23;;;:27;;:58;;;;:::i;:::-;12922:6;:23;;:84;;;;;13053:1;13021:6;:29;;:33;;;;;13089:6;13070;:16;13077:8;;13070:16;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12702:405;;13152:1;13146:5;:7;13127:6;:15;;:27;;;;;13192:6;13165:12;:24;13178:10;13165:24;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;13240:4;13211:7;:19;13219:10;13211:19;;;;;;;;;;;;;;;:26;13231:5;13211:26;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13260:54;13272:10;13284:4;:12;;;13298:4;:8;;;13308:5;13260:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13345:1;13330:4;:12;;;:16;13327:238;;;13381:33;13401:4;:12;;;13381:8;:15;13390:5;;;;;;;;;;;13381:15;;;;;;;;;;;;;;;;:19;;:33;;;;:::i;:::-;13363:8;:15;13372:5;;;;;;;;;;;13363:15;;;;;;;;;;;;;;;:51;;;;13452:38;13477:4;:12;;;13452:8;:20;13461:10;13452:20;;;;;;;;;;;;;;;;:24;;:38;;;;:::i;:::-;13429:8;:20;13438:10;13429:20;;;;;;;;;;;;;;;:61;;;;13528:10;13512:41;;13521:5;;;;;;;;;;;13512:41;;;13540:4;:12;;;13512:41;;;;;;;;;;;;;;;;;;13327:238;13599:1;13588:4;:8;;;:12;13585:51;;;13604:10;:19;;:29;13624:4;:8;;;13604:29;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13604:29:0;13585:51;4539:1;;;4412;11543:2100;:::o;3377:21::-;;;;;;;;;;;;;:::o;7372:402::-;2723:5;;;;;;;;;;;2709:19;;:10;:19;;;2701:28;;;;;;7445:1;7437:5;:9;7429:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7501:5;7485:12;;:21;;7477:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7571:5;7552:8;:15;7561:5;;;;;;;;;;;7552:15;;;;;;;;;;;;;;;;:24;;7544:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7638:23;7655:5;7638:12;;:16;;:23;;;;:::i;:::-;7623:12;:38;;;;7690:26;7710:5;7690:8;:15;7699:5;;;;;;;;;;;7690:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;7672:8;:15;7681:5;;;;;;;;;;;7672:15;;;;;;;;;;;;;;;:44;;;;7756:1;7732:34;;7741:5;;;;;;;;;;;7732:34;;;7760:5;7732:34;;;;;;;;;;;;;;;;;;7372:402;:::o;5770:120::-;5830:12;5862:8;:20;5871:10;5862:20;;;;;;;;;;;;;;;;5855:27;;5770:120;;;:::o;2563:20::-;;;;;;;;;;;;;:::o;3324:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9604:973::-;4353:5;4341:17;;:8;;;;;;;;;;;:17;;;4333:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9649:25;;:::i;:::-;9677:12;:24;9690:10;9677:24;;;;;;;;;;;;;;;9649:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9713:8;9745:6;:29;;;9724:6;:18;;;:50;9713:61;;9799:1;9793:3;:7;9785:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9892:3;9854:8;;;;;;;;;;;:18;;;9881:4;9854:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9854:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9854:33:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9854:33:0;;;;;;;;;;;;;;;;:41;;9846:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9974:1;9953:6;:18;;;:22;9950:179;;;9992:19;;:::i;:::-;10014:7;:19;10022:10;10014:19;;;;;;;;;;;;;;;:31;10043:1;10034:8;;:10;10014:31;;;;;;;;;;;9992:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10087:4;10068:23;;:4;:15;;;:23;;;10060:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9950:179;;10149:18;;:::i;:::-;10170:6;:16;10177:8;;10170:16;;;;;;;;;;;10149:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10222:46;10249:6;:18;;;10222:5;:22;;;:26;;:46;;;;:::i;:::-;10197:5;:22;;:71;;;;;10298:5;10279:6;:16;10286:8;;10279:16;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10345:1;10324:6;:18;;:22;;;;;10389:1;10357:6;:29;;:33;;;;;10419:1;10401:6;:15;;:19;;;;;10458:6;10431:12;:24;10444:10;10431:24;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;10490:34;10508:10;10520:3;10490:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;10535:8;;;;;;;;;;;:17;;;10553:10;10565:3;10535:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10535:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10535:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10535:34:0;;;;;;;;;;;;;;;;;4412:1;;;9604:973::o;5902:267::-;5961:12;6009:32;6034:6;6009:8;:20;6018:10;6009:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;5986:8;:20;5995:10;5986:20;;;;;;;;;;;;;;;:55;;;;6067:24;6084:6;6067:8;:12;6076:2;6067:12;;;;;;;;;;;;;;;;:16;;:24;;;;:::i;:::-;6052:8;:12;6061:2;6052:12;;;;;;;;;;;;;;;:39;;;;6128:2;6107:32;;6116:10;6107:32;;;6132:6;6107:32;;;;;;;;;;;;;;;;;;6157:4;6150:11;;5902:267;;;;:::o;4671:61::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6903:333::-;6992:12;7048:6;7017:7;:19;7025:10;7017:19;;;;;;;;;;;;;;;:28;7037:7;7017:28;;;;;;;;;;;;;;;:37;;;;7091:7;7070:37;;7079:10;7070:37;;;7100:6;7070:37;;;;;;;;;;;;;;;;;;7141:7;7118:47;;;7166:10;7178:6;7194:4;7201;7118:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7118:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7118:88:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7118:88:0;;;;7224:4;7217:11;;6903:333;;;;;:::o;4627:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3533:27::-;;;;;;;;;;;;;:::o;8554:962::-;4353:5;4341:17;;:8;;;;;;;;;;;:17;;;4333:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8627:1;8617:7;:11;8609:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8717:7;8683:8;;;;;;;;;;;:18;;;8702:10;8683:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8683:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8683:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8683:30:0;;;;;;;;;;;;;;;;:41;;8675:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8775:8;;;;;;;;;;;:21;;;8797:10;8817:4;8824:7;8775:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8775:57:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8775:57:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8775:57:0;;;;;;;;;;;;;;;;;8853:25;;:::i;:::-;8881:12;:24;8894:10;8881:24;;;;;;;;;;;;;;;8853:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8916:18;;:::i;:::-;8937:6;:16;8944:8;;8937:16;;;;;;;;;;;8916:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8976:5;:11;;;8969:3;:18;8966:499;;9026:31;9049:7;9026:6;:18;;;:22;;:31;;;;:::i;:::-;9005:6;:18;;:52;;;;;9090:8;;9072:6;:15;;:26;;;;;9138:35;9165:7;9138:5;:22;;;:26;;:35;;;;:::i;:::-;9113:5;:22;;:60;;;;;9193:46;9209:10;9221:7;9230:8;;9193:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9273:5;9254:6;:16;9261:8;;9254:16;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8966:499;;;9343:42;9377:7;9343:6;:29;;;:33;;:42;;;;:::i;:::-;9311:6;:29;;:74;;;;;9405:48;9421:10;9433:7;9451:1;9442:8;;:10;9405:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8966:499;9502:6;9475:12;:24;9488:10;9475:24;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;4412:1;;8554:962;:::o;6748:147::-;6825:14;6859:7;:19;6867:10;6859:19;;;;;;;;;;;;;;;:28;6879:7;6859:28;;;;;;;;;;;;;;;;6852:35;;6748:147;;;;:::o;4568:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13753:89::-;13800:4;13833:1;13824:8;;:10;13817:17;;13753:89;:::o;3429:30::-;;;;:::o;10751:681::-;10820:12;;;;;;;;;;;10806:26;;:10;:26;;;10798:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10877:18;;:::i;:::-;10898:6;:16;10905:8;;10898:16;;;;;;;;;;;10877:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10938:3;10926:5;:9;;:15;;;;;10970:35;10990:14;;10970:5;:15;;;:19;;:35;;;;:::i;:::-;10952:5;:15;;:53;;;;;11033:1;11016:14;:18;;;;11049:14;11066:52;11109:8;;11066:38;11097:6;11066:26;11080:5;:11;;;11066:5;:9;;;:13;;:26;;;;:::i;:::-;:30;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;11049:69;;11144:8;:15;11153:5;;;;;;;;;;;11144:15;;;;;;;;;;;;;;;;11132:9;:27;11129:64;;;11175:8;:15;11184:5;;;;;;;;;;;11175:15;;;;;;;;;;;;;;;;11163:27;;11129:64;11224:9;11203:5;:18;;:30;;;;;11263:5;11244:6;:16;11251:8;;11244:16;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11284:44;11303:8;;11313:14;;11284:44;;;;;;;;;;;;;;;;;;;;;;;;11341:8;;:10;;;;;;;;;;;;;11381:43;;;;;;;;11387:3;11381:43;;;;11392:1;11381:43;;;;11395:5;:22;;;11381:43;;;;11419:1;11381:43;;;;11422:1;11381:43;;;11362:6;:16;11369:8;;11362:16;;;;;;;;;;;:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10751:681;;:::o;2757:238::-;2723:5;;;;;;;;;;;2709:19;;:10;:19;;;2701:28;;;;;;2860:1;2839:23;;:9;:23;;;;2831:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2949:9;2921:38;;2942:5;;;;;;;;;;;2921:38;;;;;;;;;;;;2978:9;2970:5;;:17;;;;;;;;;;;;;;;;;;2757:238;:::o;1063:167::-;1121:7;1153:1;1148;:6;;1140:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1186:9;1202:1;1198;:5;1186:17;;1221:1;1214:8;;;1063:167;;;;:::o;242:228::-;300:7;328:1;323;:6;319:47;;;353:1;346:8;;;;319:47;376:9;392:1;388;:5;376:17;;421:1;416;412;:5;;;;;;:10;404:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;461:1;454:8;;;242:228;;;;;:::o;607:320::-;665:7;763:1;759;:5;751:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;796:9;812:1;808;:5;;;;;;796:17;;918:1;911:8;;;607:320;;;;:::o;3245:10802::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://d8e515aec87056d78325ca0d7a9fa9529d12ffdb839137fa414fa3ab093b45c2
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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