tx · 424W6tJ4RUixfDnJMdGeYvdyQem9Zq6h6huB4AJxztLK

3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY:  -0.01900000 Waves

2023.03.24 06:41 [2503560] smart account 3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY > SELF 0.00000000 Waves

{ "type": 13, "id": "424W6tJ4RUixfDnJMdGeYvdyQem9Zq6h6huB4AJxztLK", "fee": 1900000, "feeAssetId": null, "timestamp": 1679629402250, "version": 2, "chainId": 84, "sender": "3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY", "senderPublicKey": "J9DCtJJxJBWZdtDR12BA1U94Q3cZzMi4R6k5hYkAzmzC", "proofs": [ "58z5JBy6TDnnt2S7z5bNftP9SLpNgXSTxBPP1rdY1NbPsNe5ET1M6w1JHK6mZ9y5XSdVZgmkY8G3XYURxfh4v9iY" ], "script": "base64:BgL+FAgCEgQKAggIEhAKDggICAgICAgICAgICAEIEg8KDQgICAgICAgICAgIAQgSBgoECAgICBIECgIICBIICgYIAQEIAQgSBAoCCAgSBAoCCAgSBwoFCAgICAgSBgoECAgICCIOZ2V0U3RyaW5nQnlLZXkiA2tleSIIdW5pdFRlc3QiCW9yYWNsZUZlZSIIc2lnbkRhcHAiC2ZlZVJlY2VpdmVyIgh1c2VyRGFwcCINd2hpdGVsaXN0RGFwcCILc2lnbkFzc2V0SWQiC3VzZG5Bc3NldElkIgt1c2R0QXNzZXRJZCIMd2F2ZXNBc3NldElkIgVjaHJpcyIZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZSIPZ2V0SW50ZWdlckJ5S2V5Ig5jaGVja1doaXRlbGlzdCIPZ2V0Qm9vbGVhbkJ5S2V5IgdzaWduQ3V0Igt1c2RuV2F2ZUN1dCIOZGVmYXVsdExpY2VuY2UiEmRlZmF1bHRIYXNoTGljZW5jZSILZGFwcFJ1bm5pbmciDm1haW50ZW5hbmNlTVNHIg11c2VyU3VzcGVuZGVkIgt1c2VyUmVtb3ZlZCIQdXNlclVucmVnaXN0ZXJlZCILdXNlckFsbG93ZWQiGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UiFGNoZWNrU2lnbkNlcnRpZmljYXRlIgZzaWduSUQiBU93bmVyIgpzaGEyNTZIYXNoIgckbWF0Y2gwIgFhIgt2YWxpZGF0ZUNJRCIDY2lkIgx2YWxpZGF0ZUhhc2giBGhhc2giDWtleVVzZXJTdGF0dXMiBmNhbGxlciIHa2V5RGF0ZSIFYXJ0SWQiB2tleU5hbWUiB2tleURlc2MiDWtleURpc3BsYXlDaWQiDWtleUV4cG9ydEhhc2giDGtleUV4cG9ydENpZCIKa2V5TWF4TWludCIJa2V5U2lnbklEIglrZXlJc3N1ZWQiCWtleU9uU2FsZSIOa2V5TGljZW5jZUhhc2giDWtleUxpY2VuY2VDaWQiB2tleVRhZ3MiB2tleVR5cGUiB2tleU5vdGUiCmtleUNyYXdsZXIiDGtleVJveWFsdGllcyIIa2V5UHJpY2UiCmtleUVuZFNhbGUiEmtleUFzc2V0SWRBY2NlcHRlZCIHa2V5RmxhZyISa2V5QXJ0aXN0QWdlbnRBZGRyIgphcnRpc3RBZGRyIhRrZXlQcmltYXJ5U2hhcmVBZ2VudCIYa2V5QXJ0aXN0UHVibGljQWdlbnRBZGRyIhprZXlQcmltYXJ5U2hhcmVQdWJsaWNBZ2VudCIRa2V5SGFzaEJ5VHhpZEFkZHIiBHR4aWQiDmtleU93bmVyQnlIYXNoIg1rZXlpZEJ5U2lnbmlkIgZzaWduSWQiEmtleVR4aWRCeUhhc2hPd25lciIOdmFsaWRhdGVBbGxDSUQiCmNpZERpc3BsYXkiCWNpZEV4cG9ydCIKY2lkTGljZW5jZSIPdmFsaWRhdGVBbGxIYXNoIgxzaGEyNTZFeHBvcnQiDXNoYTI1NkxpY2VuY2UiDnZhbGlkYXRlU3RyaW5nIgNzdHIiA21heCIMdmFsaWRhdGVVc2VyIgp1c2VyU3RhdHVzIgpzZXRMSWNlbmNlIhN2YWxpZGF0ZUFydHdvcmtEYXRhIgpsaWNlbmNlQ0lEIgtsaWNlbmNlSGFzaCIEbmFtZSILZGVzY3JpcHRpb24iBHRhZ3MiCXJveWFsdGllcyIJY2hlY2tVc2VyIglpc1BheW1lbnQiAWkiB3BheW1lbnQiBmFtb3VudCIPdmFsaWRhdGVQYXltZW50IgskdDA5MTgwOTIxNiIHYXNzZXRJZCILaXNBcnRNaW50ZWQiCWFkZHJUb1VzZSIBYiIUdmFsaWRhdGVQcmljZUFzc2V0SWQiDHByaWNlQXNzZXRJZCIMYXJ0d29ya1ByaWNlIgskdDA5ODA0OTg0MCIQYWNjZXB0ZWRBc3NldElkcyIPdmFsaWRhdGVNaW5TZWxsIgVwcmljZSIMbWluU2VsbFdhdmVzIgttaW5TZWxsVXNkbiILbWluU2VsbFNpZ24iDWdldEJpZEFzc2V0SWQiFmdldFByaWNlQXNzZXRJZEZyb21CaWQiCmJpZERhdGFLZXkiB2JpZERhdGEiCmJpZERhdGFBcnIiCWJpZEFtb3VudCIKYmlkQXNzZXRJZCIVaWRDYWxsZXJEYXRlU3BvbnNvcmVkIgZwdWJLZXkiC2lzU3BvbnNvcmVkIhNnZXRfc3BvbnNvcmVkX3dhdmVzIgxpZENhbGxlckRhdGUiB2J1eU1pbnQiBmlzc3VlciIFYmlkSWQiCGJpZE93bmVyIg0kdDAxMzMyODEzNDE3IgJpZCIEZGF0ZSIFaXNCaWQiCGJsb2NrRW5kIg5jYWxsZXJJc0lzc3VlciIIdG90YWxORlQiC2FydHdvcmtOYW1lIghpc09uU2FsZSIKYW1vdW50U29sZCIKbWF4Q2FuU2VsbCINJHQwMTUwMjExNTIxMyIFYWdlbnQiCmFnZW50U2hhcmUiC3B1YmxpY0FnZW50IhBwdWJsaWNBZ2VudFNoYXJlIg1pc1doaXRlbGlzdGVkIgNjdXQiDWFtb3VudEZvclNpZ24iDmFtb3VudEZvckFnZW50IhRhbW91bnRGb3JQdWJsaWNBZ2VudCIQYW1vdW50Rm9yQ3JlYXRvciINbmV3QW1vdW50U29sZCIJaXNzdWVNZXRhIghpc3N1ZU5GVCIFaWRORlQiCnNlbGxTdGF0dXMiCnJlY2VpdmVORlQiCmFzc2V0SWRCaWQiCWJpZERlbE9sZCIJYmlkVXBkYXRlIgdzb2xkS2V5Iglzb2xkVmFsdWUiCHNvbGREYXRhIhRjb21taXNzaW9uc1dpdGhBZ2VudCIaY29tbWlzc2lvbnNXaXRoUHVibGljQWdlbnQiCnR4VG9DYWxsZXIiBmJ1eVJlcyIIYXNTdHJpbmciAmJ2IgNidjAiBmludm9rZSIDdmFsIgR0eXBlIgdjcmF3bGVyIg0kdDAyMDM4OTIwNDYyIg0kdDAyMDU2MzIwNjMyIg92YWxpZGF0ZUFydHdvcmsiEHdoaXRlbGlzdGVkX2Ryb3AiDSR0MDIwOTMxMjEwMTUiCmVudHJ5RXhpc3QiCWhhc2hFeGlzdCIPaXNTaWduQ2VydGlmaWVkIhdkZWNyZWFzZV93aGl0ZWxpc3RfZHJvcCINJHQwMjQwNDkyNDExOSINJHQwMjQxMjkyNDE5OCIEZmxhZyIEYWRkciIEbm90ZSINJHQwMjU4MjUyNTg1OSINJHQwMjYyOTUyNjMyOSIMZGF0YVRvRGVsZXRlIgdtYXhNaW50Ig0kdDAyOTE2NTI5MjM1IgZiaWROYnIiCmJhc2VIZWlnaHQiDSR0MDMxNjE3MzE2NTciDSR0MDMxNjYyMzE2OTgiDSR0MDMyOTE4MzI5ODkiB2NhbGxlcjEiDSR0MDMzMjI0MzMyODUiDXJldHVybk1vbmV5VG8iCWJpZFN0YXR1cyICdHgiCHZlcmlmaWVyIgNpbnZOAQFhAQFiCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAWICAAABYwcAAWQJAQV2YWx1ZQEJAKYIAQkBAWEBAg9jb25mX29yYWNsZV9mZWUAAWUJAQV2YWx1ZQEJAKYIAQkBAWEBAhFjb25mX3NpZ253ZWJfZGFwcAABZgkBAWEBAhFjb25mX2ZlZV9yZWNlaXZlcgABZwMFAWMJAQV2YWx1ZQEJAKYIAQIjM010NFJHTUV5alNXWUFvY1RQcWQ1NXdkSFFRQjNQVTJVQ20JAQV2YWx1ZQEJAKYIAQkBAWEBAg9jb25mX3VzZXJzX2RhcHAAAWgJAQV2YWx1ZQEJAKYIAQkBAWEBAhNjb25mX3doaXRlbGlzdF9kYXBwAAFpCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9TSUdOAAFqCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9VU0ROAAFrCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9VU0RUAAFsAQAAAW0JAQFhAQIMY29uZl9hZG1pbl8xAQFuAQFiCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUBZAUBYgIfSW50ZWdlciB1bmRlZmluZSBvciAwIGluIG9yYWNsZQEBbwEBYgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFiAAABAXABAWIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUBaAUBYgAAAQFxAQFiCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFAWIHAAFyAAcAAXMACgABdAkBAWEBAhRjb25mX2RlZmF1bHRfbGljZW5jZQABdQkBAWEBAhljb25mX2RlZmF1bHRfbGljZW5jZV9oYXNoAAF2CQELdmFsdWVPckVsc2UCCQCbCAIFAWcCFGNvbmZfZGFwcF9pc19ydW5uaW5nBgABdwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQFnAhRjb25mX21haW50ZW5hbmNlX21zZwIAAAF4AglTVVNQRU5ERUQAAXkCB1JFTU9WRUQAAXoCDFVOUkVHSVNURVJFRAABQQIHQUxMT1dFRAABQgkBAW4BCQCsAgICEmNlcnRpZmljYXRpb25fZmVlXwkA2AQBBQFpAQFDAwFEAUUBRgQBRwkAnQgCBQFlCQCsAgIJAKwCAgkArAICAghkYXRhX2ZjXwUBRAIBXwUBRQMJAAECBQFHAgZTdHJpbmcEAUgFAUcDCQEIY29udGFpbnMCBQFIBQFGBgcHAQFJAQFKAwkBCGNvbnRhaW5zAgUBSgIBLwMDCQBmAgBMCQCxAgEFAUoJAAACCQCxAgEJAJEDAgkAtQkCBQFKAgEvAAAAOwcJAGYCABAJALECAQkAkQMCCQC1CQIFAUoCAS8AAQcHAQFLAQFMCQAAAgkAsQIBBQFMAEABAU0BAU4JAKwCAgIMdXNlcl9zdGF0dXNfBQFOAQFPAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF9kYXRlXwUBUAIBXwUBTgEBUQIBTgFQCQCsAgIJAKwCAgkArAICAglhcnRfbmFtZV8FAVACAV8FAU4BAVICAU4BUAkArAICCQCsAgIJAKwCAgIJYXJ0X2Rlc2NfBQFQAgFfBQFOAQFTAgFOAVAJAKwCAgkArAICCQCsAgICEGFydF9kaXNwbGF5X2NpZF8FAVACAV8FAU4BAVQCAU4BUAkArAICCQCsAgIJAKwCAgIQYXJ0X2V4cG9ydF9oYXNoXwUBUAIBXwUBTgEBVQIBTgFQCQCsAgIJAKwCAgkArAICAg9hcnRfZXhwb3J0X2NpZF8FAVACAV8FAU4BAVYCAU4BUAkArAICCQCsAgIJAKwCAgIMYXJ0X21heG1pbnRfBQFQAgFfBQFOAQFXAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9zaWduaWRfBQFQAgFfBQFOAQFYAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9pc3N1ZWRfBQFQAgFfBQFOAQFZAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9vbnNhbGVfBQFQAgFfBQFOAQFaAgFOAVAJAKwCAgkArAICCQCsAgICEWFydF9saWNlbmNlX2hhc2hfBQFQAgFfBQFOAQJhYQIBTgFQCQCsAgIJAKwCAgkArAICAhBhcnRfbGljZW5jZV9jaWRfBQFQAgFfBQFOAQJhYgIBTgFQCQCsAgIJAKwCAgkArAICAglhcnRfdGFnc18FAVACAV8FAU4BAmFjAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF90eXBlXwUBUAIBXwUBTgECYWQCAU4BUAkArAICCQCsAgIJAKwCAgIJYXJ0X25vdGVfBQFQAgFfBQFOAQJhZQIBTgFQCQCsAgIJAKwCAgkArAICAhBhcnRfY3Jhd2xlcl9jaWRfBQFQAgFfBQFOAQJhZgIBTgFQCQCsAgIJAKwCAgkArAICAg5hcnRfcm95YWx0aWVzXwUBUAIBXwUBTgECYWcCAU4BUAkArAICCQCsAgIJAKwCAgIKYXJ0X3ByaWNlXwUBUAIBXwUBTgECYWgCAU4BUAkArAICCQCsAgIJAKwCAgIMYXJ0X2VuZHNhbGVfBQFQAgFfBQFOAQJhaQIBTgFQCQCsAgIJAKwCAgkArAICAhJhcnRfYXNzZXRBY2NlcHRlZF8FAVACAV8FAU4BAmFqAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF9mbGFnXwUBUAIBXwUBTgECYWsBAmFsCQCsAgICDWFydGlzdF9hZ2VudF8FAmFsAQJhbQECYWwJAKwCAgIVYXJ0aXN0X2FnZW50X3ByaW1hcnlfBQJhbAECYW4BAmFsCQCsAgICFGFydGlzdF9wdWJsaWNfYWdlbnRfBQJhbAECYW8BAmFsCQCsAgICHGFydGlzdF9wdWJsaWNfYWdlbnRfcHJpbWFyeV8FAmFsAQJhcAIBTgJhcQkArAICCQCsAgIJAKwCAgITZ2V0X2hhc2hieXR4aWRhZGRyXwUCYXECAV8FAU4BAmFyAQFGCQCsAgICEmdldF9vd25lcl9ieV9oYXNoXwUBRgECYXMCAU4CYXQJAKwCAgkArAICCQCsAgICEmdldF9hcnRpZGJ5c2lnbmlkXwUCYXQCAV8FAU4BAmF1AgFGAU4JAKwCAgIXZ2V0X3R4aWRfYnlfaGFzaF9vd25lcl8JANgEAQkA1BYBCQCbAwEJAKwCAgUBRgUBTgECYXYDAmF3AmF4AmF5AwkBASEBCQEBSQEFAmF3CQACAQIRV3JvbmcgRGlzcGxheSBDSUQDCQEBIQEJAQFJAQUCYXgJAAIBAhBXcm9uZyBFeHBvcnQgQ0lEAwMJAQIhPQIFAmF5AgAJAQEhAQkBAUkBBQJheQcJAAIBAhFXcm9uZyBMaWNlbmNlIENJRAYBAmF6AgJhQQJhQgMJAQEhAQkBAUsBBQJhQQkAAgECGEV4cG9ydCBIYXNoIDY0IGNoYXIuIG1heAMJAQEhAQkBAUsBBQJhQgkAAgECGUxpY2VuY2UgSGFzaCA2NCBjaGFyLiBtYXgGAQJhQwICYUQCYUUDCQAAAgkAsQIBBQJhRAAACQACAQIYRmllbGQgY2Fubm90IGJlIGlzIGVtcHR5AwkAZgIJALECAQUCYUQFAmFFCQACAQkArAICBQJhRAIMIGlzIHRvbyBsb25nBgECYUYBAU4EAmFHCQELdmFsdWVPckVsc2UCCQCdCAIFAWcJAQFNAQUBTgUBegMDCQAAAgUCYUcFAXoGCQAAAgUCYUcFAUECLlJlZ2lzdGVyIHRoaXMgYWNjb3VudCBmaXJzdCB3aXRoICJBY2NvdW50IiB0YWIDCQAAAgUCYUcFAXgCEUFjY291bnQgc3VzcGVuZGVkAwkAAAIFAmFHBQF5Ag9BY2NvdW50IHJlbW92ZWQCAAECYUgCAmF5AmFCBAFKAwkAAAIJALECAQUCYXkAAAUBdAUCYXkEAUwDCQAAAgkAsQIBBQJhQgAABQF1BQJhQgkAlAoCBQFKBQFMAQJhSQoBTgJhdwJheAJhSgJhQQJhSwJhTAJhTQJhTgJhTwQCYVAJAQJhRgEFAU4DCQECIT0CBQJhUAIACQACAQUCYVADCQAAAgkAsQIBBQJhdwAACQACAQIbRGlzcGxheSBDSUQgY2Fubm90IGJlIGVtcHR5AwkBASEBCQECYXYDBQJhdwUCYXgFAmFKCQACAQIQUHJvYmxlbSB3aXRoIENJRAMJAQEhAQkBAmF6AgUCYUEFAmFLCQACAQITUHJvYmxlbSB3aXRoIEhhc2hlcwMJAQEhAQkBAmFDAgUCYUwAZAkAAgECEjEwMCBDaGFyLiBtYXggbmFtZQMJAQEhAQkBAmFDAgUCYU0A6AcJAAIBAhoxMDAwIENoYXIuIG1heCBkZXNjcmlwdGlvbgMDCQBmAgAABQJhTwYJAGYCBQJhTwDoBwkAAgECM1JveWFsdGllcyBjYW5ub3QgYmUgbGVzcyB0aGFuIDAlIG9yIGhpZ2hlciB0aGFuIDEwJQMJAGYCCQCQAwEJALUJAgUCYU4CASwABQkAAgECCzUgdGFncyBtYXguAgABAmFRAQJhUgMJAAACCQCQAwEIBQJhUghwYXltZW50cwAACQACAQITTm8gcGF5bWVudCBhdHRhY2hlZAQCYVMJAQV2YWx1ZQEJAJEDAggFAmFSCHBheW1lbnRzAAAEAmFUCQEFdmFsdWUBCAUCYVMGYW1vdW50CQCUCgIFAmFTBQJhVAECYVUBAmFSBAJhVgkBAmFRAQUCYVIEAmFTCAUCYVYCXzEEAmFUCAUCYVYCXzIEAmFXAwMJAQlpc0RlZmluZWQBCAUCYVMHYXNzZXRJZAkAAAIIBQJhUwdhc3NldElkBQFpBwgFAmFTB2Fzc2V0SWQJAAIBAitPbmx5IFNJR04gdG9rZW4gYWNjZXB0ZWQgYXMgdHJhbnNhY3Rpb24gZmVlAwkBAiE9AgUCYVQFAUIJAAIBCQCsAgICGVBheW1lbnQgYW1vdW50IHNob3VsZCBiZSAJAKQDAQUBQgkAlAoCBQJhVAUCYVcBAmFYAgJhWQFQBAFHCQCaCAIFBHRoaXMJAQFYAgUCYVkFAVADCQABAgUBRwIDSW50BAJhWgUBRwMJAQIhPQIFAmFaAAAGBwcBAmJhAwJhUgJiYgJiYwQCYmQJAQJhUQEFAmFSBAJhUwgFAmJkAl8xBAJhVAgFAmJkAl8yBAJhVwMJAQEhAQkBCWlzRGVmaW5lZAEIBQJhUwdhc3NldElkBQR1bml0AwMJAGYCCQCxAgEFAmJiAAAJAAACCQDYBAEJAQV2YWx1ZQEIBQJhUwdhc3NldElkBQJiYgcIBQJhUwdhc3NldElkCQACAQIOV3JvbmcgYXNzZXQgaWQDAwkAAAIFAmFXBQR1bml0CQECIT0CBQJiYgIABwkAAgECDldyb25nIGFzc2V0IGlkAwkBAiE9AgUCYmMFAmFUCQACAQITUGF5bWVudCBkb24ndCBtYXRjaAkAlAoCBQJhVAUCYVcBAmJlAQJhVwMDAwMDCQECIT0CBQJhVwkA2AQBBQFpCQECIT0CBQJhVwkA2AQBBQFsBwkBAiE9AgUCYVcCBVdBVkVTBwkBAiE9AgUCYVcJANgEAQUBagcJAQIhPQIFAmFXCQDYBAEFAWsHCQACAQImT25seSBTSUdOLCBVU0ROLFVTRFQgb3IgV0FWRVMgYWNjZXB0ZWQGAQJiZgICYVcCYmcEAmJoAwUBYwAKCQEBbgECDndhdmVzX21pbl9zZWxsBAJiaQDAhD0EAmJqAwUBYwABCQBoAgUBQgACAwMDAwMDCQAAAgUCYVcJANgEAQUBagkAZgIFAmJpBQJiZwcJAQIhPQIFAmJnAAAHBgMDCQAAAgUCYVcJANgEAQUBawkAZgIFAmJpBQJiZwcJAQIhPQIFAmJnAAAHBgMDCQAAAgUCYVcJANgEAQUBaQkAZgIFAmJqBQJiZwcJAQIhPQIFAmJnAAAHBgMDAwkAAAIFAmFXCQDYBAEFAWwGCQAAAgUCYVcCBVdBVkVTCQBmAgUCYmgFAmJnBwkBAiE9AgUCYmcAAAcJAAIBAhhXcm9uZyBtaW5pbXVtIHNlbGwgcHJpY2UGAQJiawECYVcDCQAAAgUCYVcCBVdBVkVTBQR1bml0CQDZBAEFAmFXAQJibAECYm0EAmJuCQEBYQEJAKwCAgUCYm0CBV9PUEVOAwkAAAIFAmJuAgAJAAIBAg1CaWQgbm90IGZvdW5kBAJibwkAtQkCBQJibgIBXwQCYnAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJibwABBAJicQkBAmJrAQkAkQMCBQJibwAAAwkAZwIAAAUCYnAJAAIBAgxXcm9uZyBhbW91bnQJAJQKAgUCYnAFAmJxAQJicgICYVICYnMDCQEBIQEFAXYJAAIBBQF3BAJidAMJAQIhPQIFAmJzAgAJAQt2YWx1ZU9yRWxzZQIJAQFwAQkArAICCQClCAEJAKcIAQkA2QQBBQJicwIJX2ZyZWVfdHhzAAAAAAMGCQACAQkArAICCQCsAgIJAKUDAQkAAAIJANgEAQgIBQJhUgZjYWxsZXIFYnl0ZXMJAKUIAQUEdGhpcwIDIC8gCQClAwEJAGYCBQJidAAABAFOAwMJAAACCQDYBAEICAUCYVIGY2FsbGVyBWJ5dGVzCQClCAEFBHRoaXMJAGYCBQJidAAABwkApQgBCQCnCAEJANkEAQUCYnMJANgEAQgIBQJhUgZjYWxsZXIFYnl0ZXMEAmJ1AwMJAQIhPQIFAmJzAgAJAGYCBQJidAAABwkA/AcEBQFoAgl1c2VGcmVlVHgJAMwIAgkApQgBCQCnCAEJANkEAQUCYnMFA25pbAUDbmlsBQR1bml0AwkAAAIFAmJ1BQJidQkAlgoECQDYBAEIBQJhUg10cmFuc2FjdGlvbklkAwMJAAACCQDYBAEICAUCYVIGY2FsbGVyBWJ5dGVzCQClCAEFBHRoaXMJAGYCBQJidAAABwkApQgBCQCnCAEJANkEAQUCYnMJANgEAQgIBQJhUgZjYWxsZXIFYnl0ZXMIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQBmAgUCYnQAAAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECYnYBAmFSAwkBASEBBQF2CQACAQUBdwkAlQoDCQDYBAEIBQJhUg10cmFuc2FjdGlvbklkCQDYBAEICAUCYVIGY2FsbGVyBWJ5dGVzCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAECYncGAmFSAVACYngCYnkCYnoCYnMEAmJBCQECYnICBQJhUgUCYnMEAmJCCAUCYkECXzEEAU4IBQJiQQJfMgQCYkMIBQJiQQJfMwQCYnQIBQJiQQJfNAMGCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUBTgIDIC8gBQJieAIDIC8gBQJiegIDIC8gBQJicwQCYkQDAwMJAAACBQFOBQJieAkBAiE9AgUCYnoCAAcJAQIhPQIFAmJ5AgAHBgcEAmJFCQEBbwEJAQJhaAIFAU4FAVADAwMJAQIhPQIFAmJFAAAJAGcCBQZoZWlnaHQFAmJFBwkBASEBBQJiRAcJAAIBAgtTYWxlIGVuZGVkLgQCYkYJAAACBQFOBQJieAQCYkcJAQFvAQIQdG90YWxfbmZ0X2lzc3VlZAQBRAkBAWEBCQEBVwIFAmJ4BQFQBAJiSAkBAWEBCQEBUQIFAmJ4BQFQAwkAAAIFAmJIAgAJAAIBAhFBcnQgZG9lc24ndCBleGlzdAQCYkkJAQFxAQkBAVkCBQJieAUBUAQCYkoJAQFvAQkBAVgCBQJieAUBUAQCYmMDBQJiRgkAaAIFAUIAAgkBAW8BCQECYWcCBQJieAUBUAQCYmIDBQJiRgkA2AQBBQFpCQEBYQEJAQJhaQIFAmJ4BQFQBAJiSwkBAW8BCQEBVgIFAmJ4BQFQAwMDCQEBIQEFAmJECQEBIQEFAmJGBwMDCQBnAgAABQJiYwYJAQEhAQUCYkkGCQBnAgAABQJiSwcJAAIBAhBBcnQgbm90IGZvciBzYWxlAwMDCQEBIQEFAmJEBQJiRgcJAGcCAAAFAmJLBwkAAgECFE1heCBpc3N1YWJsZSBub3Qgc2V0BAJhUAkBAmFGAQUCYngDAwUCYkQJAQIhPQIFAmFQAgAHCQACAQUCYVAEAmJtCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICBGJpZF8FAVACAV8FAmJ4AgFfBQJiegIBXwUCYnkEAmJMAwUCYkQJAQJibAEFAmJtCQECYmEDBQJhUgUCYmIFAmJjBAJhVAgFAmJMAl8xBAJhVwgFAmJMAl8yBAJiTQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQFnCQECYWsBBQJieAUBZgQCYk4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUBZwkBAmFtAQUCYngAAAQCYk8JAQt2YWx1ZU9yRWxzZQIJAJ0IAgUBZwkBAmFuAQUCYngFAWYEAmJQCQELdmFsdWVPckVsc2UCCQCaCAIFAWcJAQJhbwEFAmJ4AAAEAmJRCQEBcAEFAmJ4BAJiUgMJAGYCBQJiUQUGaGVpZ2h0AAADCQAAAgUCYVcFAWkFAXIFAXMEAmJTCQBrAwUCYVQFAmJSAGQEAmJUAwMDCQECIT0CBQJiTQUBZgkAZgIFAmJOAAAHCQBmAgUGaGVpZ2h0BQJiUQcJAGsDBQJhVAUCYk4AkE4AAAQCYlUDAwMJAQIhPQIFAmJPBQFmCQBmAgUCYlAAAAcJAGYCBQZoZWlnaHQFAmJRBwkAawMFAmFUBQJiUACQTgAABAJiVgkAZQIFAmFUBQJiUwMJAAACBQJiSgUCYksJAAIBAgxBcnQgc29sZCBvdXQEAmJXCQBkAgUCYkoAAQQCYlgJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglDcmVhdG9yOiAFAmJ4AgosCiBBcnRJRDogBQFQAgssCiBTaWduSUQ6IAUBRAIRLAogQXJ0d29yayBuYW1lOiAFAmJIAgosCiBJc3N1ZTogCQCkAwEFAmJXAgEvCQCkAwEFAmJLBAJiWQkAwggFCQCsAgICA1NBXwkApAMBCQBkAgUCYkcAAQUCYlgAAQAABwQCYloJALgIAQUCYlkEAmNhAwMJAAACBQJiVwUCYksGCQEBIQEFAmJJBwYEAmNiAwMDCQAAAgUBTgUCYngJAQIhPQIFAmJ6AgAHCQECIT0CBQJieQIABwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYnoIBQJhUgZjYWxsZXIEAmNjAwkBASEBCQEJaXNEZWZpbmVkAQUCYVcCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmFXBAJibgkBAWEBCQCsAgIFAmJtAgVfT1BFTgQCY2QJAQtEZWxldGVFbnRyeQEJAKwCAgUCYm0CBV9PUEVOBAJjZQkBC1N0cmluZ0VudHJ5AgkArAICBQJibQIHX0NMT1NFRAkArAICCQCsAgIFAmJuAgFfCQCkAwEFAmJDBAJjZgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglhcnRfc29sZF8JAKQDAQUCYlcCBF9vZl8JAKQDAQUCYksCAV8FAVACAV8FAmJ4BAJjZwMJAQEhAQUCYkQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUBTgIBXwkApAMBBQJiQwIBXwUCYkICAV8JAKQDAQUCYmMCAV8FAmJiAgFfCQDYBAEFAmJaCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKUIAQUCY2ICAV8JAKQDAQUCYkMCAV8FAmJCAgFfCQCkAwEFAmFUAgFfBQJjYwIBXwkA2AQBBQJiWgQCY2gJAQtTdHJpbmdFbnRyeQIFAmNmBQJjZwQCY2kDCQECIT0CBQJiVAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQFmCQBlAgUCYlMFAmJUBQJhVwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUCYk0FAmJUBQJhVwUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQFmBQJiUwUCYVcFA25pbAQCY2oDCQECIT0CBQJiVQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQJiTwUCYlUFAmFXCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQJieAkAZQIFAmJWBQJiVQUCYVcFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUCYngFAmJWBQJhVwUDbmlsBAJjawMFAmJ0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQFOAAAFBHVuaXQFA25pbAUDbmlsBAJjbAkAzggCCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQJieAUBUAUCYlcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICAgRuZnRfCQDYBAEFAmJaBQJjZgkAzAgCCQEMSW50ZWdlckVudHJ5AgIQdG90YWxfbmZ0X2lzc3VlZAkAZAIFAmJHAAEJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhaAIFAmJ4BQFQAAAJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQFZAgUCYngFAVAFAmNhCQDMCAIFAmJZCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmNiAAEFAmJaBQNuaWwFAmNpBQJjagUCY2sDBQJiRAkAzAgCBQJjaAkAzAgCBQJjZQkAzAgCBQJjZAUCY2wJAMwIAgUCY2gFAmNsAQJjbQECY24EAUcFAmNuAwkAAQIFAUcCBlN0cmluZwQCY28FAUcFAmNvCQACAQIkU3BvbnNvcmVkIFB1YmxpYyBLZXkgU3RyaW5nIGV4cGVjdGVkCgJjcAEHc2V0Q29uZgIBYgJjcQQBTgkApQgBCAUCY3AGY2FsbGVyAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUBbQkAzAgCCQClCAEFBHRoaXMFA25pbAUBTgMJAQhjb250YWlucwIFAWICBWNvbmZfCQDMCAIJAQtTdHJpbmdFbnRyeQIFAWIFAmNxBQNuaWwJAAIBAiBFbnRyaWVzIHN0YXJ0aW5nIHdpdGggY29uZl8gb25seQkAAgECIllvdSBhcmUgbm90IGFsbG93ZWQgdG8gY2hhbmdlIHRoaXMCYVIBCmFkZEFydHdvcmsOAUYBRAJhTAJhTQJhTgJjcgJhdwJhQQJheAJhQgJheQJjcwJhTwJicwQCY3QJAQJicgIFAmFSBQJicwQBUAgFAmN0Al8xBAFOCAUCY3QCXzIEAmJDCAUCY3QCXzMEAmJ0CAUCY3QCXzQDCQEBIQEJAQFLAQUBRgkAAgECJEhhc2ggc2hvdWxkIGJlIDY0IGNoYXJhY3RlcnMgbWF4aW11bQQCY3UJAQJhSAIFAmF5BQJhQgQCYUoIBQJjdQJfMQQCYUsIBQJjdQJfMgQCY3YJAQJhSQoFAU4FAmF3BQJheAUCYUoFAmFBBQJhSwUCYUwFAmFNBQJhTgUCYU8DCQECIT0CBQJjdgIACQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchBAJjdwkAZgIJAQFwAQkArAICBQFOAgtfZnJlZV9kcm9wcwAABAJjeAMFAmN3CQCUCgIAAAUBRAkBAmFVAQUCYVIEAmFUCAUCY3gCXzEEAmFXCAUCY3gCXzIDCQEBIQEJAQlpc0RlZmluZWQBBQJhVAkAAgECFFNvbWV0aGluZyB3ZW50IHdyb25nBAJjeQkBAWEBCQECYXUCBQFGBQFOAwkBAiE9AgUCY3kCAAkAAgECFFlvdSBhbHJlYWR5IGFkZGVkIGl0BAJjegkBAWEBCQECYXIBBQFGAwkBAiE9AgUCY3oCAAkAAgECF0hhc2ggYWxyZWFkeSByZWdpc3RlcmVkBAJjQQkBAUMDBQFEBQFOBQFGAwkBASEBBQJjQQkAAgECLFNpZ24gQ2VydGlmaWNhdGUgbm90IGZvdW5kIGZvciB0aGlzIGFkZHJlc3MuBAJjQgMFAmN3CQD8BwQFAWgCC3VzZUZyZWVEcm9wCQDMCAIFAU4FA25pbAUDbmlsBQR1bml0AwkAAAIFAmNCBQJjQgQCY2sDBQJidAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUBTgAABQR1bml0BQNuaWwFA25pbAkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhcgEFAUYFAU4JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmF1AgUBRgUBTgUBUAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAU8CBQFOBQFQBQJiQwkAzAgCCQELU3RyaW5nRW50cnkCCQEBUQIFAU4FAVAFAmFMCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFSAgUBTgUBUAUCYU0JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVMCBQFOBQFQBQJhdwkAzAgCCQELU3RyaW5nRW50cnkCCQEBVQIFAU4FAVAFAmF4CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFUAgUBTgUBUAUCYUEJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVoCBQFOBQFQBQJhSwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWECBQFOBQFQBQJhSgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWMCBQFOBQFQBQJjcgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWICBQFOBQFQBQJhTgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVYCBQFOBQFQAAAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVcCBQFOBQFQBQFECQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFAU4FAVAAAAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBAVkCBQFOBQFQBwkAzAgCCQELU3RyaW5nRW50cnkCCQECYXMCBQFOBQFEBQFQCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhcAIFAU4FAVAFAUYJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFlAgUBTgUBUAUCY3MJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhZgIFAU4FAVAFAmFPCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQFmBQJhVAUBaQUDbmlsBQJjawkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhUgENdXBkYXRlQXJ0d29yaw0CYXECYUwCYU0CYU4CY3ICYXcCYUECYXgCYUICYXkCY3MCYU8CYnMDCQEBIQEFAXYJAAIBBQF3BAJjQwkBAmJyAgUCYVIFAmJzBAJiQggFAmNDAl8xBAFOCAUCY0MCXzIEAmJDCAUCY0MCXzMEAmJ0CAUCY0MCXzQEAmNECQECYUgCBQJheQUCYUIEAmFKCAUCY0QCXzEEAmFLCAUCY0QCXzIEAmN2CQECYUkKBQFOBQJhdwUCYXgFAmFKBQJhQQUCYUsFAmFMBQJhTQUCYU4FAmFPAwkBAiE9AgUCY3YCAAkAAgECFVNvbWV0aGluZyB3ZW50IHdyb25nIQQCY3kJAQFhAQkBAVECBQFOBQJhcQMJAAACBQJjeQIACQACAQIPRW50cnkgbm90IGZvdW5kBAJjRQkBAWEBCQECYWoCBQFOBQJhcQMJAAACBQJjRQIHSUxMRUdBTAkAAgECHUNhbm5vdCB1cGRhdGUgSUxMRUdBTCBhcnR3b3JrAwkBASEBCQECYVgCBQFOBQJhcQQCY2sDBQJidAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUBTgAABQR1bml0BQNuaWwFA25pbAkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFRAgUBTgUCYXEFAmFMCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFSAgUBTgUCYXEFAmFNCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFTAgUBTgUCYXEFAmF3CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFVAgUBTgUCYXEFAmF4CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFUAgUBTgUCYXEFAmFBCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQIFAU4FAmFxBQJhSgkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgIFAU4FAmFxBQJhSwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWICBQFOBQJhcQUCYU4JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFjAgUBTgUCYXEFAmNyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZQIFAU4FAmFxBQJjcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFmAgUBTgUCYXEFAmFPBQNuaWwFAmNrCQACAQIOQWxyZWFkeSBtaW50ZWQCYVIBC2ZsYWdBcnR3b3JrBAFQAmNGAmNFAmNHBAJjSAkBAmJ2AQUCYVIEAmJCCAUCY0gCXzEEAU4IBQJjSAJfMgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFAW0JAMwIAgkApQgBBQR0aGlzBQNuaWwFAU4DCQEPY29udGFpbnNFbGVtZW50AgkAzAgCAgdDT05TRU5UCQDMCAICAAkAzAgCAg9DSEFOR0VfUkVRVUlSRUQJAMwIAgIHRkxBR0dFRAkAzAgCAgdJTExFR0FMBQNuaWwFAmNFCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhagIFAmNGBQFQBQJjRQkAzAgCCQELU3RyaW5nRW50cnkCCQECYWQCBQJjRgUBUAUCY0cFA25pbAkAAgEJAKwCAgIOVW5rbm93IHN0YXR1cyAFAmNFCQACAQITWW91IGFyZSBub3QgYWxsb3dlZAJhUgENZGVsZXRlQXJ0d29yawIBUAJjRgQCY0kJAQJidgEFAmFSBAJiQggFAmNJAl8xBAFOCAUCY0kCXzIEAmFZAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUBbQkAzAgCCQClCAEFBHRoaXMFA25pbAUBTgUCY0YFAU4EAmN5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAQFhAQkBAVECBQJhWQUBUAIgTm8gYXJ0IG1hdGNoaW5nIGZvciB0aGlzIGFkZHJlc3MDCQAAAgUCY3kCAAkAAgECIE5vIGFydCBtYXRjaGluZyBmb3IgdGhpcyBhZGRyZXNzBAFGCQEBYQEJAQJhcAIFAmFZBQFQAwkAAAIFAUYCAAkAAgECJU5vIGFydCBoYXNoIG1hdGNoaW5nIGZvciB0aGlzIGFkZHJlc3MEAUQJAQFhAQkBAVcCBQJhWQUBUAMJAAACBQFEAgAJAAIBAhNObyBTSUdOIElEIG1hdGNoaW5nBAJjSgkAzAgCCQELRGVsZXRlRW50cnkBCQEBTwIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFRAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVICBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBUwIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFVAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVQCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBWgIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhYQIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhYwIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhYgIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFWAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVcCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBWAIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFZAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFqAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFnAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFpAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFyAQUBRgkAzAgCCQELRGVsZXRlRW50cnkBCQECYXMCBQJhWQUBRAkAzAgCCQELRGVsZXRlRW50cnkBCQECYXUCBQFGBQJhWQkAzAgCCQELRGVsZXRlRW50cnkBCQECYWgCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWQCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWUCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWYCBQJhWQUBUAUDbmlsAwkBASEBCQECYVgCBQJhWQUBUAMJAQEhAQUBdgkAAgEFAXcFAmNKAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUBbQkAzAgCCQClCAEFBHRoaXMFA25pbAUBTgUCY0oJAAIBAihBcnQgYWxyZWFkeSBtaW50ZWQsIHlvdSBjYW5ub3QgZGVsZXRlIGl0AmFSAQtzZWxsQXJ0d29yawYBUAJiZwJjSwJhVwJiRQJicwQCY0wJAQJicgIFAmFSBQJicwQCYkIIBQJjTAJfMQQBTggFAmNMAl8yBAJiQwgFAmNMAl8zBAJidAgFAmNMAl80BAJiSAkBAWEBCQEBUQIFAU4FAVADCQAAAgUCYkgCAAkAAgECI1RoaXMgYXJ0IGRvZXNuJ3QgbWF0Y2ggeW91ciBhY2NvdW50BAJjRQkBAWEBCQECYWoCBQFOBQFQAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgIPQ0hBTkdFX1JFUVVJUkVECQDMCAICB0ZMQUdHRUQJAMwIAgIHSUxMRUdBTAUDbmlsBQJjRQkAAgECD0ZsYWdnZWQgYXJ0d29yawQCY00JAQFvAQkArAICAhJjdXJyZW50X2JpZGFtb3VudF8FAVADCQBmAgAABQJiRQkAAgECDE5lZ2F0aXZlIGVuZAMDCQBmAgUCYkUAAAMJAQIhPQIFAmNLAAEGCQECIT0CBQJiZwAABwkAAgECOlRpbWVkIG9mZmVyIG9ubHkgYWxsb3dlZCBmb3IgdW5pcXVlIGVkaXRpb24gYW5kIG9mZmVyIG9ubHkEAmNOAwkAAAIFAmJFAAAAAAUGaGVpZ2h0AwkBASEBCQECYmUBBQJhVwkAAgECFVNvbWV0aGluZyB3ZW50IHdyb25nIQMJAQEhAQkBAmJmAgUCYVcFAmJnCQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchBAJhUAkBAmFGAQUBTgMJAQIhPQIFAmFQAgAJAAIBBQJhUAQCYkoJAQFvAQkBAVgCBQFOBQFQBAJiSwkBAW8BCQEBVgIFAU4FAVADCQBmAgUCY0sAZAkAAgECHDEwMCBlZGl0aW9ucyBtYXggcGVyIGFydHdvcmsDAwkBAiE9AgUCYkoAAAkAAAIFAmJKBQJiSwcJAAIBAhRNYXggZWRpdGlvbiByZWFjaGVkLgMDCQBmAgUCYkoAAAkBAiE9AgUCYksFAmNLBwkAAgECJkNhbm5vdCBjaGFuZ2UgbWF4aW11bSBpc3N1YWJsZSBhbnltb3JlAwMJAGYCBQJjTQAACQECIT0CBQJiSwUCY0sHCQACAQIxQ2Fubm90IGNoYW5nZSBtYXhpbXVtIGlzc3VhYmxlIHdpdGggYWN0aXZlIG9yZGVycwQCY2EDAwkAZgIFAmJnAAAJAGYCBQJjSwAABwYHBAJjawMFAmJ0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQFOAAAFBHVuaXQFA25pbAUDbmlsCQDOCAIJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQFZAgUBTgUBUAUCY2EJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhZwIFAU4FAVAFAmJnCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFAU4FAVAFAmNLCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhaQIFAU4FAVAFAmFXCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWgCBQFOBQFQCQBkAgUCY04FAmJFBQNuaWwFAmNrAmFSAQpidXlBcnR3b3JrAgFQAmJ4CQECYncGBQJhUgUBUAUCYngCAAIAAgACYVIBBnNldEJpZAIBUAJieAQCY08JAQJidgEFAmFSBAJiQggFAmNPAl8xBAFOCAUCY08CXzIEAmJDCAUCY08CXzMEAmNQCQECYVEBBQJhUgQCYVMIBQJjUAJfMQQCYVQIBQJjUAJfMgQCYVcDCQEBIQEJAQlpc0RlZmluZWQBCAUCYVMHYXNzZXRJZAIFV0FWRVMJANgEAQkBBXZhbHVlAQgFAmFTB2Fzc2V0SWQEAmJFCQEBbwEJAQJhaAIFAmJ4BQFQAwMJAQIhPQIFAmJFAAAJAGcCBQZoZWlnaHQFAmJFBwkAAgECC1NhbGUgZW5kZWQuBAJjTQkBAW8BCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUBUAMJAQEhAQkBAmJlAQUCYVcJAAIBAhJhc3NldCBub3QgYWNjZXB0ZWQDCQEBIQEJAQJiZgIFAmFXBQJhVAkAAgECDldyb25nIG1pbiBzZWxsBAJiSgkBAW8BCQEBWAIFAmJ4BQFQBAJiSwkBAW8BCQEBVgIFAmJ4BQFQAwkAZwIAAAUCYksJAAIBAiNObyBtYXggZWRpdGlvbiBzZXQgZm9yIHRoaXMgYXJ0d29yawMJAGcCBQJiSgUCYksJAAIBAhhTb2xkIG91dCwgeW91IGNhbm5vdCBiaWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICBGJpZF8FAVACAV8FAmJ4AgFfBQFOAgFfBQJiQgIFX09QRU4JAKwCAgkArAICCQCsAgIJAKwCAgUCYVcCAV8JAKQDAQUCYVQCAV8JAKQDAQUCYkMJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQFQCQBkAgUCY00AAQUDbmlsAmFSAQlhY2NlcHRCaWQFAVACYngCYnkCYnoCYnMEAmNRCQECYnICBQJhUgUCYnMEAmJCCAUCY1ECXzEEAmNSCAUCY1ECXzIEAmJDCAUCY1ECXzMEAmJ0CAUCY1ECXzQDCQECIT0CBQJjUgUCYngJAAIBAhlZb3UgY2Fubm90IGRvIHRoaXMgYWN0aW9uCQECYncGBQJhUgUBUAUCYngFAmJ5BQJiegUCYnMCYVIBCWNhbmNlbEJpZAQBUAJieAJieQJiegQCY1MJAQJidgEFAmFSBAJiQggFAmNTAl8xBAFOCAUCY1MCXzIEAmJDCAUCY1MCXzMDAwkBAiE9AgUBTgUCYnoJAQIhPQIFAU4FAmJ4BwkAAgECGVlvdSBjYW5ub3QgZG8gdGhpcyBhY3Rpb24EAmNUAwkAAAIFAU4FAmJ4BQJiegUBTgQCY00JAQFvAQkArAICAhJjdXJyZW50X2JpZGFtb3VudF8FAVAEAmJtCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICBGJpZF8FAVACAV8FAmJ4AgFfBQJiegIBXwUCYnkEAmJuCQEBYQEJAKwCAgUCYm0CBV9PUEVOAwkAAAIFAmJuAgAJAAIBAg1CaWQgbm90IGZvdW5kBAJibwkAtQkCBQJibgIBXwQCYVcJAQJiawEJAJEDAgUCYm8AAAQCY1UCCENBTkNFTEVECQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgUCYm0CBV9PUEVOCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQJibQIBXwUCY1UJAKwCAgkArAICBQJibgIBXwkApAMBBQJiQwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhJjdXJyZW50X2JpZGFtb3VudF8FAVAJAGUCBQJjTQABCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQJjVAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJvAAEFAmFXBQNuaWwBAmNWAQJjVwAEAUcFAmNWAwkAAQIFAUcCF0ludm9rZVNjcmlwdFRyYW5zYWN0aW9uBAJjWAUBRwMDAwMJAAACCAUCY1gIZnVuY3Rpb24CCmFkZEFydHdvcmsJAAACCAUCY1gEZEFwcAUEdGhpcwcJAAACCAUCY1gDZmVlAKDCHgcJAAACCAUCY1gKZmVlQXNzZXRJZAUEdW5pdAcJAPQDAwgFAmNWCWJvZHlCeXRlcwkAkQMCCAUCY1YGcHJvb2ZzAAAJANkEAQkBAmNtAQkAkQMCCAUCY1gEYXJncwANAwMDAwkAAAIIBQJjWAhmdW5jdGlvbgINdXBkYXRlQXJ0d29yawkAAAIIBQJjWARkQXBwBQR0aGlzBwkAAAIIBQJjWANmZWUAoMIeBwkAAAIIBQJjWApmZWVBc3NldElkBQR1bml0BwkA9AMDCAUCY1YJYm9keUJ5dGVzCQCRAwIIBQJjVgZwcm9vZnMAAAkA2QQBCQECY20BCQCRAwIIBQJjWARhcmdzAAwDAwMDCQAAAggFAmNYCGZ1bmN0aW9uAgtzZWxsQXJ0d29yawkAAAIIBQJjWARkQXBwBQR0aGlzBwkAAAIIBQJjWANmZWUAoMIeBwkAAAIIBQJjWApmZWVBc3NldElkBQR1bml0BwkA9AMDCAUCY1YJYm9keUJ5dGVzCQCRAwIIBQJjVgZwcm9vZnMAAAkA2QQBCQECY20BCQCRAwIIBQJjWARhcmdzAAUDAwMDCQAAAggFAmNYCGZ1bmN0aW9uAglhY2NlcHRCaWQJAAACCAUCY1gEZEFwcAUEdGhpcwcJAAACCAUCY1gDZmVlAKDCHgcJAAACCAUCY1gKZmVlQXNzZXRJZAUEdW5pdAcJAMgTAwgFAmNWCWJvZHlCeXRlcwkAkQMCCAUCY1YGcHJvb2ZzAAAJANkEAQkBAmNtAQkAkQMCCAUCY1gEYXJncwAECQD0AwMIBQJjVglib2R5Qnl0ZXMJAJEDAggFAmNWBnByb29mcwAACAUCY1YPc2VuZGVyUHVibGljS2V5CQD0AwMIBQJjVglib2R5Qnl0ZXMJAJEDAggFAmNWBnByb29mcwAACAUCY1YPc2VuZGVyUHVibGljS2V5X+Qsgg==", "height": 2503560, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BS3jKPAb3ZVHZRnbRMmz3fWvscMPGRvyyeXecwe5qvgz Next: 6fJZPiE6ibuoRk673mECYYtHr6GTy2HTj7xGEytRcycL Diff:
OldNewDifferences
400400 then invoke(h, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bs)))], nil)
401401 else unit
402402 if ((bu == bu))
403- then $Tuple4(toBase58String(aR.transactionId), N, lastBlock.timestamp, (bt > 0))
403+ then $Tuple4(toBase58String(aR.transactionId), if (if ((toBase58String(aR.caller.bytes) == toString(this)))
404+ then (bt > 0)
405+ else false)
406+ then toString(addressFromPublicKey(fromBase58String(bs)))
407+ else toBase58String(aR.caller.bytes), lastBlock.timestamp, (bt > 0))
404408 else throw("Strict value is not equal to itself.")
405409 }
406410 }
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 if (true)
390390 then throw(((toString((toBase58String(aR.caller.bytes) == toString(this))) + " / ") + toString((bt > 0))))
391391 else {
392392 let N = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
393393 then (bt > 0)
394394 else false)
395395 then toString(addressFromPublicKey(fromBase58String(bs)))
396396 else toBase58String(aR.caller.bytes)
397397 let bu = if (if ((bs != ""))
398398 then (bt > 0)
399399 else false)
400400 then invoke(h, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bs)))], nil)
401401 else unit
402402 if ((bu == bu))
403- then $Tuple4(toBase58String(aR.transactionId), N, lastBlock.timestamp, (bt > 0))
403+ then $Tuple4(toBase58String(aR.transactionId), if (if ((toBase58String(aR.caller.bytes) == toString(this)))
404+ then (bt > 0)
405+ else false)
406+ then toString(addressFromPublicKey(fromBase58String(bs)))
407+ else toBase58String(aR.caller.bytes), lastBlock.timestamp, (bt > 0))
404408 else throw("Strict value is not equal to itself.")
405409 }
406410 }
407411
408412
409413 func bv (aR) = if (!(v))
410414 then throw(w)
411415 else $Tuple3(toBase58String(aR.transactionId), toBase58String(aR.caller.bytes), lastBlock.timestamp)
412416
413417
414418 func bw (aR,P,bx,by,bz,bs) = {
415419 let bA = br(aR, bs)
416420 let bB = bA._1
417421 let N = bA._2
418422 let bC = bA._3
419423 let bt = bA._4
420424 if (true)
421425 then throw(((((((N + " / ") + bx) + " / ") + bz) + " / ") + bs))
422426 else {
423427 let bD = if (if (if ((N == bx))
424428 then (bz != "")
425429 else false)
426430 then (by != "")
427431 else false)
428432 then true
429433 else false
430434 let bE = o(ah(N, P))
431435 if (if (if ((bE != 0))
432436 then (height >= bE)
433437 else false)
434438 then !(bD)
435439 else false)
436440 then throw("Sale ended.")
437441 else {
438442 let bF = (N == bx)
439443 let bG = o("total_nft_issued")
440444 let D = a(W(bx, P))
441445 let bH = a(Q(bx, P))
442446 if ((bH == ""))
443447 then throw("Art doesn't exist")
444448 else {
445449 let bI = q(Y(bx, P))
446450 let bJ = o(X(bx, P))
447451 let bc = if (bF)
448452 then (B * 2)
449453 else o(ag(bx, P))
450454 let bb = if (bF)
451455 then toBase58String(i)
452456 else a(ai(bx, P))
453457 let bK = o(V(bx, P))
454458 if (if (if (!(bD))
455459 then !(bF)
456460 else false)
457461 then if (if ((0 >= bc))
458462 then true
459463 else !(bI))
460464 then true
461465 else (0 >= bK)
462466 else false)
463467 then throw("Art not for sale")
464468 else if (if (if (!(bD))
465469 then bF
466470 else false)
467471 then (0 >= bK)
468472 else false)
469473 then throw("Max issuable not set")
470474 else {
471475 let aP = aF(bx)
472476 if (if (bD)
473477 then (aP != "")
474478 else false)
475479 then throw(aP)
476480 else {
477481 let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
478482 let bL = if (bD)
479483 then bl(bm)
480484 else ba(aR, bb, bc)
481485 let aT = bL._1
482486 let aW = bL._2
483487 let bM = valueOrElse(getString(g, ak(bx)), f)
484488 let bN = valueOrElse(getInteger(g, am(bx)), 0)
485489 let bO = valueOrElse(getString(g, an(bx)), f)
486490 let bP = valueOrElse(getInteger(g, ao(bx)), 0)
487491 let bQ = p(bx)
488492 let bR = if ((bQ > height))
489493 then 0
490494 else if ((aW == i))
491495 then r
492496 else s
493497 let bS = fraction(aT, bR, 100)
494498 let bT = if (if (if ((bM != f))
495499 then (bN > 0)
496500 else false)
497501 then (height > bQ)
498502 else false)
499503 then fraction(aT, bN, 10000)
500504 else 0
501505 let bU = if (if (if ((bO != f))
502506 then (bP > 0)
503507 else false)
504508 then (height > bQ)
505509 else false)
506510 then fraction(aT, bP, 10000)
507511 else 0
508512 let bV = (aT - bS)
509513 if ((bJ == bK))
510514 then throw("Art sold out")
511515 else {
512516 let bW = (bJ + 1)
513517 let bX = ((((((((((("Creator: " + bx) + ",
514518 ArtID: ") + P) + ",
515519 SignID: ") + D) + ",
516520 Artwork name: ") + bH) + ",
517521 Issue: ") + toString(bW)) + "/") + toString(bK))
518522 let bY = Issue(("SA_" + toString((bG + 1))), bX, 1, 0, false)
519523 let bZ = calculateAssetId(bY)
520524 let ca = if (if ((bW == bK))
521525 then true
522526 else !(bI))
523527 then false
524528 else true
525529 let cb = if (if (if ((N == bx))
526530 then (bz != "")
527531 else false)
528532 then (by != "")
529533 else false)
530534 then addressFromStringValue(bz)
531535 else aR.caller
532536 let cc = if (!(isDefined(aW)))
533537 then "WAVES"
534538 else toBase58String(value(aW))
535539 let bn = a((bm + "_OPEN"))
536540 let cd = DeleteEntry((bm + "_OPEN"))
537541 let ce = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bC)))
538542 let cf = ((((((("art_sold_" + toString(bW)) + "_of_") + toString(bK)) + "_") + P) + "_") + bx)
539543 let cg = if (!(bD))
540544 then ((((((((((N + "_") + toString(bC)) + "_") + bB) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(bZ))
541545 else ((((((((((toString(cb) + "_") + toString(bC)) + "_") + bB) + "_") + toString(aT)) + "_") + cc) + "_") + toBase58String(bZ))
542546 let ch = StringEntry(cf, cg)
543547 let ci = if ((bT != 0))
544548 then [ScriptTransfer(Address(fromBase58String(f)), (bS - bT), aW), ScriptTransfer(Address(fromBase58String(bM)), bT, aW)]
545549 else [ScriptTransfer(Address(fromBase58String(f)), bS, aW)]
546550 let cj = if ((bU != 0))
547551 then [ScriptTransfer(Address(fromBase58String(bO)), bU, aW), ScriptTransfer(Address(fromBase58String(bx)), (bV - bU), aW)]
548552 else [ScriptTransfer(Address(fromBase58String(bx)), bV, aW)]
549553 let ck = if (bt)
550554 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
551555 else nil
552556 let cl = ((([IntegerEntry(X(bx, P), bW), StringEntry(("nft_" + toBase58String(bZ)), cf), IntegerEntry("total_nft_issued", (bG + 1)), IntegerEntry(ah(bx, P), 0), BooleanEntry(Y(bx, P), ca), bY, ScriptTransfer(cb, 1, bZ)] ++ ci) ++ cj) ++ ck)
553557 if (bD)
554558 then [ch, ce, cd] :: cl
555559 else ch :: cl
556560 }
557561 }
558562 }
559563 }
560564 }
561565 }
562566 }
563567
564568
565569 func cm (cn) = {
566570 let G = cn
567571 if ($isInstanceOf(G, "String"))
568572 then {
569573 let co = G
570574 co
571575 }
572576 else throw("Sponsored Public Key String expected")
573577 }
574578
575579
576580 @Callable(cp)
577581 func setConf (b,cq) = {
578582 let N = toString(cp.caller)
579583 if (containsElement([m, toString(this)], N))
580584 then if (contains(b, "conf_"))
581585 then [StringEntry(b, cq)]
582586 else throw("Entries starting with conf_ only")
583587 else throw("You are not allowed to change this")
584588 }
585589
586590
587591
588592 @Callable(aR)
589593 func addArtwork (F,D,aL,aM,aN,cr,aw,aA,ax,aB,ay,cs,aO,bs) = {
590594 let ct = br(aR, bs)
591595 let P = ct._1
592596 let N = ct._2
593597 let bC = ct._3
594598 let bt = ct._4
595599 if (!(K(F)))
596600 then throw("Hash should be 64 characters maximum")
597601 else {
598602 let cu = aH(ay, aB)
599603 let aJ = cu._1
600604 let aK = cu._2
601605 let cv = aI(N, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
602606 if ((cv != ""))
603607 then throw("Something went wrong!")
604608 else {
605609 let cw = (p((N + "_free_drops")) > 0)
606610 let cx = if (cw)
607611 then $Tuple2(0, D)
608612 else aU(aR)
609613 let aT = cx._1
610614 let aW = cx._2
611615 if (!(isDefined(aT)))
612616 then throw("Something went wrong")
613617 else {
614618 let cy = a(au(F, N))
615619 if ((cy != ""))
616620 then throw("You already added it")
617621 else {
618622 let cz = a(ar(F))
619623 if ((cz != ""))
620624 then throw("Hash already registered")
621625 else {
622626 let cA = C(D, N, F)
623627 if (!(cA))
624628 then throw("Sign Certificate not found for this address.")
625629 else {
626630 let cB = if (cw)
627631 then invoke(h, "useFreeDrop", [N], nil)
628632 else unit
629633 if ((cB == cB))
630634 then {
631635 let ck = if (bt)
632636 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
633637 else nil
634638 ([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), cr), 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), cs), IntegerEntry(af(N, P), aO), ScriptTransfer(Address(fromBase58String(f)), aT, i)] ++ ck)
635639 }
636640 else throw("Strict value is not equal to itself.")
637641 }
638642 }
639643 }
640644 }
641645 }
642646 }
643647 }
644648
645649
646650
647651 @Callable(aR)
648652 func updateArtwork (aq,aL,aM,aN,cr,aw,aA,ax,aB,ay,cs,aO,bs) = if (!(v))
649653 then throw(w)
650654 else {
651655 let cC = br(aR, bs)
652656 let bB = cC._1
653657 let N = cC._2
654658 let bC = cC._3
655659 let bt = cC._4
656660 let cD = aH(ay, aB)
657661 let aJ = cD._1
658662 let aK = cD._2
659663 let cv = aI(N, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
660664 if ((cv != ""))
661665 then throw("Something went wrong!")
662666 else {
663667 let cy = a(Q(N, aq))
664668 if ((cy == ""))
665669 then throw("Entry not found")
666670 else {
667671 let cE = a(aj(N, aq))
668672 if ((cE == "ILLEGAL"))
669673 then throw("Cannot update ILLEGAL artwork")
670674 else if (!(aX(N, aq)))
671675 then {
672676 let ck = if (bt)
673677 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
674678 else nil
675679 ([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), cr), StringEntry(ae(N, aq), cs), IntegerEntry(af(N, aq), aO)] ++ ck)
676680 }
677681 else throw("Already minted")
678682 }
679683 }
680684 }
681685
682686
683687
684688 @Callable(aR)
685689 func flagArtwork (P,cF,cE,cG) = {
686690 let cH = bv(aR)
687691 let bB = cH._1
688692 let N = cH._2
689693 if (containsElement([m, toString(this)], N))
690694 then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cE))
691695 then [StringEntry(aj(cF, P), cE), StringEntry(ad(cF, P), cG)]
692696 else throw(("Unknow status " + cE))
693697 else throw("You are not allowed")
694698 }
695699
696700
697701
698702 @Callable(aR)
699703 func deleteArtwork (P,cF) = {
700704 let cI = bv(aR)
701705 let bB = cI._1
702706 let N = cI._2
703707 let aY = if (containsElement([m, toString(this)], N))
704708 then cF
705709 else N
706710 let cy = valueOrErrorMessage(a(Q(aY, P)), "No art matching for this address")
707711 if ((cy == ""))
708712 then throw("No art matching for this address")
709713 else {
710714 let F = a(ap(aY, P))
711715 if ((F == ""))
712716 then throw("No art hash matching for this address")
713717 else {
714718 let D = a(W(aY, P))
715719 if ((D == ""))
716720 then throw("No SIGN ID matching")
717721 else {
718722 let cJ = [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))]
719723 if (!(aX(aY, P)))
720724 then if (!(v))
721725 then throw(w)
722726 else cJ
723727 else if (containsElement([m, toString(this)], N))
724728 then cJ
725729 else throw("Art already minted, you cannot delete it")
726730 }
727731 }
728732 }
729733 }
730734
731735
732736
733737 @Callable(aR)
734738 func sellArtwork (P,bg,cK,aW,bE,bs) = {
735739 let cL = br(aR, bs)
736740 let bB = cL._1
737741 let N = cL._2
738742 let bC = cL._3
739743 let bt = cL._4
740744 let bH = a(Q(N, P))
741745 if ((bH == ""))
742746 then throw("This art doesn't match your account")
743747 else {
744748 let cE = a(aj(N, P))
745749 if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cE))
746750 then throw("Flagged artwork")
747751 else {
748752 let cM = o(("current_bidamount_" + P))
749753 if ((0 > bE))
750754 then throw("Negative end")
751755 else if (if ((bE > 0))
752756 then if ((cK != 1))
753757 then true
754758 else (bg != 0)
755759 else false)
756760 then throw("Timed offer only allowed for unique edition and offer only")
757761 else {
758762 let cN = if ((bE == 0))
759763 then 0
760764 else height
761765 if (!(be(aW)))
762766 then throw("Something went wrong!")
763767 else if (!(bf(aW, bg)))
764768 then throw("Something went wrong!")
765769 else {
766770 let aP = aF(N)
767771 if ((aP != ""))
768772 then throw(aP)
769773 else {
770774 let bJ = o(X(N, P))
771775 let bK = o(V(N, P))
772776 if ((cK > 100))
773777 then throw("100 editions max per artwork")
774778 else if (if ((bJ != 0))
775779 then (bJ == bK)
776780 else false)
777781 then throw("Max edition reached.")
778782 else if (if ((bJ > 0))
779783 then (bK != cK)
780784 else false)
781785 then throw("Cannot change maximum issuable anymore")
782786 else if (if ((cM > 0))
783787 then (bK != cK)
784788 else false)
785789 then throw("Cannot change maximum issuable with active orders")
786790 else {
787791 let ca = if (if ((bg > 0))
788792 then (cK > 0)
789793 else false)
790794 then true
791795 else false
792796 let ck = if (bt)
793797 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
794798 else nil
795799 ([BooleanEntry(Y(N, P), ca), IntegerEntry(ag(N, P), bg), IntegerEntry(V(N, P), cK), StringEntry(ai(N, P), aW), IntegerEntry(ah(N, P), (cN + bE))] ++ ck)
796800 }
797801 }
798802 }
799803 }
800804 }
801805 }
802806 }
803807
804808
805809
806810 @Callable(aR)
807811 func buyArtwork (P,bx) = bw(aR, P, bx, "", "", "")
808812
809813
810814
811815 @Callable(aR)
812816 func setBid (P,bx) = {
813817 let cO = bv(aR)
814818 let bB = cO._1
815819 let N = cO._2
816820 let bC = cO._3
817821 let cP = aQ(aR)
818822 let aS = cP._1
819823 let aT = cP._2
820824 let aW = if (!(isDefined(aS.assetId)))
821825 then "WAVES"
822826 else toBase58String(value(aS.assetId))
823827 let bE = o(ah(bx, P))
824828 if (if ((bE != 0))
825829 then (height >= bE)
826830 else false)
827831 then throw("Sale ended.")
828832 else {
829833 let cM = o(("current_bidamount_" + P))
830834 if (!(be(aW)))
831835 then throw("asset not accepted")
832836 else if (!(bf(aW, aT)))
833837 then throw("Wrong min sell")
834838 else {
835839 let bJ = o(X(bx, P))
836840 let bK = o(V(bx, P))
837841 if ((0 >= bK))
838842 then throw("No max edition set for this artwork")
839843 else if ((bJ >= bK))
840844 then throw("Sold out, you cannot bid")
841845 else [StringEntry((((((((("bid_" + P) + "_") + bx) + "_") + N) + "_") + bB) + "_OPEN"), ((((aW + "_") + toString(aT)) + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cM + 1))]
842846 }
843847 }
844848 }
845849
846850
847851
848852 @Callable(aR)
849853 func acceptBid (P,bx,by,bz,bs) = {
850854 let cQ = br(aR, bs)
851855 let bB = cQ._1
852856 let cR = cQ._2
853857 let bC = cQ._3
854858 let bt = cQ._4
855859 if ((cR != bx))
856860 then throw("You cannot do this action")
857861 else bw(aR, P, bx, by, bz, bs)
858862 }
859863
860864
861865
862866 @Callable(aR)
863867 func cancelBid (P,bx,by,bz) = {
864868 let cS = bv(aR)
865869 let bB = cS._1
866870 let N = cS._2
867871 let bC = cS._3
868872 if (if ((N != bz))
869873 then (N != bx)
870874 else false)
871875 then throw("You cannot do this action")
872876 else {
873877 let cT = if ((N == bx))
874878 then bz
875879 else N
876880 let cM = o(("current_bidamount_" + P))
877881 let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
878882 let bn = a((bm + "_OPEN"))
879883 if ((bn == ""))
880884 then throw("Bid not found")
881885 else {
882886 let bo = split(bn, "_")
883887 let aW = bk(bo[0])
884888 let cU = "CANCELED"
885889 [DeleteEntry((bm + "_OPEN")), StringEntry(((bm + "_") + cU), ((bn + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cM - 1)), ScriptTransfer(Address(fromBase58String(cT)), parseIntValue(bo[1]), aW)]
886890 }
887891 }
888892 }
889893
890894
891895 @Verifier(cV)
892896 func cW () = {
893897 let G = cV
894898 if ($isInstanceOf(G, "InvokeScriptTransaction"))
895899 then {
896900 let cX = G
897901 if (if (if (if ((cX.function == "addArtwork"))
898902 then (cX.dApp == this)
899903 else false)
900904 then (cX.fee == 500000)
901905 else false)
902906 then (cX.feeAssetId == unit)
903907 else false)
904908 then sigVerify(cV.bodyBytes, cV.proofs[0], fromBase58String(cm(cX.args[13])))
905909 else if (if (if (if ((cX.function == "updateArtwork"))
906910 then (cX.dApp == this)
907911 else false)
908912 then (cX.fee == 500000)
909913 else false)
910914 then (cX.feeAssetId == unit)
911915 else false)
912916 then sigVerify(cV.bodyBytes, cV.proofs[0], fromBase58String(cm(cX.args[12])))
913917 else if (if (if (if ((cX.function == "sellArtwork"))
914918 then (cX.dApp == this)
915919 else false)
916920 then (cX.fee == 500000)
917921 else false)
918922 then (cX.feeAssetId == unit)
919923 else false)
920924 then sigVerify(cV.bodyBytes, cV.proofs[0], fromBase58String(cm(cX.args[5])))
921925 else if (if (if (if ((cX.function == "acceptBid"))
922926 then (cX.dApp == this)
923927 else false)
924928 then (cX.fee == 500000)
925929 else false)
926930 then (cX.feeAssetId == unit)
927931 else false)
928932 then sigVerify_128Kb(cV.bodyBytes, cV.proofs[0], fromBase58String(cm(cX.args[4])))
929933 else sigVerify(cV.bodyBytes, cV.proofs[0], cV.senderPublicKey)
930934 }
931935 else sigVerify(cV.bodyBytes, cV.proofs[0], cV.senderPublicKey)
932936 }
933937

github/deemru/w8io/169f3d6 
92.93 ms