"example" yöntemi için example başarıyla gönderildi dahi̇li̇ i̇şlemler işlemler jeton transferleri nft transferleri token detay transferleri kimliğe göre token detay transferleri token sahi̇pleri̇ kütükler yürütme geri döndürüldü
false
false
Sözleşme
0x01a91e8658544B305A7AD6d95D48a7c121737B15
Genel Bakış
XCR DENGE
0 XCR
XCR DEĞER
$--- (@ $---/XCR)
Daha Fazla Bilgi
SÖZLEŞME YARATICISI
My Happy SVG Son 25 dahili işlem(Tümünü Görüntüle)
"%>
Ebeveyn Txn Hash
Yöntem
Blok Yaş Kimden içinDeğer
0xecf33c0f32a79068…
Deposit
10 secs ago 0xbAFA44...559c1138 Beacon Deposit Contract 32 ETH
0xecf33c0f32a79068…
Deposit
10 secs ago 0xbAFA44...559c1138 Beacon Deposit Contract 32 ETH
0xecf33c0f32a79068…
Deposit
10 secs ago 0xbAFA44...559c1138 Beacon Deposit Contract 32 ETH
0xecf33c0f32a79068…
Deposit
10 secs ago 0xbAFA44...559c1138 Beacon Deposit Contract 32 ETH
0xecf33c0f32a79068…
Deposit
10 secs ago 0xbAFA44...559c1138 Beacon Deposit Contract 32 ETH
0xecf33c0f32a79068…
Deposit
10 secs ago 0xbAFA44...559c1138 Beacon Deposit Contract 32 ETH
0xecf33c0f32a79068…
Deposit
10 secs ago 0xbAFA44...559c1138 Beacon Deposit Contract 32 ETH
0xecf33c0f32a79068…
Deposit
10 secs ago 0xbAFA44...559c1138 Beacon Deposit Contract 32 ETH
0xecf33c0f32a79068…
Deposit
10 secs ago 0xbAFA44...559c1138 Beacon Deposit Contract 32 ETH
0xecf33c0f32a79068…
Deposit
10 secs ago 0xbAFA44...559c1138 Beacon Deposit Contract 32 ETH
0xecf33c0f32a79068…
Deposit
10 secs ago 0xbAFA44...559c1138 Beacon Deposit Contract 32 ETH
0xecf33c0f32a79068…
Deposit
10 secs ago 0xbAFA44...559c1138 Beacon Deposit Contract 32 ETH
0xecf33c0f32a79068…
Deposit
10 secs ago 0xbAFA44...559c1138 Beacon Deposit Contract 32 ETH
0xecf33c0f32a79068…
Deposit
10 secs ago 0xbAFA44...559c1138 Beacon Deposit Contract 32 ETH
0xecf33c0f32a79068…
Deposit
10 secs ago 0xbAFA44...559c1138 Beacon Deposit Contract 32 ETH
0xecf33c0f32a79068…
Deposit
10 secs ago 0xbAFA44...559c1138 Beacon Deposit Contract 32 ETH
0xecf33c0f32a79068…
Deposit
10 secs ago 0xbAFA44...559c1138 Beacon Deposit Contract 32 ETH
0xecf33c0f32a79068…
Deposit
10 secs ago 0xbAFA44...559c1138 Beacon Deposit Contract 32 ETH
0xecf33c0f32a79068…
Deposit
10 secs ago 0xbAFA44...559c1138 Beacon Deposit Contract 32 ETH
0xecf33c0f32a79068…
Deposit
10 secs ago 0xbAFA44...559c1138 Beacon Deposit Contract 32 ETH
My Happy SVG Latest 25 from a total of 323,666 transactions (+ 1 Pending)
İşlem Karması
Yöntem
Blok Yaş Kimden için Değer Txn Peri
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... 30,000,000,000 Catecoin (CATE)
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... 30,000,000,000 Catecoin (CATE)
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... 30,000,000,000 Catecoin (CATE)
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... 30,000,000,000 Catecoin (CATE)
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... 30,000,000,000 Catecoin (CATE)
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... 30,000,000,000 Catecoin (CATE)
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... 30,000,000,000 Catecoin (CATE)
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... 30,000,000,000 Catecoin (CATE)
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... 30,000,000,000 Catecoin (CATE)
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... 30,000,000,000 Catecoin (CATE)
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... 30,000,000,000 Catecoin (CATE)
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... 30,000,000,000 Catecoin (CATE)
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... 30,000,000,000 Catecoin (CATE)
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... 30,000,000,000 Catecoin (CATE)
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... 30,000,000,000 Catecoin (CATE)
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... 30,000,000,000 Catecoin (CATE)
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... 30,000,000,000 Catecoin (CATE)
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... 30,000,000,000 Catecoin (CATE)
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... 30,000,000,000 Catecoin (CATE)
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... 30,000,000,000 Catecoin (CATE)
My Happy SVG Latest 25 from a total of 323,666 transactions (+ 1 Pending)
Transaction Hash
Method
Blok Yaş Kimden için Tip Öğe
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... ECR_721
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... ECR_721
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... ECR_721
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... ECR_721
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... ECR_721
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... ECR_721
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... ECR_721
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... ECR_721
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... ECR_721
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... ECR_721
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... ECR_721
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... ECR_721
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... ECR_721
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... ECR_721
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... ECR_721
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... ECR_721
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... ECR_721
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... ECR_721
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... ECR_721
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
0xecf33c0f32a79068…
Transfer
12 hrs 44 mins ago Catecoin: Deployer 2
IN
Beacon Deposit Co... ECR_721
Greeting Cards 2023 Limit
NFT: Greeting Cards 2023 Limited Ed
Contract Source Code Verified (Exact Match)
ContractName:
DepositContract
Optimization Enabled:
Yes with 5000000 runs
Compiler Version:
v0.6.11+commit.5ef660b1
Other Settings:
default evmVersion, Unlicense license
Contract Source Code (Solidity)
Contract Security Audit
- Submit Audit Here
Contract ABI
Contract Creation Code
Deployed ByteCode Sourcemap
Swarm Source
ipfs://dceca8706b29e917dacf25fceef95acac8d90d765ac926663ce4096195952b61
My Happy SVG Latest 25 from a total of 323,666 transactions (+ 1 Pending)
Txn Hash Blok Yaş Yöntem My Happy SVG Günlükler
0xecf33c0f32a79068…
17453280 13 mins ago
0x22895118
deposit(bytes,bytes,bytes,bytes32)
DepositEvent (bytes pubkey, bytes withdrawal_credentials, bytes amount, bytes signature, bytes index)
[topic0] 0x649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c5
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
0xecf33c0f32a79068…
17453280 13 mins ago
0x22895118
deposit(bytes,bytes,bytes,bytes32)
DepositEvent (bytes pubkey, bytes withdrawal_credentials, bytes amount, bytes signature, bytes index)
[topic0] 0x649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c5
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
0xecf33c0f32a79068…
17453280 13 mins ago
0x22895118
deposit(bytes,bytes,bytes,bytes32)
DepositEvent (bytes pubkey, bytes withdrawal_credentials, bytes amount, bytes signature, bytes index)
[topic0] 0x649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c5
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
00000000000000000000000000000000000000000000000000000000000000a0
My Happy SVG Latest 15 blocks produced
Block Age Transaction Difficulty Gas Used Reward
0xecf33c0f32a79068…
34 days 21 hrs ago 145 0.00 TH 10,915,233 (36.38%)
0.026092595899657117 ETH
0xecf33c0f32a79068…
34 days 21 hrs ago 145 0.00 TH 10,915,233 (36.38%)
0.026092595899657117 ETH
0xecf33c0f32a79068…
34 days 21 hrs ago 145 0.00 TH 10,915,233 (36.38%)
0.026092595899657117 ETH
0xecf33c0f32a79068…
34 days 21 hrs ago 145 0.00 TH 10,915,233 (36.38%)
0.026092595899657117 ETH
0xecf33c0f32a79068…
34 days 21 hrs ago 145 0.00 TH 10,915,233 (36.38%)
0.026092595899657117 ETH
0xecf33c0f32a79068…
34 days 21 hrs ago 145 0.00 TH 10,915,233 (36.38%)
0.026092595899657117 ETH
0xecf33c0f32a79068…
34 days 21 hrs ago 145 0.00 TH 10,915,233 (36.38%)
0.026092595899657117 ETH
0xecf33c0f32a79068…
34 days 21 hrs ago 145 0.00 TH 10,915,233 (36.38%)
0.026092595899657117 ETH
0xecf33c0f32a79068…
34 days 21 hrs ago 145 0.00 TH 10,915,233 (36.38%)
0.026092595899657117 ETH
0xecf33c0f32a79068…
34 days 21 hrs ago 145 0.00 TH 10,915,233 (36.38%)
0.026092595899657117 ETH
0xecf33c0f32a79068…
34 days 21 hrs ago 145 0.00 TH 10,915,233 (36.38%)
0.026092595899657117 ETH
0xecf33c0f32a79068…
34 days 21 hrs ago 145 0.00 TH 10,915,233 (36.38%)
0.026092595899657117 ETH
0xecf33c0f32a79068…
34 days 21 hrs ago 145 0.00 TH 10,915,233 (36.38%)
0.026092595899657117 ETH
0xecf33c0f32a79068…
34 days 21 hrs ago 145 0.00 TH 10,915,233 (36.38%)
0.026092595899657117 ETH
0xecf33c0f32a79068…
34 days 21 hrs ago 145 0.00 TH 10,915,233 (36.38%)
0.026092595899657117 ETH
0xecf33c0f32a79068…
34 days 21 hrs ago 145 0.00 TH 10,915,233 (36.38%)
0.026092595899657117 ETH
0xecf33c0f32a79068…
34 days 21 hrs ago 145 0.00 TH 10,915,233 (36.38%)
0.026092595899657117 ETH
0xecf33c0f32a79068…
34 days 21 hrs ago 145 0.00 TH 10,915,233 (36.38%)
0.026092595899657117 ETH
0xecf33c0f32a79068…
34 days 21 hrs ago 145 0.00 TH 10,915,233 (36.38%)
0.026092595899657117 ETH
0xecf33c0f32a79068…
34 days 21 hrs ago 145 0.00 TH 10,915,233 (36.38%)
0.026092595899657117 ETH
Uyarı! Sözleşme bayt kodu değiştirilmiştir ve doğrulanmış olanla eşleşmemektedir. Bu nedenle, bu akıllı sözleşme ile etkileşim riskli olabilir.
Bu sözleşme Sourcify aracılığıyla kısmen doğrulanmıştır.
Sözleşme Adı:
OSBTokenFactory
Optimizasyon Etkin:
gerçek
Derleyici sürümü:
v0.8.16+commit.07a7930e
Optimizasyon Çalışmaları:
200
EVM versiyonu:
default
Doğrulandı:
2024-04-10T04:42:38.805694Z

Kurucu Argümanları

0x000000000000000000000000f32fb8449ab77bd09c6f6997d28f19df322e34ad0000000000000000000000001e19f4b3b1cedce3eb000293d2b2595b88c8aab5000000000000000000000000232f28f71b63dc2fbb5713a9424852aad73970b9

Arg [0] (address) : 0xf32fb8449ab77bd09c6f6997d28f19df322e34ad
Arg [1] (address) : 0x1e19f4b3b1cedce3eb000293d2b2595b88c8aab5
Arg [2] (address) : 0x232f28f71b63dc2fbb5713a9424852aad73970b9

                              

Dosya 1 . 1: Sözleşme kaynak kodu

Sol2uml
yeni
// Sources flattened with hardhat v2.13.0 https://hardhat.org

// File @openzeppelin/contracts/proxy/Clones.sol@v4.8.2

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (proxy/Clones.sol)

pragma solidity ^0.8.0;

/**
 * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for
 * deploying minimal proxy contracts, also known as "clones".
 *
 * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies
 * > a minimal bytecode implementation that delegates all calls to a known, fixed address.
 *
 * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`
 * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the
 * deterministic method.
 *
 * _Available since v3.4._
 */
library Clones {
    /**
     * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.
     *
     * This function uses the create opcode, which should never revert.
     */
    function clone(address implementation) internal returns (address instance) {
        /// @solidity memory-safe-assembly
        assembly {
            // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes
            // of the `implementation` address with the bytecode before the address.
            mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))
            // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.
            mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))
            instance := create(0, 0x09, 0x37)
        }
        require(instance != address(0), "ERC1167: create failed");
    }

    /**
     * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.
     *
     * This function uses the create2 opcode and a `salt` to deterministically deploy
     * the clone. Using the same `implementation` and `salt` multiple time will revert, since
     * the clones cannot be deployed twice at the same address.
     */
    function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {
        /// @solidity memory-safe-assembly
        assembly {
            // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes
            // of the `implementation` address with the bytecode before the address.
            mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))
            // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.
            mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))
            instance := create2(0, 0x09, 0x37, salt)
        }
        require(instance != address(0), "ERC1167: create2 failed");
    }

    /**
     * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.
     */
    function predictDeterministicAddress(
        address implementation,
        bytes32 salt,
        address deployer
    ) internal pure returns (address predicted) {
        /// @solidity memory-safe-assembly
        assembly {
            let ptr := mload(0x40)
            mstore(add(ptr, 0x38), deployer)
            mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)
            mstore(add(ptr, 0x14), implementation)
            mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)
            mstore(add(ptr, 0x58), salt)
            mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))
            predicted := keccak256(add(ptr, 0x43), 0x55)
        }
    }

    /**
     * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.
     */
    function predictDeterministicAddress(
        address implementation,
        bytes32 salt
    ) internal view returns (address predicted) {
        return predictDeterministicAddress(implementation, salt, address(this));
    }
}

// File @openzeppelin/contracts/utils/Context.sol@v4.8.2

// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with 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) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

// File @openzeppelin/contracts/utils/Counters.sol@v4.8.2

// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)

pragma solidity ^0.8.0;

/**
 * @title Counters
 * @author Matt Condon (@shrugs)
 * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number
 * of elements in a mapping, issuing ERC721 ids, or counting request ids.
 *
 * Include with `using Counters for Counters.Counter;`
 */
library Counters {
    struct Counter {
        // This variable should never be directly accessed by users of the library: interactions must be restricted to
        // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add
        // this feature: see https://github.com/ethereum/solidity/issues/4637
        uint256 _value; // default: 0
    }

    function current(Counter storage counter) internal view returns (uint256) {
        return counter._value;
    }

    function increment(Counter storage counter) internal {
        unchecked {
            counter._value += 1;
        }
    }

    function decrement(Counter storage counter) internal {
        uint256 value = counter._value;
        require(value > 0, "Counter: decrement overflow");
        unchecked {
            counter._value = value - 1;
        }
    }

    function reset(Counter storage counter) internal {
        counter._value = 0;
    }
}

// File contracts/interfaces/IOSBLimitedToken.sol

pragma solidity 0.8.16;

interface IOSBLimitedToken {
    function initialize(
        address _owner,
        string memory _name,
        string memory _symbol,
        uint8 _decimals,
        uint256 _issueAmount,
        uint256 _maxTotalSupply
    ) external;
}

// File contracts/interfaces/IOSBTokenFactory.sol

pragma solidity 0.8.16;

interface IOSBTokenFactory {}

struct ContractInfo {
    uint256 id;
    bool isLimited;
    address owner;
    address token;
}

// File contracts/interfaces/IOSBUnlimitedToken.sol

pragma solidity 0.8.16;

interface IOSBUnlimitedToken {
    function initialize(
        address _owner,
        string memory _name,
        string memory _symbol,
        uint8 _decimals,
        uint256 _issueAmount
    ) external;
}

// File contracts/interfaces/ISetting.sol

pragma solidity 0.8.16;

interface ISetting {
    function checkOnlySuperAdmin(address _caller) external view;

    function checkOnlyAdmin(address _caller) external view;

    function checkOnlySuperAdminOrController(address _caller) external view;

    function checkOnlyController(address _caller) external view;

    function isAdmin(address _account) external view returns (bool);

    function isSuperAdmin(address _account) external view returns (bool);

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

error CallerIsNotTheSuperAdmin();
error CallerIsNotTheAdmin();

// File contracts/OSBTokenFactory.sol

pragma solidity 0.8.16;

contract OSBTokenFactory is IOSBTokenFactory, Context {
    ISetting public setting;

    address public osbLimitedTokenLib;
    address public osbUnlimitedTokenLib;

    using Counters for Counters.Counter;
    Counters.Counter public lastId;

    /// @dev Keep track of contract info from created ID.
    mapping(uint256 => ContractInfo) public contractInfos;

    // ============ ERRORS ============
    error AddressIsZero();

    // ============ EVENTS ============
    /// @dev Emit an event when the contract is deployed.
    event ContractDeployed(
        address indexed setting,
        address indexed osbLimitedTokenLib,
        address indexed osbUnlimitedTokenLib
    );

    /// @dev Emit an event when the osbLimitedTokenLib is updated.
    event SetOSBLimitedTokenLib(address indexed oldAddress, address indexed newAddress);

    /// @dev Emit an event when the osbUnlimitedTokenLib is updated.
    event SetOSBUnlimitedTokenLib(address indexed oldAddress, address indexed newAddress);

    /// @dev Emit an event when a contract created.
    event ContractCreated(uint256 indexed id, bool isLimited, address indexed owner, address indexed deployedContract);

    /**
     * @notice Setting states initial when deploy contract and only called once.
     * @param _setting Setting contract address.
     * @param _osbLimitedTokenLib OSBLimitedToken library address.
     * @param _osbUnlimitedTokenLib OSBUnlimitedToken library address.
     */
    constructor(address _setting, address _osbLimitedTokenLib, address _osbUnlimitedTokenLib) {
        setting = ISetting(_setting);
        osbLimitedTokenLib = _osbLimitedTokenLib;
        osbUnlimitedTokenLib = _osbUnlimitedTokenLib;
        emit ContractDeployed(_setting, _osbLimitedTokenLib, _osbUnlimitedTokenLib);
    }

    // ============ ACCESS CONTROL/SANITY MODIFIERS ============
    modifier onlySuperAdmin() {
        setting.checkOnlySuperAdmin(_msgSender());
        _;
    }

    // ============ OWNER-ONLY ADMIN FUNCTIONS =============
    /**
     * @notice Update the new OSBLimitedToken library address.
     * @param _library Library address.
     */
    function setOSBLimitedToken(address _library) external onlySuperAdmin {
        if (_library == address(0)) revert AddressIsZero();
        address oldAddress = osbLimitedTokenLib;
        osbLimitedTokenLib = _library;
        emit SetOSBLimitedTokenLib(oldAddress, _library);
    }

    /**
     * @notice Update the new OSBUnlimitedToken library address.
     * @param _library Library address.
     */
    function setOSBUnlimitedToken(address _library) external onlySuperAdmin {
        if (_library == address(0)) revert AddressIsZero();
        address oldAddress = osbUnlimitedTokenLib;
        osbUnlimitedTokenLib = _library;
        emit SetOSBUnlimitedTokenLib(oldAddress, _library);
    }

    // ============ EXTERNAL FUNCTIONS FOR CREATING AND MINT =============
    /**
     * @dev Creates a new ERC20 token contract and initializes it with the specified parameters.
     * @param _owner The owner of the contract.
     * @param _name The name of the token.
     * @param _symbol The symbol of the token.
     * @param _decimals The number of decimals used to get its user representation.
     * @param _issueAmount The initial amount of tokens to be issued.
     * @param _maxTotalSupply The maximum total supply of tokens.
     * @return deployedContract The address of the deployed token contract.
     */
    function createOSBLimitedToken(
        address _owner,
        string memory _name,
        string memory _symbol,
        uint8 _decimals,
        uint256 _issueAmount,
        uint256 _maxTotalSupply
    ) public returns (address deployedContract) {
        deployedContract = _createContract(true, _owner);
        IOSBLimitedToken(deployedContract).initialize(_owner, _name, _symbol, _decimals, _issueAmount, _maxTotalSupply);
    }

    /**
     * @dev Creates a new ERC20 token contract and initializes it with the specified parameters.
     * @param _owner The owner of the contract.
     * @param _name The name of the token.
     * @param _symbol The symbol of the token.
     * @param _decimals The number of decimals used to get its user representation.
     * @param _issueAmount The initial amount of tokens to be issued.
     * @return deployedContract The address of the deployed token contract.
     */
    function createOSBUnlimitedToken(
        address _owner,
        string memory _name,
        string memory _symbol,
        uint8 _decimals,
        uint256 _issueAmount
    ) public returns (address deployedContract) {
        deployedContract = _createContract(false, _owner);
        IOSBUnlimitedToken(deployedContract).initialize(_owner, _name, _symbol, _decimals, _issueAmount);
    }

    // ============ PRIVATE FUNCTIONS =============
    function _createContract(bool _isLimited, address _owner) private returns (address deployedContract) {
        lastId.increment();
        uint256 currentId = lastId.current();
        bytes32 salt = keccak256(abi.encodePacked(currentId));
        address lib = _isLimited ? osbLimitedTokenLib : osbUnlimitedTokenLib;

        deployedContract = Clones.cloneDeterministic(lib, salt);
        contractInfos[currentId] = ContractInfo({
            id: currentId,
            isLimited: _isLimited,
            owner: _owner,
            token: deployedContract
        });

        emit ContractCreated(currentId, _isLimited, _owner, deployedContract);
    }
}
        

Sözleşme ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"address","name":"_setting","internalType":"address"},{"type":"address","name":"_osbLimitedTokenLib","internalType":"address"},{"type":"address","name":"_osbUnlimitedTokenLib","internalType":"address"}]},{"type":"error","name":"AddressIsZero","inputs":[]},{"type":"event","name":"ContractCreated","inputs":[{"type":"uint256","name":"id","internalType":"uint256","indexed":true},{"type":"bool","name":"isLimited","internalType":"bool","indexed":false},{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"deployedContract","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"ContractDeployed","inputs":[{"type":"address","name":"setting","internalType":"address","indexed":true},{"type":"address","name":"osbLimitedTokenLib","internalType":"address","indexed":true},{"type":"address","name":"osbUnlimitedTokenLib","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"SetOSBLimitedTokenLib","inputs":[{"type":"address","name":"oldAddress","internalType":"address","indexed":true},{"type":"address","name":"newAddress","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"SetOSBUnlimitedTokenLib","inputs":[{"type":"address","name":"oldAddress","internalType":"address","indexed":true},{"type":"address","name":"newAddress","internalType":"address","indexed":true}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"id","internalType":"uint256"},{"type":"bool","name":"isLimited","internalType":"bool"},{"type":"address","name":"owner","internalType":"address"},{"type":"address","name":"token","internalType":"address"}],"name":"contractInfos","inputs":[{"type":"uint256","name":"","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"address","name":"deployedContract","internalType":"address"}],"name":"createOSBLimitedToken","inputs":[{"type":"address","name":"_owner","internalType":"address"},{"type":"string","name":"_name","internalType":"string"},{"type":"string","name":"_symbol","internalType":"string"},{"type":"uint8","name":"_decimals","internalType":"uint8"},{"type":"uint256","name":"_issueAmount","internalType":"uint256"},{"type":"uint256","name":"_maxTotalSupply","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"address","name":"deployedContract","internalType":"address"}],"name":"createOSBUnlimitedToken","inputs":[{"type":"address","name":"_owner","internalType":"address"},{"type":"string","name":"_name","internalType":"string"},{"type":"string","name":"_symbol","internalType":"string"},{"type":"uint8","name":"_decimals","internalType":"uint8"},{"type":"uint256","name":"_issueAmount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"_value","internalType":"uint256"}],"name":"lastId","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"osbLimitedTokenLib","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"osbUnlimitedTokenLib","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setOSBLimitedToken","inputs":[{"type":"address","name":"_library","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setOSBUnlimitedToken","inputs":[{"type":"address","name":"_library","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract ISetting"}],"name":"setting","inputs":[]}]
              

Sözleşme Oluşturma Kodu

Doğrula ve Yayınla
0x608060405234801561001057600080fd5b50604051610ae7380380610ae783398101604081905261002f916100ba565b600080546001600160a01b03199081166001600160a01b0386811691821784556001805484168783169081179091556002805490941691861691821790935560405190937f8a14d1d7200360982eafa429b53edf408f7f589e6da6558f3c116c7f708327b391a45050506100fd565b80516001600160a01b03811681146100b557600080fd5b919050565b6000806000606084860312156100cf57600080fd5b6100d88461009e565b92506100e66020850161009e565b91506100f46040850161009e565b90509250925092565b6109db8061010c6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063ac4a21b411610066578063ac4a21b414610164578063c0c9ce3014610177578063c1292cc31461018a578063c3d1222e146101a2578063fff99778146101b557600080fd5b80634fc749921461009857806364218c64146100c85780636794f004146100dd5780636892da9414610151575b600080fd5b6001546100ab906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100db6100d63660046106a6565b6101c8565b005b6101226100eb3660046106c8565b600460205260009081526040902080546001820154600290920154909160ff8116916001600160a01b036101009092048216911684565b6040805194855292151560208501526001600160a01b03918216928401929092521660608201526080016100bf565b6002546100ab906001600160a01b031681565b6100ab610172366004610795565b6102ab565b6000546100ab906001600160a01b031681565b6003546101949081565b6040519081526020016100bf565b6100db6101b03660046106a6565b61032a565b6100ab6101c3366004610822565b61040d565b6000546001600160a01b031663b357010a336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160006040518083038186803b15801561021957600080fd5b505afa15801561022d573d6000803e3d6000fd5b5050506001600160a01b03821690506102595760405163867915ab60e01b815260040160405180910390fd5b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8f2afff1e0d2f2093c828d762c3100b7dc6db4b6a669975f8fb9f186f63677bf90600090a35050565b60006102b860008761048f565b60405163d72bdc5360e01b81529091506001600160a01b0382169063d72bdc53906102ef90899089908990899089906004016108ff565b600060405180830381600087803b15801561030957600080fd5b505af115801561031d573d6000803e3d6000fd5b5050505095945050505050565b6000546001600160a01b031663b357010a336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160006040518083038186803b15801561037b57600080fd5b505afa15801561038f573d6000803e3d6000fd5b5050506001600160a01b03821690506103bb5760405163867915ab60e01b815260040160405180910390fd5b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f9f4aaace1d25addbd72ed2cf23cb5c722d9d92ef412a380c225dff12b71413a490600090a35050565b600061041a60018861048f565b604051630ba5715f60e31b81529091506001600160a01b03821690635d2b8af890610453908a908a908a908a908a908a9060040161094d565b600060405180830381600087803b15801561046d57600080fd5b505af1158015610481573d6000803e3d6000fd5b505050509695505050505050565b600061049f600380546001019055565b60006104aa60035490565b90506000816040516020016104c191815260200190565b6040516020818303038152906040528051906020012090506000856104f1576002546001600160a01b03166104fe565b6001546001600160a01b03165b905061050a81836105e3565b6040805160808101825285815288151560208083018281526001600160a01b038b81168587018181528883166060880181815260008e8152600488528a90209851895594516001890180549351861661010002610100600160a81b0319921515929092166001600160a81b03199094169390931717909155925160029096018054969092166001600160a01b031990961695909517905593519182529397509192909186917f1669c6c56df80dd8ceb465977fbfb157eaef647c232c2f5332a8179701a5b589910160405180910390a450505092915050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b0381166106845760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c6564000000000000000000604482015260640160405180910390fd5b92915050565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6106c18261068a565b9392505050565b6000602082840312156106da57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261070857600080fd5b813567ffffffffffffffff80821115610723576107236106e1565b604051601f8301601f19908116603f0116810190828211818310171561074b5761074b6106e1565b8160405283815286602085880101111561076457600080fd5b836020870160208301376000602085830101528094505050505092915050565b803560ff811681146106a157600080fd5b600080600080600060a086880312156107ad57600080fd5b6107b68661068a565b9450602086013567ffffffffffffffff808211156107d357600080fd5b6107df89838a016106f7565b955060408801359150808211156107f557600080fd5b50610802888289016106f7565b93505061081160608701610784565b949793965091946080013592915050565b60008060008060008060c0878903121561083b57600080fd5b6108448761068a565b9550602087013567ffffffffffffffff8082111561086157600080fd5b61086d8a838b016106f7565b9650604089013591508082111561088357600080fd5b5061089089828a016106f7565b94505061089f60608801610784565b92506080870135915060a087013590509295509295509295565b6000815180845260005b818110156108df576020818501810151868301820152016108c3565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160a01b038616815260a060208201819052600090610923908301876108b9565b828103604084015261093581876108b9565b60ff9590951660608401525050608001529392505050565b6001600160a01b038716815260c060208201819052600090610971908301886108b9565b828103604084015261098381886108b9565b60ff9690961660608401525050608081019290925260a090910152939250505056fea2646970667358221220ba3c4fd69da4dd0e7760f337830077287372226ef2e10893779c746f58bb258964736f6c63430008100033000000000000000000000000f32fb8449ab77bd09c6f6997d28f19df322e34ad0000000000000000000000001e19f4b3b1cedce3eb000293d2b2595b88c8aab5000000000000000000000000232f28f71b63dc2fbb5713a9424852aad73970b9

Dağıtılmış ByteCode

0x608060405234801561001057600080fd5b50600436106100935760003560e01c8063ac4a21b411610066578063ac4a21b414610164578063c0c9ce3014610177578063c1292cc31461018a578063c3d1222e146101a2578063fff99778146101b557600080fd5b80634fc749921461009857806364218c64146100c85780636794f004146100dd5780636892da9414610151575b600080fd5b6001546100ab906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100db6100d63660046106a6565b6101c8565b005b6101226100eb3660046106c8565b600460205260009081526040902080546001820154600290920154909160ff8116916001600160a01b036101009092048216911684565b6040805194855292151560208501526001600160a01b03918216928401929092521660608201526080016100bf565b6002546100ab906001600160a01b031681565b6100ab610172366004610795565b6102ab565b6000546100ab906001600160a01b031681565b6003546101949081565b6040519081526020016100bf565b6100db6101b03660046106a6565b61032a565b6100ab6101c3366004610822565b61040d565b6000546001600160a01b031663b357010a336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160006040518083038186803b15801561021957600080fd5b505afa15801561022d573d6000803e3d6000fd5b5050506001600160a01b03821690506102595760405163867915ab60e01b815260040160405180910390fd5b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8f2afff1e0d2f2093c828d762c3100b7dc6db4b6a669975f8fb9f186f63677bf90600090a35050565b60006102b860008761048f565b60405163d72bdc5360e01b81529091506001600160a01b0382169063d72bdc53906102ef90899089908990899089906004016108ff565b600060405180830381600087803b15801561030957600080fd5b505af115801561031d573d6000803e3d6000fd5b5050505095945050505050565b6000546001600160a01b031663b357010a336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160006040518083038186803b15801561037b57600080fd5b505afa15801561038f573d6000803e3d6000fd5b5050506001600160a01b03821690506103bb5760405163867915ab60e01b815260040160405180910390fd5b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f9f4aaace1d25addbd72ed2cf23cb5c722d9d92ef412a380c225dff12b71413a490600090a35050565b600061041a60018861048f565b604051630ba5715f60e31b81529091506001600160a01b03821690635d2b8af890610453908a908a908a908a908a908a9060040161094d565b600060405180830381600087803b15801561046d57600080fd5b505af1158015610481573d6000803e3d6000fd5b505050509695505050505050565b600061049f600380546001019055565b60006104aa60035490565b90506000816040516020016104c191815260200190565b6040516020818303038152906040528051906020012090506000856104f1576002546001600160a01b03166104fe565b6001546001600160a01b03165b905061050a81836105e3565b6040805160808101825285815288151560208083018281526001600160a01b038b81168587018181528883166060880181815260008e8152600488528a90209851895594516001890180549351861661010002610100600160a81b0319921515929092166001600160a81b03199094169390931717909155925160029096018054969092166001600160a01b031990961695909517905593519182529397509192909186917f1669c6c56df80dd8ceb465977fbfb157eaef647c232c2f5332a8179701a5b589910160405180910390a450505092915050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b0381166106845760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c6564000000000000000000604482015260640160405180910390fd5b92915050565b80356001600160a01b03811681146106a157600080fd5b919050565b6000602082840312156106b857600080fd5b6106c18261068a565b9392505050565b6000602082840312156106da57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261070857600080fd5b813567ffffffffffffffff80821115610723576107236106e1565b604051601f8301601f19908116603f0116810190828211818310171561074b5761074b6106e1565b8160405283815286602085880101111561076457600080fd5b836020870160208301376000602085830101528094505050505092915050565b803560ff811681146106a157600080fd5b600080600080600060a086880312156107ad57600080fd5b6107b68661068a565b9450602086013567ffffffffffffffff808211156107d357600080fd5b6107df89838a016106f7565b955060408801359150808211156107f557600080fd5b50610802888289016106f7565b93505061081160608701610784565b949793965091946080013592915050565b60008060008060008060c0878903121561083b57600080fd5b6108448761068a565b9550602087013567ffffffffffffffff8082111561086157600080fd5b61086d8a838b016106f7565b9650604089013591508082111561088357600080fd5b5061089089828a016106f7565b94505061089f60608801610784565b92506080870135915060a087013590509295509295509295565b6000815180845260005b818110156108df576020818501810151868301820152016108c3565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160a01b038616815260a060208201819052600090610923908301876108b9565b828103604084015261093581876108b9565b60ff9590951660608401525050608001529392505050565b6001600160a01b038716815260c060208201819052600090610971908301886108b9565b828103604084015261098381886108b9565b60ff9690961660608401525050608081019290925260a090910152939250505056fea2646970667358221220ba3c4fd69da4dd0e7760f337830077287372226ef2e10893779c746f58bb258964736f6c63430008100033