tx · 5XeZwk7EdGCUhBmXJMqW8Z2mEZj41XWFp7qTpFRHTSjQ

3Mzbx34Ex5rRbn39vUHx9kiwh3nneF8S5we:  -0.02000000 Waves

2022.02.10 19:25 [1917755] smart account 3Mzbx34Ex5rRbn39vUHx9kiwh3nneF8S5we > SELF 0.00000000 Waves

{ "type": 13, "id": "5XeZwk7EdGCUhBmXJMqW8Z2mEZj41XWFp7qTpFRHTSjQ", "fee": 2000000, "feeAssetId": null, "timestamp": 1644510348577, "version": 1, "sender": "3Mzbx34Ex5rRbn39vUHx9kiwh3nneF8S5we", "senderPublicKey": "BxuvXsg8sFXf7MNECYrdsEgrMMMkWVKKhbcFdoormLWF", "proofs": [ "3ehUUCwUjMxPJRhT65JTQixYrQP5frer6dWUCfCPpuKuRnrSphZv8fEworemDHmsGVBfz3HPp6E2zNP8oKmB9wc", "5QCWkuwPHiv8BSoNKk7ZuQPPzjnBUMQd9FcPsyvVKUgWoWauhXSr6eTJCy3JHPzRe5vXitrSwyivEHiTzd3J6MfB", "5JXpXaZLcu113RajrvQXPbz8xAsxqCcvjVnFZbZgGCQCPEETBZ8B5sitG879UFpciV76q7DawtVtdDDWzu4DsmLY" ], "script": "base64:AAIFAAAAAAAAAFsIAhIDCgEBEhAKDggICAgICAgIAQEBAQEBEggKBggICAEBARIGCgQIAQgIEgYKBAgBCAISAwoBCBIECgIICBIFCgMIAQgSBgoECAEIAhIAEgASAwoBARIDCgEIAAAAfgEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkAAAAAAAAAAAABAAAADmdldFN0cmluZ0J5S2V5AAAAAQAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AgAAAAABAAAADGdldEJvb2xCeUtleQAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAABHRoaXMFAAAAA2tleQcBAAAAGGdldE51bWJlckJ5QWRkcmVzc0FuZEtleQAAAAIAAAAHYWRkcmVzcwAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAAHYWRkcmVzcwUAAAADa2V5AAAAAAAAAAAAAQAAABhnZXRTdHJpbmdCeUFkZHJlc3NBbmRLZXkAAAACAAAAB2FkZHJlc3MAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAB2FkZHJlc3MFAAAAA2tleQIAAAAAAQAAABZnZXRCb29sQnlBZGRyZXNzQW5kS2V5AAAAAgAAAAdhZGRyZXNzAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBsAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAAdhZGRyZXNzBQAAAANrZXkHAAAAABBwdWJLZXlBZG1pbnNMaXN0CQAETAAAAAICAAAALEdYeG1aYUNpZ1BnSnNUNmQxY0xyOG5VWEE2NW5HWDhWN0Z1QXp6clk4d1FFCQAETAAAAAICAAAALDN4dW14NGhyUHBlZW9vNzlITEdiWkNnZno5NUwzOVpGZHh4d1dlU1VDMlB1CQAETAAAAAICAAAALEQ0Q3F0SzVmQnNuelJvMzNaTWhyTTduaUxzZURIMnVSb0s2d2VCcTJKUTNBCQAETAAAAAICAAAALDVXUlhGU2p3Y1RiTmZLY0pzOFpxWG1TU1dZc1NWSlV0TXZNcVpqNWhINE5jBQAAAANuaWwBAAAABWFzSW50AAAAAQAAAAN2YWwEAAAAByRtYXRjaDAFAAAAA3ZhbAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAZ2YWxJbnQFAAAAByRtYXRjaDAFAAAABnZhbEludAkAAAIAAAABAgAAABdGYWlsZWQgdG8gY2FzdCBpbnRvIEludAAAAAADU0VQAgAAAAJfXwAAAAAHV0FWRUxFVAAAAAAABfXhAAAAAAAFUEFVTEkAAAAAAAAPQkAAAAAACFBSSUNFTEVUAAAAAAAAD0JAAAAAAA5ERUZBVUxUU1dBUEZFRQAAAAAAAABOIAAAAAAMSWR4TmV0QW1vdW50AAAAAAAAAAAAAAAAAAxJZHhGZWVBbW91bnQAAAAAAAAAAAEAAAAADklkeEdyb3NzQW1vdW50AAAAAAAAAAACAAAAAA9kb3JhMk5zYnRTeW1ib2wCAAAACU5TQlQtVVNEVAAAAAAHbWluUmFuZAAAAAAAAAAAPAAAAAAHbWF4UmFuZAAAAAAAAAAFoAAAAAASTmV1dHJpbm9Bc3NldElkS2V5AgAAABFuZXV0cmlub19hc3NldF9pZAAAAAAOQm9uZEFzc2V0SWRLZXkCAAAADWJvbmRfYXNzZXRfaWQAAAAAEkF1Y3Rpb25Db250cmFjdEtleQIAAAAQYXVjdGlvbl9jb250cmFjdAAAAAAWTGlxdWlkYXRpb25Db250cmFjdEtleQIAAAAUbGlxdWlkYXRpb25fY29udHJhY3QAAAAADlJQRENvbnRyYWN0S2V5AgAAAAxycGRfY29udHJhY3QAAAAAEkNvbnRyb2xDb250cmFjdEtleQIAAAAQY29udHJvbF9jb250cmFjdAAAAAAbQmFsYW5jZVdhdmVzTG9ja0ludGVydmFsS2V5AgAAABtiYWxhbmNlX3dhdmVzX2xvY2tfaW50ZXJ2YWwAAAAAHkJhbGFuY2VOZXV0cmlub0xvY2tJbnRlcnZhbEtleQIAAAAeYmFsYW5jZV9uZXV0cmlub19sb2NrX2ludGVydmFsAAAAABVNaW5XYXZlc1N3YXBBbW91bnRLZXkCAAAAFW1pbl93YXZlc19zd2FwX2Ftb3VudAAAAAAYTWluTmV1dHJpbm9Td2FwQW1vdW50S2V5AgAAABhtaW5fbmV1dHJpbm9fc3dhcF9hbW91bnQAAAAAG05vZGVPcmFjbGVQcm92aWRlclB1YktleUtleQIAAAAUbm9kZV9vcmFjbGVfcHJvdmlkZXIAAAAAFU5ldXRyaW5vT3V0RmVlUGFydEtleQIAAAAYbmV1dHJpbm9PdXRfc3dhcF9mZWVQYXJ0AAAAABJXYXZlc091dEZlZVBhcnRLZXkCAAAAFXdhdmVzT3V0X3N3YXBfZmVlUGFydAAAAAASUnNhUmFuZFB1YmxpYzU4S2V5AgAAAA9yYW5kX3JzYV9wdWJsaWMAAAAAEGtleUdOc2J0Q29udHJhY3QCAAAAESVzX19nTnNidENvbnRyYWN0AAAAABNrZXlOc2J0TG9ja0NvbnRyYWN0AgAAABQlc19fbnNidExvY2tDb250cmFjdAAAAAAQa2V5RG9yYTJDb250cmFjdAIAAAARJXNfX2RvcmEyQ29udHJhY3QAAAAAEWtleVF1aWNrU3dhcERlbGF5AgAAABIlc19fcXVpY2tTd2FwRGVsYXkAAAAAGWtleVF1aWNrU3dhcExpbWl0RHVyYXRpb24CAAAAGiVzX19xdWlja1N3YXBMaW1pdER1cmF0aW9uAAAAABdrZXlEb3JhMkxhc3RIZWlnaHRMaW1pdAIAAAAYJXNfX2RvcmEyTGFzdEhlaWdodExpbWl0AAAAAAhQcmljZUtleQIAAAAFcHJpY2UAAAAADVByaWNlSW5kZXhLZXkCAAAAC3ByaWNlX2luZGV4AAAAAAxJc0Jsb2NrZWRLZXkCAAAACmlzX2Jsb2NrZWQBAAAAEmdldFByaWNlSGlzdG9yeUtleQAAAAEAAAAFYmxvY2sJAAEsAAAAAgkAASwAAAACBQAAAAhQcmljZUtleQIAAAABXwkAAaQAAAABBQAAAAVibG9jawEAAAAYZ2V0SGVpZ2h0UHJpY2VCeUluZGV4S2V5AAAAAQAAAAVpbmRleAkAASwAAAACCQABLAAAAAIFAAAADVByaWNlSW5kZXhLZXkCAAAAAV8JAAGkAAAAAQUAAAAFaW5kZXgBAAAAFWdldFN0YWtpbmdOb2RlQnlJbmRleAAAAAEAAAADaWR4CQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQAEuQAAAAIJAARMAAAAAgIAAAAGJXMlZCVzCQAETAAAAAICAAAABWxlYXNlCQAETAAAAAIJAAGkAAAAAQUAAAADaWR4CQAETAAAAAICAAAAC25vZGVBZGRyZXNzBQAAAANuaWwFAAAAA1NFUAEAAAAcZ2V0U3Rha2luZ05vZGVBZGRyZXNzQnlJbmRleAAAAAEAAAADaWR4CQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQEAAAAVZ2V0U3Rha2luZ05vZGVCeUluZGV4AAAAAQUAAAADaWR4AQAAAB9nZXRSZXNlcnZlZEFtb3VudEZvclNwb25zb3JzaGlwAAAAAAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQAEuQAAAAIJAARMAAAAAgIAAAAEJXMlcwkABEwAAAACAgAAAAVsZWFzZQkABEwAAAACAgAAABdzcG9uc29yc2hpcFdhdmVzUmVzZXJ2ZQUAAAADbmlsBQAAAANTRVAJAABoAAAAAgAAAAAAAAAD6AUAAAAHV0FWRUxFVAEAAAAYZ2V0QmFsYW5jZVVubG9ja0Jsb2NrS2V5AAAAAQAAAAVvd25lcgkAASwAAAACAgAAABViYWxhbmNlX3VubG9ja19ibG9ja18FAAAABW93bmVyAQAAAA1nZXRMZWFzZUlkS2V5AAAAAQAAAAlub2RlSW5kZXgJAAS5AAAAAgkABEwAAAACAgAAAAYlcyVkJXMJAARMAAAAAgIAAAAFbGVhc2UJAARMAAAAAgkAAaQAAAABBQAAAAlub2RlSW5kZXgJAARMAAAAAgIAAAACaWQFAAAAA25pbAUAAAADU0VQAQAAABFnZXRMZWFzZUFtb3VudEtleQAAAAEAAAAJbm9kZUluZGV4CQAEuQAAAAIJAARMAAAAAgIAAAAGJXMlZCVzCQAETAAAAAICAAAABWxlYXNlCQAETAAAAAIJAAGkAAAAAQUAAAAJbm9kZUluZGV4CQAETAAAAAICAAAABmFtb3VudAUAAAADbmlsBQAAAANTRVABAAAAEG1pblN3YXBBbW91bnRLRVkAAAABAAAACHN3YXBUeXBlCQABLAAAAAIJAAEsAAAAAgIAAAAEbWluXwUAAAAIc3dhcFR5cGUCAAAADF9zd2FwX2Ftb3VudAEAAAAOdG90YWxMb2NrZWRLRVkAAAABAAAACHN3YXBUeXBlCQABLAAAAAICAAAADWJhbGFuY2VfbG9ja18FAAAACHN3YXBUeXBlAQAAABR0b3RhbExvY2tlZEJ5VXNlcktFWQAAAAIAAAAIc3dhcFR5cGUAAAAFb3duZXIJAAS5AAAAAgkABEwAAAACAgAAAAxiYWxhbmNlX2xvY2sJAARMAAAAAgUAAAAIc3dhcFR5cGUJAARMAAAAAgUAAAAFb3duZXIFAAAAA25pbAIAAAABXwEAAAAWYmFsYW5jZUxvY2tJbnRlcnZhbEtFWQAAAAEAAAAIc3dhcFR5cGUJAAEsAAAAAgkAASwAAAACAgAAAAhiYWxhbmNlXwUAAAAIc3dhcFR5cGUCAAAADl9sb2NrX2ludGVydmFsAQAAABltaW5CYWxhbmNlTG9ja0ludGVydmFsS0VZAAAAAQAAAAhzd2FwVHlwZQkAASwAAAACCQABLAAAAAICAAAACGJhbGFuY2VfBQAAAAhzd2FwVHlwZQIAAAAWX2xvY2tfaW50ZXJ2YWxfbWluaW11bQEAAAAabm9kZUJhbGFuY2VMb2NrSW50ZXJ2YWxLRVkAAAAAAgAAABpiYWxhbmNlX25vZGVfbG9ja19pbnRlcnZhbAEAAAANb3V0RmVlUGFydEtFWQAAAAEAAAAIc3dhcFR5cGUJAAEsAAAAAgUAAAAIc3dhcFR5cGUCAAAAEE91dF9zd2FwX2ZlZVBhcnQBAAAAHWtleVF1aWNrU3dhcFVzZXJTcGVudEluUGVyaW9kAAAAAQAAAAt1c2VyQWRkcmVzcwkABLkAAAACCQAETAAAAAICAAAABCVzJXMJAARMAAAAAgIAAAAacXVpY2tTd2FwVXNlclNwZW50SW5QZXJpb2QJAARMAAAAAgkABCUAAAABBQAAAAt1c2VyQWRkcmVzcwUAAAADbmlsBQAAAANTRVABAAAAGmtleVVzZXJMYXN0UXVpY2tTd2FwSGVpZ2h0AAAAAQAAAAt1c2VyQWRkcmVzcwkABLkAAAACCQAETAAAAAICAAAABCVzJXMJAARMAAAAAgIAAAAXdXNlckxhc3RRdWlja1N3YXBIZWlnaHQJAARMAAAAAgkABCUAAAABBQAAAAt1c2VyQWRkcmVzcwUAAAADbmlsBQAAAANTRVABAAAADWtleURvcmEyUHJpY2UAAAABAAAABnN5bWJvbAkABLkAAAACCQAETAAAAAICAAAABCVzJXMJAARMAAAAAgIAAAAFcHJpY2UJAARMAAAAAgUAAAAGc3ltYm9sBQAAAANuaWwFAAAAA1NFUAEAAAASa2V5RG9yYTJMYXN0SGVpZ2h0AAAAAQAAAAZzeW1ib2wJAAS5AAAAAgkABEwAAAACAgAAAAQlcyVzCQAETAAAAAICAAAACmxhc3RIZWlnaHQJAARMAAAAAgUAAAAGc3ltYm9sBQAAAANuaWwFAAAAA1NFUAEAAAARbWluU3dhcEFtb3VudFJFQUQAAAABAAAACHN3YXBUeXBlCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAABBtaW5Td2FwQW1vdW50S0VZAAAAAQUAAAAIc3dhcFR5cGUAAAAAAAAAAAABAAAAD3RvdGFsTG9ja2VkUkVBRAAAAAEAAAAIc3dhcFR5cGUJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkBAAAADnRvdGFsTG9ja2VkS0VZAAAAAQUAAAAIc3dhcFR5cGUAAAAAAAAAAAABAAAAFXRvdGFsTG9ja2VkQnlVc2VyUkVBRAAAAAIAAAAIc3dhcFR5cGUAAAAFb3duZXIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkBAAAAFHRvdGFsTG9ja2VkQnlVc2VyS0VZAAAAAgUAAAAIc3dhcFR5cGUFAAAABW93bmVyAAAAAAAAAAAAAQAAABdiYWxhbmNlTG9ja0ludGVydmFsUkVBRAAAAAEAAAAIc3dhcFR5cGUJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkBAAAAFmJhbGFuY2VMb2NrSW50ZXJ2YWxLRVkAAAABBQAAAAhzd2FwVHlwZQUAAAAHbWF4UmFuZAEAAAAabWluQmFsYW5jZUxvY2tJbnRlcnZhbFJFQUQAAAABAAAACHN3YXBUeXBlCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAABltaW5CYWxhbmNlTG9ja0ludGVydmFsS0VZAAAAAQUAAAAIc3dhcFR5cGUFAAAAB21pblJhbmQBAAAAG25vZGVCYWxhbmNlTG9ja0ludGVydmFsUkVBRAAAAAAJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkBAAAAGm5vZGVCYWxhbmNlTG9ja0ludGVydmFsS0VZAAAAAAAAAAAAAAAAAQEAAAAWY29udmVydE5ldXRyaW5vVG9XYXZlcwAAAAIAAAAGYW1vdW50AAAABXByaWNlCQAAawAAAAMJAABrAAAAAwUAAAAGYW1vdW50BQAAAAhQUklDRUxFVAUAAAAFcHJpY2UFAAAAB1dBVkVMRVQFAAAABVBBVUxJAQAAABZjb252ZXJ0V2F2ZXNUb05ldXRyaW5vAAAAAgAAAAZhbW91bnQAAAAFcHJpY2UJAABrAAAAAwkAAGsAAAADBQAAAAZhbW91bnQFAAAABXByaWNlBQAAAAhQUklDRUxFVAUAAAAFUEFVTEkFAAAAB1dBVkVMRVQBAAAAEmNvbnZlcnRXYXZlc1RvQm9uZAAAAAIAAAAGYW1vdW50AAAABXByaWNlCQEAAAAWY29udmVydFdhdmVzVG9OZXV0cmlubwAAAAIFAAAABmFtb3VudAUAAAAFcHJpY2UBAAAAFmNvbnZlcnRKc29uQXJyYXlUb0xpc3QAAAABAAAACWpzb25BcnJheQkABLUAAAACBQAAAAlqc29uQXJyYXkCAAAAASwBAAAAEW1pblN3YXBBbW91bnRGQUlMAAAAAgAAAAhzd2FwVHlwZQAAAA1taW5Td2FwQW1vdW50CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAGFRoZSBzcGVjaWZpZWQgYW1vdW50IGluIAUAAAAIc3dhcFR5cGUCAAAAKyBzd2FwIGlzIGxlc3MgdGhhbiB0aGUgcmVxdWlyZWQgbWluaW11bSBvZiAJAAGkAAAAAQUAAAANbWluU3dhcEFtb3VudAEAAAAVZW1lcmdlbmN5U2h1dGRvd25GQUlMAAAAAAkAAAIAAAABAgAAAFpjb250cmFjdCBpcyBibG9ja2VkIGJ5IEVNRVJHRU5DWSBTSFVURE9XTiBhY3Rpb25zIHVudGlsbCByZWFjdGl2YXRpb24gYnkgZW1lcmdlbmN5IG9yYWNsZXMBAAAADnByaWNlSW5kZXhGQUlMAAAABQAAAAVpbmRleAAAAApwcmljZUluZGV4AAAAC2luZGV4SGVpZ2h0AAAADHVubG9ja0hlaWdodAAAAA9wcmV2SW5kZXhIZWlnaHQJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAjaW52YWxpZCBwcmljZSBoaXN0b3J5IGluZGV4OiBpbmRleD0JAAGkAAAAAQUAAAAFaW5kZXgCAAAADCBwcmljZUluZGV4PQkAAaQAAAABBQAAAApwcmljZUluZGV4AgAAAA0gaW5kZXhIZWlnaHQ9CQABpAAAAAEFAAAAC2luZGV4SGVpZ2h0AgAAAA4gdW5sb2NrSGVpZ2h0PQkAAaQAAAABBQAAAAx1bmxvY2tIZWlnaHQCAAAAESBwcmV2SW5kZXhIZWlnaHQ9CQABpAAAAAEFAAAAD3ByZXZJbmRleEhlaWdodAAAAAATbGlxdWlkYXRpb25Db250cmFjdAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQUAAAAWTGlxdWlkYXRpb25Db250cmFjdEtleQAAAAAPbmV1dHJpbm9Bc3NldElkCQACWQAAAAEJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEFAAAAEk5ldXRyaW5vQXNzZXRJZEtleQAAAAAPYXVjdGlvbkNvbnRyYWN0CQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABBQAAABJBdWN0aW9uQ29udHJhY3RLZXkAAAAAC3JwZENvbnRyYWN0CQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABBQAAAA5SUERDb250cmFjdEtleQAAAAAPY29udHJvbENvbnRyYWN0CQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABBQAAABJDb250cm9sQ29udHJhY3RLZXkAAAAACnByaWNlSW5kZXgJAQAAABhnZXROdW1iZXJCeUFkZHJlc3NBbmRLZXkAAAACBQAAAA9jb250cm9sQ29udHJhY3QFAAAADVByaWNlSW5kZXhLZXkAAAAACWlzQmxvY2tlZAkBAAAAFmdldEJvb2xCeUFkZHJlc3NBbmRLZXkAAAACBQAAAA9jb250cm9sQ29udHJhY3QFAAAADElzQmxvY2tlZEtleQAAAAAYbm9kZU9yYWNsZVByb3ZpZGVyUHViS2V5CQACWQAAAAEJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEFAAAAG05vZGVPcmFjbGVQcm92aWRlclB1YktleUtleQAAAAALYm9uZEFzc2V0SWQJAAJZAAAAAQIAAAAsQkdoUFlxdVhTSzZVWWpuUExFbjk0Z0ZoZXRwNEp2Zjd0b2VrRVk0eDFWREgAAAAAFWRlcHJlY2F0ZWRCb25kQXNzZXRJZAkAAlkAAAABAgAAACw5NzVha1pCZm5NajUxM1U3TVphSEt6UXJtc0V4NWFFM3dkV0tUckhCaGJqRgAAAAAGcnNhUHViCQACWwAAAAEJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAR0aGlzBQAAABJSc2FSYW5kUHVibGljNThLZXkCAAAAJVJTQSBwdWJsaWMga2V5IGhhcyBub3QgYmVlbiBzcGVjaWZpZWQAAAAAEG5ldXRyaW5vQ29udHJhY3QFAAAABHRoaXMAAAAADGN1cnJlbnRQcmljZQkBAAAAGGdldE51bWJlckJ5QWRkcmVzc0FuZEtleQAAAAIFAAAAD2NvbnRyb2xDb250cmFjdAUAAAAIUHJpY2VLZXkAAAAAFW5ldXRyaW5vTG9ja2VkQmFsYW5jZQkBAAAAD3RvdGFsTG9ja2VkUkVBRAAAAAECAAAACG5ldXRyaW5vAAAAABJ3YXZlc0xvY2tlZEJhbGFuY2UJAQAAAA90b3RhbExvY2tlZFJFQUQAAAABAgAAAAV3YXZlcwAAAAAHcmVzZXJ2ZQkAAGUAAAACCAkAA+8AAAABBQAAABBuZXV0cmlub0NvbnRyYWN0AAAAB3JlZ3VsYXIFAAAAEndhdmVzTG9ja2VkQmFsYW5jZQAAAAAObmV1dHJpbm9TdXBwbHkJAABlAAAAAgkAAGUAAAACCQAAZAAAAAIFAAAAFW5ldXRyaW5vTG9ja2VkQmFsYW5jZQgJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAAPbmV1dHJpbm9Bc3NldElkAAAACHF1YW50aXR5CQAD8AAAAAIFAAAAEG5ldXRyaW5vQ29udHJhY3QFAAAAD25ldXRyaW5vQXNzZXRJZAkAA/AAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAABNsaXF1aWRhdGlvbkNvbnRyYWN0BQAAAA9uZXV0cmlub0Fzc2V0SWQAAAAAB3N1cnBsdXMJAABlAAAAAgkBAAAAFmNvbnZlcnRXYXZlc1RvTmV1dHJpbm8AAAACBQAAAAdyZXNlcnZlBQAAAAxjdXJyZW50UHJpY2UFAAAADm5ldXRyaW5vU3VwcGx5AAAAAAdkZWZpY2l0CQAAZQAAAAIFAAAADm5ldXRyaW5vU3VwcGx5CQEAAAAWY29udmVydFdhdmVzVG9OZXV0cmlubwAAAAIFAAAAB3Jlc2VydmUFAAAADGN1cnJlbnRQcmljZQEAAAAbY2hlY2tJc1ZhbGlkTWluU3BvbnNvcmVkRmVlAAAAAQAAAAJ0eAQAAAAOTUlOVFJBTlNGRVJGRUUAAAAAAAABhqAEAAAAFlNwb25zb3JlZEZlZVVwcGVyQm91bmQAAAAAAAAAA+gEAAAAD3JlYWxOZXV0cmlub0ZlZQkBAAAAFmNvbnZlcnRXYXZlc1RvTmV1dHJpbm8AAAACBQAAAA5NSU5UUkFOU0ZFUkZFRQUAAAAMY3VycmVudFByaWNlBAAAAA5taW5OZXV0cmlub0ZlZQkAAGgAAAACBQAAAA9yZWFsTmV1dHJpbm9GZWUAAAAAAAAAAAIEAAAADm1heE5ldXRyaW5vRmVlCQAAawAAAAMFAAAAD3JlYWxOZXV0cmlub0ZlZQUAAAAWU3BvbnNvcmVkRmVlVXBwZXJCb3VuZAAAAAAAAAAAZAQAAAAIaW5wdXRGZWUJAQAAAAV2YWx1ZQAAAAEIBQAAAAJ0eAAAABRtaW5TcG9uc29yZWRBc3NldEZlZQMDCQAAZwAAAAIFAAAACGlucHV0RmVlBQAAAA5taW5OZXV0cmlub0ZlZQkAAGcAAAACBQAAAA5tYXhOZXV0cmlub0ZlZQUAAAAIaW5wdXRGZWUHCQAAAAAAAAIIBQAAAAJ0eAAAAAdhc3NldElkBQAAAA9uZXV0cmlub0Fzc2V0SWQHAQAAAA9nZXRQcmljZUhpc3RvcnkAAAABAAAABWJsb2NrCQEAAAAYZ2V0TnVtYmVyQnlBZGRyZXNzQW5kS2V5AAAAAgUAAAAPY29udHJvbENvbnRyYWN0CQEAAAASZ2V0UHJpY2VIaXN0b3J5S2V5AAAAAQUAAAAFYmxvY2sBAAAAFWdldEhlaWdodFByaWNlQnlJbmRleAAAAAEAAAAFaW5kZXgJAQAAABhnZXROdW1iZXJCeUFkZHJlc3NBbmRLZXkAAAACBQAAAA9jb250cm9sQ29udHJhY3QJAQAAABhnZXRIZWlnaHRQcmljZUJ5SW5kZXhLZXkAAAABBQAAAAVpbmRleAAAAAAMc0lkeFN3YXBUeXBlAAAAAAAAAAABAAAAAApzSWR4U3RhdHVzAAAAAAAAAAACAAAAAAxzSWR4SW5BbW91bnQAAAAAAAAAAAMAAAAACXNJZHhQcmljZQAAAAAAAAAABAAAAAAQc0lkeE91dE5ldEFtb3VudAAAAAAAAAAABQAAAAAQc0lkeE91dEZlZUFtb3VudAAAAAAAAAAABgAAAAAPc0lkeFN0YXJ0SGVpZ2h0AAAAAAAAAAAHAAAAABJzSWR4U3RhcnRUaW1lc3RhbXAAAAAAAAAAAAgAAAAADXNJZHhFbmRIZWlnaHQAAAAAAAAAAAkAAAAAEHNJZHhFbmRUaW1lc3RhbXAAAAAAAAAAAAoAAAAAFHNJZHhTZWxmVW5sb2NrSGVpZ2h0AAAAAAAAAAALAAAAABRzSWR4UmFuZFVubG9ja0hlaWdodAAAAAAAAAAADAAAAAAJc0lkeEluZGV4AAAAAAAAAAANAAAAABBzSWR4V2l0aGRyYXdUeElkAAAAAAAAAAAOAAAAAAtzSWR4TWluUmFuZAAAAAAAAAAADwAAAAALc0lkeE1heFJhbmQAAAAAAAAAABAAAAAAC3NJZHhJc1F1aWNrAAAAAAAAAAARAQAAAAdzd2FwS0VZAAAAAgAAAAt1c2VyQWRkcmVzcwAAAAR0eElkCQAEuQAAAAIJAARMAAAAAgIAAAAEJXMlcwkABEwAAAACBQAAAAt1c2VyQWRkcmVzcwkABEwAAAACBQAAAAR0eElkBQAAAANuaWwFAAAAA1NFUAEAAAALc3RyU3dhcERBVEEAAAARAAAACHN3YXBUeXBlAAAABnN0YXR1cwAAAAhpbkFtb3VudAAAAAVwcmljZQAAAAxvdXROZXRBbW91bnQAAAAMb3V0RmVlQW1vdW50AAAAC3N0YXJ0SGVpZ2h0AAAADnN0YXJ0VGltZXN0YW1wAAAACWVuZEhlaWdodAAAAAxlbmRUaW1lc3RhbXAAAAAQc2VsZlVubG9ja0hlaWdodAAAABByYW5kVW5sb2NrSGVpZ2h0AAAABWluZGV4AAAADHdpdGhkcmF3VHhJZAAAAAdyYW5kTWluAAAAB3JhbmRNYXgAAAAHaXNRdWljawkABLkAAAACCQAETAAAAAICAAAAHCVzJXMlZCVkJWQlZCVkJWQlZCVkJWQlZCVkJXMJAARMAAAAAgUAAAAIc3dhcFR5cGUJAARMAAAAAgUAAAAGc3RhdHVzCQAETAAAAAIFAAAACGluQW1vdW50CQAETAAAAAIFAAAABXByaWNlCQAETAAAAAIFAAAADG91dE5ldEFtb3VudAkABEwAAAACBQAAAAxvdXRGZWVBbW91bnQJAARMAAAAAgUAAAALc3RhcnRIZWlnaHQJAARMAAAAAgUAAAAOc3RhcnRUaW1lc3RhbXAJAARMAAAAAgUAAAAJZW5kSGVpZ2h0CQAETAAAAAIFAAAADGVuZFRpbWVzdGFtcAkABEwAAAACBQAAABBzZWxmVW5sb2NrSGVpZ2h0CQAETAAAAAIFAAAAEHJhbmRVbmxvY2tIZWlnaHQJAARMAAAAAgUAAAAFaW5kZXgJAARMAAAAAgUAAAAMd2l0aGRyYXdUeElkCQAETAAAAAIFAAAAB3JhbmRNaW4JAARMAAAAAgUAAAAHcmFuZE1heAkABEwAAAACBQAAAAdpc1F1aWNrBQAAAANuaWwFAAAAA1NFUAEAAAAPcGVuZGluZ1N3YXBEQVRBAAAAAwAAAAhzd2FwVHlwZQAAAA1pbkFzc2V0QW1vdW50AAAAEHNlbGZVbmxvY2tIZWlnaHQJAQAAAAtzdHJTd2FwREFUQQAAABEFAAAACHN3YXBUeXBlAgAAAAdQRU5ESU5HCQABpAAAAAEFAAAADWluQXNzZXRBbW91bnQCAAAAATACAAAAATACAAAAATAJAAGkAAAAAQUAAAAGaGVpZ2h0CQABpAAAAAEIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wAgAAAAEwAgAAAAEwCQABpAAAAAEFAAAAEHNlbGZVbmxvY2tIZWlnaHQCAAAAATACAAAAATACAAAABE5VTEwJAAGkAAAAAQkBAAAAGm1pbkJhbGFuY2VMb2NrSW50ZXJ2YWxSRUFEAAAAAQUAAAAIc3dhcFR5cGUJAAGkAAAAAQkBAAAAF2JhbGFuY2VMb2NrSW50ZXJ2YWxSRUFEAAAAAQUAAAAIc3dhcFR5cGUJAAGlAAAAAQcBAAAAEmFjY2VsZXJhdGVTd2FwREFUQQAAAAEAAAAJZGF0YUFycmF5CQEAAAALc3RyU3dhcERBVEEAAAARCQABkQAAAAIFAAAACWRhdGFBcnJheQUAAAAMc0lkeFN3YXBUeXBlCQABkQAAAAIFAAAACWRhdGFBcnJheQUAAAAKc0lkeFN0YXR1cwkAAZEAAAACBQAAAAlkYXRhQXJyYXkFAAAADHNJZHhJbkFtb3VudAkAAZEAAAACBQAAAAlkYXRhQXJyYXkFAAAACXNJZHhQcmljZQkAAZEAAAACBQAAAAlkYXRhQXJyYXkFAAAAEHNJZHhPdXROZXRBbW91bnQJAAGRAAAAAgUAAAAJZGF0YUFycmF5BQAAABBzSWR4T3V0RmVlQW1vdW50CQABkQAAAAIFAAAACWRhdGFBcnJheQUAAAAPc0lkeFN0YXJ0SGVpZ2h0CQABkQAAAAIFAAAACWRhdGFBcnJheQUAAAASc0lkeFN0YXJ0VGltZXN0YW1wCQABkQAAAAIFAAAACWRhdGFBcnJheQUAAAANc0lkeEVuZEhlaWdodAkAAZEAAAACBQAAAAlkYXRhQXJyYXkFAAAAEHNJZHhFbmRUaW1lc3RhbXAJAAGRAAAAAgUAAAAJZGF0YUFycmF5BQAAABRzSWR4U2VsZlVubG9ja0hlaWdodAkAAZEAAAACBQAAAAlkYXRhQXJyYXkFAAAAFHNJZHhSYW5kVW5sb2NrSGVpZ2h0CQABkQAAAAIFAAAACWRhdGFBcnJheQUAAAAJc0lkeEluZGV4CQABkQAAAAIFAAAACWRhdGFBcnJheQUAAAAQc0lkeFdpdGhkcmF3VHhJZAkAAZEAAAACBQAAAAlkYXRhQXJyYXkFAAAAC3NJZHhNaW5SYW5kCQABkQAAAAIFAAAACWRhdGFBcnJheQUAAAALc0lkeE1heFJhbmQJAAGlAAAAAQYBAAAADmZpbmlzaFN3YXBEQVRBAAAABwAAAAlkYXRhQXJyYXkAAAAFcHJpY2UAAAAMb3V0TmV0QW1vdW50AAAADG91dEZlZUFtb3VudAAAABByYW5kVW5sb2NrSGVpZ2h0AAAABWluZGV4AAAADHdpdGhkcmF3VHhJZAkBAAAAC3N0clN3YXBEQVRBAAAAEQkAAZEAAAACBQAAAAlkYXRhQXJyYXkFAAAADHNJZHhTd2FwVHlwZQIAAAAIRklOSVNIRUQJAAGRAAAAAgUAAAAJZGF0YUFycmF5BQAAAAxzSWR4SW5BbW91bnQJAAGkAAAAAQUAAAAFcHJpY2UJAAGkAAAAAQUAAAAMb3V0TmV0QW1vdW50CQABpAAAAAEFAAAADG91dEZlZUFtb3VudAkAAZEAAAACBQAAAAlkYXRhQXJyYXkFAAAAD3NJZHhTdGFydEhlaWdodAkAAZEAAAACBQAAAAlkYXRhQXJyYXkFAAAAEnNJZHhTdGFydFRpbWVzdGFtcAkAAaQAAAABBQAAAAZoZWlnaHQJAAGkAAAAAQgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAJAAGRAAAAAgUAAAAJZGF0YUFycmF5BQAAABRzSWR4U2VsZlVubG9ja0hlaWdodAkAAaQAAAABBQAAABByYW5kVW5sb2NrSGVpZ2h0CQABpAAAAAEFAAAABWluZGV4BQAAAAx3aXRoZHJhd1R4SWQJAAGRAAAAAgUAAAAJZGF0YUFycmF5BQAAAAtzSWR4TWluUmFuZAkAAZEAAAACBQAAAAlkYXRhQXJyYXkFAAAAC3NJZHhNYXhSYW5kCQABkQAAAAIFAAAACWRhdGFBcnJheQUAAAALc0lkeElzUXVpY2sBAAAAEnN3YXBEYXRhRmFpbE9yUkVBRAAAAAIAAAALdXNlckFkZHJlc3MAAAAIc3dhcFR4SWQEAAAAB3N3YXBLZXkJAQAAAAdzd2FwS0VZAAAAAgUAAAALdXNlckFkZHJlc3MFAAAACHN3YXBUeElkCQAEtQAAAAIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAR0aGlzBQAAAAdzd2FwS2V5CQABLAAAAAICAAAAEW5vIHN3YXAgZGF0YSBmb3IgBQAAAAdzd2FwS2V5BQAAAANTRVABAAAACWFwcGx5RmVlcwAAAAIAAAALYW1vdW50R3Jvc3MAAAAHZmVlUGFydAQAAAAJZmVlQW1vdW50CQAAawAAAAMFAAAAC2Ftb3VudEdyb3NzBQAAAAdmZWVQYXJ0BQAAAAVQQVVMSQkABEwAAAACCQAAZQAAAAIFAAAAC2Ftb3VudEdyb3NzBQAAAAlmZWVBbW91bnQJAARMAAAAAgUAAAAJZmVlQW1vdW50CQAETAAAAAIFAAAAC2Ftb3VudEdyb3NzBQAAAANuaWwBAAAAFnJhbmRVbmxvY2tIZWlnaHRPckZhaWwAAAAFAAAABHR4SWQAAAAGcnNhU2lnAAAACHN3YXBUeXBlAAAAC3N0YXJ0SGVpZ2h0AAAAEG1pbk1heFJhbmRzVHVwbGUEAAAACmlzUnNhVmFsaWQJAAooAAAABAUAAAAGU0hBMjU2CQABmwAAAAEFAAAABHR4SWQFAAAABnJzYVNpZwUAAAAGcnNhUHViAwkBAAAAASEAAAABBQAAAAppc1JzYVZhbGlkCQAAAgAAAAECAAAAFWludmFsaWQgUlNBIHNpZ25hdHVyZQQAAAAWbWluQmFsYW5jZUxvY2tJbnRlcnZhbAgFAAAAEG1pbk1heFJhbmRzVHVwbGUAAAACXzEEAAAAFm1heEJhbGFuY2VMb2NrSW50ZXJ2YWwIBQAAABBtaW5NYXhSYW5kc1R1cGxlAAAAAl8yBAAAAARyYW5kCQAAagAAAAIJAASxAAAAAQkAC1QAAAABBQAAAAZyc2FTaWcJAABlAAAAAgUAAAAWbWF4QmFsYW5jZUxvY2tJbnRlcnZhbAUAAAAWbWluQmFsYW5jZUxvY2tJbnRlcnZhbAQAAAAQcmFuZExvY2tJbnRlcnZhbAkAAGQAAAACBQAAABZtaW5CYWxhbmNlTG9ja0ludGVydmFsAwkAAGYAAAACAAAAAAAAAAAABQAAAARyYW5kCQEAAAABLQAAAAEFAAAABHJhbmQFAAAABHJhbmQJAABkAAAAAgUAAAALc3RhcnRIZWlnaHQFAAAAEHJhbmRMb2NrSW50ZXJ2YWwBAAAAA2FicwAAAAEAAAABeAMJAABmAAAAAgAAAAAAAAAAAAUAAAABeAkBAAAAAS0AAAABBQAAAAF4BQAAAAF4AQAAAApzZWxlY3ROb2RlAAAAAQAAAA11bmxlYXNlQW1vdW50BAAAAA1hbW91bnRUb0xlYXNlCQAAZQAAAAIJAABlAAAAAggJAAPvAAAAAQUAAAAQbmV1dHJpbm9Db250cmFjdAAAAAlhdmFpbGFibGUFAAAADXVubGVhc2VBbW91bnQJAQAAAB9nZXRSZXNlcnZlZEFtb3VudEZvclNwb25zb3JzaGlwAAAAAAQAAAAKb2xkTGVhc2VkMAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAEWdldExlYXNlQW1vdW50S2V5AAAAAQAAAAAAAAAAAAQAAAAKb2xkTGVhc2VkMQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAEWdldExlYXNlQW1vdW50S2V5AAAAAQAAAAAAAAAAAQQAAAAKbmV3TGVhc2VkMAkAAGQAAAACBQAAAA1hbW91bnRUb0xlYXNlBQAAAApvbGRMZWFzZWQwBAAAAApuZXdMZWFzZWQxCQAAZAAAAAIFAAAADWFtb3VudFRvTGVhc2UFAAAACm9sZExlYXNlZDEDAwkAAGYAAAACBQAAAApuZXdMZWFzZWQwAAAAAAAAAAAABgkAAGYAAAACBQAAAApuZXdMZWFzZWQxAAAAAAAAAAAABAAAAAZkZWx0YTAJAQAAAANhYnMAAAABCQAAZQAAAAIFAAAACm5ld0xlYXNlZDAFAAAACm9sZExlYXNlZDEEAAAABmRlbHRhMQkBAAAAA2FicwAAAAEJAABlAAAAAgUAAAAKbmV3TGVhc2VkMQUAAAAKb2xkTGVhc2VkMAMJAABnAAAAAgUAAAAGZGVsdGExBQAAAAZkZWx0YTAJAAUUAAAAAgAAAAAAAAAAAAUAAAAKbmV3TGVhc2VkMAkABRQAAAACAAAAAAAAAAABBQAAAApuZXdMZWFzZWQxCQAFFAAAAAIA//////////8AAAAAAAAAAAABAAAAFnByZXBhcmVVbmxlYXNlQW5kTGVhc2UAAAABAAAADXVubGVhc2VBbW91bnQEAAAADSR0MDE2MjEyMTYzMDAJAQAAAApzZWxlY3ROb2RlAAAAAQUAAAANdW5sZWFzZUFtb3VudAQAAAAJbm9kZUluZGV4CAUAAAANJHQwMTYyMTIxNjMwMAAAAAJfMQQAAAAObmV3TGVhc2VBbW91bnQIBQAAAA0kdDAxNjIxMjE2MzAwAAAAAl8yAwkAAGYAAAACBQAAAA5uZXdMZWFzZUFtb3VudAAAAAAAAAAAAAQAAAAKbGVhc2VJZEtleQkBAAAADWdldExlYXNlSWRLZXkAAAABBQAAAAlub2RlSW5kZXgEAAAACG9sZExlYXNlCQAEHAAAAAIFAAAABHRoaXMFAAAACmxlYXNlSWRLZXkEAAAADnVubGVhc2VPckVtcHR5AwkBAAAACWlzRGVmaW5lZAAAAAEFAAAACG9sZExlYXNlCQAETAAAAAIJAQAAAAtMZWFzZUNhbmNlbAAAAAEJAQAAAAV2YWx1ZQAAAAEFAAAACG9sZExlYXNlBQAAAANuaWwFAAAAA25pbAQAAAAObGVhc2VBbW91bnRLZXkJAQAAABFnZXRMZWFzZUFtb3VudEtleQAAAAEFAAAACW5vZGVJbmRleAQAAAAFbGVhc2UJAAREAAAAAgkBAAAAHGdldFN0YWtpbmdOb2RlQWRkcmVzc0J5SW5kZXgAAAABBQAAAAlub2RlSW5kZXgFAAAADm5ld0xlYXNlQW1vdW50CQAETgAAAAIFAAAADnVubGVhc2VPckVtcHR5CQAETAAAAAIFAAAABWxlYXNlCQAETAAAAAIJAQAAAAtCaW5hcnlFbnRyeQAAAAIFAAAACmxlYXNlSWRLZXkJAAQ5AAAAAQUAAAAFbGVhc2UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABFnZXRMZWFzZUFtb3VudEtleQAAAAEFAAAACW5vZGVJbmRleAUAAAAObmV3TGVhc2VBbW91bnQFAAAAA25pbAUAAAADbmlsAQAAABBnZXREb3JhMk5TQlRJbmZvAAAAAAQAAAANZG9yYTJDb250cmFjdAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwUAAAAQa2V5RG9yYTJDb250cmFjdAkABRQAAAACCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAANZG9yYTJDb250cmFjdAkBAAAADWtleURvcmEyUHJpY2UAAAABBQAAAA9kb3JhMk5zYnRTeW1ib2wCAAAAF05TQlQgcHJpY2UgaXMgdW5kZWZpbmVkCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAADWRvcmEyQ29udHJhY3QJAQAAABJrZXlEb3JhMkxhc3RIZWlnaHQAAAABBQAAAA9kb3JhMk5zYnRTeW1ib2wAAAAAAAAAAAABAAAACHRoaXNPbmx5AAAAAQAAAAFpAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzCQAAAgAAAAECAAAALVBlcm1pc3Npb24gZGVuaWVkOiB0aGlzIGNvbnRyYWN0IG9ubHkgYWxsb3dlZAYAAAANAAAAAWkBAAAAHXByZXBhcmVVbmxlYXNlQW5kTGVhc2VXcmFwcGVyAAAAAQAAAA11bmxlYXNlQW1vdW50BAAAAAtjaGVja0NhbGxlcgkABEwAAAACCQEAAAAIdGhpc09ubHkAAAABBQAAAAFpBQAAAANuaWwDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgkBAAAAFnByZXBhcmVVbmxlYXNlQW5kTGVhc2UAAAABBQAAAA11bmxlYXNlQW1vdW50CQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAAtjb25zdHJ1Y3RvcgAAAA4AAAASbmV1dHJpbm9Bc3NldElkUHJtAAAADmJvbmRBc3NldElkUHJtAAAAEmF1Y3Rpb25Db250cmFjdFBybQAAABZsaXF1aWRhdGlvbkNvbnRyYWN0UHJtAAAADnJwZENvbnRyYWN0UHJtAAAAEmNvbnRyb2xDb250cmFjdFBybQAAABtub2RlT3JhY2xlUHJvdmlkZXJQdWJLZXlQcm0AAAATcnNhUmFuZFB1YmxpY0tleVBybQAAABtiYWxhbmNlV2F2ZXNMb2NrSW50ZXJ2YWxQcm0AAAAeYmFsYW5jZU5ldXRyaW5vTG9ja0ludGVydmFsUHJtAAAAFW1pbldhdmVzU3dhcEFtb3VudFBybQAAABhtaW5OZXV0cmlub1N3YXBBbW91bnRQcm0AAAAVbmV1dHJpbm9PdXRGZWVQYXJ0UHJtAAAAEndhdmVzT3V0RmVlUGFydFBybQQAAAALY2hlY2tDYWxsZXIJAQAAAAh0aGlzT25seQAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABJOZXV0cmlub0Fzc2V0SWRLZXkFAAAAEm5ldXRyaW5vQXNzZXRJZFBybQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA5Cb25kQXNzZXRJZEtleQUAAAAOYm9uZEFzc2V0SWRQcm0JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAASQXVjdGlvbkNvbnRyYWN0S2V5BQAAABJhdWN0aW9uQ29udHJhY3RQcm0JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAWTGlxdWlkYXRpb25Db250cmFjdEtleQUAAAAWbGlxdWlkYXRpb25Db250cmFjdFBybQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA5SUERDb250cmFjdEtleQUAAAAOcnBkQ29udHJhY3RQcm0JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAASQ29udHJvbENvbnRyYWN0S2V5BQAAABJjb250cm9sQ29udHJhY3RQcm0JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAbTm9kZU9yYWNsZVByb3ZpZGVyUHViS2V5S2V5BQAAABtub2RlT3JhY2xlUHJvdmlkZXJQdWJLZXlQcm0JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAASUnNhUmFuZFB1YmxpYzU4S2V5BQAAABNyc2FSYW5kUHVibGljS2V5UHJtCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABtCYWxhbmNlV2F2ZXNMb2NrSW50ZXJ2YWxLZXkFAAAAG2JhbGFuY2VXYXZlc0xvY2tJbnRlcnZhbFBybQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAeQmFsYW5jZU5ldXRyaW5vTG9ja0ludGVydmFsS2V5BQAAAB5iYWxhbmNlTmV1dHJpbm9Mb2NrSW50ZXJ2YWxQcm0JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAFU1pbldhdmVzU3dhcEFtb3VudEtleQUAAAAVbWluV2F2ZXNTd2FwQW1vdW50UHJtCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABhNaW5OZXV0cmlub1N3YXBBbW91bnRLZXkFAAAAGG1pbk5ldXRyaW5vU3dhcEFtb3VudFBybQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAVTmV1dHJpbm9PdXRGZWVQYXJ0S2V5BQAAABVuZXV0cmlub091dEZlZVBhcnRQcm0JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEldhdmVzT3V0RmVlUGFydEtleQUAAAASd2F2ZXNPdXRGZWVQYXJ0UHJtBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAADWNvbnN0cnVjdG9yVjIAAAAGAAAADWdOc2J0Q29udHJhY3QAAAAQbnNidExvY2tDb250cmFjdAAAAA1kb3JhMkNvbnRyYWN0AAAADnF1aWNrU3dhcERlbGF5AAAAFnF1aWNrU3dhcExpbWl0RHVyYXRpb24AAAAUZG9yYTJMYXN0SGVpZ2h0TGltaXQEAAAAC2NoZWNrQ2FsbGVyCQEAAAAIdGhpc09ubHkAAAABBQAAAAFpAwkAAAAAAAACBQAAAAtjaGVja0NhbGxlcgUAAAALY2hlY2tDYWxsZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAQa2V5R05zYnRDb250cmFjdAUAAAANZ05zYnRDb250cmFjdAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABNrZXlOc2J0TG9ja0NvbnRyYWN0BQAAABBuc2J0TG9ja0NvbnRyYWN0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAEGtleURvcmEyQ29udHJhY3QFAAAADWRvcmEyQ29udHJhY3QJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEWtleVF1aWNrU3dhcERlbGF5BQAAAA5xdWlja1N3YXBEZWxheQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAZa2V5UXVpY2tTd2FwTGltaXREdXJhdGlvbgUAAAAWcXVpY2tTd2FwTGltaXREdXJhdGlvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAXa2V5RG9yYTJMYXN0SGVpZ2h0TGltaXQFAAAAFGRvcmEyTGFzdEhlaWdodExpbWl0BQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAACmNvbW1vblN3YXAAAAAEAAAACHN3YXBUeXBlAAAABmFtb3VudAAAAAdhY2NvdW50AAAABHR4SWQEAAAAC2NoZWNrQ2FsbGVyCQEAAAAIdGhpc09ubHkAAAABBQAAAAFpAwkAAAAAAAACBQAAAAtjaGVja0NhbGxlcgUAAAALY2hlY2tDYWxsZXIEAAAADW1pblN3YXBBbW91bnQJAQAAABFtaW5Td2FwQW1vdW50UkVBRAAAAAEFAAAACHN3YXBUeXBlBAAAAAt0b3RhbExvY2tlZAkBAAAAD3RvdGFsTG9ja2VkUkVBRAAAAAEFAAAACHN3YXBUeXBlBAAAABF0b3RhbExvY2tlZEJ5VXNlcgkBAAAAFXRvdGFsTG9ja2VkQnlVc2VyUkVBRAAAAAIFAAAACHN3YXBUeXBlBQAAAAdhY2NvdW50BAAAAAtub2RlQWRkcmVzcwkBAAAAFWdldFN0YWtpbmdOb2RlQnlJbmRleAAAAAEAAAAAAAAAAAAEAAAAFmJhbGFuY2VMb2NrTWF4SW50ZXJ2YWwDCQAAAAAAAAIFAAAAC25vZGVBZGRyZXNzBQAAAAdhY2NvdW50CQEAAAAbbm9kZUJhbGFuY2VMb2NrSW50ZXJ2YWxSRUFEAAAAAAkBAAAAF2JhbGFuY2VMb2NrSW50ZXJ2YWxSRUFEAAAAAQUAAAAIc3dhcFR5cGUEAAAAEHNlbGZVbmxvY2tIZWlnaHQJAABkAAAAAgUAAAAGaGVpZ2h0BQAAABZiYWxhbmNlTG9ja01heEludGVydmFsAwkAAGYAAAACBQAAAA1taW5Td2FwQW1vdW50BQAAAAZhbW91bnQJAQAAABFtaW5Td2FwQW1vdW50RkFJTAAAAAIFAAAACHN3YXBUeXBlBQAAAA1taW5Td2FwQW1vdW50AwUAAAAJaXNCbG9ja2VkCQEAAAAVZW1lcmdlbmN5U2h1dGRvd25GQUlMAAAAAAQAAAAJbGVhc2VQYXJ0AwkAAAAAAAACBQAAAAhzd2FwVHlwZQIAAAAFd2F2ZXMJAQAAABZwcmVwYXJlVW5sZWFzZUFuZExlYXNlAAAAAQAAAAAAAAAAAAUAAAADbmlsCQAETgAAAAIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABR0b3RhbExvY2tlZEJ5VXNlcktFWQAAAAIFAAAACHN3YXBUeXBlBQAAAAdhY2NvdW50CQAAZAAAAAIFAAAAEXRvdGFsTG9ja2VkQnlVc2VyBQAAAAZhbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABhnZXRCYWxhbmNlVW5sb2NrQmxvY2tLZXkAAAABBQAAAAdhY2NvdW50BQAAABBzZWxmVW5sb2NrSGVpZ2h0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAOdG90YWxMb2NrZWRLRVkAAAABBQAAAAhzd2FwVHlwZQkAAGQAAAACBQAAAAt0b3RhbExvY2tlZAUAAAAGYW1vdW50CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAdzd2FwS0VZAAAAAgUAAAAHYWNjb3VudAUAAAAEdHhJZAkBAAAAD3BlbmRpbmdTd2FwREFUQQAAAAMFAAAACHN3YXBUeXBlBQAAAAZhbW91bnQFAAAAEHNlbGZVbmxvY2tIZWlnaHQFAAAAA25pbAUAAAAJbGVhc2VQYXJ0CQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAA5jb21tb25XaXRoZHJhdwAAAAQAAAAHYWNjb3VudAAAAAVpbmRleAAAAAhzd2FwVHhJZAAAAAZyc2FTaWcEAAAAC3VzZXJBZGRyZXNzCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAAdhY2NvdW50BAAAAAtjaGVja0NhbGxlcgkBAAAACHRoaXNPbmx5AAAAAQUAAAABaQMJAAAAAAAAAgUAAAALY2hlY2tDYWxsZXIFAAAAC2NoZWNrQ2FsbGVyBAAAAAlkYXRhQXJyYXkJAQAAABJzd2FwRGF0YUZhaWxPclJFQUQAAAACBQAAAAdhY2NvdW50BQAAAAhzd2FwVHhJZAQAAAAQc2VsZlVubG9ja0hlaWdodAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACWRhdGFBcnJheQUAAAAUc0lkeFNlbGZVbmxvY2tIZWlnaHQEAAAACHN3YXBUeXBlCQABkQAAAAIFAAAACWRhdGFBcnJheQUAAAAMc0lkeFN3YXBUeXBlBAAAAAhpbkFtb3VudAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACWRhdGFBcnJheQUAAAAMc0lkeEluQW1vdW50BAAAAApzd2FwU3RhdHVzCQABkQAAAAIFAAAACWRhdGFBcnJheQUAAAAKc0lkeFN0YXR1cwQAAAALc3RhcnRIZWlnaHQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAlkYXRhQXJyYXkFAAAAD3NJZHhTdGFydEhlaWdodAQAAAAHaXNRdWljawkAAAAAAAACCQABkQAAAAIFAAAACWRhdGFBcnJheQUAAAALc0lkeElzUXVpY2sCAAAABHRydWUEAAAADWNoZWNrU3dhcFR5cGUDAwkBAAAAAiE9AAAAAgUAAAAIc3dhcFR5cGUCAAAABXdhdmVzCQEAAAACIT0AAAACBQAAAAhzd2FwVHlwZQIAAAAIbmV1dHJpbm8HCQAAAgAAAAEJAAEsAAAAAgIAAAAWVW5zdXBwb3J0ZWQgc3dhcCB0eXBlIAUAAAAIc3dhcFR5cGUGAwkAAAAAAAACBQAAAA1jaGVja1N3YXBUeXBlBQAAAA1jaGVja1N3YXBUeXBlBAAAAApvdXRGZWVQYXJ0CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAAA1vdXRGZWVQYXJ0S0VZAAAAAQUAAAAIc3dhcFR5cGUFAAAADkRFRkFVTFRTV0FQRkVFBAAAAAt0b3RhbExvY2tlZAkBAAAAD3RvdGFsTG9ja2VkUkVBRAAAAAEFAAAACHN3YXBUeXBlBAAAABF0b3RhbExvY2tlZEJ5VXNlcgkBAAAAFXRvdGFsTG9ja2VkQnlVc2VyUkVBRAAAAAIFAAAACHN3YXBUeXBlBQAAAAdhY2NvdW50BAAAAAx1bmxvY2tIZWlnaHQDBQAAAAdpc1F1aWNrCQAAZAAAAAIFAAAAC3N0YXJ0SGVpZ2h0CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzBQAAABFrZXlRdWlja1N3YXBEZWxheQMJAAAAAAAAAgUAAAAGcnNhU2lnAQAAAAAFAAAAEHNlbGZVbmxvY2tIZWlnaHQJAQAAABZyYW5kVW5sb2NrSGVpZ2h0T3JGYWlsAAAABQUAAAAIc3dhcFR4SWQFAAAABnJzYVNpZwUAAAAIc3dhcFR5cGUFAAAAC3N0YXJ0SGVpZ2h0CQAFFAAAAAIJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAlkYXRhQXJyYXkFAAAAC3NJZHhNaW5SYW5kCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAJZGF0YUFycmF5BQAAAAtzSWR4TWF4UmFuZAQAAAALaW5kZXhIZWlnaHQJAQAAABVnZXRIZWlnaHRQcmljZUJ5SW5kZXgAAAABBQAAAAVpbmRleAQAAAAPcHJldkluZGV4SGVpZ2h0CQEAAAAVZ2V0SGVpZ2h0UHJpY2VCeUluZGV4AAAAAQkAAGUAAAACBQAAAAVpbmRleAAAAAAAAAAAAQQAAAAMcHJpY2VCeUluZGV4CQEAAAAPZ2V0UHJpY2VIaXN0b3J5AAAAAQUAAAALaW5kZXhIZWlnaHQEAAAADSR0MDIyMzQzMjI1MzkDCQAAAAAAAAIFAAAACHN3YXBUeXBlAgAAAAV3YXZlcwkABRQAAAACCQEAAAAWY29udmVydFdhdmVzVG9OZXV0cmlubwAAAAIFAAAACGluQW1vdW50BQAAAAxwcmljZUJ5SW5kZXgFAAAAD25ldXRyaW5vQXNzZXRJZAkABRQAAAACCQEAAAAWY29udmVydE5ldXRyaW5vVG9XYXZlcwAAAAIFAAAACGluQW1vdW50BQAAAAxwcmljZUJ5SW5kZXgFAAAABHVuaXQEAAAADm91dEFtb3VudEdyb3NzCAUAAAANJHQwMjIzNDMyMjUzOQAAAAJfMQQAAAAIb3V0QXNzZXQIBQAAAA0kdDAyMjM0MzIyNTM5AAAAAl8yBAAAAAxwYXlvdXRzQXJyYXkJAQAAAAlhcHBseUZlZXMAAAACBQAAAA5vdXRBbW91bnRHcm9zcwUAAAAKb3V0RmVlUGFydAQAAAAMb3V0TmV0QW1vdW50CQABkQAAAAIFAAAADHBheW91dHNBcnJheQUAAAAMSWR4TmV0QW1vdW50BAAAAAxvdXRGZWVBbW91bnQJAAGRAAAAAgUAAAAMcGF5b3V0c0FycmF5BQAAAAxJZHhG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U3dhcFR5cGUEAAAACGluQW1vdW50CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAJZGF0YUFycmF5BQAAAAxzSWR4SW5BbW91bnQEAAAACnN3YXBTdGF0dXMJAAGRAAAAAgUAAAAJZGF0YUFycmF5BQAAAApzSWR4U3RhdHVzBAAAAAdpc1F1aWNrCQAAAAAAAAIJAAGRAAAAAgUAAAAJZGF0YUFycmF5BQAAAAtzSWR4SXNRdWljawIAAAAEdHJ1ZQQAAAANJHQwMjU0NDYyNTY1NAQAAAAHJG1hdGNoMAkAA/wAAAAEBQAAAAR0aGlzAgAAABZxdWlja1N3YXBMaW1pdFJFQURPTkxZCQAETAAAAAIJAAQlAAAAAQUAAAALdXNlckFkZHJlc3MFAAAAA25pbAUAAAADbmlsAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAooSW50LCBJbnQpBAAAAAFyBQAAAAckbWF0Y2gwCQAFFAAAAAIIBQAAAAFyAAAAAl8xCAUAAAABcgAAAAJfMgkAAAIAAAABAgAAABJUeXBlIGNhc3RpbmcgZXJyb3IEAAAAE3F1aWNrU3dhcExpbWl0VG90YWwIBQAAAA0kdDAyNTQ0NjI1NjU0AAAAAl8xBAAAABJxdWlja1N3YXBVc2VyU3BlbnQIBQAAAA0kdDAyNTQ0NjI1NjU0AAAAAl8yBAAAAA5xdWlja1N3YXBMaW1pdAkAAGUAAAACBQAAABNxdWlja1N3YXBMaW1pdFRvdGFsBQAAABJxdWlja1N3YXBVc2VyU3BlbnQEAAAADHByaWNlQnlJbmRleAkBAAAAD2dldFByaWNlSGlzdG9yeQAAAAEJAQAAABVnZXRIZWlnaHRQcmljZUJ5SW5kZXgAAAABBQAAAApwcmljZUluZGV4BAAAAA5zd2FwVXNkblZvbHVtZQMJAAAAAAAAAgUAAAAIc3dhcFR5cGUCAAAACG5ldXRyaW5vBQAAAAhpbkFtb3VudAkBAAAAFmNvbnZlcnRXYXZlc1RvTmV1dHJpbm8AAAACBQAAAAhpbkFtb3VudAUAAAAMcHJpY2VCeUluZGV4BAAAAAZjaGVja3MJAARMAAAAAgMJAQAAAAIhPQAAAAIFAAAACnN3YXBTdGF0dXMCAAAAB1BFTkRJTkcJAAACAAAAAQIAAAAfU3dhcCBoYXMgYmVlbiBhbHJlYWR5IHByb2Nlc3NlZAYJAARMAAAAAgMFAAAAB2lzUXVpY2sJAAACAAAAAQIAAAAhU3dhcCBoYXMgYmVlbiBhbHJlYWR5IGFjY2VsZXJhdGVkBgkABEwAAAACAwkAAGYAAAACBQAAAA5zd2FwVXNkblZvbHVtZQUAAAAOcXVpY2tTd2FwTGltaXQJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAA0WW91IGhhdmUgZXhjZWVkZWQgdGhlIHF1aWNrIHN3YXBzIGxpbWl0ISBSZXF1ZXN0ZWQ6IAkAAaQAAAABBQAAAA5zd2FwVXNkblZvbHVtZQIAAAANLCBhdmFpbGFibGU6IAkAAaQAAAABBQAAAA5xdWlja1N3YXBMaW1pdAYFAAAAA25pbAMJAAAAAAAAAgUAAAAGY2hlY2tzBQAAAAZjaGVja3MJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAB1rZXlRdWlja1N3YXBVc2VyU3BlbnRJblBlcmlvZAAAAAEFAAAAC3VzZXJBZGRyZXNzCQAAZAAAAAIFAAAADnN3YXBVc2RuVm9sdW1lBQAAABJxdWlja1N3YXBVc2VyU3BlbnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABprZXlVc2VyTGFzdFF1aWNrU3dhcEhlaWdodAAAAAEFAAAAC3VzZXJBZGRyZXNzBQAAAAZoZWlnaHQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAB3N3YXBLRVkAAAACBQAAAAdhY2NvdW50BQAAAAhzd2FwVHhJZAkBAAAAEmFjY2VsZXJhdGVTd2FwREFUQQAAAAEFAAAACWRhdGFBcnJheQUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAId2l0aGRyYXcAAAADAAAAB2FjY291bnQAAAAFaW5kZXgAAAAIc3dhcFR4SWQEAAAABnJlc3VsdAkAA/wAAAAEBQAAAAR0aGlzAgAAAA5jb21tb25X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", "chainId": 84, "height": 1917755, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9nuYJyRQF7GUgaR9wSrw27NxonyhMsEuzXLBBmZj1csK Next: BRTJwTHcVKR7RPDQ6xsKZmT8aWmzE93r5CA68kTTysan Diff:
OldNewDifferences
1-{-# STDLIB_VERSION 4 #-}
1+{-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b) = valueOrElse(getInteger(this, b), 0)
2121
2222 let i = ["GXxmZaCigPgJsT6d1cLr8nUXA65nGX8V7FuAzzrY8wQE", "3xumx4hrPpeeoo79HLGbZCgfz95L39ZFdxxwWeSUC2Pu", "D4CqtK5fBsnzRo33ZMhrM7niLseDH2uRoK6weBq2JQ3A", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"]
2323
24-let j = 30
25-
26-let k = "_"
27-
28-let l = "+"
29-
30-let m = 100000000
31-
32-let n = 1000000
33-
34-let o = 1000000
35-
36-let p = 20000
37-
38-let q = 0
39-
40-let r = 1
41-
42-let s = "neutrino_asset_id"
43-
44-let t = "bond_asset_id"
45-
46-let u = "auction_contract"
47-
48-let v = "liquidation_contract"
49-
50-let w = "rpd_contract"
51-
52-let x = "control_contract"
53-
54-let y = "balance_waves_lock_interval"
55-
56-let z = "balance_neutrino_lock_interval"
57-
58-let A = "min_waves_swap_amount"
59-
60-let B = "min_neutrino_swap_amount"
61-
62-let C = "node_oracle_provider"
63-
64-let D = "neutrinoOut_swap_feePart"
65-
66-let E = "wavesOut_swap_feePart"
67-
68-let F = "fees_manager_address"
69-
70-let G = "rpd_balance"
71-
72-func H (I) = ((G + "_") + toBase58String(I))
24+func j (k) = {
25+ let l = k
26+ if ($isInstanceOf(l, "Int"))
27+ then {
28+ let m = l
29+ m
30+ }
31+ else throw("Failed to cast into Int")
32+ }
7333
7434
75-let J = "price"
35+let n = "__"
7636
77-let K = "price_index"
37+let o = 100000000
7838
79-let L = "is_blocked"
39+let p = 1000000
8040
81-func M (N) = ((J + "_") + toString(N))
41+let q = 1000000
42+
43+let r = 20000
44+
45+let s = 0
46+
47+let t = 1
48+
49+let u = 2
50+
51+let v = "NSBT-USDT"
52+
53+let w = 60
54+
55+let x = 1440
56+
57+let y = "neutrino_asset_id"
58+
59+let z = "bond_asset_id"
60+
61+let A = "auction_contract"
62+
63+let B = "liquidation_contract"
64+
65+let C = "rpd_contract"
66+
67+let D = "control_contract"
68+
69+let E = "balance_waves_lock_interval"
70+
71+let F = "balance_neutrino_lock_interval"
72+
73+let G = "min_waves_swap_amount"
74+
75+let H = "min_neutrino_swap_amount"
76+
77+let I = "node_oracle_provider"
78+
79+let J = "neutrinoOut_swap_feePart"
80+
81+let K = "wavesOut_swap_feePart"
82+
83+let L = "rand_rsa_public"
84+
85+let M = "%s__gNsbtContract"
86+
87+let N = "%s__nsbtLockContract"
88+
89+let O = "%s__dora2Contract"
90+
91+let P = "%s__quickSwapDelay"
92+
93+let Q = "%s__quickSwapLimitDuration"
94+
95+let R = "%s__dora2LastHeightLimit"
96+
97+let S = "price"
98+
99+let T = "price_index"
100+
101+let U = "is_blocked"
102+
103+func V (W) = ((S + "_") + toString(W))
82104
83105
84-func O (P) = ((K + "_") + toString(P))
106+func X (Y) = ((T + "_") + toString(Y))
85107
86108
87-let Q = "balance_lock_"
88-
89-let R = (Q + "waves")
90-
91-let S = (Q + "neutrino")
92-
93-func T (U,I) = ((((G + "_") + toBase58String(I)) + "_") + toString(U))
109+func Z (aa) = c(makeString(["%s%d%s", "lease", toString(aa), "nodeAddress"], n))
94110
95111
96-func V (W) = (("cancel_lease_tx_reserve_fee" + "_") + W)
112+func ab (aa) = addressFromStringValue(Z(aa))
97113
98114
99-func X (Y) = ((R + "_") + Y)
115+func ac () = valueOrElse(getInteger(this, makeString(["%s%s", "lease", "sponsorshipWavesReserve"], n)), (1000 * o))
100116
101117
102-func Z (Y) = ((S + "_") + Y)
118+func ad (ae) = ("balance_unlock_block_" + ae)
103119
104120
105-func aa (Y) = ("balance_unlock_block_" + Y)
121+func af (ag) = makeString(["%s%d%s", "lease", toString(ag), "id"], n)
106122
107123
108-func ab (U) = (("rpd_profit" + "_") + toString(U))
124+func ah (ag) = makeString(["%s%d%s", "lease", toString(ag), "amount"], n)
109125
110126
111-func ac (ad,ae) = fraction(fraction(ad, o, ae), m, n)
127+func ai (aj) = (("min_" + aj) + "_swap_amount")
112128
113129
114-func af (ad,ae) = fraction(fraction(ad, ae, o), n, m)
130+func ak (aj) = ("balance_lock_" + aj)
115131
116132
117-func ag (ad,ae) = af(ad, ae)
133+func al (aj,ae) = makeString(["balance_lock", aj, ae], "_")
118134
119135
120-func ah (ai) = split(ai, ",")
136+func am (aj) = (("balance_" + aj) + "_lock_interval")
121137
122138
123-let aj = c(v)
139+func an (aj) = (("balance_" + aj) + "_lock_interval_minimum")
124140
125-let ak = c(s)
126141
127-let al = fromBase58String(ak)
142+func ao () = "balance_node_lock_interval"
128143
129-let am = c(u)
130144
131-let an = c(w)
145+func ap (aj) = (aj + "Out_swap_feePart")
132146
133-let ao = c(x)
134147
135-let ap = e(ao, K)
148+func aq (ar) = makeString(["%s%s", "quickSwapUserSpentInPeriod", toString(ar)], n)
136149
137-let aq = h(ao, L)
138150
139-let ar = fromBase58String(c(C))
151+func as (ar) = makeString(["%s%s", "userLastQuickSwapHeight", toString(ar)], n)
140152
141-let as = a(y)
142153
143-let at = a(z)
154+func at (au) = makeString(["%s%s", "price", au], n)
144155
145-let au = a(A)
146156
147-let av = a(B)
157+func av (au) = makeString(["%s%s", "lastHeight", au], n)
148158
149-let aw = fromBase58String("BGhPYquXSK6UYjnPLEn94gFhetp4Jvf7toekEY4x1VDH")
150159
151-let ax = fromBase58String("975akZBfnMj513U7MZaHKzQrmsEx5aE3wdWKTrHBhbjF")
160+func aw (aj) = valueOrElse(getInteger(this, ai(aj)), 0)
152161
153-let ay = this
154162
155-let az = e(ao, J)
163+func ax (aj) = valueOrElse(getInteger(this, ak(aj)), 0)
156164
157-let aA = a(S)
158165
159-let aB = a(R)
166+func ay (aj,ae) = valueOrElse(getInteger(this, al(aj, ae)), 0)
160167
161-let aC = (wavesBalance(ay).regular - aB)
162168
163-let aD = (((aA + value(assetInfo(al)).quantity) - assetBalance(ay, al)) - assetBalance(addressFromStringValue(aj), al))
169+func az (aj) = valueOrElse(getInteger(this, am(aj)), x)
164170
165-let aE = (af(aC, az) - aD)
166171
167-let aF = (aD - af(aC, az))
172+func aA (aj) = valueOrElse(getInteger(this, an(aj)), w)
168173
169-func aG (aH) = {
170- let aI = 100000
171- let aJ = 1000
172- let aK = af(aI, az)
173- let aL = (aK * 2)
174- let aM = fraction(aK, aJ, 100)
175- let aN = value(aH.minSponsoredAssetFee)
176- if (if ((aN >= aL))
177- then (aM >= aN)
174+
175+func aB () = valueOrElse(getInteger(this, ao()), 1)
176+
177+
178+func aC (aD,aE) = fraction(fraction(aD, q, aE), o, p)
179+
180+
181+func aF (aD,aE) = fraction(fraction(aD, aE, q), p, o)
182+
183+
184+func aG (aD,aE) = aF(aD, aE)
185+
186+
187+func aH (aI) = split(aI, ",")
188+
189+
190+func aJ (aj,aK) = throw(((("The specified amount in " + aj) + " swap is less than the required minimum of ") + toString(aK)))
191+
192+
193+func aL () = throw("contract is blocked by EMERGENCY SHUTDOWN actions untill reactivation by emergency oracles")
194+
195+
196+func aM (Y,aN,aO,aP,aQ) = throw(((((((((("invalid price history index: index=" + toString(Y)) + " priceIndex=") + toString(aN)) + " indexHeight=") + toString(aO)) + " unlockHeight=") + toString(aP)) + " prevIndexHeight=") + toString(aQ)))
197+
198+
199+let aR = c(B)
200+
201+let aS = fromBase58String(c(y))
202+
203+let aT = c(A)
204+
205+let aU = c(C)
206+
207+let aV = c(D)
208+
209+let aN = e(aV, T)
210+
211+let aW = h(aV, U)
212+
213+let aX = fromBase58String(c(I))
214+
215+let aY = fromBase58String("BGhPYquXSK6UYjnPLEn94gFhetp4Jvf7toekEY4x1VDH")
216+
217+let aZ = fromBase58String("975akZBfnMj513U7MZaHKzQrmsEx5aE3wdWKTrHBhbjF")
218+
219+let ba = fromBase64String(valueOrErrorMessage(getString(this, L), "RSA public key has not been specified"))
220+
221+let bb = this
222+
223+let bc = e(aV, S)
224+
225+let bd = ax("neutrino")
226+
227+let be = ax("waves")
228+
229+let bf = (wavesBalance(bb).regular - be)
230+
231+let bg = (((bd + value(assetInfo(aS)).quantity) - assetBalance(bb, aS)) - assetBalance(addressFromStringValue(aR), aS))
232+
233+let bh = (aF(bf, bc) - bg)
234+
235+let bi = (bg - aF(bf, bc))
236+
237+func bj (bk) = {
238+ let bl = 100000
239+ let bm = 1000
240+ let bn = aF(bl, bc)
241+ let bo = (bn * 2)
242+ let bp = fraction(bn, bm, 100)
243+ let bq = value(bk.minSponsoredAssetFee)
244+ if (if ((bq >= bo))
245+ then (bp >= bq)
178246 else false)
179- then (aH.assetId == al)
247+ then (bk.assetId == aS)
180248 else false
181249 }
182250
183251
184-func aO (I) = e(an, H(I))
252+func br (W) = e(aV, V(W))
185253
186254
187-func aP (N) = e(ao, M(N))
255+func bs (Y) = e(aV, X(Y))
188256
189257
190-func aQ (P) = e(ao, O(P))
258+let bt = 1
259+
260+let bu = 2
261+
262+let bv = 3
263+
264+let bw = 4
265+
266+let bx = 5
267+
268+let by = 6
269+
270+let bz = 7
271+
272+let bA = 8
273+
274+let bB = 9
275+
276+let bC = 10
277+
278+let bD = 11
279+
280+let bE = 12
281+
282+let bF = 13
283+
284+let bG = 14
285+
286+let bH = 15
287+
288+let bI = 16
289+
290+let bJ = 17
291+
292+func bK (ar,bL) = makeString(["%s%s", ar, bL], n)
191293
192294
193-func aR (W) = a(V(W))
295+func bM (aj,bN,bO,aE,bP,bQ,bR,bS,bT,bU,bV,bW,Y,bX,bY,bZ,ca) = makeString(["%s%s%d%d%d%d%d%d%d%d%d%d%d%s", aj, bN, bO, aE, bP, bQ, bR, bS, bT, bU, bV, bW, Y, bX, bY, bZ, ca], n)
194296
195297
196-func aS (Y) = a(X(Y))
298+func cb (aj,cc,bV) = bM(aj, "PENDING", toString(cc), "0", "0", "0", toString(height), toString(lastBlock.timestamp), "0", "0", toString(bV), "0", "0", "NULL", toString(aA(aj)), toString(az(aj)), toString(false))
197299
198300
199-func aT (Y) = a(Z(Y))
301+func cd (ce) = bM(ce[bt], ce[bu], ce[bv], ce[bw], ce[bx], ce[by], ce[bz], ce[bA], ce[bB], ce[bC], ce[bD], ce[bE], ce[bF], ce[bG], ce[bH], ce[bI], toString(true))
200302
201303
202-func aU (Y) = a(aa(Y))
304+func cf (ce,aE,bP,bQ,bW,Y,bX) = bM(ce[bt], "FINISHED", ce[bv], toString(aE), toString(bP), toString(bQ), ce[bz], ce[bA], toString(height), toString(lastBlock.timestamp), ce[bD], toString(bW), toString(Y), bX, ce[bH], ce[bI], ce[bJ])
203305
204306
205-func aV (U) = a(ab(U))
206-
207-
208-func aW (aX,aY) = {
209- let aZ = fraction(aX, aY, n)
210-[(aX - aZ), aZ]
307+func cg (ar,ch) = {
308+ let ci = bK(ar, ch)
309+ split(valueOrErrorMessage(getString(this, ci), ("no swap data for " + ci)), n)
211310 }
212311
213312
214-@Callable(ba)
215-func swapWavesToNeutrino () = {
216- let bb = value(ba.payments[0])
217- let bc = toString(ba.caller)
218- if ((au > bb.amount))
219- then throw((("The specified Waves amount is less than the required minimum of " + toString(au)) + " wavelets."))
220- else if (isDefined(bb.assetId))
221- then throw("Only Waves token is allowed for swapping.")
222- else if (aq)
223- then throw("contract is blocked by EMERGENCY SHUTDOWN actions untill reactivation by emergency oracles")
224- else if ((aU(bc) > height))
225- then throw((("await " + toString((aU(bc) - height))) + " blocks"))
226- else if (if ((aT(bc) != 0))
227- then true
228- else (aS(bc) != 0))
229- then throw("please withdraw locked funds first")
230- else [IntegerEntry(X(bc), bb.amount), IntegerEntry(aa(bc), (height + as)), IntegerEntry(R, (aB + bb.amount))]
313+func cj (ck,cl) = {
314+ let cm = fraction(ck, cl, p)
315+[(ck - cm), cm, ck]
316+ }
317+
318+
319+func cn (bL,co,aj,bR,cp) = {
320+ let cq = rsaVerify_16Kb(SHA256, toBytes(bL), co, ba)
321+ if (!(cq))
322+ then throw("invalid RSA signature")
323+ else {
324+ let cr = cp._1
325+ let cs = cp._2
326+ let ct = (toInt(sha256_16Kb(co)) % (cs - cr))
327+ let cu = (cr + (if ((0 > ct))
328+ then -(ct)
329+ else ct))
330+ (bR + cu)
331+ }
332+ }
333+
334+
335+func cv (cw) = if ((0 > cw))
336+ then -(cw)
337+ else cw
338+
339+
340+func cx (cy) = {
341+ let cz = ((wavesBalance(bb).available - cy) - ac())
342+ let cA = a(ah(0))
343+ let cB = a(ah(1))
344+ let cC = (cz + cA)
345+ let cD = (cz + cB)
346+ if (if ((cC > 0))
347+ then true
348+ else (cD > 0))
349+ then {
350+ let cE = cv((cC - cB))
351+ let cF = cv((cD - cA))
352+ if ((cF >= cE))
353+ then $Tuple2(0, cC)
354+ else $Tuple2(1, cD)
355+ }
356+ else $Tuple2(-1, 0)
357+ }
358+
359+
360+func cG (cy) = {
361+ let cH = cx(cy)
362+ let ag = cH._1
363+ let cI = cH._2
364+ if ((cI > 0))
365+ then {
366+ let cJ = af(ag)
367+ let cK = getBinary(this, cJ)
368+ let cL = if (isDefined(cK))
369+ then [LeaseCancel(value(cK))]
370+ else nil
371+ let cM = ah(ag)
372+ let cN = Lease(ab(ag), cI)
373+ (cL ++ [cN, BinaryEntry(cJ, calculateLeaseId(cN)), IntegerEntry(ah(ag), cI)])
374+ }
375+ else nil
376+ }
377+
378+
379+func cO () = {
380+ let cP = addressFromStringValue(getStringValue(this, O))
381+ $Tuple2(valueOrErrorMessage(getInteger(cP, at(v)), "NSBT price is undefined"), valueOrElse(getInteger(cP, av(v)), 0))
382+ }
383+
384+
385+func cQ (cR) = if ((cR.caller != this))
386+ then throw("Permission denied: this contract only allowed")
387+ else true
388+
389+
390+@Callable(cR)
391+func prepareUnleaseAndLeaseWrapper (cy) = {
392+ let cS = [cQ(cR)]
393+ if ((cS == cS))
394+ then cG(cy)
395+ else throw("Strict value is not equal to itself.")
231396 }
232397
233398
234399
235-@Callable(ba)
236-func swapNeutrinoToWaves () = {
237- let bb = value(ba.payments[0])
238- let bc = toString(ba.caller)
239- if ((av > bb.amount))
240- then throw((("The specified Neutrino amount is less than the required minimum of " + toString(av)) + " Neutrino cents."))
241- else if (aq)
242- then throw("The contract is blocked by EMERGENCY SHUTDOWN. Please wait for reactivation by emergency oracles.")
243- else if ((bb.assetId != al))
244- then throw("Only appropriate Neutrino tokens are allowed for swapping.")
245- else if ((aU(bc) > height))
246- then throw((("await " + toString((aU(bc) - height))) + " blocks"))
247- else if (if ((aT(bc) != 0))
248- then true
249- else (aS(bc) != 0))
250- then throw("please withdraw locked funds first")
251- else [IntegerEntry(Z(bc), bb.amount), IntegerEntry(aa(bc), (height + at)), IntegerEntry(S, (aA + bb.amount))]
400+@Callable(cR)
401+func constructor (cT,cU,cV,cW,cX,cY,cZ,da,db,dc,dd,de,df,dg) = {
402+ let cS = cQ(cR)
403+ if ((cS == cS))
404+ then [StringEntry(y, cT), StringEntry(z, cU), StringEntry(A, cV), StringEntry(B, cW), StringEntry(C, cX), StringEntry(D, cY), StringEntry(I, cZ), StringEntry(L, da), IntegerEntry(E, db), IntegerEntry(F, dc), IntegerEntry(G, dd), IntegerEntry(H, de), IntegerEntry(J, df), IntegerEntry(K, dg)]
405+ else throw("Strict value is not equal to itself.")
252406 }
253407
254408
255409
256-@Callable(ba)
257-func withdraw (bc,P) = {
258- let bd = addressFromStringValue(bc)
259- let be = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, F), (F + " is not specified"))), (F + " invalid address format"))
260- let bf = aU(bc)
261- let bg = aS(bc)
262- let bh = aT(bc)
263- let bi = aQ(P)
264- let bj = aQ((P - 1))
265- let bk = aP(bi)
266- let bl = af(bg, bk)
267- let bm = ac(bh, bk)
268- let bn = valueOrElse(getInteger(this, D), p)
269- let bo = valueOrElse(getInteger(this, E), p)
270- let bp = aW(bl, bn)
271- let bq = aW(bm, bo)
272- if (aq)
273- then throw("contract is blocked by EMERGENCY SHUTDOWN actions untill reactivation by emergency oracles")
274- else if ((bf > height))
275- then throw((("please wait for: " + toString(bf)) + " block height to withdraw WAVES funds"))
276- else if (if (if ((P > ap))
277- then true
278- else (bf > bi))
279- then true
280- else if ((bj != 0))
281- then (bj >= bf)
282- else false)
283- then throw(((((((((("invalid price history index: index=" + toString(P)) + " priceIndex=") + toString(ap)) + " indexHeight=") + toString(bi)) + " unlockHeight=") + toString(bf)) + " prevIndexHeight=") + toString(bj)))
284- else if (if ((0 >= bl))
285- then (0 >= bm)
286- else false)
287- then throw("balance equals zero")
288- else if (if ((0 > bn))
289- then true
290- else (0 > bo))
291- then throw(((("invalid fees data: neutrinoOutFeePart=" + toString(bn)) + " wavesOutFeePart=") + toString(bo)))
292- else [IntegerEntry(X(bc), 0), IntegerEntry(Z(bc), 0), IntegerEntry(R, (aB - bg)), IntegerEntry(S, (aA - bh)), ScriptTransfer(bd, bq[q], unit), ScriptTransfer(be, bq[r], unit), ScriptTransfer(bd, bp[q], al), ScriptTransfer(be, bp[r], al)]
410+@Callable(cR)
411+func constructorV2 (dh,di,cP,dj,dk,dl) = {
412+ let cS = cQ(cR)
413+ if ((cS == cS))
414+ then [StringEntry(M, dh), StringEntry(N, di), StringEntry(O, cP), IntegerEntry(P, dj), IntegerEntry(Q, dk), IntegerEntry(R, dl)]
415+ else throw("Strict value is not equal to itself.")
293416 }
294417
295418
296419
297-@Callable(ba)
298-func transferToAuction () = {
299- let br = (aD - assetBalance(addressFromStringValue(am), aw))
300- let bs = (aE - assetBalance(addressFromStringValue(aj), al))
301- if (aq)
302- then throw("contract is blocked by EMERGENCY SHUTDOWN actions untill reactivation by emergency oracles")
303- else if ((br > (1 * n)))
304- then [ScriptTransfer(addressFromStringValue(am), br, aw)]
305- else if ((bs >= (1 * n)))
306- then [ScriptTransfer(addressFromStringValue(aj), bs, al)]
307- else throw(((((((("bond were generated or do not need it. Deficit:" + toString(br)) + "|") + toString(0)) + ". Surplus:") + toString(bs)) + "|") + toString(aE)))
420+@Callable(cR)
421+func commonSwap (aj,aD,dm,bL) = {
422+ let cS = cQ(cR)
423+ if ((cS == cS))
424+ then {
425+ let aK = aw(aj)
426+ let dn = ax(aj)
427+ let do = ay(aj, dm)
428+ let dp = Z(0)
429+ let dq = if ((dp == dm))
430+ then aB()
431+ else az(aj)
432+ let bV = (height + dq)
433+ if ((aK > aD))
434+ then aJ(aj, aK)
435+ else if (aW)
436+ then aL()
437+ else {
438+ let dr = if ((aj == "waves"))
439+ then cG(0)
440+ else nil
441+ ([IntegerEntry(al(aj, dm), (do + aD)), IntegerEntry(ad(dm), bV), IntegerEntry(ak(aj), (dn + aD)), StringEntry(bK(dm, bL), cb(aj, aD, bV))] ++ dr)
442+ }
443+ }
444+ else throw("Strict value is not equal to itself.")
308445 }
309446
310447
311-@Verifier(aH)
312-func bt () = {
313- let bu = toBase58String(aH.id)
314- let U = ((((if (sigVerify(aH.bodyBytes, aH.proofs[0], fromBase58String(i[0])))
448+
449+@Callable(cR)
450+func commonWithdraw (dm,Y,ch,co) = {
451+ let ar = addressFromStringValue(dm)
452+ let cS = cQ(cR)
453+ if ((cS == cS))
454+ then {
455+ let ce = cg(dm, ch)
456+ let bV = parseIntValue(ce[bD])
457+ let aj = ce[bt]
458+ let bO = parseIntValue(ce[bv])
459+ let ds = ce[bu]
460+ let bR = parseIntValue(ce[bz])
461+ let ca = (ce[bJ] == "true")
462+ let dt = if (if ((aj != "waves"))
463+ then (aj != "neutrino")
464+ else false)
465+ then throw(("Unsupported swap type " + aj))
466+ else true
467+ if ((dt == dt))
468+ then {
469+ let du = valueOrElse(getInteger(this, ap(aj)), r)
470+ let dn = ax(aj)
471+ let do = ay(aj, dm)
472+ let aP = if (ca)
473+ then (bR + getIntegerValue(this, P))
474+ else if ((co == base58''))
475+ then bV
476+ else cn(ch, co, aj, bR, $Tuple2(parseIntValue(ce[bH]), parseIntValue(ce[bI])))
477+ let aO = bs(Y)
478+ let aQ = bs((Y - 1))
479+ let dv = br(aO)
480+ let dw = if ((aj == "waves"))
481+ then $Tuple2(aF(bO, dv), aS)
482+ else $Tuple2(aC(bO, dv), unit)
483+ let dx = dw._1
484+ let dy = dw._2
485+ let dz = cj(dx, du)
486+ let bP = dz[s]
487+ let bQ = dz[t]
488+ let dA = [if (aW)
489+ then aL()
490+ else true, if ((ds != "PENDING"))
491+ then throw("swap has been already processed")
492+ else true, if ((aP > height))
493+ then throw((("please wait for: " + toString(aP)) + " block height to withdraw funds"))
494+ else true, if (if (if ((Y > aN))
495+ then true
496+ else (aP > aO))
497+ then true
498+ else if ((aQ != 0))
499+ then (aQ >= aP)
500+ else false)
501+ then aM(Y, aN, aO, aP, aQ)
502+ else true, if ((0 >= dz[u]))
503+ then throw("balance equals zero")
504+ else true, if (if ((0 > du))
505+ then true
506+ else (du >= p))
507+ then throw(((("invalid outFeePart config for " + aj) + " swap: outFeePart=") + toString(du)))
508+ else true]
509+ if ((dA == dA))
510+ then {
511+ let dr = if (if ((aj == "neutrino"))
512+ then (dx > 0)
513+ else false)
514+ then invoke(this, "prepareUnleaseAndLeaseWrapper", [dx], nil)
515+ else unit
516+ if ((dr == dr))
517+ then {
518+ let dB = invoke(addressFromStringValue(getStringValue(this, M)), "deposit", nil, [AttachedPayment(dy, bQ)])
519+ if ((dB == dB))
520+ then [IntegerEntry(al(aj, dm), (do - bO)), IntegerEntry(ak(aj), (dn - bO)), ScriptTransfer(ar, bP, dy), StringEntry(bK(dm, ch), cf(ce, dv, bP, bQ, aP, Y, toBase58String(cR.transactionId)))]
521+ else throw("Strict value is not equal to itself.")
522+ }
523+ else throw("Strict value is not equal to itself.")
524+ }
525+ else throw("Strict value is not equal to itself.")
526+ }
527+ else throw("Strict value is not equal to itself.")
528+ }
529+ else throw("Strict value is not equal to itself.")
530+ }
531+
532+
533+
534+@Callable(cR)
535+func swap (aj) = {
536+ let dC = true
537+ let dD = (aj == "waves")
538+ let dE = (aj == "neutrino")
539+ let dF = value(cR.payments[0])
540+ let dm = toString(cR.caller)
541+ let ch = toBase58String(cR.transactionId)
542+ if (if (dD)
543+ then (dF.assetId != unit)
544+ else false)
545+ then throw("Only Waves token is allowed for swapping.")
546+ else if (if (dE)
547+ then (dF.assetId != aS)
548+ else false)
549+ then throw("Only appropriate Neutrino tokens are allowed for swapping.")
550+ else if (if (!(dD))
551+ then !(dE)
552+ else false)
553+ then throw("Invalid swap type")
554+ else {
555+ let dG = invoke(this, "commonSwap", [aj, dF.amount, dm, ch], nil)
556+ if ((dG == dG))
557+ then {
558+ let dH = if (dC)
559+ then invoke(this, "accelerate", [dm, ch], nil)
560+ else true
561+ if ((dH == dH))
562+ then nil
563+ else throw("Strict value is not equal to itself.")
564+ }
565+ else throw("Strict value is not equal to itself.")
566+ }
567+ }
568+
569+
570+
571+@Callable(cR)
572+func accelerate (dm,ch) = {
573+ let cS = cQ(cR)
574+ if ((cS == cS))
575+ then {
576+ let ar = addressFromStringValue(dm)
577+ let ce = cg(dm, ch)
578+ let aj = ce[bt]
579+ let bO = parseIntValue(ce[bv])
580+ let ds = ce[bu]
581+ let ca = (ce[bJ] == "true")
582+ let dI = {
583+ let l = invoke(this, "quickSwapLimitREADONLY", [toString(ar)], nil)
584+ if ($isInstanceOf(l, "(Int, Int)"))
585+ then {
586+ let dJ = l
587+ $Tuple2(dJ._1, dJ._2)
588+ }
589+ else throw("Type casting error")
590+ }
591+ let dK = dI._1
592+ let dL = dI._2
593+ let dM = (dK - dL)
594+ let dv = br(bs(aN))
595+ let dN = if ((aj == "neutrino"))
596+ then bO
597+ else aF(bO, dv)
598+ let dA = [if ((ds != "PENDING"))
599+ then throw("Swap has been already processed")
600+ else true, if (ca)
601+ then throw("Swap has been already accelerated")
602+ else true, if ((dN > dM))
603+ then throw(((("You have exceeded the quick swaps limit! Requested: " + toString(dN)) + ", available: ") + toString(dM)))
604+ else true]
605+ if ((dA == dA))
606+ then [IntegerEntry(aq(ar), (dN + dL)), IntegerEntry(as(ar), height), StringEntry(bK(dm, ch), cd(ce))]
607+ else throw("Strict value is not equal to itself.")
608+ }
609+ else throw("Strict value is not equal to itself.")
610+ }
611+
612+
613+
614+@Callable(cR)
615+func withdraw (dm,Y,ch) = {
616+ let dO = invoke(this, "commonWithdraw", [dm, Y, ch, base58''], nil)
617+ if ((dO == dO))
618+ then nil
619+ else throw("Strict value is not equal to itself.")
620+ }
621+
622+
623+
624+@Callable(cR)
625+func withdrawRand (dm,Y,ch,co) = {
626+ let dO = invoke(this, "commonWithdraw", [dm, Y, ch, co], nil)
627+ if ((dO == dO))
628+ then nil
629+ else throw("Strict value is not equal to itself.")
630+ }
631+
632+
633+
634+@Callable(cR)
635+func transferToAuction () = {
636+ let dP = (bg - assetBalance(addressFromStringValue(aT), aY))
637+ let dQ = (bh - assetBalance(addressFromStringValue(aR), aS))
638+ if (aW)
639+ then throw("contract is blocked by EMERGENCY SHUTDOWN actions untill reactivation by emergency oracles")
640+ else if ((dP > (1 * p)))
641+ then [ScriptTransfer(addressFromStringValue(aT), dP, aY)]
642+ else if ((dQ >= (1 * p)))
643+ then [ScriptTransfer(addressFromStringValue(aR), dQ, aS)]
644+ else throw(((((((("bond were generated or do not need it. Deficit:" + toString(dP)) + "|") + toString(0)) + ". Surplus:") + toString(dQ)) + "|") + toString(bh)))
645+ }
646+
647+
648+
649+@Callable(cR)
650+func acceptWaves () = if ((cR.caller != addressFromStringValue(aT)))
651+ then throw("Currently only auction contract is allowed to call")
652+ else $Tuple2(cG(0), "success")
653+
654+
655+
656+@Callable(cR)
657+func calcTotalQuickSwapLimitREADONLY (dR) = {
658+ let dS = cO()
659+ let dT = dS._1
660+ let dU = dS._2
661+ let dV = if (((height - dU) > getIntegerValue(this, R)))
662+ then throw("NSBT price is outdated")
663+ else true
664+ if ((dV == dV))
665+ then $Tuple2(nil, fraction(dR, dT, o))
666+ else throw("Strict value is not equal to itself.")
667+ }
668+
669+
670+
671+@Callable(cR)
672+func quickSwapLimitREADONLY (dW) = {
673+ let dX = toString((10000 * 100000000))
674+ let dY = toString((100000 * 1000000))
675+ let dZ = toString(940)
676+ $Tuple2(nil, makeString(["%d%d%d", dX, dY, dZ], n))
677+ }
678+
679+
680+@Verifier(bk)
681+func ea () = {
682+ let eb = toBase58String(bk.id)
683+ let ec = 3
684+ let ed = ((((if (sigVerify(bk.bodyBytes, bk.proofs[0], fromBase58String(i[0])))
315685 then 1
316- else 0) + (if (sigVerify(aH.bodyBytes, aH.proofs[1], fromBase58String(i[1])))
686+ else 0) + (if (sigVerify(bk.bodyBytes, bk.proofs[1], fromBase58String(i[1])))
317687 then 1
318- else 0)) + (if (sigVerify(aH.bodyBytes, aH.proofs[2], fromBase58String(i[2])))
688+ else 0)) + (if (sigVerify(bk.bodyBytes, bk.proofs[2], fromBase58String(i[2])))
319689 then 1
320- else 0)) + (if (sigVerify(aH.bodyBytes, aH.proofs[3], fromBase58String(i[3])))
690+ else 0)) + (if (sigVerify(bk.bodyBytes, bk.proofs[3], fromBase58String(i[3])))
321691 then 2
322692 else 0))
323- let bv = aH
324- if (if ($isInstanceOf(bv, "LeaseCancelTransaction"))
325- then true
326- else $isInstanceOf(bv, "LeaseTransaction"))
693+ let ee = (ed >= ec)
694+ let l = bk
695+ if ($isInstanceOf(l, "SponsorFeeTransaction"))
327696 then {
328- let bw = bv
329- sigVerify(bw.bodyBytes, bw.proofs[0], ar)
697+ let ef = l
698+ if (ee)
699+ then bj(ef)
700+ else false
330701 }
331- else if ($isInstanceOf(bv, "SponsorFeeTransaction"))
332- then {
333- let bx = bv
334- if (aG(bx))
335- then (U >= 3)
336- else false
337- }
338- else (U >= 3)
702+ else ee
339703 }
340704
Full:
OldNewDifferences
1-{-# STDLIB_VERSION 4 #-}
1+{-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b) = valueOrElse(getInteger(this, b), 0)
55
66
77 func c (b) = valueOrElse(getString(this, b), "")
88
99
1010 func d (b) = valueOrElse(getBoolean(this, b), false)
1111
1212
1313 func e (f,b) = valueOrElse(getInteger(addressFromStringValue(f), b), 0)
1414
1515
1616 func g (f,b) = valueOrElse(getString(addressFromStringValue(f), b), "")
1717
1818
1919 func h (f,b) = valueOrElse(getBoolean(addressFromStringValue(f), b), false)
2020
2121
2222 let i = ["GXxmZaCigPgJsT6d1cLr8nUXA65nGX8V7FuAzzrY8wQE", "3xumx4hrPpeeoo79HLGbZCgfz95L39ZFdxxwWeSUC2Pu", "D4CqtK5fBsnzRo33ZMhrM7niLseDH2uRoK6weBq2JQ3A", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"]
2323
24-let j = 30
25-
26-let k = "_"
27-
28-let l = "+"
29-
30-let m = 100000000
31-
32-let n = 1000000
33-
34-let o = 1000000
35-
36-let p = 20000
37-
38-let q = 0
39-
40-let r = 1
41-
42-let s = "neutrino_asset_id"
43-
44-let t = "bond_asset_id"
45-
46-let u = "auction_contract"
47-
48-let v = "liquidation_contract"
49-
50-let w = "rpd_contract"
51-
52-let x = "control_contract"
53-
54-let y = "balance_waves_lock_interval"
55-
56-let z = "balance_neutrino_lock_interval"
57-
58-let A = "min_waves_swap_amount"
59-
60-let B = "min_neutrino_swap_amount"
61-
62-let C = "node_oracle_provider"
63-
64-let D = "neutrinoOut_swap_feePart"
65-
66-let E = "wavesOut_swap_feePart"
67-
68-let F = "fees_manager_address"
69-
70-let G = "rpd_balance"
71-
72-func H (I) = ((G + "_") + toBase58String(I))
24+func j (k) = {
25+ let l = k
26+ if ($isInstanceOf(l, "Int"))
27+ then {
28+ let m = l
29+ m
30+ }
31+ else throw("Failed to cast into Int")
32+ }
7333
7434
75-let J = "price"
35+let n = "__"
7636
77-let K = "price_index"
37+let o = 100000000
7838
79-let L = "is_blocked"
39+let p = 1000000
8040
81-func M (N) = ((J + "_") + toString(N))
41+let q = 1000000
42+
43+let r = 20000
44+
45+let s = 0
46+
47+let t = 1
48+
49+let u = 2
50+
51+let v = "NSBT-USDT"
52+
53+let w = 60
54+
55+let x = 1440
56+
57+let y = "neutrino_asset_id"
58+
59+let z = "bond_asset_id"
60+
61+let A = "auction_contract"
62+
63+let B = "liquidation_contract"
64+
65+let C = "rpd_contract"
66+
67+let D = "control_contract"
68+
69+let E = "balance_waves_lock_interval"
70+
71+let F = "balance_neutrino_lock_interval"
72+
73+let G = "min_waves_swap_amount"
74+
75+let H = "min_neutrino_swap_amount"
76+
77+let I = "node_oracle_provider"
78+
79+let J = "neutrinoOut_swap_feePart"
80+
81+let K = "wavesOut_swap_feePart"
82+
83+let L = "rand_rsa_public"
84+
85+let M = "%s__gNsbtContract"
86+
87+let N = "%s__nsbtLockContract"
88+
89+let O = "%s__dora2Contract"
90+
91+let P = "%s__quickSwapDelay"
92+
93+let Q = "%s__quickSwapLimitDuration"
94+
95+let R = "%s__dora2LastHeightLimit"
96+
97+let S = "price"
98+
99+let T = "price_index"
100+
101+let U = "is_blocked"
102+
103+func V (W) = ((S + "_") + toString(W))
82104
83105
84-func O (P) = ((K + "_") + toString(P))
106+func X (Y) = ((T + "_") + toString(Y))
85107
86108
87-let Q = "balance_lock_"
88-
89-let R = (Q + "waves")
90-
91-let S = (Q + "neutrino")
92-
93-func T (U,I) = ((((G + "_") + toBase58String(I)) + "_") + toString(U))
109+func Z (aa) = c(makeString(["%s%d%s", "lease", toString(aa), "nodeAddress"], n))
94110
95111
96-func V (W) = (("cancel_lease_tx_reserve_fee" + "_") + W)
112+func ab (aa) = addressFromStringValue(Z(aa))
97113
98114
99-func X (Y) = ((R + "_") + Y)
115+func ac () = valueOrElse(getInteger(this, makeString(["%s%s", "lease", "sponsorshipWavesReserve"], n)), (1000 * o))
100116
101117
102-func Z (Y) = ((S + "_") + Y)
118+func ad (ae) = ("balance_unlock_block_" + ae)
103119
104120
105-func aa (Y) = ("balance_unlock_block_" + Y)
121+func af (ag) = makeString(["%s%d%s", "lease", toString(ag), "id"], n)
106122
107123
108-func ab (U) = (("rpd_profit" + "_") + toString(U))
124+func ah (ag) = makeString(["%s%d%s", "lease", toString(ag), "amount"], n)
109125
110126
111-func ac (ad,ae) = fraction(fraction(ad, o, ae), m, n)
127+func ai (aj) = (("min_" + aj) + "_swap_amount")
112128
113129
114-func af (ad,ae) = fraction(fraction(ad, ae, o), n, m)
130+func ak (aj) = ("balance_lock_" + aj)
115131
116132
117-func ag (ad,ae) = af(ad, ae)
133+func al (aj,ae) = makeString(["balance_lock", aj, ae], "_")
118134
119135
120-func ah (ai) = split(ai, ",")
136+func am (aj) = (("balance_" + aj) + "_lock_interval")
121137
122138
123-let aj = c(v)
139+func an (aj) = (("balance_" + aj) + "_lock_interval_minimum")
124140
125-let ak = c(s)
126141
127-let al = fromBase58String(ak)
142+func ao () = "balance_node_lock_interval"
128143
129-let am = c(u)
130144
131-let an = c(w)
145+func ap (aj) = (aj + "Out_swap_feePart")
132146
133-let ao = c(x)
134147
135-let ap = e(ao, K)
148+func aq (ar) = makeString(["%s%s", "quickSwapUserSpentInPeriod", toString(ar)], n)
136149
137-let aq = h(ao, L)
138150
139-let ar = fromBase58String(c(C))
151+func as (ar) = makeString(["%s%s", "userLastQuickSwapHeight", toString(ar)], n)
140152
141-let as = a(y)
142153
143-let at = a(z)
154+func at (au) = makeString(["%s%s", "price", au], n)
144155
145-let au = a(A)
146156
147-let av = a(B)
157+func av (au) = makeString(["%s%s", "lastHeight", au], n)
148158
149-let aw = fromBase58String("BGhPYquXSK6UYjnPLEn94gFhetp4Jvf7toekEY4x1VDH")
150159
151-let ax = fromBase58String("975akZBfnMj513U7MZaHKzQrmsEx5aE3wdWKTrHBhbjF")
160+func aw (aj) = valueOrElse(getInteger(this, ai(aj)), 0)
152161
153-let ay = this
154162
155-let az = e(ao, J)
163+func ax (aj) = valueOrElse(getInteger(this, ak(aj)), 0)
156164
157-let aA = a(S)
158165
159-let aB = a(R)
166+func ay (aj,ae) = valueOrElse(getInteger(this, al(aj, ae)), 0)
160167
161-let aC = (wavesBalance(ay).regular - aB)
162168
163-let aD = (((aA + value(assetInfo(al)).quantity) - assetBalance(ay, al)) - assetBalance(addressFromStringValue(aj), al))
169+func az (aj) = valueOrElse(getInteger(this, am(aj)), x)
164170
165-let aE = (af(aC, az) - aD)
166171
167-let aF = (aD - af(aC, az))
172+func aA (aj) = valueOrElse(getInteger(this, an(aj)), w)
168173
169-func aG (aH) = {
170- let aI = 100000
171- let aJ = 1000
172- let aK = af(aI, az)
173- let aL = (aK * 2)
174- let aM = fraction(aK, aJ, 100)
175- let aN = value(aH.minSponsoredAssetFee)
176- if (if ((aN >= aL))
177- then (aM >= aN)
174+
175+func aB () = valueOrElse(getInteger(this, ao()), 1)
176+
177+
178+func aC (aD,aE) = fraction(fraction(aD, q, aE), o, p)
179+
180+
181+func aF (aD,aE) = fraction(fraction(aD, aE, q), p, o)
182+
183+
184+func aG (aD,aE) = aF(aD, aE)
185+
186+
187+func aH (aI) = split(aI, ",")
188+
189+
190+func aJ (aj,aK) = throw(((("The specified amount in " + aj) + " swap is less than the required minimum of ") + toString(aK)))
191+
192+
193+func aL () = throw("contract is blocked by EMERGENCY SHUTDOWN actions untill reactivation by emergency oracles")
194+
195+
196+func aM (Y,aN,aO,aP,aQ) = throw(((((((((("invalid price history index: index=" + toString(Y)) + " priceIndex=") + toString(aN)) + " indexHeight=") + toString(aO)) + " unlockHeight=") + toString(aP)) + " prevIndexHeight=") + toString(aQ)))
197+
198+
199+let aR = c(B)
200+
201+let aS = fromBase58String(c(y))
202+
203+let aT = c(A)
204+
205+let aU = c(C)
206+
207+let aV = c(D)
208+
209+let aN = e(aV, T)
210+
211+let aW = h(aV, U)
212+
213+let aX = fromBase58String(c(I))
214+
215+let aY = fromBase58String("BGhPYquXSK6UYjnPLEn94gFhetp4Jvf7toekEY4x1VDH")
216+
217+let aZ = fromBase58String("975akZBfnMj513U7MZaHKzQrmsEx5aE3wdWKTrHBhbjF")
218+
219+let ba = fromBase64String(valueOrErrorMessage(getString(this, L), "RSA public key has not been specified"))
220+
221+let bb = this
222+
223+let bc = e(aV, S)
224+
225+let bd = ax("neutrino")
226+
227+let be = ax("waves")
228+
229+let bf = (wavesBalance(bb).regular - be)
230+
231+let bg = (((bd + value(assetInfo(aS)).quantity) - assetBalance(bb, aS)) - assetBalance(addressFromStringValue(aR), aS))
232+
233+let bh = (aF(bf, bc) - bg)
234+
235+let bi = (bg - aF(bf, bc))
236+
237+func bj (bk) = {
238+ let bl = 100000
239+ let bm = 1000
240+ let bn = aF(bl, bc)
241+ let bo = (bn * 2)
242+ let bp = fraction(bn, bm, 100)
243+ let bq = value(bk.minSponsoredAssetFee)
244+ if (if ((bq >= bo))
245+ then (bp >= bq)
178246 else false)
179- then (aH.assetId == al)
247+ then (bk.assetId == aS)
180248 else false
181249 }
182250
183251
184-func aO (I) = e(an, H(I))
252+func br (W) = e(aV, V(W))
185253
186254
187-func aP (N) = e(ao, M(N))
255+func bs (Y) = e(aV, X(Y))
188256
189257
190-func aQ (P) = e(ao, O(P))
258+let bt = 1
259+
260+let bu = 2
261+
262+let bv = 3
263+
264+let bw = 4
265+
266+let bx = 5
267+
268+let by = 6
269+
270+let bz = 7
271+
272+let bA = 8
273+
274+let bB = 9
275+
276+let bC = 10
277+
278+let bD = 11
279+
280+let bE = 12
281+
282+let bF = 13
283+
284+let bG = 14
285+
286+let bH = 15
287+
288+let bI = 16
289+
290+let bJ = 17
291+
292+func bK (ar,bL) = makeString(["%s%s", ar, bL], n)
191293
192294
193-func aR (W) = a(V(W))
295+func bM (aj,bN,bO,aE,bP,bQ,bR,bS,bT,bU,bV,bW,Y,bX,bY,bZ,ca) = makeString(["%s%s%d%d%d%d%d%d%d%d%d%d%d%s", aj, bN, bO, aE, bP, bQ, bR, bS, bT, bU, bV, bW, Y, bX, bY, bZ, ca], n)
194296
195297
196-func aS (Y) = a(X(Y))
298+func cb (aj,cc,bV) = bM(aj, "PENDING", toString(cc), "0", "0", "0", toString(height), toString(lastBlock.timestamp), "0", "0", toString(bV), "0", "0", "NULL", toString(aA(aj)), toString(az(aj)), toString(false))
197299
198300
199-func aT (Y) = a(Z(Y))
301+func cd (ce) = bM(ce[bt], ce[bu], ce[bv], ce[bw], ce[bx], ce[by], ce[bz], ce[bA], ce[bB], ce[bC], ce[bD], ce[bE], ce[bF], ce[bG], ce[bH], ce[bI], toString(true))
200302
201303
202-func aU (Y) = a(aa(Y))
304+func cf (ce,aE,bP,bQ,bW,Y,bX) = bM(ce[bt], "FINISHED", ce[bv], toString(aE), toString(bP), toString(bQ), ce[bz], ce[bA], toString(height), toString(lastBlock.timestamp), ce[bD], toString(bW), toString(Y), bX, ce[bH], ce[bI], ce[bJ])
203305
204306
205-func aV (U) = a(ab(U))
206-
207-
208-func aW (aX,aY) = {
209- let aZ = fraction(aX, aY, n)
210-[(aX - aZ), aZ]
307+func cg (ar,ch) = {
308+ let ci = bK(ar, ch)
309+ split(valueOrErrorMessage(getString(this, ci), ("no swap data for " + ci)), n)
211310 }
212311
213312
214-@Callable(ba)
215-func swapWavesToNeutrino () = {
216- let bb = value(ba.payments[0])
217- let bc = toString(ba.caller)
218- if ((au > bb.amount))
219- then throw((("The specified Waves amount is less than the required minimum of " + toString(au)) + " wavelets."))
220- else if (isDefined(bb.assetId))
221- then throw("Only Waves token is allowed for swapping.")
222- else if (aq)
223- then throw("contract is blocked by EMERGENCY SHUTDOWN actions untill reactivation by emergency oracles")
224- else if ((aU(bc) > height))
225- then throw((("await " + toString((aU(bc) - height))) + " blocks"))
226- else if (if ((aT(bc) != 0))
227- then true
228- else (aS(bc) != 0))
229- then throw("please withdraw locked funds first")
230- else [IntegerEntry(X(bc), bb.amount), IntegerEntry(aa(bc), (height + as)), IntegerEntry(R, (aB + bb.amount))]
313+func cj (ck,cl) = {
314+ let cm = fraction(ck, cl, p)
315+[(ck - cm), cm, ck]
316+ }
317+
318+
319+func cn (bL,co,aj,bR,cp) = {
320+ let cq = rsaVerify_16Kb(SHA256, toBytes(bL), co, ba)
321+ if (!(cq))
322+ then throw("invalid RSA signature")
323+ else {
324+ let cr = cp._1
325+ let cs = cp._2
326+ let ct = (toInt(sha256_16Kb(co)) % (cs - cr))
327+ let cu = (cr + (if ((0 > ct))
328+ then -(ct)
329+ else ct))
330+ (bR + cu)
331+ }
332+ }
333+
334+
335+func cv (cw) = if ((0 > cw))
336+ then -(cw)
337+ else cw
338+
339+
340+func cx (cy) = {
341+ let cz = ((wavesBalance(bb).available - cy) - ac())
342+ let cA = a(ah(0))
343+ let cB = a(ah(1))
344+ let cC = (cz + cA)
345+ let cD = (cz + cB)
346+ if (if ((cC > 0))
347+ then true
348+ else (cD > 0))
349+ then {
350+ let cE = cv((cC - cB))
351+ let cF = cv((cD - cA))
352+ if ((cF >= cE))
353+ then $Tuple2(0, cC)
354+ else $Tuple2(1, cD)
355+ }
356+ else $Tuple2(-1, 0)
357+ }
358+
359+
360+func cG (cy) = {
361+ let cH = cx(cy)
362+ let ag = cH._1
363+ let cI = cH._2
364+ if ((cI > 0))
365+ then {
366+ let cJ = af(ag)
367+ let cK = getBinary(this, cJ)
368+ let cL = if (isDefined(cK))
369+ then [LeaseCancel(value(cK))]
370+ else nil
371+ let cM = ah(ag)
372+ let cN = Lease(ab(ag), cI)
373+ (cL ++ [cN, BinaryEntry(cJ, calculateLeaseId(cN)), IntegerEntry(ah(ag), cI)])
374+ }
375+ else nil
376+ }
377+
378+
379+func cO () = {
380+ let cP = addressFromStringValue(getStringValue(this, O))
381+ $Tuple2(valueOrErrorMessage(getInteger(cP, at(v)), "NSBT price is undefined"), valueOrElse(getInteger(cP, av(v)), 0))
382+ }
383+
384+
385+func cQ (cR) = if ((cR.caller != this))
386+ then throw("Permission denied: this contract only allowed")
387+ else true
388+
389+
390+@Callable(cR)
391+func prepareUnleaseAndLeaseWrapper (cy) = {
392+ let cS = [cQ(cR)]
393+ if ((cS == cS))
394+ then cG(cy)
395+ else throw("Strict value is not equal to itself.")
231396 }
232397
233398
234399
235-@Callable(ba)
236-func swapNeutrinoToWaves () = {
237- let bb = value(ba.payments[0])
238- let bc = toString(ba.caller)
239- if ((av > bb.amount))
240- then throw((("The specified Neutrino amount is less than the required minimum of " + toString(av)) + " Neutrino cents."))
241- else if (aq)
242- then throw("The contract is blocked by EMERGENCY SHUTDOWN. Please wait for reactivation by emergency oracles.")
243- else if ((bb.assetId != al))
244- then throw("Only appropriate Neutrino tokens are allowed for swapping.")
245- else if ((aU(bc) > height))
246- then throw((("await " + toString((aU(bc) - height))) + " blocks"))
247- else if (if ((aT(bc) != 0))
248- then true
249- else (aS(bc) != 0))
250- then throw("please withdraw locked funds first")
251- else [IntegerEntry(Z(bc), bb.amount), IntegerEntry(aa(bc), (height + at)), IntegerEntry(S, (aA + bb.amount))]
400+@Callable(cR)
401+func constructor (cT,cU,cV,cW,cX,cY,cZ,da,db,dc,dd,de,df,dg) = {
402+ let cS = cQ(cR)
403+ if ((cS == cS))
404+ then [StringEntry(y, cT), StringEntry(z, cU), StringEntry(A, cV), StringEntry(B, cW), StringEntry(C, cX), StringEntry(D, cY), StringEntry(I, cZ), StringEntry(L, da), IntegerEntry(E, db), IntegerEntry(F, dc), IntegerEntry(G, dd), IntegerEntry(H, de), IntegerEntry(J, df), IntegerEntry(K, dg)]
405+ else throw("Strict value is not equal to itself.")
252406 }
253407
254408
255409
256-@Callable(ba)
257-func withdraw (bc,P) = {
258- let bd = addressFromStringValue(bc)
259- let be = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, F), (F + " is not specified"))), (F + " invalid address format"))
260- let bf = aU(bc)
261- let bg = aS(bc)
262- let bh = aT(bc)
263- let bi = aQ(P)
264- let bj = aQ((P - 1))
265- let bk = aP(bi)
266- let bl = af(bg, bk)
267- let bm = ac(bh, bk)
268- let bn = valueOrElse(getInteger(this, D), p)
269- let bo = valueOrElse(getInteger(this, E), p)
270- let bp = aW(bl, bn)
271- let bq = aW(bm, bo)
272- if (aq)
273- then throw("contract is blocked by EMERGENCY SHUTDOWN actions untill reactivation by emergency oracles")
274- else if ((bf > height))
275- then throw((("please wait for: " + toString(bf)) + " block height to withdraw WAVES funds"))
276- else if (if (if ((P > ap))
277- then true
278- else (bf > bi))
279- then true
280- else if ((bj != 0))
281- then (bj >= bf)
282- else false)
283- then throw(((((((((("invalid price history index: index=" + toString(P)) + " priceIndex=") + toString(ap)) + " indexHeight=") + toString(bi)) + " unlockHeight=") + toString(bf)) + " prevIndexHeight=") + toString(bj)))
284- else if (if ((0 >= bl))
285- then (0 >= bm)
286- else false)
287- then throw("balance equals zero")
288- else if (if ((0 > bn))
289- then true
290- else (0 > bo))
291- then throw(((("invalid fees data: neutrinoOutFeePart=" + toString(bn)) + " wavesOutFeePart=") + toString(bo)))
292- else [IntegerEntry(X(bc), 0), IntegerEntry(Z(bc), 0), IntegerEntry(R, (aB - bg)), IntegerEntry(S, (aA - bh)), ScriptTransfer(bd, bq[q], unit), ScriptTransfer(be, bq[r], unit), ScriptTransfer(bd, bp[q], al), ScriptTransfer(be, bp[r], al)]
410+@Callable(cR)
411+func constructorV2 (dh,di,cP,dj,dk,dl) = {
412+ let cS = cQ(cR)
413+ if ((cS == cS))
414+ then [StringEntry(M, dh), StringEntry(N, di), StringEntry(O, cP), IntegerEntry(P, dj), IntegerEntry(Q, dk), IntegerEntry(R, dl)]
415+ else throw("Strict value is not equal to itself.")
293416 }
294417
295418
296419
297-@Callable(ba)
298-func transferToAuction () = {
299- let br = (aD - assetBalance(addressFromStringValue(am), aw))
300- let bs = (aE - assetBalance(addressFromStringValue(aj), al))
301- if (aq)
302- then throw("contract is blocked by EMERGENCY SHUTDOWN actions untill reactivation by emergency oracles")
303- else if ((br > (1 * n)))
304- then [ScriptTransfer(addressFromStringValue(am), br, aw)]
305- else if ((bs >= (1 * n)))
306- then [ScriptTransfer(addressFromStringValue(aj), bs, al)]
307- else throw(((((((("bond were generated or do not need it. Deficit:" + toString(br)) + "|") + toString(0)) + ". Surplus:") + toString(bs)) + "|") + toString(aE)))
420+@Callable(cR)
421+func commonSwap (aj,aD,dm,bL) = {
422+ let cS = cQ(cR)
423+ if ((cS == cS))
424+ then {
425+ let aK = aw(aj)
426+ let dn = ax(aj)
427+ let do = ay(aj, dm)
428+ let dp = Z(0)
429+ let dq = if ((dp == dm))
430+ then aB()
431+ else az(aj)
432+ let bV = (height + dq)
433+ if ((aK > aD))
434+ then aJ(aj, aK)
435+ else if (aW)
436+ then aL()
437+ else {
438+ let dr = if ((aj == "waves"))
439+ then cG(0)
440+ else nil
441+ ([IntegerEntry(al(aj, dm), (do + aD)), IntegerEntry(ad(dm), bV), IntegerEntry(ak(aj), (dn + aD)), StringEntry(bK(dm, bL), cb(aj, aD, bV))] ++ dr)
442+ }
443+ }
444+ else throw("Strict value is not equal to itself.")
308445 }
309446
310447
311-@Verifier(aH)
312-func bt () = {
313- let bu = toBase58String(aH.id)
314- let U = ((((if (sigVerify(aH.bodyBytes, aH.proofs[0], fromBase58String(i[0])))
448+
449+@Callable(cR)
450+func commonWithdraw (dm,Y,ch,co) = {
451+ let ar = addressFromStringValue(dm)
452+ let cS = cQ(cR)
453+ if ((cS == cS))
454+ then {
455+ let ce = cg(dm, ch)
456+ let bV = parseIntValue(ce[bD])
457+ let aj = ce[bt]
458+ let bO = parseIntValue(ce[bv])
459+ let ds = ce[bu]
460+ let bR = parseIntValue(ce[bz])
461+ let ca = (ce[bJ] == "true")
462+ let dt = if (if ((aj != "waves"))
463+ then (aj != "neutrino")
464+ else false)
465+ then throw(("Unsupported swap type " + aj))
466+ else true
467+ if ((dt == dt))
468+ then {
469+ let du = valueOrElse(getInteger(this, ap(aj)), r)
470+ let dn = ax(aj)
471+ let do = ay(aj, dm)
472+ let aP = if (ca)
473+ then (bR + getIntegerValue(this, P))
474+ else if ((co == base58''))
475+ then bV
476+ else cn(ch, co, aj, bR, $Tuple2(parseIntValue(ce[bH]), parseIntValue(ce[bI])))
477+ let aO = bs(Y)
478+ let aQ = bs((Y - 1))
479+ let dv = br(aO)
480+ let dw = if ((aj == "waves"))
481+ then $Tuple2(aF(bO, dv), aS)
482+ else $Tuple2(aC(bO, dv), unit)
483+ let dx = dw._1
484+ let dy = dw._2
485+ let dz = cj(dx, du)
486+ let bP = dz[s]
487+ let bQ = dz[t]
488+ let dA = [if (aW)
489+ then aL()
490+ else true, if ((ds != "PENDING"))
491+ then throw("swap has been already processed")
492+ else true, if ((aP > height))
493+ then throw((("please wait for: " + toString(aP)) + " block height to withdraw funds"))
494+ else true, if (if (if ((Y > aN))
495+ then true
496+ else (aP > aO))
497+ then true
498+ else if ((aQ != 0))
499+ then (aQ >= aP)
500+ else false)
501+ then aM(Y, aN, aO, aP, aQ)
502+ else true, if ((0 >= dz[u]))
503+ then throw("balance equals zero")
504+ else true, if (if ((0 > du))
505+ then true
506+ else (du >= p))
507+ then throw(((("invalid outFeePart config for " + aj) + " swap: outFeePart=") + toString(du)))
508+ else true]
509+ if ((dA == dA))
510+ then {
511+ let dr = if (if ((aj == "neutrino"))
512+ then (dx > 0)
513+ else false)
514+ then invoke(this, "prepareUnleaseAndLeaseWrapper", [dx], nil)
515+ else unit
516+ if ((dr == dr))
517+ then {
518+ let dB = invoke(addressFromStringValue(getStringValue(this, M)), "deposit", nil, [AttachedPayment(dy, bQ)])
519+ if ((dB == dB))
520+ then [IntegerEntry(al(aj, dm), (do - bO)), IntegerEntry(ak(aj), (dn - bO)), ScriptTransfer(ar, bP, dy), StringEntry(bK(dm, ch), cf(ce, dv, bP, bQ, aP, Y, toBase58String(cR.transactionId)))]
521+ else throw("Strict value is not equal to itself.")
522+ }
523+ else throw("Strict value is not equal to itself.")
524+ }
525+ else throw("Strict value is not equal to itself.")
526+ }
527+ else throw("Strict value is not equal to itself.")
528+ }
529+ else throw("Strict value is not equal to itself.")
530+ }
531+
532+
533+
534+@Callable(cR)
535+func swap (aj) = {
536+ let dC = true
537+ let dD = (aj == "waves")
538+ let dE = (aj == "neutrino")
539+ let dF = value(cR.payments[0])
540+ let dm = toString(cR.caller)
541+ let ch = toBase58String(cR.transactionId)
542+ if (if (dD)
543+ then (dF.assetId != unit)
544+ else false)
545+ then throw("Only Waves token is allowed for swapping.")
546+ else if (if (dE)
547+ then (dF.assetId != aS)
548+ else false)
549+ then throw("Only appropriate Neutrino tokens are allowed for swapping.")
550+ else if (if (!(dD))
551+ then !(dE)
552+ else false)
553+ then throw("Invalid swap type")
554+ else {
555+ let dG = invoke(this, "commonSwap", [aj, dF.amount, dm, ch], nil)
556+ if ((dG == dG))
557+ then {
558+ let dH = if (dC)
559+ then invoke(this, "accelerate", [dm, ch], nil)
560+ else true
561+ if ((dH == dH))
562+ then nil
563+ else throw("Strict value is not equal to itself.")
564+ }
565+ else throw("Strict value is not equal to itself.")
566+ }
567+ }
568+
569+
570+
571+@Callable(cR)
572+func accelerate (dm,ch) = {
573+ let cS = cQ(cR)
574+ if ((cS == cS))
575+ then {
576+ let ar = addressFromStringValue(dm)
577+ let ce = cg(dm, ch)
578+ let aj = ce[bt]
579+ let bO = parseIntValue(ce[bv])
580+ let ds = ce[bu]
581+ let ca = (ce[bJ] == "true")
582+ let dI = {
583+ let l = invoke(this, "quickSwapLimitREADONLY", [toString(ar)], nil)
584+ if ($isInstanceOf(l, "(Int, Int)"))
585+ then {
586+ let dJ = l
587+ $Tuple2(dJ._1, dJ._2)
588+ }
589+ else throw("Type casting error")
590+ }
591+ let dK = dI._1
592+ let dL = dI._2
593+ let dM = (dK - dL)
594+ let dv = br(bs(aN))
595+ let dN = if ((aj == "neutrino"))
596+ then bO
597+ else aF(bO, dv)
598+ let dA = [if ((ds != "PENDING"))
599+ then throw("Swap has been already processed")
600+ else true, if (ca)
601+ then throw("Swap has been already accelerated")
602+ else true, if ((dN > dM))
603+ then throw(((("You have exceeded the quick swaps limit! Requested: " + toString(dN)) + ", available: ") + toString(dM)))
604+ else true]
605+ if ((dA == dA))
606+ then [IntegerEntry(aq(ar), (dN + dL)), IntegerEntry(as(ar), height), StringEntry(bK(dm, ch), cd(ce))]
607+ else throw("Strict value is not equal to itself.")
608+ }
609+ else throw("Strict value is not equal to itself.")
610+ }
611+
612+
613+
614+@Callable(cR)
615+func withdraw (dm,Y,ch) = {
616+ let dO = invoke(this, "commonWithdraw", [dm, Y, ch, base58''], nil)
617+ if ((dO == dO))
618+ then nil
619+ else throw("Strict value is not equal to itself.")
620+ }
621+
622+
623+
624+@Callable(cR)
625+func withdrawRand (dm,Y,ch,co) = {
626+ let dO = invoke(this, "commonWithdraw", [dm, Y, ch, co], nil)
627+ if ((dO == dO))
628+ then nil
629+ else throw("Strict value is not equal to itself.")
630+ }
631+
632+
633+
634+@Callable(cR)
635+func transferToAuction () = {
636+ let dP = (bg - assetBalance(addressFromStringValue(aT), aY))
637+ let dQ = (bh - assetBalance(addressFromStringValue(aR), aS))
638+ if (aW)
639+ then throw("contract is blocked by EMERGENCY SHUTDOWN actions untill reactivation by emergency oracles")
640+ else if ((dP > (1 * p)))
641+ then [ScriptTransfer(addressFromStringValue(aT), dP, aY)]
642+ else if ((dQ >= (1 * p)))
643+ then [ScriptTransfer(addressFromStringValue(aR), dQ, aS)]
644+ else throw(((((((("bond were generated or do not need it. Deficit:" + toString(dP)) + "|") + toString(0)) + ". Surplus:") + toString(dQ)) + "|") + toString(bh)))
645+ }
646+
647+
648+
649+@Callable(cR)
650+func acceptWaves () = if ((cR.caller != addressFromStringValue(aT)))
651+ then throw("Currently only auction contract is allowed to call")
652+ else $Tuple2(cG(0), "success")
653+
654+
655+
656+@Callable(cR)
657+func calcTotalQuickSwapLimitREADONLY (dR) = {
658+ let dS = cO()
659+ let dT = dS._1
660+ let dU = dS._2
661+ let dV = if (((height - dU) > getIntegerValue(this, R)))
662+ then throw("NSBT price is outdated")
663+ else true
664+ if ((dV == dV))
665+ then $Tuple2(nil, fraction(dR, dT, o))
666+ else throw("Strict value is not equal to itself.")
667+ }
668+
669+
670+
671+@Callable(cR)
672+func quickSwapLimitREADONLY (dW) = {
673+ let dX = toString((10000 * 100000000))
674+ let dY = toString((100000 * 1000000))
675+ let dZ = toString(940)
676+ $Tuple2(nil, makeString(["%d%d%d", dX, dY, dZ], n))
677+ }
678+
679+
680+@Verifier(bk)
681+func ea () = {
682+ let eb = toBase58String(bk.id)
683+ let ec = 3
684+ let ed = ((((if (sigVerify(bk.bodyBytes, bk.proofs[0], fromBase58String(i[0])))
315685 then 1
316- else 0) + (if (sigVerify(aH.bodyBytes, aH.proofs[1], fromBase58String(i[1])))
686+ else 0) + (if (sigVerify(bk.bodyBytes, bk.proofs[1], fromBase58String(i[1])))
317687 then 1
318- else 0)) + (if (sigVerify(aH.bodyBytes, aH.proofs[2], fromBase58String(i[2])))
688+ else 0)) + (if (sigVerify(bk.bodyBytes, bk.proofs[2], fromBase58String(i[2])))
319689 then 1
320- else 0)) + (if (sigVerify(aH.bodyBytes, aH.proofs[3], fromBase58String(i[3])))
690+ else 0)) + (if (sigVerify(bk.bodyBytes, bk.proofs[3], fromBase58String(i[3])))
321691 then 2
322692 else 0))
323- let bv = aH
324- if (if ($isInstanceOf(bv, "LeaseCancelTransaction"))
325- then true
326- else $isInstanceOf(bv, "LeaseTransaction"))
693+ let ee = (ed >= ec)
694+ let l = bk
695+ if ($isInstanceOf(l, "SponsorFeeTransaction"))
327696 then {
328- let bw = bv
329- sigVerify(bw.bodyBytes, bw.proofs[0], ar)
697+ let ef = l
698+ if (ee)
699+ then bj(ef)
700+ else false
330701 }
331- else if ($isInstanceOf(bv, "SponsorFeeTransaction"))
332- then {
333- let bx = bv
334- if (aG(bx))
335- then (U >= 3)
336- else false
337- }
338- else (U >= 3)
702+ else ee
339703 }
340704

github/deemru/w8io/3ef1775 
639.81 ms