0 txs
1 call
constructor
constructor()
functions
allowNativeToken
viewfunction allowNativeToken() view returns (bool)
autoSwapEnabled
viewfunction autoSwapEnabled() view returns (bool)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
enableRoyalty
viewfunction enableRoyalty() view returns (bool)
getClaimEndTime
viewfunction getClaimEndTime(bytes32 _listingId) view returns (uint256)
getHighestBidInfo
viewfunction getHighestBidInfo(bytes32 _listingId) view returns (address, uint256)
getListing
viewfunction getListing(bytes32 _listingId) view returns (tuple)
getListingTimestamp
viewfunction getListingTimestamp(bytes32 _listingId) view returns (uint64)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getStartingBid
viewfunction getStartingBid(bytes32 _listingId) view returns (uint256)
getTargetBid
viewfunction getTargetBid(bytes32 _listingId) view returns (uint256)
getUserAuctions
viewfunction getUserAuctions(address _user) view returns (bytes32[] listingIds)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isClaimable
viewfunction isClaimable(bytes32 _listingId) view returns (bool)
listingCancelCooldown
viewfunction listingCancelCooldown() view returns (uint64)
lpRouter
viewfunction lpRouter() view returns (address)
MANAGER_ROLE
viewfunction MANAGER_ROLE() view returns (bytes32)
onERC721Received
purefunction onERC721Received(address, address, uint256, bytes) pure returns (bytes4)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
taxReceiver
viewfunction taxReceiver() view returns (address)
treasuryManager
viewfunction treasuryManager() view returns (address)
unitTokenAddress
viewfunction unitTokenAddress() view returns (address)
UPGRADER_ROLE
viewfunction UPGRADER_ROLE() view returns (bytes32)
whitelistedPaymentTokens
viewfunction whitelistedPaymentTokens(address paymentTokenAddress) view returns (bool)
whitelistedTokens
viewfunction whitelistedTokens(address tokenAddress) view returns (bool)
addPaymentToken
nonpayablefunction addPaymentToken(address tokenAddress)
addToken
nonpayablefunction addToken(address tokenAddress)
bulkAddPaymentToken
nonpayablefunction bulkAddPaymentToken(address[] tokenAddress)
bulkAddToken
nonpayablefunction bulkAddToken(address[] tokenAddress)
bulkRemovePaymentToken
nonpayablefunction bulkRemovePaymentToken(address[] tokenAddress)
bulkRemoveToken
nonpayablefunction bulkRemoveToken(address[] tokenAddress)
buy
payablefunction buy(bytes32 _listingId) payable
cancelListing
nonpayablefunction cancelListing(bytes32 _listingId)
claimBid
nonpayablefunction claimBid(bytes32 _listingId)
createAuctionListing
nonpayablefunction createAuctionListing(address tokenAddress, uint256 tokenId, uint256 amount, uint256 startingBid, uint256 targetBid, uint256 buyoutPrice, address paymentToken, uint64 duration)
createFixedListing
nonpayablefunction createFixedListing(address tokenAddress, uint256 tokenId, uint256 amount, uint256 price, address paymentToken, uint64 duration)
endAuction
nonpayablefunction endAuction(bytes32 _listingId)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address _upgrader, address _manager, address _taxReceiver, bool _allowNativeToken, bool _enableRoyalty, uint64 _listingCancelCooldown, bool _autoSwapEnabled)
onERC1155BatchReceived
nonpayablefunction onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) returns (bytes4)
onERC1155Received
nonpayablefunction onERC1155Received(address, address, uint256, uint256, bytes) returns (bytes4)
placeBid
payablefunction placeBid(bytes32 _listingId, uint256 bidAmount) payable
removePaymentToken
nonpayablefunction removePaymentToken(address tokenAddress)
removeToken
nonpayablefunction removeToken(address tokenAddress)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setTaxReceiver
nonpayablefunction setTaxReceiver(address _taxReceiver)
setTreasuryManager
nonpayablefunction setTreasuryManager(address _treasuryManager)
setUniswapRouter
nonpayablefunction setUniswapRouter(address _router)
setUnitTokenAddress
nonpayablefunction setUnitTokenAddress(address _unitTokenAddress)
updateAllowNativeToken
nonpayablefunction updateAllowNativeToken(bool status)
updateAutoSwapStatus
nonpayablefunction updateAutoSwapStatus(bool _status)
updateCancelListingCooldown
nonpayablefunction updateCancelListingCooldown(uint64 _listingCancelCooldown)
events
AuctionEnded
event AuctionEnded(bytes32 listingId, uint256 tokenId, address indexed tokenAddress, address indexed winner, uint256 price, uint64 timestamp)
BidClaimed
event BidClaimed(bytes32 listingId, address indexed bidder, address indexed paymentToken, uint256 amount, uint64 timestamp)
BidPlaced
event BidPlaced(bytes32 listingId, uint256 tokenId, address indexed tokenAddress, address indexed bidder, uint256 price, uint64 timestamp)
BulkPaymentTokenAdded
event BulkPaymentTokenAdded(address[] tokenAddress, uint64 timestamp)
BulkPaymentTokenRemoved
event BulkPaymentTokenRemoved(address[] tokenAddress, uint64 timestamp)
BulkTokenAdded
event BulkTokenAdded(address[] tokenAddress, uint64 timestamp)
BulkTokenRemoved
event BulkTokenRemoved(address[] tokenAddress, uint64 timestamp)
Initialized
event Initialized(uint64 version)
ListingCancelled
event ListingCancelled(bytes32 listingId, uint256 indexed tokenId, address indexed tokenAddress, address indexed seller, uint64 timestamp)
ListingCreated
event ListingCreated(bytes32 listingId, uint256 tokenId, address indexed seller, address indexed tokenAddress, address indexed paymentToken, uint256 amount, uint256 price, uint8 tokenType, uint8 listingType, uint64 listingEndTime, uint64 timestamp)
ListingSold
event ListingSold(bytes32 listingId, uint256 tokenId, address indexed seller, address indexed tokenAddress, address indexed paymentToken, address buyer, uint256 amount, uint256 price, uint64 timestamp)
PaymentTokenAdded
event PaymentTokenAdded(address tokenAddress, uint64 timestamp)
PaymentTokenRemoved
event PaymentTokenRemoved(address tokenAddress, uint64 timestamp)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
TaxReceiverUpdated
event TaxReceiverUpdated(address indexed newTaxReceiver)
TokenAdded
event TokenAdded(address tokenAddress, uint64 timestamp)
TokenRemoved
event TokenRemoved(address tokenAddress, uint64 timestamp)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
ErrorAddressZero
error ErrorAddressZero()
ErrorAuctionEnded
error ErrorAuctionEnded(bytes32 _lisingId)
ErrorAuctionNotClaimable
error ErrorAuctionNotClaimable(bytes32 _listingId)
ErrorBidTooLow
error ErrorBidTooLow(bytes32 _lisingId, uint256 _bid)
ErrorCallerNotEnoughBalance
error ErrorCallerNotEnoughBalance(address _caller, address _token, uint256 _amount, uint256 _balance)
ErrorCallerNotSeller
error ErrorCallerNotSeller(address _caller, bytes32 _lisingId)
ErrorCannotCancelAuction
error ErrorCannotCancelAuction()
ErrorInvalidAddress
error ErrorInvalidAddress()
ErrorInvalidAmount
error ErrorInvalidAmount()
ErrorInvalidListingDuration
error ErrorInvalidListingDuration()
ErrorInvalidPrice
error ErrorInvalidPrice()
ErrorInvalidTokenType
error ErrorInvalidTokenType()
ErrorlistingEndTimeNotMet
error ErrorlistingEndTimeNotMet(bytes32 _lisingId)
ErrorListingIsLocked
error ErrorListingIsLocked()
ErrorListingNotActive
error ErrorListingNotActive(bytes32 _listingId)
ErrorListingNotAuction
error ErrorListingNotAuction(bytes32 _lisingId)
ErrorNativePaymentTokenNotAllowed
error ErrorNativePaymentTokenNotAllowed()
ErrorNoBuyoutPrice
error ErrorNoBuyoutPrice(bytes32 _lisingId)
ErrorNoUserBid
error ErrorNoUserBid(bytes32 _lisingId)
ErrorPaymentTokenNotWhitelisted
error ErrorPaymentTokenNotWhitelisted(address _token)
ErrorSameValue
error ErrorSameValue()
ErrorTokenNotWhitelisted
error ErrorTokenNotWhitelisted(address _token)
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x6080806040523460aa575f516020614a3b5f395f51905f525460ff8160401c16609b576002600160401b03196001600160401b038216016049575b60405161498c90816100af8239f35b6001600160401b0319166001600160401b039081175f516020614a3b5f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80603a565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe6080604052600436101561001a575b3615610018575f80fd5b005b5f5f3560e01c806301db46a01461335d57806301ffc9a71461326e5780630572c674146131c157806308b85974146131975780630c8106dc14613170578063150b7a0214613101578063175c0d1614612fcd5780631dbec39614612f785780631f658fbd14612f4d578063248a9ca314612f0d5780632f2ff15d14612ec257806336568abe14612e64578063366578c714612e3a5780633cea70d914612e13578063455f468f14612dba5780634a7dc8e014612d1c5780635262e70c14612cb357806358862ac114612c7f5780635ca551e914612c595780635eb374c714612a885780635fa7b584146129eb5780635fb3c39c14612950578063628232b6146128a3578063875aa1d01461246c578063877fa63714611f3b57806391d1485414611ee45780639299e55214611a745780639552298114611a4d5780639a4484cc1461199f5780639c9a106114611297578063a0c7489d14611271578063a217fddf14611255578063a5125421146111b8578063a6f3a14d14610e35578063b8a6f01f14610de5578063bc197c8114610d34578063bca1aaa314610891578063be80b05b1461086b578063bea9849e146107ee578063c38e7c4e146107c4578063cd8de42c1461075a578063d48bfca7146106b4578063d547741f14610660578063daf9c21014610639578063df695abb146105f6578063e6ef73d6146105cf578063ec87621c14610594578063f23a6e6114610521578063f72c0d8b146104e6578063fa265333146104a0578063fe47a9f214610433578063ff3ad0b4146103395763ffdfbdaf1461026c575061000e565b346103365761027a36613bd1565b9190610284613e81565b815b8381106102d257507fc163c72f9ec30ee2f229dfa5b39a7b0003a4a448352734f5ad6cbb7e2994c6d291926102cc60405192839267ffffffffffffffff42169184613e15565b0390a180f35b806103056001600160a01b036102f36102ee6001958988613ddd565b613e01565b165f52600360205260405f2054151590565b15610311575b01610286565b6103306001600160a01b0361032a6102ee848988613ddd565b16614818565b5061030b565b80fd5b5034610336576020366003190112610336576001600160a01b0361035b613c25565b168082526010602052604082205461037281613d20565b906103806040519283613c82565b80825261038c81613d20565b602083019390601f1901368537845b8281106103e75750505090604051928392602084019060208552518091526040840192915b8181106103ce575050500390f35b82518452859450602093840193909201916001016103c0565b81865260106020526103fc8160408820614587565b90549060031b1c845182101561041f57600582901b85016020015260010161039b565b602487634e487b7160e01b81526032600452fd5b5034610336576020366003190112610336576001600160a01b03610455613c25565b61045d613e81565b168015610478576001600160a01b0319600554161760055580f35b6004827fdc664dda000000000000000000000000000000000000000000000000000000008152fd5b503461033657602036600319011261033657600435808252600a6020908152604080842054928452600b8252928390205483516001600160a01b03909316835290820152f35b503461033657806003193601126103365760206040517f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e38152f35b50346103365760a03660031901126103365761053b613c25565b50610544613c3b565b5060843567ffffffffffffffff811161059057610565903690600401613ca4565b5060206040517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b5080fd5b503461033657806003193601126103365760206040517f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b088152f35b503461033657806003193601126103365760206001600160a01b0360045416604051908152f35b503461033657602036600319011261033657602061062f6001600160a01b0361061d613c25565b165f52600160205260405f2054151590565b6040519015158152f35b503461033657602036600319011261033657602061062f6001600160a01b036102f3613c25565b5034610336576040366003190112610336576106b0600435610680613c3b565b906106ab6106a6825f525f5160206149175f395f51905f52602052600160405f20015490565b613ef0565b614422565b5080f35b5034610336576020366003190112610336577f17b564256787f4a9080168e0fd930025d33fee9f7882709fbb1a4064ef85bcb26102cc6106f2613c25565b6106fa613e81565b6001600160a01b038116610719815f52600360205260405f2054151590565b1561074a575b50604080516001600160a01b0390921682524267ffffffffffffffff16602083015290918291820190565b61075390614818565b505f61071f565b5034610336576020366003190112610336576001600160a01b0361077c613c25565b610784613e81565b16801561047857806001600160a01b031960045416176004557f93f0a3a4f2fc8865a3fb4dc877b0fca20a526f77982a942687cc22533e3e483c8280a280f35b50346103365760203660031901126103365760406020916004358152600983522054604051908152f35b5034610336576020366003190112610336576001600160a01b03610810613c25565b610818613e81565b168015610478576007546001600160a01b0381168214610843576001600160a01b0319161760075580f35b6004837f4749b1bf000000000000000000000000000000000000000000000000000000008152fd5b5034610336578060031936011261033657602060ff60075460a01c166040519015158152f35b50604036600319011261033657600435602435818352600f602052600160ff60408520541603610d21576108c3613f3d565b81835260086020526040832091604051926108dd84613c51565b80548452600181015490602085019182526001600160a01b0360028201541694604081019586526003820154606082015260048201546080820152600160066001600160a01b036005850154169360a084019485520154916001600160a01b03831660c082015267ffffffffffffffff61010060ff8560a01c16928360e0820152019360a81c16835203610d0e575167ffffffffffffffff16421015610ce257828652600b60205283604087205410801590610ccd575b610c9d57828652600c602052604086206001600160a01b0333165f526020526109c160405f205485613dbc565b906001600160a01b038151169081155f14610b34575050803410610b0a5750906001600160a01b037f770651bbe3b4fa7f276817873a95cd196b0109090bce22c54445dc1e831b3971925b3387526010602052610a2f83604089206001915f520160205260405f2054151590565b15610aef575b828752600c602052604087208233165f526020528460405f2055828752600a602052604087208233166001600160a01b0319825416179055828752600c602052604087208233165f5260205260405f2054838852600b60205260408820555194511692610ad8604051928392339767ffffffffffffffff42169285929367ffffffffffffffff919594606093608086019786526020860152604085015216910152565b0390a360015f5160206149375f395f51905f525580f35b3387526010602052610b04836040892061486d565b50610a35565b8560849160405191631c3fef8f60e21b835233600484015260248301526044820152346064820152fd5b6040516370a0823160e01b8152336004820152602081602481865afa8015610c925784918a91610c5d575b5010610ba4575091610b9f6001600160a01b03927f770651bbe3b4fa7f276817873a95cd196b0109090bce22c54445dc1e831b39719594309033906144bf565b610a0c565b8760206001600160a01b03602493511693604051938480926370a0823160e01b82523360048301525afa908115610c515790610c19575b604051631c3fef8f60e21b81523360048201526001600160a01b039093166024840152604483019390935250606481019190915280608481015b0390fd5b506020813d602011610c49575b81610c3360209383613c82565b81010312610c4557610c159051610bdb565b5f80fd5b3d9150610c26565b604051903d90823e3d90fd5b9150506020813d602011610c8a575b81610c7960209383613c82565b81010312610c45578390515f610b5f565b3d9150610c6c565b6040513d8b823e3d90fd5b60448685857fda24f689000000000000000000000000000000000000000000000000000000008352600452602452fd5b50828652601260205283604087205411610994565b602486847fb6f1f12a000000000000000000000000000000000000000000000000000000008252600452fd5b6024878563ddd62ef360e01b8252600452fd5b602483836366b9cfc760e01b8252600452fd5b50346103365760a036600319011261033657610d4e613c25565b50610d57613c3b565b5060443567ffffffffffffffff811161059057610d78903690600401613d38565b5060643567ffffffffffffffff811161059057610d99903690600401613d38565b5060843567ffffffffffffffff811161059057610dba903690600401613ca4565b5060206040517fbc197c81000000000000000000000000000000000000000000000000000000008152f35b503461033657602036600319011261033657610dff613cfa565b610e07613e81565b6007549015158060ff8360a01c161515146108435760ff60a01b60ff60a01b199160a01b1691161760075580f35b50346103365760e036600319011261033657610e4f613c25565b610e57613c3b565b6044356001600160a01b0381168091036111b457606435908115158092036111b057608435908115158092036111ac57610e8f613d09565b9060c435948515158096036111a8577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549667ffffffffffffffff60ff8960401c16159816801590816111a0575b6001149081611196575b15908161118d575b506111655787600167ffffffffffffffff197ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005416177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055611105575b6001600160a01b0381161580156110f4575b80156110ec575b6110c45775ff000000000000000000000000000000000000000000939291610fc2610fc892610f926148bf565b610f9a6148bf565b610fa26148bf565b60015f5160206149375f395f51905f5255610fbc33614134565b506141e3565b506142af565b506001600160a01b031960045416176004557fffff00000000000000000000ffffffffffffffffffffffffffffffffffffffff60ff60a01b67ffffffffffffffff60b01b6005549360b01b169560a01b169116179160a81b16171760055560ff60a01b1960ff60a01b6007549260a01b169116176007556110465780f35b68ff0000000000000000197ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b6004897f010b179a000000000000000000000000000000000000000000000000000000008152fd5b508215610f65565b506001600160a01b03821615610f5e565b6801000000000000000068ff0000000000000000197ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005416177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055610f4c565b6004897ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b9050155f610eef565b303b159150610ee7565b899150610edd565b8780fd5b8580fd5b8480fd5b8380fd5b5034610336576020366003190112610336577f2a3ce10726676ad1b5ee6f8d64d312f05ed4362f81ccfc07d20abe6a78c711666102cc6111f6613c25565b6111fe613e81565b6001600160a01b03811661121d815f52600160205260405f2054151590565b61124c5750604080516001600160a01b0390921682524267ffffffffffffffff16602083015290918291820190565b6107539061459c565b5034610336578060031936011261033657602090604051908152f35b5034610336578060031936011261033657602060ff60055460a81c166040519015158152f35b50602036600319011261033657600435808252600f602052600160ff6040842054160361198d576112c6613f3d565b808252600860205260408220604051916112df83613c51565b81548352600182015492602081019384526001600160a01b0360028401541691604082019283526003840154946060830195865260048501549060808401918252600160066001600160a01b036005890154169760a08701988952015460c08601956001600160a01b038216875261010067ffffffffffffffff60ff8460a01c16938460e085015260a81c169101521480611984575b6119585787889060ff60055460a81c166118b1575b61139d6001600160a01b03885116613fa6565b916001600160a01b0389511680155f146116785750908451340361166957908a9291838080806001600160a01b038c51166113d88634613dbc565b90828215611660575bf1156116555783918115908115611618575b5050505060ff905b168061154e57506001600160a01b03865116825190803b1561154a57604051632142170760e11b8152306004820152336024820152604481019290925282908290606490829084905af1801561153f57611521575b50916001600160a01b0380807ffe0aaf72ecc22b14978219fed236cb1202a5100a010842bd7615baec7ca789c997946114bb604060c099985b89815260086020522060065f918281558260018201558260028201558260038201558260048201558260058201550155565b868d52600f60205260408d20600460ff1982541617905551945116975116975116975190519160405193845260208401523360408401526060830152608082015267ffffffffffffffff421660a0820152a460015f5160206149375f395f51905f525580f35b9061153181809794969593613c82565b6111b057919290935f611450565b6040513d84823e3d90fd5b8280fd5b600114611592575b916001600160a01b0380807ffe0aaf72ecc22b14978219fed236cb1202a5100a010842bd7615baec7ca789c997946114bb604060c09998611489565b6001600160a01b0386511682518951823b156111b457604051637921219560e11b81523060048201523360248201526044810192909252606482015260a060848201525f60a4820152908290829060c490829084905af1801561153f576115fa575b50611556565b9061160a81809794969593613c82565b6111b057919290935f6115f4565b839283928392839161164b575b6001600160a01b031690f11561163e57815f80806113f3565b50604051903d90823e3d90fd5b6108fc9150611625565b6040513d85823e3d90fd5b506108fc6113e1565b60048b636262a28360e11b8152fd5b6040516370a0823160e01b8152336004820152602081602481855afa9081156118a6578d91611874575b5086518091106118035750908b9392916116d36001600160a01b038a51166116cb858a51613dbc565b9033846144bf565b826116e4575b50505060ff906113fb565b6001600160a01b038b51166001600160a01b036006541680911490816117ee575b816117e4575b50806117d0575b806117c1575b156117ac5782611736916001600160a01b03600554169033906144bf565b6001600160a01b036005541691823b156111b057604051630bdff96560e31b81526001600160a01b0392909216600483015260248201529083908290604490829084905af1908115611655578391611797575b505060ff905b905f806116d9565b816117a191613c82565b61059057815f611789565b916117bc9160ff949333906144bf565b61178f565b5060ff60075460a01c16611718565b506001600160a01b03600554161515611712565b905015155f61170b565b6007546001600160a01b031615159150611705565b9060248d60206001600160a01b038e511693604051938480926370a0823160e01b82523360048301525afa908115610c515790610c1957604051631c3fef8f60e21b81523360048201526001600160a01b039390931660248401526044830193909352506064810191909152608490fd5b90506020813d60201161189e575b8161188f60209383613c82565b81010312610c4557515f6116a2565b3d9150611882565b6040513d8f823e3d90fd5b6001600160a01b038751166040845160448751918351948593849263152a902d60e11b8452600484015260248301525afa808c928d92611924575b506118f9575b505061138a565b6001600160a01b03821615158061191b575b156118f257915091505f806118f2565b5080151561190b565b909250611949915060403d604011611951575b6119418183613c82565b810190613d95565b90915f6118ec565b503d611937565b602488847f74f78a40000000000000000000000000000000000000000000000000000000008252600452fd5b50815115611375565b6366b9cfc760e01b8252600452602490fd5b5034610336576119ae36613bd1565b91906119b8613e81565b815b838110611a0057507f96d4ec8feb7f34c0d92af17b3c23e049eafdf71422148c3f6aa4e2a1498fb45191926102cc60405192839267ffffffffffffffff42169184613e15565b80611a1c6001600160a01b0361061d6102ee6001958988613ddd565b15611a28575b016119ba565b611a476001600160a01b03611a416102ee848988613ddd565b166147c7565b50611a22565b503461033657806003193601126103365760206001600160a01b0360065416604051908152f35b50346103365760203660031901126103365760043590818152600f602052600160ff60408320541603611ed257611aa9613f3d565b8181526008602052604081209160405190611ac382613c51565b83548252600184015490602083019182526001600160a01b036002860154169160408401928352600660038701549660608601978852600481015460808701526001600160a01b0360058201541660a087015201546001600160a01b03811660c086019581875261010067ffffffffffffffff60e083019460ff8160a01c16865260a81c169101523303611ea257828652600e60205267ffffffffffffffff60408720541667ffffffffffffffff60055460b01c16019667ffffffffffffffff8811611e8e5767ffffffffffffffff96978742169788911611611e66578790600160ff84511614611e16575b60ff611bc46001600160a01b03885116613fa6565b1680611d3c5750506001600160a01b038551166001600160a01b038751168451823b156111b457604051632142170760e11b81523060048201526001600160a01b0392909216602483015260448201529082908290606490829084905af1801561153f57611d22575b506001600160a01b03604093600160ff7fbe613cd95a541f113a3b65266d5e5c7986d6577792f1c617a04060a3bda3a17e9795611c9888869789815260086020522060065f918281558260018201558260028201558260038201558260048201558260058201550155565b511614611cdd575b838a52600f602052848a20600360ff19825416179055519551169551169582519182526020820152a460015f5160206149375f395f51905f525580f35b838a52600a602052848a206001600160a01b03198154169055838a52600b6020528985812055838a5260116020528985812055838a5260126020528985812055611ca0565b90611d308180969493613c82565b6111b45790925f611c2d565b600114611d82575b506001600160a01b03604093600160ff7fbe613cd95a541f113a3b65266d5e5c7986d6577792f1c617a04060a3bda3a17e9795611c98888697611489565b6001600160a01b038651166001600160a01b03885116908551925190803b156111b057604051637921219560e11b81523060048201526001600160a01b039390931660248401526044830193909352606482015260a060848201525f60a4820152908290829060c490829084905af1801561153f5715611d445790611e0a8180969493613c82565b6111b45790925f611d44565b90849052600b6020526040882054848952601160205260408920541115611e3e578790611baf565b6004887fb3257d59000000000000000000000000000000000000000000000000000000008152fd5b6004887f61c15299000000000000000000000000000000000000000000000000000000008152fd5b602487634e487b7160e01b81526011600452fd5b604486847f5c3ac9e900000000000000000000000000000000000000000000000000000000825233600452602452fd5b6024916366b9cfc760e01b8252600452fd5b5034610336576040366003190112610336576001600160a01b036040611f08613c3b565b9260043581525f5160206149175f395f51905f526020522091165f52602052602060ff60405f2054166040519015158152f35b50346103365761010036600319011261033657611f56613c25565b6024359060443560a4359260c435926001600160a01b038416948585036124685760e4359067ffffffffffffffff82168092036111a8576001600160a01b03831695611fad875f52600360205260405f2054151590565b1561243c578715801580612420575b6123f457806123e4575b6123bc57851561239457611fd8613f3d565b60ff611fe385613fa6565b16928361231f57873b1561231b57604051632142170760e11b8152336004820152306024820152604481018790528a908181606481838e5af1801561153f57612306575b50505b80156122de5761203a9042613e74565b67ffffffffffffffff16936040519060208201928884528460408401526bffffffffffffffffffffffff199060601b1660608301526bffffffffffffffffffffffff193360601b1660748301526bffffffffffffffffffffffff199060601b16608882015285609c82015260bc81017f01000000000000000000000000000000000000000000000000000000000000009052609d81526120db60bd82613c82565b519020948884876040516120ee81613c51565b8181528b602082018a8152604083018d8152606084019088825260808501928a845260a0860194855260c0860198338a5260e0870197600189526101008801998a52815260086020526040902095518655516001860155516001600160a01b031660028501906001600160a01b031681546001600160a01b031916179055516003840155516004830155516001600160a01b031660058201906001600160a01b031681546001600160a01b03191617905560060192516001600160a01b03166001600160a01b031683546001600160a01b03191617835551908254905160a81b67ffffffffffffffff60a81b169160a01b60ff60a01b16907fffffff000000000000000000ffffffffffffffffffffffffffffffffffffffff16171790554267ffffffffffffffff1694868a52600e60205260408a2067ffffffffffffffff871667ffffffffffffffff19825416179055868a52600f60205260408a2060ff198154166001179055868a52601260205260643560408b2055868a52601160205260843560408b2055604051968752602087015260408601526060850152608084015260a083016001905260c083015260e082015233906101007fc3cdfa76387a2082ab92283766d1a4654c0a62a5b5ecfd7679d9161e206db02691a460015f5160206149375f395f51905f525580f35b60048a7fe816f619000000000000000000000000000000000000000000000000000000008152fd5b8161231091613c82565b61231b57895f612027565b8980fd5b6001840361202a57873b1561231b57604051637921219560e11b8152336004820152306024820152604481018790526064810188905260a060848201525f60a48201528a90818160c481838e5af1801561153f5761237f575b505061202a565b8161238991613c82565b61231b57895f612378565b6004897fd27def68000000000000000000000000000000000000000000000000000000008152fd5b6004897feea33270000000000000000000000000000000000000000000000000000000008152fd5b5060ff60055460a01c1615611fc6565b60248a8a7f7d982ddb000000000000000000000000000000000000000000000000000000008252600452fd5b50612436895f52600160205260405f2054151590565b15611fbc565b602489887ff473c112000000000000000000000000000000000000000000000000000000008252600452fd5b8680fd5b50346103365760c036600319011261033657612486613c25565b6024359060443560643592608435926001600160a01b03841694858503612468576124af613d09565b906001600160a01b038316956124d0875f52600360205260405f2054151590565b1561243c578715801580612887575b6123f45780612877575b6123bc57811561286857851561239457612501613f3d565b60ff61250c85613fa6565b1692836127e357873b1561231b57604051632142170760e11b8152336004820152306024820152604481018790528a908181606481838e5af1801561153f576127ce575b505067ffffffffffffffff905b1680156122de5761256e9042613e74565b67ffffffffffffffff16936040519060208201928884528460408401526bffffffffffffffffffffffff199060601b1660608301526bffffffffffffffffffffffff193360601b1660748301526bffffffffffffffffffffffff199060601b16608882015285609c8201528960bc820152609d81526125ee60bd82613c82565b5190209488848760405161260181613c51565b8181528b602082018a8152604083018d8152606084019088825260808501928a845260a0860194855260c0860198338a5260e08701978189526101008801998a52815260086020526040902095518655516001860155516001600160a01b031660028501906001600160a01b031681546001600160a01b031916179055516003840155516004830155516001600160a01b031660058201906001600160a01b031681546001600160a01b03191617905560060192516001600160a01b03166001600160a01b031683546001600160a01b03191617835551908254905160a81b67ffffffffffffffff60a81b169160a01b60ff60a01b16907fffffff000000000000000000ffffffffffffffffffffffffffffffffffffffff16171790554267ffffffffffffffff1694868a52600e60205260408a2067ffffffffffffffff871667ffffffffffffffff19825416179055868a52600f60205260408a2060ff19815416600117905560405196875260208701526040860152606085015260808401528560a084015260c083015260e082015233906101007fc3cdfa76387a2082ab92283766d1a4654c0a62a5b5ecfd7679d9161e206db02691a460015f5160206149375f395f51905f525580f35b816127d891613c82565b61231b57895f612550565b600184146127fb575b67ffffffffffffffff9061255d565b873b1561231b57604051637921219560e11b8152336004820152306024820152604481018790526064810188905260a060848201525f60a48201528a90818160c481838e5af1801561153f57612853575b50506127ec565b8161285d91613c82565b61231b57895f61284c565b600489636262a28360e11b8152fd5b5060ff60055460a01c16156124e9565b5061289d895f52600160205260405f2054151590565b156124df565b5034610336576128b236613bd1565b91906128bc613e81565b815b83811061290457507f6aa29692b137659a481d4fb83c29beb0e6c21657d3d1190ad11ef974726edf1691926102cc60405192839267ffffffffffffffff42169184613e15565b806129206001600160a01b036102f36102ee6001958988613ddd565b61292b575b016128be565b61294a6001600160a01b036129446102ee848988613ddd565b1661466b565b50612925565b50346103365760203660031901126103365760043567ffffffffffffffff81169081810361154a57612980613e81565b612988613f3d565b6005549167ffffffffffffffff8360b01c16146108435767ffffffffffffffff60b01b7fffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffff9160b01b1691161760055560015f5160206149375f395f51905f525580f35b5034610336576020366003190112610336577fd04ed67bb8d5a1e9a327f210f612c4e3c0e48626a4fa8d6d4230748c085ceefc6102cc612a29613c25565b612a31613e81565b6001600160a01b038116612a50815f52600360205260405f2054151590565b612a7f5750604080516001600160a01b0390921682524267ffffffffffffffff16602083015290918291820190565b6107539061466b565b503461033657602036600319011261033657600435808252600f602052600360ff604084205416141580612c3f575b612c1457612ac3613f3d565b3382526010602052612ae681604084206001915f520160205260405f2054151590565b15612be957808252600d6020526001600160a01b0360408320541690808352600c602052604083206001600160a01b0333165f5260205260405f205482155f14612bd9578380828015612bcf575b8280929181923390f115611655575b3384526010602052612b588260408620614716565b50818452600c602052604084206001600160a01b0333165f526020528360405f2055604051918252602082015267ffffffffffffffff421660408201527f73179bee3c094d2ab2c68d9f001017f51535f15bbe4363a691ee89df920b8cf860603392a360015f5160206149375f395f51905f525580f35b6108fc9150612b34565b612be48133856140d1565b612b43565b7f79ec1d3f000000000000000000000000000000000000000000000000000000008252600452602490fd5b7f98972f02000000000000000000000000000000000000000000000000000000008252600452602490fd5b50808252600f602052600260ff6040842054161415612ab7565b5034610336578060031936011261033657602060ff60055460a01c166040519015158152f35b50346103365760203660031901126103365767ffffffffffffffff60406020926004358152600e8452205416604051908152f35b503461033657602036600319011261033657612ccd613cfa565b612cd5613e81565b612cdd613f3d565b6005549015158060ff8360a01c161515146108435760ff60a01b60ff60a01b199160a01b1691161760055560015f5160206149375f395f51905f525580f35b5034610336576020366003190112610336577f38ed943c96925bfb5094e2dc69bcc679f0dccd21120ce97e177bed1c203189de6102cc612d5a613c25565b612d62613e81565b6001600160a01b038116612d81815f52600160205260405f2054151590565b15612db15750604080516001600160a01b0390921682524267ffffffffffffffff16602083015290918291820190565b610753906147c7565b50346103365760203660031901126103365760209060043590818152600f8352600360ff60408320541614918215612df9575b50506040519015158152f35b8152600f8352604090205460ff1660021490505f80612ded565b503461033657806003193601126103365760206001600160a01b0360055416604051908152f35b50346103365760203660031901126103365760406020916004358152601283522054604051908152f35b503461033657604036600319011261033657612e7e613c3b565b336001600160a01b03821603612e9a576106b090600435614422565b6004827f6697b232000000000000000000000000000000000000000000000000000000008152fd5b5034610336576040366003190112610336576106b0600435612ee2613c3b565b90612f086106a6825f525f5160206149175f395f51905f52602052600160405f20015490565b61437b565b5034610336576020366003190112610336576020612f456004355f525f5160206149175f395f51905f52602052600160405f20015490565b604051908152f35b5034610336578060031936011261033657602067ffffffffffffffff60055460b01c16604051908152f35b5034610336576020366003190112610336576001600160a01b03612f9a613c25565b612fa2613e81565b16801561047857600654816001600160a01b03821614610843576001600160a01b0319161760065580f35b503461033657602036600319011261033657604081610120926101008351612ff481613c51565b82815282602082015282858201528260608201528260808201528260a08201528260c08201528260e08201520152600435815260086020522067ffffffffffffffff6040519161304383613c51565b60ff81548085526001600160a01b03600184015495602081019687528180600287015416956040830196875260038101546060840190815260048201549060808501918252836006816005860154169460a088019586520154998a988c61010060c08a0199858d168b528d60e082019d60a01c168d52019c60a81c168c5260206040519e8f92835251910152511660408c01525160608b01525160808a0152511660a0880152511660c0860152511660e08401525116610100820152f35b50346103365760803660031901126103365761311b613c25565b50613124613c3b565b5060643567ffffffffffffffff811161059057613145903690600401613ca4565b5060206040517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b503461033657806003193601126103365760206001600160a01b0360075416604051908152f35b50346103365760203660031901126103365760406020916004358152601183522054604051908152f35b5034610336576131d036613bd1565b91906131da613e81565b815b83811061322257507f47a43adf776d496cc88b19ac140c090cafa9b8a31934c2e205f31d0690e4c4d091926102cc60405192839267ffffffffffffffff42169184613e15565b8061323e6001600160a01b0361061d6102ee6001958988613ddd565b613249575b016131dc565b6132686001600160a01b036132626102ee848988613ddd565b1661459c565b50613243565b5034610336576020366003190112610336576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361059057807fda8def7300000000000000000000000000000000000000000000000000000000602092149081156132e6575b506040519015158152f35b7f4e2312e000000000000000000000000000000000000000000000000000000000811491508115613319575b50826132db565b7f7965db0b0000000000000000000000000000000000000000000000000000000081149150811561334c575b5082613312565b6301ffc9a760e01b91501482613345565b5034610c45576020366003190112610c455760043561337a613e81565b805f52600f602052600160ff60405f20541603613bbf57613399613f3d565b805f52600860205260405f2090604051916133b383613c51565b805483526001810154602084019081526001600160a01b036002830154169060408501918252600383015494606081019586526004840154936080820194855260066001600160a01b036005830154169160a084019283520154600160c08401936001600160a01b038316855267ffffffffffffffff61010060ff8560a01c16928360e0820152019360a81c16835203613bac575167ffffffffffffffff164210613b8057908791865f52600a6020526001600160a01b0360405f20541697875f52600b60205260405f205496885f52601160205260405f2054906134a16001600160a01b03895116613fa6565b91891080159590613a2a57868a81928a8c849660ff60055460a81c16613990575b5050506001600160a01b0388511680155f1461384b57508280926134f2866001600160a01b038495511692613dbc565b90828215613842575bf1156138375786918115908115613807575b5050505060ff905b16806137665750506001600160a01b03855116845190803b156111b057604051632142170760e11b81523060048201526001600160a01b038b166024820152604481019290925284908290606490829084905af190811561375b578491613746575b50506001600160a01b03905b878452600c60205260408420828a165f526020528360405f205588845260106020526135b28860408620614716565b505b87845260086020526135ec6040852060065f918281558260018201558260028201558260038201558260048201558260058201550155565b878452600a602052604084206001600160a01b03198154169055878452600b60205283604081205587845260116020528360408120558784526012602052836040812055878452600f60205260408420600260ff198254161790555116868352600d6020526001600160a01b036040842091166001600160a01b03198254161790555f146136e85750519051604080519485526020850192909252908301919091524267ffffffffffffffff1660608301526001600160a01b0316907fc0ad1e048042ed8eb184bfa07d3d2439c7ca119317a51c2ee4dc88f95eda451f908060808101610ad8565b60015f5160206149375f395f51905f525580f35b94507fc0ad1e048042ed8eb184bfa07d3d2439c7ca119317a51c2ee4dc88f95eda451f9250926001600160a01b03608092945194511693604051918252602082015284604082015267ffffffffffffffff42166060820152a36136d4565b8161375091613c82565b61154a57825f613577565b6040513d86823e3d90fd5b60011461377d575b506001600160a01b0390613583565b6001600160a01b038651169085519051823b156111ac57604051637921219560e11b81523060048201526001600160a01b038c1660248201526044810192909252606482015260a060848201525f60a4820152908490829060c490829084905af190811561375b5784916137f2575b5061376e565b816137fc91613c82565b61154a57825f6137ec565b839283928392839161382d575b6001600160a01b031690f11561375b57845f808061350d565b6108fc9150613814565b6040513d88823e3d90fd5b506108fc6134fb565b925090613869846001600160a01b0361387094979697511692613dbc565b90836140d1565b82613881575b50505060ff90613515565b6001600160a01b038651166001600160a01b0360065416809114908161397b575b81613971575b5080613962575b1561394157826138cb916001600160a01b0360055416906140d1565b6001600160a01b036005541691823b156111a857604051630bdff96560e31b81526001600160a01b0392909216600483015260248201529086908290604490829084905af190811561383757869161392c575b505060ff905b905f80613876565b8161393691613c82565b6111b057845f61391e565b61395d91509160ff93926001600160a01b0360055416906140d1565b613924565b5060ff60075460a01c166138af565b905015155f6138a8565b6007546001600160a01b0316151591506138a2565b60446001600160a01b03604093511693519151918351948593849263152a902d60e11b8452600484015260248301525afa8085928692613a06575b506139da575b508c8c916134c2565b6001600160a01b0382161515806139fd575b156139d15790955093505f806139d1565b508015156139ec565b909250613a22915060403d604011611951576119418183613c82565b90915f6139cb565b9160ff16905080613aba575090506001600160a01b03808751169151168551823b156111ac57604051632142170760e11b81523060048201526001600160a01b0392909216602483015260448201529084908290606490829084905af190811561375b578491613aa5575b50506001600160a01b03906135b4565b81613aaf91613c82565b61154a57825f613a95565b600114613ad15750506001600160a01b03906135b4565b90919293506001600160a01b0380875116915116908551925190803b15610c4557604051637921219560e11b81523060048201526001600160a01b039390931660248401526044830193909352606482015260a060848201525f60a482018190529091829060c490829084905af18015613b7557613b54575b9081899392613a95565b6001600160a01b0398505f613b6b91939293613c82565b5f97919091613b4a565b6040513d5f823e3d90fd5b857f3af24c2f000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b8663ddd62ef360e01b5f5260045260245ffd5b6366b9cfc760e01b5f5260045260245ffd5b906020600319830112610c455760043567ffffffffffffffff8111610c455782602382011215610c455780600401359267ffffffffffffffff8411610c455760248460051b83010111610c45576024019190565b600435906001600160a01b0382168203610c4557565b602435906001600160a01b0382168203610c4557565b610120810190811067ffffffffffffffff821117613c6e57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117613c6e57604052565b81601f82011215610c455780359067ffffffffffffffff8211613c6e5760405192613cd9601f8401601f191660200185613c82565b82845260208383010111610c4557815f926020809301838601378301015290565b600435908115158203610c4557565b60a4359067ffffffffffffffff82168203610c4557565b67ffffffffffffffff8111613c6e5760051b60200190565b9080601f83011215610c45578135613d4f81613d20565b92613d5d6040519485613c82565b81845260208085019260051b820101928311610c4557602001905b828210613d855750505090565b8135815260209182019101613d78565b9190826040910312610c455781516001600160a01b0381168103610c455760209092015190565b91908203918211613dc957565b634e487b7160e01b5f52601160045260245ffd5b9190811015613ded5760051b0190565b634e487b7160e01b5f52603260045260245ffd5b356001600160a01b0381168103610c455790565b91939293806040840160408552526060830191905f905b808210613e495750505067ffffffffffffffff6020919416910152565b9091928335906001600160a01b038216809203610c4557602081600193829352019401920190613e2c565b91908201809211613dc957565b335f9081527f06484cc59dc38e4f67c31122333a17ca81b3ca18cdf02bfc298072fa52b0316a602052604090205460ff1615613eb957565b63e2517d3f60e01b5f52336004527f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0860245260445ffd5b805f525f5160206149175f395f51905f5260205260405f206001600160a01b0333165f5260205260ff60405f20541615613f275750565b63e2517d3f60e01b5f523360045260245260445ffd5b60025f5160206149375f395f51905f525414613f665760025f5160206149375f395f51905f5255565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b90816020910312610c4557518015158103610c455790565b6001600160a01b03166040516301ffc9a760e01b81527fd9b67a26000000000000000000000000000000000000000000000000000000006004820152602081602481855afa908115613b75575f916140b2575b50156140055750600190565b6020602491604051928380926301ffc9a760e01b82527f80ac58cd0000000000000000000000000000000000000000000000000000000060048301525afa908115613b75575f91614083575b501561405b575f90565b7f1faeb8b4000000000000000000000000000000000000000000000000000000005f5260045ffd5b6140a5915060203d6020116140ab575b61409d8183613c82565b810190613f8e565b5f614051565b503d614093565b6140cb915060203d6020116140ab5761409d8183613c82565b5f613ff9565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000060208201526001600160a01b03909216602483015260448201929092526141329161412d82606481015b03601f198101845283613c82565b61451a565b565b6001600160a01b0381165f9081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff166141de576001600160a01b03165f8181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120805460ff191660011790553391907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b505f90565b6001600160a01b0381165f9081527fab71e3f32666744d246edff3f96e4bdafee2e9867098cdd118a979a7464786a8602052604090205460ff166141de576001600160a01b03165f8181527fab71e3f32666744d246edff3f96e4bdafee2e9867098cdd118a979a7464786a860205260408120805460ff191660011790553391907f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b6001600160a01b0381165f9081527f06484cc59dc38e4f67c31122333a17ca81b3ca18cdf02bfc298072fa52b0316a602052604090205460ff166141de576001600160a01b03165f8181527f06484cc59dc38e4f67c31122333a17ca81b3ca18cdf02bfc298072fa52b0316a60205260408120805460ff191660011790553391907f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b08907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b805f525f5160206149175f395f51905f5260205260405f206001600160a01b0383165f5260205260ff60405f205416155f1461441c57805f525f5160206149175f395f51905f5260205260405f206001600160a01b0383165f5260205260405f20600160ff198254161790556001600160a01b03339216907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b50505f90565b805f525f5160206149175f395f51905f5260205260405f206001600160a01b0383165f5260205260ff60405f2054165f1461441c57805f525f5160206149175f395f51905f5260205260405f206001600160a01b0383165f5260205260405f2060ff1981541690556001600160a01b03339216907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000060208201526001600160a01b03928316602482015292909116604483015260648201929092526141329161412d826084810161411f565b905f602091828151910182855af115613b75575f513d61457e57506001600160a01b0381163b155b6145495750565b6001600160a01b03907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b60011415614542565b8054821015613ded575f5260205f2001905f90565b5f81815260016020526040902054801561441c575f198101818111613dc9575f545f19810191908211613dc95781810361461f575b5050505f54801561460b575f19016145e9815f614587565b8154905f199060031b1b191690555f555f5260016020525f6040812055600190565b634e487b7160e01b5f52603160045260245ffd5b61465561462f61463f935f614587565b90549060031b1c9283925f614587565b819391549060031b91821b915f19901b19161790565b90555f52600160205260405f20555f80806145d1565b5f81815260036020526040902054801561441c575f198101818111613dc9576002545f19810191908211613dc9578181036146de575b505050600254801561460b575f19016146bb816002614587565b8154905f199060031b1b191690556002555f5260036020525f6040812055600190565b6147006146ef61463f936002614587565b90549060031b1c9283926002614587565b90555f52600360205260405f20555f80806146a1565b906001820191815f528260205260405f20548015155f146147bf575f198101818111613dc95782545f19810191908211613dc95781810361478a575b5050508054801561460b575f19019061476b8282614587565b8154905f199060031b1b19169055555f526020525f6040812055600190565b6147aa61479a61463f9386614587565b90549060031b1c92839286614587565b90555f528360205260405f20555f8080614752565b505050505f90565b805f52600160205260405f2054155f146141de575f5468010000000000000000811015613c6e5761480261463f8260018594015f555f614587565b90555f54905f52600160205260405f2055600190565b805f52600360205260405f2054155f146141de5760025468010000000000000000811015613c6e5761485661463f8260018594016002556002614587565b9055600254905f52600360205260405f2055600190565b5f82815260018201602052604090205461441c5780549068010000000000000000821015613c6e57826148aa61463f846001809601855584614587565b90558054925f520160205260405f2055600190565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c16156148ee57565b7fd7e6bcf8000000000000000000000000000000000000000000000000000000005f5260045ffdfe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a26469706673582212202632468d86613af2eed4c229857ae36ba43a93e59f05aec1ab536bfe995ed3a764736f6c634300081c0033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00