tx · 8A55QnKc8T26dqvS56mu1n45iPV2i91yNgg1iPUNK5CE

3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY:  -0.19000000 Waves

2023.03.24 07:00 [2503580] smart account 3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY > SELF 0.00000000 Waves

{ "type": 13, "id": "8A55QnKc8T26dqvS56mu1n45iPV2i91yNgg1iPUNK5CE", "fee": 19000000, "feeAssetId": null, "timestamp": 1679630432846, "version": 2, "chainId": 84, "sender": "3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY", "senderPublicKey": "J9DCtJJxJBWZdtDR12BA1U94Q3cZzMi4R6k5hYkAzmzC", "proofs": [ "44hVgKsBVT9DQZMbCLS66RTjNAz4bnRPFhkgW8tLg355pTocGmWVHP6adoyvFvvHTy4n7DWDC4S8x3yqoMX1hwoC" ], "script": "base64:BgKKFQgCEgQKAggIEhAKDggICAgICAgICAgICAEIEg8KDQgICAgICAgICAgIAQgSBgoECAgICBIECgIICBIICgYIAQEIAQgSBAoCCAgSBAoCCAgSBwoFCAgICAgSBgoECAgICCIOZ2V0U3RyaW5nQnlLZXkiA2tleSIIdW5pdFRlc3QiCW9yYWNsZUZlZSIIc2lnbkRhcHAiC2ZlZVJlY2VpdmVyIgh1c2VyRGFwcCINd2hpdGVsaXN0RGFwcCILc2lnbkFzc2V0SWQiC3VzZG5Bc3NldElkIgt1c2R0QXNzZXRJZCIMd2F2ZXNBc3NldElkIgVjaHJpcyIZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZSIPZ2V0SW50ZWdlckJ5S2V5Ig5jaGVja1doaXRlbGlzdCIPZ2V0Qm9vbGVhbkJ5S2V5IgdzaWduQ3V0Igt1c2RuV2F2ZUN1dCIOZGVmYXVsdExpY2VuY2UiEmRlZmF1bHRIYXNoTGljZW5jZSILZGFwcFJ1bm5pbmciDm1haW50ZW5hbmNlTVNHIg11c2VyU3VzcGVuZGVkIgt1c2VyUmVtb3ZlZCIQdXNlclVucmVnaXN0ZXJlZCILdXNlckFsbG93ZWQiGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UiFGNoZWNrU2lnbkNlcnRpZmljYXRlIgZzaWduSUQiBU93bmVyIgpzaGEyNTZIYXNoIgckbWF0Y2gwIgFhIgt2YWxpZGF0ZUNJRCIDY2lkIgx2YWxpZGF0ZUhhc2giBGhhc2giDWtleVVzZXJTdGF0dXMiBmNhbGxlciIHa2V5RGF0ZSIFYXJ0SWQiB2tleU5hbWUiB2tleURlc2MiDWtleURpc3BsYXlDaWQiDWtleUV4cG9ydEhhc2giDGtleUV4cG9ydENpZCIKa2V5TWF4TWludCIJa2V5U2lnbklEIglrZXlJc3N1ZWQiCWtleU9uU2FsZSIOa2V5TGljZW5jZUhhc2giDWtleUxpY2VuY2VDaWQiB2tleVRhZ3MiB2tleVR5cGUiB2tleU5vdGUiCmtleUNyYXdsZXIiDGtleVJveWFsdGllcyIIa2V5UHJpY2UiCmtleUVuZFNhbGUiEmtleUFzc2V0SWRBY2NlcHRlZCIHa2V5RmxhZyISa2V5QXJ0aXN0QWdlbnRBZGRyIgphcnRpc3RBZGRyIhRrZXlQcmltYXJ5U2hhcmVBZ2VudCIYa2V5QXJ0aXN0UHVibGljQWdlbnRBZGRyIhprZXlQcmltYXJ5U2hhcmVQdWJsaWNBZ2VudCIRa2V5SGFzaEJ5VHhpZEFkZHIiBHR4aWQiDmtleU93bmVyQnlIYXNoIg1rZXlpZEJ5U2lnbmlkIgZzaWduSWQiEmtleVR4aWRCeUhhc2hPd25lciIOdmFsaWRhdGVBbGxDSUQiCmNpZERpc3BsYXkiCWNpZEV4cG9ydCIKY2lkTGljZW5jZSIPdmFsaWRhdGVBbGxIYXNoIgxzaGEyNTZFeHBvcnQiDXNoYTI1NkxpY2VuY2UiDnZhbGlkYXRlU3RyaW5nIgNzdHIiA21heCIMdmFsaWRhdGVVc2VyIgp1c2VyU3RhdHVzIgpzZXRMSWNlbmNlIhN2YWxpZGF0ZUFydHdvcmtEYXRhIgpsaWNlbmNlQ0lEIgtsaWNlbmNlSGFzaCIEbmFtZSILZGVzY3JpcHRpb24iBHRhZ3MiCXJveWFsdGllcyIJY2hlY2tVc2VyIglpc1BheW1lbnQiAWkiB3BheW1lbnQiBmFtb3VudCIPdmFsaWRhdGVQYXltZW50IgskdDA5MTgwOTIxNiIHYXNzZXRJZCILaXNBcnRNaW50ZWQiCWFkZHJUb1VzZSIBYiIUdmFsaWRhdGVQcmljZUFzc2V0SWQiDHByaWNlQXNzZXRJZCIMYXJ0d29ya1ByaWNlIgskdDA5ODA0OTg0MCIQYWNjZXB0ZWRBc3NldElkcyIPdmFsaWRhdGVNaW5TZWxsIgVwcmljZSIMbWluU2VsbFdhdmVzIgttaW5TZWxsVXNkbiILbWluU2VsbFNpZ24iDWdldEJpZEFzc2V0SWQiFmdldFByaWNlQXNzZXRJZEZyb21CaWQiCmJpZERhdGFLZXkiB2JpZERhdGEiCmJpZERhdGFBcnIiCWJpZEFtb3VudCIKYmlkQXNzZXRJZCIVaWRDYWxsZXJEYXRlU3BvbnNvcmVkIgZwdWJLZXkiC2lzU3BvbnNvcmVkIhNnZXRfc3BvbnNvcmVkX3dhdmVzIgxpZENhbGxlckRhdGUiB2J1eU1pbnQiBmlzc3VlciIFYmlkSWQiCGJpZE93bmVyIg0kdDAxMzAzNDEzMTA0IgJpZCIEZGF0ZSIKbmV3X2NhbGxlciIFaXNCaWQiCGJsb2NrRW5kIg5jYWxsZXJJc0lzc3VlciIIdG90YWxORlQiC2FydHdvcmtOYW1lIghpc09uU2FsZSIKYW1vdW50U29sZCIKbWF4Q2FuU2VsbCINJHQwMTQ5MjgxNTEyMCIFYWdlbnQiCmFnZW50U2hhcmUiC3B1YmxpY0FnZW50IhBwdWJsaWNBZ2VudFNoYXJlIg1pc1doaXRlbGlzdGVkIgNjdXQiDWFtb3VudEZvclNpZ24iDmFtb3VudEZvckFnZW50IhRhbW91bnRGb3JQdWJsaWNBZ2VudCIQYW1vdW50Rm9yQ3JlYXRvciINbmV3QW1vdW50U29sZCIJaXNzdWVNZXRhIghpc3N1ZU5GVCIFaWRORlQiCnNlbGxTdGF0dXMiCnJlY2VpdmVORlQiCmFzc2V0SWRCaWQiCWJpZERlbE9sZCIJYmlkVXBkYXRlIgdzb2xkS2V5Iglzb2xkVmFsdWUiCHNvbGREYXRhIhRjb21taXNzaW9uc1dpdGhBZ2VudCIaY29tbWlzc2lvbnNXaXRoUHVibGljQWdlbnQiCnR4VG9DYWxsZXIiBmJ1eVJlcyIIYXNTdHJpbmciAmJ2IgNidjAiBmludm9rZSIDdmFsIgR0eXBlIgdjcmF3bGVyIg0kdDAyMDMwMDIwMzczIg0kdDAyMDQ3NDIwNTQzIg92YWxpZGF0ZUFydHdvcmsiEHdoaXRlbGlzdGVkX2Ryb3AiDSR0MDIwODQyMjA5MjYiCmVudHJ5RXhpc3QiCWhhc2hFeGlzdCIPaXNTaWduQ2VydGlmaWVkIhdkZWNyZWFzZV93aGl0ZWxpc3RfZHJvcCINJHQwMjM5NjQyNDAzNCINJHQwMjQwNDQyNDExMyIEZmxhZyIEYWRkciIEbm90ZSINJHQwMjU3NDQyNTc3OCINJHQwMjYyMTQyNjI0OCIMZGF0YVRvRGVsZXRlIgdtYXhNaW50Ig0kdDAyOTA4NDI5MTU0IgZiaWROYnIiCmJhc2VIZWlnaHQiDSR0MDMxNTQwMzE1ODAiDSR0MDMxNTg1MzE2MjEiDSR0MDMyODQxMzI5MTIiB2NhbGxlcjEiDSR0MDMzMTQ3MzMyMDgiDXJldHVybk1vbmV5VG8iCWJpZFN0YXR1cyICdHgiCHZlcmlmaWVyIgNpbnZOAQFhAQFiCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAWICAAABYwcAAWQJAQV2YWx1ZQEJAKYIAQkBAWEBAg9jb25mX29yYWNsZV9mZWUAAWUJAQV2YWx1ZQEJAKYIAQkBAWEBAhFjb25mX3NpZ253ZWJfZGFwcAABZgkBAWEBAhFjb25mX2ZlZV9yZWNlaXZlcgABZwMFAWMJAQV2YWx1ZQEJAKYIAQIjM010NFJHTUV5alNXWUFvY1RQcWQ1NXdkSFFRQjNQVTJVQ20JAQV2YWx1ZQEJAKYIAQkBAWEBAg9jb25mX3VzZXJzX2RhcHAAAWgJAQV2YWx1ZQEJAKYIAQkBAWEBAhNjb25mX3doaXRlbGlzdF9kYXBwAAFpCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9TSUdOAAFqCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9VU0ROAAFrCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9VU0RUAAFsAQAAAW0JAQFhAQIMY29uZl9hZG1pbl8xAQFuAQFiCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUBZAUBYgIfSW50ZWdlciB1bmRlZmluZSBvciAwIGluIG9yYWNsZQEBbwEBYgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFiAAABAXABAWIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUBaAUBYgAAAQFxAQFiCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFAWIHAAFyAAcAAXMACgABdAkBAWEBAhRjb25mX2RlZmF1bHRfbGljZW5jZQABdQkBAWEBAhljb25mX2RlZmF1bHRfbGljZW5jZV9oYXNoAAF2CQELdmFsdWVPckVsc2UCCQCbCAIFAWcCFGNvbmZfZGFwcF9pc19ydW5uaW5nBgABdwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQFnAhRjb25mX21haW50ZW5hbmNlX21zZwIAAAF4AglTVVNQRU5ERUQAAXkCB1JFTU9WRUQAAXoCDFVOUkVHSVNURVJFRAABQQIHQUxMT1dFRAABQgkBAW4BCQCsAgICEmNlcnRpZmljYXRpb25fZmVlXwkA2AQBBQFpAQFDAwFEAUUBRgQBRwkAnQgCBQFlCQCsAgIJAKwCAgkArAICAghkYXRhX2ZjXwUBRAIBXwUBRQMJAAECBQFHAgZTdHJpbmcEAUgFAUcDCQEIY29udGFpbnMCBQFIBQFGBgcHAQFJAQFKAwkBCGNvbnRhaW5zAgUBSgIBLwMDCQBmAgBMCQCxAgEFAUoJAAACCQCxAgEJAJEDAgkAtQkCBQFKAgEvAAAAOwcJAGYCABAJALECAQkAkQMCCQC1CQIFAUoCAS8AAQcHAQFLAQFMCQAAAgkAsQIBBQFMAEABAU0BAU4JAKwCAgIMdXNlcl9zdGF0dXNfBQFOAQFPAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF9kYXRlXwUBUAIBXwUBTgEBUQIBTgFQCQCsAgIJAKwCAgkArAICAglhcnRfbmFtZV8FAVACAV8FAU4BAVICAU4BUAkArAICCQCsAgIJAKwCAgIJYXJ0X2Rlc2NfBQFQAgFfBQFOAQFTAgFOAVAJAKwCAgkArAICCQCsAgICEGFydF9kaXNwbGF5X2NpZF8FAVACAV8FAU4BAVQCAU4BUAkArAICCQCsAgIJAKwCAgIQYXJ0X2V4cG9ydF9oYXNoXwUBUAIBXwUBTgEBVQIBTgFQCQCsAgIJAKwCAgkArAICAg9hcnRfZXhwb3J0X2NpZF8FAVACAV8FAU4BAVYCAU4BUAkArAICCQCsAgIJAKwCAgIMYXJ0X21heG1pbnRfBQFQAgFfBQFOAQFXAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9zaWduaWRfBQFQAgFfBQFOAQFYAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9pc3N1ZWRfBQFQAgFfBQFOAQFZAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9vbnNhbGVfBQFQAgFfBQFOAQFaAgFOAVAJAKwCAgkArAICCQCsAgICEWFydF9saWNlbmNlX2hhc2hfBQFQAgFfBQFOAQJhYQIBTgFQCQCsAgIJAKwCAgkArAICAhBhcnRfbGljZW5jZV9jaWRfBQFQAgFfBQFOAQJhYgIBTgFQCQCsAgIJAKwCAgkArAICAglhcnRfdGFnc18FAVACAV8FAU4BAmFjAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF90eXBlXwUBUAIBXwUBTgECYWQCAU4BUAkArAICCQCsAgIJAKwCAgIJYXJ0X25vdGVfBQFQAgFfBQFOAQJhZQIBTgFQCQCsAgIJAKwCAgkArAICAhBhcnRfY3Jhd2xlcl9jaWRfBQFQAgFfBQFOAQJhZgIBTgFQCQCsAgIJAKwCAgkArAICAg5hcnRfcm95YWx0aWVzXwUBUAIBXwUBTgECYWcCAU4BUAkArAICCQCsAgIJAKwCAgIKYXJ0X3ByaWNlXwUBUAIBXwUBTgECYWgCAU4BUAkArAICCQCsAgIJAKwCAgIMYXJ0X2VuZHNhbGVfBQFQAgFfBQFOAQJhaQIBTgFQCQCsAgIJAKwCAgkArAICAhJhcnRfYXNzZXRBY2NlcHRlZF8FAVACAV8FAU4BAmFqAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF9mbGFnXwUBUAIBXwUBTgECYWsBAmFsCQCsAgICDWFydGlzdF9hZ2VudF8FAmFsAQJhbQECYWwJAKwCAgIVYXJ0aXN0X2FnZW50X3ByaW1hcnlfBQJhbAECYW4BAmFsCQCsAgICFGFydGlzdF9wdWJsaWNfYWdlbnRfBQJhbAECYW8BAmFsCQCsAgICHGFydGlzdF9wdWJsaWNfYWdlbnRfcHJpbWFyeV8FAmFsAQJhcAIBTgJhcQkArAICCQCsAgIJAKwCAgITZ2V0X2hhc2hieXR4aWRhZGRyXwUCYXECAV8FAU4BAmFyAQFGCQCsAgICEmdldF9vd25lcl9ieV9oYXNoXwUBRgECYXMCAU4CYXQJAKwCAgkArAICCQCsAgICEmdldF9hcnRpZGJ5c2lnbmlkXwUCYXQCAV8FAU4BAmF1AgFGAU4JAKwCAgIXZ2V0X3R4aWRfYnlfaGFzaF9vd25lcl8JANgEAQkA1BYBCQCbAwEJAKwCAgUBRgUBTgECYXYDAmF3AmF4AmF5AwkBASEBCQEBSQEFAmF3CQACAQIRV3JvbmcgRGlzcGxheSBDSUQDCQEBIQEJAQFJAQUCYXgJAAIBAhBXcm9uZyBFeHBvcnQgQ0lEAwMJAQIhPQIFAmF5AgAJAQEhAQkBAUkBBQJheQcJAAIBAhFXcm9uZyBMaWNlbmNlIENJRAYBAmF6AgJhQQJhQgMJAQEhAQkBAUsBBQJhQQkAAgECGEV4cG9ydCBIYXNoIDY0IGNoYXIuIG1heAMJAQEhAQkBAUsBBQJhQgkAAgECGUxpY2VuY2UgSGFzaCA2NCBjaGFyLiBtYXgGAQJhQwICYUQCYUUDCQAAAgkAsQIBBQJhRAAACQACAQIYRmllbGQgY2Fubm90IGJlIGlzIGVtcHR5AwkAZgIJALECAQUCYUQFAmFFCQACAQkArAICBQJhRAIMIGlzIHRvbyBsb25nBgECYUYBAU4EAmFHCQELdmFsdWVPckVsc2UCCQCdCAIFAWcJAQFNAQUBTgUBegMDCQAAAgUCYUcFAXoGCQAAAgUCYUcFAUECLlJlZ2lzdGVyIHRoaXMgYWNjb3VudCBmaXJzdCB3aXRoICJBY2NvdW50IiB0YWIDCQAAAgUCYUcFAXgCEUFjY291bnQgc3VzcGVuZGVkAwkAAAIFAmFHBQF5Ag9BY2NvdW50IHJlbW92ZWQCAAECYUgCAmF5AmFCBAFKAwkAAAIJALECAQUCYXkAAAUBdAUCYXkEAUwDCQAAAgkAsQIBBQJhQgAABQF1BQJhQgkAlAoCBQFKBQFMAQJhSQoBTgJhdwJheAJhSgJhQQJhSwJhTAJhTQJhTgJhTwQCYVAJAQJhRgEFAU4DCQECIT0CBQJhUAIACQACAQUCYVADCQAAAgkAsQIBBQJhdwAACQACAQIbRGlzcGxheSBDSUQgY2Fubm90IGJlIGVtcHR5AwkBASEBCQECYXYDBQJhdwUCYXgFAmFKCQACAQIQUHJvYmxlbSB3aXRoIENJRAMJAQEhAQkBAmF6AgUCYUEFAmFLCQACAQITUHJvYmxlbSB3aXRoIEhhc2hlcwMJAQEhAQkBAmFDAgUCYUwAZAkAAgECEjEwMCBDaGFyLiBtYXggbmFtZQMJAQEhAQkBAmFDAgUCYU0A6AcJAAIBAhoxMDAwIENoYXIuIG1heCBkZXNjcmlwdGlvbgMDCQBmAgAABQJhTwYJAGYCBQJhTwDoBwkAAgECM1JveWFsdGllcyBjYW5ub3QgYmUgbGVzcyB0aGFuIDAlIG9yIGhpZ2hlciB0aGFuIDEwJQMJAGYCCQCQAwEJALUJAgUCYU4CASwABQkAAgECCzUgdGFncyBtYXguAgABAmFRAQJhUgMJAAACCQCQAwEIBQJhUghwYXltZW50cwAACQACAQITTm8gcGF5bWVudCBhdHRhY2hlZAQCYVMJAQV2YWx1ZQEJAJEDAggFAmFSCHBheW1lbnRzAAAEAmFUCQEFdmFsdWUBCAUCYVMGYW1vdW50CQCUCgIFAmFTBQJhVAECYVUBAmFSBAJhVgkBAmFRAQUCYVIEAmFTCAUCYVYCXzEEAmFUCAUCYVYCXzIEAmFXAwMJAQlpc0RlZmluZWQBCAUCYVMHYXNzZXRJZAkAAAIIBQJhUwdhc3NldElkBQFpBwgFAmFTB2Fzc2V0SWQJAAIBAitPbmx5IFNJR04gdG9rZW4gYWNjZXB0ZWQgYXMgdHJhbnNhY3Rpb24gZmVlAwkBAiE9AgUCYVQFAUIJAAIBCQCsAgICGVBheW1lbnQgYW1vdW50IHNob3VsZCBiZSAJAKQDAQUBQgkAlAoCBQJhVAUCYVcBAmFYAgJhWQFQBAFHCQCaCAIFBHRoaXMJAQFYAgUCYVkFAVADCQABAgUBRwIDSW50BAJhWgUBRwMJAQIhPQIFAmFaAAAGBwcBAmJhAwJhUgJiYgJiYwQCYmQJAQJhUQEFAmFSBAJhUwgFAmJkAl8xBAJhVAgFAmJkAl8yBAJhVwMJAQEhAQkBCWlzRGVmaW5lZAEIBQJhUwdhc3NldElkBQR1bml0AwMJAGYCCQCxAgEFAmJiAAAJAAACCQDYBAEJAQV2YWx1ZQEIBQJhUwdhc3NldElkBQJiYgcIBQJhUwdhc3NldElkCQACAQIOV3JvbmcgYXNzZXQgaWQDAwkAAAIFAmFXBQR1bml0CQECIT0CBQJiYgIABwkAAgECDldyb25nIGFzc2V0IGlkAwkBAiE9AgUCYmMFAmFUCQACAQITUGF5bWVudCBkb24ndCBtYXRjaAkAlAoCBQJhVAUCYVcBAmJlAQJhVwMDAwMDCQECIT0CBQJhVwkA2AQBBQFpCQECIT0CBQJhVwkA2AQBBQFsBwkBAiE9AgUCYVcCBVdBVkVTBwkBAiE9AgUCYVcJANgEAQUBagcJAQIhPQIFAmFXCQDYBAEFAWsHCQACAQImT25seSBTSUdOLCBVU0ROLFVTRFQgb3IgV0FWRVMgYWNjZXB0ZWQGAQJiZgICYVcCYmcEAmJoAwUBYwAKCQEBbgECDndhdmVzX21pbl9zZWxsBAJiaQDAhD0EAmJqAwUBYwABCQBoAgUBQgACAwMDAwMDCQAAAgUCYVcJANgEAQUBagkAZgIFAmJpBQJiZwcJAQIhPQIFAmJnAAAHBgMDCQAAAgUCYVcJANgEAQUBawkAZgIFAmJpBQJiZwcJAQIhPQIFAmJnAAAHBgMDCQAAAgUCYVcJANgEAQUBaQkAZgIFAmJqBQJiZwcJAQIhPQIFAmJnAAAHBgMDAwkAAAIFAmFXCQDYBAEFAWwGCQAAAgUCYVcCBVdBVkVTCQBmAgUCYmgFAmJnBwkBAiE9AgUCYmcAAAcJAAIBAhhXcm9uZyBtaW5pbXVtIHNlbGwgcHJpY2UGAQJiawECYVcDCQAAAgUCYVcCBVdBVkVTBQR1bml0CQDZBAEFAmFXAQJibAECYm0EAmJuCQEBYQEJAKwCAgUCYm0CBV9PUEVOAwkAAAIFAmJuAgAJAAIBAg1CaWQgbm90IGZvdW5kBAJibwkAtQkCBQJibgIBXwQCYnAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJibwABBAJicQkBAmJrAQkAkQMCBQJibwAAAwkAZwIAAAUCYnAJAAIBAgxXcm9uZyBhbW91bnQJAJQKAgUCYnAFAmJxAQJicgICYVICYnMDCQEBIQEFAXYJAAIBBQF3BAJidAMJAQIhPQIFAmJzAgAJAQt2YWx1ZU9yRWxzZQIJAQFwAQkArAICCQClCAEJAKcIAQkA2QQBBQJicwIJX2ZyZWVfdHhzAAAAAAQBTgMDCQAAAgkA2AQBCAgFAmFSBmNhbGxlcgVieXRlcwkApQgBBQR0aGlzCQBmAgUCYnQAAAcJAKUIAQkApwgBCQDZBAEFAmJzCQDYBAEICAUCYVIGY2FsbGVyBWJ5dGVzBAJidQMDCQECIT0CBQJicwIACQBmAgUCYnQAAAcJAPwHBAUBaAIJdXNlRnJlZVR4CQDMCAIJAKUIAQkApwgBCQDZBAEFAmJzBQNuaWwFA25pbAUEdW5pdAkAlgoECQDYBAEIBQJhUg10cmFuc2FjdGlvbklkBQFOCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCYnQBAmJ2AQJhUgMJAQEhAQUBdgkAAgEFAXcJAJUKAwkA2AQBCAUCYVINdHJhbnNhY3Rpb25JZAkA2AQBCAgFAmFSBmNhbGxlcgVieXRlcwgFCWxhc3RCbG9jawl0aW1lc3RhbXABAmJ3BgJhUgFQAmJ4AmJ5AmJ6AmJzBAJiQQkBAmJyAgUCYVIFAmJzBAJiQggFAmJBAl8xBAFOCAUCYkECXzIEAmJDCAUCYkECXzMEAmJ0CAUCYkECXzQEAmJEAwMJAAACCQDYBAEICAUCYVIGY2FsbGVyBWJ5dGVzCQClCAEFBHRoaXMJAGYCBQJidAAABwkApQgBCQCnCAEJANkEAQUCYnMJANgEAQgIBQJhUgZjYWxsZXIFYnl0ZXMDBgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFAmJEAgMgLyAFAmJ4AgMgLyAFAmJ6AgMgLyAFAmJzBAJiRQMDAwkAAAIFAU4FAmJ4CQECIT0CBQJiegIABwkBAiE9AgUCYnkCAAcGBwQCYkYJAQFvAQkBAmFoAgUBTgUBUAMDAwkBAiE9AgUCYkYAAAkAZwIFBmhlaWdodAUCYkYHCQEBIQEFAmJFBwkAAgECC1NhbGUgZW5kZWQuBAJiRwkAAAIFAU4FAmJ4BAJiSAkBAW8BAhB0b3RhbF9uZnRfaXNzdWVkBAFECQEBYQEJAQFXAgUCYngFAVAEAmJJCQEBYQEJAQFRAgUCYngFAVADCQAAAgUCYkkCAAkAAgECEUFydCBkb2Vzbid0IGV4aXN0BAJiSgkBAXEBCQEBWQIFAmJ4BQFQBAJiSwkBAW8BCQEBWAIFAmJ4BQFQBAJiYwMFAmJHCQBoAgUBQgACCQEBbwEJAQJhZwIFAmJ4BQFQBAJiYgMFAmJHCQDYBAEFAWkJAQFhAQkBAmFpAgUCYngFAVAEAmJMCQEBbwEJAQFWAgUCYngFAVADAwMJAQEhAQUCYkUJAQEhAQUCYkcHAwMJAGcCAAAFAmJjBgkBASEBBQJiSgYJAGcCAAAFAmJMBwkAAgECEEFydCBub3QgZm9yIHNhbGUDAwMJAQEhAQUCYkUFAmJHBwkAZwIAAAUCYkwHCQACAQIUTWF4IGlzc3VhYmxlIG5vdCBzZXQEAmFQCQECYUYBBQJieAMDBQJiRQkBAiE9AgUCYVACAAcJAAIBBQJhUAQCYm0JAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIEYmlkXwUBUAIBXwUCYngCAV8FAmJ6AgFfBQJieQQCYk0DBQJiRQkBAmJsAQUCYm0JAQJiYQMFAmFSBQJiYgUCYmMEAmFUCAUCYk0CXzEEAmFXCAUCYk0CXzIEAmJOCQELdmFsdWVPckVsc2UCCQCdCAIFAWcJAQJhawEFAmJ4BQFmBAJiTwkBC3ZhbHVlT3JFbHNlAgkAmggCBQFnCQECYW0BBQJieAAABAJiUAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQFnCQECYW4BBQJieAUBZgQCYlEJAQt2YWx1ZU9yRWxzZQIJAJoIAgUBZwkBAmFvAQUCYngAAAQCYlIJAQFwAQUCYngEAmJTAwkAZgIFAmJSBQZoZWlnaHQAAAMJAAACBQJhVwUBaQUBcgUBcwQCYlQJAGsDBQJhVAUCYlMAZAQCYlUDAwMJAQIhPQIFAmJOBQFmCQBmAgUCYk8AAAcJAGYCBQZoZWlnaHQFAmJSBwkAawMFAmFUBQJiTwCQTgAABAJiVgMDAwkBAiE9AgUCYlAFAWYJAGYCBQJiUQAABwkAZgIFBmhlaWdodAUCYlIHCQBrAwUCYVQFAmJRAJBOAAAEAmJXCQBlAgUCYVQFAmJUAwkAAAIFAmJLBQJiTAkAAgECDEFydCBzb2xkIG91dAQCYlgJAGQCBQJiSwABBAJiWQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCUNyZWF0b3I6IAUCYngCCiwKIEFydElEOiAFAVACCywKIFNpZ25JRDogBQFEAhEsCiBBcnR3b3JrIG5hbWU6IAUCYkkCCiwKIElzc3VlOiAJAKQDAQUCYlgCAS8JAKQDAQUCYkwEAmJaCQDCCAUJAKwCAgIDU0FfCQCkAwEJAGQCBQJiSAABBQJiWQABAAAHBAJjYQkAuAgBBQJiWgQCY2IDAwkAAAIFAmJYBQJiTAYJAQEhAQUCYkoHBgQCY2MDAwMJAAACBQFOBQJieAkBAiE9AgUCYnoCAAcJAQIhPQIFAmJ5AgAHCQERQGV4dHJOYXRpdmUoMTA2MikBBQJieggFAmFSBmNhbGxlcgQCY2QDCQEBIQEJAQlpc0RlZmluZWQBBQJhVwIFV0FWRVMJANgEAQkBBXZhbHVlAQUCYVcEAmJuCQEBYQEJAKwCAgUCYm0CBV9PUEVOBAJjZQkBC0RlbGV0ZUVudHJ5AQkArAICBQJibQIFX09QRU4EAmNmCQELU3RyaW5nRW50cnkCCQCsAgIFAmJtAgdfQ0xPU0VECQCsAgIJAKwCAgUCYm4CAV8JAKQDAQUCYkMEAmNnCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCWFydF9zb2xkXwkApAMBBQJiWAIEX29mXwkApAMBBQJiTAIBXwUBUAIBXwUCYngEAmNoAwkBASEBBQJiRQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQFOAgFfCQCkAwEFAmJDAgFfBQJiQgIBXwkApAMBBQJiYwIBXwUCYmICAV8JANgEAQUCY2EJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApQgBBQJjYwIBXwkApAMBBQJiQwIBXwUCYkICAV8JAKQDAQUCYVQCAV8FAmNkAgFfCQDYBAEFAmNhBAJjaQkBC1N0cmluZ0VudHJ5AgUCY2cFAmNoBAJjagMJAQIhPQIFAmJVAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAWYJAGUCBQJiVAUCYlUFAmFXCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQJiTgUCYlUFAmFXBQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAWYFAmJUBQJhVwUDbmlsBAJjawMJAQIhPQIFAmJWAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAmJQBQJiVgUCYVcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAmJ4CQBlAgUCYlcFAmJWBQJhVwUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQJieAUCYlcFAmFXBQNuaWwEAmNsAwkAZgIFAmJ0AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAU4AAAUEdW5pdAUDbmlsBQNuaWwEAmNtCQDOCAIJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFAmJ4BQFQBQJiWAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgICBG5mdF8JANgEAQUCY2EFAmNnCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhB0b3RhbF9uZnRfaXNzdWVkCQBkAgUCYkgAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFoAgUCYngFAVAAAAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBAVkCBQJieAUBUAUCY2IJAMwIAgUCYloJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY2MAAQUCY2EFA25pbAUCY2oFAmNrBQJjbAMFAmJFCQDMCAIFAmNpCQDMCAIFAmNmCQDMCAIFAmNlBQJjbQkAzAgCBQJjaQUCY20BAmNuAQJjbwQBRwUCY28DCQABAgUBRwIGU3RyaW5nBAJjcAUBRwUCY3AJAAIBAiRTcG9uc29yZWQgUHVibGljIEtleSBTdHJpbmcgZXhwZWN0ZWQKAmNxAQdzZXRDb25mAgFiAmNyBAFOCQClCAEIBQJjcQZjYWxsZXIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQFtCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQFOAwkBCGNvbnRhaW5zAgUBYgIFY29uZl8JAMwIAgkBC1N0cmluZ0VudHJ5AgUBYgUCY3IFA25pbAkAAgECIEVudHJpZXMgc3RhcnRpbmcgd2l0aCBjb25mXyBvbmx5CQACAQIiWW91IGFyZSBub3QgYWxsb3dlZCB0byBjaGFuZ2UgdGhpcwJhUgEKYWRkQXJ0d29yaw4BRgFEAmFMAmFNAmFOAmNzAmF3AmFBAmF4AmFCAmF5AmN0AmFPAmJzBAJjdQkBAmJyAgUCYVIFAmJzBAFQCAUCY3UCXzEEAU4IBQJjdQJfMgQCYkMIBQJjdQJfMwQCYnQIBQJjdQJfNAMJAQEhAQkBAUsBBQFGCQACAQIkSGFzaCBzaG91bGQgYmUgNjQgY2hhcmFjdGVycyBtYXhpbXVtBAJjdgkBAmFIAgUCYXkFAmFCBAJhSggFAmN2Al8xBAJhSwgFAmN2Al8yBAJjdwkBAmFJCgUBTgUCYXcFAmF4BQJhSgUCYUEFAmFLBQJhTAUCYU0FAmFOBQJhTwMJAQIhPQIFAmN3AgAJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEEAmN4CQBmAgkBAXABCQCsAgIFAU4CC19mcmVlX2Ryb3BzAAAEAmN5AwUCY3gJAJQKAgAABQFECQECYVUBBQJhUgQCYVQIBQJjeQJfMQQCYVcIBQJjeQJfMgMJAQEhAQkBCWlzRGVmaW5lZAEFAmFUCQACAQIUU29tZXRoaW5nIHdlbnQgd3JvbmcEAmN6CQEBYQEJAQJhdQIFAUYFAU4DCQECIT0CBQJjegIACQACAQIUWW91IGFscmVhZHkgYWRkZWQgaXQEAmNBCQEBYQEJAQJhcgEFAUYDCQECIT0CBQJjQQIACQACAQIXSGFzaCBhbHJlYWR5IHJlZ2lzdGVyZWQEAmNCCQEBQwMFAUQFAU4FAUYDCQEBIQEFAmNCCQACAQIsU2lnbiBDZXJ0aWZpY2F0ZSBub3QgZm91bmQgZm9yIHRoaXMgYWRkcmVzcy4EAmNDAwUCY3gJAPwHBAUBaAILdXNlRnJlZURyb3AJAMwIAgUBTgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCY0MFAmNDBAJjbAMJAGYCBQJidAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQFOAAAFBHVuaXQFA25pbAUDbmlsCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFyAQUBRgUBTgkAzAgCCQELU3RyaW5nRW50cnkCCQECYXUCBQFGBQFOBQFQCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBTwIFAU4FAVAFAmJDCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFRAgUBTgUBUAUCYUwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVICBQFOBQFQBQJhTQkAzAgCCQELU3RyaW5nRW50cnkCCQEBUwIFAU4FAVAFAmF3CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFVAgUBTgUBUAUCYXgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVQCBQFOBQFQBQJhQQkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgIFAU4FAVAFAmFLCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQIFAU4FAVAFAmFKCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYwIFAU4FAVAFAmNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgIFAU4FAVAFAmFOCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFAU4FAVAAAAkAzAgCCQELU3RyaW5nRW50cnkCCQEBVwIFAU4FAVAFAUQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUBTgUBUAAACQDMCAIJAQxCb29sZWFuRW50cnkCCQEBWQIFAU4FAVAHCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhcwIFAU4FAUQFAVAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFwAgUBTgUBUAUBRgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWUCBQFOBQFQBQJjdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFmAgUBTgUBUAUCYU8JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAWYFAmFUBQFpBQNuaWwFAmNsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFSAQ11cGRhdGVBcnR3b3JrDQJhcQJhTAJhTQJhTgJjcwJhdwJhQQJheAJhQgJheQJjdAJhTwJicwMJAQEhAQUBdgkAAgEFAXcEAmNECQECYnICBQJhUgUCYnMEAmJCCAUCY0QCXzEEAU4IBQJjRAJfMgQCYkMIBQJjRAJfMwQCYnQIBQJjRAJfNAQCY0UJAQJhSAIFAmF5BQJhQgQCYUoIBQJjRQJfMQQCYUsIBQJjRQJfMgQCY3cJAQJhSQoFAU4FAmF3BQJheAUCYUoFAmFBBQJhSwUCYUwFAmFNBQJhTgUCYU8DCQECIT0CBQJjdwIACQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchBAJjegkBAWEBCQEBUQIFAU4FAmFxAwkAAAIFAmN6AgAJAAIBAg9FbnRyeSBub3QgZm91bmQEAmNGCQEBYQEJAQJhagIFAU4FAmFxAwkAAAIFAmNGAgdJTExFR0FMCQACAQIdQ2Fubm90IHVwZGF0ZSBJTExFR0FMIGFydHdvcmsDCQEBIQEJAQJhWAIFAU4FAmFxBAJjbAMJAGYCBQJidAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQFOAAAFBHVuaXQFA25pbAUDbmlsCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVECBQFOBQJhcQUCYUwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVICBQFOBQJhcQUCYU0JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVMCBQFOBQJhcQUCYXcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVUCBQFOBQJhcQUCYXgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVQCBQFOBQJhcQUCYUEJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAgUBTgUCYXEFAmFKCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFaAgUBTgUCYXEFAmFLCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgIFAU4FAmFxBQJhTgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWMCBQFOBQJhcQUCY3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFlAgUBTgUCYXEFAmN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWYCBQFOBQJhcQUCYU8FA25pbAUCY2wJAAIBAg5BbHJlYWR5IG1pbnRlZAJhUgELZmxhZ0FydHdvcmsEAVACY0cCY0YCY0gEAmNJCQECYnYBBQJhUgQCYkIIBQJjSQJfMQQBTggFAmNJAl8yAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUBbQkAzAgCCQClCAEFBHRoaXMFA25pbAUBTgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAICB0NPTlNFTlQJAMwIAgIACQDMCAICD0NIQU5HRV9SRVFVSVJFRAkAzAgCAgdGTEFHR0VECQDMCAICB0lMTEVHQUwFA25pbAUCY0YJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFqAgUCY0cFAVAFAmNGCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZAIFAmNHBQFQBQJjSAUDbmlsCQACAQkArAICAg5Vbmtub3cgc3RhdHVzIAUCY0YJAAIBAhNZb3UgYXJlIG5vdCBhbGxvd2VkAmFSAQ1kZWxldGVBcnR3b3JrAgFQAmNHBAJjSgkBAmJ2AQUCYVIEAmJCCAUCY0oCXzEEAU4IBQJjSgJfMgQCYVkDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQFtCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQFOBQJjRwUBTgQCY3oJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkBAWEBCQEBUQIFAmFZBQFQAiBObyBhcnQgbWF0Y2hpbmcgZm9yIHRoaXMgYWRkcmVzcwMJAAACBQJjegIACQACAQIgTm8gYXJ0IG1hdGNoaW5nIGZvciB0aGlzIGFkZHJlc3MEAUYJAQFhAQkBAmFwAgUCYVkFAVADCQAAAgUBRgIACQACAQIlTm8gYXJ0IGhhc2ggbWF0Y2hpbmcgZm9yIHRoaXMgYWRkcmVzcwQBRAkBAWEBCQEBVwIFAmFZBQFQAwkAAAIFAUQCAAkAAgECE05vIFNJR04gSUQgbWF0Y2hpbmcEAmNLCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFPAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVECBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBUgIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFTAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVUCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBVAIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFaAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFhAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFjAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFiAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVYCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBVwIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFYAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVkCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWoCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWcCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWkCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYXIBBQFGCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhcwIFAmFZBQFECQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhdQIFAUYFAmFZCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhaAIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhZAIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhZQIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhZgIFAmFZBQFQBQNuaWwDCQEBIQEJAQJhWAIFAmFZBQFQAwkBASEBBQF2CQACAQUBdwUCY0sDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQFtCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQFOBQJjSwkAAgECKEFydCBhbHJlYWR5IG1pbnRlZCwgeW91IGNhbm5vdCBkZWxldGUgaXQCYVIBC3NlbGxBcnR3b3JrBgFQAmJnAmNMAmFXAmJGAmJzBAJjTQkBAmJyAgUCYVIFAmJzBAJiQggFAmNNAl8xBAFOCAUCY00CXzIEAmJDCAUCY00CXzMEAmJ0CAUCY00CXzQEAmJJCQEBYQEJAQFRAgUBTgUBUAMJAAACBQJiSQIACQACAQIjVGhpcyBhcnQgZG9lc24ndCBtYXRjaCB5b3VyIGFjY291bnQEAmNGCQEBYQEJAQJhagIFAU4FAVADCQEPY29udGFpbnNFbGVtZW50AgkAzAgCAg9DSEFOR0VfUkVRVUlSRUQJAMwIAgIHRkxBR0dFRAkAzAgCAgdJTExFR0FMBQNuaWwFAmNGCQACAQIPRmxhZ2dlZCBhcnR3b3JrBAJjTgkBAW8BCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUBUAMJAGYCAAAFAmJGCQACAQIMTmVnYXRpdmUgZW5kAwMJAGYCBQJiRgAAAwkBAiE9AgUCY0wAAQYJAQIhPQIFAmJnAAAHCQACAQI6VGltZWQgb2ZmZXIgb25seSBhbGxvd2VkIGZvciB1bmlxdWUgZWRpdGlvbiBhbmQgb2ZmZXIgb25seQQCY08DCQAAAgUCYkYAAAAABQZoZWlnaHQDCQEBIQEJAQJiZQEFAmFXCQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchAwkBASEBCQECYmYCBQJhVwUCYmcJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEEAmFQCQECYUYBBQFOAwkBAiE9AgUCYVACAAkAAgEFAmFQBAJiSwkBAW8BCQEBWAIFAU4FAVAEAmJMCQEBbwEJAQFWAgUBTgUBUAMJAGYCBQJjTABkCQACAQIcMTAwIGVkaXRpb25zIG1heCBwZXIgYXJ0d29yawMDCQECIT0CBQJiSwAACQAAAgUCYksFAmJMBwkAAgECFE1heCBlZGl0aW9uIHJlYWNoZWQuAwMJAGYCBQJiSwAACQECIT0CBQJiTAUCY0wHCQACAQImQ2Fubm90IGNoYW5nZSBtYXhpbXVtIGlzc3VhYmxlIGFueW1vcmUDAwkAZgIFAmNOAAAJAQIhPQIFAmJMBQJjTAcJAAIBAjFDYW5ub3QgY2hhbmdlIG1heGltdW0gaXNzdWFibGUgd2l0aCBhY3RpdmUgb3JkZXJzBAJjYgMDCQBmAgUCYmcAAAkAZgIFAmNMAAAHBgcEAmNsAwkAZgIFAmJ0AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAU4AAAUEdW5pdAUDbmlsBQNuaWwJAM4IAgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBAVkCBQFOBQFQBQJjYgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFnAgUBTgUBUAUCYmcJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUBTgUBUAUCY0wJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFpAgUBTgUBUAUCYVcJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhaAIFAU4FAVAJAGQCBQJjTwUCYkYFA25pbAUCY2wCYVIBCmJ1eUFydHdvcmsCAVACYngJAQJidwYFAmFSBQFQBQJieAIAAgACAAJhUgEGc2V0QmlkAgFQAmJ4BAJjUAkBAmJ2AQUCYVIEAmJCCAUCY1ACXzEEAU4IBQJjUAJfMgQCYkMIBQJjUAJfMwQCY1EJAQJhUQEFAmFSBAJhUwgFAmNRAl8xBAJhVAgFAmNRAl8yBAJhVwMJAQEhAQkBCWlzRGVmaW5lZAEIBQJhUwdhc3NldElkAgVXQVZFUwkA2AQBCQEFdmFsdWUBCAUCYVMHYXNzZXRJZAQCYkYJAQFvAQkBAmFoAgUCYngFAVADAwkBAiE9AgUCYkYAAAkAZwIFBmhlaWdodAUCYkYHCQACAQILU2FsZSBlbmRlZC4EAmNOCQEBbwEJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQFQAwkBASEBCQECYmUBBQJhVwkAAgECEmFzc2V0IG5vdCBhY2NlcHRlZAMJAQEhAQkBAmJmAgUCYVcFAmFUCQACAQIOV3JvbmcgbWluIHNlbGwEAmJLCQEBbwEJAQFYAgUCYngFAVAEAmJMCQEBbwEJAQFWAgUCYngFAVADCQBnAgAABQJiTAkAAgECI05vIG1heCBlZGl0aW9uIHNldCBmb3IgdGhpcyBhcnR3b3JrAwkAZwIFAmJLBQJiTAkAAgECGFNvbGQgb3V0LCB5b3UgY2Fubm90IGJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIEYmlkXwUBUAIBXwUCYngCAV8FAU4CAV8FAmJCAgVfT1BFTgkArAICCQCsAgIJAKwCAgkArAICBQJhVwIBXwkApAMBBQJhVAIBXwkApAMBBQJiQwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhJjdXJyZW50X2JpZGFtb3VudF8FAVAJAGQCBQJjTgABBQNuaWwCYVIBCWFjY2VwdEJpZAUBUAJieAJieQJiegJicwQCY1IJAQJicgIFAmFSBQJicwQCYkIIBQJjUgJfMQQCY1MIBQJjUgJfMgQCYkMIBQJjUgJfMwQCYnQIBQJjUgJfNAMJAQIhPQIFAmNTBQJieAkAAgECGVlvdSBjYW5ub3QgZG8gdGhpcyBhY3Rpb24JAQJidwYFAmFSBQFQBQJieAUCYnkFAmJ6BQJicwJhUgEJY2FuY2VsQmlkBAFQAmJ4AmJ5AmJ6BAJjVAkBAmJ2AQUCYVIEAmJCCAUCY1QCXzEEAU4IBQJjVAJfMgQCYkMIBQJjVAJfMwMDCQECIT0CBQFOBQJiegkBAiE9AgUBTgUCYngHCQACAQIZWW91IGNhbm5vdCBkbyB0aGlzIGFjdGlvbgQCY1UDCQAAAgUBTgUCYngFAmJ6BQFOBAJjTgkBAW8BCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUBUAQCYm0JAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIEYmlkXwUBUAIBXwUCYngCAV8FAmJ6AgFfBQJieQQCYm4JAQFhAQkArAICBQJibQIFX09QRU4DCQAAAgUCYm4CAAkAAgECDUJpZCBub3QgZm91bmQEAmJvCQC1CQIFAmJuAgFfBAJhVwkBAmJrAQkAkQMCBQJibwAABAJjVgIIQ0FOQ0VMRUQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICBQJibQIFX09QRU4JAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIFAmJtAgFfBQJjVgkArAICCQCsAgIFAmJuAgFfCQCkAwEFAmJDCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUBUAkAZQIFAmNOAAEJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAmNVCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYm8AAQUCYVcFA25pbAECY1cBAmNYAAQBRwUCY1cDCQABAgUBRwIXSW52b2tlU2NyaXB0VHJhbnNhY3Rpb24EAmNZBQFHAwMDAwkAAAIIBQJjWQhmdW5jdGlvbgIKYWRkQXJ0d29yawkAAAIIBQJjWQRkQXBwBQR0aGlzBwkAAAIIBQJjWQNmZWUAoMIeBwkAAAIIBQJjWQpmZWVBc3NldElkBQR1bml0BwkA9AMDCAUCY1cJYm9keUJ5dGVzCQCRAwIIBQJjVwZwcm9vZnMAAAkA2QQBCQECY24BCQCRAwIIBQJjWQRhcmdzAA0DAwMDCQAAAggFAmNZCGZ1bmN0aW9uAg11cGRhdGVBcnR3b3JrCQAAAggFAmNZBGRBcHAFBHRoaXMHCQAAAggFAmNZA2ZlZQCgwh4HCQAAAggFAmNZCmZlZUFzc2V0SWQFBHVuaXQHCQD0AwMIBQJjVwlib2R5Qnl0ZXMJAJEDAggFAmNXBnByb29mcwAACQDZBAEJAQJjbgEJAJEDAggFAmNZBGFyZ3MADAMDAwMJAAACCAUCY1kIZnVuY3Rpb24CC3NlbGxBcnR3b3JrCQAAAggFAmNZBGRBcHAFBHRoaXMHCQAAAggFAmNZA2ZlZQCgwh4HCQAAAggFAmNZCmZlZUFzc2V0SWQFBHVuaXQHCQD0AwMIBQJjVwlib2R5Qnl0ZXMJAJEDAggFAmNXBnByb29mcwAACQDZBAEJAQJjbgEJAJEDAggFAmNZBGFyZ3MABQMDAwMJAAACCAUCY1kIZnVuY3Rpb24CCWFjY2VwdEJpZAkAAAIIBQJjWQRkQXBwBQR0aGlzBwkAAAIIBQJjWQNmZWUAoMIeBwkAAAIIBQJjWQpmZWVBc3NldElkBQR1bml0BwkAyBMDCAUCY1cJYm9keUJ5dGVzCQCRAwIIBQJjVwZwcm9vZnMAAAkA2QQBCQECY24BCQCRAwIIBQJjWQRhcmdzAAQJAPQDAwgFAmNXCWJvZHlCeXRlcwkAkQMCCAUCY1cGcHJvb2ZzAAAIBQJjVw9zZW5kZXJQdWJsaWNLZXkJAPQDAwgFAmNXCWJvZHlCeXRlcwkAkQMCCAUCY1cGcHJvb2ZzAAAIBQJjVw9zZW5kZXJQdWJsaWNLZXkzuyac", "height": 2503580, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BUWmPvsmKTKiion78DmS9xZrAgfxnnbvdQAyyGR6M7SA Next: F4ePAvJhj9mAsWMcfc8YpYFFiTVRfKRuVPDexPShyUwQ Diff:
OldNewDifferences
411411 let N = bA._2
412412 let bC = bA._3
413413 let bt = bA._4
414+ let bD = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
415+ then (bt > 0)
416+ else false)
417+ then toString(addressFromPublicKey(fromBase58String(bs)))
418+ else toBase58String(aR.caller.bytes)
414419 if (true)
415- then throw(toString(bt))
420+ then throw(((((((bD + " / ") + bx) + " / ") + bz) + " / ") + bs))
416421 else {
417- let bD = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
418- then (bt > 0)
422+ let bE = if (if (if ((N == bx))
423+ then (bz != "")
419424 else false)
420- then toString(addressFromPublicKey(fromBase58String(bs)))
421- else toBase58String(aR.caller.bytes)
422- if (true)
423- then throw(((((((bD + " / ") + bx) + " / ") + bz) + " / ") + bs))
425+ then (by != "")
426+ else false)
427+ then true
428+ else false
429+ let bF = o(ah(N, P))
430+ if (if (if ((bF != 0))
431+ then (height >= bF)
432+ else false)
433+ then !(bE)
434+ else false)
435+ then throw("Sale ended.")
424436 else {
425- let bE = if (if (if ((N == bx))
426- then (bz != "")
427- else false)
428- then (by != "")
429- else false)
430- then true
431- else false
432- let bF = o(ah(N, P))
433- if (if (if ((bF != 0))
434- then (height >= bF)
435- else false)
436- then !(bE)
437- else false)
438- then throw("Sale ended.")
437+ let bG = (N == bx)
438+ let bH = o("total_nft_issued")
439+ let D = a(W(bx, P))
440+ let bI = a(Q(bx, P))
441+ if ((bI == ""))
442+ then throw("Art doesn't exist")
439443 else {
440- let bG = (N == bx)
441- let bH = o("total_nft_issued")
442- let D = a(W(bx, P))
443- let bI = a(Q(bx, P))
444- if ((bI == ""))
445- then throw("Art doesn't exist")
446- else {
447- let bJ = q(Y(bx, P))
448- let bK = o(X(bx, P))
449- let bc = if (bG)
450- then (B * 2)
451- else o(ag(bx, P))
452- let bb = if (bG)
453- then toBase58String(i)
454- else a(ai(bx, P))
455- let bL = o(V(bx, P))
456- if (if (if (!(bE))
457- then !(bG)
458- else false)
459- then if (if ((0 >= bc))
460- then true
461- else !(bJ))
462- then true
463- else (0 >= bL)
464- else false)
465- then throw("Art not for sale")
466- else if (if (if (!(bE))
467- then bG
444+ let bJ = q(Y(bx, P))
445+ let bK = o(X(bx, P))
446+ let bc = if (bG)
447+ then (B * 2)
448+ else o(ag(bx, P))
449+ let bb = if (bG)
450+ then toBase58String(i)
451+ else a(ai(bx, P))
452+ let bL = o(V(bx, P))
453+ if (if (if (!(bE))
454+ then !(bG)
455+ else false)
456+ then if (if ((0 >= bc))
457+ then true
458+ else !(bJ))
459+ then true
460+ else (0 >= bL)
461+ else false)
462+ then throw("Art not for sale")
463+ else if (if (if (!(bE))
464+ then bG
465+ else false)
466+ then (0 >= bL)
467+ else false)
468+ then throw("Max issuable not set")
469+ else {
470+ let aP = aF(bx)
471+ if (if (bE)
472+ then (aP != "")
468473 else false)
469- then (0 >= bL)
470- else false)
471- then throw("Max issuable not set")
474+ then throw(aP)
472475 else {
473- let aP = aF(bx)
474- if (if (bE)
475- then (aP != "")
476+ let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
477+ let bM = if (bE)
478+ then bl(bm)
479+ else ba(aR, bb, bc)
480+ let aT = bM._1
481+ let aW = bM._2
482+ let bN = valueOrElse(getString(g, ak(bx)), f)
483+ let bO = valueOrElse(getInteger(g, am(bx)), 0)
484+ let bP = valueOrElse(getString(g, an(bx)), f)
485+ let bQ = valueOrElse(getInteger(g, ao(bx)), 0)
486+ let bR = p(bx)
487+ let bS = if ((bR > height))
488+ then 0
489+ else if ((aW == i))
490+ then r
491+ else s
492+ let bT = fraction(aT, bS, 100)
493+ let bU = if (if (if ((bN != f))
494+ then (bO > 0)
476495 else false)
477- then throw(aP)
496+ then (height > bR)
497+ else false)
498+ then fraction(aT, bO, 10000)
499+ else 0
500+ let bV = if (if (if ((bP != f))
501+ then (bQ > 0)
502+ else false)
503+ then (height > bR)
504+ else false)
505+ then fraction(aT, bQ, 10000)
506+ else 0
507+ let bW = (aT - bT)
508+ if ((bK == bL))
509+ then throw("Art sold out")
478510 else {
479- let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
480- let bM = if (bE)
481- then bl(bm)
482- else ba(aR, bb, bc)
483- let aT = bM._1
484- let aW = bM._2
485- let bN = valueOrElse(getString(g, ak(bx)), f)
486- let bO = valueOrElse(getInteger(g, am(bx)), 0)
487- let bP = valueOrElse(getString(g, an(bx)), f)
488- let bQ = valueOrElse(getInteger(g, ao(bx)), 0)
489- let bR = p(bx)
490- let bS = if ((bR > height))
491- then 0
492- else if ((aW == i))
493- then r
494- else s
495- let bT = fraction(aT, bS, 100)
496- let bU = if (if (if ((bN != f))
497- then (bO > 0)
498- else false)
499- then (height > bR)
500- else false)
501- then fraction(aT, bO, 10000)
502- else 0
503- let bV = if (if (if ((bP != f))
504- then (bQ > 0)
505- else false)
506- then (height > bR)
507- else false)
508- then fraction(aT, bQ, 10000)
509- else 0
510- let bW = (aT - bT)
511- if ((bK == bL))
512- then throw("Art sold out")
513- else {
514- let bX = (bK + 1)
515- let bY = ((((((((((("Creator: " + bx) + ",
511+ let bX = (bK + 1)
512+ let bY = ((((((((((("Creator: " + bx) + ",
516513 ArtID: ") + P) + ",
517514 SignID: ") + D) + ",
518515 Artwork name: ") + bI) + ",
519516 Issue: ") + toString(bX)) + "/") + toString(bL))
520- let bZ = Issue(("SA_" + toString((bH + 1))), bY, 1, 0, false)
521- let ca = calculateAssetId(bZ)
522- let cb = if (if ((bX == bL))
523- then true
524- else !(bJ))
525- then false
526- else true
527- let cc = if (if (if ((N == bx))
528- then (bz != "")
529- else false)
530- then (by != "")
531- else false)
532- then addressFromStringValue(bz)
533- else aR.caller
534- let cd = if (!(isDefined(aW)))
535- then "WAVES"
536- else toBase58String(value(aW))
537- let bn = a((bm + "_OPEN"))
538- let ce = DeleteEntry((bm + "_OPEN"))
539- let cf = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bC)))
540- let cg = ((((((("art_sold_" + toString(bX)) + "_of_") + toString(bL)) + "_") + P) + "_") + bx)
541- let ch = if (!(bE))
542- then ((((((((((N + "_") + toString(bC)) + "_") + bB) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(ca))
543- else ((((((((((toString(cc) + "_") + toString(bC)) + "_") + bB) + "_") + toString(aT)) + "_") + cd) + "_") + toBase58String(ca))
544- let ci = StringEntry(cg, ch)
545- let cj = if ((bU != 0))
546- then [ScriptTransfer(Address(fromBase58String(f)), (bT - bU), aW), ScriptTransfer(Address(fromBase58String(bN)), bU, aW)]
547- else [ScriptTransfer(Address(fromBase58String(f)), bT, aW)]
548- let ck = if ((bV != 0))
549- then [ScriptTransfer(Address(fromBase58String(bP)), bV, aW), ScriptTransfer(Address(fromBase58String(bx)), (bW - bV), aW)]
550- else [ScriptTransfer(Address(fromBase58String(bx)), bW, aW)]
551- let cl = if ((bt > 0))
552- then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
553- else nil
554- let cm = ((([IntegerEntry(X(bx, P), bX), StringEntry(("nft_" + toBase58String(ca)), cg), IntegerEntry("total_nft_issued", (bH + 1)), IntegerEntry(ah(bx, P), 0), BooleanEntry(Y(bx, P), cb), bZ, ScriptTransfer(cc, 1, ca)] ++ cj) ++ ck) ++ cl)
555- if (bE)
556- then [ci, cf, ce] :: cm
557- else ci :: cm
558- }
517+ let bZ = Issue(("SA_" + toString((bH + 1))), bY, 1, 0, false)
518+ let ca = calculateAssetId(bZ)
519+ let cb = if (if ((bX == bL))
520+ then true
521+ else !(bJ))
522+ then false
523+ else true
524+ let cc = if (if (if ((N == bx))
525+ then (bz != "")
526+ else false)
527+ then (by != "")
528+ else false)
529+ then addressFromStringValue(bz)
530+ else aR.caller
531+ let cd = if (!(isDefined(aW)))
532+ then "WAVES"
533+ else toBase58String(value(aW))
534+ let bn = a((bm + "_OPEN"))
535+ let ce = DeleteEntry((bm + "_OPEN"))
536+ let cf = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bC)))
537+ let cg = ((((((("art_sold_" + toString(bX)) + "_of_") + toString(bL)) + "_") + P) + "_") + bx)
538+ let ch = if (!(bE))
539+ then ((((((((((N + "_") + toString(bC)) + "_") + bB) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(ca))
540+ else ((((((((((toString(cc) + "_") + toString(bC)) + "_") + bB) + "_") + toString(aT)) + "_") + cd) + "_") + toBase58String(ca))
541+ let ci = StringEntry(cg, ch)
542+ let cj = if ((bU != 0))
543+ then [ScriptTransfer(Address(fromBase58String(f)), (bT - bU), aW), ScriptTransfer(Address(fromBase58String(bN)), bU, aW)]
544+ else [ScriptTransfer(Address(fromBase58String(f)), bT, aW)]
545+ let ck = if ((bV != 0))
546+ then [ScriptTransfer(Address(fromBase58String(bP)), bV, aW), ScriptTransfer(Address(fromBase58String(bx)), (bW - bV), aW)]
547+ else [ScriptTransfer(Address(fromBase58String(bx)), bW, aW)]
548+ let cl = if ((bt > 0))
549+ then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
550+ else nil
551+ let cm = ((([IntegerEntry(X(bx, P), bX), StringEntry(("nft_" + toBase58String(ca)), cg), IntegerEntry("total_nft_issued", (bH + 1)), IntegerEntry(ah(bx, P), 0), BooleanEntry(Y(bx, P), cb), bZ, ScriptTransfer(cc, 1, ca)] ++ cj) ++ ck) ++ cl)
552+ if (bE)
553+ then [ci, cf, ce] :: cm
554+ else ci :: cm
559555 }
560556 }
561- }
557+ }
562558 }
563559 }
564560 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b) = valueOrElse(getString(this, b), "")
55
66
77 let c = false
88
99 let d = value(addressFromString(a("conf_oracle_fee")))
1010
1111 let e = value(addressFromString(a("conf_signweb_dapp")))
1212
1313 let f = a("conf_fee_receiver")
1414
1515 let g = if (c)
1616 then value(addressFromString("3Mt4RGMEyjSWYAocTPqd55wdHQQB3PU2UCm"))
1717 else value(addressFromString(a("conf_users_dapp")))
1818
1919 let h = value(addressFromString(a("conf_whitelist_dapp")))
2020
2121 let i = fromBase58String(a("conf_accepted_asset_SIGN"))
2222
2323 let j = fromBase58String(a("conf_accepted_asset_USDN"))
2424
2525 let k = fromBase58String(a("conf_accepted_asset_USDT"))
2626
2727 let l = base58''
2828
2929 let m = a("conf_admin_1")
3030
3131 func n (b) = valueOrErrorMessage(getInteger(d, b), "Integer undefine or 0 in oracle")
3232
3333
3434 func o (b) = valueOrElse(getInteger(this, b), 0)
3535
3636
3737 func p (b) = valueOrElse(getInteger(h, b), 0)
3838
3939
4040 func q (b) = valueOrElse(getBoolean(this, b), false)
4141
4242
4343 let r = 7
4444
4545 let s = 10
4646
4747 let t = a("conf_default_licence")
4848
4949 let u = a("conf_default_licence_hash")
5050
5151 let v = valueOrElse(getBoolean(g, "conf_dapp_is_running"), true)
5252
5353 let w = valueOrElse(getString(g, "conf_maintenance_msg"), "")
5454
5555 let x = "SUSPENDED"
5656
5757 let y = "REMOVED"
5858
5959 let z = "UNREGISTERED"
6060
6161 let A = "ALLOWED"
6262
6363 let B = n(("certification_fee_" + toBase58String(i)))
6464
6565 func C (D,E,F) = {
6666 let G = getString(e, ((("data_fc_" + D) + "_") + E))
6767 if ($isInstanceOf(G, "String"))
6868 then {
6969 let H = G
7070 if (contains(H, F))
7171 then true
7272 else false
7373 }
7474 else false
7575 }
7676
7777
7878 func I (J) = if (contains(J, "/"))
7979 then if (if ((76 > size(J)))
8080 then (size(split(J, "/")[0]) == 59)
8181 else false)
8282 then (16 > size(split(J, "/")[1]))
8383 else false
8484 else false
8585
8686
8787 func K (L) = (size(L) == 64)
8888
8989
9090 func M (N) = ("user_status_" + N)
9191
9292
9393 func O (N,P) = ((("art_date_" + P) + "_") + N)
9494
9595
9696 func Q (N,P) = ((("art_name_" + P) + "_") + N)
9797
9898
9999 func R (N,P) = ((("art_desc_" + P) + "_") + N)
100100
101101
102102 func S (N,P) = ((("art_display_cid_" + P) + "_") + N)
103103
104104
105105 func T (N,P) = ((("art_export_hash_" + P) + "_") + N)
106106
107107
108108 func U (N,P) = ((("art_export_cid_" + P) + "_") + N)
109109
110110
111111 func V (N,P) = ((("art_maxmint_" + P) + "_") + N)
112112
113113
114114 func W (N,P) = ((("art_signid_" + P) + "_") + N)
115115
116116
117117 func X (N,P) = ((("art_issued_" + P) + "_") + N)
118118
119119
120120 func Y (N,P) = ((("art_onsale_" + P) + "_") + N)
121121
122122
123123 func Z (N,P) = ((("art_licence_hash_" + P) + "_") + N)
124124
125125
126126 func aa (N,P) = ((("art_licence_cid_" + P) + "_") + N)
127127
128128
129129 func ab (N,P) = ((("art_tags_" + P) + "_") + N)
130130
131131
132132 func ac (N,P) = ((("art_type_" + P) + "_") + N)
133133
134134
135135 func ad (N,P) = ((("art_note_" + P) + "_") + N)
136136
137137
138138 func ae (N,P) = ((("art_crawler_cid_" + P) + "_") + N)
139139
140140
141141 func af (N,P) = ((("art_royalties_" + P) + "_") + N)
142142
143143
144144 func ag (N,P) = ((("art_price_" + P) + "_") + N)
145145
146146
147147 func ah (N,P) = ((("art_endsale_" + P) + "_") + N)
148148
149149
150150 func ai (N,P) = ((("art_assetAccepted_" + P) + "_") + N)
151151
152152
153153 func aj (N,P) = ((("art_flag_" + P) + "_") + N)
154154
155155
156156 func ak (al) = ("artist_agent_" + al)
157157
158158
159159 func am (al) = ("artist_agent_primary_" + al)
160160
161161
162162 func an (al) = ("artist_public_agent_" + al)
163163
164164
165165 func ao (al) = ("artist_public_agent_primary_" + al)
166166
167167
168168 func ap (N,aq) = ((("get_hashbytxidaddr_" + aq) + "_") + N)
169169
170170
171171 func ar (F) = ("get_owner_by_hash_" + F)
172172
173173
174174 func as (N,at) = ((("get_artidbysignid_" + at) + "_") + N)
175175
176176
177177 func au (F,N) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((F + N)))))
178178
179179
180180 func av (aw,ax,ay) = if (!(I(aw)))
181181 then throw("Wrong Display CID")
182182 else if (!(I(ax)))
183183 then throw("Wrong Export CID")
184184 else if (if ((ay != ""))
185185 then !(I(ay))
186186 else false)
187187 then throw("Wrong Licence CID")
188188 else true
189189
190190
191191 func az (aA,aB) = if (!(K(aA)))
192192 then throw("Export Hash 64 char. max")
193193 else if (!(K(aB)))
194194 then throw("Licence Hash 64 char. max")
195195 else true
196196
197197
198198 func aC (aD,aE) = if ((size(aD) == 0))
199199 then throw("Field cannot be is empty")
200200 else if ((size(aD) > aE))
201201 then throw((aD + " is too long"))
202202 else true
203203
204204
205205 func aF (N) = {
206206 let aG = valueOrElse(getString(g, M(N)), z)
207207 if (if ((aG == z))
208208 then true
209209 else (aG == A))
210210 then "Register this account first with \"Account\" tab"
211211 else if ((aG == x))
212212 then "Account suspended"
213213 else if ((aG == y))
214214 then "Account removed"
215215 else ""
216216 }
217217
218218
219219 func aH (ay,aB) = {
220220 let J = if ((size(ay) == 0))
221221 then t
222222 else ay
223223 let L = if ((size(aB) == 0))
224224 then u
225225 else aB
226226 $Tuple2(J, L)
227227 }
228228
229229
230230 func aI (N,aw,ax,aJ,aA,aK,aL,aM,aN,aO) = {
231231 let aP = aF(N)
232232 if ((aP != ""))
233233 then throw(aP)
234234 else if ((size(aw) == 0))
235235 then throw("Display CID cannot be empty")
236236 else if (!(av(aw, ax, aJ)))
237237 then throw("Problem with CID")
238238 else if (!(az(aA, aK)))
239239 then throw("Problem with Hashes")
240240 else if (!(aC(aL, 100)))
241241 then throw("100 Char. max name")
242242 else if (!(aC(aM, 1000)))
243243 then throw("1000 Char. max description")
244244 else if (if ((0 > aO))
245245 then true
246246 else (aO > 1000))
247247 then throw("Royalties cannot be less than 0% or higher than 10%")
248248 else if ((size(split(aN, ",")) > 5))
249249 then throw("5 tags max.")
250250 else ""
251251 }
252252
253253
254254 func aQ (aR) = if ((size(aR.payments) == 0))
255255 then throw("No payment attached")
256256 else {
257257 let aS = value(aR.payments[0])
258258 let aT = value(aS.amount)
259259 $Tuple2(aS, aT)
260260 }
261261
262262
263263 func aU (aR) = {
264264 let aV = aQ(aR)
265265 let aS = aV._1
266266 let aT = aV._2
267267 let aW = if (if (isDefined(aS.assetId))
268268 then (aS.assetId == i)
269269 else false)
270270 then aS.assetId
271271 else throw("Only SIGN token accepted as transaction fee")
272272 if ((aT != B))
273273 then throw(("Payment amount should be " + toString(B)))
274274 else $Tuple2(aT, aW)
275275 }
276276
277277
278278 func aX (aY,P) = {
279279 let G = getInteger(this, X(aY, P))
280280 if ($isInstanceOf(G, "Int"))
281281 then {
282282 let aZ = G
283283 if ((aZ != 0))
284284 then true
285285 else false
286286 }
287287 else false
288288 }
289289
290290
291291 func ba (aR,bb,bc) = {
292292 let bd = aQ(aR)
293293 let aS = bd._1
294294 let aT = bd._2
295295 let aW = if (!(isDefined(aS.assetId)))
296296 then unit
297297 else if (if ((size(bb) > 0))
298298 then (toBase58String(value(aS.assetId)) == bb)
299299 else false)
300300 then aS.assetId
301301 else throw("Wrong asset id")
302302 if (if ((aW == unit))
303303 then (bb != "")
304304 else false)
305305 then throw("Wrong asset id")
306306 else if ((bc != aT))
307307 then throw("Payment don't match")
308308 else $Tuple2(aT, aW)
309309 }
310310
311311
312312 func be (aW) = if (if (if (if (if ((aW != toBase58String(i)))
313313 then (aW != toBase58String(l))
314314 else false)
315315 then (aW != "WAVES")
316316 else false)
317317 then (aW != toBase58String(j))
318318 else false)
319319 then (aW != toBase58String(k))
320320 else false)
321321 then throw("Only SIGN, USDN,USDT or WAVES accepted")
322322 else true
323323
324324
325325 func bf (aW,bg) = {
326326 let bh = if (c)
327327 then 10
328328 else n("waves_min_sell")
329329 let bi = 1000000
330330 let bj = if (c)
331331 then 1
332332 else (B * 2)
333333 if (if (if (if (if (if ((aW == toBase58String(j)))
334334 then (bi > bg)
335335 else false)
336336 then (bg != 0)
337337 else false)
338338 then true
339339 else if (if ((aW == toBase58String(k)))
340340 then (bi > bg)
341341 else false)
342342 then (bg != 0)
343343 else false)
344344 then true
345345 else if (if ((aW == toBase58String(i)))
346346 then (bj > bg)
347347 else false)
348348 then (bg != 0)
349349 else false)
350350 then true
351351 else if (if (if ((aW == toBase58String(l)))
352352 then true
353353 else (aW == "WAVES"))
354354 then (bh > bg)
355355 else false)
356356 then (bg != 0)
357357 else false)
358358 then throw("Wrong minimum sell price")
359359 else true
360360 }
361361
362362
363363 func bk (aW) = if ((aW == "WAVES"))
364364 then unit
365365 else fromBase58String(aW)
366366
367367
368368 func bl (bm) = {
369369 let bn = a((bm + "_OPEN"))
370370 if ((bn == ""))
371371 then throw("Bid not found")
372372 else {
373373 let bo = split(bn, "_")
374374 let bp = parseIntValue(bo[1])
375375 let bq = bk(bo[0])
376376 if ((0 >= bp))
377377 then throw("Wrong amount")
378378 else $Tuple2(bp, bq)
379379 }
380380 }
381381
382382
383383 func br (aR,bs) = if (!(v))
384384 then throw(w)
385385 else {
386386 let bt = if ((bs != ""))
387387 then valueOrElse(p((toString(addressFromPublicKey(fromBase58String(bs))) + "_free_txs")), 0)
388388 else 0
389389 let N = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
390390 then (bt > 0)
391391 else false)
392392 then toString(addressFromPublicKey(fromBase58String(bs)))
393393 else toBase58String(aR.caller.bytes)
394394 let bu = if (if ((bs != ""))
395395 then (bt > 0)
396396 else false)
397397 then invoke(h, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bs)))], nil)
398398 else unit
399399 $Tuple4(toBase58String(aR.transactionId), N, lastBlock.timestamp, bt)
400400 }
401401
402402
403403 func bv (aR) = if (!(v))
404404 then throw(w)
405405 else $Tuple3(toBase58String(aR.transactionId), toBase58String(aR.caller.bytes), lastBlock.timestamp)
406406
407407
408408 func bw (aR,P,bx,by,bz,bs) = {
409409 let bA = br(aR, bs)
410410 let bB = bA._1
411411 let N = bA._2
412412 let bC = bA._3
413413 let bt = bA._4
414+ let bD = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
415+ then (bt > 0)
416+ else false)
417+ then toString(addressFromPublicKey(fromBase58String(bs)))
418+ else toBase58String(aR.caller.bytes)
414419 if (true)
415- then throw(toString(bt))
420+ then throw(((((((bD + " / ") + bx) + " / ") + bz) + " / ") + bs))
416421 else {
417- let bD = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
418- then (bt > 0)
422+ let bE = if (if (if ((N == bx))
423+ then (bz != "")
419424 else false)
420- then toString(addressFromPublicKey(fromBase58String(bs)))
421- else toBase58String(aR.caller.bytes)
422- if (true)
423- then throw(((((((bD + " / ") + bx) + " / ") + bz) + " / ") + bs))
425+ then (by != "")
426+ else false)
427+ then true
428+ else false
429+ let bF = o(ah(N, P))
430+ if (if (if ((bF != 0))
431+ then (height >= bF)
432+ else false)
433+ then !(bE)
434+ else false)
435+ then throw("Sale ended.")
424436 else {
425- let bE = if (if (if ((N == bx))
426- then (bz != "")
427- else false)
428- then (by != "")
429- else false)
430- then true
431- else false
432- let bF = o(ah(N, P))
433- if (if (if ((bF != 0))
434- then (height >= bF)
435- else false)
436- then !(bE)
437- else false)
438- then throw("Sale ended.")
437+ let bG = (N == bx)
438+ let bH = o("total_nft_issued")
439+ let D = a(W(bx, P))
440+ let bI = a(Q(bx, P))
441+ if ((bI == ""))
442+ then throw("Art doesn't exist")
439443 else {
440- let bG = (N == bx)
441- let bH = o("total_nft_issued")
442- let D = a(W(bx, P))
443- let bI = a(Q(bx, P))
444- if ((bI == ""))
445- then throw("Art doesn't exist")
446- else {
447- let bJ = q(Y(bx, P))
448- let bK = o(X(bx, P))
449- let bc = if (bG)
450- then (B * 2)
451- else o(ag(bx, P))
452- let bb = if (bG)
453- then toBase58String(i)
454- else a(ai(bx, P))
455- let bL = o(V(bx, P))
456- if (if (if (!(bE))
457- then !(bG)
458- else false)
459- then if (if ((0 >= bc))
460- then true
461- else !(bJ))
462- then true
463- else (0 >= bL)
464- else false)
465- then throw("Art not for sale")
466- else if (if (if (!(bE))
467- then bG
444+ let bJ = q(Y(bx, P))
445+ let bK = o(X(bx, P))
446+ let bc = if (bG)
447+ then (B * 2)
448+ else o(ag(bx, P))
449+ let bb = if (bG)
450+ then toBase58String(i)
451+ else a(ai(bx, P))
452+ let bL = o(V(bx, P))
453+ if (if (if (!(bE))
454+ then !(bG)
455+ else false)
456+ then if (if ((0 >= bc))
457+ then true
458+ else !(bJ))
459+ then true
460+ else (0 >= bL)
461+ else false)
462+ then throw("Art not for sale")
463+ else if (if (if (!(bE))
464+ then bG
465+ else false)
466+ then (0 >= bL)
467+ else false)
468+ then throw("Max issuable not set")
469+ else {
470+ let aP = aF(bx)
471+ if (if (bE)
472+ then (aP != "")
468473 else false)
469- then (0 >= bL)
470- else false)
471- then throw("Max issuable not set")
474+ then throw(aP)
472475 else {
473- let aP = aF(bx)
474- if (if (bE)
475- then (aP != "")
476+ let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
477+ let bM = if (bE)
478+ then bl(bm)
479+ else ba(aR, bb, bc)
480+ let aT = bM._1
481+ let aW = bM._2
482+ let bN = valueOrElse(getString(g, ak(bx)), f)
483+ let bO = valueOrElse(getInteger(g, am(bx)), 0)
484+ let bP = valueOrElse(getString(g, an(bx)), f)
485+ let bQ = valueOrElse(getInteger(g, ao(bx)), 0)
486+ let bR = p(bx)
487+ let bS = if ((bR > height))
488+ then 0
489+ else if ((aW == i))
490+ then r
491+ else s
492+ let bT = fraction(aT, bS, 100)
493+ let bU = if (if (if ((bN != f))
494+ then (bO > 0)
476495 else false)
477- then throw(aP)
496+ then (height > bR)
497+ else false)
498+ then fraction(aT, bO, 10000)
499+ else 0
500+ let bV = if (if (if ((bP != f))
501+ then (bQ > 0)
502+ else false)
503+ then (height > bR)
504+ else false)
505+ then fraction(aT, bQ, 10000)
506+ else 0
507+ let bW = (aT - bT)
508+ if ((bK == bL))
509+ then throw("Art sold out")
478510 else {
479- let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
480- let bM = if (bE)
481- then bl(bm)
482- else ba(aR, bb, bc)
483- let aT = bM._1
484- let aW = bM._2
485- let bN = valueOrElse(getString(g, ak(bx)), f)
486- let bO = valueOrElse(getInteger(g, am(bx)), 0)
487- let bP = valueOrElse(getString(g, an(bx)), f)
488- let bQ = valueOrElse(getInteger(g, ao(bx)), 0)
489- let bR = p(bx)
490- let bS = if ((bR > height))
491- then 0
492- else if ((aW == i))
493- then r
494- else s
495- let bT = fraction(aT, bS, 100)
496- let bU = if (if (if ((bN != f))
497- then (bO > 0)
498- else false)
499- then (height > bR)
500- else false)
501- then fraction(aT, bO, 10000)
502- else 0
503- let bV = if (if (if ((bP != f))
504- then (bQ > 0)
505- else false)
506- then (height > bR)
507- else false)
508- then fraction(aT, bQ, 10000)
509- else 0
510- let bW = (aT - bT)
511- if ((bK == bL))
512- then throw("Art sold out")
513- else {
514- let bX = (bK + 1)
515- let bY = ((((((((((("Creator: " + bx) + ",
511+ let bX = (bK + 1)
512+ let bY = ((((((((((("Creator: " + bx) + ",
516513 ArtID: ") + P) + ",
517514 SignID: ") + D) + ",
518515 Artwork name: ") + bI) + ",
519516 Issue: ") + toString(bX)) + "/") + toString(bL))
520- let bZ = Issue(("SA_" + toString((bH + 1))), bY, 1, 0, false)
521- let ca = calculateAssetId(bZ)
522- let cb = if (if ((bX == bL))
523- then true
524- else !(bJ))
525- then false
526- else true
527- let cc = if (if (if ((N == bx))
528- then (bz != "")
529- else false)
530- then (by != "")
531- else false)
532- then addressFromStringValue(bz)
533- else aR.caller
534- let cd = if (!(isDefined(aW)))
535- then "WAVES"
536- else toBase58String(value(aW))
537- let bn = a((bm + "_OPEN"))
538- let ce = DeleteEntry((bm + "_OPEN"))
539- let cf = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bC)))
540- let cg = ((((((("art_sold_" + toString(bX)) + "_of_") + toString(bL)) + "_") + P) + "_") + bx)
541- let ch = if (!(bE))
542- then ((((((((((N + "_") + toString(bC)) + "_") + bB) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(ca))
543- else ((((((((((toString(cc) + "_") + toString(bC)) + "_") + bB) + "_") + toString(aT)) + "_") + cd) + "_") + toBase58String(ca))
544- let ci = StringEntry(cg, ch)
545- let cj = if ((bU != 0))
546- then [ScriptTransfer(Address(fromBase58String(f)), (bT - bU), aW), ScriptTransfer(Address(fromBase58String(bN)), bU, aW)]
547- else [ScriptTransfer(Address(fromBase58String(f)), bT, aW)]
548- let ck = if ((bV != 0))
549- then [ScriptTransfer(Address(fromBase58String(bP)), bV, aW), ScriptTransfer(Address(fromBase58String(bx)), (bW - bV), aW)]
550- else [ScriptTransfer(Address(fromBase58String(bx)), bW, aW)]
551- let cl = if ((bt > 0))
552- then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
553- else nil
554- let cm = ((([IntegerEntry(X(bx, P), bX), StringEntry(("nft_" + toBase58String(ca)), cg), IntegerEntry("total_nft_issued", (bH + 1)), IntegerEntry(ah(bx, P), 0), BooleanEntry(Y(bx, P), cb), bZ, ScriptTransfer(cc, 1, ca)] ++ cj) ++ ck) ++ cl)
555- if (bE)
556- then [ci, cf, ce] :: cm
557- else ci :: cm
558- }
517+ let bZ = Issue(("SA_" + toString((bH + 1))), bY, 1, 0, false)
518+ let ca = calculateAssetId(bZ)
519+ let cb = if (if ((bX == bL))
520+ then true
521+ else !(bJ))
522+ then false
523+ else true
524+ let cc = if (if (if ((N == bx))
525+ then (bz != "")
526+ else false)
527+ then (by != "")
528+ else false)
529+ then addressFromStringValue(bz)
530+ else aR.caller
531+ let cd = if (!(isDefined(aW)))
532+ then "WAVES"
533+ else toBase58String(value(aW))
534+ let bn = a((bm + "_OPEN"))
535+ let ce = DeleteEntry((bm + "_OPEN"))
536+ let cf = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bC)))
537+ let cg = ((((((("art_sold_" + toString(bX)) + "_of_") + toString(bL)) + "_") + P) + "_") + bx)
538+ let ch = if (!(bE))
539+ then ((((((((((N + "_") + toString(bC)) + "_") + bB) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(ca))
540+ else ((((((((((toString(cc) + "_") + toString(bC)) + "_") + bB) + "_") + toString(aT)) + "_") + cd) + "_") + toBase58String(ca))
541+ let ci = StringEntry(cg, ch)
542+ let cj = if ((bU != 0))
543+ then [ScriptTransfer(Address(fromBase58String(f)), (bT - bU), aW), ScriptTransfer(Address(fromBase58String(bN)), bU, aW)]
544+ else [ScriptTransfer(Address(fromBase58String(f)), bT, aW)]
545+ let ck = if ((bV != 0))
546+ then [ScriptTransfer(Address(fromBase58String(bP)), bV, aW), ScriptTransfer(Address(fromBase58String(bx)), (bW - bV), aW)]
547+ else [ScriptTransfer(Address(fromBase58String(bx)), bW, aW)]
548+ let cl = if ((bt > 0))
549+ then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
550+ else nil
551+ let cm = ((([IntegerEntry(X(bx, P), bX), StringEntry(("nft_" + toBase58String(ca)), cg), IntegerEntry("total_nft_issued", (bH + 1)), IntegerEntry(ah(bx, P), 0), BooleanEntry(Y(bx, P), cb), bZ, ScriptTransfer(cc, 1, ca)] ++ cj) ++ ck) ++ cl)
552+ if (bE)
553+ then [ci, cf, ce] :: cm
554+ else ci :: cm
559555 }
560556 }
561- }
557+ }
562558 }
563559 }
564560 }
565561 }
566562
567563
568564 func cn (co) = {
569565 let G = co
570566 if ($isInstanceOf(G, "String"))
571567 then {
572568 let cp = G
573569 cp
574570 }
575571 else throw("Sponsored Public Key String expected")
576572 }
577573
578574
579575 @Callable(cq)
580576 func setConf (b,cr) = {
581577 let N = toString(cq.caller)
582578 if (containsElement([m, toString(this)], N))
583579 then if (contains(b, "conf_"))
584580 then [StringEntry(b, cr)]
585581 else throw("Entries starting with conf_ only")
586582 else throw("You are not allowed to change this")
587583 }
588584
589585
590586
591587 @Callable(aR)
592588 func addArtwork (F,D,aL,aM,aN,cs,aw,aA,ax,aB,ay,ct,aO,bs) = {
593589 let cu = br(aR, bs)
594590 let P = cu._1
595591 let N = cu._2
596592 let bC = cu._3
597593 let bt = cu._4
598594 if (!(K(F)))
599595 then throw("Hash should be 64 characters maximum")
600596 else {
601597 let cv = aH(ay, aB)
602598 let aJ = cv._1
603599 let aK = cv._2
604600 let cw = aI(N, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
605601 if ((cw != ""))
606602 then throw("Something went wrong!")
607603 else {
608604 let cx = (p((N + "_free_drops")) > 0)
609605 let cy = if (cx)
610606 then $Tuple2(0, D)
611607 else aU(aR)
612608 let aT = cy._1
613609 let aW = cy._2
614610 if (!(isDefined(aT)))
615611 then throw("Something went wrong")
616612 else {
617613 let cz = a(au(F, N))
618614 if ((cz != ""))
619615 then throw("You already added it")
620616 else {
621617 let cA = a(ar(F))
622618 if ((cA != ""))
623619 then throw("Hash already registered")
624620 else {
625621 let cB = C(D, N, F)
626622 if (!(cB))
627623 then throw("Sign Certificate not found for this address.")
628624 else {
629625 let cC = if (cx)
630626 then invoke(h, "useFreeDrop", [N], nil)
631627 else unit
632628 if ((cC == cC))
633629 then {
634630 let cl = if ((bt > 0))
635631 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
636632 else nil
637633 ([StringEntry(ar(F), N), StringEntry(au(F, N), P), IntegerEntry(O(N, P), bC), StringEntry(Q(N, P), aL), StringEntry(R(N, P), aM), StringEntry(S(N, P), aw), StringEntry(U(N, P), ax), StringEntry(T(N, P), aA), StringEntry(Z(N, P), aK), StringEntry(aa(N, P), aJ), StringEntry(ac(N, P), cs), StringEntry(ab(N, P), aN), IntegerEntry(V(N, P), 0), StringEntry(W(N, P), D), IntegerEntry(X(N, P), 0), BooleanEntry(Y(N, P), false), StringEntry(as(N, D), P), StringEntry(ap(N, P), F), StringEntry(ae(N, P), ct), IntegerEntry(af(N, P), aO), ScriptTransfer(Address(fromBase58String(f)), aT, i)] ++ cl)
638634 }
639635 else throw("Strict value is not equal to itself.")
640636 }
641637 }
642638 }
643639 }
644640 }
645641 }
646642 }
647643
648644
649645
650646 @Callable(aR)
651647 func updateArtwork (aq,aL,aM,aN,cs,aw,aA,ax,aB,ay,ct,aO,bs) = if (!(v))
652648 then throw(w)
653649 else {
654650 let cD = br(aR, bs)
655651 let bB = cD._1
656652 let N = cD._2
657653 let bC = cD._3
658654 let bt = cD._4
659655 let cE = aH(ay, aB)
660656 let aJ = cE._1
661657 let aK = cE._2
662658 let cw = aI(N, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
663659 if ((cw != ""))
664660 then throw("Something went wrong!")
665661 else {
666662 let cz = a(Q(N, aq))
667663 if ((cz == ""))
668664 then throw("Entry not found")
669665 else {
670666 let cF = a(aj(N, aq))
671667 if ((cF == "ILLEGAL"))
672668 then throw("Cannot update ILLEGAL artwork")
673669 else if (!(aX(N, aq)))
674670 then {
675671 let cl = if ((bt > 0))
676672 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
677673 else nil
678674 ([StringEntry(Q(N, aq), aL), StringEntry(R(N, aq), aM), StringEntry(S(N, aq), aw), StringEntry(U(N, aq), ax), StringEntry(T(N, aq), aA), StringEntry(aa(N, aq), aJ), StringEntry(Z(N, aq), aK), StringEntry(ab(N, aq), aN), StringEntry(ac(N, aq), cs), StringEntry(ae(N, aq), ct), IntegerEntry(af(N, aq), aO)] ++ cl)
679675 }
680676 else throw("Already minted")
681677 }
682678 }
683679 }
684680
685681
686682
687683 @Callable(aR)
688684 func flagArtwork (P,cG,cF,cH) = {
689685 let cI = bv(aR)
690686 let bB = cI._1
691687 let N = cI._2
692688 if (containsElement([m, toString(this)], N))
693689 then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cF))
694690 then [StringEntry(aj(cG, P), cF), StringEntry(ad(cG, P), cH)]
695691 else throw(("Unknow status " + cF))
696692 else throw("You are not allowed")
697693 }
698694
699695
700696
701697 @Callable(aR)
702698 func deleteArtwork (P,cG) = {
703699 let cJ = bv(aR)
704700 let bB = cJ._1
705701 let N = cJ._2
706702 let aY = if (containsElement([m, toString(this)], N))
707703 then cG
708704 else N
709705 let cz = valueOrErrorMessage(a(Q(aY, P)), "No art matching for this address")
710706 if ((cz == ""))
711707 then throw("No art matching for this address")
712708 else {
713709 let F = a(ap(aY, P))
714710 if ((F == ""))
715711 then throw("No art hash matching for this address")
716712 else {
717713 let D = a(W(aY, P))
718714 if ((D == ""))
719715 then throw("No SIGN ID matching")
720716 else {
721717 let cK = [DeleteEntry(O(aY, P)), DeleteEntry(Q(aY, P)), DeleteEntry(R(aY, P)), DeleteEntry(S(aY, P)), DeleteEntry(U(aY, P)), DeleteEntry(T(aY, P)), DeleteEntry(Z(aY, P)), DeleteEntry(aa(aY, P)), DeleteEntry(ac(aY, P)), DeleteEntry(ab(aY, P)), DeleteEntry(V(aY, P)), DeleteEntry(W(aY, P)), DeleteEntry(X(aY, P)), DeleteEntry(Y(aY, P)), DeleteEntry(aj(aY, P)), DeleteEntry(ag(aY, P)), DeleteEntry(ai(aY, P)), DeleteEntry(ar(F)), DeleteEntry(as(aY, D)), DeleteEntry(au(F, aY)), DeleteEntry(ah(aY, P)), DeleteEntry(ad(aY, P)), DeleteEntry(ae(aY, P)), DeleteEntry(af(aY, P))]
722718 if (!(aX(aY, P)))
723719 then if (!(v))
724720 then throw(w)
725721 else cK
726722 else if (containsElement([m, toString(this)], N))
727723 then cK
728724 else throw("Art already minted, you cannot delete it")
729725 }
730726 }
731727 }
732728 }
733729
734730
735731
736732 @Callable(aR)
737733 func sellArtwork (P,bg,cL,aW,bF,bs) = {
738734 let cM = br(aR, bs)
739735 let bB = cM._1
740736 let N = cM._2
741737 let bC = cM._3
742738 let bt = cM._4
743739 let bI = a(Q(N, P))
744740 if ((bI == ""))
745741 then throw("This art doesn't match your account")
746742 else {
747743 let cF = a(aj(N, P))
748744 if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cF))
749745 then throw("Flagged artwork")
750746 else {
751747 let cN = o(("current_bidamount_" + P))
752748 if ((0 > bF))
753749 then throw("Negative end")
754750 else if (if ((bF > 0))
755751 then if ((cL != 1))
756752 then true
757753 else (bg != 0)
758754 else false)
759755 then throw("Timed offer only allowed for unique edition and offer only")
760756 else {
761757 let cO = if ((bF == 0))
762758 then 0
763759 else height
764760 if (!(be(aW)))
765761 then throw("Something went wrong!")
766762 else if (!(bf(aW, bg)))
767763 then throw("Something went wrong!")
768764 else {
769765 let aP = aF(N)
770766 if ((aP != ""))
771767 then throw(aP)
772768 else {
773769 let bK = o(X(N, P))
774770 let bL = o(V(N, P))
775771 if ((cL > 100))
776772 then throw("100 editions max per artwork")
777773 else if (if ((bK != 0))
778774 then (bK == bL)
779775 else false)
780776 then throw("Max edition reached.")
781777 else if (if ((bK > 0))
782778 then (bL != cL)
783779 else false)
784780 then throw("Cannot change maximum issuable anymore")
785781 else if (if ((cN > 0))
786782 then (bL != cL)
787783 else false)
788784 then throw("Cannot change maximum issuable with active orders")
789785 else {
790786 let cb = if (if ((bg > 0))
791787 then (cL > 0)
792788 else false)
793789 then true
794790 else false
795791 let cl = if ((bt > 0))
796792 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
797793 else nil
798794 ([BooleanEntry(Y(N, P), cb), IntegerEntry(ag(N, P), bg), IntegerEntry(V(N, P), cL), StringEntry(ai(N, P), aW), IntegerEntry(ah(N, P), (cO + bF))] ++ cl)
799795 }
800796 }
801797 }
802798 }
803799 }
804800 }
805801 }
806802
807803
808804
809805 @Callable(aR)
810806 func buyArtwork (P,bx) = bw(aR, P, bx, "", "", "")
811807
812808
813809
814810 @Callable(aR)
815811 func setBid (P,bx) = {
816812 let cP = bv(aR)
817813 let bB = cP._1
818814 let N = cP._2
819815 let bC = cP._3
820816 let cQ = aQ(aR)
821817 let aS = cQ._1
822818 let aT = cQ._2
823819 let aW = if (!(isDefined(aS.assetId)))
824820 then "WAVES"
825821 else toBase58String(value(aS.assetId))
826822 let bF = o(ah(bx, P))
827823 if (if ((bF != 0))
828824 then (height >= bF)
829825 else false)
830826 then throw("Sale ended.")
831827 else {
832828 let cN = o(("current_bidamount_" + P))
833829 if (!(be(aW)))
834830 then throw("asset not accepted")
835831 else if (!(bf(aW, aT)))
836832 then throw("Wrong min sell")
837833 else {
838834 let bK = o(X(bx, P))
839835 let bL = o(V(bx, P))
840836 if ((0 >= bL))
841837 then throw("No max edition set for this artwork")
842838 else if ((bK >= bL))
843839 then throw("Sold out, you cannot bid")
844840 else [StringEntry((((((((("bid_" + P) + "_") + bx) + "_") + N) + "_") + bB) + "_OPEN"), ((((aW + "_") + toString(aT)) + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cN + 1))]
845841 }
846842 }
847843 }
848844
849845
850846
851847 @Callable(aR)
852848 func acceptBid (P,bx,by,bz,bs) = {
853849 let cR = br(aR, bs)
854850 let bB = cR._1
855851 let cS = cR._2
856852 let bC = cR._3
857853 let bt = cR._4
858854 if ((cS != bx))
859855 then throw("You cannot do this action")
860856 else bw(aR, P, bx, by, bz, bs)
861857 }
862858
863859
864860
865861 @Callable(aR)
866862 func cancelBid (P,bx,by,bz) = {
867863 let cT = bv(aR)
868864 let bB = cT._1
869865 let N = cT._2
870866 let bC = cT._3
871867 if (if ((N != bz))
872868 then (N != bx)
873869 else false)
874870 then throw("You cannot do this action")
875871 else {
876872 let cU = if ((N == bx))
877873 then bz
878874 else N
879875 let cN = o(("current_bidamount_" + P))
880876 let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
881877 let bn = a((bm + "_OPEN"))
882878 if ((bn == ""))
883879 then throw("Bid not found")
884880 else {
885881 let bo = split(bn, "_")
886882 let aW = bk(bo[0])
887883 let cV = "CANCELED"
888884 [DeleteEntry((bm + "_OPEN")), StringEntry(((bm + "_") + cV), ((bn + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cN - 1)), ScriptTransfer(Address(fromBase58String(cU)), parseIntValue(bo[1]), aW)]
889885 }
890886 }
891887 }
892888
893889
894890 @Verifier(cW)
895891 func cX () = {
896892 let G = cW
897893 if ($isInstanceOf(G, "InvokeScriptTransaction"))
898894 then {
899895 let cY = G
900896 if (if (if (if ((cY.function == "addArtwork"))
901897 then (cY.dApp == this)
902898 else false)
903899 then (cY.fee == 500000)
904900 else false)
905901 then (cY.feeAssetId == unit)
906902 else false)
907903 then sigVerify(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[13])))
908904 else if (if (if (if ((cY.function == "updateArtwork"))
909905 then (cY.dApp == this)
910906 else false)
911907 then (cY.fee == 500000)
912908 else false)
913909 then (cY.feeAssetId == unit)
914910 else false)
915911 then sigVerify(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[12])))
916912 else if (if (if (if ((cY.function == "sellArtwork"))
917913 then (cY.dApp == this)
918914 else false)
919915 then (cY.fee == 500000)
920916 else false)
921917 then (cY.feeAssetId == unit)
922918 else false)
923919 then sigVerify(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[5])))
924920 else if (if (if (if ((cY.function == "acceptBid"))
925921 then (cY.dApp == this)
926922 else false)
927923 then (cY.fee == 500000)
928924 else false)
929925 then (cY.feeAssetId == unit)
930926 else false)
931927 then sigVerify_128Kb(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[4])))
932928 else sigVerify(cW.bodyBytes, cW.proofs[0], cW.senderPublicKey)
933929 }
934930 else sigVerify(cW.bodyBytes, cW.proofs[0], cW.senderPublicKey)
935931 }
936932

github/deemru/w8io/873ac7e 
101.17 ms