@layerzerolabs/oapp-alt-evm
Version:
LayerZero Labs reference EVM OmniChain Application (OAppAlt) for EndpointV2Alt implementation
1 lines • 1.15 MB
JSON
{"abi":[{"type":"receive","stateMutability":"payable"},{"type":"function","name":"DEFAULT_CHANNEL_ID","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"EVM_COMPUTE_MAP_BPS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"EVM_COMPUTE_REDUCE_FEE_USD","inputs":[],"outputs":[{"name":"","type":"uint120","internalType":"uint120"}],"stateMutability":"view"},{"type":"function","name":"EVM_REQUEST_FEE_USD","inputs":[],"outputs":[{"name":"","type":"uint120","internalType":"uint120"}],"stateMutability":"view"},{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"MAP_REDUCE_COMPUTE_TYPES","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"NATIVE_TOKEN_PRICE_USD","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"TREASURY_GAS_CAP","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"TREASURY_GAS_FOR_FEE_CAP","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"altToken","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"assertGuid","inputs":[{"name":"packetBytes","type":"bytes","internalType":"bytes"},{"name":"guid","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"createEndpoints","inputs":[{"name":"_endpointNum","type":"uint8","internalType":"uint8"},{"name":"_libraryType","type":"uint8","internalType":"enum TestHelperOz5.LibraryType"},{"name":"nativeTokenAddresses","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decodeLzComposeOption","inputs":[{"name":"_option","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"index","type":"uint16","internalType":"uint16"},{"name":"gas","type":"uint128","internalType":"uint128"},{"name":"value","type":"uint128","internalType":"uint128"}],"stateMutability":"pure"},{"type":"function","name":"decodeLzReadOption","inputs":[{"name":"_option","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"gas","type":"uint128","internalType":"uint128"},{"name":"size","type":"uint32","internalType":"uint32"},{"name":"value","type":"uint128","internalType":"uint128"}],"stateMutability":"pure"},{"type":"function","name":"decodeLzReceiveOption","inputs":[{"name":"_option","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"gas","type":"uint128","internalType":"uint128"},{"name":"value","type":"uint128","internalType":"uint128"}],"stateMutability":"pure"},{"type":"function","name":"decodeNativeDropOption","inputs":[{"name":"_option","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"amount","type":"uint128","internalType":"uint128"},{"name":"receiver","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSelectors","inputs":[],"outputs":[{"name":"excludedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"executorValueCap","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getNextInflightPacket","inputs":[{"name":"_dstEid","type":"uint16","internalType":"uint16"},{"name":"_dstAddress","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"packetBytes","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"hasPendingPackets","inputs":[{"name":"_dstEid","type":"uint16","internalType":"uint16"},{"name":"_dstAddress","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"flag","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"lzCompose","inputs":[{"name":"_dstEid","type":"uint32","internalType":"uint32"},{"name":"_from","type":"address","internalType":"address"},{"name":"_options","type":"bytes","internalType":"bytes"},{"name":"_guid","type":"bytes32","internalType":"bytes32"},{"name":"_to","type":"address","internalType":"address"},{"name":"_composerMsg","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"lzCompose","inputs":[{"name":"_packetBytes","type":"bytes","internalType":"bytes"},{"name":"_options","type":"bytes","internalType":"bytes"},{"name":"_guid","type":"bytes32","internalType":"bytes32"},{"name":"_composer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"lzReadReceive","inputs":[{"name":"_packetBytes","type":"bytes","internalType":"bytes"},{"name":"_options","type":"bytes","internalType":"bytes"},{"name":"_resolvedPayload","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"lzReceive","inputs":[{"name":"_packetBytes","type":"bytes","internalType":"bytes"},{"name":"_options","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"nextExecutorOption","inputs":[{"name":"_options","type":"bytes","internalType":"bytes"},{"name":"_cursor","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"optionType","type":"uint8","internalType":"uint8"},{"name":"option","type":"bytes","internalType":"bytes"},{"name":"cursor","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"registerEndpoint","inputs":[{"name":"endpoint","type":"address","internalType":"contract EndpointV2Mock"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"schedulePacket","inputs":[{"name":"_packetBytes","type":"bytes","internalType":"bytes"},{"name":"_options","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setExecutorValueCap","inputs":[{"name":"_valueCap","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUpEndpoints","inputs":[{"name":"_endpointNum","type":"uint8","internalType":"uint8"},{"name":"_libraryType","type":"uint8","internalType":"enum TestHelperOz5.LibraryType"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setupOApps","inputs":[{"name":"_oappCreationCode","type":"bytes","internalType":"bytes"},{"name":"_startEid","type":"uint8","internalType":"uint8"},{"name":"_oappNum","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"oapps","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzArtifactSelector[]","components":[{"name":"artifact","type":"string","internalType":"string"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"test_OAppSend_WithAlt","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_OAppSend_WithAlt_WithVerify","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_Send_WithAlt","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_constructor","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"validatePacket","inputs":[{"name":"_packetBytes","type":"bytes","internalType":"bytes"},{"name":"_resolvedPayload","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"verifyPackets","inputs":[{"name":"_dstEid","type":"uint32","internalType":"uint32"},{"name":"_dstAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"verifyPackets","inputs":[{"name":"_dstEid","type":"uint32","internalType":"uint32"},{"name":"_dstAddress","type":"bytes32","internalType":"bytes32"},{"name":"_packetAmount","type":"uint256","internalType":"uint256"},{"name":"_composer","type":"address","internalType":"address"},{"name":"_resolvedPayload","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"verifyPackets","inputs":[{"name":"_dstEid","type":"uint32","internalType":"uint32"},{"name":"_dstAddress","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"wireOApps","inputs":[{"name":"oapps","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"wireReadOApps","inputs":[{"name":"oapps","type":"address[]","internalType":"address[]"},{"name":"channels","type":"uint32[]","internalType":"uint32[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"Executor_InvalidLzComposeOption","inputs":[]},{"type":"error","name":"Executor_InvalidLzReadOption","inputs":[]},{"type":"error","name":"Executor_InvalidLzReceiveOption","inputs":[]},{"type":"error","name":"Executor_InvalidNativeDropOption","inputs":[]},{"type":"error","name":"InvalidOptionType","inputs":[{"name":"optionType","type":"uint16","internalType":"uint16"}]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60806040819052600c8054600160ff199182168117909255601f805490911690911790556200002e9062000242565b604051809103905ff08015801562000048573d5f803e3d5ffd5b50601f80546001600160a01b039290921661010002610100600160a81b0319909216919091179055602480546001600160801b03191667016345785d8a00001790556033805463ffffffff19166001179055604051620000a89062000250565b6040808252601190820152704e6174697665416c74546f6b656e735f4160781b6060820152608060208201819052600590820152644e41545f4160d81b60a082015260c001604051809103905ff08015801562000107573d5f803e3d5ffd5b5060338054600160201b600160e01b0319166401000000006001600160a01b03939093169290920263ffffffff60c01b191691909117600160c11b179055604051620001539062000250565b6040808252601190820152702730ba34bb32a0b63a2a37b5b2b739afa160791b6060820152608060208201819052600590820152642720aa2fa160d91b60a082015260c001604051809103905ff080158015620001b2573d5f803e3d5ffd5b50603480546001600160a01b039283166001600160a01b031991821617909155603880548216600117905560398054909116600217905568056bc75e2d63100000603a5560375416603b5560408051808201909152600b81526a12195b1b1bc81ddbdc9b1960aa1b6020820152603c906200022e9082620002fc565b503480156200023b575f80fd5b50620003c8565b610aa98062036ffe83390190565b610c908062037aa783390190565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200028757607f821691505b602082108103620002a657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620002f757805f5260205f20601f840160051c81016020851015620002d35750805b601f840160051c820191505b81811015620002f4575f8155600101620002df565b50505b505050565b81516001600160401b038111156200031857620003186200025e565b620003308162000329845462000272565b84620002ac565b602080601f83116001811462000366575f84156200034e5750858301515b5f19600386901b1c1916600185901b178555620003c0565b5f85815260208120601f198616915b82811015620003965788860151825594840194600190910190840162000375565b5085821015620003b457878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b62036c2780620003d75f395ff3fe6080604052600436106200036a575f3560e01c806382411c7711620001ca578063b954fdf611620000fa578063defd9da6116200009e578063ec53eaa01162000076578063ec53eaa01462000a9e578063f93e1d611462000ab5578063fa7626d41462000b03578063faed6c581462000b1e575f80fd5b8063defd9da61462000a0f578063e20c9f711462000a70578063e99b6b311462000a87575f80fd5b8063d6d6249711620000d2578063d6d624971462000997578063db76826a14620009bb578063dedae02714620009f8575f80fd5b8063b954fdf61462000919578063ba414fa61462000966578063baead19c146200097d575f80fd5b8063a29c8984116200016e578063b1dcf5c81162000146578063b1dcf5c814620008a1578063b5508aa914620008c8578063b752b72a14620008df578063b76bada51462000903575f80fd5b8063a29c8984146200084f578063ae6ce4001462000866578063b0464fdc146200088a575f80fd5b8063916a17c611620001a2578063916a17c614620007a85780639751ca8614620007ce578063997cff1b146200082b575f80fd5b806382411c771462000410578063834bd159146200075e57806385226c811462000782575f80fd5b80633e5e3c2311620002a657806360197889116200024a578063699cbade1162000222578063699cbade14620006b35780636e1775e314620006d1578063703ca25414620007075780637982cf42146200072b575f80fd5b806360197889146200064557806365449eb0146200066957806366d9a9a0146200068d575f80fd5b8063518e8ab0116200027e578063518e8ab0146200058a57806351aa318b14620005e25780635ea0fefe1462000610575f80fd5b80633e5e3c2314620005455780633f7286f4146200055c5780634c1fc6941462000573575f80fd5b80631cc46525116200030e5780632a35d25011620002e65780632a35d25014620004e45780632ade388014620005085780633bbd6a94146200052e575f80fd5b80631cc46525146200044e5780631ed7831c14620004725780632113ce621462000498575f80fd5b80630a9254e411620003425780630a9254e414620003ca5780630afba86814620003e15780631766f5a41462000410575f80fd5b8063088dd11e1462000376578063090852b6146200038f5780630a69faa914620003b3575f80fd5b366200037257005b5f80fd5b34801562000382575f80fd5b506200038d62000b42565b005b3480156200039b575f80fd5b506200038d620003ad3660046200834a565b62000c16565b6200038d620003c4366004620084d6565b62000c3e565b348015620003d6575f80fd5b506200038d62000d95565b348015620003ed575f80fd5b50620003f861271081565b60405161ffff90911681526020015b60405180910390f35b3480156200041c575f80fd5b506200042d670de0b6b3a764000081565b6040516effffffffffffffffffffffffffffff909116815260200162000407565b3480156200045a575f80fd5b506200038d6200046c3660046200858b565b620012e3565b3480156200047e575f80fd5b506200048962001339565b604051620004079190620085ff565b348015620004a4575f80fd5b50602454620004c2906fffffffffffffffffffffffffffffffff1681565b6040516fffffffffffffffffffffffffffffffff909116815260200162000407565b348015620004f0575f80fd5b50620004896200050236600462008613565b6200139b565b34801562000514575f80fd5b506200051f620014a5565b60405162000407919062008728565b6200038d6200053f366004620087c7565b620015ed565b34801562000551575f80fd5b5062000489620016a8565b34801562000568575f80fd5b506200048962001708565b3480156200057f575f80fd5b506200038d62001768565b34801562000596575f80fd5b50620005ae620005a83660046200887b565b62001c8b565b6040805161ffff90941684526fffffffffffffffffffffffffffffffff928316602085015291169082015260600162000407565b348015620005ee575f80fd5b50620005fa6201117181565b60405163ffffffff909116815260200162000407565b3480156200061c575f80fd5b50620006346200062e366004620088ce565b62001ca7565b604051901515815260200162000407565b34801562000651575f80fd5b506200038d62000663366004620088fb565b62001d07565b34801562000675575f80fd5b506200038d6200068736600462008a05565b62002ab6565b34801562000699575f80fd5b50620006a462002ba7565b60405162000407919062008b24565b348015620006bf575f80fd5b50620004c268056bc75e2d6310000081565b348015620006dd575f80fd5b50620006f5620006ef36600462008bbf565b62002d2c565b60405162000407949392919062008c34565b34801562000713575f80fd5b506200038d6200072536600462008c63565b62002d4e565b34801562000737575f80fd5b506200074f62000749366004620088ce565b62002f1f565b60405162000407919062008ca1565b3480156200076a575f80fd5b506200038d6200077c36600462008cb5565b62003034565b3480156200078e575f80fd5b506200079962003645565b60405162000407919062008d2e565b348015620007b4575f80fd5b50620007bf6200371a565b60405162000407919062008d42565b348015620007da575f80fd5b50620007f2620007ec3660046200887b565b62003814565b604080516fffffffffffffffffffffffffffffffff948516815263ffffffff909316602084015292169181019190915260600162000407565b34801562000837575f80fd5b506200038d6200084936600462008bbf565b62003823565b6200038d6200086036600462008dd3565b620038a3565b34801562000872575f80fd5b506200038d6200088436600462008e5e565b6200392a565b34801562000896575f80fd5b50620007bf620039df565b348015620008ad575f80fd5b50620008b9620186a081565b60405190815260200162000407565b348015620008d4575f80fd5b506200079962003ad9565b348015620008eb575f80fd5b506200038d620008fd36600462008e7c565b62003bae565b3480156200090f575f80fd5b50620008b9600381565b34801562000925575f80fd5b506200093d620009373660046200887b565b62003bcb565b604080516fffffffffffffffffffffffffffffffff909316835260208301919091520162000407565b34801562000972575f80fd5b506200063462003be5565b34801562000989575f80fd5b50620008b964e8d4a5100081565b348015620009a3575f80fd5b506200038d620009b536600462008e9b565b62003cb9565b348015620009c7575f80fd5b50620009df620009d936600462008ef5565b62005f0a565b6040516001600160a01b03909116815260200162000407565b34801562000a04575f80fd5b506200038d62005f33565b34801562000a1b575f80fd5b506200038d62000a2d36600462008f2b565b602480547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b34801562000a7c575f80fd5b50620004896200650d565b34801562000a93575f80fd5b506200038d6200656d565b6200038d62000aaf366004620088fb565b620067e0565b34801562000ac1575f80fd5b5062000ad962000ad33660046200887b565b62006913565b604080516fffffffffffffffffffffffffffffffff93841681529290911660208301520162000407565b34801562000b0f575f80fd5b50601f54620006349060ff1681565b34801562000b2a575f80fd5b506200038d62000b3c36600462008f49565b62006921565b62000b9562030d405f62000b8d604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b9190620069ac565b603e9062000ba4908262009059565b506038546001600160a01b03163162000bbc62001768565b60335460375462000bf9917801000000000000000000000000000000000000000000000000900463ffffffff16906001600160a01b031662003bae565b6038546001600160a01b03163162000c12828262006a34565b5050565b62000c1282826001600160a01b03165f1b5f8060405180602001604052805f81525062003034565b5f60235f62000c4e878762006aba565b63ffffffff16815260208101919091526040015f908120546001600160a01b031691508062000c7d8562006ae0565b92505091505f604051806060016040528062000c9a8a8a62006c14565b63ffffffff16815260200162000cb18a8a62006c25565b815260200162000cc28a8a62006c41565b67ffffffffffffffff16905290506001600160a01b038416630c0c389e6fffffffffffffffffffffffffffffffff8581169085168462000d038d8d62006c67565b62000d0f8e8e62006c7b565b604080516020810182525f815290517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b16815262000d5a949392918e9160040162009122565b5f604051808303818589803b15801562000d72575f80fd5b5088f115801562000d85573d5f803e3d5ffd5b5050505050505050505050505050565b6038546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152683635c9adc5dea000006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d906044015f604051808303815f87803b15801562000e14575f80fd5b505af115801562000e27573d5f803e3d5ffd5b50506039546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152683635c9adc5dea000006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d91506044015f604051808303815f87803b15801562000eaa575f80fd5b505af115801562000ebd573d5f803e3d5ffd5b505060335460358054600181810183555f8390527fcfa4bec1d3298408bb5afcfcd9c430549c5b31f8aa5c5848151c0a55f473c34d91820180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b03640100000000909704871617909155603454845492830190945591018054909116919092161790555062000f58905062006c8c565b62000fc160026001603580548060200260200160405190810160405280929190818152602001828054801562000fb657602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831162000f97575b505050505062003cb9565b620010306040518060200162000fd79062008024565b601f1982820381018352601f90910116604081815260335463ffffffff165f9081526023602090815290829020546001600160a01b03169083015230908201526060015b60405160208183030381529060405262006c96565b603680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604051620010e4906200107e6020820162008024565b818103601f199081018352601f9091011660408181526033547801000000000000000000000000000000000000000000000000900463ffffffff165f9081526023602090815290829020546001600160a01b03169083015230908201526060016200101b565b603780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040805160028082526060820183525f92602083019080368337505060365482519293506001600160a01b0316918391505f906200115e576200115e62009196565b6001600160a01b03928316602091820292909201015260375482519116908290600190811062001192576200119262009196565b6001600160a01b03909216602092830291909101909101526040517f703ca254000000000000000000000000000000000000000000000000000000008152309063703ca25490620011e8908490600401620085ff565b5f604051808303815f87803b15801562001200575f80fd5b505af115801562001213573d5f803e3d5ffd5b5050505060365f9054906101000a90046001600160a01b03166001600160a01b0316635e280f116040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001268573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200128e9190620091c3565b603d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560408051602081019091525f8152603e9062000c12908262009059565b62000c1282828460ff1667ffffffffffffffff811115620013085762001308620083c7565b60405190808252806020026020018201604052801562001332578160200160208202803683370190505b5062003cb9565b606060168054806020026020016040519081016040528092919081815260200182805480156200139157602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831162001372575b5050505050905090565b60608160ff1667ffffffffffffffff811115620013bc57620013bc620083c7565b604051908082528060200260200182016040528015620013e6578160200160208202803683370190505b509050825b620013f783856200920e565b60ff168160ff161015620014925760ff81165f9081526023602090815260408083205481516001600160a01b03909116928101929092523090820152600160608201526200144a9087906080016200101b565b905080836200145a87856200922a565b60ff168151811062001470576200147062009196565b6001600160a01b039092166020928302919091019091015250600101620013eb565b506200149e8162002d4e565b9392505050565b6060601e805480602002602001604051908101604052809291908181526020015f905b82821015620015e4575f84815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620015cc578382905f5260205f200180546200153a9062008fb7565b80601f0160208091040260200160405190810160405280929190818152602001828054620015689062008fb7565b8015620015b75780601f106200158d57610100808354040283529160200191620015b7565b820191905f5260205f20905b8154815290600101906020018083116200159957829003601f168201915b5050505050815260200190600101906200151a565b505050508152505081526020019060010190620014c8565b50505050905090565b63ffffffff87165f908152602360205260408120546001600160a01b0316908080620016198962006cf2565b925092509250836001600160a01b03166391d20fa18284908d8b8d898d8d60405180602001604052805f8152506040518a63ffffffff1660e01b81526004016200166a979695949392919062009246565b5f604051808303818589803b15801562001682575f80fd5b5088f115801562001695573d5f803e3d5ffd5b5050505050505050505050505050505050565b606060188054806020026020016040519081016040528092919081815260200182805480156200139157602002820191905f5260205f209081546001600160a01b0316815260019091019060200180831162001372575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156200139157602002820191905f5260205f209081546001600160a01b0316815260019091019060200180831162001372575050505050905090565b6038546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015620017d8575f80fd5b505af1158015620017eb573d5f803e3d5ffd5b50506036546033546040517ff77e5dd30000000000000000000000000000000000000000000000000000000081525f94506001600160a01b03909216925063f77e5dd39162001868917801000000000000000000000000000000000000000000000000900463ffffffff1690603c90603e90879060040162009345565b6040805180830381865afa15801562001883573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620018a99190620093de565b5190505f620018ba826002620093fb565b6033546038546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810184905292935064010000000090910416906340c10f19906044015f604051808303815f87803b1580156200192c575f80fd5b505af11580156200193f573d5f803e3d5ffd5b50506033546036546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810186905264010000000090920416925063095ea7b391506044016020604051808303815f875af1158015620019b7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620019dd919062009425565b506036546033546040517fb4ab5dd10000000000000000000000000000000000000000000000000000000081525f926001600160a01b03169163b4ab5dd19162001a55917801000000000000000000000000000000000000000000000000900463ffffffff1690603c90603e90889060040162009441565b6080604051808303815f875af115801562001a72573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001a9891906200949f565b905062001aad81604001515f01518462006a34565b62001ac18160400151602001515f62006a34565b603354603d546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015262001b61926401000000009004909116906370a08231906024015b602060405180830381865afa15801562001b34573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001b5a91906200950b565b5f62006a34565b6033546038546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015262001c01926401000000009004909116906370a08231906024015b602060405180830381865afa15801562001bd4573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001bfa91906200950b565b8462006a34565b6033546027805462001c869264010000000090046001600160a01b0316916370a08231915f9062001c365762001c3662009196565b5f9182526020909120015460405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03909116600482015260240162001bb8565b505050565b5f805f62001c9a858562006e3a565b9250925092509250925092565b61ffff82165f9081526020808052604080832084845290915281208162001cfc82546fffffffffffffffffffffffffffffffff8082167001000000000000000000000000000000009092048116919091031690565b119150505b92915050565b5f62001d14848462006aba565b63ffffffff81165f908152602360205260408120549192506001600160a01b03909116908163402f846862001d4a888862006c67565b62001d56898962006c14565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015263ffffffff1660248201526044016040805180830381865afa15801562001dbb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001de1919062009530565b5090505f62001df1878762006ece565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250604080517f54fd4d50000000000000000000000000000000000000000000000000000000008152905195965090946001600160a01b03881694506354fd4d509350600480830193506060928290030181865afa15801562001e83573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001ea991906200956c565b505090508067ffffffffffffffff166003036200242657825f6001600160a01b038216639c33abf762001edd8c8c62006c14565b62001ee98d8d62006c67565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815263ffffffff9290921660048301526001600160a01b03166024820152600260448201526064015f60405180830381865afa15801562001f56573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405262001f7f9190810190620095f8565b90505f8180602001905181019062001f9891906200969c565b608001515f8151811062001fb05762001fb062009196565b602002602001015190505f62001fc78c8c62006edf565b60405162001fd79291906200977e565b6040518091039020905060605f630223536e60e01b8884606460405160240162002004939291906200978d565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290505f6001600160a01b03851663f010cb238d898562002086426103e8620097ba565b6040518563ffffffff1660e01b8152600401620020a79493929190620097d0565b602060405180830381865afa158015620020c3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620020e991906200950b565b9050620020f68162006ef0565b6040805160018082528183019092529194505f9250816020015b6040805160a0810182525f808252602082018190526060928201839052828201526080810191909152815260200190600190039081620021105790505090506040518060a001604052808d63ffffffff168152602001886001600160a01b03168152602001838152602001426103e86200218b9190620097ba565b815260200184815250815f81518110620021a957620021a962009196565b60209081029190910101526040517fb143044b0000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063b143044b90620021fb90849060040162009810565b5f604051808303815f87803b15801562002213575f80fd5b505af115801562002226573d5f803e3d5ffd5b505050505f630894edf160e01b8a8660405160240162002248929190620098dc565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290505f6001600160a01b03871663f010cb238f8b85620022ca426103e8620097ba565b6040518563ffffffff1660e01b8152600401620022eb9493929190620097d0565b602060405180830381865afa15801562002307573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200232d91906200950b565b90506200233a8162006ef0565b9450506040518060a001604052808e63ffffffff168152602001896001600160a01b03168152602001828152602001426103e8620023799190620097ba565b815260200185815250825f8151811062002397576200239762009196565b60209081029190910101526040517fb143044b0000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063b143044b90620023e990859060040162009810565b5f604051808303815f87803b15801562002401575f80fd5b505af115801562002414573d5f803e3d5ffd5b50505050505050505050505062002aac565b8067ffffffffffffffff16600a0362002a3357825f6001600160a01b038216639c33abf7620024568c8c62006c14565b620024628d8d62006c67565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815263ffffffff9290921660048301526001600160a01b03166024820152600160448201526064015f60405180830381865afa158015620024cf573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052620024f89190810190620095f8565b90505f81806020019051810190620025119190620098ff565b608001515f8151811062002529576200252962009196565b602002602001015190505f620025408c8c62007037565b604051620025509291906200977e565b604051809103902090505f620025678d8d62006c7b565b8b6040516020016200257b92919062009951565b60405160208183030381529060405280519060200120905060605f63ab750e7560e01b898585604051602401620025b59392919062009978565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290505f6001600160a01b03861663f010cb238e8a8562002637426103e8620097ba565b6040518563ffffffff1660e01b8152600401620026589493929190620097d0565b602060405180830381865afa15801562002674573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200269a91906200950b565b9050620026a78162006ef0565b6040805160018082528183019092529194505f9190816020015b6040805160a0810182525f808252602082018190526060928201839052828201526080810191909152815260200190600190039081620026c15790505090506040518060a001604052808f63ffffffff1681526020018a6001600160a01b03168152602001848152602001426103e86200273c9190620097ba565b815260200185815250815f815181106200275a576200275a62009196565b60209081029190910101526040517fb143044b0000000000000000000000000000000000000000000000000000000081526001600160a01b0388169063b143044b90620027ac90849060040162009810565b5f604051808303815f87803b158015620027c4575f80fd5b505af1158015620027d7573d5f803e3d5ffd5b505050505050505f63594924da60e01b898585604051602401620027fe9392919062009978565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290505f6001600160a01b03861663f010cb238e8a8562002880426103e8620097ba565b6040518563ffffffff1660e01b8152600401620028a19493929190620097d0565b602060405180830381865afa158015620028bd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620028e391906200950b565b9050620028f08162006ef0565b6040805160018082528183019092529194505f9190816020015b6040805160a0810182525f8082526020820181905260609282018390528282015260808101919091528152602001906001900390816200290a5790505090506040518060a001604052808f63ffffffff1681526020018a6001600160a01b03168152602001848152602001426103e8620029859190620097ba565b815260200185815250815f81518110620029a357620029a362009196565b60209081029190910101526040517fb143044b0000000000000000000000000000000000000000000000000000000081526001600160a01b0388169063b143044b90620029f590849060040162009810565b5f604051808303815f87803b15801562002a0d575f80fd5b505af115801562002a20573d5f803e3d5ffd5b5050505050505050505050505062002aac565b6040517f12cc947f0000000000000000000000000000000000000000000000000000000081526001600160a01b038416906312cc947f9062002a7c908b908b906004016200999e565b5f604051808303815f87803b15801562002a94575f80fd5b505af115801562002aa7573d5f803e3d5ffd5b505050505b5050505050505050565b5f5b825181101562001c86575f83828151811062002ad85762002ad862009196565b602002602001015190505f5b835181101562002b9c57816001600160a01b031663f0a9e48185838151811062002b125762002b1262009196565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815263ffffffff9091166004820152600160248201526044015f604051808303815f87803b15801562002b78575f80fd5b505af115801562002b8b573d5f803e3d5ffd5b50506001909201915062002ae49050565b505060010162002ab8565b6060601b805480602002602001604051908101604052809291908181526020015f905b82821015620015e4578382905f5260205f2090600202016040518060400160405290815f8201805462002bfd9062008fb7565b80601f016020809104026020016040519081016040528092919081815260200182805462002c2b9062008fb7565b801562002c7a5780601f1062002c505761010080835404028352916020019162002c7a565b820191905f5260205f20905b81548152906001019060200180831162002c5c57829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801562002d1357602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162002cbf5790505b5050505050815250508152602001906001019062002bca565b5f365f8062002d3d87878762007048565b935093509350935093509350935093565b80515f5b8181101562001c86575f83828151811062002d715762002d7162009196565b602002602001015190505f5b8381101562002f145782811462002f0b575f85828151811062002da45762002da462009196565b602002602001015190505f816001600160a01b0316635e280f116040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002dec573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002e129190620091c3565b6001600160a01b031663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002e4e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002e749190620099b3565b9050836001600160a01b0316633400288b8262002e97856001600160a01b031690565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815263ffffffff92909216600483015260248201526044015f604051808303815f87803b15801562002ef1575f80fd5b505af115801562002f04573d5f803e3d5ffd5b5050505050505b60010162002d7d565b505060010162002d52565b61ffff82165f90815260208080526040808320848452909152812060609162002f7682546fffffffffffffffffffffffffffffffff8082167001000000000000000000000000000000009092048116919091031690565b11156200302d575f62002f8982620070a3565b5f81815260216020526040902080549192509062002fa79062008fb7565b80601f016020809104026020016040519081016040528092919081815260200182805462002fd59062008fb7565b8015620030245780601f1062002ffa5761010080835404028352916020019162003024565b820191905f5260205f20905b8154815290600101906020018083116200300657829003601f168201915b50505050509250505b5092915050565b63ffffffff85165f908152602360205260409020546001600160a01b0316620030be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f656e64706f696e74206e6f74207965742072656769737465726564000000000060448201526064015b60405180910390fd5b63ffffffff85165f908152602080805260408083208784529091528120906200311582546fffffffffffffffffffffffffffffffff8082167001000000000000000000000000000000009092048116919091031690565b90505f855f0362003159575081546fffffffffffffffffffffffffffffffff808216700100000000000000000000000000000000909204811691909103166200316d565b8582116200316857816200316a565b855b90505b801562002aac57806200318081620099d1565b9150505f6200318f846200712d565b5f81815260216020526040812080549293509091620031ae9062008fb7565b80601f0160208091040260200160405190810160405280929190818152602001828054620031dc9062008fb7565b80156200322b5780601f1062003201576101008083540402835291602001916200322b565b820191905f5260205f20905b8154815290600101906020018083116200320d57829003601f168201915b50506040517f997cff1b000000000000000000000000000000000000000000000000000000008152939450309363997cff1b93506200327392508591508690600401620098dc565b5f6040518083038186803b1580156200328a575f80fd5b505afa1580156200329d573d5f803e3d5ffd5b50506040517f6019788900000000000000000000000000000000000000000000000000000000815230925063601978899150620032e19084908a90600401620099e9565b5f604051808303815f87803b158015620032f9575f80fd5b505af11580156200330c573d5f803e3d5ffd5b5050505f8381526022602052604081208054919250906200332d9062008fb7565b80601f01602080910402602001604051908101604052809291908181526020018280546200335b9062008fb7565b8015620033aa5780601f106200338057610100808354040283529160200191620033aa565b820191905f5260205f20905b8154815290600101906020018083116200338c57829003601f168201915b50505050509050620033be816002620071ba565b1562003499575f80620033d183620071cf565b604051919350915081905f906001600160a01b0383169085908381818185875af1925050503d805f811462003422576040519150601f19603f3d011682016040523d82523d5f602084013e62003427565b606091505b505090508062003494576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4661696c656420746f2073656e642045746865720000000000000000000000006044820152606401620030b5565b505050505b620034a6816001620071ba565b156200351c576040517fec53eaa0000000000000000000000000000000000000000000000000000000008152309063ec53eaa090620034ec9085908590600401620099e9565b5f604051808303815f87803b15801562003504575f80fd5b505af115801562003517573d5f803e3d5ffd5b505050505b62003529816005620071ba565b15620035a1576040517f0a69faa90000000000000000000000000000000000000000000000000000000081523090630a69faa9906200357190859085908c9060040162009a11565b5f604051808303815f87803b15801562003589575f80fd5b505af11580156200359c573d5f803e3d5ffd5b505050505b6001600160a01b03881615801590620035c25750620035c2816003620071ba565b156200363c576040517fa29c8984000000000000000000000000000000000000000000000000000000008152309063a29c8984906200360c908590859088908e9060040162009a4f565b5f604051808303815f87803b15801562003624575f80fd5b505af115801562003637573d5f803e3d5ffd5b505050505b5050506200316d565b6060601a805480602002602001604051908101604052809291908181526020015f905b82821015620015e4578382905f5260205f20018054620036889062008fb7565b80601f0160208091040260200160405190810160405280929190818152602001828054620036b69062008fb7565b8015620037055780601f10620036db5761010080835404028352916020019162003705565b820191905f5260205f20905b815481529060010190602001808311620036e757829003601f168201915b50505050508152602001906001019062003668565b6060601d805480602002602001604051908101604052809291908181526020015f905b82821015620015e4575f8481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620037fb57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620037a75790505b505050505081525050815260200190600101906200373d565b5f805f62001c9a858562007311565b5f62003830848462006c7b565b90508181146200389d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f67756964206e6f74206d617463680000000000000000000000000000000000006044820152606401620030b5565b50505050565b30633bbd6a94620038b5878762006aba565b620038c1888862006c67565b868686620038d08c8c62007037565b6040518863ffffffff1660e01b8152600401620038f4979695949392919062009a98565b5f604051808303815f87803b1580156200390c575f80fd5b505af11580156200391f573d5f803e3d5ffd5b505050505050505050565b8060235f836001600160a01b031663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200396b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620039919190620099b3565b63ffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6060601c805480602002602001604051908101604052809291908181526020015f905b82821015620015e4575f8481526020908190206040805180820182526002860290920180546001600160a01b0316835260018101805483518187028101870190945280845293949193858301939283018282801562003ac057602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162003a6c5790505b5050505050815250508152602001906001019062003a02565b60606019805480602002602001604051908101604052809291908181526020015f905b82821015620015e4578382905f5260205f2001805462003b1c9062008fb7565b80601f016020809104026020016040519081016040528092919081815260200182805462003b4a9062008fb7565b801562003b995780601f1062003b6f5761010080835404028352916020019162003b99565b820191905f5260205f20905b81548152906001019060200180831162003b7b57829003601f168201915b50505050508152602001906001019062003afc565b62000c1282825f8060405180602001604052805f81525062003034565b5f8062003bd984846200739c565b915091505b9250929050565b6008545f9060ff161562003bfd575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa15801562003c8c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062003cb291906200950b565b1415905090565b8260ff1667ffffffffffffffff81111562003cd85762003cd8620083c7565b60405190808252806020026020018201604052801562003d02578160200160208202803683370190505b50805162003d199160259160209091019062008032565b508260ff1667ffffffffffffffff81111562003d395762003d39620083c7565b60405190808252806020026020018201604052801562003d63578160200160208202803683370190505b50805162003d7a91602691602090910190620080ae565b508260ff1667ffffffffffffffff81111562003d9a5762003d9a620083c7565b60405190808252806020026020018201604052801562003dc4578160200160208202803683370190505b50805162003ddb9160279160209091019062008032565b508260ff1667ffffffffffffffff81111562003dfb5762003dfb620083c7565b60405190808252806020026020018201604052801562003e25578160200160208202803683370190505b50805162003e3c9160289160209091019062008032565b508260ff1667ffffffffffffffff81111562003e5c5762003e5c620083c7565b60405190808252806020026020018201604052801562003e86578160200160208202803683370190505b50805162003e9d9160299160209091019062008032565b50