tx · 48G5A1xEfH6mzVunUDqUEPxhyV7TU9Xi5hHirRiDoR7s

3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT:  -0.01400000 Waves

2021.12.25 14:05 [1849712] smart account 3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT > SELF 0.00000000 Waves

{ "type": 13, "id": "48G5A1xEfH6mzVunUDqUEPxhyV7TU9Xi5hHirRiDoR7s", "fee": 1400000, "feeAssetId": null, "timestamp": 1640430322861, "version": 1, "sender": "3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT", "senderPublicKey": "D1BL65meykxFZTCuq7jq9HSGLLnWvQamQPUNrguW5w39", "proofs": [ "51pcLThWwkuK9RK75NNn7gBpkYWi3YpmjrHfFQ1VpEhXYVWnvnuwmTLWn3dJb6VFpPUhfWFTB6HSuwkVFBxsmTXy" ], "script": "base64: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b3J5Q29uZmlnAQAAAA1rZXlNYXRjaGVyUHViAAAAAAIAAAAYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQAAAA1rZXlQb29sQ29uZmlnAAAAAgAAAAlpQW10QXNzZXQAAAALaVByaWNlQXNzZXQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIJWQlZCVzX18FAAAACWlBbXRBc3NldAIAAAACX18FAAAAC2lQcmljZUFzc2V0AgAAAAhfX2NvbmZpZwEAAAAfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAAAAAEAAAAMYmFzZUFzc2V0U3RyCQABLAAAAAICAAAAKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAAAADGJhc2VBc3NldFN0cgEAAAATa2V5QWxsUG9vbHNTaHV0ZG93bgAAAAACAAAADCVzX19zaHV0ZG93bgEAAAANa2V5UG9vbFdlaWdodAAAAAEAAAAPY29udHJhY3RBZGRyZXNzCQABLAAAAAICAAAAEiVzJXNfX3Bvb2xXZWlnaHRfXwUAAAAPY29udHJhY3RBZGRyZXNzAQAAAA90aHJvd09yZGVyRXJyb3IAAAADAAAACm9yZGVyVmFsaWQAAAALc2VuZGVyVmFsaWQAAAAMbWF0Y2hlclZhbGlkCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAB5WYWxpZGF0aW9uIGZhaWxlZDogb3JkZXJWYWxpZD0JAAGlAAAAAQUAAAAKb3JkZXJWYWxpZAIAAAANIHNlbmRlclZhbGlkPQkAAaUAAAABBQAAAAtzZW5kZXJWYWxpZAIAAAAOIG1hdGNoZXJWYWxpZD0JAAGlAAAAAQUAAAAMbWF0Y2hlclZhbGlkAQAAAAhhc1N0cmluZwAAAAEAAAADdmFsBAAAAAckbWF0Y2gwBQAAAAN2YWwDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAAGdmFsU3RyBQAAAAckbWF0Y2gwBQAAAAZ2YWxTdHIJAAACAAAAAQIAAAATZmFpbCBjYXN0IHRvIFN0cmluZwEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAgAAAAdhZGRyZXNzAAAAA2tleQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQkABLkAAAACCQAETAAAAAICAAAACm1hbmRhdG9yeSAJAARMAAAAAgkABCUAAAABBQAAAAdhZGRyZXNzCQAETAAAAAICAAAAAS4JAARMAAAAAgUAAAADa2V5CQAETAAAAAICAAAADyBpcyBub3QgZGVmaW5lZAUAAAADbmlsAgAAAAABAAAADGdldEludE9yRmFpbAAAAAIAAAAHYWRkcmVzcwAAAANrZXkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAdhZGRyZXNzBQAAAANrZXkJAAS5AAAAAgkABEwAAAACAgAAAAptYW5kYXRvcnkgCQAETAAAAAIJAAQlAAAAAQUAAAAHYWRkcmVzcwkABEwAAAACAgAAAAEuCQAETAAAAAIFAAAAA2tleQkABEwAAAACAgAAAA8gaXMgbm90IGRlZmluZWQFAAAAA25pbAIAAAAAAAAAAA9mYWN0b3J5Q29udHJhY3QJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAACBQAAAAR0aGlzCQEAAAALa2V5RmFjdENudHIAAAAAAQAAABBpc0dsb2JhbFNodXRkb3duAAAAAAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBsAAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAABNrZXlBbGxQb29sc1NodXRkb3duAAAAAAcBAAAAE2dldE1hdGNoZXJQdWJPckZhaWwAAAAACQACWQAAAAEJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAAA1rZXlNYXRjaGVyUHViAAAAAAEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAABWFtdEFzCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAgUAAAAEdGhpcwkBAAAAC2tleUFtdEFzc2V0AAAAAAQAAAAHcHJpY2VBcwkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAIFAAAABHRoaXMJAQAAAA1rZXlQcmljZUFzc2V0AAAAAAQAAAAIaVByaWNlQXMJAQAAAAxnZXRJbnRPckZhaWwAAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAAB9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAAAAAQUAAAAHcHJpY2VBcwQAAAAGaUFtdEFzCQEAAAAMZ2V0SW50T3JGYWlsAAAAAgUAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAAfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAAAAAEFAAAABWFtdEFzCQAEtQAAAAIJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAAA1rZXlQb29sQ29uZmlnAAAAAgkAAaQAAAABBQAAAAZpQW10QXMJAAGkAAAAAQUAAAAIaVByaWNlQXMFAAAAA1NFUAEAAAAQZ2V0RmFjdG9yeUNvbmZpZwAAAAAJAAS1AAAAAgkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAIFAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAEGtleUZhY3RvcnlDb25maWcAAAAABQAAAANTRVABAAAAEWRhdGFQdXRBY3Rpb25JbmZvAAAACgAAAA1pbkFtdEFzc2V0QW10AAAAD2luUHJpY2VBc3NldEFtdAAAAAhvdXRMcEFtdAAAAAVwcmljZQAAAA5zbGlwcGFnZUJ5VXNlcgAAAAxzbGlwcGFnZVJlYWwAAAAIdHhIZWlnaHQAAAALdHhUaW1lc3RhbXAAAAAMc2xpcGFnZUFtQW10AAAADHNsaXBhZ2VQckFtdAkABLkAAAACCQAETAAAAAICAAAAFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQAETAAAAAIJAAGkAAAAAQUAAAANaW5BbXRBc3NldEFtdAkABEwAAAACCQABpAAAAAEFAAAAD2luUHJpY2VBc3NldEFtdAkABEwAAAACCQABpAAAAAEFAAAACG91dExwQW10CQAETAAAAAIJAAGkAAAAAQUAAAAFcHJpY2UJAARMAAAAAgkAAaQAAAABBQAAAA5zbGlwcGFnZUJ5VXNlcgkABEwAAAACCQABpAAAAAEFAAAADHNsaXBwYWdlUmVhbAkABEwAAAACCQABpAAAAAEFAAAACHR4SGVpZ2h0CQAETAAAAAIJAAGkAAAAAQUAAAALdHhUaW1lc3RhbXAJAARMAAAAAgkAAaQAAAABBQAAAAxzbGlwYWdlQW1BbXQJAARMAAAAAgkAAaQAAAABBQAAAAxzbGlwYWdlUHJBbXQFAAAAA25pbAUAAAADU0VQAQAAABFkYXRhR2V0QWN0aW9uSW5mbwAAAAYAAAAOb3V0QW10QXNzZXRBbXQAAAAQb3V0UHJpY2VBc3NldEFtdAAAAAdpbkxwQW10AAAABXByaWNlAAAACHR4SGVpZ2h0AAAAC3R4VGltZXN0YW1wCQAEuQAAAAIJAARMAAAAAgIAAAAMJWQlZCVkJWQlZCVkCQAETAAAAAIJAAGkAAAAAQUAAAAOb3V0QW10QXNzZXRBbXQJAARMAAAAAgkAAaQAAAABBQAAABBvdXRQcmljZUFzc2V0QW10CQAETAAAAAIJAAGkAAAAAQUAAAAHaW5McEFtdAkABEwAAAACCQABpAAAAAEFAAAABXByaWNlCQAETAAAAAIJAAGkAAAAAQUAAAAIdHhIZWlnaHQJAARMAAAAAgkAAaQAAAABBQAAAAt0eFRpbWVzdGFtcAUAAAADbmlsBQAAAANTRVABAAAADWdldEFjY0JhbGFuY2UAAAABAAAAB2Fzc2V0SWQDCQAAAAAAAAIFAAAAB2Fzc2V0SWQCAAAABVdBVkVTCAkAA+8AAAABBQAAAAR0aGlzAAAACWF2YWlsYWJsZQkAA/AAAAACBQAAAAR0aGlzCQACWQAAAAEFAAAAB2Fzc2V0SWQBAAAAD2NhbGNQcmljZUJpZ0ludAAAAAIAAAAIcHJBbXRYMTgAAAAIYW1BbXRYMTgJAAE8AAAAAwUAAAAIcHJBbXRYMTgFAAAAB3NjYWxlMTgFAAAACGFtQW10WDE4AQAAAAtjYWxjQWJzRGlmZgAAAAMAAAAHcmVhbEFtdAAAAAtleHBlY3RlZEFtdAAAAAhzbGlwcGFnZQQAAAAEZGlmZgkAATwAAAADCQABOAAAAAIFAAAAB3JlYWxBbXQFAAAAC2V4cGVjdGVkQW10BQAAAAxzY2FsZThCaWdJbnQFAAAAC2V4cGVjdGVkQW10CQAFFQAAAAMJAAE/AAAAAgkAATgAAAACBQAAAAhzbGlwcGFnZQkBAAAAA2FicwAAAAEFAAAABGRpZmYFAAAACnplcm9CaWdJbnQJAAGZAAAAAQkABEwAAAACBQAAAAdyZWFsQW10CQAETAAAAAIFAAAAC2V4cGVjdGVkQW10BQAAAANuaWwFAAAABGRpZmYBAAAAEHByaXZhdGVDYWxjUHJpY2UAAAAEAAAACmFtQXNzZXREY20AAAAKcHJBc3NldERjbQAAAAVhbUFtdAAAAAVwckFtdAQAAAALYW10QXNBbXRYMTgJAQAAAAV0b1gxOAAAAAIFAAAABWFtQW10BQAAAAphbUFzc2V0RGNtBAAAAApwckFzQW10WDE4CQEAAAAFdG9YMTgAAAACBQAAAAVwckFtdAUAAAAKcHJBc3NldERjbQkBAAAAD2NhbGNQcmljZUJpZ0ludAAAAAIFAAAACnByQXNBbXRYMTgFAAAAC2FtdEFzQW10WDE4AQAAAApjYWxjUHJpY2VzAAAAAwAAAAVhbUFtdAAAAAVwckFtdAAAAAVscEFtdAQAAAADY2ZnCQEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAACGFtdEFzRGNtCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAAAtpZHhBbXRBc0RjbQQAAAAHcHJBc0RjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAANaWR4UHJpY2VBc0RjbQQAAAAIcHJpY2VYMTgJAQAAABBwcml2YXRlQ2FsY1ByaWNlAAAABAUAAAAIYW10QXNEY20FAAAAB3ByQXNEY20FAAAABWFtQW10BQAAAAVwckFtdAQAAAAIYW1BbXRYMTgJAQAAAAV0b1gxOAAAAAIFAAAABWFtQW10BQAAAAhhbXRBc0RjbQQAAAAIcHJBbXRYMTgJAQAAAAV0b1gxOAAAAAIFAAAABXByQW10BQAAAAdwckFzRGNtBAAAAAhscEFtdFgxOAkBAAAABXRvWDE4AAAAAgUAAAAFbHBBbXQFAAAABnNjYWxlOAQAAAANbHBQckluQW1Bc1gxOAkBAAAAD2NhbGNQcmljZUJpZ0ludAAAAAIFAAAACGFtQW10WDE4BQAAAAhscEFtdFgxOAQAAAANbHBQckluUHJBc1gxOAkBAAAAD2NhbGNQcmljZUJpZ0ludAAAAAIFAAAACHByQW10WDE4BQAAAAhscEFtdFgxOAkABEwAAAACBQAAAAhwcmljZVgxOAkABEwAAAACBQAAAA1scFBySW5BbUFzWDE4CQAETAAAAAIFAAAADWxwUHJJblByQXNYMTgFAAAAA25pbAEAAAAPY2FsY3VsYXRlUHJpY2VzAAAAAwAAAAVhbUFtdAAAAAVwckFtdAAAAAVscEFtdAQAAAAGcHJpY2VzCQEAAAAKY2FsY1ByaWNlcwAAAAMFAAAABWFtQW10BQAAAAVwckFtdAUAAAAFbHBBbXQJAARMAAAAAgkBAAAAB2Zyb21YMTgAAAACCQABkQAAAAIFAAAABnByaWNlcwAAAAAAAAAAAAUAAAAGc2NhbGU4CQAETAAAAAIJAQAAAAdmcm9tWDE4AAAAAgkAAZEAAAACBQAAAAZwcmljZXMAAAAAAAAAAAEFAAAABnNjYWxlOAkABEwAAAACCQEAAAAHZnJvbVgxOAAAAAIJAAGRAAAAAgUAAAAGcHJpY2VzAAAAAAAAAAACBQAAAAZzY2FsZTgFAAAAA25pbAEAAAAUZXN0aW1hdGVHZXRPcGVyYXRpb24AAAAEAAAABnR4SWQ1OAAAAApwbXRBc3NldElkAAAACHBtdExwQW10AAAAC3VzZXJBZGRyZXNzBAAAAANjZmcJAQAAAA1nZXRQb29sQ29uZmlnAAAAAAQAAAAEbHBJZAkAAZEAAAACBQAAAANjZmcFAAAACWlkeExQQXNJZAQAAAAEYW1JZAkAAZEAAAACBQAAAANjZmcFAAAACWlkeEFtQXNJZAQAAAAEcHJJZAkAAZEAAAACBQAAAANjZmcFAAAACWlkeFByQXNJZAQAAAAFYW1EY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAAC2lkeEFtdEFzRGNtBAAAAAVwckRjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAANaWR4UHJpY2VBc0RjbQQAAAAKcG9vbFN0YXR1cwkAAZEAAAACBQAAAANjZmcFAAAADWlkeFBvb2xTdGF0dXMEAAAACmxwRW1pc3Npb24ICQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAPsAAAAAQkAAlkAAAABBQAAAARscElkAgAAAA1JbnZhbGlkIExQIGlkAAAACHF1YW50aXR5AwkBAAAAAiE9AAAAAgUAAAAEbHBJZAUAAAAKcG10QXNzZXRJZAkAAAIAAAABAgAAABFJbnZhbGlkIHBtdCBhc3NldAQAAAAJYW1CYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAABGFtSWQEAAAADGFtQmFsYW5jZVgxOAkBAAAABXRvWDE4AAAAAgUAAAAJYW1CYWxhbmNlBQAAAAVhbURjbQQAAAAJcHJCYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAABHBySWQEAAAADHByQmFsYW5jZVgxOAkBAAAABXRvWDE4AAAAAgUAAAAJcHJCYWxhbmNlBQAAAAVwckRjbQQAAAALY3VyUHJpY2VYMTgJAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACBQAAAAxwckJhbGFuY2VYMTgFAAAADGFtQmFsYW5jZVgxOAQAAAAIY3VyUHJpY2UJAQAAAAdmcm9tWDE4AAAAAgUAAAALY3VyUHJpY2VYMTgFAAAABnNjYWxlOAQAAAALcG10THBBbXRYMTgJAQAAAAV0b1gxOAAAAAIFAAAACHBtdExwQW10BQAAAAZzY2FsZTgEAAAADWxwRW1pc3Npb25YMTgJAQAAAAV0b1gxOAAAAAIFAAAACmxwRW1pc3Npb24FAAAABnNjYWxlOAQAAAALb3V0QW1BbXRYMTgJAAE8AAAAAwUAAAAMYW1CYWxhbmNlWDE4BQAAAAtwbXRMcEFtdFgxOAUAAAANbHBFbWlzc2lvblgxOAQAAAALb3V0UHJBbXRYMTgJAAE8AAAAAwUAAAAMcHJCYWxhbmNlWDE4BQAAAAtwbXRMcEFtdFgxOAUAAAANbHBFbWlzc2lvblgxOAQAAAAIb3V0QW1BbXQJAQAAAAdmcm9tWDE4AAAAAgUAAAALb3V0QW1BbXRYMTgFAAAABWFtRGNtBAAAAAhvdXRQckFtdAkBAAAAB2Zyb21YMTgAAAACBQAAAAtvdXRQckFtdFgxOAUAAAAFcHJEY20EAAAABXN0YXRlAwkAAAAAAAACBQAAAAZ0eElkNTgCAAAAAAUAAAADbmlsCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAC3VzZXJBZGRyZXNzBQAAAAhvdXRBbUFtdAMJAAAAAAAAAgUAAAAEYW1JZAIAAAAFV0FWRVMFAAAABHVuaXQJAAJZAAAAAQUAAAAEYW1JZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAt1c2VyQWRkcmVzcwUAAAAIb3V0UHJBbXQDCQAAAAAAAAIFAAAABHBySWQCAAAABVdBVkVTBQAAAAR1bml0CQACWQAAAAEFAAAABHBySWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEmtleUdldEFjdGlvbkJ5VXNlcgAAAAIJAAQlAAAAAQUAAAALdXNlckFkZHJlc3MFAAAABnR4SWQ1OAkBAAAAEWRhdGFHZXRBY3Rpb25JbmZvAAAABgUAAAAIb3V0QW1BbXQFAAAACG91dFByQW10BQAAAAhwbXRMcEFtdAUAAAAIY3VyUHJpY2UFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAxrZXlQcmljZUxhc3QAAAAABQAAAAhjdXJQcmljZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAD2tleVByaWNlSGlzdG9yeQAAAAIFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAFAAAACGN1clByaWNlBQAAAANuaWwJAAUcAAAACgUAAAAIb3V0QW1BbXQFAAAACG91dFByQW10BQAAAARhbUlkBQAAAARwcklkBQAAAAlhbUJhbGFuY2UFAAAACXByQmFsYW5jZQUAAAAKbHBFbWlzc2lvbgUAAAALY3VyUHJpY2VYMTgFAAAACnBvb2xTdGF0dXMFAAAABXN0YXRlAQAAABRlc3RpbWF0ZVB1dE9wZXJhdGlvbgAAAAwAAAAGdHhJZDU4AAAACHNsaXBwYWdlAAAAB2luQW1BbXQAAAAGaW5BbUlkAAAAB2luUHJBbXQAAAAGaW5QcklkAAAAC3VzZXJBZGRyZXNzAAAACmlzRXZhbHVhdGUAAAAGZW1pdExwAAAACmlzT25lQXNzZXQAAAAGcG10QW10AAAABXBtdElkBAAAAANjZmcJAQAAAA1nZXRQb29sQ29uZmlnAAAAAAQAAAAEbHBJZAkAAlkAAAABCQABkQAAAAIFAAAAA2NmZwUAAAAJaWR4TFBBc0lk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AQAAAAdmcm9tWDE4AAAAAgUAAAAIbHBBbXRYMTgFAAAABnNjYWxlOAkBAAAAB2Zyb21YMTgAAAACBQAAAA9pbkFtQXNzZXRBbXRYMTgFAAAABmFtdERjbQkBAAAAB2Zyb21YMTgAAAACBQAAAA9pblByQXNzZXRBbXRYMTgFAAAACHByaWNlRGNtCQEAAAAPY2FsY1ByaWNlQmlnSW50AAAAAgkAATcAAAACBQAAAAxwckJhbGFuY2VYMTgFAAAAD2luUHJBc3NldEFtdFgxOAkAATcAAAACBQAAAAxhbUJhbGFuY2VYMTgFAAAAD2luQW1Bc3NldEFtdFgxOAUAAAALc2xpcHBhZ2VYMTgEAAAAC2N1clByaWNlWDE4CQEAAAAPY2FsY1ByaWNlQmlnSW50AAAAAgUAAAAMcHJCYWxhbmNlWDE4BQAAAAxhbUJhbGFuY2VYMTgEAAAAD3NsaXBwYWdlUmVhbFgxOAkAATwAAAADCQEAAAADYWJzAAAAAQkAATgAAAACBQAAAAtjdXJQcmljZVgxOAUAAAAMdXNlclByaWNlWDE4BQAAAAdzY2FsZTE4BQAAAAtjdXJQcmljZVgxOAQAAAALc2xpcHBhZ2VYMTgJAQAAAAV0b1gxOAAAAAIFAAAACHNsaXBwYWdlBQAAAAZzY2FsZTgDAwkBAAAAAiE9AAAAAgUAAAALY3VyUHJpY2VYMTgFAAAACnplcm9CaWdJbnQJAAE/AAAAAgUAAAAPc2xpcHBhZ2VSZWFsWDE4BQAAAAtzbGlwcGFnZVgxOAcJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAPUHJpY2Ugc2xpcHBhZ2UgCQABpgAAAAEFAAAAD3NsaXBwYWdlUmVhbFgxOAIAAAAKIGV4Y2VlZGVkIAkAAaYAAAABBQAAAAtzbGlwcGFnZVgxOAQAAAANbHBFbWlzc2lvblgxOAkBAAAABXRvWDE4AAAAAgUAAAAKbHBFbWlzc2lvbgUAAAAGc2NhbGU4BAAAAApwclZpYUFtWDE4CQABPAAAAAMFAAAAD2luQW1Bc3NldEFtdFgxOAUAAAALY3VyUHJpY2VYMTgFAAAAB3NjYWxlMTgEAAAACmFtVmlhUHJYMTgJAAE8AAAAAwUAAAAPaW5QckFzc2V0QW10WDE4BQAAAAdzY2FsZTE4BQAAAAtjdXJQcmljZVgxOAQAAAAMZXhwZWN0ZWRBbXRzAwkAAT8AAAACBQAAAApwclZpYUFtWDE4BQAAAA9pblByQXNzZXRBbXRYMTgJAAUUAAAAAgUAAAAKYW1WaWFQclgxOAUAAAAPaW5QckFzc2V0QW10WDE4CQAFFAAAAAIFAAAAD2luQW1Bc3NldEFtdFgxOAUAAAAKcHJWaWFBbVgxOAQAAAARZXhwQW10QXNzZXRBbXRYMTgIBQAAAAxleHBlY3RlZEFtdHMAAAACXzEEAAAAE2V4cFByaWNlQXNzZXRBbXRYMTgIBQAAAAxleHBlY3RlZEFtdHMAAAACXzIEAAAACGxwQW10WDE4CQABPAAAAAMFAAAADWxwRW1pc3Npb25YMTgFAAAAE2V4cFByaWNlQXNzZXRBbXRYMTgFAAAADHByQmFsYW5jZVgxOAkABRcAAAAFCQEAAAAHZnJvbVgxOAAAAAIFAAAACGxwQW10WDE4BQAAAAZzY2FsZTgJAQAAAAdmcm9tWDE4AAAAAgUAAAARZXhwQW10QXNzZXRBbXRYMTgFAAAABmFtdERjbQkBAAAAB2Zyb21YMTgAAAACBQAAABNleHBQcmljZUFzc2V0QW10WDE4BQAAAAhwcmljZURjbQUAAAALY3VyUHJpY2VYMTgFAAAAC3NsaXBwYWdlWDE4BAAAAAljYWxjTHBBbXQIBQAAAANyZXMAAAACXzEEAAAADmNhbGNBbUFzc2V0UG10CAUAAAADcmVzAAAAAl8yBAAAAA5jYWxjUHJBc3NldFBtdAgFAAAAA3JlcwAAAAJfMwQAAAAIY3VyUHJpY2UJAQAAAAdmcm9tWDE4AAAAAggFAAAAA3JlcwAAAAJfNAUAAAAGc2NhbGU4BAAAAAxzbGlwcGFnZUNhbGMJAQAAAAdmcm9tWDE4AAAAAggFAAAAA3JlcwAAAAJfNQUAAAAGc2NhbGU4AwkAAGcAAAACAAAAAAAAAAAABQAAAAljYWxjTHBBbXQJAAACAAAAAQIAAAAHTFAgPD0gMAQAAAAJZW1pdExwQW10AwkBAAAAASEAAAABBQAAAAZlbWl0THAAAAAAAAAAAAAFAAAACWNhbGNMcEFtdAQAAAAGYW1EaWZmCQAAZQAAAAIFAAAAB2luQW1BbXQFAAAADmNhbGNBbUFzc2V0UG10BAAAAAZwckRpZmYJAABlAAAAAgUAAAAHaW5QckFtdAUAAAAOY2FsY1ByQXNzZXRQbXQEAAAAC2NvbW1vblN0YXRlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAMa2V5UHJpY2VMYXN0AAAAAAUAAAAIY3VyUHJpY2UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAA9rZXlQcmljZUhpc3RvcnkAAAACBQAAAAZoZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wBQAAAAhjdXJQcmljZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAASa2V5UHV0QWN0aW9uQnlVc2VyAAAAAgUAAAALdXNlckFkZHJlc3MFAAAABnR4SWQ1OAkBAAAAEWRhdGFQdXRBY3Rpb25JbmZvAAAACgUAAAAOY2FsY0FtQXNzZXRQbXQFAAAADmNhbGNQckFzc2V0UG10BQAAAAllbWl0THBBbXQFAAAACGN1clByaWNlBQAAAAhzbGlwcGFnZQUAAAAMc2xpcHBhZ2VDYWxjBQAAAAZoZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wBQAAAAZhbURpZmYFAAAABnByRGlmZgUAAAADbmlsCQAFHwAAAA0FAAAACWNhbGNMcEFtdAUAAAAJZW1pdExwQW10BQAAAAhjdXJQcmljZQUAAAAJYW1CYWxhbmNlBQAAAAlwckJhbGFuY2UFAAAACmxwRW1pc3Npb24FAAAABGxwSWQFAAAACnBvb2xTdGF0dXMFAAAAC2NvbW1vblN0YXRlBQAAAAZhbURpZmYFAAAABnByRGlmZgUAAAAGaW5BbUlkBQAAAAZpblBySWQBAAAAG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZAAAAAEAAAAFb3JkZXIEAAAAA2NmZwkBAAAADWdldFBvb2xDb25maWcAAAAABAAAAAdhbXRBc0lkCQABkQAAAAIFAAAAA2NmZwUAAAAJaWR4QW1Bc0lkBAAAAAZwckFzSWQJAAGRAAAAAgUAAAADY2ZnBQAAAAlpZHhQckFzSWQEAAAACnBvb2xTdGF0dXMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAADWlkeFBvb2xTdGF0dXMEAAAACGFtdEFzRGNtCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAAAtpZHhBbXRBc0RjbQQAAAAHcHJBc0RjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAANaWR4UHJpY2VBc0RjbQQAAAAPYWNjQW10QXNCYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAAB2FtdEFzSWQEAAAADmFjY1ByQXNCYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAABnByQXNJZAQAAAALY3VyUHJpY2VYMTgDCQAAAAAAAAIIBQAAAAVvcmRlcgAAAAlvcmRlclR5cGUFAAAAA0J1eQkBAAAAEHByaXZhdGVDYWxjUHJpY2UAAAAEBQAAAAhhbXRBc0RjbQUAAAAHcHJBc0RjbQkAAGQAAAACBQAAAA9hY2NBbXRBc0JhbGFuY2UIBQAAAAVvcmRlcgAAAAZhbW91bnQFAAAADmFjY1ByQXNCYWxhbmNlCQEAAAAQcHJpdmF0ZUNhbGNQcmljZQAAAAQFAAAACGFtdEFzRGNtBQAAAAdwckFzRGNtCQAAZQAAAAIFAAAAD2FjY0FtdEFzQmFsYW5jZQgFAAAABW9yZGVyAAAABmFtb3VudAUAAAAOYWNjUHJBc0JhbGFuY2UEAAAACGN1clByaWNlCQEAAAAHZnJvbVgxOAAAAAIFAAAAC2N1clByaWNlWDE4BQAAAAZzY2FsZTgDAwMJAQAAABBpc0dsb2JhbFNodXRkb3duAAAAAAYJAAAAAAAAAgUAAAAKcG9vbFN0YXR1cwUAAAATUG9vbE1hdGNoZXJEaXNhYmxlZAYJAAAAAAAAAgUAAAAKcG9vbFN0YXR1cwUAAAAMUG9vbFNodXRkb3duCQAAAgAAAAECAAAAEEJsb2NrZWQgYnkgYWRtaW4EAAAACm9yQW10QXNzZXQICAUAAAAFb3JkZXIAAAAJYXNzZXRQYWlyAAAAC2Ftb3VudEFzc2V0BAAAAApvckFtdEFzU3RyAwkAAAAAAAACBQAAAApvckFtdEFzc2V0BQAAAAR1bml0AgAAAAVXQVZFUwkAAlgAAAABCQEAAAAFdmFsdWUAAAAB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bmlsAwkAAAAAAAACBQAAAAxzbGlwcGFnZVBJbnYFAAAADHNsaXBwYWdlUEludgQAAAAIbHBUcm5zZnIDBQAAAAlhdXRvU3Rha2UEAAAAC3NscFN0YWtlSW52CQAD/AAAAAQFAAAAC3N0YWtpbmdDbnRyAgAAAAVzdGFrZQUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAAlscEFzc2V0SWQFAAAACWVtaXRMcEFtdAUAAAADbmlsAwkAAAAAAAACBQAAAAtzbHBTdGFrZUludgUAAAALc2xwU3Rha2VJbnYFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAllbWl0THBBbXQFAAAACWxwQXNzZXRJZAUAAAADbmlsCQAETgAAAAIFAAAABXN0YXRlBQAAAAhscFRybnNmcgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAAlwdXRPbmVUa24AAAAFAAAAC2luQW10QW1vdW50AAAACmluUHJBbW91bnQAAAAFb3V0THAAAAAIc2xpcHBhZ2UAAAAJYXV0b1N0YWtlBAAAAANjZmcJAQAAABBnZXRGYWN0b3J5Q29uZmlnAAAAAAQAAAALc3Rha2luZ0NudHIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABCQABkQAAAAIFAAAAA2NmZwUAAAAPaWR4RmFjdFN0YWtDbnRyAgAAABJXcm9uZyBzdGFraW5nIGFkZHIEAAAACHNsaXBDbnRyCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQkAAZEAAAACBQAAAANjZmcFAAAAEGlkeEZhY3RTbGlwcENudHICAAAAE1dyb25nIHNsaXBwYWdlIGFkZHIEAAAAB2d3eENudHIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABCQABkQAAAAIFAAAAA2NmZwUAAAARaWR4RmFjdEd3eFJld0NudHICAAAAE1dyb25nIHNsaXBwYWdlIGFkZHIEAAAAB3Bvb2xDZmcJAQAAAA1nZXRQb29sQ29uZmlnAAAAAAQAAAAEYW1JZAkAAZEAAAACBQAAAAdwb29sQ2ZnBQAAAAlpZHhBbUFzSWQEAAAABHBySWQJAAGRAAAAAgUAAAAHcG9vbENmZwUAAAAJaWR4UHJBc0lkBAAAAAVhbURjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAB3Bvb2xDZmcFAAAAC2lkeEFtdEFzRGNtBAAAAAVwckRjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAB3Bvb2xDZmcFAAAADWlkeFByaWNlQXNEY20DCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQAAAgAAAAECAAAAEjEgcGF5bWVudCBleHBlY3RlZAQAAAADcG10CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAApwbXRBc3NldElkCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEIBQAAAANwbXQAAAAHYXNzZXRJZAQAAAAGcG10QW10CAUAAAADcG10AAAABmFtb3VudAQAAAAOYW1Bc3NldFN3YXBYMTgJAQAAAAV0b1gxOAAAAAIFAAAAC2luQW10QW1vdW50BQAAAAVhbURjbQQAAAAOcHJBc3NldFN3YXBYMTgJAQAAAAV0b1gxOAAAAAIFAAAACmluUHJBbW91bnQFAAAABXByRGNtBAAAAAlhbUJhbGFuY2UJAQAAAA1nZXRBY2NCYWxhbmNlAAAAAQUAAAAEYW1JZAQAAAAMYW1CYWxhbmNlWDE4CQEAAAAFdG9YMTgAAAACBQAAAAlhbUJhbGFuY2UFAAAABWFtRGNtBAAAAAlwckJhbGFuY2UJAQAAAA1nZXRBY2NCYWxhbmNlAAAAAQUAAAAEcHJJZAQAAAAMcHJCYWxhbmNlWDE4CQEAAAAFdG9YMTgAAAACBQAAAAlwckJhbGFuY2UFAAAABXByRGNtBAAAAAxhbUJhbGFuY2VOb3cDCQAAAAAAAAIFAAAACnBtdEFzc2V0SWQFAAAABGFtSWQJAABlAAAAAgUAAAAJYW1CYWxhbmNlBQAAAAZwbXRBbXQFAAAACWFtQmFsYW5jZQQAAAAMcHJCYWxhbmNlTm93AwkAAAAAAAACBQAAAApwbXRBc3NldElkBQAAAARwcklkCQAAZQAAAAIFAAAACXByQmFsYW5jZQUAAAAGcG10QW10BQAAAAlwckJhbGFuY2UEAAAABGRDdXIJAAP8AAAABAUAAAAHZ3d4Q250cgIAAAAFY2FsY0QJAARMAAAAAgkAAaQAAAABBQAAAAxhbUJhbGFuY2VOb3cJAARMAAAAAgkAAaQAAAABBQAAAAxwckJhbGFuY2VOb3cJAARMAAAAAgIAAAACNTAJAARMAAAAAgIAAAAJMTAwMDAwMDAwCQAETAAAAAICAAAAATEFAAAAA25pbAUAAAADbmlsBAAAAAdpbnZMZWZ0CQABpwAAAAEJAQAAAAhhc1N0cmluZwAAAAEFAAAABGRDdXIEAAAACGludlJpZ2h0AwkAAAAAAAACBQAAAApwbXRBc3NldElkBQAAAARhbUlkBAAAAAlwbXRBbXRYMTgJAQAAAAV0b1gxOAAAAAIFAAAABnBtdEFtdAUAAAAFYW1EY20EAAAAB3ByQWRpZmYFAAAADnByQXNzZXRTd2FwWDE4BAAAAAdhbUFkaWZmCQABOAAAAAIFAAAACXBtdEFtdFgxOAUAAAAOYW1Bc3NldFN3YXBYMTgEAAAABWRTd2FwCQAD/AAAAAQFAAAAB2d3eENudHICAAAABWNhbGNECQAETAAAAAIJAAGmAAAAAQkAATcAAAACCQABNgAAAAEFAAAADGFtQmFsYW5jZU5vdwkAATYAAAABCQEAAAAHZnJvbVgxOAAAAAIFAAAAB2FtQWRpZmYFAAAABWFtRGNtCQAETAAAAAIJAAGmAAAAAQkAATgAAAACCQABNgAAAAEFAAAADHByQmFsYW5jZU5vdwkAATYAAAABCQEAAAAHZnJvbVgxOAAAAAIFAAAAB3ByQWRpZmYFAAAABXByRGNtCQAETAAAAAICAAAAAjUwCQAETAAAAAICAAAACTEwMDAwMDAwMAkABEwAAAACAgAAAAExBQAAAANuaWwFAAAAA25pbAkAAacAAAABCQEAAAAIYXNTdHJpbmcAAAABBQAAAAVkU3dhcAQAAAAIcG10UHJYMTgJAQAAAAV0b1gxOAAAAAIFAAAABnBtdEFtdAUAAAAFcHJEY20EAAAAB3ByQWRpZmYJAAE4AAAAAgUAAAAIcG10UHJYMTgFAAAADnByQXNzZXRTd2FwWDE4BAAAAAdhbUFkaWZmBQAAAA5hbUFzc2V0U3dhcFgxOAQAAAAFZFN3YXAJAAP8AAAABAUAAAAHZ3d4Q250cgIAAAAFY2FsY0QJAARMAAAAAgkAAaYAAAABCQABOAAAAAIJAAE2AAAAAQUAAAAMYW1CYWxhbmNlTm93CQABNgAAAAEJAQAAAAdmcm9tWDE4AAAAAgUAAAAHYW1BZGlmZgUAAAAFYW1EY20JAARMAAAAAgkAAaYAAAABCQABNwAAAAIJAAE2AAAAAQUAAAAMcHJCYWxhbmNlTm93CQABNgAAAAEJAQAAAAdmcm9tWDE4AAAAAgUAAAAHcHJBZGlmZgUAAAAFcHJEY20JAARMAAAAAgIAAAACNTAJAARMAAAAAgIAAAAJMTAwMDAwMDAwCQAETAAAAAICAAAAATEFAAAAA25pbAUAAAADbmlsCQABpwAAAAEJAQAAAAhhc1N0cmluZwAAAAEFAAAABWRTd2FwAwkBAAAAASEAAAABCAkBAAAAC2NhbGNBYnNEaWZmAAAAAwUAAAAIaW52UmlnaHQFAAAAB2ludkxlZnQJAAE2AAAAAQAAAAAAAAAD6AAAAAJfMQkAAAIAAAABAgAAAAtEIG1pc21hdGNoLgQAAAAGZXN0UHV0CQEAAAAJY29tbW9uUHV0AAAACQkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIJAAJZAAAAAQUAAAAEYW1JZAUAAAALaW5BbXRBbW91bnQJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACCQACWQAAAAEFAAAABHBySWQFAAAACmluUHJBbW91bnQAAAAAC6Q7dAAGBgUAAAAGcG10QW10BQAAAApwbXRBc3NldElkBAAAAAdlc3RpbUxQCAUAAAAGZXN0UHV0AAAAAl8yBAAAAAlscEFzc2V0SWQIBQAAAAZlc3RQdXQAAAACXzcEAAAABXN0YXRlCAUAAAAGZXN0UHV0AAAAAl85BAAAAAZhbURpZmYIBQAAAAZlc3RQdXQAAAADXzEwBAAAAAZwckRpZmYIBQAAAAZlc3RQdXQAAAADXzExBAAAAAlscENhbGNSZXMJAQAAAAtjYWxjQWJzRGlmZgAAAAMJAAE2AAAAAQUAAAAHZXN0aW1MUAkAATYAAAABBQAAAAVvdXRMcAkAATYAAAABBQAAAAhzbGlwcGFnZQMJAQAAAAEhAAAAAQgFAAAACWxwQ2FsY1JlcwAAAAJfMQkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABJUb28gYmlnIHNsaXBwYWdlOiAJAAGmAAAAAQgFAAAACWxwQ2FsY1JlcwAAAAJfMwIAAAAEIHZzIAkAAaQAAAABBQAAAAhzbGlwcGFnZQQAAAAJZW1pdExwQW10CQABoAAAAAEIBQAAAAlscENhbGNSZXMAAAACXzIEAAAAB2VtaXRJbnYJAAP8AAAABAUAAAAPZmFjdG9yeUNvbnRyYWN0AgAAAARlbWl0CQAETAAAAAIFAAAACWVtaXRMcEFtdAUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAB2VtaXRJbnYFAAAAB2VtaXRJbnYEAAAADHNsaXBwYWdlQUludgMJAABmAAAAAgUAAAAGYW1EaWZmAAAAAAAAAAAACQAD/AAAAAQFAAAACHNsaXBDbnRyAgAAAANwdXQFAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgkAAlkAAAABBQAAAARhbUlkBQAAAAZhbURpZmYFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAAxzbGlwcGFnZUFJbnYFAAAADHNsaXBwYWdlQUludgQAAAAMc2xpcHBhZ2VQSW52AwkAAGYAAAACBQAAAAZwckRpZmYAAAAAAAAAAAAJAAP8AAAABAUAAAAIc2xpcENudHICAAAAA3B1dAUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACCQACWQAAAAEFAAAABHBySWQFAAAABnByRGlmZgUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAADHNsaXBwYWdlUEludgUAAAAMc2xpcHBhZ2VQSW52BAAAAAhscFRybnNmcgMFAAAACWF1dG9TdGFrZQQAAAALc2xwU3Rha2VJbnYJAAP8AAAABAUAAAALc3Rha2luZ0NudHICAAAABXN0YWtlBQAAAANuaWwJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIFAAAACWxwQXNzZXRJZAUAAAAJZW1pdExwQW10BQAAAANuaWwDCQAAAAAAAAIFAAAAC3NscFN0YWtlSW52BQAAAAtzbHBTdGFrZUludgUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAACWVtaXRMcEFtdAUAAAAJbHBBc3NldElkBQAAAANuaWwJAAROAAAAAgUAAAAFc3RhdGUFAAAACGxwVHJuc2ZyCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAACnB1dEZvckZyZWUAAAABAAAAC21heFNsaXBwYWdlAwkAAGYAAAACAAAAAAAAAAAABQAAAAttYXhTbGlwcGFnZQkAAAIAAAABAgAAABBJbnZhbGlkIHNsaXBwYWdlAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAgkAAAIAAAABAgAAABMyIHBheW1lbnRzIGV4cGVjdGVkBAAAAAZlc3RQdXQJAQAAAAljb21tb25QdXQAAAAJCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAggJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAgJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50CQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABBQAAAAttYXhTbGlwcGFnZQcHAAAAAAAAAAAAAgAAAAAIBQAAAAZlc3RQdXQAAAACXzkAAAABaQEAAAADZ2V0AAAAAAQAAAADcmVzCQEAAAAJY29tbW9uR2V0AAAAAQUAAAABaQQAAAAJb3V0QW10QW10CAUAAAADcmVzAAAAAl8xBAAAAAhvdXRQckFtdAgFAAAAA3JlcwAAAAJfMgQAAAAGcG10QW10CAUAAAADcmVzAAAAAl8zBAAAAApwbXRBc3NldElkCAUAAAADcmVzAAAAAl80BAAAAAVzdGF0ZQgFAAAAA3JlcwAAAAJfNQQAAAAUYnVybkxQQXNzZXRPbkZhY3RvcnkJAAP8AAAABAUAAAAPZmFjdG9yeUNvbnRyYWN0AgAAAARidXJuCQAETAAAAAIFAAAABnBtdEFtdAUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAApwbXRBc3NldElkBQAAAAZwbXRBbXQFAAAAA25pbAMJAAAAAAAAAgUAAAAUYnVybkxQQXNzZXRPbkZhY3RvcnkFAAAAFGJ1cm5MUEFzc2V0T25GYWN0b3J5BQAAAAVzdGF0ZQkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAJZ2V0T25lVGtuAAAABQAAAAthbUFzc2V0U3dhcAAAAAtwckFzc2V0U3dhcAAAAAlvdXRBbW91bnQAAAAKb3V0QXNzZXRJZAAAAAhzbGlwcGFnZQMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEJAAACAAAAAQIAAAASMSBwYXltZW50IGV4cGVjdGVkBAAAAANjZmcJAQAAAA1nZXRQb29sQ29uZmlnAAAAAAQAAAAEbHBJZAkAAZEAAAACBQAAAANjZmcFAAAACWlkeExQQXNJZAQAAAAEYW1JZAkAAZEAAAACBQAAAANjZmcFAAAACWlkeEFtQXNJZAQAAAAEcHJJZAkAAZEAAAACBQAAAANjZmcFAAAACWlkeFByQXNJZAQAAAAFYW1EY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAAC2lkeEFtdEFzRGNtBAAAAAVwckRjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAANaWR4UHJpY2VBc0RjbQQAAAAKcG9vbFN0YXR1cwkAAZEAAAACBQAAAANjZmcFAAAADWlkeFBvb2xTdGF0dXMEAAAABGZjZmcJAQAAABBnZXRGYWN0b3J5Q29uZmlnAAAAAAQAAAAHZ3d4Q250cgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEJgAAAAEJAAGRAAAAAgUAAAAEZmNmZwUAAAARaWR4RmFjdEd3eFJld0NudHICAAAAFldyb25nIHNsaXBwYWdlIGFkZHJlc3MDAwkBAAAAAiE9AAAAAgUAAAAKb3V0QXNzZXRJZAUAAAAEYW1JZAkBAAAAAiE9AAAAAgUAAAAKb3V0QXNzZXRJZAUAAAAEcHJJZAcJAAACAAAAAQIAAAARSW52YWxpZCBvdXQgYXNzZXQEAAAADXJlc3VsdEFzc2V0SWQDCQAAAAAAAAIFAAAACm91dEFzc2V0SWQFAAAABGFtSWQFAAAABGFtSWQFAAAABHBySWQEAAAAA3BtdAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAALdXNlckFkZHJlc3MIBQAAAAFpAAAABmNhbGxlcgQAAAAGdHhJZDU4CQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQEAAAACnBtdEFzc2V0SWQJAQAAAAV2YWx1ZQAAAAEIBQAAAANwbXQAAAAHYXNzZXRJZAQAAAAGcG10QW10CAUAAAADcG10AAAABmFtb3VudAMJAQAAAAIhPQAAAAIFAAAABGxwSWQJAAJYAAAAAQUAAAAKcG10QXNzZXRJZAkAAAIAAAABAgAAAApJbnZhbGlkIExQBAAAAAFyCQEAAAAUZXN0aW1hdGVHZXRPcGVyYXRpb24AAAAECQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQJAAJYAAAAAQUAAAAKcG10QXNzZXRJZAUAAAAGcG10QW10CAUAAAABaQAAAAZjYWxsZXIEAAAACmVzdGltQW1BbXQIBQAAAAFyAAAAAl8xBAAAAAplc3RpbVByQW10CAUAAAABcgAAAAJfMgQAAAAJYW1CYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAABGFtSWQEAAAADGFtQmFsYW5jZVgxOAkBAAAABXRvWDE4AAAAAgUAAAAJYW1CYWxhbmNlBQAAAAVhbURjbQQAAAAJcHJCYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAABHBySWQEAAAADHByQmFsYW5jZVgxOAkBAAAABXRvWDE4AAAAAgUAAAAJcHJCYWxhbmNlBQAAAAVwckRjbQQAAAAHaW52TGVmdAkAA/wAAAAEBQAAAAdnd3hDbnRyAgAAAAVjYWxjRAkABEwAAAACCQABpAAAAAEFAAAACWFtQmFsYW5jZQkABEwAAAACCQABpAAAAAEFAAAACXByQmFsYW5jZQkABEwAAAACAgAAAAI1MAkABEwAAAACAgAAAAkxMDAwMDAwMDAJAARMAAAAAgIAAAABMQUAAAADbmlsBQAAAANuaWwEAAAAC3Jlc3VsdFR1cGxlAwkAAAAAAAACBQAAAApvdXRBc3NldElkBQAAAARhbUlkBAAAAAthbUFzc2V0RGlmZgkAAGUAAAACBQAAAAlvdXRBbW91bnQFAAAACmVzdGltQW1BbXQEAAAACGludlJpZ2h0CQAD/AAAAAQFAAAAB2d3eENudHICAAAABWNhbGNECQAETAAAAAIJAAGkAAAAAQkAAGUAAAACBQAAAAlhbUJhbGFuY2UFAAAAC2FtQXNzZXREaWZmCQAETAAAAAIJAAGkAAAAAQkAAGQAAAACBQAAAAlwckJhbGFuY2UFAAAAC3ByQXNzZXRTd2FwCQAETAAAAAICAAAAAjUwCQAETAAAAAICAAAACTEwMDAwMDAwMAkABEwAAAACAgAAAAExBQAAAANuaWwFAAAAA25pbAMJAQAAAAEhAAAAAQgJAQAAAAtjYWxjQWJzRGlmZgAAAAMJAAGnAAAAAQkBAAAACGFzU3RyaW5nAAAAAQUAAAAIaW52UmlnaHQJAAGnAAAAAQkBAAAACGFzU3RyaW5nAAAAAQUAAAAHaW52TGVmdAkAATYAAAABAAAAAAAAAAPoAAAAAl8xCQAAAgAAAAECAAAACkQgbWlzbWF0Y2gEAAAACXJlc3VsdEFtdAkAAGQAAAACBQAAAAplc3RpbUFtQW10BQAAAAthbUFzc2V0U3dhcAQAAAAJbHBDYWxjUmVzCQEAAAALY2FsY0Fic0RpZmYAAAADCQABNgAAAAEFAAAACXJlc3VsdEFtdAkAATYAAAABBQAAAAlvdXRBbW91bnQJAAE2AAAAAQUAAAAIc2xpcHBhZ2UDCQEAAAABIQAAAAEIBQAAAAlscENhbGNSZXMAAAACXzEJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAASVG9vIGJpZyBzbGlwcGFnZTogCQABpgAAAAEIBQAAAAlscENhbGNSZXMAAAACXzMCAAAABCB2cyAJAAGkAAAAAQUAAAAIc2xpcHBhZ2UJAAUUAAAAAgkAAaAAAAABCAUAAAAJbHBDYWxjUmVzAAAAAl8yAAAAAAAAAAAABAAAAAtwckFzc2V0RGlmZgkAAGUAAAACBQAAAAlvdXRBbW91bnQFAAAACmVzdGltUHJBbXQEAAAACGludlJpZ2h0CQAD/AAAAAQFAAAAB2d3eENudHICAAAABWNhbGNECQAETAAAAAIJAAGkAAAAAQkAAGQAAAACBQAAAAlhbUJhbGFuY2UFAAAAC2FtQXNzZXRTd2FwCQAETAAAAAIJAAGkAAAAAQkAAGUAAAACBQAAAAlwckJhbGFuY2UFAAAAC3ByQXNzZXREaWZmCQAETAAAAAICAAAAAjUwCQAETAAAAAICAAAACTEwMDAwMDAwMAkABEwAAAACAgAAAAExBQAAAANuaWwFAAAAA25pbAMJAQAAAAEhAAAAAQgJAQAAAAtjYWxjQWJzRGlmZgAAAAMJAAGnAAAAAQkBAAAACGFzU3RyaW5nAAAAAQUAAAAIaW52UmlnaHQJAAGnAAAAAQkBAAAACGFzU3RyaW5nAAAAAQUAAAAHaW52TGVmdAkAATYAAAABAAAAAAAAABOIAAAAAl8xCQAAAgAAAAECAAAAC0QgbWlzbWF0Y2guBAAAAAlyZXN1bHRBbXQJAABkAAAAAgUAAAAKZXN0aW1QckFtdAUAAAALcHJBc3NldFN3YXAEAAAACWxwQ2FsY1JlcwkBAAAAC2NhbGNBYnNEaWZmAAAAAwkAATYAAAABBQAAAAlyZXN1bHRBbXQJAAE2AAAAAQUAAAAJb3V0QW1vdW50CQABNgAAAAEFAAAACHNsaXBwYWdlAwkBAAAAASEAAAABCAUAAAAJbHBDYWxjUmVzAAAAAl8xCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAElRvbyBiaWcgc2xpcHBhZ2U6IAkAAaYAAAABCAUAAAAJbHBDYWxjUmVzAAAAAl8zAgAAAAQgdnMgCQABpAAAAAEFAAAACHNsaXBwYWdlCQAFFAAAAAIAAAAAAAAAAAAJAAGgAAAAAQgFAAAACWxwQ2FsY1JlcwAAAAJfMgQAAAALY3VyUHJpY2VYMTgJAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACBQAAAAxwckJhbGFuY2VYMTgFAAAADGFtQmFsYW5jZVgxOAQAAAAIY3VyUHJpY2UJAQAAAAdmcm9tWDE4AAAAAgUAAAALY3VyUHJpY2VYMTgFAAAABnNjYWxlOAQAAAAFc3RhdGUJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAALdXNlckFkZHJlc3MDCQAAAAAAAAIFAAAADXJlc3VsdEFzc2V0SWQFAAAABGFtSWQIBQAAAAtyZXN1bHRUdXBsZQAAAAJfMQgFAAAAC3Jlc3VsdFR1cGxlAAAAAl8yAwkAAAAAAAACBQAAAA1yZXN1bHRBc3NldElkAgAAAAVXQVZFUwUAAAAEdW5pdAkAAlkAAAABBQAAAA1yZXN1bHRBc3NldElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABJrZXlHZXRBY3Rpb25CeVVzZXIAAAACCQAEJQAAAAEFAAAAC3VzZXJBZGRyZXNzBQAAAAZ0eElkNTgJAQAAABFkYXRhR2V0QWN0aW9uSW5mbwAAAAYIBQAAAAtyZXN1bHRUdXBsZQAAAAJfMQgFAAAAC3Jlc3VsdFR1cGxlAAAAAl8yBQAAAAZwbXRBbXQFAAAACGN1clByaWNlBQAAAAZoZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAMa2V5UHJpY2VMYXN0AAAAAAUAAAAIY3VyUHJpY2UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAA9rZXlQcmljZUhpc3RvcnkAAAACBQAAAAZoZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wBQAAAAhjdXJQcmljZQUAAAADbmlsBAAAAARidXJuCQAD/AAAAAQFAAAAD2ZhY3RvcnlDb250cmFjdAIAAAAEYnVybgkABEwAAAACBQAAAAZwbXRBbXQFAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgUAAAAKcG10QXNzZXRJZAUAAAAGcG10QW10BQAAAANuaWwDCQAAAAAAAAIFAAAABGJ1cm4FAAAABGJ1cm4FAAAABXN0YXRlCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAAlnZXROb0xlc3MAAAACAAAAEm5vTGVzc1RoZW5BbXRBc3NldAAAABRub0xlc3NUaGVuUHJpY2VBc3NldAQAAAADcmVzCQEAAAAJY29tbW9uR2V0AAAAAQUAAAABaQQAAAAIb3V0QW1BbXQIBQAAAANyZXMAAAACXzEEAAAACG91dFByQW10CAUAAAADcmVzAAAAAl8yBAAAAAZwbXRBbXQIBQAAAANyZXMAAAACXzMEAAAACnBtdEFzc2V0SWQIBQAAAANyZXMAAAACXzQEAAAABXN0YXRlCAUAAAADcmVzAAAAAl81AwkAAGYAAAACBQAAABJub0xlc3NUaGVuQW10QXNzZXQFAAAACG91dEFtQW10CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACUZhaWxlZDogIAkAAaQAAAABBQAAAAhvdXRBbUFtdAIAAAADIDwgCQABpAAAAAEFAAAAEm5vTGVzc1RoZW5BbXRBc3NldAMJAABmAAAAAgUAAAAUbm9MZXNzVGhlblByaWNlQXNzZXQFAAAACG91dFByQW10CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACEZhaWxlZDogCQABpAAAAAEFAAAACG91dFByQW10AgAAAAMgPCAJAAGkAAAAAQUAAAAUbm9MZXNzVGhlblByaWNlQXNzZXQEAAAAFGJ1cm5MUEFzc2V0T25GYWN0b3J5CQAD/AAAAAQFAAAAD2ZhY3RvcnlDb250cmFjdAIAAAAEYnVybgkABEwAAAACBQAAAAZwbXRBbXQFAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgUAAAAKcG10QXNzZXRJZAUAAAAGcG10QW10BQAAAANuaWwDCQAAAAAAAAIFAAAAFGJ1cm5MUEFzc2V0T25GYWN0b3J5BQAAABRidXJuTFBBc3NldE9uRmFjdG9yeQUAAAAFc3RhdGUJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAADXVuc3Rha2VBbmRHZXQAAAABAAAABmFtb3VudAQAAAANY2hlY2tQYXltZW50cwMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAJAAACAAAAAQIAAAAUTm8gcGF5bWVudHMgZXhwZWN0ZWQGAwkAAAAAAAACBQAAAA1jaGVja1BheW1lbnRzBQAAAA1jaGVja1BheW1lbnRzBAAAAANjZmcJAQAAAA1nZXRQb29sQ29uZmlnAAAAAAQAAAAKZmFjdG9yeUNmZwkBAAAAEGdldEZhY3RvcnlDb25maWcAAAAABAAAAAlscEFzc2V0SWQJAAJZAAAAAQkAAZEAAAACBQAAAANjZmcFAAAACWlkeExQQXNJZAQAAAAPc3Rha2luZ0NvbnRyYWN0CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQkAAZEAAAACBQAAAApmYWN0b3J5Q2ZnBQAAAA9pZHhGYWN0U3Rha0NudHICAAAAFldyb25nIHN0YWtpbmcgYWRkcmVzcy4EAAAACnVuc3Rha2VJbnYJAAP8AAAABAUAAAAPc3Rha2luZ0NvbnRyYWN0AgAAAAd1bnN0YWtlCQAETAAAAAIJAAJYAAAAAQUAAAAJbHBBc3NldElkCQAETAAAAAIFAAAABmFtb3VudAUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAACnVuc3Rha2VJbnYFAAAACnVuc3Rha2VJbnYEAAAAAXIJAQAAABRlc3RpbWF0ZUdldE9wZXJhdGlvbgAAAAQJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAkAAlgAAAABBQAAAAlscEFzc2V0SWQFAAAABmFtb3VudAgFAAAAAWkAAAAGY2FsbGVyBAAAAApwb29sU3RhdHVzCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEIBQAAAAFyAAAAAl85BAAAAAVzdGF0ZQgFAAAAAXIAAAADXzEwBAAAAA9jaGVja1Bvb2xTdGF0dXMDAwkBAAAAEGlzR2xvYmFsU2h1dGRvd24AAAAABgkAAAAAAAACBQAAAApwb29sU3RhdHVzBQAAAAxQb29sU2h1dGRvd24JAAACAAAAAQkAASwAAAACAgAAABJCbG9ja2VkIGJ5IGFkbWluOiAJAAGkAAAAAQUAAAAKcG9vbFN0YXR1cwYDCQAAAAAAAAIFAAAAD2NoZWNrUG9vbFN0YXR1cwUAAAAPY2hlY2tQb29sU3RhdHVzBAAAABRidXJuTFBBc3NldE9uRmFjdG9yeQkAA/wAAAAEBQAAAA9mYWN0b3J5Q29udHJhY3QCAAAABGJ1cm4JAARMAAAAAgUAAAAGYW1vdW50BQAAAANuaWwJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIFAAAACWxwQXNzZXRJZAUAAAAGYW1vdW50BQAAAANuaWwDCQAAAAAAAAIFAAAAFGJ1cm5MUEFzc2V0T25GYWN0b3J5BQAAABRidXJuTFBBc3NldE9uRmFjdG9yeQUAAAAFc3RhdGUJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAACGFjdGl2YXRlAAAAAgAAAAthbXRBc3NldFN0cgAAAA1wcmljZUFzc2V0U3RyAwkBAAAAAiE9AAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIJAAQlAAAAAQUAAAAPZmFjdG9yeUNvbnRyYWN0CQAAAgAAAAECAAAAEnBlcm1pc3Npb25zIGRlbmllZAkABRQAAAACCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAtrZXlBbXRBc3NldAAAAAAFAAAAC2FtdEFzc2V0U3RyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA1rZXlQcmljZUFzc2V0AAAAAAUAAAANcHJpY2VBc3NldFN0cgUAAAADbmlsAgAAAAdzdWNjZXNzAAAAAWkBAAAAHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkAAAAACQAFFAAAAAIFAAAAA25pbAkBAAAADWdldFBvb2xDb25maWcAAAAAAAAAAWkBAAAAHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkAAAABAAAAB2Fzc2V0SWQJAAUUAAAAAgUAAAADbmlsCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAAB2Fzc2V0SWQAAAABaQEAAAAZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQAAAAMAAAAFYW1BbXQAAAAFcHJBbXQAAAAFbHBBbXQEAAAABnByaWNlcwkBAAAACmNhbGNQcmljZXMAAAADBQAAAAVhbUFtdAUAAAAFcHJBbXQFAAAABWxwQW10CQAFFAAAAAIFAAAAA25pbAkABEwAAAACCQABpgAAAAEJAAGRAAAAAgUAAAAGcHJpY2VzAAAAAAAAAAAACQAETAAAAAIJAAGmAAAAAQkAAZEAAAACBQAAAAZwcmljZXMAAAAAAAAAAAEJAARMAAAAAgkAAaYAAAABCQABkQAAAAIFAAAABnByaWNlcwAAAAAAAAAAAgUAAAADbmlsAAAAAWkBAAAAFmZyb21YMThXcmFwcGVyUkVBRE9OTFkAAAACAAAAA3ZhbAAAAA9yZXN1bHRTY2FsZU11bHQJAAUUAAAAAgUAAAADbmlsCQEAAAAHZnJvbVgxOAAAAAIJAAGnAAAAAQUAAAADdmFsBQAAAA9yZXN1bHRTY2FsZU11bHQAAAABaQEAAAAUdG9YMThXcmFwcGVyUkVBRE9OTFkAAAACAAAAB29yaWdWYWwAAAANb3JpZ1NjYWxlTXVsdAkABRQAAAACBQAAAANuaWwJAAGmAAAAAQkBAAAABXRvWDE4AAAAAgUAAAAHb3JpZ1ZhbAUAAAANb3JpZ1NjYWxlTXVsdAAAAAFpAQAAAB5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkAAAACAAAACHByQW10WDE4AAAACGFtQW10WDE4CQAFFAAAAAIFAAAAA25pbAkAAaYAAAABCQEAAAAPY2FsY1ByaWNlQmlnSW50AAAAAgkAAacAAAABBQAAAAhwckFtdFgxOAkAAacAAAABBQAAAAhhbUFtdFgxOAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAEAAAAByRtYXRjaDAFAAAAAnR4AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAVPcmRlcgQAAAAFb3JkZXIFAAAAByRtYXRjaDAEAAAACm1hdGNoZXJQdWIJAQAAABNnZXRNYXRjaGVyUHViT3JGYWlsAAAAAAQAAAAKb3JkZXJWYWxpZAkBAAAAG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZAAAAAEFAAAABW9yZGVyBAAAAAtzZW5kZXJWYWxpZAkAAfQAAAADCAUAAAAFb3JkZXIAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAVvcmRlcgAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAVvcmRlcgAAAA9zZW5kZXJQdWJsaWNLZXkEAAAADG1hdGNoZXJWYWxpZAkAAfQAAAADCAUAAAAFb3JkZXIAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAVvcmRlcgAAAAZwcm9vZnMAAAAAAAAAAAEFAAAACm1hdGNoZXJQdWIDAwMFAAAACm9yZGVyVmFsaWQFAAAAC3NlbmRlclZhbGlkBwUAAAAMbWF0Y2hlclZhbGlkBwYJAQAAAA90aHJvd09yZGVyRXJyb3IAAAADBQAAAApvcmRlclZhbGlkBQAAAAtzZW5kZXJWYWxpZAUAAAAMbWF0Y2hlclZhbGlkBAAAAA1tYW5hZ2VyUHVibGljCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAABHRoaXMJAQAAABNrZXlNYW5hZ2VyUHVibGljS2V5AAAAAAUAAAAFRU1QVFkDCQAAAAAAAAIFAAAADW1hbmFnZXJQdWJsaWMFAAAABUVNUFRZCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleQkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAJAAJZAAAAAQUAAAANbWFuYWdlclB1YmxpY1myl8M=", "chainId": 84, "height": 1849712, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HHC5SLqKu2qc7FqHQEzrn238VJJWGwMKeA8zAioMA9C3 Next: 4Y3tLEzZoPpu2Dnzt1oAvGKV5XKKQHsgwHZai1Ac61bR Diff:
OldNewDifferences
230230 }
231231
232232
233-func bP (bs,aX,bQ,bR,bS,bT,R,bU,bV) = {
233+func bP (bs,aX,bQ,bR,bS,bT,R,bU,bV,bW,bX,bY) = {
234234 let bi = au()
235235 let bv = fromBase58String(bi[p])
236- let bW = bi[q]
237- let bX = bi[r]
238- let bY = bi[u]
239- let bZ = bi[v]
240- let ca = parseIntValue(bi[s])
241- let cb = parseIntValue(bi[t])
236+ let bZ = bi[q]
237+ let ca = bi[r]
238+ let cb = bi[u]
239+ let cc = bi[v]
240+ let cd = parseIntValue(bi[s])
241+ let ce = parseIntValue(bi[t])
242242 let bA = bi[o]
243243 let bB = valueOrErrorMessage(assetInfo(bv), "Wrong lp asset").quantity
244244 let bC = if (bU)
245- then aP(bW)
246- else (aP(bW) - bQ)
245+ then aP(bZ)
246+ else if (if (bW)
247+ then (bY == bZ)
248+ else false)
249+ then (aP(bZ) - bX)
250+ else (aP(bZ) - bQ)
247251 let bE = if (bU)
248- then aP(bX)
249- else (aP(bX) - bS)
252+ then aP(ca)
253+ else if (if (bW)
254+ then (bY == ca)
255+ else false)
256+ then (aP(ca) - bX)
257+ else (aP(ca) - bS)
250258 if (true)
251- then throw(((((((((("lpEmission = " + toString(bB)) + " amBalance = ") + toString(bC)) + " prBalance = ") + toString(bE)) + " getAccBalance(amIdStr) = ") + toString(aP(bW))) + " etAccBalance(prIdStr) = ") + toString(aP(bX))))
259+ then throw(((((((((("lpEmission = " + toString(bB)) + " amBalance = ") + toString(bC)) + " prBalance = ") + toString(bE)) + " getAccBalance(amIdStr) = ") + toString(aP(bZ))) + " etAccBalance(prIdStr) = ") + toString(aP(ca))))
252260 else {
253- let cc = z(bQ, ca)
254- let cd = z(bS, cb)
255- let ce = aR(cd, cc)
256- let bD = z(bC, ca)
257- let bF = z(bE, cb)
258- let cf = if ((bB == 0))
261+ let cf = z(bQ, cd)
262+ let cg = z(bS, ce)
263+ let ch = aR(cg, cf)
264+ let bD = z(bC, cd)
265+ let bF = z(bE, ce)
266+ let ci = if ((bB == 0))
259267 then {
260268 let bG = f
261- let cg = f
262- let bm = pow((cc * cd), 0, toBigInt(5), 1, 0, DOWN)
263- $Tuple5(C(bm, b), C(cc, ca), C(cd, cb), aR((bF + cd), (bD + cc)), cg)
269+ let cj = f
270+ let bm = pow((cf * cg), 0, toBigInt(5), 1, 0, DOWN)
271+ $Tuple5(C(bm, b), C(cf, cd), C(cg, ce), aR((bF + cg), (bD + cf)), cj)
264272 }
265273 else {
266274 let bG = aR(bF, bD)
267- let ch = fraction(J((bG - ce)), e, bG)
268- let cg = z(aX, b)
275+ let ck = fraction(J((bG - ch)), e, bG)
276+ let cj = z(aX, b)
269277 if (if ((bG != f))
270- then (ch > cg)
278+ then (ck > cj)
271279 else false)
272- then throw(((("Price slippage " + toString(ch)) + " exceeded ") + toString(cg)))
280+ then throw(((("Price slippage " + toString(ck)) + " exceeded ") + toString(cj)))
273281 else {
274282 let bJ = z(bB, b)
275- let ci = fraction(cc, bG, e)
276- let cj = fraction(cd, e, bG)
277- let ck = if ((ci > cd))
278- then $Tuple2(cj, cd)
279- else $Tuple2(cc, ci)
280- let cl = ck._1
281- let cm = ck._2
282- let bm = fraction(bJ, cm, bF)
283- $Tuple5(C(bm, b), C(cl, ca), C(cm, cb), bG, cg)
283+ let cl = fraction(cf, bG, e)
284+ let cm = fraction(cg, e, bG)
285+ let cn = if ((cl > cg))
286+ then $Tuple2(cm, cg)
287+ else $Tuple2(cf, cl)
288+ let co = cn._1
289+ let cp = cn._2
290+ let bm = fraction(bJ, cp, bF)
291+ $Tuple5(C(bm, b), C(co, cd), C(cp, ce), bG, cj)
284292 }
285293 }
286- let cn = cf._1
287- let co = cf._2
288- let cp = cf._3
289- let bH = C(cf._4, b)
290- let cq = C(cf._5, b)
291- if ((0 >= cn))
292- then throw("LP < 0")
294+ let cq = ci._1
295+ let cr = ci._2
296+ let cs = ci._3
297+ let bH = C(ci._4, b)
298+ let ct = C(ci._5, b)
299+ if ((0 >= cq))
300+ then throw("LP <= 0")
293301 else {
294- let cr = if (!(bV))
302+ let cu = if (!(bV))
295303 then 0
296- else cn
297- let cs = (bQ - co)
298- let ct = (bS - cp)
299- let cu = [IntegerEntry(M(), bH), IntegerEntry(N(height, lastBlock.timestamp), bH), StringEntry(Q(R, bs), aA(co, cp, cr, bH, aX, cq, height, lastBlock.timestamp, cs, ct))]
300- $Tuple13(cn, cr, bH, bC, bE, bB, bv, bA, cu, cs, ct, bR, bT)
304+ else cq
305+ let cv = (bQ - cr)
306+ let cw = (bS - cs)
307+ let cx = [IntegerEntry(M(), bH), IntegerEntry(N(height, lastBlock.timestamp), bH), StringEntry(Q(R, bs), aA(cr, cs, cu, bH, aX, ct, height, lastBlock.timestamp, cv, cw))]
308+ $Tuple13(cq, cu, bH, bC, bE, bB, bv, bA, cx, cv, cw, bR, bT)
301309 }
302310 }
303311 }
304312
305313
306-func cv (cw) = {
314+func cy (cz) = {
307315 let bi = au()
308- let cx = bi[q]
309- let cy = bi[r]
316+ let cA = bi[q]
317+ let cB = bi[r]
310318 let bA = parseIntValue(bi[o])
311319 let bj = parseIntValue(bi[s])
312320 let bk = parseIntValue(bi[t])
313- let cz = aP(cx)
314- let cA = aP(cy)
315- let bG = if ((cw.orderType == Buy))
316- then aZ(bj, bk, (cz + cw.amount), cA)
317- else aZ(bj, bk, (cz - cw.amount), cA)
321+ let cC = aP(cA)
322+ let cD = aP(cB)
323+ let bG = if ((cz.orderType == Buy))
324+ then aZ(bj, bk, (cC + cz.amount), cD)
325+ else aZ(bj, bk, (cC - cz.amount), cD)
318326 let bH = C(bG, b)
319327 if (if (if (as())
320328 then true
323331 else (bA == m))
324332 then throw("Blocked by admin")
325333 else {
326- let cB = cw.assetPair.amountAsset
327- let cC = if ((cB == unit))
334+ let cE = cz.assetPair.amountAsset
335+ let cF = if ((cE == unit))
328336 then "WAVES"
329- else toBase58String(value(cB))
330- let cD = cw.assetPair.priceAsset
331- let cE = if ((cD == unit))
337+ else toBase58String(value(cE))
338+ let cG = cz.assetPair.priceAsset
339+ let cH = if ((cG == unit))
332340 then "WAVES"
333- else toBase58String(value(cD))
334- if (if ((cC != cx))
341+ else toBase58String(value(cG))
342+ if (if ((cF != cA))
335343 then true
336- else (cE != cy))
344+ else (cH != cB))
337345 then throw("Wrong order assets")
338346 else {
339- let cF = cw.price
340- let cb = fraction(b, bk, bj)
341- let cG = F(cF, b, cb)
342- let cH = if ((cw.orderType == Buy))
343- then (bH >= cG)
344- else (cG >= bH)
347+ let cI = cz.price
348+ let ce = fraction(b, bk, bj)
349+ let cJ = F(cI, b, ce)
350+ let cK = if ((cz.orderType == Buy))
351+ then (bH >= cJ)
352+ else (cJ >= bH)
345353 true
346354 }
347355 }
348356 }
349357
350358
351-func cI (cJ) = if ((size(cJ.payments) != 1))
359+func cL (cM) = if ((size(cM.payments) != 1))
352360 then throw("1 payment expected")
353361 else {
354- let cK = value(cJ.payments[0])
355- let bt = value(cK.assetId)
356- let cL = cK.amount
357- let cf = br(toBase58String(cJ.transactionId), toBase58String(bt), cL, cJ.caller)
358- let bM = cf._1
359- let bN = cf._2
360- let bA = parseIntValue(cf._9)
361- let bO = cf._10
362+ let cN = value(cM.payments[0])
363+ let bt = value(cN.assetId)
364+ let bX = cN.amount
365+ let ci = br(toBase58String(cM.transactionId), toBase58String(bt), bX, cM.caller)
366+ let bM = ci._1
367+ let bN = ci._2
368+ let bA = parseIntValue(ci._9)
369+ let bO = ci._10
362370 if (if (as())
363371 then true
364372 else (bA == m))
365373 then throw(("Blocked by admin: " + toString(bA)))
366- else $Tuple5(bM, bN, cL, bt, bO)
374+ else $Tuple5(bM, bN, bX, bt, bO)
367375 }
368376
369377
370-func cM (cN,S,cO,cP,aX,bV) = {
371- let cQ = bP(S, aX, value(cO).amount, value(cO).assetId, value(cP).amount, value(cP).assetId, cN, false, bV)
372- let cR = parseIntValue(cQ._8)
378+func cO (cP,S,cQ,cR,aX,bV,bW,bX,bY) = {
379+ let cS = bP(S, aX, value(cQ).amount, value(cQ).assetId, value(cR).amount, value(cR).assetId, cP, false, bV, bW, bX, bY)
380+ let cT = parseIntValue(cS._8)
373381 if (if (if (as())
374382 then true
375- else (cR == k))
383+ else (cT == k))
376384 then true
377- else (cR == m))
378- then throw(("Blocked by admin: " + toString(cR)))
379- else cQ
385+ else (cT == m))
386+ then throw(("Blocked by admin: " + toString(cT)))
387+ else cS
380388 }
381389
382390
383-@Callable(cJ)
384-func constructor (ar,cS) = if ((cJ.caller != this))
391+@Callable(cM)
392+func constructor (ar,cU) = if ((cM.caller != this))
385393 then throw("permissions denied")
386- else [StringEntry(K(), ar), StringEntry(L(), cS)]
394+ else [StringEntry(K(), ar), StringEntry(L(), cU)]
387395
388396
389397
390-@Callable(cJ)
391-func put (cT,cU) = {
392- let cV = az()
393- let cW = valueOrErrorMessage(addressFromString(cV[w]), "Incorrect staking addr")
394- let cX = valueOrErrorMessage(addressFromString(cV[x]), "Incorrect slippage addr")
395- if ((0 > cT))
398+@Callable(cM)
399+func put (cV,cW) = {
400+ let cX = az()
401+ let cY = valueOrErrorMessage(addressFromString(cX[w]), "Incorrect staking addr")
402+ let cZ = valueOrErrorMessage(addressFromString(cX[x]), "Incorrect slippage addr")
403+ if ((0 > cV))
396404 then throw("Invalid slippage.")
397- else if ((size(cJ.payments) != 2))
405+ else if ((size(cM.payments) != 2))
398406 then throw("2 payments expected")
399407 else {
400- let cY = cM(toString(cJ.caller), toBase58String(cJ.transactionId), AttachedPayment(value(cJ.payments[0]).assetId, value(cJ.payments[0]).amount), cJ.payments[1], cT, true)
401- let cr = cY._2
402- let cZ = cY._7
403- let bO = cY._9
404- let cs = cY._10
405- let ct = cY._11
406- let bw = cY._12
407- let bx = cY._13
408- let da = invoke(ar, "emit", [cr], nil)
409- if ((da == da))
408+ let da = cO(toString(cM.caller), toBase58String(cM.transactionId), AttachedPayment(value(cM.payments[0]).assetId, value(cM.payments[0]).amount), cM.payments[1], cV, true, false, 0, "")
409+ let cu = da._2
410+ let db = da._7
411+ let bO = da._9
412+ let cv = da._10
413+ let cw = da._11
414+ let bw = da._12
415+ let bx = da._13
416+ let dc = invoke(ar, "emit", [cu], nil)
417+ if ((dc == dc))
410418 then {
411- let db = if ((cs > 0))
412- then invoke(cX, "put", nil, [AttachedPayment(bw, cs)])
419+ let dd = if ((cv > 0))
420+ then invoke(cZ, "put", nil, [AttachedPayment(bw, cv)])
413421 else nil
414- if ((db == db))
422+ if ((dd == dd))
415423 then {
416- let dc = if ((ct > 0))
417- then invoke(cX, "put", nil, [AttachedPayment(bx, ct)])
424+ let de = if ((cw > 0))
425+ then invoke(cZ, "put", nil, [AttachedPayment(bx, cw)])
418426 else nil
419- if ((dc == dc))
427+ if ((de == de))
420428 then {
421- let dd = if (cU)
429+ let df = if (cW)
422430 then {
423- let de = invoke(cW, "stake", nil, [AttachedPayment(cZ, cr)])
424- if ((de == de))
431+ let dg = invoke(cY, "stake", nil, [AttachedPayment(db, cu)])
432+ if ((dg == dg))
425433 then nil
426434 else throw("Strict value is not equal to itself.")
427435 }
428- else [ScriptTransfer(cJ.caller, cr, cZ)]
429- (bO ++ dd)
436+ else [ScriptTransfer(cM.caller, cu, db)]
437+ (bO ++ df)
430438 }
431439 else throw("Strict value is not equal to itself.")
432440 }
438446
439447
440448
441-@Callable(cJ)
442-func putOneTkn (df,dg,dh,aX,cU) = {
449+@Callable(cM)
450+func putOneTkn (dh,di,dj,aX,cW) = {
443451 let bi = az()
444- let cW = valueOrErrorMessage(addressFromString(bi[w]), "Wrong staking addr")
445- let cX = valueOrErrorMessage(addressFromString(bi[x]), "Wrong slippage addr")
446- let di = valueOrErrorMessage(addressFromString(bi[y]), "Wrong slippage addr")
447- let dj = au()
448- let bw = dj[q]
449- let bx = dj[r]
450- let by = parseIntValue(dj[s])
451- let bz = parseIntValue(dj[t])
452- if ((size(cJ.payments) != 1))
452+ let cY = valueOrErrorMessage(addressFromString(bi[w]), "Wrong staking addr")
453+ let cZ = valueOrErrorMessage(addressFromString(bi[x]), "Wrong slippage addr")
454+ let dk = valueOrErrorMessage(addressFromString(bi[y]), "Wrong slippage addr")
455+ let dl = au()
456+ let bw = dl[q]
457+ let bx = dl[r]
458+ let by = parseIntValue(dl[s])
459+ let bz = parseIntValue(dl[t])
460+ if ((size(cM.payments) != 1))
453461 then throw("1 payment expected")
454462 else {
455- let cK = value(cJ.payments[0])
456- let bt = toBase58String(value(cK.assetId))
457- let cL = cK.amount
458- let dk = z(df, by)
459- let dl = z(dg, bz)
463+ let cN = value(cM.payments[0])
464+ let bt = toBase58String(value(cN.assetId))
465+ let bX = cN.amount
466+ let dm = z(dh, by)
467+ let dn = z(di, bz)
460468 let bC = aP(bw)
461469 let bD = z(bC, by)
462470 let bE = aP(bx)
463471 let bF = z(bE, bz)
464- let dm = if ((bt == bw))
465- then (bC - cL)
472+ let do = if ((bt == bw))
473+ then (bC - bX)
466474 else bC
467- let dn = if ((bt == bx))
468- then (bE - cL)
475+ let dp = if ((bt == bx))
476+ then (bE - bX)
469477 else bE
470- let do = invoke(di, "calcD", [toString(dm), toString(dn), "50", "100000000", "1"], nil)
471- let dp = parseBigIntValue(ak(do))
472- let dq = if ((bt == bw))
478+ let dq = invoke(dk, "calcD", [toString(do), toString(dp), "50", "100000000", "1"], nil)
479+ let dr = parseBigIntValue(ak(dq))
480+ let ds = if ((bt == bw))
473481 then {
474- let dr = z(cL, by)
475- let ds = dl
476- let dt = (dr - dk)
477- let du = invoke(di, "calcD", [toString((toBigInt(dm) + toBigInt(C(dt, by)))), toString((toBigInt(dn) - toBigInt(C(ds, bz)))), "50", "100000000", "1"], nil)
478- parseBigIntValue(ak(du))
482+ let dt = z(bX, by)
483+ let du = dn
484+ let dv = (dt - dm)
485+ let dw = invoke(dk, "calcD", [toString((toBigInt(do) + toBigInt(C(dv, by)))), toString((toBigInt(dp) - toBigInt(C(du, bz)))), "50", "100000000", "1"], nil)
486+ parseBigIntValue(ak(dw))
479487 }
480488 else {
481- let dv = z(cL, bz)
482- let ds = (dv - dl)
483- let dt = dk
484- let du = invoke(di, "calcD", [toString((toBigInt(dm) - toBigInt(C(dt, by)))), toString((toBigInt(dn) + toBigInt(C(ds, bz)))), "50", "100000000", "1"], nil)
485- parseBigIntValue(ak(du))
489+ let dx = z(bX, bz)
490+ let du = (dx - dn)
491+ let dv = dm
492+ let dw = invoke(dk, "calcD", [toString((toBigInt(do) - toBigInt(C(dv, by)))), toString((toBigInt(dp) + toBigInt(C(du, bz)))), "50", "100000000", "1"], nil)
493+ parseBigIntValue(ak(dw))
486494 }
487- if (!(aU(dq, dp, toBigInt(1000))._1))
495+ if (!(aU(ds, dr, toBigInt(1000))._1))
488496 then throw("D mismatch.")
489497 else {
490- let cY = cM(toString(cJ.caller), toBase58String(cJ.transactionId), AttachedPayment(fromBase58String(bw), df), AttachedPayment(fromBase58String(bx), dg), 50000000000, true)
491- let dw = cY._2
492- let cZ = cY._7
493- let bO = cY._9
494- let cs = cY._10
495- let ct = cY._11
496- let dx = aU(toBigInt(dw), toBigInt(dh), toBigInt(aX))
497- if (!(dx._1))
498- then throw(((("Too big slippage: " + toString(dx._3)) + " vs ") + toString(aX)))
498+ let da = cO(toString(cM.caller), toBase58String(cM.transactionId), AttachedPayment(fromBase58String(bw), dh), AttachedPayment(fromBase58String(bx), di), 50000000000, true, true, bX, bt)
499+ let dy = da._2
500+ let db = da._7
501+ let bO = da._9
502+ let cv = da._10
503+ let cw = da._11
504+ let dz = aU(toBigInt(dy), toBigInt(dj), toBigInt(aX))
505+ if (!(dz._1))
506+ then throw(((("Too big slippage: " + toString(dz._3)) + " vs ") + toString(aX)))
499507 else {
500- let cr = toInt(dx._2)
501- let da = invoke(ar, "emit", [cr], nil)
502- if ((da == da))
508+ let cu = toInt(dz._2)
509+ let dc = invoke(ar, "emit", [cu], nil)
510+ if ((dc == dc))
503511 then {
504- let db = if ((cs > 0))
505- then invoke(cX, "put", nil, [AttachedPayment(fromBase58String(bw), cs)])
512+ let dd = if ((cv > 0))
513+ then invoke(cZ, "put", nil, [AttachedPayment(fromBase58String(bw), cv)])
506514 else nil
507- if ((db == db))
515+ if ((dd == dd))
508516 then {
509- let dc = if ((ct > 0))
510- then invoke(cX, "put", nil, [AttachedPayment(fromBase58String(bx), ct)])
517+ let de = if ((cw > 0))
518+ then invoke(cZ, "put", nil, [AttachedPayment(fromBase58String(bx), cw)])
511519 else nil
512- if ((dc == dc))
520+ if ((de == de))
513521 then {
514- let dd = if (cU)
522+ let df = if (cW)
515523 then {
516- let de = invoke(cW, "stake", nil, [AttachedPayment(cZ, cr)])
517- if ((de == de))
524+ let dg = invoke(cY, "stake", nil, [AttachedPayment(db, cu)])
525+ if ((dg == dg))
518526 then nil
519527 else throw("Strict value is not equal to itself.")
520528 }
521- else [ScriptTransfer(cJ.caller, cr, cZ)]
522- (bO ++ dd)
529+ else [ScriptTransfer(cM.caller, cu, db)]
530+ (bO ++ df)
523531 }
524532 else throw("Strict value is not equal to itself.")
525533 }
533541
534542
535543
536-@Callable(cJ)
537-func putForFree (dy) = if ((0 > dy))
544+@Callable(cM)
545+func putForFree (dA) = if ((0 > dA))
538546 then throw("Invalid slippage")
539- else if ((size(cJ.payments) != 2))
547+ else if ((size(cM.payments) != 2))
540548 then throw("2 payments expected")
541549 else {
542- let cY = cM(toString(cJ.caller), toBase58String(cJ.transactionId), AttachedPayment(value(cJ.payments[0]).assetId, value(cJ.payments[0]).amount), cJ.payments[1], dy, false)
543- cY._9
550+ let da = cO(toString(cM.caller), toBase58String(cM.transactionId), AttachedPayment(value(cM.payments[0]).assetId, value(cM.payments[0]).amount), cM.payments[1], dA, false, false, 0, "")
551+ da._9
544552 }
545553
546554
547555
548-@Callable(cJ)
556+@Callable(cM)
549557 func get () = {
550- let cf = cI(cJ)
551- let dz = cf._1
552- let bN = cf._2
553- let cL = cf._3
554- let bt = cf._4
555- let bO = cf._5
556- let dA = invoke(ar, "burn", [cL], [AttachedPayment(bt, cL)])
557- if ((dA == dA))
558+ let ci = cL(cM)
559+ let dB = ci._1
560+ let bN = ci._2
561+ let bX = ci._3
562+ let bt = ci._4
563+ let bO = ci._5
564+ let dC = invoke(ar, "burn", [bX], [AttachedPayment(bt, bX)])
565+ if ((dC == dC))
558566 then bO
559567 else throw("Strict value is not equal to itself.")
560568 }
561569
562570
563571
564-@Callable(cJ)
565-func getOneTkn (dB,dC,dD,dE,aX) = if ((size(cJ.payments) != 1))
572+@Callable(cM)
573+func getOneTkn (dD,dE,dF,dG,aX) = if ((size(cM.payments) != 1))
566574 then throw("1 payment expected")
567575 else {
568576 let bi = au()
572580 let by = parseIntValue(bi[s])
573581 let bz = parseIntValue(bi[t])
574582 let bA = bi[o]
575- let dF = az()
576- let di = valueOrErrorMessage(addressFromString(dF[y]), "Wrong slippage address")
577- if (if ((dE != bw))
578- then (dE != bx)
583+ let dH = az()
584+ let dk = valueOrErrorMessage(addressFromString(dH[y]), "Wrong slippage address")
585+ if (if ((dG != bw))
586+ then (dG != bx)
579587 else false)
580588 then throw("Invalid out asset")
581589 else {
582- let dG = if ((dE == bw))
590+ let dI = if ((dG == bw))
583591 then bw
584592 else bx
585- let cK = value(cJ.payments[0])
586- let R = cJ.caller
587- let bs = toBase58String(cJ.transactionId)
588- let bt = value(cK.assetId)
589- let cL = cK.amount
593+ let cN = value(cM.payments[0])
594+ let R = cM.caller
595+ let bs = toBase58String(cM.transactionId)
596+ let bt = value(cN.assetId)
597+ let bX = cN.amount
590598 if ((bv != toBase58String(bt)))
591599 then throw("Invalid LP")
592600 else {
593- let cQ = br(toBase58String(cJ.transactionId), toBase58String(bt), cL, cJ.caller)
594- let dH = cQ._1
595- let dI = cQ._2
601+ let cS = br(toBase58String(cM.transactionId), toBase58String(bt), bX, cM.caller)
602+ let dJ = cS._1
603+ let dK = cS._2
596604 let bC = aP(bw)
597605 let bD = z(bC, by)
598606 let bE = aP(bx)
599607 let bF = z(bE, bz)
600- let dp = invoke(di, "calcD", [toString(bC), toString(bE), "50", "100000000", "1"], nil)
601- let dJ = if ((dE == bw))
608+ let dr = invoke(dk, "calcD", [toString(bC), toString(bE), "50", "100000000", "1"], nil)
609+ let dL = if ((dG == bw))
602610 then {
603- let dK = (dD - dH)
604- let dq = invoke(di, "calcD", [toString((bC - dK)), toString((bE + dC)), "50", "100000000", "1"], nil)
605- if (!(aU(parseBigIntValue(ak(dq)), parseBigIntValue(ak(dp)), toBigInt(1000))._1))
611+ let dM = (dF - dJ)
612+ let ds = invoke(dk, "calcD", [toString((bC - dM)), toString((bE + dE)), "50", "100000000", "1"], nil)
613+ if (!(aU(parseBigIntValue(ak(ds)), parseBigIntValue(ak(dr)), toBigInt(1000))._1))
606614 then throw("D mismatch")
607615 else {
608- let dL = (dH + dB)
609- let dx = aU(toBigInt(dL), toBigInt(dD), toBigInt(aX))
610- if (!(dx._1))
611- then throw(((("Too big slippage: " + toString(dx._3)) + " vs ") + toString(aX)))
612- else $Tuple2(toInt(dx._2), 0)
616+ let dN = (dJ + dD)
617+ let dz = aU(toBigInt(dN), toBigInt(dF), toBigInt(aX))
618+ if (!(dz._1))
619+ then throw(((("Too big slippage: " + toString(dz._3)) + " vs ") + toString(aX)))
620+ else $Tuple2(toInt(dz._2), 0)
613621 }
614622 }
615623 else {
616- let dM = (dD - dI)
617- let dq = invoke(di, "calcD", [toString((bC + dB)), toString((bE - dM)), "50", "100000000", "1"], nil)
618- if (!(aU(parseBigIntValue(ak(dq)), parseBigIntValue(ak(dp)), toBigInt(5000))._1))
624+ let dO = (dF - dK)
625+ let ds = invoke(dk, "calcD", [toString((bC + dD)), toString((bE - dO)), "50", "100000000", "1"], nil)
626+ if (!(aU(parseBigIntValue(ak(ds)), parseBigIntValue(ak(dr)), toBigInt(5000))._1))
619627 then throw("D mismatch.")
620628 else {
621- let dL = (dI + dC)
622- let dx = aU(toBigInt(dL), toBigInt(dD), toBigInt(aX))
623- if (!(dx._1))
624- then throw(((("Too big slippage: " + toString(dx._3)) + " vs ") + toString(aX)))
625- else $Tuple2(0, toInt(dx._2))
629+ let dN = (dK + dE)
630+ let dz = aU(toBigInt(dN), toBigInt(dF), toBigInt(aX))
631+ if (!(dz._1))
632+ then throw(((("Too big slippage: " + toString(dz._3)) + " vs ") + toString(aX)))
633+ else $Tuple2(0, toInt(dz._2))
626634 }
627635 }
628636 let bG = aR(bF, bD)
629637 let bH = C(bG, b)
630- let bO = [ScriptTransfer(R, if ((dG == bw))
631- then dJ._1
632- else dJ._2, if ((dG == "WAVES"))
638+ let bO = [ScriptTransfer(R, if ((dI == bw))
639+ then dL._1
640+ else dL._2, if ((dI == "WAVES"))
633641 then unit
634- else fromBase58String(dG)), StringEntry(T(toString(R), bs), aL(dJ._1, dJ._2, cL, bH, height, lastBlock.timestamp)), IntegerEntry(M(), bH), IntegerEntry(N(height, lastBlock.timestamp), bH)]
635- let dN = invoke(ar, "burn", [cL], [AttachedPayment(bt, cL)])
636- if ((dN == dN))
642+ else fromBase58String(dI)), StringEntry(T(toString(R), bs), aL(dL._1, dL._2, bX, bH, height, lastBlock.timestamp)), IntegerEntry(M(), bH), IntegerEntry(N(height, lastBlock.timestamp), bH)]
643+ let dP = invoke(ar, "burn", [bX], [AttachedPayment(bt, bX)])
644+ if ((dP == dP))
637645 then bO
638646 else throw("Strict value is not equal to itself.")
639647 }
642650
643651
644652
645-@Callable(cJ)
646-func getNoLess (dO,dP) = {
647- let cf = cI(cJ)
648- let bM = cf._1
649- let bN = cf._2
650- let cL = cf._3
651- let bt = cf._4
652- let bO = cf._5
653- if ((dO > bM))
654- then throw(((("Failed: " + toString(bM)) + " < ") + toString(dO)))
655- else if ((dP > bN))
656- then throw(((("Failed: " + toString(bN)) + " < ") + toString(dP)))
653+@Callable(cM)
654+func getNoLess (dQ,dR) = {
655+ let ci = cL(cM)
656+ let bM = ci._1
657+ let bN = ci._2
658+ let bX = ci._3
659+ let bt = ci._4
660+ let bO = ci._5
661+ if ((dQ > bM))
662+ then throw(((("Failed: " + toString(bM)) + " < ") + toString(dQ)))
663+ else if ((dR > bN))
664+ then throw(((("Failed: " + toString(bN)) + " < ") + toString(dR)))
657665 else {
658- let dA = invoke(ar, "burn", [cL], [AttachedPayment(bt, cL)])
659- if ((dA == dA))
666+ let dC = invoke(ar, "burn", [bX], [AttachedPayment(bt, bX)])
667+ if ((dC == dC))
660668 then bO
661669 else throw("Strict value is not equal to itself.")
662670 }
664672
665673
666674
667-@Callable(cJ)
668-func unstakeAndGet (dQ) = {
669- let dR = if ((size(cJ.payments) != 0))
675+@Callable(cM)
676+func unstakeAndGet (dS) = {
677+ let dT = if ((size(cM.payments) != 0))
670678 then throw("No payments expected")
671679 else true
672- if ((dR == dR))
680+ if ((dT == dT))
673681 then {
674682 let bi = au()
675- let dS = az()
676- let cZ = fromBase58String(bi[p])
677- let dT = valueOrErrorMessage(addressFromString(dS[w]), "Wrong staking address.")
678- let dU = invoke(dT, "unstake", [toBase58String(cZ), dQ], nil)
679- if ((dU == dU))
683+ let dU = az()
684+ let db = fromBase58String(bi[p])
685+ let dV = valueOrErrorMessage(addressFromString(dU[w]), "Wrong staking address.")
686+ let dW = invoke(dV, "unstake", [toBase58String(db), dS], nil)
687+ if ((dW == dW))
680688 then {
681- let cQ = br(toBase58String(cJ.transactionId), toBase58String(cZ), dQ, cJ.caller)
682- let bA = parseIntValue(cQ._9)
683- let bO = cQ._10
684- let dV = if (if (as())
689+ let cS = br(toBase58String(cM.transactionId), toBase58String(db), dS, cM.caller)
690+ let bA = parseIntValue(cS._9)
691+ let bO = cS._10
692+ let dX = if (if (as())
685693 then true
686694 else (bA == m))
687695 then throw(("Blocked by admin: " + toString(bA)))
688696 else true
689- if ((dV == dV))
697+ if ((dX == dX))
690698 then {
691- let dA = invoke(ar, "burn", [dQ], [AttachedPayment(cZ, dQ)])
692- if ((dA == dA))
699+ let dC = invoke(ar, "burn", [dS], [AttachedPayment(db, dS)])
700+ if ((dC == dC))
693701 then bO
694702 else throw("Strict value is not equal to itself.")
695703 }
702710
703711
704712
705-@Callable(cJ)
706-func activate (dW,dX) = if ((toString(cJ.caller) != toString(ar)))
713+@Callable(cM)
714+func activate (dY,dZ) = if ((toString(cM.caller) != toString(ar)))
707715 then throw("permissions denied")
708- else $Tuple2([StringEntry(U(), dW), StringEntry(V(), dX)], "success")
716+ else $Tuple2([StringEntry(U(), dY), StringEntry(V(), dZ)], "success")
709717
710718
711719
712-@Callable(cJ)
720+@Callable(cM)
713721 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, au())
714722
715723
716724
717-@Callable(cJ)
725+@Callable(cM)
718726 func getAccBalanceWrapperREADONLY (aQ) = $Tuple2(nil, aP(aQ))
719727
720728
721729
722-@Callable(cJ)
730+@Callable(cM)
723731 func calcPricesWrapperREADONLY (bc,bd,bh) = {
724732 let bq = bg(bc, bd, bh)
725733 $Tuple2(nil, [toString(bq[0]), toString(bq[1]), toString(bq[2])])
727735
728736
729737
730-@Callable(cJ)
738+@Callable(cM)
731739 func fromX18WrapperREADONLY (D,E) = $Tuple2(nil, C(parseBigIntValue(D), E))
732740
733741
734742
735-@Callable(cJ)
743+@Callable(cM)
736744 func toX18WrapperREADONLY (A,B) = $Tuple2(nil, toString(z(A, B)))
737745
738746
739747
740-@Callable(cJ)
748+@Callable(cM)
741749 func calcPriceBigIntWrapperREADONLY (aS,aT) = $Tuple2(nil, toString(aR(parseBigIntValue(aS), parseBigIntValue(aT))))
742750
743751
744-
745-@Callable(cJ)
746-func estimatePutOperationWrapperREADONLY (bs,aX,bQ,bR,bS,bT,R,bU,bV) = $Tuple2(nil, bP(bs, aX, bQ, bR, bS, bT, R, bU, bV))
747-
748-
749-@Verifier(dY)
750-func dZ () = {
751- let al = dY
752+@Verifier(ea)
753+func eb () = {
754+ let al = ea
752755 if ($isInstanceOf(al, "Order"))
753756 then {
754- let cw = al
755- let ea = at()
756- let ah = cv(cw)
757- let ai = sigVerify(cw.bodyBytes, cw.proofs[0], cw.senderPublicKey)
758- let aj = sigVerify(cw.bodyBytes, cw.proofs[1], ea)
757+ let cz = al
758+ let ec = at()
759+ let ah = cy(cz)
760+ let ai = sigVerify(cz.bodyBytes, cz.proofs[0], cz.senderPublicKey)
761+ let aj = sigVerify(cz.bodyBytes, cz.proofs[1], ec)
759762 if (if (if (ah)
760763 then ai
761764 else false)
765768 else ag(ah, ai, aj)
766769 }
767770 else {
768- let eb = valueOrElse(getString(this, L()), i)
769- if ((eb == i))
770- then sigVerify(dY.bodyBytes, dY.proofs[0], dY.senderPublicKey)
771- else sigVerify(dY.bodyBytes, dY.proofs[0], fromBase58String(eb))
771+ let ed = valueOrElse(getString(this, L()), i)
772+ if ((ed == i))
773+ then sigVerify(ea.bodyBytes, ea.proofs[0], ea.senderPublicKey)
774+ else sigVerify(ea.bodyBytes, ea.proofs[0], fromBase58String(ed))
772775 }
773776 }
774777
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000)
1111
1212 let e = toBigInt(1000000000000000000)
1313
1414 let f = toBigInt(0)
1515
1616 let g = toBigInt(1)
1717
1818 let h = "__"
1919
2020 let i = ""
2121
2222 let j = 1
2323
2424 let k = 2
2525
2626 let l = 3
2727
2828 let m = 4
2929
3030 let n = 1
3131
3232 let o = 2
3333
3434 let p = 3
3535
3636 let q = 4
3737
3838 let r = 5
3939
4040 let s = 6
4141
4242 let t = 7
4343
4444 let u = 8
4545
4646 let v = 9
4747
4848 let w = 1
4949
5050 let x = 7
5151
5252 let y = 10
5353
5454 func z (A,B) = fraction(toBigInt(A), e, toBigInt(B))
5555
5656
5757 func C (D,E) = toInt(fraction(D, toBigInt(E), e))
5858
5959
6060 func F (G,H,I) = fraction(G, H, I)
6161
6262
6363 func J (D) = if ((f > D))
6464 then -(D)
6565 else D
6666
6767
6868 func K () = "%s__factoryContract"
6969
7070
7171 func L () = "%s__managerPublicKey"
7272
7373
7474 func M () = "%s%s__price__last"
7575
7676
7777 func N (O,P) = makeString(["%s%s%d%d__price__history", toString(O), toString(P)], h)
7878
7979
8080 func Q (R,S) = ((("%s%s%s__P__" + R) + "__") + S)
8181
8282
8383 func T (R,S) = ((("%s%s%s__G__" + R) + "__") + S)
8484
8585
8686 func U () = "%s__amountAsset"
8787
8888
8989 func V () = "%s__priceAsset"
9090
9191
9292 func W () = "%s__factoryConfig"
9393
9494
9595 func X () = "%s%s__matcher__publicKey"
9696
9797
9898 func Y (Z,aa) = (((("%d%d%s__" + Z) + "__") + aa) + "__config")
9999
100100
101101 func ab (ac) = ("%s%s%s__mappings__baseAsset2internalId__" + ac)
102102
103103
104104 func ad () = "%s__shutdown"
105105
106106
107107 func ae (af) = ("%s%s__poolWeight__" + af)
108108
109109
110110 func ag (ah,ai,aj) = throw(((((("Validation failed: orderValid=" + toString(ah)) + " senderValid=") + toString(ai)) + " matcherValid=") + toString(aj)))
111111
112112
113113 func ak (D) = {
114114 let al = D
115115 if ($isInstanceOf(al, "String"))
116116 then {
117117 let am = al
118118 am
119119 }
120120 else throw("fail cast to String")
121121 }
122122
123123
124124 func an (ao,ap) = valueOrErrorMessage(getString(ao, ap), makeString(["mandatory ", toString(ao), ".", ap, " is not defined"], ""))
125125
126126
127127 func aq (ao,ap) = valueOrErrorMessage(getInteger(ao, ap), makeString(["mandatory ", toString(ao), ".", ap, " is not defined"], ""))
128128
129129
130130 let ar = addressFromStringValue(an(this, K()))
131131
132132 func as () = valueOrElse(getBoolean(ar, ad()), false)
133133
134134
135135 func at () = fromBase58String(an(ar, X()))
136136
137137
138138 func au () = {
139139 let av = an(this, U())
140140 let aw = an(this, V())
141141 let ax = aq(ar, ab(aw))
142142 let ay = aq(ar, ab(av))
143143 split(an(ar, Y(toString(ay), toString(ax))), h)
144144 }
145145
146146
147147 func az () = split(an(ar, W()), h)
148148
149149
150150 func aA (aB,aC,aD,aE,aF,aG,aH,aI,aJ,aK) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aB), toString(aC), toString(aD), toString(aE), toString(aF), toString(aG), toString(aH), toString(aI), toString(aJ), toString(aK)], h)
151151
152152
153153 func aL (aM,aN,aO,aE,aH,aI) = makeString(["%d%d%d%d%d%d", toString(aM), toString(aN), toString(aO), toString(aE), toString(aH), toString(aI)], h)
154154
155155
156156 func aP (aQ) = if ((aQ == "WAVES"))
157157 then wavesBalance(this).available
158158 else assetBalance(this, fromBase58String(aQ))
159159
160160
161161 func aR (aS,aT) = fraction(aS, e, aT)
162162
163163
164164 func aU (aV,aW,aX) = {
165165 let aY = fraction((aV - aW), c, aW)
166166 $Tuple3(((aX - J(aY)) > f), min([aV, aW]), aY)
167167 }
168168
169169
170170 func aZ (ba,bb,bc,bd) = {
171171 let be = z(bc, ba)
172172 let bf = z(bd, bb)
173173 aR(bf, be)
174174 }
175175
176176
177177 func bg (bc,bd,bh) = {
178178 let bi = au()
179179 let bj = parseIntValue(bi[s])
180180 let bk = parseIntValue(bi[t])
181181 let bl = aZ(bj, bk, bc, bd)
182182 let aT = z(bc, bj)
183183 let aS = z(bd, bk)
184184 let bm = z(bh, b)
185185 let bn = aR(aT, bm)
186186 let bo = aR(aS, bm)
187187 [bl, bn, bo]
188188 }
189189
190190
191191 func bp (bc,bd,bh) = {
192192 let bq = bg(bc, bd, bh)
193193 [C(bq[0], b), C(bq[1], b), C(bq[2], b)]
194194 }
195195
196196
197197 func br (bs,bt,bu,R) = {
198198 let bi = au()
199199 let bv = bi[p]
200200 let bw = bi[q]
201201 let bx = bi[r]
202202 let by = parseIntValue(bi[s])
203203 let bz = parseIntValue(bi[t])
204204 let bA = bi[o]
205205 let bB = valueOrErrorMessage(assetInfo(fromBase58String(bv)), "Invalid LP id").quantity
206206 if ((bv != bt))
207207 then throw("Invalid pmt asset")
208208 else {
209209 let bC = aP(bw)
210210 let bD = z(bC, by)
211211 let bE = aP(bx)
212212 let bF = z(bE, bz)
213213 let bG = aR(bF, bD)
214214 let bH = C(bG, b)
215215 let bI = z(bu, b)
216216 let bJ = z(bB, b)
217217 let bK = fraction(bD, bI, bJ)
218218 let bL = fraction(bF, bI, bJ)
219219 let bM = C(bK, by)
220220 let bN = C(bL, bz)
221221 let bO = if ((bs == ""))
222222 then nil
223223 else [ScriptTransfer(R, bM, if ((bw == "WAVES"))
224224 then unit
225225 else fromBase58String(bw)), ScriptTransfer(R, bN, if ((bx == "WAVES"))
226226 then unit
227227 else fromBase58String(bx)), StringEntry(T(toString(R), bs), aL(bM, bN, bu, bH, height, lastBlock.timestamp)), IntegerEntry(M(), bH), IntegerEntry(N(height, lastBlock.timestamp), bH)]
228228 $Tuple10(bM, bN, bw, bx, bC, bE, bB, bG, bA, bO)
229229 }
230230 }
231231
232232
233-func bP (bs,aX,bQ,bR,bS,bT,R,bU,bV) = {
233+func bP (bs,aX,bQ,bR,bS,bT,R,bU,bV,bW,bX,bY) = {
234234 let bi = au()
235235 let bv = fromBase58String(bi[p])
236- let bW = bi[q]
237- let bX = bi[r]
238- let bY = bi[u]
239- let bZ = bi[v]
240- let ca = parseIntValue(bi[s])
241- let cb = parseIntValue(bi[t])
236+ let bZ = bi[q]
237+ let ca = bi[r]
238+ let cb = bi[u]
239+ let cc = bi[v]
240+ let cd = parseIntValue(bi[s])
241+ let ce = parseIntValue(bi[t])
242242 let bA = bi[o]
243243 let bB = valueOrErrorMessage(assetInfo(bv), "Wrong lp asset").quantity
244244 let bC = if (bU)
245- then aP(bW)
246- else (aP(bW) - bQ)
245+ then aP(bZ)
246+ else if (if (bW)
247+ then (bY == bZ)
248+ else false)
249+ then (aP(bZ) - bX)
250+ else (aP(bZ) - bQ)
247251 let bE = if (bU)
248- then aP(bX)
249- else (aP(bX) - bS)
252+ then aP(ca)
253+ else if (if (bW)
254+ then (bY == ca)
255+ else false)
256+ then (aP(ca) - bX)
257+ else (aP(ca) - bS)
250258 if (true)
251- then throw(((((((((("lpEmission = " + toString(bB)) + " amBalance = ") + toString(bC)) + " prBalance = ") + toString(bE)) + " getAccBalance(amIdStr) = ") + toString(aP(bW))) + " etAccBalance(prIdStr) = ") + toString(aP(bX))))
259+ then throw(((((((((("lpEmission = " + toString(bB)) + " amBalance = ") + toString(bC)) + " prBalance = ") + toString(bE)) + " getAccBalance(amIdStr) = ") + toString(aP(bZ))) + " etAccBalance(prIdStr) = ") + toString(aP(ca))))
252260 else {
253- let cc = z(bQ, ca)
254- let cd = z(bS, cb)
255- let ce = aR(cd, cc)
256- let bD = z(bC, ca)
257- let bF = z(bE, cb)
258- let cf = if ((bB == 0))
261+ let cf = z(bQ, cd)
262+ let cg = z(bS, ce)
263+ let ch = aR(cg, cf)
264+ let bD = z(bC, cd)
265+ let bF = z(bE, ce)
266+ let ci = if ((bB == 0))
259267 then {
260268 let bG = f
261- let cg = f
262- let bm = pow((cc * cd), 0, toBigInt(5), 1, 0, DOWN)
263- $Tuple5(C(bm, b), C(cc, ca), C(cd, cb), aR((bF + cd), (bD + cc)), cg)
269+ let cj = f
270+ let bm = pow((cf * cg), 0, toBigInt(5), 1, 0, DOWN)
271+ $Tuple5(C(bm, b), C(cf, cd), C(cg, ce), aR((bF + cg), (bD + cf)), cj)
264272 }
265273 else {
266274 let bG = aR(bF, bD)
267- let ch = fraction(J((bG - ce)), e, bG)
268- let cg = z(aX, b)
275+ let ck = fraction(J((bG - ch)), e, bG)
276+ let cj = z(aX, b)
269277 if (if ((bG != f))
270- then (ch > cg)
278+ then (ck > cj)
271279 else false)
272- then throw(((("Price slippage " + toString(ch)) + " exceeded ") + toString(cg)))
280+ then throw(((("Price slippage " + toString(ck)) + " exceeded ") + toString(cj)))
273281 else {
274282 let bJ = z(bB, b)
275- let ci = fraction(cc, bG, e)
276- let cj = fraction(cd, e, bG)
277- let ck = if ((ci > cd))
278- then $Tuple2(cj, cd)
279- else $Tuple2(cc, ci)
280- let cl = ck._1
281- let cm = ck._2
282- let bm = fraction(bJ, cm, bF)
283- $Tuple5(C(bm, b), C(cl, ca), C(cm, cb), bG, cg)
283+ let cl = fraction(cf, bG, e)
284+ let cm = fraction(cg, e, bG)
285+ let cn = if ((cl > cg))
286+ then $Tuple2(cm, cg)
287+ else $Tuple2(cf, cl)
288+ let co = cn._1
289+ let cp = cn._2
290+ let bm = fraction(bJ, cp, bF)
291+ $Tuple5(C(bm, b), C(co, cd), C(cp, ce), bG, cj)
284292 }
285293 }
286- let cn = cf._1
287- let co = cf._2
288- let cp = cf._3
289- let bH = C(cf._4, b)
290- let cq = C(cf._5, b)
291- if ((0 >= cn))
292- then throw("LP < 0")
294+ let cq = ci._1
295+ let cr = ci._2
296+ let cs = ci._3
297+ let bH = C(ci._4, b)
298+ let ct = C(ci._5, b)
299+ if ((0 >= cq))
300+ then throw("LP <= 0")
293301 else {
294- let cr = if (!(bV))
302+ let cu = if (!(bV))
295303 then 0
296- else cn
297- let cs = (bQ - co)
298- let ct = (bS - cp)
299- let cu = [IntegerEntry(M(), bH), IntegerEntry(N(height, lastBlock.timestamp), bH), StringEntry(Q(R, bs), aA(co, cp, cr, bH, aX, cq, height, lastBlock.timestamp, cs, ct))]
300- $Tuple13(cn, cr, bH, bC, bE, bB, bv, bA, cu, cs, ct, bR, bT)
304+ else cq
305+ let cv = (bQ - cr)
306+ let cw = (bS - cs)
307+ let cx = [IntegerEntry(M(), bH), IntegerEntry(N(height, lastBlock.timestamp), bH), StringEntry(Q(R, bs), aA(cr, cs, cu, bH, aX, ct, height, lastBlock.timestamp, cv, cw))]
308+ $Tuple13(cq, cu, bH, bC, bE, bB, bv, bA, cx, cv, cw, bR, bT)
301309 }
302310 }
303311 }
304312
305313
306-func cv (cw) = {
314+func cy (cz) = {
307315 let bi = au()
308- let cx = bi[q]
309- let cy = bi[r]
316+ let cA = bi[q]
317+ let cB = bi[r]
310318 let bA = parseIntValue(bi[o])
311319 let bj = parseIntValue(bi[s])
312320 let bk = parseIntValue(bi[t])
313- let cz = aP(cx)
314- let cA = aP(cy)
315- let bG = if ((cw.orderType == Buy))
316- then aZ(bj, bk, (cz + cw.amount), cA)
317- else aZ(bj, bk, (cz - cw.amount), cA)
321+ let cC = aP(cA)
322+ let cD = aP(cB)
323+ let bG = if ((cz.orderType == Buy))
324+ then aZ(bj, bk, (cC + cz.amount), cD)
325+ else aZ(bj, bk, (cC - cz.amount), cD)
318326 let bH = C(bG, b)
319327 if (if (if (as())
320328 then true
321329 else (bA == l))
322330 then true
323331 else (bA == m))
324332 then throw("Blocked by admin")
325333 else {
326- let cB = cw.assetPair.amountAsset
327- let cC = if ((cB == unit))
334+ let cE = cz.assetPair.amountAsset
335+ let cF = if ((cE == unit))
328336 then "WAVES"
329- else toBase58String(value(cB))
330- let cD = cw.assetPair.priceAsset
331- let cE = if ((cD == unit))
337+ else toBase58String(value(cE))
338+ let cG = cz.assetPair.priceAsset
339+ let cH = if ((cG == unit))
332340 then "WAVES"
333- else toBase58String(value(cD))
334- if (if ((cC != cx))
341+ else toBase58String(value(cG))
342+ if (if ((cF != cA))
335343 then true
336- else (cE != cy))
344+ else (cH != cB))
337345 then throw("Wrong order assets")
338346 else {
339- let cF = cw.price
340- let cb = fraction(b, bk, bj)
341- let cG = F(cF, b, cb)
342- let cH = if ((cw.orderType == Buy))
343- then (bH >= cG)
344- else (cG >= bH)
347+ let cI = cz.price
348+ let ce = fraction(b, bk, bj)
349+ let cJ = F(cI, b, ce)
350+ let cK = if ((cz.orderType == Buy))
351+ then (bH >= cJ)
352+ else (cJ >= bH)
345353 true
346354 }
347355 }
348356 }
349357
350358
351-func cI (cJ) = if ((size(cJ.payments) != 1))
359+func cL (cM) = if ((size(cM.payments) != 1))
352360 then throw("1 payment expected")
353361 else {
354- let cK = value(cJ.payments[0])
355- let bt = value(cK.assetId)
356- let cL = cK.amount
357- let cf = br(toBase58String(cJ.transactionId), toBase58String(bt), cL, cJ.caller)
358- let bM = cf._1
359- let bN = cf._2
360- let bA = parseIntValue(cf._9)
361- let bO = cf._10
362+ let cN = value(cM.payments[0])
363+ let bt = value(cN.assetId)
364+ let bX = cN.amount
365+ let ci = br(toBase58String(cM.transactionId), toBase58String(bt), bX, cM.caller)
366+ let bM = ci._1
367+ let bN = ci._2
368+ let bA = parseIntValue(ci._9)
369+ let bO = ci._10
362370 if (if (as())
363371 then true
364372 else (bA == m))
365373 then throw(("Blocked by admin: " + toString(bA)))
366- else $Tuple5(bM, bN, cL, bt, bO)
374+ else $Tuple5(bM, bN, bX, bt, bO)
367375 }
368376
369377
370-func cM (cN,S,cO,cP,aX,bV) = {
371- let cQ = bP(S, aX, value(cO).amount, value(cO).assetId, value(cP).amount, value(cP).assetId, cN, false, bV)
372- let cR = parseIntValue(cQ._8)
378+func cO (cP,S,cQ,cR,aX,bV,bW,bX,bY) = {
379+ let cS = bP(S, aX, value(cQ).amount, value(cQ).assetId, value(cR).amount, value(cR).assetId, cP, false, bV, bW, bX, bY)
380+ let cT = parseIntValue(cS._8)
373381 if (if (if (as())
374382 then true
375- else (cR == k))
383+ else (cT == k))
376384 then true
377- else (cR == m))
378- then throw(("Blocked by admin: " + toString(cR)))
379- else cQ
385+ else (cT == m))
386+ then throw(("Blocked by admin: " + toString(cT)))
387+ else cS
380388 }
381389
382390
383-@Callable(cJ)
384-func constructor (ar,cS) = if ((cJ.caller != this))
391+@Callable(cM)
392+func constructor (ar,cU) = if ((cM.caller != this))
385393 then throw("permissions denied")
386- else [StringEntry(K(), ar), StringEntry(L(), cS)]
394+ else [StringEntry(K(), ar), StringEntry(L(), cU)]
387395
388396
389397
390-@Callable(cJ)
391-func put (cT,cU) = {
392- let cV = az()
393- let cW = valueOrErrorMessage(addressFromString(cV[w]), "Incorrect staking addr")
394- let cX = valueOrErrorMessage(addressFromString(cV[x]), "Incorrect slippage addr")
395- if ((0 > cT))
398+@Callable(cM)
399+func put (cV,cW) = {
400+ let cX = az()
401+ let cY = valueOrErrorMessage(addressFromString(cX[w]), "Incorrect staking addr")
402+ let cZ = valueOrErrorMessage(addressFromString(cX[x]), "Incorrect slippage addr")
403+ if ((0 > cV))
396404 then throw("Invalid slippage.")
397- else if ((size(cJ.payments) != 2))
405+ else if ((size(cM.payments) != 2))
398406 then throw("2 payments expected")
399407 else {
400- let cY = cM(toString(cJ.caller), toBase58String(cJ.transactionId), AttachedPayment(value(cJ.payments[0]).assetId, value(cJ.payments[0]).amount), cJ.payments[1], cT, true)
401- let cr = cY._2
402- let cZ = cY._7
403- let bO = cY._9
404- let cs = cY._10
405- let ct = cY._11
406- let bw = cY._12
407- let bx = cY._13
408- let da = invoke(ar, "emit", [cr], nil)
409- if ((da == da))
408+ let da = cO(toString(cM.caller), toBase58String(cM.transactionId), AttachedPayment(value(cM.payments[0]).assetId, value(cM.payments[0]).amount), cM.payments[1], cV, true, false, 0, "")
409+ let cu = da._2
410+ let db = da._7
411+ let bO = da._9
412+ let cv = da._10
413+ let cw = da._11
414+ let bw = da._12
415+ let bx = da._13
416+ let dc = invoke(ar, "emit", [cu], nil)
417+ if ((dc == dc))
410418 then {
411- let db = if ((cs > 0))
412- then invoke(cX, "put", nil, [AttachedPayment(bw, cs)])
419+ let dd = if ((cv > 0))
420+ then invoke(cZ, "put", nil, [AttachedPayment(bw, cv)])
413421 else nil
414- if ((db == db))
422+ if ((dd == dd))
415423 then {
416- let dc = if ((ct > 0))
417- then invoke(cX, "put", nil, [AttachedPayment(bx, ct)])
424+ let de = if ((cw > 0))
425+ then invoke(cZ, "put", nil, [AttachedPayment(bx, cw)])
418426 else nil
419- if ((dc == dc))
427+ if ((de == de))
420428 then {
421- let dd = if (cU)
429+ let df = if (cW)
422430 then {
423- let de = invoke(cW, "stake", nil, [AttachedPayment(cZ, cr)])
424- if ((de == de))
431+ let dg = invoke(cY, "stake", nil, [AttachedPayment(db, cu)])
432+ if ((dg == dg))
425433 then nil
426434 else throw("Strict value is not equal to itself.")
427435 }
428- else [ScriptTransfer(cJ.caller, cr, cZ)]
429- (bO ++ dd)
436+ else [ScriptTransfer(cM.caller, cu, db)]
437+ (bO ++ df)
430438 }
431439 else throw("Strict value is not equal to itself.")
432440 }
433441 else throw("Strict value is not equal to itself.")
434442 }
435443 else throw("Strict value is not equal to itself.")
436444 }
437445 }
438446
439447
440448
441-@Callable(cJ)
442-func putOneTkn (df,dg,dh,aX,cU) = {
449+@Callable(cM)
450+func putOneTkn (dh,di,dj,aX,cW) = {
443451 let bi = az()
444- let cW = valueOrErrorMessage(addressFromString(bi[w]), "Wrong staking addr")
445- let cX = valueOrErrorMessage(addressFromString(bi[x]), "Wrong slippage addr")
446- let di = valueOrErrorMessage(addressFromString(bi[y]), "Wrong slippage addr")
447- let dj = au()
448- let bw = dj[q]
449- let bx = dj[r]
450- let by = parseIntValue(dj[s])
451- let bz = parseIntValue(dj[t])
452- if ((size(cJ.payments) != 1))
452+ let cY = valueOrErrorMessage(addressFromString(bi[w]), "Wrong staking addr")
453+ let cZ = valueOrErrorMessage(addressFromString(bi[x]), "Wrong slippage addr")
454+ let dk = valueOrErrorMessage(addressFromString(bi[y]), "Wrong slippage addr")
455+ let dl = au()
456+ let bw = dl[q]
457+ let bx = dl[r]
458+ let by = parseIntValue(dl[s])
459+ let bz = parseIntValue(dl[t])
460+ if ((size(cM.payments) != 1))
453461 then throw("1 payment expected")
454462 else {
455- let cK = value(cJ.payments[0])
456- let bt = toBase58String(value(cK.assetId))
457- let cL = cK.amount
458- let dk = z(df, by)
459- let dl = z(dg, bz)
463+ let cN = value(cM.payments[0])
464+ let bt = toBase58String(value(cN.assetId))
465+ let bX = cN.amount
466+ let dm = z(dh, by)
467+ let dn = z(di, bz)
460468 let bC = aP(bw)
461469 let bD = z(bC, by)
462470 let bE = aP(bx)
463471 let bF = z(bE, bz)
464- let dm = if ((bt == bw))
465- then (bC - cL)
472+ let do = if ((bt == bw))
473+ then (bC - bX)
466474 else bC
467- let dn = if ((bt == bx))
468- then (bE - cL)
475+ let dp = if ((bt == bx))
476+ then (bE - bX)
469477 else bE
470- let do = invoke(di, "calcD", [toString(dm), toString(dn), "50", "100000000", "1"], nil)
471- let dp = parseBigIntValue(ak(do))
472- let dq = if ((bt == bw))
478+ let dq = invoke(dk, "calcD", [toString(do), toString(dp), "50", "100000000", "1"], nil)
479+ let dr = parseBigIntValue(ak(dq))
480+ let ds = if ((bt == bw))
473481 then {
474- let dr = z(cL, by)
475- let ds = dl
476- let dt = (dr - dk)
477- let du = invoke(di, "calcD", [toString((toBigInt(dm) + toBigInt(C(dt, by)))), toString((toBigInt(dn) - toBigInt(C(ds, bz)))), "50", "100000000", "1"], nil)
478- parseBigIntValue(ak(du))
482+ let dt = z(bX, by)
483+ let du = dn
484+ let dv = (dt - dm)
485+ let dw = invoke(dk, "calcD", [toString((toBigInt(do) + toBigInt(C(dv, by)))), toString((toBigInt(dp) - toBigInt(C(du, bz)))), "50", "100000000", "1"], nil)
486+ parseBigIntValue(ak(dw))
479487 }
480488 else {
481- let dv = z(cL, bz)
482- let ds = (dv - dl)
483- let dt = dk
484- let du = invoke(di, "calcD", [toString((toBigInt(dm) - toBigInt(C(dt, by)))), toString((toBigInt(dn) + toBigInt(C(ds, bz)))), "50", "100000000", "1"], nil)
485- parseBigIntValue(ak(du))
489+ let dx = z(bX, bz)
490+ let du = (dx - dn)
491+ let dv = dm
492+ let dw = invoke(dk, "calcD", [toString((toBigInt(do) - toBigInt(C(dv, by)))), toString((toBigInt(dp) + toBigInt(C(du, bz)))), "50", "100000000", "1"], nil)
493+ parseBigIntValue(ak(dw))
486494 }
487- if (!(aU(dq, dp, toBigInt(1000))._1))
495+ if (!(aU(ds, dr, toBigInt(1000))._1))
488496 then throw("D mismatch.")
489497 else {
490- let cY = cM(toString(cJ.caller), toBase58String(cJ.transactionId), AttachedPayment(fromBase58String(bw), df), AttachedPayment(fromBase58String(bx), dg), 50000000000, true)
491- let dw = cY._2
492- let cZ = cY._7
493- let bO = cY._9
494- let cs = cY._10
495- let ct = cY._11
496- let dx = aU(toBigInt(dw), toBigInt(dh), toBigInt(aX))
497- if (!(dx._1))
498- then throw(((("Too big slippage: " + toString(dx._3)) + " vs ") + toString(aX)))
498+ let da = cO(toString(cM.caller), toBase58String(cM.transactionId), AttachedPayment(fromBase58String(bw), dh), AttachedPayment(fromBase58String(bx), di), 50000000000, true, true, bX, bt)
499+ let dy = da._2
500+ let db = da._7
501+ let bO = da._9
502+ let cv = da._10
503+ let cw = da._11
504+ let dz = aU(toBigInt(dy), toBigInt(dj), toBigInt(aX))
505+ if (!(dz._1))
506+ then throw(((("Too big slippage: " + toString(dz._3)) + " vs ") + toString(aX)))
499507 else {
500- let cr = toInt(dx._2)
501- let da = invoke(ar, "emit", [cr], nil)
502- if ((da == da))
508+ let cu = toInt(dz._2)
509+ let dc = invoke(ar, "emit", [cu], nil)
510+ if ((dc == dc))
503511 then {
504- let db = if ((cs > 0))
505- then invoke(cX, "put", nil, [AttachedPayment(fromBase58String(bw), cs)])
512+ let dd = if ((cv > 0))
513+ then invoke(cZ, "put", nil, [AttachedPayment(fromBase58String(bw), cv)])
506514 else nil
507- if ((db == db))
515+ if ((dd == dd))
508516 then {
509- let dc = if ((ct > 0))
510- then invoke(cX, "put", nil, [AttachedPayment(fromBase58String(bx), ct)])
517+ let de = if ((cw > 0))
518+ then invoke(cZ, "put", nil, [AttachedPayment(fromBase58String(bx), cw)])
511519 else nil
512- if ((dc == dc))
520+ if ((de == de))
513521 then {
514- let dd = if (cU)
522+ let df = if (cW)
515523 then {
516- let de = invoke(cW, "stake", nil, [AttachedPayment(cZ, cr)])
517- if ((de == de))
524+ let dg = invoke(cY, "stake", nil, [AttachedPayment(db, cu)])
525+ if ((dg == dg))
518526 then nil
519527 else throw("Strict value is not equal to itself.")
520528 }
521- else [ScriptTransfer(cJ.caller, cr, cZ)]
522- (bO ++ dd)
529+ else [ScriptTransfer(cM.caller, cu, db)]
530+ (bO ++ df)
523531 }
524532 else throw("Strict value is not equal to itself.")
525533 }
526534 else throw("Strict value is not equal to itself.")
527535 }
528536 else throw("Strict value is not equal to itself.")
529537 }
530538 }
531539 }
532540 }
533541
534542
535543
536-@Callable(cJ)
537-func putForFree (dy) = if ((0 > dy))
544+@Callable(cM)
545+func putForFree (dA) = if ((0 > dA))
538546 then throw("Invalid slippage")
539- else if ((size(cJ.payments) != 2))
547+ else if ((size(cM.payments) != 2))
540548 then throw("2 payments expected")
541549 else {
542- let cY = cM(toString(cJ.caller), toBase58String(cJ.transactionId), AttachedPayment(value(cJ.payments[0]).assetId, value(cJ.payments[0]).amount), cJ.payments[1], dy, false)
543- cY._9
550+ let da = cO(toString(cM.caller), toBase58String(cM.transactionId), AttachedPayment(value(cM.payments[0]).assetId, value(cM.payments[0]).amount), cM.payments[1], dA, false, false, 0, "")
551+ da._9
544552 }
545553
546554
547555
548-@Callable(cJ)
556+@Callable(cM)
549557 func get () = {
550- let cf = cI(cJ)
551- let dz = cf._1
552- let bN = cf._2
553- let cL = cf._3
554- let bt = cf._4
555- let bO = cf._5
556- let dA = invoke(ar, "burn", [cL], [AttachedPayment(bt, cL)])
557- if ((dA == dA))
558+ let ci = cL(cM)
559+ let dB = ci._1
560+ let bN = ci._2
561+ let bX = ci._3
562+ let bt = ci._4
563+ let bO = ci._5
564+ let dC = invoke(ar, "burn", [bX], [AttachedPayment(bt, bX)])
565+ if ((dC == dC))
558566 then bO
559567 else throw("Strict value is not equal to itself.")
560568 }
561569
562570
563571
564-@Callable(cJ)
565-func getOneTkn (dB,dC,dD,dE,aX) = if ((size(cJ.payments) != 1))
572+@Callable(cM)
573+func getOneTkn (dD,dE,dF,dG,aX) = if ((size(cM.payments) != 1))
566574 then throw("1 payment expected")
567575 else {
568576 let bi = au()
569577 let bv = bi[p]
570578 let bw = bi[q]
571579 let bx = bi[r]
572580 let by = parseIntValue(bi[s])
573581 let bz = parseIntValue(bi[t])
574582 let bA = bi[o]
575- let dF = az()
576- let di = valueOrErrorMessage(addressFromString(dF[y]), "Wrong slippage address")
577- if (if ((dE != bw))
578- then (dE != bx)
583+ let dH = az()
584+ let dk = valueOrErrorMessage(addressFromString(dH[y]), "Wrong slippage address")
585+ if (if ((dG != bw))
586+ then (dG != bx)
579587 else false)
580588 then throw("Invalid out asset")
581589 else {
582- let dG = if ((dE == bw))
590+ let dI = if ((dG == bw))
583591 then bw
584592 else bx
585- let cK = value(cJ.payments[0])
586- let R = cJ.caller
587- let bs = toBase58String(cJ.transactionId)
588- let bt = value(cK.assetId)
589- let cL = cK.amount
593+ let cN = value(cM.payments[0])
594+ let R = cM.caller
595+ let bs = toBase58String(cM.transactionId)
596+ let bt = value(cN.assetId)
597+ let bX = cN.amount
590598 if ((bv != toBase58String(bt)))
591599 then throw("Invalid LP")
592600 else {
593- let cQ = br(toBase58String(cJ.transactionId), toBase58String(bt), cL, cJ.caller)
594- let dH = cQ._1
595- let dI = cQ._2
601+ let cS = br(toBase58String(cM.transactionId), toBase58String(bt), bX, cM.caller)
602+ let dJ = cS._1
603+ let dK = cS._2
596604 let bC = aP(bw)
597605 let bD = z(bC, by)
598606 let bE = aP(bx)
599607 let bF = z(bE, bz)
600- let dp = invoke(di, "calcD", [toString(bC), toString(bE), "50", "100000000", "1"], nil)
601- let dJ = if ((dE == bw))
608+ let dr = invoke(dk, "calcD", [toString(bC), toString(bE), "50", "100000000", "1"], nil)
609+ let dL = if ((dG == bw))
602610 then {
603- let dK = (dD - dH)
604- let dq = invoke(di, "calcD", [toString((bC - dK)), toString((bE + dC)), "50", "100000000", "1"], nil)
605- if (!(aU(parseBigIntValue(ak(dq)), parseBigIntValue(ak(dp)), toBigInt(1000))._1))
611+ let dM = (dF - dJ)
612+ let ds = invoke(dk, "calcD", [toString((bC - dM)), toString((bE + dE)), "50", "100000000", "1"], nil)
613+ if (!(aU(parseBigIntValue(ak(ds)), parseBigIntValue(ak(dr)), toBigInt(1000))._1))
606614 then throw("D mismatch")
607615 else {
608- let dL = (dH + dB)
609- let dx = aU(toBigInt(dL), toBigInt(dD), toBigInt(aX))
610- if (!(dx._1))
611- then throw(((("Too big slippage: " + toString(dx._3)) + " vs ") + toString(aX)))
612- else $Tuple2(toInt(dx._2), 0)
616+ let dN = (dJ + dD)
617+ let dz = aU(toBigInt(dN), toBigInt(dF), toBigInt(aX))
618+ if (!(dz._1))
619+ then throw(((("Too big slippage: " + toString(dz._3)) + " vs ") + toString(aX)))
620+ else $Tuple2(toInt(dz._2), 0)
613621 }
614622 }
615623 else {
616- let dM = (dD - dI)
617- let dq = invoke(di, "calcD", [toString((bC + dB)), toString((bE - dM)), "50", "100000000", "1"], nil)
618- if (!(aU(parseBigIntValue(ak(dq)), parseBigIntValue(ak(dp)), toBigInt(5000))._1))
624+ let dO = (dF - dK)
625+ let ds = invoke(dk, "calcD", [toString((bC + dD)), toString((bE - dO)), "50", "100000000", "1"], nil)
626+ if (!(aU(parseBigIntValue(ak(ds)), parseBigIntValue(ak(dr)), toBigInt(5000))._1))
619627 then throw("D mismatch.")
620628 else {
621- let dL = (dI + dC)
622- let dx = aU(toBigInt(dL), toBigInt(dD), toBigInt(aX))
623- if (!(dx._1))
624- then throw(((("Too big slippage: " + toString(dx._3)) + " vs ") + toString(aX)))
625- else $Tuple2(0, toInt(dx._2))
629+ let dN = (dK + dE)
630+ let dz = aU(toBigInt(dN), toBigInt(dF), toBigInt(aX))
631+ if (!(dz._1))
632+ then throw(((("Too big slippage: " + toString(dz._3)) + " vs ") + toString(aX)))
633+ else $Tuple2(0, toInt(dz._2))
626634 }
627635 }
628636 let bG = aR(bF, bD)
629637 let bH = C(bG, b)
630- let bO = [ScriptTransfer(R, if ((dG == bw))
631- then dJ._1
632- else dJ._2, if ((dG == "WAVES"))
638+ let bO = [ScriptTransfer(R, if ((dI == bw))
639+ then dL._1
640+ else dL._2, if ((dI == "WAVES"))
633641 then unit
634- else fromBase58String(dG)), StringEntry(T(toString(R), bs), aL(dJ._1, dJ._2, cL, bH, height, lastBlock.timestamp)), IntegerEntry(M(), bH), IntegerEntry(N(height, lastBlock.timestamp), bH)]
635- let dN = invoke(ar, "burn", [cL], [AttachedPayment(bt, cL)])
636- if ((dN == dN))
642+ else fromBase58String(dI)), StringEntry(T(toString(R), bs), aL(dL._1, dL._2, bX, bH, height, lastBlock.timestamp)), IntegerEntry(M(), bH), IntegerEntry(N(height, lastBlock.timestamp), bH)]
643+ let dP = invoke(ar, "burn", [bX], [AttachedPayment(bt, bX)])
644+ if ((dP == dP))
637645 then bO
638646 else throw("Strict value is not equal to itself.")
639647 }
640648 }
641649 }
642650
643651
644652
645-@Callable(cJ)
646-func getNoLess (dO,dP) = {
647- let cf = cI(cJ)
648- let bM = cf._1
649- let bN = cf._2
650- let cL = cf._3
651- let bt = cf._4
652- let bO = cf._5
653- if ((dO > bM))
654- then throw(((("Failed: " + toString(bM)) + " < ") + toString(dO)))
655- else if ((dP > bN))
656- then throw(((("Failed: " + toString(bN)) + " < ") + toString(dP)))
653+@Callable(cM)
654+func getNoLess (dQ,dR) = {
655+ let ci = cL(cM)
656+ let bM = ci._1
657+ let bN = ci._2
658+ let bX = ci._3
659+ let bt = ci._4
660+ let bO = ci._5
661+ if ((dQ > bM))
662+ then throw(((("Failed: " + toString(bM)) + " < ") + toString(dQ)))
663+ else if ((dR > bN))
664+ then throw(((("Failed: " + toString(bN)) + " < ") + toString(dR)))
657665 else {
658- let dA = invoke(ar, "burn", [cL], [AttachedPayment(bt, cL)])
659- if ((dA == dA))
666+ let dC = invoke(ar, "burn", [bX], [AttachedPayment(bt, bX)])
667+ if ((dC == dC))
660668 then bO
661669 else throw("Strict value is not equal to itself.")
662670 }
663671 }
664672
665673
666674
667-@Callable(cJ)
668-func unstakeAndGet (dQ) = {
669- let dR = if ((size(cJ.payments) != 0))
675+@Callable(cM)
676+func unstakeAndGet (dS) = {
677+ let dT = if ((size(cM.payments) != 0))
670678 then throw("No payments expected")
671679 else true
672- if ((dR == dR))
680+ if ((dT == dT))
673681 then {
674682 let bi = au()
675- let dS = az()
676- let cZ = fromBase58String(bi[p])
677- let dT = valueOrErrorMessage(addressFromString(dS[w]), "Wrong staking address.")
678- let dU = invoke(dT, "unstake", [toBase58String(cZ), dQ], nil)
679- if ((dU == dU))
683+ let dU = az()
684+ let db = fromBase58String(bi[p])
685+ let dV = valueOrErrorMessage(addressFromString(dU[w]), "Wrong staking address.")
686+ let dW = invoke(dV, "unstake", [toBase58String(db), dS], nil)
687+ if ((dW == dW))
680688 then {
681- let cQ = br(toBase58String(cJ.transactionId), toBase58String(cZ), dQ, cJ.caller)
682- let bA = parseIntValue(cQ._9)
683- let bO = cQ._10
684- let dV = if (if (as())
689+ let cS = br(toBase58String(cM.transactionId), toBase58String(db), dS, cM.caller)
690+ let bA = parseIntValue(cS._9)
691+ let bO = cS._10
692+ let dX = if (if (as())
685693 then true
686694 else (bA == m))
687695 then throw(("Blocked by admin: " + toString(bA)))
688696 else true
689- if ((dV == dV))
697+ if ((dX == dX))
690698 then {
691- let dA = invoke(ar, "burn", [dQ], [AttachedPayment(cZ, dQ)])
692- if ((dA == dA))
699+ let dC = invoke(ar, "burn", [dS], [AttachedPayment(db, dS)])
700+ if ((dC == dC))
693701 then bO
694702 else throw("Strict value is not equal to itself.")
695703 }
696704 else throw("Strict value is not equal to itself.")
697705 }
698706 else throw("Strict value is not equal to itself.")
699707 }
700708 else throw("Strict value is not equal to itself.")
701709 }
702710
703711
704712
705-@Callable(cJ)
706-func activate (dW,dX) = if ((toString(cJ.caller) != toString(ar)))
713+@Callable(cM)
714+func activate (dY,dZ) = if ((toString(cM.caller) != toString(ar)))
707715 then throw("permissions denied")
708- else $Tuple2([StringEntry(U(), dW), StringEntry(V(), dX)], "success")
716+ else $Tuple2([StringEntry(U(), dY), StringEntry(V(), dZ)], "success")
709717
710718
711719
712-@Callable(cJ)
720+@Callable(cM)
713721 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, au())
714722
715723
716724
717-@Callable(cJ)
725+@Callable(cM)
718726 func getAccBalanceWrapperREADONLY (aQ) = $Tuple2(nil, aP(aQ))
719727
720728
721729
722-@Callable(cJ)
730+@Callable(cM)
723731 func calcPricesWrapperREADONLY (bc,bd,bh) = {
724732 let bq = bg(bc, bd, bh)
725733 $Tuple2(nil, [toString(bq[0]), toString(bq[1]), toString(bq[2])])
726734 }
727735
728736
729737
730-@Callable(cJ)
738+@Callable(cM)
731739 func fromX18WrapperREADONLY (D,E) = $Tuple2(nil, C(parseBigIntValue(D), E))
732740
733741
734742
735-@Callable(cJ)
743+@Callable(cM)
736744 func toX18WrapperREADONLY (A,B) = $Tuple2(nil, toString(z(A, B)))
737745
738746
739747
740-@Callable(cJ)
748+@Callable(cM)
741749 func calcPriceBigIntWrapperREADONLY (aS,aT) = $Tuple2(nil, toString(aR(parseBigIntValue(aS), parseBigIntValue(aT))))
742750
743751
744-
745-@Callable(cJ)
746-func estimatePutOperationWrapperREADONLY (bs,aX,bQ,bR,bS,bT,R,bU,bV) = $Tuple2(nil, bP(bs, aX, bQ, bR, bS, bT, R, bU, bV))
747-
748-
749-@Verifier(dY)
750-func dZ () = {
751- let al = dY
752+@Verifier(ea)
753+func eb () = {
754+ let al = ea
752755 if ($isInstanceOf(al, "Order"))
753756 then {
754- let cw = al
755- let ea = at()
756- let ah = cv(cw)
757- let ai = sigVerify(cw.bodyBytes, cw.proofs[0], cw.senderPublicKey)
758- let aj = sigVerify(cw.bodyBytes, cw.proofs[1], ea)
757+ let cz = al
758+ let ec = at()
759+ let ah = cy(cz)
760+ let ai = sigVerify(cz.bodyBytes, cz.proofs[0], cz.senderPublicKey)
761+ let aj = sigVerify(cz.bodyBytes, cz.proofs[1], ec)
759762 if (if (if (ah)
760763 then ai
761764 else false)
762765 then aj
763766 else false)
764767 then true
765768 else ag(ah, ai, aj)
766769 }
767770 else {
768- let eb = valueOrElse(getString(this, L()), i)
769- if ((eb == i))
770- then sigVerify(dY.bodyBytes, dY.proofs[0], dY.senderPublicKey)
771- else sigVerify(dY.bodyBytes, dY.proofs[0], fromBase58String(eb))
771+ let ed = valueOrElse(getString(this, L()), i)
772+ if ((ed == i))
773+ then sigVerify(ea.bodyBytes, ea.proofs[0], ea.senderPublicKey)
774+ else sigVerify(ea.bodyBytes, ea.proofs[0], fromBase58String(ed))
772775 }
773776 }
774777

github/deemru/w8io/169f3d6 
280.27 ms