package Ġcom . rar ible . protocol . order . api . service . order . validation Ċ Ċ import Ġcom . rar ible . ethereum . nft . model . Lazy N ft Ċ import Ġcom . rar ible . ethereum . nft . validation . Lazy N ft Validator Ċ import Ġcom . rar ible . ethereum . nft . validation . Validation Result Ċ import Ġcom . rar ible . protocol . dto . E thereum Order Update ApiError Dto Ċ import Ġcom . rar ible . protocol . dto . N ft Collection Dto Ċ import Ġcom . rar ible . protocol . nft . api . client . N ft Collection Controller Api Ċ import Ġcom . rar ible . protocol . order . api . exceptions . Order Update Exception Ċ import Ġcom . rar ible . protocol . order . core . converters . model . Lazy Asset Type To Lazy N ft Converter Ċ import Ġcom . rar ible . protocol . order . core . model . Asset Type Ċ import Ġkotlinx . coroutines . reactive . await First OrNull Ċ import Ġorg . springframework . stereotype . Service Ċ import Ġscale ther . abi . Uint 2 5 6 Type Ċ import Ġjava . util .* Ċ Ċ @ Service Ċ class ĠLazy Asset Validator ( ĊĠĠĠ Ġprivate Ġval Ġdelegate : ĠLazy N ft Validator , ĊĠĠĠ Ġprivate Ġval Ġn ft Collection Client : ĠN ft Collection Controller Api Ċ ) Ġ{ ĊĊĠĠĠ Ġsuspend Ġfun Ġvalidate ( lazy Asset Type : ĠAsset Type , Ġside : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlazy N ft Ġ= ĠLazy Asset Type To Lazy N ft Converter . convert ( lazy Asset Type ) ĊĠĠĠĠĠĠĠ Ġvalidate ( lazy N ft , Ġside ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġvalidate ( lazy N ft : ĠLazy N ft , Ġside : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= Ġn ft Collection Client . getN ft Collection ById ( lazy N ft . token . hex ()). await First OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠOrder Update Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Token Ġ${ lazy N ft . token } Ġwas Ġnot Ġfound ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEthereum Order Update ApiError Dto . Code . IN CORRECT _ LA ZY _ AS SET ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( collection . features . contains ( N ft Collection Dto . Features . M INT _ AND _ TRANSFER )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoken Id Ġ= ĠUint 2 5 6 Type . encode ( lazy N ft . tokenId ). bytes () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Creator Ġ= Ġlazy N ft . cre ators . first (). account . bytes () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tokenId . size Ġ< Ġfirst Creator . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠOrder Update Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Token Id Ġhas Ġinvalid Ġhex Ġsize ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEthereum Order Update ApiError Dto . Code . IN CORRECT _ LA ZY _ AS SET ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Arrays . equals ( first Creator , Ġtoken Id . slice Array ( first Creator . indices )). not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠOrder Update Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Token Id Ġmust Ġstart Ġwith Ġfirst Ġcreator Ġaddress ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEthereum Order Update ApiError Dto . Code . IN CORRECT _ LA ZY _ AS SET ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval ĠerrorMessage Ġ= Ġwhen Ġ( val Ġresult Ġ= Ġdelegate . validate ( lazy N ft )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠValidation Result . Valid Ġ-> Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ ĠValidation Result . Invalid Creator And Signature Size Ġ-> Ġ" Invalid Ġcreator Ġand Ġsignature Ġsize Ġfor Ġlazy Ġasset Ġon Ġ$ side Ġside " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠValidation Result . Not Un iq Creators Ġ-> Ġ" All Ġcre ators Ġmust Ġbe Ġuniq Ġfor Ġlazy Ġasset Ġon Ġ$ side Ġside " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠValidation Result . Invalid Creator Signature Ġ-> Ġ" Invalid Ġsignatures Ġfor Ġcre ators Ġ${ result . cre ators } Ġfor Ġlazy Ġasset Ġon Ġ$ side Ġside " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthrow ĠOrder Update Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEthereum Order Update ApiError Dto . Code . IN CORRECT _ LA ZY _ AS SET ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ