@layerzerolabs/hyperliquid-composer
Version:
LayerZero Labs reference EVM OmniChain Fungible Token (OFT) implementation for Hyperliquid
1 lines • 349 kB
JSON
{"abi":[{"type":"function","name":"ALICE","inputs":[],"outputs":[{"name":"assetBridgeAddress","type":"address","internalType":"address"},{"name":"coreIndexId","type":"uint64","internalType":"uint64"},{"name":"decimalDiff","type":"int64","internalType":"int64"}],"stateMutability":"view"},{"type":"function","name":"AMOUNT_TO_FUND","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"AMOUNT_TO_SEND","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"AMOUNT_TO_SEND_OVERFLOW","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"DST_EID","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"HLP_CORE_WRITER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HLP_PRECOMPILE_READ_SPOT_BALANCE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HL_LZ_ENDPOINT_V2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HYPE","inputs":[],"outputs":[{"name":"assetBridgeAddress","type":"address","internalType":"address"},{"name":"coreIndexId","type":"uint64","internalType":"uint64"},{"name":"decimalDiff","type":"int64","internalType":"int64"}],"stateMutability":"view"},{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"SRC_EID","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"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":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getComposeMessage","inputs":[{"name":"_composerMsg","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"hyperLiquidComposer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract HyperLiquidComposer"}],"stateMutability":"view"},{"type":"function","name":"oft","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract OFTMock"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"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_erc20_refund_receiver_excessive_amount","inputs":[{"name":"_exceedAmountBy","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_erc20_refund_sender_malformed_receiver","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_malformed_payload","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_native_refund_receiver_excessive_amount_no_fallback","inputs":[{"name":"_exceedAmountBy","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_non_evm_sender_malformed_receiver","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"userA","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"userB","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"ErrorMessage","inputs":[{"name":"reason","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"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}],"bytecode":{"object":"0x600c8054600160ff199182168117909255601f8054909116909117905560c06040526005608090815264757365724160d81b60a0526200003f90620000b9565b602680546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260058152643ab9b2b92160d91b60208201526200008690620000b9565b602780546001600160a01b0319166001600160a01b0392909216919091179055348015620000b2575f80fd5b5062000296565b5f620000c582620000cc565b5092915050565b5f8082604051602001620000e1919062000207565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156200014b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000171919062000224565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890620001af908590879060040162000253565b5f604051808303815f87803b158015620001c7575f80fd5b505af1158015620001da573d5f803e3d5ffd5b50505050915091565b5f5b83811015620001ff578181015183820152602001620001e5565b50505f910152565b5f82516200021a818460208701620001e3565b9190910192915050565b5f6020828403121562000235575f80fd5b81516001600160a01b03811681146200024c575f80fd5b9392505050565b60018060a01b0383168152604060208201525f825180604084015262000281816060850160208701620001e3565b601f01601f1916919091016060019392505050565b61d0eb80620002a45f395ff3fe608060405234801562000010575f80fd5b50600436106200022c575f3560e01c806385226c81116200013b578063ba87267911620000c7578063cb1a295f1162000093578063e20c9f711162000077578063e20c9f71146200053b578063e970bd691462000545578063fa7626d4146200054f575f80fd5b8063cb1a295f1462000513578063deb22e9a1462000527575f80fd5b8063ba87267914620004af578063bb641b3e14620004b9578063c33d080d14620004c9578063c9279a741462000509575f80fd5b8063a09e74301162000107578063a09e7430146200046c578063b0464fdc1462000480578063b5508aa9146200048a578063ba414fa61462000494575f80fd5b806385226c8114620004145780639127ace2146200042d578063916a17c614620004375780639b5215f61462000450575f80fd5b80633f7286f411620001bb57806366d9a9a0116200018757806366d9a9a0146200036357806376e86e72146200037c57806376e9227314620003ee5780637ecd9ac314620003f8575f80fd5b80633f7286f414620002f957806347d7694f14620003035780635c98ee4d146200032957806366165d9f1462000340575f80fd5b80631ed7831c11620001fb5780631ed7831c14620002885780632ade388014620002a1578063318f405a14620002ba5780633e5e3c2314620002ef575f80fd5b80630a9254e414620002305780630df3918e146200023c578063126593411462000253578063176e619e146200025d575b5f80fd5b6200023a6200055d565b005b6200023a6200024d3660046200508f565b62000d2e565b6200023a62001329565b6024546200026e9063ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b6200029262001967565b6040516200027f9190620050b8565b620002ab620019c9565b6040516200027f919062005157565b620002d673f9e1815f151024bde4b7c10bac10e8ba9f6b53e181565b6040516001600160a01b0390911681526020016200027f565b6200029262001b11565b6200029262001b71565b6200031a6200031436600462005256565b62001bd1565b6040516200027f9190620052c7565b6200023a6200033a3660046200508f565b62001be8565b62000349600181565b60405167ffffffffffffffff90911681526020016200027f565b6200036d62002197565b6040516200027f919062005339565b602254602354620003bc916001600160a01b038116917401000000000000000000000000000000000000000090910467ffffffffffffffff169060070b83565b604080516001600160a01b03909416845267ffffffffffffffff909216602084015260070b908201526060016200027f565b6200023a6200231c565b620002d673333333333333333333333333333333333333333381565b6200041e62002689565b6040516200027f9190620053e2565b620003496200275e565b6200044162002773565b6040516200027f919062005466565b602454620002d69064010000000090046001600160a01b031681565b602554620002d6906001600160a01b031681565b620004416200286d565b6200041e62002967565b6200049e62002a3c565b60405190151581526020016200027f565b620002d661080181565b62000349670de0b6b3a764000081565b602054602154620003bc916001600160a01b038116917401000000000000000000000000000000000000000090910467ffffffffffffffff169060070b83565b6200026e619ce181565b602754620002d6906001600160a01b031681565b602654620002d6906001600160a01b031681565b6200029262002b10565b6200023a62002b70565b601f546200049e9060ff1681565b6040517f9868003400000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f68747470733a2f2f7270632e68797065726c69717569642d746573746e65742e60448201527f78797a2f65766d000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906398680034906084016020604051808303815f875af192505050801562000639575060408051601f3d908101601f191682019092526200063691810190620054f7565b60015b620006e357620006626040518060600160405280603e81526020016200d078603e913962003074565b6040517fdd82d13e00000000000000000000000000000000000000000000000000000000815260016004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063dd82d13e906024015f604051808303815f87803b158015620006c6575f80fd5b505af1158015620006d9573d5f803e3d5ffd5b50505050620006e5565b505b6040518060600160405280620006fd6104cf620030ec565b6001600160a01b0390811682526104cf602080840191909152600c6040938401528351815485830151919093167fffffffff00000000000000000000000000000000000000000000000000000000938416177401000000000000000000000000000000000000000067ffffffffffffffff9283160217825593830151602180547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000908116929096169190911790558251606081018452732222222222222222222222222222222222222222815261045191810191909152600890830181905260228054909216750451222222222222222222222222222222222222222217909155602380549093161790915551737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b4d6c7829061080190620008359062004fea565b604051809103905ff0801580156200084f573d5f803e3d5ffd5b506001600160a01b0316803b806020016040519081016040528181525f908060200190933c6040518363ffffffff1660e01b8152600401620008939291906200550f565b5f604051808303815f87803b158015620008ab575f80fd5b505af1158015620008be573d5f803e3d5ffd5b50506020546040517f312f619f0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201527401000000000000000000000000000000000000000090910467ffffffffffffffff90811660248301526044820152610801925063312f619f91506064015f604051808303815f87803b1580156200094e575f80fd5b505af115801562000961573d5f803e3d5ffd5b50506022546040517f312f619f0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201527401000000000000000000000000000000000000000090910467ffffffffffffffff90811660248301526044820152610801925063312f619f91506064015f604051808303815f87803b158015620009f1575f80fd5b505af115801562000a04573d5f803e3d5ffd5b5050505073f9e1815f151024bde4b7c10bac10e8ba9f6b53e13360405162000a2c9062004ff8565b62000a399291906200553a565b604051809103905ff08015801562000a53573d5f803e3d5ffd5b50602480547fffffffffffffffff0000000000000000000000000000000000000000ffffffff166401000000006001600160a01b039384168102919091179182905560205460215460405173f9e1815f151024bde4b7c10bac10e8ba9f6b53e19593909404909216927401000000000000000000000000000000000000000090910467ffffffffffffffff169160070b9062000aef9062005006565b6001600160a01b03948516815293909216602084015267ffffffffffffffff16604083015260070b6060820152608001604051809103905ff08015801562000b39573d5f803e3d5ffd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602454604080517f5e280f11000000000000000000000000000000000000000000000000000000008152905164010000000090920490921691635e280f119160048083019260209291908290030181865afa15801562000bd0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000bf69190620055d7565b6001600160a01b031663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000c32573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000c589190620055ff565b602480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff929092169190911781556040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815273f9e1815f151024bde4b7c10bac10e8ba9f6b53e1600482015268056bc75e2d6310000091810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d906044015f604051808303815f87803b15801562000d15575f80fd5b505af115801562000d28573d5f803e3d5ffd5b50505050565b62000d6c8167ffffffffffffffff165f678ac7230489e8000067ffffffffffffffff62000d5c919062005651565b67ffffffffffffffff166200310d565b90505f62000d8382670de0b6b3a764000062005675565b60245460255467ffffffffffffffff92909216925062000db9916001600160a01b03640100000000909204821691168362003165565b5f60405162000dc89062005014565b604051809103905ff08015801562000de2573d5f803e3d5ffd5b506021549091505f9062000dfb9060070b600a620057d0565b6020549091506108019063312f619f906001600160a01b0381169074010000000000000000000000000000000000000000900467ffffffffffffffff1662000e4c85670de0b6b3a764000062005814565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b03909316600484015267ffffffffffffffff91821660248401521660448201526064015f604051808303815f87803b15801562000eba575f80fd5b505af115801562000ecd573d5f803e3d5ffd5b505060408051606086901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602082015281516014818303018152603490910190915291505f905062000f5381619ce1876001600160a01b0388165b8660405160200162000f3e9291906200582a565b60405160208183030381529060405262003178565b602480546040517f86b9620d0000000000000000000000000000000000000000000000000000000081526401000000009091046001600160a01b03166004820152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d916386b9620d91015f604051808303815f87803b15801562000fcc575f80fd5b505af115801562000fdf573d5f803e3d5ffd5b505060208054602554604051670de0b6b3a764000081526001600160a01b039283169550911692507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a367ffffffffffffffff861615620010925760255460405167ffffffffffffffff881681526001600160a01b038681169216907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6040517f06447d5600000000000000000000000000000000000000000000000000000000815273f9e1815f151024bde4b7c10bac10e8ba9f6b53e16004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b15801562001109575f80fd5b505af11580156200111c573d5f803e3d5ffd5b5050602554323192506001600160a01b0316905063d0a1026062001147600164174876e80062005675565b67ffffffffffffffff16602460049054906101000a90046001600160a01b03165f801b86336040518663ffffffff1660e01b81526004016200118d949392919062005851565b5f604051808303818588803b158015620011a5575f80fd5b505af1158015620011b8573d5f803e3d5ffd5b50620011d993505032319150620011d3905060018462005899565b620031ac565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c6001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562001234575f80fd5b505af115801562001247573d5f803e3d5ffd5b5050602480546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152620012f1955064010000000090920490911692506370a082319101602060405180830381865afa158015620012ba573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620012e09190620054f7565b8867ffffffffffffffff16620031ac565b6025546200130a906001600160a01b0316315f620031ac565b62001320856001600160a01b0316315f620031ac565b50505050505050565b60245460255462001358916001600160a01b0364010000000090910481169116670de0b6b3a764000062003165565b6027546040805160609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301527f6572726f72000000000000000000000000000000000000000000000000000000603483015280518083036019018152603990920190526026545f90620013ec908290619ce190670de0b6b3a7640000906001600160a01b031662000f2a565b6040517f47d7694f0000000000000000000000000000000000000000000000000000000081529091505f9030906347d7694f906200142f908590600401620052c7565b5f60405180830381865afa1580156200144a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405262001473919081019062005965565b90505f6309b3473160e01b82835160405160240162001494929190620059af565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000094909416939093179092526024805492517f86b9620d0000000000000000000000000000000000000000000000000000000081526401000000009093046001600160a01b03166004840152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d916386b9620d91015f604051808303815f87803b1580156200156c575f80fd5b505af11580156200157f573d5f803e3d5ffd5b5050602654602554604051670de0b6b3a764000081526001600160a01b039283169450911691507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36025546040517f86b9620d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906386b9620d906024015f604051808303815f87803b15801562001643575f80fd5b505af115801562001656573d5f803e3d5ffd5b505050507f612baef0082f9abcf6dc7b491d75346418381b75756830d7029939026d1b46b9816040516200168b9190620052c7565b60405180910390a16040517f06447d5600000000000000000000000000000000000000000000000000000000815273f9e1815f151024bde4b7c10bac10e8ba9f6b53e16004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b1580156200170a575f80fd5b505af11580156200171d573d5f803e3d5ffd5b50506025546024546040517fd0a102600000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063d0a1026093506200178092640100000000909204909116905f908890339060040162005851565b5f604051808303815f87803b15801562001798575f80fd5b505af1158015620017ab573d5f803e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c6001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156200180a575f80fd5b505af11580156200181d573d5f803e3d5ffd5b5050602480546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620018bf95506401000000009092041692506370a0823191015b602060405180830381865afa15801562001892573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620018b89190620054f7565b5f620031ac565b602480546026546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015262000d2893640100000000909304909116916370a0823191015b602060405180830381865afa15801562001932573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620019589190620054f7565b670de0b6b3a7640000620031ac565b60606016805480602002602001604051908101604052809291908181526020018280548015620019bf57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311620019a0575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b8282101562001b08575f84815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562001af0578382905f5260205f2001805462001a5e90620059d2565b80601f016020809104026020016040519081016040528092919081815260200182805462001a8c90620059d2565b801562001adb5780601f1062001ab15761010080835404028352916020019162001adb565b820191905f5260205f20905b81548152906001019060200180831162001abd57829003601f168201915b50505050508152602001906001019062001a3e565b505050508152505081526020019060010190620019ec565b50505050905090565b60606018805480602002602001604051908101604052809291908181526020018280548015620019bf57602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311620019a0575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015620019bf57602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311620019a0575050505050905090565b606062001bdf838362003231565b90505b92915050565b62001c168167ffffffffffffffff165f678ac7230489e8000067ffffffffffffffff62000d5c919062005651565b90505f62001c2d82670de0b6b3a764000062005675565b60245460255467ffffffffffffffff92909216925062001c63916001600160a01b03640100000000909204821691168362003165565b6021545f9062001c789060070b600a620057d0565b6020549091506108019063312f619f906001600160a01b0381169074010000000000000000000000000000000000000000900467ffffffffffffffff1662001cc985670de0b6b3a764000062005814565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b03909316600484015267ffffffffffffffff91821660248401521660448201526064015f604051808303815f87803b15801562001d37575f80fd5b505af115801562001d4a573d5f803e3d5ffd5b505060275460405160609190911b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208201525f9250603401905060408051601f198184030181529190526026549091505f9062001dbb908290619ce19087906001600160a01b031662000f2a565b602480546040517f86b9620d0000000000000000000000000000000000000000000000000000000081526401000000009091046001600160a01b03166004820152919250737109709ecfa91a80626ff3989d68f67f5b1dd12d916386b9620d91015f604051808303815f87803b15801562001e34575f80fd5b505af115801562001e47573d5f803e3d5ffd5b505060208054602554604051670de0b6b3a764000081526001600160a01b039283169550911692507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a367ffffffffffffffff85161562001eff5760275460255460405167ffffffffffffffff881681526001600160a01b0392831692909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6040517f06447d5600000000000000000000000000000000000000000000000000000000815273f9e1815f151024bde4b7c10bac10e8ba9f6b53e16004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b15801562001f76575f80fd5b505af115801562001f89573d5f803e3d5ffd5b50506025546024546040517fd0a102600000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063d0a10260935062001fec92640100000000909204909116905f908690339060040162005851565b5f604051808303815f87803b15801562002004575f80fd5b505af115801562002017573d5f803e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c6001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562002076575f80fd5b505af115801562002089573d5f803e3d5ffd5b5050602480546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620020e795506401000000009092041692506370a08231910162001876565b602480546027546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526200219093640100000000909304909116916370a082319101602060405180830381865afa15801562002159573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200217f9190620054f7565b8667ffffffffffffffff16620031ac565b5050505050565b6060601b805480602002602001604051908101604052809291908181526020015f905b8282101562001b08578382905f5260205f2090600202016040518060400160405290815f82018054620021ed90620059d2565b80601f01602080910402602001604051908101604052809291908181526020018280546200221b90620059d2565b80156200226a5780601f1062002240576101008083540402835291602001916200226a565b820191905f5260205f20905b8154815290600101906020018083116200224c57829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156200230357602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620022af5790505b50505050508152505081526020019060010190620021ba565b6024546025546200234b916001600160a01b0364010000000090910481169116670de0b6b3a764000062003165565b604080516020810182525f81529051737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f28dceb3907ed4895a0000000000000000000000000000000000000000000000000000000090620023af9060240160208082525f9082015260400190565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b90921682526200242391600401620052c7565b5f604051808303815f87803b1580156200243b575f80fd5b505af11580156200244e573d5f803e3d5ffd5b50506040517f06447d5600000000000000000000000000000000000000000000000000000000815273f9e1815f151024bde4b7c10bac10e8ba9f6b53e160048201819052319250737109709ecfa91a80626ff3989d68f67f5b1dd12d91506306447d56906024015f604051808303815f87803b158015620024cd575f80fd5b505af1158015620024e0573d5f803e3d5ffd5b50506025546001600160a01b0316915063d0a10260905062002509600164174876e80062005675565b67ffffffffffffffff16602460049054906101000a90046001600160a01b03165f801b86336040518663ffffffff1660e01b81526004016200254f949392919062005851565b5f604051808303818588803b15801562002567575f80fd5b505af11580156200257a573d5f803e3d5ffd5b50505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c6001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015620025da575f80fd5b505af1158015620025ed573d5f803e3d5ffd5b5050602480546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526200264b95506401000000009092041692506370a08231910162001916565b60255462002664906001600160a01b0316315f620031ac565b6200268573f9e1815f151024bde4b7c10bac10e8ba9f6b53e13182620031ac565b5050565b6060601a805480602002602001604051908101604052809291908181526020015f905b8282101562001b08578382905f5260205f20018054620026cc90620059d2565b80601f0160208091040260200160405190810160405280929190818152602001828054620026fa90620059d2565b8015620027495780601f106200271f5761010080835404028352916020019162002749565b820191905f5260205f20905b8154815290600101906020018083116200272b57829003601f168201915b505050505081526020019060010190620026ac565b62002770600164174876e80062005675565b81565b6060601d805480602002602001604051908101604052809291908181526020015f905b8282101562001b08575f8481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200285457602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620028005790505b5050505050815250508152602001906001019062002796565b6060601c805480602002602001604051908101604052809291908181526020015f905b8282101562001b08575f8481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200294e57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620028fa5790505b5050505050815250508152602001906001019062002890565b60606019805480602002602001604051908101604052809291908181526020015f905b8282101562001b08578382905f5260205f20018054620029aa90620059d2565b80601f0160208091040260200160405190810160405280929190818152602001828054620029d890620059d2565b801562002a275780601f10620029fd5761010080835404028352916020019162002a27565b820191905f5260205f20905b81548152906001019060200180831162002a0957829003601f168201915b5050505050815260200190600101906200298a565b6008545f9060ff161562002a54575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa15801562002ae3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002b099190620054f7565b1415905090565b60606015805480602002602001604051908101604052809291908181526020018280548015620019bf57602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311620019a0575050505050905090565b60245460255462002b9f916001600160a01b0364010000000090910481169116670de0b6b3a764000062003165565b60275460405160609190911b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208201527f6572726f7200000000000000000000000000000000000000000000000000000060348201525f9060390160408051601f198184030181529082905260265460601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602083015291505f9062002c81908290619ce190670de0b6b3a764000090603401604051602081830303815290604052805190602001208660405160200162000f3e9291906200582a565b6040517f47d7694f0000000000000000000000000000000000000000000000000000000081529091505f9030906347d7694f9062002cc4908590600401620052c7565b5f60405180830381865afa15801562002cdf573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405262002d08919081019062005965565b90505f6309b3473160e01b82835160405160240162002d29929190620059af565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000949094169390931790925260255491517f86b9620d0000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906386b9620d906024015f604051808303815f87803b15801562002dfa575f80fd5b505af115801562002e0d573d5f803e3d5ffd5b505050507f612baef0082f9abcf6dc7b491d75346418381b75756830d7029939026d1b46b98160405162002e429190620052c7565b60405180910390a16040517f06447d5600000000000000000000000000000000000000000000000000000000815273f9e1815f151024bde4b7c10bac10e8ba9f6b53e16004820152323190737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b15801562002ec4575f80fd5b505af115801562002ed7573d5f803e3d5ffd5b50506025546001600160a01b0316915063d0a10260905062002f00600164174876e80062005675565b67ffffffffffffffff16602460049054906101000a90046001600160a01b03165f801b88336040518663ffffffff1660e01b815260040162002f46949392919062005851565b5f604051808303818588803b15801562002f5e575f80fd5b505af115801562002f71573d5f803e3d5ffd5b50505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c6001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562002fd1575f80fd5b505af115801562002fe4573d5f803e3d5ffd5b50620030189250503231905062003002600164174876e80062005675565b620011d39067ffffffffffffffff168462005899565b602480546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526200219093640100000000909304909116916370a08231910162001916565b620030e9816040516024016200308b9190620052c7565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526200327d565b50565b5f62001be28273200000000000000000000000000000000000000062005899565b5f6200311b8484846200328f565b90506200315e6040518060400160405280600c81526020017f426f756e6420726573756c74000000000000000000000000000000000000000081525082620034f2565b9392505050565b620031738383835f62003569565b505050565b60608484848460405160200162003193949392919062005a25565b6040516020818303038152906040529050949350505050565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c54906044015f6040518083038186803b15801562003216575f80fd5b505afa15801562003229573d5f803e3d5ffd5b505050505050565b60606200324282604c818662005aa4565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929695505050505050565b620030e981620037f25b63ffffffff16565b5f8183111562003326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e000060648201526084015b60405180910390fd5b828410158015620033375750818411155b15620033455750826200315e565b5f62003352848462005acd565b6200335f90600162005899565b9050600385111580156200337257508481115b156200338d5762003384858562005899565b9150506200315e565b620033ba60037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62005acd565b8510158015620033f45750620033f1857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62005acd565b81115b15620034325762003426857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62005acd565b62003384908462005acd565b8285111562003491575f62003448848762005acd565b90505f62003457838362005ae3565b9050805f036200346d578493505050506200315e565b60016200347b828862005899565b62003487919062005acd565b93505050620034ea565b83851015620034ea575f620034a7868662005acd565b90505f620034b6838362005ae3565b9050805f03620034cc578593505050506200315e565b620034d8818662005acd565b620034e590600162005899565b935050505b509392505050565b6200268582826040516024016200350b929190620059af565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb60e72cc0000000000000000000000000000000000000000000000000000000017905262003811565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a082310000000000000000000000000000000000000000000000000000000017905291515f92871691620035ec9162005af9565b5f60405180830381855afa9150503d805f811462003626576040519150601f19603f3d011682016040523d82523d5f602084013e6200362b565b606091505b509150505f81806020019051810190620036469190620054f7565b9050620036998462003692876200368b7f70a082310000000000000000000000000000000000000000000000000000000062003684600d8d62003820565b906200385d565b9062003895565b90620038c0565b8215620032295760408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f18160ddd0000000000000000000000000000000000000000000000000000000017905290515f916001600160a01b0389169162003711919062005af9565b5f60405180830381855afa9150503d805f81146200374b576040519150601f19603f3d011682016040523d82523d5f602084013e62003750565b606091505b509150505f818060200190518101906200376b9190620054f7565b905082861015620037965762003782868462005acd565b6200378e908262005acd565b9050620037b1565b620037a2838762005acd565b620037ae908262005899565b90505b620037e881620036927f18160ddd0000000000000000000000000000000000000000000000000000000062003684600d8d62003820565b5050505050505050565b5f6a636f6e736f6c652e6c6f6790505f80835160208501845afa505050565b620030e981620038cc62003287565b6004820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555f8262001bdf565b6002820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e083901c1790555f8262001bdf565b6001808301805491820181555f908152602081206001600160a01b0384169201919091558262001bdf565b620026858282620038ec565b80516a636f6e736f6c652e6c6f67602083015f808483855afa5050505050565b6004820154600283015460038401546001600160a01b039092169160e09190911b905f6200391a8662003e4f565b6001600160a01b0385165f908152602088815260408083207fffffffff000000000000000000000000000000000000000000000000000000008816845282528083209051939450926200397291859187910162005b16565b60408051601f198184030181529181528151602092830120835290820192909252015f206003015460ff16620039b057620039ae865f62003f62565b505b6001600160a01b0384165f908152602087815260408083207fffffffff0000000000000000000000000000000000000000000000000000000087168452825280832090519091839162003a0891869188910162005b16565b6040516020818303038152906040528051906020012081526020019081526020015f2090505f8160020154826001015462003a44919062005899565b111562003b73575f8160020154826001015462003a62919062005899565b62003a709061010062005acd565b62003a7d90600262005b39565b6040517f6900a3ae0000000000000000000000000000000000000000000000000000000081526004810182905290915081881090737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae906024015f60405180830381865afa15801562003aeb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405262003b14919081019062005965565b60405160200162003b26919062005b46565b6040516020818303038152906040529062003b70576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200331d9190620052c7565b50505b80546040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b038716600482015260248101919091525f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa15801562003bef573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062003c159190620054f7565b60018381015460028501549293505f92908101610100039190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01811b1983169089901b1783546040517f70ca10bb0000000000000000000000000000000000000000000000000000000081526001600160a01b038a166004820152602481019190915260448101829052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb906064015f604051808303815f87803b15801562003cdc575f80fd5b505af115801562003cef573d5f803e3d5ffd5b505050505f8062003d008b62003f77565b9150915081158062003d125750898114155b1562003e375784546040517f70ca10bb0000000000000000000000000000000000000000000000000000000081526001600160a01b038b166004820152602481019190915260448101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb906064015f604051808303815f87803b15801562003d95575f80fd5b505af115801562003da8573d5f803e3d5ffd5b50506040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a2046616960448201527f6c656420746f2077726974652076616c75652e00000000000000000000000000606482015260840191506200331d9050565b62003e428b62004048565b5050505050505050505050565b606081600701805462003e6290620059d2565b90505f0362003ec85762001be28260010180548060200260200160405190810160405280929190818152602001828054801562003ebd57602002820191905f5260205f20905b81548152602001906001019080831162003ea8575b505050505062004053565b81600701805462003ed990620059d2565b80601f016020809104026020016040519081016040528092919081815260200182805462003f0790620059d2565b801562003f565780601f1062003f2c5761010080835404028352916020019162003f56565b820191905f5260205f20905b81548152906001019060200180831162003f3857829003601f168201915b50505050509050919050565b5f62003f6f8383620040f7565b549392505050565b60028101545f908190819060e01b62003f908562003e4f565b60405160200162003fa392919062005bd8565b60408051601f198184030181529082905260048601549092505f9182916001600160a01b03169062003fd790859062005af9565b5f60405180830381855afa9150503d805f811462004011576040519150601f19603f3d011682016040523d82523d5f602084013e62004016565b606091505b50915091505f6200403a828860030154602062004034919062005c21565b620049b5565b929792965091945050505050565b620030e98162004a48565b60605f8251602062004066919062005c21565b67ffffffffffffffff811115620040815762004081620058af565b6040519080825280601f01601f191660200182016040528015620040ac576020820181803683370190505b5090505f5b8351811015620040f0575f848281518110620040d157620040d162005c3b565b60209081029190910181015183820285019091015250600101620040b1565b5092915050565b6004820154600283015460038401545f926001600160a01b03169160e01b9083620041228762003e4f565b6001600160a01b0385165f908152602089815260408083207fffffffff000000000000000000000000000000000000000000000000000000008816845282528083209051939450926200417a91859187910162005b16565b60408051601f198184030181529181528151602092830120835290820192909252015f206003015460ff161562004243578515620041bd57620041bd8762004a48565b6001600160a01b0384165f908152602088815260408083207fffffffff0000000000000000000000000000000000000000000000000000000087168452825280832090519092916200421491859187910162005b16565b6040516020818303038152906040528051906020012081526020019081526020015f2094505050505062001be2565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c6001600160a01b031663266cf1096040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156200429e575f80fd5b505af1158015620042b1573d5f803e3d5ffd5b505050505f620042c18862003f77565b6040517f65bc94810000000000000000000000000000000000000000000000000000000081526001600160a01b03881660048201529092505f9150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024015f604051808303815f875af115801562004337573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405262004360919081019062005cee565b50905080515f03620043f757604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e60648201526084016200331d565b80515b5f620044068262005d55565b915081106200480a575f7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c6001600160a01b031663667f9d708985858151811062004457576200445762005c3b565b60200260200101516040518363ffffffff1660e01b8152600401620044919291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015620044ad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620044d39190620054f7565b9050806200453d577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a58884848151811062004512576200451262005c3b565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b620045658b84848151811062004557576200455762005c3b565b602002602001015162004aed565b620045715750620043fa565b60068b01545f90819060ff1615620045c5575f620045ac8e8787815181106200459e576200459e62005c3b565b602002602001015162004d3d565b9094509250905080620045c35750505050620043fa565b505b6001828201610100031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01811b8316811c868114620046095750505050620043fa565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c6040516020016200464192919062005b16565b604051602081830303815290604052805190602001208989815181106200466c576200466c62005c3b565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a16040518060800160405280878781518110620046e857620046e862005c3b565b60200260200101515f1c8152602001848152602001838152602001600115158152508e5f015f8d6001600160a01b03166001600160a01b031681526020019081526020015f205f8c7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f205f8a8c6040516020016200479192919062005b16565b60408051808303601f1901815291815281516020928301208352828201939093529082015f2083518155908301516001820155908201516002820155606090910151600390910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055505050505b506001600160a01b0386165f90815260208a815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168452825280832090519092916200486291879189910162005b16565b60408051601f198184030181529181528151602092830120835290820192909252015f206003015460ff166200491b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e000000000000000000000000000000000060648201526084016200331d565b87156200492d576200492d8962004a48565b6001600160a01b0386165f90815260208a815260408083207fffffffff0000000000000000000000000000000000