Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 990 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Add Whitelisted | 21666888 | 6 days ago | IN | 0 ETH | 0.00344633 | ||||
Add Whitelisted | 21643604 | 9 days ago | IN | 0 ETH | 0.00064837 | ||||
Add Whitelisted | 21589894 | 17 days ago | IN | 0 ETH | 0.00061111 | ||||
Add Whitelisted | 21582735 | 18 days ago | IN | 0 ETH | 0.0006517 | ||||
Add Whitelisted | 21571984 | 19 days ago | IN | 0 ETH | 0.00050277 | ||||
Add Whitelisted | 21516475 | 27 days ago | IN | 0 ETH | 0.00091319 | ||||
Add Whitelisted | 21514686 | 27 days ago | IN | 0 ETH | 0.00032492 | ||||
Add Whitelisted | 21514685 | 27 days ago | IN | 0 ETH | 0.0003194 | ||||
Add Whitelisted | 21514683 | 27 days ago | IN | 0 ETH | 0.0003324 | ||||
Add Whitelisted | 21514682 | 27 days ago | IN | 0 ETH | 0.00032098 | ||||
Add Whitelisted | 21486030 | 31 days ago | IN | 0 ETH | 0.00048223 | ||||
Add Whitelisted | 21471722 | 33 days ago | IN | 0 ETH | 0.00062319 | ||||
Add Whitelisted | 21422091 | 40 days ago | IN | 0 ETH | 0.00118692 | ||||
Add Whitelisted | 21418504 | 41 days ago | IN | 0 ETH | 0.00083827 | ||||
Add Whitelisted | 21364780 | 48 days ago | IN | 0 ETH | 0.0016557 | ||||
Add Whitelisted | 21351626 | 50 days ago | IN | 0 ETH | 0.00112706 | ||||
Add Whitelisted | 21326569 | 53 days ago | IN | 0 ETH | 0.00229242 | ||||
Add Whitelisted | 21288999 | 59 days ago | IN | 0 ETH | 0.00061866 | ||||
Add Whitelisted | 21280101 | 60 days ago | IN | 0 ETH | 0.00182611 | ||||
Add Whitelisted | 21274732 | 61 days ago | IN | 0 ETH | 0.00397674 | ||||
Add Whitelisted | 21274731 | 61 days ago | IN | 0 ETH | 0.00087396 | ||||
Add Whitelisted | 21271146 | 61 days ago | IN | 0 ETH | 0.00063411 | ||||
Add Whitelisted | 21237118 | 66 days ago | IN | 0 ETH | 0.00188854 | ||||
Add Whitelisted | 21228174 | 67 days ago | IN | 0 ETH | 0.00146097 | ||||
Add Whitelisted | 21215617 | 69 days ago | IN | 0 ETH | 0.00137485 |
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
Contract Source Code (Solidity Multiple files format)
/* * 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]; } }
// 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; } }
// 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
- No Contract Security Audit Submitted- Submit Audit Here
[{"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"}]
Contract Creation Code
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
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.