tx · 98aDwqZ1HchCAccKDav7rgPxPUH8txnBAVZ3we7nbe9f

3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA:  -0.02900000 Waves

2022.08.29 17:15 [2205845] smart account 3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA > SELF 0.00000000 Waves

{ "type": 13, "id": "98aDwqZ1HchCAccKDav7rgPxPUH8txnBAVZ3we7nbe9f", "fee": 2900000, "feeAssetId": null, "timestamp": 1661782502740, "version": 2, "chainId": 84, "sender": "3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA", "senderPublicKey": "35yd3qw1gxKDxKwGAykHN9fANbXNWwseaUwbWDj24o3x", "proofs": [ "5rce7JBieKJdBRRyNKEgG2LNcW7LZE8zTEGjiq7xLRfz4ja4JtvDkdnA3kvm786xGeTHByeybibp9PBtSVv7VG3X" ], "script": "base64:BgJ/CAISAwoBCBIDCgEIEgASBAoCAQQSBwoFAQEBAQQSAwoBARIAEgcKBQEBAQgBEgQKAgEBEgMKAQESBAoCCAgSBAoCCAgSBAoCCAESABIDCgEIEgUKAwEBARIECgIIARIECgIBARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCFEABnNjYWxlOACAwtcvAAxzY2FsZThCaWdJbnQJALYCAQCAwtcvAAdzY2FsZTE4CQC2AgEAgICQu7rWrfANAAh0aG91c2FuZADoBwAKemVyb0JpZ0ludAkAtgIBAAAACW9uZUJpZ0ludAkAtgIBAAEACnNsaXBwYWdlNEQJALYCAQkAZQIFBnNjYWxlOAkAaQIJAGgCBQZzY2FsZTgAAQUGc2NhbGU4AAVBbXVsdAIDMTAwAAVEY29udgIBMQADU0VQAgJfXwAFRU1QVFkCAAAKUG9vbEFjdGl2ZQABAApQb29sUHV0RGlzAAIADlBvb2xNYXRjaGVyRGlzAAMADFBvb2xTaHV0ZG93bgAEAA5pZHhQb29sQWRkcmVzcwABAAlpZHhQb29sU3QAAgAJaWR4TFBBc0lkAAMACWlkeEFtQXNJZAAEAAlpZHhQckFzSWQABQALaWR4QW10QXNEY20ABgANaWR4UHJpY2VBc0RjbQAHAAtpZHhJQW10QXNJZAAIAA1pZHhJUHJpY2VBc0lkAAkAD2lkeEZhY3RTdGFrQ250cgABABBpZHhGYWN0U2xpcHBDbnRyAAcAEWlkeEZhY3RHd3hSZXdDbnRyAAoAEmZlZVBlcm1pbGxlRGVmYXVsdAAAAQJ0MQIHb3JpZ1ZhbA1vcmlnU2NhbGVNdWx0CQC8AgMJALYCAQUHb3JpZ1ZhbAUHc2NhbGUxOAkAtgIBBQ1vcmlnU2NhbGVNdWx0AQJmMQIDdmFsD3Jlc3VsdFNjYWxlTXVsdAkAoAMBCQC8AgMFA3ZhbAkAtgIBBQ9yZXN1bHRTY2FsZU11bHQFB3NjYWxlMTgBAnRzAwNhbXQIcmVzU2NhbGUIY3VyU2NhbGUJAGsDBQNhbXQFCHJlc1NjYWxlBQhjdXJTY2FsZQEDYWJzAQN2YWwDCQC/AgIFCnplcm9CaWdJbnQFA3ZhbAkAvgIBBQN2YWwFA3ZhbAECZmMAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQNtcGsAAhQlc19fbWFuYWdlclB1YmxpY0tleQEEcG1wawACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQECcGwAAhElcyVzX19wcmljZV9fbGFzdAECcGgCAWgBdAkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAWgJAMwIAgkApAMBBQF0BQNuaWwFA1NFUAEDcGF1AgJ1YQR0eElkCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUCdWECAl9fBQR0eElkAQNnYXUCAnVhBHR4SWQJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQJ1YQICX18FBHR4SWQBAmFhAAIPJXNfX2Ftb3VudEFzc2V0AQJwYQACDiVzX19wcmljZUFzc2V0AQNhbXAAAgclc19fYW1wAQNhZGEAAg0lc19fYWRkb25BZGRyAA5rZXlGZWVQZXJtaWxsZQIPJXNfX2ZlZVBlcm1pbGxlAAtmZWVQZXJtaWxsZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ5rZXlGZWVQZXJtaWxsZQUSZmVlUGVybWlsbGVEZWZhdWx0AQRmY2ZnAAIRJXNfX2ZhY3RvcnlDb25maWcBBG10cGsAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAnBjAgZpQW10QXMFaVByQXMJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FBmlBbXRBcwICX18FBWlQckFzAghfX2NvbmZpZwEDbWJhAQViQVN0cgkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQViQVN0cgEDYXBzAAIMJXNfX3NodXRkb3duARxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAAIdJXNfX2FsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gBA3RvZQMDb3JWBnNlbmRyVgZtYXRjaFYJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIRRmFpbGVkOiBvcmRWYWxpZD0JAKUDAQUDb3JWAgsgc25kclZhbGlkPQkApQMBBQZzZW5kclYCDCBtdGNoclZhbGlkPQkApQMBBQZtYXRjaFYBA3N0cgEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAZ2YWxTdHIFByRtYXRjaDAFBnZhbFN0cgkAAgECE2ZhaWwgY2FzdCB0byBTdHJpbmcBBHN0cmYCBGFkZHIDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEYWRkcgUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFBGFkZHIJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAEEaW50ZgIEYWRkcgNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQRhZGRyBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUEYWRkcgkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAANmY2EJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQRzdHJmAgUEdGhpcwkBAmZjAAABQQkBBHN0cmYCBQR0aGlzCQEDYW1wAAEDaWdzAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQNmY2EJAQNhcHMABwECbXAACQDZBAEJAQRzdHJmAgUDZmNhCQEEbXRwawAADm1hdGNoZXJBZGRyZXNzCQCnCAEJAQJtcAABA2dwYwAEBWFtdEFzCQEEc3RyZgIFBHRoaXMJAQJhYQAEB3ByaWNlQXMJAQRzdHJmAgUEdGhpcwkBAnBhAAQIaVByaWNlQXMJAQRpbnRmAgUDZmNhCQEDbWJhAQUHcHJpY2VBcwQGaUFtdEFzCQEEaW50ZgIFA2ZjYQkBA21iYQEFBWFtdEFzCQC1CQIJAQRzdHJmAgUDZmNhCQECcGMCCQCkAwEFBmlBbXRBcwkApAMBBQhpUHJpY2VBcwUDU0VQAQNnZmMACQC1CQIJAQRzdHJmAgUDZmNhCQEEZmNmZwAFA1NFUAERZGF0YVB1dEFjdGlvbkluZm8KDWluQW10QXNzZXRBbXQPaW5QcmljZUFzc2V0QW10CG91dExwQW10BXByaWNlCnNsaXBCeVVzZXIMc2xpcHBhZ2VSZWFsCHR4SGVpZ2h0C3R4VGltZXN0YW1wDHNsaXBhZ2VBbUFtdAxzbGlwYWdlUHJBbXQJALkJAgkAzAgCAhQlZCVkJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFDWluQW10QXNzZXRBbXQJAMwIAgkApAMBBQ9pblByaWNlQXNzZXRBbXQJAMwIAgkApAMBBQhvdXRMcEFtdAkAzAgCCQCkAwEFBXByaWNlCQDMCAIJAKQDAQUKc2xpcEJ5VXNlcgkAzAgCCQCkAwEFDHNsaXBwYWdlUmVhbAkAzAgCCQCkAwEFCHR4SGVpZ2h0CQDMCAIJAKQDAQULdHhUaW1lc3RhbXAJAMwIAgkApAMBBQxzbGlwYWdlQW1BbXQJAMwIAgkApAMBBQxzbGlwYWdlUHJBbXQFA25pbAUDU0VQARFkYXRhR2V0QWN0aW9uSW5mbwYOb3V0QW10QXNzZXRBbXQQb3V0UHJpY2VBc3NldEFtdAdpbkxwQW10BXByaWNlCHR4SGVpZ2h0C3R4VGltZXN0YW1wCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUOb3V0QW10QXNzZXRBbXQJAMwIAgkApAMBBRBvdXRQcmljZUFzc2V0QW10CQDMCAIJAKQDAQUHaW5McEFtdAkAzAgCCQCkAwEFBXByaWNlCQDMCAIJAKQDAQUIdHhIZWlnaHQJAMwIAgkApAMBBQt0eFRpbWVzdGFtcAUDbmlsBQNTRVABDWdldEFjY0JhbGFuY2UBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUHYXNzZXRJZAEEY3BiaQIIcHJBbXRYMTgIYW1BbXRYMTgJALwCAwUIcHJBbXRYMTgFB3NjYWxlMTgFCGFtQW10WDE4AQN2YWQDAkExAkEyCHNsaXBwYWdlBARkaWZmCQC8AgMJALgCAgUCQTEFAkEyBQxzY2FsZThCaWdJbnQFAkEyBARwYXNzCQC/AgIJALgCAgUIc2xpcHBhZ2UJAQNhYnMBBQRkaWZmBQp6ZXJvQmlnSW50AwkBASEBBQRwYXNzCQACAQkArAICAgpCaWcgc2xwZzogCQCmAwEFBGRpZmYJAJQKAgUEcGFzcwkAmQMBCQDMCAIFAkExCQDMCAIFAkEyBQNuaWwBAnZkAwJEMQJEMARzbHBnBARkaWZmCQC8AgMFAkQwBQxzY2FsZThCaWdJbnQFAkQxBARmYWlsCQC/AgIFBHNscGcFBGRpZmYDAwUEZmFpbAYJAL8CAgUCRDAFAkQxCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApgMBBQJEMAIBIAkApgMBBQJEMQIBIAkApgMBBQRkaWZmAgEgCQCmAwEFBHNscGcFBGZhaWwBA3BjcAQKYW1Bc3NldERjbQpwckFzc2V0RGNtBWFtQW10BXByQW10BAthbXRBc0FtdFgxOAkBAnQxAgUFYW1BbXQFCmFtQXNzZXREY20ECnByQXNBbXRYMTgJAQJ0MQIFBXByQW10BQpwckFzc2V0RGNtCQEEY3BiaQIFCnByQXNBbXRYMTgFC2FtdEFzQW10WDE4AQpjYWxjUHJpY2VzAwVhbUFtdAVwckFtdAVscEFtdAQDY2ZnCQEDZ3BjAAQIYW10QXNEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFC2lkeEFtdEFzRGNtBAdwckFzRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQ1pZHhQcmljZUFzRGNtBAhwcmljZVgxOAkBA3BjcAQFCGFtdEFzRGNtBQdwckFzRGNtBQVhbUFtdAUFcHJBbXQECGFtQW10WDE4CQECdDECBQVhbUFtdAUIYW10QXNEY20ECHByQW10WDE4CQECdDECBQVwckFtdAUHcHJBc0RjbQQIbHBBbXRYMTgJAQJ0MQIFBWxwQW10BQZzY2FsZTgEDWxwUHJJbkFtQXNYMTgJAQRjcGJpAgUIYW1BbXRYMTgFCGxwQW10WDE4BA1scFBySW5QckFzWDE4CQEEY3BiaQIFCHByQW10WDE4BQhscEFtdFgxOAkAzAgCBQhwcmljZVgxOAkAzAgCBQ1scFBySW5BbUFzWDE4CQDMCAIFDWxwUHJJblByQXNYMTgFA25pbAEPY2FsY3VsYXRlUHJpY2VzAwVhbUFtdAVwckFtdAVscEFtdAQBcAkBCmNhbGNQcmljZXMDBQVhbUFtdAUFcHJBbXQFBWxwQW10CQDMCAIJAQJmMQIJAJEDAgUBcAAABQZzY2FsZTgJAMwIAgkBAmYxAgkAkQMCBQFwAAEFBnNjYWxlOAkAzAgCCQECZjECCQCRAwIFAXAAAgUGc2NhbGU4BQNuaWwBA2VnbwQGdHhJZDU4CnBtdEFzc2V0SWQIcG10THBBbXQLdXNlckFkZHJlc3MEA2NmZwkBA2dwYwAEBGxwSWQJAJEDAgUDY2ZnBQlpZHhMUEFzSWQEBGFtSWQJAJEDAgUDY2ZnBQlpZHhBbUFzSWQEBHBySWQJAJEDAgUDY2ZnBQlpZHhQckFzSWQEBWFtRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQtpZHhBbXRBc0RjbQQFcHJEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20EA3N0cwkAkQMCBQNjZmcFCWlkeFBvb2xTdAQHbHBFbWlzcwgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFBGxwSWQCC1dyb25nIExQIGlkCHF1YW50aXR5AwkBAiE9AgUEbHBJZAUKcG10QXNzZXRJZAkAAgECD1dyb25nIHBtdCBhc3NldAQJYW1CYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBGFtSWQEDGFtQmFsYW5jZVgxOAkBAnQxAgUJYW1CYWxhbmNlBQVhbURjbQQJcHJCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQEDHByQmFsYW5jZVgxOAkBAnQxAgUJcHJCYWxhbmNlBQVwckRjbQQLY3VyUHJpY2VYMTgJAQRjcGJpAgUMcHJCYWxhbmNlWDE4BQxhbUJhbGFuY2VYMTgECGN1clByaWNlCQECZjECBQtjdXJQcmljZVgxOAUGc2NhbGU4BAtwbXRMcEFtdFgxOAkBAnQxAgUIcG10THBBbXQFBnNjYWxlOAQKbHBFbWlzc1gxOAkBAnQxAgUHbHBFbWlzcwUGc2NhbGU4BAtvdXRBbUFtdFgxOAkAvAIDBQxhbUJhbGFuY2VYMTgFC3BtdExwQW10WDE4BQpscEVtaXNzWDE4BAtvdXRQckFtdFgxOAkAvAIDBQxwckJhbGFuY2VYMTgFC3BtdExwQW10WDE4BQpscEVtaXNzWDE4BAhvdXRBbUFtdAkBAmYxAgULb3V0QW1BbXRYMTgFBWFtRGNtBAhvdXRQckFtdAkBAmYxAgULb3V0UHJBbXRYMTgFBXByRGNtBAVzdGF0ZQMJAAACBQZ0eElkNTgCAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQhvdXRBbUFtdAMJAAACBQRhbUlkAgVXQVZFUwUEdW5pdAkA2QQBBQRhbUlkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQhvdXRQckFtdAMJAAACBQRwcklkAgVXQVZFUwUEdW5pdAkA2QQBBQRwcklkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNnYXUCCQClCAEFC3VzZXJBZGRyZXNzBQZ0eElkNTgJARFkYXRhR2V0QWN0aW9uSW5mbwYFCG91dEFtQW10BQhvdXRQckFtdAUIcG10THBBbXQFCGN1clByaWNlBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGwABQhjdXJQcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBoAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUIY3VyUHJpY2UFA25pbAkAnAoKBQhvdXRBbUFtdAUIb3V0UHJBbXQFBGFtSWQFBHBySWQFCWFtQmFsYW5jZQUJcHJCYWxhbmNlBQdscEVtaXNzBQtjdXJQcmljZVgxOAUDc3RzBQVzdGF0ZQEDZXBvDAZ0eElkNTgIc2xpcHBhZ2UHaW5BbUFtdAZpbkFtSWQHaW5QckFtdAZpblBySWQLdXNlckFkZHJlc3MGaXNFdmFsBmVtaXRMcAppc09uZUFzc2V0BnBtdEFtdAVwbXRJZAQDY2ZnCQEDZ3BjAAQEbHBJZAkA2QQBCQCRAwIFA2NmZwUJaWR4TFBBc0lkBAdhbUlkU3RyCQCRAwIFA2NmZwUJaWR4QW1Bc0lkBAdwcklkU3RyCQCRAwIFA2NmZwUJaWR4UHJBc0lkBAlpbkFtSWRTdHIJAJEDAgUDY2ZnBQtpZHhJQW10QXNJZAQJaW5QcklkU3RyCQCRAwIFA2NmZwUNaWR4SVByaWNlQXNJZAQGYW10RGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQtpZHhBbXRBc0RjbQQIcHJpY2VEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20EA3N0cwkAkQMCBQNjZmcFCWlkeFBvb2xTdAQEbHBFbQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQRscElkAghXciBscCBhcwhxdWFudGl0eQQJYW1CYWxhbmNlAwUGaXNFdmFsCQENZ2V0QWNjQmFsYW5jZQEFB2FtSWRTdHIDAwUKaXNPbmVBc3NldAkAAAIFBXBtdElkBQdhbUlkU3RyBwkAZQIJAQ1nZXRBY2NCYWxhbmNlAQUHYW1JZFN0cgUGcG10QW10AwUKaXNPbmVBc3NldAkBDWdldEFjY0JhbGFuY2UBBQdhbUlkU3RyCQBlAgkBDWdldEFjY0JhbGFuY2UBBQdhbUlkU3RyBQdpbkFtQW10BAlwckJhbGFuY2UDBQZpc0V2YWwJAQ1nZXRBY2NCYWxhbmNlAQUHcHJJZFN0cgMDBQppc09uZUFzc2V0CQAAAgUFcG10SWQFB3BySWRTdHIHCQBlAgkBDWdldEFjY0JhbGFuY2UBBQdwcklkU3RyBQZwbXRBbXQDBQppc09uZUFzc2V0CQENZ2V0QWNjQmFsYW5jZQEFB3BySWRTdHIJAGUCCQENZ2V0QWNjQmFsYW5jZQEFB3BySWRTdHIFB2luUHJBbXQED2luQW1Bc3NldEFtdFgxOAkBAnQxAgUHaW5BbUFtdAUGYW10RGNtBA9pblByQXNzZXRBbXRYMTgJAQJ0MQIFB2luUHJBbXQFCHByaWNlRGNtBAx1c2VyUHJpY2VYMTgJAQRjcGJpAgUPaW5QckFzc2V0QW10WDE4BQ9pbkFtQXNzZXRBbXRYMTgEDGFtQmFsYW5jZVgxOAkBAnQxAgUJYW1CYWxhbmNlBQZhbXREY20EDHByQmFsYW5jZVgxOAkBAnQxAgUJcHJCYWxhbmNlBQhwcmljZURjbQQBcgMJAAACBQRscEVtAAAEC2N1clByaWNlWDE4BQp6ZXJvQmlnSW50BAtzbGlwcGFnZVgxOAUKemVyb0JpZ0ludAQIbHBBbXRYMTgJAHYGCQC5AgIFD2luQW1Bc3NldEFtdFgxOAUPaW5QckFzc2V0QW10WDE4AAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQECZjECBQhscEFtdFgxOAUGc2NhbGU4CQECZjECBQ9pbkFtQXNzZXRBbXRYMTgFBmFtdERjbQkBAmYxAgUPaW5QckFzc2V0QW10WDE4BQhwcmljZURjbQkBBGNwYmkCCQC3AgIFDHByQmFsYW5jZVgxOAUPaW5QckFzc2V0QW10WDE4CQC3AgIFDGFtQmFsYW5jZVgxOAUPaW5BbUFzc2V0QW10WDE4BQtzbGlwcGFnZVgxOAQLY3VyUHJpY2VYMTgJAQRjcGJpAgUMcHJCYWxhbmNlWDE4BQxhbUJhbGFuY2VYMTgED3NsaXBwYWdlUmVhbFgxOAkAvAIDCQEDYWJzAQkAuAICBQtjdXJQcmljZVgxOAUMdXNlclByaWNlWDE4BQdzY2FsZTE4BQtjdXJQcmljZVgxOAQLc2xpcHBhZ2VYMTgJAQJ0MQIFCHNsaXBwYWdlBQZzY2FsZTgDAwkBAiE9AgULY3VyUHJpY2VYMTgFCnplcm9CaWdJbnQJAL8CAgUPc2xpcHBhZ2VSZWFsWDE4BQtzbGlwcGFnZVgxOAcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUPc2xpcHBhZ2VSZWFsWDE4AgMgPiAJAKYDAQULc2xpcHBhZ2VYMTgEDWxwRW1pc3Npb25YMTgJAQJ0MQIFBGxwRW0FBnNjYWxlOAQKcHJWaWFBbVgxOAkAvAIDBQ9pbkFtQXNzZXRBbXRYMTgFC2N1clByaWNlWDE4BQdzY2FsZTE4BAphbVZpYVByWDE4CQC8AgMFD2luUHJBc3NldEFtdFgxOAUHc2NhbGUxOAULY3VyUHJpY2VYMTgEDGV4cGVjdGVkQW10cwMJAL8CAgUKcHJWaWFBbVgxOAUPaW5QckFzc2V0QW10WDE4CQCUCgIFCmFtVmlhUHJYMTgFD2luUHJBc3NldEFtdFgxOAkAlAoCBQ9pbkFtQXNzZXRBbXRYMTgFCnByVmlhQW1YMTgEEWV4cEFtdEFzc2V0QW10WDE4CAUMZXhwZWN0ZWRBbXRzAl8xBBNleHBQcmljZUFzc2V0QW10WDE4CAUMZXhwZWN0ZWRBbXRzAl8yBAhscEFtdFgxOAkAvAIDBQ1scEVtaXNzaW9uWDE4BRNleHBQcmljZUFzc2V0QW10WDE4BQxwckJhbGFuY2VYMTgJAJcKBQkBAmYxAgUIbHBBbXRYMTgFBnNjYWxlOAkBAmYxAgURZXhwQW10QXNzZXRBbXRYMTgFBmFtdERjbQkBAmYxAgUTZXhwUHJpY2VBc3NldEFtdFgxOAUIcHJpY2VEY20FC2N1clByaWNlWDE4BQtzbGlwcGFnZVgxOAQJY2FsY0xwQW10CAUBcgJfMQQOY2FsY0FtQXNzZXRQbXQIBQFyAl8yBA5jYWxjUHJBc3NldFBtdAgFAXICXzMECGN1clByaWNlCQECZjECCAUBcgJfNAUGc2NhbGU4BAxzbGlwcGFnZUNhbGMJAQJmMQIIBQFyAl81BQZzY2FsZTgDCQBnAgAABQljYWxjTHBBbXQJAAIBAgdMUCA8PSAwBAllbWl0THBBbXQDCQEBIQEFBmVtaXRMcAAABQljYWxjTHBBbXQEBmFtRGlmZgkAZQIFB2luQW1BbXQFDmNhbGNBbUFzc2V0UG10BAZwckRpZmYJAGUCBQdpblByQW10BQ5jYWxjUHJBc3NldFBtdAQNJHQwMTU1ODcxNTkzMgMDBQppc09uZUFzc2V0CQAAAgUFcG10SWQFB2FtSWRTdHIHCQCUCgIFBnBtdEFtdAAAAwMFCmlzT25lQXNzZXQJAAACBQVwbXRJZAUHcHJJZFN0cgcJAJQKAgAABQZwbXRBbXQJAJQKAgUOY2FsY0FtQXNzZXRQbXQFDmNhbGNQckFzc2V0UG10BAp3cml0ZUFtQW10CAUNJHQwMTU1ODcxNTkzMgJfMQQKd3JpdGVQckFtdAgFDSR0MDE1NTg3MTU5MzICXzIEC2NvbW1vblN0YXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGwABQhjdXJQcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBoAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUIY3VyUHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkBA3BhdQIFC3VzZXJBZGRyZXNzBQZ0eElkNTgJARFkYXRhUHV0QWN0aW9uSW5mbwoFCndyaXRlQW1BbXQFCndyaXRlUHJBbXQFCWVtaXRMcEFtdAUIY3VyUHJpY2UFCHNsaXBwYWdlBQxzbGlwcGFnZUNhbGMFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFBmFtRGlmZgUGcHJEaWZmBQNuaWwJAJ8KDQUJY2FsY0xwQW10BQllbWl0THBBbXQFCGN1clByaWNlBQlhbUJhbGFuY2UFCXByQmFsYW5jZQUEbHBFbQUEbHBJZAUDc3RzBQtjb21tb25TdGF0ZQUGYW1EaWZmBQZwckRpZmYFBmluQW1JZAUGaW5QcklkAQNtb2EBBW9yZGVyBANjZmcJAQNncGMABAdhbXRBc0lkCQCRAwIFA2NmZwUJaWR4QW1Bc0lkBAZwckFzSWQJAJEDAgUDY2ZnBQlpZHhQckFzSWQEA3N0cwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUJaWR4UG9vbFN0BAhhbXRBc0RjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwULaWR4QW10QXNEY20EB3ByQXNEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20ED2FjY0FtdEFzQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQdhbXRBc0lkBA5hY2NQckFzQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQZwckFzSWQEC2N1clByaWNlWDE4AwkAAAIIBQVvcmRlcglvcmRlclR5cGUFA0J1eQkBA3BjcAQFCGFtdEFzRGNtBQdwckFzRGNtCQBkAgUPYWNjQW10QXNCYWxhbmNlCAUFb3JkZXIGYW1vdW50BQ5hY2NQckFzQmFsYW5jZQkBA3BjcAQFCGFtdEFzRGNtBQdwckFzRGNtCQBlAgUPYWNjQW10QXNCYWxhbmNlCAUFb3JkZXIGYW1vdW50BQ5hY2NQckFzQmFsYW5jZQQIY3VyUHJpY2UJAQJmMQIFC2N1clByaWNlWDE4BQZzY2FsZTgDAwMJAQNpZ3MABgkAAAIFA3N0cwUOUG9vbE1hdGNoZXJEaXMGCQAAAgUDc3RzBQxQb29sU2h1dGRvd24JAAIBAg1BZG1pbiBibG9ja2VkBApvckFtdEFzc2V0CAgFBW9yZGVyCWFzc2V0UGFpcgthbW91bnRBc3NldAQKb3JBbXRBc1N0cgMJAAACBQpvckFtdEFzc2V0BQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQpvckFtdEFzc2V0BAlvclByQXNzZXQICAUFb3JkZXIJYXNzZXRQYWlyCnByaWNlQXNzZXQECW9yUHJBc1N0cgMJAAACBQlvclByQXNzZXQFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFCW9yUHJBc3NldAMDCQECIT0CBQpvckFtdEFzU3RyBQdhbXRBc0lkBgkBAiE9AgUJb3JQckFzU3RyBQZwckFzSWQJAAIBAglXciBhc3NldHMECm9yZGVyUHJpY2UIBQVvcmRlcgVwcmljZQQIcHJpY2VEY20JAGsDBQZzY2FsZTgFB3ByQXNEY20FCGFtdEFzRGNtBA5jYXN0T3JkZXJQcmljZQkBAnRzAwUKb3JkZXJQcmljZQUGc2NhbGU4BQhwcmljZURjbQQRaXNPcmRlclByaWNlVmFsaWQDCQAAAggFBW9yZGVyCW9yZGVyVHlwZQUDQnV5CQBnAgUIY3VyUHJpY2UFDmNhc3RPcmRlclByaWNlCQBnAgUOY2FzdE9yZGVyUHJpY2UFCGN1clByaWNlBgECY2cBAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAgoxIHBtbnQgZXhwBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQKcG10QXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAZwbXRBbXQIBQNwbXQGYW1vdW50BAFyCQEDZWdvBAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEFCnBtdEFzc2V0SWQFBnBtdEFtdAgFAWkGY2FsbGVyBAhvdXRBbUFtdAgFAXICXzEECG91dFByQW10CAUBcgJfMgQDc3RzCQENcGFyc2VJbnRWYWx1ZQEIBQFyAl85BAVzdGF0ZQgFAXIDXzEwAwMJAQNpZ3MABgkAAAIFA3N0cwUMUG9vbFNodXRkb3duCQACAQkArAICAg9BZG1pbiBibG9ja2VkOiAJAKQDAQUDc3RzCQCXCgUFCG91dEFtQW10BQhvdXRQckFtdAUGcG10QW10BQpwbXRBc3NldElkBQVzdGF0ZQECY3AJBmNhbGxlcgR0eElkB2FtQXNQbXQHcHJBc1BtdAhzbGlwcGFnZQZlbWl0THAKaXNPbmVBc3NldAZwbXRBbXQFcG10SWQEAXIJAQNlcG8MBQR0eElkBQhzbGlwcGFnZQgJAQV2YWx1ZQEFB2FtQXNQbXQGYW1vdW50CAkBBXZhbHVlAQUHYW1Bc1BtdAdhc3NldElkCAkBBXZhbHVlAQUHcHJBc1BtdAZhbW91bnQICQEFdmFsdWUBBQdwckFzUG10B2Fzc2V0SWQFBmNhbGxlcgcFBmVtaXRMcAUKaXNPbmVBc3NldAUGcG10QW10BQVwbXRJZAQDc3RzCQENcGFyc2VJbnRWYWx1ZQEIBQFyAl84AwMDCQEDaWdzAAYJAAACBQNzdHMFClBvb2xQdXREaXMGCQAAAgUDc3RzBQxQb29sU2h1dGRvd24JAAIBCQCsAgICCEJsb2NrZWQ6CQCkAwEFA3N0cwUBcgEHdGFrZUZlZQEGYW1vdW50BANmZWUJAGsDBQZhbW91bnQFC2ZlZVBlcm1pbGxlBQh0aG91c2FuZAkAlAoCCQBlAgUGYW1vdW50BQNmZWUFA2ZlZQEBbQAEByRtYXRjaDAJAKIIAQkBA21wawADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJwbQAEByRtYXRjaDAJAKIIAQkBBHBtcGsAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgACcGQJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAECbW0BAWkEByRtYXRjaDAJAQFtAAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkFAnBrBgUCcGQDCQABAgUHJG1hdGNoMAIEVW5pdAMJAAACCAUBaQZjYWxsZXIFBHRoaXMGBQJwZAkAAgECC01hdGNoIGVycm9yFQFpAQtjb25zdHJ1Y3RvcgECZmMEAWMJAQJtbQEFAWkDCQAAAgUBYwUBYwkAzAgCCQELU3RyaW5nRW50cnkCCQECZmMABQJmYwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCnNldE1hbmFnZXIBF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BAFjCQECbW0BBQFpAwkAAAIFAWMFAWMEAmNtCQDZBAEFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AwkAAAIFAmNtBQJjbQkAzAgCCQELU3RyaW5nRW50cnkCCQEEcG1wawAFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOY29uZmlybU1hbmFnZXIABAFwCQECcG0ABANocG0DCQEJaXNEZWZpbmVkAQUBcAYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUDaHBtBQNocG0EA2NwbQMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAXAGCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFA2NwbQUDY3BtCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNtcGsACQDYBAEJAQV2YWx1ZQEFAXAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBBHBtcGsABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEDcHV0AgRzbGlwCWF1dG9TdGFrZQQHZmFjdENmZwkBA2dmYwAEC3N0YWtpbmdDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdmYWN0Q2ZnBQ9pZHhGYWN0U3Rha0NudHICCldyIHN0IGFkZHIECHNsaXBDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdmYWN0Q2ZnBRBpZHhGYWN0U2xpcHBDbnRyAgpXciBzbCBhZGRyAwkAZgIAAAUEc2xpcAkAAgECDldyb25nIHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAFlCQECY3AJCQClCAEIBQFpBmNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAkQMCCAUBaQhwYXltZW50cwABBQRzbGlwBgcAAAIABAllbWl0THBBbXQIBQFlAl8yBAlscEFzc2V0SWQIBQFlAl83BAVzdGF0ZQgFAWUCXzkEBmFtRGlmZggFAWUDXzEwBAZwckRpZmYIBQFlA18xMQQEYW1JZAgFAWUDXzEyBARwcklkCAUBZQNfMTMEAXIJAPwHBAUDZmNhAgRlbWl0CQDMCAIFCWVtaXRMcEFtdAUDbmlsBQNuaWwDCQAAAgUBcgUBcgQCZWwEByRtYXRjaDAFAXIDCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQGbGVnYWN5BQckbWF0Y2gwCQD8BwQFBmxlZ2FjeQIEZW1pdAkAzAgCBQllbWl0THBBbXQFA25pbAUDbmlsBQR1bml0AwkAAAIFAmVsBQJlbAQCc2EDCQBmAgUGYW1EaWZmAAAJAPwHBAUIc2xpcENudHICA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQRhbUlkBQZhbURpZmYFA25pbAUDbmlsAwkAAAIFAnNhBQJzYQQCc3ADCQBmAgUGcHJEaWZmAAAJAPwHBAUIc2xpcENudHICA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQRwcklkBQZwckRpZmYFA25pbAUDbmlsAwkAAAIFAnNwBQJzcAQIbHBUcm5zZnIDBQlhdXRvU3Rha2UEAnNzCQD8BwQFC3N0YWtpbmdDbnRyAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQlscEFzc2V0SWQFCWVtaXRMcEFtdAUDbmlsAwkAAAIFAnNzBQJzcwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUJZW1pdExwQW10BQlscEFzc2V0SWQFA25pbAkAzggCBQVzdGF0ZQUIbHBUcm5zZnIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJcHV0T25lVGtuBQthbUFzc2V0UGFydAtwckFzc2V0UGFydAVvdXRMcAhzbGlwcGFnZQlhdXRvU3Rha2UEA2NmZwkBA2dmYwAEC3N0YWtpbmdDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQNjZmcFD2lkeEZhY3RTdGFrQ250cgIKV3Igc3QgYWRkcgQIc2xpcENudHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFA2NmZwUQaWR4RmFjdFNsaXBwQ250cgIKV3Igc2wgYWRkcgQHZ3d4Q250cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUDY2ZnBRFpZHhGYWN0R3d4UmV3Q250cgILV3IgZ3d4IGFkZHIEB3Bvb2xDZmcJAQNncGMABARhbUlkCQCRAwIFB3Bvb2xDZmcFCWlkeEFtQXNJZAQEcHJJZAkAkQMCBQdwb29sQ2ZnBQlpZHhQckFzSWQEBWFtRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcG9vbENmZwULaWR4QW10QXNEY20EBXByRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcG9vbENmZwUNaWR4UHJpY2VBc0RjbQQFYWRkb24JAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBA2FkYQACAAQLdXNlckFkZHJlc3MDCQAAAgUFYWRkb24JAKUIAQgFAWkGY2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIIBQFpBmNhbGxlcgMDAwMJAGcCAAAFCHNsaXBwYWdlBgkAZwIAAAULYW1Bc3NldFBhcnQGCQBnAgAABQtwckFzc2V0UGFydAYJAGcCAAAFBW91dExwCQACAQIMV3JvbmcgcGFyYW1zAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQILMSBwbW50IGV4cGQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABApwbXRBc3NldElkCQDYBAEJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQQcGF5bWVudEFtb3VudFJhdwgFA3BtdAZhbW91bnQEDSR0MDI0NTQ5MjQ2MDEJAQd0YWtlRmVlAQUQcGF5bWVudEFtb3VudFJhdwQGcG10QW10CAUNJHQwMjQ1NDkyNDYwMQJfMQQJZmVlQW1vdW50CAUNJHQwMjQ1NDkyNDYwMQJfMgMJAGYCAICt4gQFEHBheW1lbnRBbW91bnRSYXcJAAIBAg1Xcm9uZyBwbXQgYW10BAlhbUJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAQJcHJCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQEDSR0MDI0NzYxMjUzMzcDCQAAAgUKcG10QXNzZXRJZAUEYW1JZAMDCQBmAgUGcG10QW10BQlhbUJhbGFuY2UGCQBmAgULYW1Bc3NldFBhcnQFBnBtdEFtdAkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJgKBgkAZQIFCWFtQmFsYW5jZQUGcG10QW10BQlwckJhbGFuY2UJAGUCBQZwbXRBbXQFC2FtQXNzZXRQYXJ0BQtwckFzc2V0UGFydAAAAAADCQAAAgUKcG10QXNzZXRJZAUEcHJJZAMDCQBmAgUGcG10QW10BQlwckJhbGFuY2UGCQBmAgULcHJBc3NldFBhcnQFBnBtdEFtdAkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJgKBgUJYW1CYWxhbmNlCQBlAgUJcHJCYWxhbmNlBQZwbXRBbXQAAAAACQBlAgUGcG10QW10BQtwckFzc2V0UGFydAULYW1Bc3NldFBhcnQJAAIBAhB3cm9uZyBwbXRBc3NldElkBAxhbUJhbGFuY2VOb3cIBQ0kdDAyNDc2MTI1MzM3Al8xBAxwckJhbGFuY2VOb3cIBQ0kdDAyNDc2MTI1MzM3Al8yBAx2aXJ0U3dhcEluQW0IBQ0kdDAyNDc2MTI1MzM3Al8zBA12aXJ0U3dhcE91dFByCAUNJHQwMjQ3NjEyNTMzNwJfNAQMdmlydFN3YXBJblByCAUNJHQwMjQ3NjEyNTMzNwJfNQQNdmlydFN3YXBPdXRBbQgFDSR0MDI0NzYxMjUzMzcCXzYEAkQwCQD8BwQFB2d3eENudHICBWNhbGNECQDMCAIJAKQDAQUMYW1CYWxhbmNlTm93CQDMCAIJAKQDAQUMcHJCYWxhbmNlTm93CQDMCAIFAUEJAMwIAgUFQW11bHQJAMwIAgUFRGNvbnYFA25pbAUDbmlsBAJEMQkA/AcEBQdnd3hDbnRyAgVjYWxjRAkAzAgCCQCmAwEJALYCAQkAZQIJAGQCBQxhbUJhbGFuY2VOb3cFDHZpcnRTd2FwSW5BbQUNdmlydFN3YXBPdXRBbQkAzAgCCQCmAwEJALYCAQkAZQIJAGQCBQxwckJhbGFuY2VOb3cFDHZpcnRTd2FwSW5QcgUNdmlydFN3YXBPdXRQcgkAzAgCBQFBCQDMCAIFBUFtdWx0CQDMCAIFBURjb252BQNuaWwFA25pbAQGRDB2c0QxCQECdmQDCQCnAwEJAQNzdHIBBQJEMQkApwMBCQEDc3RyAQUCRDAFCnNsaXBwYWdlNEQDCQAAAgUGRDB2c0QxBQZEMHZzRDEEBmVzdFB1dAkBAmNwCQkApQgBCAUBaQZjYWxsZXIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUEYW1JZAULYW1Bc3NldFBhcnQJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFBHBySWQFC3ByQXNzZXRQYXJ0BQhzbGlwcGFnZQYGBQZwbXRBbXQFCnBtdEFzc2V0SWQEB2VzdGltTFAIBQZlc3RQdXQCXzIECWxwQXNzZXRJZAgFBmVzdFB1dAJfNwQFc3RhdGUIBQZlc3RQdXQCXzkEBmFtRGlmZggFBmVzdFB1dANfMTAEBnByRGlmZggFBmVzdFB1dANfMTEECWxwQ2FsY1JlcwkBA3ZhZAMJALYCAQUHZXN0aW1MUAkAtgIBBQVvdXRMcAkAtgIBBQhzbGlwcGFnZQQJZW1pdExwQW10CQCgAwEIBQlscENhbGNSZXMCXzIEAWUJAPwHBAUDZmNhAgRlbWl0CQDMCAIFCWVtaXRMcEFtdAUDbmlsBQNuaWwDCQAAAgUBZQUBZQQCZWwEByRtYXRjaDAFAWUDCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQGbGVnYWN5BQckbWF0Y2gwCQD8BwQFBmxlZ2FjeQIEZW1pdAkAzAgCBQllbWl0THBBbXQFA25pbAUDbmlsBQR1bml0AwkAAAIFAmVsBQJlbAQCc2EDCQBmAgUGYW1EaWZmAAAJAPwHBAUIc2xpcENudHICA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFBGFtSWQFBmFtRGlmZgUDbmlsBQNuaWwDCQAAAgUCc2EFAnNhBAJzcAMJAGYCBQZwckRpZmYAAAkA/AcEBQhzbGlwQ250cgIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUEcHJJZAUGcHJEaWZmBQNuaWwFA25pbAMJAAACBQJzcAUCc3AECGxwVHJuc2ZyAwUJYXV0b1N0YWtlBAJzcwkA/AcEBQtzdGFraW5nQ250cgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUJbHBBc3NldElkBQllbWl0THBBbXQFA25pbAMJAAACBQJzcwUCc3MFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFCWVtaXRMcEFtdAUJbHBBc3NldElkBQNuaWwEEHNlbmRGZWVUb01hdGNoZXIDCQBmAgUJZmVlQW1vdW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUObWF0Y2hlckFkZHJlc3MFCWZlZUFtb3VudAkA2QQBBQpwbXRBc3NldElkBQNuaWwFA25pbAkAzggCCQDOCAIFBXN0YXRlBQhscFRybnNmcgUQc2VuZEZlZVRvTWF0Y2hlcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpwdXRGb3JGcmVlAQdtYXhTbHBnAwkAZgIAAAUHbWF4U2xwZwkAAgECCldyb25nIHNscGcDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEBmVzdFB1dAkBAmNwCQkApQgBCAUBaQZjYWxsZXIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAWkIcGF5bWVudHMAAQUHbWF4U2xwZwcHAAACAAgFBmVzdFB1dAJfOQFpAQNnZXQABAFyCQECY2cBBQFpBAlvdXRBbXRBbXQIBQFyAl8xBAhvdXRQckFtdAgFAXICXzIEBnBtdEFtdAgFAXICXzMECnBtdEFzc2V0SWQIBQFyAl80BAVzdGF0ZQgFAXICXzUEAWIJAPwHBAUDZmNhAgRidXJuCQDMCAIFBnBtdEFtdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQpwbXRBc3NldElkBQZwbXRBbXQFA25pbAMJAAACBQFiBQFiBQVzdGF0ZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQlnZXRPbmVUa24FCmV4Y2hSZXN1bHQHbm90VXNlZAlvdXRBbW91bnQKb3V0QXNzZXRJZAhzbGlwcGFnZQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECCzEgcG1udCBleHBkBANjZmcJAQNncGMABARscElkCQCRAwIFA2NmZwUJaWR4TFBBc0lkBARhbUlkCQCRAwIFA2NmZwUJaWR4QW1Bc0lkBARwcklkCQCRAwIFA2NmZwUJaWR4UHJBc0lkBAVhbURjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwULaWR4QW10QXNEY20EBXByRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQ1pZHhQcmljZUFzRGNtBANzdHMJAJEDAgUDY2ZnBQlpZHhQb29sU3QEB2ZhY3RDZmcJAQNnZmMABAdnd3hDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdmYWN0Q2ZnBRFpZHhGYWN0R3d4UmV3Q250cgIKV3Igc2wgYWRkcgQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEBWFkZG9uCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQNhZGEAAgAEC3VzZXJBZGRyZXNzAwkAAAIFBWFkZG9uCQClCAEIBQFpBmNhbGxlcggFAWkMb3JpZ2luQ2FsbGVyCAUBaQZjYWxsZXIEBnR4SWQ1OAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBApwbXRBc3NldElkCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEBnBtdEFtdAgFA3BtdAZhbW91bnQDCQBmAgCAlOvcAwUGcG10QW10CQACAQINTWluIHBtdCAxMCBMUAMDAwkAZgIAAAUIc2xpcHBhZ2UGCQBmAgAABQpleGNoUmVzdWx0BgkAZgIAAAUJb3V0QW1vdW50CQACAQIMV3JvbmcgcGFyYW1zAwkBAiE9AgUEbHBJZAkA2AQBBQpwbXRBc3NldElkCQACAQIIV3JvbmcgTFAEAXIJAQNlZ28ECQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJANgEAQUKcG10QXNzZXRJZAUGcG10QW10CAUBaQZjYWxsZXIECmVzdGltQW1BbXQIBQFyAl8xBAplc3RpbVByQW10CAUBcgJfMgQJYW1CYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBGFtSWQECXByQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQRwcklkBA0kdDAzMDI3NTMwNzM1AwkAAAIFCm91dEFzc2V0SWQFBGFtSWQJAJkKBwkAZQIFCWFtQmFsYW5jZQUKZXN0aW1BbUFtdAkAZQIFCXByQmFsYW5jZQUKZXN0aW1QckFtdAUKZXhjaFJlc3VsdAUKZXN0aW1QckFtdAAAAAAJAGQCBQplc3RpbUFtQW10BQpleGNoUmVzdWx0AwkAAAIFCm91dEFzc2V0SWQFBHBySWQJAJkKBwkAZQIFCWFtQmFsYW5jZQUKZXN0aW1BbUFtdAkAZQIFCXByQmFsYW5jZQUKZXN0aW1QckFtdAAAAAAFCmV4Y2hSZXN1bHQFCmVzdGltQW1BbXQJAGQCBQplc3RpbVByQW10BQpleGNoUmVzdWx0CQACAQIQd3Jvbmcgb3V0QXNzZXRJZAQMYW1CYWxhbmNlTm93CAUNJHQwMzAyNzUzMDczNQJfMQQMcHJCYWxhbmNlTm93CAUNJHQwMzAyNzUzMDczNQJfMgQMdmlydFN3YXBJbkFtCAUNJHQwMzAyNzUzMDczNQJfMwQNdmlydFN3YXBPdXRQcggFDSR0MDMwMjc1MzA3MzUCXzQEDHZpcnRTd2FwSW5QcggFDSR0MDMwMjc1MzA3MzUCXzUEDXZpcnRTd2FwT3V0QW0IBQ0kdDAzMDI3NTMwNzM1Al82BAt0b3RhbEdldFJhdwgFDSR0MDMwMjc1MzA3MzUCXzcDAwkAZgIAAAUMdmlydFN3YXBJbkFtBgkAZgIAAAUMdmlydFN3YXBJblByCQACAQIKV3JvbmcgY2FsYwQCRDAJAPwHBAUHZ3d4Q250cgIFY2FsY0QJAMwIAgkApAMBBQxhbUJhbGFuY2VOb3cJAMwIAgkApAMBBQxwckJhbGFuY2VOb3cJAMwIAgUBQQkAzAgCBQVBbXVsdAkAzAgCBQVEY29udgUDbmlsBQNuaWwEAkQxCQD8BwQFB2d3eENudHICBWNhbGNECQDMCAIJAKQDAQkAZAIJAGUCBQxhbUJhbGFuY2VOb3cFDHZpcnRTd2FwSW5BbQUNdmlydFN3YXBPdXRBbQkAzAgCCQCkAwEJAGUCCQBkAgUMcHJCYWxhbmNlTm93BQ12aXJ0U3dhcE91dFByBQx2aXJ0U3dhcEluUHIJAMwIAgUBQQkAzAgCBQVBbXVsdAkAzAgCBQVEY29udgUDbmlsBQNuaWwEBkQwdnNEMQkBAnZkAwkApwMBCQEDc3RyAQUCRDEJAKcDAQkBA3N0cgEFAkQwBQpzbGlwcGFnZTREAwkAAAIFBkQwdnNEMQUGRDB2c0QxBAh0b3RhbEdldAgJAQd0YWtlRmVlAQULdG90YWxHZXRSYXcCXzEECGZpbmFsUmVzCQEDdmFkAwkAtgIBBQh0b3RhbEdldAkAtgIBBQlvdXRBbW91bnQJALYCAQUIc2xpcHBhZ2UDCQAAAgUIZmluYWxSZXMFCGZpbmFsUmVzBA0kdDAzMTQ4MjMxNTg2AwkAAAIFCm91dEFzc2V0SWQFBGFtSWQJAJQKAgkAoAMBCAUIZmluYWxSZXMCXzIAAAkAlAoCAAAJAKADAQgFCGZpbmFsUmVzAl8yBAVvdXRBbQgFDSR0MDMxNDgyMzE1ODYCXzEEBW91dFByCAUNJHQwMzE0ODIzMTU4NgJfMgQLdG90YWxBbW91bnQJAGQCBQVvdXRBbQUFb3V0UHIECWZlZUFtb3VudAkAZQIFC3RvdGFsR2V0UmF3BQh0b3RhbEdldAQRb3V0QXNzZXRJZE9yV2F2ZXMDCQAAAgUKb3V0QXNzZXRJZAIFV0FWRVMFBHVuaXQJANkEAQUKb3V0QXNzZXRJZAQQc2VuZEZlZVRvTWF0Y2hlcgMJAGYCBQlmZWVBbW91bnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ5tYXRjaGVyQWRkcmVzcwUJZmVlQW1vdW50BRFvdXRBc3NldElkT3JXYXZlcwUDbmlsBQNuaWwECGN1clByWDE4CQEEY3BiaQIJAQJ0MQIFCXByQmFsYW5jZQUFcHJEY20JAQJ0MQIFCWFtQmFsYW5jZQUFYW1EY20EBWN1clByCQECZjECBQhjdXJQclgxOAUGc2NhbGU4BAVzdGF0ZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQt1c2VyQWRkcmVzcwULdG90YWxBbW91bnQFEW91dEFzc2V0SWRPcldhdmVzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNnYXUCCQClCAEFC3VzZXJBZGRyZXNzBQZ0eElkNTgJARFkYXRhR2V0QWN0aW9uSW5mbwYFBW91dEFtBQVvdXRQcgUGcG10QW10BQVjdXJQcgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBsAAUFY3VyUHIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwaAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFBWN1clByBQNuaWwDCQAAAgUFc3RhdGUFBXN0YXRlBARidXJuCQD8BwQFA2ZjYQIEYnVybgkAzAgCBQZwbXRBbXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUKcG10QXNzZXRJZAUGcG10QW10BQNuaWwDCQAAAgUEYnVybgUEYnVybgkAzggCBQVzdGF0ZQUQc2VuZEZlZVRvTWF0Y2hlcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQlnZXROb0xlc3MCEm5vTGVzc1RoZW5BbXRBc3NldBRub0xlc3NUaGVuUHJpY2VBc3NldAQBcgkBAmNnAQUBaQQIb3V0QW1BbXQIBQFyAl8xBAhvdXRQckFtdAgFAXICXzIEBnBtdEFtdAgFAXICXzMECnBtdEFzc2V0SWQIBQFyAl80BAVzdGF0ZQgFAXICXzUDCQBmAgUSbm9MZXNzVGhlbkFtdEFzc2V0BQhvdXRBbUFtdAkAAgEJAKwCAgkArAICCQCsAgICCUZhaWxlZDogIAkApAMBBQhvdXRBbUFtdAIDIDwgCQCkAwEFEm5vTGVzc1RoZW5BbXRBc3NldAMJAGYCBRRub0xlc3NUaGVuUHJpY2VBc3NldAUIb3V0UHJBbXQJAAIBCQCsAgIJAKwCAgkArAICAghGYWlsZWQ6IAkApAMBBQhvdXRQckFtdAIDIDwgCQCkAwEFFG5vTGVzc1RoZW5QcmljZUFzc2V0BBRidXJuTFBBc3NldE9uRmFjdG9yeQkA/AcEBQNmY2ECBGJ1cm4JAMwIAgUGcG10QW10BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCnBtdEFzc2V0SWQFBnBtdEFtdAUDbmlsAwkAAAIFFGJ1cm5MUEFzc2V0T25GYWN0b3J5BRRidXJuTFBBc3NldE9uRmFjdG9yeQUFc3RhdGUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENdW5zdGFrZUFuZEdldAEGYW1vdW50BA1jaGVja1BheW1lbnRzAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUNY2hlY2tQYXltZW50cwUNY2hlY2tQYXltZW50cwQDY2ZnCQEDZ3BjAAQKZmFjdG9yeUNmZwkBA2dmYwAECWxwQXNzZXRJZAkA2QQBCQCRAwIFA2NmZwUJaWR4TFBBc0lkBAdzdGFraW5nCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQpmYWN0b3J5Q2ZnBQ9pZHhGYWN0U3Rha0NudHICCldyIHN0IGFkZHIECnVuc3Rha2VJbnYJAPwHBAUHc3Rha2luZwIHdW5zdGFrZQkAzAgCCQDYBAEFCWxwQXNzZXRJZAkAzAgCBQZhbW91bnQFA25pbAUDbmlsAwkAAAIFCnVuc3Rha2VJbnYFCnVuc3Rha2VJbnYEAXIJAQNlZ28ECQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJANgEAQUJbHBBc3NldElkBQZhbW91bnQIBQFpBmNhbGxlcgQDc3RzCQENcGFyc2VJbnRWYWx1ZQEIBQFyAl85BAVzdGF0ZQgFAXIDXzEwBAF2AwMJAQNpZ3MABgkAAAIFA3N0cwUMUG9vbFNodXRkb3duCQACAQkArAICAglCbG9ja2VkOiAJAKQDAQUDc3RzBgMJAAACBQF2BQF2BAVidXJuQQkA/AcEBQNmY2ECBGJ1cm4JAMwIAgUGYW1vdW50BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCWxwQXNzZXRJZAUGYW1vdW50BQNuaWwDCQAAAgUFYnVybkEFBWJ1cm5BBQVzdGF0ZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQhhY3RpdmF0ZQIIYW10QXNTdHIHcHJBc1N0cgMJAQIhPQIJAKUIAQgFAWkGY2FsbGVyCQClCAEFA2ZjYQkAAgECBmRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQAFCGFtdEFzU3RyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJwYQAFB3ByQXNTdHIFA25pbAIHc3VjY2VzcwFpAQRzZXRTAgFrAXYDCQECIT0CCQClCAEIBQFpBmNhbGxlcgkBBHN0cmYCBQR0aGlzCQEDYWRhAAUCcGQJAMwIAgkBC1N0cmluZ0VudHJ5AgUBawUBdgUDbmlsAWkBBHNldEkCAWsBdgMJAQIhPQIJAKUIAQgFAWkGY2FsbGVyCQEEc3RyZgIFBHRoaXMJAQNhZGEABQJwZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUBawUBdgUDbmlsAWkBHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBA2dwYwABaQEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQEHYXNzZXRJZAkAlAoCBQNuaWwJAQ1nZXRBY2NCYWxhbmNlAQUHYXNzZXRJZAFpARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwVhbUFtdAVwckFtdAVscEFtdAQCcHIJAQpjYWxjUHJpY2VzAwUFYW1BbXQFBXByQW10BQVscEFtdAkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAnByAAAJAMwIAgkApgMBCQCRAwIFAnByAAEJAMwIAgkApgMBCQCRAwIFAnByAAIFA25pbAFpARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgN2YWwMcmVzU2NhbGVNdWx0CQCUCgIFA25pbAkBAmYxAgkApwMBBQN2YWwFDHJlc1NjYWxlTXVsdAFpARR0b1gxOFdyYXBwZXJSRUFET05MWQIHb3JpZ1ZhbA1vcmlnU2NhbGVNdWx0CQCUCgIFA25pbAkApgMBCQECdDECBQdvcmlnVmFsBQ1vcmlnU2NhbGVNdWx0AWkBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQIIcHJBbXRYMTgIYW1BbXRYMTgJAJQKAgUDbmlsCQCmAwEJAQRjcGJpAgkApwMBBQhwckFtdFgxOAkApwMBBQhhbUFtdFgxOAFpASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkGdHhJZDU4CHNsaXBwYWdlB2luQW1BbXQGaW5BbUlkB2luUHJBbXQGaW5QcklkB3VzckFkZHIGaXNFdmFsBmVtaXRMcAkAlAoCBQNuaWwJAQNlcG8MBQZ0eElkNTgFCHNsaXBwYWdlBQdpbkFtQW10BQZpbkFtSWQFB2luUHJBbXQFBmluUHJJZAUHdXNyQWRkcgUGaXNFdmFsBQZlbWl0THAHAAACAAFpASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQGdHhJZDU4B3BtdEFzSWQIcG10THBBbXQHdXNyQWRkcgQBcgkBA2VnbwQFBnR4SWQ1OAUHcG10QXNJZAUIcG10THBBbXQJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB3VzckFkZHIJAJQKAgUDbmlsCQCcCgoIBQFyAl8xCAUBcgJfMggFAXICXzMIBQFyAl80CAUBcgJfNQgFAXICXzYIBQFyAl83CQCmAwEIBQFyAl84CAUBcgJfOQgFAXIDXzEwAQJ0eAEGdmVyaWZ5AAQPdGFyZ2V0UHVibGljS2V5BAckbWF0Y2gwCQEBbQADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDAFAnBrAwkAAQIFByRtYXRjaDACBFVuaXQIBQJ0eA9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQHJG1hdGNoMAUCdHgDCQABAgUHJG1hdGNoMAIFT3JkZXIEBW9yZGVyBQckbWF0Y2gwBAptYXRjaGVyUHViCQECbXAABApvcmRlclZhbGlkCQEDbW9hAQUFb3JkZXIEC3NlbmRlclZhbGlkCQD0AwMIBQVvcmRlcglib2R5Qnl0ZXMJAJEDAggFBW9yZGVyBnByb29mcwAACAUFb3JkZXIPc2VuZGVyUHVibGljS2V5BAxtYXRjaGVyVmFsaWQJAPQDAwgFBW9yZGVyCWJvZHlCeXRlcwkAkQMCCAUFb3JkZXIGcHJvb2ZzAAEFCm1hdGNoZXJQdWIDAwMFCm9yZGVyVmFsaWQFC3NlbmRlclZhbGlkBwUMbWF0Y2hlclZhbGlkBwYJAQN0b2UDBQpvcmRlclZhbGlkBQtzZW5kZXJWYWxpZAUMbWF0Y2hlclZhbGlkAwkAAQIFByRtYXRjaDACFFNldFNjcmlwdFRyYW5zYWN0aW9uBAFzBQckbWF0Y2gwBAduZXdIYXNoCQD2AwEJAQV2YWx1ZQEIBQFzBnNjcmlwdAQLYWxsb3dlZEhhc2gJANsEAQkBBXZhbHVlAQkAnQgCBQNmY2EJARxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAAQLY3VycmVudEhhc2gJAPEHAQUEdGhpcwMDCQAAAgULYWxsb3dlZEhhc2gFB25ld0hhc2gJAQIhPQIFC2N1cnJlbnRIYXNoBQduZXdIYXNoBwYJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFD3RhcmdldFB1YmxpY0tleQkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUPdGFyZ2V0UHVibGljS2V5Ex09sw==", "height": 2205845, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DNJeRDrtfw4VNKw6gQ22etswyhAQroAaZVgeCxQRHHNV Next: tPf4ksgoCwRFPeNbEni32JhpqRVWJhpTG8KG5W8MtJu Diff:
OldNewDifferences
1-{-# STDLIB_VERSION 5 #-}
1+{-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
123123 func al () = "%s__shutdown"
124124
125125
126-func am (an,ao,ap) = throw(((((("Failed: ordValid=" + toString(an)) + " sndrValid=") + toString(ao)) + " mtchrValid=") + toString(ap)))
126+func am () = "%s__allowedLpStableScriptHash"
127127
128128
129-func aq (G) = {
130- let ar = G
131- if ($isInstanceOf(ar, "String"))
129+func an (ao,ap,aq) = throw(((((("Failed: ordValid=" + toString(ao)) + " sndrValid=") + toString(ap)) + " mtchrValid=") + toString(aq)))
130+
131+
132+func ar (G) = {
133+ let as = G
134+ if ($isInstanceOf(as, "String"))
132135 then {
133- let as = ar
134- as
136+ let at = as
137+ at
135138 }
136139 else throw("fail cast to String")
137140 }
138141
139142
140-func at (au,av) = valueOrErrorMessage(getString(au, av), makeString(["mandatory ", toString(au), ".", av, " not defined"], ""))
143+func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
141144
142145
143-func aw (au,av) = valueOrErrorMessage(getInteger(au, av), makeString(["mandatory ", toString(au), ".", av, " not defined"], ""))
146+func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
144147
145148
146-let ax = addressFromStringValue(at(this, N()))
149+let ay = addressFromStringValue(au(this, N()))
147150
148-let ay = at(this, aa())
151+let az = au(this, aa())
149152
150-func az () = valueOrElse(getBoolean(ax, al()), false)
153+func aA () = valueOrElse(getBoolean(ay, al()), false)
151154
152155
153-func aA () = fromBase58String(at(ax, af()))
156+func aB () = fromBase58String(au(ay, af()))
154157
155158
156-let aB = addressFromPublicKey(aA())
159+let aC = addressFromPublicKey(aB())
157160
158-func aC () = {
159- let aD = at(this, Y())
160- let aE = at(this, Z())
161- let aF = aw(ax, aj(aE))
162- let ah = aw(ax, aj(aD))
163- split(at(ax, ag(toString(ah), toString(aF))), j)
161+func aD () = {
162+ let aE = au(this, Y())
163+ let aF = au(this, Z())
164+ let aG = ax(ay, aj(aF))
165+ let ah = ax(ay, aj(aE))
166+ split(au(ay, ag(toString(ah), toString(aG))), j)
164167 }
165168
166169
167-func aG () = split(at(ax, ae()), j)
170+func aH () = split(au(ay, ae()), j)
168171
169172
170-func aH (aI,aJ,aK,aL,aM,aN,aO,aP,aQ,aR) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aI), toString(aJ), toString(aK), toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR)], j)
173+func aI (aJ,aK,aL,aM,aN,aO,aP,aQ,aR,aS) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aJ), toString(aK), toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS)], j)
171174
172175
173-func aS (aT,aU,aV,aL,aO,aP) = makeString(["%d%d%d%d%d%d", toString(aT), toString(aU), toString(aV), toString(aL), toString(aO), toString(aP)], j)
176+func aT (aU,aV,aW,aM,aP,aQ) = makeString(["%d%d%d%d%d%d", toString(aU), toString(aV), toString(aW), toString(aM), toString(aP), toString(aQ)], j)
174177
175178
176-func aW (aX) = if ((aX == "WAVES"))
179+func aX (aY) = if ((aY == "WAVES"))
177180 then wavesBalance(this).available
178- else assetBalance(this, fromBase58String(aX))
181+ else assetBalance(this, fromBase58String(aY))
179182
180183
181-func aY (aZ,ba) = fraction(aZ, c, ba)
184+func aZ (ba,bb) = fraction(ba, c, bb)
182185
183186
184-func bb (bc,bd,be) = {
185- let bf = fraction((bc - bd), b, bd)
186- let bg = ((be - M(bf)) > e)
187- if (!(bg))
188- then throw(("Big slpg: " + toString(bf)))
189- else $Tuple2(bg, min([bc, bd]))
187+func bc (bd,be,bf) = {
188+ let bg = fraction((bd - be), b, be)
189+ let bh = ((bf - M(bg)) > e)
190+ if (!(bh))
191+ then throw(("Big slpg: " + toString(bg)))
192+ else $Tuple2(bh, min([bd, be]))
190193 }
191194
192195
193-func bh (bi,bj,bk) = {
194- let bf = fraction(bj, b, bi)
195- let bl = (bk > bf)
196- if (if (bl)
196+func bi (bj,bk,bl) = {
197+ let bg = fraction(bk, b, bj)
198+ let bm = (bl > bg)
199+ if (if (bm)
197200 then true
198- else (bj > bi))
199- then throw(((((((toString(bj) + " ") + toString(bi)) + " ") + toString(bf)) + " ") + toString(bk)))
200- else bl
201+ else (bk > bj))
202+ then throw(((((((toString(bk) + " ") + toString(bj)) + " ") + toString(bg)) + " ") + toString(bl)))
203+ else bm
201204 }
202205
203206
204-func bm (bn,bo,bp,bq) = {
205- let br = C(bp, bn)
207+func bn (bo,bp,bq,br) = {
206208 let bs = C(bq, bo)
207- aY(bs, br)
209+ let bt = C(br, bp)
210+ aZ(bt, bs)
208211 }
209212
210213
211-func bt (bp,bq,bu) = {
212- let bv = aC()
213- let bw = parseIntValue(bv[u])
214- let bx = parseIntValue(bv[v])
215- let by = bm(bw, bx, bp, bq)
216- let ba = C(bp, bw)
217- let aZ = C(bq, bx)
218- let bz = C(bu, a)
219- let bA = aY(ba, bz)
220- let bB = aY(aZ, bz)
221-[by, bA, bB]
214+func bu (bq,br,bv) = {
215+ let bw = aD()
216+ let bx = parseIntValue(bw[u])
217+ let by = parseIntValue(bw[v])
218+ let bz = bn(bx, by, bq, br)
219+ let bb = C(bq, bx)
220+ let ba = C(br, by)
221+ let bA = C(bv, a)
222+ let bB = aZ(bb, bA)
223+ let bC = aZ(ba, bA)
224+[bz, bB, bC]
222225 }
223226
224227
225-func bC (bp,bq,bu) = {
226- let bD = bt(bp, bq, bu)
227-[F(bD[0], a), F(bD[1], a), F(bD[2], a)]
228+func bD (bq,br,bv) = {
229+ let bE = bu(bq, br, bv)
230+[F(bE[0], a), F(bE[1], a), F(bE[2], a)]
228231 }
229232
230233
231-func bE (bF,bG,bH,bI) = {
232- let bv = aC()
233- let bJ = bv[r]
234- let bK = bv[s]
235- let bL = bv[t]
236- let bM = parseIntValue(bv[u])
237- let bN = parseIntValue(bv[v])
238- let bO = bv[q]
239- let bP = valueOrErrorMessage(assetInfo(fromBase58String(bJ)), "Wrong LP id").quantity
240- if ((bJ != bG))
234+func bF (bG,bH,bI,bJ) = {
235+ let bw = aD()
236+ let bK = bw[r]
237+ let bL = bw[s]
238+ let bM = bw[t]
239+ let bN = parseIntValue(bw[u])
240+ let bO = parseIntValue(bw[v])
241+ let bP = bw[q]
242+ let bQ = valueOrErrorMessage(assetInfo(fromBase58String(bK)), "Wrong LP id").quantity
243+ if ((bK != bH))
241244 then throw("Wrong pmt asset")
242245 else {
243- let bQ = aW(bK)
244- let bR = C(bQ, bM)
245- let bS = aW(bL)
246- let bT = C(bS, bN)
247- let bU = aY(bT, bR)
248- let bV = F(bU, a)
249- let bW = C(bH, a)
250- let bX = C(bP, a)
251- let bY = fraction(bR, bW, bX)
252- let bZ = fraction(bT, bW, bX)
253- let ca = F(bY, bM)
246+ let bR = aX(bL)
247+ let bS = C(bR, bN)
248+ let bT = aX(bM)
249+ let bU = C(bT, bO)
250+ let bV = aZ(bU, bS)
251+ let bW = F(bV, a)
252+ let bX = C(bI, a)
253+ let bY = C(bQ, a)
254+ let bZ = fraction(bS, bX, bY)
255+ let ca = fraction(bU, bX, bY)
254256 let cb = F(bZ, bN)
255- let cc = if ((bF == ""))
257+ let cc = F(ca, bO)
258+ let cd = if ((bG == ""))
256259 then nil
257- else [ScriptTransfer(bI, ca, if ((bK == "WAVES"))
260+ else [ScriptTransfer(bJ, cb, if ((bL == "WAVES"))
258261 then unit
259- else fromBase58String(bK)), ScriptTransfer(bI, cb, if ((bL == "WAVES"))
262+ else fromBase58String(bL)), ScriptTransfer(bJ, cc, if ((bM == "WAVES"))
260263 then unit
261- else fromBase58String(bL)), StringEntry(X(toString(bI), bF), aS(ca, cb, bH, bV, height, lastBlock.timestamp)), IntegerEntry(Q(), bV), IntegerEntry(R(height, lastBlock.timestamp), bV)]
262- $Tuple10(ca, cb, bK, bL, bQ, bS, bP, bU, bO, cc)
264+ else fromBase58String(bM)), StringEntry(X(toString(bJ), bG), aT(cb, cc, bI, bW, height, lastBlock.timestamp)), IntegerEntry(Q(), bW), IntegerEntry(R(height, lastBlock.timestamp), bW)]
265+ $Tuple10(cb, cc, bL, bM, bR, bT, bQ, bV, bP, cd)
263266 }
264267 }
265268
266269
267-func cd (bF,be,ce,cf,cg,ch,bI,ci,cj,ck,cl,cm) = {
268- let bv = aC()
269- let bJ = fromBase58String(bv[r])
270- let cn = bv[s]
271- let co = bv[t]
272- let cp = bv[w]
273- let cq = bv[x]
274- let cr = parseIntValue(bv[u])
275- let cs = parseIntValue(bv[v])
276- let bO = bv[q]
277- let ct = valueOrErrorMessage(assetInfo(bJ), "Wr lp as").quantity
278- let bQ = if (ci)
279- then aW(cn)
280- else if (if (ck)
281- then (cm == cn)
270+func ce (bG,bf,cf,cg,ch,ci,bJ,cj,ck,cl,cm,cn) = {
271+ let bw = aD()
272+ let bK = fromBase58String(bw[r])
273+ let co = bw[s]
274+ let cp = bw[t]
275+ let cq = bw[w]
276+ let cr = bw[x]
277+ let cs = parseIntValue(bw[u])
278+ let ct = parseIntValue(bw[v])
279+ let bP = bw[q]
280+ let cu = valueOrErrorMessage(assetInfo(bK), "Wr lp as").quantity
281+ let bR = if (cj)
282+ then aX(co)
283+ else if (if (cl)
284+ then (cn == co)
282285 else false)
283- then (aW(cn) - cl)
284- else if (ck)
285- then aW(cn)
286- else (aW(cn) - ce)
287- let bS = if (ci)
288- then aW(co)
289- else if (if (ck)
290- then (cm == co)
286+ then (aX(co) - cm)
287+ else if (cl)
288+ then aX(co)
289+ else (aX(co) - cf)
290+ let bT = if (cj)
291+ then aX(cp)
292+ else if (if (cl)
293+ then (cn == cp)
291294 else false)
292- then (aW(co) - cl)
293- else if (ck)
294- then aW(co)
295- else (aW(co) - cg)
296- let cu = C(ce, cr)
297- let cv = C(cg, cs)
298- let cw = aY(cv, cu)
299- let bR = C(bQ, cr)
300- let bT = C(bS, cs)
301- let cx = if ((ct == 0))
295+ then (aX(cp) - cm)
296+ else if (cl)
297+ then aX(cp)
298+ else (aX(cp) - ch)
299+ let cv = C(cf, cs)
300+ let cw = C(ch, ct)
301+ let cx = aZ(cw, cv)
302+ let bS = C(bR, cs)
303+ let bU = C(bT, ct)
304+ let cy = if ((cu == 0))
302305 then {
303- let bU = e
304- let cy = e
305- let bz = pow((cu * cv), 0, toBigInt(5), 1, 0, DOWN)
306- $Tuple5(F(bz, a), F(cu, cr), F(cv, cs), aY((bT + cv), (bR + cu)), cy)
306+ let bV = e
307+ let cz = e
308+ let bA = pow((cv * cw), 0, toBigInt(5), 1, 0, DOWN)
309+ $Tuple5(F(bA, a), F(cv, cs), F(cw, ct), aZ((bU + cw), (bS + cv)), cz)
307310 }
308311 else {
309- let bU = aY(bT, bR)
310- let cz = fraction(M((bU - cw)), c, bU)
311- let cy = C(be, a)
312- if (if ((bU != e))
313- then (cz > cy)
312+ let bV = aZ(bU, bS)
313+ let cA = fraction(M((bV - cx)), c, bV)
314+ let cz = C(bf, a)
315+ if (if ((bV != e))
316+ then (cA > cz)
314317 else false)
315- then throw(((("Price slippage " + toString(cz)) + " > ") + toString(cy)))
318+ then throw(((("Price slippage " + toString(cA)) + " > ") + toString(cz)))
316319 else {
317- let cA = C(ct, a)
318- let cB = fraction(cu, bU, c)
319- let cC = fraction(cv, c, bU)
320- let cD = if ((cB > cv))
321- then $Tuple2(cC, cv)
322- else $Tuple2(cu, cB)
323- let cE = cD._1
324- let cF = cD._2
325- let bz = fraction(cA, cF, bT)
326- $Tuple5(F(bz, a), F(cE, cr), F(cF, cs), bU, cy)
320+ let cB = C(cu, a)
321+ let cC = fraction(cv, bV, c)
322+ let cD = fraction(cw, c, bV)
323+ let cE = if ((cC > cw))
324+ then $Tuple2(cD, cw)
325+ else $Tuple2(cv, cC)
326+ let cF = cE._1
327+ let cG = cE._2
328+ let bA = fraction(cB, cG, bU)
329+ $Tuple5(F(bA, a), F(cF, cs), F(cG, ct), bV, cz)
327330 }
328331 }
329- let cG = cx._1
330- let cH = cx._2
331- let cI = cx._3
332- let bV = F(cx._4, a)
333- let cJ = F(cx._5, a)
334- if ((0 >= cG))
332+ let cH = cy._1
333+ let cI = cy._2
334+ let cJ = cy._3
335+ let bW = F(cy._4, a)
336+ let cK = F(cy._5, a)
337+ if ((0 >= cH))
335338 then throw("LP <= 0")
336339 else {
337- let cK = if (!(cj))
340+ let cL = if (!(ck))
338341 then 0
339- else cG
340- let cL = (ce - cH)
341- let cM = (cg - cI)
342- let cN = if (if (ck)
343- then (cm == cn)
342+ else cH
343+ let cM = (cf - cI)
344+ let cN = (ch - cJ)
345+ let cO = if (if (cl)
346+ then (cn == co)
344347 else false)
345- then $Tuple2(cl, 0)
346- else if (if (ck)
347- then (cm == co)
348+ then $Tuple2(cm, 0)
349+ else if (if (cl)
350+ then (cn == cp)
348351 else false)
349- then $Tuple2(0, cl)
350- else $Tuple2(cH, cI)
351- let cO = cN._1
352- let cP = cN._2
353- let cQ = [IntegerEntry(Q(), bV), IntegerEntry(R(height, lastBlock.timestamp), bV), StringEntry(U(bI, bF), aH(cO, cP, cK, bV, be, cJ, height, lastBlock.timestamp, cL, cM))]
354- $Tuple13(cG, cK, bV, bQ, bS, ct, bJ, bO, cQ, cL, cM, cf, ch)
352+ then $Tuple2(0, cm)
353+ else $Tuple2(cI, cJ)
354+ let cP = cO._1
355+ let cQ = cO._2
356+ let cR = [IntegerEntry(Q(), bW), IntegerEntry(R(height, lastBlock.timestamp), bW), StringEntry(U(bJ, bG), aI(cP, cQ, cL, bW, bf, cK, height, lastBlock.timestamp, cM, cN))]
357+ $Tuple13(cH, cL, bW, bR, bT, cu, bK, bP, cR, cM, cN, cg, ci)
355358 }
356359 }
357360
358361
359-func cR (cS) = {
360- let bv = aC()
361- let cT = bv[s]
362- let cU = bv[t]
363- let bO = parseIntValue(bv[q])
364- let bw = parseIntValue(bv[u])
365- let bx = parseIntValue(bv[v])
366- let cV = aW(cT)
367- let cW = aW(cU)
368- let bU = if ((cS.orderType == Buy))
369- then bm(bw, bx, (cV + cS.amount), cW)
370- else bm(bw, bx, (cV - cS.amount), cW)
371- let bV = F(bU, a)
372- if (if (if (az())
362+func cS (cT) = {
363+ let bw = aD()
364+ let cU = bw[s]
365+ let cV = bw[t]
366+ let bP = parseIntValue(bw[q])
367+ let bx = parseIntValue(bw[u])
368+ let by = parseIntValue(bw[v])
369+ let cW = aX(cU)
370+ let cX = aX(cV)
371+ let bV = if ((cT.orderType == Buy))
372+ then bn(bx, by, (cW + cT.amount), cX)
373+ else bn(bx, by, (cW - cT.amount), cX)
374+ let bW = F(bV, a)
375+ if (if (if (aA())
373376 then true
374- else (bO == n))
377+ else (bP == n))
375378 then true
376- else (bO == o))
379+ else (bP == o))
377380 then throw("Admin blocked")
378381 else {
379- let cX = cS.assetPair.amountAsset
380- let cY = if ((cX == unit))
382+ let cY = cT.assetPair.amountAsset
383+ let cZ = if ((cY == unit))
381384 then "WAVES"
382- else toBase58String(value(cX))
383- let cZ = cS.assetPair.priceAsset
384- let da = if ((cZ == unit))
385+ else toBase58String(value(cY))
386+ let da = cT.assetPair.priceAsset
387+ let db = if ((da == unit))
385388 then "WAVES"
386- else toBase58String(value(cZ))
387- if (if ((cY != cT))
389+ else toBase58String(value(da))
390+ if (if ((cZ != cU))
388391 then true
389- else (da != cU))
392+ else (db != cV))
390393 then throw("Wr assets")
391394 else {
392- let db = cS.price
393- let cs = fraction(a, bx, bw)
394- let dc = I(db, a, cs)
395- let dd = if ((cS.orderType == Buy))
396- then (bV >= dc)
397- else (dc >= bV)
395+ let dc = cT.price
396+ let ct = fraction(a, by, bx)
397+ let dd = I(dc, a, ct)
398+ let de = if ((cT.orderType == Buy))
399+ then (bW >= dd)
400+ else (dd >= bW)
398401 true
399402 }
400403 }
401404 }
402405
403406
404-func de (df) = if ((size(df.payments) != 1))
407+func df (dg) = if ((size(dg.payments) != 1))
405408 then throw("1 pmnt exp")
406409 else {
407- let dg = value(df.payments[0])
408- let bG = value(dg.assetId)
409- let cl = dg.amount
410- let cx = bE(toBase58String(df.transactionId), toBase58String(bG), cl, df.caller)
411- let ca = cx._1
412- let cb = cx._2
413- let bO = parseIntValue(cx._9)
414- let cc = cx._10
415- if (if (az())
410+ let dh = value(dg.payments[0])
411+ let bH = value(dh.assetId)
412+ let cm = dh.amount
413+ let cy = bF(toBase58String(dg.transactionId), toBase58String(bH), cm, dg.caller)
414+ let cb = cy._1
415+ let cc = cy._2
416+ let bP = parseIntValue(cy._9)
417+ let cd = cy._10
418+ if (if (aA())
416419 then true
417- else (bO == o))
418- then throw(("Admin blocked: " + toString(bO)))
419- else $Tuple5(ca, cb, cl, bG, cc)
420+ else (bP == o))
421+ then throw(("Admin blocked: " + toString(bP)))
422+ else $Tuple5(cb, cc, cm, bH, cd)
420423 }
421424
422425
423-func dh (di,W,dj,dk,be,cj,ck,cl,cm) = {
424- let cx = cd(W, be, value(dj).amount, value(dj).assetId, value(dk).amount, value(dk).assetId, di, false, cj, ck, cl, cm)
425- let bO = parseIntValue(cx._8)
426- if (if (if (az())
426+func di (dj,W,dk,dl,bf,ck,cl,cm,cn) = {
427+ let cy = ce(W, bf, value(dk).amount, value(dk).assetId, value(dl).amount, value(dl).assetId, dj, false, ck, cl, cm, cn)
428+ let bP = parseIntValue(cy._8)
429+ if (if (if (aA())
427430 then true
428- else (bO == m))
431+ else (bP == m))
429432 then true
430- else (bO == o))
431- then throw(("Blocked:" + toString(bO)))
432- else cx
433+ else (bP == o))
434+ then throw(("Blocked:" + toString(bP)))
435+ else cy
433436 }
434437
435438
436-func dl (dm) = {
437- let dn = fraction(dm, ad, d)
438- $Tuple2((dm - dn), dn)
439+func dm (dn) = {
440+ let do = fraction(dn, ad, d)
441+ $Tuple2((dn - do), do)
439442 }
440443
441444
442-func do () = {
443- let ar = getString(O())
444- if ($isInstanceOf(ar, "String"))
445+func dp () = {
446+ let as = getString(O())
447+ if ($isInstanceOf(as, "String"))
445448 then {
446- let dp = ar
447- fromBase58String(dp)
449+ let dq = as
450+ fromBase58String(dq)
448451 }
449- else if ($isInstanceOf(ar, "Unit"))
452+ else if ($isInstanceOf(as, "Unit"))
450453 then unit
451454 else throw("Match error")
452455 }
453456
454457
455-func dq () = {
456- let ar = getString(P())
457- if ($isInstanceOf(ar, "String"))
458+func dr () = {
459+ let as = getString(P())
460+ if ($isInstanceOf(as, "String"))
458461 then {
459- let dp = ar
460- fromBase58String(dp)
462+ let dq = as
463+ fromBase58String(dq)
461464 }
462- else if ($isInstanceOf(ar, "Unit"))
465+ else if ($isInstanceOf(as, "Unit"))
463466 then unit
464467 else throw("Match error")
465468 }
466469
467470
468-let dr = throw("Permission denied")
471+let ds = throw("Permission denied")
469472
470-func ds (df) = {
471- let ar = do()
472- if ($isInstanceOf(ar, "ByteVector"))
473+func dt (dg) = {
474+ let as = dp()
475+ if ($isInstanceOf(as, "ByteVector"))
473476 then {
474- let dt = ar
475- if ((df.callerPublicKey == dt))
477+ let du = as
478+ if ((dg.callerPublicKey == du))
476479 then true
477- else dr
480+ else ds
478481 }
479- else if ($isInstanceOf(ar, "Unit"))
480- then if ((df.caller == this))
482+ else if ($isInstanceOf(as, "Unit"))
483+ then if ((dg.caller == this))
481484 then true
482- else dr
485+ else ds
483486 else throw("Match error")
484487 }
485488
486489
487-@Callable(df)
490+@Callable(dg)
488491 func constructor (N) = {
489- let du = ds(df)
490- if ((du == du))
492+ let dv = dt(dg)
493+ if ((dv == dv))
491494 then [StringEntry(N(), N)]
492495 else throw("Strict value is not equal to itself.")
493496 }
494497
495498
496499
497-@Callable(df)
498-func setManager (dv) = {
499- let du = ds(df)
500- if ((du == du))
500+@Callable(dg)
501+func setManager (dw) = {
502+ let dv = dt(dg)
503+ if ((dv == dv))
501504 then {
502- let dw = fromBase58String(dv)
503- if ((dw == dw))
504- then [StringEntry(P(), dv)]
505+ let dx = fromBase58String(dw)
506+ if ((dx == dx))
507+ then [StringEntry(P(), dw)]
505508 else throw("Strict value is not equal to itself.")
506509 }
507510 else throw("Strict value is not equal to itself.")
509512
510513
511514
512-@Callable(df)
515+@Callable(dg)
513516 func confirmManager () = {
514- let bD = dq()
515- let dx = if (isDefined(bD))
517+ let bE = dr()
518+ let dy = if (isDefined(bE))
516519 then true
517520 else throw("No pending manager")
518- if ((dx == dx))
521+ if ((dy == dy))
519522 then {
520- let dy = if ((df.callerPublicKey == value(bD)))
523+ let dz = if ((dg.callerPublicKey == value(bE)))
521524 then true
522525 else throw("You are not pending manager")
523- if ((dy == dy))
524- then [StringEntry(O(), toBase58String(value(bD))), DeleteEntry(P())]
526+ if ((dz == dz))
527+ then [StringEntry(O(), toBase58String(value(bE))), DeleteEntry(P())]
525528 else throw("Strict value is not equal to itself.")
526529 }
527530 else throw("Strict value is not equal to itself.")
529532
530533
531534
532-@Callable(df)
533-func put (dz,dA) = {
534- let dB = aG()
535- let dC = valueOrErrorMessage(addressFromString(dB[y]), "Wr st addr")
536- let dD = valueOrErrorMessage(addressFromString(dB[z]), "Wr sl addr")
537- if ((0 > dz))
535+@Callable(dg)
536+func put (dA,dB) = {
537+ let dC = aH()
538+ let dD = valueOrErrorMessage(addressFromString(dC[y]), "Wr st addr")
539+ let dE = valueOrErrorMessage(addressFromString(dC[z]), "Wr sl addr")
540+ if ((0 > dA))
538541 then throw("Wrong slippage")
539- else if ((size(df.payments) != 2))
542+ else if ((size(dg.payments) != 2))
540543 then throw("2 pmnts expd")
541544 else {
542- let dE = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(value(df.payments[0]).assetId, value(df.payments[0]).amount), df.payments[1], dz, true, false, 0, "")
543- let cK = dE._2
544- let dF = dE._7
545- let cc = dE._9
546- let cL = dE._10
547- let cM = dE._11
548- let bK = dE._12
549- let bL = dE._13
550- let cx = invoke(ax, "emit", [cK], nil)
551- if ((cx == cx))
545+ let dF = di(toString(dg.caller), toBase58String(dg.transactionId), AttachedPayment(value(dg.payments[0]).assetId, value(dg.payments[0]).amount), dg.payments[1], dA, true, false, 0, "")
546+ let cL = dF._2
547+ let dG = dF._7
548+ let cd = dF._9
549+ let cM = dF._10
550+ let cN = dF._11
551+ let bL = dF._12
552+ let bM = dF._13
553+ let cy = invoke(ay, "emit", [cL], nil)
554+ if ((cy == cy))
552555 then {
553- let dG = {
554- let ar = cx
555- if ($isInstanceOf(ar, "Address"))
556+ let dH = {
557+ let as = cy
558+ if ($isInstanceOf(as, "Address"))
556559 then {
557- let dH = ar
558- invoke(dH, "emit", [cK], nil)
560+ let dI = as
561+ invoke(dI, "emit", [cL], nil)
559562 }
560563 else unit
561564 }
562- if ((dG == dG))
565+ if ((dH == dH))
563566 then {
564- let dI = if ((cL > 0))
565- then invoke(dD, "put", nil, [AttachedPayment(bK, cL)])
567+ let dJ = if ((cM > 0))
568+ then invoke(dE, "put", nil, [AttachedPayment(bL, cM)])
566569 else nil
567- if ((dI == dI))
570+ if ((dJ == dJ))
568571 then {
569- let dJ = if ((cM > 0))
570- then invoke(dD, "put", nil, [AttachedPayment(bL, cM)])
572+ let dK = if ((cN > 0))
573+ then invoke(dE, "put", nil, [AttachedPayment(bM, cN)])
571574 else nil
572- if ((dJ == dJ))
575+ if ((dK == dK))
573576 then {
574- let dK = if (dA)
577+ let dL = if (dB)
575578 then {
576- let dL = invoke(dC, "stake", nil, [AttachedPayment(dF, cK)])
577- if ((dL == dL))
579+ let dM = invoke(dD, "stake", nil, [AttachedPayment(dG, cL)])
580+ if ((dM == dM))
578581 then nil
579582 else throw("Strict value is not equal to itself.")
580583 }
581- else [ScriptTransfer(df.caller, cK, dF)]
582- (cc ++ dK)
584+ else [ScriptTransfer(dg.caller, cL, dG)]
585+ (cd ++ dL)
583586 }
584587 else throw("Strict value is not equal to itself.")
585588 }
593596
594597
595598
596-@Callable(df)
597-func putOneTkn (dM,dN,dO,be,dA) = {
598- let bv = aG()
599- let dC = valueOrErrorMessage(addressFromString(bv[y]), "Wr st addr")
600- let dD = valueOrErrorMessage(addressFromString(bv[z]), "Wr sl addr")
601- let dP = valueOrErrorMessage(addressFromString(bv[A]), "Wr gwx addr")
602- let dQ = aC()
603- let bK = dQ[s]
604- let bL = dQ[t]
605- let bM = parseIntValue(dQ[u])
606- let bN = parseIntValue(dQ[v])
607- let dR = valueOrElse(getString(this, ab()), "")
608- let bI = if ((dR == toString(df.caller)))
609- then df.originCaller
610- else df.caller
611- if (if (if (if ((0 >= be))
612- then true
613- else (0 >= dM))
599+@Callable(dg)
600+func putOneTkn (dN,dO,dP,bf,dB) = {
601+ let bw = aH()
602+ let dD = valueOrErrorMessage(addressFromString(bw[y]), "Wr st addr")
603+ let dE = valueOrErrorMessage(addressFromString(bw[z]), "Wr sl addr")
604+ let dQ = valueOrErrorMessage(addressFromString(bw[A]), "Wr gwx addr")
605+ let dR = aD()
606+ let bL = dR[s]
607+ let bM = dR[t]
608+ let bN = parseIntValue(dR[u])
609+ let bO = parseIntValue(dR[v])
610+ let dS = valueOrElse(getString(this, ab()), "")
611+ let bJ = if ((dS == toString(dg.caller)))
612+ then dg.originCaller
613+ else dg.caller
614+ if (if (if (if ((0 >= bf))
614615 then true
615616 else (0 >= dN))
616617 then true
617618 else (0 >= dO))
619+ then true
620+ else (0 >= dP))
618621 then throw("Wrong params")
619- else if ((size(df.payments) != 1))
622+ else if ((size(dg.payments) != 1))
620623 then throw("1 pmnt expd")
621624 else {
622- let dg = value(df.payments[0])
623- let bG = toBase58String(value(dg.assetId))
624- let dS = dg.amount
625- let dT = dl(dS)
626- let cl = dT._1
627- let dU = dT._2
628- if (if (if ((dM > cl))
629- then true
630- else (dN > cl))
631- then true
632- else (10000000 > dS))
625+ let dh = value(dg.payments[0])
626+ let bH = toBase58String(value(dh.assetId))
627+ let dT = dh.amount
628+ let dU = dm(dT)
629+ let cm = dU._1
630+ let dV = dU._2
631+ if ((10000000 > dT))
633632 then throw("Wrong pmt amt")
634633 else {
635- let bQ = aW(bK)
636- let bS = aW(bL)
637- let dV = if ((bG == bK))
638- then $Tuple6((bQ - cl), bS, (cl - dM), dN, 0, 0)
639- else if ((bG == bL))
640- then $Tuple6(bQ, (bS - cl), 0, 0, (cl - dN), dM)
634+ let bR = aX(bL)
635+ let bT = aX(bM)
636+ let dW = if ((bH == bL))
637+ then if (if ((cm > bR))
638+ then true
639+ else (dN > cm))
640+ then throw("invalid payment amount")
641+ else $Tuple6((bR - cm), bT, (cm - dN), dO, 0, 0)
642+ else if ((bH == bM))
643+ then if (if ((cm > bT))
644+ then true
645+ else (dO > cm))
646+ then throw("invalid payment amount")
647+ else $Tuple6(bR, (bT - cm), 0, 0, (cm - dO), dN)
641648 else throw("wrong pmtAssetId")
642- let dW = dV._1
643- let dX = dV._2
644- let dY = dV._3
645- let dZ = dV._4
646- let ea = dV._5
647- let eb = dV._6
648- let bj = invoke(dP, "calcD", [toString(dW), toString(dX), ay, h, i], nil)
649- let bi = invoke(dP, "calcD", [toString(toBigInt(((dW + dY) - eb))), toString(toBigInt(((dX + ea) - dZ))), ay, h, i], nil)
650- let ec = bh(parseBigIntValue(aq(bi)), parseBigIntValue(aq(bj)), g)
651- if ((ec == ec))
649+ let dX = dW._1
650+ let dY = dW._2
651+ let dZ = dW._3
652+ let ea = dW._4
653+ let eb = dW._5
654+ let ec = dW._6
655+ let bk = invoke(dQ, "calcD", [toString(dX), toString(dY), az, h, i], nil)
656+ let bj = invoke(dQ, "calcD", [toString(toBigInt(((dX + dZ) - ec))), toString(toBigInt(((dY + eb) - ea))), az, h, i], nil)
657+ let ed = bi(parseBigIntValue(ar(bj)), parseBigIntValue(ar(bk)), g)
658+ if ((ed == ed))
652659 then {
653- let ed = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(fromBase58String(bK), dM), AttachedPayment(fromBase58String(bL), dN), be, true, true, cl, bG)
654- let ee = ed._2
655- let dF = ed._7
656- let cc = ed._9
657- let cL = ed._10
658- let cM = ed._11
659- let ef = bb(toBigInt(ee), toBigInt(dO), toBigInt(be))
660- let cK = toInt(ef._2)
661- let dE = invoke(ax, "emit", [cK], nil)
662- if ((dE == dE))
660+ let ee = di(toString(dg.caller), toBase58String(dg.transactionId), AttachedPayment(fromBase58String(bL), dN), AttachedPayment(fromBase58String(bM), dO), bf, true, true, cm, bH)
661+ let ef = ee._2
662+ let dG = ee._7
663+ let cd = ee._9
664+ let cM = ee._10
665+ let cN = ee._11
666+ let eg = bc(toBigInt(ef), toBigInt(dP), toBigInt(bf))
667+ let cL = toInt(eg._2)
668+ let dF = invoke(ay, "emit", [cL], nil)
669+ if ((dF == dF))
663670 then {
664- let dG = {
665- let ar = dE
666- if ($isInstanceOf(ar, "Address"))
671+ let dH = {
672+ let as = dF
673+ if ($isInstanceOf(as, "Address"))
667674 then {
668- let dH = ar
669- invoke(dH, "emit", [cK], nil)
675+ let dI = as
676+ invoke(dI, "emit", [cL], nil)
670677 }
671678 else unit
672679 }
673- if ((dG == dG))
680+ if ((dH == dH))
674681 then {
675- let dI = if ((cL > 0))
676- then invoke(dD, "put", nil, [AttachedPayment(fromBase58String(bK), cL)])
682+ let dJ = if ((cM > 0))
683+ then invoke(dE, "put", nil, [AttachedPayment(fromBase58String(bL), cM)])
677684 else nil
678- if ((dI == dI))
685+ if ((dJ == dJ))
679686 then {
680- let dJ = if ((cM > 0))
681- then invoke(dD, "put", nil, [AttachedPayment(fromBase58String(bL), cM)])
687+ let dK = if ((cN > 0))
688+ then invoke(dE, "put", nil, [AttachedPayment(fromBase58String(bM), cN)])
682689 else nil
683- if ((dJ == dJ))
690+ if ((dK == dK))
684691 then {
685- let dK = if (dA)
692+ let dL = if (dB)
686693 then {
687- let dL = invoke(dC, "stake", nil, [AttachedPayment(dF, cK)])
688- if ((dL == dL))
694+ let dM = invoke(dD, "stake", nil, [AttachedPayment(dG, cL)])
695+ if ((dM == dM))
689696 then nil
690697 else throw("Strict value is not equal to itself.")
691698 }
692- else [ScriptTransfer(df.caller, cK, dF)]
693- let eg = if ((dU > 0))
694- then [ScriptTransfer(aB, dU, fromBase58String(bG))]
699+ else [ScriptTransfer(dg.caller, cL, dG)]
700+ let eh = if ((dV > 0))
701+ then [ScriptTransfer(aC, dV, fromBase58String(bH))]
695702 else nil
696- ((cc ++ dK) ++ eg)
703+ ((cd ++ dL) ++ eh)
697704 }
698705 else throw("Strict value is not equal to itself.")
699706 }
710717
711718
712719
713-@Callable(df)
714-func putForFree (eh) = if ((0 > eh))
720+@Callable(dg)
721+func putForFree (ei) = if ((0 > ei))
715722 then throw("Wrong slpg")
716- else if ((size(df.payments) != 2))
723+ else if ((size(dg.payments) != 2))
717724 then throw("2 pmnts expd")
718725 else {
719- let ed = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(value(df.payments[0]).assetId, value(df.payments[0]).amount), df.payments[1], eh, false, false, 0, "")
720- ed._9
726+ let ee = di(toString(dg.caller), toBase58String(dg.transactionId), AttachedPayment(value(dg.payments[0]).assetId, value(dg.payments[0]).amount), dg.payments[1], ei, false, false, 0, "")
727+ ee._9
721728 }
722729
723730
724731
725-@Callable(df)
732+@Callable(dg)
726733 func get () = {
727- let cx = de(df)
728- let ei = cx._1
729- let cb = cx._2
730- let cl = cx._3
731- let bG = cx._4
732- let cc = cx._5
733- let ej = invoke(ax, "burn", [cl], [AttachedPayment(bG, cl)])
734- if ((ej == ej))
735- then cc
734+ let cy = df(dg)
735+ let ej = cy._1
736+ let cc = cy._2
737+ let cm = cy._3
738+ let bH = cy._4
739+ let cd = cy._5
740+ let ek = invoke(ay, "burn", [cm], [AttachedPayment(bH, cm)])
741+ if ((ek == ek))
742+ then cd
736743 else throw("Strict value is not equal to itself.")
737744 }
738745
739746
740747
741-@Callable(df)
742-func getOneTkn (ek,el,em,en,be) = if ((size(df.payments) != 1))
748+@Callable(dg)
749+func getOneTkn (el,em,en,eo,bf) = if ((size(dg.payments) != 1))
743750 then throw("1 pmnt expd")
744751 else {
745- let bv = aC()
746- let bJ = bv[r]
747- let bK = bv[s]
748- let bL = bv[t]
749- let bM = parseIntValue(bv[u])
750- let bN = parseIntValue(bv[v])
751- let bO = bv[q]
752- let dB = aG()
753- let dP = valueOrErrorMessage(addressFromString(dB[A]), "Wr sl addr")
754- let dg = value(df.payments[0])
755- let dR = valueOrElse(getString(this, ab()), "")
756- let bI = if ((dR == toString(df.caller)))
757- then df.originCaller
758- else df.caller
759- let bF = toBase58String(df.transactionId)
760- let bG = value(dg.assetId)
761- let cl = dg.amount
762- if ((1000000000 > cl))
752+ let bw = aD()
753+ let bK = bw[r]
754+ let bL = bw[s]
755+ let bM = bw[t]
756+ let bN = parseIntValue(bw[u])
757+ let bO = parseIntValue(bw[v])
758+ let bP = bw[q]
759+ let dC = aH()
760+ let dQ = valueOrErrorMessage(addressFromString(dC[A]), "Wr sl addr")
761+ let dh = value(dg.payments[0])
762+ let dS = valueOrElse(getString(this, ab()), "")
763+ let bJ = if ((dS == toString(dg.caller)))
764+ then dg.originCaller
765+ else dg.caller
766+ let bG = toBase58String(dg.transactionId)
767+ let bH = value(dh.assetId)
768+ let cm = dh.amount
769+ if ((1000000000 > cm))
763770 then throw("Min pmt 10 LP")
764- else if (if (if ((0 > be))
771+ else if (if (if ((0 > bf))
765772 then true
766- else (0 > ek))
773+ else (0 > el))
767774 then true
768- else (0 > em))
775+ else (0 > en))
769776 then throw("Wrong params")
770- else if ((bJ != toBase58String(bG)))
777+ else if ((bK != toBase58String(bH)))
771778 then throw("Wrong LP")
772779 else {
773- let cx = bE(toBase58String(df.transactionId), toBase58String(bG), cl, df.caller)
774- let eo = cx._1
775- let ep = cx._2
776- let bQ = aW(bK)
777- let bS = aW(bL)
778- let eq = if ((en == bK))
779- then $Tuple7((bQ - eo), (bS - ep), ek, ep, 0, 0, (eo + ek))
780- else if ((en == bL))
781- then $Tuple7((bQ - eo), (bS - ep), 0, 0, ek, eo, (ep + ek))
780+ let cy = bF(toBase58String(dg.transactionId), toBase58String(bH), cm, dg.caller)
781+ let ep = cy._1
782+ let eq = cy._2
783+ let bR = aX(bL)
784+ let bT = aX(bM)
785+ let er = if ((eo == bL))
786+ then $Tuple7((bR - ep), (bT - eq), el, eq, 0, 0, (ep + el))
787+ else if ((eo == bM))
788+ then $Tuple7((bR - ep), (bT - eq), 0, 0, el, ep, (eq + el))
782789 else throw("wrong outAssetId")
783- let dW = eq._1
784- let dX = eq._2
785- let dY = eq._3
786- let dZ = eq._4
787- let ea = eq._5
788- let eb = eq._6
789- let er = eq._7
790- if (if ((0 > dY))
790+ let dX = er._1
791+ let dY = er._2
792+ let dZ = er._3
793+ let ea = er._4
794+ let eb = er._5
795+ let ec = er._6
796+ let es = er._7
797+ if (if ((0 > dZ))
791798 then true
792- else (0 > ea))
799+ else (0 > eb))
793800 then throw("Wrong calc")
794801 else {
795- let bj = invoke(dP, "calcD", [toString(dW), toString(dX), ay, h, i], nil)
796- let bi = invoke(dP, "calcD", [toString(((dW - dY) + eb)), toString(((dX + dZ) - ea)), ay, h, i], nil)
797- let ec = bh(parseBigIntValue(aq(bi)), parseBigIntValue(aq(bj)), g)
798- if ((ec == ec))
802+ let bk = invoke(dQ, "calcD", [toString(dX), toString(dY), az, h, i], nil)
803+ let bj = invoke(dQ, "calcD", [toString(((dX - dZ) + ec)), toString(((dY + ea) - eb)), az, h, i], nil)
804+ let ed = bi(parseBigIntValue(ar(bj)), parseBigIntValue(ar(bk)), g)
805+ if ((ed == ed))
799806 then {
800- let es = bb(toBigInt(er), toBigInt(em), toBigInt(be))
801- if ((es == es))
807+ let et = dm(es)._1
808+ let eu = bc(toBigInt(et), toBigInt(en), toBigInt(bf))
809+ if ((eu == eu))
802810 then {
803- let et = if ((en == bK))
804- then $Tuple2(toInt(es._2), 0)
805- else $Tuple2(0, toInt(es._2))
806- let eu = et._1
807- let ev = et._2
808- let ew = (eu + ev)
809- let ex = dl(ew)
810- let ey = ex._1
811- let dU = ex._2
812- let ez = if ((en == "WAVES"))
811+ let ev = if ((eo == bL))
812+ then $Tuple2(toInt(eu._2), 0)
813+ else $Tuple2(0, toInt(eu._2))
814+ let ew = ev._1
815+ let ex = ev._2
816+ let ey = (ew + ex)
817+ let dV = (es - et)
818+ let ez = if ((eo == "WAVES"))
813819 then unit
814- else fromBase58String(en)
815- let eg = if ((dU > 0))
816- then [ScriptTransfer(aB, dU, ez)]
820+ else fromBase58String(eo)
821+ let eh = if ((dV > 0))
822+ then [ScriptTransfer(aC, dV, ez)]
817823 else nil
818- let eA = aY(C(bS, bN), C(bQ, bM))
824+ let eA = aZ(C(bT, bO), C(bR, bN))
819825 let eB = F(eA, a)
820- let cc = [ScriptTransfer(bI, ey, ez), StringEntry(X(toString(bI), bF), aS(eu, ev, cl, eB, height, lastBlock.timestamp)), IntegerEntry(Q(), eB), IntegerEntry(R(height, lastBlock.timestamp), eB)]
821- if ((cc == cc))
826+ let cd = [ScriptTransfer(bJ, ey, ez), StringEntry(X(toString(bJ), bG), aT(ew, ex, cm, eB, height, lastBlock.timestamp)), IntegerEntry(Q(), eB), IntegerEntry(R(height, lastBlock.timestamp), eB)]
827+ if ((cd == cd))
822828 then {
823- let eC = invoke(ax, "burn", [cl], [AttachedPayment(bG, cl)])
829+ let eC = invoke(ay, "burn", [cm], [AttachedPayment(bH, cm)])
824830 if ((eC == eC))
825- then (cc ++ eg)
831+ then (cd ++ eh)
826832 else throw("Strict value is not equal to itself.")
827833 }
828834 else throw("Strict value is not equal to itself.")
836842
837843
838844
839-@Callable(df)
845+@Callable(dg)
840846 func getNoLess (eD,eE) = {
841- let cx = de(df)
842- let ca = cx._1
843- let cb = cx._2
844- let cl = cx._3
845- let bG = cx._4
846- let cc = cx._5
847- if ((eD > ca))
848- then throw(((("Failed: " + toString(ca)) + " < ") + toString(eD)))
849- else if ((eE > cb))
850- then throw(((("Failed: " + toString(cb)) + " < ") + toString(eE)))
847+ let cy = df(dg)
848+ let cb = cy._1
849+ let cc = cy._2
850+ let cm = cy._3
851+ let bH = cy._4
852+ let cd = cy._5
853+ if ((eD > cb))
854+ then throw(((("Failed: " + toString(cb)) + " < ") + toString(eD)))
855+ else if ((eE > cc))
856+ then throw(((("Failed: " + toString(cc)) + " < ") + toString(eE)))
851857 else {
852- let eF = invoke(ax, "burn", [cl], [AttachedPayment(bG, cl)])
858+ let eF = invoke(ay, "burn", [cm], [AttachedPayment(bH, cm)])
853859 if ((eF == eF))
854- then cc
860+ then cd
855861 else throw("Strict value is not equal to itself.")
856862 }
857863 }
858864
859865
860866
861-@Callable(df)
862-func unstakeAndGet (dm) = {
863- let eG = if ((size(df.payments) != 0))
867+@Callable(dg)
868+func unstakeAndGet (dn) = {
869+ let eG = if ((size(dg.payments) != 0))
864870 then throw("No pmnts expd")
865871 else true
866872 if ((eG == eG))
867873 then {
868- let bv = aC()
869- let eH = aG()
870- let dF = fromBase58String(bv[r])
874+ let bw = aD()
875+ let eH = aH()
876+ let dG = fromBase58String(bw[r])
871877 let eI = valueOrErrorMessage(addressFromString(eH[y]), "Wr st addr")
872- let eJ = invoke(eI, "unstake", [toBase58String(dF), dm], nil)
878+ let eJ = invoke(eI, "unstake", [toBase58String(dG), dn], nil)
873879 if ((eJ == eJ))
874880 then {
875- let cx = bE(toBase58String(df.transactionId), toBase58String(dF), dm, df.caller)
876- let bO = parseIntValue(cx._9)
877- let cc = cx._10
878- let eK = if (if (az())
881+ let cy = bF(toBase58String(dg.transactionId), toBase58String(dG), dn, dg.caller)
882+ let bP = parseIntValue(cy._9)
883+ let cd = cy._10
884+ let eK = if (if (aA())
879885 then true
880- else (bO == o))
881- then throw(("Blocked: " + toString(bO)))
886+ else (bP == o))
887+ then throw(("Blocked: " + toString(bP)))
882888 else true
883889 if ((eK == eK))
884890 then {
885- let eL = invoke(ax, "burn", [dm], [AttachedPayment(dF, dm)])
891+ let eL = invoke(ay, "burn", [dn], [AttachedPayment(dG, dn)])
886892 if ((eL == eL))
887- then cc
893+ then cd
888894 else throw("Strict value is not equal to itself.")
889895 }
890896 else throw("Strict value is not equal to itself.")
896902
897903
898904
899-@Callable(df)
900-func activate (eM,eN) = if ((toString(df.caller) != toString(ax)))
905+@Callable(dg)
906+func activate (eM,eN) = if ((toString(dg.caller) != toString(ay)))
901907 then throw("denied")
902908 else $Tuple2([StringEntry(Y(), eM), StringEntry(Z(), eN)], "success")
903909
904910
905911
906-@Callable(df)
907-func setS (eO,eK) = if ((toString(df.caller) != at(this, ab())))
908- then dr
912+@Callable(dg)
913+func setS (eO,eK) = if ((toString(dg.caller) != au(this, ab())))
914+ then ds
909915 else [StringEntry(eO, eK)]
910916
911917
912918
913-@Callable(df)
914-func setI (eO,eK) = if ((toString(df.caller) != at(this, ab())))
915- then dr
919+@Callable(dg)
920+func setI (eO,eK) = if ((toString(dg.caller) != au(this, ab())))
921+ then ds
916922 else [IntegerEntry(eO, eK)]
917923
918924
919925
920-@Callable(df)
921-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aC())
926+@Callable(dg)
927+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aD())
922928
923929
924930
925-@Callable(df)
926-func getAccBalanceWrapperREADONLY (aX) = $Tuple2(nil, aW(aX))
931+@Callable(dg)
932+func getAccBalanceWrapperREADONLY (aY) = $Tuple2(nil, aX(aY))
927933
928934
929935
930-@Callable(df)
931-func calcPricesWrapperREADONLY (bp,bq,bu) = {
932- let eP = bt(bp, bq, bu)
936+@Callable(dg)
937+func calcPricesWrapperREADONLY (bq,br,bv) = {
938+ let eP = bu(bq, br, bv)
933939 $Tuple2(nil, [toString(eP[0]), toString(eP[1]), toString(eP[2])])
934940 }
935941
936942
937943
938-@Callable(df)
944+@Callable(dg)
939945 func fromX18WrapperREADONLY (G,eQ) = $Tuple2(nil, F(parseBigIntValue(G), eQ))
940946
941947
942948
943-@Callable(df)
949+@Callable(dg)
944950 func toX18WrapperREADONLY (D,E) = $Tuple2(nil, toString(C(D, E)))
945951
946952
947953
948-@Callable(df)
949-func calcPriceBigIntWrapperREADONLY (aZ,ba) = $Tuple2(nil, toString(aY(parseBigIntValue(aZ), parseBigIntValue(ba))))
954+@Callable(dg)
955+func calcPriceBigIntWrapperREADONLY (ba,bb) = $Tuple2(nil, toString(aZ(parseBigIntValue(ba), parseBigIntValue(bb))))
950956
951957
952958
953-@Callable(df)
954-func estimatePutOperationWrapperREADONLY (bF,be,ce,cf,cg,ch,eR,ci,cj) = $Tuple2(nil, cd(bF, be, ce, cf, cg, ch, eR, ci, cj, false, 0, ""))
959+@Callable(dg)
960+func estimatePutOperationWrapperREADONLY (bG,bf,cf,cg,ch,ci,eR,cj,ck) = $Tuple2(nil, ce(bG, bf, cf, cg, ch, ci, eR, cj, ck, false, 0, ""))
955961
956962
957963
958-@Callable(df)
959-func estimateGetOperationWrapperREADONLY (bF,eS,bH,eR) = {
960- let cx = bE(bF, eS, bH, addressFromStringValue(eR))
961- $Tuple2(nil, $Tuple10(cx._1, cx._2, cx._3, cx._4, cx._5, cx._6, cx._7, toString(cx._8), cx._9, cx._10))
964+@Callable(dg)
965+func estimateGetOperationWrapperREADONLY (bG,eS,bI,eR) = {
966+ let cy = bF(bG, eS, bI, addressFromStringValue(eR))
967+ $Tuple2(nil, $Tuple10(cy._1, cy._2, cy._3, cy._4, cy._5, cy._6, cy._7, toString(cy._8), cy._9, cy._10))
962968 }
963969
964970
965971 @Verifier(eT)
966972 func eU () = {
967- let ar = eT
968- if ($isInstanceOf(ar, "Order"))
973+ let eV = {
974+ let as = dp()
975+ if ($isInstanceOf(as, "ByteVector"))
976+ then {
977+ let du = as
978+ du
979+ }
980+ else if ($isInstanceOf(as, "Unit"))
981+ then eT.senderPublicKey
982+ else throw("Match error")
983+ }
984+ let as = eT
985+ if ($isInstanceOf(as, "Order"))
969986 then {
970- let cS = ar
971- let eV = aA()
972- let an = cR(cS)
973- let eW = sigVerify(cS.bodyBytes, cS.proofs[0], cS.senderPublicKey)
974- let eX = sigVerify(cS.bodyBytes, cS.proofs[1], eV)
975- if (if (if (an)
976- then eW
987+ let cT = as
988+ let eW = aB()
989+ let eX = cS(cT)
990+ let eY = sigVerify(cT.bodyBytes, cT.proofs[0], cT.senderPublicKey)
991+ let eZ = sigVerify(cT.bodyBytes, cT.proofs[1], eW)
992+ if (if (if (eX)
993+ then eY
977994 else false)
978- then eX
995+ then eZ
979996 else false)
980997 then true
981- else am(an, eW, eX)
998+ else an(eX, eY, eZ)
982999 }
983- else {
984- let eY = {
985- let eZ = do()
986- if ($isInstanceOf(eZ, "ByteVector"))
987- then {
988- let dt = eZ
989- dt
990- }
991- else if ($isInstanceOf(eZ, "Unit"))
992- then eT.senderPublicKey
993- else throw("Match error")
1000+ else if ($isInstanceOf(as, "SetScriptTransaction"))
1001+ then {
1002+ let dq = as
1003+ let fa = blake2b256(value(dq.script))
1004+ let fb = fromBase64String(value(getString(ay, am())))
1005+ let fc = scriptHash(this)
1006+ if (if ((fb == fa))
1007+ then (fc != fa)
1008+ else false)
1009+ then true
1010+ else sigVerify(eT.bodyBytes, eT.proofs[0], eV)
9941011 }
995- sigVerify(eT.bodyBytes, eT.proofs[0], eY)
996- }
1012+ else sigVerify(eT.bodyBytes, eT.proofs[0], eV)
9971013 }
9981014
Full:
OldNewDifferences
1-{-# STDLIB_VERSION 5 #-}
1+{-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
1010 let d = 1000
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(1)
1515
1616 let g = toBigInt((a - ((a * 1) / a)))
1717
1818 let h = "100"
1919
2020 let i = "1"
2121
2222 let j = "__"
2323
2424 let k = ""
2525
2626 let l = 1
2727
2828 let m = 2
2929
3030 let n = 3
3131
3232 let o = 4
3333
3434 let p = 1
3535
3636 let q = 2
3737
3838 let r = 3
3939
4040 let s = 4
4141
4242 let t = 5
4343
4444 let u = 6
4545
4646 let v = 7
4747
4848 let w = 8
4949
5050 let x = 9
5151
5252 let y = 1
5353
5454 let z = 7
5555
5656 let A = 10
5757
5858 let B = 0
5959
6060 func C (D,E) = fraction(toBigInt(D), c, toBigInt(E))
6161
6262
6363 func F (G,H) = toInt(fraction(G, toBigInt(H), c))
6464
6565
6666 func I (J,K,L) = fraction(J, K, L)
6767
6868
6969 func M (G) = if ((e > G))
7070 then -(G)
7171 else G
7272
7373
7474 func N () = "%s__factoryContract"
7575
7676
7777 func O () = "%s__managerPublicKey"
7878
7979
8080 func P () = "%s__pendingManagerPublicKey"
8181
8282
8383 func Q () = "%s%s__price__last"
8484
8585
8686 func R (S,T) = makeString(["%s%s%d%d__price__history", toString(S), toString(T)], j)
8787
8888
8989 func U (V,W) = ((("%s%s%s__P__" + V) + "__") + W)
9090
9191
9292 func X (V,W) = ((("%s%s%s__G__" + V) + "__") + W)
9393
9494
9595 func Y () = "%s__amountAsset"
9696
9797
9898 func Z () = "%s__priceAsset"
9999
100100
101101 func aa () = "%s__amp"
102102
103103
104104 func ab () = "%s__addonAddr"
105105
106106
107107 let ac = "%s__feePermille"
108108
109109 let ad = valueOrElse(getInteger(this, ac), B)
110110
111111 func ae () = "%s__factoryConfig"
112112
113113
114114 func af () = "%s%s__matcher__publicKey"
115115
116116
117117 func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
118118
119119
120120 func aj (ak) = ("%s%s%s__mappings__baseAsset2internalId__" + ak)
121121
122122
123123 func al () = "%s__shutdown"
124124
125125
126-func am (an,ao,ap) = throw(((((("Failed: ordValid=" + toString(an)) + " sndrValid=") + toString(ao)) + " mtchrValid=") + toString(ap)))
126+func am () = "%s__allowedLpStableScriptHash"
127127
128128
129-func aq (G) = {
130- let ar = G
131- if ($isInstanceOf(ar, "String"))
129+func an (ao,ap,aq) = throw(((((("Failed: ordValid=" + toString(ao)) + " sndrValid=") + toString(ap)) + " mtchrValid=") + toString(aq)))
130+
131+
132+func ar (G) = {
133+ let as = G
134+ if ($isInstanceOf(as, "String"))
132135 then {
133- let as = ar
134- as
136+ let at = as
137+ at
135138 }
136139 else throw("fail cast to String")
137140 }
138141
139142
140-func at (au,av) = valueOrErrorMessage(getString(au, av), makeString(["mandatory ", toString(au), ".", av, " not defined"], ""))
143+func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
141144
142145
143-func aw (au,av) = valueOrErrorMessage(getInteger(au, av), makeString(["mandatory ", toString(au), ".", av, " not defined"], ""))
146+func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
144147
145148
146-let ax = addressFromStringValue(at(this, N()))
149+let ay = addressFromStringValue(au(this, N()))
147150
148-let ay = at(this, aa())
151+let az = au(this, aa())
149152
150-func az () = valueOrElse(getBoolean(ax, al()), false)
153+func aA () = valueOrElse(getBoolean(ay, al()), false)
151154
152155
153-func aA () = fromBase58String(at(ax, af()))
156+func aB () = fromBase58String(au(ay, af()))
154157
155158
156-let aB = addressFromPublicKey(aA())
159+let aC = addressFromPublicKey(aB())
157160
158-func aC () = {
159- let aD = at(this, Y())
160- let aE = at(this, Z())
161- let aF = aw(ax, aj(aE))
162- let ah = aw(ax, aj(aD))
163- split(at(ax, ag(toString(ah), toString(aF))), j)
161+func aD () = {
162+ let aE = au(this, Y())
163+ let aF = au(this, Z())
164+ let aG = ax(ay, aj(aF))
165+ let ah = ax(ay, aj(aE))
166+ split(au(ay, ag(toString(ah), toString(aG))), j)
164167 }
165168
166169
167-func aG () = split(at(ax, ae()), j)
170+func aH () = split(au(ay, ae()), j)
168171
169172
170-func aH (aI,aJ,aK,aL,aM,aN,aO,aP,aQ,aR) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aI), toString(aJ), toString(aK), toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR)], j)
173+func aI (aJ,aK,aL,aM,aN,aO,aP,aQ,aR,aS) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aJ), toString(aK), toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS)], j)
171174
172175
173-func aS (aT,aU,aV,aL,aO,aP) = makeString(["%d%d%d%d%d%d", toString(aT), toString(aU), toString(aV), toString(aL), toString(aO), toString(aP)], j)
176+func aT (aU,aV,aW,aM,aP,aQ) = makeString(["%d%d%d%d%d%d", toString(aU), toString(aV), toString(aW), toString(aM), toString(aP), toString(aQ)], j)
174177
175178
176-func aW (aX) = if ((aX == "WAVES"))
179+func aX (aY) = if ((aY == "WAVES"))
177180 then wavesBalance(this).available
178- else assetBalance(this, fromBase58String(aX))
181+ else assetBalance(this, fromBase58String(aY))
179182
180183
181-func aY (aZ,ba) = fraction(aZ, c, ba)
184+func aZ (ba,bb) = fraction(ba, c, bb)
182185
183186
184-func bb (bc,bd,be) = {
185- let bf = fraction((bc - bd), b, bd)
186- let bg = ((be - M(bf)) > e)
187- if (!(bg))
188- then throw(("Big slpg: " + toString(bf)))
189- else $Tuple2(bg, min([bc, bd]))
187+func bc (bd,be,bf) = {
188+ let bg = fraction((bd - be), b, be)
189+ let bh = ((bf - M(bg)) > e)
190+ if (!(bh))
191+ then throw(("Big slpg: " + toString(bg)))
192+ else $Tuple2(bh, min([bd, be]))
190193 }
191194
192195
193-func bh (bi,bj,bk) = {
194- let bf = fraction(bj, b, bi)
195- let bl = (bk > bf)
196- if (if (bl)
196+func bi (bj,bk,bl) = {
197+ let bg = fraction(bk, b, bj)
198+ let bm = (bl > bg)
199+ if (if (bm)
197200 then true
198- else (bj > bi))
199- then throw(((((((toString(bj) + " ") + toString(bi)) + " ") + toString(bf)) + " ") + toString(bk)))
200- else bl
201+ else (bk > bj))
202+ then throw(((((((toString(bk) + " ") + toString(bj)) + " ") + toString(bg)) + " ") + toString(bl)))
203+ else bm
201204 }
202205
203206
204-func bm (bn,bo,bp,bq) = {
205- let br = C(bp, bn)
207+func bn (bo,bp,bq,br) = {
206208 let bs = C(bq, bo)
207- aY(bs, br)
209+ let bt = C(br, bp)
210+ aZ(bt, bs)
208211 }
209212
210213
211-func bt (bp,bq,bu) = {
212- let bv = aC()
213- let bw = parseIntValue(bv[u])
214- let bx = parseIntValue(bv[v])
215- let by = bm(bw, bx, bp, bq)
216- let ba = C(bp, bw)
217- let aZ = C(bq, bx)
218- let bz = C(bu, a)
219- let bA = aY(ba, bz)
220- let bB = aY(aZ, bz)
221-[by, bA, bB]
214+func bu (bq,br,bv) = {
215+ let bw = aD()
216+ let bx = parseIntValue(bw[u])
217+ let by = parseIntValue(bw[v])
218+ let bz = bn(bx, by, bq, br)
219+ let bb = C(bq, bx)
220+ let ba = C(br, by)
221+ let bA = C(bv, a)
222+ let bB = aZ(bb, bA)
223+ let bC = aZ(ba, bA)
224+[bz, bB, bC]
222225 }
223226
224227
225-func bC (bp,bq,bu) = {
226- let bD = bt(bp, bq, bu)
227-[F(bD[0], a), F(bD[1], a), F(bD[2], a)]
228+func bD (bq,br,bv) = {
229+ let bE = bu(bq, br, bv)
230+[F(bE[0], a), F(bE[1], a), F(bE[2], a)]
228231 }
229232
230233
231-func bE (bF,bG,bH,bI) = {
232- let bv = aC()
233- let bJ = bv[r]
234- let bK = bv[s]
235- let bL = bv[t]
236- let bM = parseIntValue(bv[u])
237- let bN = parseIntValue(bv[v])
238- let bO = bv[q]
239- let bP = valueOrErrorMessage(assetInfo(fromBase58String(bJ)), "Wrong LP id").quantity
240- if ((bJ != bG))
234+func bF (bG,bH,bI,bJ) = {
235+ let bw = aD()
236+ let bK = bw[r]
237+ let bL = bw[s]
238+ let bM = bw[t]
239+ let bN = parseIntValue(bw[u])
240+ let bO = parseIntValue(bw[v])
241+ let bP = bw[q]
242+ let bQ = valueOrErrorMessage(assetInfo(fromBase58String(bK)), "Wrong LP id").quantity
243+ if ((bK != bH))
241244 then throw("Wrong pmt asset")
242245 else {
243- let bQ = aW(bK)
244- let bR = C(bQ, bM)
245- let bS = aW(bL)
246- let bT = C(bS, bN)
247- let bU = aY(bT, bR)
248- let bV = F(bU, a)
249- let bW = C(bH, a)
250- let bX = C(bP, a)
251- let bY = fraction(bR, bW, bX)
252- let bZ = fraction(bT, bW, bX)
253- let ca = F(bY, bM)
246+ let bR = aX(bL)
247+ let bS = C(bR, bN)
248+ let bT = aX(bM)
249+ let bU = C(bT, bO)
250+ let bV = aZ(bU, bS)
251+ let bW = F(bV, a)
252+ let bX = C(bI, a)
253+ let bY = C(bQ, a)
254+ let bZ = fraction(bS, bX, bY)
255+ let ca = fraction(bU, bX, bY)
254256 let cb = F(bZ, bN)
255- let cc = if ((bF == ""))
257+ let cc = F(ca, bO)
258+ let cd = if ((bG == ""))
256259 then nil
257- else [ScriptTransfer(bI, ca, if ((bK == "WAVES"))
260+ else [ScriptTransfer(bJ, cb, if ((bL == "WAVES"))
258261 then unit
259- else fromBase58String(bK)), ScriptTransfer(bI, cb, if ((bL == "WAVES"))
262+ else fromBase58String(bL)), ScriptTransfer(bJ, cc, if ((bM == "WAVES"))
260263 then unit
261- else fromBase58String(bL)), StringEntry(X(toString(bI), bF), aS(ca, cb, bH, bV, height, lastBlock.timestamp)), IntegerEntry(Q(), bV), IntegerEntry(R(height, lastBlock.timestamp), bV)]
262- $Tuple10(ca, cb, bK, bL, bQ, bS, bP, bU, bO, cc)
264+ else fromBase58String(bM)), StringEntry(X(toString(bJ), bG), aT(cb, cc, bI, bW, height, lastBlock.timestamp)), IntegerEntry(Q(), bW), IntegerEntry(R(height, lastBlock.timestamp), bW)]
265+ $Tuple10(cb, cc, bL, bM, bR, bT, bQ, bV, bP, cd)
263266 }
264267 }
265268
266269
267-func cd (bF,be,ce,cf,cg,ch,bI,ci,cj,ck,cl,cm) = {
268- let bv = aC()
269- let bJ = fromBase58String(bv[r])
270- let cn = bv[s]
271- let co = bv[t]
272- let cp = bv[w]
273- let cq = bv[x]
274- let cr = parseIntValue(bv[u])
275- let cs = parseIntValue(bv[v])
276- let bO = bv[q]
277- let ct = valueOrErrorMessage(assetInfo(bJ), "Wr lp as").quantity
278- let bQ = if (ci)
279- then aW(cn)
280- else if (if (ck)
281- then (cm == cn)
270+func ce (bG,bf,cf,cg,ch,ci,bJ,cj,ck,cl,cm,cn) = {
271+ let bw = aD()
272+ let bK = fromBase58String(bw[r])
273+ let co = bw[s]
274+ let cp = bw[t]
275+ let cq = bw[w]
276+ let cr = bw[x]
277+ let cs = parseIntValue(bw[u])
278+ let ct = parseIntValue(bw[v])
279+ let bP = bw[q]
280+ let cu = valueOrErrorMessage(assetInfo(bK), "Wr lp as").quantity
281+ let bR = if (cj)
282+ then aX(co)
283+ else if (if (cl)
284+ then (cn == co)
282285 else false)
283- then (aW(cn) - cl)
284- else if (ck)
285- then aW(cn)
286- else (aW(cn) - ce)
287- let bS = if (ci)
288- then aW(co)
289- else if (if (ck)
290- then (cm == co)
286+ then (aX(co) - cm)
287+ else if (cl)
288+ then aX(co)
289+ else (aX(co) - cf)
290+ let bT = if (cj)
291+ then aX(cp)
292+ else if (if (cl)
293+ then (cn == cp)
291294 else false)
292- then (aW(co) - cl)
293- else if (ck)
294- then aW(co)
295- else (aW(co) - cg)
296- let cu = C(ce, cr)
297- let cv = C(cg, cs)
298- let cw = aY(cv, cu)
299- let bR = C(bQ, cr)
300- let bT = C(bS, cs)
301- let cx = if ((ct == 0))
295+ then (aX(cp) - cm)
296+ else if (cl)
297+ then aX(cp)
298+ else (aX(cp) - ch)
299+ let cv = C(cf, cs)
300+ let cw = C(ch, ct)
301+ let cx = aZ(cw, cv)
302+ let bS = C(bR, cs)
303+ let bU = C(bT, ct)
304+ let cy = if ((cu == 0))
302305 then {
303- let bU = e
304- let cy = e
305- let bz = pow((cu * cv), 0, toBigInt(5), 1, 0, DOWN)
306- $Tuple5(F(bz, a), F(cu, cr), F(cv, cs), aY((bT + cv), (bR + cu)), cy)
306+ let bV = e
307+ let cz = e
308+ let bA = pow((cv * cw), 0, toBigInt(5), 1, 0, DOWN)
309+ $Tuple5(F(bA, a), F(cv, cs), F(cw, ct), aZ((bU + cw), (bS + cv)), cz)
307310 }
308311 else {
309- let bU = aY(bT, bR)
310- let cz = fraction(M((bU - cw)), c, bU)
311- let cy = C(be, a)
312- if (if ((bU != e))
313- then (cz > cy)
312+ let bV = aZ(bU, bS)
313+ let cA = fraction(M((bV - cx)), c, bV)
314+ let cz = C(bf, a)
315+ if (if ((bV != e))
316+ then (cA > cz)
314317 else false)
315- then throw(((("Price slippage " + toString(cz)) + " > ") + toString(cy)))
318+ then throw(((("Price slippage " + toString(cA)) + " > ") + toString(cz)))
316319 else {
317- let cA = C(ct, a)
318- let cB = fraction(cu, bU, c)
319- let cC = fraction(cv, c, bU)
320- let cD = if ((cB > cv))
321- then $Tuple2(cC, cv)
322- else $Tuple2(cu, cB)
323- let cE = cD._1
324- let cF = cD._2
325- let bz = fraction(cA, cF, bT)
326- $Tuple5(F(bz, a), F(cE, cr), F(cF, cs), bU, cy)
320+ let cB = C(cu, a)
321+ let cC = fraction(cv, bV, c)
322+ let cD = fraction(cw, c, bV)
323+ let cE = if ((cC > cw))
324+ then $Tuple2(cD, cw)
325+ else $Tuple2(cv, cC)
326+ let cF = cE._1
327+ let cG = cE._2
328+ let bA = fraction(cB, cG, bU)
329+ $Tuple5(F(bA, a), F(cF, cs), F(cG, ct), bV, cz)
327330 }
328331 }
329- let cG = cx._1
330- let cH = cx._2
331- let cI = cx._3
332- let bV = F(cx._4, a)
333- let cJ = F(cx._5, a)
334- if ((0 >= cG))
332+ let cH = cy._1
333+ let cI = cy._2
334+ let cJ = cy._3
335+ let bW = F(cy._4, a)
336+ let cK = F(cy._5, a)
337+ if ((0 >= cH))
335338 then throw("LP <= 0")
336339 else {
337- let cK = if (!(cj))
340+ let cL = if (!(ck))
338341 then 0
339- else cG
340- let cL = (ce - cH)
341- let cM = (cg - cI)
342- let cN = if (if (ck)
343- then (cm == cn)
342+ else cH
343+ let cM = (cf - cI)
344+ let cN = (ch - cJ)
345+ let cO = if (if (cl)
346+ then (cn == co)
344347 else false)
345- then $Tuple2(cl, 0)
346- else if (if (ck)
347- then (cm == co)
348+ then $Tuple2(cm, 0)
349+ else if (if (cl)
350+ then (cn == cp)
348351 else false)
349- then $Tuple2(0, cl)
350- else $Tuple2(cH, cI)
351- let cO = cN._1
352- let cP = cN._2
353- let cQ = [IntegerEntry(Q(), bV), IntegerEntry(R(height, lastBlock.timestamp), bV), StringEntry(U(bI, bF), aH(cO, cP, cK, bV, be, cJ, height, lastBlock.timestamp, cL, cM))]
354- $Tuple13(cG, cK, bV, bQ, bS, ct, bJ, bO, cQ, cL, cM, cf, ch)
352+ then $Tuple2(0, cm)
353+ else $Tuple2(cI, cJ)
354+ let cP = cO._1
355+ let cQ = cO._2
356+ let cR = [IntegerEntry(Q(), bW), IntegerEntry(R(height, lastBlock.timestamp), bW), StringEntry(U(bJ, bG), aI(cP, cQ, cL, bW, bf, cK, height, lastBlock.timestamp, cM, cN))]
357+ $Tuple13(cH, cL, bW, bR, bT, cu, bK, bP, cR, cM, cN, cg, ci)
355358 }
356359 }
357360
358361
359-func cR (cS) = {
360- let bv = aC()
361- let cT = bv[s]
362- let cU = bv[t]
363- let bO = parseIntValue(bv[q])
364- let bw = parseIntValue(bv[u])
365- let bx = parseIntValue(bv[v])
366- let cV = aW(cT)
367- let cW = aW(cU)
368- let bU = if ((cS.orderType == Buy))
369- then bm(bw, bx, (cV + cS.amount), cW)
370- else bm(bw, bx, (cV - cS.amount), cW)
371- let bV = F(bU, a)
372- if (if (if (az())
362+func cS (cT) = {
363+ let bw = aD()
364+ let cU = bw[s]
365+ let cV = bw[t]
366+ let bP = parseIntValue(bw[q])
367+ let bx = parseIntValue(bw[u])
368+ let by = parseIntValue(bw[v])
369+ let cW = aX(cU)
370+ let cX = aX(cV)
371+ let bV = if ((cT.orderType == Buy))
372+ then bn(bx, by, (cW + cT.amount), cX)
373+ else bn(bx, by, (cW - cT.amount), cX)
374+ let bW = F(bV, a)
375+ if (if (if (aA())
373376 then true
374- else (bO == n))
377+ else (bP == n))
375378 then true
376- else (bO == o))
379+ else (bP == o))
377380 then throw("Admin blocked")
378381 else {
379- let cX = cS.assetPair.amountAsset
380- let cY = if ((cX == unit))
382+ let cY = cT.assetPair.amountAsset
383+ let cZ = if ((cY == unit))
381384 then "WAVES"
382- else toBase58String(value(cX))
383- let cZ = cS.assetPair.priceAsset
384- let da = if ((cZ == unit))
385+ else toBase58String(value(cY))
386+ let da = cT.assetPair.priceAsset
387+ let db = if ((da == unit))
385388 then "WAVES"
386- else toBase58String(value(cZ))
387- if (if ((cY != cT))
389+ else toBase58String(value(da))
390+ if (if ((cZ != cU))
388391 then true
389- else (da != cU))
392+ else (db != cV))
390393 then throw("Wr assets")
391394 else {
392- let db = cS.price
393- let cs = fraction(a, bx, bw)
394- let dc = I(db, a, cs)
395- let dd = if ((cS.orderType == Buy))
396- then (bV >= dc)
397- else (dc >= bV)
395+ let dc = cT.price
396+ let ct = fraction(a, by, bx)
397+ let dd = I(dc, a, ct)
398+ let de = if ((cT.orderType == Buy))
399+ then (bW >= dd)
400+ else (dd >= bW)
398401 true
399402 }
400403 }
401404 }
402405
403406
404-func de (df) = if ((size(df.payments) != 1))
407+func df (dg) = if ((size(dg.payments) != 1))
405408 then throw("1 pmnt exp")
406409 else {
407- let dg = value(df.payments[0])
408- let bG = value(dg.assetId)
409- let cl = dg.amount
410- let cx = bE(toBase58String(df.transactionId), toBase58String(bG), cl, df.caller)
411- let ca = cx._1
412- let cb = cx._2
413- let bO = parseIntValue(cx._9)
414- let cc = cx._10
415- if (if (az())
410+ let dh = value(dg.payments[0])
411+ let bH = value(dh.assetId)
412+ let cm = dh.amount
413+ let cy = bF(toBase58String(dg.transactionId), toBase58String(bH), cm, dg.caller)
414+ let cb = cy._1
415+ let cc = cy._2
416+ let bP = parseIntValue(cy._9)
417+ let cd = cy._10
418+ if (if (aA())
416419 then true
417- else (bO == o))
418- then throw(("Admin blocked: " + toString(bO)))
419- else $Tuple5(ca, cb, cl, bG, cc)
420+ else (bP == o))
421+ then throw(("Admin blocked: " + toString(bP)))
422+ else $Tuple5(cb, cc, cm, bH, cd)
420423 }
421424
422425
423-func dh (di,W,dj,dk,be,cj,ck,cl,cm) = {
424- let cx = cd(W, be, value(dj).amount, value(dj).assetId, value(dk).amount, value(dk).assetId, di, false, cj, ck, cl, cm)
425- let bO = parseIntValue(cx._8)
426- if (if (if (az())
426+func di (dj,W,dk,dl,bf,ck,cl,cm,cn) = {
427+ let cy = ce(W, bf, value(dk).amount, value(dk).assetId, value(dl).amount, value(dl).assetId, dj, false, ck, cl, cm, cn)
428+ let bP = parseIntValue(cy._8)
429+ if (if (if (aA())
427430 then true
428- else (bO == m))
431+ else (bP == m))
429432 then true
430- else (bO == o))
431- then throw(("Blocked:" + toString(bO)))
432- else cx
433+ else (bP == o))
434+ then throw(("Blocked:" + toString(bP)))
435+ else cy
433436 }
434437
435438
436-func dl (dm) = {
437- let dn = fraction(dm, ad, d)
438- $Tuple2((dm - dn), dn)
439+func dm (dn) = {
440+ let do = fraction(dn, ad, d)
441+ $Tuple2((dn - do), do)
439442 }
440443
441444
442-func do () = {
443- let ar = getString(O())
444- if ($isInstanceOf(ar, "String"))
445+func dp () = {
446+ let as = getString(O())
447+ if ($isInstanceOf(as, "String"))
445448 then {
446- let dp = ar
447- fromBase58String(dp)
449+ let dq = as
450+ fromBase58String(dq)
448451 }
449- else if ($isInstanceOf(ar, "Unit"))
452+ else if ($isInstanceOf(as, "Unit"))
450453 then unit
451454 else throw("Match error")
452455 }
453456
454457
455-func dq () = {
456- let ar = getString(P())
457- if ($isInstanceOf(ar, "String"))
458+func dr () = {
459+ let as = getString(P())
460+ if ($isInstanceOf(as, "String"))
458461 then {
459- let dp = ar
460- fromBase58String(dp)
462+ let dq = as
463+ fromBase58String(dq)
461464 }
462- else if ($isInstanceOf(ar, "Unit"))
465+ else if ($isInstanceOf(as, "Unit"))
463466 then unit
464467 else throw("Match error")
465468 }
466469
467470
468-let dr = throw("Permission denied")
471+let ds = throw("Permission denied")
469472
470-func ds (df) = {
471- let ar = do()
472- if ($isInstanceOf(ar, "ByteVector"))
473+func dt (dg) = {
474+ let as = dp()
475+ if ($isInstanceOf(as, "ByteVector"))
473476 then {
474- let dt = ar
475- if ((df.callerPublicKey == dt))
477+ let du = as
478+ if ((dg.callerPublicKey == du))
476479 then true
477- else dr
480+ else ds
478481 }
479- else if ($isInstanceOf(ar, "Unit"))
480- then if ((df.caller == this))
482+ else if ($isInstanceOf(as, "Unit"))
483+ then if ((dg.caller == this))
481484 then true
482- else dr
485+ else ds
483486 else throw("Match error")
484487 }
485488
486489
487-@Callable(df)
490+@Callable(dg)
488491 func constructor (N) = {
489- let du = ds(df)
490- if ((du == du))
492+ let dv = dt(dg)
493+ if ((dv == dv))
491494 then [StringEntry(N(), N)]
492495 else throw("Strict value is not equal to itself.")
493496 }
494497
495498
496499
497-@Callable(df)
498-func setManager (dv) = {
499- let du = ds(df)
500- if ((du == du))
500+@Callable(dg)
501+func setManager (dw) = {
502+ let dv = dt(dg)
503+ if ((dv == dv))
501504 then {
502- let dw = fromBase58String(dv)
503- if ((dw == dw))
504- then [StringEntry(P(), dv)]
505+ let dx = fromBase58String(dw)
506+ if ((dx == dx))
507+ then [StringEntry(P(), dw)]
505508 else throw("Strict value is not equal to itself.")
506509 }
507510 else throw("Strict value is not equal to itself.")
508511 }
509512
510513
511514
512-@Callable(df)
515+@Callable(dg)
513516 func confirmManager () = {
514- let bD = dq()
515- let dx = if (isDefined(bD))
517+ let bE = dr()
518+ let dy = if (isDefined(bE))
516519 then true
517520 else throw("No pending manager")
518- if ((dx == dx))
521+ if ((dy == dy))
519522 then {
520- let dy = if ((df.callerPublicKey == value(bD)))
523+ let dz = if ((dg.callerPublicKey == value(bE)))
521524 then true
522525 else throw("You are not pending manager")
523- if ((dy == dy))
524- then [StringEntry(O(), toBase58String(value(bD))), DeleteEntry(P())]
526+ if ((dz == dz))
527+ then [StringEntry(O(), toBase58String(value(bE))), DeleteEntry(P())]
525528 else throw("Strict value is not equal to itself.")
526529 }
527530 else throw("Strict value is not equal to itself.")
528531 }
529532
530533
531534
532-@Callable(df)
533-func put (dz,dA) = {
534- let dB = aG()
535- let dC = valueOrErrorMessage(addressFromString(dB[y]), "Wr st addr")
536- let dD = valueOrErrorMessage(addressFromString(dB[z]), "Wr sl addr")
537- if ((0 > dz))
535+@Callable(dg)
536+func put (dA,dB) = {
537+ let dC = aH()
538+ let dD = valueOrErrorMessage(addressFromString(dC[y]), "Wr st addr")
539+ let dE = valueOrErrorMessage(addressFromString(dC[z]), "Wr sl addr")
540+ if ((0 > dA))
538541 then throw("Wrong slippage")
539- else if ((size(df.payments) != 2))
542+ else if ((size(dg.payments) != 2))
540543 then throw("2 pmnts expd")
541544 else {
542- let dE = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(value(df.payments[0]).assetId, value(df.payments[0]).amount), df.payments[1], dz, true, false, 0, "")
543- let cK = dE._2
544- let dF = dE._7
545- let cc = dE._9
546- let cL = dE._10
547- let cM = dE._11
548- let bK = dE._12
549- let bL = dE._13
550- let cx = invoke(ax, "emit", [cK], nil)
551- if ((cx == cx))
545+ let dF = di(toString(dg.caller), toBase58String(dg.transactionId), AttachedPayment(value(dg.payments[0]).assetId, value(dg.payments[0]).amount), dg.payments[1], dA, true, false, 0, "")
546+ let cL = dF._2
547+ let dG = dF._7
548+ let cd = dF._9
549+ let cM = dF._10
550+ let cN = dF._11
551+ let bL = dF._12
552+ let bM = dF._13
553+ let cy = invoke(ay, "emit", [cL], nil)
554+ if ((cy == cy))
552555 then {
553- let dG = {
554- let ar = cx
555- if ($isInstanceOf(ar, "Address"))
556+ let dH = {
557+ let as = cy
558+ if ($isInstanceOf(as, "Address"))
556559 then {
557- let dH = ar
558- invoke(dH, "emit", [cK], nil)
560+ let dI = as
561+ invoke(dI, "emit", [cL], nil)
559562 }
560563 else unit
561564 }
562- if ((dG == dG))
565+ if ((dH == dH))
563566 then {
564- let dI = if ((cL > 0))
565- then invoke(dD, "put", nil, [AttachedPayment(bK, cL)])
567+ let dJ = if ((cM > 0))
568+ then invoke(dE, "put", nil, [AttachedPayment(bL, cM)])
566569 else nil
567- if ((dI == dI))
570+ if ((dJ == dJ))
568571 then {
569- let dJ = if ((cM > 0))
570- then invoke(dD, "put", nil, [AttachedPayment(bL, cM)])
572+ let dK = if ((cN > 0))
573+ then invoke(dE, "put", nil, [AttachedPayment(bM, cN)])
571574 else nil
572- if ((dJ == dJ))
575+ if ((dK == dK))
573576 then {
574- let dK = if (dA)
577+ let dL = if (dB)
575578 then {
576- let dL = invoke(dC, "stake", nil, [AttachedPayment(dF, cK)])
577- if ((dL == dL))
579+ let dM = invoke(dD, "stake", nil, [AttachedPayment(dG, cL)])
580+ if ((dM == dM))
578581 then nil
579582 else throw("Strict value is not equal to itself.")
580583 }
581- else [ScriptTransfer(df.caller, cK, dF)]
582- (cc ++ dK)
584+ else [ScriptTransfer(dg.caller, cL, dG)]
585+ (cd ++ dL)
583586 }
584587 else throw("Strict value is not equal to itself.")
585588 }
586589 else throw("Strict value is not equal to itself.")
587590 }
588591 else throw("Strict value is not equal to itself.")
589592 }
590593 else throw("Strict value is not equal to itself.")
591594 }
592595 }
593596
594597
595598
596-@Callable(df)
597-func putOneTkn (dM,dN,dO,be,dA) = {
598- let bv = aG()
599- let dC = valueOrErrorMessage(addressFromString(bv[y]), "Wr st addr")
600- let dD = valueOrErrorMessage(addressFromString(bv[z]), "Wr sl addr")
601- let dP = valueOrErrorMessage(addressFromString(bv[A]), "Wr gwx addr")
602- let dQ = aC()
603- let bK = dQ[s]
604- let bL = dQ[t]
605- let bM = parseIntValue(dQ[u])
606- let bN = parseIntValue(dQ[v])
607- let dR = valueOrElse(getString(this, ab()), "")
608- let bI = if ((dR == toString(df.caller)))
609- then df.originCaller
610- else df.caller
611- if (if (if (if ((0 >= be))
612- then true
613- else (0 >= dM))
599+@Callable(dg)
600+func putOneTkn (dN,dO,dP,bf,dB) = {
601+ let bw = aH()
602+ let dD = valueOrErrorMessage(addressFromString(bw[y]), "Wr st addr")
603+ let dE = valueOrErrorMessage(addressFromString(bw[z]), "Wr sl addr")
604+ let dQ = valueOrErrorMessage(addressFromString(bw[A]), "Wr gwx addr")
605+ let dR = aD()
606+ let bL = dR[s]
607+ let bM = dR[t]
608+ let bN = parseIntValue(dR[u])
609+ let bO = parseIntValue(dR[v])
610+ let dS = valueOrElse(getString(this, ab()), "")
611+ let bJ = if ((dS == toString(dg.caller)))
612+ then dg.originCaller
613+ else dg.caller
614+ if (if (if (if ((0 >= bf))
614615 then true
615616 else (0 >= dN))
616617 then true
617618 else (0 >= dO))
619+ then true
620+ else (0 >= dP))
618621 then throw("Wrong params")
619- else if ((size(df.payments) != 1))
622+ else if ((size(dg.payments) != 1))
620623 then throw("1 pmnt expd")
621624 else {
622- let dg = value(df.payments[0])
623- let bG = toBase58String(value(dg.assetId))
624- let dS = dg.amount
625- let dT = dl(dS)
626- let cl = dT._1
627- let dU = dT._2
628- if (if (if ((dM > cl))
629- then true
630- else (dN > cl))
631- then true
632- else (10000000 > dS))
625+ let dh = value(dg.payments[0])
626+ let bH = toBase58String(value(dh.assetId))
627+ let dT = dh.amount
628+ let dU = dm(dT)
629+ let cm = dU._1
630+ let dV = dU._2
631+ if ((10000000 > dT))
633632 then throw("Wrong pmt amt")
634633 else {
635- let bQ = aW(bK)
636- let bS = aW(bL)
637- let dV = if ((bG == bK))
638- then $Tuple6((bQ - cl), bS, (cl - dM), dN, 0, 0)
639- else if ((bG == bL))
640- then $Tuple6(bQ, (bS - cl), 0, 0, (cl - dN), dM)
634+ let bR = aX(bL)
635+ let bT = aX(bM)
636+ let dW = if ((bH == bL))
637+ then if (if ((cm > bR))
638+ then true
639+ else (dN > cm))
640+ then throw("invalid payment amount")
641+ else $Tuple6((bR - cm), bT, (cm - dN), dO, 0, 0)
642+ else if ((bH == bM))
643+ then if (if ((cm > bT))
644+ then true
645+ else (dO > cm))
646+ then throw("invalid payment amount")
647+ else $Tuple6(bR, (bT - cm), 0, 0, (cm - dO), dN)
641648 else throw("wrong pmtAssetId")
642- let dW = dV._1
643- let dX = dV._2
644- let dY = dV._3
645- let dZ = dV._4
646- let ea = dV._5
647- let eb = dV._6
648- let bj = invoke(dP, "calcD", [toString(dW), toString(dX), ay, h, i], nil)
649- let bi = invoke(dP, "calcD", [toString(toBigInt(((dW + dY) - eb))), toString(toBigInt(((dX + ea) - dZ))), ay, h, i], nil)
650- let ec = bh(parseBigIntValue(aq(bi)), parseBigIntValue(aq(bj)), g)
651- if ((ec == ec))
649+ let dX = dW._1
650+ let dY = dW._2
651+ let dZ = dW._3
652+ let ea = dW._4
653+ let eb = dW._5
654+ let ec = dW._6
655+ let bk = invoke(dQ, "calcD", [toString(dX), toString(dY), az, h, i], nil)
656+ let bj = invoke(dQ, "calcD", [toString(toBigInt(((dX + dZ) - ec))), toString(toBigInt(((dY + eb) - ea))), az, h, i], nil)
657+ let ed = bi(parseBigIntValue(ar(bj)), parseBigIntValue(ar(bk)), g)
658+ if ((ed == ed))
652659 then {
653- let ed = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(fromBase58String(bK), dM), AttachedPayment(fromBase58String(bL), dN), be, true, true, cl, bG)
654- let ee = ed._2
655- let dF = ed._7
656- let cc = ed._9
657- let cL = ed._10
658- let cM = ed._11
659- let ef = bb(toBigInt(ee), toBigInt(dO), toBigInt(be))
660- let cK = toInt(ef._2)
661- let dE = invoke(ax, "emit", [cK], nil)
662- if ((dE == dE))
660+ let ee = di(toString(dg.caller), toBase58String(dg.transactionId), AttachedPayment(fromBase58String(bL), dN), AttachedPayment(fromBase58String(bM), dO), bf, true, true, cm, bH)
661+ let ef = ee._2
662+ let dG = ee._7
663+ let cd = ee._9
664+ let cM = ee._10
665+ let cN = ee._11
666+ let eg = bc(toBigInt(ef), toBigInt(dP), toBigInt(bf))
667+ let cL = toInt(eg._2)
668+ let dF = invoke(ay, "emit", [cL], nil)
669+ if ((dF == dF))
663670 then {
664- let dG = {
665- let ar = dE
666- if ($isInstanceOf(ar, "Address"))
671+ let dH = {
672+ let as = dF
673+ if ($isInstanceOf(as, "Address"))
667674 then {
668- let dH = ar
669- invoke(dH, "emit", [cK], nil)
675+ let dI = as
676+ invoke(dI, "emit", [cL], nil)
670677 }
671678 else unit
672679 }
673- if ((dG == dG))
680+ if ((dH == dH))
674681 then {
675- let dI = if ((cL > 0))
676- then invoke(dD, "put", nil, [AttachedPayment(fromBase58String(bK), cL)])
682+ let dJ = if ((cM > 0))
683+ then invoke(dE, "put", nil, [AttachedPayment(fromBase58String(bL), cM)])
677684 else nil
678- if ((dI == dI))
685+ if ((dJ == dJ))
679686 then {
680- let dJ = if ((cM > 0))
681- then invoke(dD, "put", nil, [AttachedPayment(fromBase58String(bL), cM)])
687+ let dK = if ((cN > 0))
688+ then invoke(dE, "put", nil, [AttachedPayment(fromBase58String(bM), cN)])
682689 else nil
683- if ((dJ == dJ))
690+ if ((dK == dK))
684691 then {
685- let dK = if (dA)
692+ let dL = if (dB)
686693 then {
687- let dL = invoke(dC, "stake", nil, [AttachedPayment(dF, cK)])
688- if ((dL == dL))
694+ let dM = invoke(dD, "stake", nil, [AttachedPayment(dG, cL)])
695+ if ((dM == dM))
689696 then nil
690697 else throw("Strict value is not equal to itself.")
691698 }
692- else [ScriptTransfer(df.caller, cK, dF)]
693- let eg = if ((dU > 0))
694- then [ScriptTransfer(aB, dU, fromBase58String(bG))]
699+ else [ScriptTransfer(dg.caller, cL, dG)]
700+ let eh = if ((dV > 0))
701+ then [ScriptTransfer(aC, dV, fromBase58String(bH))]
695702 else nil
696- ((cc ++ dK) ++ eg)
703+ ((cd ++ dL) ++ eh)
697704 }
698705 else throw("Strict value is not equal to itself.")
699706 }
700707 else throw("Strict value is not equal to itself.")
701708 }
702709 else throw("Strict value is not equal to itself.")
703710 }
704711 else throw("Strict value is not equal to itself.")
705712 }
706713 else throw("Strict value is not equal to itself.")
707714 }
708715 }
709716 }
710717
711718
712719
713-@Callable(df)
714-func putForFree (eh) = if ((0 > eh))
720+@Callable(dg)
721+func putForFree (ei) = if ((0 > ei))
715722 then throw("Wrong slpg")
716- else if ((size(df.payments) != 2))
723+ else if ((size(dg.payments) != 2))
717724 then throw("2 pmnts expd")
718725 else {
719- let ed = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(value(df.payments[0]).assetId, value(df.payments[0]).amount), df.payments[1], eh, false, false, 0, "")
720- ed._9
726+ let ee = di(toString(dg.caller), toBase58String(dg.transactionId), AttachedPayment(value(dg.payments[0]).assetId, value(dg.payments[0]).amount), dg.payments[1], ei, false, false, 0, "")
727+ ee._9
721728 }
722729
723730
724731
725-@Callable(df)
732+@Callable(dg)
726733 func get () = {
727- let cx = de(df)
728- let ei = cx._1
729- let cb = cx._2
730- let cl = cx._3
731- let bG = cx._4
732- let cc = cx._5
733- let ej = invoke(ax, "burn", [cl], [AttachedPayment(bG, cl)])
734- if ((ej == ej))
735- then cc
734+ let cy = df(dg)
735+ let ej = cy._1
736+ let cc = cy._2
737+ let cm = cy._3
738+ let bH = cy._4
739+ let cd = cy._5
740+ let ek = invoke(ay, "burn", [cm], [AttachedPayment(bH, cm)])
741+ if ((ek == ek))
742+ then cd
736743 else throw("Strict value is not equal to itself.")
737744 }
738745
739746
740747
741-@Callable(df)
742-func getOneTkn (ek,el,em,en,be) = if ((size(df.payments) != 1))
748+@Callable(dg)
749+func getOneTkn (el,em,en,eo,bf) = if ((size(dg.payments) != 1))
743750 then throw("1 pmnt expd")
744751 else {
745- let bv = aC()
746- let bJ = bv[r]
747- let bK = bv[s]
748- let bL = bv[t]
749- let bM = parseIntValue(bv[u])
750- let bN = parseIntValue(bv[v])
751- let bO = bv[q]
752- let dB = aG()
753- let dP = valueOrErrorMessage(addressFromString(dB[A]), "Wr sl addr")
754- let dg = value(df.payments[0])
755- let dR = valueOrElse(getString(this, ab()), "")
756- let bI = if ((dR == toString(df.caller)))
757- then df.originCaller
758- else df.caller
759- let bF = toBase58String(df.transactionId)
760- let bG = value(dg.assetId)
761- let cl = dg.amount
762- if ((1000000000 > cl))
752+ let bw = aD()
753+ let bK = bw[r]
754+ let bL = bw[s]
755+ let bM = bw[t]
756+ let bN = parseIntValue(bw[u])
757+ let bO = parseIntValue(bw[v])
758+ let bP = bw[q]
759+ let dC = aH()
760+ let dQ = valueOrErrorMessage(addressFromString(dC[A]), "Wr sl addr")
761+ let dh = value(dg.payments[0])
762+ let dS = valueOrElse(getString(this, ab()), "")
763+ let bJ = if ((dS == toString(dg.caller)))
764+ then dg.originCaller
765+ else dg.caller
766+ let bG = toBase58String(dg.transactionId)
767+ let bH = value(dh.assetId)
768+ let cm = dh.amount
769+ if ((1000000000 > cm))
763770 then throw("Min pmt 10 LP")
764- else if (if (if ((0 > be))
771+ else if (if (if ((0 > bf))
765772 then true
766- else (0 > ek))
773+ else (0 > el))
767774 then true
768- else (0 > em))
775+ else (0 > en))
769776 then throw("Wrong params")
770- else if ((bJ != toBase58String(bG)))
777+ else if ((bK != toBase58String(bH)))
771778 then throw("Wrong LP")
772779 else {
773- let cx = bE(toBase58String(df.transactionId), toBase58String(bG), cl, df.caller)
774- let eo = cx._1
775- let ep = cx._2
776- let bQ = aW(bK)
777- let bS = aW(bL)
778- let eq = if ((en == bK))
779- then $Tuple7((bQ - eo), (bS - ep), ek, ep, 0, 0, (eo + ek))
780- else if ((en == bL))
781- then $Tuple7((bQ - eo), (bS - ep), 0, 0, ek, eo, (ep + ek))
780+ let cy = bF(toBase58String(dg.transactionId), toBase58String(bH), cm, dg.caller)
781+ let ep = cy._1
782+ let eq = cy._2
783+ let bR = aX(bL)
784+ let bT = aX(bM)
785+ let er = if ((eo == bL))
786+ then $Tuple7((bR - ep), (bT - eq), el, eq, 0, 0, (ep + el))
787+ else if ((eo == bM))
788+ then $Tuple7((bR - ep), (bT - eq), 0, 0, el, ep, (eq + el))
782789 else throw("wrong outAssetId")
783- let dW = eq._1
784- let dX = eq._2
785- let dY = eq._3
786- let dZ = eq._4
787- let ea = eq._5
788- let eb = eq._6
789- let er = eq._7
790- if (if ((0 > dY))
790+ let dX = er._1
791+ let dY = er._2
792+ let dZ = er._3
793+ let ea = er._4
794+ let eb = er._5
795+ let ec = er._6
796+ let es = er._7
797+ if (if ((0 > dZ))
791798 then true
792- else (0 > ea))
799+ else (0 > eb))
793800 then throw("Wrong calc")
794801 else {
795- let bj = invoke(dP, "calcD", [toString(dW), toString(dX), ay, h, i], nil)
796- let bi = invoke(dP, "calcD", [toString(((dW - dY) + eb)), toString(((dX + dZ) - ea)), ay, h, i], nil)
797- let ec = bh(parseBigIntValue(aq(bi)), parseBigIntValue(aq(bj)), g)
798- if ((ec == ec))
802+ let bk = invoke(dQ, "calcD", [toString(dX), toString(dY), az, h, i], nil)
803+ let bj = invoke(dQ, "calcD", [toString(((dX - dZ) + ec)), toString(((dY + ea) - eb)), az, h, i], nil)
804+ let ed = bi(parseBigIntValue(ar(bj)), parseBigIntValue(ar(bk)), g)
805+ if ((ed == ed))
799806 then {
800- let es = bb(toBigInt(er), toBigInt(em), toBigInt(be))
801- if ((es == es))
807+ let et = dm(es)._1
808+ let eu = bc(toBigInt(et), toBigInt(en), toBigInt(bf))
809+ if ((eu == eu))
802810 then {
803- let et = if ((en == bK))
804- then $Tuple2(toInt(es._2), 0)
805- else $Tuple2(0, toInt(es._2))
806- let eu = et._1
807- let ev = et._2
808- let ew = (eu + ev)
809- let ex = dl(ew)
810- let ey = ex._1
811- let dU = ex._2
812- let ez = if ((en == "WAVES"))
811+ let ev = if ((eo == bL))
812+ then $Tuple2(toInt(eu._2), 0)
813+ else $Tuple2(0, toInt(eu._2))
814+ let ew = ev._1
815+ let ex = ev._2
816+ let ey = (ew + ex)
817+ let dV = (es - et)
818+ let ez = if ((eo == "WAVES"))
813819 then unit
814- else fromBase58String(en)
815- let eg = if ((dU > 0))
816- then [ScriptTransfer(aB, dU, ez)]
820+ else fromBase58String(eo)
821+ let eh = if ((dV > 0))
822+ then [ScriptTransfer(aC, dV, ez)]
817823 else nil
818- let eA = aY(C(bS, bN), C(bQ, bM))
824+ let eA = aZ(C(bT, bO), C(bR, bN))
819825 let eB = F(eA, a)
820- let cc = [ScriptTransfer(bI, ey, ez), StringEntry(X(toString(bI), bF), aS(eu, ev, cl, eB, height, lastBlock.timestamp)), IntegerEntry(Q(), eB), IntegerEntry(R(height, lastBlock.timestamp), eB)]
821- if ((cc == cc))
826+ let cd = [ScriptTransfer(bJ, ey, ez), StringEntry(X(toString(bJ), bG), aT(ew, ex, cm, eB, height, lastBlock.timestamp)), IntegerEntry(Q(), eB), IntegerEntry(R(height, lastBlock.timestamp), eB)]
827+ if ((cd == cd))
822828 then {
823- let eC = invoke(ax, "burn", [cl], [AttachedPayment(bG, cl)])
829+ let eC = invoke(ay, "burn", [cm], [AttachedPayment(bH, cm)])
824830 if ((eC == eC))
825- then (cc ++ eg)
831+ then (cd ++ eh)
826832 else throw("Strict value is not equal to itself.")
827833 }
828834 else throw("Strict value is not equal to itself.")
829835 }
830836 else throw("Strict value is not equal to itself.")
831837 }
832838 else throw("Strict value is not equal to itself.")
833839 }
834840 }
835841 }
836842
837843
838844
839-@Callable(df)
845+@Callable(dg)
840846 func getNoLess (eD,eE) = {
841- let cx = de(df)
842- let ca = cx._1
843- let cb = cx._2
844- let cl = cx._3
845- let bG = cx._4
846- let cc = cx._5
847- if ((eD > ca))
848- then throw(((("Failed: " + toString(ca)) + " < ") + toString(eD)))
849- else if ((eE > cb))
850- then throw(((("Failed: " + toString(cb)) + " < ") + toString(eE)))
847+ let cy = df(dg)
848+ let cb = cy._1
849+ let cc = cy._2
850+ let cm = cy._3
851+ let bH = cy._4
852+ let cd = cy._5
853+ if ((eD > cb))
854+ then throw(((("Failed: " + toString(cb)) + " < ") + toString(eD)))
855+ else if ((eE > cc))
856+ then throw(((("Failed: " + toString(cc)) + " < ") + toString(eE)))
851857 else {
852- let eF = invoke(ax, "burn", [cl], [AttachedPayment(bG, cl)])
858+ let eF = invoke(ay, "burn", [cm], [AttachedPayment(bH, cm)])
853859 if ((eF == eF))
854- then cc
860+ then cd
855861 else throw("Strict value is not equal to itself.")
856862 }
857863 }
858864
859865
860866
861-@Callable(df)
862-func unstakeAndGet (dm) = {
863- let eG = if ((size(df.payments) != 0))
867+@Callable(dg)
868+func unstakeAndGet (dn) = {
869+ let eG = if ((size(dg.payments) != 0))
864870 then throw("No pmnts expd")
865871 else true
866872 if ((eG == eG))
867873 then {
868- let bv = aC()
869- let eH = aG()
870- let dF = fromBase58String(bv[r])
874+ let bw = aD()
875+ let eH = aH()
876+ let dG = fromBase58String(bw[r])
871877 let eI = valueOrErrorMessage(addressFromString(eH[y]), "Wr st addr")
872- let eJ = invoke(eI, "unstake", [toBase58String(dF), dm], nil)
878+ let eJ = invoke(eI, "unstake", [toBase58String(dG), dn], nil)
873879 if ((eJ == eJ))
874880 then {
875- let cx = bE(toBase58String(df.transactionId), toBase58String(dF), dm, df.caller)
876- let bO = parseIntValue(cx._9)
877- let cc = cx._10
878- let eK = if (if (az())
881+ let cy = bF(toBase58String(dg.transactionId), toBase58String(dG), dn, dg.caller)
882+ let bP = parseIntValue(cy._9)
883+ let cd = cy._10
884+ let eK = if (if (aA())
879885 then true
880- else (bO == o))
881- then throw(("Blocked: " + toString(bO)))
886+ else (bP == o))
887+ then throw(("Blocked: " + toString(bP)))
882888 else true
883889 if ((eK == eK))
884890 then {
885- let eL = invoke(ax, "burn", [dm], [AttachedPayment(dF, dm)])
891+ let eL = invoke(ay, "burn", [dn], [AttachedPayment(dG, dn)])
886892 if ((eL == eL))
887- then cc
893+ then cd
888894 else throw("Strict value is not equal to itself.")
889895 }
890896 else throw("Strict value is not equal to itself.")
891897 }
892898 else throw("Strict value is not equal to itself.")
893899 }
894900 else throw("Strict value is not equal to itself.")
895901 }
896902
897903
898904
899-@Callable(df)
900-func activate (eM,eN) = if ((toString(df.caller) != toString(ax)))
905+@Callable(dg)
906+func activate (eM,eN) = if ((toString(dg.caller) != toString(ay)))
901907 then throw("denied")
902908 else $Tuple2([StringEntry(Y(), eM), StringEntry(Z(), eN)], "success")
903909
904910
905911
906-@Callable(df)
907-func setS (eO,eK) = if ((toString(df.caller) != at(this, ab())))
908- then dr
912+@Callable(dg)
913+func setS (eO,eK) = if ((toString(dg.caller) != au(this, ab())))
914+ then ds
909915 else [StringEntry(eO, eK)]
910916
911917
912918
913-@Callable(df)
914-func setI (eO,eK) = if ((toString(df.caller) != at(this, ab())))
915- then dr
919+@Callable(dg)
920+func setI (eO,eK) = if ((toString(dg.caller) != au(this, ab())))
921+ then ds
916922 else [IntegerEntry(eO, eK)]
917923
918924
919925
920-@Callable(df)
921-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aC())
926+@Callable(dg)
927+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aD())
922928
923929
924930
925-@Callable(df)
926-func getAccBalanceWrapperREADONLY (aX) = $Tuple2(nil, aW(aX))
931+@Callable(dg)
932+func getAccBalanceWrapperREADONLY (aY) = $Tuple2(nil, aX(aY))
927933
928934
929935
930-@Callable(df)
931-func calcPricesWrapperREADONLY (bp,bq,bu) = {
932- let eP = bt(bp, bq, bu)
936+@Callable(dg)
937+func calcPricesWrapperREADONLY (bq,br,bv) = {
938+ let eP = bu(bq, br, bv)
933939 $Tuple2(nil, [toString(eP[0]), toString(eP[1]), toString(eP[2])])
934940 }
935941
936942
937943
938-@Callable(df)
944+@Callable(dg)
939945 func fromX18WrapperREADONLY (G,eQ) = $Tuple2(nil, F(parseBigIntValue(G), eQ))
940946
941947
942948
943-@Callable(df)
949+@Callable(dg)
944950 func toX18WrapperREADONLY (D,E) = $Tuple2(nil, toString(C(D, E)))
945951
946952
947953
948-@Callable(df)
949-func calcPriceBigIntWrapperREADONLY (aZ,ba) = $Tuple2(nil, toString(aY(parseBigIntValue(aZ), parseBigIntValue(ba))))
954+@Callable(dg)
955+func calcPriceBigIntWrapperREADONLY (ba,bb) = $Tuple2(nil, toString(aZ(parseBigIntValue(ba), parseBigIntValue(bb))))
950956
951957
952958
953-@Callable(df)
954-func estimatePutOperationWrapperREADONLY (bF,be,ce,cf,cg,ch,eR,ci,cj) = $Tuple2(nil, cd(bF, be, ce, cf, cg, ch, eR, ci, cj, false, 0, ""))
959+@Callable(dg)
960+func estimatePutOperationWrapperREADONLY (bG,bf,cf,cg,ch,ci,eR,cj,ck) = $Tuple2(nil, ce(bG, bf, cf, cg, ch, ci, eR, cj, ck, false, 0, ""))
955961
956962
957963
958-@Callable(df)
959-func estimateGetOperationWrapperREADONLY (bF,eS,bH,eR) = {
960- let cx = bE(bF, eS, bH, addressFromStringValue(eR))
961- $Tuple2(nil, $Tuple10(cx._1, cx._2, cx._3, cx._4, cx._5, cx._6, cx._7, toString(cx._8), cx._9, cx._10))
964+@Callable(dg)
965+func estimateGetOperationWrapperREADONLY (bG,eS,bI,eR) = {
966+ let cy = bF(bG, eS, bI, addressFromStringValue(eR))
967+ $Tuple2(nil, $Tuple10(cy._1, cy._2, cy._3, cy._4, cy._5, cy._6, cy._7, toString(cy._8), cy._9, cy._10))
962968 }
963969
964970
965971 @Verifier(eT)
966972 func eU () = {
967- let ar = eT
968- if ($isInstanceOf(ar, "Order"))
973+ let eV = {
974+ let as = dp()
975+ if ($isInstanceOf(as, "ByteVector"))
976+ then {
977+ let du = as
978+ du
979+ }
980+ else if ($isInstanceOf(as, "Unit"))
981+ then eT.senderPublicKey
982+ else throw("Match error")
983+ }
984+ let as = eT
985+ if ($isInstanceOf(as, "Order"))
969986 then {
970- let cS = ar
971- let eV = aA()
972- let an = cR(cS)
973- let eW = sigVerify(cS.bodyBytes, cS.proofs[0], cS.senderPublicKey)
974- let eX = sigVerify(cS.bodyBytes, cS.proofs[1], eV)
975- if (if (if (an)
976- then eW
987+ let cT = as
988+ let eW = aB()
989+ let eX = cS(cT)
990+ let eY = sigVerify(cT.bodyBytes, cT.proofs[0], cT.senderPublicKey)
991+ let eZ = sigVerify(cT.bodyBytes, cT.proofs[1], eW)
992+ if (if (if (eX)
993+ then eY
977994 else false)
978- then eX
995+ then eZ
979996 else false)
980997 then true
981- else am(an, eW, eX)
998+ else an(eX, eY, eZ)
982999 }
983- else {
984- let eY = {
985- let eZ = do()
986- if ($isInstanceOf(eZ, "ByteVector"))
987- then {
988- let dt = eZ
989- dt
990- }
991- else if ($isInstanceOf(eZ, "Unit"))
992- then eT.senderPublicKey
993- else throw("Match error")
1000+ else if ($isInstanceOf(as, "SetScriptTransaction"))
1001+ then {
1002+ let dq = as
1003+ let fa = blake2b256(value(dq.script))
1004+ let fb = fromBase64String(value(getString(ay, am())))
1005+ let fc = scriptHash(this)
1006+ if (if ((fb == fa))
1007+ then (fc != fa)
1008+ else false)
1009+ then true
1010+ else sigVerify(eT.bodyBytes, eT.proofs[0], eV)
9941011 }
995- sigVerify(eT.bodyBytes, eT.proofs[0], eY)
996- }
1012+ else sigVerify(eT.bodyBytes, eT.proofs[0], eV)
9971013 }
9981014

github/deemru/w8io/c3f4982 
361.03 ms