UNPKG

@layerzerolabs/hyperliquid-composer

Version:

LayerZero Labs reference EVM OmniChain Fungible Token (OFT) implementation for Hyperliquid

1 lines 344 kB
{"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":"0x600c8054600160ff199182168117909255601f8054909116909117905560c06040526005608090815264757365724160d81b60a0526200003f90620000b9565b602680546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260058152643ab9b2b92160d91b60208201526200008690620000b9565b602780546001600160a01b0319166001600160a01b0392909216919091179055348015620000b2575f80fd5b5062000296565b5f620000c582620000cc565b5092915050565b5f8082604051602001620000e1919062000207565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156200014b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000171919062000224565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890620001af908590879060040162000253565b5f604051808303815f87803b158015620001c7575f80fd5b505af1158015620001da573d5f803e3d5ffd5b50505050915091565b5f5b83811015620001ff578181015183820152602001620001e5565b50505f910152565b5f82516200021a818460208701620001e3565b9190910192915050565b5f6020828403121562000235575f80fd5b81516001600160a01b03811681146200024c575f80fd5b9392505050565b60018060a01b0383168152604060208201525f825180604084015262000281816060850160208701620001e3565b601f01601f1916919091016060019392505050565b61cd7680620002a45f395ff3fe608060405234801562000010575f80fd5b506004361062000264575f3560e01c8063971ddf791162000157578063c1d1ead811620000c7578063cb1a295f1162000093578063e20c9f711162000077578063e20c9f711462000569578063e93bfee61462000573578063fa7626d4146200057d575f80fd5b8063cb1a295f1462000541578063deb22e9a1462000555575f80fd5b8063c1d1ead814620002db578063c203ccab14620004db578063c33d080d14620004f7578063c9279a741462000537575f80fd5b8063b0464fdc1162000123578063ba414fa61162000107578063ba414fa614620004a6578063ba87267914620004c1578063bb641b3e14620004cb575f80fd5b8063b0464fdc1462000492578063b5508aa9146200049c575f80fd5b8063971ddf79146200044e5780639b5215f61462000458578063a09e74301462000474578063a985a8ad1462000488575f80fd5b80634e0cd79911620001f357806376e86e7211620001bf57806385226c8111620001a357806385226c81146200040f5780639127ace21462000428578063916a17c61462000435575f80fd5b806376e86e7214620003815780637ecd9ac314620003f3575f80fd5b80634e0cd7991462000324578063553109e4146200034757806366d9a9a0146200035157806375258814146200036a575f80fd5b80632ade388011620002335780632ade388014620002c2578063318f405a14620002db5780633e5e3c2314620003105780633f7286f4146200031a575f80fd5b80630a9254e414620002685780631015594a1462000274578063176e619e146200027e5780631ed7831c14620002a9575b5f80fd5b620002726200058b565b005b6200027262000d5c565b6024546200028f9063ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b620002b362000f33565b604051620002a0919062004d62565b620002cc62000f95565b604051620002a0919062004e01565b620002f773f9e1815f151024bde4b7c10bac10e8ba9f6b53e181565b6040516001600160a01b039091168152602001620002a0565b620002b3620010dd565b620002b36200113d565b6200032d600181565b60405167ffffffffffffffff9091168152602001620002a0565b620002726200119d565b6200035b62001491565b604051620002a0919062004f5e565b620002726200037b3660046200501d565b62001616565b602254602354620003c1916001600160a01b038116917401000000000000000000000000000000000000000090910467ffffffffffffffff169060070b83565b604080516001600160a01b03909416845267ffffffffffffffff909216602084015260070b90820152606001620002a0565b620002f773333333333333333333333333333333333333333381565b6200041962001791565b604051620002a091906200503b565b6200032d64174876e80081565b6200043f62001866565b604051620002a09190620050bf565b6200027262001960565b602454620002f79064010000000090046001600160a01b031681565b602554620002f7906001600160a01b031681565b6200027262001c7b565b6200043f620024f8565b62000419620025f2565b620004b0620026c7565b6040519015158152602001620002a0565b620002f761080181565b6200032d670de0b6b3a764000081565b620002f7733a73033c0b1407574c76bdbac67f126f6b4a9aa981565b602054602154620003c1916001600160a01b038116917401000000000000000000000000000000000000000090910467ffffffffffffffff169060070b83565b6200028f619ce181565b602754620002f7906001600160a01b031681565b602654620002f7906001600160a01b031681565b620002b36200279b565b62000272620027fb565b601f54620004b09060ff1681565b6040517f9868003400000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f68747470733a2f2f7270632e68797065726c69717569642d746573746e65742e60448201527f78797a2f65766d000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906398680034906084016020604051808303815f875af192505050801562000667575060408051601f3d908101601f19168201909252620006649181019062005150565b60015b6200071157620006906040518060600160405280603e81526020016200cd03603e913962003049565b6040517fdd82d13e00000000000000000000000000000000000000000000000000000000815260016004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063dd82d13e906024015f604051808303815f87803b158015620006f4575f80fd5b505af115801562000707573d5f803e3d5ffd5b5050505062000713565b505b60405180606001604052806200072b6104cf620030c1565b6001600160a01b0390811682526104cf602080840191909152600c6040938401528351815485830151919093167fffffffff00000000000000000000000000000000000000000000000000000000938416177401000000000000000000000000000000000000000067ffffffffffffffff9283160217825593830151602180547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000908116929096169190911790558251606081018452732222222222222222222222222222222222222222815261045191810191909152600890830181905260228054909216750451222222222222222222222222222222222222222217909155602380549093161790915551737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b4d6c7829061080190620008639062004cca565b604051809103905ff0801580156200087d573d5f803e3d5ffd5b506001600160a01b0316803b806020016040519081016040528181525f908060200190933c6040518363ffffffff1660e01b8152600401620008c192919062005168565b5f604051808303815f87803b158015620008d9575f80fd5b505af1158015620008ec573d5f803e3d5ffd5b50506020546040517f312f619f0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201527401000000000000000000000000000000000000000090910467ffffffffffffffff90811660248301526044820152610801925063312f619f91506064015f604051808303815f87803b1580156200097c575f80fd5b505af11580156200098f573d5f803e3d5ffd5b50506022546040517f312f619f0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201527401000000000000000000000000000000000000000090910467ffffffffffffffff90811660248301526044820152610801925063312f619f91506064015f604051808303815f87803b15801562000a1f575f80fd5b505af115801562000a32573d5f803e3d5ffd5b5050505073f9e1815f151024bde4b7c10bac10e8ba9f6b53e13360405162000a5a9062004cd8565b62000a6792919062005193565b604051809103905ff08015801562000a81573d5f803e3d5ffd5b50602480547fffffffffffffffff0000000000000000000000000000000000000000ffffffff166401000000006001600160a01b039384168102919091179182905560205460215460405173f9e1815f151024bde4b7c10bac10e8ba9f6b53e19593909404909216927401000000000000000000000000000000000000000090910467ffffffffffffffff169160070b9062000b1d9062004ce6565b6001600160a01b03948516815293909216602084015267ffffffffffffffff16604083015260070b6060820152608001604051809103905ff08015801562000b67573d5f803e3d5ffd5b50602580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03928316179055602454604080517f5e280f11000000000000000000000000000000000000000000000000000000008152905164010000000090920490921691635e280f119160048083019260209291908290030181865afa15801562000bfe573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000c24919062005245565b6001600160a01b031663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000c60573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000c86919062005263565b602480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff929092169190911781556040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815273f9e1815f151024bde4b7c10bac10e8ba9f6b53e1600482015268056bc75e2d6310000091810191909152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c88a5e6d906044015f604051808303815f87803b15801562000d43575f80fd5b505af115801562000d56573d5f803e3d5ffd5b50505050565b602554604080517faae12e4600000000000000000000000000000000000000000000000000000000815290515f926001600160a01b03169163aae12e469160048083019260609291908290030181865afa15801562000dbd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000de3919062005315565b905062000e08815f0151732222222222222222222222222222222222222222620030e8565b62000e24816020015167ffffffffffffffff166104516200316f565b62000e38816040015160070b600a620031c8565b602554604080517f2d0e315c00000000000000000000000000000000000000000000000000000000815290515f926001600160a01b031691632d0e315c9160048083019260609291908290030181865afa15801562000e99573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000ebf919062005315565b805160205491925062000edb916001600160a01b0316620030e8565b602080820151905462000f149167ffffffffffffffff90811691740100000000000000000000000000000000000000009004166200316f565b604081015160215462000f2f91600790810b91900b620031c8565b5050565b6060601680548060200260200160405190810160405280929190818152602001828054801562000f8b57602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831162000f6c575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b82821015620010d4575f84815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b82821015620010bc578382905f5260205f200180546200102a9062005375565b80601f0160208091040260200160405190810160405280929190818152602001828054620010589062005375565b8015620010a75780601f106200107d57610100808354040283529160200191620010a7565b820191905f5260205f20905b8154815290600101906020018083116200108957829003601f168201915b5050505050815260200190600101906200100a565b50505050815250508152602001906001019062000fb8565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801562000f8b57602002820191905f5260205f209081546001600160a01b0316815260019091019060200180831162000f6c575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801562000f8b57602002820191905f5260205f209081546001600160a01b0316815260019091019060200180831162000f6c575050505050905090565b6040517f9868003400000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f68747470733a2f2f7270632e68797065726c69717569642e78797a2f65766d006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906398680034906064016020604051808303815f875af192505050801562001253575060408051601f3d908101601f19168201909252620012509181019062005150565b60015b620012fd576200127c6040518060600160405280603681526020016200cccd6036913962003049565b6040517fdd82d13e00000000000000000000000000000000000000000000000000000000815260016004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063dd82d13e906024015f604051808303815f87803b158015620012e0575f80fd5b505af1158015620012f3573d5f803e3d5ffd5b50505050620012ff565b505b5f733a73033c0b1407574c76bdbac67f126f6b4a9aa933604051620013249062004cd8565b6200133192919062005193565b604051809103905ff0801580156200134b573d5f803e3d5ffd5b506020546021546040519293505f92733a73033c0b1407574c76bdbac67f126f6b4a9aa99285927401000000000000000000000000000000000000000090910467ffffffffffffffff169160079190910b90620013a89062004ce6565b6001600160a01b03948516815293909216602084015267ffffffffffffffff16604083015260070b6060820152608001604051809103905ff080158015620013f2573d5f803e3d5ffd5b506040517f4bd162df0000000000000000000000000000000000000000000000000000000081526103e7600482015290915062000f2f906001600160a01b03831690634bd162df90602401602060405180830381865afa15801562001459573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200147f9190620053c8565b67ffffffffffffffff1660966200316f565b6060601b805480602002602001604051908101604052809291908181526020015f905b82821015620010d4578382905f5260205f2090600202016040518060400160405290815f82018054620014e79062005375565b80601f0160208091040260200160405190810160405280929190818152602001828054620015159062005375565b8015620015645780601f106200153a5761010080835404028352916020019162001564565b820191905f5260205f20905b8154815290600101906020018083116200154657829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015620015fd57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620015a95790505b50505050508152505081526020019060010190620014b4565b6022546040517f312f619f0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201527401000000000000000000000000000000000000000090910467ffffffffffffffff9081166024830152821660448201526108019063312f619f906064015f604051808303815f87803b158015620016a4575f80fd5b505af1158015620016b7573d5f803e3d5ffd5b50506025546022546040517f81e8dcb40000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301527401000000000000000000000000000000000000000090920467ffffffffffffffff1660248201525f9450911691506381e8dcb490604401602060405180830381865afa15801562001749573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200176f9190620053c8565b905062000f2f8167ffffffffffffffff168367ffffffffffffffff166200316f565b6060601a805480602002602001604051908101604052809291908181526020015f905b82821015620010d4578382905f5260205f20018054620017d49062005375565b80601f0160208091040260200160405190810160405280929190818152602001828054620018029062005375565b8015620018515780601f10620018275761010080835404028352916020019162001851565b820191905f5260205f20905b8154815290600101906020018083116200183357829003601f168201915b505050505081526020019060010190620017b4565b6060601d805480602002602001604051908101604052809291908181526020015f905b82821015620010d4575f8481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200194757602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620018f35790505b5050505050815250508152602001906001019062001889565b6040517f9868003400000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f68747470733a2f2f7270632e68797065726c69717569642d746573746e65742e60448201527f78797a2f65766d000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906398680034906084016020604051808303815f875af192505050801562001a3c575060408051601f3d908101601f1916820190925262001a399181019062005150565b60015b62001ae65762001a656040518060600160405280603e81526020016200cd03603e913962003049565b6040517fdd82d13e00000000000000000000000000000000000000000000000000000000815260016004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063dd82d13e906024015f604051808303815f87803b15801562001ac9575f80fd5b505af115801562001adc573d5f803e3d5ffd5b5050505062001ae8565b505b5f73f9e1815f151024bde4b7c10bac10e8ba9f6b53e13360405162001b0d9062004cd8565b62001b1a92919062005193565b604051809103905ff08015801562001b34573d5f803e3d5ffd5b506020546021546040519293505f9273f9e1815f151024bde4b7c10bac10e8ba9f6b53e19285927401000000000000000000000000000000000000000090910467ffffffffffffffff169160079190910b9062001b919062004ce6565b6001600160a01b03948516815293909216602084015267ffffffffffffffff16604083015260070b6060820152608001604051809103905ff08015801562001bdb573d5f803e3d5ffd5b506040517f4bd162df0000000000000000000000000000000000000000000000000000000081526103e6600482015290915062000f2f906001600160a01b03831690634bd162df90602401602060405180830381865afa15801562001c42573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001c689190620053c8565b67ffffffffffffffff166104516200316f565b60275460405160609190911b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208201525f9060340160408051601f1981840301815291905290505f62001d2781619ce162001ce36001670de0b6b3a764000062005413565b60265467ffffffffffffffff91909116906001600160a01b03165b8660405160200162001d1292919062005437565b60405160208183030381529060405262003221565b60245460255491925062001d6f916001600160a01b036401000000009092048216911662001d5f6001670de0b6b3a764000062005413565b67ffffffffffffffff1662003255565b602480546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015262001e2c93640100000000909304909116916370a082319101602060405180830381865afa15801562001de1573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001e07919062005150565b62001e1c6001670de0b6b3a764000062005413565b67ffffffffffffffff166200316f565b602480546040517f86b9620d0000000000000000000000000000000000000000000000000000000081526401000000009091046001600160a01b03166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d916386b9620d91015f604051808303815f87803b15801562001ea2575f80fd5b505af115801562001eb5573d5f803e3d5ffd5b505060208054602554604051670de0b6b3a764000081526001600160a01b039283169550911692507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36025546040517ff9716faf000000000000000000000000000000000000000000000000000000008152670de0b6b3a76400006004820152600160248201525f916001600160a01b03169063f9716faf90604401606060405180830381865afa15801562001f77573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001f9d91906200545e565b6040908101516027546020805484516001600160a01b039384169281019290925267ffffffffffffffff74010000000000000000000000000000000000000000909104811682860152831660608083019190915284518083039091018152608082018086526025547f1f8164d9000000000000000000000000000000000000000000000000000000009091529451939550935f93921691631f8164d99160848082019286929091908290030181865afa1580156200205d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052620020869190810190620054ec565b826040516020016200209a92919062005536565b60408051808303601f19018152908290527f86b9620d00000000000000000000000000000000000000000000000000000000825273333333333333333333333333333333333333333360048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906386b9620d906024015f604051808303815f87803b15801562002121575f80fd5b505af115801562002134573d5f803e3d5ffd5b50506025546040516001600160a01b0390911692507f8c7f585fb295f7eb1e6aeb8fba61b23a4fe60beda405f0045073b185c74412e391506200217990849062005568565b60405180910390a2602480546027546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201525f93640100000000909304909116916370a082319101602060405180830381865afa158015620021f0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002216919062005150565b6040517f06447d5600000000000000000000000000000000000000000000000000000000815273f9e1815f151024bde4b7c10bac10e8ba9f6b53e16004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b15801562002290575f80fd5b505af1158015620022a3573d5f803e3d5ffd5b50506025546024546040517fd0a102600000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063d0a1026093506200230692640100000000909204909116905f908a9033906004016200557c565b5f604051808303815f87803b1580156200231e575f80fd5b505af115801562002331573d5f803e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c6001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562002390575f80fd5b505af1158015620023a3573d5f803e3d5ffd5b5050602480546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526200244595506401000000009092041692506370a0823191015b602060405180830381865afa15801562002418573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200243e919062005150565b5f6200316f565b602480546027546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620024f093640100000000909304909116916370a082319101602060405180830381865afa158015620024b7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620024dd919062005150565b620024ea600184620055c4565b6200316f565b505050505050565b6060601c805480602002602001604051908101604052809291908181526020015f905b82821015620010d4575f8481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620025d957602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620025855790505b505050505081525050815260200190600101906200251b565b60606019805480602002602001604051908101604052809291908181526020015f905b82821015620010d4578382905f5260205f20018054620026359062005375565b80601f0160208091040260200160405190810160405280929190818152602001828054620026639062005375565b8015620026b25780601f106200268857610100808354040283529160200191620026b2565b820191905f5260205f20905b8154815290600101906020018083116200269457829003601f168201915b50505050508152602001906001019062002615565b6008545f9060ff1615620026df575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa1580156200276e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002794919062005150565b1415905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562000f8b57602002820191905f5260205f209081546001600160a01b0316815260019091019060200180831162000f6c575050505050905090565b6027546040805160609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602083015280518083036014018152603490920190526026545f9062002869908290619ce190670de0b6b3a7640000906001600160a01b031662001cfe565b6024546025549192506200289b916001600160a01b0364010000000090920482169116670de0b6b3a764000062003255565b602480546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526200294293640100000000909304909116916370a082319101602060405180830381865afa1580156200290d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002933919062005150565b670de0b6b3a76400006200316f565b602554604080517faae12e460000000000000000000000000000000000000000000000000000000081529051737109709ecfa91a80626ff3989d68f67f5b1dd12d926386b9620d926001600160a01b039091169163aae12e46916004808201926060929091908290030181865afa158015620029c0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620029e6919062005315565b5160405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0390911660048201526024015f604051808303815f87803b15801562002a3e575f80fd5b505af115801562002a51573d5f803e3d5ffd5b505060255460405164174876e80081526001600160a01b0390911692507f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874915060200160405180910390a2602480546040517f86b9620d0000000000000000000000000000000000000000000000000000000081526401000000009091046001600160a01b03166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d916386b9620d91015f604051808303815f87803b15801562002b12575f80fd5b505af115801562002b25573d5f803e3d5ffd5b505060208054602554604051670de0b6b3a764000081526001600160a01b039283169550911692507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36025546040517ff9716faf000000000000000000000000000000000000000000000000000000008152670de0b6b3a76400006004820152600160248201525f916001600160a01b03169063f9716faf90604401606060405180830381865afa15801562002be7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002c0d91906200545e565b6040908101516027546020805484516001600160a01b039384169281019290925267ffffffffffffffff74010000000000000000000000000000000000000000909104811682860152831660608083019190915284518083039091018152608082018086526025547f1f8164d9000000000000000000000000000000000000000000000000000000009091529451939550935f93921691631f8164d99160848082019286929091908290030181865afa15801562002ccd573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405262002cf69190810190620054ec565b8260405160200162002d0a92919062005536565b60408051808303601f19018152908290527f86b9620d00000000000000000000000000000000000000000000000000000000825273333333333333333333333333333333333333333360048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906386b9620d906024015f604051808303815f87803b15801562002d91575f80fd5b505af115801562002da4573d5f803e3d5ffd5b50506025546040516001600160a01b0390911692507f8c7f585fb295f7eb1e6aeb8fba61b23a4fe60beda405f0045073b185c74412e3915062002de990849062005568565b60405180910390a26022546027546040517f06447d5600000000000000000000000000000000000000000000000000000000815273f9e1815f151024bde4b7c10bac10e8ba9f6b53e160048201526001600160a01b0392831631929091163190737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b15801562002e80575f80fd5b505af115801562002e93573d5f803e3d5ffd5b50506025546001600160a01b0316915063d0a10260905062002ebc600164174876e80062005413565b67ffffffffffffffff16602460049054906101000a90046001600160a01b03165f801b8a336040518663ffffffff1660e01b815260040162002f0294939291906200557c565b5f604051808303818588803b15801562002f1a575f80fd5b505af115801562002f2d573d5f803e3d5ffd5b50505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c6001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562002f8d575f80fd5b505af115801562002fa0573d5f803e3d5ffd5b5050602480546025546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015262002ffe95506401000000009092041692506370a082319101620023fc565b60225462003021906001600160a01b031631620024ea64174876e80085620055c4565b60275462003040906001600160a01b031631620024ea600184620055c4565b50505050505050565b620030be8160405160240162003060919062005568565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac0000000000000000000000000000000000000000000000000000000017905262003268565b50565b5f620030e282732000000000000000000000000000000000000000620055c4565b92915050565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f6906044015b5f6040518083038186803b1580156200315c575f80fd5b505afa158015620024f0573d5f803e3d5ffd5b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440162003145565b6040517ffe74f05b0000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063fe74f05b9060440162003145565b6060848484846040516020016200323c9493929190620055da565b6040516020818303038152906040529050949350505050565b620032638383835f62003273565b505050565b620030be81620034fc565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a082310000000000000000000000000000000000000000000000000000000017905291515f92871691620032f69162005659565b5f60405180830381855afa9150503d805f811462003330576040519150601f19603f3d011682016040523d82523d5f602084013e62003335565b606091505b509150505f8180602001905181019062003350919062005150565b9050620033a3846200339c87620033957f70a08231000000000000000000000000000000000000000000000000000000006200338e600d8d6200351b565b906200355a565b9062003592565b90620035bd565b8215620024f05760408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f18160ddd0000000000000000000000000000000000000000000000000000000017905290515f916001600160a01b038916916200341b919062005659565b5f60405180830381855afa9150503d805f811462003455576040519150601f19603f3d011682016040523d82523d5f602084013e6200345a565b606091505b509150505f8180602001905181019062003475919062005150565b905082861015620034a0576200348c868462005676565b62003498908262005676565b9050620034bb565b620034ac838762005676565b620034b89082620055c4565b90505b620034f2816200339c7f18160ddd000000000000000000000000000000000000000000000000000000006200338e600d8d6200351b565b5050505050505050565b5f6a636f6e736f6c652e6c6f6790505f80835160208501845afa505050565b6004820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555f825b9392505050565b6002820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e083901c1790555f8262003553565b6001808301805491820181555f908152602081206001600160a01b0384169201919091558262003553565b62000f2f82826004820154600283015460038401546001600160a01b039092169160e09190911b905f620035f18662003b2f565b6001600160a01b0385165f908152602088815260408083207fffffffff00000000000000000000000000000000000000000000000000000000881684528252808320905193945092620036499185918791016200568c565b60408051601f198184030181529181528151602092830120835290820192909252015f206003015460ff16620036875762003685865f62003c42565b505b6001600160a01b0384165f908152602087815260408083207fffffffff00000000000000000000000000000000000000000000000000000000871684528252808320905190918391620036df9186918891016200568c565b6040516020818303038152906040528051906020012081526020019081526020015f2090505f816002015482600101546200371b9190620055c4565b111562003853575f81600201548260010154620037399190620055c4565b620037479061010062005676565b62003754906002620057e6565b6040517f6900a3ae0000000000000000000000000000000000000000000000000000000081526004810182905290915081881090737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae906024015f60405180830381865afa158015620037c2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052620037eb9190810190620054ec565b604051602001620037fd9190620057f3565b6040516020818303038152906040529062003850576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162003847919062005568565b60405180910390fd5b50505b80546040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b038716600482015260248101919091525f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa158015620038cf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620038f5919062005150565b60018381015460028501549293505f92908101610100039190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01811b1983169089901b1783546040517f70ca10bb0000000000000000000000000000000000000000000000000000000081526001600160a01b038a166004820152602481019190915260448101829052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb906064015f604051808303815f87803b158015620039bc575f80fd5b505af1158015620039cf573d5f803e3d5ffd5b505050505f80620039e08b62003c57565b91509150811580620039f25750898114155b1562003b175784546040517f70ca10bb0000000000000000000000000000000000000000000000000000000081526001600160a01b038b166004820152602481019190915260448101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb906064015f604051808303815f87803b15801562003a75575f80fd5b505af115801562003a88573d5f803e3d5ffd5b50506040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a2046616960448201527f6c656420746f2077726974652076616c75652e0000000000000000000000000060648201526084019150620038479050565b62003b228b62003d28565b5050505050505050505050565b606081600701805462003b429062005375565b90505f0362003ba857620030e28260010180548060200260200160405190810160405280929190818152602001828054801562003b9d57602002820191905f5260205f20905b81548152602001906001019080831162003b88575b505050505062003d33565b81600701805462003bb99062005375565b80601f016020809104026020016040519081016040528092919081815260200182805462003be79062005375565b801562003c365780601f1062003c0c5761010080835404028352916020019162003c36565b820191905f5260205f20905b81548152906001019060200180831162003c1857829003601f168201915b50505050509050919050565b5f62003c4f838362003dd7565b549392505050565b60028101545f908190819060e01b62003c708562003b2f565b60405160200162003c8392919062005885565b60408051601f198184030181529082905260048601549092505f9182916001600160a01b03169062003cb790859062005659565b5f60405180830381855afa9150503d805f811462003cf1576040519150601f19603f3d011682016040523d82523d5f602084013e62003cf6565b606091505b50915091505f62003d1a828860030154602062003d149190620058ce565b62004695565b929792965091945050505050565b620030be8162004728565b60605f8251602062003d469190620058ce565b67ffffffffffffffff81111562003d615762003d6162005288565b6040519080825280601f01601f19166020018201604052801562003d8c576020820181803683370190505b5090505f5b835181101562003dd0575f84828151811062003db15762003db1620058e8565b6020908102919091018101518382028501909101525060010162003d91565b5092915050565b6004820154600283015460038401545f926001600160a01b03169160e01b908362003e028762003b2f565b6001600160a01b0385165f908152602089815260408083207fffffffff0000000000000000000000000000000000000000000000000000000088168452825280832090519394509262003e5a9185918791016200568c565b60408051601f198184030181529181528151602092830120835290820192909252015f206003015460ff161562003f2357851562003e9d5762003e9d8762004728565b6001600160a01b0384165f908152602088815260408083207fffffffff00000000000000000000000000000000000000000000000000000000871684528252808320905190929162003ef49185918791016200568c565b6040516020818303038152906040528051906020012081526020019081526020015f20945050505050620030e2565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c6001600160a01b031663266cf1096040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562003f7e575f80fd5b505af115801562003f91573d5f803e3d5ffd5b505050505f62003fa18862003c57565b6040517f65bc94810000000000000000000000000000000000000000000000000000000081526001600160a01b03881660048201529092505f9150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024015f604051808303815f875af115801562004017573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526200404091908101906200599b565b50905080515f03620040d757604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162003847565b80515b5f620040e68262005a02565b91508110620044ea575f7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c6001600160a01b031663667f9d7089858581518110620041375762004137620058e8565b60200260200101516040518363ffffffff1660e01b8152600401620041719291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156200418d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620041b3919062005150565b9050806200421d577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a588848481518110620041f257620041f2620058e8565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b620042458b848481518110620042375762004237620058e8565b6020026020010151620047cd565b620042515750620040da565b60068b01545f90819060ff1615620042a5575f6200428c8e8787815181106200427e576200427e620058e8565b602002602001015162004a1d565b9094509250905080620042a35750505050620040da565b505b6001828201610100031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01811b8316811c868114620042e95750505050620040da565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c604051602001620043219291906200568c565b604051602081830303815290604052805190602001208989815181106200434c576200434c620058e8565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a16040518060800160405280878781518110620043c857620043c8620058e8565b60200260200101515f1c8152602001848152602001838152602001600115158152508e5f015f8d6001600160a01b03166001600160a01b031681526020019081526020015f205f8c7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f205f8a8c604051602001620044719291906200568c565b60408051808303601f1901815291815281516020928301208352828201939093529082015f2083518155908301516001820155908201516002820155606090910151600390910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055505050505b506001600160a01b0386165f90815260208a815260408083207fffffffff000000000000000000000000000000000000000000000000000000008916845282528083209051909291620045429187918991016200568c565b60408051601f198184030181529181528151602092830120835290820192909252015f206003015460ff16620045fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e0000000000000000000000000000000000606482015260840162003847565b87156200460d576200460d8962004728565b6001600160a01b0386165f90815260208a815260408083207fffffffff000000000000000000000000000000000000000000000000000000008916845282528083209051909291620046649187918991016200568c565b6040516020818303038152906040528051906020012081526020019081526020015f20965050505050505092915050565b5f805f6020855111620046aa578451620046ad565b60205b90505f5b818110156200471e57620046c7816008620058ce565b86620046d48388620055c4565b81518110620046e757620046e7620058e8565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c9290921791600101620046b1565b5090949350505050565b6004810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556002810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001690556200478b600182015f62004cf4565b5f600382018190556006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055620030be90600783019062004d11565b6004828101546040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b0390911691810191909152602481018290525f908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa15801562004851573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062004877919062005150565b90505f80620048868662003c57565b90925090505f81156200489a575f620048bc565b7fffffffffffffffffffffffffffffffffffffffffffffffff