0 txs
0 calls
constructor
constructor(address _lzEndpoint, address _erc1155)
functions
baseGasLimit
viewfunction baseGasLimit() view returns (uint256)
DEFAULT_PAYLOAD_SIZE_LIMIT
viewfunction DEFAULT_PAYLOAD_SIZE_LIMIT() view returns (uint256)
erc1155
viewfunction erc1155() view returns (address)
estimateSendBatchFee
viewfunction estimateSendBatchFee(uint16 _dstChainId, bytes _toAddress, uint256[] _tokenIds, uint256[] _amounts, bool _useZro, bytes _adapterParams) view returns (uint256 nativeFee, uint256 zroFee)
estimateSendFee
viewfunction estimateSendFee(uint16 _dstChainId, bytes _toAddress, uint256 _tokenId, uint256 _amount, bool _useZro, bytes _adapterParams) view returns (uint256 nativeFee, uint256 zroFee)
failedMessages
viewfunction failedMessages(uint16, bytes, uint64) view returns (bytes32)
FUNCTION_TYPE_SEND_BATCH
viewfunction FUNCTION_TYPE_SEND_BATCH() view returns (uint16)
FUNCTION_TYPE_SEND
viewfunction FUNCTION_TYPE_SEND() view returns (uint16)
gasPerToken
viewfunction gasPerToken() view returns (uint256)
getConfig
viewfunction getConfig(uint16 _version, uint16 _chainId, address, uint256 _configType) view returns (bytes)
getTrustedRemoteAddress
viewfunction getTrustedRemoteAddress(uint16 _remoteChainId) view returns (bytes)
isTrustedRemote
viewfunction isTrustedRemote(uint16 _srcChainId, bytes _srcAddress) view returns (bool)
lzEndpoint
viewfunction lzEndpoint() view returns (address)
minDstGasLookup
viewfunction minDstGasLookup(uint16, uint16) view returns (uint256)
NO_EXTRA_GAS
viewfunction NO_EXTRA_GAS() view returns (uint256)
owner
viewfunction owner() view returns (address)
payloadSizeLimitLookup
viewfunction payloadSizeLimitLookup(uint16) view returns (uint256)
precrime
viewfunction precrime() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
tokenUris
viewfunction tokenUris(uint256) view returns (string)
trustedRemoteLookup
viewfunction trustedRemoteLookup(uint16) view returns (bytes)
useCustomAdapterParams
viewfunction useCustomAdapterParams() view returns (bool)
forceResumeReceive
nonpayablefunction forceResumeReceive(uint16 _srcChainId, bytes _srcAddress)
handleInvoke
nonpayablefunction handleInvoke(address _from, tuple, uint256 _ethValue, uint256, uint256[] _tokenIds, uint256[] _tokenQuantities, bytes _data)
lzReceive
nonpayablefunction lzReceive(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload)
nonblockingLzReceive
nonpayablefunction nonblockingLzReceive(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload)
onERC1155BatchReceived
nonpayablefunction onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) returns (bytes4)
onERC1155Received
nonpayablefunction onERC1155Received(address, address, uint256, uint256, bytes) returns (bytes4)
renounceOwnership
nonpayablefunction renounceOwnership()
retryMessage
payablefunction retryMessage(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload) payable
sendBatchFrom
payablefunction sendBatchFrom(address _from, uint16 _dstChainId, bytes _toAddress, uint256[] _tokenIds, uint256[] _amounts, address _refundAddress, address _zroPaymentAddress, bytes _adapterParams) payable
sendFrom
payablefunction sendFrom(address _from, uint16 _dstChainId, bytes _toAddress, uint256 _tokenId, uint256 _amount, address _refundAddress, address _zroPaymentAddress, bytes _adapterParams) payable
setBaseGasLimit
nonpayablefunction setBaseGasLimit(uint256 _baseGasLimit)
setConfig
nonpayablefunction setConfig(uint16 _version, uint16 _chainId, uint256 _configType, bytes _config)
setGasPerToken
nonpayablefunction setGasPerToken(uint256 _gasPerToken)
setMinDstGas
nonpayablefunction setMinDstGas(uint16 _dstChainId, uint16 _packetType, uint256 _minGas)
setPayloadSizeLimit
nonpayablefunction setPayloadSizeLimit(uint16 _dstChainId, uint256 _size)
setPrecrime
nonpayablefunction setPrecrime(address _precrime)
setReceiveVersion
nonpayablefunction setReceiveVersion(uint16 _version)
setSendVersion
nonpayablefunction setSendVersion(uint16 _version)
setTokenUris
nonpayablefunction setTokenUris(uint256[] _tokenIds, string[] _tokenUris)
setTrustedRemote
nonpayablefunction setTrustedRemote(uint16 _remoteChainId, bytes _path)
setTrustedRemoteAddress
nonpayablefunction setTrustedRemoteAddress(uint16 _remoteChainId, bytes _remoteAddress)
setUseCustomAdapterParams
nonpayablefunction setUseCustomAdapterParams(bool _useCustomAdapterParams)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
BaseGasLimitSet
event BaseGasLimitSet(uint256 baseGasLimit)
GasPerTokenSet
event GasPerTokenSet(uint256 gasPerToken)
MessageFailed
event MessageFailed(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload, bytes _reason)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
ReceiveBatchFromChain
event ReceiveBatchFromChain(uint16 indexed _srcChainId, bytes indexed _srcAddress, address indexed _toAddress, uint256[] _tokenIds, uint256[] _amounts)
ReceiveFromChain
event ReceiveFromChain(uint16 indexed _srcChainId, bytes indexed _srcAddress, address indexed _toAddress, uint256 _tokenId, uint256 _amount)
RetryMessageSuccess
event RetryMessageSuccess(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes32 _payloadHash)
SendBatchToChain
event SendBatchToChain(uint16 indexed _dstChainId, address indexed _from, bytes indexed _toAddress, uint256[] _tokenIds, uint256[] _amounts)
SendToChain
event SendToChain(uint16 indexed _dstChainId, address indexed _from, bytes indexed _toAddress, uint256 _tokenId, uint256 _amount)
SetMinDstGas
event SetMinDstGas(uint16 _dstChainId, uint16 _type, uint256 _minDstGas)
SetPrecrime
event SetPrecrime(address precrime)
SetTrustedRemote
event SetTrustedRemote(uint16 _remoteChainId, bytes _path)
SetTrustedRemoteAddress
event SetTrustedRemoteAddress(uint16 _remoteChainId, bytes _remoteAddress)
SetUseCustomAdapterParams
event SetUseCustomAdapterParams(bool _useCustomAdapterParams)
TokenUrisSet
event TokenUrisSet(uint256[] tokenIds, string[] tokenUris)
errors
InvalidCaller
error InvalidCaller()
creation bytecode
0x60c0604052620249f060085561c3506009553480156200001e57600080fd5b5060405162003fd138038062003fd18339810160408190526200004191620000d7565b8180806200004f336200006e565b6001600160a01b039081166080529290921660a0525062000116915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620000d457600080fd5b50565b60008060408385031215620000eb57600080fd5b8251620000f881620000be565b60208401519092506200010b81620000be565b809150509250929050565b60805160a051613e336200019e600039600081816107bb01528181610e9201528181610f55015281816123c6015281816124930152818161251501526127890152600081816106d9015281816108c601528181610b4001528181610be801528181610d0a015281816114c6015281816115c801528181611a5301526120730152613e336000f3fe6080604052600436106102755760003560e01c80638da5cb5b1161014f578063bc197c81116100c1578063eab45d9c1161007a578063eab45d9c146107fd578063eb8d72b71461081d578063ed629c5c1461083d578063f23a6e6114610857578063f2fde38b14610883578063f5ecbdbc146108a357600080fd5b8063bc197c811461071b578063c446183414610760578063cbed8b9c14610776578063d1deba1f14610796578063d56022d7146107a9578063df2a5b3b146107dd57600080fd5b8063a6c3d16511610113578063a6c3d16514610652578063ae882b6514610672578063af3fb21c14610692578063b2535663146106a7578063b353aaa7146106c7578063baf3292d146106fb57600080fd5b80638da5cb5b146105aa5780638df66e34146105dc578063950c8a74146105f257806395a5ca34146106125780639f38369a1461063257600080fd5b80634ab4e687116101e8578063715018a6116101ac578063715018a6146104bb5780637533d788146104d05780637af6b34d146104fd57806380f9ab6c1461051d5780638608e5f81461053d5780638cfd8f5c1461057257600080fd5b80634ab4e687146104065780634db8226a146104195780635b8c41e61461042c57806366ad5c8a1461047b5780636d5778661461049b57600080fd5b8063149e3e1f1161023a578063149e3e1f14610338578063178a54e1146103605780633d8b38f6146103845780633f1f4fa4146103a457806342d65a8d146103d157806344770515146103f157600080fd5b80621d35671461028157806301ffc9a7146102a357806307e0db17146102d85780630df37483146102f857806310ddb1371461031857600080fd5b3661027c57005b600080fd5b34801561028d57600080fd5b506102a161029c366004612915565b6108c3565b005b3480156102af57600080fd5b506102c36102be3660046129aa565b610af4565b60405190151581526020015b60405180910390f35b3480156102e457600080fd5b506102a16102f33660046129d4565b610b1f565b34801561030457600080fd5b506102a16103133660046129f1565b610ba8565b34801561032457600080fd5b506102a16103333660046129d4565b610bc7565b34801561034457600080fd5b5061034d600281565b60405161ffff90911681526020016102cf565b34801561036c57600080fd5b5061037660095481565b6040519081526020016102cf565b34801561039057600080fd5b506102c361039f366004612a1d565b610c1f565b3480156103b057600080fd5b506103766103bf3660046129d4565b60036020526000908152604090205481565b3480156103dd57600080fd5b506102a16103ec366004612a1d565b610ceb565b3480156103fd57600080fd5b50610376600081565b6102a1610414366004612be5565b610d71565b6102a1610427366004612cd4565b610d8b565b34801561043857600080fd5b50610376610447366004612d7c565b6005602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205481565b34801561048757600080fd5b506102a1610496366004612915565b610dab565b3480156104a757600080fd5b506102a16104b6366004612e1f565b610e87565b3480156104c757600080fd5b506102a16110b7565b3480156104dc57600080fd5b506104f06104eb3660046129d4565b6110cb565b6040516102cf9190612f46565b34801561050957600080fd5b506102a1610518366004612f59565b611165565b34801561052957600080fd5b506102a1610538366004612f72565b6111a9565b34801561054957600080fd5b5061055d610558366004613075565b611260565b604080519283526020830191909152016102cf565b34801561057e57600080fd5b5061037661058d366004613111565b600260209081526000928352604080842090915290825290205481565b3480156105b657600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102cf565b3480156105e857600080fd5b5061037660085481565b3480156105fe57600080fd5b506004546105c4906001600160a01b031681565b34801561061e57600080fd5b506102a161062d366004612f59565b611290565b34801561063e57600080fd5b506104f061064d3660046129d4565b6112cd565b34801561065e57600080fd5b506102a161066d366004612a1d565b6113e3565b34801561067e57600080fd5b506104f061068d366004612f59565b61146c565b34801561069e57600080fd5b5061034d600181565b3480156106b357600080fd5b5061055d6106c236600461314a565b611485565b3480156106d357600080fd5b506105c47f000000000000000000000000000000000000000000000000000000000000000081565b34801561070757600080fd5b506102a16107163660046131fc565b611553565b34801561072757600080fd5b50610747610736366004613219565b63bc197c8160e01b95945050505050565b6040516001600160e01b031990911681526020016102cf565b34801561076c57600080fd5b5061037661271081565b34801561078257600080fd5b506102a16107913660046132c6565b6115a9565b6102a16107a4366004612915565b61163e565b3480156107b557600080fd5b506105c47f000000000000000000000000000000000000000000000000000000000000000081565b3480156107e957600080fd5b506102a16107f8366004613338565b611854565b34801561080957600080fd5b506102a1610818366004613379565b611906565b34801561082957600080fd5b506102a1610838366004612a1d565b61194f565b34801561084957600080fd5b506006546102c39060ff1681565b34801561086357600080fd5b50610747610872366004613396565b63f23a6e6160e01b95945050505050565b34801561088f57600080fd5b506102a161089e3660046131fc565b6119a9565b3480156108af57600080fd5b506104f06108be3660046133fe565b611a22565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146109405760405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c6572000060448201526064015b60405180910390fd5b61ffff86166000908152600160205260408120805461095e9061344f565b80601f016020809104026020016040519081016040528092919081815260200182805461098a9061344f565b80156109d75780601f106109ac576101008083540402835291602001916109d7565b820191906000526020600020905b8154815290600101906020018083116109ba57829003601f168201915b505050505090508051868690501480156109f2575060008151115b8015610a1a575080516020820120604051610a109088908890613489565b6040518091039020145b610a755760405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608401610937565b610aeb8787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611ad392505050565b50505050505050565b60006001600160e01b03198216630271189760e51b1480610b195750610b1982611b4c565b92915050565b610b27611b71565b6040516307e0db1760e01b815261ffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307e0db17906024015b600060405180830381600087803b158015610b8d57600080fd5b505af1158015610ba1573d6000803e3d6000fd5b5050505050565b610bb0611b71565b61ffff909116600090815260036020526040902055565b610bcf611b71565b6040516310ddb13760e01b815261ffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906310ddb13790602401610b73565b61ffff831660009081526001602052604081208054829190610c409061344f565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6c9061344f565b8015610cb95780601f10610c8e57610100808354040283529160200191610cb9565b820191906000526020600020905b815481529060010190602001808311610c9c57829003601f168201915b505050505090508383604051610cd0929190613489565b60405180910390208180519060200120149150509392505050565b610cf3611b71565b6040516342d65a8d60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906342d65a8d90610d43908690869086906004016134c2565b600060405180830381600087803b158015610d5d57600080fd5b505af1158015610aeb573d6000803e3d6000fd5b610d818888888888888888611bcb565b5050505050505050565b610d81888888610d9a89611db2565b610da389611db2565b888888611bcb565b333014610e095760405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608401610937565b610e7f8686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611dfd92505050565b505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ed0576040516348f5c3ed60e01b815260040160405180910390fd5b60008082806020019051810190610ee791906134e0565b6040516001600160601b0319606084901b166020820152919350915060009060340160408051601f1981840301815290829052610f2e918a908a908a908a90602001613541565b60408051601f1981840301815290829052631ac8311560e21b825291506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636b20c45490610f929030908c908c908c908c90600401613588565b600060405180830381600087803b158015610fac57600080fd5b505af1158015610fc0573d6000803e3d6000fd5b5050505061102182828e600060018d8d9050600954610fdf91906135d6565b600854610fec91906135ed565b60405160f09290921b6001600160f01b031916602083015260228201526042016040516020818303038152906040528f611f4a565b6040516001600160601b0319606085901b16602082015260340160408051601f198184030181529082905261105591613600565b60405180910390208c6001600160a01b03168361ffff167fddd15f7cfbd674ac2096d598f1650367f8a8bd72b4e3abd85591099ea3b57e338b8b8b8b6040516110a1949392919061361c565b60405180910390a4505050505050505050505050565b6110bf611b71565b6110c960006120ef565b565b600160205260009081526040902080546110e49061344f565b80601f01602080910402602001604051908101604052809291908181526020018280546111109061344f565b801561115d5780601f106111325761010080835404028352916020019161115d565b820191906000526020600020905b81548152906001019060200180831161114057829003601f168201915b505050505081565b61116d611b71565b60088190556040518181527f4130b077d13f52d6dd21e085c8900fb90b12eee6d0f50d9c16996519ef08840e906020015b60405180910390a150565b6111b1611b71565b60005b8251811015611222578181815181106111cf576111cf61364e565b6020026020010151600760008584815181106111ed576111ed61364e565b60200260200101518152602001908152602001600020908161120f91906136aa565b508061121a81613769565b9150506111b4565b507fd6a703c1721243ca54462e41d440edf5b87b2ed8d910287c37d458ea3f53e6ba8282604051611254929190613812565b60405180910390a15050565b600080611281888861127189611db2565b61127a89611db2565b8888611485565b91509150965096945050505050565b611298611b71565b60098190556040518181527f87d299be79f88fcf890fa47473b3688eea6ea1bd54fae019b4d929edfbc715d99060200161119e565b61ffff81166000908152600160205260408120805460609291906112f09061344f565b80601f016020809104026020016040519081016040528092919081815260200182805461131c9061344f565b80156113695780601f1061133e57610100808354040283529160200191611369565b820191906000526020600020905b81548152906001019060200180831161134c57829003601f168201915b5050505050905080516000036113c15760405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606401610937565b6113dc6000601483516113d49190613837565b83919061213f565b9392505050565b6113eb611b71565b8181306040516020016114009392919061384a565b60408051601f1981840301815291815261ffff851660009081526001602052209061142b90826136aa565b507f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce83838360405161145f939291906134c2565b60405180910390a1505050565b600760205260009081526040902080546110e49061344f565b600080600087878760405160200161149f9392919061386b565b60408051601f198184030181529082905263040a7bb160e41b825291506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340a7bb1090611503908c90309086908b908b906004016138ae565b6040805180830381865afa15801561151f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154391906138f6565b9250925050965096945050505050565b61155b611b71565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b9060200161119e565b6115b1611b71565b6040516332fb62e760e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cbed8b9c90611605908890889088908890889060040161391a565b600060405180830381600087803b15801561161f57600080fd5b505af1158015611633573d6000803e3d6000fd5b505050505050505050565b61ffff861660009081526005602052604080822090516116619088908890613489565b90815260408051602092819003830190206001600160401b038716600090815292529020549050806116e15760405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608401610937565b8083836040516116f2929190613489565b6040518091039020146117515760405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608401610937565b61ffff871660009081526005602052604080822090516117749089908990613489565b90815260408051602092819003830181206001600160401b038916600090815290845282902093909355601f8801829004820283018201905286825261180c918991899089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611dfd92505050565b7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e58787878785604051611843959493929190613948565b60405180910390a150505050505050565b61185c611b71565b600081116118a45760405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606401610937565b61ffff83811660008181526002602090815260408083209487168084529482529182902085905581519283528201929092529081018290527f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09060600161145f565b61190e611b71565b6006805460ff19168215159081179091556040519081527f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a49060200161119e565b611957611b71565b61ffff83166000908152600160205260409020611975828483613983565b507ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab83838360405161145f939291906134c2565b6119b1611b71565b6001600160a01b038116611a165760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610937565b611a1f816120ef565b50565b604051633d7b2f6f60e21b815261ffff808616600483015284166024820152306044820152606481018290526060907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f5ecbdbc90608401600060405180830381865afa158015611aa2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611aca9190810190613a8f565b95945050505050565b600080611b365a60966366ad5c8a60e01b89898989604051602401611afb9493929190613ac3565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091523092919061224c565b9150915081610e7f57610e7f86868686856122d6565b60006001600160e01b03198216630271189760e51b1480610b195750610b1982612373565b6000546001600160a01b031633146110c95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610937565b611bd888888888886123a8565b6000868686604051602001611bef9392919061386b565b60405160208183030381529060405290508551600103611cf45760065460ff1615611c2757611c22886001846000612550565b611c46565b815115611c465760405162461bcd60e51b815260040161093790613b01565b611c54888286868634611f4a565b86604051611c629190613600565b6040518091039020896001600160a01b03168961ffff167f968b0d61ebcf43e5d76ed87bd2c4ee2f22b4969b9f4ca49e3373c025eddd5eeb89600081518110611cad57611cad61364e565b602002602001015189600081518110611cc857611cc861364e565b6020026020010151604051611ce7929190918252602082015260400190565b60405180910390a4611633565b6001865111156116335760065460ff1615611d1c57611d17886002846000612550565b611d3b565b815115611d3b5760405162461bcd60e51b815260040161093790613b01565b611d49888286868634611f4a565b86604051611d579190613600565b6040518091039020896001600160a01b03168961ffff167fddd15f7cfbd674ac2096d598f1650367f8a8bd72b4e3abd85591099ea3b57e338989604051611d9f929190613b45565b60405180910390a4505050505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611dec57611dec61364e565b602090810291909101015292915050565b600080600083806020019051810190611e169190613bc5565b60148301519295509093509150611e2f8882858561262f565b8251600103611ed857806001600160a01b031687604051611e509190613600565b60405180910390208961ffff167f1bf64e58d19fc43de4c44b3d1bb1fae313979af831a7a39f3297564294329f0f86600081518110611e9157611e9161364e565b602002602001015186600081518110611eac57611eac61364e565b6020026020010151604051611ecb929190918252602082015260400190565b60405180910390a4610d81565b600183511115610d8157806001600160a01b031687604051611efa9190613600565b60405180910390208961ffff167f1ae08edbbcd7baa8d064835de8593ce16b313414525ac89534e349f4da7926e48686604051611f38929190613b45565b60405180910390a45050505050505050565b61ffff861660009081526001602052604081208054611f689061344f565b80601f0160208091040260200160405190810160405280929190818152602001828054611f949061344f565b8015611fe15780601f10611fb657610100808354040283529160200191611fe1565b820191906000526020600020905b815481529060010190602001808311611fc457829003601f168201915b5050505050905080516000036120525760405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608401610937565b61205d8787516127c4565b60405162c5803160e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c58031009084906120b4908b9086908c908c908c908c90600401613c4c565b6000604051808303818588803b1580156120cd57600080fd5b505af11580156120e1573d6000803e3d6000fd5b505050505050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60608161214d81601f6135ed565b101561218c5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610937565b61219682846135ed565b845110156121da5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610937565b6060821580156121f95760405191506000825260208201604052612243565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561223257805183526020928301920161221a565b5050858452601f01601f1916604052505b50949350505050565b6000606060008060008661ffff166001600160401b0381111561227157612271612a91565b6040519080825280601f01601f19166020018201604052801561229b576020820181803683370190505b50905060008087516020890160008d8df191503d9250868311156122bd578692505b828152826000602083013e909890975095505050505050565b8180519060200120600560008761ffff1661ffff168152602001908152602001600020856040516123079190613600565b9081526040805191829003602090810183206001600160401b0388166000908152915220919091557fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c906123649087908790879087908790613cb3565b60405180910390a15050505050565b60006001600160e01b031982166319abbbbb60e11b1480610b1957506301ffc9a760e01b6001600160e01b0319831614610b19565b6001600160a01b038516331480159061245e57506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e985e9c586336040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245c9190613d05565b155b1561247c576040516348f5c3ed60e01b815260040160405180910390fd5b604051631759616b60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632eb2c2d6906124ce908890309087908790600401613d22565b600060405180830381600087803b1580156124e857600080fd5b505af11580156124fc573d6000803e3d6000fd5b5050604051631ac8311560e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250636b20c454915061160590309086908690600401613d7d565b600061255b8361283a565b61ffff80871660009081526002602090815260408083209389168352929052908120549192509061258d9084906135ed565b9050600081116125df5760405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606401610937565b80821015610e7f5760405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606401610937565b600082516001600160401b0381111561264a5761264a612a91565b60405190808252806020026020018201604052801561267d57816020015b60608152602001906001900390816126685790505b50905060005b835181101561277157600760008583815181106126a2576126a261364e565b6020026020010151815260200190815260200160002080546126c39061344f565b80601f01602080910402602001604051908101604052809291908181526020018280546126ef9061344f565b801561273c5780601f106127115761010080835404028352916020019161273c565b820191906000526020600020905b81548152906001019060200180831161271f57829003601f168201915b50505050508282815181106127535761275361364e565b6020026020010181905250808061276990613769565b915050612683565b50604051632e55c7a160e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b9571e8490611605908790879087908790600401613db3565b61ffff8216600090815260036020526040812054908190036127e557506127105b808211156128355760405162461bcd60e51b815260206004820181905260248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152606401610937565b505050565b600060228251101561288e5760405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606401610937565b506022015190565b61ffff81168114611a1f57600080fd5b80356128b181612896565b919050565b60008083601f8401126128c857600080fd5b5081356001600160401b038111156128df57600080fd5b6020830191508360208285010111156128f757600080fd5b9250929050565b80356001600160401b03811681146128b157600080fd5b6000806000806000806080878903121561292e57600080fd5b863561293981612896565b955060208701356001600160401b038082111561295557600080fd5b6129618a838b016128b6565b909750955085915061297560408a016128fe565b9450606089013591508082111561298b57600080fd5b5061299889828a016128b6565b979a9699509497509295939492505050565b6000602082840312156129bc57600080fd5b81356001600160e01b0319811681146113dc57600080fd5b6000602082840312156129e657600080fd5b81356113dc81612896565b60008060408385031215612a0457600080fd5b8235612a0f81612896565b946020939093013593505050565b600080600060408486031215612a3257600080fd5b8335612a3d81612896565b925060208401356001600160401b03811115612a5857600080fd5b612a64868287016128b6565b9497909650939450505050565b6001600160a01b0381168114611a1f57600080fd5b80356128b181612a71565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612acf57612acf612a91565b604052919050565b60006001600160401b03821115612af057612af0612a91565b50601f01601f191660200190565b6000612b11612b0c84612ad7565b612aa7565b9050828152838383011115612b2557600080fd5b828260208301376000602084830101529392505050565b600082601f830112612b4d57600080fd5b6113dc83833560208501612afe565b60006001600160401b03821115612b7557612b75612a91565b5060051b60200190565b600082601f830112612b9057600080fd5b81356020612ba0612b0c83612b5c565b82815260059290921b84018101918181019086841115612bbf57600080fd5b8286015b84811015612bda5780358352918301918301612bc3565b509695505050505050565b600080600080600080600080610100898b031215612c0257600080fd5b612c0b89612a86565b9750612c1960208a016128a6565b965060408901356001600160401b0380821115612c3557600080fd5b612c418c838d01612b3c565b975060608b0135915080821115612c5757600080fd5b612c638c838d01612b7f565b965060808b0135915080821115612c7957600080fd5b612c858c838d01612b7f565b9550612c9360a08c01612a86565b9450612ca160c08c01612a86565b935060e08b0135915080821115612cb757600080fd5b50612cc48b828c01612b3c565b9150509295985092959890939650565b600080600080600080600080610100898b031215612cf157600080fd5b8835612cfc81612a71565b97506020890135612d0c81612896565b965060408901356001600160401b0380821115612d2857600080fd5b612d348c838d01612b3c565b975060608b0135965060808b0135955060a08b01359150612d5482612a71565b90935060c08a013590612d6682612a71565b90925060e08a01359080821115612cb757600080fd5b600080600060608486031215612d9157600080fd5b8335612d9c81612896565b925060208401356001600160401b03811115612db757600080fd5b612dc386828701612b3c565b925050612dd2604085016128fe565b90509250925092565b60008083601f840112612ded57600080fd5b5081356001600160401b03811115612e0457600080fd5b6020830191508360208260051b85010111156128f757600080fd5b6000806000806000806000806000898b03610140811215612e3f57600080fd5b8a35612e4a81612a71565b99506080601f1982011215612e5e57600080fd5b5060208a01975060a08a0135965060c08a0135955060e08a01356001600160401b0380821115612e8d57600080fd5b612e998d838e01612ddb565b90975095506101008c0135915080821115612eb357600080fd5b612ebf8d838e01612ddb565b90955093506101208c0135915080821115612ed957600080fd5b50612ee68c828d01612b3c565b9150509295985092959850929598565b60005b83811015612f11578181015183820152602001612ef9565b50506000910152565b60008151808452612f32816020860160208601612ef6565b601f01601f19169290920160200192915050565b6020815260006113dc6020830184612f1a565b600060208284031215612f6b57600080fd5b5035919050565b6000806040808486031215612f8657600080fd5b83356001600160401b0380821115612f9d57600080fd5b612fa987838801612b7f565b9450602091508186013581811115612fc057600080fd5b8601601f81018813612fd157600080fd5b8035612fdf612b0c82612b5c565b81815260059190911b8201840190848101908a831115612ffe57600080fd5b8584015b8381101561304a5780358681111561301a5760008081fd5b8501603f81018d1361302c5760008081fd5b61303c8d898301358b8401612afe565b845250918601918601613002565b50809750505050505050509250929050565b8015158114611a1f57600080fd5b80356128b18161305c565b60008060008060008060c0878903121561308e57600080fd5b863561309981612896565b955060208701356001600160401b03808211156130b557600080fd5b6130c18a838b01612b3c565b96506040890135955060608901359450608089013591506130e18261305c565b90925060a088013590808211156130f757600080fd5b5061310489828a01612b3c565b9150509295509295509295565b6000806040838503121561312457600080fd5b823561312f81612896565b9150602083013561313f81612896565b809150509250929050565b60008060008060008060c0878903121561316357600080fd5b61316c876128a6565b955060208701356001600160401b038082111561318857600080fd5b6131948a838b01612b3c565b965060408901359150808211156131aa57600080fd5b6131b68a838b01612b7f565b955060608901359150808211156131cc57600080fd5b6131d88a838b01612b7f565b94506131e660808a0161306a565b935060a08901359150808211156130f757600080fd5b60006020828403121561320e57600080fd5b81356113dc81612a71565b600080600080600060a0868803121561323157600080fd5b853561323c81612a71565b9450602086013561324c81612a71565b935060408601356001600160401b038082111561326857600080fd5b61327489838a01612b7f565b9450606088013591508082111561328a57600080fd5b61329689838a01612b7f565b935060808801359150808211156132ac57600080fd5b506132b988828901612b3c565b9150509295509295909350565b6000806000806000608086880312156132de57600080fd5b85356132e981612896565b945060208601356132f981612896565b93506040860135925060608601356001600160401b0381111561331b57600080fd5b613327888289016128b6565b969995985093965092949392505050565b60008060006060848603121561334d57600080fd5b833561335881612896565b9250602084013561336881612896565b929592945050506040919091013590565b60006020828403121561338b57600080fd5b81356113dc8161305c565b600080600080600060a086880312156133ae57600080fd5b85356133b981612a71565b945060208601356133c981612a71565b9350604086013592506060860135915060808601356001600160401b038111156133f257600080fd5b6132b988828901612b3c565b6000806000806080858703121561341457600080fd5b843561341f81612896565b9350602085013561342f81612896565b9250604085013561343f81612a71565b9396929550929360600135925050565b600181811c9082168061346357607f821691505b60208210810361348357634e487b7160e01b600052602260045260246000fd5b50919050565b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b61ffff84168152604060208201526000611aca604083018486613499565b600080604083850312156134f357600080fd5b82516134fe81612a71565b602084015190925061313f81612896565b81835260006001600160fb1b0383111561352857600080fd5b8260051b80836020870137939093016020019392505050565b6060815260006135546060830188612f1a565b828103602084015261356781878961350f565b9050828103604084015261357c81858761350f565b98975050505050505050565b6001600160a01b03861681526060602082018190526000906135ad908301868861350f565b828103604084015261357c81858761350f565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610b1957610b196135c0565b80820180821115610b1957610b196135c0565b60008251613612818460208701612ef6565b9190910192915050565b60408152600061363060408301868861350f565b828103602084015261364381858761350f565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b601f82111561283557600081815260208120601f850160051c8101602086101561368b5750805b601f850160051c820191505b81811015610e7f57828155600101613697565b81516001600160401b038111156136c3576136c3612a91565b6136d7816136d1845461344f565b84613664565b602080601f83116001811461370c57600084156136f45750858301515b600019600386901b1c1916600185901b178555610e7f565b600085815260208120601f198616915b8281101561373b5788860151825594840194600190910190840161371c565b50858210156137595787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006001820161377b5761377b6135c0565b5060010190565b600081518084526020808501945080840160005b838110156137b257815187529582019590820190600101613796565b509495945050505050565b600081518084526020808501808196508360051b8101915082860160005b858110156138055782840389526137f3848351612f1a565b988501989350908401906001016137db565b5091979650505050505050565b6040815260006138256040830185613782565b8281036020840152611aca81856137bd565b81810381811115610b1957610b196135c0565b8284823760609190911b6001600160601b0319169101908152601401919050565b60608152600061387e6060830186612f1a565b82810360208401526138908186613782565b905082810360408401526138a48185613782565b9695505050505050565b61ffff861681526001600160a01b038516602082015260a0604082018190526000906138dc90830186612f1a565b8415156060840152828103608084015261357c8185612f1a565b6000806040838503121561390957600080fd5b505080516020909101519092909150565b600061ffff808816835280871660208401525084604083015260806060830152613643608083018486613499565b61ffff86168152608060208201526000613966608083018688613499565b6001600160401b0394909416604083015250606001529392505050565b6001600160401b0383111561399a5761399a612a91565b6139ae836139a8835461344f565b83613664565b6000601f8411600181146139e257600085156139ca5750838201355b600019600387901b1c1916600186901b178355610ba1565b600083815260209020601f19861690835b82811015613a1357868501358255602094850194600190920191016139f3565b5086821015613a305760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b600082601f830112613a5357600080fd5b8151613a61612b0c82612ad7565b818152846020838601011115613a7657600080fd5b613a87826020830160208701612ef6565b949350505050565b600060208284031215613aa157600080fd5b81516001600160401b03811115613ab757600080fd5b613a8784828501613a42565b61ffff85168152608060208201526000613ae06080830186612f1a565b6001600160401b038516604084015282810360608401526136438185612f1a565b60208082526024908201527f4c7a4170703a205f61646170746572506172616d73206d75737420626520656d604082015263383a3c9760e11b606082015260800190565b604081526000613b586040830185613782565b8281036020840152611aca8185613782565b600082601f830112613b7b57600080fd5b81516020613b8b612b0c83612b5c565b82815260059290921b84018101918181019086841115613baa57600080fd5b8286015b84811015612bda5780518352918301918301613bae565b600080600060608486031215613bda57600080fd5b83516001600160401b0380821115613bf157600080fd5b613bfd87838801613a42565b94506020860151915080821115613c1357600080fd5b613c1f87838801613b6a565b93506040860151915080821115613c3557600080fd5b50613c4286828701613b6a565b9150509250925092565b61ffff8716815260c060208201526000613c6960c0830188612f1a565b8281036040840152613c7b8188612f1a565b6001600160a01b0387811660608601528616608085015283810360a08501529050613ca68185612f1a565b9998505050505050505050565b61ffff8616815260a060208201526000613cd060a0830187612f1a565b6001600160401b03861660408401528281036060840152613cf18186612f1a565b9050828103608084015261357c8185612f1a565b600060208284031215613d1757600080fd5b81516113dc8161305c565b6001600160a01b0385811682528416602082015260a060408201819052600090613d4e90830185613782565b8281036060840152613d608185613782565b838103608090940193909352505060008152602001949350505050565b6001600160a01b0384168152606060208201819052600090613da190830185613782565b82810360408401526138a48185613782565b6001600160a01b038516815260a060208201819052600090613dd790830186613782565b8281036040840152613de98186613782565b90508281036060840152613d6081856137bd56fea26469706673582212200b0937d4c09082723b91e77f9d850f0d70ba1817eb9bf9db5c2b2c90bec3621b64736f6c63430008110033000000000000000000000000b6319cc6c8c27a8f5daf0dd3df91ea35c4720dd7000000000000000000000000c6c03d452906aad9a364989608d947bac11e478c