Overview
ETH Balance
0 ETH
ETH Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 10 from a total of 10 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Revoke Role | 267913 | 82 days ago | IN | 0 ETH | 0.00000435 | ||||
Grant Role | 267911 | 82 days ago | IN | 0 ETH | 0.00000552 | ||||
Remove Pool Admi... | 267902 | 82 days ago | IN | 0 ETH | 0.00000436 | ||||
Add Pool Admin | 267900 | 82 days ago | IN | 0 ETH | 0.00000544 | ||||
Remove Emergency... | 267898 | 82 days ago | IN | 0 ETH | 0.00000435 | ||||
Add Emergency Ad... | 267896 | 82 days ago | IN | 0 ETH | 0.00000572 | ||||
Remove Risk Admi... | 264596 | 83 days ago | IN | 0 ETH | 0.00000394 | ||||
Add Risk Admin | 264591 | 83 days ago | IN | 0 ETH | 0.00000734 | ||||
Add Emergency Ad... | 264473 | 83 days ago | IN | 0 ETH | 0.00000734 | ||||
Add Pool Admin | 264467 | 83 days ago | IN | 0 ETH | 0.00000972 |
Latest 1 internal transaction
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
264461 | 83 days ago | Contract Creation | 0 ETH |
Loading...
Loading
This contract contains unverified libraries: FlashLoanLogic
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
ACLManager
Compiler Version
v0.8.12+commit.f00d7308
ZkSolc Version
v1.5.0
Optimization Enabled:
Yes with Mode 3
Other Settings:
berlin EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: BUSL-1.1 pragma solidity 0.8.12; import {AccessControl} from '../../dependencies/openzeppelin/contracts/AccessControl.sol'; import {IPoolAddressesProvider} from '../../interfaces/IPoolAddressesProvider.sol'; import {IACLManager} from '../../interfaces/IACLManager.sol'; import {Errors} from '../libraries/helpers/Errors.sol'; /** * @title ACLManager * @author Aave * @notice Access Control List Manager. Main registry of system roles and permissions. */ contract ACLManager is AccessControl, IACLManager { bytes32 public constant override POOL_ADMIN_ROLE = keccak256('POOL_ADMIN'); bytes32 public constant override EMERGENCY_ADMIN_ROLE = keccak256('EMERGENCY_ADMIN'); bytes32 public constant override RISK_ADMIN_ROLE = keccak256('RISK_ADMIN'); bytes32 public constant override FLASH_BORROWER_ROLE = keccak256('FLASH_BORROWER'); bytes32 public constant override BRIDGE_ROLE = keccak256('BRIDGE'); bytes32 public constant override ASSET_LISTING_ADMIN_ROLE = keccak256('ASSET_LISTING_ADMIN'); IPoolAddressesProvider public immutable ADDRESSES_PROVIDER; /** * @dev Constructor * @dev The ACL admin should be initialized at the addressesProvider beforehand * @param provider The address of the PoolAddressesProvider */ constructor(IPoolAddressesProvider provider) { ADDRESSES_PROVIDER = provider; address aclAdmin = provider.getACLAdmin(); require(aclAdmin != address(0), Errors.ACL_ADMIN_CANNOT_BE_ZERO); _setupRole(DEFAULT_ADMIN_ROLE, aclAdmin); } /// @inheritdoc IACLManager function setRoleAdmin( bytes32 role, bytes32 adminRole ) external override onlyRole(DEFAULT_ADMIN_ROLE) { _setRoleAdmin(role, adminRole); } /// @inheritdoc IACLManager function addPoolAdmin(address admin) external override { grantRole(POOL_ADMIN_ROLE, admin); } /// @inheritdoc IACLManager function removePoolAdmin(address admin) external override { revokeRole(POOL_ADMIN_ROLE, admin); } /// @inheritdoc IACLManager function isPoolAdmin(address admin) external view override returns (bool) { return hasRole(POOL_ADMIN_ROLE, admin); } /// @inheritdoc IACLManager function addEmergencyAdmin(address admin) external override { grantRole(EMERGENCY_ADMIN_ROLE, admin); } /// @inheritdoc IACLManager function removeEmergencyAdmin(address admin) external override { revokeRole(EMERGENCY_ADMIN_ROLE, admin); } /// @inheritdoc IACLManager function isEmergencyAdmin(address admin) external view override returns (bool) { return hasRole(EMERGENCY_ADMIN_ROLE, admin); } /// @inheritdoc IACLManager function addRiskAdmin(address admin) external override { grantRole(RISK_ADMIN_ROLE, admin); } /// @inheritdoc IACLManager function removeRiskAdmin(address admin) external override { revokeRole(RISK_ADMIN_ROLE, admin); } /// @inheritdoc IACLManager function isRiskAdmin(address admin) external view override returns (bool) { return hasRole(RISK_ADMIN_ROLE, admin); } /// @inheritdoc IACLManager function addFlashBorrower(address borrower) external override { grantRole(FLASH_BORROWER_ROLE, borrower); } /// @inheritdoc IACLManager function removeFlashBorrower(address borrower) external override { revokeRole(FLASH_BORROWER_ROLE, borrower); } /// @inheritdoc IACLManager function isFlashBorrower(address borrower) external view override returns (bool) { return hasRole(FLASH_BORROWER_ROLE, borrower); } /// @inheritdoc IACLManager function addBridge(address bridge) external override { grantRole(BRIDGE_ROLE, bridge); } /// @inheritdoc IACLManager function removeBridge(address bridge) external override { revokeRole(BRIDGE_ROLE, bridge); } /// @inheritdoc IACLManager function isBridge(address bridge) external view override returns (bool) { return hasRole(BRIDGE_ROLE, bridge); } /// @inheritdoc IACLManager function addAssetListingAdmin(address admin) external override { grantRole(ASSET_LISTING_ADMIN_ROLE, admin); } /// @inheritdoc IACLManager function removeAssetListingAdmin(address admin) external override { revokeRole(ASSET_LISTING_ADMIN_ROLE, admin); } /// @inheritdoc IACLManager function isAssetListingAdmin(address admin) external view override returns (bool) { return hasRole(ASSET_LISTING_ADMIN_ROLE, admin); } }
// SPDX-License-Identifier: AGPL-3.0 pragma solidity ^0.8.0; import {IPoolAddressesProvider} from './IPoolAddressesProvider.sol'; /** * @title IACLManager * @author Aave * @notice Defines the basic interface for the ACL Manager */ interface IACLManager { /** * @notice Returns the contract address of the PoolAddressesProvider * @return The address of the PoolAddressesProvider */ function ADDRESSES_PROVIDER() external view returns (IPoolAddressesProvider); /** * @notice Returns the identifier of the PoolAdmin role * @return The id of the PoolAdmin role */ function POOL_ADMIN_ROLE() external view returns (bytes32); /** * @notice Returns the identifier of the EmergencyAdmin role * @return The id of the EmergencyAdmin role */ function EMERGENCY_ADMIN_ROLE() external view returns (bytes32); /** * @notice Returns the identifier of the RiskAdmin role * @return The id of the RiskAdmin role */ function RISK_ADMIN_ROLE() external view returns (bytes32); /** * @notice Returns the identifier of the FlashBorrower role * @return The id of the FlashBorrower role */ function FLASH_BORROWER_ROLE() external view returns (bytes32); /** * @notice Returns the identifier of the Bridge role * @return The id of the Bridge role */ function BRIDGE_ROLE() external view returns (bytes32); /** * @notice Returns the identifier of the AssetListingAdmin role * @return The id of the AssetListingAdmin role */ function ASSET_LISTING_ADMIN_ROLE() external view returns (bytes32); /** * @notice Set the role as admin of a specific role. * @dev By default the admin role for all roles is `DEFAULT_ADMIN_ROLE`. * @param role The role to be managed by the admin role * @param adminRole The admin role */ function setRoleAdmin(bytes32 role, bytes32 adminRole) external; /** * @notice Adds a new admin as PoolAdmin * @param admin The address of the new admin */ function addPoolAdmin(address admin) external; /** * @notice Removes an admin as PoolAdmin * @param admin The address of the admin to remove */ function removePoolAdmin(address admin) external; /** * @notice Returns true if the address is PoolAdmin, false otherwise * @param admin The address to check * @return True if the given address is PoolAdmin, false otherwise */ function isPoolAdmin(address admin) external view returns (bool); /** * @notice Adds a new admin as EmergencyAdmin * @param admin The address of the new admin */ function addEmergencyAdmin(address admin) external; /** * @notice Removes an admin as EmergencyAdmin * @param admin The address of the admin to remove */ function removeEmergencyAdmin(address admin) external; /** * @notice Returns true if the address is EmergencyAdmin, false otherwise * @param admin The address to check * @return True if the given address is EmergencyAdmin, false otherwise */ function isEmergencyAdmin(address admin) external view returns (bool); /** * @notice Adds a new admin as RiskAdmin * @param admin The address of the new admin */ function addRiskAdmin(address admin) external; /** * @notice Removes an admin as RiskAdmin * @param admin The address of the admin to remove */ function removeRiskAdmin(address admin) external; /** * @notice Returns true if the address is RiskAdmin, false otherwise * @param admin The address to check * @return True if the given address is RiskAdmin, false otherwise */ function isRiskAdmin(address admin) external view returns (bool); /** * @notice Adds a new address as FlashBorrower * @param borrower The address of the new FlashBorrower */ function addFlashBorrower(address borrower) external; /** * @notice Removes an address as FlashBorrower * @param borrower The address of the FlashBorrower to remove */ function removeFlashBorrower(address borrower) external; /** * @notice Returns true if the address is FlashBorrower, false otherwise * @param borrower The address to check * @return True if the given address is FlashBorrower, false otherwise */ function isFlashBorrower(address borrower) external view returns (bool); /** * @notice Adds a new address as Bridge * @param bridge The address of the new Bridge */ function addBridge(address bridge) external; /** * @notice Removes an address as Bridge * @param bridge The address of the bridge to remove */ function removeBridge(address bridge) external; /** * @notice Returns true if the address is Bridge, false otherwise * @param bridge The address to check * @return True if the given address is Bridge, false otherwise */ function isBridge(address bridge) external view returns (bool); /** * @notice Adds a new admin as AssetListingAdmin * @param admin The address of the new admin */ function addAssetListingAdmin(address admin) external; /** * @notice Removes an admin as AssetListingAdmin * @param admin The address of the admin to remove */ function removeAssetListingAdmin(address admin) external; /** * @notice Returns true if the address is AssetListingAdmin, false otherwise * @param admin The address to check * @return True if the given address is AssetListingAdmin, false otherwise */ function isAssetListingAdmin(address admin) external view returns (bool); }
// SPDX-License-Identifier: AGPL-3.0 pragma solidity ^0.8.0; /** * @title IPoolAddressesProvider * @author Aave * @notice Defines the basic interface for a Pool Addresses Provider. */ interface IPoolAddressesProvider { /** * @dev Emitted when the market identifier is updated. * @param oldMarketId The old id of the market * @param newMarketId The new id of the market */ event MarketIdSet(string indexed oldMarketId, string indexed newMarketId); /** * @dev Emitted when the pool is updated. * @param oldAddress The old address of the Pool * @param newAddress The new address of the Pool */ event PoolUpdated(address indexed oldAddress, address indexed newAddress); /** * @dev Emitted when the pool configurator is updated. * @param oldAddress The old address of the PoolConfigurator * @param newAddress The new address of the PoolConfigurator */ event PoolConfiguratorUpdated(address indexed oldAddress, address indexed newAddress); /** * @dev Emitted when the price oracle is updated. * @param oldAddress The old address of the PriceOracle * @param newAddress The new address of the PriceOracle */ event PriceOracleUpdated(address indexed oldAddress, address indexed newAddress); /** * @dev Emitted when the ACL manager is updated. * @param oldAddress The old address of the ACLManager * @param newAddress The new address of the ACLManager */ event ACLManagerUpdated(address indexed oldAddress, address indexed newAddress); /** * @dev Emitted when the ACL admin is updated. * @param oldAddress The old address of the ACLAdmin * @param newAddress The new address of the ACLAdmin */ event ACLAdminUpdated(address indexed oldAddress, address indexed newAddress); /** * @dev Emitted when the price oracle sentinel is updated. * @param oldAddress The old address of the PriceOracleSentinel * @param newAddress The new address of the PriceOracleSentinel */ event PriceOracleSentinelUpdated(address indexed oldAddress, address indexed newAddress); /** * @dev Emitted when the pool data provider is updated. * @param oldAddress The old address of the PoolDataProvider * @param newAddress The new address of the PoolDataProvider */ event PoolDataProviderUpdated(address indexed oldAddress, address indexed newAddress); /** * @dev Emitted when a new proxy is created. * @param id The identifier of the proxy * @param proxyAddress The address of the created proxy contract * @param implementationAddress The address of the implementation contract */ event ProxyCreated( bytes32 indexed id, address indexed proxyAddress, address indexed implementationAddress ); /** * @dev Emitted when a new non-proxied contract address is registered. * @param id The identifier of the contract * @param oldAddress The address of the old contract * @param newAddress The address of the new contract */ event AddressSet(bytes32 indexed id, address indexed oldAddress, address indexed newAddress); /** * @dev Emitted when the implementation of the proxy registered with id is updated * @param id The identifier of the contract * @param proxyAddress The address of the proxy contract * @param oldImplementationAddress The address of the old implementation contract * @param newImplementationAddress The address of the new implementation contract */ event AddressSetAsProxy( bytes32 indexed id, address indexed proxyAddress, address oldImplementationAddress, address indexed newImplementationAddress ); /** * @notice Returns the id of the Aave market to which this contract points to. * @return The market id */ function getMarketId() external view returns (string memory); /** * @notice Associates an id with a specific PoolAddressesProvider. * @dev This can be used to create an onchain registry of PoolAddressesProviders to * identify and validate multiple Aave markets. * @param newMarketId The market id */ function setMarketId(string calldata newMarketId) external; /** * @notice Returns an address by its identifier. * @dev The returned address might be an EOA or a contract, potentially proxied * @dev It returns ZERO if there is no registered address with the given id * @param id The id * @return The address of the registered for the specified id */ function getAddress(bytes32 id) external view returns (address); /** * @notice General function to update the implementation of a proxy registered with * certain `id`. If there is no proxy registered, it will instantiate one and * set as implementation the `newImplementationAddress`. * @dev IMPORTANT Use this function carefully, only for ids that don't have an explicit * setter function, in order to avoid unexpected consequences * @param id The id * @param newImplementationAddress The address of the new implementation */ function setAddressAsProxy(bytes32 id, address newImplementationAddress) external; /** * @notice Sets an address for an id replacing the address saved in the addresses map. * @dev IMPORTANT Use this function carefully, as it will do a hard replacement * @param id The id * @param newAddress The address to set */ function setAddress(bytes32 id, address newAddress) external; /** * @notice Returns the address of the Pool proxy. * @return The Pool proxy address */ function getPool() external view returns (address); /** * @notice Updates the implementation of the Pool, or creates a proxy * setting the new `pool` implementation when the function is called for the first time. * @param newPoolImpl The new Pool implementation */ function setPoolImpl(address newPoolImpl) external; /** * @notice Returns the address of the PoolConfigurator proxy. * @return The PoolConfigurator proxy address */ function getPoolConfigurator() external view returns (address); /** * @notice Updates the implementation of the PoolConfigurator, or creates a proxy * setting the new `PoolConfigurator` implementation when the function is called for the first time. * @param newPoolConfiguratorImpl The new PoolConfigurator implementation */ function setPoolConfiguratorImpl(address newPoolConfiguratorImpl) external; /** * @notice Returns the address of the price oracle. * @return The address of the PriceOracle */ function getPriceOracle() external view returns (address); /** * @notice Updates the address of the price oracle. * @param newPriceOracle The address of the new PriceOracle */ function setPriceOracle(address newPriceOracle) external; /** * @notice Returns the address of the ACL manager. * @return The address of the ACLManager */ function getACLManager() external view returns (address); /** * @notice Updates the address of the ACL manager. * @param newAclManager The address of the new ACLManager */ function setACLManager(address newAclManager) external; /** * @notice Returns the address of the ACL admin. * @return The address of the ACL admin */ function getACLAdmin() external view returns (address); /** * @notice Updates the address of the ACL admin. * @param newAclAdmin The address of the new ACL admin */ function setACLAdmin(address newAclAdmin) external; /** * @notice Returns the address of the price oracle sentinel. * @return The address of the PriceOracleSentinel */ function getPriceOracleSentinel() external view returns (address); /** * @notice Updates the address of the price oracle sentinel. * @param newPriceOracleSentinel The address of the new PriceOracleSentinel */ function setPriceOracleSentinel(address newPriceOracleSentinel) external; /** * @notice Returns the address of the data provider. * @return The address of the DataProvider */ function getPoolDataProvider() external view returns (address); /** * @notice Updates the address of the data provider. * @param newDataProvider The address of the new DataProvider */ function setPoolDataProvider(address newDataProvider) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.8.12; import './IAccessControl.sol'; import './Context.sol'; import './Strings.sol'; import './ERC165.sol'; /** * @dev Contract module that allows children to implement role-based access * control mechanisms. This is a lightweight version that doesn't allow enumerating role * members except through off-chain means by accessing the contract event logs. Some * applications may benefit from on-chain enumerability, for those cases see * {AccessControlEnumerable}. * * Roles are referred to by their `bytes32` identifier. These should be exposed * in the external API and be unique. The best way to achieve this is by * using `public constant` hash digests: * * ``` * bytes32 public constant MY_ROLE = keccak256("MY_ROLE"); * ``` * * Roles can be used to represent a set of permissions. To restrict access to a * function call, use {hasRole}: * * ``` * function foo() public { * require(hasRole(MY_ROLE, msg.sender)); * ... * } * ``` * * Roles can be granted and revoked dynamically via the {grantRole} and * {revokeRole} functions. Each role has an associated admin role, and only * accounts that have a role's admin role can call {grantRole} and {revokeRole}. * * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means * that only accounts with this role will be able to grant or revoke other * roles. More complex role relationships can be created by using * {_setRoleAdmin}. * * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to * grant and revoke this role. Extra precautions should be taken to secure * accounts that have been granted it. */ abstract contract AccessControl is Context, IAccessControl, ERC165 { struct RoleData { mapping(address => bool) members; bytes32 adminRole; } mapping(bytes32 => RoleData) private _roles; bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; /** * @dev Modifier that checks that an account has a specific role. Reverts * with a standardized message including the required role. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ * * _Available since v4.1._ */ modifier onlyRole(bytes32 role) { _checkRole(role, _msgSender()); _; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId); } /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) public view override returns (bool) { return _roles[role].members[account]; } /** * @dev Revert with a standard message if `account` is missing `role`. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ */ function _checkRole(bytes32 role, address account) internal view { if (!hasRole(role, account)) { revert( string( abi.encodePacked( 'AccessControl: account ', Strings.toHexString(uint160(account), 20), ' is missing role ', Strings.toHexString(uint256(role), 32) ) ) ); } } /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) public view override returns (bytes32) { return _roles[role].adminRole; } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole( bytes32 role, address account ) public virtual override onlyRole(getRoleAdmin(role)) { _grantRole(role, account); } /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole( bytes32 role, address account ) public virtual override onlyRole(getRoleAdmin(role)) { _revokeRole(role, account); } /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been granted `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. */ function renounceRole(bytes32 role, address account) public virtual override { require(account == _msgSender(), 'AccessControl: can only renounce roles for self'); _revokeRole(role, account); } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. Note that unlike {grantRole}, this function doesn't perform any * checks on the calling account. * * [WARNING] * ==== * This function should only be called from the constructor when setting * up the initial roles for the system. * * Using this function in any other way is effectively circumventing the admin * system imposed by {AccessControl}. * ==== */ function _setupRole(bytes32 role, address account) internal virtual { _grantRole(role, account); } /** * @dev Sets `adminRole` as ``role``'s admin role. * * Emits a {RoleAdminChanged} event. */ function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual { bytes32 previousAdminRole = getRoleAdmin(role); _roles[role].adminRole = adminRole; emit RoleAdminChanged(role, previousAdminRole, adminRole); } function _grantRole(bytes32 role, address account) private { if (!hasRole(role, account)) { _roles[role].members[account] = true; emit RoleGranted(role, account, _msgSender()); } } function _revokeRole(bytes32 role, address account) private { if (hasRole(role, account)) { _roles[role].members[account] = false; emit RoleRevoked(role, account, _msgSender()); } } }
// SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.0; /** * @title Errors library * @author Aave * @notice Defines the error messages emitted by the different contracts of the Aave protocol */ library Errors { string public constant CALLER_NOT_POOL_ADMIN = '1'; // 'The caller of the function is not a pool admin' string public constant CALLER_NOT_EMERGENCY_ADMIN = '2'; // 'The caller of the function is not an emergency admin' string public constant CALLER_NOT_POOL_OR_EMERGENCY_ADMIN = '3'; // 'The caller of the function is not a pool or emergency admin' string public constant CALLER_NOT_RISK_OR_POOL_ADMIN = '4'; // 'The caller of the function is not a risk or pool admin' string public constant CALLER_NOT_ASSET_LISTING_OR_POOL_ADMIN = '5'; // 'The caller of the function is not an asset listing or pool admin' string public constant CALLER_NOT_BRIDGE = '6'; // 'The caller of the function is not a bridge' string public constant ADDRESSES_PROVIDER_NOT_REGISTERED = '7'; // 'Pool addresses provider is not registered' string public constant INVALID_ADDRESSES_PROVIDER_ID = '8'; // 'Invalid id for the pool addresses provider' string public constant NOT_CONTRACT = '9'; // 'Address is not a contract' string public constant CALLER_NOT_POOL_CONFIGURATOR = '10'; // 'The caller of the function is not the pool configurator' string public constant CALLER_NOT_ATOKEN = '11'; // 'The caller of the function is not an AToken' string public constant INVALID_ADDRESSES_PROVIDER = '12'; // 'The address of the pool addresses provider is invalid' string public constant INVALID_FLASHLOAN_EXECUTOR_RETURN = '13'; // 'Invalid return value of the flashloan executor function' string public constant RESERVE_ALREADY_ADDED = '14'; // 'Reserve has already been added to reserve list' string public constant NO_MORE_RESERVES_ALLOWED = '15'; // 'Maximum amount of reserves in the pool reached' string public constant EMODE_CATEGORY_RESERVED = '16'; // 'Zero eMode category is reserved for volatile heterogeneous assets' string public constant INVALID_EMODE_CATEGORY_ASSIGNMENT = '17'; // 'Invalid eMode category assignment to asset' string public constant RESERVE_LIQUIDITY_NOT_ZERO = '18'; // 'The liquidity of the reserve needs to be 0' string public constant FLASHLOAN_PREMIUM_INVALID = '19'; // 'Invalid flashloan premium' string public constant INVALID_RESERVE_PARAMS = '20'; // 'Invalid risk parameters for the reserve' string public constant INVALID_EMODE_CATEGORY_PARAMS = '21'; // 'Invalid risk parameters for the eMode category' string public constant BRIDGE_PROTOCOL_FEE_INVALID = '22'; // 'Invalid bridge protocol fee' string public constant CALLER_MUST_BE_POOL = '23'; // 'The caller of this function must be a pool' string public constant INVALID_MINT_AMOUNT = '24'; // 'Invalid amount to mint' string public constant INVALID_BURN_AMOUNT = '25'; // 'Invalid amount to burn' string public constant INVALID_AMOUNT = '26'; // 'Amount must be greater than 0' string public constant RESERVE_INACTIVE = '27'; // 'Action requires an active reserve' string public constant RESERVE_FROZEN = '28'; // 'Action cannot be performed because the reserve is frozen' string public constant RESERVE_PAUSED = '29'; // 'Action cannot be performed because the reserve is paused' string public constant BORROWING_NOT_ENABLED = '30'; // 'Borrowing is not enabled' string public constant STABLE_BORROWING_NOT_ENABLED = '31'; // 'Stable borrowing is not enabled' string public constant NOT_ENOUGH_AVAILABLE_USER_BALANCE = '32'; // 'User cannot withdraw more than the available balance' string public constant INVALID_INTEREST_RATE_MODE_SELECTED = '33'; // 'Invalid interest rate mode selected' string public constant COLLATERAL_BALANCE_IS_ZERO = '34'; // 'The collateral balance is 0' string public constant HEALTH_FACTOR_LOWER_THAN_LIQUIDATION_THRESHOLD = '35'; // 'Health factor is lesser than the liquidation threshold' string public constant COLLATERAL_CANNOT_COVER_NEW_BORROW = '36'; // 'There is not enough collateral to cover a new borrow' string public constant COLLATERAL_SAME_AS_BORROWING_CURRENCY = '37'; // 'Collateral is (mostly) the same currency that is being borrowed' string public constant AMOUNT_BIGGER_THAN_MAX_LOAN_SIZE_STABLE = '38'; // 'The requested amount is greater than the max loan size in stable rate mode' string public constant NO_DEBT_OF_SELECTED_TYPE = '39'; // 'For repayment of a specific type of debt, the user needs to have debt that type' string public constant NO_EXPLICIT_AMOUNT_TO_REPAY_ON_BEHALF = '40'; // 'To repay on behalf of a user an explicit amount to repay is needed' string public constant NO_OUTSTANDING_STABLE_DEBT = '41'; // 'User does not have outstanding stable rate debt on this reserve' string public constant NO_OUTSTANDING_VARIABLE_DEBT = '42'; // 'User does not have outstanding variable rate debt on this reserve' string public constant UNDERLYING_BALANCE_ZERO = '43'; // 'The underlying balance needs to be greater than 0' string public constant INTEREST_RATE_REBALANCE_CONDITIONS_NOT_MET = '44'; // 'Interest rate rebalance conditions were not met' string public constant HEALTH_FACTOR_NOT_BELOW_THRESHOLD = '45'; // 'Health factor is not below the threshold' string public constant COLLATERAL_CANNOT_BE_LIQUIDATED = '46'; // 'The collateral chosen cannot be liquidated' string public constant SPECIFIED_CURRENCY_NOT_BORROWED_BY_USER = '47'; // 'User did not borrow the specified currency' string public constant INCONSISTENT_FLASHLOAN_PARAMS = '49'; // 'Inconsistent flashloan parameters' string public constant BORROW_CAP_EXCEEDED = '50'; // 'Borrow cap is exceeded' string public constant SUPPLY_CAP_EXCEEDED = '51'; // 'Supply cap is exceeded' string public constant UNBACKED_MINT_CAP_EXCEEDED = '52'; // 'Unbacked mint cap is exceeded' string public constant DEBT_CEILING_EXCEEDED = '53'; // 'Debt ceiling is exceeded' string public constant UNDERLYING_CLAIMABLE_RIGHTS_NOT_ZERO = '54'; // 'Claimable rights over underlying not zero (aToken supply or accruedToTreasury)' string public constant STABLE_DEBT_NOT_ZERO = '55'; // 'Stable debt supply is not zero' string public constant VARIABLE_DEBT_SUPPLY_NOT_ZERO = '56'; // 'Variable debt supply is not zero' string public constant LTV_VALIDATION_FAILED = '57'; // 'Ltv validation failed' string public constant INCONSISTENT_EMODE_CATEGORY = '58'; // 'Inconsistent eMode category' string public constant PRICE_ORACLE_SENTINEL_CHECK_FAILED = '59'; // 'Price oracle sentinel validation failed' string public constant ASSET_NOT_BORROWABLE_IN_ISOLATION = '60'; // 'Asset is not borrowable in isolation mode' string public constant RESERVE_ALREADY_INITIALIZED = '61'; // 'Reserve has already been initialized' string public constant USER_IN_ISOLATION_MODE_OR_LTV_ZERO = '62'; // 'User is in isolation mode or ltv is zero' string public constant INVALID_LTV = '63'; // 'Invalid ltv parameter for the reserve' string public constant INVALID_LIQ_THRESHOLD = '64'; // 'Invalid liquidity threshold parameter for the reserve' string public constant INVALID_LIQ_BONUS = '65'; // 'Invalid liquidity bonus parameter for the reserve' string public constant INVALID_DECIMALS = '66'; // 'Invalid decimals parameter of the underlying asset of the reserve' string public constant INVALID_RESERVE_FACTOR = '67'; // 'Invalid reserve factor parameter for the reserve' string public constant INVALID_BORROW_CAP = '68'; // 'Invalid borrow cap for the reserve' string public constant INVALID_SUPPLY_CAP = '69'; // 'Invalid supply cap for the reserve' string public constant INVALID_LIQUIDATION_PROTOCOL_FEE = '70'; // 'Invalid liquidation protocol fee for the reserve' string public constant INVALID_EMODE_CATEGORY = '71'; // 'Invalid eMode category for the reserve' string public constant INVALID_UNBACKED_MINT_CAP = '72'; // 'Invalid unbacked mint cap for the reserve' string public constant INVALID_DEBT_CEILING = '73'; // 'Invalid debt ceiling for the reserve string public constant INVALID_RESERVE_INDEX = '74'; // 'Invalid reserve index' string public constant ACL_ADMIN_CANNOT_BE_ZERO = '75'; // 'ACL admin cannot be set to the zero address' string public constant INCONSISTENT_PARAMS_LENGTH = '76'; // 'Array parameters that should be equal length are not' string public constant ZERO_ADDRESS_NOT_VALID = '77'; // 'Zero address not valid' string public constant INVALID_EXPIRATION = '78'; // 'Invalid expiration' string public constant INVALID_SIGNATURE = '79'; // 'Invalid signature' string public constant OPERATION_NOT_SUPPORTED = '80'; // 'Operation not supported' string public constant DEBT_CEILING_NOT_ZERO = '81'; // 'Debt ceiling is not zero' string public constant ASSET_NOT_LISTED = '82'; // 'Asset is not listed' string public constant INVALID_OPTIMAL_USAGE_RATIO = '83'; // 'Invalid optimal usage ratio' string public constant INVALID_OPTIMAL_STABLE_TO_TOTAL_DEBT_RATIO = '84'; // 'Invalid optimal stable to total debt ratio' string public constant UNDERLYING_CANNOT_BE_RESCUED = '85'; // 'The underlying asset cannot be rescued' string public constant ADDRESSES_PROVIDER_ALREADY_ADDED = '86'; // 'Reserve has already been added to reserve list' string public constant POOL_ADDRESSES_DO_NOT_MATCH = '87'; // 'The token implementation pool address and the pool address provided by the initializing pool do not match' string public constant STABLE_BORROWING_ENABLED = '88'; // 'Stable borrowing is enabled' string public constant SILOED_BORROWING_VIOLATION = '89'; // 'User is trying to borrow multiple assets including a siloed one' string public constant RESERVE_DEBT_NOT_ZERO = '90'; // the total debt of the reserve needs to be 0 string public constant FLASHLOAN_DISABLED = '91'; // FlashLoaning for this asset is disabled }
// SPDX-License-Identifier: MIT pragma solidity 0.8.12; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = '0123456789abcdef'; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return '0'; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return '0x00'; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = '0'; buffer[1] = 'x'; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, 'Strings: hex length insufficient'); return string(buffer); } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.12; import './IERC165.sol'; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.12; /* * @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 payable(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.8.12; /** * @dev External interface of AccessControl declared to support ERC165 detection. */ interface IAccessControl { /** * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` * * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite * {RoleAdminChanged} not being emitted signaling this. * * _Available since v3.1._ */ event RoleAdminChanged( bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole ); /** * @dev Emitted when `account` is granted `role`. * * `sender` is the account that originated the contract call, an admin role * bearer except when using {AccessControl-_setupRole}. */ event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Emitted when `account` is revoked `role`. * * `sender` is the account that originated the contract call: * - if using `revokeRole`, it is the admin role bearer * - if using `renounceRole`, it is the role bearer (i.e. `account`) */ event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) external view returns (bool); /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {AccessControl-_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) external view returns (bytes32); /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) external; /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) external; /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been granted `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. */ function renounceRole(bytes32 role, address account) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.8.12; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
{ "optimizer": { "enabled": true, "mode": "3" }, "evmVersion": "berlin", "outputSelection": { "*": { "*": [ "abi" ] } }, "detectMissingLibraries": false, "forceEVMLA": false, "enableEraVMExtensions": false, "libraries": { "@zerolendxyz/core-v3/contracts/protocol/libraries/logic/BridgeLogic.sol": { "BridgeLogic": "0x406aD7Ed13d91BEF165f6E977e281FB7C571CfE5" }, "@zerolendxyz/core-v3/contracts/protocol/libraries/logic/ConfiguratorLogic.sol": { "ConfiguratorLogic": "0x6785433E9A02daEc0e30C532284477Cfe66c6c34" }, "@zerolendxyz/core-v3/contracts/protocol/libraries/logic/PoolLogic.sol": { "PoolLogic": "0xc23507911ce966e314EdeF2f28C401bCe0BEd621" }, "@zerolendxyz/core-v3/contracts/protocol/libraries/logic/EModeLogic.sol": { "EModeLogic": "0x0Ad3F00c09E06B2000923D3234A547ced44392E1" }, "@zerolendxyz/core-v3/contracts/protocol/libraries/logic/LiquidationLogic.sol": { "LiquidationLogic": "0x4fB6c53DE12E42aB3602efF9BaBcB16285d3bF5c" }, "@zerolendxyz/core-v3/contracts/protocol/libraries/logic/SupplyLogic.sol": { "SupplyLogic": "0xF99505fD0c50dB554d83A92CaEB7914EaE8d476f" }, "@zerolendxyz/core-v3/contracts/protocol/libraries/logic/FlashLoanLogic.sol": { "FlashLoanLogic": "0xa79d546E536A0CEcb83D8995e35A5a4A33b5c0Da" }, "@zerolendxyz/core-v3/contracts/protocol/libraries/logic/BorrowLogic.sol": { "BorrowLogic": "0x22FB836c1CdDA685Ce0911e266f6E21965Ca31a8" } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"contract IPoolAddressesProvider","name":"provider","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"ADDRESSES_PROVIDER","outputs":[{"internalType":"contract IPoolAddressesProvider","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ASSET_LISTING_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BRIDGE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EMERGENCY_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FLASH_BORROWER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"POOL_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RISK_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"addAssetListingAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"bridge","type":"address"}],"name":"addBridge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"addEmergencyAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"borrower","type":"address"}],"name":"addFlashBorrower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"addPoolAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"addRiskAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"isAssetListingAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"bridge","type":"address"}],"name":"isBridge","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"isEmergencyAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"borrower","type":"address"}],"name":"isFlashBorrower","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"isPoolAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"isRiskAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"removeAssetListingAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"bridge","type":"address"}],"name":"removeBridge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"removeEmergencyAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"borrower","type":"address"}],"name":"removeFlashBorrower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"removePoolAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"removeRiskAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"bytes32","name":"adminRole","type":"bytes32"}],"name":"setRoleAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
9c4d535b00000000000000000000000000000000000000000000000000000000000000000100040dd3932c405f06e4b268331f8442f0eb3c42e6e571881857e7e29cc4ae00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000de15bc7060eb299674d652f48b76ba18c1179028
Deployed Bytecode
0x000300000000000200060000000000020002000000010355000000000301001900000060033002700000039f0030019d0000039f0330019700000001022001900000002b0000c13d0000008002000039000000400020043f000000040230008c000000510000413d000000000201043b000000e002200270000003ae0420009c000000530000a13d000003af0420009c000000e80000a13d000003b00420009c000001cb0000a13d000003b10420009c000003170000a13d000003b20420009c000005480000613d000003b30420009c000005dc0000613d000003b40220009c000000510000c13d000000240230008c000000510000413d0000000002000416000000000202004b000000510000c13d0000000401100370000000000101043b000003a10210009c000000510000213d0000000000100435000003de01000041000000200010043f0000000001000414000008b60000013d000000a002000039000000400020043f0000000004000416000000000404004b000000510000c13d0000001f04300039000003a004400197000000a004400039000000400040043f0000001f0430018f000000050530027200000005055002100000003e0000613d000000a006500039000000000701034f000000007807043c0000000002820436000000000862004b0000003a0000c13d000000000204004b0000004c0000613d000000000151034f0000000302400210000000a004500039000000000504043300000000052501cf000000000525022f000000000101043b0000010002200089000000000121022f00000000012101cf000000000151019f0000000000140435000000200130008c000000510000413d000000a00200043d000003a10120009c000000df0000a13d000000000100001900000e7700010430000003c70420009c000000f70000213d000003d30420009c000002530000213d000003d90420009c000003220000213d000003dc0420009c0000065e0000613d000003dd0220009c000000510000c13d000000240230008c000000510000413d0000000002000416000000000202004b000000510000c13d0000000401100370000000000101043b000400000001001d000003a10110009c000000510000213d000003f601000041000000000101041a000300000001001d0000000000100435000000200000043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d0000000002000411000000000101043b000003a102200197000200000002001d0000000000200435000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000101041a000000ff0110019000000ae20000c13d000000400800043d000003e40180009c000001c50000213d0000006002800039000000400020043f0000002a01000039000000000918043600000000010000310000000201100367000000000301034f0000000004090019000000003503043c0000000004540436000000000524004b000000930000c13d0000000002090433000003e502200197000003e6022001c7000000000029043500000021028000390000000003020433000003e503300197000003e7033001c700000000003204350000002902000039000000020600002900000000040600190000000005080433000000000525004b00000aa10000a13d0000000305400210000000780550018f000003e80550021f00000000069200190000000007060433000003e507700197000003e905500197000000000557019f00000000005604350000000406400270000000010220008a000000010520008c000000a20000213d000000400a00043d000000100240008c00000ad30000813d000003ec02a0009c000001c50000213d00000000040a00190000008003400039000000400030043f000000420200003900000000022404360000000004020019000000001501043c0000000004540436000000000534004b000000be0000c13d0000000001020433000003e501100197000003e6011001c700000000001204350000002101a000390000000003010433000003e503300197000003e7033001c7000000000031043500000041010000390000000306000029000000000406001900000000050a0433000000000515004b00000aa10000a13d0000000305400210000000780550018f000003e80550021f00000000062100190000000007060433000003e507700197000003e905500197000000000557019f00000000005604350000000406400270000000010110008a000000010510008c000000cd0000213d000009eb0000013d000000800020043f000003a201000041000000400900043d00000000051904360000000001000414000000040320008c000001810000c13d0000000103000031000001b00000013d000003bc0420009c000002d60000213d000003c20420009c000003340000213d000003c50420009c000006700000613d000003c60120009c000000510000c13d0000000001000416000000000101004b000000510000c13d000003fa01000041000000800010043f000003ef0100004100000e760001042e000003c80420009c000002ea0000213d000003ce0420009c0000033f0000213d000003d10420009c0000067e0000613d000003d20220009c000000510000c13d000000240230008c000000510000413d0000000002000416000000000202004b000000510000c13d0000000401100370000000000101043b000400000001001d000003a10110009c000000510000213d000003f401000041000000000101041a000300000001001d0000000000100435000000200000043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d0000000002000411000000000101043b000003a102200197000200000002001d0000000000200435000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000101041a000000ff0110019000000b130000c13d000000400800043d000003e40180009c000001c50000213d0000006002800039000000400020043f0000002a01000039000000000918043600000000010000310000000201100367000000000301034f0000000004090019000000003503043c0000000004540436000000000524004b000001350000c13d0000000002090433000003e502200197000003e6022001c7000000000029043500000021028000390000000003020433000003e503300197000003e7033001c700000000003204350000002902000039000000020600002900000000040600190000000005080433000000000525004b00000aa10000a13d0000000305400210000000780550018f000003e80550021f00000000069200190000000007060433000003e507700197000003e905500197000000000557019f00000000005604350000000406400270000000010220008a000000010520008c000001440000213d000000400a00043d000000100240008c00000ad30000813d000003ec02a0009c000001c50000213d00000000040a00190000008003400039000000400030043f000000420200003900000000022404360000000004020019000000001501043c0000000004540436000000000534004b000001600000c13d0000000001020433000003e501100197000003e6011001c700000000001204350000002101a000390000000003010433000003e503300197000003e7033001c7000000000031043500000041010000390000000306000029000000000406001900000000050a0433000000000515004b00000aa10000a13d0000000305400210000000780550018f000003e80550021f00000000062100190000000007060433000003e507700197000003e905500197000000000557019f00000000005604350000000406400270000000010110008a000000010510008c0000016f0000213d000009eb0000013d0000039f0390009c0000039f03000041000000000309401900000040033002100000039f0410009c0000039f01008041000000c001100210000000000131019f000003a3011001c7000400000009001d000300000005001d0e750e700000040f000000030a0000290000000409000029000000000301001900000060033002700000039f03300197000000200430008c000000200500003900000000050340190000001f0450018f00000005055002720000019e0000613d000000000601034f0000000007090019000000006806043c00000000078704360000000008a7004b0000019a0000c13d000000000604004b000001ad0000613d0000000505500210000000000651034f00000000055900190000000304400210000000000705043300000000074701cf000000000747022f000000000606043b0000010004400089000000000646022f00000000044601cf000000000474019f0000000000450435000100000003001f0000000102200190000002f70000613d0000001f0230003900000408042001970000000002940019000000000442004b00000000040000190000000104004039000003a40520009c000001c50000213d0000000104400190000001c50000c13d000000400020043f000003a50430009c000000510000213d000000200330008c000000510000413d0000000003090433000400000003001d000003a10330009c000000510000213d000003a60320009c00000a370000a13d000004020100004100000000001004350000004101000039000000040010043f000004030100004100000e7700010430000003b70420009c0000039c0000213d000003ba0420009c0000068c0000613d000003bb0220009c000000510000c13d000000240230008c000000510000413d0000000002000416000000000202004b000000510000c13d0000000401100370000000000101043b000400000001001d000003a10110009c000000510000213d000003f401000041000000000101041a000300000001001d0000000000100435000000200000043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d0000000002000411000000000101043b000003a102200197000200000002001d0000000000200435000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000101041a000000ff0110019000000b440000c13d000000400800043d000003e40180009c000001c50000213d0000006002800039000000400020043f0000002a01000039000000000918043600000000010000310000000201100367000000000301034f0000000004090019000000003503043c0000000004540436000000000524004b000002070000c13d0000000002090433000003e502200197000003e6022001c7000000000029043500000021028000390000000003020433000003e503300197000003e7033001c700000000003204350000002902000039000000020600002900000000040600190000000005080433000000000525004b00000aa10000a13d0000000305400210000000780550018f000003e80550021f00000000069200190000000007060433000003e507700197000003e905500197000000000557019f00000000005604350000000406400270000000010220008a000000010520008c000002160000213d000000400a00043d000000100240008c00000ad30000813d000003ec02a0009c000001c50000213d00000000040a00190000008003400039000000400030043f000000420200003900000000022404360000000004020019000000001501043c0000000004540436000000000534004b000002320000c13d0000000001020433000003e501100197000003e6011001c700000000001204350000002101a000390000000003010433000003e503300197000003e7033001c7000000000031043500000041010000390000000306000029000000000406001900000000050a0433000000000515004b00000aa10000a13d0000000305400210000000780550018f000003e80550021f00000000062100190000000007060433000003e507700197000003e905500197000000000557019f00000000005604350000000406400270000000010110008a000000010510008c000002410000213d000009eb0000013d000003d40420009c000004220000213d000003d70420009c0000070e0000613d000003d80220009c000000510000c13d000000440230008c000000510000413d0000000002000416000000000202004b000000510000c13d0000002402100370000000000202043b000300000002001d0000000401100370000000000101043b000400000001001d0000000001000411000003a1011001970000000000100435000003a801000041000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000101041a000000ff0110019000000aa70000c13d000000400200043d000003e40120009c000001c50000213d0000006004200039000000400040043f0000002a01000039000000000112043600000000030000310000000203300367000000000503034f0000000006010019000000005705043c0000000006760436000000000746004b000002810000c13d0000000004010433000003e504400197000003e6044001c7000000000041043500000021042000390000000005040433000003e505500197000003e7055001c700000000005404350000002904000039000000000800041100000000060800190000000007020433000000000747004b00000aa10000a13d0000000307600210000000780770018f000003e80770021f00000000081400190000000009080433000003e509900197000003e907700197000000000779019f00000000007804350000000408600270000000010440008a000000010740008c000002900000213d000000400700043d000000100460008c00000d850000813d000003ec0470009c000001c50000213d0000008005700039000000400050043f0000004204000039000000000807001900000000044704360000000006040019000000003703043c0000000006760436000000000756004b000002ac0000c13d0000000003040433000003e503300197000003e6033001c70000000000340435000000000708001900000021037000390000000005030433000003e505500197000003e7055001c7000000000053043500000041030000390000000005070433000000000535004b00000aa10000a13d00000000054300190000000006050433000003e506600197000003e6066001c70000000000650435000000010330008a000000010530008c000002bb0000213d000000400500043d000400000005001d0000002003500039000003ed0400004100000000004304350000000003020433000200000003001d0000003702500039000300000007001d0e750dfc0000040f000000020200002900000004012000290000003702100039000003ee03000041000000000032043500000a020000013d000003bd0420009c0000043c0000213d000003c00420009c000007900000613d000003c10220009c000000510000c13d000000240230008c000000510000413d0000000002000416000000000202004b000000510000c13d0000000401100370000000000101043b000003a10210009c000000510000213d0000000000100435000003e101000041000000200010043f0000000001000414000008b60000013d000003c90420009c000004c20000213d000003cc0420009c000008120000613d000003cd0120009c000000510000c13d0000000001000416000000000101004b000000510000c13d000003fd01000041000000800010043f000003ef0100004100000e760001042e000000400200043d0000001f0430018f00000005053002720000000505500210000003030000613d0000000006520019000000000701034f0000000008020019000000007907043c0000000008980436000000000968004b000002ff0000c13d000000000604004b000003110000613d000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f000000000015043500000060013002100000039f0320009c0000039f020080410000004002200210000000000112019f00000e7700010430000003b50120009c000008940000613d000003b60120009c000000510000c13d0000000001000416000000000101004b000000510000c13d000003e301000041000000800010043f000003ef0100004100000e760001042e000003da0420009c0000089b0000613d000003db0220009c000000510000c13d000000240230008c000000510000413d0000000002000416000000000202004b000000510000c13d0000000401100370000000000101043b000003a10210009c000000510000213d0000000000100435000003f201000041000000200010043f0000000001000414000008b60000013d000003c30420009c000008a90000613d000003c40120009c000000510000c13d0000000001000416000000000101004b000000510000c13d000003f301000041000000800010043f000003ef0100004100000e760001042e000003cf0420009c000008ca0000613d000003d00220009c000000510000c13d000000440230008c000000510000413d0000000002000416000000000202004b000000510000c13d0000002402100370000000000202043b000003a10320009c000000510000213d0000000401100370000000000301043b0000000001000411000000000112004b00000ac70000c13d000400000003001d0000000000300435000000200000043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b00000000020004110000000000200435000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000101041a000000ff0110019000000d360000613d00000004010000290000000000100435000000200000043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b00000000020004110000000000200435000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000201041a0000040902200197000000000021041b000000400100043d0000039f0210009c0000039f01008041000000400110021000000000020004140000039f0320009c0000039f02008041000000c002200210000000000112019f000003aa011001c70000800d020000390000000403000039000003e20400004100000004050000290000000006000411000000000706001900000d330000013d000003b80420009c000009640000613d000003b90220009c000000510000c13d000000240230008c000000510000413d0000000002000416000000000202004b000000510000c13d0000000401100370000000000101043b000400000001001d000003a10110009c000000510000213d000003f101000041000000000101041a000300000001001d0000000000100435000000200000043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d0000000002000411000000000101043b000003a102200197000200000002001d0000000000200435000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000101041a000000ff0110019000000b760000c13d000000400800043d000003e40180009c000001c50000213d0000006002800039000000400020043f0000002a01000039000000000918043600000000010000310000000201100367000000000301034f0000000004090019000000003503043c0000000004540436000000000524004b000003d60000c13d0000000002090433000003e502200197000003e6022001c7000000000029043500000021028000390000000003020433000003e503300197000003e7033001c700000000003204350000002902000039000000020600002900000000040600190000000005080433000000000525004b00000aa10000a13d0000000305400210000000780550018f000003e80550021f00000000069200190000000007060433000003e507700197000003e905500197000000000557019f00000000005604350000000406400270000000010220008a000000010520008c000003e50000213d000000400a00043d000000100240008c00000ad30000813d000003ec02a0009c000001c50000213d00000000040a00190000008003400039000000400030043f000000420200003900000000022404360000000004020019000000001501043c0000000004540436000000000534004b000004010000c13d0000000001020433000003e501100197000003e6011001c700000000001204350000002101a000390000000003010433000003e503300197000003e7033001c7000000000031043500000041010000390000000306000029000000000406001900000000050a0433000000000515004b00000aa10000a13d0000000305400210000000780550018f000003e80550021f00000000062100190000000007060433000003e507700197000003e905500197000000000557019f00000000005604350000000406400270000000010110008a000000010510008c000004100000213d000009eb0000013d000003d50420009c0000096a0000613d000003d60220009c000000510000c13d000000240230008c000000510000413d0000000002000416000000000202004b000000510000c13d0000000401100370000000000101043b0000000000100435000000200000043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b0000000101100039000000000101041a000008c30000013d000003be0420009c00000a150000613d000003bf0220009c000000510000c13d000000240230008c000000510000413d0000000002000416000000000202004b000000510000c13d0000000401100370000000000101043b000400000001001d000003a10110009c000000510000213d000003f601000041000000000101041a000300000001001d0000000000100435000000200000043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d0000000002000411000000000101043b000003a102200197000200000002001d0000000000200435000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000101041a000000ff0110019000000ba70000c13d000000400800043d000003e40180009c000001c50000213d0000006002800039000000400020043f0000002a01000039000000000918043600000000010000310000000201100367000000000301034f0000000004090019000000003503043c0000000004540436000000000524004b000004760000c13d0000000002090433000003e502200197000003e6022001c7000000000029043500000021028000390000000003020433000003e503300197000003e7033001c700000000003204350000002902000039000000020600002900000000040600190000000005080433000000000525004b00000aa10000a13d0000000305400210000000780550018f000003e80550021f00000000069200190000000007060433000003e507700197000003e905500197000000000557019f00000000005604350000000406400270000000010220008a000000010520008c000004850000213d000000400a00043d000000100240008c00000ad30000813d000003ec02a0009c000001c50000213d00000000040a00190000008003400039000000400030043f000000420200003900000000022404360000000004020019000000001501043c0000000004540436000000000534004b000004a10000c13d0000000001020433000003e501100197000003e6011001c700000000001204350000002101a000390000000003010433000003e503300197000003e7033001c7000000000031043500000041010000390000000306000029000000000406001900000000050a0433000000000515004b00000aa10000a13d0000000305400210000000780550018f000003e80550021f00000000062100190000000007060433000003e507700197000003e905500197000000000557019f00000000005604350000000406400270000000010110008a000000010510008c000004b00000213d000009eb0000013d000003ca0420009c00000a300000613d000003cb0220009c000000510000c13d000000240230008c000000510000413d0000000002000416000000000202004b000000510000c13d0000000401100370000000000101043b000400000001001d000003a10110009c000000510000213d000003fc01000041000000000101041a000300000001001d0000000000100435000000200000043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d0000000002000411000000000101043b000003a102200197000200000002001d0000000000200435000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000101041a000000ff0110019000000bd90000c13d000000400800043d000003e40180009c000001c50000213d0000006002800039000000400020043f0000002a01000039000000000918043600000000010000310000000201100367000000000301034f0000000004090019000000003503043c0000000004540436000000000524004b000004fc0000c13d0000000002090433000003e502200197000003e6022001c7000000000029043500000021028000390000000003020433000003e503300197000003e7033001c700000000003204350000002902000039000000020600002900000000040600190000000005080433000000000525004b00000aa10000a13d0000000305400210000000780550018f000003e80550021f00000000069200190000000007060433000003e507700197000003e905500197000000000557019f00000000005604350000000406400270000000010220008a000000010520008c0000050b0000213d000000400a00043d000000100240008c00000ad30000813d000003ec02a0009c000001c50000213d00000000040a00190000008003400039000000400030043f000000420200003900000000022404360000000004020019000000001501043c0000000004540436000000000534004b000005270000c13d0000000001020433000003e501100197000003e6011001c700000000001204350000002101a000390000000003010433000003e503300197000003e7033001c7000000000031043500000041010000390000000306000029000000000406001900000000050a0433000000000515004b00000aa10000a13d0000000305400210000000780550018f000003e80550021f00000000062100190000000007060433000003e507700197000003e905500197000000000557019f00000000005604350000000406400270000000010110008a000000010510008c000005360000213d000009eb0000013d000000440230008c000000510000413d0000000002000416000000000202004b000000510000c13d0000002402100370000000000202043b000400000002001d000003a10220009c000000510000213d0000000401100370000000000101043b000300000001001d0000000000100435000000200000043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b0000000101100039000000000101041a000200000001001d0000000000100435000000200000043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d0000000002000411000000000101043b000003a102200197000100000002001d0000000000200435000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000101041a000000ff0110019000000d940000c13d000000400300043d000003e40130009c000001c50000213d0000006002300039000000400020043f0000002a010000390000000008030019000000000413043600000000010000310000000201100367000000000301034f000000000a040019000000003503043c0000000004540436000000000524004b0000058e0000c13d000000000b0a001900000000020b0433000003e502200197000003e6022001c700000000002b0435000000000908001900000021029000390000000003020433000003e503300197000003e7033001c700000000003204350000002902000039000000010600002900000000040600190000000005090433000000000525004b00000aa10000a13d0000000305400210000000780550018f000003e80550021f0000000006b200190000000007060433000003e507700197000003e905500197000000000557019f00000000005604350000000406400270000000010220008a000000010520008c0000059f0000213d000000400900043d000000100240008c00000ddd0000813d000003ec0290009c000001c50000213d00000000040900190000008003400039000000400030043f000000420200003900000000022404360000000004020019000000001501043c0000000004540436000000000534004b000005bb0000c13d0000000001020433000003e501100197000003e6011001c7000000000012043500000021019000390000000003010433000003e503300197000003e7033001c700000000003104350000004101000039000000020600002900000000040600190000000005090433000000000515004b00000aa10000a13d0000000305400210000000780550018f000003e80550021f00000000062100190000000007060433000003e507700197000003e905500197000000000557019f00000000005604350000000406400270000000010110008a000000010510008c000005ca0000213d0000095d0000013d000000240230008c000000510000413d0000000002000416000000000202004b000000510000c13d0000000401100370000000000101043b000400000001001d000003a10110009c000000510000213d000003e001000041000000000101041a000300000001001d0000000000100435000000200000043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d0000000002000411000000000101043b000003a102200197000200000002001d0000000000200435000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000101041a000000ff0110019000000c0a0000c13d000000400800043d000003e40180009c000001c50000213d0000006002800039000000400020043f0000002a01000039000000000918043600000000010000310000000201100367000000000301034f0000000004090019000000003503043c0000000004540436000000000524004b000006120000c13d0000000002090433000003e502200197000003e6022001c7000000000029043500000021028000390000000003020433000003e503300197000003e7033001c700000000003204350000002902000039000000020600002900000000040600190000000005080433000000000525004b00000aa10000a13d0000000305400210000000780550018f000003e80550021f00000000069200190000000007060433000003e507700197000003e905500197000000000557019f00000000005604350000000406400270000000010220008a000000010520008c000006210000213d000000400a00043d000000100240008c00000ad30000813d000003ec02a0009c000001c50000213d00000000040a00190000008003400039000000400030043f000000420200003900000000022404360000000004020019000000001501043c0000000004540436000000000534004b0000063d0000c13d0000000001020433000003e501100197000003e6011001c700000000001204350000002101a000390000000003010433000003e503300197000003e7033001c7000000000031043500000041010000390000000306000029000000000406001900000000050a0433000000000515004b00000aa10000a13d0000000305400210000000780550018f000003e80550021f00000000062100190000000007060433000003e507700197000003e905500197000000000557019f00000000005604350000000406400270000000010110008a000000010510008c0000064c0000213d000009eb0000013d000000240230008c000000510000413d0000000002000416000000000202004b000000510000c13d0000000401100370000000000101043b0000040402100198000000510000c13d0000040501100197000004060210009c00000000020000190000000102006039000004070110009c00000001022061bf000000800020043f000003ef0100004100000e760001042e000000240230008c000000510000413d0000000002000416000000000202004b000000510000c13d0000000401100370000000000101043b000003a10210009c000000510000213d0000000000100435000003fb01000041000000200010043f0000000001000414000008b60000013d000000240230008c000000510000413d0000000002000416000000000202004b000000510000c13d0000000401100370000000000101043b000003a10210009c000000510000213d0000000000100435000003f901000041000000200010043f0000000001000414000008b60000013d000000240230008c000000510000413d0000000002000416000000000202004b000000510000c13d0000000401100370000000000101043b000400000001001d000003a10110009c000000510000213d000003f101000041000000000101041a000300000001001d0000000000100435000000200000043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d0000000002000411000000000101043b000003a102200197000200000002001d0000000000200435000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000101041a000000ff0110019000000c3a0000c13d000000400800043d000003e40180009c000001c50000213d0000006002800039000000400020043f0000002a01000039000000000918043600000000010000310000000201100367000000000301034f0000000004090019000000003503043c0000000004540436000000000524004b000006c20000c13d0000000002090433000003e502200197000003e6022001c7000000000029043500000021028000390000000003020433000003e503300197000003e7033001c700000000003204350000002902000039000000020600002900000000040600190000000005080433000000000525004b00000aa10000a13d0000000305400210000000780550018f000003e80550021f00000000069200190000000007060433000003e507700197000003e905500197000000000557019f00000000005604350000000406400270000000010220008a000000010520008c000006d10000213d000000400a00043d000000100240008c00000ad30000813d000003ec02a0009c000001c50000213d00000000040a00190000008003400039000000400030043f000000420200003900000000022404360000000004020019000000001501043c0000000004540436000000000534004b000006ed0000c13d0000000001020433000003e501100197000003e6011001c700000000001204350000002101a000390000000003010433000003e503300197000003e7033001c7000000000031043500000041010000390000000306000029000000000406001900000000050a0433000000000515004b00000aa10000a13d0000000305400210000000780550018f000003e80550021f00000000062100190000000007060433000003e507700197000003e905500197000000000557019f00000000005604350000000406400270000000010110008a000000010510008c000006fc0000213d000009eb0000013d000000240230008c000000510000413d0000000002000416000000000202004b000000510000c13d0000000401100370000000000101043b000400000001001d000003a10110009c000000510000213d000003f801000041000000000101041a000300000001001d0000000000100435000000200000043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d0000000002000411000000000101043b000003a102200197000200000002001d0000000000200435000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000101041a000000ff0110019000000c6c0000c13d000000400800043d000003e40180009c000001c50000213d0000006002800039000000400020043f0000002a01000039000000000918043600000000010000310000000201100367000000000301034f0000000004090019000000003503043c0000000004540436000000000524004b000007440000c13d0000000002090433000003e502200197000003e6022001c7000000000029043500000021028000390000000003020433000003e503300197000003e7033001c700000000003204350000002902000039000000020600002900000000040600190000000005080433000000000525004b00000aa10000a13d0000000305400210000000780550018f000003e80550021f00000000069200190000000007060433000003e507700197000003e905500197000000000557019f00000000005604350000000406400270000000010220008a000000010520008c000007530000213d000000400a00043d000000100240008c00000ad30000813d000003ec02a0009c000001c50000213d00000000040a00190000008003400039000000400030043f000000420200003900000000022404360000000004020019000000001501043c0000000004540436000000000534004b0000076f0000c13d0000000001020433000003e501100197000003e6011001c700000000001204350000002101a000390000000003010433000003e503300197000003e7033001c7000000000031043500000041010000390000000306000029000000000406001900000000050a0433000000000515004b00000aa10000a13d0000000305400210000000780550018f000003e80550021f00000000062100190000000007060433000003e507700197000003e905500197000000000557019f00000000005604350000000406400270000000010110008a000000010510008c0000077e0000213d000009eb0000013d000000240230008c000000510000413d0000000002000416000000000202004b000000510000c13d0000000401100370000000000101043b000400000001001d000003a10110009c000000510000213d000003f801000041000000000101041a000300000001001d0000000000100435000000200000043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d0000000002000411000000000101043b000003a102200197000200000002001d0000000000200435000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000101041a000000ff0110019000000c9e0000c13d000000400800043d000003e40180009c000001c50000213d0000006002800039000000400020043f0000002a01000039000000000918043600000000010000310000000201100367000000000301034f0000000004090019000000003503043c0000000004540436000000000524004b000007c60000c13d0000000002090433000003e502200197000003e6022001c7000000000029043500000021028000390000000003020433000003e503300197000003e7033001c700000000003204350000002902000039000000020600002900000000040600190000000005080433000000000525004b00000aa10000a13d0000000305400210000000780550018f000003e80550021f00000000069200190000000007060433000003e507700197000003e905500197000000000557019f00000000005604350000000406400270000000010220008a000000010520008c000007d50000213d000000400a00043d000000100240008c00000ad30000813d000003ec02a0009c000001c50000213d00000000040a00190000008003400039000000400030043f000000420200003900000000022404360000000004020019000000001501043c0000000004540436000000000534004b000007f10000c13d0000000001020433000003e501100197000003e6011001c700000000001204350000002101a000390000000003010433000003e503300197000003e7033001c7000000000031043500000041010000390000000306000029000000000406001900000000050a0433000000000515004b00000aa10000a13d0000000305400210000000780550018f000003e80550021f00000000062100190000000007060433000003e507700197000003e905500197000000000557019f00000000005604350000000406400270000000010110008a000000010510008c000008000000213d000009eb0000013d000000240230008c000000510000413d0000000002000416000000000202004b000000510000c13d0000000401100370000000000101043b000400000001001d000003a10110009c000000510000213d000003fc01000041000000000101041a000300000001001d0000000000100435000000200000043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d0000000002000411000000000101043b000003a102200197000200000002001d0000000000200435000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000101041a000000ff0110019000000ccf0000c13d000000400800043d000003e40180009c000001c50000213d0000006002800039000000400020043f0000002a01000039000000000918043600000000010000310000000201100367000000000301034f0000000004090019000000003503043c0000000004540436000000000524004b000008480000c13d0000000002090433000003e502200197000003e6022001c7000000000029043500000021028000390000000003020433000003e503300197000003e7033001c700000000003204350000002902000039000000020600002900000000040600190000000005080433000000000525004b00000aa10000a13d0000000305400210000000780550018f000003e80550021f00000000069200190000000007060433000003e507700197000003e905500197000000000557019f00000000005604350000000406400270000000010220008a000000010520008c000008570000213d000000400a00043d000000100240008c00000ad30000813d000003ec02a0009c000001c50000213d00000000040a00190000008003400039000000400030043f000000420200003900000000022404360000000004020019000000001501043c0000000004540436000000000534004b000008730000c13d0000000001020433000003e501100197000003e6011001c700000000001204350000002101a000390000000003010433000003e503300197000003e7033001c7000000000031043500000041010000390000000306000029000000000406001900000000050a0433000000000515004b00000aa10000a13d0000000305400210000000780550018f000003e80550021f00000000062100190000000007060433000003e507700197000003e905500197000000000557019f00000000005604350000000406400270000000010110008a000000010510008c000008820000213d000009eb0000013d0000000001000416000000000101004b000000510000c13d000003f001000041000000800010043f000003ef0100004100000e760001042e0000000001000416000000000101004b000000510000c13d0000000001000412000600000001001d000500000000001d0000000001000415000000060110008a00000005011002100e750e580000040f000003a101100197000000800010043f000003ef0100004100000e760001042e000000240230008c000000510000413d0000000002000416000000000202004b000000510000c13d0000000401100370000000000101043b000003a10210009c000000510000213d0000000000100435000003f701000041000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000101041a000000ff011001900000000001000019000000010100c039000000400200043d00000000001204350000039f0120009c0000039f020080410000004001200210000003df011001c700000e760001042e000000440230008c000000510000413d0000000002000416000000000202004b000000510000c13d0000002402100370000000000202043b000400000002001d000003a10220009c000000510000213d0000000401100370000000000101043b000300000001001d0000000000100435000000200000043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b0000000101100039000000000101041a000200000001001d0000000000100435000000200000043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d0000000002000411000000000101043b000003a102200197000100000002001d0000000000200435000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000101041a000000ff0110019000000d3b0000c13d000000400300043d000003e40130009c000001c50000213d0000006002300039000000400020043f0000002a010000390000000008030019000000000413043600000000010000310000000201100367000000000301034f000000000a040019000000003503043c0000000004540436000000000524004b000009100000c13d000000000b0a001900000000020b0433000003e502200197000003e6022001c700000000002b0435000000000908001900000021029000390000000003020433000003e503300197000003e7033001c700000000003204350000002902000039000000010600002900000000040600190000000005090433000000000525004b00000aa10000a13d0000000305400210000000780550018f000003e80550021f0000000006b200190000000007060433000003e507700197000003e905500197000000000557019f00000000005604350000000406400270000000010220008a000000010520008c000009210000213d000000400900043d000000100240008c00000ddd0000813d000003ec0290009c000001c50000213d00000000040900190000008003400039000000400030043f000000420200003900000000022404360000000004020019000000001501043c0000000004540436000000000534004b0000093d0000c13d0000000001020433000003e501100197000003e6011001c7000000000012043500000021019000390000000003010433000003e503300197000003e7033001c700000000003104350000004101000039000000020600002900000000040600190000000005090433000000000515004b00000aa10000a13d0000000305400210000000780550018f000003e80550021f00000000062100190000000007060433000003e507700197000003e905500197000000000557019f00000000005604350000000406400270000000010110008a000000010510008c0000094c0000213d000000100140008c00000000010000190000000101004039000100000008001d00020000000a001d000300000009001d000009f10000013d0000000001000416000000000101004b000000510000c13d000000800000043f000003ef0100004100000e760001042e000000240230008c000000510000413d0000000002000416000000000202004b000000510000c13d0000000401100370000000000101043b000400000001001d000003a10110009c000000510000213d000003e001000041000000000101041a000300000001001d0000000000100435000000200000043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d0000000002000411000000000101043b000003a102200197000200000002001d0000000000200435000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000101041a000000ff0110019000000d000000c13d000000400800043d000003e40180009c000001c50000213d0000006002800039000000400020043f0000002a01000039000000000918043600000000010000310000000201100367000000000301034f0000000004090019000000003503043c0000000004540436000000000524004b000009a00000c13d0000000002090433000003e502200197000003e6022001c7000000000029043500000021028000390000000003020433000003e503300197000003e7033001c700000000003204350000002902000039000000020600002900000000040600190000000005080433000000000525004b00000aa10000a13d0000000305400210000000780550018f000003e80550021f00000000069200190000000007060433000003e507700197000003e905500197000000000557019f00000000005604350000000406400270000000010220008a000000010520008c000009af0000213d000000400a00043d000000100240008c00000ad30000813d000003ec02a0009c000001c50000213d00000000040a00190000008003400039000000400030043f000000420200003900000000022404360000000004020019000000001501043c0000000004540436000000000534004b000009cb0000c13d0000000001020433000003e501100197000003e6011001c700000000001204350000002101a000390000000003010433000003e503300197000003e7033001c7000000000031043500000041010000390000000306000029000000000406001900000000050a0433000000000515004b00000aa10000a13d0000000305400210000000780550018f000003e80550021f00000000062100190000000007060433000003e507700197000003e905500197000000000557019f00000000005604350000000406400270000000010110008a000000010510008c000009da0000213d000000100140008c00000000010000190000000101004039000100000008001d000200000009001d00030000000a001d0e750e440000040f000000400400043d000400000004001d0000002001400039000003ed02000041000000000021043500000001010000290000000003010433000100000003001d000000370240003900000002010000290e750dfc0000040f00000001020000290000000401200029000003ee0200004100000037031000390000000000230435000000480210003900000003010000290e750e0b0000040f00000004030000290000000002310049000000200120008a000000000013043500000000010300190e750e1b0000040f000003ad01000041000000400200043d000300000002001d0000000000120435000000040120003900000004020000290e750e2d0000040f0000000303000029000000000131004900000a5b0000013d000000440230008c000000510000413d0000000002000416000000000202004b000000510000c13d0000002402100370000000000202043b000400000002001d000003a10220009c000000510000213d0000000401100370000000000101043b0000000000100435000000200000043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b00000004020000290e750dec0000040f000008bf0000013d0000000001000416000000000101004b000000510000c13d000003f501000041000000800010043f000003ef0100004100000e760001042e0000004003200039000000400030043f00000002030000390000000004320436000003a70300004100000000003404350000000405000029000000000305004b00000a630000c13d000000400300043d000003ad050000410000000000530435000000040530003900000020060000390000000000650435000000000202043300000024053000390000000000250435000000000502004b00000a580000613d0000004405300039000000000600001900000000075600190000000008460019000000000808043300000000008704350000002006600039000000000726004b00000a4d0000413d000000000426004b00000a580000a13d000000000452001900000000000404350000001f02200039000004080120019700000044011000390000039f0210009c0000039f0100804100000060011002100000039f0230009c0000039f030080410000004002300210000000000121019f00000e77000104300000000000500435000003a801000041000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000101041a000000ff0110019000000a980000c13d00000004010000290000000000100435000003a801000041000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000201041a000004090220019700000001022001bf000000000021041b000000400100043d0000039f0210009c0000039f01008041000000400110021000000000020004140000039f0320009c0000039f02008041000000c002200210000000000112019f000003aa011001c70000800d0200003900000004030000390000000007000411000003ab04000041000000000500001900000004060000290e750e6b0000040f0000000101200190000000510000613d000000800100043d000001400000044300000160001004430000002001000039000001000010044300000001010000390000012000100443000003ac0100004100000e760001042e000004020100004100000000001004350000003201000039000000040010043f000004030100004100000e770001043000000004010000290000000000100435000000200000043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b0000000101100039000000000601041a0000000307000029000000000071041b000000400100043d0000039f0210009c0000039f01008041000000400110021000000000020004140000039f0320009c0000039f02008041000000c002200210000000000112019f000003aa011001c70000800d0200003900000004030000390000040104000041000000040500002900000d330000013d000003ad01000041000000800010043f0000002001000039000000840010043f0000002f01000039000000a40010043f000003fe01000041000000c40010043f000003ff01000041000000e40010043f000004000100004100000e77000104300000004401a00039000003ea020000410000000000210435000003ad0100004100000000001a04350000002401a00039000000200200003900000000002104350000000401a0003900000000002104350000039f01a0009c0000039f0a0080410000004001a00210000003eb011001c700000e770001043000000004010000290000000000100435000003f701000041000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000101041a000000ff0110019000000d360000613d00000004010000290000000000100435000003f701000041000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000201041a0000040902200197000000000021041b000000400100043d0000039f0210009c0000039f01008041000000400110021000000000020004140000039f0320009c0000039f02008041000000c002200210000000000112019f000003aa011001c70000800d020000390000000403000039000003e204000041000003f00500004100000d310000013d00000004010000290000000000100435000003de01000041000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000101041a000000ff0110019000000d360000613d00000004010000290000000000100435000003de01000041000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000201041a0000040902200197000000000021041b000000400100043d0000039f0210009c0000039f01008041000000400110021000000000020004140000039f0320009c0000039f02008041000000c002200210000000000112019f000003aa011001c70000800d020000390000000403000039000003e204000041000003f50500004100000d310000013d00000004010000290000000000100435000003de01000041000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000101041a000000ff0110019000000d360000c13d00000004010000290000000000100435000003de01000041000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000201041a000004090220019700000001022001bf000000000021041b000000400100043d0000039f0210009c0000039f01008041000000400110021000000000020004140000039f0320009c0000039f02008041000000c002200210000000000112019f000003aa011001c70000800d020000390000000403000039000003ab04000041000003f50500004100000d310000013d00000004010000290000000000100435000003f201000041000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000101041a000000ff0110019000000d360000613d00000004010000290000000000100435000003f201000041000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000201041a0000040902200197000000000021041b000000400100043d0000039f0210009c0000039f01008041000000400110021000000000020004140000039f0320009c0000039f02008041000000c002200210000000000112019f000003aa011001c70000800d020000390000000403000039000003e204000041000003f30500004100000d310000013d00000004010000290000000000100435000003f701000041000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000101041a000000ff0110019000000d360000c13d00000004010000290000000000100435000003f701000041000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000201041a000004090220019700000001022001bf000000000021041b000000400100043d0000039f0210009c0000039f01008041000000400110021000000000020004140000039f0320009c0000039f02008041000000c002200210000000000112019f000003aa011001c70000800d020000390000000403000039000003ab04000041000003f00500004100000d310000013d00000004010000290000000000100435000003fb01000041000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000101041a000000ff0110019000000d360000c13d00000004010000290000000000100435000003fb01000041000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000201041a000004090220019700000001022001bf000000000021041b000000400100043d0000039f0210009c0000039f01008041000000400110021000000000020004140000039f0320009c0000039f02008041000000c002200210000000000112019f000003aa011001c70000800d020000390000000403000039000003ab0400004100000cfe0000013d00000004010000290000000000100435000003e101000041000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000101041a000000ff0110019000000d360000613d00000004010000290000000000100435000003e101000041000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000201041a0000040902200197000000000021041b000000400100043d0000039f0210009c0000039f01008041000000400110021000000000020004140000039f0320009c0000039f02008041000000c002200210000000000112019f000003aa011001c70000800d020000390000000403000039000003e20400004100000d300000013d00000004010000290000000000100435000003f201000041000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000101041a000000ff0110019000000d360000c13d00000004010000290000000000100435000003f201000041000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000201041a000004090220019700000001022001bf000000000021041b000000400100043d0000039f0210009c0000039f01008041000000400110021000000000020004140000039f0320009c0000039f02008041000000c002200210000000000112019f000003aa011001c70000800d020000390000000403000039000003ab04000041000003f30500004100000d310000013d00000004010000290000000000100435000003f901000041000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000101041a000000ff0110019000000d360000c13d00000004010000290000000000100435000003f901000041000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000201041a000004090220019700000001022001bf000000000021041b000000400100043d0000039f0210009c0000039f01008041000000400110021000000000020004140000039f0320009c0000039f02008041000000c002200210000000000112019f000003aa011001c70000800d020000390000000403000039000003ab04000041000003fa0500004100000d310000013d00000004010000290000000000100435000003f901000041000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000101041a000000ff0110019000000d360000613d00000004010000290000000000100435000003f901000041000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000201041a0000040902200197000000000021041b000000400100043d0000039f0210009c0000039f01008041000000400110021000000000020004140000039f0320009c0000039f02008041000000c002200210000000000112019f000003aa011001c70000800d020000390000000403000039000003e204000041000003fa0500004100000d310000013d00000004010000290000000000100435000003fb01000041000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000101041a000000ff0110019000000d360000613d00000004010000290000000000100435000003fb01000041000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000201041a0000040902200197000000000021041b000000400100043d0000039f0210009c0000039f01008041000000400110021000000000020004140000039f0320009c0000039f02008041000000c002200210000000000112019f000003aa011001c70000800d020000390000000403000039000003e204000041000003fd0500004100000d310000013d00000004010000290000000000100435000003e101000041000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000101041a000000ff0110019000000d360000c13d00000004010000290000000000100435000003e101000041000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000201041a000004090220019700000001022001bf000000000021041b000000400100043d0000039f0210009c0000039f01008041000000400110021000000000020004140000039f0320009c0000039f02008041000000c002200210000000000112019f000003aa011001c70000800d020000390000000403000039000003ab04000041000003e305000041000000040600002900000000070004110e750e6b0000040f0000000101200190000000510000613d000000400100043d0000039f0210009c0000039f01008041000000400110021000000e760001042e00000003010000290000000000100435000000200000043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b00000004020000290000000000200435000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000101041a000000ff0110019000000d360000c13d00000003010000290000000000100435000000200000043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b00000004020000290000000000200435000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000201041a000004090220019700000001022001bf000000000021041b000000400100043d0000039f0210009c0000039f01008041000000400110021000000000020004140000039f0320009c0000039f02008041000000c002200210000000000112019f000003aa011001c70000800d020000390000000403000039000003ab04000041000000030500002900000d310000013d0000004401700039000003ea020000410000000000210435000003ad010000410000000000170435000000240170003900000020020000390000000000210435000000040170003900000000002104350000039f0170009c0000039f070080410000004001700210000003eb011001c700000e770001043000000003010000290000000000100435000000200000043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b00000004020000290000000000200435000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000101041a000000ff0110019000000d360000613d00000003010000290000000000100435000000200000043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b00000004020000290000000000200435000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f0000000102200190000000510000613d000000000101043b000000000201041a0000040902200197000000000021041b000000400100043d0000039f0210009c0000039f01008041000000400110021000000000020004140000039f0320009c0000039f02008041000000c002200210000000000112019f000003aa011001c70000800d020000390000000403000039000003e204000041000000030500002900000d310000013d0000004401900039000003ea020000410000000000210435000003ad010000410000000000190435000000240190003900000020020000390000000000210435000000040190003900000000002104350000039f0190009c0000039f090080410000004001900210000003eb011001c700000e7700010430000003a1022001970000000000200435000000200010043f00000000010004140000039f0210009c0000039f01008041000000c001100210000003a9011001c700008010020000390e750e700000040f000000010220019000000dfa0000613d000000000101043b000000000001042d000000000100001900000e7700010430000000000403004b00000e0a0000613d000000000400001900000000052400190000000006140019000000000606043300000000006504350000002004400039000000000534004b00000dff0000413d000000000134004b00000e0a0000a13d00000000012300190000000000010435000000000001042d0000000043010434000000000103004b000000000123001900000e1a0000613d000000000500001900000000062500190000000007540019000000000707043300000000007604350000002005500039000000000635004b00000e100000413d000000000235004b00000e1a0000a13d0000000000010435000000000001042d0000001f0220003900000408022001970000000001120019000000000221004b00000000020000190000000102004039000003a40310009c00000e270000213d000000010220019000000e270000c13d000000400010043f000000000001042d000004020100004100000000001004350000004101000039000000040010043f000004030100004100000e770001043000000020030000390000000004310436000000003202043400000000002404350000004001100039000000000402004b00000e400000613d000000000400001900000000051400190000000006430019000000000606043300000000006504350000002004400039000000000524004b00000e350000413d000000000324004b00000e400000a13d000000000312001900000000000304350000001f0220003900000408022001970000000001210019000000000001042d000000000101004b00000e470000613d000000000001042d000000400100043d0000004402100039000003ea030000410000000000320435000003ad020000410000000000210435000000240210003900000020030000390000000000320435000000040210003900000000003204350000039f0210009c0000039f010080410000004001100210000003eb011001c700000e7700010430000000000001042f0000040a0200004100000000002004390000000501100270000000000201003100000004002004430000000101010031000000240010044300000000010004140000039f0210009c0000039f01008041000000c0011002100000040b011001c700008005020000390e750e700000040f000000010220019000000e6a0000613d000000000101043b000000000001042d000000000001042f00000e6e002104210000000102000039000000000001042d0000000002000019000000000001042d00000e73002104230000000102000039000000000001042d0000000002000019000000000001042d00000e750000043200000e760001042e00000e7700010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0e67178c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffbf3735000000000000000000000000000000000000000000000000000000000000ad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5020000000000000000000000000000000000004000000000000000000000000002000000000000000000000000000000000000000000000000000000000000002f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d000000020000000000000000000000000000008000000100000000000000000008c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000674b5e4c000000000000000000000000000000000000000000000000000000009a2b96f600000000000000000000000000000000000000000000000000000000b5bfdde900000000000000000000000000000000000000000000000000000000d547741e00000000000000000000000000000000000000000000000000000000d547741f00000000000000000000000000000000000000000000000000000000f83695cb00000000000000000000000000000000000000000000000000000000fa50f29700000000000000000000000000000000000000000000000000000000b5bfddea00000000000000000000000000000000000000000000000000000000b8f6dba700000000000000000000000000000000000000000000000000000000a217fdde00000000000000000000000000000000000000000000000000000000a217fddf00000000000000000000000000000000000000000000000000000000a21bce15000000000000000000000000000000000000000000000000000000009a2b96f7000000000000000000000000000000000000000000000000000000009ac9d80b000000000000000000000000000000000000000000000000000000007a9a93f30000000000000000000000000000000000000000000000000000000091d148530000000000000000000000000000000000000000000000000000000091d14854000000000000000000000000000000000000000000000000000000009712fdf8000000000000000000000000000000000000000000000000000000007a9a93f4000000000000000000000000000000000000000000000000000000007be53ca100000000000000000000000000000000000000000000000000000000726600cd00000000000000000000000000000000000000000000000000000000726600ce0000000000000000000000000000000000000000000000000000000078bb0a4300000000000000000000000000000000000000000000000000000000674b5e4d000000000000000000000000000000000000000000000000000000006e76fc8f000000000000000000000000000000000000000000000000000000002500f2b5000000000000000000000000000000000000000000000000000000003c5a08e4000000000000000000000000000000000000000000000000000000005577b7a8000000000000000000000000000000000000000000000000000000005577b7a9000000000000000000000000000000000000000000000000000000005b9a94e4000000000000000000000000000000000000000000000000000000003c5a08e5000000000000000000000000000000000000000000000000000000004f16b425000000000000000000000000000000000000000000000000000000002f2ff15c000000000000000000000000000000000000000000000000000000002f2ff15d0000000000000000000000000000000000000000000000000000000036568abe000000000000000000000000000000000000000000000000000000002500f2b600000000000000000000000000000000000000000000000000000000253cf98000000000000000000000000000000000000000000000000000000000179efb080000000000000000000000000000000000000000000000000000000022650cae0000000000000000000000000000000000000000000000000000000022650caf00000000000000000000000000000000000000000000000000000000248a9ca300000000000000000000000000000000000000000000000000000000179efb09000000000000000000000000000000000000000000000000000000001e4e0091000000000000000000000000000000000000000000000000000000000542975b000000000000000000000000000000000000000000000000000000000542975c0000000000000000000000000000000000000000000000000000000013ee32e00000000000000000000000000000000000000000000000000000000001ffc9a70000000000000000000000000000000000000000000000000000000004df017d2eadd72b6698cc7bfac8abf613f53107771ac2a3e4a3221cda0a8e2b1b91b0b40000000000000000000000000000000000000020000000000000000000000000d21b659ff028ba5860060da0a2ef0b8b1b13b1f79963511fcee160c2e54d2f23d21b659ff028ba5860060da0a2ef0b8b1b13b1f79963511fcee160c2e54d2f22f6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b12ad05bde78c5ab75238ce885307f96ecd482bb402ef831f99e7018a0f169b7b000000000000000000000000000000000000000000000000ffffffffffffff9f00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3000000000000000000000000000000000000000000000000000000000000000780000000000000000000000000000000000000000000000000000000000000030313233343536373839616263646566000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000537472696e67733a20686578206c656e67746820696e73756666696369656e740000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000206973206d697373696e6720726f6c6520000000000000000000000000000000000000000000000000000000000000000000002000000080000000000000000008fb31c3e81624356c3314088aa971b73bcc82d22bc3e3b184b4593077ae3278cba084d2e26105260e9ae84b007967d64af085c681345e4941eeba502738cf45cba084d2e26105260e9ae84b007967d64af085c681345e4941eeba502738cf4419c860a63258efbd0ecb7d55c626237bf5c2044c26c073390b74f0c13c8574332eadd72b6698cc7bfac8abf613f53107771ac2a3e4a3221cda0a8e2b1b91b0b5939b8dfb57ecef2aea54a93a15e86768b9d4089f1ba61c245e6ec980695f4ca49e350b38c6d0090a0631963682975411c4e88e66bd66d7f4ffcc296b4c83bf949e350b38c6d0090a0631963682975411c4e88e66bd66d7f4ffcc296b4c83bf93ac55d60145c2b1e72232130507b090ddd2cd26daa31eeab1e3e64b89140e668eac55d60145c2b1e72232130507b090ddd2cd26daa31eeab1e3e64b89140e668d5c91514091af31f62f596a314af7d5be40146b2f2355969392f055e12e0982fba2630211c42039a24e17727bf18ec344681c4916090d2a50e04b9b6e50b7fea9a2630211c42039a24e17727bf18ec344681c4916090d2a50e04b9b6e50b7feaa8aa855a911518ecfbe5bc3088c8f3dda7badf130faaf8ace33fdc33828e18167416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c6600000000000000000000000000000000000000000000000000000000000000000000000084000000800000000000000000bd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff4e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000001ffc9a7000000000000000000000000000000000000000000000000000000007965db0b00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e0200000200000000000000000000000000000044000000000000000000000000b141c8b8e641a998a0757b89ff03e0caafefaaf835f4639b038200c2cf3b7ae9
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000de15bc7060eb299674d652f48b76ba18c1179028
-----Decoded View---------------
Arg [0] : provider (address): 0xde15Bc7060Eb299674D652f48b76BA18c1179028
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000de15bc7060eb299674d652f48b76ba18c1179028
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
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.