ETH Price: $3,396.29 (+1.93%)

Contract

0xea3983Fc6D0fbbC41fb6F6091f68F3e08894dC06
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

TokenTracker

Unido (UDO) (@$0.0033)
Transaction Hash
Method
Block
From
To
Transfer212508822024-11-23 13:56:479 hrs ago1732370207IN
Unido: UDO Token
0 ETH0.0007960715.53098127
Approve212495042024-11-23 9:20:2314 hrs ago1732353623IN
Unido: UDO Token
0 ETH0.000433279.37070357
Approve212459102024-11-22 21:19:1126 hrs ago1732310351IN
Unido: UDO Token
0 ETH0.0006647614.29566735
Transfer212337392024-11-21 4:31:592 days ago1732163519IN
Unido: UDO Token
0 ETH0.0008019514.30599967
Approve212281992024-11-20 9:57:233 days ago1732096643IN
Unido: UDO Token
0 ETH0.0005945812.80306406
Approve212222312024-11-19 13:59:114 days ago1732024751IN
Unido: UDO Token
0 ETH0.0011122723.9193237
Approve212146312024-11-18 12:33:595 days ago1731933239IN
Unido: UDO Token
0 ETH0.0005746812.35855222
Approve212070492024-11-17 11:12:236 days ago1731841943IN
Unido: UDO Token
0 ETH0.0005448911.71801637
Approve211937542024-11-15 14:41:238 days ago1731681683IN
Unido: UDO Token
0 ETH0.0012804327.7
Approve211923602024-11-15 9:59:598 days ago1731664799IN
Unido: UDO Token
0 ETH0.0009300220
Transfer211906462024-11-15 4:15:478 days ago1731644147IN
Unido: UDO Token
0 ETH0.0008632316.83338331
Approve211902152024-11-15 2:49:238 days ago1731638963IN
Unido: UDO Token
0 ETH0.0007903317.01808044
Approve211863522024-11-14 13:52:359 days ago1731592355IN
Unido: UDO Token
0 ETH0.0018326739.46246223
Transfer211863252024-11-14 13:47:119 days ago1731592031IN
Unido: UDO Token
0 ETH0.0017777431.70637236
Approve211507632024-11-09 14:42:1114 days ago1731163331IN
Unido: UDO Token
0 ETH0.0003836414.6
Approve211507602024-11-09 14:41:3514 days ago1731163295IN
Unido: UDO Token
0 ETH0.0006418613.9
Approve211433282024-11-08 13:50:1115 days ago1731073811IN
Unido: UDO Token
0 ETH0.000411616.99638147
Approve211097902024-11-03 21:25:4720 days ago1730669147IN
Unido: UDO Token
0 ETH0.0002274.88175719
Transfer211097822024-11-03 21:24:1120 days ago1730669051IN
Unido: UDO Token
0 ETH0.000217384.24
Transfer210954082024-11-01 21:12:3522 days ago1730495555IN
Unido: UDO Token
0 ETH0.000387886.91943835
Approve210821262024-10-31 0:46:2323 days ago1730335583IN
Unido: UDO Token
0 ETH0.000330337.15732457
Approve210815852024-10-30 22:57:5924 days ago1730329079IN
Unido: UDO Token
0 ETH0.0005099710.96693615
Approve210804692024-10-30 19:13:5924 days ago1730315639IN
Unido: UDO Token
0 ETH0.0006310313.58792859
Approve210779042024-10-30 10:36:4724 days ago1730284607IN
Unido: UDO Token
0 ETH0.0005240711.33757489
Approve210602672024-10-27 23:30:5927 days ago1730071859IN
Unido: UDO Token
0 ETH0.000331817.13561355
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
189674132024-01-09 5:45:11319 days ago1704779111
Unido: UDO Token
0.12627828 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UnidoDistribution

Compiler Version
v0.7.0+commit.9e61f92b

Optimization Enabled:
Yes with 200 runs

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

// SPDX-License-Identifier: MIT
pragma solidity 0.7.0;

contract Ownable {
    address public owner;
    address private _nextOwner;
    
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    constructor() {
        owner = msg.sender;
        emit OwnershipTransferred(address(0), owner);
    }
    
    modifier onlyOwner() {
        require(msg.sender == owner, 'Only the owner of the contract can do that');
        _;
    }
    
    function transferOwnership(address nextOwner) public onlyOwner {
        _nextOwner = nextOwner;
    }
    
    function takeOwnership() public {
        require(msg.sender == _nextOwner, 'Must be given ownership to do that');
        emit OwnershipTransferred(owner, _nextOwner);
        owner = _nextOwner;
    }
}

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

        return c;
    }

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

        return c;
    }

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

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

        return c;
    }

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

        return c;
    }

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

contract UnidoDistribution is Ownable {
    using SafeMath for uint256;
    
    // 0 - SEED
    // 1 - PRIVATE
    // 2 - TEAM
    // 3 - ADVISOR
    // 4 - ECOSYSTEM
    // 5 - LIQUIDITY
    // 6 - RESERVE
    enum POOL{SEED, PRIVATE, TEAM, ADVISOR, ECOSYSTEM, LIQUIDITY, RESERVE}
    
    mapping (POOL => uint) public pools;
    
    uint256 public totalSupply;
    string public constant name = "Unido";
    uint256 public constant decimals = 18;
    string public constant symbol = "UDO";
    address[] public participants;
    
    bool private isActive;
    uint256 private scanLength = 150;
    uint256 private continuePoint;
    uint256[] private deletions;
    
    mapping (address => uint256) private balances;
    mapping (address => mapping(address => uint256)) private allowances;
    mapping (address => uint256) public lockoutPeriods;
    mapping (address => uint256) public lockoutBalances;
    mapping (address => uint256) public lockoutReleaseRates;
    
    event Active(bool isActive);
    event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
    event Transfer(address indexed from, address indexed to, uint tokens);
    event Burn(address indexed tokenOwner, uint tokens);
    
    constructor () {
        pools[POOL.SEED] = 15000000 * 10**decimals;
        pools[POOL.PRIVATE] = 16000000 * 10**decimals;
        pools[POOL.TEAM] = 18400000 * 10**decimals;
        pools[POOL.ADVISOR] = 10350000 * 10**decimals;
        pools[POOL.ECOSYSTEM] = 14375000 * 10**decimals;
        pools[POOL.LIQUIDITY] = 8625000 * 10**decimals;
        pools[POOL.RESERVE] = 32250000 * 10**decimals;
        
        totalSupply = pools[POOL.SEED] + pools[POOL.PRIVATE] + pools[POOL.TEAM] + pools[POOL.ADVISOR] + pools[POOL.ECOSYSTEM] + pools[POOL.LIQUIDITY] + pools[POOL.RESERVE];

        // Give POLS private sale directly
        uint pols = 2000000 * 10**decimals;
        pools[POOL.PRIVATE] = pools[POOL.PRIVATE].sub(pols);
        balances[address(0xeFF02cB28A05EebF76cB6aF993984731df8479b1)] = pols;
        
        // Give LIQUIDITY pool their half directly
        uint liquid = pools[POOL.LIQUIDITY].div(2);
        pools[POOL.LIQUIDITY] = pools[POOL.LIQUIDITY].sub(liquid);
        balances[address(0xd6221a4f8880e9Aa355079F039a6012555556974)] = liquid;
    }
    
    function _isTradeable() internal view returns (bool) {
        return isActive;
    }
    
    function isTradeable() public view returns (bool) {
        return _isTradeable();
    }
    
    function setTradeable() external onlyOwner {
        require (!isActive, "Can only set tradeable when its not already tradeable");
        isActive = true;
        Active(true);
    }
    
    function setScanLength(uint256 len) external onlyOwner {
        require (len > 20, "Values 20 or less are impractical");
        require (len <= 200, "Values greater than 200 may cause the updateRelease function to fail");
        scanLength = len;
    }
    
    function balanceOf(address tokenOwner) public view returns (uint) {
        return balances[tokenOwner];
    }
    
    function allowance(address tokenOwner, address spender) public view returns (uint) {
        return allowances[tokenOwner][spender];
    }
    
    function spendable(address tokenOwner) public view returns (uint) {
        return balances[tokenOwner].sub(lockoutBalances[tokenOwner]);
    }
    
    function transfer(address to, uint tokens) public returns (bool) {
        require (_isTradeable(), "Contract is not tradeable yet");
        require (balances[msg.sender].sub(lockoutBalances[msg.sender]) >= tokens, "Must have enough spendable tokens");
        require (tokens > 0, "Must transfer non-zero amount");
        require (to != address(0), "Cannot send to the 0 address");
        
        balances[msg.sender] = balances[msg.sender].sub(tokens);
        balances[to] = balances[to].add(tokens);
        Transfer(msg.sender, to, tokens);
        return true;
    }
    
    function increaseAllowance(address spender, uint addedValue) public returns (bool) {
        _approve(msg.sender, spender, allowances[msg.sender][spender].add(addedValue));
        return true;
    }
    
    function decreaseAllowance(address spender, uint subtractedValue) public returns (bool) {
        _approve(msg.sender, spender, allowances[msg.sender][spender].sub(subtractedValue));
        return true;
    }
    
    function approve(address spender, uint tokens) public returns (bool) {
        _approve(msg.sender, spender, tokens);
        return true;
    }
    
    function _approve(address owner, address spender, uint tokens) internal {
        require (owner != address(0), "Cannot approve from the 0 address");
        require (spender != address(0), "Cannot approve the 0 address");
        
        allowances[owner][spender] = tokens;
        Approval(owner, spender, tokens);
    }
    
    function burn(uint tokens) public {
        require (balances[msg.sender].sub(lockoutBalances[msg.sender]) >= tokens, "Must have enough spendable tokens");
        require (tokens > 0, "Must burn non-zero amount");
        
        balances[msg.sender] = balances[msg.sender].sub(tokens);
        totalSupply = totalSupply.sub(tokens);
        Burn(msg.sender, tokens);
    }
    
    function transferFrom(address from, address to, uint tokens) public returns (bool) {
        require (_isTradeable(), "Contract is not trading yet");
        require (balances[from].sub(lockoutBalances[from]) >= tokens, "Must have enough spendable tokens");
        require (allowances[from][msg.sender] >= tokens, "Must be approved to spend that much");
        require (tokens > 0, "Must transfer non-zero amount");
        require (from != address(0), "Cannot send from the 0 address");
        require (to != address(0), "Cannot send to the 0 address");
        
        balances[from] = balances[from].sub(tokens);
        balances[to] = balances[to].add(tokens);
        allowances[from][msg.sender] = allowances[from][msg.sender].sub(tokens);
        Transfer(from, to, tokens);
        return true;
    }
    
    function addParticipants(POOL pool, address[] calldata _participants, uint256[] calldata _stakes) external onlyOwner {
        require (pool >= POOL.SEED && pool <= POOL.RESERVE, "Must select a valid pool");
        require (_participants.length == _stakes.length, "Must have equal array sizes");
        
        uint lockoutPeriod;
        uint lockoutReleaseRate;
        
        if (pool == POOL.SEED) {
            lockoutPeriod = 1;
            lockoutReleaseRate = 5;
        } else if (pool == POOL.PRIVATE) {
            lockoutReleaseRate = 4;
        } else if (pool == POOL.TEAM) {
            lockoutPeriod = 12;
            lockoutReleaseRate = 12;
        } else if (pool == POOL.ADVISOR) {
            lockoutPeriod = 6;
            lockoutReleaseRate = 6;
        } else if (pool == POOL.ECOSYSTEM) {
            lockoutPeriod = 3;
            lockoutReleaseRate = 9;
        } else if (pool == POOL.LIQUIDITY) {
            lockoutReleaseRate = 1;
            lockoutPeriod = 1;
        } else if (pool == POOL.RESERVE) {
            lockoutReleaseRate = 18;
        }
        
        uint256 sum;
        uint256 len = _participants.length;
        for (uint256 i = 0; i < len; i++) {
            address p = _participants[i];
            require(lockoutBalances[p] == 0, "Participants can't be involved in multiple lock ups simultaneously");
        
            participants.push(p);
            lockoutBalances[p] = _stakes[i];
            balances[p] = balances[p].add(_stakes[i]);
            lockoutPeriods[p] = lockoutPeriod;
            lockoutReleaseRates[p] = lockoutReleaseRate;
            sum = sum.add(_stakes[i]);
        }
        
        require(sum <= pools[pool], "Insufficient amount left in pool for this");
        pools[pool] = pools[pool].sub(sum);
    }
    
    function finalizeParticipants(POOL pool) external onlyOwner {
        uint leftover = pools[pool];
        pools[pool] = 0;
        totalSupply = totalSupply.sub(leftover);
    }
    
    /**
     * For each account with an active lockout, if their lockout has expired 
     * then release their lockout at the lockout release rate
     * If the lockout release rate is 0, assume its all released at the date
     * Only do max 100 at a time, call repeatedly which it returns true
     */
    function updateRelease() external onlyOwner returns (bool) {
        uint scan = scanLength;
        uint len = participants.length;
        uint continueAddScan = continuePoint.add(scan);
        for (uint i = continuePoint; i < len && i < continueAddScan; i++) {
            address p = participants[i];
            if (lockoutPeriods[p] > 0) {
                lockoutPeriods[p]--;
            } else if (lockoutReleaseRates[p] > 0) {
                uint rate = lockoutReleaseRates[p];
                
                uint release;
                if (rate == 18) {
                    // First release of reserve is 12.5%
                    release = lockoutBalances[p].div(8);
                } else {
                    release = lockoutBalances[p].div(lockoutReleaseRates[p]);
                }
                
                lockoutBalances[p] = lockoutBalances[p].sub(release);
                lockoutReleaseRates[p]--;
            } else {
                deletions.push(i);
            }
        }
        continuePoint = continuePoint.add(scan);
        if (continuePoint >= len) {
            continuePoint = 0;
            while (deletions.length > 0) {
                uint index = deletions[deletions.length-1];
                deletions.pop();

                participants[index] = participants[participants.length - 1];
                participants.pop();
            }
            return false;
        }
        
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"isActive","type":"bool"}],"name":"Active","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenOwner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenOwner","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"enum UnidoDistribution.POOL","name":"pool","type":"uint8"},{"internalType":"address[]","name":"_participants","type":"address[]"},{"internalType":"uint256[]","name":"_stakes","type":"uint256[]"}],"name":"addParticipants","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum UnidoDistribution.POOL","name":"pool","type":"uint8"}],"name":"finalizeParticipants","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isTradeable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lockoutBalances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lockoutPeriods","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lockoutReleaseRates","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"participants","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum UnidoDistribution.POOL","name":"","type":"uint8"}],"name":"pools","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"len","type":"uint256"}],"name":"setScanLength","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setTradeable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"}],"name":"spendable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"takeOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"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":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"nextOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateRelease","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

608060405260966006553480156200001657600080fd5b50600080546001600160a01b03191633178082556040516001600160a01b039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600260208190526a0c685fa11e01ec6f0000007fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b556a0d3c21bcecceda100000006000805160206200211f833981519152556a0f3859ffa9ede12c0000007f679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c556a088fb29fcf95cea8c000007f88601476d11616a71c5be67555bd1dff4b1cbf21533d2669b768b61518cfe1c3556a0be4064fbcc1d7ea6000007fee60d0579bcffd98e668647d59fec1ff86a7fb340ce572e844f234ae73a6918f556a07226a2fd7a7818ca00000600080516020620020ff833981519152556a1aad3400cd50ef884000007f59dd4b18488d12f51eda69757a0ed42a2010c14b564330cc74a06895e60c077b5560008080526a5f20327de60ebf530000006003556a01a784379d99db4200000091620001e29183919060015b6006811115620001bf57fe5b815260200190815260200160002054620002b660201b620019541790919060201c565b6000805160206200211f833981519152557f590178d1498a979fc3832287ccbefce2efde38f172472c72eb1ebdff3eeca4888190556005600090815260026020818152600080516020620020ff833981519152546200024c929091620019b162000314821b17901c565b90506200025f81600260006005620001b3565b600080516020620020ff8339815191525573d6221a4f8880e9aa355079f039a601255555697460005260096020527f111a1d5d0d14ab7c043fe32f3f8887699d1edbba5d8ecb8175ca9ded0d0c9ae155506200037e565b6000828211156200030e576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008162000369576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b60008284816200037557fe5b04949350505050565b611d71806200038e6000396000f3fe608060405234801561001057600080fd5b50600436106101a85760003560e01c806360536172116100f9578063a457c2d711610097578063c36d16a911610071578063c36d16a914610578578063dd62ed3e14610595578063f2fde38b146105c3578063fb87a635146105e9576101a8565b8063a457c2d714610518578063a9059cbb14610544578063c1cda90214610570576101a8565b80638da5cb5b116100d35780638da5cb5b146104bc57806395d89b41146104c457806398fd6108146104cc578063a219fdd6146104f2576101a8565b8063605361721461046857806363ae9f6e1461047057806370a0823114610496576101a8565b806323b872dd11610166578063395093511161014057806339509351146103f157806342966c681461041d57806344fa7b241461043a5780635db5f57b14610442576101a8565b806323b872dd1461037a578063313ce567146103b057806335c1d349146103b8576101a8565b8062ab73e2146101ad57806306fdde03146101cf578063095ea7b31461024c57806318160ddd1461028c5780631b4c84d2146102a657806321563ebd146102ae575b600080fd5b6101cd600480360360208110156101c357600080fd5b503560ff16610609565b005b6101d76106c2565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102115781810151838201526020016101f9565b50505050905090810190601f16801561023e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102786004803603604081101561026257600080fd5b506001600160a01b0381351690602001356106e3565b604080519115158252519081900360200190f35b6102946106f9565b60408051918252519081900360200190f35b6102786106ff565b6101cd600480360360608110156102c457600080fd5b60ff82351691908101906040810160208201356401000000008111156102e957600080fd5b8201836020820111156102fb57600080fd5b8035906020019184602083028401116401000000008311171561031d57600080fd5b91939092909160208101903564010000000081111561033b57600080fd5b82018360208201111561034d57600080fd5b8035906020019184602083028401116401000000008311171561036f57600080fd5b50909250905061070f565b6102786004803603606081101561039057600080fd5b506001600160a01b03813581169160208101359091169060400135610b7a565b610294610eab565b6103d5600480360360208110156103ce57600080fd5b5035610eb0565b604080516001600160a01b039092168252519081900360200190f35b6102786004803603604081101561040757600080fd5b506001600160a01b038135169060200135610ed7565b6101cd6004803603602081101561043357600080fd5b5035610f12565b61027861103f565b6102946004803603602081101561045857600080fd5b50356001600160a01b031661136a565b6101cd61137c565b6102946004803603602081101561048657600080fd5b50356001600160a01b0316611426565b610294600480360360208110156104ac57600080fd5b50356001600160a01b0316611438565b6103d5611453565b6101d7611462565b610294600480360360208110156104e257600080fd5b50356001600160a01b0316611481565b6102946004803603602081101561050857600080fd5b50356001600160a01b0316611493565b6102786004803603604081101561052e57600080fd5b506001600160a01b0381351690602001356114c6565b6102786004803603604081101561055a57600080fd5b506001600160a01b0381351690602001356114fc565b6101cd611710565b6101cd6004803603602081101561058e57600080fd5b50356117df565b610294600480360360408110156105ab57600080fd5b506001600160a01b03813581169160200135166118ac565b6101cd600480360360208110156105d957600080fd5b50356001600160a01b03166118d7565b610294600480360360208110156105ff57600080fd5b503560ff16611942565b6000546001600160a01b031633146106525760405162461bcd60e51b815260040180806020018281038252602a815260200180611cc7602a913960400191505060405180910390fd5b60006002600083600681111561066457fe5b600681111561066f57fe5b815260200190815260200160002054905060006002600084600681111561069257fe5b600681111561069d57fe5b81526020810191909152604001600020556003546106bb9082611954565b6003555050565b60405180604001604052806005815260200164556e69646f60d81b81525081565b60006106f0338484611a19565b50600192915050565b60035481565b6000610709611b1b565b90505b90565b6000546001600160a01b031633146107585760405162461bcd60e51b815260040180806020018281038252602a815260200180611cc7602a913960400191505060405180910390fd5b600085600681111561076657fe5b101580156107805750600685600681111561077d57fe5b11155b6107d1576040805162461bcd60e51b815260206004820152601860248201527f4d7573742073656c65637420612076616c696420706f6f6c0000000000000000604482015290519081900360640190fd5b828114610825576040805162461bcd60e51b815260206004820152601b60248201527f4d757374206861766520657175616c2061727261792073697a65730000000000604482015290519081900360640190fd5b6000808087600681111561083557fe5b141561084757506001905060056108f8565b600187600681111561085557fe5b1415610863575060046108f8565b600287600681111561087157fe5b14156108825750600c9050806108f8565b600387600681111561089057fe5b14156108a1575060069050806108f8565b60048760068111156108af57fe5b14156108c157506003905060096108f8565b60058760068111156108cf57fe5b14156108e0575060019050806108f8565b60068760068111156108ee57fe5b14156108f8575060125b600085815b81811015610a9e57600089898381811061091357fe5b905060200201356001600160a01b03169050600c6000826001600160a01b03166001600160a01b03168152602001908152602001600020546000146109895760405162461bcd60e51b8152600401808060200182810382526042815260200180611bff6042913960600191505060405180910390fd5b600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319166001600160a01b0383161790558787838181106109e057fe5b6001600160a01b0384166000908152600c602090815260409091209102929092013590915550610a3d888884818110610a1557fe5b6001600160a01b03851660009081526009602090815260409091205493910201359050611b24565b6001600160a01b038216600090815260096020908152604080832093909355600b8152828220899055600d905220859055610a93888884818110610a7d57fe5b9050602002013585611b2490919063ffffffff16565b9350506001016108fd565b50600260008a6006811115610aaf57fe5b6006811115610aba57fe5b815260200190815260200160002054821115610b075760405162461bcd60e51b8152600401808060200182810382526029815260200180611d136029913960400191505060405180910390fd5b610b4382600260008c6006811115610b1b57fe5b6006811115610b2657fe5b81526020019081526020016000205461195490919063ffffffff16565b600260008b6006811115610b5357fe5b6006811115610b5e57fe5b8152602081019190915260400160002055505050505050505050565b6000610b84611b1b565b610bd5576040805162461bcd60e51b815260206004820152601b60248201527f436f6e7472616374206973206e6f742074726164696e67207965740000000000604482015290519081900360640190fd5b6001600160a01b0384166000908152600c60209081526040808320546009909252909120548391610c069190611954565b1015610c435760405162461bcd60e51b8152600401808060200182810382526021815260200180611ca66021913960400191505060405180910390fd5b6001600160a01b0384166000908152600a60209081526040808320338452909152902054821115610ca55760405162461bcd60e51b8152600401808060200182810382526023815260200180611c626023913960400191505060405180910390fd5b60008211610cfa576040805162461bcd60e51b815260206004820152601d60248201527f4d757374207472616e73666572206e6f6e2d7a65726f20616d6f756e74000000604482015290519081900360640190fd5b6001600160a01b038416610d55576040805162461bcd60e51b815260206004820152601e60248201527f43616e6e6f742073656e642066726f6d20746865203020616464726573730000604482015290519081900360640190fd5b6001600160a01b038316610db0576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742073656e6420746f207468652030206164647265737300000000604482015290519081900360640190fd5b6001600160a01b038416600090815260096020526040902054610dd39083611954565b6001600160a01b038086166000908152600960205260408082209390935590851681522054610e029083611b24565b6001600160a01b038085166000908152600960209081526040808320949094559187168152600a82528281203382529091522054610e409083611954565b6001600160a01b038086166000818152600a6020908152604080832033845282529182902094909455805186815290519287169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35060019392505050565b601281565b60048181548110610ebd57fe5b6000918252602090912001546001600160a01b0316905081565b336000818152600a602090815260408083206001600160a01b038716845290915281205490916106f0918590610f0d9086611b24565b611a19565b336000908152600c60209081526040808320546009909252909120548291610f3a9190611954565b1015610f775760405162461bcd60e51b8152600401808060200182810382526021815260200180611ca66021913960400191505060405180910390fd5b60008111610fcc576040805162461bcd60e51b815260206004820152601960248201527f4d757374206275726e206e6f6e2d7a65726f20616d6f756e7400000000000000604482015290519081900360640190fd5b33600090815260096020526040902054610fe69082611954565b336000908152600960205260409020556003546110039082611954565b60035560408051828152905133917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a250565b600080546001600160a01b031633146110895760405162461bcd60e51b815260040180806020018281038252602a815260200180611cc7602a913960400191505060405180910390fd5b60065460045460075460009061109f9084611b24565b6007549091505b82811080156110b457508181105b1561124d576000600482815481106110c857fe5b60009182526020808320909101546001600160a01b0316808352600b9091526040909120549091501561111a576001600160a01b0381166000908152600b602052604090208054600019019055611244565b6001600160a01b0381166000908152600d60205260409020541561120e576001600160a01b0381166000908152600d6020526040812054906012821415611186576001600160a01b0383166000908152600c602052604090205461117f9060086119b1565b90506111b7565b6001600160a01b0383166000908152600d6020908152604080832054600c909252909120546111b4916119b1565b90505b6001600160a01b0383166000908152600c60205260409020546111da9082611954565b6001600160a01b0384166000908152600c6020908152604080832093909355600d9052208054600019019055506112449050565b600880546001810182556000919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3018290555b506001016110a6565b5060075461125b9084611b24565b600781905582116113605760006007555b60085415611354576008805460009190600019810190811061128a57fe5b9060005260206000200154905060088054806112a257fe5b600190038181906000526020600020016000905590556004600160048054905003815481106112cd57fe5b600091825260209091200154600480546001600160a01b0390921691839081106112f357fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600480548061132c57fe5b600082815260209020810160001990810180546001600160a01b03191690550190555061126c565b6000935050505061070c565b6001935050505090565b600d6020526000908152604090205481565b6001546001600160a01b031633146113c55760405162461bcd60e51b8152600401808060200182810382526022815260200180611cf16022913960400191505060405180910390fd5b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b600b6020526000908152604090205481565b6001600160a01b031660009081526009602052604090205490565b6000546001600160a01b031681565b6040518060400160405280600381526020016255444f60e81b81525081565b600c6020526000908152604090205481565b6001600160a01b0381166000908152600c602090815260408083205460099092528220546114c091611954565b92915050565b336000818152600a602090815260408083206001600160a01b038716845290915281205490916106f0918590610f0d9086611954565b6000611506611b1b565b611557576040805162461bcd60e51b815260206004820152601d60248201527f436f6e7472616374206973206e6f7420747261646561626c6520796574000000604482015290519081900360640190fd5b336000908152600c6020908152604080832054600990925290912054839161157f9190611954565b10156115bc5760405162461bcd60e51b8152600401808060200182810382526021815260200180611ca66021913960400191505060405180910390fd5b60008211611611576040805162461bcd60e51b815260206004820152601d60248201527f4d757374207472616e73666572206e6f6e2d7a65726f20616d6f756e74000000604482015290519081900360640190fd5b6001600160a01b03831661166c576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742073656e6420746f207468652030206164647265737300000000604482015290519081900360640190fd5b336000908152600960205260409020546116869083611954565b33600090815260096020526040808220929092556001600160a01b038516815220546116b29083611b24565b6001600160a01b0384166000818152600960209081526040918290209390935580518581529051919233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a350600192915050565b6000546001600160a01b031633146117595760405162461bcd60e51b815260040180806020018281038252602a815260200180611cc7602a913960400191505060405180910390fd5b60055460ff161561179b5760405162461bcd60e51b8152600401808060200182810382526035815260200180611bca6035913960400191505060405180910390fd5b6005805460ff1916600190811790915560408051918252517fe4c97c0b674016b317b52dd3fbb57699889c86e187b096bc5a7f6dc3fcb12c209181900360200190a1565b6000546001600160a01b031633146118285760405162461bcd60e51b815260040180806020018281038252602a815260200180611cc7602a913960400191505060405180910390fd5b601481116118675760405162461bcd60e51b8152600401808060200182810382526021815260200180611c416021913960400191505060405180910390fd5b60c88111156118a75760405162461bcd60e51b8152600401808060200182810382526044815260200180611b866044913960600191505060405180910390fd5b600655565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b6000546001600160a01b031633146119205760405162461bcd60e51b815260040180806020018281038252602a815260200180611cc7602a913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60026020526000908152604090205481565b6000828211156119ab576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600081611a05576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481611a1057fe5b04949350505050565b6001600160a01b038316611a5e5760405162461bcd60e51b8152600401808060200182810382526021815260200180611c856021913960400191505060405180910390fd5b6001600160a01b038216611ab9576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f7420617070726f7665207468652030206164647265737300000000604482015290519081900360640190fd5b6001600160a01b038084166000818152600a6020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60055460ff1690565b600082820183811015611b7e576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe56616c7565732067726561746572207468616e20323030206d6179206361757365207468652075706461746552656c656173652066756e6374696f6e20746f206661696c43616e206f6e6c792073657420747261646561626c65207768656e20697473206e6f7420616c726561647920747261646561626c655061727469636970616e74732063616e277420626520696e766f6c76656420696e206d756c7469706c65206c6f636b207570732073696d756c74616e656f75736c7956616c756573203230206f72206c6573732061726520696d70726163746963616c4d75737420626520617070726f76656420746f207370656e642074686174206d75636843616e6e6f7420617070726f76652066726f6d20746865203020616464726573734d757374206861766520656e6f756768207370656e6461626c6520746f6b656e734f6e6c7920746865206f776e6572206f662074686520636f6e74726163742063616e20646f20746861744d75737420626520676976656e206f776e65727368697020746f20646f2074686174496e73756666696369656e7420616d6f756e74206c65667420696e20706f6f6c20666f722074686973a2646970667358221220163dd399dbcb9d96b3d2fc7e9c9fbacac075e65014922566bd96aed78dbc213464736f6c63430007000033b98b78633099fa36ed8b8680c4f8092689e1e04080eb9cbb077ca38a14d7e384e90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e0

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101a85760003560e01c806360536172116100f9578063a457c2d711610097578063c36d16a911610071578063c36d16a914610578578063dd62ed3e14610595578063f2fde38b146105c3578063fb87a635146105e9576101a8565b8063a457c2d714610518578063a9059cbb14610544578063c1cda90214610570576101a8565b80638da5cb5b116100d35780638da5cb5b146104bc57806395d89b41146104c457806398fd6108146104cc578063a219fdd6146104f2576101a8565b8063605361721461046857806363ae9f6e1461047057806370a0823114610496576101a8565b806323b872dd11610166578063395093511161014057806339509351146103f157806342966c681461041d57806344fa7b241461043a5780635db5f57b14610442576101a8565b806323b872dd1461037a578063313ce567146103b057806335c1d349146103b8576101a8565b8062ab73e2146101ad57806306fdde03146101cf578063095ea7b31461024c57806318160ddd1461028c5780631b4c84d2146102a657806321563ebd146102ae575b600080fd5b6101cd600480360360208110156101c357600080fd5b503560ff16610609565b005b6101d76106c2565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102115781810151838201526020016101f9565b50505050905090810190601f16801561023e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102786004803603604081101561026257600080fd5b506001600160a01b0381351690602001356106e3565b604080519115158252519081900360200190f35b6102946106f9565b60408051918252519081900360200190f35b6102786106ff565b6101cd600480360360608110156102c457600080fd5b60ff82351691908101906040810160208201356401000000008111156102e957600080fd5b8201836020820111156102fb57600080fd5b8035906020019184602083028401116401000000008311171561031d57600080fd5b91939092909160208101903564010000000081111561033b57600080fd5b82018360208201111561034d57600080fd5b8035906020019184602083028401116401000000008311171561036f57600080fd5b50909250905061070f565b6102786004803603606081101561039057600080fd5b506001600160a01b03813581169160208101359091169060400135610b7a565b610294610eab565b6103d5600480360360208110156103ce57600080fd5b5035610eb0565b604080516001600160a01b039092168252519081900360200190f35b6102786004803603604081101561040757600080fd5b506001600160a01b038135169060200135610ed7565b6101cd6004803603602081101561043357600080fd5b5035610f12565b61027861103f565b6102946004803603602081101561045857600080fd5b50356001600160a01b031661136a565b6101cd61137c565b6102946004803603602081101561048657600080fd5b50356001600160a01b0316611426565b610294600480360360208110156104ac57600080fd5b50356001600160a01b0316611438565b6103d5611453565b6101d7611462565b610294600480360360208110156104e257600080fd5b50356001600160a01b0316611481565b6102946004803603602081101561050857600080fd5b50356001600160a01b0316611493565b6102786004803603604081101561052e57600080fd5b506001600160a01b0381351690602001356114c6565b6102786004803603604081101561055a57600080fd5b506001600160a01b0381351690602001356114fc565b6101cd611710565b6101cd6004803603602081101561058e57600080fd5b50356117df565b610294600480360360408110156105ab57600080fd5b506001600160a01b03813581169160200135166118ac565b6101cd600480360360208110156105d957600080fd5b50356001600160a01b03166118d7565b610294600480360360208110156105ff57600080fd5b503560ff16611942565b6000546001600160a01b031633146106525760405162461bcd60e51b815260040180806020018281038252602a815260200180611cc7602a913960400191505060405180910390fd5b60006002600083600681111561066457fe5b600681111561066f57fe5b815260200190815260200160002054905060006002600084600681111561069257fe5b600681111561069d57fe5b81526020810191909152604001600020556003546106bb9082611954565b6003555050565b60405180604001604052806005815260200164556e69646f60d81b81525081565b60006106f0338484611a19565b50600192915050565b60035481565b6000610709611b1b565b90505b90565b6000546001600160a01b031633146107585760405162461bcd60e51b815260040180806020018281038252602a815260200180611cc7602a913960400191505060405180910390fd5b600085600681111561076657fe5b101580156107805750600685600681111561077d57fe5b11155b6107d1576040805162461bcd60e51b815260206004820152601860248201527f4d7573742073656c65637420612076616c696420706f6f6c0000000000000000604482015290519081900360640190fd5b828114610825576040805162461bcd60e51b815260206004820152601b60248201527f4d757374206861766520657175616c2061727261792073697a65730000000000604482015290519081900360640190fd5b6000808087600681111561083557fe5b141561084757506001905060056108f8565b600187600681111561085557fe5b1415610863575060046108f8565b600287600681111561087157fe5b14156108825750600c9050806108f8565b600387600681111561089057fe5b14156108a1575060069050806108f8565b60048760068111156108af57fe5b14156108c157506003905060096108f8565b60058760068111156108cf57fe5b14156108e0575060019050806108f8565b60068760068111156108ee57fe5b14156108f8575060125b600085815b81811015610a9e57600089898381811061091357fe5b905060200201356001600160a01b03169050600c6000826001600160a01b03166001600160a01b03168152602001908152602001600020546000146109895760405162461bcd60e51b8152600401808060200182810382526042815260200180611bff6042913960600191505060405180910390fd5b600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319166001600160a01b0383161790558787838181106109e057fe5b6001600160a01b0384166000908152600c602090815260409091209102929092013590915550610a3d888884818110610a1557fe5b6001600160a01b03851660009081526009602090815260409091205493910201359050611b24565b6001600160a01b038216600090815260096020908152604080832093909355600b8152828220899055600d905220859055610a93888884818110610a7d57fe5b9050602002013585611b2490919063ffffffff16565b9350506001016108fd565b50600260008a6006811115610aaf57fe5b6006811115610aba57fe5b815260200190815260200160002054821115610b075760405162461bcd60e51b8152600401808060200182810382526029815260200180611d136029913960400191505060405180910390fd5b610b4382600260008c6006811115610b1b57fe5b6006811115610b2657fe5b81526020019081526020016000205461195490919063ffffffff16565b600260008b6006811115610b5357fe5b6006811115610b5e57fe5b8152602081019190915260400160002055505050505050505050565b6000610b84611b1b565b610bd5576040805162461bcd60e51b815260206004820152601b60248201527f436f6e7472616374206973206e6f742074726164696e67207965740000000000604482015290519081900360640190fd5b6001600160a01b0384166000908152600c60209081526040808320546009909252909120548391610c069190611954565b1015610c435760405162461bcd60e51b8152600401808060200182810382526021815260200180611ca66021913960400191505060405180910390fd5b6001600160a01b0384166000908152600a60209081526040808320338452909152902054821115610ca55760405162461bcd60e51b8152600401808060200182810382526023815260200180611c626023913960400191505060405180910390fd5b60008211610cfa576040805162461bcd60e51b815260206004820152601d60248201527f4d757374207472616e73666572206e6f6e2d7a65726f20616d6f756e74000000604482015290519081900360640190fd5b6001600160a01b038416610d55576040805162461bcd60e51b815260206004820152601e60248201527f43616e6e6f742073656e642066726f6d20746865203020616464726573730000604482015290519081900360640190fd5b6001600160a01b038316610db0576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742073656e6420746f207468652030206164647265737300000000604482015290519081900360640190fd5b6001600160a01b038416600090815260096020526040902054610dd39083611954565b6001600160a01b038086166000908152600960205260408082209390935590851681522054610e029083611b24565b6001600160a01b038085166000908152600960209081526040808320949094559187168152600a82528281203382529091522054610e409083611954565b6001600160a01b038086166000818152600a6020908152604080832033845282529182902094909455805186815290519287169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35060019392505050565b601281565b60048181548110610ebd57fe5b6000918252602090912001546001600160a01b0316905081565b336000818152600a602090815260408083206001600160a01b038716845290915281205490916106f0918590610f0d9086611b24565b611a19565b336000908152600c60209081526040808320546009909252909120548291610f3a9190611954565b1015610f775760405162461bcd60e51b8152600401808060200182810382526021815260200180611ca66021913960400191505060405180910390fd5b60008111610fcc576040805162461bcd60e51b815260206004820152601960248201527f4d757374206275726e206e6f6e2d7a65726f20616d6f756e7400000000000000604482015290519081900360640190fd5b33600090815260096020526040902054610fe69082611954565b336000908152600960205260409020556003546110039082611954565b60035560408051828152905133917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a250565b600080546001600160a01b031633146110895760405162461bcd60e51b815260040180806020018281038252602a815260200180611cc7602a913960400191505060405180910390fd5b60065460045460075460009061109f9084611b24565b6007549091505b82811080156110b457508181105b1561124d576000600482815481106110c857fe5b60009182526020808320909101546001600160a01b0316808352600b9091526040909120549091501561111a576001600160a01b0381166000908152600b602052604090208054600019019055611244565b6001600160a01b0381166000908152600d60205260409020541561120e576001600160a01b0381166000908152600d6020526040812054906012821415611186576001600160a01b0383166000908152600c602052604090205461117f9060086119b1565b90506111b7565b6001600160a01b0383166000908152600d6020908152604080832054600c909252909120546111b4916119b1565b90505b6001600160a01b0383166000908152600c60205260409020546111da9082611954565b6001600160a01b0384166000908152600c6020908152604080832093909355600d9052208054600019019055506112449050565b600880546001810182556000919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3018290555b506001016110a6565b5060075461125b9084611b24565b600781905582116113605760006007555b60085415611354576008805460009190600019810190811061128a57fe5b9060005260206000200154905060088054806112a257fe5b600190038181906000526020600020016000905590556004600160048054905003815481106112cd57fe5b600091825260209091200154600480546001600160a01b0390921691839081106112f357fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600480548061132c57fe5b600082815260209020810160001990810180546001600160a01b03191690550190555061126c565b6000935050505061070c565b6001935050505090565b600d6020526000908152604090205481565b6001546001600160a01b031633146113c55760405162461bcd60e51b8152600401808060200182810382526022815260200180611cf16022913960400191505060405180910390fd5b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b600b6020526000908152604090205481565b6001600160a01b031660009081526009602052604090205490565b6000546001600160a01b031681565b6040518060400160405280600381526020016255444f60e81b81525081565b600c6020526000908152604090205481565b6001600160a01b0381166000908152600c602090815260408083205460099092528220546114c091611954565b92915050565b336000818152600a602090815260408083206001600160a01b038716845290915281205490916106f0918590610f0d9086611954565b6000611506611b1b565b611557576040805162461bcd60e51b815260206004820152601d60248201527f436f6e7472616374206973206e6f7420747261646561626c6520796574000000604482015290519081900360640190fd5b336000908152600c6020908152604080832054600990925290912054839161157f9190611954565b10156115bc5760405162461bcd60e51b8152600401808060200182810382526021815260200180611ca66021913960400191505060405180910390fd5b60008211611611576040805162461bcd60e51b815260206004820152601d60248201527f4d757374207472616e73666572206e6f6e2d7a65726f20616d6f756e74000000604482015290519081900360640190fd5b6001600160a01b03831661166c576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742073656e6420746f207468652030206164647265737300000000604482015290519081900360640190fd5b336000908152600960205260409020546116869083611954565b33600090815260096020526040808220929092556001600160a01b038516815220546116b29083611b24565b6001600160a01b0384166000818152600960209081526040918290209390935580518581529051919233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a350600192915050565b6000546001600160a01b031633146117595760405162461bcd60e51b815260040180806020018281038252602a815260200180611cc7602a913960400191505060405180910390fd5b60055460ff161561179b5760405162461bcd60e51b8152600401808060200182810382526035815260200180611bca6035913960400191505060405180910390fd5b6005805460ff1916600190811790915560408051918252517fe4c97c0b674016b317b52dd3fbb57699889c86e187b096bc5a7f6dc3fcb12c209181900360200190a1565b6000546001600160a01b031633146118285760405162461bcd60e51b815260040180806020018281038252602a815260200180611cc7602a913960400191505060405180910390fd5b601481116118675760405162461bcd60e51b8152600401808060200182810382526021815260200180611c416021913960400191505060405180910390fd5b60c88111156118a75760405162461bcd60e51b8152600401808060200182810382526044815260200180611b866044913960600191505060405180910390fd5b600655565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b6000546001600160a01b031633146119205760405162461bcd60e51b815260040180806020018281038252602a815260200180611cc7602a913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60026020526000908152604090205481565b6000828211156119ab576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600081611a05576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481611a1057fe5b04949350505050565b6001600160a01b038316611a5e5760405162461bcd60e51b8152600401808060200182810382526021815260200180611c856021913960400191505060405180910390fd5b6001600160a01b038216611ab9576040805162461bcd60e51b815260206004820152601c60248201527f43616e6e6f7420617070726f7665207468652030206164647265737300000000604482015290519081900360640190fd5b6001600160a01b038084166000818152600a6020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60055460ff1690565b600082820183811015611b7e576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe56616c7565732067726561746572207468616e20323030206d6179206361757365207468652075706461746552656c656173652066756e6374696f6e20746f206661696c43616e206f6e6c792073657420747261646561626c65207768656e20697473206e6f7420616c726561647920747261646561626c655061727469636970616e74732063616e277420626520696e766f6c76656420696e206d756c7469706c65206c6f636b207570732073696d756c74616e656f75736c7956616c756573203230206f72206c6573732061726520696d70726163746963616c4d75737420626520617070726f76656420746f207370656e642074686174206d75636843616e6e6f7420617070726f76652066726f6d20746865203020616464726573734d757374206861766520656e6f756768207370656e6461626c6520746f6b656e734f6e6c7920746865206f776e6572206f662074686520636f6e74726163742063616e20646f20746861744d75737420626520676976656e206f776e65727368697020746f20646f2074686174496e73756666696369656e7420616d6f756e74206c65667420696e20706f6f6c20666f722074686973a2646970667358221220163dd399dbcb9d96b3d2fc7e9c9fbacac075e65014922566bd96aed78dbc213464736f6c63430007000033

Deployed Bytecode Sourcemap

3864:10116:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11968:182;;;;;;;;;;;;;;;;-1:-1:-1;11968:182:0;;;;:::i;:::-;;4249:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8380:147;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8380:147:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;4216:26;;;:::i;:::-;;;;;;;;;;;;;;;;6339:90;;;:::i;10112:1844::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10112:1844:0;;-1:-1:-1;10112:1844:0;-1:-1:-1;10112:1844:0;:::i;9275:825::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9275:825:0;;;;;;;;;;;;;;;;;:::i;4293:37::-;;;:::i;4381:29::-;;;;;;;;;;;;;;;;-1:-1:-1;4381:29:0;;:::i;:::-;;;;-1:-1:-1;;;;;4381:29:0;;;;;;;;;;;;;;7942:202;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7942:202:0;;;;;;;;:::i;8881:382::-;;;;;;;;;;;;;;;;-1:-1:-1;8881:382:0;;:::i;12473:1504::-;;;:::i;4807:55::-;;;;;;;;;;;;;;;;-1:-1:-1;4807:55:0;-1:-1:-1;;;;;4807:55:0;;:::i;617:206::-;;;:::i;4692:50::-;;;;;;;;;;;;;;;;-1:-1:-1;4692:50:0;-1:-1:-1;;;;;4692:50:0;;:::i;6911:112::-;;;;;;;;;;;;;;;;-1:-1:-1;6911:112:0;-1:-1:-1;;;;;6911:112:0;;:::i;83:20::-;;;:::i;4337:37::-;;;:::i;4749:51::-;;;;;;;;;;;;;;;;-1:-1:-1;4749:51:0;-1:-1:-1;;;;;4749:51:0;;:::i;7187:145::-;;;;;;;;;;;;;;;;-1:-1:-1;7187:145:0;-1:-1:-1;;;;;7187:145:0;;:::i;8156:212::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8156:212:0;;;;;;;;:::i;7344:586::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7344:586:0;;;;;;;;:::i;6441:187::-;;;:::i;6640:259::-;;;;;;;;;;;;;;;;-1:-1:-1;6640:259:0;;:::i;7035:140::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7035:140:0;;;;;;;;;;:::i;501:104::-;;;;;;;;;;;;;;;;-1:-1:-1;501:104:0;-1:-1:-1;;;;;501:104:0;;:::i;4168:35::-;;;;;;;;;;;;;;;;-1:-1:-1;4168:35:0;;;;:::i;11968:182::-;417:5;;-1:-1:-1;;;;;417:5:0;403:10;:19;395:74;;;;-1:-1:-1;;;395:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12039:13:::1;12055:5;:11;12061:4;12055:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;12039:27;;12091:1;12077:5;:11;12083:4;12077:11;;;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12077:11:0;:15;12117:11:::1;::::0;:25:::1;::::0;12133:8;12117:15:::1;:25::i;:::-;12103:11;:39:::0;-1:-1:-1;;11968:182:0:o;4249:37::-;;;;;;;;;;;;;;-1:-1:-1;;;4249:37:0;;;;:::o;8380:147::-;8443:4;8460:37;8469:10;8481:7;8490:6;8460:8;:37::i;:::-;-1:-1:-1;8515:4:0;8380:147;;;;:::o;4216:26::-;;;;:::o;6339:90::-;6383:4;6407:14;:12;:14::i;:::-;6400:21;;6339:90;;:::o;10112:1844::-;417:5;;-1:-1:-1;;;;;417:5:0;403:10;:19;395:74;;;;-1:-1:-1;;;395:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10257:9:::1;10249:4;:17;;;;;;;;;;:41;;;;-1:-1:-1::0;10278:12:0::1;10270:4;:20;;;;;;;;;;10249:41;10240:79;;;::::0;;-1:-1:-1;;;10240:79:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;10339:38:::0;;::::1;10330:79;;;::::0;;-1:-1:-1;;;10330:79:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;10430:18;::::0;;10507:4:::1;:17;;;;;;;;;10503:722;;;-1:-1:-1::0;10557:1:0::1;::::0;-1:-1:-1;10594:1:0::1;10503:722;;;10625:12;10617:4;:20;;;;;;;;;10613:612;;;-1:-1:-1::0;10675:1:0::1;10613:612;;;10706:9;10698:4;:17;;;;;;;;;10694:531;;;-1:-1:-1::0;10748:2:0::1;::::0;-1:-1:-1;10748:2:0;10694:531:::1;;;10818:12;10810:4;:20;;;;;;;;;10806:419;;;-1:-1:-1::0;10863:1:0::1;::::0;-1:-1:-1;10863:1:0;10806:419:::1;;;10931:14;10923:4;:22;;;;;;;;;10919:306;;;-1:-1:-1::0;10978:1:0::1;::::0;-1:-1:-1;11015:1:0::1;10919:306;;;11046:14;11038:4;:22;;;;;;;;;11034:191;;;-1:-1:-1::0;11098:1:0::1;::::0;-1:-1:-1;11098:1:0;11034:191:::1;;;11161:12;11153:4;:20;;;;;;;;;11149:76;;;-1:-1:-1::0;11211:2:0::1;11149:76;11245:11;11281:13:::0;11245:11;11312:499:::1;11336:3;11332:1;:7;11312:499;;;11361:9;11373:13;;11387:1;11373:16;;;;;;;;;;;;;-1:-1:-1::0;;;;;11373:16:0::1;11361:28;;11412:15;:18;11428:1;-1:-1:-1::0;;;;;11412:18:0::1;-1:-1:-1::0;;;;;11412:18:0::1;;;;;;;;;;;;;11434:1;11412:23;11404:102;;;;-1:-1:-1::0;;;11404:102:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11531:12;:20:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;11531:20:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;11531:20:0::1;-1:-1:-1::0;;;;;11531:20:0;::::1;;::::0;;11587:7;;11595:1;11587:10;;::::1;;;;;-1:-1:-1::0;;;;;11566:18:0;::::1;;::::0;;;:15:::1;11587:10;11566:18:::0;;;;;;;11587:10;::::1;::::0;;;::::1;;11566:31:::0;;;-1:-1:-1;11626:27:0::1;11642:7:::0;;11650:1;11642:10;;::::1;;;;;-1:-1:-1::0;;;;;11626:11:0;::::1;;::::0;;;:8:::1;11642:10;11626:11:::0;;;;;;;;;11642:10;::::1;;;::::0;-1:-1:-1;11626:15:0::1;:27::i;:::-;-1:-1:-1::0;;;;;11612:11:0;::::1;;::::0;;;:8:::1;:11;::::0;;;;;;;:41;;;;11668:14:::1;:17:::0;;;;;:33;;;11716:19:::1;:22:::0;;;:43;;;11780:19:::1;11788:7:::0;;11796:1;11788:10;;::::1;;;;;;;;;;;11780:3;:7;;:19;;;;:::i;:::-;11774:25:::0;-1:-1:-1;;11341:3:0::1;;11312:499;;;;11846:5;:11;11852:4;11846:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;11839:3;:18;;11831:72;;;;-1:-1:-1::0;;;11831:72:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11928:20;11944:3;11928:5;:11;11934:4;11928:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:15;;:20;;;;:::i;:::-;11914:5;:11;11920:4;11914:11;;;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11914:11:0;:34;-1:-1:-1;;;;;;;;;10112:1844:0:o;9275:825::-;9352:4;9378:14;:12;:14::i;:::-;9369:55;;;;;-1:-1:-1;;;9369:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9463:21:0;;;;;;:15;:21;;;;;;;;;9444:8;:14;;;;;;;9489:6;;9444:41;;:14;:18;:41::i;:::-;:51;;9435:98;;;;-1:-1:-1;;;9435:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9553:16:0;;;;;;:10;:16;;;;;;;;9570:10;9553:28;;;;;;;;:38;-1:-1:-1;9553:38:0;9544:87;;;;-1:-1:-1;;;9544:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9660:1;9651:6;:10;9642:53;;;;;-1:-1:-1;;;9642:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9715:18:0;;9706:62;;;;;-1:-1:-1;;;9706:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9788:16:0;;9779:58;;;;;-1:-1:-1;;;9779:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9875:14:0;;;;;;:8;:14;;;;;;:26;;9894:6;9875:18;:26::i;:::-;-1:-1:-1;;;;;9858:14:0;;;;;;;:8;:14;;;;;;:43;;;;9927:12;;;;;;;:24;;9944:6;9927:16;:24::i;:::-;-1:-1:-1;;;;;9912:12:0;;;;;;;:8;:12;;;;;;;;:39;;;;9993:16;;;;;:10;:16;;;;;10010:10;9993:28;;;;;;;:40;;10026:6;9993:32;:40::i;:::-;-1:-1:-1;;;;;9962:16:0;;;;;;;:10;:16;;;;;;;;9979:10;9962:28;;;;;;;;:71;;;;10044:26;;;;;;;;;;;9962:16;;10044:26;;;;;;;;;;;-1:-1:-1;10088:4:0;9275:825;;;;;:::o;4293:37::-;4328:2;4293:37;:::o;4381:29::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4381:29:0;;-1:-1:-1;4381:29:0;:::o;7942:202::-;8045:10;8019:4;8066:22;;;:10;:22;;;;;;;;-1:-1:-1;;;;;8066:31:0;;;;;;;;;;8019:4;;8036:78;;8057:7;;8066:47;;8102:10;8066:35;:47::i;:::-;8036:8;:78::i;8881:382::-;8976:10;8960:27;;;;:15;:27;;;;;;;;;8935:8;:20;;;;;;;8992:6;;8935:53;;:20;:24;:53::i;:::-;:63;;8926:110;;;;-1:-1:-1;;;8926:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9065:1;9056:6;:10;9047:49;;;;;-1:-1:-1;;;9047:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9149:10;9140:20;;;;:8;:20;;;;;;:32;;9165:6;9140:24;:32::i;:::-;9126:10;9117:20;;;;:8;:20;;;;;:55;9197:11;;:23;;9213:6;9197:15;:23::i;:::-;9183:11;:37;9231:24;;;;;;;;9236:10;;9231:24;;;;;;;;;;8881:382;:::o;12473:1504::-;12526:4;417:5;;-1:-1:-1;;;;;417:5:0;403:10;:19;395:74;;;;-1:-1:-1;;;395:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12555:10:::1;::::0;12587:12:::1;:19:::0;12640:13:::1;::::0;12543:9:::1;::::0;12640:23:::1;::::0;12555:10;12640:17:::1;:23::i;:::-;12688:13;::::0;12617:46;;-1:-1:-1;12674:836:0::1;12707:3;12703:1;:7;:30;;;;;12718:15;12714:1;:19;12703:30;12674:836;;;12755:9;12767:12;12780:1;12767:15;;;;;;;;;::::0;;;::::1;::::0;;;;;::::1;::::0;-1:-1:-1;;;;;12767:15:0::1;12801:17:::0;;;:14:::1;:17:::0;;;;;;;;12767:15;;-1:-1:-1;12801:21:0;12797:702:::1;;-1:-1:-1::0;;;;;12843:17:0;::::1;;::::0;;;:14:::1;:17;::::0;;;;:19;;-1:-1:-1;;12843:19:0;;;12797:702:::1;;;-1:-1:-1::0;;;;;12888:22:0;::::1;12913:1;12888:22:::0;;;:19:::1;:22;::::0;;;;;:26;12884:615:::1;;-1:-1:-1::0;;;;;12947:22:0;::::1;12935:9;12947:22:::0;;;:19:::1;:22;::::0;;;;;;13049:2:::1;13041:10:::0;::::1;13037:257;;;-1:-1:-1::0;;;;;13144:18:0;::::1;;::::0;;;:15:::1;:18;::::0;;;;;:25:::1;::::0;13167:1:::1;13144:22;:25::i;:::-;13134:35;;13037:257;;;-1:-1:-1::0;;;;;13251:22:0;::::1;;::::0;;;:19:::1;:22;::::0;;;;;;;;13228:15:::1;:18:::0;;;;;;;:46:::1;::::0;:22:::1;:46::i;:::-;13218:56;;13037:257;-1:-1:-1::0;;;;;13351:18:0;::::1;;::::0;;;:15:::1;:18;::::0;;;;;:31:::1;::::0;13374:7;13351:22:::1;:31::i;:::-;-1:-1:-1::0;;;;;13330:18:0;::::1;;::::0;;;:15:::1;:18;::::0;;;;;;;:52;;;;13401:19:::1;:22:::0;;;:24;;-1:-1:-1;;13401:24:0;;;-1:-1:-1;12884:615:0::1;::::0;-1:-1:-1;12884:615:0::1;;13466:9;:17:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;13466:17:0;;;;;::::1;::::0;;;12884:615:::1;-1:-1:-1::0;12735:3:0::1;;12674:836;;;-1:-1:-1::0;13536:13:0::1;::::0;:23:::1;::::0;13554:4;13536:17:::1;:23::i;:::-;13520:13;:39:::0;;;13574:20;-1:-1:-1;13570:368:0::1;;13627:1;13611:13;:17:::0;13643:257:::1;13650:9;:16:::0;:20;13643:257:::1;;13704:9;13714:16:::0;;13691:10:::1;::::0;13704:9;-1:-1:-1;;13714:18:0;;;13704:29;::::1;;;;;;;;;;;;;13691:42;;13752:9;:15;;;;;;;;;;;;;;;;;;;;;;;;13810:12;13845:1;13823:12;:19;;;;:23;13810:37;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;13788:12:::1;:19:::0;;-1:-1:-1;;;;;13810:37:0;;::::1;::::0;13801:5;;13788:19;::::1;;;;;;;;;;;;;:59;;;;;-1:-1:-1::0;;;;;13788:59:0::1;;;;;-1:-1:-1::0;;;;;13788:59:0::1;;;;;;13866:12;:18;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;13866:18:0;;;;;-1:-1:-1;;;;;;13866:18:0::1;::::0;;;;;-1:-1:-1;13643:257:0::1;;;13921:5;13914:12;;;;;;;13570:368;13965:4;13958:11;;;;;12473:1504:::0;:::o;4807:55::-;;;;;;;;;;;;;:::o;617:206::-;682:10;;-1:-1:-1;;;;;682:10:0;668;:24;660:71;;;;-1:-1:-1;;;660:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;775:10;;;768:5;;747:39;;-1:-1:-1;;;;;775:10:0;;;;768:5;;;;747:39;;;805:10;;;797:18;;-1:-1:-1;;;;;;797:18:0;-1:-1:-1;;;;;805:10:0;;;797:18;;;;;;617:206::o;4692:50::-;;;;;;;;;;;;;:::o;6911:112::-;-1:-1:-1;;;;;6995:20:0;6971:4;6995:20;;;:8;:20;;;;;;;6911:112::o;83:20::-;;;-1:-1:-1;;;;;83:20:0;;:::o;4337:37::-;;;;;;;;;;;;;;-1:-1:-1;;;4337:37:0;;;;:::o;4749:51::-;;;;;;;;;;;;;:::o;7187:145::-;-1:-1:-1;;;;;7296:27:0;;7247:4;7296:27;;;:15;:27;;;;;;;;;7271:8;:20;;;;;;:53;;:24;:53::i;:::-;7264:60;7187:145;-1:-1:-1;;7187:145:0:o;8156:212::-;8264:10;8238:4;8285:22;;;:10;:22;;;;;;;;-1:-1:-1;;;;;8285:31:0;;;;;;;;;;8238:4;;8255:83;;8276:7;;8285:52;;8321:15;8285:35;:52::i;7344:586::-;7403:4;7429:14;:12;:14::i;:::-;7420:57;;;;;-1:-1:-1;;;7420:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7538:10;7522:27;;;;:15;:27;;;;;;;;;7497:8;:20;;;;;;;7554:6;;7497:53;;:20;:24;:53::i;:::-;:63;;7488:110;;;;-1:-1:-1;;;7488:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7627:1;7618:6;:10;7609:53;;;;;-1:-1:-1;;;7609:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7682:16:0;;7673:58;;;;;-1:-1:-1;;;7673:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7784:10;7775:20;;;;:8;:20;;;;;;:32;;7800:6;7775:24;:32::i;:::-;7761:10;7752:20;;;;:8;:20;;;;;;:55;;;;-1:-1:-1;;;;;7833:12:0;;;;;;:24;;7850:6;7833:16;:24::i;:::-;-1:-1:-1;;;;;7818:12:0;;;;;;:8;:12;;;;;;;;;:39;;;;7868:32;;;;;;;7818:12;;7877:10;;7868:32;;;;;;;;;;-1:-1:-1;7918:4:0;7344:586;;;;:::o;6441:187::-;417:5;;-1:-1:-1;;;;;417:5:0;403:10;:19;395:74;;;;-1:-1:-1;;;395:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6505:8:::1;::::0;::::1;;6504:9;6495:76;;;;-1:-1:-1::0;;;6495:76:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6582:8;:15:::0;;-1:-1:-1;;6582:15:0::1;6593:4;6582:15:::0;;::::1;::::0;;;6608:12:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;6441:187::o:0;6640:259::-;417:5;;-1:-1:-1;;;;;417:5:0;403:10;:19;395:74;;;;-1:-1:-1;;;395:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6721:2:::1;6715:3;:8;6706:55;;;;-1:-1:-1::0;;;6706:55:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6788:3;6781;:10;;6772:92;;;;-1:-1:-1::0;;;6772:92:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6875:10;:16:::0;6640:259::o;7035:140::-;-1:-1:-1;;;;;7136:22:0;;;7112:4;7136:22;;;:10;:22;;;;;;;;:31;;;;;;;;;;;;;7035:140::o;501:104::-;417:5;;-1:-1:-1;;;;;417:5:0;403:10;:19;395:74;;;;-1:-1:-1;;;395:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;575:10:::1;:22:::0;;-1:-1:-1;;;;;;575:22:0::1;-1:-1:-1::0;;;;;575:22:0;;;::::1;::::0;;;::::1;::::0;;501:104::o;4168:35::-;;;;;;;;;;;;;:::o;1541:184::-;1599:7;1632:1;1627;:6;;1619:49;;;;;-1:-1:-1;;;1619:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1691:5:0;;;1541:184::o;2914:334::-;2972:7;3067:6;3059:45;;;;;-1:-1:-1;;;3059:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3115:9;3131:1;3127;:5;;;;;;;2914:334;-1:-1:-1;;;;2914:334:0:o;8539:330::-;-1:-1:-1;;;;;8631:19:0;;8622:66;;;;-1:-1:-1;;;8622:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8708:21:0;;8699:63;;;;;-1:-1:-1;;;8699:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8783:17:0;;;;;;;:10;:17;;;;;;;;:26;;;;;;;;;;;;;:35;;;8829:32;;;;;;;;;;;;;;;;;8539:330;;;:::o;6240:87::-;6311:8;;;;6240:87;:::o;1085:181::-;1143:7;1175:5;;;1199:6;;;;1191:46;;;;;-1:-1:-1;;;1191:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1257:1;1085:181;-1:-1:-1;;;1085:181:0:o

Swarm Source

ipfs://163dd399dbcb9d96b3d2fc7e9c9fbacac075e65014922566bd96aed78dbc2134

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

OVERVIEW

Unido is a technology ecosystem that addresses the governance, security and accessibility challenges of decentralized applications - enabling enterprises to manage crypto assets and capitalize on DeFi.

Validator Index Block Amount
View All Withdrawals

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

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