ETH Price: $3,209.35 (-3.65%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Add Whitelisted216668882025-01-20 16:26:116 days ago1737390371IN
0x8DbB99cc...3cf78cdd3
0 ETH0.0034463345.63113065
Add Whitelisted216436042025-01-17 10:26:119 days ago1737109571IN
0x8DbB99cc...3cf78cdd3
0 ETH0.000648378.5833769
Add Whitelisted215898942025-01-09 22:26:1117 days ago1736461571IN
0x8DbB99cc...3cf78cdd3
0 ETH0.000611118.09021269
Add Whitelisted215827352025-01-08 22:26:1118 days ago1736375171IN
0x8DbB99cc...3cf78cdd3
0 ETH0.00065178.62755026
Add Whitelisted215719842025-01-07 10:26:1119 days ago1736245571IN
0x8DbB99cc...3cf78cdd3
0 ETH0.000502776.6570044
Add Whitelisted215164752024-12-30 16:26:1127 days ago1735575971IN
0x8DbB99cc...3cf78cdd3
0 ETH0.0009131912.08919019
Add Whitelisted215146862024-12-30 10:26:5927 days ago1735554419IN
0x8DbB99cc...3cf78cdd3
0 ETH0.000324924.30561031
Add Whitelisted215146852024-12-30 10:26:4727 days ago1735554407IN
0x8DbB99cc...3cf78cdd3
0 ETH0.00031944.22700345
Add Whitelisted215146832024-12-30 10:26:2327 days ago1735554383IN
0x8DbB99cc...3cf78cdd3
0 ETH0.00033244.40253335
Add Whitelisted215146822024-12-30 10:26:1127 days ago1735554371IN
0x8DbB99cc...3cf78cdd3
0 ETH0.000320984.25134158
Add Whitelisted214860302024-12-26 10:26:1131 days ago1735208771IN
0x8DbB99cc...3cf78cdd3
0 ETH0.000482236.38497699
Add Whitelisted214717222024-12-24 10:26:1133 days ago1735035971IN
0x8DbB99cc...3cf78cdd3
0 ETH0.000623198.247437
Add Whitelisted214220912024-12-17 11:54:5940 days ago1734436499IN
0x8DbB99cc...3cf78cdd3
0 ETH0.001186929.29209288
Add Whitelisted214185042024-12-16 23:54:5941 days ago1734393299IN
0x8DbB99cc...3cf78cdd3
0 ETH0.0008382711.09382911
Add Whitelisted213647802024-12-09 11:54:5948 days ago1733745299IN
0x8DbB99cc...3cf78cdd3
0 ETH0.001655716.29248078
Add Whitelisted213516262024-12-07 15:52:1150 days ago1733586731IN
0x8DbB99cc...3cf78cdd3
0 ETH0.0011270614.92282278
Add Whitelisted213265692024-12-04 3:52:1153 days ago1733284331IN
0x8DbB99cc...3cf78cdd3
0 ETH0.0022924217.94675882
Add Whitelisted212889992024-11-28 21:52:1159 days ago1732830731IN
0x8DbB99cc...3cf78cdd3
0 ETH0.000618668.1914418
Add Whitelisted212801012024-11-27 15:52:1160 days ago1732722731IN
0x8DbB99cc...3cf78cdd3
0 ETH0.0018261124.18631878
Add Whitelisted212747322024-11-26 21:52:2361 days ago1732657943IN
0x8DbB99cc...3cf78cdd3
0 ETH0.003976749.01445273
Add Whitelisted212747312024-11-26 21:52:1161 days ago1732657931IN
0x8DbB99cc...3cf78cdd3
0 ETH0.000873968.59897667
Add Whitelisted212711462024-11-26 9:52:1161 days ago1732614731IN
0x8DbB99cc...3cf78cdd3
0 ETH0.000634118.39468427
Add Whitelisted212371182024-11-21 15:52:1166 days ago1732204331IN
0x8DbB99cc...3cf78cdd3
0 ETH0.0018885425.00124579
Add Whitelisted212281742024-11-20 9:52:1167 days ago1732096331IN
0x8DbB99cc...3cf78cdd3
0 ETH0.0014609711.43752495
Add Whitelisted212156172024-11-18 15:52:1169 days ago1731945131IN
0x8DbB99cc...3cf78cdd3
0 ETH0.0013748518.20949985
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CertifiedPartners

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity Multiple files format)

File 1 of 3: CertifiedPartners.sol
/*
* SPDX-License-Identifier: UNLICENSED
* Copyright © 2021 Blocksquare d.o.o.
*/

pragma solidity ^0.6.12;
pragma experimental ABIEncoderV2;

import "./Ownable.sol";

interface CertifiedPartnersHelpers {
    function hasSystemAdminRights(address addr) external view returns (bool);

    function isCPAdminOf(address account, bytes32 cpBytes) external view returns (bool);

    function getSpecialWallet() external view returns (address);
}

// @title Certified Partners
contract CertifiedPartners is Ownable {
    struct CertifiedPartner {
        bool canDistributeRent;
        bool isCP;
        mapping(bytes32 => bool) whitelistedUsers;
    }

    CertifiedPartnersHelpers private _roles;

    mapping(bytes32 => CertifiedPartner) private _certifiedPartner;
    mapping(address => bytes32) _associatedWallets;

    address private _dataProxy;


    event AddedCertifiedPartner(bytes32 indexed cpBytes, string cp);
    event AddedWallet(bytes32 indexed cp, address wallet, string cpName);
    event RemovedWallet(bytes32 indexed cp, address wallet);
    event AddedWhitelisted(bytes32 indexed cp, string[] users, string cpName);
    event RemovedWhitelisted(bytes32 indexed cp, string[] users, string cpName);

    modifier onlySystemAdmin {
        require(_roles.hasSystemAdminRights(_msgSender()), "CertifiedPartners: You need to have system admin rights!");
        _;
    }


    modifier onlySystemAdminOrSpecialWallet {
        require(_roles.hasSystemAdminRights(_msgSender()) || CertifiedPartnersHelpers(_dataProxy).getSpecialWallet() == _msgSender(), "CertifiedPartners: You don't have rights!");
        _;
    }

    modifier onlyCPAdmin(string memory cp) {
        bytes32 cpBytes = getUserBytes(cp);
        require(_roles.isCPAdminOf(_msgSender(), cpBytes) || CertifiedPartnersHelpers(_dataProxy).getSpecialWallet() == _msgSender(), "CertifiedPartners: You need to be admin of this CP!");
        _;
    }

    modifier onlyCPOrManager(string memory cp) {
        bytes32 cpBytes = getUserBytes(cp);
        require(_roles.isCPAdminOf(_msgSender(), cpBytes) || _associatedWallets[_msgSender()] == cpBytes || CertifiedPartnersHelpers(_dataProxy).getSpecialWallet() == _msgSender(), "CertifiedPartners: You need to have CP admin rights or you have to be CP!");
        _;
    }

    constructor(address roles) public {
        _roles = CertifiedPartnersHelpers(roles);
    }

    function changeRolesAddress(address newRoles) public onlyOwner {
        _roles = CertifiedPartnersHelpers(newRoles);
    }

    function changeDataProxy(address dataProxy) public onlyOwner {
        _dataProxy = dataProxy;
    }

    /// @notice added new Certified Partner
    /// @param cp Certified Partner identifier
    function addCertifiedPartner(string memory cp) public onlySystemAdmin {
        bytes32 cpBytes = getUserBytes(cp);
        _certifiedPartner[cpBytes] = CertifiedPartner({canDistributeRent : true, isCP : true});
        emit AddedCertifiedPartner(cpBytes, cp);
    }

    /// @notice add wallets to Certified Partner
    /// @param cp Certified Partner identifier
    /// @param wallets Array of wallet address
    function addWalletsToCP(string memory cp, address[] memory wallets) public onlyCPAdmin(cp) {
        bytes32 cpBytes = getUserBytes(cp);
        require(_certifiedPartner[cpBytes].isCP, "CertifiedPartners: Not a certified partner");
        for (uint256 i = 0; i < wallets.length; i++) {
            _associatedWallets[wallets[i]] = cpBytes;
            emit AddedWallet(cpBytes, wallets[i], cp);
        }
    }

    /// @notice add wallet to Certified Partner
    /// @param cp Certified Partner identifier
    /// @param wallet Wallet address
    function addCPAndWallet(string memory cp, address wallet) public onlySystemAdmin {
        bytes32 cpBytes = getUserBytes(cp);
        addCertifiedPartner(cp);
        _associatedWallets[wallet] = cpBytes;
        emit AddedWallet(cpBytes, wallet, cp);
    }

    /// @notice remove wallets
    /// @param wallets Array of wallet addresses
    function removeWallets(address[] memory wallets) public onlySystemAdminOrSpecialWallet {
        bytes32 cpBytes = _associatedWallets[wallets[0]];
        for (uint256 i = 0; i < wallets.length; i++) {
            delete _associatedWallets[wallets[i]];
            emit RemovedWallet(cpBytes, wallets[i]);
        }
    }

    /// @notice change whether Certified Partner can distribute revenue
    /// @param cp Certified Partner identifier
    function changeCanDistributeRent(string memory cp) public onlyCPAdmin(cp) {
        bytes32 cpBytes = getUserBytes(cp);
        _certifiedPartner[cpBytes].canDistributeRent = !_certifiedPartner[cpBytes].canDistributeRent;
    }

    /// @notice whitelist users to Certified Partner allowing them to trade Certified Partner's properties
    /// @param cp Certified Partner identifier
    /// @param users Array of user identifiers
    function addWhitelisted(string memory cp, string[] memory users) public onlyCPOrManager(cp) {
        bytes32 cpBytes = getUserBytes(cp);
        for (uint256 i = 0; i < users.length; i++) {
            bytes32 userBytes = getUserBytes(users[i]);
            _certifiedPartner[cpBytes].whitelistedUsers[userBytes] = true;
        }
        emit AddedWhitelisted(cpBytes, users, cp);
    }

    /// @notice remove users from Certified Partner's whitelist
    /// @param cp Certified Partner identifier
    /// @param users Array of user identifiers
    function removeWhitelisted(string memory cp, string[] memory users) public onlyCPOrManager(cp) {
        bytes32 cpBytes = getUserBytes(cp);
        for (uint256 i = 0; i < users.length; i++) {
            bytes32 userBytes = getUserBytes(users[i]);
            _certifiedPartner[cpBytes].whitelistedUsers[userBytes] = false;
        }
        emit RemovedWhitelisted(cpBytes, users, cp);
    }

    /// @notice check if Certified Partner identifier is registered
    /// @param name Identifier to check
    /// @return true if name is a registered Certified Partner otherwise false
    function isCertifiedPartnerName(string memory name) public view returns (bool) {
        bytes32 nameBytes = getUserBytes(name);
        return _certifiedPartner[nameBytes].isCP;
    }

    /// @notice check if addr belongs to a registered Certified Partner
    /// @param addr Wallet address to check
    /// @return true if addr belongs to a registered Certified Partner
    function isCertifiedPartner(address addr) public view returns (bool) {
        return _certifiedPartner[_associatedWallets[addr]].isCP;
    }

    /// @notice check if Certified Partner with wallet addr can distribute revenue
    /// @param addr Wallet address of Certified Partner
    /// @return true if Certified Partner with wallet addr can distribute revenue otherwise false
    function canCertifiedPartnerDistributeRent(address addr) public view returns (bool) {
        return _certifiedPartner[_associatedWallets[addr]].canDistributeRent;
    }

    /// @notice check if user is whitelisted for cp
    /// @param cp Certified Partner identifier
    /// @param user User identifier
    /// @return true if user is whitelisted for cp otherwise false
    function isUserWhitelistedByName(string memory cp, string memory user) public view returns (bool) {
        bytes32 cpBytes = getUserBytes(cp);
        return _certifiedPartner[cpBytes].whitelistedUsers[getUserBytes(user)];
    }

    /// @notice if admin is admin of cp based on wallet addresses
    /// @param admin Wallet address of admin
    /// @param cp Wallet address of Certified Partner
    /// @return true if admin is admin of cp otherwise false
    function isCPAdmin(address admin, address cp) external view returns (bool) {
        return _roles.isCPAdminOf(admin, _associatedWallets[cp]);
    }

    /// @notice check if user whitelisted for cp based on bytes
    /// @param cp Keccak256 hash of Certified Partner identifier
    /// @param user Keccak256 hash of user identifier
    /// @return true if user is whitelisted for cp otherwise false
    function isUserWhitelisted(bytes32 cp, bytes32 user) external view returns (bool) {
        return _certifiedPartner[cp].whitelistedUsers[user];
    }

    /// @notice get keccak256 hash of string
    /// @param user User or Certified Partner identifier
    /// @return keccak256 hash
    function getUserBytes(string memory user) public pure returns (bytes32) {
        return keccak256(abi.encode(user));
    }

    /// @notice retrieves keccak256 hash of Certified Partner based on wallet
    /// @param wallet Wallet address of Certified Partner
    /// @return keccak256 hash
    function getCPBytesFromWallet(address wallet) public view returns (bytes32) {
        return _associatedWallets[wallet];
    }
}

File 2 of 3: Context.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.6.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

File 3 of 3: Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.6.0;

import "./Context.sol";
/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"roles","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"cpBytes","type":"bytes32"},{"indexed":false,"internalType":"string","name":"cp","type":"string"}],"name":"AddedCertifiedPartner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"cp","type":"bytes32"},{"indexed":false,"internalType":"address","name":"wallet","type":"address"},{"indexed":false,"internalType":"string","name":"cpName","type":"string"}],"name":"AddedWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"cp","type":"bytes32"},{"indexed":false,"internalType":"string[]","name":"users","type":"string[]"},{"indexed":false,"internalType":"string","name":"cpName","type":"string"}],"name":"AddedWhitelisted","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":"bytes32","name":"cp","type":"bytes32"},{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"RemovedWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"cp","type":"bytes32"},{"indexed":false,"internalType":"string[]","name":"users","type":"string[]"},{"indexed":false,"internalType":"string","name":"cpName","type":"string"}],"name":"RemovedWhitelisted","type":"event"},{"inputs":[{"internalType":"string","name":"cp","type":"string"},{"internalType":"address","name":"wallet","type":"address"}],"name":"addCPAndWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"cp","type":"string"}],"name":"addCertifiedPartner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"cp","type":"string"},{"internalType":"address[]","name":"wallets","type":"address[]"}],"name":"addWalletsToCP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"cp","type":"string"},{"internalType":"string[]","name":"users","type":"string[]"}],"name":"addWhitelisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"canCertifiedPartnerDistributeRent","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"cp","type":"string"}],"name":"changeCanDistributeRent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"dataProxy","type":"address"}],"name":"changeDataProxy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRoles","type":"address"}],"name":"changeRolesAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"getCPBytesFromWallet","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"user","type":"string"}],"name":"getUserBytes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"},{"internalType":"address","name":"cp","type":"address"}],"name":"isCPAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isCertifiedPartner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"isCertifiedPartnerName","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"cp","type":"bytes32"},{"internalType":"bytes32","name":"user","type":"bytes32"}],"name":"isUserWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"cp","type":"string"},{"internalType":"string","name":"user","type":"string"}],"name":"isUserWhitelistedByName","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"}],"name":"removeWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"cp","type":"string"},{"internalType":"string[]","name":"users","type":"string[]"}],"name":"removeWhitelisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b5060405162001bbd38038062001bbd833981016040819052610031916100ae565b600061003b6100aa565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b0319166001600160a01b03929092169190911790556100dc565b3390565b6000602082840312156100bf578081fd5b81516001600160a01b03811681146100d5578182fd5b9392505050565b611ad180620000ec6000396000f3fe608060405234801561001057600080fd5b506004361061012b5760003560e01c80638da5cb5b116100ad578063ec7f82f711610071578063ec7f82f714610269578063f02753161461027c578063f2fde38b1461028f578063f8736814146102a2578063fc22c0e9146102b55761012b565b80638da5cb5b146101fb5780639224e473146102105780639deb1d3a14610223578063bd3f263214610236578063d48fcde0146102565761012b565b806334c031b0116100f457806334c031b0146101a7578063376abb9b146101ba5780635ca3e77d146101cd5780635e1557a3146101e0578063715018a6146101f35761012b565b8062f86b771461013057806302f0633c1461014557806305f500531461015857806314a5ff671461016b578063338f454a14610194575b600080fd5b61014361013e3660046114f8565b6102c8565b005b6101436101533660046115d1565b610400565b6101436101663660046114f8565b61063c565b61017e6101793660046114f8565b6107c5565b60405161018b91906117e8565b60405180910390f35b61017e6101a23660046114d7565b6107ef565b61017e6101b536600461140c565b610813565b6101436101c83660046115d1565b61083e565b61017e6101db366004611681565b610a5c565b61017e6101ee366004611444565b610aa4565b610143610b40565b610203610bbf565b60405161018b9190611723565b61014361021e36600461140c565b610bce565b61014361023136600461140c565b610c25565b61024961024436600461140c565b610c7c565b60405161018b91906117f3565b61017e61026436600461140c565b610c97565b61014361027736600461147c565b610cc7565b61014361028a36600461152b565b610eee565b61014361029d36600461140c565b611001565b6101436102b0366004611570565b6110b7565b6102496102c33660046114f8565b6112f8565b6001546001600160a01b031663a49d9af26102e1611328565b6040518263ffffffff1660e01b81526004016102fd9190611723565b60206040518083038186803b15801561031557600080fd5b505afa158015610329573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034d91906114b7565b6103725760405162461bcd60e51b81526004016103699061180f565b60405180910390fd5b600061037d826112f8565b604080518082018252600180825260208083019182526000858152600290915283902091518254915115156101000261ff001991151560ff1990931692909217161790555190915081907fd8e0014932a5e33471ffe2f38a918ade0f91c1e9a0bb8e67e55851f4e7c12c68906103f49085906117fc565b60405180910390a25050565b81600061040c826112f8565b6001549091506001600160a01b03166357d0a9ed610428611328565b836040518363ffffffff1660e01b8152600401610446929190611737565b60206040518083038186803b15801561045e57600080fd5b505afa158015610472573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049691906114b7565b806104cc575080600360006104a9611328565b6001600160a01b03166001600160a01b0316815260200190815260200160002054145b8061057457506104da611328565b6001600160a01b0316600460009054906101000a90046001600160a01b03166001600160a01b031663607014116040518163ffffffff1660e01b815260040160206040518083038186803b15801561053157600080fd5b505afa158015610545573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105699190611428565b6001600160a01b0316145b6105905760405162461bcd60e51b8152600401610369906119cd565b600061059b856112f8565b905060005b84518110156105fa5760006105c78683815181106105ba57fe5b60200260200101516112f8565b600084815260026020908152604080832093835260019384019091529020805460ff1916821790559190910190506105a0565b50807f050d62dccfd8b3aba7abcaf9540e935dc71483b6c5b66b50c87ee182a21b7f5a858760405161062d929190611774565b60405180910390a25050505050565b806000610648826112f8565b6001549091506001600160a01b03166357d0a9ed610664611328565b836040518363ffffffff1660e01b8152600401610682929190611737565b60206040518083038186803b15801561069a57600080fd5b505afa1580156106ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d291906114b7565b8061077a57506106e0611328565b6001600160a01b0316600460009054906101000a90046001600160a01b03166001600160a01b031663607014116040518163ffffffff1660e01b815260040160206040518083038186803b15801561073757600080fd5b505afa15801561074b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076f9190611428565b6001600160a01b0316145b6107965760405162461bcd60e51b8152600401610369906118b2565b60006107a1846112f8565b6000908152600260205260409020805460ff19811660ff9091161517905550505050565b6000806107d1836112f8565b600090815260026020526040902054610100900460ff169392505050565b60009182526002602090815260408084209284526001909201905290205460ff1690565b6001600160a01b03166000908152600360209081526040808320548352600290915290205460ff1690565b81600061084a826112f8565b6001549091506001600160a01b03166357d0a9ed610866611328565b836040518363ffffffff1660e01b8152600401610884929190611737565b60206040518083038186803b15801561089c57600080fd5b505afa1580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d491906114b7565b8061090a575080600360006108e7611328565b6001600160a01b03166001600160a01b0316815260200190815260200160002054145b806109b25750610918611328565b6001600160a01b0316600460009054906101000a90046001600160a01b03166001600160a01b031663607014116040518163ffffffff1660e01b815260040160206040518083038186803b15801561096f57600080fd5b505afa158015610983573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a79190611428565b6001600160a01b0316145b6109ce5760405162461bcd60e51b8152600401610369906119cd565b60006109d9856112f8565b905060005b8451811015610a295760006109f88683815181106105ba57fe5b600084815260026020908152604080832093835260019384019091529020805460ff191690559190910190506109de565b50807f636c09c4028c49ab0593eb53399a90ee7f3bf67154817b91d6fc9a1c69b81bb5858760405161062d929190611774565b600080610a68846112f8565b6000818152600260205260408120919250600190910190610a88856112f8565b815260208101919091526040016000205460ff16949350505050565b6001546001600160a01b038281166000908152600360205260408082205490516357d0a9ed60e01b8152919392909216916357d0a9ed91610ae9918791600401611737565b60206040518083038186803b158015610b0157600080fd5b505afa158015610b15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3991906114b7565b9392505050565b610b48611328565b6000546001600160a01b03908116911614610b755760405162461bcd60e51b81526004016103699061194f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b610bd6611328565b6000546001600160a01b03908116911614610c035760405162461bcd60e51b81526004016103699061194f565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b610c2d611328565b6000546001600160a01b03908116911614610c5a5760405162461bcd60e51b81526004016103699061194f565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526003602052604090205490565b6001600160a01b031660009081526003602090815260408083205483526002909152902054610100900460ff1690565b6001546001600160a01b031663a49d9af2610ce0611328565b6040518263ffffffff1660e01b8152600401610cfc9190611723565b60206040518083038186803b158015610d1457600080fd5b505afa158015610d28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4c91906114b7565b80610df45750610d5a611328565b6001600160a01b0316600460009054906101000a90046001600160a01b03166001600160a01b031663607014116040518163ffffffff1660e01b815260040160206040518083038186803b158015610db157600080fd5b505afa158015610dc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de99190611428565b6001600160a01b0316145b610e105760405162461bcd60e51b815260040161036990611984565b60006003600083600081518110610e2357fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054905060005b8251811015610ee95760036000848381518110610e6a57fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060009055817ff8222a0a21124b98ebd8c32186e98f96e17b966f73d2becdcfd9e64185b71d0e848381518110610ec457fe5b6020026020010151604051610ed99190611723565b60405180910390a2600101610e51565b505050565b6001546001600160a01b031663a49d9af2610f07611328565b6040518263ffffffff1660e01b8152600401610f239190611723565b60206040518083038186803b158015610f3b57600080fd5b505afa158015610f4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7391906114b7565b610f8f5760405162461bcd60e51b81526004016103699061180f565b6000610f9a836112f8565b9050610fa5836102c8565b6001600160a01b038216600090815260036020526040908190208290555181907fa042d7210279a26a0d0f518fb8fa0e8b28bcc2a26efeb606bb16cd0587e41a8790610ff49085908790611750565b60405180910390a2505050565b611009611328565b6000546001600160a01b039081169116146110365760405162461bcd60e51b81526004016103699061194f565b6001600160a01b03811661105c5760405162461bcd60e51b81526004016103699061186c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b8160006110c3826112f8565b6001549091506001600160a01b03166357d0a9ed6110df611328565b836040518363ffffffff1660e01b81526004016110fd929190611737565b60206040518083038186803b15801561111557600080fd5b505afa158015611129573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114d91906114b7565b806111f5575061115b611328565b6001600160a01b0316600460009054906101000a90046001600160a01b03166001600160a01b031663607014116040518163ffffffff1660e01b815260040160206040518083038186803b1580156111b257600080fd5b505afa1580156111c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ea9190611428565b6001600160a01b0316145b6112115760405162461bcd60e51b8152600401610369906118b2565b600061121c856112f8565b600081815260026020526040902054909150610100900460ff166112525760405162461bcd60e51b815260040161036990611905565b60005b84518110156112f057816003600087848151811061126f57fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550817fa042d7210279a26a0d0f518fb8fa0e8b28bcc2a26efeb606bb16cd0587e41a878683815181106112c957fe5b6020026020010151886040516112e0929190611750565b60405180910390a2600101611255565b505050505050565b60008160405160200161130b91906117fc565b604051602081830303815290604052805190602001209050919050565b3390565b600082601f83011261133c578081fd5b813561134f61134a82611a63565b611a3c565b81815291506020808301908481018184028601820187101561137057600080fd5b60005b8481101561139857813561138681611a83565b84529282019290820190600101611373565b505050505092915050565b600082601f8301126113b3578081fd5b813567ffffffffffffffff8111156113c9578182fd5b6113dc601f8201601f1916602001611a3c565b91508082528360208285010111156113f357600080fd5b8060208401602084013760009082016020015292915050565b60006020828403121561141d578081fd5b8135610b3981611a83565b600060208284031215611439578081fd5b8151610b3981611a83565b60008060408385031215611456578081fd5b823561146181611a83565b9150602083013561147181611a83565b809150509250929050565b60006020828403121561148d578081fd5b813567ffffffffffffffff8111156114a3578182fd5b6114af8482850161132c565b949350505050565b6000602082840312156114c8578081fd5b81518015158114610b39578182fd5b600080604083850312156114e9578182fd5b50508035926020909101359150565b600060208284031215611509578081fd5b813567ffffffffffffffff81111561151f578182fd5b6114af848285016113a3565b6000806040838503121561153d578182fd5b823567ffffffffffffffff811115611553578283fd5b61155f858286016113a3565b925050602083013561147181611a83565b60008060408385031215611582578182fd5b823567ffffffffffffffff80821115611599578384fd5b6115a5868387016113a3565b935060208501359150808211156115ba578283fd5b506115c78582860161132c565b9150509250929050565b600080604083850312156115e3578182fd5b823567ffffffffffffffff808211156115fa578384fd5b611606868387016113a3565b935060209150818501358181111561161c578384fd5b85019050601f8101861361162e578283fd5b803561163c61134a82611a63565b81815283810190838501865b848110156116715761165f8b8884358901016113a3565b84529286019290860190600101611648565b5096999098509650505050505050565b60008060408385031215611693578182fd5b823567ffffffffffffffff808211156116aa578384fd5b6116b6868387016113a3565b935060208501359150808211156116cb578283fd5b506115c7858286016113a3565b60008151808452815b818110156116fd576020818501810151868301820152016116e1565b8181111561170e5782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03831681526040602082018190526000906114af908301846116d8565b60006040820160408352808551808352606085019150602092506060838202860101838801855b838110156117c957605f198884030185526117b78383516116d8565b9486019492509085019060010161179b565b5050858103848701526117dc81886116d8565b98975050505050505050565b901515815260200190565b90815260200190565b600060208252610b3960208301846116d8565b60208082526038908201527f436572746966696564506172746e6572733a20596f75206e65656420746f206860408201527f6176652073797374656d2061646d696e20726967687473210000000000000000606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526033908201527f436572746966696564506172746e6572733a20596f75206e65656420746f2062604082015272652061646d696e206f6620746869732043502160681b606082015260800190565b6020808252602a908201527f436572746966696564506172746e6572733a204e6f742061206365727469666960408201526932b2103830b93a3732b960b11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f436572746966696564506172746e6572733a20596f7520646f6e27742068617660408201526865207269676874732160b81b606082015260800190565b60208082526049908201527f436572746966696564506172746e6572733a20596f75206e65656420746f206860408201527f6176652043502061646d696e20726967687473206f7220796f75206861766520606082015268746f2062652043502160b81b608082015260a00190565b60405181810167ffffffffffffffff81118282101715611a5b57600080fd5b604052919050565b600067ffffffffffffffff821115611a79578081fd5b5060209081020190565b6001600160a01b0381168114611a9857600080fd5b5056fea2646970667358221220a76a39ff0738fe52adc3c2d3e0c55bd17b184e82dd36d69d9855c850b6c7d58664736f6c634300060c0033000000000000000000000000cddd81a19cfd74281c7c5f83415e195b44953ec4

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061012b5760003560e01c80638da5cb5b116100ad578063ec7f82f711610071578063ec7f82f714610269578063f02753161461027c578063f2fde38b1461028f578063f8736814146102a2578063fc22c0e9146102b55761012b565b80638da5cb5b146101fb5780639224e473146102105780639deb1d3a14610223578063bd3f263214610236578063d48fcde0146102565761012b565b806334c031b0116100f457806334c031b0146101a7578063376abb9b146101ba5780635ca3e77d146101cd5780635e1557a3146101e0578063715018a6146101f35761012b565b8062f86b771461013057806302f0633c1461014557806305f500531461015857806314a5ff671461016b578063338f454a14610194575b600080fd5b61014361013e3660046114f8565b6102c8565b005b6101436101533660046115d1565b610400565b6101436101663660046114f8565b61063c565b61017e6101793660046114f8565b6107c5565b60405161018b91906117e8565b60405180910390f35b61017e6101a23660046114d7565b6107ef565b61017e6101b536600461140c565b610813565b6101436101c83660046115d1565b61083e565b61017e6101db366004611681565b610a5c565b61017e6101ee366004611444565b610aa4565b610143610b40565b610203610bbf565b60405161018b9190611723565b61014361021e36600461140c565b610bce565b61014361023136600461140c565b610c25565b61024961024436600461140c565b610c7c565b60405161018b91906117f3565b61017e61026436600461140c565b610c97565b61014361027736600461147c565b610cc7565b61014361028a36600461152b565b610eee565b61014361029d36600461140c565b611001565b6101436102b0366004611570565b6110b7565b6102496102c33660046114f8565b6112f8565b6001546001600160a01b031663a49d9af26102e1611328565b6040518263ffffffff1660e01b81526004016102fd9190611723565b60206040518083038186803b15801561031557600080fd5b505afa158015610329573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034d91906114b7565b6103725760405162461bcd60e51b81526004016103699061180f565b60405180910390fd5b600061037d826112f8565b604080518082018252600180825260208083019182526000858152600290915283902091518254915115156101000261ff001991151560ff1990931692909217161790555190915081907fd8e0014932a5e33471ffe2f38a918ade0f91c1e9a0bb8e67e55851f4e7c12c68906103f49085906117fc565b60405180910390a25050565b81600061040c826112f8565b6001549091506001600160a01b03166357d0a9ed610428611328565b836040518363ffffffff1660e01b8152600401610446929190611737565b60206040518083038186803b15801561045e57600080fd5b505afa158015610472573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049691906114b7565b806104cc575080600360006104a9611328565b6001600160a01b03166001600160a01b0316815260200190815260200160002054145b8061057457506104da611328565b6001600160a01b0316600460009054906101000a90046001600160a01b03166001600160a01b031663607014116040518163ffffffff1660e01b815260040160206040518083038186803b15801561053157600080fd5b505afa158015610545573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105699190611428565b6001600160a01b0316145b6105905760405162461bcd60e51b8152600401610369906119cd565b600061059b856112f8565b905060005b84518110156105fa5760006105c78683815181106105ba57fe5b60200260200101516112f8565b600084815260026020908152604080832093835260019384019091529020805460ff1916821790559190910190506105a0565b50807f050d62dccfd8b3aba7abcaf9540e935dc71483b6c5b66b50c87ee182a21b7f5a858760405161062d929190611774565b60405180910390a25050505050565b806000610648826112f8565b6001549091506001600160a01b03166357d0a9ed610664611328565b836040518363ffffffff1660e01b8152600401610682929190611737565b60206040518083038186803b15801561069a57600080fd5b505afa1580156106ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d291906114b7565b8061077a57506106e0611328565b6001600160a01b0316600460009054906101000a90046001600160a01b03166001600160a01b031663607014116040518163ffffffff1660e01b815260040160206040518083038186803b15801561073757600080fd5b505afa15801561074b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076f9190611428565b6001600160a01b0316145b6107965760405162461bcd60e51b8152600401610369906118b2565b60006107a1846112f8565b6000908152600260205260409020805460ff19811660ff9091161517905550505050565b6000806107d1836112f8565b600090815260026020526040902054610100900460ff169392505050565b60009182526002602090815260408084209284526001909201905290205460ff1690565b6001600160a01b03166000908152600360209081526040808320548352600290915290205460ff1690565b81600061084a826112f8565b6001549091506001600160a01b03166357d0a9ed610866611328565b836040518363ffffffff1660e01b8152600401610884929190611737565b60206040518083038186803b15801561089c57600080fd5b505afa1580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d491906114b7565b8061090a575080600360006108e7611328565b6001600160a01b03166001600160a01b0316815260200190815260200160002054145b806109b25750610918611328565b6001600160a01b0316600460009054906101000a90046001600160a01b03166001600160a01b031663607014116040518163ffffffff1660e01b815260040160206040518083038186803b15801561096f57600080fd5b505afa158015610983573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a79190611428565b6001600160a01b0316145b6109ce5760405162461bcd60e51b8152600401610369906119cd565b60006109d9856112f8565b905060005b8451811015610a295760006109f88683815181106105ba57fe5b600084815260026020908152604080832093835260019384019091529020805460ff191690559190910190506109de565b50807f636c09c4028c49ab0593eb53399a90ee7f3bf67154817b91d6fc9a1c69b81bb5858760405161062d929190611774565b600080610a68846112f8565b6000818152600260205260408120919250600190910190610a88856112f8565b815260208101919091526040016000205460ff16949350505050565b6001546001600160a01b038281166000908152600360205260408082205490516357d0a9ed60e01b8152919392909216916357d0a9ed91610ae9918791600401611737565b60206040518083038186803b158015610b0157600080fd5b505afa158015610b15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3991906114b7565b9392505050565b610b48611328565b6000546001600160a01b03908116911614610b755760405162461bcd60e51b81526004016103699061194f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b610bd6611328565b6000546001600160a01b03908116911614610c035760405162461bcd60e51b81526004016103699061194f565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b610c2d611328565b6000546001600160a01b03908116911614610c5a5760405162461bcd60e51b81526004016103699061194f565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526003602052604090205490565b6001600160a01b031660009081526003602090815260408083205483526002909152902054610100900460ff1690565b6001546001600160a01b031663a49d9af2610ce0611328565b6040518263ffffffff1660e01b8152600401610cfc9190611723565b60206040518083038186803b158015610d1457600080fd5b505afa158015610d28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4c91906114b7565b80610df45750610d5a611328565b6001600160a01b0316600460009054906101000a90046001600160a01b03166001600160a01b031663607014116040518163ffffffff1660e01b815260040160206040518083038186803b158015610db157600080fd5b505afa158015610dc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de99190611428565b6001600160a01b0316145b610e105760405162461bcd60e51b815260040161036990611984565b60006003600083600081518110610e2357fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054905060005b8251811015610ee95760036000848381518110610e6a57fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060009055817ff8222a0a21124b98ebd8c32186e98f96e17b966f73d2becdcfd9e64185b71d0e848381518110610ec457fe5b6020026020010151604051610ed99190611723565b60405180910390a2600101610e51565b505050565b6001546001600160a01b031663a49d9af2610f07611328565b6040518263ffffffff1660e01b8152600401610f239190611723565b60206040518083038186803b158015610f3b57600080fd5b505afa158015610f4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7391906114b7565b610f8f5760405162461bcd60e51b81526004016103699061180f565b6000610f9a836112f8565b9050610fa5836102c8565b6001600160a01b038216600090815260036020526040908190208290555181907fa042d7210279a26a0d0f518fb8fa0e8b28bcc2a26efeb606bb16cd0587e41a8790610ff49085908790611750565b60405180910390a2505050565b611009611328565b6000546001600160a01b039081169116146110365760405162461bcd60e51b81526004016103699061194f565b6001600160a01b03811661105c5760405162461bcd60e51b81526004016103699061186c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b8160006110c3826112f8565b6001549091506001600160a01b03166357d0a9ed6110df611328565b836040518363ffffffff1660e01b81526004016110fd929190611737565b60206040518083038186803b15801561111557600080fd5b505afa158015611129573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114d91906114b7565b806111f5575061115b611328565b6001600160a01b0316600460009054906101000a90046001600160a01b03166001600160a01b031663607014116040518163ffffffff1660e01b815260040160206040518083038186803b1580156111b257600080fd5b505afa1580156111c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ea9190611428565b6001600160a01b0316145b6112115760405162461bcd60e51b8152600401610369906118b2565b600061121c856112f8565b600081815260026020526040902054909150610100900460ff166112525760405162461bcd60e51b815260040161036990611905565b60005b84518110156112f057816003600087848151811061126f57fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550817fa042d7210279a26a0d0f518fb8fa0e8b28bcc2a26efeb606bb16cd0587e41a878683815181106112c957fe5b6020026020010151886040516112e0929190611750565b60405180910390a2600101611255565b505050505050565b60008160405160200161130b91906117fc565b604051602081830303815290604052805190602001209050919050565b3390565b600082601f83011261133c578081fd5b813561134f61134a82611a63565b611a3c565b81815291506020808301908481018184028601820187101561137057600080fd5b60005b8481101561139857813561138681611a83565b84529282019290820190600101611373565b505050505092915050565b600082601f8301126113b3578081fd5b813567ffffffffffffffff8111156113c9578182fd5b6113dc601f8201601f1916602001611a3c565b91508082528360208285010111156113f357600080fd5b8060208401602084013760009082016020015292915050565b60006020828403121561141d578081fd5b8135610b3981611a83565b600060208284031215611439578081fd5b8151610b3981611a83565b60008060408385031215611456578081fd5b823561146181611a83565b9150602083013561147181611a83565b809150509250929050565b60006020828403121561148d578081fd5b813567ffffffffffffffff8111156114a3578182fd5b6114af8482850161132c565b949350505050565b6000602082840312156114c8578081fd5b81518015158114610b39578182fd5b600080604083850312156114e9578182fd5b50508035926020909101359150565b600060208284031215611509578081fd5b813567ffffffffffffffff81111561151f578182fd5b6114af848285016113a3565b6000806040838503121561153d578182fd5b823567ffffffffffffffff811115611553578283fd5b61155f858286016113a3565b925050602083013561147181611a83565b60008060408385031215611582578182fd5b823567ffffffffffffffff80821115611599578384fd5b6115a5868387016113a3565b935060208501359150808211156115ba578283fd5b506115c78582860161132c565b9150509250929050565b600080604083850312156115e3578182fd5b823567ffffffffffffffff808211156115fa578384fd5b611606868387016113a3565b935060209150818501358181111561161c578384fd5b85019050601f8101861361162e578283fd5b803561163c61134a82611a63565b81815283810190838501865b848110156116715761165f8b8884358901016113a3565b84529286019290860190600101611648565b5096999098509650505050505050565b60008060408385031215611693578182fd5b823567ffffffffffffffff808211156116aa578384fd5b6116b6868387016113a3565b935060208501359150808211156116cb578283fd5b506115c7858286016113a3565b60008151808452815b818110156116fd576020818501810151868301820152016116e1565b8181111561170e5782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03831681526040602082018190526000906114af908301846116d8565b60006040820160408352808551808352606085019150602092506060838202860101838801855b838110156117c957605f198884030185526117b78383516116d8565b9486019492509085019060010161179b565b5050858103848701526117dc81886116d8565b98975050505050505050565b901515815260200190565b90815260200190565b600060208252610b3960208301846116d8565b60208082526038908201527f436572746966696564506172746e6572733a20596f75206e65656420746f206860408201527f6176652073797374656d2061646d696e20726967687473210000000000000000606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526033908201527f436572746966696564506172746e6572733a20596f75206e65656420746f2062604082015272652061646d696e206f6620746869732043502160681b606082015260800190565b6020808252602a908201527f436572746966696564506172746e6572733a204e6f742061206365727469666960408201526932b2103830b93a3732b960b11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f436572746966696564506172746e6572733a20596f7520646f6e27742068617660408201526865207269676874732160b81b606082015260800190565b60208082526049908201527f436572746966696564506172746e6572733a20596f75206e65656420746f206860408201527f6176652043502061646d696e20726967687473206f7220796f75206861766520606082015268746f2062652043502160b81b608082015260a00190565b60405181810167ffffffffffffffff81118282101715611a5b57600080fd5b604052919050565b600067ffffffffffffffff821115611a79578081fd5b5060209081020190565b6001600160a01b0381168114611a9857600080fd5b5056fea2646970667358221220a76a39ff0738fe52adc3c2d3e0c55bd17b184e82dd36d69d9855c850b6c7d58664736f6c634300060c0033

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

000000000000000000000000cddd81a19cfd74281c7c5f83415e195b44953ec4

-----Decoded View---------------
Arg [0] : roles (address): 0xcDdd81a19cfd74281c7C5f83415e195B44953EC4

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


Deployed Bytecode Sourcemap

472:8297:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2725:266;;;;;;:::i;:::-;;:::i;:::-;;4914:388;;;;;;:::i;:::-;;:::i;4480:227::-;;;;;;:::i;:::-;;:::i;6053:184::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8056:150;;;;;;:::i;:::-;;:::i;6814:169::-;;;;;;:::i;:::-;;:::i;5466:394::-;;;;;;:::i;:::-;;:::i;7191:229::-;;;;;;:::i;:::-;;:::i;7652:148::-;;;;;;:::i;:::-;;:::i;1684:145:2:-;;;:::i;1061:77::-;;;:::i;:::-;;;;;;;:::i;2399:123:0:-;;;;;;:::i;:::-;;:::i;2528:100::-;;;;;;:::i;:::-;;:::i;8641:126::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6430:141::-;;;;;;:::i;:::-;;:::i;4034:321::-;;;;;;:::i;:::-;;:::i;3690:258::-;;;;;;:::i;:::-;;:::i;1978:240:2:-;;;;;;:::i;:::-;;:::i;3140:412:0:-;;;;;;:::i;:::-;;:::i;8345:123::-;;;;;;:::i;:::-;;:::i;2725:266::-;1264:6;;-1:-1:-1;;;;;1264:6:0;:27;1292:12;:10;:12::i;:::-;1264:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1256:110;;;;-1:-1:-1;;;1256:110:0;;;;;;;:::i;:::-;;;;;;;;;2805:15:::1;2823:16;2836:2;2823:12;:16::i;:::-;2878:57;::::0;;;;::::1;::::0;;2916:4:::1;2878:57:::0;;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;2849:26:0;;;:17:::1;:26:::0;;;;;;:86;;;;;;::::1;;;;-1:-1:-1::0;;2849:86:0;::::1;;-1:-1:-1::0;;2849:86:0;;::::1;::::0;;;::::1;;;::::0;;2950:34;2805;;-1:-1:-1;2805:34:0;;2950::::1;::::0;::::1;::::0;2981:2;;2950:34:::1;:::i;:::-;;;;;;;;1376:1;2725:266:::0;:::o;4914:388::-;5002:2;1985:15;2003:16;2016:2;2003:12;:16::i;:::-;2037:6;;1985:34;;-1:-1:-1;;;;;;2037:6:0;:18;2056:12;:10;:12::i;:::-;2070:7;2037:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:88;;;;2118:7;2082:18;:32;2101:12;:10;:12::i;:::-;-1:-1:-1;;;;;2082:32:0;-1:-1:-1;;;;;2082:32:0;;;;;;;;;;;;;:43;2037:88;:163;;;;2188:12;:10;:12::i;:::-;-1:-1:-1;;;;;2129:71:0;2154:10;;;;;;;;;-1:-1:-1;;;;;2154:10:0;-1:-1:-1;;;;;2129:53:0;;:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2129:71:0;;2037:163;2029:249;;;;-1:-1:-1;;;2029:249:0;;;;;;;:::i;:::-;5016:15:::1;5034:16;5047:2;5034:12;:16::i;:::-;5016:34;;5065:9;5060:185;5084:5;:12;5080:1;:16;5060:185;;;5117:17;5137:22;5150:5;5156:1;5150:8;;;;;;;;;;;;;;5137:12;:22::i;:::-;5173:26;::::0;;;:17:::1;:26;::::0;;;;;;;:54;;;5230:4:::1;5173:43:::0;;::::1;:54:::0;;;;;:61;;-1:-1:-1;;5173:61:0::1;::::0;::::1;::::0;;5098:3;;;::::1;::::0;-1:-1:-1;5060:185:0::1;;;;5276:7;5259:36;5285:5;5292:2;5259:36;;;;;;;:::i;:::-;;;;;;;;2288:1;4914:388:::0;;;;:::o;4480:227::-;4550:2;1684:15;1702:16;1715:2;1702:12;:16::i;:::-;1736:6;;1684:34;;-1:-1:-1;;;;;;1736:6:0;:18;1755:12;:10;:12::i;:::-;1769:7;1736:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:116;;;;1840:12;:10;:12::i;:::-;-1:-1:-1;;;;;1781:71:0;1806:10;;;;;;;;;-1:-1:-1;;;;;1806:10:0;-1:-1:-1;;;;;1781:53:0;;:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1781:71:0;;1736:116;1728:180;;;;-1:-1:-1;;;1728:180:0;;;;;;;:::i;:::-;4564:15:::1;4582:16;4595:2;4582:12;:16::i;:::-;4656:26;::::0;;;:17:::1;:26;::::0;;;;:44;;-1:-1:-1;;4608:92:0;::::1;4656:44;::::0;;::::1;4655:45;4608:92;::::0;;-1:-1:-1;;;;4480:227:0:o;6053:184::-;6126:4;6142:17;6162:18;6175:4;6162:12;:18::i;:::-;6197:28;;;;:17;:28;;;;;:33;;;;;;;6053:184;-1:-1:-1;;;6053:184:0:o;8056:150::-;8132:4;8155:21;;;:17;:21;;;;;;;;:44;;;:38;;;;:44;;;;;;;;8056:150::o;6814:169::-;-1:-1:-1;;;;;6933:24:0;6892:4;6933:24;;;:18;:24;;;;;;;;;6915:43;;:17;:43;;;;;:61;;;;6814:169::o;5466:394::-;5557:2;1985:15;2003:16;2016:2;2003:12;:16::i;:::-;2037:6;;1985:34;;-1:-1:-1;;;;;;2037:6:0;:18;2056:12;:10;:12::i;:::-;2070:7;2037:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:88;;;;2118:7;2082:18;:32;2101:12;:10;:12::i;:::-;-1:-1:-1;;;;;2082:32:0;-1:-1:-1;;;;;2082:32:0;;;;;;;;;;;;;:43;2037:88;:163;;;;2188:12;:10;:12::i;:::-;-1:-1:-1;;;;;2129:71:0;2154:10;;;;;;;;;-1:-1:-1;;;;;2154:10:0;-1:-1:-1;;;;;2129:53:0;;:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2129:71:0;;2037:163;2029:249;;;;-1:-1:-1;;;2029:249:0;;;;;;;:::i;:::-;5571:15:::1;5589:16;5602:2;5589:12;:16::i;:::-;5571:34;;5620:9;5615:186;5639:5;:12;5635:1;:16;5615:186;;;5672:17;5692:22;5705:5;5711:1;5705:8;;;;;;;5692:22;5785:5;5728:26:::0;;;:17:::1;:26;::::0;;;;;;;:54;;;:43:::1;::::0;;::::1;:54:::0;;;;;:62;;-1:-1:-1;;5728:62:0::1;::::0;;5653:3;;;::::1;::::0;-1:-1:-1;5615:186:0::1;;;;5834:7;5815:38;5843:5;5850:2;5815:38;;;;;;;:::i;7191:229::-:0;7283:4;7299:15;7317:16;7330:2;7317:12;:16::i;:::-;7350:26;;;;:17;:26;;;;;7299:34;;-1:-1:-1;7350:43:0;;;;;7394:18;7407:4;7394:12;:18::i;:::-;7350:63;;;;;;;;;;;-1:-1:-1;7350:63:0;;;;;7191:229;-1:-1:-1;;;;7191:229:0:o;7652:148::-;7744:6;;-1:-1:-1;;;;;7770:22:0;;;7721:4;7770:22;;;:18;:22;;;;;;;7744:49;;-1:-1:-1;;;7744:49:0;;7721:4;;7744:6;;;;;:18;;:49;;7763:5;;7744:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7737:56;7652:148;-1:-1:-1;;;7652:148:0:o;1684:145:2:-;1275:12;:10;:12::i;:::-;1265:6;;-1:-1:-1;;;;;1265:6:2;;;:22;;;1257:67;;;;-1:-1:-1;;;1257:67:2;;;;;;;:::i;:::-;1790:1:::1;1774:6:::0;;1753:40:::1;::::0;-1:-1:-1;;;;;1774:6:2;;::::1;::::0;1753:40:::1;::::0;1790:1;;1753:40:::1;1820:1;1803:19:::0;;-1:-1:-1;;;;;;1803:19:2::1;::::0;;1684:145::o;1061:77::-;1099:7;1125:6;-1:-1:-1;;;;;1125:6:2;1061:77;:::o;2399:123:0:-;1275:12:2;:10;:12::i;:::-;1265:6;;-1:-1:-1;;;;;1265:6:2;;;:22;;;1257:67;;;;-1:-1:-1;;;1257:67:2;;;;;;;:::i;:::-;2472:6:0::1;:43:::0;;-1:-1:-1;;;;;;2472:43:0::1;-1:-1:-1::0;;;;;2472:43:0;;;::::1;::::0;;;::::1;::::0;;2399:123::o;2528:100::-;1275:12:2;:10;:12::i;:::-;1265:6;;-1:-1:-1;;;;;1265:6:2;;;:22;;;1257:67;;;;-1:-1:-1;;;1257:67:2;;;;;;;:::i;:::-;2599:10:0::1;:22:::0;;-1:-1:-1;;;;;;2599:22:0::1;-1:-1:-1::0;;;;;2599:22:0;;;::::1;::::0;;;::::1;::::0;;2528:100::o;8641:126::-;-1:-1:-1;;;;;8734:26:0;8708:7;8734:26;;;:18;:26;;;;;;;8641:126::o;6430:141::-;-1:-1:-1;;;;;6534:24:0;6493:4;6534:24;;;:18;:24;;;;;;;;;6516:43;;:17;:43;;;;;:48;;;;;;;6430:141::o;4034:321::-;1449:6;;-1:-1:-1;;;;;1449:6:0;:27;1477:12;:10;:12::i;:::-;1449:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:116;;;;1553:12;:10;:12::i;:::-;-1:-1:-1;;;;;1494:71:0;1519:10;;;;;;;;;-1:-1:-1;;;;;1519:10:0;-1:-1:-1;;;;;1494:53:0;;:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1494:71:0;;1449:116;1441:170;;;;-1:-1:-1;;;1441:170:0;;;;;;;:::i;:::-;4131:15:::1;4149:18;:30;4168:7;4176:1;4168:10;;;;;;;;;;;;;;-1:-1:-1::0;;;;;4149:30:0::1;-1:-1:-1::0;;;;;4149:30:0::1;;;;;;;;;;;;;4131:48;;4194:9;4189:160;4213:7;:14;4209:1;:18;4189:160;;;4255:18;:30;4274:7;4282:1;4274:10;;;;;;;;;;;;;;-1:-1:-1::0;;;;;4255:30:0::1;-1:-1:-1::0;;;;;4255:30:0::1;;;;;;;;;;;;4248:37;;;4318:7;4304:34;4327:7;4335:1;4327:10;;;;;;;;;;;;;;4304:34;;;;;;:::i;:::-;;;;;;;;4229:3;;4189:160;;;;1621:1;4034:321:::0;:::o;3690:258::-;1264:6;;-1:-1:-1;;;;;1264:6:0;:27;1292:12;:10;:12::i;:::-;1264:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1256:110;;;;-1:-1:-1;;;1256:110:0;;;;;;;:::i;:::-;3781:15:::1;3799:16;3812:2;3799:12;:16::i;:::-;3781:34;;3825:23;3845:2;3825:19;:23::i;:::-;-1:-1:-1::0;;;;;3858:26:0;::::1;;::::0;;;:18:::1;:26;::::0;;;;;;:36;;;3909:32;3887:7;;3909:32:::1;::::0;::::1;::::0;3877:6;;3938:2;;3909:32:::1;:::i;:::-;;;;;;;;1376:1;3690:258:::0;;:::o;1978:240:2:-;1275:12;:10;:12::i;:::-;1265:6;;-1:-1:-1;;;;;1265:6:2;;;:22;;;1257:67;;;;-1:-1:-1;;;1257:67:2;;;;;;;:::i;:::-;-1:-1:-1;;;;;2066:22:2;::::1;2058:73;;;;-1:-1:-1::0;;;2058:73:2::1;;;;;;;:::i;:::-;2167:6;::::0;;2146:38:::1;::::0;-1:-1:-1;;;;;2146:38:2;;::::1;::::0;2167:6;::::1;::::0;2146:38:::1;::::0;::::1;2194:6;:17:::0;;-1:-1:-1;;;;;;2194:17:2::1;-1:-1:-1::0;;;;;2194:17:2;;;::::1;::::0;;;::::1;::::0;;1978:240::o;3140:412:0:-;3227:2;1684:15;1702:16;1715:2;1702:12;:16::i;:::-;1736:6;;1684:34;;-1:-1:-1;;;;;;1736:6:0;:18;1755:12;:10;:12::i;:::-;1769:7;1736:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:116;;;;1840:12;:10;:12::i;:::-;-1:-1:-1;;;;;1781:71:0;1806:10;;;;;;;;;-1:-1:-1;;;;;1806:10:0;-1:-1:-1;;;;;1781:53:0;;:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1781:71:0;;1736:116;1728:180;;;;-1:-1:-1;;;1728:180:0;;;;;;;:::i;:::-;3241:15:::1;3259:16;3272:2;3259:12;:16::i;:::-;3293:26;::::0;;;:17:::1;:26;::::0;;;;:31;:26;;-1:-1:-1;3293:31:0::1;::::0;::::1;;;3285:86;;;;-1:-1:-1::0;;;3285:86:0::1;;;;;;;:::i;:::-;3386:9;3381:165;3405:7;:14;3401:1;:18;3381:165;;;3473:7;3440:18;:30;3459:7;3467:1;3459:10;;;;;;;;;;;;;;-1:-1:-1::0;;;;;3440:30:0::1;-1:-1:-1::0;;;;;3440:30:0::1;;;;;;;;;;;;:40;;;;3511:7;3499:36;3520:7;3528:1;3520:10;;;;;;;;;;;;;;3532:2;3499:36;;;;;;;:::i;:::-;;;;;;;;3421:3;;3381:165;;;;1918:1;3140:412:::0;;;;:::o;8345:123::-;8408:7;8455:4;8444:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;8434:27;;;;;;8427:34;;8345:123;;;:::o;590:104:1:-;677:10;590:104;:::o;301:707:-1:-;;418:3;411:4;403:6;399:17;395:27;385:2;;-1:-1;;426:12;385:2;473:6;460:20;495:80;510:64;567:6;510:64;:::i;:::-;495:80;:::i;:::-;603:21;;;486:89;-1:-1;647:4;660:14;;;;635:17;;;749;;;740:27;;;;737:36;-1:-1;734:2;;;786:1;;776:12;734:2;811:1;796:206;821:6;818:1;815:13;796:206;;;85:6;72:20;97:33;124:5;97:33;:::i;:::-;889:50;;953:14;;;;981;;;;843:1;836:9;796:206;;;800:14;;;;;378:630;;;;:::o;2022:442::-;;2124:3;2117:4;2109:6;2105:17;2101:27;2091:2;;-1:-1;;2132:12;2091:2;2179:6;2166:20;19139:18;19131:6;19128:30;19125:2;;;-1:-1;;19161:12;19125:2;2201:65;19234:9;19215:17;;-1:-1;;19211:33;19302:4;19292:15;2201:65;:::i;:::-;2192:74;;2286:6;2279:5;2272:21;2390:3;19302:4;2381:6;2314;2372:16;;2369:25;2366:2;;;2407:1;;2397:12;2366:2;21289:6;19302:4;2314:6;2310:17;19302:4;2348:5;2344:16;21266:30;21345:1;21327:16;;;19302:4;21327:16;21320:27;2348:5;2084:380;-1:-1;;2084:380::o;2472:241::-;;2576:2;2564:9;2555:7;2551:23;2547:32;2544:2;;;-1:-1;;2582:12;2544:2;85:6;72:20;97:33;124:5;97:33;:::i;2720:263::-;;2835:2;2823:9;2814:7;2810:23;2806:32;2803:2;;;-1:-1;;2841:12;2803:2;226:6;220:13;238:33;265:5;238:33;:::i;2990:366::-;;;3111:2;3099:9;3090:7;3086:23;3082:32;3079:2;;;-1:-1;;3117:12;3079:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3169:63;-1:-1;3269:2;3308:22;;72:20;97:33;72:20;97:33;:::i;:::-;3277:63;;;;3073:283;;;;;:::o;3363:377::-;;3492:2;3480:9;3471:7;3467:23;3463:32;3460:2;;;-1:-1;;3498:12;3460:2;3556:17;3543:31;3594:18;3586:6;3583:30;3580:2;;;-1:-1;;3616:12;3580:2;3646:78;3716:7;3707:6;3696:9;3692:22;3646:78;:::i;:::-;3636:88;3454:286;-1:-1;;;;3454:286::o;3747:257::-;;3859:2;3847:9;3838:7;3834:23;3830:32;3827:2;;;-1:-1;;3865:12;3827:2;1830:6;1824:13;21948:5;20595:13;20588:21;21926:5;21923:32;21913:2;;-1:-1;;21959:12;4011:366;;;4132:2;4120:9;4111:7;4107:23;4103:32;4100:2;;;-1:-1;;4138:12;4100:2;-1:-1;;1951:20;;;4290:2;4329:22;;;1951:20;;-1:-1;4094:283::o;4384:347::-;;4498:2;4486:9;4477:7;4473:23;4469:32;4466:2;;;-1:-1;;4504:12;4466:2;4562:17;4549:31;4600:18;4592:6;4589:30;4586:2;;;-1:-1;;4622:12;4586:2;4652:63;4707:7;4698:6;4687:9;4683:22;4652:63;:::i;4738:472::-;;;4869:2;4857:9;4848:7;4844:23;4840:32;4837:2;;;-1:-1;;4875:12;4837:2;4933:17;4920:31;4971:18;4963:6;4960:30;4957:2;;;-1:-1;;4993:12;4957:2;5023:63;5078:7;5069:6;5058:9;5054:22;5023:63;:::i;:::-;5013:73;;;5123:2;5166:9;5162:22;72:20;97:33;124:5;97:33;:::i;5217:608::-;;;5373:2;5361:9;5352:7;5348:23;5344:32;5341:2;;;-1:-1;;5379:12;5341:2;5437:17;5424:31;5475:18;;5467:6;5464:30;5461:2;;;-1:-1;;5497:12;5461:2;5527:63;5582:7;5573:6;5562:9;5558:22;5527:63;:::i;:::-;5517:73;;5655:2;5644:9;5640:18;5627:32;5613:46;;5475:18;5671:6;5668:30;5665:2;;;-1:-1;;5701:12;5665:2;;5731:78;5801:7;5792:6;5781:9;5777:22;5731:78;:::i;:::-;5721:88;;;5335:490;;;;;:::o;5832:628::-;;;5998:2;5986:9;5977:7;5973:23;5969:32;5966:2;;;-1:-1;;6004:12;5966:2;6062:17;6049:31;6100:18;;6092:6;6089:30;6086:2;;;-1:-1;;6122:12;6086:2;6152:63;6207:7;6198:6;6187:9;6183:22;6152:63;:::i;:::-;6142:73;;6280:2;;;;6269:9;6265:18;6252:32;6100:18;6296:6;6293:30;6290:2;;;-1:-1;;6326:12;6290:2;6412:22;;;-1:-1;1153:4;1141:17;;1137:27;-1:-1;1127:2;;-1:-1;;1168:12;1127:2;1215:6;1202:20;1237:90;1252:74;1319:6;1252:74;:::i;1237:90::-;1355:21;;;1412:14;;;;1387:17;;;-1:-1;1492:243;1517:6;1514:1;1511:13;1492:243;;;1624:47;1667:3;6280:2;1600:3;1587:17;1391:6;1575:30;;1624:47;:::i;:::-;1612:60;;1686:14;;;;1714;;;;1539:1;1532:9;1492:243;;;-1:-1;5960:500;;6346:98;;-1:-1;5960:500;-1:-1;;;;;;;5960:500::o;6467:578::-;;;6608:2;6596:9;6587:7;6583:23;6579:32;6576:2;;;-1:-1;;6614:12;6576:2;6672:17;6659:31;6710:18;;6702:6;6699:30;6696:2;;;-1:-1;;6732:12;6696:2;6762:63;6817:7;6808:6;6797:9;6793:22;6762:63;:::i;:::-;6752:73;;6890:2;6879:9;6875:18;6862:32;6848:46;;6710:18;6906:6;6903:30;6900:2;;;-1:-1;;6936:12;6900:2;;6966:63;7021:7;7012:6;7001:9;6997:22;6966:63;:::i;8719:327::-;;8854:5;19605:12;20041:6;20036:3;20029:19;-1:-1;21434:101;21448:6;21445:1;21442:13;21434:101;;;20078:4;21515:11;;;;;21509:18;21496:11;;;;;21489:39;21463:10;21434:101;;;21550:6;21547:1;21544:13;21541:2;;;-1:-1;20078:4;21606:6;20073:3;21597:16;;21590:27;21541:2;-1:-1;19234:9;21706:14;-1:-1;;21702:28;9002:39;;;;20078:4;9002:39;;8801:245;-1:-1;;8801:245::o;12162:222::-;-1:-1;;;;;20762:54;;;;7474:37;;12289:2;12274:18;;12260:124::o;12636:349::-;-1:-1;;;;;20762:54;;;;7333:58;;12971:2;12956:18;;8670:37;12799:2;12784:18;;12770:215::o;13332:421::-;-1:-1;;;;;20762:54;;7474:37;;13507:2;13625;13610:18;;13603:48;;;13332:421;;13665:78;;13492:18;;13729:6;13665:78;:::i;13760:609::-;;14005:2;13994:9;13990:18;14005:2;14026:17;14019:47;14080:128;7775:5;19605:12;20041:6;20036:3;20029:19;20069:14;13994:9;20069:14;7787:103;;20078:4;;;20069:14;20078:4;7947:6;7943:17;13994:9;7934:27;;20078:4;8042:5;19449:14;-1:-1;8081:360;8106:6;8103:1;8100:13;8081:360;;;8158:20;;13994:9;8162:4;8158:20;;8153:3;8146:33;7174:66;7236:3;8213:6;8207:13;7174:66;:::i;:::-;8420:14;;;;8227:92;-1:-1;19874:14;;;;8128:1;8121:9;8081:360;;;8085:14;;14256:9;14250:4;14246:20;20078:4;14230:9;14226:18;14219:48;14281:78;14354:4;14345:6;14281:78;:::i;:::-;14273:86;13976:393;-1:-1;;;;;;;;13976:393::o;14376:210::-;20595:13;;20588:21;8553:34;;14497:2;14482:18;;14468:118::o;14593:222::-;8670:37;;;14720:2;14705:18;;14691:124::o;14822:310::-;;14969:2;14990:17;14983:47;15044:78;14969:2;14958:9;14954:18;15108:6;15044:78;:::i;15139:416::-;15339:2;15353:47;;;9632:2;15324:18;;;20029:19;9668:34;20069:14;;;9648:55;9737:26;9723:12;;;9716:48;9783:12;;;15310:245::o;15562:416::-;15762:2;15776:47;;;10034:2;15747:18;;;20029:19;10070:34;20069:14;;;10050:55;-1:-1;;;10125:12;;;10118:30;10167:12;;;15733:245::o;15985:416::-;16185:2;16199:47;;;10418:2;16170:18;;;20029:19;10454:34;20069:14;;;10434:55;-1:-1;;;10509:12;;;10502:43;10564:12;;;16156:245::o;16408:416::-;16608:2;16622:47;;;10815:2;16593:18;;;20029:19;10851:34;20069:14;;;10831:55;-1:-1;;;10906:12;;;10899:34;10952:12;;;16579:245::o;16831:416::-;17031:2;17045:47;;;17016:18;;;20029:19;11239:34;20069:14;;;11219:55;11293:12;;;17002:245::o;17254:416::-;17454:2;17468:47;;;11544:2;17439:18;;;20029:19;11580:34;20069:14;;;11560:55;-1:-1;;;11635:12;;;11628:33;11680:12;;;17425:245::o;17677:416::-;17877:2;17891:47;;;11931:2;17862:18;;;20029:19;11967:34;20069:14;;;11947:55;12036:34;12022:12;;;12015:56;-1:-1;;;12091:12;;;12084:33;12136:12;;;17848:245::o;18100:256::-;18162:2;18156:9;18188:17;;;18263:18;18248:34;;18284:22;;;18245:62;18242:2;;;18320:1;;18310:12;18242:2;18162;18329:22;18140:216;;-1:-1;18140:216::o;18363:304::-;;18522:18;18514:6;18511:30;18508:2;;;-1:-1;;18544:12;18508:2;-1:-1;18589:4;18577:17;;;18642:15;;18445:222::o;21743:117::-;-1:-1;;;;;20762:54;;21802:35;;21792:2;;21851:1;;21841:12;21792:2;21786:74;:::o

Swarm Source

ipfs://a76a39ff0738fe52adc3c2d3e0c55bd17b184e82dd36d69d9855c850b6c7d586

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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.