tx · 7chuKLDgx1U4o5wFwkiza8GS63vJjwC7qw3h8jE1UtFS 3N8jrea2DmBt1Ksb7byLviJB17e6zKbGWGW: -0.01000000 Waves 2020.10.13 12:41 [1218610] smart account 3N8jrea2DmBt1Ksb7byLviJB17e6zKbGWGW > SELF 0.00000000 Waves
{ "type": 13, "id": "7chuKLDgx1U4o5wFwkiza8GS63vJjwC7qw3h8jE1UtFS", "fee": 1000000, "feeAssetId": null, "timestamp": 1602582086109, "version": 1, "sender": "3N8jrea2DmBt1Ksb7byLviJB17e6zKbGWGW", "senderPublicKey": "5BcAFibxErTDCoEgvseGvfJiq1vwu9Y7RG15iMGzERn", "proofs": [ "2RNkFFDvppWdJSAYDY7tGeoo19yBoZ5EbHDeXimqBgj7AbpD8b8YuGcHqwSwaE88iYz9nGBruZodKT9XYCVNV72A" ], "script": "base64:AAIEAAAAAAAAACEIAhILCgkICAgICAgICAESAwoBARIAEgMKAQgSABIAEgAAAABQAAAAAAR0ZW42AAAAAAAAD0JAAAAAAAR0ZW44AAAAAAAF9eEAAAAAABFjb25maWdQcm92aWRlcktleQIAAAAOY29uZmlnUHJvdmlkZXIAAAAADmNvbmZpZ1Byb3ZpZGVyBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAEWNvbmZpZ1Byb3ZpZGVyS2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXMFAAAAByRtYXRjaDAJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAAXMFAAAABHRoaXMAAAAAB0JVTExLZXkCAAAABkJVTExJZAAAAAAHQkVBUktleQIAAAAGQkVBUklkAAAAAAxtYWluVG9rZW5LZXkCAAAAC21haW5Ub2tlbklkAAAAABFidWxsQ29sbGF0ZXJhbEtleQIAAAAOYnVsbENvbGxhdGVyYWwAAAAAEWJlYXJDb2xsYXRlcmFsS2V5AgAAAA5iZWFyQ29sbGF0ZXJhbAAAAAASYnVsbENpcmN1bGF0aW9uS2V5AgAAAA9idWxsQ2lyY3VsYXRpb24AAAAAEmJlYXJDaXJjdWxhdGlvbktleQIAAAAPYmVhckNpcmN1bGF0aW9uAAAAABJpc3N1ZVBlcmNlbnRpbGVLZXkCAAAAD2lzc3VlUGVyY2VudGlsZQAAAAATcmVkZWVtUGVyY2VudGlsZUtleQIAAAAQcmVkZWVtUGVyY2VudGlsZQAAAAALbWluSXNzdWVLZXkCAAAACG1pbklzc3VlAAAAAAxtaW5SZWRlZW1LZXkCAAAACW1pblJlZGVlbQAAAAAKbWluUG9vbEtleQIAAAAHbWluUG9vbAAAAAASZmVlc0FjY3VtdWxhdGVkS2V5AgAAAA9mZWVzQWNjdW11bGF0ZWQAAAAADHdoaXRlbGlzdEtleQIAAAAOaXNzdWVXaGl0ZUxpc3QAAAAAC29yYWNsZVBLS2V5AgAAAAZvcmFjbGUAAAAAEWxhc3RQcmljZUluZGV4S2V5AgAAAAtwcmljZV9pbmRleAAAAAAQcHJpY2VJbmRleFByZWZpeAIAAAAMcHJpY2VfaW5kZXhfAAAAABFwcmljZUhlaWdodFByZWZpeAIAAAAGcHJpY2VfAAAAABpvcmFjbGVDdXJyZW50UHJpY2VJbmRleEtleQIAAAALcHJpY2VfaW5kZXgAAAAAGmxhc3RSZWJhbGFuY2VQcmljZUluZGV4S2V5AgAAABVsYXN0U2V0dGxlbWVudFByaWNlSWQAAAAADmhlYWRQb2ludGVyS2V5AgAAAAtoZWFkUG9pbnRlcgAAAAAOdGFpbFBvaW50ZXJLZXkCAAAAC3RhaWxQb2ludGVyAAAAAAxxdWV1ZVNpemVLZXkCAAAACXF1ZXVlU2l6ZQAAAAAVcG9vbE1haW5Ub2tlblZhbHVlS2V5AgAAABJwb29sTWFpblRva2VuVmFsdWUAAAAACXBvb2xVcEtleQIAAAAGcG9vbFVwAAAAAApwb29sRHduS2V5AgAAAAdwb29sRHduAAAAABdwb29sVG9rZW5DaXJjdWxhdGlvbktleQIAAAAUcG9vbFRva2VuQ2lyY3VsYXRpb24AAAAADHBvb2xUb2tlbktleQIAAAAJcG9vbFRva2VuAAAAAAdidWxsQ29sCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAARYnVsbENvbGxhdGVyYWxLZXkCAAAAFG5vIGJ1bGxDb2xsYXRlcmFsS2V5AAAAAAdiZWFyQ29sCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAARYmVhckNvbGxhdGVyYWxLZXkCAAAAFG5vIGJlYXJDb2xsYXRlcmFsS2V5AAAAAAhidWxsQ2lyYwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAEmJ1bGxDaXJjdWxhdGlvbktleQIAAAAVbm8gYnVsbENpcmN1bGF0aW9uS2V5AAAAAAhiZWFyQ2lyYwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAEmJlYXJDaXJjdWxhdGlvbktleQIAAAAVbm8gYmVhckNpcmN1bGF0aW9uS2V5AAAAAARCVUxMCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAAHQlVMTEtleQIAAAAKbm8gQlVMTEtleQAAAAAEQkVBUgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAAB0JFQVJLZXkCAAAACm5vIEJFQVJLZXkAAAAACW1haW5Ub2tlbgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAADG1haW5Ub2tlbktleQIAAAAPbm8gbWFpblRva2VuS2V5AAAAAA9pc3N1ZVBlcmNlbnRpbGUJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAA5jb25maWdQcm92aWRlcgUAAAASaXNzdWVQZXJjZW50aWxlS2V5AgAAABVubyBpc3N1ZVBlcmNlbnRpbGVLZXkAAAAAEHJlZGVlbVBlcmNlbnRpbGUJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAA5jb25maWdQcm92aWRlcgUAAAATcmVkZWVtUGVyY2VudGlsZUtleQIAAAAWbm8gcmVkZWVtUGVyY2VudGlsZUtleQAAAAAIbWluSXNzdWUJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAA5jb25maWdQcm92aWRlcgUAAAALbWluSXNzdWVLZXkCAAAADm5vIG1pbklzc3VlS2V5AAAAAAltaW5SZWRlZW0JAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAA5jb25maWdQcm92aWRlcgUAAAAMbWluUmVkZWVtS2V5AgAAAA9ubyBtaW5SZWRlZW1LZXkAAAAAB21pblBvb2wJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAA5jb25maWdQcm92aWRlcgUAAAAKbWluUG9vbEtleQIAAAANbm8gbWluUG9vbEtleQAAAAAJd2hpdGVsaXN0CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAOY29uZmlnUHJvdmlkZXIFAAAADHdoaXRlbGlzdEtleQIAAAAPbm8gd2hpdGVsaXN0S2V5AQAAAAdhbGxvd2VkAAAAAQAAAAFhAwkAAAAAAAACBQAAAAl3aGl0ZWxpc3QCAAAAAAYJAQAAAAlpc0RlZmluZWQAAAABCQAEswAAAAIFAAAACXdoaXRlbGlzdAkABCUAAAABBQAAAAFhAAAAAAhwb29sTWFpbgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAFXBvb2xNYWluVG9rZW5WYWx1ZUtleQIAAAAYbm8gcG9vbE1haW5Ub2tlblZhbHVlS2V5AAAAAAZwb29sVXAJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAAlwb29sVXBLZXkCAAAADG5vIHBvb2xVcEtleQAAAAAHcG9vbER3bgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAACnBvb2xEd25LZXkCAAAADW5vIHBvb2xEd25LZXkAAAAACXBvb2xUb2tlbgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAADHBvb2xUb2tlbktleQIAAAAPbm8gcG9vbFRva2VuS2V5AAAAABRwb29sVG9rZW5DaXJjdWxhdGlvbgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAF3Bvb2xUb2tlbkNpcmN1bGF0aW9uS2V5AgAAABpubyBwb29sVG9rZW5DaXJjdWxhdGlvbktleQAAAAAJcG9vbFZhbHVlCQAAZAAAAAIJAABkAAAAAgUAAAAIcG9vbE1haW4JAABrAAAAAwUAAAAHYnVsbENvbAUAAAAGcG9vbFVwBQAAAAhidWxsQ2lyYwkAAGsAAAADBQAAAAdiZWFyQ29sBQAAAAdwb29sRHduBQAAAAhiZWFyQ2lyYwAAAAAGb3JhY2xlCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEJAAJZAAAAAQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAAC29yYWNsZVBLS2V5AgAAAA5ubyBvcmFjbGVQS0tleQIAAAASYmFkIG9yYWNsZSBhZGRyZXNzAAAAABRyZWJhbGFuY2VkUHJpY2VJbmRleAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAGmxhc3RSZWJhbGFuY2VQcmljZUluZGV4S2V5AgAAABdubyBsYXN0IHJlYmFsYW5jZSBwcmljZQAAAAAQb3JhY2xlUHJpY2VJbmRleAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABm9yYWNsZQUAAAARbGFzdFByaWNlSW5kZXhLZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAE2JhZCBvcmFjbGUgZGF0YSBhdCAJAAQlAAAAAQUAAAAGb3JhY2xlAgAAABA6IG5vIGludGVnZXIgYXQgBQAAABFsYXN0UHJpY2VJbmRleEtleQAAAAAJcXVldWVTaXplCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAADHF1ZXVlU2l6ZUtleQAAAAAAAAAAAAAAAAALaGVhZFBvaW50ZXIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAAOaGVhZFBvaW50ZXJLZXkCAAAAAAAAAAALdGFpbFBvaW50ZXIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAAOdGFpbFBvaW50ZXJLZXkCAAAAAAAAAAAPZmVlc0FjY3VtdWxhdGVkCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAEmZlZXNBY2N1bXVsYXRlZEtleQAAAAAAAAAAAAAAAAAFSVNTVUUCAAAABUlTU1VFAAAAAAZSRURFRU0CAAAABlJFREVFTQAAAAAEUE9PTAIAAAAEUE9PTAAAAAAGVU5QT09MAgAAAAZVTlBPT0wAAAAACmZlZUFkZHJLZXkCAAAACmZlZUFkZHJlc3MAAAAADnN0YWtpbmdBZGRyS2V5AgAAAA5zdGFraW5nQWRkcmVzcwAAAAAPZGFlbW9uUHViS2V5S2V5AgAAAA9kYWVtb25QdWJsaWNLZXkAAAAACmZlZUFkZHJlc3MJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAOY29uZmlnUHJvdmlkZXIFAAAACmZlZUFkZHJLZXkCAAAADW5vIGZlZUFkZHJlc3MCAAAADmJhZCBmZWVBZGRyZXNzAAAAAA5zdGFraW5nQWRkcmVzcwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAADmNvbmZpZ1Byb3ZpZGVyBQAAAA5zdGFraW5nQWRkcktleQIAAAARbm8gc3Rha2luZ0FkZHJlc3MAAAAAD2RhZW1vblB1YmxpY0tleQkAAlkAAAABCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAOY29uZmlnUHJvdmlkZXIFAAAAD2RhZW1vblB1YktleUtleQIAAAASbm8gZGFlbW9uUHVibGljS2V5AAAAAApycGRBZGRyZXNzCQAEJgAAAAECAAAAIzNQTmlrTTZ5cDROcWNTVThndXhRdG1SNW9ucjJENGU4eVRKAAAAABBwdWJLZXlBZG1pbnNMaXN0CQAETAAAAAICAAAALDJISHFWOFc5REpheVY1UjZ0QkQyU2I4c3JwaHBvYm9EaTdyMXQxYVBpdW1DCQAETAAAAAICAAAALDVaWGU4MlJSQVNVN3FzaFhNMko5Sk5ZaHFKOUdXWWpqVnEyZ3dVVjVOYXo5CQAETAAAAAICAAAALDVXUlhGU2p3Y1RiTmZLY0pzOFpxWG1TU1dZc1NWSlV0TXZNcVpqNWhINE5jBQAAAANuaWwBAAAADHNhZmVGcmFjdGlvbgAAAAMAAAABYQAAAAFiAAAAAWMDAwkAAAAAAAACBQAAAAFhAAAAAAAAAAAABgkAAAAAAAACBQAAAAFiAAAAAAAAAAAAAAAAAAAAAAAACQAAawAAAAMFAAAAAWEFAAAAAWIFAAAAAWMBAAAADGJ1aWxkTmV3SXRlbQAAAAUAAAAGYWN0aW9uAAAAA2FtdAAAAAV0b2tlbgAAAApwcmljZUluZGV4AAAAB2ludm9rZXIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABmFjdGlvbgIA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YWluMAAAAApjdXJQb29sVXAwAAAAC2N1clBvb2xEd24wCgEAAAAHY2xvc2VVcAAAAAcAAAAKY3VyQnVsbENvbAAAAApjdXJCZWFyQ29sAAAAC2N1ckJ1bGxDaXJjAAAAC2N1ckJlYXJDaXJjAAAAC2N1clBvb2xNYWluAAAACWN1clBvb2xVcAAAAApjdXJQb29sRHduBAAAAARkaWZmCQAAZQAAAAIFAAAACmN1ckJ1bGxDb2wFAAAACmN1ckJlYXJDb2wEAAAACGV4cG9zdXJlCQAAawAAAAMFAAAACmN1ckJ1bGxDb2wFAAAACWN1clBvb2xVcAUAAAALY3VyQnVsbENpcmMEAAAAEGxpcXVpZGF0ZWRUb2tlbnMDCQAAZgAAAAIFAAAABGRpZmYFAAAACGV4cG9zdXJlBQAAAAljdXJQb29sVXAJAABrAAAAAwUAAAAEZGlmZgUAAAALY3VyQnVsbENpcmMFAAAACmN1ckJ1bGxDb2wEAAAAD2xpcXVpZGF0ZWRWYWx1ZQMJAABmAAAAAgUAAAAEZGlmZgUAAAAIZXhwb3N1cmUFAAAACGV4cG9zdXJlCQAAawAAAAMFAAAAEGxpcXVpZGF0ZWRUb2tlbnMFAAAACmN1ckJ1bGxDb2wFAAAAC2N1ckJ1bGxDaXJjCQAFGQAAAAcJAABlAAAAAgUAAAAKY3VyQnVsbENvbAUAAAAPbGlxdWlkYXRlZFZhbHVlBQAAAApjdXJCZWFyQ29sCQAAZQAAAAIFAAAAC2N1ckJ1bGxDaXJjBQAAABBsaXF1aWRhdGVkVG9rZW5zBQAAAAtjdXJCZWFyQ2lyYwkAAGQAAAACBQAAAAtjdXJQb29sTWFpbgUAAAAPbGlxdWlkYXRlZFZhbHVlCQAAZQAAAAIFAAAACWN1clBvb2xVcAUAAAAQbGlxdWlkYXRlZFRva2VucwUAAAAKY3VyUG9vbER3bgoBAAAACGNsb3NlRHduAAAABwAAAApjdXJCdWxsQ29sAAAACmN1ckJlYXJDb2wAAAALY3VyQnVsbENpcmMAAAALY3VyQmVhckNpcmMAAAALY3VyUG9vbE1haW4AAAAJY3VyUG9vbFVwAAAACmN1clBvb2xEd24EAAAABGRpZmYJAABlAAAAAgUAAAAKY3VyQmVhckNvbAUAAAAKY3VyQnVsbENvbAQAAAAIZXhwb3N1cmUJAABrAAAAAwUAAAAKY3VyQmVhckNvbAUAAAAKY3VyUG9vbER3bgUAAAALY3VyQmVhckNpcmMEAAAAEGxpcXVpZGF0ZWRUb2tlbnMDCQAAZgAAAAIFAAAABGRpZmYFAAAACGV4cG9zdXJlBQAAAApjdXJQb29sRHduCQAAawAAAAMFAAAABGRpZmYFAAAAC2N1ckJlYXJDaXJjBQAAAApjdXJCZWFyQ29sBAAAAA9saXF1aWRhdGVkVmFsdWUDCQAAZgAAAAIFAAAABGRpZmYFAAAACGV4cG9zdXJlBQAAAAhleHBvc3VyZQkAAGsAAAADBQAAABBsaXF1aWRhdGVkVG9rZW5zBQAAAApjdXJCZWFyQ29sBQAAAAtjdXJCZWFyQ2lyYwkABRkAAAAHBQAAAApjdXJCdWxsQ29sCQAAZQAAAAIFAAAACmN1ckJlYXJDb2wFAAAAD2xpcXVpZGF0ZWRWYWx1ZQUAAAALY3VyQnVsbENpcmMJAABlAAAAAgUAAAALY3VyQmVhckNpcmMFAAAAEGxpcXVpZGF0ZWRUb2tlbnMJAABkAAAAAgUAAAALY3VyUG9vbE1haW4FAAAAD2xpcXVpZGF0ZWRWYWx1ZQUAAAAJY3VyUG9vbFVwCQAAZQAAAAIFAAAACmN1clBvb2xEd24FAAAAEGxpcXVpZGF0ZWRUb2tlbnMKAQAAAAdvcGVuRHduAAAABwAAAApjdXJCdWxsQ29sAAAACmN1ckJlYXJDb2wAAAALY3VyQnVsbENpcmMAAAALY3VyQmVhckNpcmMAAAALY3VyUG9vbE1haW4AAAAJY3VyUG9vbFVwAAAACmN1clBvb2xEd24EAAAABGRpZmYJAABlAAAAAgUAAAAKY3VyQnVsbENvbAUAAAAKY3VyQmVhckNvbAQAAAAOc3BlbnRQb29sVmFsdWUDCQAAZgAAAAIFAAAAC2N1clBvb2xNYWluBQAAAARkaWZmBQAAAARkaWZmBQAAAAtjdXJQb29sTWFpbgQAAAAOYWNxdWlyZWRUb2tlbnMJAABrAAAAAwUAAAAOc3BlbnRQb29sVmFsdWUFAAAAC2N1ckJlYXJDaXJjBQAAAApjdXJCZWFyQ29sCQAFGQAAAAcFAAAACmN1ckJ1bGxDb2wJAABkAAAAAgUAAAAKY3VyQmVhckNvbAUAAAAOc3BlbnRQb29sVmFsdWUFAAAAC2N1ckJ1bGxDaXJjCQAAZAAAAAIFAAAAC2N1ckJlYXJDaXJjBQAAAA5hY3F1aXJlZFRva2VucwkAAGUAAAACBQAAAAtjdXJQb29sTWFpbgUAAAAOc3BlbnRQb29sVmFsdWUFAAAACWN1clBvb2xVcAkAAGQAAAACBQAAAApjdXJQb29sRHduBQAAAA5hY3F1aXJlZFRva2VucwoBAAAABm9wZW5VcAAAAAcAAAAKY3VyQnVsbENvbAAAAApjdXJCZWFyQ29sAAAAC2N1ckJ1bGxDaXJjAAAAC2N1ckJlYXJDaXJjAAAAC2N1clBvb2xNYWluAAAACWN1clBvb2xVcAAAAApjdXJQb29sRHduBAAAAARkaWZmCQAAZQAAAAIFAAAACmN1ckJlYXJDb2wFAAAACmN1ckJ1bGxDb2wEAAAADnNwZW50UG9vbFZhbHVlAwkAAGYAAAACBQAAAAtjdXJQb29sTWFpbgUAAAAEZGlmZgUAAAAEZGlmZgUAAAALY3VyUG9vbE1haW4EAAAADmFjcXVpcmVkVG9rZW5zCQAAawAAAAMFAAAADnNwZW50UG9vbFZhbHVlBQAAAAtjdXJCdWxsQ2lyYwUAAAAKY3VyQnVsbENvbAkABRkAAAAHCQAAZAAAAAIFAAAACmN1ckJ1bGxDb2wFAAAADnNwZW50UG9vbFZhbHVlBQAAAApjdXJCZWFyQ29sCQAAZAAAAAIFAAAAC2N1ckJ1bGxDaXJjBQAAAA5hY3F1aXJlZFRva2VucwUAAAALY3VyQmVhckNpcmMJAABlAAAAAgUAAAALY3VyUG9vbE1haW4FAAAADnNwZW50UG9vbFZhbHVlCQAAZAAAAAIFAAAACWN1clBvb2xVcAUAAAAOYWNxdWlyZWRUb2tlbnMFAAAACmN1clBvb2xEd24DCQAAZgAAAAIFAAAAC2N1ckJ1bGxDb2wwBQAAAAtjdXJCZWFyQ29sMAQAAAAMYWZ0ZXJDbG9zZVVwCQEAAAAHY2xvc2VVcAAAAAcFAAAAC2N1ckJ1bGxDb2wwBQAAAAtjdXJCZWFyQ29sMAUAAAAMY3VyQnVsbENpcmMwBQAAAAxjdXJCZWFyQ2lyYzAFAAAADGN1clBvb2xNYWluMAUAAAAKY3VyUG9vbFVwMAUAAAALY3VyUG9vbER3bjAEAAAADSR0MDEwMjg2MTA0MjMFAAAADGFmdGVyQ2xvc2VVcAQAAAABYQgFAAAADSR0MDEwMjg2MTA0MjMAAAACXzEEAAAAAWIIBQAAAA0kdDAxMDI4NjEwNDIzAAAAAl8yBAAAAAFjCAUAAAANJHQwMTAyODYxMDQyMwAAAAJfMwQAAAABZAgFAAAADSR0MDEwMjg2MTA0MjMAAAACXzQEAAAAAWUIBQAAAA0kdDAxMDI4NjEwNDIzAAAAAl81BAAAAAFmCAUAAAANJHQwMTAyODYxMDQyMwAAAAJfNgQAAAABZwgFAAAADSR0MDEwMjg2MTA0MjMAAAACXzcDCQAAZgAAAAIFAAAAAWYAAAAAAAAAAAAFAAAADGFmdGVyQ2xvc2VVcAMJAAAAAAAAAgUAAAABZgAAAAAAAAAAAAkBAAAAB29wZW5Ed24AAAAHBQAAAAFhBQAAAAFiBQAAAAFjBQAAAAFkBQAAAAFlBQAAAAFmBQAAAAFnCQAAAgAAAAECAAAACnBvb2xVcCA8IDAEAAAADWFmdGVyQ2xvc2VEd24JAQAAAAhjbG9zZUR3bgAAAAcFAAAAC2N1ckJ1bGxDb2wwBQAAAAtjdXJCZWFyQ29sMAUAAAAMY3VyQnVsbENpcmMwBQAAAAxjdXJCZWFyQ2lyYzAFAAAADGN1clBvb2xNYWluMAUAAAAKY3VyUG9vbFVwMAUAAAALY3VyUG9vbER3bjAEAAAADSR0MDEwNzc0MTA5MTQFAAAADWFmdGVyQ2xvc2VEd24EAAAAAWEIBQAAAA0kdDAxMDc3NDEwOTE0AAAAAl8xBAAAAAFiCAUAAAANJHQwMTA3NzQxMDkxNAAAAAJfMgQAAAABYwgFAAAADSR0MDEwNzc0MTA5MTQAAAACXzMEAAAAAWQIBQAAAA0kdDAxMDc3NDEwOTE0AAAAAl80BAAAAAFlCAUAAAANJHQwMTA3NzQxMDkxNAAAAAJfNQQAAAABZggFAAAADSR0MDEwNzc0MTA5MTQAAAACXzYEAAAAAWcIBQAAAA0kdDAxMDc3NDEwOTE0AAAAAl83AwkAAGYAAAACBQAAAAFnAAAAAAAAAAAABQAAAA1hZnRlckNsb3NlRHduAwkAAAAAAAACBQAAAAFnAAAAAAAAAAAACQEAAAAGb3BlblVwAAAABwUAAAABYQUAAAABYgUAAAABYwUAAAABZAUAAAABZQUAAAABZgUAAAABZwkAAAIAAAABAgAAAAtwb29sRHduIDwgMAEAAAAUYWN0aW9uc1dpdGhNYXliZVBvb2wAAAAEAAAAC2N1ckJ1bGxDb2wwAAAAC2N1ckJlYXJDb2wwAAAADGN1ckJ1bGxDaXJjMAAAAAxjdXJCZWFyQ2lyYzAEAAAADSR0MDExMjExMTEzOTQJAQAAAAtwb29sU3VwcG9ydAAAAAcFAAAAC2N1ckJ1bGxDb2wwBQAAAAtjdXJCZWFyQ29sMAUAAAAMY3VyQnVsbENpcmMwBQAAAAxjdXJCZWFyQ2lyYzAFAAAACHBvb2xNYWluBQAAAAZwb29sVXAFAAAAB3Bvb2xEd24EAAAACGJ1bGxDb2wxCAUAAAANJHQwMTEyMTExMTM5NAAAAAJfMQQAAAAIYmVhckNvbDEIBQAAAA0kdDAxMTIxMTExMzk0AAAAAl8yBAAAAAhidWxsQ2ljMQgFAAAADSR0MDExMjExMTEzOTQAAAACXzMEAAAACWJlYXJDaXJjMQgFAAAADSR0MDExMjExMTEzOTQAAAACXzQEAAAACXBvb2xNYWluMQgFAAAADSR0MDExMjExMTEzOTQAAAACXzUEAAAAB3Bvb2xVcDEIBQAAAA0kdDAxMTIxMTExMzk0AAAAAl82BAAAAAhwb29sRHduMQgFAAAADSR0MDExMjExMTEzOTQAAAACXzcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEWJ1bGxDb2xsYXRlcmFsS2V5BQAAAAhidWxsQ29sMQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAASYnVsbENpcmN1bGF0aW9uS2V5BQAAAAhidWxsQ2ljMQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAARYmVhckNvbGxhdGVyYWxLZXkFAAAACGJlYXJDb2wxCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJiZWFyQ2lyY3VsYXRpb25LZXkFAAAACWJlYXJDaXJjMQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAVcG9vbE1haW5Ub2tlblZhbHVlS2V5BQAAAAlwb29sTWFpbjEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACXBvb2xVcEtleQUAAAAHcG9vbFVwMQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAKcG9vbER3bktleQUAAAAIcG9vbER3bjEFAAAAA25pbAEAAAAHZGVxdWV1ZQAAAAADCQAAAAAAAAIFAAAACXF1ZXVlU2l6ZQAAAAAAAAAAAAkAAAIAAAABAgAAABFub3RoaW5nIHRvIHNldHRsZQoBAAAACmNvbGxlY3RGZWUAAAABAAAABGZlZXMJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJmZWVzQWNjdW11bGF0ZWRLZXkJAABkAAAAAgUAAAAPZmVlc0FjY3VtdWxhdGVkBQAAAARmZWVzBAAAABFkZWNyZWFzZVF1ZXVlU2l6ZQkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADHF1ZXVlU2l6ZUtleQkAAGUAAAACBQAAAAlxdWV1ZVNpemUAAAAAAAAAAAEEAAAADWlzTGFzdEVsZW1lbnQJAAAAAAAAAgUAAAALaGVhZFBvaW50ZXIFAAAAC3RhaWxQb2ludGVyBAAAAA1vdmVyd3JpdGVUYWlsCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA50YWlsUG9pbnRlcktleQIAAAAABAAAAARkYXRhCQAEtQAAAAIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAR0aGlzBQAAAAtoZWFkUG9pbnRlcgIAAAAQYmFkIGhlYWQgcG9pbnRlcgIAAAABfAQAAAAGYWN0aW9uCQABkQAAAAIFAAAABGRhdGEAAAAAAAAAAAAEAAAAA2FtdAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAABGRhdGEAAAAAAAAAAAEEAAAABXRva2VuCQABkQAAAAIFAAAABGRhdGEAAAAAAAAAAAIEAAAACnByaWNlSW5kZXgJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAARkYXRhAAAAAAAAAAADBAAAAAdpbnZva2VyCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQABkQAAAAIFAAAABGRhdGEAAAAAAAAAAAQEAAAABG5leHQJAAGRAAAAAgUAAAAEZGF0YQAAAAAAAAAABQQAAAAFaXRlbXMDCQAAZgAAAAIFAAAAFHJlYmFsYW5jZWRQcmljZUluZGV4BQAAAApwcmljZUluZGV4CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAJGNvcnJ1cHQgc3RhdGUsIHJlYmFsYW5jZWRQcmljZUluZGV4PQkAAaQAAAABBQAAABRyZWJhbGFuY2VkUHJpY2VJbmRleAIAAAATLCByZXF1ZXN0IHByaWNlIGlkPQkAAaQAAAABBQAAAApwcmljZUluZGV4AwkAAGYAAAACBQAAAApwcmljZUluZGV4BQAAABRyZWJhbGFuY2VkUHJpY2VJbmRleAkAAAIAAAABAgAAACljYW4ndCBkZXF1ZXVlLCB0b28gZWFybHksIHJlYmFsYW5jZSBmaXJzdAMJAAAAAAAAAgUAAAAGYWN0aW9uBQAAAAVJU1NVRQQAAAAHZmVlU2l6ZQkAAGsAAAADBQAAAANhbXQFAAAAD2lzc3VlUGVyY2VudGlsZQAAAAAAAAAnEAQAAAAPYWRkZWRDb2xsYXRlcmFsCQAAZQAAAAIFAAAAA2FtdAUAAAAHZmVlU2l6ZQMJAAAAAAAAAgUAAAAFdG9rZW4FAAAABEJVTEwEAAAAEmFkZGVkVG9DaXJjdWxhdGlvbgkAAGsAAAADBQAAAAhidWxsQ2lyYwUAAAAPYWRkZWRDb2xsYXRlcmFsBQAAAAdidWxsQ29sCQAETgAAAAIJAQAAABRhY3Rpb25zV2l0aE1heWJlUG9vbAAAAAQJAABkAAAAAgUAAAAHYnVsbENvbAUAAAAPYWRkZWRDb2xsYXRlcmFsBQAAAAdiZWFyQ29sCQAAZAAAAAIFAAAACGJ1bGxDaXJjBQAAABJhZGRlZFRvQ2lyY3VsYXRpb24FAAAACGJlYXJDaXJjCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAADmhlYWRQb2ludGVyS2V5BQAAAARuZXh0CQAETAAAAAIJAQAAAApjb2xsZWN0RmVlAAAAAQUAAAAHZmVlU2l6ZQkABEwAAAACBQAAABFkZWNyZWFzZVF1ZXVlU2l6ZQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAdpbnZva2VyBQAAABJhZGRlZFRvQ2lyY3VsYXRpb24JAAJZAAAAAQUAAAAEQlVMTAUAAAADbmlsAwkAAAAAAAACBQAAAAV0b2tlbgUAAAAEQkVBUgQAAAASYWRkZWRUb0NpcmN1bGF0aW9uCQAAawAAAAMFAAAACGJlYXJDaXJjBQAAAA9hZGRlZENvbGxhdGVyYWwFAAAAB2JlYXJDb2wJAAROAAAAAgkBAAAAFGFjdGlvbnNXaXRoTWF5YmVQb29sAAAABAUAAAAHYnVsbENvbAkAAGQAAAACBQAAAAdiZWFyQ29sBQAAAA9hZGRlZENvbGxhdGVyYWwFAAAACGJ1bGxDaXJjCQAAZAAAAAIFAAAACGJlYXJDaXJjBQAAABJhZGRlZFRvQ2lyY3VsYXRpb24JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAOaGVhZFBvaW50ZXJLZXkFAAAABG5leHQJAARMAAAAAgkBAAAACmNvbGxlY3RGZWUAAAABBQAAAAdmZWVTaXplCQAETAAAAAIFAAAAEWRlY3JlYXNlUXVldWVTaXplCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAB2ludm9rZXIFAAAAEmFkZGVkVG9DaXJjdWxhdGlvbgkAAlkAAAABBQAAAARCRUFSBQAAAANuaWwJAAACAAAAAQIAAAAMYmFkIHRva2VuIGlkAwkAAAAAAAACBQAAAAZhY3Rpb24FAAAABlJFREVFTQQAAAANcmVtb3ZlZFRva2VucwUAAAADYW10AwkAAAAAAAACBQAAAAV0b2tlbgUAAAAEQlVMTAQAAAARcmVtb3ZlZENvbGxhdGVyYWwJAABrAAAAAwUAAAAHYnVsbENvbAUAAAANcmVtb3ZlZFRva2VucwUAAAAIYnVsbENpcmMEAAAAB2ZlZVNpemUJAABrAAAAAwUAAAARcmVtb3ZlZENvbGxhdGVyYWwFAAAAEHJlZGVlbVBlcmNlbnRpbGUAAAAAAAAAJxAEAAAABnBheW91dAMJAABmAAAAAgUAAAARcmVtb3ZlZENvbGxhdGVyYWwFAAAAB2ZlZVNpemUJAABlAAAAAgUAAAARcmVtb3ZlZENvbGxhdGVyYWwFAAAAB2ZlZVNpemUAAAAAAAAAAAAJAAROAAAAAgkBAAAAFGFjdGlvbnNXaXRoTWF5YmVQb29sAAAABAkAAGUAAAACBQAAAAdidWxsQ29sBQAAABFyZW1vdmVkQ29sbGF0ZXJhbAUAAAAHYmVhckNvbAkAAGUAAAACBQAAAAhidWxsQ2lyYwUAAAANcmVtb3ZlZFRva2VucwUAAAAIYmVhckNpcmMJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAOaGVhZFBvaW50ZXJLZXkFAAAABG5leHQJAARMAAAAAgkBAAAACmNvbGxlY3RGZWUAAAABBQAAAAdmZWVTaXplCQAETAAAAAIFAAAAEWRlY3JlYXNlUXVldWVTaXplCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAB2ludm9rZXIFAAAABnBheW91dAkAAlkAAAABBQAAAAltYWluVG9rZW4FAAAAA25pbAMJAAAAAAAAAgUAAAAFdG9rZW4FAAAABEJFQVIEAAAAEXJlbW92ZWRDb2xsYXRlcmFsCQAAawAAAAMFAAAAB2JlYXJDb2wFAAAADXJlbW92ZWRUb2tlbnMFAAAACGJlYXJDaXJjBAAAAAdmZWVTaXplCQAAawAAAAMFAAAAEXJlbW92ZWRDb2xsYXRlcmFsBQAAABByZWRlZW1QZXJjZW50aWxlAAAAAAAAACcQBAAAAAZwYXlvdXQDCQAAZgAAAAIFAAAAEXJlbW92ZWRDb2xsYXRlcmFsBQAAAAdmZWVTaXplCQAAZQAAAAIFAAAAEXJlbW92ZWRDb2xsYXRlcmFsBQAAAAdmZWVTaXplAAAAAAAAAAAACQAETgAAAAIJAQAAABRhY3Rpb25zV2l0aE1heWJlUG9vbAAAAAQFAAAAB2J1bGxDb2wJAABlAAAAAgUAAAAHYmVhckNvbAUAAAARcmVtb3ZlZENvbGxhdGVyYWwFAAAACGJ1bGxDaXJjCQAAZQAAAAIFAAAACGJlYXJDaXJjBQAAAA1yZW1vdmVkVG9rZW5zCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAADmhlYWRQb2ludGVyS2V5BQAAAARuZXh0CQAETAAAAAIJAQAAAApjb2xsZWN0RmVlAAAAAQUAAAAHZmVlU2l6ZQkABEwAAAACBQAAABFkZWNyZWFzZVF1ZXVlU2l6ZQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAdpbnZva2VyBQAAAAZwYXlvdXQJAAJZAAAAAQUAAAAJbWFpblRva2VuBQAAAANuaWwJAAACAAAAAQIAAAAMYmFkIHRva2VuIGlkAwkAAAAAAAACBQAAAAZhY3Rpb24FAAAABFBPT0wEAAAAC2lzc3VlVG9rZW5zCQAAawAAAAMFAAAAFHBvb2xUb2tlbkNpcmN1bGF0aW9uBQAAAANhbXQFAAAACXBvb2xWYWx1ZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAVcG9vbE1haW5Ub2tlblZhbHVlS2V5CQAAZAAAAAIFAAAACHBvb2xNYWluBQAAAANhbXQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAF3Bvb2xUb2tlbkNpcmN1bGF0aW9uS2V5CQAAZAAAAAIFAAAAFHBvb2xUb2tlbkNpcmN1bGF0aW9uBQAAAAtpc3N1ZVRva2VucwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA5oZWFkUG9pbnRlcktleQUAAAAEbmV4dAkABEwAAAACBQAAABFkZWNyZWFzZVF1ZXVlU2l6ZQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAdpbnZva2VyBQAAAAtpc3N1ZVRva2VucwkAAlkAAAABBQAAAAlwb29sVG9rZW4FAAAAA25pbAMJAAAAAAAAAgUAAAAGYWN0aW9uBQAAAAZVTlBPT0wKAQAAAAVzaGFyZQAAAAEAAAABYQkAAGsAAAADBQAAAAFhBQAAAANhbXQFAAAAFHBvb2xUb2tlbkNpcmN1bGF0aW9uBAAAAAx1bnBvb2xlZE1haW4JAQAAAAVzaGFyZQAAAAEFAAAACHBvb2xNYWluBAAAAAp1bnBvb2xlZFVwCQEAAAAFc2hhcmUAAAABBQAAAAZwb29sVXAEAAAAC3VucG9vbGVkRHduCQEAAAAFc2hhcmUAAAABBQAAAAdwb29sRHduBAAAAA91bnBvb2xlZFVwVmFsdWUJAABrAAAAAwUAAAAKdW5wb29sZWRVcAUAAAAHYnVsbENvbAUAAAAIYnVsbENpcmMEAAAAEHVucG9vbGVkRHduVmFsdWUJAABrAAAAAwUAAAALdW5wb29sZWREd24FAAAAB2JlYXJDb2wFAAAACGJlYXJDaXJjCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABVwb29sTWFpblRva2VuVmFsdWVLZXkJAABlAAAAAgUAAAAIcG9vbE1haW4FAAAADHVucG9vbGVkTWFpbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAXcG9vbFRva2VuQ2lyY3VsYXRpb25LZXkJAABlAAAAAgUAAAAUcG9vbFRva2VuQ2lyY3VsYXRpb24FAAAAA2FtdAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAJcG9vbFVwS2V5CQAAZQAAAAIFAAAABnBvb2xVcAUAAAAKdW5wb29sZWRVcAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAKcG9vbER3bktleQkAAGUAAAACBQAAAAdwb29sRHduBQAAAAt1bnBvb2xlZER3bgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAASYnVsbENpcmN1bGF0aW9uS2V5CQAAZQAAAAIFAAAACGJ1bGxDaXJjBQAAAAp1bnBvb2xlZFVwCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJiZWFyQ2lyY3VsYXRpb25LZXkJAABlAAAAAgUAAAAIYmVhckNpcmMFAAAAC3VucG9vbGVkRHduCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABFidWxsQ29sbGF0ZXJhbEtleQkAAGUAAAACBQAAAAdidWxsQ29sBQAAAA91bnBvb2xlZFVwVmFsdWUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEWJlYXJDb2xsYXRlcmFsS2V5CQAAZQAAAAIFAAAAB2JlYXJDb2wFAAAAEHVucG9vbGVkRHduVmFsdWUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAOaGVhZFBvaW50ZXJLZXkFAAAABG5leHQJAARMAAAAAgUAAAARZGVjcmVhc2VRdWV1ZVNpemUJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAHaW52b2tlcgkAAGQAAAACCQAAZAAAAAIFAAAADHVucG9vbGVkTWFpbgUAAAAPdW5wb29sZWRVcFZhbHVlBQAAABB1bnBvb2xlZER3blZhbHVlCQACWQAAAAEFAAAACW1haW5Ub2tlbgUAAAADbmlsCQAAAgAAAAEJAAEsAAAAAgIAAAAMYmFkIGFjdGlvbjogBQAAAAZhY3Rpb24DBQAAAA1pc0xhc3RFbGVtZW50CQAETAAAAAIFAAAADW92ZXJ3cml0ZVRhaWwFAAAABWl0ZW1zBQAAAAVpdGVtcwEAAAAJcmViYWxhbmNlAAAAAAoBAAAAAkxWAAAAAwAAAAF2AAAAAnAwAAAAAnAxBAAAAAVkZW5vbQAAAAAAAAAAZAQAAAAEcG1heAkAAGkAAAACAwkAAGYAAAACBQAAAAJwMQUAAAACcDAFAAAAAnAxBQAAAAJwMAUAAAAFZGVub20EAAAABHBtaW4JAABpAAAAAgMJAABmAAAAAgUAAAACcDAFAAAAAnAxBQAAAAJwMQUAAAACcDAFAAAABWRlbm9tBAAAAAFhCQAAaAAAAAIFAAAABHBtaW4FAAAABHBtaW4EAAAAAWIJAABlAAAAAgkAAGgAAAACCQAAaAAAAAIAAAAAAAAAAAkFAAAABHBtYXgFAAAABHBtYXgJAABoAAAAAgkAAGgAAAACAAAAAAAAAAAPBQAAAARwbWF4BQAAAARwbWluCQAAawAAAAMFAAAAAXYJAABkAAAAAgkAAGgAAAACAAAAAAAAAAAGBQAAAAFhBQAAAAFiCQAAZAAAAAIJAABoAAAAAgAAAAAAAAAABwUAAAABYQUAAAABYgQAAAARc2V0dGxlZFByaWNlSW5kZXgJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAABpsYXN0UmViYWxhbmNlUHJpY2VJbmRleEtleQIAAAARaW5jb25zaXN0ZW50IGRhdGEEAAAAE3Vuc2V0dGxlZFByaWNlSW5kZXgJAABkAAAAAgUAAAARc2V0dGxlZFByaWNlSW5kZXgAAAAAAAAAAAEEAAAAEnNldHRsZWRQcmljZUhlaWdodAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABm9yYWNsZQkAASwAAAACAgAAAAxwcmljZV9pbmRleF8JAAGkAAAAAQUAAAARc2V0dGxlZFByaWNlSW5kZXgCAAAAKGJhZCBvcmFjbGUgZGF0YSBmb3Igc2V0dGxlZCBwcmljZSBoZWlnaHQEAAAADHNldHRsZWRQcmljZQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABm9yYWNsZQkAASwAAAACAgAAAAZwcmljZV8JAAGkAAAAAQUAAAASc2V0dGxlZFByaWNlSGVpZ2h0AgAAABliYWQgb3JhY2xlIGRhdGEgZm9yIHByaWNlBAAAAA9uZXh0UHJpY2VIZWlnaHQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAZvcmFjbGUJAAEsAAAAAgIAAAAMcHJpY2VfaW5kZXhfCQABpAAAAAEFAAAAE3Vuc2V0dGxlZFByaWNlSW5kZXgCAAAAFG5vIG5leHQgcHJpY2UgaGVpZ2h0BAAAAAluZXh0UHJpY2UJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAZvcmFjbGUJAAEsAAAAAgIAAAAGcHJpY2VfCQABpAAAAAEFAAAAD25leHRQcmljZUhlaWdodAIAAAANbm8gbmV4dCBwcmljZQQAAAAGbWluVm9sAwkAAGYAAAACBQAAAAdiZWFyQ29sBQAAAAdidWxsQ29sBQAAAAdidWxsQ29sBQAAAAdiZWFyQ29sBAAAAAZyZWRpc3QJAQAAAAJMVgAAAAMFAAAABm1pblZvbAUAAAAMc2V0dGxlZFByaWNlBQAAAAluZXh0UHJpY2UEAAAACm5ld0J1bGxDb2wDCQAAZgAAAAIFAAAACW5leHRQcmljZQUAAAAMc2V0dGxlZFByaWNlCQAAZAAAAAIFAAAAB2J1bGxDb2wFAAAABnJlZGlzdAkAAGUAAAACBQAAAAdidWxsQ29sBQAAAAZyZWRpc3QEAAAACm5ld0JlYXJDb2wDCQAAZgAAAAIFAAAACW5leHRQcmljZQUAAAAMc2V0dGxlZFByaWNlCQAAZQAAAAIFAAAAB2JlYXJDb2wFAAAABnJlZGlzdAkAAGQAAAACBQAAAAdiZWFyQ29sBQAAAAZyZWRpc3QEAAAADSR0MDE5MjYwMTk0NDcJAQAAAAtwb29sU3VwcG9ydAAAAAcFAAAACm5ld0J1bGxDb2wFAAAACm5ld0JlYXJDb2wFAAAACGJ1bGxDaXJjBQAAAAhiZWFyQ2lyYwUAAAAIcG9vbE1haW4FAAAABnBvb2xVcAUAAAAHcG9vbER3bgQAAAAKdXBkQnVsbENvbAgFAAAADSR0MDE5MjYwMTk0NDcAAAACXzEEAAAACnVwZEJlYXJDb2wIBQAAAA0kdDAxOTI2MDE5NDQ3AAAAAl8yBAAAAAt1cGRCdWxsQ2lyYwgFAAAADSR0MDE5MjYwMTk0NDcAAAACXzMEAAAAC3VwZEJlYXJDaXJjCAUAAAANJHQwMTkyNjAxOTQ0NwAAAAJfNAQAAAALdXBkUG9vbE1haW4IBQAAAA0kdDAxOTI2MDE5NDQ3AAAAAl81BAAAAAl1cGRQb29sVXAIBQAAAA0kdDAxOTI2MDE5NDQ3AAAAAl82BAAAAAp1cGRQb29sRHduCAUAAAANJHQwMTkyNjAxOTQ0NwAAAAJfNwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAARYnVsbENvbGxhdGVyYWxLZXkFAAAACnVwZEJ1bGxDb2wJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEWJlYXJDb2xsYXRlcmFsS2V5BQAAAAp1cGRCZWFyQ29sCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJidWxsQ2lyY3VsYXRpb25LZXkFAAAAC3VwZEJ1bGxDaXJjCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJiZWFyQ2lyY3VsYXRpb25LZXkFAAAAC3VwZEJlYXJDaXJjCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABVwb29sTWFpblRva2VuVmFsdWVLZXkFAAAAC3VwZFBvb2xNYWluCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAlwb29sVXBLZXkFAAAACXVwZFBvb2xVcAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAKcG9vbER3bktleQUAAAAKdXBkUG9vbER3bgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAabGFzdFJlYmFsYW5jZVByaWNlSW5kZXhLZXkFAAAAE3Vuc2V0dGxlZFByaWNlSW5kZXgFAAAAA25pbAAAAAcAAAAD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", "chainId": 84, "height": 1218610, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 4 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let a = 1000000 | |
5 | + | ||
6 | + | let b = 100000000 | |
7 | + | ||
8 | + | let c = "configProvider" | |
9 | + | ||
10 | + | let d = { | |
11 | + | let e = getString(this, c) | |
12 | + | if ($isInstanceOf(e, "String")) | |
13 | + | then { | |
14 | + | let f = e | |
15 | + | addressFromStringValue(f) | |
16 | + | } | |
17 | + | else this | |
18 | + | } | |
19 | + | ||
20 | + | let g = "BULLId" | |
21 | + | ||
22 | + | let h = "BEARId" | |
23 | + | ||
24 | + | let i = "mainTokenId" | |
25 | + | ||
26 | + | let j = "bullCollateral" | |
27 | + | ||
28 | + | let k = "bearCollateral" | |
29 | + | ||
30 | + | let l = "bullCirculation" | |
31 | + | ||
32 | + | let m = "bearCirculation" | |
33 | + | ||
34 | + | let n = "issuePercentile" | |
35 | + | ||
36 | + | let o = "redeemPercentile" | |
37 | + | ||
38 | + | let p = "minIssue" | |
39 | + | ||
40 | + | let q = "minRedeem" | |
41 | + | ||
42 | + | let r = "minPool" | |
43 | + | ||
44 | + | let s = "feesAccumulated" | |
45 | + | ||
46 | + | let t = "issueWhiteList" | |
47 | + | ||
48 | + | let u = "oracle" | |
49 | + | ||
50 | + | let v = "price_index" | |
51 | + | ||
52 | + | let w = "price_index_" | |
53 | + | ||
54 | + | let x = "price_" | |
55 | + | ||
56 | + | let y = "price_index" | |
57 | + | ||
58 | + | let z = "lastSettlementPriceId" | |
59 | + | ||
60 | + | let A = "headPointer" | |
61 | + | ||
62 | + | let B = "tailPointer" | |
63 | + | ||
64 | + | let C = "queueSize" | |
65 | + | ||
66 | + | let D = "poolMainTokenValue" | |
67 | + | ||
68 | + | let E = "poolUp" | |
69 | + | ||
70 | + | let F = "poolDwn" | |
71 | + | ||
72 | + | let G = "poolTokenCirculation" | |
73 | + | ||
74 | + | let H = "poolToken" | |
75 | + | ||
76 | + | let I = valueOrErrorMessage(getInteger(this, j), "no bullCollateralKey") | |
77 | + | ||
78 | + | let J = valueOrErrorMessage(getInteger(this, k), "no bearCollateralKey") | |
79 | + | ||
80 | + | let K = valueOrErrorMessage(getInteger(this, l), "no bullCirculationKey") | |
81 | + | ||
82 | + | let L = valueOrErrorMessage(getInteger(this, m), "no bearCirculationKey") | |
83 | + | ||
84 | + | let M = valueOrErrorMessage(getString(this, g), "no BULLKey") | |
85 | + | ||
86 | + | let N = valueOrErrorMessage(getString(this, h), "no BEARKey") | |
87 | + | ||
88 | + | let O = valueOrErrorMessage(getString(this, i), "no mainTokenKey") | |
89 | + | ||
90 | + | let P = valueOrErrorMessage(getInteger(d, n), "no issuePercentileKey") | |
91 | + | ||
92 | + | let Q = valueOrErrorMessage(getInteger(d, o), "no redeemPercentileKey") | |
93 | + | ||
94 | + | let R = valueOrErrorMessage(getInteger(d, p), "no minIssueKey") | |
95 | + | ||
96 | + | let S = valueOrErrorMessage(getInteger(d, q), "no minRedeemKey") | |
97 | + | ||
98 | + | let T = valueOrErrorMessage(getInteger(d, r), "no minPoolKey") | |
99 | + | ||
100 | + | let U = valueOrErrorMessage(getString(d, t), "no whitelistKey") | |
101 | + | ||
102 | + | func V (W) = if ((U == "")) | |
103 | + | then true | |
104 | + | else isDefined(indexOf(U, toString(W))) | |
105 | + | ||
106 | + | ||
107 | + | let X = valueOrErrorMessage(getInteger(this, D), "no poolMainTokenValueKey") | |
108 | + | ||
109 | + | let Y = valueOrErrorMessage(getInteger(this, E), "no poolUpKey") | |
110 | + | ||
111 | + | let Z = valueOrErrorMessage(getInteger(this, F), "no poolDwnKey") | |
112 | + | ||
113 | + | let aa = valueOrErrorMessage(getString(this, H), "no poolTokenKey") | |
114 | + | ||
115 | + | let ab = valueOrErrorMessage(getInteger(this, G), "no poolTokenCirculationKey") | |
116 | + | ||
117 | + | let ac = ((X + fraction(I, Y, K)) + fraction(J, Z, L)) | |
118 | + | ||
119 | + | let ad = valueOrErrorMessage(addressFromPublicKey(fromBase58String(valueOrErrorMessage(getString(this, u), "no oraclePKKey"))), "bad oracle address") | |
120 | + | ||
121 | + | let ae = valueOrErrorMessage(getInteger(this, z), "no last rebalance price") | |
122 | + | ||
123 | + | let af = valueOrErrorMessage(getInteger(ad, v), ((("bad oracle data at " + toString(ad)) + ": no integer at ") + v)) | |
124 | + | ||
125 | + | let ag = valueOrElse(getInteger(this, C), 0) | |
126 | + | ||
127 | + | let ah = valueOrElse(getString(this, A), "") | |
128 | + | ||
129 | + | let ai = valueOrElse(getString(this, B), "") | |
130 | + | ||
131 | + | let aj = valueOrElse(getInteger(this, s), 0) | |
132 | + | ||
133 | + | let ak = "ISSUE" | |
134 | + | ||
135 | + | let al = "REDEEM" | |
136 | + | ||
137 | + | let am = "POOL" | |
138 | + | ||
139 | + | let an = "UNPOOL" | |
140 | + | ||
141 | + | let ao = "feeAddress" | |
142 | + | ||
143 | + | let ap = "stakingAddress" | |
144 | + | ||
145 | + | let aq = "daemonPublicKey" | |
146 | + | ||
147 | + | let ar = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(d, ao), "no feeAddress")), "bad feeAddress") | |
148 | + | ||
149 | + | let as = valueOrErrorMessage(getString(d, ap), "no stakingAddress") | |
150 | + | ||
151 | + | let at = fromBase58String(valueOrErrorMessage(getString(d, aq), "no daemonPublicKey")) | |
152 | + | ||
153 | + | let au = addressFromString("3PNikM6yp4NqcSU8guxQtmR5onr2D4e8yTJ") | |
154 | + | ||
155 | + | let av = ["2HHqV8W9DJayV5R6tBD2Sb8srphpoboDi7r1t1aPiumC", "5ZXe82RRASU7qshXM2J9JNYhqJ9GWYjjVq2gwUV5Naz9", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"] | |
156 | + | ||
157 | + | func aw (W,ax,ay) = if (if ((W == 0)) | |
158 | + | then true | |
159 | + | else (ax == 0)) | |
160 | + | then 0 | |
161 | + | else fraction(W, ax, ay) | |
162 | + | ||
163 | + | ||
164 | + | func az (aA,aB,aC,aD,aE) = (((((((((aA + "|") + toString(aB)) + "|") + aC) + "|") + toString(aD)) + "|") + aE) + "|") | |
165 | + | ||
166 | + | ||
167 | + | func aF (aG) = { | |
168 | + | let aH = if ((Y > 0)) | |
169 | + | then M | |
170 | + | else N | |
171 | + | if ((aH == aG)) | |
172 | + | then X | |
173 | + | else ((2 * ac) - X) | |
174 | + | } | |
175 | + | ||
176 | + | ||
177 | + | func aI (aJ) = if ((aJ.caller == this)) | |
178 | + | then throw("can't do") | |
179 | + | else { | |
180 | + | func aK (aL) = throw(((((("only BULL(" + M) + ") or BEAR(") + N) + ") tokens are accepted, received: ") + aL)) | |
181 | + | ||
182 | + | let aM = toBase58String(valueOrErrorMessage(value(aJ.payments[0]).assetId, "waves are not accepted here")) | |
183 | + | if (if ((aM != N)) | |
184 | + | then (aM != M) | |
185 | + | else false) | |
186 | + | then aK(aM) | |
187 | + | else { | |
188 | + | let aN = aJ.payments[0].amount | |
189 | + | let aO = if ((aM == N)) | |
190 | + | then J | |
191 | + | else I | |
192 | + | let aP = if ((aM == N)) | |
193 | + | then L | |
194 | + | else K | |
195 | + | let aQ = fraction(aO, aN, aP) | |
196 | + | if ((S > aQ)) | |
197 | + | then throw((((((((((("Attached payment too small. Min redeem amount is " + toString((S / 1000000))) + " USDN, ") + "attached amount: ") + toString(aN)) + ", col: ") + toString(aO)) + ", circ: ") + toString(aP)) + ", estimated: ") + toString(aQ))) | |
198 | + | else unit | |
199 | + | } | |
200 | + | } | |
201 | + | ||
202 | + | ||
203 | + | func aR (aS,aA,aB,aC,aD,aE) = { | |
204 | + | let aT = IntegerEntry(C, (ag + 1)) | |
205 | + | let aU = az(aA, aB, aC, aD, aE) | |
206 | + | if ((ag == 0)) | |
207 | + | then [StringEntry(A, aS), StringEntry(B, aS), StringEntry(aS, aU), aT] | |
208 | + | else { | |
209 | + | let aV = valueOrErrorMessage(getString(this, B), "can't get tail pointer") | |
210 | + | let aW = split(valueOrErrorMessage(getString(this, aV), "can't resolve pointer"), "|") | |
211 | + | let aX = ((((((((((aW[0] + "|") + aW[1]) + "|") + aW[2]) + "|") + aW[3]) + "|") + aW[4]) + "|") + aS) | |
212 | + | [StringEntry(aV, aX), StringEntry(aS, aU), StringEntry(B, aS), aT] | |
213 | + | } | |
214 | + | } | |
215 | + | ||
216 | + | ||
217 | + | func aY (aZ,ba,bb,bc,bd,be,bf) = { | |
218 | + | func bg (bh,bi,bj,bk,bl,bm,bn) = { | |
219 | + | let bo = (bh - bi) | |
220 | + | let bp = fraction(bh, bm, bj) | |
221 | + | let bq = if ((bo > bp)) | |
222 | + | then bm | |
223 | + | else fraction(bo, bj, bh) | |
224 | + | let br = if ((bo > bp)) | |
225 | + | then bp | |
226 | + | else fraction(bq, bh, bj) | |
227 | + | $Tuple7((bh - br), bi, (bj - bq), bk, (bl + br), (bm - bq), bn) | |
228 | + | } | |
229 | + | ||
230 | + | func bs (bh,bi,bj,bk,bl,bm,bn) = { | |
231 | + | let bo = (bi - bh) | |
232 | + | let bp = fraction(bi, bn, bk) | |
233 | + | let bq = if ((bo > bp)) | |
234 | + | then bn | |
235 | + | else fraction(bo, bk, bi) | |
236 | + | let br = if ((bo > bp)) | |
237 | + | then bp | |
238 | + | else fraction(bq, bi, bk) | |
239 | + | $Tuple7(bh, (bi - br), bj, (bk - bq), (bl + br), bm, (bn - bq)) | |
240 | + | } | |
241 | + | ||
242 | + | func bt (bh,bi,bj,bk,bl,bm,bn) = { | |
243 | + | let bo = (bh - bi) | |
244 | + | let bu = if ((bl > bo)) | |
245 | + | then bo | |
246 | + | else bl | |
247 | + | let bv = fraction(bu, bk, bi) | |
248 | + | $Tuple7(bh, (bi + bu), bj, (bk + bv), (bl - bu), bm, (bn + bv)) | |
249 | + | } | |
250 | + | ||
251 | + | func bw (bh,bi,bj,bk,bl,bm,bn) = { | |
252 | + | let bo = (bi - bh) | |
253 | + | let bu = if ((bl > bo)) | |
254 | + | then bo | |
255 | + | else bl | |
256 | + | let bv = fraction(bu, bj, bh) | |
257 | + | $Tuple7((bh + bu), bi, (bj + bv), bk, (bl - bu), (bm + bv), bn) | |
258 | + | } | |
259 | + | ||
260 | + | if ((aZ > ba)) | |
261 | + | then { | |
262 | + | let bx = bg(aZ, ba, bb, bc, bd, be, bf) | |
263 | + | let by = bx | |
264 | + | let W = by._1 | |
265 | + | let ax = by._2 | |
266 | + | let ay = by._3 | |
267 | + | let bz = by._4 | |
268 | + | let bA = by._5 | |
269 | + | let bB = by._6 | |
270 | + | let bC = by._7 | |
271 | + | if ((bB > 0)) | |
272 | + | then bx | |
273 | + | else if ((bB == 0)) | |
274 | + | then bt(W, ax, ay, bz, bA, bB, bC) | |
275 | + | else throw("poolUp < 0") | |
276 | + | } | |
277 | + | else { | |
278 | + | let bD = bs(aZ, ba, bb, bc, bd, be, bf) | |
279 | + | let bE = bD | |
280 | + | let W = bE._1 | |
281 | + | let ax = bE._2 | |
282 | + | let ay = bE._3 | |
283 | + | let bz = bE._4 | |
284 | + | let bA = bE._5 | |
285 | + | let bB = bE._6 | |
286 | + | let bC = bE._7 | |
287 | + | if ((bC > 0)) | |
288 | + | then bD | |
289 | + | else if ((bC == 0)) | |
290 | + | then bw(W, ax, ay, bz, bA, bB, bC) | |
291 | + | else throw("poolDwn < 0") | |
292 | + | } | |
293 | + | } | |
294 | + | ||
295 | + | ||
296 | + | func bF (aZ,ba,bb,bc) = { | |
297 | + | let bG = aY(aZ, ba, bb, bc, X, Y, Z) | |
298 | + | let bH = bG._1 | |
299 | + | let bI = bG._2 | |
300 | + | let bJ = bG._3 | |
301 | + | let bK = bG._4 | |
302 | + | let bL = bG._5 | |
303 | + | let bM = bG._6 | |
304 | + | let bN = bG._7 | |
305 | + | [IntegerEntry(j, bH), IntegerEntry(l, bJ), IntegerEntry(k, bI), IntegerEntry(m, bK), IntegerEntry(D, bL), IntegerEntry(E, bM), IntegerEntry(F, bN)] | |
306 | + | } | |
307 | + | ||
308 | + | ||
309 | + | func bO () = if ((ag == 0)) | |
310 | + | then throw("nothing to settle") | |
311 | + | else { | |
312 | + | func bP (bQ) = IntegerEntry(s, (aj + bQ)) | |
313 | + | ||
314 | + | let bR = IntegerEntry(C, (ag - 1)) | |
315 | + | let bS = (ah == ai) | |
316 | + | let bT = StringEntry(B, "") | |
317 | + | let bU = split(valueOrErrorMessage(getString(this, ah), "bad head pointer"), "|") | |
318 | + | let aA = bU[0] | |
319 | + | let aB = parseIntValue(bU[1]) | |
320 | + | let aC = bU[2] | |
321 | + | let aD = parseIntValue(bU[3]) | |
322 | + | let aE = addressFromStringValue(bU[4]) | |
323 | + | let bV = bU[5] | |
324 | + | let bW = if ((ae > aD)) | |
325 | + | then throw(((("corrupt state, rebalancedPriceIndex=" + toString(ae)) + ", request price id=") + toString(aD))) | |
326 | + | else if ((aD > ae)) | |
327 | + | then throw("can't dequeue, too early, rebalance first") | |
328 | + | else if ((aA == ak)) | |
329 | + | then { | |
330 | + | let bX = fraction(aB, P, 10000) | |
331 | + | let bY = (aB - bX) | |
332 | + | if ((aC == M)) | |
333 | + | then { | |
334 | + | let bZ = fraction(K, bY, I) | |
335 | + | (bF((I + bY), J, (K + bZ), L) ++ [StringEntry(A, bV), bP(bX), bR, ScriptTransfer(aE, bZ, fromBase58String(M))]) | |
336 | + | } | |
337 | + | else if ((aC == N)) | |
338 | + | then { | |
339 | + | let bZ = fraction(L, bY, J) | |
340 | + | (bF(I, (J + bY), K, (L + bZ)) ++ [StringEntry(A, bV), bP(bX), bR, ScriptTransfer(aE, bZ, fromBase58String(N))]) | |
341 | + | } | |
342 | + | else throw("bad token id") | |
343 | + | } | |
344 | + | else if ((aA == al)) | |
345 | + | then { | |
346 | + | let ca = aB | |
347 | + | if ((aC == M)) | |
348 | + | then { | |
349 | + | let cb = fraction(I, ca, K) | |
350 | + | let bX = fraction(cb, Q, 10000) | |
351 | + | let cc = if ((cb > bX)) | |
352 | + | then (cb - bX) | |
353 | + | else 0 | |
354 | + | (bF((I - cb), J, (K - ca), L) ++ [StringEntry(A, bV), bP(bX), bR, ScriptTransfer(aE, cc, fromBase58String(O))]) | |
355 | + | } | |
356 | + | else if ((aC == N)) | |
357 | + | then { | |
358 | + | let cb = fraction(J, ca, L) | |
359 | + | let bX = fraction(cb, Q, 10000) | |
360 | + | let cc = if ((cb > bX)) | |
361 | + | then (cb - bX) | |
362 | + | else 0 | |
363 | + | (bF(I, (J - cb), K, (L - ca)) ++ [StringEntry(A, bV), bP(bX), bR, ScriptTransfer(aE, cc, fromBase58String(O))]) | |
364 | + | } | |
365 | + | else throw("bad token id") | |
366 | + | } | |
367 | + | else if ((aA == am)) | |
368 | + | then { | |
369 | + | let cd = fraction(ab, aB, ac) | |
370 | + | [IntegerEntry(D, (X + aB)), IntegerEntry(G, (ab + cd)), StringEntry(A, bV), bR, ScriptTransfer(aE, cd, fromBase58String(aa))] | |
371 | + | } | |
372 | + | else if ((aA == an)) | |
373 | + | then { | |
374 | + | func ce (W) = fraction(W, aB, ab) | |
375 | + | ||
376 | + | let cf = ce(X) | |
377 | + | let cg = ce(Y) | |
378 | + | let ch = ce(Z) | |
379 | + | let ci = fraction(cg, I, K) | |
380 | + | let cj = fraction(ch, J, L) | |
381 | + | [IntegerEntry(D, (X - cf)), IntegerEntry(G, (ab - aB)), IntegerEntry(E, (Y - cg)), IntegerEntry(F, (Z - ch)), IntegerEntry(l, (K - cg)), IntegerEntry(m, (L - ch)), IntegerEntry(j, (I - ci)), IntegerEntry(k, (J - cj)), StringEntry(A, bV), bR, ScriptTransfer(aE, ((cf + ci) + cj), fromBase58String(O))] | |
382 | + | } | |
383 | + | else throw(("bad action: " + aA)) | |
384 | + | if (bS) | |
385 | + | then bT :: bW | |
386 | + | else bW | |
387 | + | } | |
388 | + | ||
389 | + | ||
390 | + | func ck () = { | |
391 | + | func cl (cm,cn,co) = { | |
392 | + | let cp = 100 | |
393 | + | let cq = ((if ((co > cn)) | |
394 | + | then co | |
395 | + | else cn) / cp) | |
396 | + | let cr = ((if ((cn > co)) | |
397 | + | then co | |
398 | + | else cn) / cp) | |
399 | + | let W = (cr * cr) | |
400 | + | let ax = (((9 * cq) * cq) - ((15 * cq) * cr)) | |
401 | + | fraction(cm, ((6 * W) + ax), ((7 * W) + ax)) | |
402 | + | } | |
403 | + | ||
404 | + | let cs = valueOrErrorMessage(getInteger(this, z), "inconsistent data") | |
405 | + | let ct = (cs + 1) | |
406 | + | let cu = valueOrErrorMessage(getInteger(ad, ("price_index_" + toString(cs))), "bad oracle data for settled price height") | |
407 | + | let cv = valueOrErrorMessage(getInteger(ad, ("price_" + toString(cu))), "bad oracle data for price") | |
408 | + | let cw = valueOrErrorMessage(getInteger(ad, ("price_index_" + toString(ct))), "no next price height") | |
409 | + | let cx = valueOrErrorMessage(getInteger(ad, ("price_" + toString(cw))), "no next price") | |
410 | + | let cy = if ((J > I)) | |
411 | + | then I | |
412 | + | else J | |
413 | + | let cz = cl(cy, cv, cx) | |
414 | + | let cA = if ((cx > cv)) | |
415 | + | then (I + cz) | |
416 | + | else (I - cz) | |
417 | + | let cB = if ((cx > cv)) | |
418 | + | then (J - cz) | |
419 | + | else (J + cz) | |
420 | + | let cC = aY(cA, cB, K, L, X, Y, Z) | |
421 | + | let cD = cC._1 | |
422 | + | let cE = cC._2 | |
423 | + | let cF = cC._3 | |
424 | + | let cG = cC._4 | |
425 | + | let cH = cC._5 | |
426 | + | let cI = cC._6 | |
427 | + | let cJ = cC._7 | |
428 | + | [IntegerEntry(j, cD), IntegerEntry(k, cE), IntegerEntry(l, cF), IntegerEntry(m, cG), IntegerEntry(D, cH), IntegerEntry(E, cI), IntegerEntry(F, cJ), IntegerEntry(z, ct)] | |
429 | + | } | |
430 | + | ||
431 | + | ||
432 | + | @Callable(aJ) | |
433 | + | func init (cK,cL,cM,cN,cO,cP,cQ,cR,cp) = if (isDefined(getString(this, g))) | |
434 | + | then throw("already initialized") | |
435 | + | else { | |
436 | + | let cS = aJ.payments[0].amount | |
437 | + | let cT = (cS / 3) | |
438 | + | let cU = cT | |
439 | + | let cV = ((cS - cT) - cU) | |
440 | + | if (if (if ((cU == 0)) | |
441 | + | then true | |
442 | + | else (cT == 0)) | |
443 | + | then true | |
444 | + | else (cV == 0)) | |
445 | + | then throw("can't init balances") | |
446 | + | else { | |
447 | + | let cW = valueOrErrorMessage(getInteger(valueOrErrorMessage(addressFromPublicKey(fromBase58String(cL)), "bad oracle address"), v), "can't find last oracle price index") | |
448 | + | let cX = Issue(cM, cO, ((100 * a) * a), 6, true) | |
449 | + | let cY = Issue(cN, cP, ((100 * a) * a), 6, true) | |
450 | + | let cZ = Issue(cQ, cR, ((100 * a) * a), 6, true) | |
451 | + | let da = calculateAssetId(cX) | |
452 | + | let db = calculateAssetId(cY) | |
453 | + | let dc = calculateAssetId(cZ) | |
454 | + | [cX, cY, cZ, StringEntry(g, toBase58String(da)), StringEntry(h, toBase58String(db)), StringEntry(i, toBase58String(value(aJ.payments[0].assetId))), StringEntry(H, toBase58String(dc)), StringEntry(u, cL), IntegerEntry(z, cW), IntegerEntry(j, cT), IntegerEntry(k, cU), IntegerEntry(l, (cT / cp)), IntegerEntry(m, (cU / cp)), IntegerEntry(G, (cV / cp)), IntegerEntry(F, 0), IntegerEntry(E, 0), IntegerEntry(D, cV), StringEntry(c, cK), ScriptTransfer(aJ.caller, (cT / cp), da), ScriptTransfer(aJ.caller, (cU / cp), db), ScriptTransfer(aJ.caller, (cV / cp), dc)] | |
455 | + | } | |
456 | + | } | |
457 | + | ||
458 | + | ||
459 | + | ||
460 | + | @Callable(dd) | |
461 | + | func withdrawFee (de) = if ((de > aj)) | |
462 | + | then throw(("too much. available: " + toString(aj))) | |
463 | + | else [IntegerEntry(s, (aj - de)), ScriptTransfer(ar, de, fromBase58String(O))] | |
464 | + | ||
465 | + | ||
466 | + | ||
467 | + | @Callable(aJ) | |
468 | + | func requestRedeem () = if ((aI(aJ) == unit)) | |
469 | + | then { | |
470 | + | let aM = toBase58String(valueOrErrorMessage(aJ.payments[0].assetId, "waves are not accepted here")) | |
471 | + | aR(toBase58String(aJ.transactionId), al, aJ.payments[0].amount, aM, (af + 1), toString(aJ.caller)) | |
472 | + | } | |
473 | + | else throw("doesn't happen") | |
474 | + | ||
475 | + | ||
476 | + | ||
477 | + | @Callable(aJ) | |
478 | + | func requestIssue (aG) = if ((aJ.caller == this)) | |
479 | + | then throw("can't do") | |
480 | + | else if (!(V(aJ.caller))) | |
481 | + | then throw("only whitelisted can do") | |
482 | + | else { | |
483 | + | let aK = throw((((((("only BULL(" + M) + ") or BEAR(") + N) + ") tokens are available in exchange for USDN(") + O) + ")")) | |
484 | + | if (if ((aG != M)) | |
485 | + | then (aG != N) | |
486 | + | else false) | |
487 | + | then aK | |
488 | + | else if ((aJ.payments[0].assetId != fromBase58String(O))) | |
489 | + | then aK | |
490 | + | else if ((R > aJ.payments[0].amount)) | |
491 | + | then throw((("Attached payment too small. Min required: " + toString((R / 1000000))) + " USDN")) | |
492 | + | else { | |
493 | + | let df = aF(aG) | |
494 | + | if (if ((U == "")) | |
495 | + | then (aJ.payments[0].amount > df) | |
496 | + | else false) | |
497 | + | then throw((("trying to issue more than pool can handle. Max attachment allowed = " + toString((df / 1000000))) + " USDN")) | |
498 | + | else aR(toBase58String(aJ.transactionId), ak, aJ.payments[0].amount, aG, (af + 1), toString(aJ.caller)) | |
499 | + | } | |
500 | + | } | |
501 | + | ||
502 | + | ||
503 | + | ||
504 | + | @Callable(aJ) | |
505 | + | func settle () = { | |
506 | + | let dg = (ah == "") | |
507 | + | let dh = (af > ae) | |
508 | + | if (dg) | |
509 | + | then if (dh) | |
510 | + | then ck() | |
511 | + | else throw("[OK] all done, carry on") | |
512 | + | else { | |
513 | + | let bU = split(valueOrErrorMessage(getString(this, ah), "bad head pointer"), "|") | |
514 | + | let aD = parseIntValue(bU[3]) | |
515 | + | if ((aD > ae)) | |
516 | + | then if (dh) | |
517 | + | then ck() | |
518 | + | else throw("[OK] need to wait") | |
519 | + | else if ((aD == ae)) | |
520 | + | then bO() | |
521 | + | else throw("corrupt data, future price id already rebalanced") | |
522 | + | } | |
523 | + | } | |
524 | + | ||
525 | + | ||
526 | + | ||
527 | + | @Callable(aJ) | |
528 | + | func requestPool () = if (!(V(aJ.caller))) | |
529 | + | then throw("only whitelisted can do") | |
530 | + | else { | |
531 | + | let di = (("main token must be attached(" + O) + ")") | |
532 | + | let dj = aJ.payments[0] | |
533 | + | if ((dj.assetId != fromBase58String(O))) | |
534 | + | then throw(di) | |
535 | + | else if ((T > dj.amount)) | |
536 | + | then throw(((("pool at least " + toString(T)) + " ") + O)) | |
537 | + | else aR(toBase58String(aJ.transactionId), am, aJ.payments[0].amount, "", (af + 1), toString(aJ.caller)) | |
538 | + | } | |
539 | + | ||
540 | + | ||
541 | + | ||
542 | + | @Callable(aJ) | |
543 | + | func requestUnpool () = { | |
544 | + | let di = (("only pool token allowed(" + aa) + ")") | |
545 | + | let dj = aJ.payments[0] | |
546 | + | if ((dj.assetId != fromBase58String(aa))) | |
547 | + | then throw(di) | |
548 | + | else { | |
549 | + | let dk = fraction(ac, dj.amount, ab) | |
550 | + | if ((T > dk)) | |
551 | + | then throw(((("unpool at least for" + toString(T)) + " ") + O)) | |
552 | + | else aR(toBase58String(aJ.transactionId), an, aJ.payments[0].amount, "", (af + 1), toString(aJ.caller)) | |
553 | + | } | |
554 | + | } | |
555 | + | ||
556 | + | ||
557 | + | @Verifier(dl) | |
558 | + | func dm () = true | |
559 | + |
github/deemru/w8io/169f3d6 44.54 ms ◑