@layerzerolabs/hyperliquid-composer
Version:
LayerZero Labs reference EVM OmniChain Fungible Token (OFT) implementation for Hyperliquid
1 lines • 396 kB
JSON
{"abi":[{"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":"ERC20","inputs":[],"outputs":[{"name":"coreIndexId","type":"uint64","internalType":"uint64"},{"name":"decimalDiff","type":"int8","internalType":"int8"},{"name":"assetBridgeAddress","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"ETH_EID","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"HLP_CORE_WRITER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HLP_EID","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"HLP_PRECOMPILE_READ_SPOT_BALANCE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HLP_PRECOMPILE_READ_USER_EXISTS","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":"coreIndexId","type":"uint64","internalType":"uint64"},{"name":"decimalDiff","type":"int8","internalType":"int8"},{"name":"assetBridgeAddress","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"coreSpotFromChainId","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"erc20","type":"uint64","internalType":"uint64"},{"name":"hype","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"eidFromChainId","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"ethEid","type":"uint32","internalType":"uint32"},{"name":"hlpEid","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":"recovery","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"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":"typeConversionTest","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract TypeConversionTest"}],"stateMutability":"view"},{"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":"0x600c8054600160ff199182168117909255601f8054909116909117905560248054600160a01b600160e01b0319166503782dace9d960b21b1790556025805466038d7ea4c680006001600160401b031990911617905560c06040526005608090815264757365724160d81b60a05262000078906200013c565b602880546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260058152643ab9b2b92160d91b6020820152620000bf906200013c565b602980546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260088152677265636f7665727960c01b602082015262000109906200013c565b602a80546001600160a01b0319166001600160a01b039290921691909117905534801562000135575f80fd5b5062000319565b5f62000148826200014f565b5092915050565b5f80826040516020016200016491906200028a565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015620001ce573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001f49190620002a7565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890620002329085908790600401620002d6565b5f604051808303815f87803b1580156200024a575f80fd5b505af11580156200025d573d5f803e3d5ffd5b50505050915091565b5f5b838110156200028257818101518382015260200162000268565b50505f910152565b5f82516200029d81846020870162000266565b9190910192915050565b5f60208284031215620002b8575f80fd5b81516001600160a01b0381168114620002cf575f80fd5b9392505050565b60018060a01b0383168152604060208201525f82518060408401526200030481606085016020870162000266565b601f01601f1916919091016060019392505050565b61fa2880620003275f395ff3fe608060405234801562000010575f80fd5b5060043610620002d4575f3560e01c8063929c0579116200018f578063c1d1ead811620000e3578063deb22e9a1162000093578063e93bfee61162000077578063e93bfee6146200070c578063fa7626d41462000716578063fbe021a11462000724575f80fd5b8063deb22e9a14620006ee578063e20c9f711462000702575f80fd5b8063cb1a295f11620000c7578063cb1a295f146200068a578063cc4aa204146200069e578063ddceafa914620006da575f80fd5b8063c1d1ead81462000652578063c203ccab146200066e575f80fd5b8063b0464fdc116200013f578063ba414fa61162000123578063ba414fa61462000600578063ba872679146200061b578063bb641b3e1462000625575f80fd5b8063b0464fdc14620005ec578063b5508aa914620005f6575f80fd5b80639b5215f611620001735780639b5215f614620005ba578063a09e743014620005ce578063a985a8ad14620005e2575f80fd5b8063929c05791462000583578063971ddf7914620005b0575f80fd5b8063553109e411620002475780637773fb7311620001f757806385226c8111620001db57806385226c8114620005225780639127ace2146200053b578063916a17c6146200056a575f80fd5b80637773fb7314620004fc5780637ecd9ac31462000506575f80fd5b806366d9a9a0116200022b57806366d9a9a0146200045e57806375258814146200047757806376e86e72146200048e575f80fd5b8063553109e414620004025780635f60057d146200040c575f80fd5b806325996dae11620002a3578063318f405a1162000287578063318f405a14620003c15780633e5e3c2314620003ee5780633f7286f414620003f8575f80fd5b806325996dae14620003695780632ade388014620003a8575f80fd5b80630a85348314620002d85780630a9254e4146200033a5780631015594a14620003465780631ed7831c1462000350575b5f80fd5b62000314620002e936600462005b57565b60276020525f908152604090205467ffffffffffffffff808216916801000000000000000090041682565b6040805167ffffffffffffffff9384168152929091166020830152015b60405180910390f35b6200034462000738565b005b6200034462000744565b6200035a62000b1a565b60405162000331919062005b6f565b602a54620003929074010000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff909116815260200162000331565b620003b262000b7c565b60405162000331919062005c0e565b602b54620003d5906001600160a01b031681565b6040516001600160a01b03909116815260200162000331565b6200035a62000cc4565b6200035a62000d24565b6200034462000d84565b620004406200041d36600462005b57565b60266020525f908152604090205463ffffffff8082169164010000000090041682565b6040805163ffffffff93841681529290911660208301520162000331565b620004686200119b565b60405162000331919062005d6b565b620003446200048836600462005e2a565b62001320565b602154620004ca9067ffffffffffffffff8116906801000000000000000081045f0b90690100000000000000000090046001600160a01b031683565b6040805167ffffffffffffffff90941684525f9290920b60208401526001600160a01b03169082015260600162000331565b620003d561081081565b620003d573333333333333333333333333333333333333333381565b6200052c62001482565b60405162000331919062005e48565b602554620005509067ffffffffffffffff1681565b60405167ffffffffffffffff909116815260200162000331565b6200057462001557565b60405162000331919062005ecc565b602a5462000392907801000000000000000000000000000000000000000000000000900463ffffffff1681565b6200034462001651565b602254620003d5906001600160a01b031681565b602354620003d5906001600160a01b031681565b6200034462001a47565b620005746200242c565b6200052c62002526565b6200060a620025fb565b604051901515815260200162000331565b620003d561080181565b602454620005509074010000000000000000000000000000000000000000900467ffffffffffffffff1681565b620003d573f9e1815f151024bde4b7c10bac10e8ba9f6b53e181565b620003d5733a73033c0b1407574c76bdbac67f126f6b4a9aa981565b602954620003d5906001600160a01b031681565b602054620004ca9067ffffffffffffffff8116906801000000000000000081045f0b90690100000000000000000090046001600160a01b031683565b602a54620003d5906001600160a01b031681565b602854620003d5906001600160a01b031681565b6200035a620026cf565b620003446200272f565b601f546200060a9060ff1681565b602454620003d5906001600160a01b031681565b620007426200311e565b565b602354604080517f574ad4a80000000000000000000000000000000000000000000000000000000081529051620007e9926001600160a01b03169163574ad4a89160048083019260209291908290030181865afa158015620007a8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620007ce919062005f5d565b73222222222222222222222222222222222222222262003daf565b5f466103e614620007fc57609662000800565b6104515b61ffff1690506200089260235f9054906101000a90046001600160a01b03166001600160a01b031663b20bffdc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200085b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000881919062005f85565b67ffffffffffffffff168262003e36565b602354604080517f71139d6c000000000000000000000000000000000000000000000000000000008152905162000926926001600160a01b0316916371139d6c9160048083019260209291908290030181865afa158015620008f6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200091c919062005fa3565b5f0b600a62003e8f565b602354604080517ff34ec5e00000000000000000000000000000000000000000000000000000000081529051620009cf926001600160a01b03169163f34ec5e09160048083019260209291908290030181865afa1580156200098a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620009b0919062005f5d565b602054690100000000000000000090046001600160a01b031662003daf565b602354604080517ffa69dc7b000000000000000000000000000000000000000000000000000000008152905162000a70926001600160a01b03169163fa69dc7b9160048083019260209291908290030181865afa15801562000a33573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000a59919062005f85565b60205467ffffffffffffffff918216911662003e36565b602354604080517fa754403e000000000000000000000000000000000000000000000000000000008152905162000b17926001600160a01b03169163a754403e9160048083019260209291908290030181865afa15801562000ad4573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000afa919062005fa3565b6020545f91820b9168010000000000000000909104900b62003e8f565b50565b6060601680548060200260200160405190810160405280929190818152602001828054801562000b7257602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831162000b53575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b8282101562000cbb575f84815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562000ca3578382905f5260205f2001805462000c119062005fc4565b80601f016020809104026020016040519081016040528092919081815260200182805462000c3f9062005fc4565b801562000c8e5780601f1062000c645761010080835404028352916020019162000c8e565b820191905f5260205f20905b81548152906001019060200180831162000c7057829003601f168201915b50505050508152602001906001019062000bf1565b50505050815250508152602001906001019062000b9f565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801562000b7257602002820191905f5260205f209081546001600160a01b0316815260019091019060200180831162000b53575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801562000b7257602002820191905f5260205f209081546001600160a01b0316815260019091019060200180831162000b53575050505050905090565b604080518082018252601f81527f68747470733a2f2f7270632e68797065726c69717569642e78797a2f65766d00602082015290517ff877cb19000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f877cb199062000e37906004016020808252601b908201527f5250435f55524c5f48595045524c49515549445f4d41494e4e45540000000000604082015260600190565b5f60405180830381865afa92505050801562000e7657506040513d5f823e601f3d908101601f1916820160405262000e739190810190620060a4565b60015b62000ec15762000ebb6040518060400160405280601d81526020017f5573696e672064656661756c74206d61696e6e6574205250432055524c00000081525062003ee8565b62000ec4565b90505b6040517f98680034000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063986800349062000f169084906004016200613e565b6020604051808303815f875af192505050801562000f53575060408051601f3d908101601f1916820190925262000f509181019062006152565b60015b620010505762000fcf6040518060400160405280601081526020017f466f726b696e67206d61696e6e65742000000000000000000000000000000000815250826040518060400160405280600781526020017f206661696c65640000000000000000000000000000000000000000000000000081525062003f5d565b6040517fdd82d13e00000000000000000000000000000000000000000000000000000000815260016004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063dd82d13e906024015f604051808303815f87803b15801562001033575f80fd5b505af115801562001046573d5f803e3d5ffd5b5050505062001052565b505b5f733a73033c0b1407574c76bdbac67f126f6b4a9aa933604051620010779062005aa3565b620010849291906200616a565b604051809103905ff0801580156200109e573d5f803e3d5ffd5b506020546040519192505f91839167ffffffffffffffff81169168010000000000000000909104840b90620010d39062005ab1565b6001600160a01b03909316835267ffffffffffffffff90911660208301525f0b6040820152606001604051809103905ff08015801562001115573d5f803e3d5ffd5b5090505f816001600160a01b031663b20bffdc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001156573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200117c919062005f85565b9050620011958167ffffffffffffffff16609662003e36565b50505050565b6060601b805480602002602001604051908101604052809291908181526020015f905b8282101562000cbb578382905f5260205f2090600202016040518060400160405290815f82018054620011f19062005fc4565b80601f01602080910402602001604051908101604052809291908181526020018280546200121f9062005fc4565b80156200126e5780601f1062001244576101008083540402835291602001916200126e565b820191905f5260205f20905b8154815290600101906020018083116200125057829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156200130757602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620012b35790505b50505050508152505081526020019060010190620011be565b6021546040517f312f619f0000000000000000000000000000000000000000000000000000000081526001600160a01b036901000000000000000000830416600482015267ffffffffffffffff918216602482015290821660448201526108019063312f619f906064015f604051808303815f87803b158015620013a2575f80fd5b505af1158015620013b5573d5f803e3d5ffd5b50506023546021546040517fa69610d10000000000000000000000000000000000000000000000000000000081526001600160a01b03690100000000000000000083048116600483015267ffffffffffffffff90921660248201525f94509116915063a69610d190604401606060405180830381865afa1580156200143c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001462919062006207565b5190506200147e67ffffffffffffffff80831690841662003e36565b5050565b6060601a805480602002602001604051908101604052809291908181526020015f905b8282101562000cbb578382905f5260205f20018054620014c59062005fc4565b80601f0160208091040260200160405190810160405280929190818152602001828054620014f39062005fc4565b8015620015425780601f10620015185761010080835404028352916020019162001542565b820191905f5260205f20905b8154815290600101906020018083116200152457829003601f168201915b505050505081526020019060010190620014a5565b6060601d805480602002602001604051908101604052809291908181526020015f905b8282101562000cbb575f8481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200163857602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620015e45790505b505050505081525050815260200190600101906200157a565b5f6040518060600160405280602781526020016200f9cc602791396040517ff877cb1900000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5250435f55524c5f48595045524c49515549445f544553544e455400000000006044820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f877cb19906064015f60405180830381865afa9250505080156200172757506040513d5f823e601f3d908101601f19168201604052620017249190810190620060a4565b60015b62001772576200176c6040518060400160405280601d81526020017f5573696e672064656661756c7420746573746e6574205250432055524c00000081525062003ee8565b62001775565b90505b6040517f98680034000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d90639868003490620017c79084906004016200613e565b6020604051808303815f875af192505050801562001804575060408051601f3d908101601f19168201909252620018019181019062006152565b60015b6200190157620018806040518060400160405280601081526020017f466f726b696e6720746573746e65742000000000000000000000000000000000815250826040518060400160405280600781526020017f206661696c65640000000000000000000000000000000000000000000000000081525062003f5d565b6040517fdd82d13e00000000000000000000000000000000000000000000000000000000815260016004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063dd82d13e906024015f604051808303815f87803b158015620018e4575f80fd5b505af1158015620018f7573d5f803e3d5ffd5b5050505062001903565b505b5f73f9e1815f151024bde4b7c10bac10e8ba9f6b53e133604051620019289062005aa3565b620019359291906200616a565b604051809103905ff0801580156200194f573d5f803e3d5ffd5b506020546040519192505f91839167ffffffffffffffff81169168010000000000000000909104840b90620019849062005ab1565b6001600160a01b03909316835267ffffffffffffffff90911660208301525f0b6040820152606001604051809103905ff080158015620019c6573d5f803e3d5ffd5b5090505f816001600160a01b031663b20bffdc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001a07573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001a2d919062005f85565b9050620011958167ffffffffffffffff1661045162003e36565b602954604080515f602082018190526001600160a01b03938416828401528251808303840181526060909201909252602a54602454602854929462001ae0938593740100000000000000000000000000000000000000009081900463ffffffff16930467ffffffffffffffff1691165b8660405160200162001acb92919062006262565b60405160208183030381529060405262003fdb565b60225460235460245492935062001b29926001600160a01b03928316929091169074010000000000000000000000000000000000000000900467ffffffffffffffff166200400f565b6022546023546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015262001be69291909116906370a08231906024015b602060405180830381865afa15801562001b95573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001bbb919062006152565b60245474010000000000000000000000000000000000000000900467ffffffffffffffff1662003e36565b6022546040517f86b9620d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906386b9620d906024015f604051808303815f87803b15801562001c56575f80fd5b505af115801562001c69573d5f803e3d5ffd5b5050602080546023546024546040517401000000000000000000000000000000000000000090910467ffffffffffffffff16815269010000000000000000009092046001600160a01b0390811695501692507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3602354604080517ffa69dc7b00000000000000000000000000000000000000000000000000000000815290515f926001600160a01b03169163fa69dc7b9160048083019260209291908290030181865afa15801562001d47573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001d6d919062005f85565b90505f60235f9054906101000a90046001600160a01b03166001600160a01b031663a754403e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001dc1573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001de7919062005fa3565b90505f60235f9054906101000a90046001600160a01b03166001600160a01b031663f34ec5e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001e3b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001e61919062005f5d565b602354602480546040517f1cd6669000000000000000000000000000000000000000000000000000000000815267ffffffffffffffff80891660048301525f88810b948301949094526001600160a01b038087166044840152740100000000000000000000000000000000000000009093041660648201529394509092911690631cd6669090608401606060405180830381865afa15801562001f06573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001f2c919062006289565b6020908101516029548254604080516001600160a01b039384168187015267ffffffffffffffff9283168183015291841660608084019190915281518084039091018152608083018083526023547f1f8164d9000000000000000000000000000000000000000000000000000000009091529151949650945f949190931692631f8164d992608480820193918290030181865afa15801562001fd0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001ff69190620062b8565b826040516020016200200a929190620062f9565b60408051808303601f19018152908290527f86b9620d00000000000000000000000000000000000000000000000000000000825273333333333333333333333333333333333333333360048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906386b9620d906024015f604051808303815f87803b15801562002091575f80fd5b505af1158015620020a4573d5f803e3d5ffd5b50506023546040516001600160a01b0390911692507f8c7f585fb295f7eb1e6aeb8fba61b23a4fe60beda405f0045073b185c74412e39150620020e99084906200613e565b60405180910390a26022546029546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201525f9291909116906370a0823190602401602060405180830381865afa15801562002159573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200217f919062006152565b602b546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015620021f2575f80fd5b505af115801562002205573d5f803e3d5ffd5b50506023546022546040517fd0a102600000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063d0a1026093506200225f92909116905f908d90339060040162006342565b5f604051808303815f87803b15801562002277575f80fd5b505af11580156200228a573d5f803e3d5ffd5b50505050737109709ecfa91a80626ff3989d68f67f5b1dd12d6001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015620022db575f80fd5b505af1158015620022ee573d5f803e3d5ffd5b50506022546023546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620023899450911691506370a08231906024015b602060405180830381865afa1580156200235c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002382919062006152565b5f62003e36565b6022546029546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620024219291909116906370a0823190602401602060405180830381865afa158015620023f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200241a919062006152565b8262003e36565b505050505050505050565b6060601c805480602002602001604051908101604052809291908181526020015f905b8282101562000cbb575f8481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200250d57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620024b95790505b505050505081525050815260200190600101906200244f565b60606019805480602002602001604051908101604052809291908181526020015f905b8282101562000cbb578382905f5260205f20018054620025699062005fc4565b80601f0160208091040260200160405190810160405280929190818152602001828054620025979062005fc4565b8015620025e65780601f10620025bc57610100808354040283529160200191620025e6565b820191905f5260205f20905b815481529060010190602001808311620025c857829003601f168201915b50505050508152602001906001019062002549565b6008545f9060ff161562002613575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa158015620026a2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620026c8919062006152565b1415905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562000b7257602002820191905f5260205f209081546001600160a01b0316815260019091019060200180831162000b53575050505050905090565b6025546029546040805167ffffffffffffffff93841660208201526001600160a01b03928316818301528151808203830181526060909101909152602a5460245460285492945f94620027ab94869463ffffffff7401000000000000000000000000000000000000000091829004169404909216911662001ab7565b602254602354602454929350620027f4926001600160a01b03928316929091169074010000000000000000000000000000000000000000900467ffffffffffffffff166200400f565b6022546023546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620028499291909116906370a082319060240162001b79565b6022546040517f86b9620d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906386b9620d906024015f604051808303815f87803b158015620028b9575f80fd5b505af1158015620028cc573d5f803e3d5ffd5b5050602080546023546024546040517401000000000000000000000000000000000000000090910467ffffffffffffffff16815269010000000000000000009092046001600160a01b0390811695501692507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3602354604080517ffa69dc7b00000000000000000000000000000000000000000000000000000000815290515f926001600160a01b03169163fa69dc7b9160048083019260209291908290030181865afa158015620029aa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620029d0919062005f85565b90505f60235f9054906101000a90046001600160a01b03166001600160a01b031663a754403e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002a24573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002a4a919062005fa3565b90505f60235f9054906101000a90046001600160a01b03166001600160a01b031663f34ec5e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002a9e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002ac4919062005f5d565b602354602480546040517f1cd6669000000000000000000000000000000000000000000000000000000000815267ffffffffffffffff80891660048301525f88810b948301949094526001600160a01b038087166044840152740100000000000000000000000000000000000000009093041660648201529394509092911690631cd6669090608401606060405180830381865afa15801562002b69573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002b8f919062006289565b6020908101516029548254604080516001600160a01b039384168187015267ffffffffffffffff9283168183015291841660608084019190915281518084039091018152608083018083526023547f1f8164d9000000000000000000000000000000000000000000000000000000009091529151949650945f949190931692631f8164d992608480820193918290030181865afa15801562002c33573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002c599190620062b8565b8260405160200162002c6d929190620062f9565b60408051808303601f19018152908290527f86b9620d00000000000000000000000000000000000000000000000000000000825273333333333333333333333333333333333333333360048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906386b9620d906024015f604051808303815f87803b15801562002cf4575f80fd5b505af115801562002d07573d5f803e3d5ffd5b50506023546040516001600160a01b0390911692507f8c7f585fb295f7eb1e6aeb8fba61b23a4fe60beda405f0045073b185c74412e3915062002d4c9084906200613e565b60405180910390a2602354604080517f574ad4a800000000000000000000000000000000000000000000000000000000815290515f926001600160a01b03169163574ad4a89160048083019260209291908290030181865afa15801562002db5573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002ddb919062005f5d565b6040517f86b9620d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906386b9620d906024015f604051808303815f87803b15801562002e4a575f80fd5b505af115801562002e5d573d5f803e3d5ffd5b505060235460255460405167ffffffffffffffff90911681526001600160a01b0390911692507f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874915060200160405180910390a2602154602954602b546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015269010000000000000000009093048116319291163190737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b15801562002f3d575f80fd5b505af115801562002f50573d5f803e3d5ffd5b5050505060235f9054906101000a90046001600160a01b03166001600160a01b031663d0a1026060255f9054906101000a900467ffffffffffffffff1667ffffffffffffffff1660225f9054906101000a90046001600160a01b03165f801b8e336040518663ffffffff1660e01b815260040162002fd2949392919062006342565b5f604051808303818588803b15801562002fea575f80fd5b505af115801562002ffd573d5f803e3d5ffd5b5050505050737109709ecfa91a80626ff3989d68f67f5b1dd12d6001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156200304f575f80fd5b505af115801562003062573d5f803e3d5ffd5b50506022546023546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620030b99450911691506370a082319060240162002340565b602154602554620030f891690100000000000000000090046001600160a01b03163190620030f29067ffffffffffffffff1685620063b7565b62003e36565b60295462003111906001600160a01b0316318262003e36565b5050505050505050505050565b604080518082018252619ce18152619daa60208083019182526103e65f818152602680845294517f113a6407f23900cfa1ecac751a02199ded2b9291b7b61d7b3fc27cad18581d048054955163ffffffff9283167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000978816176401000000009184168202179091558751808901895261765d815261769f8187019081526103e780865298875290517f354415ee754a59ff734517214ff8c4e3c5311a1050a5d2254382ba8bdca2307680549251918516929098169190911792160217909355845180860186526104da8152610451818401908152828552602780855291517f81f48bd84279ade89ca0299913d9e40d06f4ae51ee08f3cd6f968120d220e10d8054925167ffffffffffffffff9283167fffffffffffffffffffffffffffffffff0000000000000000000000000000000094851617680100000000000000009184168202179091558851808a0190995260eb89526096898701908152979096529190935294517fcb63f41d83a6606379654c30ef8a1498bf816351aa303c37a41e329cc6e7a103805495519187169590931694909417939094169091029190911790554614801590620032f25750466103e714155b156200354a576040517ff877cb1900000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5250435f55524c5f48595045524c49515549440000000000000000000000000060448201525f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f877cb19906064015f60405180830381865afa1580156200338e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052620033b79190810190620060a4565b6040517f98680034000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906398680034906200340c9084906004016200613e565b6020604051808303815f875af192505050801562003449575060408051601f3d908101601f19168201909252620034469181019062006152565b60015b6200354657620034c56040518060400160405280601081526020017f466f726b696e67206d61696e6e65742000000000000000000000000000000000815250826040518060400160405280600781526020017f206661696c65640000000000000000000000000000000000000000000000000081525062003f5d565b6040517fdd82d13e00000000000000000000000000000000000000000000000000000000815260016004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063dd82d13e906024015f604051808303815f87803b15801562003529575f80fd5b505af11580156200353c573d5f803e3d5ffd5b5050505062003548565b505b505b737109709ecfa91a80626ff3989d68f67f5b1dd12d6001600160a01b031663b4d6c7826108016040516200357e9062005abf565b604051809103905ff08015801562003598573d5f803e3d5ffd5b506001600160a01b0316803b806020016040519081016040528181525f908060200190933c6040518363ffffffff1660e01b8152600401620035dc929190620063cd565b5f604051808303815f87803b158015620035f4575f80fd5b505af115801562003607573d5f803e3d5ffd5b50505050737109709ecfa91a80626ff3989d68f67f5b1dd12d6001600160a01b031663b4d6c7826108106040516200363f9062005acd565b604051809103905ff08015801562003659573d5f803e3d5ffd5b506001600160a01b0316803b806020016040519081016040528181525f908060200190933c6040518363ffffffff1660e01b81526004016200369d929190620063cd565b5f604051808303815f87803b158015620036b5575f80fd5b505af1158015620036c8573d5f803e3d5ffd5b50505050466103e614620036f157733a73033c0b1407574c76bdbac67f126f6b4a9aa962003707565b73f9e1815f151024bde4b7c10bac10e8ba9f6b53e15b602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055465f8181526026602090815260408083208054602a80547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff811663ffffffff9384167401000000000000000000000000000000000000000002908117835593547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff9091167fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff9094169390931764010000000090930490911678010000000000000000000000000000000000000000000000000291909117905560278252918290205482516060810190935267ffffffffffffffff80821680855294680100000000000000009092041692918201906103e6146200385e57600a62003861565b60095b5f0b815260200162003873846200401d565b6001600160a01b039081169091528151602080548482015160409586015185166901000000000000000000027fffffff0000000000000000000000000000000000000000ffffffffffffffffff60ff90921668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000093841667ffffffffffffffff968716171782161783558551606081018752938716808552600a9385019390935273222222222222222222222222222222222222222293860193909352602180547c2222222222222222222222222222222222222222000000000000000000680a00000000000000009190931690931792909217909216919091179055602b54915191169033906200398f9062005aa3565b6200399c9291906200616a565b604051809103905ff080158015620039b6573d5f803e3d5ffd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216918217905560205460405167ffffffffffffffff8216916801000000000000000090045f0b9062003a1a9062005ab1565b6001600160a01b03909316835267ffffffffffffffff90911660208301525f0b6040820152606001604051809103905ff08015801562003a5c573d5f803e3d5ffd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405162003aa39062005adb565b604051809103905ff08015801562003abd573d5f803e3d5ffd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556020546040517f312f619f00000000000000000000000000000000000000000000000000000000815269010000000000000000008204909316600484015267ffffffffffffffff9081169183019190915260448201526108019063312f619f906064015f604051808303815f87803b15801562003b6d575f80fd5b505af115801562003b80573d5f803e3d5ffd5b50506021546040517f312f619f0000000000000000000000000000000000000000000000000000000081526001600160a01b036901000000000000000000830416600482015267ffffffffffffffff91821660248201526044810191909152610801925063312f619f91506064015f604051808303815f87803b15801562003c06575f80fd5b505af115801562003c19573d5f803e3d5ffd5b50506028546040517f2501ecee0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152600160248201526108109250632501ecee91506044015f604051808303815f87803b15801562003c82575f80fd5b505af115801562003c95573d5f803e3d5ffd5b50506029546040517f2501ecee0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152600160248201526108109250632501ecee91506044015f604051808303815f87803b15801562003cfe575f80fd5b505af115801562003d11573d5f803e3d5ffd5b5050602b546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015268056bc75e2d631000006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d91506044015f604051808303815f87803b15801562003d94575f80fd5b505af115801562003da7573d5f803e3d5ffd5b505050505050565b6040517f515361f60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f6906044015b5f6040518083038186803b15801562003e23575f80fd5b505afa15801562003da7573d5f803e3d5ffd5b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440162003e0c565b6040517ffe74f05b0000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063fe74f05b9060440162003e0c565b62000b178160405160240162003eff91906200613e565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526200404e565b62003fd683838360405160240162003f7893929190620063f8565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2ced7cef000000000000000000000000000000000000000000000000000000001790526200404e565b505050565b60608484848460405160200162003ff6949392919062006440565b6040516020818303038152906040529050949350505050565b62003fd68383835f62004059565b5f6200404867ffffffffffffffff8316732000000000000000000000000000000000000000620063b7565b92915050565b62000b1781620042e2565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a082310000000000000000000000000000000000000000000000000000000017905291515f92871691620040dc91620064bf565b5f60405180830381855afa9150503d805f811462004116576040519150601f19603f3d011682016040523d82523d5f602084013e6200411b565b606091505b509150505f8180602001905181019062004136919062006152565b9050620041898462004182876200417b7f70a082310000000000000000000000000000000000000000000000000000000062004174600d8d62004301565b9062004340565b9062004378565b90620043a3565b821562003da75760408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f18160ddd0000000000000000000000000000000000000000000000000000000017905290515f916001600160a01b03891691620042019190620064bf565b5f60405180830381855afa9150503d805f81146200423b576040519150601f19603f3d011682016040523d82523d5f602084013e62004240565b606091505b509150505f818060200190518101906200425b919062006152565b9050828610156200428657620042728684620064dc565b6200427e9082620064dc565b9050620042a1565b620042928387620064dc565b6200429e9082620063b7565b90505b620042d881620041827f18160ddd0000000000000000000000000000000000000000000000000000000062004174600d8d62004301565b5050505050505050565b5f6a636f6e736f6c652e6c6f6790505f80835160208501845afa505050565b6004820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555f825b9392505050565b6002820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e083901c1790555f8262004339565b6001808301805491820181555f908152602081206001600160a01b0384169201919091558262004339565b6200147e82826004820154600283015460038401546001600160a01b039092169160e09190911b905f620043d78662004908565b6001600160a01b0385165f908152602088815260408083207fffffffff000000000000000000000000000000000000000000000000000000008816845282528083209051939450926200442f918591879101620064f2565b60408051601f198184030181529181528151602092830120835290820192909252015f206003015460ff166200446d576200446b865f62004a1b565b505b6001600160a01b0384165f908152602087815260408083207fffffffff00000000000000000000000000000000000000000000000000000000871684528252808320905190918391620044c5918691889101620064f2565b6040516020818303038152906040528051906020012081526020019081526020015f2090505f81600201548260010154620045019190620063b7565b111562004639575f816002015482600101546200451f9190620063b7565b6200452d90610100620064dc565b6200453a9060026200664c565b6040517f6900a3ae0000000000000000000000000000000000000000000000000000000081526004810182905290915081881090737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae906024015f60405180830381865afa158015620045a8573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052620045d19190810190620060a4565b604051602001620045e3919062006659565b6040516020818303038152906040529062004636576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200462d91906200613e565b60405180910390fd5b50505b80546040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b038716600482015260248101919091525f90737109709ecfa