tx · Ank94k8F9yomj7QdKNgDRWtLj6p2FDs46pqu9shqdXAM

3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY:  -0.01900000 Waves

2023.03.24 06:50 [2503569] smart account 3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY > SELF 0.00000000 Waves

{ "type": 13, "id": "Ank94k8F9yomj7QdKNgDRWtLj6p2FDs46pqu9shqdXAM", "fee": 1900000, "feeAssetId": null, "timestamp": 1679629822238, "version": 2, "chainId": 84, "sender": "3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY", "senderPublicKey": "J9DCtJJxJBWZdtDR12BA1U94Q3cZzMi4R6k5hYkAzmzC", "proofs": [ "2YKqYv6sbfLDbNcpH6KDhy2hm3R5XhXWtKBcNdSqQr21ChhumJjNcDBuxv49rnAvgwNk5MDcMsQ9fsqUXp1izqAB" ], "script": "base64:BgKKFQgCEgQKAggIEhAKDggICAgICAgICAgICAEIEg8KDQgICAgICAgICAgIAQgSBgoECAgICBIECgIICBIICgYIAQEIAQgSBAoCCAgSBAoCCAgSBwoFCAgICAgSBgoECAgICCIOZ2V0U3RyaW5nQnlLZXkiA2tleSIIdW5pdFRlc3QiCW9yYWNsZUZlZSIIc2lnbkRhcHAiC2ZlZVJlY2VpdmVyIgh1c2VyRGFwcCINd2hpdGVsaXN0RGFwcCILc2lnbkFzc2V0SWQiC3VzZG5Bc3NldElkIgt1c2R0QXNzZXRJZCIMd2F2ZXNBc3NldElkIgVjaHJpcyIZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZSIPZ2V0SW50ZWdlckJ5S2V5Ig5jaGVja1doaXRlbGlzdCIPZ2V0Qm9vbGVhbkJ5S2V5IgdzaWduQ3V0Igt1c2RuV2F2ZUN1dCIOZGVmYXVsdExpY2VuY2UiEmRlZmF1bHRIYXNoTGljZW5jZSILZGFwcFJ1bm5pbmciDm1haW50ZW5hbmNlTVNHIg11c2VyU3VzcGVuZGVkIgt1c2VyUmVtb3ZlZCIQdXNlclVucmVnaXN0ZXJlZCILdXNlckFsbG93ZWQiGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UiFGNoZWNrU2lnbkNlcnRpZmljYXRlIgZzaWduSUQiBU93bmVyIgpzaGEyNTZIYXNoIgckbWF0Y2gwIgFhIgt2YWxpZGF0ZUNJRCIDY2lkIgx2YWxpZGF0ZUhhc2giBGhhc2giDWtleVVzZXJTdGF0dXMiBmNhbGxlciIHa2V5RGF0ZSIFYXJ0SWQiB2tleU5hbWUiB2tleURlc2MiDWtleURpc3BsYXlDaWQiDWtleUV4cG9ydEhhc2giDGtleUV4cG9ydENpZCIKa2V5TWF4TWludCIJa2V5U2lnbklEIglrZXlJc3N1ZWQiCWtleU9uU2FsZSIOa2V5TGljZW5jZUhhc2giDWtleUxpY2VuY2VDaWQiB2tleVRhZ3MiB2tleVR5cGUiB2tleU5vdGUiCmtleUNyYXdsZXIiDGtleVJveWFsdGllcyIIa2V5UHJpY2UiCmtleUVuZFNhbGUiEmtleUFzc2V0SWRBY2NlcHRlZCIHa2V5RmxhZyISa2V5QXJ0aXN0QWdlbnRBZGRyIgphcnRpc3RBZGRyIhRrZXlQcmltYXJ5U2hhcmVBZ2VudCIYa2V5QXJ0aXN0UHVibGljQWdlbnRBZGRyIhprZXlQcmltYXJ5U2hhcmVQdWJsaWNBZ2VudCIRa2V5SGFzaEJ5VHhpZEFkZHIiBHR4aWQiDmtleU93bmVyQnlIYXNoIg1rZXlpZEJ5U2lnbmlkIgZzaWduSWQiEmtleVR4aWRCeUhhc2hPd25lciIOdmFsaWRhdGVBbGxDSUQiCmNpZERpc3BsYXkiCWNpZEV4cG9ydCIKY2lkTGljZW5jZSIPdmFsaWRhdGVBbGxIYXNoIgxzaGEyNTZFeHBvcnQiDXNoYTI1NkxpY2VuY2UiDnZhbGlkYXRlU3RyaW5nIgNzdHIiA21heCIMdmFsaWRhdGVVc2VyIgp1c2VyU3RhdHVzIgpzZXRMSWNlbmNlIhN2YWxpZGF0ZUFydHdvcmtEYXRhIgpsaWNlbmNlQ0lEIgtsaWNlbmNlSGFzaCIEbmFtZSILZGVzY3JpcHRpb24iBHRhZ3MiCXJveWFsdGllcyIJY2hlY2tVc2VyIglpc1BheW1lbnQiAWkiB3BheW1lbnQiBmFtb3VudCIPdmFsaWRhdGVQYXltZW50IgskdDA5MTgwOTIxNiIHYXNzZXRJZCILaXNBcnRNaW50ZWQiCWFkZHJUb1VzZSIBYiIUdmFsaWRhdGVQcmljZUFzc2V0SWQiDHByaWNlQXNzZXRJZCIMYXJ0d29ya1ByaWNlIgskdDA5ODA0OTg0MCIQYWNjZXB0ZWRBc3NldElkcyIPdmFsaWRhdGVNaW5TZWxsIgVwcmljZSIMbWluU2VsbFdhdmVzIgttaW5TZWxsVXNkbiILbWluU2VsbFNpZ24iDWdldEJpZEFzc2V0SWQiFmdldFByaWNlQXNzZXRJZEZyb21CaWQiCmJpZERhdGFLZXkiB2JpZERhdGEiCmJpZERhdGFBcnIiCWJpZEFtb3VudCIKYmlkQXNzZXRJZCIVaWRDYWxsZXJEYXRlU3BvbnNvcmVkIgZwdWJLZXkiC2lzU3BvbnNvcmVkIhNnZXRfc3BvbnNvcmVkX3dhdmVzIgxpZENhbGxlckRhdGUiB2J1eU1pbnQiBmlzc3VlciIFYmlkSWQiCGJpZE93bmVyIg0kdDAxMzA0MTEzMTExIgJpZCIEZGF0ZSIKbmV3X2NhbGxlciIFaXNCaWQiCGJsb2NrRW5kIg5jYWxsZXJJc0lzc3VlciIIdG90YWxORlQiC2FydHdvcmtOYW1lIghpc09uU2FsZSIKYW1vdW50U29sZCIKbWF4Q2FuU2VsbCINJHQwMTUwNTMxNTI0NSIFYWdlbnQiCmFnZW50U2hhcmUiC3B1YmxpY0FnZW50IhBwdWJsaWNBZ2VudFNoYXJlIg1pc1doaXRlbGlzdGVkIgNjdXQiDWFtb3VudEZvclNpZ24iDmFtb3VudEZvckFnZW50IhRhbW91bnRGb3JQdWJsaWNBZ2VudCIQYW1vdW50Rm9yQ3JlYXRvciINbmV3QW1vdW50U29sZCIJaXNzdWVNZXRhIghpc3N1ZU5GVCIFaWRORlQiCnNlbGxTdGF0dXMiCnJlY2VpdmVORlQiCmFzc2V0SWRCaWQiCWJpZERlbE9sZCIJYmlkVXBkYXRlIgdzb2xkS2V5Iglzb2xkVmFsdWUiCHNvbGREYXRhIhRjb21taXNzaW9uc1dpdGhBZ2VudCIaY29tbWlzc2lvbnNXaXRoUHVibGljQWdlbnQiCnR4VG9DYWxsZXIiBmJ1eVJlcyIIYXNTdHJpbmciAmJ2IgNidjAiBmludm9rZSIDdmFsIgR0eXBlIgdjcmF3bGVyIg0kdDAyMDQyMTIwNDk0Ig0kdDAyMDU5NTIwNjY0Ig92YWxpZGF0ZUFydHdvcmsiEHdoaXRlbGlzdGVkX2Ryb3AiDSR0MDIwOTYzMjEwNDciCmVudHJ5RXhpc3QiCWhhc2hFeGlzdCIPaXNTaWduQ2VydGlmaWVkIhdkZWNyZWFzZV93aGl0ZWxpc3RfZHJvcCINJHQwMjQwODEyNDE1MSINJHQwMjQxNjEyNDIzMCIEZmxhZyIEYWRkciIEbm90ZSINJHQwMjU4NTcyNTg5MSINJHQwMjYzMjcyNjM2MSIMZGF0YVRvRGVsZXRlIgdtYXhNaW50Ig0kdDAyOTE5NzI5MjY3IgZiaWROYnIiCmJhc2VIZWlnaHQiDSR0MDMxNjQ5MzE2ODkiDSR0MDMxNjk0MzE3MzAiDSR0MDMyOTUwMzMwMjEiB2NhbGxlcjEiDSR0MDMzMjU2MzMzMTciDXJldHVybk1vbmV5VG8iCWJpZFN0YXR1cyICdHgiCHZlcmlmaWVyIgNpbnZOAQFhAQFiCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAWICAAABYwcAAWQJAQV2YWx1ZQEJAKYIAQkBAWEBAg9jb25mX29yYWNsZV9mZWUAAWUJAQV2YWx1ZQEJAKYIAQkBAWEBAhFjb25mX3NpZ253ZWJfZGFwcAABZgkBAWEBAhFjb25mX2ZlZV9yZWNlaXZlcgABZwMFAWMJAQV2YWx1ZQEJAKYIAQIjM010NFJHTUV5alNXWUFvY1RQcWQ1NXdkSFFRQjNQVTJVQ20JAQV2YWx1ZQEJAKYIAQkBAWEBAg9jb25mX3VzZXJzX2RhcHAAAWgJAQV2YWx1ZQEJAKYIAQkBAWEBAhNjb25mX3doaXRlbGlzdF9kYXBwAAFpCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9TSUdOAAFqCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9VU0ROAAFrCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9VU0RUAAFsAQAAAW0JAQFhAQIMY29uZl9hZG1pbl8xAQFuAQFiCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUBZAUBYgIfSW50ZWdlciB1bmRlZmluZSBvciAwIGluIG9yYWNsZQEBbwEBYgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFiAAABAXABAWIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUBaAUBYgAAAQFxAQFiCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFAWIHAAFyAAcAAXMACgABdAkBAWEBAhRjb25mX2RlZmF1bHRfbGljZW5jZQABdQkBAWEBAhljb25mX2RlZmF1bHRfbGljZW5jZV9oYXNoAAF2CQELdmFsdWVPckVsc2UCCQCbCAIFAWcCFGNvbmZfZGFwcF9pc19ydW5uaW5nBgABdwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQFnAhRjb25mX21haW50ZW5hbmNlX21zZwIAAAF4AglTVVNQRU5ERUQAAXkCB1JFTU9WRUQAAXoCDFVOUkVHSVNURVJFRAABQQIHQUxMT1dFRAABQgkBAW4BCQCsAgICEmNlcnRpZmljYXRpb25fZmVlXwkA2AQBBQFpAQFDAwFEAUUBRgQBRwkAnQgCBQFlCQCsAgIJAKwCAgkArAICAghkYXRhX2ZjXwUBRAIBXwUBRQMJAAECBQFHAgZTdHJpbmcEAUgFAUcDCQEIY29udGFpbnMCBQFIBQFGBgcHAQFJAQFKAwkBCGNvbnRhaW5zAgUBSgIBLwMDCQBmAgBMCQCxAgEFAUoJAAACCQCxAgEJAJEDAgkAtQkCBQFKAgEvAAAAOwcJAGYCABAJALECAQkAkQMCCQC1CQIFAUoCAS8AAQcHAQFLAQFMCQAAAgkAsQIBBQFMAEABAU0BAU4JAKwCAgIMdXNlcl9zdGF0dXNfBQFOAQFPAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF9kYXRlXwUBUAIBXwUBTgEBUQIBTgFQCQCsAgIJAKwCAgkArAICAglhcnRfbmFtZV8FAVACAV8FAU4BAVICAU4BUAkArAICCQCsAgIJAKwCAgIJYXJ0X2Rlc2NfBQFQAgFfBQFOAQFTAgFOAVAJAKwCAgkArAICCQCsAgICEGFydF9kaXNwbGF5X2NpZF8FAVACAV8FAU4BAVQCAU4BUAkArAICCQCsAgIJAKwCAgIQYXJ0X2V4cG9ydF9oYXNoXwUBUAIBXwUBTgEBVQIBTgFQCQCsAgIJAKwCAgkArAICAg9hcnRfZXhwb3J0X2NpZF8FAVACAV8FAU4BAVYCAU4BUAkArAICCQCsAgIJAKwCAgIMYXJ0X21heG1pbnRfBQFQAgFfBQFOAQFXAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9zaWduaWRfBQFQAgFfBQFOAQFYAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9pc3N1ZWRfBQFQAgFfBQFOAQFZAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9vbnNhbGVfBQFQAgFfBQFOAQFaAgFOAVAJAKwCAgkArAICCQCsAgICEWFydF9saWNlbmNlX2hhc2hfBQFQAgFfBQFOAQJhYQIBTgFQCQCsAgIJAKwCAgkArAICAhBhcnRfbGljZW5jZV9jaWRfBQFQAgFfBQFOAQJhYgIBTgFQCQCsAgIJAKwCAgkArAICAglhcnRfdGFnc18FAVACAV8FAU4BAmFjAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF90eXBlXwUBUAIBXwUBTgECYWQCAU4BUAkArAICCQCsAgIJAKwCAgIJYXJ0X25vdGVfBQFQAgFfBQFOAQJhZQIBTgFQCQCsAgIJAKwCAgkArAICAhBhcnRfY3Jhd2xlcl9jaWRfBQFQAgFfBQFOAQJhZgIBTgFQCQCsAgIJAKwCAgkArAICAg5hcnRfcm95YWx0aWVzXwUBUAIBXwUBTgECYWcCAU4BUAkArAICCQCsAgIJAKwCAgIKYXJ0X3ByaWNlXwUBUAIBXwUBTgECYWgCAU4BUAkArAICCQCsAgIJAKwCAgIMYXJ0X2VuZHNhbGVfBQFQAgFfBQFOAQJhaQIBTgFQCQCsAgIJAKwCAgkArAICAhJhcnRfYXNzZXRBY2NlcHRlZF8FAVACAV8FAU4BAmFqAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF9mbGFnXwUBUAIBXwUBTgECYWsBAmFsCQCsAgICDWFydGlzdF9hZ2VudF8FAmFsAQJhbQECYWwJAKwCAgIVYXJ0aXN0X2FnZW50X3ByaW1hcnlfBQJhbAECYW4BAmFsCQCsAgICFGFydGlzdF9wdWJsaWNfYWdlbnRfBQJhbAECYW8BAmFsCQCsAgICHGFydGlzdF9wdWJsaWNfYWdlbnRfcHJpbWFyeV8FAmFsAQJhcAIBTgJhcQkArAICCQCsAgIJAKwCAgITZ2V0X2hhc2hieXR4aWRhZGRyXwUCYXECAV8FAU4BAmFyAQFGCQCsAgICEmdldF9vd25lcl9ieV9oYXNoXwUBRgECYXMCAU4CYXQJAKwCAgkArAICCQCsAgICEmdldF9hcnRpZGJ5c2lnbmlkXwUCYXQCAV8FAU4BAmF1AgFGAU4JAKwCAgIXZ2V0X3R4aWRfYnlfaGFzaF9vd25lcl8JANgEAQkA1BYBCQCbAwEJAKwCAgUBRgUBTgECYXYDAmF3AmF4AmF5AwkBASEBCQEBSQEFAmF3CQACAQIRV3JvbmcgRGlzcGxheSBDSUQDCQEBIQEJAQFJAQUCYXgJAAIBAhBXcm9uZyBFeHBvcnQgQ0lEAwMJAQIhPQIFAmF5AgAJAQEhAQkBAUkBBQJheQcJAAIBAhFXcm9uZyBMaWNlbmNlIENJRAYBAmF6AgJhQQJhQgMJAQEhAQkBAUsBBQJhQQkAAgECGEV4cG9ydCBIYXNoIDY0IGNoYXIuIG1heAMJAQEhAQkBAUsBBQJhQgkAAgECGUxpY2VuY2UgSGFzaCA2NCBjaGFyLiBtYXgGAQJhQwICYUQCYUUDCQAAAgkAsQIBBQJhRAAACQACAQIYRmllbGQgY2Fubm90IGJlIGlzIGVtcHR5AwkAZgIJALECAQUCYUQFAmFFCQACAQkArAICBQJhRAIMIGlzIHRvbyBsb25nBgECYUYBAU4EAmFHCQELdmFsdWVPckVsc2UCCQCdCAIFAWcJAQFNAQUBTgUBegMDCQAAAgUCYUcFAXoGCQAAAgUCYUcFAUECLlJlZ2lzdGVyIHRoaXMgYWNjb3VudCBmaXJzdCB3aXRoICJBY2NvdW50IiB0YWIDCQAAAgUCYUcFAXgCEUFjY291bnQgc3VzcGVuZGVkAwkAAAIFAmFHBQF5Ag9BY2NvdW50IHJlbW92ZWQCAAECYUgCAmF5AmFCBAFKAwkAAAIJALECAQUCYXkAAAUBdAUCYXkEAUwDCQAAAgkAsQIBBQJhQgAABQF1BQJhQgkAlAoCBQFKBQFMAQJhSQoBTgJhdwJheAJhSgJhQQJhSwJhTAJhTQJhTgJhTwQCYVAJAQJhRgEFAU4DCQECIT0CBQJhUAIACQACAQUCYVADCQAAAgkAsQIBBQJhdwAACQACAQIbRGlzcGxheSBDSUQgY2Fubm90IGJlIGVtcHR5AwkBASEBCQECYXYDBQJhdwUCYXgFAmFKCQACAQIQUHJvYmxlbSB3aXRoIENJRAMJAQEhAQkBAmF6AgUCYUEFAmFLCQACAQITUHJvYmxlbSB3aXRoIEhhc2hlcwMJAQEhAQkBAmFDAgUCYUwAZAkAAgECEjEwMCBDaGFyLiBtYXggbmFtZQMJAQEhAQkBAmFDAgUCYU0A6AcJAAIBAhoxMDAwIENoYXIuIG1heCBkZXNjcmlwdGlvbgMDCQBmAgAABQJhTwYJAGYCBQJhTwDoBwkAAgECM1JveWFsdGllcyBjYW5ub3QgYmUgbGVzcyB0aGFuIDAlIG9yIGhpZ2hlciB0aGFuIDEwJQMJAGYCCQCQAwEJALUJAgUCYU4CASwABQkAAgECCzUgdGFncyBtYXguAgABAmFRAQJhUgMJAAACCQCQAwEIBQJhUghwYXltZW50cwAACQACAQITTm8gcGF5bWVudCBhdHRhY2hlZAQCYVMJAQV2YWx1ZQEJAJEDAggFAmFSCHBheW1lbnRzAAAEAmFUCQEFdmFsdWUBCAUCYVMGYW1vdW50CQCUCgIFAmFTBQJhVAECYVUBAmFSBAJhVgkBAmFRAQUCYVIEAmFTCAUCYVYCXzEEAmFUCAUCYVYCXzIEAmFXAwMJAQlpc0RlZmluZWQBCAUCYVMHYXNzZXRJZAkAAAIIBQJhUwdhc3NldElkBQFpBwgFAmFTB2Fzc2V0SWQJAAIBAitPbmx5IFNJR04gdG9rZW4gYWNjZXB0ZWQgYXMgdHJhbnNhY3Rpb24gZmVlAwkBAiE9AgUCYVQFAUIJAAIBCQCsAgICGVBheW1lbnQgYW1vdW50IHNob3VsZCBiZSAJAKQDAQUBQgkAlAoCBQJhVAUCYVcBAmFYAgJhWQFQBAFHCQCaCAIFBHRoaXMJAQFYAgUCYVkFAVADCQABAgUBRwIDSW50BAJhWgUBRwMJAQIhPQIFAmFaAAAGBwcBAmJhAwJhUgJiYgJiYwQCYmQJAQJhUQEFAmFSBAJhUwgFAmJkAl8xBAJhVAgFAmJkAl8yBAJhVwMJAQEhAQkBCWlzRGVmaW5lZAEIBQJhUwdhc3NldElkBQR1bml0AwMJAGYCCQCxAgEFAmJiAAAJAAACCQDYBAEJAQV2YWx1ZQEIBQJhUwdhc3NldElkBQJiYgcIBQJhUwdhc3NldElkCQACAQIOV3JvbmcgYXNzZXQgaWQDAwkAAAIFAmFXBQR1bml0CQECIT0CBQJiYgIABwkAAgECDldyb25nIGFzc2V0IGlkAwkBAiE9AgUCYmMFAmFUCQACAQITUGF5bWVudCBkb24ndCBtYXRjaAkAlAoCBQJhVAUCYVcBAmJlAQJhVwMDAwMDCQECIT0CBQJhVwkA2AQBBQFpCQECIT0CBQJhVwkA2AQBBQFsBwkBAiE9AgUCYVcCBVdBVkVTBwkBAiE9AgUCYVcJANgEAQUBagcJAQIhPQIFAmFXCQDYBAEFAWsHCQACAQImT25seSBTSUdOLCBVU0ROLFVTRFQgb3IgV0FWRVMgYWNjZXB0ZWQGAQJiZgICYVcCYmcEAmJoAwUBYwAKCQEBbgECDndhdmVzX21pbl9zZWxsBAJiaQDAhD0EAmJqAwUBYwABCQBoAgUBQgACAwMDAwMDCQAAAgUCYVcJANgEAQUBagkAZgIFAmJpBQJiZwcJAQIhPQIFAmJnAAAHBgMDCQAAAgUCYVcJANgEAQUBawkAZgIFAmJpBQJiZwcJAQIhPQIFAmJnAAAHBgMDCQAAAgUCYVcJANgEAQUBaQkAZgIFAmJqBQJiZwcJAQIhPQIFAmJnAAAHBgMDAwkAAAIFAmFXCQDYBAEFAWwGCQAAAgUCYVcCBVdBVkVTCQBmAgUCYmgFAmJnBwkBAiE9AgUCYmcAAAcJAAIBAhhXcm9uZyBtaW5pbXVtIHNlbGwgcHJpY2UGAQJiawECYVcDCQAAAgUCYVcCBVdBVkVTBQR1bml0CQDZBAEFAmFXAQJibAECYm0EAmJuCQEBYQEJAKwCAgUCYm0CBV9PUEVOAwkAAAIFAmJuAgAJAAIBAg1CaWQgbm90IGZvdW5kBAJibwkAtQkCBQJibgIBXwQCYnAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJibwABBAJicQkBAmJrAQkAkQMCBQJibwAAAwkAZwIAAAUCYnAJAAIBAgxXcm9uZyBhbW91bnQJAJQKAgUCYnAFAmJxAQJicgICYVICYnMDCQEBIQEFAXYJAAIBBQF3BAJidAMJAQIhPQIFAmJzAgAJAQt2YWx1ZU9yRWxzZQIJAQFwAQkArAICCQClCAEJAKcIAQkA2QQBBQJicwIJX2ZyZWVfdHhzAAAAAAQBTgMDCQAAAgkA2AQBCAgFAmFSBmNhbGxlcgVieXRlcwkApQgBBQR0aGlzCQBmAgUCYnQAAAcJAKUIAQkApwgBCQDZBAEFAmJzCQDYBAEICAUCYVIGY2FsbGVyBWJ5dGVzBAJidQMDCQECIT0CBQJicwIACQBmAgUCYnQAAAcJAPwHBAUBaAIJdXNlRnJlZVR4CQDMCAIJAKUIAQkApwgBCQDZBAEFAmJzBQNuaWwFA25pbAUEdW5pdAMJAAACBQJidQUCYnUJAJYKBAkA2AQBCAUCYVINdHJhbnNhY3Rpb25JZAUBTggFCWxhc3RCbG9jawl0aW1lc3RhbXAJAGYCBQJidAAACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJidgECYVIDCQEBIQEFAXYJAAIBBQF3CQCVCgMJANgEAQgFAmFSDXRyYW5zYWN0aW9uSWQJANgEAQgIBQJhUgZjYWxsZXIFYnl0ZXMIBQlsYXN0QmxvY2sJdGltZXN0YW1wAQJidwYCYVIBUAJieAJieQJiegJicwQCYkEJAQJicgIFAmFSBQJicwQCYkIIBQJiQQJfMQQBTggFAmJBAl8yBAJiQwgFAmJBAl8zBAJidAgFAmJBAl80AwYJAAIBCQCsAgIJAKwCAgkApQMBCQAAAgkA2AQBCAgFAmFSBmNhbGxlcgVieXRlcwkApQgBBQR0aGlzAgMgLyAJAKUDAQUCYnQEAmJEAwMJAAACCQDYBAEICAUCYVIGY2FsbGVyBWJ5dGVzCQClCAEFBHRoaXMFAmJ0BwkApQgBCQCnCAEJANkEAQUCYnMJANgEAQgIBQJhUgZjYWxsZXIFYnl0ZXMDBgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFAmJEAgMgLyAFAmJ4AgMgLyAFAmJ6AgMgLyAFAmJzBAJiRQMDAwkAAAIFAU4FAmJ4CQECIT0CBQJiegIABwkBAiE9AgUCYnkCAAcGBwQCYkYJAQFvAQkBAmFoAgUBTgUBUAMDAwkBAiE9AgUCYkYAAAkAZwIFBmhlaWdodAUCYkYHCQEBIQEFAmJFBwkAAgECC1NhbGUgZW5kZWQuBAJiRwkAAAIFAU4FAmJ4BAJiSAkBAW8BAhB0b3RhbF9uZnRfaXNzdWVkBAFECQEBYQEJAQFXAgUCYngFAVAEAmJJCQEBYQEJAQFRAgUCYngFAVADCQAAAgUCYkkCAAkAAgECEUFydCBkb2Vzbid0IGV4aXN0BAJiSgkBAXEBCQEBWQIFAmJ4BQFQBAJiSwkBAW8BCQEBWAIFAmJ4BQFQBAJiYwMFAmJHCQBoAgUBQgACCQEBbwEJAQJhZwIFAmJ4BQFQBAJiYgMFAmJHCQDYBAEFAWkJAQFhAQkBAmFpAgUCYngFAVAEAmJMCQEBbwEJAQFWAgUCYngFAVADAwMJAQEhAQUCYkUJAQEhAQUCYkcHAwMJAGcCAAAFAmJjBgkBASEBBQJiSgYJAGcCAAAFAmJMBwkAAgECEEFydCBub3QgZm9yIHNhbGUDAwMJAQEhAQUCYkUFAmJHBwkAZwIAAAUCYkwHCQACAQIUTWF4IGlzc3VhYmxlIG5vdCBzZXQEAmFQCQECYUYBBQJieAMDBQJiRQkBAiE9AgUCYVACAAcJAAIBBQJhUAQCYm0JAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIEYmlkXwUBUAIBXwUCYngCAV8FAmJ6AgFfBQJieQQCYk0DBQJiRQkBAmJsAQUCYm0JAQJiYQMFAmFSBQJiYgUCYmMEAmFUCAUCYk0CXzEEAmFXCAUCYk0CXzIEAmJOCQELdmFsdWVPckVsc2UCCQCdCAIFAWcJAQJhawEFAmJ4BQFmBAJiTwkBC3ZhbHVlT3JFbHNlAgkAmggCBQFnCQECYW0BBQJieAAABAJiUAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQFnCQECYW4BBQJieAUBZgQCYlEJAQt2YWx1ZU9yRWxzZQIJAJoIAgUBZwkBAmFvAQUCYngAAAQCYlIJAQFwAQUCYngEAmJTAwkAZgIFAmJSBQZoZWlnaHQAAAMJAAACBQJhVwUBaQUBcgUBcwQCYlQJAGsDBQJhVAUCYlMAZAQCYlUDAwMJAQIhPQIFAmJOBQFmCQBmAgUCYk8AAAcJAGYCBQZoZWlnaHQFAmJSBwkAawMFAmFUBQJiTwCQTgAABAJiVgMDAwkBAiE9AgUCYlAFAWYJAGYCBQJiUQAABwkAZgIFBmhlaWdodAUCYlIHCQBrAwUCYVQFAmJRAJBOAAAEAmJXCQBlAgUCYVQFAmJUAwkAAAIFAmJLBQJiTAkAAgECDEFydCBzb2xkIG91dAQCYlgJAGQCBQJiSwABBAJiWQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCUNyZWF0b3I6IAUCYngCCiwKIEFydElEOiAFAVACCywKIFNpZ25JRDogBQFEAhEsCiBBcnR3b3JrIG5hbWU6IAUCYkkCCiwKIElzc3VlOiAJAKQDAQUCYlgCAS8JAKQDAQUCYkwEAmJaCQDCCAUJAKwCAgIDU0FfCQCkAwEJAGQCBQJiSAABBQJiWQABAAAHBAJjYQkAuAgBBQJiWgQCY2IDAwkAAAIFAmJYBQJiTAYJAQEhAQUCYkoHBgQCY2MDAwMJAAACBQFOBQJieAkBAiE9AgUCYnoCAAcJAQIhPQIFAmJ5AgAHCQERQGV4dHJOYXRpdmUoMTA2MikBBQJieggFAmFSBmNhbGxlcgQCY2QDCQEBIQEJAQlpc0RlZmluZWQBBQJhVwIFV0FWRVMJANgEAQkBBXZhbHVlAQUCYVcEAmJuCQEBYQEJAKwCAgUCYm0CBV9PUEVOBAJjZQkBC0RlbGV0ZUVudHJ5AQkArAICBQJibQIFX09QRU4EAmNmCQELU3RyaW5nRW50cnkCCQCsAgIFAmJtAgdfQ0xPU0VECQCsAgIJAKwCAgUCYm4CAV8JAKQDAQUCYkMEAmNnCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCWFydF9zb2xkXwkApAMBBQJiWAIEX29mXwkApAMBBQJiTAIBXwUBUAIBXwUCYngEAmNoAwkBASEBBQJiRQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQFOAgFfCQCkAwEFAmJDAgFfBQJiQgIBXwkApAMBBQJiYwIBXwUCYmICAV8JANgEAQUCY2EJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApQgBBQJjYwIBXwkApAMBBQJiQwIBXwUCYkICAV8JAKQDAQUCYVQCAV8FAmNkAgFfCQDYBAEFAmNhBAJjaQkBC1N0cmluZ0VudHJ5AgUCY2cFAmNoBAJjagMJAQIhPQIFAmJVAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAWYJAGUCBQJiVAUCYlUFAmFXCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQJiTgUCYlUFAmFXBQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAWYFAmJUBQJhVwUDbmlsBAJjawMJAQIhPQIFAmJWAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAmJQBQJiVgUCYVcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAmJ4CQBlAgUCYlcFAmJWBQJhVwUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQJieAUCYlcFAmFXBQNuaWwEAmNsAwUCYnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAU4AAAUEdW5pdAUDbmlsBQNuaWwEAmNtCQDOCAIJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFAmJ4BQFQBQJiWAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgICBG5mdF8JANgEAQUCY2EFAmNnCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhB0b3RhbF9uZnRfaXNzdWVkCQBkAgUCYkgAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFoAgUCYngFAVAAAAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBAVkCBQJieAUBUAUCY2IJAMwIAgUCYloJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY2MAAQUCY2EFA25pbAUCY2oFAmNrBQJjbAMFAmJFCQDMCAIFAmNpCQDMCAIFAmNmCQDMCAIFAmNlBQJjbQkAzAgCBQJjaQUCY20BAmNuAQJjbwQBRwUCY28DCQABAgUBRwIGU3RyaW5nBAJjcAUBRwUCY3AJAAIBAiRTcG9uc29yZWQgUHVibGljIEtleSBTdHJpbmcgZXhwZWN0ZWQKAmNxAQdzZXRDb25mAgFiAmNyBAFOCQClCAEIBQJjcQZjYWxsZXIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQFtCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQFOAwkBCGNvbnRhaW5zAgUBYgIFY29uZl8JAMwIAgkBC1N0cmluZ0VudHJ5AgUBYgUCY3IFA25pbAkAAgECIEVudHJpZXMgc3RhcnRpbmcgd2l0aCBjb25mXyBvbmx5CQACAQIiWW91IGFyZSBub3QgYWxsb3dlZCB0byBjaGFuZ2UgdGhpcwJhUgEKYWRkQXJ0d29yaw4BRgFEAmFMAmFNAmFOAmNzAmF3AmFBAmF4AmFCAmF5AmN0AmFPAmJzBAJjdQkBAmJyAgUCYVIFAmJzBAFQCAUCY3UCXzEEAU4IBQJjdQJfMgQCYkMIBQJjdQJfMwQCYnQIBQJjdQJfNAMJAQEhAQkBAUsBBQFGCQACAQIkSGFzaCBzaG91bGQgYmUgNjQgY2hhcmFjdGVycyBtYXhpbXVtBAJjdgkBAmFIAgUCYXkFAmFCBAJhSggFAmN2Al8xBAJhSwgFAmN2Al8yBAJjdwkBAmFJCgUBTgUCYXcFAmF4BQJhSgUCYUEFAmFLBQJhTAUCYU0FAmFOBQJhTwMJAQIhPQIFAmN3AgAJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEEAmN4CQBmAgkBAXABCQCsAgIFAU4CC19mcmVlX2Ryb3BzAAAEAmN5AwUCY3gJAJQKAgAABQFECQECYVUBBQJhUgQCYVQIBQJjeQJfMQQCYVcIBQJjeQJfMgMJAQEhAQkBCWlzRGVmaW5lZAEFAmFUCQACAQIUU29tZXRoaW5nIHdlbnQgd3JvbmcEAmN6CQEBYQEJAQJhdQIFAUYFAU4DCQECIT0CBQJjegIACQACAQIUWW91IGFscmVhZHkgYWRkZWQgaXQEAmNBCQEBYQEJAQJhcgEFAUYDCQECIT0CBQJjQQIACQACAQIXSGFzaCBhbHJlYWR5IHJlZ2lzdGVyZWQEAmNCCQEBQwMFAUQFAU4FAUYDCQEBIQEFAmNCCQACAQIsU2lnbiBDZXJ0aWZpY2F0ZSBub3QgZm91bmQgZm9yIHRoaXMgYWRkcmVzcy4EAmNDAwUCY3gJAPwHBAUBaAILdXNlRnJlZURyb3AJAMwIAgUBTgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCY0MFAmNDBAJjbAMFAmJ0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQFOAAAFBHVuaXQFA25pbAUDbmlsCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFyAQUBRgUBTgkAzAgCCQELU3RyaW5nRW50cnkCCQECYXUCBQFGBQFOBQFQCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBTwIFAU4FAVAFAmJDCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFRAgUBTgUBUAUCYUwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVICBQFOBQFQBQJhTQkAzAgCCQELU3RyaW5nRW50cnkCCQEBUwIFAU4FAVAFAmF3CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFVAgUBTgUBUAUCYXgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVQCBQFOBQFQBQJhQQkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgIFAU4FAVAFAmFLCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQIFAU4FAVAFAmFKCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYwIFAU4FAVAFAmNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgIFAU4FAVAFAmFOCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFAU4FAVAAAAkAzAgCCQELU3RyaW5nRW50cnkCCQEBVwIFAU4FAVAFAUQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUBTgUBUAAACQDMCAIJAQxCb29sZWFuRW50cnkCCQEBWQIFAU4FAVAHCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhcwIFAU4FAUQFAVAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFwAgUBTgUBUAUBRgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWUCBQFOBQFQBQJjdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFmAgUBTgUBUAUCYU8JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAWYFAmFUBQFpBQNuaWwFAmNsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFSAQ11cGRhdGVBcnR3b3JrDQJhcQJhTAJhTQJhTgJjcwJhdwJhQQJheAJhQgJheQJjdAJhTwJicwMJAQEhAQUBdgkAAgEFAXcEAmNECQECYnICBQJhUgUCYnMEAmJCCAUCY0QCXzEEAU4IBQJjRAJfMgQCYkMIBQJjRAJfMwQCYnQIBQJjRAJfNAQCY0UJAQJhSAIFAmF5BQJhQgQCYUoIBQJjRQJfMQQCYUsIBQJjRQJfMgQCY3cJAQJhSQoFAU4FAmF3BQJheAUCYUoFAmFBBQJhSwUCYUwFAmFNBQJhTgUCYU8DCQECIT0CBQJjdwIACQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchBAJjegkBAWEBCQEBUQIFAU4FAmFxAwkAAAIFAmN6AgAJAAIBAg9FbnRyeSBub3QgZm91bmQEAmNGCQEBYQEJAQJhagIFAU4FAmFxAwkAAAIFAmNGAgdJTExFR0FMCQACAQIdQ2Fubm90IHVwZGF0ZSBJTExFR0FMIGFydHdvcmsDCQEBIQEJAQJhWAIFAU4FAmFxBAJjbAMFAmJ0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQFOAAAFBHVuaXQFA25pbAUDbmlsCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVECBQFOBQJhcQUCYUwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVICBQFOBQJhcQUCYU0JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVMCBQFOBQJhcQUCYXcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVUCBQFOBQJhcQUCYXgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVQCBQFOBQJhcQUCYUEJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAgUBTgUCYXEFAmFKCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFaAgUBTgUCYXEFAmFLCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgIFAU4FAmFxBQJhTgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWMCBQFOBQJhcQUCY3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFlAgUBTgUCYXEFAmN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWYCBQFOBQJhcQUCYU8FA25pbAUCY2wJAAIBAg5BbHJlYWR5IG1pbnRlZAJhUgELZmxhZ0FydHdvcmsEAVACY0cCY0YCY0gEAmNJCQECYnYBBQJhUgQCYkIIBQJjSQJfMQQBTggFAmNJAl8yAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUBbQkAzAgCCQClCAEFBHRoaXMFA25pbAUBTgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAICB0NPTlNFTlQJAMwIAgIACQDMCAICD0NIQU5HRV9SRVFVSVJFRAkAzAgCAgdGTEFHR0VECQDMCAICB0lMTEVHQUwFA25pbAUCY0YJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFqAgUCY0cFAVAFAmNGCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZAIFAmNHBQFQBQJjSAUDbmlsCQACAQkArAICAg5Vbmtub3cgc3RhdHVzIAUCY0YJAAIBAhNZb3UgYXJlIG5vdCBhbGxvd2VkAmFSAQ1kZWxldGVBcnR3b3JrAgFQAmNHBAJjSgkBAmJ2AQUCYVIEAmJCCAUCY0oCXzEEAU4IBQJjSgJfMgQCYVkDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQFtCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQFOBQJjRwUBTgQCY3oJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkBAWEBCQEBUQIFAmFZBQFQAiBObyBhcnQgbWF0Y2hpbmcgZm9yIHRoaXMgYWRkcmVzcwMJAAACBQJjegIACQACAQIgTm8gYXJ0IG1hdGNoaW5nIGZvciB0aGlzIGFkZHJlc3MEAUYJAQFhAQkBAmFwAgUCYVkFAVADCQAAAgUBRgIACQACAQIlTm8gYXJ0IGhhc2ggbWF0Y2hpbmcgZm9yIHRoaXMgYWRkcmVzcwQBRAkBAWEBCQEBVwIFAmFZBQFQAwkAAAIFAUQCAAkAAgECE05vIFNJR04gSUQgbWF0Y2hpbmcEAmNLCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFPAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVECBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBUgIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFTAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVUCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBVAIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFaAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFhAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFjAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFiAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVYCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBVwIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFYAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVkCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWoCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWcCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWkCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYXIBBQFGCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhcwIFAmFZBQFECQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhdQIFAUYFAmFZCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhaAIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhZAIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhZQIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhZgIFAmFZBQFQBQNuaWwDCQEBIQEJAQJhWAIFAmFZBQFQAwkBASEBBQF2CQACAQUBdwUCY0sDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQFtCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQFOBQJjSwkAAgECKEFydCBhbHJlYWR5IG1pbnRlZCwgeW91IGNhbm5vdCBkZWxldGUgaXQCYVIBC3NlbGxBcnR3b3JrBgFQAmJnAmNMAmFXAmJGAmJzBAJjTQkBAmJyAgUCYVIFAmJzBAJiQggFAmNNAl8xBAFOCAUCY00CXzIEAmJDCAUCY00CXzMEAmJ0CAUCY00CXzQEAmJJCQEBYQEJAQFRAgUBTgUBUAMJAAACBQJiSQIACQACAQIjVGhpcyBhcnQgZG9lc24ndCBtYXRjaCB5b3VyIGFjY291bnQEAmNGCQEBYQEJAQJhagIFAU4FAVADCQEPY29udGFpbnNFbGVtZW50AgkAzAgCAg9DSEFOR0VfUkVRVUlSRUQJAMwIAgIHRkxBR0dFRAkAzAgCAgdJTExFR0FMBQNuaWwFAmNGCQACAQIPRmxhZ2dlZCBhcnR3b3JrBAJjTgkBAW8BCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUBUAMJAGYCAAAFAmJGCQACAQIMTmVnYXRpdmUgZW5kAwMJAGYCBQJiRgAAAwkBAiE9AgUCY0wAAQYJAQIhPQIFAmJnAAAHCQACAQI6VGltZWQgb2ZmZXIgb25seSBhbGxvd2VkIGZvciB1bmlxdWUgZWRpdGlvbiBhbmQgb2ZmZXIgb25seQQCY08DCQAAAgUCYkYAAAAABQZoZWlnaHQDCQEBIQEJAQJiZQEFAmFXCQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchAwkBASEBCQECYmYCBQJhVwUCYmcJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEEAmFQCQECYUYBBQFOAwkBAiE9AgUCYVACAAkAAgEFAmFQBAJiSwkBAW8BCQEBWAIFAU4FAVAEAmJMCQEBbwEJAQFWAgUBTgUBUAMJAGYCBQJjTABkCQACAQIcMTAwIGVkaXRpb25zIG1heCBwZXIgYXJ0d29yawMDCQECIT0CBQJiSwAACQAAAgUCYksFAmJMBwkAAgECFE1heCBlZGl0aW9uIHJlYWNoZWQuAwMJAGYCBQJiSwAACQECIT0CBQJiTAUCY0wHCQACAQImQ2Fubm90IGNoYW5nZSBtYXhpbXVtIGlzc3VhYmxlIGFueW1vcmUDAwkAZgIFAmNOAAAJAQIhPQIFAmJMBQJjTAcJAAIBAjFDYW5ub3QgY2hhbmdlIG1heGltdW0gaXNzdWFibGUgd2l0aCBhY3RpdmUgb3JkZXJzBAJjYgMDCQBmAgUCYmcAAAkAZgIFAmNMAAAHBgcEAmNsAwUCYnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAU4AAAUEdW5pdAUDbmlsBQNuaWwJAM4IAgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBAVkCBQFOBQFQBQJjYgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFnAgUBTgUBUAUCYmcJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUBTgUBUAUCY0wJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFpAgUBTgUBUAUCYVcJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhaAIFAU4FAVAJAGQCBQJjTwUCYkYFA25pbAUCY2wCYVIBCmJ1eUFydHdvcmsCAVACYngJAQJidwYFAmFSBQFQBQJieAIAAgACAAJhUgEGc2V0QmlkAgFQAmJ4BAJjUAkBAmJ2AQUCYVIEAmJCCAUCY1ACXzEEAU4IBQJjUAJfMgQCYkMIBQJjUAJfMwQCY1EJAQJhUQEFAmFSBAJhUwgFAmNRAl8xBAJhVAgFAmNRAl8yBAJhVwMJAQEhAQkBCWlzRGVmaW5lZAEIBQJhUwdhc3NldElkAgVXQVZFUwkA2AQBCQEFdmFsdWUBCAUCYVMHYXNzZXRJZAQCYkYJAQFvAQkBAmFoAgUCYngFAVADAwkBAiE9AgUCYkYAAAkAZwIFBmhlaWdodAUCYkYHCQACAQILU2FsZSBlbmRlZC4EAmNOCQEBbwEJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQFQAwkBASEBCQECYmUBBQJhVwkAAgECEmFzc2V0IG5vdCBhY2NlcHRlZAMJAQEhAQkBAmJmAgUCYVcFAmFUCQACAQIOV3JvbmcgbWluIHNlbGwEAmJLCQEBbwEJAQFYAgUCYngFAVAEAmJMCQEBbwEJAQFWAgUCYngFAVADCQBnAgAABQJiTAkAAgECI05vIG1heCBlZGl0aW9uIHNldCBmb3IgdGhpcyBhcnR3b3JrAwkAZwIFAmJLBQJiTAkAAgECGFNvbGQgb3V0LCB5b3UgY2Fubm90IGJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIEYmlkXwUBUAIBXwUCYngCAV8FAU4CAV8FAmJCAgVfT1BFTgkArAICCQCsAgIJAKwCAgkArAICBQJhVwIBXwkApAMBBQJhVAIBXwkApAMBBQJiQwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhJjdXJyZW50X2JpZGFtb3VudF8FAVAJAGQCBQJjTgABBQNuaWwCYVIBCWFjY2VwdEJpZAUBUAJieAJieQJiegJicwQCY1IJAQJicgIFAmFSBQJicwQCYkIIBQJjUgJfMQQCY1MIBQJjUgJfMgQCYkMIBQJjUgJfMwQCYnQIBQJjUgJfNAMJAQIhPQIFAmNTBQJieAkAAgECGVlvdSBjYW5ub3QgZG8gdGhpcyBhY3Rpb24JAQJidwYFAmFSBQFQBQJieAUCYnkFAmJ6BQJicwJhUgEJY2FuY2VsQmlkBAFQAmJ4AmJ5AmJ6BAJjVAkBAmJ2AQUCYVIEAmJCCAUCY1QCXzEEAU4IBQJjVAJfMgQCYkMIBQJjVAJfMwMDCQECIT0CBQFOBQJiegkBAiE9AgUBTgUCYngHCQACAQIZWW91IGNhbm5vdCBkbyB0aGlzIGFjdGlvbgQCY1UDCQAAAgUBTgUCYngFAmJ6BQFOBAJjTgkBAW8BCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUBUAQCYm0JAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIEYmlkXwUBUAIBXwUCYngCAV8FAmJ6AgFfBQJieQQCYm4JAQFhAQkArAICBQJibQIFX09QRU4DCQAAAgUCYm4CAAkAAgECDUJpZCBub3QgZm91bmQEAmJvCQC1CQIFAmJuAgFfBAJhVwkBAmJrAQkAkQMCBQJibwAABAJjVgIIQ0FOQ0VMRUQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICBQJibQIFX09QRU4JAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIFAmJtAgFfBQJjVgkArAICCQCsAgIFAmJuAgFfCQCkAwEFAmJDCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUBUAkAZQIFAmNOAAEJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAmNVCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYm8AAQUCYVcFA25pbAECY1cBAmNYAAQBRwUCY1cDCQABAgUBRwIXSW52b2tlU2NyaXB0VHJhbnNhY3Rpb24EAmNZBQFHAwMDAwkAAAIIBQJjWQhmdW5jdGlvbgIKYWRkQXJ0d29yawkAAAIIBQJjWQRkQXBwBQR0aGlzBwkAAAIIBQJjWQNmZWUAoMIeBwkAAAIIBQJjWQpmZWVBc3NldElkBQR1bml0BwkA9AMDCAUCY1cJYm9keUJ5dGVzCQCRAwIIBQJjVwZwcm9vZnMAAAkA2QQBCQECY24BCQCRAwIIBQJjWQRhcmdzAA0DAwMDCQAAAggFAmNZCGZ1bmN0aW9uAg11cGRhdGVBcnR3b3JrCQAAAggFAmNZBGRBcHAFBHRoaXMHCQAAAggFAmNZA2ZlZQCgwh4HCQAAAggFAmNZCmZlZUFzc2V0SWQFBHVuaXQHCQD0AwMIBQJjVwlib2R5Qnl0ZXMJAJEDAggFAmNXBnByb29mcwAACQDZBAEJAQJjbgEJAJEDAggFAmNZBGFyZ3MADAMDAwMJAAACCAUCY1kIZnVuY3Rpb24CC3NlbGxBcnR3b3JrCQAAAggFAmNZBGRBcHAFBHRoaXMHCQAAAggFAmNZA2ZlZQCgwh4HCQAAAggFAmNZCmZlZUFzc2V0SWQFBHVuaXQHCQD0AwMIBQJjVwlib2R5Qnl0ZXMJAJEDAggFAmNXBnByb29mcwAACQDZBAEJAQJjbgEJAJEDAggFAmNZBGFyZ3MABQMDAwMJAAACCAUCY1kIZnVuY3Rpb24CCWFjY2VwdEJpZAkAAAIIBQJjWQRkQXBwBQR0aGlzBwkAAAIIBQJjWQNmZWUAoMIeBwkAAAIIBQJjWQpmZWVBc3NldElkBQR1bml0BwkAyBMDCAUCY1cJYm9keUJ5dGVzCQCRAwIIBQJjVwZwcm9vZnMAAAkA2QQBCQECY24BCQCRAwIIBQJjWQRhcmdzAAQJAPQDAwgFAmNXCWJvZHlCeXRlcwkAkQMCCAUCY1cGcHJvb2ZzAAAIBQJjVw9zZW5kZXJQdWJsaWNLZXkJAPQDAwgFAmNXCWJvZHlCeXRlcwkAkQMCCAUCY1cGcHJvb2ZzAAAIBQJjVw9zZW5kZXJQdWJsaWNLZXnFEWix", "height": 2503569, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3qtYgVsvc6JbPpH9M9FsMxtV5FseDRTt2daKEoL8zBit Next: BeN4gT1npeBM3i898fZg8kpWPpspepGpw6V3JvuaZJFi Diff:
OldNewDifferences
413413 let N = bA._2
414414 let bC = bA._3
415415 let bt = bA._4
416- let bD = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
417- then bt
418- else false)
419- then toString(addressFromPublicKey(fromBase58String(bs)))
420- else toBase58String(aR.caller.bytes)
421416 if (true)
422- then throw(((((((bD + " / ") + bx) + " / ") + bz) + " / ") + bs))
417+ then throw(((toString((toBase58String(aR.caller.bytes) == toString(this))) + " / ") + toString(bt)))
423418 else {
424- let bE = if (if (if ((N == bx))
425- then (bz != "")
419+ let bD = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
420+ then bt
426421 else false)
427- then (by != "")
428- else false)
429- then true
430- else false
431- let bF = o(ah(N, P))
432- if (if (if ((bF != 0))
433- then (height >= bF)
434- else false)
435- then !(bE)
436- else false)
437- then throw("Sale ended.")
422+ then toString(addressFromPublicKey(fromBase58String(bs)))
423+ else toBase58String(aR.caller.bytes)
424+ if (true)
425+ then throw(((((((bD + " / ") + bx) + " / ") + bz) + " / ") + bs))
438426 else {
439- let bG = (N == bx)
440- let bH = o("total_nft_issued")
441- let D = a(W(bx, P))
442- let bI = a(Q(bx, P))
443- if ((bI == ""))
444- then throw("Art doesn't exist")
427+ let bE = if (if (if ((N == bx))
428+ then (bz != "")
429+ else false)
430+ then (by != "")
431+ else false)
432+ then true
433+ else false
434+ let bF = o(ah(N, P))
435+ if (if (if ((bF != 0))
436+ then (height >= bF)
437+ else false)
438+ then !(bE)
439+ else false)
440+ then throw("Sale ended.")
445441 else {
446- let bJ = q(Y(bx, P))
447- let bK = o(X(bx, P))
448- let bc = if (bG)
449- then (B * 2)
450- else o(ag(bx, P))
451- let bb = if (bG)
452- then toBase58String(i)
453- else a(ai(bx, P))
454- let bL = o(V(bx, P))
455- if (if (if (!(bE))
456- then !(bG)
457- else false)
458- then if (if ((0 >= bc))
459- then true
460- else !(bJ))
461- then true
462- else (0 >= bL)
463- else false)
464- then throw("Art not for sale")
465- else if (if (if (!(bE))
466- then bG
467- else false)
468- then (0 >= bL)
469- else false)
470- then throw("Max issuable not set")
471- else {
472- let aP = aF(bx)
473- if (if (bE)
474- then (aP != "")
442+ let bG = (N == bx)
443+ let bH = o("total_nft_issued")
444+ let D = a(W(bx, P))
445+ let bI = a(Q(bx, P))
446+ if ((bI == ""))
447+ then throw("Art doesn't exist")
448+ else {
449+ let bJ = q(Y(bx, P))
450+ let bK = o(X(bx, P))
451+ let bc = if (bG)
452+ then (B * 2)
453+ else o(ag(bx, P))
454+ let bb = if (bG)
455+ then toBase58String(i)
456+ else a(ai(bx, P))
457+ let bL = o(V(bx, P))
458+ if (if (if (!(bE))
459+ then !(bG)
460+ else false)
461+ then if (if ((0 >= bc))
462+ then true
463+ else !(bJ))
464+ then true
465+ else (0 >= bL)
466+ else false)
467+ then throw("Art not for sale")
468+ else if (if (if (!(bE))
469+ then bG
475470 else false)
476- then throw(aP)
471+ then (0 >= bL)
472+ else false)
473+ then throw("Max issuable not set")
477474 else {
478- let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
479- let bM = if (bE)
480- then bl(bm)
481- else ba(aR, bb, bc)
482- let aT = bM._1
483- let aW = bM._2
484- let bN = valueOrElse(getString(g, ak(bx)), f)
485- let bO = valueOrElse(getInteger(g, am(bx)), 0)
486- let bP = valueOrElse(getString(g, an(bx)), f)
487- let bQ = valueOrElse(getInteger(g, ao(bx)), 0)
488- let bR = p(bx)
489- let bS = if ((bR > height))
490- then 0
491- else if ((aW == i))
492- then r
493- else s
494- let bT = fraction(aT, bS, 100)
495- let bU = if (if (if ((bN != f))
496- then (bO > 0)
475+ let aP = aF(bx)
476+ if (if (bE)
477+ then (aP != "")
497478 else false)
498- then (height > bR)
499- else false)
500- then fraction(aT, bO, 10000)
501- else 0
502- let bV = if (if (if ((bP != f))
503- then (bQ > 0)
504- else false)
505- then (height > bR)
506- else false)
507- then fraction(aT, bQ, 10000)
508- else 0
509- let bW = (aT - bT)
510- if ((bK == bL))
511- then throw("Art sold out")
479+ then throw(aP)
512480 else {
513- let bX = (bK + 1)
514- let bY = ((((((((((("Creator: " + bx) + ",
481+ let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
482+ let bM = if (bE)
483+ then bl(bm)
484+ else ba(aR, bb, bc)
485+ let aT = bM._1
486+ let aW = bM._2
487+ let bN = valueOrElse(getString(g, ak(bx)), f)
488+ let bO = valueOrElse(getInteger(g, am(bx)), 0)
489+ let bP = valueOrElse(getString(g, an(bx)), f)
490+ let bQ = valueOrElse(getInteger(g, ao(bx)), 0)
491+ let bR = p(bx)
492+ let bS = if ((bR > height))
493+ then 0
494+ else if ((aW == i))
495+ then r
496+ else s
497+ let bT = fraction(aT, bS, 100)
498+ let bU = if (if (if ((bN != f))
499+ then (bO > 0)
500+ else false)
501+ then (height > bR)
502+ else false)
503+ then fraction(aT, bO, 10000)
504+ else 0
505+ let bV = if (if (if ((bP != f))
506+ then (bQ > 0)
507+ else false)
508+ then (height > bR)
509+ else false)
510+ then fraction(aT, bQ, 10000)
511+ else 0
512+ let bW = (aT - bT)
513+ if ((bK == bL))
514+ then throw("Art sold out")
515+ else {
516+ let bX = (bK + 1)
517+ let bY = ((((((((((("Creator: " + bx) + ",
515518 ArtID: ") + P) + ",
516519 SignID: ") + D) + ",
517520 Artwork name: ") + bI) + ",
518521 Issue: ") + toString(bX)) + "/") + toString(bL))
519- let bZ = Issue(("SA_" + toString((bH + 1))), bY, 1, 0, false)
520- let ca = calculateAssetId(bZ)
521- let cb = if (if ((bX == bL))
522- then true
523- else !(bJ))
524- then false
525- else true
526- let cc = if (if (if ((N == bx))
527- then (bz != "")
528- else false)
529- then (by != "")
530- else false)
531- then addressFromStringValue(bz)
532- else aR.caller
533- let cd = if (!(isDefined(aW)))
534- then "WAVES"
535- else toBase58String(value(aW))
536- let bn = a((bm + "_OPEN"))
537- let ce = DeleteEntry((bm + "_OPEN"))
538- let cf = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bC)))
539- let cg = ((((((("art_sold_" + toString(bX)) + "_of_") + toString(bL)) + "_") + P) + "_") + bx)
540- let ch = if (!(bE))
541- then ((((((((((N + "_") + toString(bC)) + "_") + bB) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(ca))
542- else ((((((((((toString(cc) + "_") + toString(bC)) + "_") + bB) + "_") + toString(aT)) + "_") + cd) + "_") + toBase58String(ca))
543- let ci = StringEntry(cg, ch)
544- let cj = if ((bU != 0))
545- then [ScriptTransfer(Address(fromBase58String(f)), (bT - bU), aW), ScriptTransfer(Address(fromBase58String(bN)), bU, aW)]
546- else [ScriptTransfer(Address(fromBase58String(f)), bT, aW)]
547- let ck = if ((bV != 0))
548- then [ScriptTransfer(Address(fromBase58String(bP)), bV, aW), ScriptTransfer(Address(fromBase58String(bx)), (bW - bV), aW)]
549- else [ScriptTransfer(Address(fromBase58String(bx)), bW, aW)]
550- let cl = if (bt)
551- then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
552- else nil
553- 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)
554- if (bE)
555- then [ci, cf, ce] :: cm
556- else ci :: cm
522+ let bZ = Issue(("SA_" + toString((bH + 1))), bY, 1, 0, false)
523+ let ca = calculateAssetId(bZ)
524+ let cb = if (if ((bX == bL))
525+ then true
526+ else !(bJ))
527+ then false
528+ else true
529+ let cc = if (if (if ((N == bx))
530+ then (bz != "")
531+ else false)
532+ then (by != "")
533+ else false)
534+ then addressFromStringValue(bz)
535+ else aR.caller
536+ let cd = if (!(isDefined(aW)))
537+ then "WAVES"
538+ else toBase58String(value(aW))
539+ let bn = a((bm + "_OPEN"))
540+ let ce = DeleteEntry((bm + "_OPEN"))
541+ let cf = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bC)))
542+ let cg = ((((((("art_sold_" + toString(bX)) + "_of_") + toString(bL)) + "_") + P) + "_") + bx)
543+ let ch = if (!(bE))
544+ then ((((((((((N + "_") + toString(bC)) + "_") + bB) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(ca))
545+ else ((((((((((toString(cc) + "_") + toString(bC)) + "_") + bB) + "_") + toString(aT)) + "_") + cd) + "_") + toBase58String(ca))
546+ let ci = StringEntry(cg, ch)
547+ let cj = if ((bU != 0))
548+ then [ScriptTransfer(Address(fromBase58String(f)), (bT - bU), aW), ScriptTransfer(Address(fromBase58String(bN)), bU, aW)]
549+ else [ScriptTransfer(Address(fromBase58String(f)), bT, aW)]
550+ let ck = if ((bV != 0))
551+ then [ScriptTransfer(Address(fromBase58String(bP)), bV, aW), ScriptTransfer(Address(fromBase58String(bx)), (bW - bV), aW)]
552+ else [ScriptTransfer(Address(fromBase58String(bx)), bW, aW)]
553+ let cl = if (bt)
554+ then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
555+ else nil
556+ 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)
557+ if (bE)
558+ then [ci, cf, ce] :: cm
559+ else ci :: cm
560+ }
557561 }
558562 }
559- }
563+ }
560564 }
561565 }
562566 }
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 if ((bu == bu))
400400 then $Tuple4(toBase58String(aR.transactionId), N, lastBlock.timestamp, (bt > 0))
401401 else throw("Strict value is not equal to itself.")
402402 }
403403
404404
405405 func bv (aR) = if (!(v))
406406 then throw(w)
407407 else $Tuple3(toBase58String(aR.transactionId), toBase58String(aR.caller.bytes), lastBlock.timestamp)
408408
409409
410410 func bw (aR,P,bx,by,bz,bs) = {
411411 let bA = br(aR, bs)
412412 let bB = bA._1
413413 let N = bA._2
414414 let bC = bA._3
415415 let bt = bA._4
416- let bD = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
417- then bt
418- else false)
419- then toString(addressFromPublicKey(fromBase58String(bs)))
420- else toBase58String(aR.caller.bytes)
421416 if (true)
422- then throw(((((((bD + " / ") + bx) + " / ") + bz) + " / ") + bs))
417+ then throw(((toString((toBase58String(aR.caller.bytes) == toString(this))) + " / ") + toString(bt)))
423418 else {
424- let bE = if (if (if ((N == bx))
425- then (bz != "")
419+ let bD = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
420+ then bt
426421 else false)
427- then (by != "")
428- else false)
429- then true
430- else false
431- let bF = o(ah(N, P))
432- if (if (if ((bF != 0))
433- then (height >= bF)
434- else false)
435- then !(bE)
436- else false)
437- then throw("Sale ended.")
422+ then toString(addressFromPublicKey(fromBase58String(bs)))
423+ else toBase58String(aR.caller.bytes)
424+ if (true)
425+ then throw(((((((bD + " / ") + bx) + " / ") + bz) + " / ") + bs))
438426 else {
439- let bG = (N == bx)
440- let bH = o("total_nft_issued")
441- let D = a(W(bx, P))
442- let bI = a(Q(bx, P))
443- if ((bI == ""))
444- then throw("Art doesn't exist")
427+ let bE = if (if (if ((N == bx))
428+ then (bz != "")
429+ else false)
430+ then (by != "")
431+ else false)
432+ then true
433+ else false
434+ let bF = o(ah(N, P))
435+ if (if (if ((bF != 0))
436+ then (height >= bF)
437+ else false)
438+ then !(bE)
439+ else false)
440+ then throw("Sale ended.")
445441 else {
446- let bJ = q(Y(bx, P))
447- let bK = o(X(bx, P))
448- let bc = if (bG)
449- then (B * 2)
450- else o(ag(bx, P))
451- let bb = if (bG)
452- then toBase58String(i)
453- else a(ai(bx, P))
454- let bL = o(V(bx, P))
455- if (if (if (!(bE))
456- then !(bG)
457- else false)
458- then if (if ((0 >= bc))
459- then true
460- else !(bJ))
461- then true
462- else (0 >= bL)
463- else false)
464- then throw("Art not for sale")
465- else if (if (if (!(bE))
466- then bG
467- else false)
468- then (0 >= bL)
469- else false)
470- then throw("Max issuable not set")
471- else {
472- let aP = aF(bx)
473- if (if (bE)
474- then (aP != "")
442+ let bG = (N == bx)
443+ let bH = o("total_nft_issued")
444+ let D = a(W(bx, P))
445+ let bI = a(Q(bx, P))
446+ if ((bI == ""))
447+ then throw("Art doesn't exist")
448+ else {
449+ let bJ = q(Y(bx, P))
450+ let bK = o(X(bx, P))
451+ let bc = if (bG)
452+ then (B * 2)
453+ else o(ag(bx, P))
454+ let bb = if (bG)
455+ then toBase58String(i)
456+ else a(ai(bx, P))
457+ let bL = o(V(bx, P))
458+ if (if (if (!(bE))
459+ then !(bG)
460+ else false)
461+ then if (if ((0 >= bc))
462+ then true
463+ else !(bJ))
464+ then true
465+ else (0 >= bL)
466+ else false)
467+ then throw("Art not for sale")
468+ else if (if (if (!(bE))
469+ then bG
475470 else false)
476- then throw(aP)
471+ then (0 >= bL)
472+ else false)
473+ then throw("Max issuable not set")
477474 else {
478- let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
479- let bM = if (bE)
480- then bl(bm)
481- else ba(aR, bb, bc)
482- let aT = bM._1
483- let aW = bM._2
484- let bN = valueOrElse(getString(g, ak(bx)), f)
485- let bO = valueOrElse(getInteger(g, am(bx)), 0)
486- let bP = valueOrElse(getString(g, an(bx)), f)
487- let bQ = valueOrElse(getInteger(g, ao(bx)), 0)
488- let bR = p(bx)
489- let bS = if ((bR > height))
490- then 0
491- else if ((aW == i))
492- then r
493- else s
494- let bT = fraction(aT, bS, 100)
495- let bU = if (if (if ((bN != f))
496- then (bO > 0)
475+ let aP = aF(bx)
476+ if (if (bE)
477+ then (aP != "")
497478 else false)
498- then (height > bR)
499- else false)
500- then fraction(aT, bO, 10000)
501- else 0
502- let bV = if (if (if ((bP != f))
503- then (bQ > 0)
504- else false)
505- then (height > bR)
506- else false)
507- then fraction(aT, bQ, 10000)
508- else 0
509- let bW = (aT - bT)
510- if ((bK == bL))
511- then throw("Art sold out")
479+ then throw(aP)
512480 else {
513- let bX = (bK + 1)
514- let bY = ((((((((((("Creator: " + bx) + ",
481+ let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
482+ let bM = if (bE)
483+ then bl(bm)
484+ else ba(aR, bb, bc)
485+ let aT = bM._1
486+ let aW = bM._2
487+ let bN = valueOrElse(getString(g, ak(bx)), f)
488+ let bO = valueOrElse(getInteger(g, am(bx)), 0)
489+ let bP = valueOrElse(getString(g, an(bx)), f)
490+ let bQ = valueOrElse(getInteger(g, ao(bx)), 0)
491+ let bR = p(bx)
492+ let bS = if ((bR > height))
493+ then 0
494+ else if ((aW == i))
495+ then r
496+ else s
497+ let bT = fraction(aT, bS, 100)
498+ let bU = if (if (if ((bN != f))
499+ then (bO > 0)
500+ else false)
501+ then (height > bR)
502+ else false)
503+ then fraction(aT, bO, 10000)
504+ else 0
505+ let bV = if (if (if ((bP != f))
506+ then (bQ > 0)
507+ else false)
508+ then (height > bR)
509+ else false)
510+ then fraction(aT, bQ, 10000)
511+ else 0
512+ let bW = (aT - bT)
513+ if ((bK == bL))
514+ then throw("Art sold out")
515+ else {
516+ let bX = (bK + 1)
517+ let bY = ((((((((((("Creator: " + bx) + ",
515518 ArtID: ") + P) + ",
516519 SignID: ") + D) + ",
517520 Artwork name: ") + bI) + ",
518521 Issue: ") + toString(bX)) + "/") + toString(bL))
519- let bZ = Issue(("SA_" + toString((bH + 1))), bY, 1, 0, false)
520- let ca = calculateAssetId(bZ)
521- let cb = if (if ((bX == bL))
522- then true
523- else !(bJ))
524- then false
525- else true
526- let cc = if (if (if ((N == bx))
527- then (bz != "")
528- else false)
529- then (by != "")
530- else false)
531- then addressFromStringValue(bz)
532- else aR.caller
533- let cd = if (!(isDefined(aW)))
534- then "WAVES"
535- else toBase58String(value(aW))
536- let bn = a((bm + "_OPEN"))
537- let ce = DeleteEntry((bm + "_OPEN"))
538- let cf = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bC)))
539- let cg = ((((((("art_sold_" + toString(bX)) + "_of_") + toString(bL)) + "_") + P) + "_") + bx)
540- let ch = if (!(bE))
541- then ((((((((((N + "_") + toString(bC)) + "_") + bB) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(ca))
542- else ((((((((((toString(cc) + "_") + toString(bC)) + "_") + bB) + "_") + toString(aT)) + "_") + cd) + "_") + toBase58String(ca))
543- let ci = StringEntry(cg, ch)
544- let cj = if ((bU != 0))
545- then [ScriptTransfer(Address(fromBase58String(f)), (bT - bU), aW), ScriptTransfer(Address(fromBase58String(bN)), bU, aW)]
546- else [ScriptTransfer(Address(fromBase58String(f)), bT, aW)]
547- let ck = if ((bV != 0))
548- then [ScriptTransfer(Address(fromBase58String(bP)), bV, aW), ScriptTransfer(Address(fromBase58String(bx)), (bW - bV), aW)]
549- else [ScriptTransfer(Address(fromBase58String(bx)), bW, aW)]
550- let cl = if (bt)
551- then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
552- else nil
553- 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)
554- if (bE)
555- then [ci, cf, ce] :: cm
556- else ci :: cm
522+ let bZ = Issue(("SA_" + toString((bH + 1))), bY, 1, 0, false)
523+ let ca = calculateAssetId(bZ)
524+ let cb = if (if ((bX == bL))
525+ then true
526+ else !(bJ))
527+ then false
528+ else true
529+ let cc = if (if (if ((N == bx))
530+ then (bz != "")
531+ else false)
532+ then (by != "")
533+ else false)
534+ then addressFromStringValue(bz)
535+ else aR.caller
536+ let cd = if (!(isDefined(aW)))
537+ then "WAVES"
538+ else toBase58String(value(aW))
539+ let bn = a((bm + "_OPEN"))
540+ let ce = DeleteEntry((bm + "_OPEN"))
541+ let cf = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bC)))
542+ let cg = ((((((("art_sold_" + toString(bX)) + "_of_") + toString(bL)) + "_") + P) + "_") + bx)
543+ let ch = if (!(bE))
544+ then ((((((((((N + "_") + toString(bC)) + "_") + bB) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(ca))
545+ else ((((((((((toString(cc) + "_") + toString(bC)) + "_") + bB) + "_") + toString(aT)) + "_") + cd) + "_") + toBase58String(ca))
546+ let ci = StringEntry(cg, ch)
547+ let cj = if ((bU != 0))
548+ then [ScriptTransfer(Address(fromBase58String(f)), (bT - bU), aW), ScriptTransfer(Address(fromBase58String(bN)), bU, aW)]
549+ else [ScriptTransfer(Address(fromBase58String(f)), bT, aW)]
550+ let ck = if ((bV != 0))
551+ then [ScriptTransfer(Address(fromBase58String(bP)), bV, aW), ScriptTransfer(Address(fromBase58String(bx)), (bW - bV), aW)]
552+ else [ScriptTransfer(Address(fromBase58String(bx)), bW, aW)]
553+ let cl = if (bt)
554+ then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
555+ else nil
556+ 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)
557+ if (bE)
558+ then [ci, cf, ce] :: cm
559+ else ci :: cm
560+ }
557561 }
558562 }
559- }
563+ }
560564 }
561565 }
562566 }
563567 }
564568
565569
566570 func cn (co) = {
567571 let G = co
568572 if ($isInstanceOf(G, "String"))
569573 then {
570574 let cp = G
571575 cp
572576 }
573577 else throw("Sponsored Public Key String expected")
574578 }
575579
576580
577581 @Callable(cq)
578582 func setConf (b,cr) = {
579583 let N = toString(cq.caller)
580584 if (containsElement([m, toString(this)], N))
581585 then if (contains(b, "conf_"))
582586 then [StringEntry(b, cr)]
583587 else throw("Entries starting with conf_ only")
584588 else throw("You are not allowed to change this")
585589 }
586590
587591
588592
589593 @Callable(aR)
590594 func addArtwork (F,D,aL,aM,aN,cs,aw,aA,ax,aB,ay,ct,aO,bs) = {
591595 let cu = br(aR, bs)
592596 let P = cu._1
593597 let N = cu._2
594598 let bC = cu._3
595599 let bt = cu._4
596600 if (!(K(F)))
597601 then throw("Hash should be 64 characters maximum")
598602 else {
599603 let cv = aH(ay, aB)
600604 let aJ = cv._1
601605 let aK = cv._2
602606 let cw = aI(N, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
603607 if ((cw != ""))
604608 then throw("Something went wrong!")
605609 else {
606610 let cx = (p((N + "_free_drops")) > 0)
607611 let cy = if (cx)
608612 then $Tuple2(0, D)
609613 else aU(aR)
610614 let aT = cy._1
611615 let aW = cy._2
612616 if (!(isDefined(aT)))
613617 then throw("Something went wrong")
614618 else {
615619 let cz = a(au(F, N))
616620 if ((cz != ""))
617621 then throw("You already added it")
618622 else {
619623 let cA = a(ar(F))
620624 if ((cA != ""))
621625 then throw("Hash already registered")
622626 else {
623627 let cB = C(D, N, F)
624628 if (!(cB))
625629 then throw("Sign Certificate not found for this address.")
626630 else {
627631 let cC = if (cx)
628632 then invoke(h, "useFreeDrop", [N], nil)
629633 else unit
630634 if ((cC == cC))
631635 then {
632636 let cl = if (bt)
633637 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
634638 else nil
635639 ([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)
636640 }
637641 else throw("Strict value is not equal to itself.")
638642 }
639643 }
640644 }
641645 }
642646 }
643647 }
644648 }
645649
646650
647651
648652 @Callable(aR)
649653 func updateArtwork (aq,aL,aM,aN,cs,aw,aA,ax,aB,ay,ct,aO,bs) = if (!(v))
650654 then throw(w)
651655 else {
652656 let cD = br(aR, bs)
653657 let bB = cD._1
654658 let N = cD._2
655659 let bC = cD._3
656660 let bt = cD._4
657661 let cE = aH(ay, aB)
658662 let aJ = cE._1
659663 let aK = cE._2
660664 let cw = aI(N, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
661665 if ((cw != ""))
662666 then throw("Something went wrong!")
663667 else {
664668 let cz = a(Q(N, aq))
665669 if ((cz == ""))
666670 then throw("Entry not found")
667671 else {
668672 let cF = a(aj(N, aq))
669673 if ((cF == "ILLEGAL"))
670674 then throw("Cannot update ILLEGAL artwork")
671675 else if (!(aX(N, aq)))
672676 then {
673677 let cl = if (bt)
674678 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
675679 else nil
676680 ([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)
677681 }
678682 else throw("Already minted")
679683 }
680684 }
681685 }
682686
683687
684688
685689 @Callable(aR)
686690 func flagArtwork (P,cG,cF,cH) = {
687691 let cI = bv(aR)
688692 let bB = cI._1
689693 let N = cI._2
690694 if (containsElement([m, toString(this)], N))
691695 then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cF))
692696 then [StringEntry(aj(cG, P), cF), StringEntry(ad(cG, P), cH)]
693697 else throw(("Unknow status " + cF))
694698 else throw("You are not allowed")
695699 }
696700
697701
698702
699703 @Callable(aR)
700704 func deleteArtwork (P,cG) = {
701705 let cJ = bv(aR)
702706 let bB = cJ._1
703707 let N = cJ._2
704708 let aY = if (containsElement([m, toString(this)], N))
705709 then cG
706710 else N
707711 let cz = valueOrErrorMessage(a(Q(aY, P)), "No art matching for this address")
708712 if ((cz == ""))
709713 then throw("No art matching for this address")
710714 else {
711715 let F = a(ap(aY, P))
712716 if ((F == ""))
713717 then throw("No art hash matching for this address")
714718 else {
715719 let D = a(W(aY, P))
716720 if ((D == ""))
717721 then throw("No SIGN ID matching")
718722 else {
719723 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))]
720724 if (!(aX(aY, P)))
721725 then if (!(v))
722726 then throw(w)
723727 else cK
724728 else if (containsElement([m, toString(this)], N))
725729 then cK
726730 else throw("Art already minted, you cannot delete it")
727731 }
728732 }
729733 }
730734 }
731735
732736
733737
734738 @Callable(aR)
735739 func sellArtwork (P,bg,cL,aW,bF,bs) = {
736740 let cM = br(aR, bs)
737741 let bB = cM._1
738742 let N = cM._2
739743 let bC = cM._3
740744 let bt = cM._4
741745 let bI = a(Q(N, P))
742746 if ((bI == ""))
743747 then throw("This art doesn't match your account")
744748 else {
745749 let cF = a(aj(N, P))
746750 if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cF))
747751 then throw("Flagged artwork")
748752 else {
749753 let cN = o(("current_bidamount_" + P))
750754 if ((0 > bF))
751755 then throw("Negative end")
752756 else if (if ((bF > 0))
753757 then if ((cL != 1))
754758 then true
755759 else (bg != 0)
756760 else false)
757761 then throw("Timed offer only allowed for unique edition and offer only")
758762 else {
759763 let cO = if ((bF == 0))
760764 then 0
761765 else height
762766 if (!(be(aW)))
763767 then throw("Something went wrong!")
764768 else if (!(bf(aW, bg)))
765769 then throw("Something went wrong!")
766770 else {
767771 let aP = aF(N)
768772 if ((aP != ""))
769773 then throw(aP)
770774 else {
771775 let bK = o(X(N, P))
772776 let bL = o(V(N, P))
773777 if ((cL > 100))
774778 then throw("100 editions max per artwork")
775779 else if (if ((bK != 0))
776780 then (bK == bL)
777781 else false)
778782 then throw("Max edition reached.")
779783 else if (if ((bK > 0))
780784 then (bL != cL)
781785 else false)
782786 then throw("Cannot change maximum issuable anymore")
783787 else if (if ((cN > 0))
784788 then (bL != cL)
785789 else false)
786790 then throw("Cannot change maximum issuable with active orders")
787791 else {
788792 let cb = if (if ((bg > 0))
789793 then (cL > 0)
790794 else false)
791795 then true
792796 else false
793797 let cl = if (bt)
794798 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
795799 else nil
796800 ([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)
797801 }
798802 }
799803 }
800804 }
801805 }
802806 }
803807 }
804808
805809
806810
807811 @Callable(aR)
808812 func buyArtwork (P,bx) = bw(aR, P, bx, "", "", "")
809813
810814
811815
812816 @Callable(aR)
813817 func setBid (P,bx) = {
814818 let cP = bv(aR)
815819 let bB = cP._1
816820 let N = cP._2
817821 let bC = cP._3
818822 let cQ = aQ(aR)
819823 let aS = cQ._1
820824 let aT = cQ._2
821825 let aW = if (!(isDefined(aS.assetId)))
822826 then "WAVES"
823827 else toBase58String(value(aS.assetId))
824828 let bF = o(ah(bx, P))
825829 if (if ((bF != 0))
826830 then (height >= bF)
827831 else false)
828832 then throw("Sale ended.")
829833 else {
830834 let cN = o(("current_bidamount_" + P))
831835 if (!(be(aW)))
832836 then throw("asset not accepted")
833837 else if (!(bf(aW, aT)))
834838 then throw("Wrong min sell")
835839 else {
836840 let bK = o(X(bx, P))
837841 let bL = o(V(bx, P))
838842 if ((0 >= bL))
839843 then throw("No max edition set for this artwork")
840844 else if ((bK >= bL))
841845 then throw("Sold out, you cannot bid")
842846 else [StringEntry((((((((("bid_" + P) + "_") + bx) + "_") + N) + "_") + bB) + "_OPEN"), ((((aW + "_") + toString(aT)) + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cN + 1))]
843847 }
844848 }
845849 }
846850
847851
848852
849853 @Callable(aR)
850854 func acceptBid (P,bx,by,bz,bs) = {
851855 let cR = br(aR, bs)
852856 let bB = cR._1
853857 let cS = cR._2
854858 let bC = cR._3
855859 let bt = cR._4
856860 if ((cS != bx))
857861 then throw("You cannot do this action")
858862 else bw(aR, P, bx, by, bz, bs)
859863 }
860864
861865
862866
863867 @Callable(aR)
864868 func cancelBid (P,bx,by,bz) = {
865869 let cT = bv(aR)
866870 let bB = cT._1
867871 let N = cT._2
868872 let bC = cT._3
869873 if (if ((N != bz))
870874 then (N != bx)
871875 else false)
872876 then throw("You cannot do this action")
873877 else {
874878 let cU = if ((N == bx))
875879 then bz
876880 else N
877881 let cN = o(("current_bidamount_" + P))
878882 let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
879883 let bn = a((bm + "_OPEN"))
880884 if ((bn == ""))
881885 then throw("Bid not found")
882886 else {
883887 let bo = split(bn, "_")
884888 let aW = bk(bo[0])
885889 let cV = "CANCELED"
886890 [DeleteEntry((bm + "_OPEN")), StringEntry(((bm + "_") + cV), ((bn + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cN - 1)), ScriptTransfer(Address(fromBase58String(cU)), parseIntValue(bo[1]), aW)]
887891 }
888892 }
889893 }
890894
891895
892896 @Verifier(cW)
893897 func cX () = {
894898 let G = cW
895899 if ($isInstanceOf(G, "InvokeScriptTransaction"))
896900 then {
897901 let cY = G
898902 if (if (if (if ((cY.function == "addArtwork"))
899903 then (cY.dApp == this)
900904 else false)
901905 then (cY.fee == 500000)
902906 else false)
903907 then (cY.feeAssetId == unit)
904908 else false)
905909 then sigVerify(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[13])))
906910 else if (if (if (if ((cY.function == "updateArtwork"))
907911 then (cY.dApp == this)
908912 else false)
909913 then (cY.fee == 500000)
910914 else false)
911915 then (cY.feeAssetId == unit)
912916 else false)
913917 then sigVerify(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[12])))
914918 else if (if (if (if ((cY.function == "sellArtwork"))
915919 then (cY.dApp == this)
916920 else false)
917921 then (cY.fee == 500000)
918922 else false)
919923 then (cY.feeAssetId == unit)
920924 else false)
921925 then sigVerify(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[5])))
922926 else if (if (if (if ((cY.function == "acceptBid"))
923927 then (cY.dApp == this)
924928 else false)
925929 then (cY.fee == 500000)
926930 else false)
927931 then (cY.feeAssetId == unit)
928932 else false)
929933 then sigVerify_128Kb(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[4])))
930934 else sigVerify(cW.bodyBytes, cW.proofs[0], cW.senderPublicKey)
931935 }
932936 else sigVerify(cW.bodyBytes, cW.proofs[0], cW.senderPublicKey)
933937 }
934938

github/deemru/w8io/c3f4982 
84.07 ms