tx · 5ZjUJx9tuqDyKNjWBK3CSg9vr5ni5P7HT3gFvZFwY2t9 3MyZojSHcQ6HX9w5G5WEixHkn6huVhPE24y: -0.01400000 Waves 2021.06.24 17:11 [1584562] smart account 3MyZojSHcQ6HX9w5G5WEixHkn6huVhPE24y > SELF 0.00000000 Waves
{ "type": 13, "id": "5ZjUJx9tuqDyKNjWBK3CSg9vr5ni5P7HT3gFvZFwY2t9", "fee": 1400000, "feeAssetId": null, "timestamp": 1624543936229, "version": 2, "chainId": 84, "sender": "3MyZojSHcQ6HX9w5G5WEixHkn6huVhPE24y", "senderPublicKey": "3qeBPCwzp2Z4ed5WHqoSxuLnkwVQpqkVYgxnj2MDRbgf", "proofs": [ "67NXa8fUkJmBt6TU6GKrNEcszDK9JQd8YYps8fkxqP9EA9vZExxcdVNcRdJHxvkFDqcztUgtvDM5dQEyLo37Nn92" ], "script": "base64:AAIEAAAAAAAAAEAIAhIECgIBCBIFCgMIAQgSAwoBCBIDCgEIEgMKAQgSBQoDCAgIEgUKAwgICBIECgIICBIFCgMICAgSBQoDCAgIAAAAMgAAAAAIdW5pdFRlc3QHAAAAAAlvcmFjbGVGZWUJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM04yczVSdGFIUEJlbkNzeDJFQ2NvRlJiWUh4M25vWmhYVzEAAAAACHNpZ25EYXBwCQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNOQzI4aFNpdnJtc1RVWGFZRDF4NkwzNjJKNFpwVW5vVGRCAAAAAAxhcnR3b3Jrc0RhcHAJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM05CeW5mYlhDMkthc3RVeGh1a2NNVWFFNThLOWNCZEI5VVkAAAAAC2ZlZVJlY2VpdmVyAgAAACMzTjFFNnRYZGRSb1ZhUmZROWRRM3ZnNUxhVzJmc2Q4SEt1YgAAAAAIdXNlckRhcHADBQAAAAh1bml0VGVzdAkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTXQ0UkdNRXlqU1dZQW9jVFBxZDU1d2RIUVFCM1BVMlVDbQkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTjh4WGFZakUyN0FhNzlkNWhIcmhIdTlIYUZvVEJtaERFagAAAAANd2hpdGVsaXN0RGFwcAkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTjZCYVYxZENCNHpnNDNnb05OSGFDdHZSMTNCY3lKNUdzcQAAAAALc2lnbkFzc2V0SWQBAAAAIOilarzKd0LycGEyNUpPRYO5uR7lmWcXw3Hq2QuhBK3rAAAAAAt1c2RuQXNzZXRJZAEAAAAgD/IcEqzkxDya7EYaqyWosOy6BytGzG2IcvC14pJJAbQAAAAADHdhdmVzQXNzZXRJZAEAAAAAAAAAAAVjaHJpcwIAAAAjM01zRzZqUE5DclZKVXRZQjdYSkJ4Uzd1dFdzWEFmNG45VnAAAAAAB3NpZ25DdXQAAAAAAAAAAAMAAAAACmNyZWF0b3JDdXQAAAAAAAAAAAoAAAAAC2RhcHBSdW5uaW5nCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAACHVzZXJEYXBwAgAAABRjb25mX2RhcHBfaXNfcnVubmluZwYAAAAADm1haW50ZW5hbmNlTVNHCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAACHVzZXJEYXBwAgAAABRjb25mX21haW50ZW5hbmNlX21zZwIAAAAAAAAAAA11c2VyU3VzcGVuZGVkAgAAAAlTVVNQRU5ERUQAAAAAC3VzZXJSZW1vdmVkAgAAAAdSRU1PVkVEAAAAAAphcnRJbGxlZ2FsAgAAAAdJTExFR0FMAAAAAAxhcnRTdXNwZW5kZWQCAAAACVNVU1BFTkRFRAAAAAAJbnVtU2FsZXNLAgAAAAludW1fc2FsZXMBAAAADWdldFVzZXJTdHJCeUsAAAABAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAh1c2VyRGFwcAUAAAADa2V5AgAAAAVFcnJvcgEAAAAMZ2V0QXJ0U3RyQnlLAAAAAQAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAMYXJ0d29ya3NEYXBwBQAAAANrZXkCAAAAAAEAAAAJZ2V0U3RyQnlLAAAAAQAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AgAAAAABAAAACWdldEludEJ5SwAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQAAAAAAAAAAAAEAAAANa2V5VXNlclN0YXR1cwAAAAEAAAAEYWRkcgkAASwAAAACAgAAAAx1c2VyX3N0YXR1c18FAAAABGFkZHIBAAAACWtleVNpZ25JRAAAAAIAAAAKYXJ0aXN0QWRkcgAAAAVhcnRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAALYXJ0X3NpZ25pZF8FAAAABWFydElkAgAAAAFfBQAAAAphcnRpc3RBZGRyAQAAAAdrZXlGbGFnAAAAAgAAAAphcnRpc3RBZGRyAAAABWFydElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAlhcnRfZmxhZ18FAAAABWFydElkAgAAAAFfBQAAAAphcnRpc3RBZGRyAQAAAAprZXlORlREYXRhAAAAAQAAAAJpZAkAASwAAAACAgAAAARuZnRfBQAAAAJpZAEAAAAKZ2V0U2FsZUtleQAAAAQAAAAGY2FsbGVyAAAABW5mdElkAAAABWFydElkAAAAC2NyZWF0b3JBZGRyCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADXNhbGUybmRfaW5mb18FAAAABmNhbGxlcgIAAAABXwUAAAAFbmZ0SWQCAAAAAV8FAAAABWFydElkAgAAAAFfBQAAAAtjcmVhdG9yQWRkcgEAAAAJZ2V0QmlkS2V5AAAABAAAAApvZmZlck93bmVyAAAABW5mdElkAAAACXNhbGVPd25lcgAAAAdvZmZlcklkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACW9mZmVyMm5kXwUAAAAKb2ZmZXJPd25lcgIAAAABXwUAAAAFbmZ0SWQCAAAAAV8FAAAACXNhbGVPd25lcgIAAAABXwUAAAAHb2ZmZXJJZAEAAAANZ2V0UmVxdWVzdEtleQAAAAQAAAAMcmVxdWVzdE93bmVyAAAAC2NyZWF0b3JBZGRyAAAABWFydElkAAAAAmlkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAC3JlcXVlc3QybmRfBQAAAAxyZXF1ZXN0T3duZXICAAAAAV8FAAAAC2NyZWF0b3JBZGRyAgAAAAFfBQAAAAVhcnRJZAIAAAABXwUAAAACaWQBAAAAE2dldEludEJ5S0Zyb21PcmFjbGUAAAABAAAAA2tleQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAACW9yYWNsZUZlZQUAAAADa2V5AgAAAB9JbnRlZ2VyIHVuZGVmaW5lIG9yIDAgaW4gb3JhY2xlAAAAABljdXJyZW50Q2VydGlmaWNhdGlvblByaWNlCQEAAAATZ2V0SW50QnlLRnJvbU9yYWNsZQAAAAEJAAEsAAAAAgIAAAASY2VydGlmaWNhdGlvbl9mZWVfCQACWAAAAAEFAAAAC3NpZ25Bc3NldElkAQAAAAxpZENhbGxlckRhdGUAAAABAAAAAWkDCQEAAAABIQAAAAEFAAAAC2RhcHBSdW5uaW5nCQAAAgAAAAEFAAAADm1haW50ZW5hbmNlTVNHCQAFFQAAAAMJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAEAAAAJaXNQYXltZW50AAAAAQAAAAFpAwkAAAAAAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAACQAAAgAAAAECAAAAE05vIHBheW1lbnQgYXR0YWNoZWQEAAAAB3BheW1lbnQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAABmFtb3VudAkBAAAABXZhbHVlAAAAAQgFAAAAB3BheW1lbnQAAAAGYW1vdW50CQAFFAAAAAIFAAAAB3BheW1lbnQFAAAABmFtb3VudAEAAAAMYXNzZXRJc1ZhbGlkAAAAAQAAAAxhc3NldERldGFpbHMDAwMJAAAAAAAAAggFAAAADGFzc2V0RGV0YWlscwAAAAhxdWFudGl0eQAAAAAAAAAAAQkAAAAAAAACCAUAAAAMYXNzZXREZXRhaWxzAAAACGRlY2ltYWxzAAAAAAAAAAAABwkAAAAAAAACCAUAAAAMYXNzZXREZXRhaWxzAAAACnJlaXNzdWFibGUHBwkAAAAAAAACCAUAAAAMYXNzZXREZXRhaWxzAAAABmlzc3VlcgUAAAAMYXJ0d29ya3NEYXBwBwEAAAAMaXNTaWduQXJ0TkZUAAAAAQAAAAJpZAQAAAAMYXNzZXREZXRhaWxzCQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAAAmlkCQEAAAAMYXNzZXRJc1ZhbGlkAAAAAQUAAAAMYXNzZXREZXRhaWxzAQAAABBhY2NlcHRlZEFzc2V0SWRzAAAAAQAAAAdhc3NldElkAwMDAwkBAAAAAiE9AAAAAgUAAAAHYXNzZXRJZAkAAlgAAAABBQAAAAtzaWduQXNzZXRJZAkBAAAAAiE9AAAAAgUAAAAHYXNzZXRJZAkAAlgAAAABBQAAAAx3YXZlc0Fzc2V0SWQHCQEAAAACIT0AAAACBQAAAAdhc3NldElkAgAAAAVXQVZFUwcJAQAAAAIhPQAAAAIFAAAAB2Fzc2V0SWQJAAJYAAAAAQUAAAALdXNkbkFzc2V0SWQHBwYBAAAADWdldEJpZEFzc2V0SWQAAAABAAAAB2Fzc2V0SWQDCQAAAAAAAAIFAAAAB2Fzc2V0SWQCAAAABVdBVkVTBQAAAAR1bml0CQACWQAAAAEFAAAAB2Fzc2V0SWQBAAAAFWdldFNhbGVPd25lckFuZFN0YXR1cwAAAAEAAAAFbmZ0aWQEAAAACXNhbGVPd25lcgkBAAAACWdldFN0ckJ5SwAAAAEJAAEsAAAAAgIAAAAWY3VycmVudF9vd25lcl9vbl9kYXBwXwUAAAAFbmZ0aWQDCQAAAAAAAAIJAAExAAAAAQUAAAAJc2FsZU93bmVyAAAAAAAAAAAACQAAAgAAAAECAAAADU5GVCBub3QgZm91bmQEAAAACnNhbGVTdGF0dXMJAQAAAAlnZXRTdHJCeUsAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA9zYWxlMm5kX3N0YXR1c18FAAAACXNhbGVPd25lcgIAAAABXwUAAAAFbmZ0aWQDCQEAAAACIT0AAAACBQAAAApzYWxlU3RhdHVzAgAAAARPUEVOCQAAAgAAAAECAAAAEE5GVCBub3QgZm9yIHNhbGUFAAAACXNhbGVPd25lcgEAAAAKZ2V0QmlkRGF0YQAAAAEAAAADa2V5BAAAAAdiaWREYXRhCQEAAAAJZ2V0U3RyQnlLAAAAAQkAASwAAAACBQAAAANrZXkCAAAABV9PUEVOAwkAAAAAAAACBQAAAAdiaWREYXRhAgAAAAAJAAACAAAAAQIAAAAPT2ZmZXIgbm90IGZvdW5kBAAAAApiaWREYXRhQXJyCQAEtQAAAAIFAAAAB2JpZERhdGECAAAAAV8EAAAAB2Fzc2V0SWQJAQAAAA1nZXRCaWRBc3NldElkAAAAAQkAAZEAAAACBQAAAApiaWREYXRhQXJyAAAAAAAAAAACCQAFFQAAAAMFAAAACmJpZERhdGFBcnIFAAAAB2Fzc2V0SWQFAAAAB2JpZERhdGEBAAAACmFydElzVmFsaWQAAAABAAAACWFydFN0YXR1cwMJAQAAAAIhPQAAAAIFAAAACWFydFN0YXR1cwUAAAAKYXJ0SWxsZWdhbAkBAAAAAiE9AAAAAgUAAAAJYXJ0U3RhdHVzBQAAAAxhcnRTdXNwZW5kZWQHAQAAAA5jaGVja0FydFN0YXR1cwAAAAIAAAAEYWRkcgAAAAJpZAQAAAAJYXJ0U3RhdHVzCQEAAAAMZ2V0QXJ0U3RyQnlLAAAAAQkBAAAAB2tleUZsYWcAAAACBQAAAARhZGRyBQAAAAJpZAMJAQAAAAphcnRJc1ZhbGlkAAAAAQUAAAAJYXJ0U3RhdHVzBgkAAAIAAAABCQABLAAAAAICAAAAHE9yaWdpbmFsIEFydHdvcmsgZmxhZ2dlZCBhcyAFAAAACWFydFN0YXR1cwEAAAARY2hlY2tBcnRpc3RTdGF0dXMAAAABAAAABGFkZHIEAAAADGFydGlzdFN0YXR1cwkBAAAADWdldFVzZXJTdHJCeUsAAAABCQEAAAANa2V5VXNlclN0YXR1cwAAAAEFAAAABGFkZHIDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAA11c2VyU3VzcGVuZGVkCQAETAAAAAIFAAAAC3VzZXJSZW1vdmVkBQAAAANuaWwFAAAADGFydGlzdFN0YXR1cwkAAAIAAAABCQABLAAAAAICAAAAEE9yaWdpbmFsIEFydGlzdCAFAAAADGFydGlzdFN0YXR1cwYBAAAADGNoZWNrTkZUSW5mbwAAAAEAAAAHYXNzZXRJZAQAAAAHbmZ0RGF0YQkABLUAAAACCQEAAAAMZ2V0QXJ0U3RyQnlLAAAAAQkBAAAACmtleU5GVERhdGEAAAABBQAAAAdhc3NldElkAgAAAAFfBAAAAAlhcnRTaWduSUQJAQAAAAxnZXRBcnRTdHJCeUsAAAABCQEAAAAJa2V5U2lnbklEAAAAAgkAAZEAAAACBQAAAAduZnREYXRhAAAAAAAAAAAGCQABkQAAAAIFAAAAB25mdERhdGEAAAAAAAAAAAUDAwkBAAAAASEAAAABCQEAAAAOY2hlY2tBcnRTdGF0dXMAAAACCQABkQAAAAIFAAAAB25mdERhdGEAAAAAAAAAAAYJAAGRAAAAAgUAAAAHbmZ0RGF0YQAAAAAAAAAABQkBAAAAASEAAAABCQEAAAARY2hlY2tBcnRpc3RTdGF0dXMAAAABCQABkQAAAAIFAAAAB25mdERhdGEAAAAAAAAAAAYHCQAFFgAAAAQHCQABkQAAAAIFAAAAB25mdERhdGEAAAAAAAAAAAUJAAGRAAAAAgUAAAAHbmZ0RGF0YQAAAAAAAAAABgUAAAAJYXJ0U2lnbklECQAFFgAAAAQGCQABkQAAAAIFAAAAB25mdERhdGEAAAAAAAAAAAUJAAGRAAAAAgUAAAAHbmZ0RGF0YQAAAAAAAAAABgUAAAAJYXJ0U2lnbklEAQAAAA1jaGVja0FSVEV4aXN0AAAAAgAAAAVhcnRJZAAAAAtjcmVhdG9yQWRkcgQAAAAJYXJ0U2lnbklECQEAAAAMZ2V0QXJ0U3RyQnlLAAAAAQkBAAAACWtleVNpZ25JRAAAAAIFAAAAC2NyZWF0b3JBZGRyBQAAAAVhcnRJZAMJAAAAAAAAAgkAATEAAAABBQAAAAlhcnRTaWduSUQAAAAAAAAAAAAJAAACAAAAAQIAAAAdQXJ0d29yayBub3QgZm91bmQgb24gU0lHTiBBcnQDAwkBAAAAASEAAAABCQEAAAAOY2hlY2tBcnRTdGF0dXMAAAACBQAAAAtjcmVhdG9yQWRkcgUAAAAFYXJ0SWQJAQAAAAEhAAAAAQkBAAAAEWNoZWNrQXJ0aXN0U3RhdHVzAAAAAQUAAAALY3JlYXRvckFkZHIHBwYBAAAADHNldFRyYW5zZmVycwAAAAYAAAAGYW1vdW50AAAAB2Fzc2V0SWQAAAAFbmZ0aWQAAAALY3JlYXRvckFkZHIAAAAJc2FsZU93bmVyAAAABmNhbGxlcgQAAAANYW1vdW50Rm9yU2lnbgkAAGsAAAADBQAAAAZhbW91bnQFAAAAB3NpZ25DdXQAAAAAAAAAAGQEAAAAEGFtb3VudEZvckNyZWF0b3IJAABrAAAAAwUAAAAGYW1vdW50BQAAAApjcmVhdG9yQ3V0AAAAAAAAAABkBAAAAA5hbW91bnRGb3JPd25lcgkAAGUAAAACBQAAAAZhbW91bnQJAABkAAAAAgUAAAANYW1vdW50Rm9yU2lnbgUAAAAQYW1vdW50Rm9yQ3JlYXRvcgQAAAAHc2lnbkZlZQkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAAC2ZlZVJlY2VpdmVyBQAAAA1hbW91bnRGb3JTaWduBQAAAAdhc3NldElkBAAAAApjcmVhdG9yRmVlCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAALY3JlYXRvckFkZHIFAAAAEGFtb3VudEZvckNyZWF0b3IFAAAAB2Fzc2V0SWQEAAAACG93bmVyRmVlCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAAJc2FsZU93bmVyBQAAAA5hbW91bnRGb3JPd25lcgUAAAAHYXNzZXRJZAQAAAAMY29sbGVjdG9yTkZUCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAAGY2FsbGVyAAAAAAAAAAABCQACWQAAAAEFAAAABW5mdGlkCQAFFgAAAAQFAAAAB3NpZ25GZWUFAAAACmNyZWF0b3JGZWUFAAAACG93bmVyRmVlBQAAAAxjb2xsZWN0b3JORlQBAAAAD3ZhbGlkYXRlTWluU2VsbAAAAAIAAAAHYXNzZXRJZAAAAAVwcmljZQQAAAAMbWluU2VsbFdhdmVzAwUAAAAIdW5pdFRlc3QAAAAAAAAAAAoJAQAAABNnZXRJbnRCeUtGcm9tT3JhY2xlAAAAAQIAAAAOd2F2ZXNfbWluX3NlbGwEAAAAC21pblNlbGxVc2RuAAAAAAAAD0JABAAAAAttaW5TZWxsU2lnbgMFAAAACHVuaXRUZXN0AAAAAAAAAAABCQAAaAAAAAIFAAAAGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UAAAAAAAAAAAIDAwMDAwkAAAAAAAACBQAAAAdhc3NldElkCQACWAAAAAEFAAAAC3VzZG5Bc3NldElkCQAAZgAAAAIFAAAAC21pblNlbGxVc2RuBQAAAAVwcmljZQcJAQAAAAIhPQAAAAIFAAAABXByaWNlAAAAAAAAAAAABwYDAwkAAAAAAAACBQAAAAdhc3NldElkCQACWAAAAAEFAAAAC3NpZ25Bc3NldElkCQAAZgAAAAIFAAAAC21pblNlbGxTaWduBQAAAAVwcmljZQcJAQAAAAIhPQAAAAIFAAAABXByaWNlAAAAAAAAAAAABwYDAwMJAAAAAAAAAgUAAAAHYXNzZXRJZAkAAlgAAAABBQAAAAx3YXZlc0Fzc2V0SWQGCQAAAAAAAAIFAAAAB2Fzc2V0SWQCAAAABVdBVkVTCQAAZgAAAAIFAAAADG1pblNlbGxXYXZlcwUAAAAFcHJpY2UHCQEAAAACIT0AAAACBQAAAAVwcmljZQAAAAAAAAAAAAcHBgEAAAAPcHJvdmlkZUJhc2VEYXRhAAAAAgAAAAFpAAAABW5mdElkBAAAAAskdDA4NTU1ODU5NAkBAAAADGlkQ2FsbGVyRGF0ZQAAAAEFAAAAAWkEAAAAAmlkCAUAAAALJHQwODU1NTg1OTQAAAACXzEEAAAABmNhbGxlcggFAAAACyR0MDg1NTU4NTk0AAAAAl8yBAAAAARkYXRlCAUAAAALJHQwODU1NTg1OTQAAAACXzMEAAAACyR0MDg1OTc4NjY2CQEAAAAMY2hlY2tORlRJbmZvAAAAAQUAAAAFbmZ0SWQEAAAACmlzVmFsaWRORlQIBQAAAAskdDA4NTk3ODY2NgAAAAJfMQQAAAAFYXJ0SWQIBQAAAAskdDA4NTk3ODY2NgAAAAJfMgQAAAALY3JlYXRvckFkZHIIBQAAAAskdDA4NTk3ODY2NgAAAAJfMwQAAAAJYXJ0U2lnbklECAUAAAALJHQwODU5Nzg2NjYAAAACXzQJAAUZAAAABwUAAAACaWQFAAAABmNhbGxlcgUAAAAEZGF0ZQUAAAAKaXNWYWxpZE5GVAUAAAAFYXJ0SWQFAAAAC2NyZWF0b3JBZGRyBQAAAAlhcnRTaWduSUQBAAAADnVwZGF0ZU51bVNhbGVzAAAAAAQAAAAIbnVtU2FsZXMJAQAAAAlnZXRJbnRCeUsAAAABBQAAAAludW1TYWxlc0sJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAludW1TYWxlc0sJAABkAAAAAgUAAAAIbnVtU2FsZXMAAAAAAAAAAAEAAAAKAAAAAWkBAAAAB3NlbGxORlQAAAACAAAABXByaWNlAAAABWFzc2V0BAAAAAskdDA4OTE5ODk1NQkBAAAACWlzUGF5bWVudAAAAAEFAAAAAWkEAAAAB3BheW1lbnQIBQAAAAskdDA4OTE5ODk1NQAAAAJfMQQAAAAGYW1vdW50CAUAAAALJHQwODkxOTg5NTUAAAACXzIEAAAABW5mdElkAwMJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkCQEAAAAMaXNTaWduQXJ0TkZUAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAcJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkAAAIAAAABAgAAABtPbmx5IFNJR04gQXJ0IE5GVCBhY2NlcHRlZC4EAAAACyR0MDkxMzQ5MjI2CQEAAAAPcHJvdmlkZUJhc2VEYXRhAAAAAgUAAAABaQUAAAAFbmZ0SWQEAAAAAmlkCAUAAAALJHQwOTEzNDkyMjYAAAACXzEEAAAABmNhbGxlcggFAAAACyR0MDkxMzQ5MjI2AAAAAl8yBAAAAARkYXRlCAUAAAALJHQwOTEzNDkyMjYAAAACXzMEAAAACmlzVmFsaWRORlQIBQAAAAskdDA5MTM0OTIyNgAAAAJfNAQAAAAFYXJ0SWQIBQAAAAskdDA5MTM0OTIyNgAAAAJfNQQAAAALY3JlYXRvckFkZHIIBQAAAAskdDA5MTM0OTIyNgAAAAJfNgQAAAAJYXJ0U2lnbklECAUAAAALJHQwOTEzNDkyMjYAAAACXzcDCQAAAAAAAAIJAAExAAAAAQUAAAAJYXJ0U2lnbklEAAAAAAAAAAAACQAAAgAAAAECAAAAHUFydHdvcmsgbm90IGZvdW5kIG9uIFNJR04gQXJ0AwkBAAAAASEAAAABBQAAAAppc1ZhbGlkTkZUCQAAAgAAAAECAAAAD05vdCBhIHZhbGlkIG5mdAMJAQAAAAEhAAAAAQkBAAAAEGFjY2VwdGVkQXNzZXRJZHMAAAABBQAAAAVhc3NldAkAAAIAAAABAgAAACFPbmx5IFNJR04sIFVTRE4gb3IgV0FWRVMgYWNjZXB0ZWQDCQAAAAAAAAIFAAAABXByaWNlAAAAAAAAAAAACQAAAgAAAAECAAAAGFdyb25nIG1pbmltdW0gc2VsbCBwcmljZQMJAQAAAAEhAAAAAQkBAAAAD3ZhbGlkYXRlTWluU2VsbAAAAAIFAAAABWFzc2V0BQAAAAVwcmljZQkAAAIAAAABAgAAABhXcm9uZyBtaW5pbXVtIHNlbGwgcHJpY2UJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQEAAAAKZ2V0U2FsZUtleQAAAAQFAAAABmNhbGxlcgUAAAAFbmZ0SWQFAAAABWFydElkBQAAAAtjcmVhdG9yQWRkcgIAAAAFX09QRU4JAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAEZGF0ZQIAAAABXwkAAaQAAAABBQAAAAVwcmljZQIAAAABXwUAAAAFYXNzZXQCAAAAAV8FAAAABW5mdElkAgAAAAFfBQAAAAVhcnRJZAIAAAABXwUAAAALY3JlYXRvckFkZHICAAAAAV8FAAAAAmlkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAD3NhbGUybmRfc3RhdHVzXwUAAAAGY2FsbGVyAgAAAAFfBQAAAAVuZnRJZAIAAAAET1BFTgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAICAAAAFmN1cnJlbnRfb3duZXJfb25fZGFwcF8FAAAABW5mdElkBQAAAAZjYWxsZXIFAAAAA25pbAAAAAFpAQAAAA91cGRhdGVTYWxlUHJpY2UAAAADAAAABW5mdElkAAAABXByaWNlAAAABWFzc2V0BAAAAA0kdDAxMDA5OTEwMTkxCQEAAAAPcHJvdmlkZUJhc2VEYXRhAAAAAgUAAAABaQUAAAAFbmZ0SWQEAAAAAmlkCAUAAAANJHQwMTAwOTkxMDE5MQAAAAJfMQQAAAAGY2FsbGVyCAUAAAANJHQwMTAwOTkxMDE5MQAAAAJfMgQAAAAEZGF0ZQgFAAAADSR0MDEwMDk5MTAxOTEAAAACXzMEAAAACmlzVmFsaWRORlQIBQAAAA0kdDAxMDA5OTEwMTkxAAAAAl80BAAAAAVhcnRJZAgFAAAADSR0MDEwMDk5MTAxOTEAAAACXzUEAAAAC2NyZWF0b3JBZGRyCAUAAAANJHQwMTAwOTkxMDE5MQAAAAJfNgQAAAAJYXJ0U2lnbklECAUAAAANJHQwMTAwOTkxMDE5MQAAAAJfNwMJAAAAAAAAAgkAATEAAAABBQAAAAlhcnRTaWduSUQAAAAAAAAAAAAJAAACAAAAAQIAAAAwQXJ0d29yayBub3QgZm91bmQgb24gU0lHTiBBcnQsIGNhbmNlbCB5b3VyIHNhbGUuAwkBAAAAASEAAAABBQAAAAppc1ZhbGlkTkZUCQAAAgAAAAECAAAAD05vdCBhIHZhbGlkIG5mdAQAAAAJc2FsZU93bmVyCQEAAAAJZ2V0U3RyQnlLAAAAAQkAASwAAAACAgAAABZjdXJyZW50X293bmVyX29uX2RhcHBfBQAAAAVuZnRJZAMJAQAAAAIhPQAAAAIFAAAACXNhbGVPd25lcgUAAAAGY2FsbGVyCQAAAgAAAAECAAAAFllvdSBkb24ndCBvd24gdGhpcyBORlQEAAAACnNhbGVTdGF0dXMJAQAAAAlnZXRTdHJCeUsAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA9zYWxlMm5kX3N0YXR1c18FAAAABmNhbGxlcgIAAAABXwUAAAAFbmZ0SWQDCQEAAAACIT0AAAACBQAAAApzYWxlU3RhdHVzAgAAAARPUEVOCQAAAgAAAAECAAAAD1NhbGUgbm90IGFjdGl2ZQMJAQAAAAEhAAAAAQkBAAAAEGFjY2VwdGVkQXNzZXRJZHMAAAABBQAAAAVhc3NldAkAAAIAAAABAgAAACFPbmx5IFNJR04sIFVTRE4gb3IgV0FWRVMgYWNjZXB0ZWQDCQAAAAAAAAIFAAAABXByaWNlAAAAAAAAAAAACQAAAgAAAAECAAAAGFdyb25nIG1pbmltdW0gc2VsbCBwcmljZQMJAQAAAAEhAAAAAQkBAAAAD3ZhbGlkYXRlTWluU2VsbAAAAAIFAAAABWFzc2V0BQAAAAVwcmljZQkAAAIAAAABAgAAABhXcm9uZyBtaW5pbXVtIHNlbGwgcHJpY2UEAAAAB3NhbGVLZXkJAQAAAApnZXRTYWxlS2V5AAAABAUAAAAGY2FsbGVyBQAAAAVuZnRJZAUAAAAFYXJ0SWQFAAAAC2NyZWF0b3JBZGRyBAAAAAhzYWxlSW5mbwkABLUAAAACCQEAAAAJZ2V0U3RyQnlLAAAAAQkAASwAAAACBQAAAAdzYWxlS2V5AgAAAAVfT1BFTgIAAAABXwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAAB3NhbGVLZXkCAAAABV9PUEVOCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABkQAAAAIFAAAACHNhbGVJbmZvAAAAAAAAAAAAAgAAAAFfCQABpAAAAAEFAAAABXByaWNlAgAAAAFfBQAAAAVhc3NldAIAAAABXwkAAZEAAAACBQAAAAhzYWxlSW5mbwAAAAAAAAAAAwIAAAABXwkAAZEAAAACBQAAAAhzYWxlSW5mbwAAAAAAAAAABAIAAAABXwkAAZEAAAACBQAAAAhzYWxlSW5mbwAAAAAAAAAABQIAAAABXwkAAZEAAAACBQAAAAhzYWxlSW5mbwAAAAAAAAAABgUAAAADbmlsAAAAAWkBAAAACmNhbmNlbFNhbGUAAAABAAAABW5mdElkBAAAAA0kdDAxMTMzMTExNTcxCQEAAAAPcHJvdmlkZUJhc2VEYXRhAAAAAgUAAAABaQUAAAAFbmZ0SWQEAAAAAmlkCAUAAAANJHQwMTEzMzExMTU3MQAAAAJfMQQAAAAGY2FsbGVyCAUAAAANJHQwMTEzMzExMTU3MQAAAAJfMgQAAAAEZGF0ZQgFAAAADSR0MDExMzMxMTE1NzEAAAACXzMEAAAACmlzVmFsaWRORlQIBQAAAA0kdDAxMTMzMTExNTcxAAAAAl80BAAAAAVhcnRJZAgFAAAADSR0MDExMzMxMTE1NzEAAAACXzUEAAAAC2NyZWF0b3JBZGRyCAUAAAANJHQwMTEzMzExMTU3MQAAAAJfNgQAAAAJYXJ0U2lnbklECAUAAAANJHQwMTEzMzExMTU3MQAAAAJfNwQAAAAJc2FsZU93bmVyCQEAAAAJZ2V0U3RyQnlLAAAAAQkAASwAAAACAgAAABZjdXJyZW50X293bmVyX29uX2RhcHBfBQAAAAVuZnRJZAMJAQAAAAIhPQAAAAIFAAAACXNhbGVPd25lcgUAAAAGY2FsbGVyCQAAAgAAAAECAAAAFllvdSBkb24ndCBvd24gdGhpcyBORlQEAAAACnNhbGVTdGF0dXMJAQAAAAlnZXRTdHJCeUsAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA9zYWxlMm5kX3N0YXR1c18FAAAABmNhbGxlcgIAAAABXwUAAAAFbmZ0SWQDCQEAAAACIT0AAAACBQAAAApzYWxlU3RhdHVzAgAAAARPUEVOCQAAAgAAAAECAAAAD1NhbGUgbm90IGFjdGl2ZQQAAAAHc2FsZUtleQkBAAAACmdldFNhbGVLZXkAAAAEBQAAAAZjYWxsZXIFAAAABW5mdElkBQAAAAVhcnRJZAUAAAALY3JlYXRvckFkZHIEAAAACHNhbGVJbmZvCQEAAAAJZ2V0U3RyQnlLAAAAAQkAASwAAAACBQAAAAdzYWxlS2V5AgAAAAVfT1BFTgkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAIFAAAAB3NhbGVLZXkCAAAABV9PUEVOCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAD3NhbGUybmRfc3RhdHVzXwUAAAAGY2FsbGVyAgAAAAFfBQAAAAVuZnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAICAAAAFmN1cnJlbnRfb3duZXJfb25fZGFwcF8FAAAABW5mdElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAAB3NhbGVLZXkCAAAAAV8FAAAAAmlkAgAAAApfQ0FOQ0VMTEVECQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAACHNhbGVJbmZvAgAAAAtfQ0FOQ0VMTEVEXwkAAaQAAAABBQAAAARkYXRlAgAAAAFfBQAAAAJpZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAAGY2FsbGVyAAAAAAAAAAABCQACWQAAAAEFAAAABW5mdElkBQAAAANuaWwAAAABaQEAAAAGYnV5TkZUAAAAAQAAAAVuZnRJZAQAAAANJHQwMTI0MDIxMjQ5NAkBAAAAD3Byb3ZpZGVCYXNlRGF0YQAAAAIFAAAAAWkFAAAABW5mdElkBAAAAAJpZAgFAAAADSR0MDEyNDAyMTI0OTQAAAACXzEEAAAABmNhbGxlcggFAAAADSR0MDEyNDAyMTI0OTQAAAACXzIEAAAABGRhdGUIBQAAAA0kdDAxMjQwMjEyNDk0AAAAAl8zBAAAAAppc1ZhbGlkTkZUCAUAAAANJHQwMTI0MDIxMjQ5NAAAAAJfNAQAAAAFYXJ0SWQIBQAAAA0kdDAxMjQwMjEyNDk0AAAAAl81BAAAAAtjcmVhdG9yQWRkcggFAAAADSR0MDEyNDAyMTI0OTQAAAACXzYEAAAACWFydFNpZ25JRAgFAAAADSR0MDEyNDAyMTI0OTQAAAACXzcDCQAAAAAAAAIJAAExAAAAAQUAAAAJYXJ0U2lnbklEAAAAAAAAAAAACQAAAgAAAAECAAAAMEFydHdvcmsgbm90IGZvdW5kIG9uIFNJR04gQXJ0LCBjYW5jZWwgeW91ciBzYWxlLgMJAQAAAAEhAAAAAQUAAAAKaXNWYWxpZE5GVAkAAAIAAAABAgAAAA9Ob3QgYSB2YWxpZCBuZnQEAAAACXNhbGVPd25lcgkBAAAAFWdldFNhbGVPd25lckFuZFN0YXR1cwAAAAEFAAAABW5mdElkBAAAAAdzYWxlS2V5CQEAAAAKZ2V0U2FsZUtleQAAAAQFAAAACXNhbGVPd25lcgUAAAAFbmZ0SWQFAAAABWFydElkBQAAAAtjcmVhdG9yQWRkcgQAAAAIc2FsZUluZm8JAQAAAAlnZXRTdHJCeUsAAAABCQABLAAAAAIFAAAAB3NhbGVLZXkCAAAABV9PUEVOAwkAAAAAAAACCQABMQAAAAEFAAAACHNhbGVJbmZvAAAAAAAAAAAACQAAAgAAAAECAAAAD1NhbGUgTm90IGZvdW5kIQQAAAANc2FsZUluZm9BcnJheQkABLUAAAACBQAAAAhzYWxlSW5mbwIAAAABXwMJAAAAAAAAAgkABLYAAAABCQABkQAAAAIFAAAADXNhbGVJbmZvQXJyYXkAAAAAAAAAAAEAAAAAAAAAAAAJAAACAAAAAQIAAAAKT2ZmZXIgb25seQQAAAANJHQwMTI5OTExMzAyNwkBAAAACWlzUGF5bWVudAAAAAEFAAAAAWkEAAAAB3BheW1lbnQIBQAAAA0kdDAxMjk5MTEzMDI3AAAAAl8xBAAAAAZhbW91bnQIBQAAAA0kdDAxMjk5MTEzMDI3AAAAAl8yBAAAAA9wYXltZW50QXNzZXRTdHIDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkAAlgAAAABCQEAAAAFdmFsdWUAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkAgAAAAADAwkBAAAAAiE9AAAAAgkAAZEAAAACBQAAAA1zYWxlSW5mb0FycmF5AAAAAAAAAAABCQABpAAAAAEFAAAABmFtb3VudAYJAQAAAAIhPQAAAAIJAAGRAAAAAgUAAAANc2FsZUluZm9BcnJheQAAAAAAAAAAAgUAAAAPcGF5bWVudEFzc2V0U3RyCQAAAgAAAAECAAAAGlBheW1lbnQgaW5mb3MgZG9uJ3QgbWF0Y2guBAAAAA1hbW91bnRGb3JTaWduCQAAawAAAAMFAAAABmFtb3VudAUAAAAHc2lnbkN1dAAAAAAAAAAAZAQAAAAQYW1vdW50Rm9yQ3JlYXRvcgkAAGsAAAADBQAAAAZhbW91bnQFAAAACmNyZWF0b3JDdXQAAAAAAAAAAGQEAAAADmFtb3VudEZvck93bmVyCQAAZQAAAAIFAAAABmFtb3VudAkAAGQAAAACBQAAAA1hbW91bnRGb3JTaWduBQAAABBhbW91bnRGb3JDcmVhdG9yBAAAAA0kdDAxMzUzMDEzNjU4CQEAAAAMc2V0VHJhbnNmZXJzAAAABgUAAAAGYW1vdW50CAUAAAAHcGF5bWVudAAAAAdhc3NldElkBQAAAAVuZnRJZAUAAAALY3JlYXRvckFkZHIFAAAACXNhbGVPd25lcgUAAAAGY2FsbGVyBAAAAAdzaWduRmVlCAUAAAANJHQwMTM1MzAxMzY1OAAAAAJfMQQAAAAKY3JlYXRvckZlZQgFAAAADSR0MDEzNTMwMTM2NTgAAAACXzIEAAAACG93bmVyRmVlCAUAAAANJHQwMTM1MzAxMzY1OAAAAAJfMwQAAAAMY29sbGVjdG9yTkZUCAUAAAANJHQwMTM1MzAxMzY1OAAAAAJfNAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAIFAAAAB3NhbGVLZXkCAAAABV9PUEVOCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAD3NhbGUybmRfc3RhdHVzXwUAAAAJc2FsZU93bmVyAgAAAAFfBQAAAAVuZnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAICAAAAFmN1cnJlbnRfb3duZXJfb25fZGFwcF8FAAAABW5mdElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAAB3NhbGVLZXkCAAAAAV8FAAAAAmlkAgAAAAdfQ0xPU0VECQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAhzYWxlSW5mbwIAAAAIX0NMT1NFRF8JAAGkAAAAAQUAAAAEZGF0ZQIAAAABXwUAAAACaWQCAAAAAV8FAAAABmNhbGxlcgkABEwAAAACCQEAAAAOdXBkYXRlTnVtU2FsZXMAAAAACQAETAAAAAIFAAAAB3NpZ25GZWUJAARMAAAAAgUAAAAKY3JlYXRvckZlZQkABEwAAAACBQAAAAhvd25lckZlZQkABEwAAAACBQAAAAxjb2xsZWN0b3JORlQFAAAAA25pbAAAAAFpAQAAAAhzZXRPZmZlcgAAAAEAAAAFbmZ0SWQEAAAADSR0MDE0MDY2MTQxNjIJAQAAAA9wcm92aWRlQmFzZURhdGEAAAACBQAAAAFpBQAAAAVuZnRJZAQAAAACaWQIBQAAAA0kdDAxNDA2NjE0MTYyAAAAAl8xBAAAAApvZmZlck93bmVyCAUAAAANJHQwMTQwNjYxNDE2MgAAAAJfMgQAAAAEZGF0ZQgFAAAADSR0MDE0MDY2MTQxNjIAAAACXzMEAAAACmlzVmFsaWRORlQIBQAAAA0kdDAxNDA2NjE0MTYyAAAAAl80BAAAAAVhcnRJZAgFAAAADSR0MDE0MDY2MTQxNjIAAAACXzUEAAAAC2NyZWF0b3JBZGRyCAUAAAANJHQwMTQwNjYxNDE2MgAAAAJfNgQAAAAJYXJ0U2lnbklECAUAAAANJHQwMTQwNjYxNDE2MgAAAAJfNwMJAQAAAAEhAAAAAQUAAAAKaXNWYWxpZE5GVAkAAAIAAAABAgAAAA9Ob3QgYSB2YWxpZCBuZnQEAAAADSR0MDE0MjIzMTQyNTkJAQAAAAlpc1BheW1lbnQAAAABBQAAAAFpBAAAAAdwYXltZW50CAUAAAANJHQwMTQyMjMxNDI1OQAAAAJfMQQAAAAGYW1vdW50CAUAAAANJHQwMTQyMjMxNDI1OQAAAAJfMgQAAAAHYXNzZXRJZAMJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQCAAAABVdBVkVTCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQDCQEAAAABIQAAAAEJAQAAABBhY2NlcHRlZEFzc2V0SWRzAAAAAQUAAAAHYXNzZXRJZAkAAAIAAAABAgAAABJhc3NldCBub3QgYWNjZXB0ZWQDCQAAAAAAAAIFAAAABmFtb3VudAAAAAAAAAAAAAkAAAIAAAABAgAAABZPZmZlciBvZiAwIG5vdCBhbGxvd2VkAwkBAAAAASEAAAABCQEAAAAPdmFsaWRhdGVNaW5TZWxsAAAAAgUAAAAHYXNzZXRJZAUAAAAGYW1vdW50CQAAAgAAAAECAAAAGFdyb25nIG1pbmltdW0gc2VsbCBwcmljZQQAAAAJc2FsZU93bmVyCQEAAAAVZ2V0U2FsZU93bmVyQW5kU3RhdHVzAAAAAQUAAAAFbmZ0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQEAAAAJZ2V0QmlkS2V5AAAABAUAAAAKb2ZmZXJPd25lcgUAAAAFbmZ0SWQFAAAACXNhbGVPd25lcgUAAAACaWQCAAAABV9PUEVOCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAAaQAAAABBQAAAARkYXRlAgAAAAFfCQABpAAAAAEFAAAABmFtb3VudAIAAAABXwUAAAAHYXNzZXRJZAIAAAABXwUAAAAFbmZ0SWQCAAAAAV8FAAAABWFydElkAgAAAAFfBQAAAAtjcmVhdG9yQWRkcgIAAAABXwUAAAAKb2ZmZXJPd25lcgIAAAABXwUAAAACaWQFAAAAA25pbAAAAAFpAQAAAAthY2NlcHRPZmZlcgAAAAMAAAAFbmZ0SWQAAAAHb2ZmZXJJZAAAAApvZmZlck93bmVyBAAAAA0kdDAxNTA2MTE1MTUzCQEAAAAPcHJvdmlkZUJhc2VEYXRhAAAAAgUAAAABaQUAAAAFbmZ0SWQEAAAAAmlkCAUAAAANJHQwMTUwNjExNTE1MwAAAAJfMQQAAAAGY2FsbGVyCAUAAAANJHQwMTUwNjExNTE1MwAAAAJfMgQAAAAEZGF0ZQgFAAAADSR0MDE1MDYxMTUxNTMAAAACXzMEAAAACmlzVmFsaWRORlQIBQAAAA0kdDAxNTA2MTE1MTUzAAAAAl80BAAAAAVhcnRJZAgFAAAADSR0MDE1MDYxMTUxNTMAAAACXzUEAAAAC2NyZWF0b3JBZGRyCAUAAAANJHQwMTUwNjExNTE1MwAAAAJfNgQAAAAJYXJ0U2lnbklECAUAAAANJHQwMTUwNjExNTE1MwAAAAJfNwMJAQAAAAEhAAAAAQUAAAAKaXNWYWxpZE5GVAkAAAIAAAABAgAAAA9Ob3QgYSB2YWxpZCBuZnQEAAAACXNhbGVPd25lcgkBAAAAFWdldFNhbGVPd25lckFuZFN0YXR1cwAAAAEFAAAABW5mdElkAwkBAAAAAiE9AAAAAgUAAAAGY2FsbGVyBQAAAAlzYWxlT3duZXIJAAACAAAAAQIAAAAgT25seSBzYWxlIG93bmVyIGNhbiBhY2NlcHQgb2ZmZXIEAAAABmJpZEtleQkBAAAACWdldEJpZEtleQAAAAQFAAAACm9mZmVyT3duZXIFAAAABW5mdElkBQAAAAlzYWxlT3duZXIFAAAAB29mZmVySWQEAAAADSR0MDE1NDA3MTU0NjIJAQAAAApnZXRCaWREYXRhAAAAAQUAAAAGYmlkS2V5BAAAAApiaWREYXRhQXJyCAUAAAANJHQwMTU0MDcxNTQ2MgAAAAJfMQQAAAAHYXNzZXRJZAgFAAAADSR0MDE1NDA3MTU0NjIAAAACXzIEAAAAB2JpZERhdGEIBQAAAA0kdDAxNTQwNzE1NDYyAAAAAl8zBAAAAAdzYWxlS2V5CQEAAAAKZ2V0U2FsZUtleQAAAAQFAAAACXNhbGVPd25lcgUAAAAFbmZ0SWQFAAAABWFydElkBQAAAAtjcmVhdG9yQWRkcgQAAAAIc2FsZUluZm8JAQAAAAlnZXRTdHJCeUsAAAABCQABLAAAAAIFAAAAB3NhbGVLZXkCAAAA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", "height": 1584562, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 774GnEpNjts7UyQwc9LotQmfJK2nqk49spNAAz9Hf6w5 Next: rYP3r4izph4MCsVztBC4weMuYDpvgYvPPsfBmYk4eFF Diff:
Old | New | Differences | |
---|---|---|---|
25 | 25 | ||
26 | 26 | let k = "3MsG6jPNCrVJUtYB7XJBxS7utWsXAf4n9Vp" | |
27 | 27 | ||
28 | - | let l = | |
28 | + | let l = 3 | |
29 | 29 | ||
30 | - | let m = | |
30 | + | let m = 10 | |
31 | 31 | ||
32 | - | let n = | |
32 | + | let n = valueOrElse(getBoolean(f, "conf_dapp_is_running"), true) | |
33 | 33 | ||
34 | - | let o = valueOrElse( | |
34 | + | let o = valueOrElse(getString(f, "conf_maintenance_msg"), "") | |
35 | 35 | ||
36 | - | let p = | |
36 | + | let p = "SUSPENDED" | |
37 | 37 | ||
38 | - | let q = " | |
38 | + | let q = "REMOVED" | |
39 | 39 | ||
40 | - | let r = " | |
40 | + | let r = "ILLEGAL" | |
41 | 41 | ||
42 | - | let s = " | |
42 | + | let s = "SUSPENDED" | |
43 | 43 | ||
44 | - | let t = " | |
44 | + | let t = "num_sales" | |
45 | 45 | ||
46 | 46 | func u (v) = valueOrElse(getString(f, v), "Error") | |
47 | 47 | ||
67 | 67 | func F (G) = ("nft_" + G) | |
68 | 68 | ||
69 | 69 | ||
70 | - | func H ( | |
70 | + | func H (I,J,D,K) = ((((((("sale2nd_info_" + I) + "_") + J) + "_") + D) + "_") + K) | |
71 | 71 | ||
72 | 72 | ||
73 | - | let I = H(("certification_fee_" + toBase58String(h))) | |
74 | - | ||
75 | - | func J (K) = if (!(o)) | |
76 | - | then throw(p) | |
77 | - | else $Tuple3(toBase58String(K.transactionId), toBase58String(K.caller.bytes), lastBlock.timestamp) | |
73 | + | func L (M,J,N,O) = ((((((("offer2nd_" + M) + "_") + J) + "_") + N) + "_") + O) | |
78 | 74 | ||
79 | 75 | ||
80 | - | func L (K) = if ((size(K.payments) == 0)) | |
76 | + | func P (Q,K,D,G) = ((((((("request2nd_" + Q) + "_") + K) + "_") + D) + "_") + G) | |
77 | + | ||
78 | + | ||
79 | + | func R (v) = valueOrErrorMessage(getInteger(b, v), "Integer undefine or 0 in oracle") | |
80 | + | ||
81 | + | ||
82 | + | let S = R(("certification_fee_" + toBase58String(h))) | |
83 | + | ||
84 | + | func T (U) = if (!(n)) | |
85 | + | then throw(o) | |
86 | + | else $Tuple3(toBase58String(U.transactionId), toBase58String(U.caller.bytes), lastBlock.timestamp) | |
87 | + | ||
88 | + | ||
89 | + | func V (U) = if ((size(U.payments) == 0)) | |
81 | 90 | then throw("No payment attached") | |
82 | 91 | else { | |
83 | - | let | |
84 | - | let | |
85 | - | $Tuple2( | |
92 | + | let W = value(U.payments[0]) | |
93 | + | let X = value(W.amount) | |
94 | + | $Tuple2(W, X) | |
86 | 95 | } | |
87 | 96 | ||
88 | 97 | ||
89 | - | func O (G) = { | |
90 | - | let P = value(assetInfo(G)) | |
91 | - | if (if (if (if ((P.quantity != 1)) | |
92 | - | then true | |
93 | - | else (P.decimals != 0)) | |
94 | - | then true | |
95 | - | else (P.reissuable != false)) | |
96 | - | then true | |
97 | - | else (P.issuer != d)) | |
98 | - | then false | |
99 | - | else true | |
98 | + | func Y (Z) = if (if (if ((Z.quantity == 1)) | |
99 | + | then (Z.decimals == 0) | |
100 | + | else false) | |
101 | + | then (Z.reissuable == false) | |
102 | + | else false) | |
103 | + | then (Z.issuer == d) | |
104 | + | else false | |
105 | + | ||
106 | + | ||
107 | + | func aa (G) = { | |
108 | + | let Z = value(assetInfo(G)) | |
109 | + | Y(Z) | |
100 | 110 | } | |
101 | 111 | ||
102 | 112 | ||
103 | - | func | |
104 | - | then ( | |
113 | + | func ab (ac) = if (if (if (if ((ac != toBase58String(h))) | |
114 | + | then (ac != toBase58String(j)) | |
105 | 115 | else false) | |
106 | - | then ( | |
116 | + | then (ac != "WAVES") | |
107 | 117 | else false) | |
108 | - | then ( | |
118 | + | then (ac != toBase58String(i)) | |
109 | 119 | else false) | |
110 | 120 | then false | |
111 | 121 | else true | |
112 | 122 | ||
113 | 123 | ||
114 | - | func | |
124 | + | func ad (ac) = if ((ac == "WAVES")) | |
115 | 125 | then unit | |
116 | - | else fromBase58String( | |
126 | + | else fromBase58String(ac) | |
117 | 127 | ||
118 | 128 | ||
119 | - | func | |
120 | - | let | |
121 | - | if ((size( | |
129 | + | func ae (af) = { | |
130 | + | let N = x(("current_owner_on_dapp_" + af)) | |
131 | + | if ((size(N) == 0)) | |
122 | 132 | then throw("NFT not found") | |
123 | 133 | else { | |
124 | - | let | |
125 | - | if (( | |
134 | + | let ag = x(((("sale2nd_status_" + N) + "_") + af)) | |
135 | + | if ((ag != "OPEN")) | |
126 | 136 | then throw("NFT not for sale") | |
127 | - | else | |
137 | + | else N | |
128 | 138 | } | |
129 | 139 | } | |
130 | 140 | ||
131 | 141 | ||
132 | - | func | |
133 | - | let | |
134 | - | if (( | |
142 | + | func ah (v) = { | |
143 | + | let ai = x((v + "_OPEN")) | |
144 | + | if ((ai == "")) | |
135 | 145 | then throw("Offer not found") | |
136 | 146 | else { | |
137 | - | let | |
138 | - | let | |
139 | - | $Tuple3( | |
147 | + | let aj = split(ai, "_") | |
148 | + | let ac = ad(aj[2]) | |
149 | + | $Tuple3(aj, ac, ai) | |
140 | 150 | } | |
141 | 151 | } | |
142 | 152 | ||
143 | 153 | ||
144 | - | func aa (A,G) = { | |
145 | - | let ab = w(E(A, G)) | |
146 | - | if (if ((ab == s)) | |
154 | + | func ak (al) = if ((al != r)) | |
155 | + | then (al != s) | |
156 | + | else false | |
157 | + | ||
158 | + | ||
159 | + | func am (A,G) = { | |
160 | + | let al = w(E(A, G)) | |
161 | + | if (ak(al)) | |
147 | 162 | then true | |
148 | - | else (ab == t)) | |
149 | - | then throw(("Original Artwork flagged as " + ab)) | |
163 | + | else throw(("Original Artwork flagged as " + al)) | |
164 | + | } | |
165 | + | ||
166 | + | ||
167 | + | func an (A) = { | |
168 | + | let ao = u(z(A)) | |
169 | + | if (containsElement([p, q], ao)) | |
170 | + | then throw(("Original Artist " + ao)) | |
150 | 171 | else true | |
151 | 172 | } | |
152 | 173 | ||
153 | 174 | ||
154 | - | func ac (A) = { | |
155 | - | let ad = u(z(A)) | |
156 | - | if (containsElement([q, r], ad)) | |
157 | - | then throw(("Original Artist " + ad)) | |
158 | - | else true | |
175 | + | func ap (ac) = { | |
176 | + | let aq = split(w(F(ac)), "_") | |
177 | + | let ar = w(B(aq[6], aq[5])) | |
178 | + | if (if (!(am(aq[6], aq[5]))) | |
179 | + | then !(an(aq[6])) | |
180 | + | else false) | |
181 | + | then $Tuple4(false, aq[5], aq[6], ar) | |
182 | + | else $Tuple4(true, aq[5], aq[6], ar) | |
159 | 183 | } | |
160 | 184 | ||
161 | 185 | ||
162 | - | func ae (R) = { | |
163 | - | let af = split(w(F(R)), "_") | |
164 | - | let ag = w(B(af[6], af[5])) | |
165 | - | if (if (!(aa(af[6], af[5]))) | |
166 | - | then !(ac(af[6])) | |
167 | - | else false) | |
168 | - | then $Tuple4(false, af[5], af[6], ag) | |
169 | - | else $Tuple4(true, af[5], af[6], ag) | |
170 | - | } | |
171 | - | ||
172 | - | ||
173 | - | func ah (D,ai) = { | |
174 | - | let ag = w(B(ai, D)) | |
175 | - | if ((size(ag) == 0)) | |
186 | + | func as (D,K) = { | |
187 | + | let ar = w(B(K, D)) | |
188 | + | if ((size(ar) == 0)) | |
176 | 189 | then throw("Artwork not found on SIGN Art") | |
177 | - | else if (if (!( | |
178 | - | then !( | |
190 | + | else if (if (!(am(K, D))) | |
191 | + | then !(an(K)) | |
179 | 192 | else false) | |
180 | 193 | then false | |
181 | 194 | else true | |
182 | 195 | } | |
183 | 196 | ||
184 | 197 | ||
185 | - | func | |
186 | - | let | |
187 | - | let | |
188 | - | let | |
189 | - | let | |
190 | - | let | |
191 | - | let | |
192 | - | let | |
193 | - | $Tuple4( | |
198 | + | func at (X,ac,af,K,N,I) = { | |
199 | + | let au = fraction(X, l, 100) | |
200 | + | let av = fraction(X, m, 100) | |
201 | + | let aw = (X - (au + av)) | |
202 | + | let ax = ScriptTransfer(Address(fromBase58String(e)), au, ac) | |
203 | + | let ay = ScriptTransfer(Address(fromBase58String(K)), av, ac) | |
204 | + | let az = ScriptTransfer(Address(fromBase58String(N)), aw, ac) | |
205 | + | let aA = ScriptTransfer(Address(fromBase58String(I)), 1, fromBase58String(af)) | |
206 | + | $Tuple4(ax, ay, az, aA) | |
194 | 207 | } | |
195 | 208 | ||
196 | 209 | ||
197 | - | func | |
198 | - | let | |
210 | + | func aB (ac,aC) = { | |
211 | + | let aD = if (a) | |
199 | 212 | then 10 | |
200 | - | else | |
201 | - | let | |
202 | - | let | |
213 | + | else R("waves_min_sell") | |
214 | + | let aE = 1000000 | |
215 | + | let aF = if (a) | |
203 | 216 | then 1 | |
204 | - | else ( | |
205 | - | if (if (if (if (if (( | |
206 | - | then ( | |
217 | + | else (S * 2) | |
218 | + | if (if (if (if (if ((ac == toBase58String(i))) | |
219 | + | then (aE > aC) | |
207 | 220 | else false) | |
208 | - | then ( | |
221 | + | then (aC != 0) | |
209 | 222 | else false) | |
210 | 223 | then true | |
211 | - | else if (if (( | |
212 | - | then ( | |
224 | + | else if (if ((ac == toBase58String(h))) | |
225 | + | then (aF > aC) | |
213 | 226 | else false) | |
214 | - | then ( | |
227 | + | then (aC != 0) | |
215 | 228 | else false) | |
216 | 229 | then true | |
217 | - | else if (if (if (( | |
230 | + | else if (if (if ((ac == toBase58String(j))) | |
218 | 231 | then true | |
219 | - | else ( | |
220 | - | then ( | |
232 | + | else (ac == "WAVES")) | |
233 | + | then (aD > aC) | |
221 | 234 | else false) | |
222 | - | then ( | |
235 | + | then (aC != 0) | |
223 | 236 | else false) | |
224 | 237 | then false | |
225 | 238 | else true | |
226 | 239 | } | |
227 | 240 | ||
228 | 241 | ||
229 | - | @Callable(K) | |
230 | - | func sellNFT (at,ax) = { | |
231 | - | let ay = J(K) | |
232 | - | let G = ay._1 | |
233 | - | let ak = ay._2 | |
234 | - | let az = ay._3 | |
235 | - | let aA = L(K) | |
236 | - | let M = aA._1 | |
237 | - | let N = aA._2 | |
238 | - | let aB = if (if (isDefined(M.assetId)) | |
239 | - | then O(value(M.assetId)) | |
242 | + | func aG (U,J) = { | |
243 | + | let aH = T(U) | |
244 | + | let G = aH._1 | |
245 | + | let I = aH._2 | |
246 | + | let aI = aH._3 | |
247 | + | let aJ = ap(J) | |
248 | + | let aK = aJ._1 | |
249 | + | let D = aJ._2 | |
250 | + | let K = aJ._3 | |
251 | + | let ar = aJ._4 | |
252 | + | $Tuple7(G, I, aI, aK, D, K, ar) | |
253 | + | } | |
254 | + | ||
255 | + | ||
256 | + | func aL () = { | |
257 | + | let aM = y(t) | |
258 | + | IntegerEntry(t, (aM + 1)) | |
259 | + | } | |
260 | + | ||
261 | + | ||
262 | + | @Callable(U) | |
263 | + | func sellNFT (aC,aN) = { | |
264 | + | let aO = V(U) | |
265 | + | let W = aO._1 | |
266 | + | let X = aO._2 | |
267 | + | let J = if (if (isDefined(W.assetId)) | |
268 | + | then aa(value(W.assetId)) | |
240 | 269 | else false) | |
241 | - | then toBase58String(value( | |
270 | + | then toBase58String(value(W.assetId)) | |
242 | 271 | else throw("Only SIGN Art NFT accepted.") | |
243 | - | let aC = ae(aB) | |
244 | - | let aD = aC._1 | |
245 | - | let D = aC._2 | |
246 | - | let ai = aC._3 | |
247 | - | let ag = aC._4 | |
248 | - | if ((size(ag) == 0)) | |
272 | + | let aP = aG(U, J) | |
273 | + | let G = aP._1 | |
274 | + | let I = aP._2 | |
275 | + | let aI = aP._3 | |
276 | + | let aK = aP._4 | |
277 | + | let D = aP._5 | |
278 | + | let K = aP._6 | |
279 | + | let ar = aP._7 | |
280 | + | if ((size(ar) == 0)) | |
249 | 281 | then throw("Artwork not found on SIGN Art") | |
250 | - | else if (!( | |
251 | - | then throw(" | |
252 | - | else if (!( | |
282 | + | else if (!(aK)) | |
283 | + | then throw("Not a valid nft") | |
284 | + | else if (!(ab(aN))) | |
253 | 285 | then throw("Only SIGN, USDN or WAVES accepted") | |
254 | - | else if (( | |
286 | + | else if ((aC == 0)) | |
255 | 287 | then throw("Wrong minimum sell price") | |
256 | - | else if (!( | |
288 | + | else if (!(aB(aN, aC))) | |
257 | 289 | then throw("Wrong minimum sell price") | |
258 | - | else [StringEntry((( | |
290 | + | else [StringEntry((H(I, J, D, K) + "_OPEN"), ((((((((((((toString(aI) + "_") + toString(aC)) + "_") + aN) + "_") + J) + "_") + D) + "_") + K) + "_") + G)), StringEntry(((("sale2nd_status_" + I) + "_") + J), "OPEN"), StringEntry(("current_owner_on_dapp_" + J), I)] | |
259 | 291 | } | |
260 | 292 | ||
261 | 293 | ||
262 | 294 | ||
263 | - | @Callable(K) | |
264 | - | func updateSalePrice (U,at,ax) = { | |
265 | - | let aE = J(K) | |
266 | - | let G = aE._1 | |
267 | - | let ak = aE._2 | |
268 | - | let az = aE._3 | |
269 | - | let aF = ae(U) | |
270 | - | let aD = aF._1 | |
271 | - | let D = aF._2 | |
272 | - | let ai = aF._3 | |
273 | - | let ag = aF._4 | |
274 | - | if ((size(ag) == 0)) | |
295 | + | @Callable(U) | |
296 | + | func updateSalePrice (J,aC,aN) = { | |
297 | + | let aQ = aG(U, J) | |
298 | + | let G = aQ._1 | |
299 | + | let I = aQ._2 | |
300 | + | let aI = aQ._3 | |
301 | + | let aK = aQ._4 | |
302 | + | let D = aQ._5 | |
303 | + | let K = aQ._6 | |
304 | + | let ar = aQ._7 | |
305 | + | if ((size(ar) == 0)) | |
275 | 306 | then throw("Artwork not found on SIGN Art, cancel your sale.") | |
276 | - | else if (!( | |
277 | - | then throw(" | |
307 | + | else if (!(aK)) | |
308 | + | then throw("Not a valid nft") | |
278 | 309 | else { | |
279 | - | let | |
280 | - | if (( | |
310 | + | let N = x(("current_owner_on_dapp_" + J)) | |
311 | + | if ((N != I)) | |
281 | 312 | then throw("You don't own this NFT") | |
282 | 313 | else { | |
283 | - | let | |
284 | - | if (( | |
314 | + | let ag = x(((("sale2nd_status_" + I) + "_") + J)) | |
315 | + | if ((ag != "OPEN")) | |
285 | 316 | then throw("Sale not active") | |
286 | - | else if (!( | |
317 | + | else if (!(ab(aN))) | |
287 | 318 | then throw("Only SIGN, USDN or WAVES accepted") | |
288 | - | else if (( | |
319 | + | else if ((aC == 0)) | |
289 | 320 | then throw("Wrong minimum sell price") | |
290 | - | else if (!( | |
321 | + | else if (!(aB(aN, aC))) | |
291 | 322 | then throw("Wrong minimum sell price") | |
292 | 323 | else { | |
293 | - | let | |
294 | - | let | |
295 | - | [StringEntry(( | |
324 | + | let aR = H(I, J, D, K) | |
325 | + | let aS = split(x((aR + "_OPEN")), "_") | |
326 | + | [StringEntry((aR + "_OPEN"), ((((((((((((aS[0] + "_") + toString(aC)) + "_") + aN) + "_") + aS[3]) + "_") + aS[4]) + "_") + aS[5]) + "_") + aS[6]))] | |
296 | 327 | } | |
297 | 328 | } | |
298 | 329 | } | |
300 | 331 | ||
301 | 332 | ||
302 | 333 | ||
303 | - | @Callable(K) | |
304 | - | func cancelSale (U) = { | |
305 | - | let aI = J(K) | |
306 | - | let G = aI._1 | |
307 | - | let ak = aI._2 | |
308 | - | let az = aI._3 | |
309 | - | let aJ = ae(U) | |
310 | - | let aD = aJ._1 | |
311 | - | let D = aJ._2 | |
312 | - | let ai = aJ._3 | |
313 | - | let ag = aJ._4 | |
314 | - | let V = x(("current_owner_on_dapp_" + U)) | |
315 | - | if ((V != ak)) | |
334 | + | @Callable(U) | |
335 | + | func cancelSale (J) = { | |
336 | + | let aT = aG(U, J) | |
337 | + | let G = aT._1 | |
338 | + | let I = aT._2 | |
339 | + | let aI = aT._3 | |
340 | + | let aK = aT._4 | |
341 | + | let D = aT._5 | |
342 | + | let K = aT._6 | |
343 | + | let ar = aT._7 | |
344 | + | let N = x(("current_owner_on_dapp_" + J)) | |
345 | + | if ((N != I)) | |
316 | 346 | then throw("You don't own this NFT") | |
317 | 347 | else { | |
318 | - | let | |
319 | - | if (( | |
348 | + | let ag = x(((("sale2nd_status_" + I) + "_") + J)) | |
349 | + | if ((ag != "OPEN")) | |
320 | 350 | then throw("Sale not active") | |
321 | 351 | else { | |
322 | - | let | |
323 | - | let | |
324 | - | [DeleteEntry(( | |
352 | + | let aR = H(I, J, D, K) | |
353 | + | let aS = x((aR + "_OPEN")) | |
354 | + | [DeleteEntry((aR + "_OPEN")), DeleteEntry(((("sale2nd_status_" + I) + "_") + J)), DeleteEntry(("current_owner_on_dapp_" + J)), StringEntry((((aR + "_") + G) + "_CANCELLED"), ((((aS + "_CANCELLED_") + toString(aI)) + "_") + G)), ScriptTransfer(Address(fromBase58String(I)), 1, fromBase58String(J))] | |
325 | 355 | } | |
326 | 356 | } | |
327 | 357 | } | |
328 | 358 | ||
329 | 359 | ||
330 | 360 | ||
331 | - | @Callable(K) | |
332 | - | func buyNFT (U) = { | |
333 | - | let aK = J(K) | |
334 | - | let G = aK._1 | |
335 | - | let ak = aK._2 | |
336 | - | let az = aK._3 | |
337 | - | let V = T(U) | |
338 | - | let aL = ae(U) | |
339 | - | let aD = aL._1 | |
340 | - | let D = aL._2 | |
341 | - | let ai = aL._3 | |
342 | - | let ag = aL._4 | |
343 | - | if ((size(ag) == 0)) | |
361 | + | @Callable(U) | |
362 | + | func buyNFT (J) = { | |
363 | + | let aU = aG(U, J) | |
364 | + | let G = aU._1 | |
365 | + | let I = aU._2 | |
366 | + | let aI = aU._3 | |
367 | + | let aK = aU._4 | |
368 | + | let D = aU._5 | |
369 | + | let K = aU._6 | |
370 | + | let ar = aU._7 | |
371 | + | if ((size(ar) == 0)) | |
344 | 372 | then throw("Artwork not found on SIGN Art, cancel your sale.") | |
345 | - | else if (!( | |
346 | - | then throw(" | |
373 | + | else if (!(aK)) | |
374 | + | then throw("Not a valid nft") | |
347 | 375 | else { | |
348 | - | let aG = ((((((("sale2nd_info_" + V) + "_") + U) + "_") + D) + "_") + ai) | |
349 | - | let aH = x((aG + "_OPEN")) | |
350 | - | if ((size(aH) == 0)) | |
376 | + | let N = ae(J) | |
377 | + | let aR = H(N, J, D, K) | |
378 | + | let aS = x((aR + "_OPEN")) | |
379 | + | if ((size(aS) == 0)) | |
351 | 380 | then throw("Sale Not found!") | |
352 | 381 | else { | |
353 | - | let | |
354 | - | if ((parseInt( | |
382 | + | let aV = split(aS, "_") | |
383 | + | if ((parseInt(aV[1]) == 0)) | |
355 | 384 | then throw("Offer only") | |
356 | 385 | else { | |
357 | - | let | |
358 | - | let | |
359 | - | let | |
360 | - | let | |
361 | - | then toBase58String(value( | |
386 | + | let aW = V(U) | |
387 | + | let W = aW._1 | |
388 | + | let X = aW._2 | |
389 | + | let aX = if (isDefined(W.assetId)) | |
390 | + | then toBase58String(value(W.assetId)) | |
362 | 391 | else "" | |
363 | - | if (if (( | |
392 | + | if (if ((aV[1] != toString(X))) | |
364 | 393 | then true | |
365 | - | else ( | |
394 | + | else (aV[2] != aX)) | |
366 | 395 | then throw("Payment infos don't match.") | |
367 | 396 | else { | |
368 | - | let | |
369 | - | let | |
370 | - | let | |
371 | - | let | |
372 | - | let | |
373 | - | let | |
374 | - | let | |
375 | - | let | |
376 | - | [DeleteEntry(( | |
397 | + | let au = fraction(X, l, 100) | |
398 | + | let av = fraction(X, m, 100) | |
399 | + | let aw = (X - (au + av)) | |
400 | + | let aY = at(X, W.assetId, J, K, N, I) | |
401 | + | let ax = aY._1 | |
402 | + | let ay = aY._2 | |
403 | + | let az = aY._3 | |
404 | + | let aA = aY._4 | |
405 | + | [DeleteEntry((aR + "_OPEN")), DeleteEntry(((("sale2nd_status_" + N) + "_") + J)), DeleteEntry(("current_owner_on_dapp_" + J)), StringEntry((((aR + "_") + G) + "_CLOSED"), ((((((aS + "_CLOSED_") + toString(aI)) + "_") + G) + "_") + I)), aL(), ax, ay, az, aA] | |
377 | 406 | } | |
378 | 407 | } | |
379 | 408 | } | |
382 | 411 | ||
383 | 412 | ||
384 | 413 | ||
385 | - | @Callable( | |
386 | - | func setOffer ( | |
387 | - | let | |
388 | - | let G = | |
389 | - | let | |
390 | - | let | |
391 | - | let | |
392 | - | let | |
393 | - | let | |
394 | - | let | |
395 | - | | |
396 | - | | |
397 | - | | |
398 | - | | |
399 | - | | |
400 | - | | |
401 | - | | |
402 | - | then | |
403 | - | else | |
404 | - | | |
405 | - | | |
406 | - | | |
407 | - | | |
408 | - | if (!( | |
409 | - | then throw(" | |
414 | + | @Callable(U) | |
415 | + | func setOffer (J) = { | |
416 | + | let aZ = aG(U, J) | |
417 | + | let G = aZ._1 | |
418 | + | let M = aZ._2 | |
419 | + | let aI = aZ._3 | |
420 | + | let aK = aZ._4 | |
421 | + | let D = aZ._5 | |
422 | + | let K = aZ._6 | |
423 | + | let ar = aZ._7 | |
424 | + | if (!(aK)) | |
425 | + | then throw("Not a valid nft") | |
426 | + | else { | |
427 | + | let ba = V(U) | |
428 | + | let W = ba._1 | |
429 | + | let X = ba._2 | |
430 | + | let ac = if (!(isDefined(W.assetId))) | |
431 | + | then "WAVES" | |
432 | + | else toBase58String(value(W.assetId)) | |
433 | + | if (!(ab(ac))) | |
434 | + | then throw("asset not accepted") | |
435 | + | else if ((X == 0)) | |
436 | + | then throw("Offer of 0 not allowed") | |
437 | + | else if (!(aB(ac, X))) | |
438 | + | then throw("Wrong minimum sell price") | |
410 | 439 | else { | |
411 | - | let | |
412 | - | [StringEntry((( | |
440 | + | let N = ae(J) | |
441 | + | [StringEntry((L(M, J, N, G) + "_OPEN"), ((((((((((((((toString(aI) + "_") + toString(X)) + "_") + ac) + "_") + J) + "_") + D) + "_") + K) + "_") + M) + "_") + G))] | |
413 | 442 | } | |
414 | - | ||
443 | + | } | |
415 | 444 | } | |
416 | 445 | ||
417 | 446 | ||
418 | 447 | ||
419 | - | @Callable(K) | |
420 | - | func acceptOffer (U,aU,aR) = { | |
421 | - | let aV = J(K) | |
422 | - | let G = aV._1 | |
423 | - | let ak = aV._2 | |
424 | - | let az = aV._3 | |
425 | - | let V = T(U) | |
426 | - | if ((ak != V)) | |
427 | - | then throw("You cannot do this action") | |
448 | + | @Callable(U) | |
449 | + | func acceptOffer (J,O,M) = { | |
450 | + | let bb = aG(U, J) | |
451 | + | let G = bb._1 | |
452 | + | let I = bb._2 | |
453 | + | let aI = bb._3 | |
454 | + | let aK = bb._4 | |
455 | + | let D = bb._5 | |
456 | + | let K = bb._6 | |
457 | + | let ar = bb._7 | |
458 | + | if (!(aK)) | |
459 | + | then throw("Not a valid nft") | |
428 | 460 | else { | |
429 | - | let aW = ((((((("offer2nd_" + aR) + "_") + U) + "_") + V) + "_") + aU) | |
430 | - | let aX = x((aW + "_OPEN")) | |
431 | - | if ((aX == "")) | |
432 | - | then throw("Offer not found or not for sale") | |
461 | + | let N = ae(J) | |
462 | + | if ((I != N)) | |
463 | + | then throw("Only sale owner can accept offer") | |
433 | 464 | else { | |
434 | - | let aY = ae(U) | |
435 | - | let aD = aY._1 | |
436 | - | let D = aY._2 | |
437 | - | let ai = aY._3 | |
438 | - | if (!(aD)) | |
439 | - | then throw("Something went wrong") | |
465 | + | let bc = L(M, J, N, O) | |
466 | + | let bd = ah(bc) | |
467 | + | let aj = bd._1 | |
468 | + | let ac = bd._2 | |
469 | + | let ai = bd._3 | |
470 | + | let aR = H(N, J, D, K) | |
471 | + | let aS = x((aR + "_OPEN")) | |
472 | + | if ((size(aS) == 0)) | |
473 | + | then throw("Sale Not found!") | |
440 | 474 | else { | |
441 | - | let aG = ((((((("sale2nd_info_" + V) + "_") + U) + "_") + D) + "_") + ai) | |
442 | - | let aZ = x((aG + "_OPEN")) | |
443 | - | if ((size(aZ) == 0)) | |
444 | - | then throw("Sale Not found!") | |
445 | - | else { | |
446 | - | let ba = split(aZ, "_") | |
447 | - | let bb = X(aW) | |
448 | - | let Z = bb._1 | |
449 | - | let R = bb._2 | |
450 | - | let Y = bb._3 | |
451 | - | let N = value(parseInt(Z[1])) | |
452 | - | let bc = aj(N, R, U, ai, V, Z[6]) | |
453 | - | let ao = bc._1 | |
454 | - | let ap = bc._2 | |
455 | - | let aq = bc._3 | |
456 | - | let ar = bc._4 | |
457 | - | [DeleteEntry((aG + "_OPEN")), DeleteEntry((aW + "_OPEN")), DeleteEntry(((("sale2nd_status_" + V) + "_") + U)), DeleteEntry(("current_owner_on_dapp_" + U)), StringEntry((aW + "_CLOSED"), ((((aX + "_CLOSED_") + toString(az)) + "_") + G)), StringEntry((((aG + "_") + G) + "_CLOSED"), ((((((((((makeString(ba, "_") + "_CLOSED-OFFER_") + toString(az)) + "_") + G) + "_") + aR) + "_") + toString(N)) + "_") + toBase58String(value(R)))), ao, ap, aq, ar] | |
458 | - | } | |
475 | + | let X = value(parseInt(aj[1])) | |
476 | + | let be = at(X, ac, J, K, N, aj[6]) | |
477 | + | let ax = be._1 | |
478 | + | let ay = be._2 | |
479 | + | let az = be._3 | |
480 | + | let aA = be._4 | |
481 | + | [DeleteEntry((aR + "_OPEN")), DeleteEntry((bc + "_OPEN")), DeleteEntry(((("sale2nd_status_" + N) + "_") + J)), DeleteEntry(("current_owner_on_dapp_" + J)), StringEntry((bc + "_CLOSED"), ((((ai + "_CLOSED_") + toString(aI)) + "_") + G)), StringEntry((((aR + "_") + G) + "_CLOSED"), ((((((((((aS + "_CLOSED-OFFER_") + toString(aI)) + "_") + G) + "_") + M) + "_") + toString(X)) + "_") + toBase58String(value(ac)))), aL(), ax, ay, az, aA] | |
459 | 482 | } | |
460 | 483 | } | |
461 | 484 | } | |
463 | 486 | ||
464 | 487 | ||
465 | 488 | ||
466 | - | @Callable( | |
467 | - | func cancelOffer ( | |
468 | - | let | |
469 | - | let G = | |
470 | - | let | |
471 | - | let | |
472 | - | let | |
473 | - | let | |
474 | - | let | |
475 | - | let | |
476 | - | let | |
477 | - | [DeleteEntry(( | |
489 | + | @Callable(U) | |
490 | + | func cancelOffer (J,O,N) = { | |
491 | + | let bf = T(U) | |
492 | + | let G = bf._1 | |
493 | + | let I = bf._2 | |
494 | + | let aI = bf._3 | |
495 | + | let bc = L(I, J, N, O) | |
496 | + | let bg = ah(bc) | |
497 | + | let aj = bg._1 | |
498 | + | let ac = bg._2 | |
499 | + | let ai = bg._3 | |
500 | + | [DeleteEntry((bc + "_OPEN")), StringEntry((bc + "_CANCELLED"), ((((ai + "_CANCELLED_") + toString(aI)) + "_") + G)), ScriptTransfer(Address(fromBase58String(I)), parseIntValue(aj[1]), ac)] | |
478 | 501 | } | |
479 | 502 | ||
480 | 503 | ||
481 | 504 | ||
482 | - | @Callable( | |
483 | - | func makeRequest (D, | |
484 | - | let | |
485 | - | let G = | |
486 | - | let | |
487 | - | let | |
488 | - | let | |
489 | - | let | |
490 | - | let | |
491 | - | let | |
505 | + | @Callable(U) | |
506 | + | func makeRequest (D,K) = { | |
507 | + | let bh = T(U) | |
508 | + | let G = bh._1 | |
509 | + | let Q = bh._2 | |
510 | + | let aI = bh._3 | |
511 | + | let bi = V(U) | |
512 | + | let W = bi._1 | |
513 | + | let X = bi._2 | |
514 | + | let ac = if (!(isDefined(W.assetId))) | |
492 | 515 | then "WAVES" | |
493 | - | else toBase58String(value( | |
494 | - | if (!( | |
516 | + | else toBase58String(value(W.assetId)) | |
517 | + | if (!(ab(ac))) | |
495 | 518 | then throw("asset not accepted") | |
496 | - | else if (!( | |
519 | + | else if (!(aB(ac, X))) | |
497 | 520 | then throw("Wrong minimum sell price") | |
498 | 521 | else { | |
499 | - | let | |
500 | - | if (!( | |
522 | + | let bj = as(D, K) | |
523 | + | if (!(bj)) | |
501 | 524 | then throw("Something went wrong") | |
502 | - | else [StringEntry((( | |
525 | + | else [StringEntry((P(Q, K, D, G) + "_OPEN"), ((((((((((toString(aI) + "_") + toString(X)) + "_") + toBase58String(value(W.assetId))) + "_") + D) + "_") + Q) + "_") + G))] | |
503 | 526 | } | |
504 | 527 | } | |
505 | 528 | ||
506 | 529 | ||
507 | 530 | ||
508 | - | @Callable( | |
509 | - | func fillRequest (D, | |
510 | - | let | |
511 | - | let G = | |
512 | - | let | |
513 | - | let | |
514 | - | let | |
515 | - | let | |
516 | - | let | |
517 | - | let | |
518 | - | then | |
531 | + | @Callable(U) | |
532 | + | func fillRequest (D,Q,O) = { | |
533 | + | let bk = T(U) | |
534 | + | let G = bk._1 | |
535 | + | let N = bk._2 | |
536 | + | let aI = bk._3 | |
537 | + | let bl = V(U) | |
538 | + | let W = bl._1 | |
539 | + | let bm = bl._2 | |
540 | + | let bn = if (if (isDefined(W.assetId)) | |
541 | + | then aa(value(W.assetId)) | |
519 | 542 | else false) | |
520 | - | then | |
543 | + | then W.assetId | |
521 | 544 | else throw("No NFT found") | |
522 | - | let | |
523 | - | if ((size( | |
545 | + | let bo = split(w(("nft_" + toBase58String(value(bn)))), "_") | |
546 | + | if ((size(bo) == 0)) | |
524 | 547 | then throw("No NFT found") | |
525 | 548 | else { | |
526 | - | let bo = split(x((((((((("request2nd_" + bg) + "_") + bn[6]) + "_") + D) + "_") + aU) + "_OPEN")), "_") | |
527 | - | if ((size(bo) == 1)) | |
549 | + | let bp = P(Q, bo[6], D, O) | |
550 | + | let bq = split(x((bp + "_OPEN")), "_") | |
551 | + | if ((size(bq) == 1)) | |
528 | 552 | then throw("No request found") | |
529 | - | else if (( | |
553 | + | else if ((bq[3] != bo[5])) | |
530 | 554 | then throw("This NFT don't match the requested artwork") | |
531 | 555 | else { | |
532 | - | let | |
533 | - | let | |
534 | - | let | |
535 | - | let | |
536 | - | let | |
537 | - | let | |
538 | - | [DeleteEntry(( | |
556 | + | let X = value(parseInt(bq[1])) | |
557 | + | let br = at(X, fromBase58String(bq[2]), toBase58String(value(bn)), bo[6], N, bq[4]) | |
558 | + | let ax = br._1 | |
559 | + | let ay = br._2 | |
560 | + | let az = br._3 | |
561 | + | let aA = br._4 | |
562 | + | [DeleteEntry((bp + "_OPEN")), aL(), StringEntry((bp + "_CLOSED"), ((((((((((((toString(aI) + "_") + toString(X)) + "_") + bq[2]) + "_") + D) + "_") + Q) + "_") + N) + "_") + G)), ax, ay, az, aA] | |
539 | 563 | } | |
540 | 564 | } | |
541 | 565 | } | |
542 | 566 | ||
543 | 567 | ||
544 | 568 | ||
545 | - | @Callable( | |
546 | - | func cancelRequest (D, | |
547 | - | let | |
548 | - | let G = | |
549 | - | let | |
550 | - | let | |
551 | - | let | |
552 | - | let | |
553 | - | if ((size( | |
569 | + | @Callable(U) | |
570 | + | func cancelRequest (D,K,bs) = { | |
571 | + | let bt = T(U) | |
572 | + | let G = bt._1 | |
573 | + | let Q = bt._2 | |
574 | + | let aI = bt._3 | |
575 | + | let bp = P(Q, K, D, bs) | |
576 | + | let bq = x((bp + "_OPEN")) | |
577 | + | if ((size(bq) == 0)) | |
554 | 578 | then throw("Request not found") | |
555 | 579 | else { | |
556 | - | let | |
557 | - | [DeleteEntry(( | |
580 | + | let bu = split(bq, "_") | |
581 | + | [DeleteEntry((bp + "_OPEN")), StringEntry((((((bp + "_") + toString(aI)) + "_") + G) + "_CANCELLED"), ((bq + "_") + toString(aI))), ScriptTransfer(Address(fromBase58String(Q)), parseIntValue(bu[1]), fromBase58String(bu[2]))] | |
558 | 582 | } | |
559 | 583 | } | |
560 | 584 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 4 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = false | |
5 | 5 | ||
6 | 6 | let b = value(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1")) | |
7 | 7 | ||
8 | 8 | let c = value(addressFromString("3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB")) | |
9 | 9 | ||
10 | 10 | let d = value(addressFromString("3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY")) | |
11 | 11 | ||
12 | 12 | let e = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub" | |
13 | 13 | ||
14 | 14 | let f = if (a) | |
15 | 15 | then value(addressFromString("3Mt4RGMEyjSWYAocTPqd55wdHQQB3PU2UCm")) | |
16 | 16 | else value(addressFromString("3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj")) | |
17 | 17 | ||
18 | 18 | let g = value(addressFromString("3N6BaV1dCB4zg43goNNHaCtvR13BcyJ5Gsq")) | |
19 | 19 | ||
20 | 20 | let h = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a' | |
21 | 21 | ||
22 | 22 | let i = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT' | |
23 | 23 | ||
24 | 24 | let j = base58'' | |
25 | 25 | ||
26 | 26 | let k = "3MsG6jPNCrVJUtYB7XJBxS7utWsXAf4n9Vp" | |
27 | 27 | ||
28 | - | let l = | |
28 | + | let l = 3 | |
29 | 29 | ||
30 | - | let m = | |
30 | + | let m = 10 | |
31 | 31 | ||
32 | - | let n = | |
32 | + | let n = valueOrElse(getBoolean(f, "conf_dapp_is_running"), true) | |
33 | 33 | ||
34 | - | let o = valueOrElse( | |
34 | + | let o = valueOrElse(getString(f, "conf_maintenance_msg"), "") | |
35 | 35 | ||
36 | - | let p = | |
36 | + | let p = "SUSPENDED" | |
37 | 37 | ||
38 | - | let q = " | |
38 | + | let q = "REMOVED" | |
39 | 39 | ||
40 | - | let r = " | |
40 | + | let r = "ILLEGAL" | |
41 | 41 | ||
42 | - | let s = " | |
42 | + | let s = "SUSPENDED" | |
43 | 43 | ||
44 | - | let t = " | |
44 | + | let t = "num_sales" | |
45 | 45 | ||
46 | 46 | func u (v) = valueOrElse(getString(f, v), "Error") | |
47 | 47 | ||
48 | 48 | ||
49 | 49 | func w (v) = valueOrElse(getString(d, v), "") | |
50 | 50 | ||
51 | 51 | ||
52 | 52 | func x (v) = valueOrElse(getString(this, v), "") | |
53 | 53 | ||
54 | 54 | ||
55 | 55 | func y (v) = valueOrElse(getInteger(this, v), 0) | |
56 | 56 | ||
57 | 57 | ||
58 | 58 | func z (A) = ("user_status_" + A) | |
59 | 59 | ||
60 | 60 | ||
61 | 61 | func B (C,D) = ((("art_signid_" + D) + "_") + C) | |
62 | 62 | ||
63 | 63 | ||
64 | 64 | func E (C,D) = ((("art_flag_" + D) + "_") + C) | |
65 | 65 | ||
66 | 66 | ||
67 | 67 | func F (G) = ("nft_" + G) | |
68 | 68 | ||
69 | 69 | ||
70 | - | func H ( | |
70 | + | func H (I,J,D,K) = ((((((("sale2nd_info_" + I) + "_") + J) + "_") + D) + "_") + K) | |
71 | 71 | ||
72 | 72 | ||
73 | - | let I = H(("certification_fee_" + toBase58String(h))) | |
74 | - | ||
75 | - | func J (K) = if (!(o)) | |
76 | - | then throw(p) | |
77 | - | else $Tuple3(toBase58String(K.transactionId), toBase58String(K.caller.bytes), lastBlock.timestamp) | |
73 | + | func L (M,J,N,O) = ((((((("offer2nd_" + M) + "_") + J) + "_") + N) + "_") + O) | |
78 | 74 | ||
79 | 75 | ||
80 | - | func L (K) = if ((size(K.payments) == 0)) | |
76 | + | func P (Q,K,D,G) = ((((((("request2nd_" + Q) + "_") + K) + "_") + D) + "_") + G) | |
77 | + | ||
78 | + | ||
79 | + | func R (v) = valueOrErrorMessage(getInteger(b, v), "Integer undefine or 0 in oracle") | |
80 | + | ||
81 | + | ||
82 | + | let S = R(("certification_fee_" + toBase58String(h))) | |
83 | + | ||
84 | + | func T (U) = if (!(n)) | |
85 | + | then throw(o) | |
86 | + | else $Tuple3(toBase58String(U.transactionId), toBase58String(U.caller.bytes), lastBlock.timestamp) | |
87 | + | ||
88 | + | ||
89 | + | func V (U) = if ((size(U.payments) == 0)) | |
81 | 90 | then throw("No payment attached") | |
82 | 91 | else { | |
83 | - | let | |
84 | - | let | |
85 | - | $Tuple2( | |
92 | + | let W = value(U.payments[0]) | |
93 | + | let X = value(W.amount) | |
94 | + | $Tuple2(W, X) | |
86 | 95 | } | |
87 | 96 | ||
88 | 97 | ||
89 | - | func O (G) = { | |
90 | - | let P = value(assetInfo(G)) | |
91 | - | if (if (if (if ((P.quantity != 1)) | |
92 | - | then true | |
93 | - | else (P.decimals != 0)) | |
94 | - | then true | |
95 | - | else (P.reissuable != false)) | |
96 | - | then true | |
97 | - | else (P.issuer != d)) | |
98 | - | then false | |
99 | - | else true | |
98 | + | func Y (Z) = if (if (if ((Z.quantity == 1)) | |
99 | + | then (Z.decimals == 0) | |
100 | + | else false) | |
101 | + | then (Z.reissuable == false) | |
102 | + | else false) | |
103 | + | then (Z.issuer == d) | |
104 | + | else false | |
105 | + | ||
106 | + | ||
107 | + | func aa (G) = { | |
108 | + | let Z = value(assetInfo(G)) | |
109 | + | Y(Z) | |
100 | 110 | } | |
101 | 111 | ||
102 | 112 | ||
103 | - | func | |
104 | - | then ( | |
113 | + | func ab (ac) = if (if (if (if ((ac != toBase58String(h))) | |
114 | + | then (ac != toBase58String(j)) | |
105 | 115 | else false) | |
106 | - | then ( | |
116 | + | then (ac != "WAVES") | |
107 | 117 | else false) | |
108 | - | then ( | |
118 | + | then (ac != toBase58String(i)) | |
109 | 119 | else false) | |
110 | 120 | then false | |
111 | 121 | else true | |
112 | 122 | ||
113 | 123 | ||
114 | - | func | |
124 | + | func ad (ac) = if ((ac == "WAVES")) | |
115 | 125 | then unit | |
116 | - | else fromBase58String( | |
126 | + | else fromBase58String(ac) | |
117 | 127 | ||
118 | 128 | ||
119 | - | func | |
120 | - | let | |
121 | - | if ((size( | |
129 | + | func ae (af) = { | |
130 | + | let N = x(("current_owner_on_dapp_" + af)) | |
131 | + | if ((size(N) == 0)) | |
122 | 132 | then throw("NFT not found") | |
123 | 133 | else { | |
124 | - | let | |
125 | - | if (( | |
134 | + | let ag = x(((("sale2nd_status_" + N) + "_") + af)) | |
135 | + | if ((ag != "OPEN")) | |
126 | 136 | then throw("NFT not for sale") | |
127 | - | else | |
137 | + | else N | |
128 | 138 | } | |
129 | 139 | } | |
130 | 140 | ||
131 | 141 | ||
132 | - | func | |
133 | - | let | |
134 | - | if (( | |
142 | + | func ah (v) = { | |
143 | + | let ai = x((v + "_OPEN")) | |
144 | + | if ((ai == "")) | |
135 | 145 | then throw("Offer not found") | |
136 | 146 | else { | |
137 | - | let | |
138 | - | let | |
139 | - | $Tuple3( | |
147 | + | let aj = split(ai, "_") | |
148 | + | let ac = ad(aj[2]) | |
149 | + | $Tuple3(aj, ac, ai) | |
140 | 150 | } | |
141 | 151 | } | |
142 | 152 | ||
143 | 153 | ||
144 | - | func aa (A,G) = { | |
145 | - | let ab = w(E(A, G)) | |
146 | - | if (if ((ab == s)) | |
154 | + | func ak (al) = if ((al != r)) | |
155 | + | then (al != s) | |
156 | + | else false | |
157 | + | ||
158 | + | ||
159 | + | func am (A,G) = { | |
160 | + | let al = w(E(A, G)) | |
161 | + | if (ak(al)) | |
147 | 162 | then true | |
148 | - | else (ab == t)) | |
149 | - | then throw(("Original Artwork flagged as " + ab)) | |
163 | + | else throw(("Original Artwork flagged as " + al)) | |
164 | + | } | |
165 | + | ||
166 | + | ||
167 | + | func an (A) = { | |
168 | + | let ao = u(z(A)) | |
169 | + | if (containsElement([p, q], ao)) | |
170 | + | then throw(("Original Artist " + ao)) | |
150 | 171 | else true | |
151 | 172 | } | |
152 | 173 | ||
153 | 174 | ||
154 | - | func ac (A) = { | |
155 | - | let ad = u(z(A)) | |
156 | - | if (containsElement([q, r], ad)) | |
157 | - | then throw(("Original Artist " + ad)) | |
158 | - | else true | |
175 | + | func ap (ac) = { | |
176 | + | let aq = split(w(F(ac)), "_") | |
177 | + | let ar = w(B(aq[6], aq[5])) | |
178 | + | if (if (!(am(aq[6], aq[5]))) | |
179 | + | then !(an(aq[6])) | |
180 | + | else false) | |
181 | + | then $Tuple4(false, aq[5], aq[6], ar) | |
182 | + | else $Tuple4(true, aq[5], aq[6], ar) | |
159 | 183 | } | |
160 | 184 | ||
161 | 185 | ||
162 | - | func ae (R) = { | |
163 | - | let af = split(w(F(R)), "_") | |
164 | - | let ag = w(B(af[6], af[5])) | |
165 | - | if (if (!(aa(af[6], af[5]))) | |
166 | - | then !(ac(af[6])) | |
167 | - | else false) | |
168 | - | then $Tuple4(false, af[5], af[6], ag) | |
169 | - | else $Tuple4(true, af[5], af[6], ag) | |
170 | - | } | |
171 | - | ||
172 | - | ||
173 | - | func ah (D,ai) = { | |
174 | - | let ag = w(B(ai, D)) | |
175 | - | if ((size(ag) == 0)) | |
186 | + | func as (D,K) = { | |
187 | + | let ar = w(B(K, D)) | |
188 | + | if ((size(ar) == 0)) | |
176 | 189 | then throw("Artwork not found on SIGN Art") | |
177 | - | else if (if (!( | |
178 | - | then !( | |
190 | + | else if (if (!(am(K, D))) | |
191 | + | then !(an(K)) | |
179 | 192 | else false) | |
180 | 193 | then false | |
181 | 194 | else true | |
182 | 195 | } | |
183 | 196 | ||
184 | 197 | ||
185 | - | func | |
186 | - | let | |
187 | - | let | |
188 | - | let | |
189 | - | let | |
190 | - | let | |
191 | - | let | |
192 | - | let | |
193 | - | $Tuple4( | |
198 | + | func at (X,ac,af,K,N,I) = { | |
199 | + | let au = fraction(X, l, 100) | |
200 | + | let av = fraction(X, m, 100) | |
201 | + | let aw = (X - (au + av)) | |
202 | + | let ax = ScriptTransfer(Address(fromBase58String(e)), au, ac) | |
203 | + | let ay = ScriptTransfer(Address(fromBase58String(K)), av, ac) | |
204 | + | let az = ScriptTransfer(Address(fromBase58String(N)), aw, ac) | |
205 | + | let aA = ScriptTransfer(Address(fromBase58String(I)), 1, fromBase58String(af)) | |
206 | + | $Tuple4(ax, ay, az, aA) | |
194 | 207 | } | |
195 | 208 | ||
196 | 209 | ||
197 | - | func | |
198 | - | let | |
210 | + | func aB (ac,aC) = { | |
211 | + | let aD = if (a) | |
199 | 212 | then 10 | |
200 | - | else | |
201 | - | let | |
202 | - | let | |
213 | + | else R("waves_min_sell") | |
214 | + | let aE = 1000000 | |
215 | + | let aF = if (a) | |
203 | 216 | then 1 | |
204 | - | else ( | |
205 | - | if (if (if (if (if (( | |
206 | - | then ( | |
217 | + | else (S * 2) | |
218 | + | if (if (if (if (if ((ac == toBase58String(i))) | |
219 | + | then (aE > aC) | |
207 | 220 | else false) | |
208 | - | then ( | |
221 | + | then (aC != 0) | |
209 | 222 | else false) | |
210 | 223 | then true | |
211 | - | else if (if (( | |
212 | - | then ( | |
224 | + | else if (if ((ac == toBase58String(h))) | |
225 | + | then (aF > aC) | |
213 | 226 | else false) | |
214 | - | then ( | |
227 | + | then (aC != 0) | |
215 | 228 | else false) | |
216 | 229 | then true | |
217 | - | else if (if (if (( | |
230 | + | else if (if (if ((ac == toBase58String(j))) | |
218 | 231 | then true | |
219 | - | else ( | |
220 | - | then ( | |
232 | + | else (ac == "WAVES")) | |
233 | + | then (aD > aC) | |
221 | 234 | else false) | |
222 | - | then ( | |
235 | + | then (aC != 0) | |
223 | 236 | else false) | |
224 | 237 | then false | |
225 | 238 | else true | |
226 | 239 | } | |
227 | 240 | ||
228 | 241 | ||
229 | - | @Callable(K) | |
230 | - | func sellNFT (at,ax) = { | |
231 | - | let ay = J(K) | |
232 | - | let G = ay._1 | |
233 | - | let ak = ay._2 | |
234 | - | let az = ay._3 | |
235 | - | let aA = L(K) | |
236 | - | let M = aA._1 | |
237 | - | let N = aA._2 | |
238 | - | let aB = if (if (isDefined(M.assetId)) | |
239 | - | then O(value(M.assetId)) | |
242 | + | func aG (U,J) = { | |
243 | + | let aH = T(U) | |
244 | + | let G = aH._1 | |
245 | + | let I = aH._2 | |
246 | + | let aI = aH._3 | |
247 | + | let aJ = ap(J) | |
248 | + | let aK = aJ._1 | |
249 | + | let D = aJ._2 | |
250 | + | let K = aJ._3 | |
251 | + | let ar = aJ._4 | |
252 | + | $Tuple7(G, I, aI, aK, D, K, ar) | |
253 | + | } | |
254 | + | ||
255 | + | ||
256 | + | func aL () = { | |
257 | + | let aM = y(t) | |
258 | + | IntegerEntry(t, (aM + 1)) | |
259 | + | } | |
260 | + | ||
261 | + | ||
262 | + | @Callable(U) | |
263 | + | func sellNFT (aC,aN) = { | |
264 | + | let aO = V(U) | |
265 | + | let W = aO._1 | |
266 | + | let X = aO._2 | |
267 | + | let J = if (if (isDefined(W.assetId)) | |
268 | + | then aa(value(W.assetId)) | |
240 | 269 | else false) | |
241 | - | then toBase58String(value( | |
270 | + | then toBase58String(value(W.assetId)) | |
242 | 271 | else throw("Only SIGN Art NFT accepted.") | |
243 | - | let aC = ae(aB) | |
244 | - | let aD = aC._1 | |
245 | - | let D = aC._2 | |
246 | - | let ai = aC._3 | |
247 | - | let ag = aC._4 | |
248 | - | if ((size(ag) == 0)) | |
272 | + | let aP = aG(U, J) | |
273 | + | let G = aP._1 | |
274 | + | let I = aP._2 | |
275 | + | let aI = aP._3 | |
276 | + | let aK = aP._4 | |
277 | + | let D = aP._5 | |
278 | + | let K = aP._6 | |
279 | + | let ar = aP._7 | |
280 | + | if ((size(ar) == 0)) | |
249 | 281 | then throw("Artwork not found on SIGN Art") | |
250 | - | else if (!( | |
251 | - | then throw(" | |
252 | - | else if (!( | |
282 | + | else if (!(aK)) | |
283 | + | then throw("Not a valid nft") | |
284 | + | else if (!(ab(aN))) | |
253 | 285 | then throw("Only SIGN, USDN or WAVES accepted") | |
254 | - | else if (( | |
286 | + | else if ((aC == 0)) | |
255 | 287 | then throw("Wrong minimum sell price") | |
256 | - | else if (!( | |
288 | + | else if (!(aB(aN, aC))) | |
257 | 289 | then throw("Wrong minimum sell price") | |
258 | - | else [StringEntry((( | |
290 | + | else [StringEntry((H(I, J, D, K) + "_OPEN"), ((((((((((((toString(aI) + "_") + toString(aC)) + "_") + aN) + "_") + J) + "_") + D) + "_") + K) + "_") + G)), StringEntry(((("sale2nd_status_" + I) + "_") + J), "OPEN"), StringEntry(("current_owner_on_dapp_" + J), I)] | |
259 | 291 | } | |
260 | 292 | ||
261 | 293 | ||
262 | 294 | ||
263 | - | @Callable(K) | |
264 | - | func updateSalePrice (U,at,ax) = { | |
265 | - | let aE = J(K) | |
266 | - | let G = aE._1 | |
267 | - | let ak = aE._2 | |
268 | - | let az = aE._3 | |
269 | - | let aF = ae(U) | |
270 | - | let aD = aF._1 | |
271 | - | let D = aF._2 | |
272 | - | let ai = aF._3 | |
273 | - | let ag = aF._4 | |
274 | - | if ((size(ag) == 0)) | |
295 | + | @Callable(U) | |
296 | + | func updateSalePrice (J,aC,aN) = { | |
297 | + | let aQ = aG(U, J) | |
298 | + | let G = aQ._1 | |
299 | + | let I = aQ._2 | |
300 | + | let aI = aQ._3 | |
301 | + | let aK = aQ._4 | |
302 | + | let D = aQ._5 | |
303 | + | let K = aQ._6 | |
304 | + | let ar = aQ._7 | |
305 | + | if ((size(ar) == 0)) | |
275 | 306 | then throw("Artwork not found on SIGN Art, cancel your sale.") | |
276 | - | else if (!( | |
277 | - | then throw(" | |
307 | + | else if (!(aK)) | |
308 | + | then throw("Not a valid nft") | |
278 | 309 | else { | |
279 | - | let | |
280 | - | if (( | |
310 | + | let N = x(("current_owner_on_dapp_" + J)) | |
311 | + | if ((N != I)) | |
281 | 312 | then throw("You don't own this NFT") | |
282 | 313 | else { | |
283 | - | let | |
284 | - | if (( | |
314 | + | let ag = x(((("sale2nd_status_" + I) + "_") + J)) | |
315 | + | if ((ag != "OPEN")) | |
285 | 316 | then throw("Sale not active") | |
286 | - | else if (!( | |
317 | + | else if (!(ab(aN))) | |
287 | 318 | then throw("Only SIGN, USDN or WAVES accepted") | |
288 | - | else if (( | |
319 | + | else if ((aC == 0)) | |
289 | 320 | then throw("Wrong minimum sell price") | |
290 | - | else if (!( | |
321 | + | else if (!(aB(aN, aC))) | |
291 | 322 | then throw("Wrong minimum sell price") | |
292 | 323 | else { | |
293 | - | let | |
294 | - | let | |
295 | - | [StringEntry(( | |
324 | + | let aR = H(I, J, D, K) | |
325 | + | let aS = split(x((aR + "_OPEN")), "_") | |
326 | + | [StringEntry((aR + "_OPEN"), ((((((((((((aS[0] + "_") + toString(aC)) + "_") + aN) + "_") + aS[3]) + "_") + aS[4]) + "_") + aS[5]) + "_") + aS[6]))] | |
296 | 327 | } | |
297 | 328 | } | |
298 | 329 | } | |
299 | 330 | } | |
300 | 331 | ||
301 | 332 | ||
302 | 333 | ||
303 | - | @Callable(K) | |
304 | - | func cancelSale (U) = { | |
305 | - | let aI = J(K) | |
306 | - | let G = aI._1 | |
307 | - | let ak = aI._2 | |
308 | - | let az = aI._3 | |
309 | - | let aJ = ae(U) | |
310 | - | let aD = aJ._1 | |
311 | - | let D = aJ._2 | |
312 | - | let ai = aJ._3 | |
313 | - | let ag = aJ._4 | |
314 | - | let V = x(("current_owner_on_dapp_" + U)) | |
315 | - | if ((V != ak)) | |
334 | + | @Callable(U) | |
335 | + | func cancelSale (J) = { | |
336 | + | let aT = aG(U, J) | |
337 | + | let G = aT._1 | |
338 | + | let I = aT._2 | |
339 | + | let aI = aT._3 | |
340 | + | let aK = aT._4 | |
341 | + | let D = aT._5 | |
342 | + | let K = aT._6 | |
343 | + | let ar = aT._7 | |
344 | + | let N = x(("current_owner_on_dapp_" + J)) | |
345 | + | if ((N != I)) | |
316 | 346 | then throw("You don't own this NFT") | |
317 | 347 | else { | |
318 | - | let | |
319 | - | if (( | |
348 | + | let ag = x(((("sale2nd_status_" + I) + "_") + J)) | |
349 | + | if ((ag != "OPEN")) | |
320 | 350 | then throw("Sale not active") | |
321 | 351 | else { | |
322 | - | let | |
323 | - | let | |
324 | - | [DeleteEntry(( | |
352 | + | let aR = H(I, J, D, K) | |
353 | + | let aS = x((aR + "_OPEN")) | |
354 | + | [DeleteEntry((aR + "_OPEN")), DeleteEntry(((("sale2nd_status_" + I) + "_") + J)), DeleteEntry(("current_owner_on_dapp_" + J)), StringEntry((((aR + "_") + G) + "_CANCELLED"), ((((aS + "_CANCELLED_") + toString(aI)) + "_") + G)), ScriptTransfer(Address(fromBase58String(I)), 1, fromBase58String(J))] | |
325 | 355 | } | |
326 | 356 | } | |
327 | 357 | } | |
328 | 358 | ||
329 | 359 | ||
330 | 360 | ||
331 | - | @Callable(K) | |
332 | - | func buyNFT (U) = { | |
333 | - | let aK = J(K) | |
334 | - | let G = aK._1 | |
335 | - | let ak = aK._2 | |
336 | - | let az = aK._3 | |
337 | - | let V = T(U) | |
338 | - | let aL = ae(U) | |
339 | - | let aD = aL._1 | |
340 | - | let D = aL._2 | |
341 | - | let ai = aL._3 | |
342 | - | let ag = aL._4 | |
343 | - | if ((size(ag) == 0)) | |
361 | + | @Callable(U) | |
362 | + | func buyNFT (J) = { | |
363 | + | let aU = aG(U, J) | |
364 | + | let G = aU._1 | |
365 | + | let I = aU._2 | |
366 | + | let aI = aU._3 | |
367 | + | let aK = aU._4 | |
368 | + | let D = aU._5 | |
369 | + | let K = aU._6 | |
370 | + | let ar = aU._7 | |
371 | + | if ((size(ar) == 0)) | |
344 | 372 | then throw("Artwork not found on SIGN Art, cancel your sale.") | |
345 | - | else if (!( | |
346 | - | then throw(" | |
373 | + | else if (!(aK)) | |
374 | + | then throw("Not a valid nft") | |
347 | 375 | else { | |
348 | - | let aG = ((((((("sale2nd_info_" + V) + "_") + U) + "_") + D) + "_") + ai) | |
349 | - | let aH = x((aG + "_OPEN")) | |
350 | - | if ((size(aH) == 0)) | |
376 | + | let N = ae(J) | |
377 | + | let aR = H(N, J, D, K) | |
378 | + | let aS = x((aR + "_OPEN")) | |
379 | + | if ((size(aS) == 0)) | |
351 | 380 | then throw("Sale Not found!") | |
352 | 381 | else { | |
353 | - | let | |
354 | - | if ((parseInt( | |
382 | + | let aV = split(aS, "_") | |
383 | + | if ((parseInt(aV[1]) == 0)) | |
355 | 384 | then throw("Offer only") | |
356 | 385 | else { | |
357 | - | let | |
358 | - | let | |
359 | - | let | |
360 | - | let | |
361 | - | then toBase58String(value( | |
386 | + | let aW = V(U) | |
387 | + | let W = aW._1 | |
388 | + | let X = aW._2 | |
389 | + | let aX = if (isDefined(W.assetId)) | |
390 | + | then toBase58String(value(W.assetId)) | |
362 | 391 | else "" | |
363 | - | if (if (( | |
392 | + | if (if ((aV[1] != toString(X))) | |
364 | 393 | then true | |
365 | - | else ( | |
394 | + | else (aV[2] != aX)) | |
366 | 395 | then throw("Payment infos don't match.") | |
367 | 396 | else { | |
368 | - | let | |
369 | - | let | |
370 | - | let | |
371 | - | let | |
372 | - | let | |
373 | - | let | |
374 | - | let | |
375 | - | let | |
376 | - | [DeleteEntry(( | |
397 | + | let au = fraction(X, l, 100) | |
398 | + | let av = fraction(X, m, 100) | |
399 | + | let aw = (X - (au + av)) | |
400 | + | let aY = at(X, W.assetId, J, K, N, I) | |
401 | + | let ax = aY._1 | |
402 | + | let ay = aY._2 | |
403 | + | let az = aY._3 | |
404 | + | let aA = aY._4 | |
405 | + | [DeleteEntry((aR + "_OPEN")), DeleteEntry(((("sale2nd_status_" + N) + "_") + J)), DeleteEntry(("current_owner_on_dapp_" + J)), StringEntry((((aR + "_") + G) + "_CLOSED"), ((((((aS + "_CLOSED_") + toString(aI)) + "_") + G) + "_") + I)), aL(), ax, ay, az, aA] | |
377 | 406 | } | |
378 | 407 | } | |
379 | 408 | } | |
380 | 409 | } | |
381 | 410 | } | |
382 | 411 | ||
383 | 412 | ||
384 | 413 | ||
385 | - | @Callable( | |
386 | - | func setOffer ( | |
387 | - | let | |
388 | - | let G = | |
389 | - | let | |
390 | - | let | |
391 | - | let | |
392 | - | let | |
393 | - | let | |
394 | - | let | |
395 | - | | |
396 | - | | |
397 | - | | |
398 | - | | |
399 | - | | |
400 | - | | |
401 | - | | |
402 | - | then | |
403 | - | else | |
404 | - | | |
405 | - | | |
406 | - | | |
407 | - | | |
408 | - | if (!( | |
409 | - | then throw(" | |
414 | + | @Callable(U) | |
415 | + | func setOffer (J) = { | |
416 | + | let aZ = aG(U, J) | |
417 | + | let G = aZ._1 | |
418 | + | let M = aZ._2 | |
419 | + | let aI = aZ._3 | |
420 | + | let aK = aZ._4 | |
421 | + | let D = aZ._5 | |
422 | + | let K = aZ._6 | |
423 | + | let ar = aZ._7 | |
424 | + | if (!(aK)) | |
425 | + | then throw("Not a valid nft") | |
426 | + | else { | |
427 | + | let ba = V(U) | |
428 | + | let W = ba._1 | |
429 | + | let X = ba._2 | |
430 | + | let ac = if (!(isDefined(W.assetId))) | |
431 | + | then "WAVES" | |
432 | + | else toBase58String(value(W.assetId)) | |
433 | + | if (!(ab(ac))) | |
434 | + | then throw("asset not accepted") | |
435 | + | else if ((X == 0)) | |
436 | + | then throw("Offer of 0 not allowed") | |
437 | + | else if (!(aB(ac, X))) | |
438 | + | then throw("Wrong minimum sell price") | |
410 | 439 | else { | |
411 | - | let | |
412 | - | [StringEntry((( | |
440 | + | let N = ae(J) | |
441 | + | [StringEntry((L(M, J, N, G) + "_OPEN"), ((((((((((((((toString(aI) + "_") + toString(X)) + "_") + ac) + "_") + J) + "_") + D) + "_") + K) + "_") + M) + "_") + G))] | |
413 | 442 | } | |
414 | - | ||
443 | + | } | |
415 | 444 | } | |
416 | 445 | ||
417 | 446 | ||
418 | 447 | ||
419 | - | @Callable(K) | |
420 | - | func acceptOffer (U,aU,aR) = { | |
421 | - | let aV = J(K) | |
422 | - | let G = aV._1 | |
423 | - | let ak = aV._2 | |
424 | - | let az = aV._3 | |
425 | - | let V = T(U) | |
426 | - | if ((ak != V)) | |
427 | - | then throw("You cannot do this action") | |
448 | + | @Callable(U) | |
449 | + | func acceptOffer (J,O,M) = { | |
450 | + | let bb = aG(U, J) | |
451 | + | let G = bb._1 | |
452 | + | let I = bb._2 | |
453 | + | let aI = bb._3 | |
454 | + | let aK = bb._4 | |
455 | + | let D = bb._5 | |
456 | + | let K = bb._6 | |
457 | + | let ar = bb._7 | |
458 | + | if (!(aK)) | |
459 | + | then throw("Not a valid nft") | |
428 | 460 | else { | |
429 | - | let aW = ((((((("offer2nd_" + aR) + "_") + U) + "_") + V) + "_") + aU) | |
430 | - | let aX = x((aW + "_OPEN")) | |
431 | - | if ((aX == "")) | |
432 | - | then throw("Offer not found or not for sale") | |
461 | + | let N = ae(J) | |
462 | + | if ((I != N)) | |
463 | + | then throw("Only sale owner can accept offer") | |
433 | 464 | else { | |
434 | - | let aY = ae(U) | |
435 | - | let aD = aY._1 | |
436 | - | let D = aY._2 | |
437 | - | let ai = aY._3 | |
438 | - | if (!(aD)) | |
439 | - | then throw("Something went wrong") | |
465 | + | let bc = L(M, J, N, O) | |
466 | + | let bd = ah(bc) | |
467 | + | let aj = bd._1 | |
468 | + | let ac = bd._2 | |
469 | + | let ai = bd._3 | |
470 | + | let aR = H(N, J, D, K) | |
471 | + | let aS = x((aR + "_OPEN")) | |
472 | + | if ((size(aS) == 0)) | |
473 | + | then throw("Sale Not found!") | |
440 | 474 | else { | |
441 | - | let aG = ((((((("sale2nd_info_" + V) + "_") + U) + "_") + D) + "_") + ai) | |
442 | - | let aZ = x((aG + "_OPEN")) | |
443 | - | if ((size(aZ) == 0)) | |
444 | - | then throw("Sale Not found!") | |
445 | - | else { | |
446 | - | let ba = split(aZ, "_") | |
447 | - | let bb = X(aW) | |
448 | - | let Z = bb._1 | |
449 | - | let R = bb._2 | |
450 | - | let Y = bb._3 | |
451 | - | let N = value(parseInt(Z[1])) | |
452 | - | let bc = aj(N, R, U, ai, V, Z[6]) | |
453 | - | let ao = bc._1 | |
454 | - | let ap = bc._2 | |
455 | - | let aq = bc._3 | |
456 | - | let ar = bc._4 | |
457 | - | [DeleteEntry((aG + "_OPEN")), DeleteEntry((aW + "_OPEN")), DeleteEntry(((("sale2nd_status_" + V) + "_") + U)), DeleteEntry(("current_owner_on_dapp_" + U)), StringEntry((aW + "_CLOSED"), ((((aX + "_CLOSED_") + toString(az)) + "_") + G)), StringEntry((((aG + "_") + G) + "_CLOSED"), ((((((((((makeString(ba, "_") + "_CLOSED-OFFER_") + toString(az)) + "_") + G) + "_") + aR) + "_") + toString(N)) + "_") + toBase58String(value(R)))), ao, ap, aq, ar] | |
458 | - | } | |
475 | + | let X = value(parseInt(aj[1])) | |
476 | + | let be = at(X, ac, J, K, N, aj[6]) | |
477 | + | let ax = be._1 | |
478 | + | let ay = be._2 | |
479 | + | let az = be._3 | |
480 | + | let aA = be._4 | |
481 | + | [DeleteEntry((aR + "_OPEN")), DeleteEntry((bc + "_OPEN")), DeleteEntry(((("sale2nd_status_" + N) + "_") + J)), DeleteEntry(("current_owner_on_dapp_" + J)), StringEntry((bc + "_CLOSED"), ((((ai + "_CLOSED_") + toString(aI)) + "_") + G)), StringEntry((((aR + "_") + G) + "_CLOSED"), ((((((((((aS + "_CLOSED-OFFER_") + toString(aI)) + "_") + G) + "_") + M) + "_") + toString(X)) + "_") + toBase58String(value(ac)))), aL(), ax, ay, az, aA] | |
459 | 482 | } | |
460 | 483 | } | |
461 | 484 | } | |
462 | 485 | } | |
463 | 486 | ||
464 | 487 | ||
465 | 488 | ||
466 | - | @Callable( | |
467 | - | func cancelOffer ( | |
468 | - | let | |
469 | - | let G = | |
470 | - | let | |
471 | - | let | |
472 | - | let | |
473 | - | let | |
474 | - | let | |
475 | - | let | |
476 | - | let | |
477 | - | [DeleteEntry(( | |
489 | + | @Callable(U) | |
490 | + | func cancelOffer (J,O,N) = { | |
491 | + | let bf = T(U) | |
492 | + | let G = bf._1 | |
493 | + | let I = bf._2 | |
494 | + | let aI = bf._3 | |
495 | + | let bc = L(I, J, N, O) | |
496 | + | let bg = ah(bc) | |
497 | + | let aj = bg._1 | |
498 | + | let ac = bg._2 | |
499 | + | let ai = bg._3 | |
500 | + | [DeleteEntry((bc + "_OPEN")), StringEntry((bc + "_CANCELLED"), ((((ai + "_CANCELLED_") + toString(aI)) + "_") + G)), ScriptTransfer(Address(fromBase58String(I)), parseIntValue(aj[1]), ac)] | |
478 | 501 | } | |
479 | 502 | ||
480 | 503 | ||
481 | 504 | ||
482 | - | @Callable( | |
483 | - | func makeRequest (D, | |
484 | - | let | |
485 | - | let G = | |
486 | - | let | |
487 | - | let | |
488 | - | let | |
489 | - | let | |
490 | - | let | |
491 | - | let | |
505 | + | @Callable(U) | |
506 | + | func makeRequest (D,K) = { | |
507 | + | let bh = T(U) | |
508 | + | let G = bh._1 | |
509 | + | let Q = bh._2 | |
510 | + | let aI = bh._3 | |
511 | + | let bi = V(U) | |
512 | + | let W = bi._1 | |
513 | + | let X = bi._2 | |
514 | + | let ac = if (!(isDefined(W.assetId))) | |
492 | 515 | then "WAVES" | |
493 | - | else toBase58String(value( | |
494 | - | if (!( | |
516 | + | else toBase58String(value(W.assetId)) | |
517 | + | if (!(ab(ac))) | |
495 | 518 | then throw("asset not accepted") | |
496 | - | else if (!( | |
519 | + | else if (!(aB(ac, X))) | |
497 | 520 | then throw("Wrong minimum sell price") | |
498 | 521 | else { | |
499 | - | let | |
500 | - | if (!( | |
522 | + | let bj = as(D, K) | |
523 | + | if (!(bj)) | |
501 | 524 | then throw("Something went wrong") | |
502 | - | else [StringEntry((( | |
525 | + | else [StringEntry((P(Q, K, D, G) + "_OPEN"), ((((((((((toString(aI) + "_") + toString(X)) + "_") + toBase58String(value(W.assetId))) + "_") + D) + "_") + Q) + "_") + G))] | |
503 | 526 | } | |
504 | 527 | } | |
505 | 528 | ||
506 | 529 | ||
507 | 530 | ||
508 | - | @Callable( | |
509 | - | func fillRequest (D, | |
510 | - | let | |
511 | - | let G = | |
512 | - | let | |
513 | - | let | |
514 | - | let | |
515 | - | let | |
516 | - | let | |
517 | - | let | |
518 | - | then | |
531 | + | @Callable(U) | |
532 | + | func fillRequest (D,Q,O) = { | |
533 | + | let bk = T(U) | |
534 | + | let G = bk._1 | |
535 | + | let N = bk._2 | |
536 | + | let aI = bk._3 | |
537 | + | let bl = V(U) | |
538 | + | let W = bl._1 | |
539 | + | let bm = bl._2 | |
540 | + | let bn = if (if (isDefined(W.assetId)) | |
541 | + | then aa(value(W.assetId)) | |
519 | 542 | else false) | |
520 | - | then | |
543 | + | then W.assetId | |
521 | 544 | else throw("No NFT found") | |
522 | - | let | |
523 | - | if ((size( | |
545 | + | let bo = split(w(("nft_" + toBase58String(value(bn)))), "_") | |
546 | + | if ((size(bo) == 0)) | |
524 | 547 | then throw("No NFT found") | |
525 | 548 | else { | |
526 | - | let bo = split(x((((((((("request2nd_" + bg) + "_") + bn[6]) + "_") + D) + "_") + aU) + "_OPEN")), "_") | |
527 | - | if ((size(bo) == 1)) | |
549 | + | let bp = P(Q, bo[6], D, O) | |
550 | + | let bq = split(x((bp + "_OPEN")), "_") | |
551 | + | if ((size(bq) == 1)) | |
528 | 552 | then throw("No request found") | |
529 | - | else if (( | |
553 | + | else if ((bq[3] != bo[5])) | |
530 | 554 | then throw("This NFT don't match the requested artwork") | |
531 | 555 | else { | |
532 | - | let | |
533 | - | let | |
534 | - | let | |
535 | - | let | |
536 | - | let | |
537 | - | let | |
538 | - | [DeleteEntry(( | |
556 | + | let X = value(parseInt(bq[1])) | |
557 | + | let br = at(X, fromBase58String(bq[2]), toBase58String(value(bn)), bo[6], N, bq[4]) | |
558 | + | let ax = br._1 | |
559 | + | let ay = br._2 | |
560 | + | let az = br._3 | |
561 | + | let aA = br._4 | |
562 | + | [DeleteEntry((bp + "_OPEN")), aL(), StringEntry((bp + "_CLOSED"), ((((((((((((toString(aI) + "_") + toString(X)) + "_") + bq[2]) + "_") + D) + "_") + Q) + "_") + N) + "_") + G)), ax, ay, az, aA] | |
539 | 563 | } | |
540 | 564 | } | |
541 | 565 | } | |
542 | 566 | ||
543 | 567 | ||
544 | 568 | ||
545 | - | @Callable( | |
546 | - | func cancelRequest (D, | |
547 | - | let | |
548 | - | let G = | |
549 | - | let | |
550 | - | let | |
551 | - | let | |
552 | - | let | |
553 | - | if ((size( | |
569 | + | @Callable(U) | |
570 | + | func cancelRequest (D,K,bs) = { | |
571 | + | let bt = T(U) | |
572 | + | let G = bt._1 | |
573 | + | let Q = bt._2 | |
574 | + | let aI = bt._3 | |
575 | + | let bp = P(Q, K, D, bs) | |
576 | + | let bq = x((bp + "_OPEN")) | |
577 | + | if ((size(bq) == 0)) | |
554 | 578 | then throw("Request not found") | |
555 | 579 | else { | |
556 | - | let | |
557 | - | [DeleteEntry(( | |
580 | + | let bu = split(bq, "_") | |
581 | + | [DeleteEntry((bp + "_OPEN")), StringEntry((((((bp + "_") + toString(aI)) + "_") + G) + "_CANCELLED"), ((bq + "_") + toString(aI))), ScriptTransfer(Address(fromBase58String(Q)), parseIntValue(bu[1]), fromBase58String(bu[2]))] | |
558 | 582 | } | |
559 | 583 | } | |
560 | 584 | ||
561 | 585 |
github/deemru/w8io/169f3d6 186.50 ms ◑