Source Code
Overview
S Balance
S Value
$0.00Latest 25 from a total of 8,674 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Set_zk | 40595436 | 181 days ago | IN | 0 S | 0.04250601 | ||||
| Set_zk | 40593241 | 182 days ago | IN | 0 S | 0.0283388 | ||||
| Set_zk | 40591251 | 182 days ago | IN | 0 S | 0.0283376 | ||||
| Set_zk | 40587100 | 182 days ago | IN | 0 S | 0.028337 | ||||
| Set_zk | 40585381 | 182 days ago | IN | 0 S | 0.0283382 | ||||
| Set_zk | 40583503 | 182 days ago | IN | 0 S | 0.0283382 | ||||
| Set_zk | 40581602 | 182 days ago | IN | 0 S | 0.0283376 | ||||
| Set_zk | 40579695 | 182 days ago | IN | 0 S | 0.0283388 | ||||
| Set_zk | 40577407 | 182 days ago | IN | 0 S | 0.028337 | ||||
| Set_zk | 40575184 | 182 days ago | IN | 0 S | 0.028337 | ||||
| Set_zk | 40572855 | 182 days ago | IN | 0 S | 0.03056711 | ||||
| Set_zk | 40570890 | 182 days ago | IN | 0 S | 0.0283376 | ||||
| Set_zk | 40569103 | 182 days ago | IN | 0 S | 0.028337 | ||||
| Set_zk | 40567231 | 182 days ago | IN | 0 S | 0.0283382 | ||||
| Set_zk | 40565262 | 182 days ago | IN | 0 S | 0.0283388 | ||||
| Set_zk | 40563525 | 182 days ago | IN | 0 S | 0.0283394 | ||||
| Set_zk | 40561693 | 182 days ago | IN | 0 S | 0.0283394 | ||||
| Set_zk | 40559595 | 182 days ago | IN | 0 S | 0.0283376 | ||||
| Set_zk | 40557420 | 182 days ago | IN | 0 S | 0.0283394 | ||||
| Set_zk | 40555653 | 182 days ago | IN | 0 S | 0.0283364 | ||||
| Set_zk | 40553783 | 182 days ago | IN | 0 S | 0.028337 | ||||
| Set_zk | 40552069 | 182 days ago | IN | 0 S | 0.0283376 | ||||
| Set_zk | 40549950 | 182 days ago | IN | 0 S | 0.0283376 | ||||
| Set_zk | 40547722 | 182 days ago | IN | 0 S | 0.0283388 | ||||
| Set_zk | 40545473 | 182 days ago | IN | 0 S | 0.0283388 |
Latest 25 internal transactions (View All)
Advanced mode:
Cross-Chain Transactions
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0xa6A5a22B...824dCeb89 in Base Mainnet The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
DataFeedFeeder
Compiler Version
v0.8.20+commit.a1b79de6
Optimization Enabled:
Yes with 999999 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at SonicScan.org on 2025-03-27
*/
{{
"language": "Solidity",
"sources": {
"contracts/DataFeedFeeder.sol": {
"content": "// Copyright 2024 Diffuse.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//\n// SPDX-License-Identifier: Apache-2.0\n\n// taiko does not support MCOPY opcode\npragma solidity 0.8.20;\n\nimport {IAutomataDcapAttestationFee} from \"./IAutomataDcapAttestationFee.sol\";\nimport \"./DataFeedStorage.sol\";\n\ncontract DataFeedFeeder {\n IAutomataDcapAttestationFee public sgxQuoteVerifier;\n\n address public dataFeedProxyAddress;\n\n address public immutable owner;\n\n mapping (string => DataFeedStorage) public dataFeedStorages;\n\n uint16 constant ENCLAVE_REPORT_OFFSET_OUTPUT = 13;\n uint16 constant MRENCLAVE_OFFSET = 64;\n uint16 constant REPORT_DATA_OFFSET = 320;\n bytes32 public mrEnclaveExpected;\n\n constructor() {\n owner = msg.sender;\n }\n\n function mrEnclaveUpdate(bytes32 mrEnclaveNew) external {\n require (msg.sender == owner, \"only contract owner can call mrEnclaveUpdate\");\n mrEnclaveExpected = mrEnclaveNew;\n }\n\n function quoteVerifierUpdate(address newQuoteVerifierAddress) external {\n require (msg.sender == owner, \"only contract owner can call quoteVerifierUpdate\");\n sgxQuoteVerifier = IAutomataDcapAttestationFee(newQuoteVerifierAddress);\n }\n\n function transferStorage(string calldata pair_name, address newFeederAddress) external {\n require (msg.sender == owner, \"only contract owner can call transferStorage\");\n DataFeedFeeder(newFeederAddress).setExistingPair(pair_name, address(dataFeedStorages[pair_name]));\n dataFeedStorages[pair_name].transferOwnership(newFeederAddress);\n }\n\n function setProxy(address proxyAddress) external {\n require (msg.sender == owner, \"only contract owner can call setProxy\");\n dataFeedProxyAddress = proxyAddress;\n }\n\n // enclaveReport starts at ENCLAVE_REPORT_OFFSET_OUTPUT-th byte of the verification output\n function check_mrenclave(bytes memory verificationOutput) private view {\n bytes memory mrEnclaveReal = new bytes(32);\n for (uint i = 0; i < 32; i++) {\n // mrenclave starts at byte 64 of enclaveReport and is 32 bytes long\n // https://github.com/automata-network/automata-dcap-attestation/blob/3a854a31eb2345a31f9e33697eef0d814d031a12/evm/contracts/bases/QuoteVerifierBase.sol#L64-L76\n mrEnclaveReal[i] = verificationOutput[ENCLAVE_REPORT_OFFSET_OUTPUT + 64 + i];\n }\n require (bytes32(mrEnclaveReal) == mrEnclaveExpected, \"mrEnclave from input differs from expected!\");\n }\n\n function set_zk(\n string[] calldata pair_names,\n uint128[] calldata prices,\n uint128[] calldata timestamps,\n bytes calldata sgx_verification_journal,\n bytes calldata sgx_verification_seal\n ) external payable {\n\n (bool success, bytes memory output) = sgxQuoteVerifier.verifyAndAttestWithZKProof{value: msg.value}(sgx_verification_journal, 1, sgx_verification_seal);\n if (!success) {\n // fail returns bytes(error_string)\n // success returns custom output type:\n // https://github.com/automata-network/automata-dcap-attestation/blob/b49a9f296a5e0cd8b1f076ec541b1239199cadd2/contracts/verifiers/V3QuoteVerifier.sol#L154\n require(success, string(output));\n }\n set(output, pair_names, prices, timestamps);\n }\n\n function set_onchain(\n string[] calldata pair_names,\n uint128[] calldata prices,\n uint128[] calldata timestamps,\n bytes calldata sgx_quote\n ) external payable {\n\n (bool success, bytes memory output) = sgxQuoteVerifier.verifyAndAttestOnChain{value: msg.value}(sgx_quote);\n if (!success) {\n // fail returns bytes(error_string)\n // success returns custom output type:\n // https://github.com/automata-network/automata-dcap-attestation/blob/b49a9f296a5e0cd8b1f076ec541b1239199cadd2/contracts/verifiers/V3QuoteVerifier.sol#L154\n require(success, string(output));\n }\n set(output, pair_names, prices, timestamps);\n }\n\n function set(\n bytes memory output,\n string[] calldata pair_names,\n uint128[] calldata prices,\n uint128[] calldata timestamps\n ) internal {\n\n check_mrenclave(output);\n\n require (pair_names.length == prices.length, \"pair_names and prices length mismatch\");\n require (prices.length == timestamps.length, \"prices and timestamps length mismatch\");\n\n bytes32[] memory hashes = new bytes32[](pair_names.length * 3);\n\n for (uint128 i = 0; i < pair_names.length; i++) {\n hashes[i*3] = keccak256(abi.encodePacked(pair_names[i]));\n hashes[i*3 + 1] = keccak256(abi.encodePacked(uint256(prices[i])));\n hashes[i*3 + 2] = keccak256(abi.encodePacked(uint256(timestamps[i])));\n }\n bytes memory concatenated;\n\n for (uint128 i = 0; i < hashes.length; i++) {\n concatenated = abi.encodePacked(concatenated, hashes[i]);\n }\n\n bytes32 hashed_input_data = keccak256(concatenated);\n\n\n bytes memory data_hash_from_sgx = new bytes(32);\n for (uint i = 0; i < 32; i++) {\n data_hash_from_sgx[i] = output[ENCLAVE_REPORT_OFFSET_OUTPUT + REPORT_DATA_OFFSET + i];\n }\n require(hashed_input_data == bytes32(data_hash_from_sgx), \"hashed_input_data != data_hash_from_sgx\");\n\n // send round data to storage contracts\n for (uint i = 0; i < pair_names.length; i++) {\n require (\n address(dataFeedStorages[pair_names[i]]) != address(0),\n string(abi.encodePacked(\"storage for pair \", pair_names[i], \" is not deployed yet\"))\n );\n dataFeedStorages[pair_names[i]].setNewRound(int128(prices[i]), timestamps[i]);\n }\n }\n\n function setNewPair(string calldata pair_name) external returns (address) {\n require(address(dataFeedStorages[pair_name]) == address(0), \"Storage is already deployed for requested pair\");\n DataFeedStorage newStorage = new DataFeedStorage(pair_name, 8 /* TODO hardcoded*/);\n dataFeedStorages[pair_name] = newStorage;\n return address(newStorage);\n }\n\n function setExistingPair(string calldata pairName, address pairAddr) external {\n require(address(dataFeedStorages[pairName]) == address(0), \"Storage is already deployed for requested pair\");\n dataFeedStorages[pairName] = DataFeedStorage(pairAddr);\n }\n\n function getPairStorageAddress(string calldata pair_name) external view returns (address) {\n address result = address(dataFeedStorages[pair_name]);\n require(result != address(0), \"There is no data for requested pair\");\n return result;\n }\n}\n"
},
"contracts/IAutomataDcapAttestationFee.sol": {
"content": "//SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\n// Automata's sgx_quote verifier.\n// Takes sgx quote and returns bool result reason for fail / custom data type for success.\n// custom data type:\n// https://github.com/automata-network/automata-dcap-attestation/blob/b49a9f296a5e0cd8b1f076ec541b1239199cadd2/contracts/verifiers/V3QuoteVerifier.sol#L154\n\ninterface IAutomataDcapAttestationFee {\n function verifyAndAttestOnChain(bytes calldata rawQuote) external payable returns (bool, bytes memory);\n\n function verifyAndAttestWithZKProof(\n bytes calldata output, //journal\n uint8 zkCoprocessor, // enum, we use risc0 == 1\n bytes calldata proofBytes //seal\n )\n external\n payable\n returns (bool success, bytes memory verifiedOutput);\n}"
},
"contracts/DataFeedStorage.sol": {
"content": "// Copyright 2024 Diffuse\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//\n// SPDX-License-Identifier: Apache-2.0\n\npragma solidity ^0.8.20;\n\nstruct RoundData {\n int128 answer;\n uint128 timestamp;\n}\n\ncontract DataFeedStorage {\n\n uint16 constant public ROUNDS_STORAGE_SIZE = 256;\n uint8 immutable public decimals;\n uint80 roundsAmount = 0;\n address public owner;\n string public description;\n RoundData[ROUNDS_STORAGE_SIZE] roundDataArray;\n\n constructor (string memory _description_string, uint8 _decimals_amount) {\n description = _description_string;\n decimals = _decimals_amount;\n owner = msg.sender;\n }\n\n event NewRoundEvent(uint128 roundId);\n\n function transferOwnership(address newOwner) public {\n require(msg.sender == owner, \"Only storage owner can transfer ownership\");\n owner = newOwner;\n }\n\n\tfunction latestAnswer() external view returns (int128) {\n uint80 _latestRound = latestRound();\n return roundDataArray[_latestRound % ROUNDS_STORAGE_SIZE].answer;\n }\n\n\tfunction latestRound() public view returns (uint80) {\n require(roundsAmount != 0, \"there has been no rounds yet\");\n uint80 _latestRound = roundsAmount - 1;\n return _latestRound;\n }\n\n\tfunction roundToIndex(uint80 _roundId) internal view returns (uint80) {\n require(_roundId < roundsAmount, \"_roundId must be less than roundsAmount\");\n if (roundsAmount >= ROUNDS_STORAGE_SIZE) {\n require(_roundId >= roundsAmount - ROUNDS_STORAGE_SIZE, \"contract stores only ROUNDS_STORAGE_SIZE latest rounds\");\n }\n return _roundId % ROUNDS_STORAGE_SIZE;\n }\n\n\tfunction getRoundData(uint80 _roundId) external view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound) {\n uint80 index = roundToIndex(_roundId);\n int128 _answer = roundDataArray[index].answer;\n uint128 _timestamp = roundDataArray[index].timestamp;\n\n return (_roundId, _answer, _timestamp, _timestamp, _roundId);\n }\n\n\tfunction latestRoundData() external view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound) {\n uint80 _latestRound = latestRound();\n uint80 _latestIndex = roundToIndex(_latestRound);\n int128 _answer = roundDataArray[_latestIndex].answer;\n uint128 _timestamp = roundDataArray[_latestIndex].timestamp;\n\n return (_latestRound, _answer, _timestamp, _timestamp, _latestRound);\n }\n\n function setNewRound(int128 answer, uint128 timestamp) public {\n require(msg.sender == owner, \"Only storage owner can add new data\");\n emit NewRoundEvent(roundsAmount);\n roundsAmount = roundsAmount + 1;\n uint80 _latestIndex = roundToIndex(latestRound());\n roundDataArray[_latestIndex] = RoundData(answer, timestamp);\n }\n}\n"
}
},
"settings": {
"remappings": [
"@automata-network/on-chain-pccs/=lib/sgx_verifier_deployer/lib/automata-dcap-attestation/lib/automata-on-chain-pccs/src/",
"@openzeppelin/contracts/=lib/sgx_verifier_deployer/lib/risc0-ethereum/lib/openzeppelin-contracts/contracts/",
"@sp1-contracts/=lib/sgx_verifier_deployer/lib/automata-dcap-attestation/lib/sp1-contracts/contracts/src/",
"automata-dcap-attestation/=lib/sgx_verifier_deployer/lib/automata-dcap-attestation/",
"automata-on-chain-pccs/=lib/sgx_verifier_deployer/lib/automata-on-chain-pccs/",
"ds-test/=lib/sgx_verifier_deployer/lib/automata-dcap-attestation/lib/forge-std/lib/ds-test/src/",
"erc4626-tests/=lib/sgx_verifier_deployer/lib/risc0-ethereum/lib/openzeppelin-contracts/lib/erc4626-tests/",
"forge-std/=lib/sgx_verifier_deployer/lib/risc0-ethereum/lib/forge-std/src/",
"halmos-cheatcodes/=lib/sgx_verifier_deployer/lib/automata-on-chain-pccs/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/",
"openzeppelin-contracts/=lib/sgx_verifier_deployer/lib/risc0-ethereum/lib/openzeppelin-contracts/",
"openzeppelin/=lib/sgx_verifier_deployer/lib/risc0-ethereum/lib/openzeppelin-contracts/",
"p256-verifier/=lib/sgx_verifier_deployer/lib/p256-verifier/",
"risc0-ethereum/=lib/sgx_verifier_deployer/lib/risc0-ethereum/",
"risc0/=lib/sgx_verifier_deployer/lib/automata-dcap-attestation/lib/risc0-ethereum/contracts/src/",
"sgx_verifier_deployer/=lib/sgx_verifier_deployer/src/",
"solady/=lib/sgx_verifier_deployer/lib/automata-on-chain-pccs/lib/solady/",
"sp1-contracts/=lib/sgx_verifier_deployer/lib/automata-dcap-attestation/lib/sp1-contracts/contracts/"
],
"optimizer": {
"enabled": true,
"runs": 999999
},
"metadata": {
"useLiteralContent": true,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "paris",
"viaIR": true,
"libraries": {}
}
}}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"dataFeedProxyAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"dataFeedStorages","outputs":[{"internalType":"contract DataFeedStorage","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"pair_name","type":"string"}],"name":"getPairStorageAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mrEnclaveExpected","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"mrEnclaveNew","type":"bytes32"}],"name":"mrEnclaveUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newQuoteVerifierAddress","type":"address"}],"name":"quoteVerifierUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"pairName","type":"string"},{"internalType":"address","name":"pairAddr","type":"address"}],"name":"setExistingPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"pair_name","type":"string"}],"name":"setNewPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"proxyAddress","type":"address"}],"name":"setProxy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string[]","name":"pair_names","type":"string[]"},{"internalType":"uint128[]","name":"prices","type":"uint128[]"},{"internalType":"uint128[]","name":"timestamps","type":"uint128[]"},{"internalType":"bytes","name":"sgx_quote","type":"bytes"}],"name":"set_onchain","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string[]","name":"pair_names","type":"string[]"},{"internalType":"uint128[]","name":"prices","type":"uint128[]"},{"internalType":"uint128[]","name":"timestamps","type":"uint128[]"},{"internalType":"bytes","name":"sgx_verification_journal","type":"bytes"},{"internalType":"bytes","name":"sgx_verification_seal","type":"bytes"}],"name":"set_zk","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"sgxQuoteVerifier","outputs":[{"internalType":"contract IAutomataDcapAttestationFee","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"pair_name","type":"string"},{"internalType":"address","name":"newFeederAddress","type":"address"}],"name":"transferStorage","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
0x60a0806040523461003f57336080526129389081610045823960805181818161012301528181610248015281816105320152818161065801526108640152f35b600080fdfe608060408181526004803610156200001657600080fd5b600092833560e01c90816317915bbe1462000d095750806319d605841462000bcd578063303eb6191462000a765780634f6c2dd11462000a3757806364bd3c4e146200083157806367846133146200075e5780637199e98014620006cf57806388995ecc146200067c5780638da5cb5b146200060b57806397107d6d14620004dc5780639f06231f146200048757838163a31c334e14620002fa57508063d6053dd914620001fe5763db48fa8314620000ce57600080fd5b34620001fa5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620001fa576200010962000e88565b9073ffffffffffffffffffffffffffffffffffffffff92837f000000000000000000000000000000000000000000000000000000000000000016330362000177575050167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617815580f35b90602060849251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152603060248201527f6f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c2071756f60448201527f74655665726966696572557064617465000000000000000000000000000000006064820152fd5b8280fd5b509034620001fa5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620001fa5773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036200027757503560035580f35b90602060849251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602c60248201527f6f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c206d724560448201527f6e636c61766555706461746500000000000000000000000000000000000000006064820152fd5b91905060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620004775767ffffffffffffffff90803582811162000483576200034b903690830162000e54565b6024929192358481116200047f5762000368903690840162000e54565b9390926044358681116200047b5762000385903690830162000e54565b9790966064359081116200047757620003a2903690840162000e1e565b9092602073ffffffffffffffffffffffffffffffffffffffff84541691620003fd8d51968795869485947f38d8480a000000000000000000000000000000000000000000000000000000008652850152602484019162001022565b039134905af19081156200046d576200042d985089908a9262000443575b5081811562000430575b50506200134a565b80f35b6200043b91620010df565b388162000425565b90506200046591503d808b833e6200045c818362000f80565b81019062001061565b90386200041b565b88513d8b823e3d90fd5b5080fd5b8780fd5b8580fd5b8380fd5b5050346200047757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620004775760209073ffffffffffffffffffffffffffffffffffffffff600154169051908152f35b5034620001fa5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620001fa576200051862000e88565b9073ffffffffffffffffffffffffffffffffffffffff92837f000000000000000000000000000000000000000000000000000000000000000016330362000588575050167fffffffffffffffffffffffff0000000000000000000000000000000000000000600154161760015580f35b90602060849251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602560248201527f6f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c2073657460448201527f50726f78790000000000000000000000000000000000000000000000000000006064820152fd5b5050346200047757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011262000477576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5050346200047757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620004775773ffffffffffffffffffffffffffffffffffffffff60209254169051908152f35b5050346200047757602090620006e53662000eac565b93909182845194818387376200072282870160028152878673ffffffffffffffffffffffffffffffffffffffff998a930301902054161562001a8d565b5193849283378101600281520301902091167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905580f35b5034620001fa5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620001fa5780359067ffffffffffffffff82116200048357366023830112156200048357810135620007bd8162000fc2565b90620007cc8451928362000f80565b808252602082019236602483830101116200047f57926200081e9260209687848195602473ffffffffffffffffffffffffffffffffffffffff9901863783010152855193849283925192839162000ffd565b8101600281520301902054169051908152f35b508290346200047757620008453662000eac565b73ffffffffffffffffffffffffffffffffffffffff95929593919390817f0000000000000000000000000000000000000000000000000000000000000000163303620009b4578116938184518289823760208184810160028152030190205416853b15620009b0578685518080937f7199e9800000000000000000000000000000000000000000000000000000000082528888830152620008ec8c87604485019162001022565b9060248301520381838a5af18015620009a6576200098f575b5060208697828651938492833781016002815203019020541692833b156200098b576024859283855196879485937ff2fde38b0000000000000000000000000000000000000000000000000000000085528401525af19081156200098257506200096c5750f35b620009779062000f1f565b6200097f5780f35b80fd5b513d84823e3d90fd5b8480fd5b956200099e6020989762000f1f565b959662000905565b85513d89823e3d90fd5b8680fd5b60848360208651917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602c60248201527f6f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c2074726160448201527f6e7366657253746f7261676500000000000000000000000000000000000000006064820152fd5b5050346200047757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011262000477576020906003549051908152f35b50919034620004775760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620004775767ffffffffffffffff8335818111620004835762000acc903690860162000e1e565b90948351928287853762000b088385016002815285602073ffffffffffffffffffffffffffffffffffffffff9788930301902054161562001a8d565b845191610de990818401928484109084111762000ba1575090829162001b1a83398581526008602062000b3f888401878c62001022565b920152039085f093841562000b96575060208095828551938492833781016002815203019020921691827fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905551908152f35b8351903d90823e3d90fd5b8760416024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc9060a082360112620004835767ffffffffffffffff9080358281116200047f5762000c1e903690830162000e54565b6024929192358481116200047b5762000c3b903690840162000e54565b93909288604435878111620004775762000c59903690840162000e54565b989097606435818111620004835762000c76903690860162000e1e565b9290946084359283116200098b57620003fd60609262000c9b8f953690850162000e1e565b9062000cf273ffffffffffffffffffffffffffffffffffffffff8a541697519a8b998a9889987f57859ce0000000000000000000000000000000000000000000000000000000008a52890152606488019162001022565b926001602487015285840301604486015262001022565b905083346200097f5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126200097f5782359067ffffffffffffffff82116200097f57509060208162000d7973ffffffffffffffffffffffffffffffffffffffff943690870162000e1e565b8091833781016002815203019020541690811562000d9b575060209151908152f35b60849060208451917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602360248201527f5468657265206973206e6f206461746120666f7220726571756573746564207060448201527f61697200000000000000000000000000000000000000000000000000000000006064820152fd5b9181601f8401121562000e4f5782359167ffffffffffffffff831162000e4f576020838186019501011162000e4f57565b600080fd5b9181601f8401121562000e4f5782359167ffffffffffffffff831162000e4f576020808501948460051b01011162000e4f57565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820362000e4f57565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011262000e4f576004359067ffffffffffffffff821162000e4f5762000ef99160040162000e1e565b909160243573ffffffffffffffffffffffffffffffffffffffff8116810362000e4f5790565b67ffffffffffffffff811162000f3457604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff82111762000f3457604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111762000f3457604052565b67ffffffffffffffff811162000f3457601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b838110620010115750506000910152565b818101518382015260200162001000565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b919060408382031262000e4f578251801515810362000e4f579260208101519067ffffffffffffffff821162000e4f570181601f8201121562000e4f578051620010ab8162000fc2565b92620010bb604051948562000f80565b8184526020828401011162000e4f57620010dc916020808501910162000ffd565b90565b15620010e85750565b6044601f917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06040519384927f08c379a00000000000000000000000000000000000000000000000000000000084526020600485015262001159815180928160248801526020888801910162000ffd565b01168101030190fd5b67ffffffffffffffff811162000f345760051b60200190565b6fffffffffffffffffffffffffffffffff8091169081146200119d5760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9190811015620012305760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121562000e4f57019081359167ffffffffffffffff831162000e4f57602001823603811362000e4f579190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060036fffffffffffffffffffffffffffffffff809316029182169182036200119d57565b8051821015620012305760209160051b010190565b9190811015620012305760051b0190565b356fffffffffffffffffffffffffffffffff8116810362000e4f5790565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146200119d5760010190565b90815181101562001230570160200190565b6020815191015190602081106200131d575090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9060200360031b1b1690565b969095949194604094855194620013618662000f63565b60209586815286368183013760005b87811062001a375750620013849062001308565b60035403620019b4578188036200193157828203620018ae576003880297808904600314811517156200119d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0620013f9620013e18b62001162565b9a620013f08b519c8d62000f80565b808c5262001162565b0136888b013760005b6fffffffffffffffffffffffffffffffff908181168381101562001531578a8a620014558f84886200143492620011cc565b92909351838194838301968737810160008382015203808452018262000f80565b519020620014718d8562001469866200125f565b169062001284565b52826200148a6200148483898962001299565b620012aa565b168b518b81019182528b8152620014a18162000f63565b519020600184620014b2856200125f565b16018481116200119d578492620014e0928f620014d790866200148495169062001284565b52898c62001299565b168a518a81019182528a8152620014f78162000f63565b51902060028362001508846200125f565b16018381116200119d576200152b936200152491168d62001284565b526200117b565b62001402565b505050979491929995996060986000995b87516fffffffffffffffffffffffffffffffff8c1690811015620015b55790620015a78b8f62001577620015ae958d62001284565b51938251948162001592879351809286808701910162000ffd565b82019083820152039081018452018262000f80565b9a6200117b565b9962001542565b5091959b9950939799929691955088815191012090895190620015d88262000f63565b89825289368184013760005b8a811062001850575050620015f99062001308565b03620017cd5760005b8281106200161557505050505050505050565b62001622818484620011cc565b808b519283378101600290818152828b73ffffffffffffffffffffffffffffffffffffffff94859303019020541615158b8b62001661868989620011cc565b925192839283017f73746f7261676520666f722070616972200000000000000000000000000000009052806031928385013782019081017f206973206e6f74206465706c6f79656420796574000000000000000000000000905203602581018252604501620016d1908262000f80565b620016dc91620010df565b898b620016eb858888620011cc565b8094919251948593843782019081520301902054166fffffffffffffffffffffffffffffffff908162001720848b8a62001299565b6200172b90620012aa565b16600f0b906200173d84888b62001299565b6200174890620012aa565b90803b1562000e4f57600092836044928f5196879586947f34a388f200000000000000000000000000000000000000000000000000000000865260048601521660248401525af18015620017c25790620017aa9291620017b0575b50620012c8565b62001602565b620017bb9062000f1f565b38620017a3565b8a513d6000823e3d90fd5b6084878951907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602760248201527f6861736865645f696e7075745f6461746120213d20646174615f686173685f6660448201527f726f6d5f736778000000000000000000000000000000000000000000000000006064820152fd5b61014d908082018092116200119d577fff0000000000000000000000000000000000000000000000000000000000000062001890620018a89385620012f6565b511660001a620018a18286620012f6565b53620012c8565b620015e4565b6084868851907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602560248201527f70726963657320616e642074696d657374616d7073206c656e677468206d697360448201527f6d617463680000000000000000000000000000000000000000000000000000006064820152fd5b6084868851907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602560248201527f706169725f6e616d657320616e6420707269636573206c656e677468206d697360448201527f6d617463680000000000000000000000000000000000000000000000000000006064820152fd5b6084868851907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602b60248201527f6d72456e636c6176652066726f6d20696e70757420646966666572732066726f60448201527f6d206578706563746564210000000000000000000000000000000000000000006064820152fd5b604d908082018092116200119d577fff0000000000000000000000000000000000000000000000000000000000000062001a7662001a87938f620012f6565b511660001a620018a18285620012f6565b62001370565b1562001a9557565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f53746f7261676520697320616c7265616479206465706c6f79656420666f722060448201527f72657175657374656420706169720000000000000000000000000000000000006064820152fdfe60a0604052346200024c5762000de9803803806200001d8162000266565b9283398101906040818303126200024c5780516001600160401b03908181116200024c57820190601f8481840112156200024c578251938285116200023657602094601f1994620000748483018716880162000266565b978289528783830101116200024c579086929160005b82811062000251575050826000918901015201519360ff851685036200024c57600080546001600160501b03191690558551928311620002365760019384548581811c911680156200022b575b838210146200021557838111620001ca575b5081928411600114620001655750508192939460009262000159575b5050600019600383901b1c191690821b1790555b60805260008054600160501b600160f01b0319163360501b600160501b600160f01b0316179055604051610b5c90816200028d82396080518161088a0152f35b01519050388062000105565b6000858152828120918516979193925b888210620001b2575050838596971062000198575b505050811b01905562000119565b015160001960f88460031b161c191690553880806200018a565b80878596829496860151815501950193019062000175565b85600052826000208480870160051c8201928588106200020b575b0160051c019086905b828110620001fe575050620000e9565b60008155018690620001ee565b92508192620001e5565b634e487b7160e01b600052602260045260246000fd5b90607f1690620000d7565b634e487b7160e01b600052604160045260246000fd5b600080fd5b8181018501518a82018601528894016200008a565b6040519190601f01601f191682016001600160401b03811183821017620002365760405256fe608060409080825260048036101561001657600080fd5b600091823560e01c908163156cd5a0146108ae57508063313ce5671461085257806334a388f2146105ee57806350d25bcd14610569578063668a0f021461051b5780637284e416146103305780638da5cb5b146102dc5780639a6fc8f51461028a578063f2fde38b1461014e5763feaf968c1461009257600080fd5b3461014a57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014a576100c86108e8565b916100d2836109b7565b9161010083101561011e57505060020154915169ffffffffffffffffffff91909116808252600f83900b6020830152608092831c6040830181905260608301529181019190915260a090f35b9060326024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5080fd5b508290346102865760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102865780359073ffffffffffffffffffffffffffffffffffffffff928383168303610282578454938460501c1633036101ff5750507dffffffffffffffffffffffffffffffffffffffff000000000000000000007fffff0000000000000000000000000000000000000000ffffffffffffffffffff9160501b16911617815580f35b90602060849251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602960248201527f4f6e6c792073746f72616765206f776e65722063616e207472616e736665722060448201527f6f776e65727368697000000000000000000000000000000000000000000000006064820152fd5b8480fd5b8280fd5b503461014a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014a5780359169ffffffffffffffffffff831683036102d9576100d2836109b7565b80fd5b82843461014a57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014a5773ffffffffffffffffffffffffffffffffffffffff6020925460501c169051908152f35b50823461028657827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102865780518360019485549081871c878316978815610511575b6020938483108a146104e557848798999a84895291826000146104aa575050600114610457575b5050601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095869203011683019583871067ffffffffffffffff88111761042b575085929391838652818452845191828186015281955b8387106104135750508394508582601f949501015201168101030190f35b868101820151898801890152958101958895506103f5565b8260416024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b8085528492507fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b8284106104945750505083018101878061039e565b805488850186015287965092840192810161047f565b915093507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682860152151560051b840101878061039e565b60248660228b7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b90607f1690610377565b82843461014a57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014a5760209069ffffffffffffffffffff6105616108e8565b915191168152f35b509190346102d957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102d95760ff6105a46108e8565b16906101008210156105c2576020838360020154600f0b9051908152f35b806032857f4e487b71000000000000000000000000000000000000000000000000000000006024945252fd5b50913461014a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014a5782359081600f0b80920361028657602435906fffffffffffffffffffffffffffffffff9081831680930361028257845473ffffffffffffffffffffffffffffffffffffffff8160501c1633036107cf5769ffffffffffffffffffff60018183167f9a0d0e9858be1baa155436171d49c0a774b37d8f23661aad38fabe215ca44b5b60208651838152a1018181116107a357907fffffffffffffffffffffffffffffffffffffffffffff00000000000000000000911691161785556106e86106e36108e8565b6109b7565b938151918083019083821067ffffffffffffffff831117610777575281526020810192835261010084101561074b57907fffffffffffffffffffffffffffffffff00000000000000000000000000000000915116915160801b1617906002015580f35b6024856032887f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b60248860418b7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b60248860118b7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b60848760208451917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602360248201527f4f6e6c792073746f72616765206f776e65722063616e20616464206e6577206460448201527f61746100000000000000000000000000000000000000000000000000000000006064820152fd5b82843461014a57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014a576020905160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b83903461014a57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014a578061010060209252f35b69ffffffffffffffffffff80600054168015610959577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190811161092a5790565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f746865726520686173206265656e206e6f20726f756e647320796574000000006044820152fd5b60005469ffffffffffffffffffff82811691811680831015610aa2576101008110156109e7575b50505060ff1690565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000181811161092a571611610a1e573880806109de565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f636f6e74726163742073746f726573206f6e6c7920524f554e44535f53544f5260448201527f4147455f53495a45206c617465737420726f756e6473000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f5f726f756e644964206d757374206265206c657373207468616e20726f756e6460448201527f73416d6f756e74000000000000000000000000000000000000000000000000006064820152fdfea2646970667358221220ff5fa73804c8c1a3ed1c7760b6098c24b4b1ca4b55edf4482ba5ce8f670611dc64736f6c63430008140033a2646970667358221220d20fc539d781160e398279c724e6dc872bf59fd1dd0046d0cd102a1b31c0adaa64736f6c63430008140033
Deployed Bytecode
0x608060408181526004803610156200001657600080fd5b600092833560e01c90816317915bbe1462000d095750806319d605841462000bcd578063303eb6191462000a765780634f6c2dd11462000a3757806364bd3c4e146200083157806367846133146200075e5780637199e98014620006cf57806388995ecc146200067c5780638da5cb5b146200060b57806397107d6d14620004dc5780639f06231f146200048757838163a31c334e14620002fa57508063d6053dd914620001fe5763db48fa8314620000ce57600080fd5b34620001fa5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620001fa576200010962000e88565b9073ffffffffffffffffffffffffffffffffffffffff92837f000000000000000000000000bb5a794bd453fc664d4b720a359c6236cb026b1716330362000177575050167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617815580f35b90602060849251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152603060248201527f6f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c2071756f60448201527f74655665726966696572557064617465000000000000000000000000000000006064820152fd5b8280fd5b509034620001fa5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620001fa5773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000bb5a794bd453fc664d4b720a359c6236cb026b171633036200027757503560035580f35b90602060849251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602c60248201527f6f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c206d724560448201527f6e636c61766555706461746500000000000000000000000000000000000000006064820152fd5b91905060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620004775767ffffffffffffffff90803582811162000483576200034b903690830162000e54565b6024929192358481116200047f5762000368903690840162000e54565b9390926044358681116200047b5762000385903690830162000e54565b9790966064359081116200047757620003a2903690840162000e1e565b9092602073ffffffffffffffffffffffffffffffffffffffff84541691620003fd8d51968795869485947f38d8480a000000000000000000000000000000000000000000000000000000008652850152602484019162001022565b039134905af19081156200046d576200042d985089908a9262000443575b5081811562000430575b50506200134a565b80f35b6200043b91620010df565b388162000425565b90506200046591503d808b833e6200045c818362000f80565b81019062001061565b90386200041b565b88513d8b823e3d90fd5b5080fd5b8780fd5b8580fd5b8380fd5b5050346200047757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620004775760209073ffffffffffffffffffffffffffffffffffffffff600154169051908152f35b5034620001fa5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620001fa576200051862000e88565b9073ffffffffffffffffffffffffffffffffffffffff92837f000000000000000000000000bb5a794bd453fc664d4b720a359c6236cb026b1716330362000588575050167fffffffffffffffffffffffff0000000000000000000000000000000000000000600154161760015580f35b90602060849251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602560248201527f6f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c2073657460448201527f50726f78790000000000000000000000000000000000000000000000000000006064820152fd5b5050346200047757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011262000477576020905173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000bb5a794bd453fc664d4b720a359c6236cb026b17168152f35b5050346200047757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620004775773ffffffffffffffffffffffffffffffffffffffff60209254169051908152f35b5050346200047757602090620006e53662000eac565b93909182845194818387376200072282870160028152878673ffffffffffffffffffffffffffffffffffffffff998a930301902054161562001a8d565b5193849283378101600281520301902091167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905580f35b5034620001fa5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620001fa5780359067ffffffffffffffff82116200048357366023830112156200048357810135620007bd8162000fc2565b90620007cc8451928362000f80565b808252602082019236602483830101116200047f57926200081e9260209687848195602473ffffffffffffffffffffffffffffffffffffffff9901863783010152855193849283925192839162000ffd565b8101600281520301902054169051908152f35b508290346200047757620008453662000eac565b73ffffffffffffffffffffffffffffffffffffffff95929593919390817f000000000000000000000000bb5a794bd453fc664d4b720a359c6236cb026b17163303620009b4578116938184518289823760208184810160028152030190205416853b15620009b0578685518080937f7199e9800000000000000000000000000000000000000000000000000000000082528888830152620008ec8c87604485019162001022565b9060248301520381838a5af18015620009a6576200098f575b5060208697828651938492833781016002815203019020541692833b156200098b576024859283855196879485937ff2fde38b0000000000000000000000000000000000000000000000000000000085528401525af19081156200098257506200096c5750f35b620009779062000f1f565b6200097f5780f35b80fd5b513d84823e3d90fd5b8480fd5b956200099e6020989762000f1f565b959662000905565b85513d89823e3d90fd5b8680fd5b60848360208651917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602c60248201527f6f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c2074726160448201527f6e7366657253746f7261676500000000000000000000000000000000000000006064820152fd5b5050346200047757817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011262000477576020906003549051908152f35b50919034620004775760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620004775767ffffffffffffffff8335818111620004835762000acc903690860162000e1e565b90948351928287853762000b088385016002815285602073ffffffffffffffffffffffffffffffffffffffff9788930301902054161562001a8d565b845191610de990818401928484109084111762000ba1575090829162001b1a83398581526008602062000b3f888401878c62001022565b920152039085f093841562000b96575060208095828551938492833781016002815203019020921691827fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905551908152f35b8351903d90823e3d90fd5b8760416024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc9060a082360112620004835767ffffffffffffffff9080358281116200047f5762000c1e903690830162000e54565b6024929192358481116200047b5762000c3b903690840162000e54565b93909288604435878111620004775762000c59903690840162000e54565b989097606435818111620004835762000c76903690860162000e1e565b9290946084359283116200098b57620003fd60609262000c9b8f953690850162000e1e565b9062000cf273ffffffffffffffffffffffffffffffffffffffff8a541697519a8b998a9889987f57859ce0000000000000000000000000000000000000000000000000000000008a52890152606488019162001022565b926001602487015285840301604486015262001022565b905083346200097f5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126200097f5782359067ffffffffffffffff82116200097f57509060208162000d7973ffffffffffffffffffffffffffffffffffffffff943690870162000e1e565b8091833781016002815203019020541690811562000d9b575060209151908152f35b60849060208451917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602360248201527f5468657265206973206e6f206461746120666f7220726571756573746564207060448201527f61697200000000000000000000000000000000000000000000000000000000006064820152fd5b9181601f8401121562000e4f5782359167ffffffffffffffff831162000e4f576020838186019501011162000e4f57565b600080fd5b9181601f8401121562000e4f5782359167ffffffffffffffff831162000e4f576020808501948460051b01011162000e4f57565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820362000e4f57565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011262000e4f576004359067ffffffffffffffff821162000e4f5762000ef99160040162000e1e565b909160243573ffffffffffffffffffffffffffffffffffffffff8116810362000e4f5790565b67ffffffffffffffff811162000f3457604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff82111762000f3457604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111762000f3457604052565b67ffffffffffffffff811162000f3457601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b838110620010115750506000910152565b818101518382015260200162001000565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b919060408382031262000e4f578251801515810362000e4f579260208101519067ffffffffffffffff821162000e4f570181601f8201121562000e4f578051620010ab8162000fc2565b92620010bb604051948562000f80565b8184526020828401011162000e4f57620010dc916020808501910162000ffd565b90565b15620010e85750565b6044601f917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06040519384927f08c379a00000000000000000000000000000000000000000000000000000000084526020600485015262001159815180928160248801526020888801910162000ffd565b01168101030190fd5b67ffffffffffffffff811162000f345760051b60200190565b6fffffffffffffffffffffffffffffffff8091169081146200119d5760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9190811015620012305760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121562000e4f57019081359167ffffffffffffffff831162000e4f57602001823603811362000e4f579190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060036fffffffffffffffffffffffffffffffff809316029182169182036200119d57565b8051821015620012305760209160051b010190565b9190811015620012305760051b0190565b356fffffffffffffffffffffffffffffffff8116810362000e4f5790565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146200119d5760010190565b90815181101562001230570160200190565b6020815191015190602081106200131d575090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9060200360031b1b1690565b969095949194604094855194620013618662000f63565b60209586815286368183013760005b87811062001a375750620013849062001308565b60035403620019b4578188036200193157828203620018ae576003880297808904600314811517156200119d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0620013f9620013e18b62001162565b9a620013f08b519c8d62000f80565b808c5262001162565b0136888b013760005b6fffffffffffffffffffffffffffffffff908181168381101562001531578a8a620014558f84886200143492620011cc565b92909351838194838301968737810160008382015203808452018262000f80565b519020620014718d8562001469866200125f565b169062001284565b52826200148a6200148483898962001299565b620012aa565b168b518b81019182528b8152620014a18162000f63565b519020600184620014b2856200125f565b16018481116200119d578492620014e0928f620014d790866200148495169062001284565b52898c62001299565b168a518a81019182528a8152620014f78162000f63565b51902060028362001508846200125f565b16018381116200119d576200152b936200152491168d62001284565b526200117b565b62001402565b505050979491929995996060986000995b87516fffffffffffffffffffffffffffffffff8c1690811015620015b55790620015a78b8f62001577620015ae958d62001284565b51938251948162001592879351809286808701910162000ffd565b82019083820152039081018452018262000f80565b9a6200117b565b9962001542565b5091959b9950939799929691955088815191012090895190620015d88262000f63565b89825289368184013760005b8a811062001850575050620015f99062001308565b03620017cd5760005b8281106200161557505050505050505050565b62001622818484620011cc565b808b519283378101600290818152828b73ffffffffffffffffffffffffffffffffffffffff94859303019020541615158b8b62001661868989620011cc565b925192839283017f73746f7261676520666f722070616972200000000000000000000000000000009052806031928385013782019081017f206973206e6f74206465706c6f79656420796574000000000000000000000000905203602581018252604501620016d1908262000f80565b620016dc91620010df565b898b620016eb858888620011cc565b8094919251948593843782019081520301902054166fffffffffffffffffffffffffffffffff908162001720848b8a62001299565b6200172b90620012aa565b16600f0b906200173d84888b62001299565b6200174890620012aa565b90803b1562000e4f57600092836044928f5196879586947f34a388f200000000000000000000000000000000000000000000000000000000865260048601521660248401525af18015620017c25790620017aa9291620017b0575b50620012c8565b62001602565b620017bb9062000f1f565b38620017a3565b8a513d6000823e3d90fd5b6084878951907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602760248201527f6861736865645f696e7075745f6461746120213d20646174615f686173685f6660448201527f726f6d5f736778000000000000000000000000000000000000000000000000006064820152fd5b61014d908082018092116200119d577fff0000000000000000000000000000000000000000000000000000000000000062001890620018a89385620012f6565b511660001a620018a18286620012f6565b53620012c8565b620015e4565b6084868851907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602560248201527f70726963657320616e642074696d657374616d7073206c656e677468206d697360448201527f6d617463680000000000000000000000000000000000000000000000000000006064820152fd5b6084868851907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602560248201527f706169725f6e616d657320616e6420707269636573206c656e677468206d697360448201527f6d617463680000000000000000000000000000000000000000000000000000006064820152fd5b6084868851907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602b60248201527f6d72456e636c6176652066726f6d20696e70757420646966666572732066726f60448201527f6d206578706563746564210000000000000000000000000000000000000000006064820152fd5b604d908082018092116200119d577fff0000000000000000000000000000000000000000000000000000000000000062001a7662001a87938f620012f6565b511660001a620018a18285620012f6565b62001370565b1562001a9557565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f53746f7261676520697320616c7265616479206465706c6f79656420666f722060448201527f72657175657374656420706169720000000000000000000000000000000000006064820152fdfe60a0604052346200024c5762000de9803803806200001d8162000266565b9283398101906040818303126200024c5780516001600160401b03908181116200024c57820190601f8481840112156200024c578251938285116200023657602094601f1994620000748483018716880162000266565b978289528783830101116200024c579086929160005b82811062000251575050826000918901015201519360ff851685036200024c57600080546001600160501b03191690558551928311620002365760019384548581811c911680156200022b575b838210146200021557838111620001ca575b5081928411600114620001655750508192939460009262000159575b5050600019600383901b1c191690821b1790555b60805260008054600160501b600160f01b0319163360501b600160501b600160f01b0316179055604051610b5c90816200028d82396080518161088a0152f35b01519050388062000105565b6000858152828120918516979193925b888210620001b2575050838596971062000198575b505050811b01905562000119565b015160001960f88460031b161c191690553880806200018a565b80878596829496860151815501950193019062000175565b85600052826000208480870160051c8201928588106200020b575b0160051c019086905b828110620001fe575050620000e9565b60008155018690620001ee565b92508192620001e5565b634e487b7160e01b600052602260045260246000fd5b90607f1690620000d7565b634e487b7160e01b600052604160045260246000fd5b600080fd5b8181018501518a82018601528894016200008a565b6040519190601f01601f191682016001600160401b03811183821017620002365760405256fe608060409080825260048036101561001657600080fd5b600091823560e01c908163156cd5a0146108ae57508063313ce5671461085257806334a388f2146105ee57806350d25bcd14610569578063668a0f021461051b5780637284e416146103305780638da5cb5b146102dc5780639a6fc8f51461028a578063f2fde38b1461014e5763feaf968c1461009257600080fd5b3461014a57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014a576100c86108e8565b916100d2836109b7565b9161010083101561011e57505060020154915169ffffffffffffffffffff91909116808252600f83900b6020830152608092831c6040830181905260608301529181019190915260a090f35b9060326024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5080fd5b508290346102865760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102865780359073ffffffffffffffffffffffffffffffffffffffff928383168303610282578454938460501c1633036101ff5750507dffffffffffffffffffffffffffffffffffffffff000000000000000000007fffff0000000000000000000000000000000000000000ffffffffffffffffffff9160501b16911617815580f35b90602060849251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602960248201527f4f6e6c792073746f72616765206f776e65722063616e207472616e736665722060448201527f6f776e65727368697000000000000000000000000000000000000000000000006064820152fd5b8480fd5b8280fd5b503461014a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014a5780359169ffffffffffffffffffff831683036102d9576100d2836109b7565b80fd5b82843461014a57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014a5773ffffffffffffffffffffffffffffffffffffffff6020925460501c169051908152f35b50823461028657827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102865780518360019485549081871c878316978815610511575b6020938483108a146104e557848798999a84895291826000146104aa575050600114610457575b5050601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095869203011683019583871067ffffffffffffffff88111761042b575085929391838652818452845191828186015281955b8387106104135750508394508582601f949501015201168101030190f35b868101820151898801890152958101958895506103f5565b8260416024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b8085528492507fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b8284106104945750505083018101878061039e565b805488850186015287965092840192810161047f565b915093507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682860152151560051b840101878061039e565b60248660228b7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b90607f1690610377565b82843461014a57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014a5760209069ffffffffffffffffffff6105616108e8565b915191168152f35b509190346102d957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102d95760ff6105a46108e8565b16906101008210156105c2576020838360020154600f0b9051908152f35b806032857f4e487b71000000000000000000000000000000000000000000000000000000006024945252fd5b50913461014a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014a5782359081600f0b80920361028657602435906fffffffffffffffffffffffffffffffff9081831680930361028257845473ffffffffffffffffffffffffffffffffffffffff8160501c1633036107cf5769ffffffffffffffffffff60018183167f9a0d0e9858be1baa155436171d49c0a774b37d8f23661aad38fabe215ca44b5b60208651838152a1018181116107a357907fffffffffffffffffffffffffffffffffffffffffffff00000000000000000000911691161785556106e86106e36108e8565b6109b7565b938151918083019083821067ffffffffffffffff831117610777575281526020810192835261010084101561074b57907fffffffffffffffffffffffffffffffff00000000000000000000000000000000915116915160801b1617906002015580f35b6024856032887f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b60248860418b7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b60248860118b7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b60848760208451917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602360248201527f4f6e6c792073746f72616765206f776e65722063616e20616464206e6577206460448201527f61746100000000000000000000000000000000000000000000000000000000006064820152fd5b82843461014a57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014a576020905160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b83903461014a57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014a578061010060209252f35b69ffffffffffffffffffff80600054168015610959577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190811161092a5790565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f746865726520686173206265656e206e6f20726f756e647320796574000000006044820152fd5b60005469ffffffffffffffffffff82811691811680831015610aa2576101008110156109e7575b50505060ff1690565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000181811161092a571611610a1e573880806109de565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f636f6e74726163742073746f726573206f6e6c7920524f554e44535f53544f5260448201527f4147455f53495a45206c617465737420726f756e6473000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f5f726f756e644964206d757374206265206c657373207468616e20726f756e6460448201527f73416d6f756e74000000000000000000000000000000000000000000000000006064820152fdfea2646970667358221220ff5fa73804c8c1a3ed1c7760b6098c24b4b1ca4b55edf4482ba5ce8f670611dc64736f6c63430008140033a2646970667358221220d20fc539d781160e398279c724e6dc872bf59fd1dd0046d0cd102a1b31c0adaa64736f6c63430008140033
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in S
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
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.