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