@layerzerolabs/hyperliquid-composer
Version:
LayerZero Labs reference EVM OmniChain Fungible Token (OFT) implementation for Hyperliquid
1 lines • 344 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":"DST_EID","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"DUST","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"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":"HL_LZ_ENDPOINT_V2_MAINNET","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HL_LZ_ENDPOINT_V2_TESTNET","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":"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_SendSpot_and_FundAddress","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_SendSpot_no_FundAddress","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_deployment","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_getBalanceOfHyperCore","inputs":[{"name":"_balance","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_hypeIndexByChainId_mainnet","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_hypeIndexByChainId_testnet","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":"RawAction","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"data","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"Received","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"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":"0x600c8054600160ff199182168117909255601f8054909116909117905560c06040526005608090815264757365724160d81b60a0526200003f90620000b9565b602680546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260058152643ab9b2b92160d91b60208201526200008690620000b9565b602780546001600160a01b0319166001600160a01b0392909216919091179055348015620000b2575f80fd5b5062000296565b5f620000c582620000cc565b5092915050565b5f8082604051602001620000e1919062000207565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156200014b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000171919062000224565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890620001af908590879060040162000253565b5f604051808303815f87803b158015620001c7575f80fd5b505af1158015620001da573d5f803e3d5ffd5b50505050915091565b5f5b83811015620001ff578181015183820152602001620001e5565b50505f910152565b5f82516200021a818460208701620001e3565b9190910192915050565b5f6020828403121562000235575f80fd5b81516001600160a01b03811681146200024c575f80fd5b9392505050565b60018060a01b0383168152604060208201525f825180604084015262000281816060850160208701620001e3565b601f01601f1916919091016060019392505050565b61cf8380620002a45f395ff3fe608060405234801562000010575f80fd5b506004361062000264575f3560e01c8063971ddf791162000157578063c1d1ead811620000c7578063cb1a295f1162000093578063e20c9f711162000077578063e20c9f711462000569578063e93bfee61462000573578063fa7626d4146200057d575f80fd5b8063cb1a295f1462000541578063deb22e9a1462000555575f80fd5b8063c1d1ead814620002db578063c203ccab14620004db578063c33d080d14620004f7578063c9279a741462000537575f80fd5b8063b0464fdc1162000123578063ba414fa61162000107578063ba414fa614620004a6578063ba87267914620004c1578063bb641b3e14620004cb575f80fd5b8063b0464fdc1462000492578063b5508aa9146200049c575f80fd5b8063971ddf79146200044e5780639b5215f61462000458578063a09e74301462000474578063a985a8ad1462000488575f80fd5b80634e0cd79911620001f357806376e86e7211620001bf57806385226c8111620001a357806385226c81146200040f5780639127ace21462000428578063916a17c61462000435575f80fd5b806376e86e7214620003815780637ecd9ac314620003f3575f80fd5b80634e0cd7991462000324578063553109e4146200034757806366d9a9a0146200035157806375258814146200036a575f80fd5b80632ade388011620002335780632ade388014620002c2578063318f405a14620002db5780633e5e3c2314620003105780633f7286f4146200031a575f80fd5b80630a9254e414620002685780631015594a1462000274578063176e619e146200027e5780631ed7831c14620002a9575b5f80fd5b620002726200058b565b005b6200027262000d5c565b6024546200028f9063ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b620002b362000f33565b604051620002a0919062004d8b565b620002cc62000f95565b604051620002a0919062004e2a565b620002f773f9e1815f151024bde4b7c10bac10e8ba9f6b53e181565b6040516001600160a01b039091168152602001620002a0565b620002b3620010dd565b620002b36200113d565b6200032d600181565b60405167ffffffffffffffff9091168152602001620002a0565b620002726200119d565b6200035b62001491565b604051620002a0919062004f87565b620002726200037b36600462005046565b62001616565b602254602354620003c1916001600160a01b038116917401000000000000000000000000000000000000000090910467ffffffffffffffff169060070b83565b604080516001600160a01b03909416845267ffffffffffffffff909216602084015260070b90820152606001620002a0565b620002f773333333333333333333333333333333333333333381565b6200041962001791565b604051620002a0919062005064565b6200032d64174876e80081565b6200043f62001866565b604051620002a09190620050e8565b6200027262001960565b602454620002f79064010000000090046001600160a01b031681565b602554620002f7906001600160a01b031681565b6200027262001c7b565b6200043f6200250c565b6200041962002606565b620004b0620026db565b6040519015158152602001620002a0565b620002f761080181565b6200032d670de0b6b3a764000081565b620002f7733a73033c0b1407574c76bdbac67f126f6b4a9aa981565b602054602154620003c1916001600160a01b038116917401000000000000000000000000000000000000000090910467ffffffffffffffff169060070b83565b6200028f619ce181565b602754620002f7906001600160a01b031681565b602654620002f7906001600160a01b031681565b620002b3620027af565b620002726200280f565b601f54620004b09060ff1681565b6040517f9868003400000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f68747470733a2f2f7270632e68797065726c69717569642d746573746e65742e60448201527f78797a2f65766d000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906398680034906084016020604051808303815f875af192505050801562000667575060408051601f3d908101601f19168201909252620006649181019062005179565b60015b6200071157620006906040518060600160405280603e81526020016200cf10603e913962003072565b6040517fdd82d13e00000000000000000000000000000000000000000000000000000000815260016004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063dd82d13e906024015f604051808303815f87803b158015620006f4575f80fd5b505af115801562000707573d5f803e3d5ffd5b5050505062000713565b505b60405180606001604052806200072b6104cf620030ea565b6001600160a01b0390811682526104cf602080840191909152600c6040938401528351815485830151919093167fffffffff00000000000000000000000000000000000000000000000000000000938416177401000000000000000000000000000000000000000067ffffffffffffffff9283160217825593830151602180547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000908116929096169190911790558251606081018452732222222222222222222222222222222222222222815261045191810191909152600890830181905260228054909216750451222222222222222222222222222222222222222217909155602380549093161790915551737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b4d6c7829061080190620008639062004cf3565b604051809103905ff0801580156200087d573d5f803e3d5ffd5b506001600160a01b0316803b806020016040519081016040528181525f908060200190933c6040518363ffffffff1660e01b8152600401620008c192919062005191565b5f604051808303815f87803b158015620008d9575f80fd5b505af1158015620008ec573d5f803e3d5ffd5b50506020546040517f312f619f0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201527401000000000000000000000000000000000000000090910467ffffffffffffffff90811660248301526044820152610801925063312f619f91506064015f604051808303815f87803b1580156200097c575f80fd5b505af11580156200098f573d5f803e3d5ffd5b50506022546040517f312f619f0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201527401000000000000000000000000000000000000000090910467ffffffffffffffff90811660248301526044820152610801925063312f619f91506064015f604051808303815f87803b15801562000a1f575f80fd5b505af115801562000a32573d5f803e3d5ffd5b5050505073f9e1815f151024bde4b7c10bac10e8ba9f6b53e13360405162000a5a9062004d01565b62000a67929190620051bc565b604051809103905ff08015801562000a81573d5f803e3d5ffd5b50602480547fffffffffffffffff0000000000000000000000000000000000000000ffffffff166401000000006001600160a01b039384168102919091179182905560205460215460405173f9e1815f151024bde4b7c10bac10e8ba9f6b53e19593909404909216927401000000000000000000000000000000000000000090910467ffffffffffffffff169160070b9062000b1d9062004d0f565b6001600160a01b03948516815293909216602084015267ffffffffffffffff16604083015260070b6060820152608001604051809103905ff08015801562000b67573d5f803e3d5ffd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602454604080517f5e280f11000000000000000000000000000000000000000000000000000000008152905164010000000090920490921691635e280f119160048083019260209291908290030181865afa15801562000bfe573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000c2491906200526e565b6001600160a01b031663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000c60573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000c8691906200528c565b602480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff929092169190911781556040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815273f9e1815f151024bde4b7c10bac10e8ba9f6b53e1600482015268056bc75e2d6310000091810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d906044015f604051808303815f87803b15801562000d43575f80fd5b505af115801562000d56573d5f803e3d5ffd5b50505050565b602554604080517faae12e4600000000000000000000000000000000000000000000000000000000815290515f926001600160a01b03169163aae12e469160048083019260609291908290030181865afa15801562000dbd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000de391906200533e565b905062000e08815f015173222222222222222222222222222222222222222262003111565b62000e24816020015167ffffffffffffffff1661045162003198565b62000e38816040015160070b600a620031f1565b602554604080517f2d0e315c00000000000000000000000000000000000000000000000000000000815290515f926001600160a01b031691632d0e315c9160048083019260609291908290030181865afa15801562000e99573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000ebf91906200533e565b805160205491925062000edb916001600160a01b031662003111565b602080820151905462000f149167ffffffffffffffff908116917401000000000000000000000000000000000000000090041662003198565b604081015160215462000f2f91600790810b91900b620031f1565b5050565b6060601680548060200260200160405190810160405280929190818152602001828054801562000f8b57602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831162000f6c575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b82821015620010d4575f84815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620010bc578382905f5260205f200180546200102a906200539e565b80601f016020809104026020016040519081016040528092919081815260200182805462001058906200539e565b8015620010a75780601f106200107d57610100808354040283529160200191620010a7565b820191905f5260205f20905b8154815290600101906020018083116200108957829003601f168201915b5050505050815260200190600101906200100a565b50505050815250508152602001906001019062000fb8565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801562000f8b57602002820191905f5260205f209081546001600160a01b0316815260019091019060200180831162000f6c575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801562000f8b57602002820191905f5260205f209081546001600160a01b0316815260019091019060200180831162000f6c575050505050905090565b6040517f9868003400000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f68747470733a2f2f7270632e68797065726c69717569642e78797a2f65766d006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906398680034906064016020604051808303815f875af192505050801562001253575060408051601f3d908101601f19168201909252620012509181019062005179565b60015b620012fd576200127c6040518060600160405280603681526020016200ceda6036913962003072565b6040517fdd82d13e00000000000000000000000000000000000000000000000000000000815260016004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063dd82d13e906024015f604051808303815f87803b158015620012e0575f80fd5b505af1158015620012f3573d5f803e3d5ffd5b50505050620012ff565b505b5f733a73033c0b1407574c76bdbac67f126f6b4a9aa933604051620013249062004d01565b62001331929190620051bc565b604051809103905ff0801580156200134b573d5f803e3d5ffd5b506020546021546040519293505f92733a73033c0b1407574c76bdbac67f126f6b4a9aa99285927401000000000000000000000000000000000000000090910467ffffffffffffffff169160079190910b90620013a89062004d0f565b6001600160a01b03948516815293909216602084015267ffffffffffffffff16604083015260070b6060820152608001604051809103905ff080158015620013f2573d5f803e3d5ffd5b506040517f4bd162df0000000000000000000000000000000000000000000000000000000081526103e7600482015290915062000f2f906001600160a01b03831690634bd162df90602401602060405180830381865afa15801562001459573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200147f9190620053f1565b67ffffffffffffffff16609662003198565b6060601b805480602002602001604051908101604052809291908181526020015f905b82821015620010d4578382905f5260205f2090600202016040518060400160405290815f82018054620014e7906200539e565b80601f016020809104026020016040519081016040528092919081815260200182805462001515906200539e565b8015620015645780601f106200153a5761010080835404028352916020019162001564565b820191905f5260205f20905b8154815290600101906020018083116200154657829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015620015fd57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620015a95790505b50505050508152505081526020019060010190620014b4565b6022546040517f312f619f0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201527401000000000000000000000000000000000000000090910467ffffffffffffffff9081166024830152821660448201526108019063312f619f906064015f604051808303815f87803b158015620016a4575f80fd5b505af1158015620016b7573d5f803e3d5ffd5b50506025546022546040517f81e8dcb40000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301527401000000000000000000000000000000000000000090920467ffffffffffffffff1660248201525f9450911691506381e8dcb490604401602060405180830381865afa15801562001749573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200176f9190620053f1565b905062000f2f8167ffffffffffffffff168367ffffffffffffffff1662003198565b6060601a805480602002602001604051908101604052809291908181526020015f905b82821015620010d4578382905f5260205f20018054620017d4906200539e565b80601f016020809104026020016040519081016040528092919081815260200182805462001802906200539e565b8015620018515780601f10620018275761010080835404028352916020019162001851565b820191905f5260205f20905b8154815290600101906020018083116200183357829003601f168201915b505050505081526020019060010190620017b4565b6060601d805480602002602001604051908101604052809291908181526020015f905b82821015620010d4575f8481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200194757602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620018f35790505b5050505050815250508152602001906001019062001889565b6040517f9868003400000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f68747470733a2f2f7270632e68797065726c69717569642d746573746e65742e60448201527f78797a2f65766d000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906398680034906084016020604051808303815f875af192505050801562001a3c575060408051601f3d908101601f1916820190925262001a399181019062005179565b60015b62001ae65762001a656040518060600160405280603e81526020016200cf10603e913962003072565b6040517fdd82d13e00000000000000000000000000000000000000000000000000000000815260016004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063dd82d13e906024015f604051808303815f87803b15801562001ac9575f80fd5b505af115801562001adc573d5f803e3d5ffd5b5050505062001ae8565b505b5f73f9e1815f151024bde4b7c10bac10e8ba9f6b53e13360405162001b0d9062004d01565b62001b1a929190620051bc565b604051809103905ff08015801562001b34573d5f803e3d5ffd5b506020546021546040519293505f9273f9e1815f151024bde4b7c10bac10e8ba9f6b53e19285927401000000000000000000000000000000000000000090910467ffffffffffffffff169160079190910b9062001b919062004d0f565b6001600160a01b03948516815293909216602084015267ffffffffffffffff16604083015260070b6060820152608001604051809103905ff08015801562001bdb573d5f803e3d5ffd5b506040517f4bd162df0000000000000000000000000000000000000000000000000000000081526103e6600482015290915062000f2f906001600160a01b03831690634bd162df90602401602060405180830381865afa15801562001c42573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001c689190620053f1565b67ffffffffffffffff1661045162003198565b60275460405160609190911b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208201525f90819060340160408051601f198184030181529082905262001cd592916020016200540f565b60408051601f1981840301815291905290505f62001d4981619ce162001d056001670de0b6b3a764000062005459565b60265467ffffffffffffffff91909116906001600160a01b03165b8660405160200162001d349291906200547d565b6040516020818303038152906040526200324a565b60245460255491925062001d91916001600160a01b036401000000009092048216911662001d816001670de0b6b3a764000062005459565b67ffffffffffffffff166200327e565b602480546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015262001e4e93640100000000909304909116916370a082319101602060405180830381865afa15801562001e03573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001e29919062005179565b62001e3e6001670de0b6b3a764000062005459565b67ffffffffffffffff1662003198565b602480546040517f86b9620d0000000000000000000000000000000000000000000000000000000081526401000000009091046001600160a01b03166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d916386b9620d91015f604051808303815f87803b15801562001ec4575f80fd5b505af115801562001ed7573d5f803e3d5ffd5b505060208054602554604051670de0b6b3a764000081526001600160a01b039283169550911692507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36025546040517ff9716faf000000000000000000000000000000000000000000000000000000008152670de0b6b3a76400006004820152600160248201525f916001600160a01b03169063f9716faf90604401606060405180830381865afa15801562001f99573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001fbf9190620054a4565b6040908101516027546020805484516001600160a01b039384169281019290925267ffffffffffffffff74010000000000000000000000000000000000000000909104811682860152831660608083019190915284518083039091018152608082018086526025547f1f8164d9000000000000000000000000000000000000000000000000000000009091529451939550935f93921691631f8164d99160848082019286929091908290030181865afa1580156200207f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052620020a8919081019062005532565b82604051602001620020bc9291906200557c565b60408051808303601f19018152908290527f86b9620d00000000000000000000000000000000000000000000000000000000825273333333333333333333333333333333333333333360048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906386b9620d906024015f604051808303815f87803b15801562002143575f80fd5b505af115801562002156573d5f803e3d5ffd5b50506025546040516001600160a01b0390911692507f8c7f585fb295f7eb1e6aeb8fba61b23a4fe60beda405f0045073b185c74412e391506200219b908490620055ae565b60405180910390a2602480546027546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201525f93640100000000909304909116916370a082319101602060405180830381865afa15801562002212573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002238919062005179565b6040517f06447d5600000000000000000000000000000000000000000000000000000000815273f9e1815f151024bde4b7c10bac10e8ba9f6b53e16004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015620022b2575f80fd5b505af1158015620022c5573d5f803e3d5ffd5b50506025546024546040517fd0a102600000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063d0a1026093506200232892640100000000909204909116905f908a903390600401620055c2565b5f604051808303815f87803b15801562002340575f80fd5b505af115801562002353573d5f803e3d5ffd5b50505050737109709ecfa91a80626ff3989d68f67f5b1dd12d6001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015620023a4575f80fd5b505af1158015620023b7573d5f803e3d5ffd5b5050602480546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526200245995506401000000009092041692506370a0823191015b602060405180830381865afa1580156200242c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002452919062005179565b5f62003198565b602480546027546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526200250493640100000000909304909116916370a082319101602060405180830381865afa158015620024cb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620024f1919062005179565b620024fe6001846200560a565b62003198565b505050505050565b6060601c805480602002602001604051908101604052809291908181526020015f905b82821015620010d4575f8481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620025ed57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620025995790505b505050505081525050815260200190600101906200252f565b60606019805480602002602001604051908101604052809291908181526020015f905b82821015620010d4578382905f5260205f2001805462002649906200539e565b80601f016020809104026020016040519081016040528092919081815260200182805462002677906200539e565b8015620026c65780601f106200269c57610100808354040283529160200191620026c6565b820191905f5260205f20905b815481529060010190602001808311620026a857829003601f168201915b50505050508152602001906001019062002629565b6008545f9060ff1615620026f3575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa15801562002782573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620027a8919062005179565b1415905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562000f8b57602002820191905f5260205f209081546001600160a01b0316815260019091019060200180831162000f6c575050505050905090565b60275460405160609190911b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208201525f9064174876e8009060340160408051601f19818403018152908290526200286e929160200162005620565b60408051808303601f190181529190526026549091505f90620028aa908290619ce190670de0b6b3a7640000906001600160a01b031662001d20565b602454602554919250620028dc916001600160a01b0364010000000090920482169116670de0b6b3a76400006200327e565b602480546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526200298393640100000000909304909116916370a082319101602060405180830381865afa1580156200294e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002974919062005179565b670de0b6b3a764000062003198565b737109709ecfa91a80626ff3989d68f67f5b1dd12d6001600160a01b03166386b9620d60255f9054906101000a90046001600160a01b03166001600160a01b031663aae12e466040518163ffffffff1660e01b8152600401606060405180830381865afa158015620029f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002a1d91906200533e565b5160405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0390911660048201526024015f604051808303815f87803b15801562002a75575f80fd5b505af115801562002a88573d5f803e3d5ffd5b505060255460405164174876e80081526001600160a01b0390911692507f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874915060200160405180910390a2602480546040517f86b9620d0000000000000000000000000000000000000000000000000000000081526401000000009091046001600160a01b03166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d916386b9620d91015f604051808303815f87803b15801562002b49575f80fd5b505af115801562002b5c573d5f803e3d5ffd5b505060208054602554604051670de0b6b3a764000081526001600160a01b039283169550911692507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36025546040517ff9716faf000000000000000000000000000000000000000000000000000000008152670de0b6b3a76400006004820152600160248201525f916001600160a01b03169063f9716faf90604401606060405180830381865afa15801562002c1e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002c449190620054a4565b6040908101516027546020805484516001600160a01b039384169281019290925267ffffffffffffffff74010000000000000000000000000000000000000000909104811682860152831660608083019190915284518083039091018152608082018086526025547f1f8164d9000000000000000000000000000000000000000000000000000000009091529451939550935f93921691631f8164d99160848082019286929091908290030181865afa15801562002d04573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405262002d2d919081019062005532565b8260405160200162002d419291906200557c565b60408051808303601f19018152908290527f86b9620d00000000000000000000000000000000000000000000000000000000825273333333333333333333333333333333333333333360048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906386b9620d906024015f604051808303815f87803b15801562002dc8575f80fd5b505af115801562002ddb573d5f803e3d5ffd5b50506025546040516001600160a01b0390911692507f8c7f585fb295f7eb1e6aeb8fba61b23a4fe60beda405f0045073b185c74412e3915062002e20908490620055ae565b60405180910390a26022546027546040517f06447d5600000000000000000000000000000000000000000000000000000000815273f9e1815f151024bde4b7c10bac10e8ba9f6b53e160048201526001600160a01b0392831631929091163190737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b15801562002eb7575f80fd5b505af115801562002eca573d5f803e3d5ffd5b50506025546001600160a01b0316915063d0a10260905062002ef3600164174876e80062005459565b67ffffffffffffffff16602460049054906101000a90046001600160a01b03165f801b8a336040518663ffffffff1660e01b815260040162002f399493929190620055c2565b5f604051808303818588803b15801562002f51575f80fd5b505af115801562002f64573d5f803e3d5ffd5b5050505050737109709ecfa91a80626ff3989d68f67f5b1dd12d6001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562002fb6575f80fd5b505af115801562002fc9573d5f803e3d5ffd5b5050602480546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526200302795506401000000009092041692506370a08231910162002410565b6022546200304a906001600160a01b031631620024fe64174876e800856200560a565b60275462003069906001600160a01b031631620024fe6001846200560a565b50505050505050565b620030e781604051602401620030899190620055ae565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac0000000000000000000000000000000000000000000000000000000017905262003291565b50565b5f6200310b827320000000000000000000000000000000000000006200560a565b92915050565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f6906044015b5f6040518083038186803b15801562003185575f80fd5b505afa15801562002504573d5f803e3d5ffd5b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c54906044016200316e565b6040517ffe74f05b0000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063fe74f05b906044016200316e565b60608484848460405160200162003265949392919062005644565b6040516020818303038152906040529050949350505050565b6200328c8383835f6200329c565b505050565b620030e78162003525565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a082310000000000000000000000000000000000000000000000000000000017905291515f928716916200331f91620056c3565b5f60405180830381855afa9150503d805f811462003359576040519150601f19603f3d011682016040523d82523d5f602084013e6200335e565b606091505b509150505f8180602001905181019062003379919062005179565b9050620033cc84620033c587620033be7f70a0823100000000000000000000000000000000000000000000000000000000620033b7600d8d62003544565b9062003583565b90620035bb565b90620035e6565b8215620025045760408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f18160ddd0000000000000000000000000000000000000000000000000000000017905290515f916001600160a01b03891691620034449190620056c3565b5f60405180830381855afa9150503d805f81146200347e576040519150601f19603f3d011682016040523d82523d5f602084013e62003483565b606091505b509150505f818060200190518101906200349e919062005179565b905082861015620034c957620034b58684620056e0565b620034c19082620056e0565b9050620034e4565b620034d58387620056e0565b620034e190826200560a565b90505b6200351b81620033c57f18160ddd00000000000000000000000000000000000000000000000000000000620033b7600d8d62003544565b5050505050505050565b5f6a636f6e736f6c652e6c6f6790505f80835160208501845afa505050565b6004820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555f825b9392505050565b6002820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e083901c1790555f826200357c565b6001808301805491820181555f908152602081206001600160a01b038416920191909155826200357c565b62000f2f82826004820154600283015460038401546001600160a01b039092169160e09190911b905f6200361a8662003b58565b6001600160a01b0385165f908152602088815260408083207fffffffff0000000000000000000000000000000000000000000000000000000088168452825280832090519394509262003672918591879101620056f6565b60408051601f198184030181529181528151602092830120835290820192909252015f206003015460ff16620036b057620036ae865f62003c6b565b505b6001600160a01b0384165f908152602087815260408083207fffffffff0000000000000000000000000000000000000000000000000000000087168452825280832090519091839162003708918691889101620056f6565b6040516020818303038152906040528051906020012081526020019081526020015f2090505f816002015482600101546200374491906200560a565b11156200387c575f816002015482600101546200376291906200560a565b6200377090610100620056e0565b6200377d90600262005850565b6040517f6900a3ae0000000000000000000000000000000000000000000000000000000081526004810182905290915081881090737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae906024015f60405180830381865afa158015620037eb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405262003814919081019062005532565b6040516020016200382691906200585d565b6040516020818303038152906040529062003879576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620038709190620055ae565b60405180910390fd5b50505b80546040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b038716600482015260248101919091525f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa158015620038f8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200391e919062005179565b60018381015460028501549293505f92908101610100039190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01811b1983169089901b1783546040517f70ca10bb0000000000000000000000000000000000000000000000000000000081526001600160a01b038a166004820152602481019190915260448101829052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb906064015f604051808303815f87803b158015620039e5575f80fd5b505af1158015620039f8573d5f803e3d5ffd5b505050505f8062003a098b62003c80565b9150915081158062003a1b5750898114155b1562003b405784546040517f70ca10bb0000000000000000000000000000000000000000000000000000000081526001600160a01b038b166004820152602481019190915260448101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb906064015f604051808303815f87803b15801562003a9e575f80fd5b505af115801562003ab1573d5f803e3d5ffd5b50506040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a2046616960448201527f6c656420746f2077726974652076616c75652e0000000000000000000000000060648201526084019150620038709050565b62003b4b8b62003d51565b5050505050505050505050565b606081600701805462003b6b906200539e565b90505f0362003bd1576200310b8260010180548060200260200160405190810160405280929190818152602001828054801562003bc657602002820191905f5260205f20905b81548152602001906001019080831162003bb1575b505050505062003d5c565b81600701805462003be2906200539e565b80601f016020809104026020016040519081016040528092919081815260200182805462003c10906200539e565b801562003c5f5780601f1062003c355761010080835404028352916020019162003c5f565b820191905f5260205f20905b81548152906001019060200180831162003c4157829003601f168201915b50505050509050919050565b5f62003c78838362003e00565b549392505050565b60028101545f908190819060e01b62003c998562003b58565b60405160200162003cac929190620058ef565b60408051601f198184030181529082905260048601549092505f9182916001600160a01b03169062003ce0908590620056c3565b5f60405180830381855afa9150503d805f811462003d1a576040519150601f19603f3d011682016040523d82523d5f602084013e62003d1f565b606091505b50915091505f62003d43828860030154602062003d3d919062005938565b620046be565b929792965091945050505050565b620030e78162004751565b60605f8251602062003d6f919062005938565b67ffffffffffffffff81111562003d8a5762003d8a620052b1565b6040519080825280601f01601f19166020018201604052801562003db5576020820181803683370190505b5090505f5b835181101562003df9575f84828151811062003dda5762003dda62005952565b6020908102919091018101518382028501909101525060010162003dba565b5092915050565b6004820154600283015460038401545f926001600160a01b03169160e01b908362003e2b8762003b58565b6001600160a01b0385165f908152602089815260408083207fffffffff0000000000000000000000000000000000000000000000000000000088168452825280832090519394509262003e83918591879101620056f6565b60408051601f198184030181529181528151602092830120835290820192909252015f206003015460ff161562003f4c57851562003ec65762003ec68762004751565b6001600160a01b0384165f908152602088815260408083207fffffffff00000000000000000000000000000000000000000000000000000000871684528252808320905190929162003f1d918591879101620056f6565b6040516020818303038152906040528051906020012081526020019081526020015f209450505050506200310b565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c6001600160a01b031663266cf1096040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562003fa7575f80fd5b505af115801562003fba573d5f803e3d5ffd5b505050505f62003fca8862003c80565b6040517f65bc94810000000000000000000000000000000000000000000000000000000081526001600160a01b03881660048201529092505f9150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024015f604051808303815f875af115801562004040573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405262004069919081019062005a05565b50905080515f036200410057604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162003870565b80515b5f6200410f8262005a6c565b9150811062004513575f7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c6001600160a01b031663667f9d708985858151811062004160576200416062005952565b60200260200101516040518363ffffffff1660e01b81526004016200419a9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa158015620041b6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620041dc919062005179565b90508062004246577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a5888484815181106200421b576200421b62005952565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b6200426e8b84848151811062004260576200426062005952565b6020026020010151620047f6565b6200427a575062004103565b60068b01545f90819060ff1615620042ce575f620042b58e878781518110620042a757620042a762005952565b602002602001015162004a46565b9094509250905080620042cc575050505062004103565b505b6001828201610100031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01811b8316811c86811462004312575050505062004103565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c6040516020016200434a929190620056f6565b6040516020818303038152906040528051906020012089898151811062004375576200437562005952565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a16040518060800160405280878781518110620043f157620043f162005952565b60200260200101515f1c8152602001848152602001838152602001600115158152508e5f015f8d6001600160a01b03166001600160a01b031681526020019081526020015f205f8c7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f205f8a8c6040516020016200449a929190620056f6565b60408051808303601f1901815291815281516020928301208352828201939093529082015f2083518155908301516001820155908201516002820155606090910151600390910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055505050505b506001600160a01b0386165f90815260208a815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168452825280832090519092916200456b918791899101620056f6565b60408051601f198184030181529181528151602092830120835290820192909252015f206003015460ff1662004624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e0000000000000000000000000000000000606482015260840162003870565b87156200463657620046368962004751565b6001600160a01b0386165f90815260208a815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168452825280832090519092916200468d918791899101620056f6565b6040516020818303038152906040528051906020012081526020019081526020015f20965050505050505092915050565b5f805f6020855111620046d3578451620046d6565b60205b90505f5b818110156200474757620046f081600862005938565b86620046fd83886200560a565b8151811062004710576200471062005952565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791600101620046da565b5090949350505050565b6004810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556002810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000169055620047b4600182015f62004d1d565b5f600382018190556006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055620030e790600783019062004d3a565b6004828101546040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b0390911691810191909152602481018290525f908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa1580156200487a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620048a0919062005179565b90505f80620048af8662003c80565b90925090