ETH Price: $3,699.61 (-1.73%)

Contract

0x40C84310Ef15B0c0E5c69d25138e0E16e8000fE9
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Create Counterfa...139119702021-12-31 8:02:571076 days ago1640937777IN
Argent: Wallet Factory 2
0 ETH0.0724352277.5
Create Counterfa...135281342021-11-01 1:03:221136 days ago1635728602IN
Argent: Wallet Factory 2
0 ETH0.15515555166
Create Counterfa...131748442021-09-06 22:22:451191 days ago1630966965IN
Argent: Wallet Factory 2
0 ETH0.09814843105
Create Counterfa...130389572021-08-16 22:28:201212 days ago1629152900IN
Argent: Wallet Factory 2
0 ETH0.0344617936.87
Create Counterfa...129500692021-08-03 3:53:281226 days ago1627962808IN
Argent: Wallet Factory 2
0 ETH0.0319564334.19
Create Counterfa...124262472021-05-13 13:20:171307 days ago1620912017IN
Argent: Wallet Factory 2
0 ETH0.12801361136.961
Create Counterfa...124260172021-05-13 12:26:321307 days ago1620908792IN
Argent: Wallet Factory 2
0 ETH0.17151231183.5
Create Counterfa...123575752021-05-02 22:54:221318 days ago1619996062IN
Argent: Wallet Factory 2
0 ETH0.0430494146.18
Create Counterfa...123211172021-04-27 7:51:271324 days ago1619509887IN
Argent: Wallet Factory 2
0 ETH0.0353609637.93
Create Counterfa...122935722021-04-23 1:43:391328 days ago1619142219IN
Argent: Wallet Factory 2
0 ETH0.0877168993.225
Create Counterfa...121692852021-04-03 22:24:301347 days ago1617488670IN
Argent: Wallet Factory 2
0 ETH0.13268773144.76
Create Counterfa...121197982021-03-27 7:27:581355 days ago1616830078IN
Argent: Wallet Factory 2
0 ETH0.0764183.08
Create Counterfa...120571552021-03-17 16:02:311364 days ago1615996951IN
Argent: Wallet Factory 2
0 ETH0.12716581138.27
Create Counterfa...120550682021-03-17 8:22:581365 days ago1615969378IN
Argent: Wallet Factory 2
0 ETH0.12787141139.5
Create Counterfa...120325902021-03-13 21:16:071368 days ago1615670167IN
Argent: Wallet Factory 2
0 ETH0.14442111157.03
Create Counterfa...120295732021-03-13 10:08:201369 days ago1615630100IN
Argent: Wallet Factory 2
0 ETH0.09945554108.5
Create Counterfa...120276882021-03-13 3:17:381369 days ago1615605458IN
Argent: Wallet Factory 2
0 ETH0.13365535145.33
Create Counterfa...120080102021-03-10 2:17:221372 days ago1615342642IN
Argent: Wallet Factory 2
0 ETH0.15542592169
Create Counterfa...120051742021-03-09 15:46:301372 days ago1615304790IN
Argent: Wallet Factory 2
0 ETH0.10404204113.13
Create Counterfa...120048622021-03-09 14:38:361372 days ago1615300716IN
Argent: Wallet Factory 2
0 ETH0.1117871121.55
Create Counterfa...119942802021-03-07 23:17:501374 days ago1615159070IN
Argent: Wallet Factory 2
0 ETH0.11211672121.91
Create Counterfa...119940442021-03-07 22:21:571374 days ago1615155717IN
Argent: Wallet Factory 2
0 ETH0.0669154572.75
Create Counterfa...119751902021-03-05 1:01:231377 days ago1614906083IN
Argent: Wallet Factory 2
0 ETH0.0964782104.9
Create Counterfa...119699952021-03-04 5:49:411378 days ago1614836981IN
Argent: Wallet Factory 2
0 ETH0.0640381569.63
Create Counterfa...119601412021-03-02 17:13:481379 days ago1614705228IN
Argent: Wallet Factory 2
0 ETH0.11108184120.78
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
139119702021-12-31 8:02:571076 days ago1640937777
Argent: Wallet Factory 2
 Contract Creation0 ETH
135281342021-11-01 1:03:221136 days ago1635728602
Argent: Wallet Factory 2
 Contract Creation0 ETH
131748442021-09-06 22:22:451191 days ago1630966965
Argent: Wallet Factory 2
 Contract Creation0 ETH
130389572021-08-16 22:28:201212 days ago1629152900
Argent: Wallet Factory 2
 Contract Creation0 ETH
129500692021-08-03 3:53:281226 days ago1627962808
Argent: Wallet Factory 2
 Contract Creation0 ETH
124262472021-05-13 13:20:171307 days ago1620912017
Argent: Wallet Factory 2
 Contract Creation0 ETH
124260172021-05-13 12:26:321307 days ago1620908792
Argent: Wallet Factory 2
 Contract Creation0 ETH
123575752021-05-02 22:54:221318 days ago1619996062
Argent: Wallet Factory 2
 Contract Creation0 ETH
123211172021-04-27 7:51:271324 days ago1619509887
Argent: Wallet Factory 2
 Contract Creation0 ETH
122935722021-04-23 1:43:391328 days ago1619142219
Argent: Wallet Factory 2
 Contract Creation0 ETH
121692852021-04-03 22:24:301347 days ago1617488670
Argent: Wallet Factory 2
 Contract Creation0 ETH
121197982021-03-27 7:27:581355 days ago1616830078
Argent: Wallet Factory 2
 Contract Creation0 ETH
120571552021-03-17 16:02:311364 days ago1615996951
Argent: Wallet Factory 2
 Contract Creation0 ETH
120550682021-03-17 8:22:581365 days ago1615969378
Argent: Wallet Factory 2
 Contract Creation0 ETH
120325902021-03-13 21:16:071368 days ago1615670167
Argent: Wallet Factory 2
 Contract Creation0 ETH
120295732021-03-13 10:08:201369 days ago1615630100
Argent: Wallet Factory 2
 Contract Creation0 ETH
120276882021-03-13 3:17:381369 days ago1615605458
Argent: Wallet Factory 2
 Contract Creation0 ETH
120080102021-03-10 2:17:221372 days ago1615342642
Argent: Wallet Factory 2
 Contract Creation0 ETH
120051742021-03-09 15:46:301372 days ago1615304790
Argent: Wallet Factory 2
 Contract Creation0 ETH
120048622021-03-09 14:38:361372 days ago1615300716
Argent: Wallet Factory 2
 Contract Creation0 ETH
119942802021-03-07 23:17:501374 days ago1615159070
Argent: Wallet Factory 2
 Contract Creation0 ETH
119940442021-03-07 22:21:571374 days ago1615155717
Argent: Wallet Factory 2
 Contract Creation0 ETH
119751902021-03-05 1:01:231377 days ago1614906083
Argent: Wallet Factory 2
 Contract Creation0 ETH
119699952021-03-04 5:49:411378 days ago1614836981
Argent: Wallet Factory 2
 Contract Creation0 ETH
119601412021-03-02 17:13:481379 days ago1614705228
Argent: Wallet Factory 2
 Contract Creation0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
WalletFactory

Compiler Version
v0.5.4+commit.9549d8ff

Optimization Enabled:
Yes with 999 runs

Other Settings:
byzantium EvmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-03-30
*/

// Copyright (C) 2018  Argent Labs Ltd. <https://argent.xyz>

// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.

// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.

pragma solidity ^0.5.4;

/**
 * @title Proxy
 * @dev Basic proxy that delegates all calls to a fixed implementing contract.
 * The implementing contract cannot be upgraded.
 * @author Julien Niset - <[email protected]>
 */
contract Proxy {

    address implementation;

    event Received(uint indexed value, address indexed sender, bytes data);

    constructor(address _implementation) public {
        implementation = _implementation;
    }

    function() external payable {

        if (msg.data.length == 0 && msg.value > 0) {
            emit Received(msg.value, msg.sender, msg.data);
        } else {
            // solium-disable-next-line security/no-inline-assembly
            assembly {
                let target := sload(0)
                calldatacopy(0, 0, calldatasize())
                let result := delegatecall(gas, target, 0, calldatasize(), 0, 0)
                returndatacopy(0, 0, returndatasize())
                switch result
                case 0 {revert(0, returndatasize())}
                default {return (0, returndatasize())}
            }
        }
    }
}

/**
 * @title BaseWallet
 * @dev Simple modular wallet that authorises modules to call its invoke() method.
 * @author Julien Niset - <[email protected]>
 */
contract BaseWallet {
    function init(address _owner, address[] calldata _modules) external;
    function authoriseModule(address _module, bool _value) external;
    function enableStaticCall(address _module, bytes4 _method) external;
    function setOwner(address _newOwner) external;
    function invoke(address _target, uint _value, bytes calldata _data) external returns (bytes memory _result);
    function() external payable;
}

/**
 * @title Owned
 * @dev Basic contract to define an owner.
 * @author Julien Niset - <[email protected]>
 */
contract Owned {

    // The owner
    address public owner;

    event OwnerChanged(address indexed _newOwner);

    /**
     * @dev Throws if the sender is not the owner.
     */
    modifier onlyOwner {
        require(msg.sender == owner, "Must be owner");
        _;
    }

    constructor() public {
        owner = msg.sender;
    }

    /**
     * @dev Lets the owner transfer ownership of the contract to a new owner.
     * @param _newOwner The new owner.
     */
    function changeOwner(address _newOwner) external onlyOwner {
        require(_newOwner != address(0), "Address must not be null");
        owner = _newOwner;
        emit OwnerChanged(_newOwner);
    }
}

/**
 * @title Managed
 * @dev Basic contract that defines a set of managers. Only the owner can add/remove managers.
 * @author Julien Niset - <[email protected]>
 */
contract Managed is Owned {

    // The managers
    mapping (address => bool) public managers;

    /**
     * @dev Throws if the sender is not a manager.
     */
    modifier onlyManager {
        require(managers[msg.sender] == true, "M: Must be manager");
        _;
    }

    event ManagerAdded(address indexed _manager);
    event ManagerRevoked(address indexed _manager);

    /**
    * @dev Adds a manager.
    * @param _manager The address of the manager.
    */
    function addManager(address _manager) external onlyOwner {
        require(_manager != address(0), "M: Address must not be null");
        if (managers[_manager] == false) {
            managers[_manager] = true;
            emit ManagerAdded(_manager);
        }
    }

    /**
    * @dev Revokes a manager.
    * @param _manager The address of the manager.
    */
    function revokeManager(address _manager) external onlyOwner {
        require(managers[_manager] == true, "M: Target must be an existing manager");
        delete managers[_manager];
        emit ManagerRevoked(_manager);
    }
}

/**
 * @dev Interface for an ENS Mananger.
 */
interface IENSManager {
    event RootnodeOwnerChange(bytes32 indexed _rootnode, address indexed _newOwner);
    event ENSResolverChanged(address addr);
    event Registered(address indexed _owner, string _ens);
    event Unregistered(string _ens);

    function changeRootnodeOwner(address _newOwner) external;
    function register(string calldata _label, address _owner) external;
    function isAvailable(bytes32 _subnode) external view returns(bool);
    function getENSReverseRegistrar() external view returns (address);
    function ensResolver() external view returns (address);
}

/**
 * @title ModuleRegistry
 * @dev Registry of authorised modules.
 * Modules must be registered before they can be authorised on a wallet.
 * @author Julien Niset - <[email protected]>
 */
contract ModuleRegistry {
    function registerModule(address _module, bytes32 _name) external;
    function deregisterModule(address _module) external;
    function registerUpgrader(address _upgrader, bytes32 _name) external;
    function deregisterUpgrader(address _upgrader) external;
    function moduleInfo(address _module) external view returns (bytes32);
    function upgraderInfo(address _upgrader) external view returns (bytes32);
    function isRegisteredModule(address _module) external view returns (bool);
    function isRegisteredModule(address[] calldata _modules) external view returns (bool);
    function isRegisteredUpgrader(address _upgrader) external view returns (bool);
}

/**
 * @dev Interface for a contract storing guardian addresses.
 */
interface IGuardianStorage{
    function addGuardian(BaseWallet _wallet, address _guardian) external;
    function revokeGuardian(BaseWallet _wallet, address _guardian) external;
    function isGuardian(BaseWallet _wallet, address _guardian) external view returns (bool);
}

/**
 * @title WalletFactory
 * @dev The WalletFactory contract creates and assigns wallets to accounts.
 * @author Julien Niset - <[email protected]>
 */
contract WalletFactory is Owned, Managed {

    // The address of the module dregistry
    address public moduleRegistry;
    // The address of the base wallet implementation
    address public walletImplementation;
    // The address of the ENS manager
    address public ensManager;
    // The address of the GuardianStorage
    address public guardianStorage;

    // *************** Events *************************** //

    event ModuleRegistryChanged(address addr);
    event ENSManagerChanged(address addr);
    event GuardianStorageChanged(address addr);
    event WalletCreated(address indexed wallet, address indexed owner, address indexed guardian);

    // *************** Modifiers *************************** //

    /**
     * @dev Throws if the guardian storage address is not set.
     */
    modifier guardianStorageDefined {
        require(guardianStorage != address(0), "GuardianStorage address not defined");
        _;
    }

    // *************** Constructor ********************** //

    /**
     * @dev Default constructor.
     */
    constructor(address _moduleRegistry, address _walletImplementation, address _ensManager) public {
        moduleRegistry = _moduleRegistry;
        walletImplementation = _walletImplementation;
        ensManager = _ensManager;
    }

    // *************** External Functions ********************* //

    /**
     * @dev Lets the manager create a wallet for an owner account.
     * The wallet is initialised with a list of modules and an ENS..
     * The wallet is created using the CREATE opcode.
     * @param _owner The account address.
     * @param _modules The list of modules.
     * @param _label ENS label of the new wallet, e.g. franck.
     */
    function createWallet(
        address _owner,
        address[] calldata _modules,
        string calldata _label
    )
        external
        onlyManager
    {
        _createWallet(_owner, _modules, _label, address(0));
    }

    /**
     * @dev Lets the manager create a wallet for an owner account.
     * The wallet is initialised with a list of modules, a first guardian, and an ENS..
     * The wallet is created using the CREATE opcode.
     * @param _owner The account address.
     * @param _modules The list of modules.
     * @param _label ENS label of the new wallet, e.g. franck.
     * @param _guardian The guardian address.
     */
    function createWalletWithGuardian(
        address _owner,
        address[] calldata _modules,
        string calldata _label,
        address _guardian
    )
        external
        onlyManager
        guardianStorageDefined
    {
        require(_guardian != (address(0)), "WF: guardian cannot be null");
        _createWallet(_owner, _modules, _label, _guardian);
    }

    /**
     * @dev Lets the manager create a wallet for an owner account at a specific address.
     * The wallet is initialised with a list of modules and an ENS.
     * The wallet is created using the CREATE2 opcode.
     * @param _owner The account address.
     * @param _modules The list of modules.
     * @param _label ENS label of the new wallet, e.g. franck.
     * @param _salt The salt.
     */
    function createCounterfactualWallet(
        address _owner,
        address[] calldata _modules,
        string calldata _label,
        bytes32 _salt
    )
        external
        onlyManager
    {
        _createCounterfactualWallet(_owner, _modules, _label, address(0), _salt);
    }

    /**
     * @dev Lets the manager create a wallet for an owner account at a specific address.
     * The wallet is initialised with a list of modules, a first guardian, and an ENS.
     * The wallet is created using the CREATE2 opcode.
     * @param _owner The account address.
     * @param _modules The list of modules.
     * @param _label ENS label of the new wallet, e.g. franck.
     * @param _guardian The guardian address.
     * @param _salt The salt.
     */
    function createCounterfactualWalletWithGuardian(
        address _owner,
        address[] calldata _modules,
        string calldata _label,
        address _guardian,
        bytes32 _salt
    )
        external
        onlyManager
        guardianStorageDefined
    {
        require(_guardian != (address(0)), "WF: guardian cannot be null");
        _createCounterfactualWallet(_owner, _modules, _label, _guardian, _salt);
    }

    /**
     * @dev Gets the address of a counterfactual wallet.
     * @param _owner The account address.
     * @param _modules The list of modules.
     * @param _salt The salt.
     * @return the address that the wallet will have when created using CREATE2 and the same input parameters.
     */
    function getAddressForCounterfactualWallet(
        address _owner,
        address[] calldata _modules,
        bytes32 _salt
    )
        external
        view
        returns (address _wallet)
    {
        _wallet = _getAddressForCounterfactualWallet(_owner, _modules, address(0), _salt);
    }

    /**
     * @dev Gets the address of a counterfactual wallet with a first default guardian.
     * @param _owner The account address.
     * @param _modules The list of modules.
     * @param _guardian The guardian address.
     * @param _salt The salt.
     * @return the address that the wallet will have when created using CREATE2 and the same input parameters.
     */
    function getAddressForCounterfactualWalletWithGuardian(
        address _owner,
        address[] calldata _modules,
        address _guardian,
        bytes32 _salt
    )
        external
        view
        returns (address _wallet)
    {
        require(_guardian != (address(0)), "WF: guardian cannot be null");
        _wallet = _getAddressForCounterfactualWallet(_owner, _modules, _guardian, _salt);
    }

    /**
     * @dev Lets the owner change the address of the module registry contract.
     * @param _moduleRegistry The address of the module registry contract.
     */
    function changeModuleRegistry(address _moduleRegistry) external onlyOwner {
        require(_moduleRegistry != address(0), "WF: address cannot be null");
        moduleRegistry = _moduleRegistry;
        emit ModuleRegistryChanged(_moduleRegistry);
    }

    /**
     * @dev Lets the owner change the address of the ENS manager contract.
     * @param _ensManager The address of the ENS manager contract.
     */
    function changeENSManager(address _ensManager) external onlyOwner {
        require(_ensManager != address(0), "WF: address cannot be null");
        ensManager = _ensManager;
        emit ENSManagerChanged(_ensManager);
    }

    /**
     * @dev Lets the owner change the address of the GuardianStorage contract.
     * @param _guardianStorage The address of the GuardianStorage contract.
     */
    function changeGuardianStorage(address _guardianStorage) external onlyOwner {
        require(_guardianStorage != address(0), "WF: address cannot be null");
        guardianStorage = _guardianStorage;
        emit GuardianStorageChanged(_guardianStorage);
    }

    /**
     * @dev Inits the module for a wallet by logging an event.
     * The method can only be called by the wallet itself.
     * @param _wallet The wallet.
     */
    function init(BaseWallet _wallet) external pure { // solium-disable-line no-empty-blocks
        //do nothing
    }

    // *************** Internal Functions ********************* //

    /**
     * @dev Helper method to create a wallet for an owner account.
     * The wallet is initialised with a list of modules, a first guardian, and an ENS.
     * The wallet is created using the CREATE opcode.
     * @param _owner The account address.
     * @param _modules The list of modules.
     * @param _label ENS label of the new wallet, e.g. franck.
     * @param _guardian (Optional) The guardian address.
     */
    function _createWallet(address _owner, address[] memory _modules, string memory _label, address _guardian) internal {
        _validateInputs(_owner, _modules, _label);
        Proxy proxy = new Proxy(walletImplementation);
        address payable wallet = address(proxy);
        _configureWallet(BaseWallet(wallet), _owner, _modules, _label, _guardian);
    }

    /**
     * @dev Helper method to create a wallet for an owner account at a specific address.
     * The wallet is initialised with a list of modules, a first guardian, and an ENS.
     * The wallet is created using the CREATE2 opcode.
     * @param _owner The account address.
     * @param _modules The list of modules.
     * @param _label ENS label of the new wallet, e.g. franck.
     * @param _guardian The guardian address.
     * @param _salt The salt.
     */
    function _createCounterfactualWallet(
        address _owner,
        address[] memory _modules,
        string memory _label,
        address _guardian,
        bytes32 _salt
    )
        internal
    {
        _validateInputs(_owner, _modules, _label);
        bytes32 newsalt = _newSalt(_salt, _owner, _modules, _guardian);
        bytes memory code = abi.encodePacked(type(Proxy).creationCode, uint256(walletImplementation));
        address payable wallet;
        // solium-disable-next-line security/no-inline-assembly
        assembly {
            wallet := create2(0, add(code, 0x20), mload(code), newsalt)
            if iszero(extcodesize(wallet)) { revert(0, returndatasize) }
        }
        _configureWallet(BaseWallet(wallet), _owner, _modules, _label, _guardian);
    }

    /**
     * @dev Helper method to configure a wallet for a set of input parameters.
     * @param _wallet The target wallet
     * @param _owner The account address.
     * @param _modules The list of modules.
     * @param _label ENS label of the new wallet, e.g. franck.
     * @param _guardian (Optional) The guardian address.
     */
    function _configureWallet(
        BaseWallet _wallet,
        address _owner,
        address[] memory _modules,
        string memory _label,
        address _guardian
    )
        internal
    {
        // add the factory to modules so it can claim the reverse ENS or add a guardian
        address[] memory extendedModules = new address[](_modules.length + 1);
        extendedModules[0] = address(this);
        for (uint i = 0; i < _modules.length; i++) {
            extendedModules[i + 1] = _modules[i];
        }
        // initialise the wallet with the owner and the extended modules
        _wallet.init(_owner, extendedModules);
        // add guardian if needed
        if (_guardian != address(0)) {
            IGuardianStorage(guardianStorage).addGuardian(_wallet, _guardian);
        }
        // register ENS
        _registerWalletENS(address(_wallet), _label);
        // remove the factory from the authorised modules
        _wallet.authoriseModule(address(this), false);
        // emit event
        emit WalletCreated(address(_wallet), _owner, _guardian);
    }

    /**
     * @dev Gets the address of a counterfactual wallet.
     * @param _owner The account address.
     * @param _modules The list of modules.
     * @param _salt The salt.
     * @param _guardian (Optional) The guardian address.
     * @return the address that the wallet will have when created using CREATE2 and the same input parameters.
     */
    function _getAddressForCounterfactualWallet(
        address _owner,
        address[] memory _modules,
        address _guardian,
        bytes32 _salt
    )
        internal
        view
        returns (address _wallet)
    {
        bytes32 newsalt = _newSalt(_salt, _owner, _modules, _guardian);
        bytes memory code = abi.encodePacked(type(Proxy).creationCode, uint256(walletImplementation));
        bytes32 hash = keccak256(abi.encodePacked(bytes1(0xff), address(this), newsalt, keccak256(code)));
        _wallet = address(uint160(uint256(hash)));
    }

    /**
     * @dev Generates a new salt based on a provided salt, an owner, a list of modules and an optional guardian.
     * @param _salt The slat provided.
     * @param _owner The owner address.
     * @param _modules The list of modules.
     * @param _guardian The guardian address.
     */
    function _newSalt(bytes32 _salt, address _owner, address[] memory _modules, address _guardian) internal pure returns (bytes32) {
        if (_guardian == address(0)) {
            return keccak256(abi.encodePacked(_salt, _owner, _modules));
        } else {
            return keccak256(abi.encodePacked(_salt, _owner, _modules, _guardian));
        }
    }

    /**
     * @dev Throws if the owner and the modules are not valid.
     * @param _owner The owner address.
     * @param _modules The list of modules.
     */
    function _validateInputs(address _owner, address[] memory _modules, string memory _label) internal view {
        require(_owner != address(0), "WF: owner cannot be null");
        require(_modules.length > 0, "WF: cannot assign with less than 1 module");
        require(ModuleRegistry(moduleRegistry).isRegisteredModule(_modules), "WF: one or more modules are not registered");
        bytes memory labelBytes = bytes(_label);
        require(labelBytes.length != 0, "WF: ENS lable must be defined");
    }

    /**
     * @dev Register an ENS subname to a wallet.
     * @param _wallet The wallet address.
     * @param _label ENS label of the new wallet (e.g. franck).
     */
    function _registerWalletENS(address payable _wallet, string memory _label) internal {
        // claim reverse
        address ensResolver = IENSManager(ensManager).ensResolver();
        bytes memory methodData = abi.encodeWithSignature("claimWithResolver(address,address)", ensManager, ensResolver);
        address ensReverseRegistrar = IENSManager(ensManager).getENSReverseRegistrar();
        BaseWallet(_wallet).invoke(ensReverseRegistrar, 0, methodData);
        // register with ENS manager
        IENSManager(ensManager).register(_label, _wallet);
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_moduleRegistry","type":"address"}],"name":"changeModuleRegistry","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_wallet","type":"address"}],"name":"init","outputs":[],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_manager","type":"address"}],"name":"addManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_modules","type":"address[]"},{"name":"_label","type":"string"},{"name":"_salt","type":"bytes32"}],"name":"createCounterfactualWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_manager","type":"address"}],"name":"revokeManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ensManager","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"walletImplementation","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_ensManager","type":"address"}],"name":"changeENSManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_guardianStorage","type":"address"}],"name":"changeGuardianStorage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_modules","type":"address[]"},{"name":"_label","type":"string"}],"name":"createWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"moduleRegistry","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_modules","type":"address[]"},{"name":"_salt","type":"bytes32"}],"name":"getAddressForCounterfactualWallet","outputs":[{"name":"_wallet","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_modules","type":"address[]"},{"name":"_guardian","type":"address"},{"name":"_salt","type":"bytes32"}],"name":"getAddressForCounterfactualWalletWithGuardian","outputs":[{"name":"_wallet","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_modules","type":"address[]"},{"name":"_label","type":"string"},{"name":"_guardian","type":"address"},{"name":"_salt","type":"bytes32"}],"name":"createCounterfactualWalletWithGuardian","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_modules","type":"address[]"},{"name":"_label","type":"string"},{"name":"_guardian","type":"address"}],"name":"createWalletWithGuardian","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"guardianStorage","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"managers","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_moduleRegistry","type":"address"},{"name":"_walletImplementation","type":"address"},{"name":"_ensManager","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"addr","type":"address"}],"name":"ModuleRegistryChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"addr","type":"address"}],"name":"ENSManagerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"addr","type":"address"}],"name":"GuardianStorageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"wallet","type":"address"},{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"guardian","type":"address"}],"name":"WalletCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_manager","type":"address"}],"name":"ManagerAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_manager","type":"address"}],"name":"ManagerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_newOwner","type":"address"}],"name":"OwnerChanged","type":"event"}]

608060405234801561001057600080fd5b5060405160608061244f8339810180604052606081101561003057600080fd5b508051602082015160409092015160008054600160a060020a0319908116331790915560028054600160a060020a0394851690831617905560038054948416948216949094179093556004805492909116919092161790556123b8806100976000396000f3fe608060405234801561001057600080fd5b506004361061016e576000357c0100000000000000000000000000000000000000000000000000000000900480639d1df5ee116100ea578063bb1cef721161009e578063c6e79bbe11610083578063c6e79bbe1461064f578063d89784fc1461072a578063fdff9b4d146107325761016e565b8063bb1cef72146104df578063c3606c881461056e5761016e565b8063aff18575116100cf578063aff1857514610385578063b95459e414610457578063b97ccf2f1461045f5761016e565b80639d1df5ee14610339578063a6f9dae11461035f5761016e565b8063377e32e6116101415780638117abc1116101265780638117abc1146103035780638da5cb5b1461030b57806390ed991c146103135761016e565b8063377e32e6146102b95780635a6971f9146102df5761016e565b806308d668bc1461017357806319ab453c1461019b5780632d06177a146101c1578063350aaa9a146101e7575b600080fd5b6101996004803603602081101561018957600080fd5b5035600160a060020a031661076c565b005b610199600480360360208110156101b157600080fd5b5035600160a060020a0316610899565b610199600480360360208110156101d757600080fd5b5035600160a060020a031661089c565b610199600480360360808110156101fd57600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561022857600080fd5b82018360208201111561023a57600080fd5b8035906020019184602083028401116401000000008311171561025c57600080fd5b91939092909160208101903564010000000081111561027a57600080fd5b82018360208201111561028c57600080fd5b803590602001918460018302840111640100000000831117156102ae57600080fd5b9193509150356109d9565b610199600480360360208110156102cf57600080fd5b5035600160a060020a0316610ac6565b6102e7610bdb565b60408051600160a060020a039092168252519081900360200190f35b6102e7610bea565b6102e7610bf9565b6101996004803603602081101561032957600080fd5b5035600160a060020a0316610c08565b6101996004803603602081101561034f57600080fd5b5035600160a060020a0316610d35565b6101996004803603602081101561037557600080fd5b5035600160a060020a0316610e62565b6101996004803603606081101561039b57600080fd5b600160a060020a0382351691908101906040810160208201356401000000008111156103c657600080fd5b8201836020820111156103d857600080fd5b803590602001918460208302840111640100000000831117156103fa57600080fd5b91939092909160208101903564010000000081111561041857600080fd5b82018360208201111561042a57600080fd5b8035906020019184600183028401116401000000008311171561044c57600080fd5b509092509050610f83565b6102e761106d565b6102e76004803603606081101561047557600080fd5b600160a060020a0382351691908101906040810160208201356401000000008111156104a057600080fd5b8201836020820111156104b257600080fd5b803590602001918460208302840111640100000000831117156104d457600080fd5b91935091503561107c565b6102e7600480360360808110156104f557600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561052057600080fd5b82018360208201111561053257600080fd5b8035906020019184602083028401116401000000008311171561055457600080fd5b9193509150600160a060020a0381351690602001356110c6565b610199600480360360a081101561058457600080fd5b600160a060020a0382351691908101906040810160208201356401000000008111156105af57600080fd5b8201836020820111156105c157600080fd5b803590602001918460208302840111640100000000831117156105e357600080fd5b91939092909160208101903564010000000081111561060157600080fd5b82018360208201111561061357600080fd5b8035906020019184600183028401116401000000008311171561063557600080fd5b9193509150600160a060020a038135169060200135611178565b6101996004803603608081101561066557600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561069057600080fd5b8201836020820111156106a257600080fd5b803590602001918460208302840111640100000000831117156106c457600080fd5b9193909290916020810190356401000000008111156106e257600080fd5b8201836020820111156106f457600080fd5b8035906020019184600183028401116401000000008311171561071657600080fd5b919350915035600160a060020a031661131e565b6102e76114b9565b6107586004803603602081101561074857600080fd5b5035600160a060020a03166114c8565b604080519115158252519081900360200190f35b600054600160a060020a031633146107d3576040805160008051602061234a833981519152815260206004820152600d60248201527f4d757374206265206f776e657200000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0381161515610838576040805160008051602061234a833981519152815260206004820152601a60248201527f57463a20616464726573732063616e6e6f74206265206e756c6c000000000000604482015290519081900360640190fd5b60028054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517f9bf4baeb20b6008af8dfd7fed5c50dce707a05623b022e5d61a00c7db7f90c729181900360200190a150565b50565b600054600160a060020a03163314610903576040805160008051602061234a833981519152815260206004820152600d60248201527f4d757374206265206f776e657200000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0381161515610968576040805160008051602061234a833981519152815260206004820152601b60248201527f4d3a2041646472657373206d757374206e6f74206265206e756c6c0000000000604482015290519081900360640190fd5b600160a060020a03811660009081526001602052604090205460ff16151561089957600160a060020a0381166000818152600160208190526040808320805460ff1916909217909155517f3b4a40cccf2058c593542587329dd385be4f0b588db5471fbd9598e56dd7093a9190a250565b3360009081526001602081905260409091205460ff16151514610a4b576040805160008051602061234a833981519152815260206004820152601260248201527f4d3a204d757374206265206d616e616765720000000000000000000000000000604482015290519081900360640190fd5b610abe8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092018290525092508791506114dd9050565b505050505050565b600054600160a060020a03163314610b2d576040805160008051602061234a833981519152815260206004820152600d60248201527f4d757374206265206f776e657200000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a03811660009081526001602081905260409091205460ff16151514610b925760405160008051602061234a83398151915281526004018080602001828103825260258152602001806122d26025913960400191505060405180910390fd5b600160a060020a038116600081815260016020526040808220805460ff19169055517fe5def11e0516f317f9c37b8835aec29fc01db4d4b6d6fecaca339d3596a29bc19190a250565b600454600160a060020a031681565b600354600160a060020a031681565b600054600160a060020a031681565b600054600160a060020a03163314610c6f576040805160008051602061234a833981519152815260206004820152600d60248201527f4d757374206265206f776e657200000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0381161515610cd4576040805160008051602061234a833981519152815260206004820152601a60248201527f57463a20616464726573732063616e6e6f74206265206e756c6c000000000000604482015290519081900360640190fd5b60048054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517f5b22021f5b1f5f8a744edb1f20f667875f22a1b29c4d9a46418ee25110c76cb89181900360200190a150565b600054600160a060020a03163314610d9c576040805160008051602061234a833981519152815260206004820152600d60248201527f4d757374206265206f776e657200000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0381161515610e01576040805160008051602061234a833981519152815260206004820152601a60248201527f57463a20616464726573732063616e6e6f74206265206e756c6c000000000000604482015290519081900360640190fd5b60058054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517fe897b5d59fcdf32efc14ac4f270d09939e2280487d6d5e156dcb41a29cb034399181900360200190a150565b600054600160a060020a03163314610ec9576040805160008051602061234a833981519152815260206004820152600d60248201527f4d757374206265206f776e657200000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0381161515610f2e576040805160008051602061234a833981519152815260206004820152601860248201527f41646472657373206d757374206e6f74206265206e756c6c0000000000000000604482015290519081900360640190fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038316908117825560405190917fa2ea9883a321a3e97b8266c2b078bfeec6d50c711ed71f874a90d500ae2eaf3691a250565b3360009081526001602081905260409091205460ff16151514610ff5576040805160008051602061234a833981519152815260206004820152601260248201527f4d3a204d757374206265206d616e616765720000000000000000000000000000604482015290519081900360640190fd5b6110668585858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781529250879150869081908401838280828437600092018290525092506115c3915050565b5050505050565b600254600160a060020a031681565b60006110bd85858580806020026020016040519081016040528093929190818152602001838360200280828437600092018290525092508791506116289050565b95945050505050565b6000600160a060020a038316151561112d576040805160008051602061234a833981519152815260206004820152601b60248201527f57463a20677561726469616e2063616e6e6f74206265206e756c6c0000000000604482015290519081900360640190fd5b61116e868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506116289050565b9695505050505050565b3360009081526001602081905260409091205460ff161515146111ea576040805160008051602061234a833981519152815260206004820152601260248201527f4d3a204d757374206265206d616e616765720000000000000000000000000000604482015290519081900360640190fd5b600554600160a060020a0316151561123b5760405160008051602061234a833981519152815260040180806020018281038252602381526020018061236a6023913960400191505060405180910390fd5b600160a060020a03821615156112a0576040805160008051602061234a833981519152815260206004820152601b60248201527f57463a20677561726469616e2063616e6e6f74206265206e756c6c0000000000604482015290519081900360640190fd5b6113158787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8b0181900481028201810190925289815292508991508890819084018382808284376000920191909152508892508791506114dd9050565b50505050505050565b3360009081526001602081905260409091205460ff16151514611390576040805160008051602061234a833981519152815260206004820152601260248201527f4d3a204d757374206265206d616e616765720000000000000000000000000000604482015290519081900360640190fd5b600554600160a060020a031615156113e15760405160008051602061234a833981519152815260040180806020018281038252602381526020018061236a6023913960400191505060405180910390fd5b600160a060020a0381161515611446576040805160008051602061234a833981519152815260206004820152601b60248201527f57463a20677561726469616e2063616e6e6f74206265206e756c6c0000000000604482015290519081900360640190fd5b610abe8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a0181900481028201810190925288815292508891508790819084018382808284376000920191909152508792506115c3915050565b600554600160a060020a031681565b60016020526000908152604090205460ff1681565b6114e8858585611744565b60006114f682878786611964565b905060606040518060200161150a9061217d565b601f1982820381018352601f9091011660408190526003548251600160a060020a039091169160209081019182918501908083835b6020831061155e5780518252601f19909201916020918201910161153f565b51815160209384036101000a6000190180199092169116179052920193845250604080518085038152938201905282519294506000935085929150840183f59050803b15156115ac573d6000fd5b6115b98189898989611ab5565b5050505050505050565b6115ce848484611744565b600354604051600091600160a060020a0316906115ea9061217d565b600160a060020a03909116815260405190819003602001906000f080158015611617573d6000803e3d6000fd5b50905080610abe8187878787611ab5565b60008061163783878787611964565b905060606040518060200161164b9061217d565b601f1982820381018352601f9091011660408190526003548251600160a060020a039091169160209081019182918501908083835b6020831061169f5780518252601f199092019160209182019101611680565b51815160209384036101000a600019018019909216911617905292019384525060408051808503815284830182528051908301207fff0000000000000000000000000000000000000000000000000000000000000082860152306c010000000000000000000000000260418601526055850197909752607580850197909752805180850390970187526095909301909252508351930192909220979650505050505050565b600160a060020a03831615156117a9576040805160008051602061234a833981519152815260206004820152601860248201527f57463a206f776e65722063616e6e6f74206265206e756c6c0000000000000000604482015290519081900360640190fd5b81516000106117f15760405160008051602061234a83398151915281526004018080602001828103825260298152602001806123216029913960400191505060405180910390fd5b6002546040517f6bb18a54000000000000000000000000000000000000000000000000000000008152602060048201818152855160248401528551600160a060020a0390941693636bb18a549387938392604490920191818601910280838360005b8381101561186b578181015183820152602001611853565b505050509050019250505060206040518083038186803b15801561188e57600080fd5b505afa1580156118a2573d6000803e3d6000fd5b505050506040513d60208110156118b857600080fd5b505115156118ff5760405160008051602061234a833981519152815260040180806020018281038252602a8152602001806122f7602a913960400191505060405180910390fd5b80518190151561195e576040805160008051602061234a833981519152815260206004820152601d60248201527f57463a20454e53206c61626c65206d75737420626520646566696e6564000000604482015290519081900360640190fd5b50505050565b6000600160a060020a03821615156119ff578484846040516020018084815260200183600160a060020a0316600160a060020a03166c01000000000000000000000000028152601401828051906020019060200280838360005b838110156119d65781810151838201526020016119be565b505050509050019350505050604051602081830303815290604052805190602001209050611aad565b848484846040516020018085815260200184600160a060020a0316600160a060020a03166c01000000000000000000000000028152601401838051906020019060200280838360005b83811015611a60578181015183820152602001611a48565b5050505090500182600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019450505050506040516020818303038152906040528051906020012090505b949350505050565b60608351600101604051908082528060200260200182016040528015611ae5578160200160208202803883390190505b50905030816000815181101515611af857fe5b600160a060020a0390921660209283029091019091015260005b8451811015611b63578481815181101515611b2957fe5b906020019060200201518282600101815181101515611b4457fe5b600160a060020a03909216602092830290910190910152600101611b12565b50604080517f3c5a3cea000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830190815260248301938452845160448401528451918a1693633c5a3cea938a9387939291606401906020808601910280838360005b83811015611be6578181015183820152602001611bce565b505050509050019350505050600060405180830381600087803b158015611c0c57600080fd5b505af1158015611c20573d6000803e3d6000fd5b50505050600160a060020a03821615611cbb57600554604080517fc6845210000000000000000000000000000000000000000000000000000000008152600160a060020a03898116600483015285811660248301529151919092169163c684521091604480830192600092919082900301818387803b158015611ca257600080fd5b505af1158015611cb6573d6000803e3d6000fd5b505050505b611cc58684611d94565b604080517f1f17732d0000000000000000000000000000000000000000000000000000000081523060048201526000602482018190529151600160a060020a03891692631f17732d926044808201939182900301818387803b158015611d2a57600080fd5b505af1158015611d3e573d6000803e3d6000fd5b5050505081600160a060020a031685600160a060020a031687600160a060020a03167fca0b7dde26052d34217ef1a0cee48085a07ca32da0a918609937a307d496bbf560405160405180910390a4505050505050565b6000600460009054906101000a9004600160a060020a0316600160a060020a031663adce1c5f6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015611e0057600080fd5b505afa158015611e14573d6000803e3d6000fd5b505050506040513d6020811015611e2a57600080fd5b50516004805460408051600160a060020a03928316602482018190529285166044808301919091528251808303909101815260649091018252602081810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0f5a54660000000000000000000000000000000000000000000000000000000017905282517f09d73442000000000000000000000000000000000000000000000000000000008152925195965090946000946309d734429380820193929190829003018186803b158015611efc57600080fd5b505afa158015611f10573d6000803e3d6000fd5b505050506040513d6020811015611f2657600080fd5b50516040517f8f6f0332000000000000000000000000000000000000000000000000000000008152600160a060020a0380831660048301908152600060248401819052606060448501908152875160648601528751959650928a1694638f6f03329487949293899390929091608401906020850190808383895b83811015611fb8578181015183820152602001611fa0565b50505050905090810190601f168015611fe55780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561200657600080fd5b505af115801561201a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561204357600080fd5b81019080805164010000000081111561205b57600080fd5b8201602081018481111561206e57600080fd5b815164010000000081118282018710171561208857600080fd5b505060048054604080517f1e59c529000000000000000000000000000000000000000000000000000000008152600160a060020a038d811660248301529381019182528b5160448201528b51939092169650631e59c52995508a94508b935091829160640190602086019080838360005b838110156121115781810151838201526020016120f9565b50505050905090810190601f16801561213e5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561215e57600080fd5b505af1158015612172573d6000803e3d6000fd5b505050505050505050565b6101478061218b8339019056fe608060405234801561001057600080fd5b506040516020806101478339810180604052602081101561003057600080fd5b505160008054600160a060020a03909216600160a060020a031990921691909117905560e6806100616000396000f3fe60806040523615801560115750600034115b156092573373ffffffffffffffffffffffffffffffffffffffff16347f606834f57405380c4fb88d1f4850326ad3885f014bab3b568dfbf7a041eef73860003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a360b8565b6000543660008037600080366000845af43d6000803e80801560b3573d6000f35b3d6000fd5b00fea165627a7a7230582050a0cdc6737cfe5402762d0a4a4467b912e656e93ff13e1f2bfcdcb82157250800294d3a20546172676574206d75737420626520616e206578697374696e67206d616e6167657257463a206f6e65206f72206d6f7265206d6f64756c657320617265206e6f74207265676973746572656457463a2063616e6e6f742061737369676e2077697468206c657373207468616e2031206d6f64756c6508c379a000000000000000000000000000000000000000000000000000000000477561726469616e53746f726167652061646472657373206e6f7420646566696e6564a165627a7a723058201646289776505048747e848d8c96bb3ca8d0290d10176cc2429cae1233c7c1350029000000000000000000000000c17d432bd8e8850fd7b32b0270f5afac65db0105000000000000000000000000b6d64221451edbac7736d4c3da7fc827457dec03000000000000000000000000c4baabb5b7dff84aa8023183e3ca0ba3b2fee519

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061016e576000357c0100000000000000000000000000000000000000000000000000000000900480639d1df5ee116100ea578063bb1cef721161009e578063c6e79bbe11610083578063c6e79bbe1461064f578063d89784fc1461072a578063fdff9b4d146107325761016e565b8063bb1cef72146104df578063c3606c881461056e5761016e565b8063aff18575116100cf578063aff1857514610385578063b95459e414610457578063b97ccf2f1461045f5761016e565b80639d1df5ee14610339578063a6f9dae11461035f5761016e565b8063377e32e6116101415780638117abc1116101265780638117abc1146103035780638da5cb5b1461030b57806390ed991c146103135761016e565b8063377e32e6146102b95780635a6971f9146102df5761016e565b806308d668bc1461017357806319ab453c1461019b5780632d06177a146101c1578063350aaa9a146101e7575b600080fd5b6101996004803603602081101561018957600080fd5b5035600160a060020a031661076c565b005b610199600480360360208110156101b157600080fd5b5035600160a060020a0316610899565b610199600480360360208110156101d757600080fd5b5035600160a060020a031661089c565b610199600480360360808110156101fd57600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561022857600080fd5b82018360208201111561023a57600080fd5b8035906020019184602083028401116401000000008311171561025c57600080fd5b91939092909160208101903564010000000081111561027a57600080fd5b82018360208201111561028c57600080fd5b803590602001918460018302840111640100000000831117156102ae57600080fd5b9193509150356109d9565b610199600480360360208110156102cf57600080fd5b5035600160a060020a0316610ac6565b6102e7610bdb565b60408051600160a060020a039092168252519081900360200190f35b6102e7610bea565b6102e7610bf9565b6101996004803603602081101561032957600080fd5b5035600160a060020a0316610c08565b6101996004803603602081101561034f57600080fd5b5035600160a060020a0316610d35565b6101996004803603602081101561037557600080fd5b5035600160a060020a0316610e62565b6101996004803603606081101561039b57600080fd5b600160a060020a0382351691908101906040810160208201356401000000008111156103c657600080fd5b8201836020820111156103d857600080fd5b803590602001918460208302840111640100000000831117156103fa57600080fd5b91939092909160208101903564010000000081111561041857600080fd5b82018360208201111561042a57600080fd5b8035906020019184600183028401116401000000008311171561044c57600080fd5b509092509050610f83565b6102e761106d565b6102e76004803603606081101561047557600080fd5b600160a060020a0382351691908101906040810160208201356401000000008111156104a057600080fd5b8201836020820111156104b257600080fd5b803590602001918460208302840111640100000000831117156104d457600080fd5b91935091503561107c565b6102e7600480360360808110156104f557600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561052057600080fd5b82018360208201111561053257600080fd5b8035906020019184602083028401116401000000008311171561055457600080fd5b9193509150600160a060020a0381351690602001356110c6565b610199600480360360a081101561058457600080fd5b600160a060020a0382351691908101906040810160208201356401000000008111156105af57600080fd5b8201836020820111156105c157600080fd5b803590602001918460208302840111640100000000831117156105e357600080fd5b91939092909160208101903564010000000081111561060157600080fd5b82018360208201111561061357600080fd5b8035906020019184600183028401116401000000008311171561063557600080fd5b9193509150600160a060020a038135169060200135611178565b6101996004803603608081101561066557600080fd5b600160a060020a03823516919081019060408101602082013564010000000081111561069057600080fd5b8201836020820111156106a257600080fd5b803590602001918460208302840111640100000000831117156106c457600080fd5b9193909290916020810190356401000000008111156106e257600080fd5b8201836020820111156106f457600080fd5b8035906020019184600183028401116401000000008311171561071657600080fd5b919350915035600160a060020a031661131e565b6102e76114b9565b6107586004803603602081101561074857600080fd5b5035600160a060020a03166114c8565b604080519115158252519081900360200190f35b600054600160a060020a031633146107d3576040805160008051602061234a833981519152815260206004820152600d60248201527f4d757374206265206f776e657200000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0381161515610838576040805160008051602061234a833981519152815260206004820152601a60248201527f57463a20616464726573732063616e6e6f74206265206e756c6c000000000000604482015290519081900360640190fd5b60028054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517f9bf4baeb20b6008af8dfd7fed5c50dce707a05623b022e5d61a00c7db7f90c729181900360200190a150565b50565b600054600160a060020a03163314610903576040805160008051602061234a833981519152815260206004820152600d60248201527f4d757374206265206f776e657200000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0381161515610968576040805160008051602061234a833981519152815260206004820152601b60248201527f4d3a2041646472657373206d757374206e6f74206265206e756c6c0000000000604482015290519081900360640190fd5b600160a060020a03811660009081526001602052604090205460ff16151561089957600160a060020a0381166000818152600160208190526040808320805460ff1916909217909155517f3b4a40cccf2058c593542587329dd385be4f0b588db5471fbd9598e56dd7093a9190a250565b3360009081526001602081905260409091205460ff16151514610a4b576040805160008051602061234a833981519152815260206004820152601260248201527f4d3a204d757374206265206d616e616765720000000000000000000000000000604482015290519081900360640190fd5b610abe8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092018290525092508791506114dd9050565b505050505050565b600054600160a060020a03163314610b2d576040805160008051602061234a833981519152815260206004820152600d60248201527f4d757374206265206f776e657200000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a03811660009081526001602081905260409091205460ff16151514610b925760405160008051602061234a83398151915281526004018080602001828103825260258152602001806122d26025913960400191505060405180910390fd5b600160a060020a038116600081815260016020526040808220805460ff19169055517fe5def11e0516f317f9c37b8835aec29fc01db4d4b6d6fecaca339d3596a29bc19190a250565b600454600160a060020a031681565b600354600160a060020a031681565b600054600160a060020a031681565b600054600160a060020a03163314610c6f576040805160008051602061234a833981519152815260206004820152600d60248201527f4d757374206265206f776e657200000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0381161515610cd4576040805160008051602061234a833981519152815260206004820152601a60248201527f57463a20616464726573732063616e6e6f74206265206e756c6c000000000000604482015290519081900360640190fd5b60048054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517f5b22021f5b1f5f8a744edb1f20f667875f22a1b29c4d9a46418ee25110c76cb89181900360200190a150565b600054600160a060020a03163314610d9c576040805160008051602061234a833981519152815260206004820152600d60248201527f4d757374206265206f776e657200000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0381161515610e01576040805160008051602061234a833981519152815260206004820152601a60248201527f57463a20616464726573732063616e6e6f74206265206e756c6c000000000000604482015290519081900360640190fd5b60058054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517fe897b5d59fcdf32efc14ac4f270d09939e2280487d6d5e156dcb41a29cb034399181900360200190a150565b600054600160a060020a03163314610ec9576040805160008051602061234a833981519152815260206004820152600d60248201527f4d757374206265206f776e657200000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0381161515610f2e576040805160008051602061234a833981519152815260206004820152601860248201527f41646472657373206d757374206e6f74206265206e756c6c0000000000000000604482015290519081900360640190fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038316908117825560405190917fa2ea9883a321a3e97b8266c2b078bfeec6d50c711ed71f874a90d500ae2eaf3691a250565b3360009081526001602081905260409091205460ff16151514610ff5576040805160008051602061234a833981519152815260206004820152601260248201527f4d3a204d757374206265206d616e616765720000000000000000000000000000604482015290519081900360640190fd5b6110668585858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781529250879150869081908401838280828437600092018290525092506115c3915050565b5050505050565b600254600160a060020a031681565b60006110bd85858580806020026020016040519081016040528093929190818152602001838360200280828437600092018290525092508791506116289050565b95945050505050565b6000600160a060020a038316151561112d576040805160008051602061234a833981519152815260206004820152601b60248201527f57463a20677561726469616e2063616e6e6f74206265206e756c6c0000000000604482015290519081900360640190fd5b61116e868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506116289050565b9695505050505050565b3360009081526001602081905260409091205460ff161515146111ea576040805160008051602061234a833981519152815260206004820152601260248201527f4d3a204d757374206265206d616e616765720000000000000000000000000000604482015290519081900360640190fd5b600554600160a060020a0316151561123b5760405160008051602061234a833981519152815260040180806020018281038252602381526020018061236a6023913960400191505060405180910390fd5b600160a060020a03821615156112a0576040805160008051602061234a833981519152815260206004820152601b60248201527f57463a20677561726469616e2063616e6e6f74206265206e756c6c0000000000604482015290519081900360640190fd5b6113158787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8b0181900481028201810190925289815292508991508890819084018382808284376000920191909152508892508791506114dd9050565b50505050505050565b3360009081526001602081905260409091205460ff16151514611390576040805160008051602061234a833981519152815260206004820152601260248201527f4d3a204d757374206265206d616e616765720000000000000000000000000000604482015290519081900360640190fd5b600554600160a060020a031615156113e15760405160008051602061234a833981519152815260040180806020018281038252602381526020018061236a6023913960400191505060405180910390fd5b600160a060020a0381161515611446576040805160008051602061234a833981519152815260206004820152601b60248201527f57463a20677561726469616e2063616e6e6f74206265206e756c6c0000000000604482015290519081900360640190fd5b610abe8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a0181900481028201810190925288815292508891508790819084018382808284376000920191909152508792506115c3915050565b600554600160a060020a031681565b60016020526000908152604090205460ff1681565b6114e8858585611744565b60006114f682878786611964565b905060606040518060200161150a9061217d565b601f1982820381018352601f9091011660408190526003548251600160a060020a039091169160209081019182918501908083835b6020831061155e5780518252601f19909201916020918201910161153f565b51815160209384036101000a6000190180199092169116179052920193845250604080518085038152938201905282519294506000935085929150840183f59050803b15156115ac573d6000fd5b6115b98189898989611ab5565b5050505050505050565b6115ce848484611744565b600354604051600091600160a060020a0316906115ea9061217d565b600160a060020a03909116815260405190819003602001906000f080158015611617573d6000803e3d6000fd5b50905080610abe8187878787611ab5565b60008061163783878787611964565b905060606040518060200161164b9061217d565b601f1982820381018352601f9091011660408190526003548251600160a060020a039091169160209081019182918501908083835b6020831061169f5780518252601f199092019160209182019101611680565b51815160209384036101000a600019018019909216911617905292019384525060408051808503815284830182528051908301207fff0000000000000000000000000000000000000000000000000000000000000082860152306c010000000000000000000000000260418601526055850197909752607580850197909752805180850390970187526095909301909252508351930192909220979650505050505050565b600160a060020a03831615156117a9576040805160008051602061234a833981519152815260206004820152601860248201527f57463a206f776e65722063616e6e6f74206265206e756c6c0000000000000000604482015290519081900360640190fd5b81516000106117f15760405160008051602061234a83398151915281526004018080602001828103825260298152602001806123216029913960400191505060405180910390fd5b6002546040517f6bb18a54000000000000000000000000000000000000000000000000000000008152602060048201818152855160248401528551600160a060020a0390941693636bb18a549387938392604490920191818601910280838360005b8381101561186b578181015183820152602001611853565b505050509050019250505060206040518083038186803b15801561188e57600080fd5b505afa1580156118a2573d6000803e3d6000fd5b505050506040513d60208110156118b857600080fd5b505115156118ff5760405160008051602061234a833981519152815260040180806020018281038252602a8152602001806122f7602a913960400191505060405180910390fd5b80518190151561195e576040805160008051602061234a833981519152815260206004820152601d60248201527f57463a20454e53206c61626c65206d75737420626520646566696e6564000000604482015290519081900360640190fd5b50505050565b6000600160a060020a03821615156119ff578484846040516020018084815260200183600160a060020a0316600160a060020a03166c01000000000000000000000000028152601401828051906020019060200280838360005b838110156119d65781810151838201526020016119be565b505050509050019350505050604051602081830303815290604052805190602001209050611aad565b848484846040516020018085815260200184600160a060020a0316600160a060020a03166c01000000000000000000000000028152601401838051906020019060200280838360005b83811015611a60578181015183820152602001611a48565b5050505090500182600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019450505050506040516020818303038152906040528051906020012090505b949350505050565b60608351600101604051908082528060200260200182016040528015611ae5578160200160208202803883390190505b50905030816000815181101515611af857fe5b600160a060020a0390921660209283029091019091015260005b8451811015611b63578481815181101515611b2957fe5b906020019060200201518282600101815181101515611b4457fe5b600160a060020a03909216602092830290910190910152600101611b12565b50604080517f3c5a3cea000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830190815260248301938452845160448401528451918a1693633c5a3cea938a9387939291606401906020808601910280838360005b83811015611be6578181015183820152602001611bce565b505050509050019350505050600060405180830381600087803b158015611c0c57600080fd5b505af1158015611c20573d6000803e3d6000fd5b50505050600160a060020a03821615611cbb57600554604080517fc6845210000000000000000000000000000000000000000000000000000000008152600160a060020a03898116600483015285811660248301529151919092169163c684521091604480830192600092919082900301818387803b158015611ca257600080fd5b505af1158015611cb6573d6000803e3d6000fd5b505050505b611cc58684611d94565b604080517f1f17732d0000000000000000000000000000000000000000000000000000000081523060048201526000602482018190529151600160a060020a03891692631f17732d926044808201939182900301818387803b158015611d2a57600080fd5b505af1158015611d3e573d6000803e3d6000fd5b5050505081600160a060020a031685600160a060020a031687600160a060020a03167fca0b7dde26052d34217ef1a0cee48085a07ca32da0a918609937a307d496bbf560405160405180910390a4505050505050565b6000600460009054906101000a9004600160a060020a0316600160a060020a031663adce1c5f6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015611e0057600080fd5b505afa158015611e14573d6000803e3d6000fd5b505050506040513d6020811015611e2a57600080fd5b50516004805460408051600160a060020a03928316602482018190529285166044808301919091528251808303909101815260649091018252602081810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0f5a54660000000000000000000000000000000000000000000000000000000017905282517f09d73442000000000000000000000000000000000000000000000000000000008152925195965090946000946309d734429380820193929190829003018186803b158015611efc57600080fd5b505afa158015611f10573d6000803e3d6000fd5b505050506040513d6020811015611f2657600080fd5b50516040517f8f6f0332000000000000000000000000000000000000000000000000000000008152600160a060020a0380831660048301908152600060248401819052606060448501908152875160648601528751959650928a1694638f6f03329487949293899390929091608401906020850190808383895b83811015611fb8578181015183820152602001611fa0565b50505050905090810190601f168015611fe55780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561200657600080fd5b505af115801561201a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561204357600080fd5b81019080805164010000000081111561205b57600080fd5b8201602081018481111561206e57600080fd5b815164010000000081118282018710171561208857600080fd5b505060048054604080517f1e59c529000000000000000000000000000000000000000000000000000000008152600160a060020a038d811660248301529381019182528b5160448201528b51939092169650631e59c52995508a94508b935091829160640190602086019080838360005b838110156121115781810151838201526020016120f9565b50505050905090810190601f16801561213e5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561215e57600080fd5b505af1158015612172573d6000803e3d6000fd5b505050505050505050565b6101478061218b8339019056fe608060405234801561001057600080fd5b506040516020806101478339810180604052602081101561003057600080fd5b505160008054600160a060020a03909216600160a060020a031990921691909117905560e6806100616000396000f3fe60806040523615801560115750600034115b156092573373ffffffffffffffffffffffffffffffffffffffff16347f606834f57405380c4fb88d1f4850326ad3885f014bab3b568dfbf7a041eef73860003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a360b8565b6000543660008037600080366000845af43d6000803e80801560b3573d6000f35b3d6000fd5b00fea165627a7a7230582050a0cdc6737cfe5402762d0a4a4467b912e656e93ff13e1f2bfcdcb82157250800294d3a20546172676574206d75737420626520616e206578697374696e67206d616e6167657257463a206f6e65206f72206d6f7265206d6f64756c657320617265206e6f74207265676973746572656457463a2063616e6e6f742061737369676e2077697468206c657373207468616e2031206d6f64756c6508c379a000000000000000000000000000000000000000000000000000000000477561726469616e53746f726167652061646472657373206e6f7420646566696e6564a165627a7a723058201646289776505048747e848d8c96bb3ca8d0290d10176cc2429cae1233c7c1350029

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

000000000000000000000000c17d432bd8e8850fd7b32b0270f5afac65db0105000000000000000000000000b6d64221451edbac7736d4c3da7fc827457dec03000000000000000000000000c4baabb5b7dff84aa8023183e3ca0ba3b2fee519

-----Decoded View---------------
Arg [0] : _moduleRegistry (address): 0xc17D432Bd8e8850Fd7b32B0270f5AfAc65DB0105
Arg [1] : _walletImplementation (address): 0xB6d64221451edBAc7736d4C3dA7fc827457dEc03
Arg [2] : _ensManager (address): 0xC4BaAbB5b7DFF84Aa8023183E3Ca0bA3B2Fee519

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000c17d432bd8e8850fd7b32b0270f5afac65db0105
Arg [1] : 000000000000000000000000b6d64221451edbac7736d4c3da7fc827457dec03
Arg [2] : 000000000000000000000000c4baabb5b7dff84aa8023183e3ca0ba3b2fee519


Deployed Bytecode Sourcemap

6656:14256:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6656:14256:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12773:258;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12773:258:0;-1:-1:-1;;;;;12773:258:0;;:::i;:::-;;14064:117;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14064:117:0;-1:-1:-1;;;;;14064:117:0;;:::i;3965:275::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3965:275:0;-1:-1:-1;;;;;3965:275:0;;:::i;9918:298::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;9918:298:0;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;9918:298:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9918:298:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;9918:298:0;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;9918:298:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9918:298:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;9918:298:0;;-1:-1:-1;9918:298:0;-1:-1:-1;9918:298:0;;:::i;4347:231::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4347:231:0;-1:-1:-1;;;;;4347:231:0;;:::i;6921:25::-;;;:::i;:::-;;;;-1:-1:-1;;;;;6921:25:0;;;;;;;;;;;;;;6840:35;;;:::i;2625:20::-;;;:::i;13201:230::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13201:230:0;-1:-1:-1;;;;;13201:230:0;;:::i;13614:265::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13614:265:0;-1:-1:-1;;;;;13614:265:0;;:::i;3084:205::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3084:205:0;-1:-1:-1;;;;;3084:205:0;;:::i;8432:239::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;8432:239:0;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;8432:239:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8432:239:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;8432:239:0;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;8432:239:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8432:239:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;8432:239:0;;-1:-1:-1;8432:239:0;-1:-1:-1;8432:239:0;:::i;6750:29::-;;;:::i;11466:309::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;11466:309:0;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;11466:309:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11466:309:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11466:309:0;;-1:-1:-1;11466:309:0;-1:-1:-1;11466:309:0;;:::i;12167:424::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;12167:424:0;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;12167:424:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;12167:424:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;12167:424:0;;-1:-1:-1;12167:424:0;-1:-1:-1;;;;;;12167:424:0;;;;;;;;:::i;10706:445::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;10706:445:0;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;10706:445:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10706:445:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;10706:445:0;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;10706:445:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10706:445:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;10706:445:0;;-1:-1:-1;10706:445:0;-1:-1:-1;;;;;;10706:445:0;;;;;;;;:::i;9108:386::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;9108:386:0;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;9108:386:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9108:386:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;9108:386:0;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;9108:386:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9108:386:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;9108:386:0;;-1:-1:-1;9108:386:0;-1:-1:-1;9108:386:0;-1:-1:-1;;;;;9108:386:0;;:::i;6996:30::-;;;:::i;3524:41::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3524:41:0;-1:-1:-1;;;;;3524:41:0;;:::i;:::-;;;;;;;;;;;;;;;;;;12773:258;2830:5;;-1:-1:-1;;;;;2830:5:0;2816:10;:19;2808:45;;;;;-1:-1:-1;;;;;;;;;;;2808:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12866:29:0;;;;12858:68;;;;;-1:-1:-1;;;;;;;;;;;12858:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12937:14;:32;;-1:-1:-1;;;;;12937:32:0;;-1:-1:-1;;12937:32:0;;;;;;;;12985:38;;;;;;;;;;;;;;;;12773:258;:::o;14064:117::-;;:::o;3965:275::-;2830:5;;-1:-1:-1;;;;;2830:5:0;2816:10;:19;2808:45;;;;;-1:-1:-1;;;;;;;;;;;2808:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4041:22:0;;;;4033:62;;;;;-1:-1:-1;;;;;;;;;;;4033:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4110:18:0;;;;;;:8;:18;;;;;;;;:27;;4106:127;;-1:-1:-1;;;;;4154:18:0;;;;;;4175:4;4154:18;;;;;;;;:25;;-1:-1:-1;;4154:25:0;;;;;;;4199:22;;;4154:18;4199:22;3965:275;:::o;9918:298::-;3693:10;3684:20;;;;:8;:20;;;;;;;;;;;:28;;;3676:59;;;;;-1:-1:-1;;;;;;;;;;;3676:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10136:72;10164:6;10172:8;;10136:72;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;10136:72:0;;;;137:4:-1;10136:72:0;;;;;;;;;;;;;;;;;;-1:-1:-1;10182:6:0;;-1:-1:-1;10182:6:0;;;;10136:72;;10182:6;;;;10136:72;1:33:-1;99:1;81:16;;74:27;;;-1:-1;99:1;-1:-1;10202:5:0;;-1:-1:-1;10136:27:0;;-1:-1:-1;10136:72:0:i;:::-;9918:298;;;;;;:::o;4347:231::-;2830:5;;-1:-1:-1;;;;;2830:5:0;2816:10;:19;2808:45;;;;;-1:-1:-1;;;;;;;;;;;2808:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4426:18:0;;;;;;:8;:18;;;;;;;;;;;:26;;;4418:76;;;;-1:-1:-1;;;;;;;;;;;4418:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4512:18:0;;;;;;:8;:18;;;;;;4505:25;;-1:-1:-1;;4505:25:0;;;4546:24;;;4512:18;4546:24;4347:231;:::o;6921:25::-;;;-1:-1:-1;;;;;6921:25:0;;:::o;6840:35::-;;;-1:-1:-1;;;;;6840:35:0;;:::o;2625:20::-;;;-1:-1:-1;;;;;2625:20:0;;:::o;13201:230::-;2830:5;;-1:-1:-1;;;;;2830:5:0;2816:10;:19;2808:45;;;;;-1:-1:-1;;;;;;;;;;;2808:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13286:25:0;;;;13278:64;;;;;-1:-1:-1;;;;;;;;;;;13278:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13353:10;:24;;-1:-1:-1;;;;;13353:24:0;;-1:-1:-1;;13353:24:0;;;;;;;;13393:30;;;;;;;;;;;;;;;;13201:230;:::o;13614:265::-;2830:5;;-1:-1:-1;;;;;2830:5:0;2816:10;:19;2808:45;;;;;-1:-1:-1;;;;;;;;;;;2808:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13709:30:0;;;;13701:69;;;;;-1:-1:-1;;;;;;;;;;;13701:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13781:15;:34;;-1:-1:-1;;;;;13781:34:0;;-1:-1:-1;;13781:34:0;;;;;;;;13831:40;;;;;;;;;;;;;;;;13614:265;:::o;3084:205::-;2830:5;;-1:-1:-1;;;;;2830:5:0;2816:10;:19;2808:45;;;;;-1:-1:-1;;;;;;;;;;;2808:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3162:23:0;;;;3154:60;;;;;-1:-1:-1;;;;;;;;;;;3154:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3225:5;:17;;-1:-1:-1;;3225:17:0;-1:-1:-1;;;;;3225:17:0;;;;;;;3258:23;;3225:17;;3258:23;;;3084:205;:::o;8432:239::-;3693:10;3684:20;;;;:8;:20;;;;;;;;;;;:28;;;3676:59;;;;;-1:-1:-1;;;;;;;;;;;3676:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8612:51;8626:6;8634:8;;8612:51;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;8612:51:0;;;;137:4:-1;8612:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;8644:6:0;;-1:-1:-1;8644:6:0;;;;8612:51;;8644:6;;;;8612:51;1:33:-1;99:1;81:16;;74:27;;;-1:-1;99:1;-1:-1;8612:13:0;;-1:-1:-1;;8612:51:0:i;:::-;8432:239;;;;;:::o;6750:29::-;;;-1:-1:-1;;;;;6750:29:0;;:::o;11466:309::-;11653:15;11696:71;11731:6;11739:8;;11696:71;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;-1:-1;99:1;-1:-1;11761:5:0;;-1:-1:-1;11696:34:0;;-1:-1:-1;11696:71:0:i;:::-;11686:81;11466:309;-1:-1:-1;;;;;11466:309:0:o;12167:424::-;12394:15;-1:-1:-1;;;;;12435:25:0;;;;12427:65;;;;;-1:-1:-1;;;;;;;;;;;12427:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12513:70;12548:6;12556:8;;12513:70;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;12566:9:0;;-1:-1:-1;12577:5:0;;-1:-1:-1;12513:34:0;;-1:-1:-1;12513:70:0:i;:::-;12503:80;12167:424;-1:-1:-1;;;;;;12167:424:0:o;10706:445::-;3693:10;3684:20;;;;:8;:20;;;;;;;;;;;:28;;;3676:59;;;;;-1:-1:-1;;;;;;;;;;;3676:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7541:15;;-1:-1:-1;;;;;7541:15:0;:29;;7533:77;;;;-1:-1:-1;;;;;;;;;;;7533:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11004:25:0;;;;10996:65;;;;;-1:-1:-1;;;;;;;;;;;10996:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11072:71;11100:6;11108:8;;11072:71;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;11072:71:0;;;;137:4:-1;11072:71:0;;;;;;;;;;;;;;;;;;-1:-1:-1;11118:6:0;;-1:-1:-1;11118:6:0;;;;11072:71;;11118:6;;;;11072:71;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;11126:9:0;;-1:-1:-1;11137:5:0;;-1:-1:-1;11072:27:0;;-1:-1:-1;11072:71:0:i;:::-;10706:445;;;;;;;:::o;9108:386::-;3693:10;3684:20;;;;:8;:20;;;;;;;;;;;:28;;;3676:59;;;;;-1:-1:-1;;;;;;;;;;;3676:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7541:15;;-1:-1:-1;;;;;7541:15:0;:29;;7533:77;;;;-1:-1:-1;;;;;;;;;;;7533:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9368:25:0;;;;9360:65;;;;;-1:-1:-1;;;;;;;;;;;9360:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9436:50;9450:6;9458:8;;9436:50;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;9436:50:0;;;;137:4:-1;9436:50:0;;;;;;;;;;;;;;;;;;-1:-1:-1;9468:6:0;;-1:-1:-1;9468:6:0;;;;9436:50;;9468:6;;;;9436:50;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;9476:9:0;;-1:-1:-1;9436:13:0;;-1:-1:-1;;9436:50:0:i;6996:30::-;;;-1:-1:-1;;;;;6996:30:0;;:::o;3524:41::-;;;;;;;;;;;;;;;:::o;15554:808::-;15776:41;15792:6;15800:8;15810:6;15776:15;:41::i;:::-;15828:15;15846:44;15855:5;15862:6;15870:8;15880:9;15846:8;:44::i;:::-;15828:62;;15901:17;15938:24;;;;;;;;:::i;:::-;-1:-1:-1;;21:26;;;;;7:41;;87:2;69:12;;;65:26;61:2;54:38;;;15972:20:0;;15921:73;;-1:-1:-1;;;;;15972:20:0;;;;41:4:-1;15921:73:0;;;;;;30:16:-1;;;15921:73:0;;30:16:-1;36:153;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;15921:73:0;;;;;-1:-1:-1;15921:73:0;;;26:21:-1;;;6:49;;15921:73:0;;;;;16165:11;;15921:73;;-1:-1:-1;;;;16178:7:0;;16165:11;-1:-1:-1;16148:15:0;;-1:-1:-1;16137:49:0;16127:59;;16222:6;16210:19;16203:27;16200:2;;;16243:14;16240:1;16233:25;16200:2;16281:73;16309:6;16318;16326:8;16336:6;16344:9;16281:16;:73::i;:::-;15554:808;;;;;;;;:::o;14698:366::-;14825:41;14841:6;14849:8;14859:6;14825:15;:41::i;:::-;14901:20;;14891:31;;14877:11;;-1:-1:-1;;;;;14901:20:0;;14891:31;;;:::i;:::-;-1:-1:-1;;;;;14891:31:0;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;14877:45:0;-1:-1:-1;14877:45:0;14983:73;14877:45;15020:6;15028:8;15038:6;15046:9;14983:16;:73::i;18207:581::-;18421:15;18454;18472:44;18481:5;18488:6;18496:8;18506:9;18472:8;:44::i;:::-;18454:62;;18527:17;18564:24;;;;;;;;:::i;:::-;-1:-1:-1;;21:26;;;;;7:41;;87:2;69:12;;;65:26;61:2;54:38;;;18598:20:0;;18547:73;;-1:-1:-1;;;;;18598:20:0;;;;41:4:-1;18547:73:0;;;;;;30:16:-1;;;18547:73:0;;30:16:-1;36:153;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;18547:73:0;;;;;-1:-1:-1;18547:73:0;;;26:21:-1;;;6:49;;18547:73:0;;;;;18711:15;;;;;;18673:12;18656:71;;;;18695:4;18656:71;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;18656:71:0;;;;;;;-1:-1:-1;18646:82:0;;;;;;;;;;-1:-1:-1;;;;;;;18207:581:0:o;19640:514::-;-1:-1:-1;;;;;19763:20:0;;;;19755:57;;;;;-1:-1:-1;;;;;;;;;;;19755:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19831:15;;19849:1;-1:-1:-1;19823:73:0;;;;-1:-1:-1;;;;;;;;;;;19823:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19930:14;;19915:59;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19930:14:0;;;;19915:49;;19965:8;;19915:59;;;;;;;;;;;;;;;19930:14;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;19915:59:0;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19915:59:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19915:59:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19915:59:0;19907:114;;;;;;-1:-1:-1;;;;;;;;;;;19907:114:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20090:17;;20064:6;;20090:22;;20082:64;;;;;-1:-1:-1;;;;;;;;;;;20082:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19640:514;;;;:::o;19101:363::-;19219:7;-1:-1:-1;;;;;19243:23:0;;;19239:218;;;19317:5;19324:6;19332:8;19300:41;;;;;;;;;;;-1:-1:-1;;;;;19300:41:0;-1:-1:-1;;;;;19300:41:0;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;19300:41:0;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;19300:41:0;;;19290:52;;;;;;19283:59;;;;19239:218;19409:5;19416:6;19424:8;19434:9;19392:52;;;;;;;;;;;-1:-1:-1;;;;;19392:52:0;-1:-1:-1;;;;;19392:52:0;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;19392:52:0;;;;;;;-1:-1:-1;;;;;19392:52:0;-1:-1:-1;;;;;19392:52:0;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;19392:52:0;;;19382:63;;;;;;19375:70;;19239:218;19101:363;;;;;;:::o;16719:1115::-;17024:32;17073:8;:15;17091:1;17073:19;17059:34;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;17059:34:0;;17024:69;;17133:4;17104:15;17120:1;17104:18;;;;;;;;;;-1:-1:-1;;;;;17104:34:0;;;:18;;;;;;;;;;:34;17154:6;17149:106;17170:8;:15;17166:1;:19;17149:106;;;17232:8;17241:1;17232:11;;;;;;;;;;;;;;;;;;17207:15;17223:1;17227;17223:5;17207:22;;;;;;;;;;-1:-1:-1;;;;;17207:36:0;;;:22;;;;;;;;;;:36;17187:3;;17149:106;;;-1:-1:-1;17339:37:0;;;;;;-1:-1:-1;;;;;17339:37:0;;;;;;;;;;;;;;;;;;;;;;;:12;;;;;;17352:6;;17360:15;;17339:37;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;17339:37:0;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17339:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;;;;;;17426:23:0;;;17422:121;;17483:15;;17466:65;;;;;;-1:-1:-1;;;;;17466:65:0;;;;;;;;;;;;;;;;17483:15;;;;;17466:45;;:65;;;;;17483:15;;17466:65;;;;;;;17483:15;;17466:65;;;5:2:-1;;;;30:1;27;20:12;5:2;17466:65:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17466:65:0;;;;17422:121;17578:44;17605:7;17615:6;17578:18;:44::i;:::-;17692:45;;;;;;17724:4;17692:45;;;;17731:5;17692:45;;;;;;;;-1:-1:-1;;;;;17692:23:0;;;;;:45;;;;;;;;;;;17731:5;17692:23;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;17692:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17692:45:0;;;;17816:9;-1:-1:-1;;;;;17776:50:0;17808:6;-1:-1:-1;;;;;17776:50:0;17798:7;-1:-1:-1;;;;;17776:50:0;;;;;;;;;;;16719:1115;;;;;;:::o;20338:571::-;20459:19;20493:10;;;;;;;;;-1:-1:-1;;;;;20493:10:0;-1:-1:-1;;;;;20481:35:0;;:37;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20481:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20481:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20481:37:0;20617:10;;;20555:86;;;-1:-1:-1;;;;;20617:10:0;;;20555:86;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;20555:86:0;;;;;;20481:37;25:18:-1;;;61:17;;20555:86:0;182:15:-1;20555:86:0;179:29:-1;160:49;;20682:48:0;;;;;;;20481:37;;-1:-1:-1;20555:86:0;;20617:10;;20682:46;;:48;;;;20481:37;20682:48;;;;;;;20617:10;20682:48;;;5:2:-1;;;;30:1;27;20:12;5:2;20682:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20682:48:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20682:48:0;20741:62;;;;;-1:-1:-1;;;;;20741:62:0;;;;;;;;;20789:1;20741:62;;;;;;;;;;;;;;;;;;;;;20682:48;;-1:-1:-1;20741:26:0;;;;;;20682:48;;20789:1;;20792:10;;20741:62;;;;;;;20682:48;20741:62;;;;;;20789:1;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;20741:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20741:62:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20741:62:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;20741:62:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;20741:62:0;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;-1:-1;;20864:10:0;;;20852:49;;;;;;-1:-1:-1;;;;;20852:49:0;;;;;;;;;;;;;;;;;;;;;20864:10;;;;;-1:-1:-1;20852:32:0;;-1:-1:-1;20885:6:0;;-1:-1:-1;20893:7:0;;-1:-1:-1;20852:49:0;;;;;;;;;;;;;20864:10;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;20852:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20852:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20852:49:0;;;;20338:571;;;;;:::o;6656:14256::-;;;;;;;;:::o

Swarm Source

bzzr://1646289776505048747e848d8c96bb3ca8d0290d10176cc2429cae1233c7c135

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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