tx · FjRXD8cvsttBiwEKkSfuFsdC4VLFwhNzdAWHYdPVmAWL

3P8KMyAJCPWNcyedqrmymxaeWonvmkhGauz:  -0.02900000 Waves

2022.08.30 19:27 [3272928] smart account 3P8KMyAJCPWNcyedqrmymxaeWonvmkhGauz > SELF 0.00000000 Waves

{ "type": 13, "id": "FjRXD8cvsttBiwEKkSfuFsdC4VLFwhNzdAWHYdPVmAWL", "fee": 2900000, "feeAssetId": null, "timestamp": 1661876207381, "version": 1, "sender": "3P8KMyAJCPWNcyedqrmymxaeWonvmkhGauz", "senderPublicKey": "DxhbzFs9BZTiN6kcnyybxmqPTV8xReD6Z5gWQ5AgRX8w", "proofs": [ "2tdjqe9fvw4WY6dNTqMZGv9nwkr4d2yVgw3tLWYxABVprMTina2vBw56wf1Hfx4usd3Zt82wxiYyAF4Bg8aegrSn" ], "script": "base64:BgJ/CAISAwoBCBIDCgEIEgASBAoCAQQSBwoFAQEBAQQSAwoBARIAEgcKBQEBAQgBEgQKAgEBEgMKAQESBAoCCAgSBAoCCAgSBAoCCAESABIDCgEIEgUKAwEBARIECgIIARIECgIBARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCE4ABnNjYWxlOACAwtcvAAxzY2FsZThCaWdJbnQJALYCAQCAwtcvAAdzY2FsZTE4CQC2AgEAgICQu7rWrfANAAp6ZXJvQmlnSW50CQC2AgEAAAAJb25lQmlnSW50CQC2AgEAAQAKc2xpcHBhZ2U0RAkAtgIBCQBlAgUGc2NhbGU4CQBpAgkAaAIFBnNjYWxlOAABBQZzY2FsZTgABUFtdWx0AgMxMDAABURjb252AgExAANTRVACAl9fAAVFTVBUWQIAAApQb29sQWN0aXZlAAEAClBvb2xQdXREaXMAAgAOUG9vbE1hdGNoZXJEaXMAAwAMUG9vbFNodXRkb3duAAQADmlkeFBvb2xBZGRyZXNzAAEACWlkeFBvb2xTdAACAAlpZHhMUEFzSWQAAwAJaWR4QW1Bc0lkAAQACWlkeFByQXNJZAAFAAtpZHhBbXRBc0RjbQAGAA1pZHhQcmljZUFzRGNtAAcAC2lkeElBbXRBc0lkAAgADWlkeElQcmljZUFzSWQACQAPaWR4RmFjdFN0YWtDbnRyAAEAEGlkeEZhY3RTbGlwcENudHIABwARaWR4RmFjdEd3eFJld0NudHIACgAFZGVsYXkCCSVzX19kZWxheQECdDECB29yaWdWYWwNb3JpZ1NjYWxlTXVsdAkAvAIDCQC2AgEFB29yaWdWYWwFB3NjYWxlMTgJALYCAQUNb3JpZ1NjYWxlTXVsdAECZjECA3ZhbA9yZXN1bHRTY2FsZU11bHQJAKADAQkAvAIDBQN2YWwJALYCAQUPcmVzdWx0U2NhbGVNdWx0BQdzY2FsZTE4AQJ0cwMDYW10CHJlc1NjYWxlCGN1clNjYWxlCQBrAwUDYW10BQhyZXNTY2FsZQUIY3VyU2NhbGUBA2FicwEDdmFsAwkAvwICBQp6ZXJvQmlnSW50BQN2YWwJAL4CAQUDdmFsBQN2YWwBAmZjAAITJXNfX2ZhY3RvcnlDb250cmFjdAEDbXBrAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBBHBtcGsAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAnBsAAIRJXMlc19fcHJpY2VfX2xhc3QBAnBoAgFoAXQJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQFoCQDMCAIJAKQDAQUBdAUDbmlsBQNTRVABA3BhdQICdWEEdHhJZAkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAnVhAgJfXwUEdHhJZAEDZ2F1AgJ1YQR0eElkCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUCdWECAl9fBQR0eElkAQJhYQACDyVzX19hbW91bnRBc3NldAECcGEAAg4lc19fcHJpY2VBc3NldAEDYW1wAAIHJXNfX2FtcAEDYWRhAAINJXNfX2FkZG9uQWRkcgEFbGdvdGMBBmNhbGxlcgkAuQkCCQDMCAICFyVzJXNfX2xhc3RHZXRPbmVUa25DYWxsCQDMCAIFBmNhbGxlcgUDbmlsBQNTRVABBWxzb3RjAQZjYWxsZXIJALkJAgkAzAgCAhclcyVzX19sYXN0UHV0T25lVGtuQ2FsbAkAzAgCBQZjYWxsZXIFA25pbAUDU0VQAQRmY2ZnAAIRJXNfX2ZhY3RvcnlDb25maWcBBG10cGsAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAnBjAgZpQW10QXMFaVByQXMJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FBmlBbXRBcwICX18FBWlQckFzAghfX2NvbmZpZwEDbWJhAQViQVN0cgkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQViQVN0cgEDYXBzAAIMJXNfX3NodXRkb3duARxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAAIdJXNfX2FsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gBA3RvZQMDb3JWBnNlbmRyVgZtYXRjaFYJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIRRmFpbGVkOiBvcmRWYWxpZD0JAKUDAQUDb3JWAgsgc25kclZhbGlkPQkApQMBBQZzZW5kclYCDCBtdGNoclZhbGlkPQkApQMBBQZtYXRjaFYBA3N0cgEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAZ2YWxTdHIFByRtYXRjaDAFBnZhbFN0cgkAAgECE2ZhaWwgY2FzdCB0byBTdHJpbmcBBHN0cmYCBGFkZHIDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEYWRkcgUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFBGFkZHIJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAEEaW50ZgIEYWRkcgNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQRhZGRyBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUEYWRkcgkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAANmY2EJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQRzdHJmAgUEdGhpcwkBAmZjAAABQQkBBHN0cmYCBQR0aGlzCQEDYW1wAAEDaWdzAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQNmY2EJAQNhcHMABwECbXAACQDZBAEJAQRzdHJmAgUDZmNhCQEEbXRwawABA2dwYwAEBWFtdEFzCQEEc3RyZgIFBHRoaXMJAQJhYQAEB3ByaWNlQXMJAQRzdHJmAgUEdGhpcwkBAnBhAAQIaVByaWNlQXMJAQRpbnRmAgUDZmNhCQEDbWJhAQUHcHJpY2VBcwQGaUFtdEFzCQEEaW50ZgIFA2ZjYQkBA21iYQEFBWFtdEFzCQC1CQIJAQRzdHJmAgUDZmNhCQECcGMCCQCkAwEFBmlBbXRBcwkApAMBBQhpUHJpY2VBcwUDU0VQAQNnZmMACQC1CQIJAQRzdHJmAgUDZmNhCQEEZmNmZwAFA1NFUAERZGF0YVB1dEFjdGlvbkluZm8KDWluQW10QXNzZXRBbXQPaW5QcmljZUFzc2V0QW10CG91dExwQW10BXByaWNlCnNsaXBCeVVzZXIMc2xpcHBhZ2VSZWFsCHR4SGVpZ2h0C3R4VGltZXN0YW1wDHNsaXBhZ2VBbUFtdAxzbGlwYWdlUHJBbXQJALkJAgkAzAgCAhQlZCVkJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFDWluQW10QXNzZXRBbXQJAMwIAgkApAMBBQ9pblByaWNlQXNzZXRBbXQJAMwIAgkApAMBBQhvdXRMcEFtdAkAzAgCCQCkAwEFBXByaWNlCQDMCAIJAKQDAQUKc2xpcEJ5VXNlcgkAzAgCCQCkAwEFDHNsaXBwYWdlUmVhbAkAzAgCCQCkAwEFCHR4SGVpZ2h0CQDMCAIJAKQDAQULdHhUaW1lc3RhbXAJAMwIAgkApAMBBQxzbGlwYWdlQW1BbXQJAMwIAgkApAMBBQxzbGlwYWdlUHJBbXQFA25pbAUDU0VQARFkYXRhR2V0QWN0aW9uSW5mbwYOb3V0QW10QXNzZXRBbXQQb3V0UHJpY2VBc3NldEFtdAdpbkxwQW10BXByaWNlCHR4SGVpZ2h0C3R4VGltZXN0YW1wCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUOb3V0QW10QXNzZXRBbXQJAMwIAgkApAMBBRBvdXRQcmljZUFzc2V0QW10CQDMCAIJAKQDAQUHaW5McEFtdAkAzAgCCQCkAwEFBXByaWNlCQDMCAIJAKQDAQUIdHhIZWlnaHQJAMwIAgkApAMBBQt0eFRpbWVzdGFtcAUDbmlsBQNTRVABDWdldEFjY0JhbGFuY2UBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUHYXNzZXRJZAEEY3BiaQIIcHJBbXRYMTgIYW1BbXRYMTgJALwCAwUIcHJBbXRYMTgFB3NjYWxlMTgFCGFtQW10WDE4AQN2YWQDAkExAkEyCHNsaXBwYWdlBARkaWZmCQC8AgMJALgCAgUCQTEFAkEyBQxzY2FsZThCaWdJbnQFAkEyBARwYXNzCQC/AgIJALgCAgUIc2xpcHBhZ2UJAQNhYnMBBQRkaWZmBQp6ZXJvQmlnSW50AwkBASEBBQRwYXNzCQACAQkArAICAgpCaWcgc2xwZzogCQCmAwEFBGRpZmYJAJQKAgUEcGFzcwkAmQMBCQDMCAIFAkExCQDMCAIFAkEyBQNuaWwBAnZkAwJEMQJEMARzbHBnBARkaWZmCQC8AgMFAkQwBQxzY2FsZThCaWdJbnQFAkQxBARmYWlsCQC/AgIFBHNscGcFBGRpZmYDAwUEZmFpbAYJAL8CAgUCRDAFAkQxCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApgMBBQJEMAIBIAkApgMBBQJEMQIBIAkApgMBBQRkaWZmAgEgCQCmAwEFBHNscGcFBGZhaWwBA3BjcAQKYW1Bc3NldERjbQpwckFzc2V0RGNtBWFtQW10BXByQW10BAthbXRBc0FtdFgxOAkBAnQxAgUFYW1BbXQFCmFtQXNzZXREY20ECnByQXNBbXRYMTgJAQJ0MQIFBXByQW10BQpwckFzc2V0RGNtCQEEY3BiaQIFCnByQXNBbXRYMTgFC2FtdEFzQW10WDE4AQpjYWxjUHJpY2VzAwVhbUFtdAVwckFtdAVscEFtdAQDY2ZnCQEDZ3BjAAQIYW10QXNEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFC2lkeEFtdEFzRGNtBAdwckFzRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQ1pZHhQcmljZUFzRGNtBAhwcmljZVgxOAkBA3BjcAQFCGFtdEFzRGNtBQdwckFzRGNtBQVhbUFtdAUFcHJBbXQECGFtQW10WDE4CQECdDECBQVhbUFtdAUIYW10QXNEY20ECHByQW10WDE4CQECdDECBQVwckFtdAUHcHJBc0RjbQQIbHBBbXRYMTgJAQJ0MQIFBWxwQW10BQZzY2FsZTgEDWxwUHJJbkFtQXNYMTgJAQRjcGJpAgUIYW1BbXRYMTgFCGxwQW10WDE4BA1scFBySW5QckFzWDE4CQEEY3BiaQIFCHByQW10WDE4BQhscEFtdFgxOAkAzAgCBQhwcmljZVgxOAkAzAgCBQ1scFBySW5BbUFzWDE4CQDMCAIFDWxwUHJJblByQXNYMTgFA25pbAEPY2FsY3VsYXRlUHJpY2VzAwVhbUFtdAVwckFtdAVscEFtdAQBcAkBCmNhbGNQcmljZXMDBQVhbUFtdAUFcHJBbXQFBWxwQW10CQDMCAIJAQJmMQIJAJEDAgUBcAAABQZzY2FsZTgJAMwIAgkBAmYxAgkAkQMCBQFwAAEFBnNjYWxlOAkAzAgCCQECZjECCQCRAwIFAXAAAgUGc2NhbGU4BQNuaWwBA2VnbwQGdHhJZDU4CnBtdEFzc2V0SWQIcG10THBBbXQLdXNlckFkZHJlc3MEA2NmZwkBA2dwYwAEBGxwSWQJAJEDAgUDY2ZnBQlpZHhMUEFzSWQEBGFtSWQJAJEDAgUDY2ZnBQlpZHhBbUFzSWQEBHBySWQJAJEDAgUDY2ZnBQlpZHhQckFzSWQEBWFtRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQtpZHhBbXRBc0RjbQQFcHJEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20EA3N0cwkAkQMCBQNjZmcFCWlkeFBvb2xTdAQHbHBFbWlzcwgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFBGxwSWQCC1dyb25nIExQIGlkCHF1YW50aXR5AwkBAiE9AgUEbHBJZAUKcG10QXNzZXRJZAkAAgECD1dyb25nIHBtdCBhc3NldAQJYW1CYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBGFtSWQEDGFtQmFsYW5jZVgxOAkBAnQxAgUJYW1CYWxhbmNlBQVhbURjbQQJcHJCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQEDHByQmFsYW5jZVgxOAkBAnQxAgUJcHJCYWxhbmNlBQVwckRjbQQLY3VyUHJpY2VYMTgJAQRjcGJpAgUMcHJCYWxhbmNlWDE4BQxhbUJhbGFuY2VYMTgECGN1clByaWNlCQECZjECBQtjdXJQcmljZVgxOAUGc2NhbGU4BAtwbXRMcEFtdFgxOAkBAnQxAgUIcG10THBBbXQFBnNjYWxlOAQKbHBFbWlzc1gxOAkBAnQxAgUHbHBFbWlzcwUGc2NhbGU4BAtvdXRBbUFtdFgxOAkAvAIDBQxhbUJhbGFuY2VYMTgFC3BtdExwQW10WDE4BQpscEVtaXNzWDE4BAtvdXRQckFtdFgxOAkAvAIDBQxwckJhbGFuY2VYMTgFC3BtdExwQW10WDE4BQpscEVtaXNzWDE4BAhvdXRBbUFtdAkBAmYxAgULb3V0QW1BbXRYMTgFBWFtRGNtBAhvdXRQckFtdAkBAmYxAgULb3V0UHJBbXRYMTgFBXByRGNtBAVzdGF0ZQMJAAACBQZ0eElkNTgCAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQhvdXRBbUFtdAMJAAACBQRhbUlkAgVXQVZFUwUEdW5pdAkA2QQBBQRhbUlkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQhvdXRQckFtdAMJAAACBQRwcklkAgVXQVZFUwUEdW5pdAkA2QQBBQRwcklkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNnYXUCCQClCAEFC3VzZXJBZGRyZXNzBQZ0eElkNTgJARFkYXRhR2V0QWN0aW9uSW5mbwYFCG91dEFtQW10BQhvdXRQckFtdAUIcG10THBBbXQFCGN1clByaWNlBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGwABQhjdXJQcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBoAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUIY3VyUHJpY2UFA25pbAkAnAoKBQhvdXRBbUFtdAUIb3V0UHJBbXQFBGFtSWQFBHBySWQFCWFtQmFsYW5jZQUJcHJCYWxhbmNlBQdscEVtaXNzBQtjdXJQcmljZVgxOAUDc3RzBQVzdGF0ZQEDZXBvDAZ0eElkNTgIc2xpcHBhZ2UHaW5BbUFtdAZpbkFtSWQHaW5QckFtdAZpblBySWQLdXNlckFkZHJlc3MGaXNFdmFsBmVtaXRMcAppc09uZUFzc2V0BnBtdEFtdAVwbXRJZAQDY2ZnCQEDZ3BjAAQEbHBJZAkA2QQBCQCRAwIFA2NmZwUJaWR4TFBBc0lkBAdhbUlkU3RyCQCRAwIFA2NmZwUJaWR4QW1Bc0lkBAdwcklkU3RyCQCRAwIFA2NmZwUJaWR4UHJBc0lkBAlpbkFtSWRTdHIJAJEDAgUDY2ZnBQtpZHhJQW10QXNJZAQJaW5QcklkU3RyCQCRAwIFA2NmZwUNaWR4SVByaWNlQXNJZAQGYW10RGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQtpZHhBbXRBc0RjbQQIcHJpY2VEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20EA3N0cwkAkQMCBQNjZmcFCWlkeFBvb2xTdAQEbHBFbQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQRscElkAghXciBscCBhcwhxdWFudGl0eQQJYW1CYWxhbmNlAwUGaXNFdmFsCQENZ2V0QWNjQmFsYW5jZQEFB2FtSWRTdHIDAwUKaXNPbmVBc3NldAkAAAIFBXBtdElkBQdhbUlkU3RyBwkAZQIJAQ1nZXRBY2NCYWxhbmNlAQUHYW1JZFN0cgUGcG10QW10AwUKaXNPbmVBc3NldAkBDWdldEFjY0JhbGFuY2UBBQdhbUlkU3RyCQBlAgkBDWdldEFjY0JhbGFuY2UBBQdhbUlkU3RyBQdpbkFtQW10BAlwckJhbGFuY2UDBQZpc0V2YWwJAQ1nZXRBY2NCYWxhbmNlAQUHcHJJZFN0cgMDBQppc09uZUFzc2V0CQAAAgUFcG10SWQFB3BySWRTdHIHCQBlAgkBDWdldEFjY0JhbGFuY2UBBQdwcklkU3RyBQZwbXRBbXQDBQppc09uZUFzc2V0CQENZ2V0QWNjQmFsYW5jZQEFB3BySWRTdHIJAGUCCQENZ2V0QWNjQmFsYW5jZQEFB3BySWRTdHIFB2luUHJBbXQED2luQW1Bc3NldEFtdFgxOAkBAnQxAgUHaW5BbUFtdAUGYW10RGNtBA9pblByQXNzZXRBbXRYMTgJAQJ0MQIFB2luUHJBbXQFCHByaWNlRGNtBAx1c2VyUHJpY2VYMTgJAQRjcGJpAgUPaW5QckFzc2V0QW10WDE4BQ9pbkFtQXNzZXRBbXRYMTgEDGFtQmFsYW5jZVgxOAkBAnQxAgUJYW1CYWxhbmNlBQZhbXREY20EDHByQmFsYW5jZVgxOAkBAnQxAgUJcHJCYWxhbmNlBQhwcmljZURjbQQBcgMJAAACBQRscEVtAAAEC2N1clByaWNlWDE4BQp6ZXJvQmlnSW50BAtzbGlwcGFnZVgxOAUKemVyb0JpZ0ludAQIbHBBbXRYMTgJAHYGCQC5AgIFD2luQW1Bc3NldEFtdFgxOAUPaW5QckFzc2V0QW10WDE4AAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQECZjECBQhscEFtdFgxOAUGc2NhbGU4CQECZjECBQ9pbkFtQXNzZXRBbXRYMTgFBmFtdERjbQkBAmYxAgUPaW5QckFzc2V0QW10WDE4BQhwcmljZURjbQkBBGNwYmkCCQC3AgIFDHByQmFsYW5jZVgxOAUPaW5QckFzc2V0QW10WDE4CQC3AgIFDGFtQmFsYW5jZVgxOAUPaW5BbUFzc2V0QW10WDE4BQtzbGlwcGFnZVgxOAQLY3VyUHJpY2VYMTgJAQRjcGJpAgUMcHJCYWxhbmNlWDE4BQxhbUJhbGFuY2VYMTgED3NsaXBwYWdlUmVhbFgxOAkAvAIDCQEDYWJzAQkAuAICBQtjdXJQcmljZVgxOAUMdXNlclByaWNlWDE4BQdzY2FsZTE4BQtjdXJQcmljZVgxOAQLc2xpcHBhZ2VYMTgJAQJ0MQIFCHNsaXBwYWdlBQZzY2FsZTgDAwkBAiE9AgULY3VyUHJpY2VYMTgFCnplcm9CaWdJbnQJAL8CAgUPc2xpcHBhZ2VSZWFsWDE4BQtzbGlwcGFnZVgxOAcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUPc2xpcHBhZ2VSZWFsWDE4AgMgPiAJAKYDAQULc2xpcHBhZ2VYMTgEDWxwRW1pc3Npb25YMTgJAQJ0MQIFBGxwRW0FBnNjYWxlOAQKcHJWaWFBbVgxOAkAvAIDBQ9pbkFtQXNzZXRBbXRYMTgFC2N1clByaWNlWDE4BQdzY2FsZTE4BAphbVZpYVByWDE4CQC8AgMFD2luUHJBc3NldEFtdFgxOAUHc2NhbGUxOAULY3VyUHJpY2VYMTgEDGV4cGVjdGVkQW10cwMJAL8CAgUKcHJWaWFBbVgxOAUPaW5QckFzc2V0QW10WDE4CQCUCgIFCmFtVmlhUHJYMTgFD2luUHJBc3NldEFtdFgxOAkAlAoCBQ9pbkFtQXNzZXRBbXRYMTgFCnByVmlhQW1YMTgEEWV4cEFtdEFzc2V0QW10WDE4CAUMZXhwZWN0ZWRBbXRzAl8xBBNleHBQcmljZUFzc2V0QW10WDE4CAUMZXhwZWN0ZWRBbXRzAl8yBAhscEFtdFgxOAkAvAIDBQ1scEVtaXNzaW9uWDE4BRNleHBQcmljZUFzc2V0QW10WDE4BQxwckJhbGFuY2VYMTgJAJcKBQkBAmYxAgUIbHBBbXRYMTgFBnNjYWxlOAkBAmYxAgURZXhwQW10QXNzZXRBbXRYMTgFBmFtdERjbQkBAmYxAgUTZXhwUHJpY2VBc3NldEFtdFgxOAUIcHJpY2VEY20FC2N1clByaWNlWDE4BQtzbGlwcGFnZVgxOAQJY2FsY0xwQW10CAUBcgJfMQQOY2FsY0FtQXNzZXRQbXQIBQFyAl8yBA5jYWxjUHJBc3NldFBtdAgFAXICXzMECGN1clByaWNlCQECZjECCAUBcgJfNAUGc2NhbGU4BAxzbGlwcGFnZUNhbGMJAQJmMQIIBQFyAl81BQZzY2FsZTgDCQBnAgAABQljYWxjTHBBbXQJAAIBAgdMUCA8PSAwBAllbWl0THBBbXQDCQEBIQEFBmVtaXRMcAAABQljYWxjTHBBbXQEBmFtRGlmZgkAZQIFB2luQW1BbXQFDmNhbGNBbUFzc2V0UG10BAZwckRpZmYJAGUCBQdpblByQW10BQ5jYWxjUHJBc3NldFBtdAQNJHQwMTU2MDExNTk0NgMDBQppc09uZUFzc2V0CQAAAgUFcG10SWQFB2FtSWRTdHIHCQCUCgIFBnBtdEFtdAAAAwMFCmlzT25lQXNzZXQJAAACBQVwbXRJZAUHcHJJZFN0cgcJAJQKAgAABQZwbXRBbXQJAJQKAgUOY2FsY0FtQXNzZXRQbXQFDmNhbGNQckFzc2V0UG10BAp3cml0ZUFtQW10CAUNJHQwMTU2MDExNTk0NgJfMQQKd3JpdGVQckFtdAgFDSR0MDE1NjAxMTU5NDYCXzIEC2NvbW1vblN0YXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGwABQhjdXJQcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBoAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUIY3VyUHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkBA3BhdQIFC3VzZXJBZGRyZXNzBQZ0eElkNTgJARFkYXRhUHV0QWN0aW9uSW5mbwoFCndyaXRlQW1BbXQFCndyaXRlUHJBbXQFCWVtaXRMcEFtdAUIY3VyUHJpY2UFCHNsaXBwYWdlBQxzbGlwcGFnZUNhbGMFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFBmFtRGlmZgUGcHJEaWZmBQNuaWwJAJ8KDQUJY2FsY0xwQW10BQllbWl0THBBbXQFCGN1clByaWNlBQlhbUJhbGFuY2UFCXByQmFsYW5jZQUEbHBFbQUEbHBJZAUDc3RzBQtjb21tb25TdGF0ZQUGYW1EaWZmBQZwckRpZmYFBmluQW1JZAUGaW5QcklkAQNtb2EBBW9yZGVyBANjZmcJAQNncGMABAdhbXRBc0lkCQCRAwIFA2NmZwUJaWR4QW1Bc0lkBAZwckFzSWQJAJEDAgUDY2ZnBQlpZHhQckFzSWQEA3N0cwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUJaWR4UG9vbFN0BAhhbXRBc0RjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwULaWR4QW10QXNEY20EB3ByQXNEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20ED2FjY0FtdEFzQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQdhbXRBc0lkBA5hY2NQckFzQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQZwckFzSWQEC2N1clByaWNlWDE4AwkAAAIIBQVvcmRlcglvcmRlclR5cGUFA0J1eQkBA3BjcAQFCGFtdEFzRGNtBQdwckFzRGNtCQBkAgUPYWNjQW10QXNCYWxhbmNlCAUFb3JkZXIGYW1vdW50BQ5hY2NQckFzQmFsYW5jZQkBA3BjcAQFCGFtdEFzRGNtBQdwckFzRGNtCQBlAgUPYWNjQW10QXNCYWxhbmNlCAUFb3JkZXIGYW1vdW50BQ5hY2NQckFzQmFsYW5jZQQIY3VyUHJpY2UJAQJmMQIFC2N1clByaWNlWDE4BQZzY2FsZTgDAwMJAQNpZ3MABgkAAAIFA3N0cwUOUG9vbE1hdGNoZXJEaXMGCQAAAgUDc3RzBQxQb29sU2h1dGRvd24JAAIBAg1BZG1pbiBibG9ja2VkBApvckFtdEFzc2V0CAgFBW9yZGVyCWFzc2V0UGFpcgthbW91bnRBc3NldAQKb3JBbXRBc1N0cgMJAAACBQpvckFtdEFzc2V0BQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQpvckFtdEFzc2V0BAlvclByQXNzZXQICAUFb3JkZXIJYXNzZXRQYWlyCnByaWNlQXNzZXQECW9yUHJBc1N0cgMJAAACBQlvclByQXNzZXQFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFCW9yUHJBc3NldAMDCQECIT0CBQpvckFtdEFzU3RyBQdhbXRBc0lkBgkBAiE9AgUJb3JQckFzU3RyBQZwckFzSWQJAAIBAglXciBhc3NldHMECm9yZGVyUHJpY2UIBQVvcmRlcgVwcmljZQQIcHJpY2VEY20JAGsDBQZzY2FsZTgFB3ByQXNEY20FCGFtdEFzRGNtBA5jYXN0T3JkZXJQcmljZQkBAnRzAwUKb3JkZXJQcmljZQUGc2NhbGU4BQhwcmljZURjbQQRaXNPcmRlclByaWNlVmFsaWQDCQAAAggFBW9yZGVyCW9yZGVyVHlwZQUDQnV5CQBnAgUIY3VyUHJpY2UFDmNhc3RPcmRlclByaWNlCQBnAgUOY2FzdE9yZGVyUHJpY2UFCGN1clByaWNlBgECY2cBAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAgoxIHBtbnQgZXhwBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQKcG10QXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAZwbXRBbXQIBQNwbXQGYW1vdW50BAFyCQEDZWdvBAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEFCnBtdEFzc2V0SWQFBnBtdEFtdAgFAWkGY2FsbGVyBAhvdXRBbUFtdAgFAXICXzEECG91dFByQW10CAUBcgJfMgQDc3RzCQENcGFyc2VJbnRWYWx1ZQEIBQFyAl85BAVzdGF0ZQgFAXIDXzEwAwMJAQNpZ3MABgkAAAIFA3N0cwUMUG9vbFNodXRkb3duCQACAQkArAICAg9BZG1pbiBibG9ja2VkOiAJAKQDAQUDc3RzCQCXCgUFCG91dEFtQW10BQhvdXRQckFtdAUGcG10QW10BQpwbXRBc3NldElkBQVzdGF0ZQECY3AJBmNhbGxlcgR0eElkB2FtQXNQbXQHcHJBc1BtdAhzbGlwcGFnZQZlbWl0THAKaXNPbmVBc3NldAZwbXRBbXQFcG10SWQEAXIJAQNlcG8MBQR0eElkBQhzbGlwcGFnZQgJAQV2YWx1ZQEFB2FtQXNQbXQGYW1vdW50CAkBBXZhbHVlAQUHYW1Bc1BtdAdhc3NldElkCAkBBXZhbHVlAQUHcHJBc1BtdAZhbW91bnQICQEFdmFsdWUBBQdwckFzUG10B2Fzc2V0SWQFBmNhbGxlcgcFBmVtaXRMcAUKaXNPbmVBc3NldAUGcG10QW10BQVwbXRJZAQDc3RzCQENcGFyc2VJbnRWYWx1ZQEIBQFyAl84AwMDCQEDaWdzAAYJAAACBQNzdHMFClBvb2xQdXREaXMGCQAAAgUDc3RzBQxQb29sU2h1dGRvd24JAAIBCQCsAgICCEJsb2NrZWQ6CQCkAwEFA3N0cwUBcgEBbQAEByRtYXRjaDAJAKIIAQkBA21wawADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJwbQAEByRtYXRjaDAJAKIIAQkBBHBtcGsAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgACcGQJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAECbW0BAWkEByRtYXRjaDAJAQFtAAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkFAnBrBgUCcGQDCQABAgUHJG1hdGNoMAIEVW5pdAMJAAACCAUBaQZjYWxsZXIFBHRoaXMGBQJwZAkAAgECC01hdGNoIGVycm9yFQFpAQtjb25zdHJ1Y3RvcgECZmMEAWMJAQJtbQEFAWkDCQAAAgUBYwUBYwkAzAgCCQELU3RyaW5nRW50cnkCCQECZmMABQJmYwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCnNldE1hbmFnZXIBF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BAFjCQECbW0BBQFpAwkAAAIFAWMFAWMEAmNtCQDZBAEFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AwkAAAIFAmNtBQJjbQkAzAgCCQELU3RyaW5nRW50cnkCCQEEcG1wawAFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOY29uZmlybU1hbmFnZXIABAFwCQECcG0ABANocG0DCQEJaXNEZWZpbmVkAQUBcAYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUDaHBtBQNocG0EA2NwbQMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAXAGCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFA2NwbQUDY3BtCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNtcGsACQDYBAEJAQV2YWx1ZQEFAXAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBBHBtcGsABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEDcHV0AgRzbGlwCWF1dG9TdGFrZQQHZmFjdENmZwkBA2dmYwAEC3N0YWtpbmdDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdmYWN0Q2ZnBQ9pZHhGYWN0U3Rha0NudHICCldyIHN0IGFkZHIECHNsaXBDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdmYWN0Q2ZnBRBpZHhGYWN0U2xpcHBDbnRyAgpXciBzbCBhZGRyAwkAZgIAAAUEc2xpcAkAAgECDldyb25nIHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAFlCQECY3AJCQClCAEIBQFpBmNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAkQMCCAUBaQhwYXltZW50cwABBQRzbGlwBgcAAAIABAllbWl0THBBbXQIBQFlAl8yBAlscEFzc2V0SWQIBQFlAl83BAVzdGF0ZQgFAWUCXzkEBmFtRGlmZggFAWUDXzEwBAZwckRpZmYIBQFlA18xMQQEYW1JZAgFAWUDXzEyBARwcklkCAUBZQNfMTMEAXIJAPwHBAUDZmNhAgRlbWl0CQDMCAIFCWVtaXRMcEFtdAUDbmlsBQNuaWwDCQAAAgUBcgUBcgQCZWwEByRtYXRjaDAFAXIDCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQGbGVnYWN5BQckbWF0Y2gwCQD8BwQFBmxlZ2FjeQIEZW1pdAkAzAgCBQllbWl0THBBbXQFA25pbAUDbmlsBQR1bml0AwkAAAIFAmVsBQJlbAQCc2EDCQBmAgUGYW1EaWZmAAAJAPwHBAUIc2xpcENudHICA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQRhbUlkBQZhbURpZmYFA25pbAUDbmlsAwkAAAIFAnNhBQJzYQQCc3ADCQBmAgUGcHJEaWZmAAAJAPwHBAUIc2xpcENudHICA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQRwcklkBQZwckRpZmYFA25pbAUDbmlsAwkAAAIFAnNwBQJzcAQIbHBUcm5zZnIDBQlhdXRvU3Rha2UEAnNzCQD8BwQFC3N0YWtpbmdDbnRyAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQlscEFzc2V0SWQFCWVtaXRMcEFtdAUDbmlsAwkAAAIFAnNzBQJzcwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUJZW1pdExwQW10BQlscEFzc2V0SWQFA25pbAkAzggCBQVzdGF0ZQUIbHBUcm5zZnIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJcHV0T25lVGtuBQthbUFzc2V0UGFydAtwckFzc2V0UGFydAVvdXRMcAhzbGlwcGFnZQlhdXRvU3Rha2UEA2NmZwkBA2dmYwAEC3N0YWtpbmdDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQNjZmcFD2lkeEZhY3RTdGFrQ250cgIKV3Igc3QgYWRkcgQIc2xpcENudHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFA2NmZwUQaWR4RmFjdFNsaXBwQ250cgIKV3Igc2wgYWRkcgQHZ3d4Q250cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUDY2ZnBRFpZHhGYWN0R3d4UmV3Q250cgILV3IgZ3d4IGFkZHIEB3Bvb2xDZmcJAQNncGMABARhbUlkCQCRAwIFB3Bvb2xDZmcFCWlkeEFtQXNJZAQEcHJJZAkAkQMCBQdwb29sQ2ZnBQlpZHhQckFzSWQEBWFtRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcG9vbENmZwULaWR4QW10QXNEY20EBXByRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHcG9vbENmZwUNaWR4UHJpY2VBc0RjbQQFYWRkb24JAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBA2FkYQACAAQLdXNlckFkZHJlc3MDCQAAAgUFYWRkb24JAKUIAQgFAWkGY2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIIBQFpBmNhbGxlcgQNYWRkb25Db250cmFjdAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEDYWRhAAIJbm8gYWRkb25zAhphZGRvbiBhZGRyZXNzIGluIG5vdCB2YWxpZAQFY2hlY2sJAP0HBAUNYWRkb25Db250cmFjdAISZW5zdXJlQ2FuUHV0T25lVGtuCQDMCAIJAKUIAQULdXNlckFkZHJlc3MFA25pbAUDbmlsAwkAAAIFBWNoZWNrBQVjaGVjawMDAwMJAGcCAAAFCHNsaXBwYWdlBgkAZwIAAAULYW1Bc3NldFBhcnQGCQBnAgAABQtwckFzc2V0UGFydAYJAGcCAAAFBW91dExwCQACAQIMV3JvbmcgcGFyYW1zAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQILMSBwbW50IGV4cGQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABApwbXRBc3NldElkCQDYBAEJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQGcG10QW10CAUDcG10BmFtb3VudAMJAGYCAICt4gQFBnBtdEFtdAkAAgECDVdyb25nIHBtdCBhbXQECWFtQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQRhbUlkBAlwckJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEcHJJZAQNJHQwMjQ4NTkyNTQzNQMJAAACBQpwbXRBc3NldElkBQRhbUlkAwMJAGYCBQZwbXRBbXQFCWFtQmFsYW5jZQYJAGYCBQthbUFzc2V0UGFydAUGcG10QW10CQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAmAoGCQBlAgUJYW1CYWxhbmNlBQZwbXRBbXQFCXByQmFsYW5jZQkAZQIFBnBtdEFtdAULYW1Bc3NldFBhcnQFC3ByQXNzZXRQYXJ0AAAAAAMJAAACBQpwbXRBc3NldElkBQRwcklkAwMJAGYCBQZwbXRBbXQFCXByQmFsYW5jZQYJAGYCBQtwckFzc2V0UGFydAUGcG10QW10CQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAmAoGBQlhbUJhbGFuY2UJAGUCBQlwckJhbGFuY2UFBnBtdEFtdAAAAAAJAGUCBQZwbXRBbXQFC3ByQXNzZXRQYXJ0BQthbUFzc2V0UGFydAkAAgECEHdyb25nIHBtdEFzc2V0SWQEDGFtQmFsYW5jZU5vdwgFDSR0MDI0ODU5MjU0MzUCXzEEDHByQmFsYW5jZU5vdwgFDSR0MDI0ODU5MjU0MzUCXzIEDHZpcnRTd2FwSW5BbQgFDSR0MDI0ODU5MjU0MzUCXzMEDXZpcnRTd2FwT3V0UHIIBQ0kdDAyNDg1OTI1NDM1Al80BAx2aXJ0U3dhcEluUHIIBQ0kdDAyNDg1OTI1NDM1Al81BA12aXJ0U3dhcE91dEFtCAUNJHQwMjQ4NTkyNTQzNQJfNgQCRDAJAPwHBAUHZ3d4Q250cgIFY2FsY0QJAMwIAgkApAMBBQxhbUJhbGFuY2VOb3cJAMwIAgkApAMBBQxwckJhbGFuY2VOb3cJAMwIAgUBQQkAzAgCBQVBbXVsdAkAzAgCBQVEY29udgUDbmlsBQNuaWwEAkQxCQD8BwQFB2d3eENudHICBWNhbGNECQDMCAIJAKYDAQkAtgIBCQBlAgkAZAIFDGFtQmFsYW5jZU5vdwUMdmlydFN3YXBJbkFtBQ12aXJ0U3dhcE91dEFtCQDMCAIJAKYDAQkAtgIBCQBlAgkAZAIFDHByQmFsYW5jZU5vdwUMdmlydFN3YXBJblByBQ12aXJ0U3dhcE91dFByCQDMCAIFAUEJAMwIAgUFQW11bHQJAMwIAgUFRGNvbnYFA25pbAUDbmlsBAZEMHZzRDEJAQJ2ZAMJAKcDAQkBA3N0cgEFAkQxCQCnAwEJAQNzdHIBBQJEMAUKc2xpcHBhZ2U0RAMJAAACBQZEMHZzRDEFBkQwdnNEMQQGZXN0UHV0CQECY3AJCQClCAEIBQFpBmNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQRhbUlkBQthbUFzc2V0UGFydAkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUEcHJJZAULcHJBc3NldFBhcnQFCHNsaXBwYWdlBgYFBnBtdEFtdAUKcG10QXNzZXRJZAQHZXN0aW1MUAgFBmVzdFB1dAJfMgQJbHBBc3NldElkCAUGZXN0UHV0Al83BAVzdGF0ZQgFBmVzdFB1dAJfOQQGYW1EaWZmCAUGZXN0UHV0A18xMAQGcHJEaWZmCAUGZXN0UHV0A18xMQQJbHBDYWxjUmVzCQEDdmFkAwkAtgIBBQdlc3RpbUxQCQC2AgEFBW91dExwCQC2AgEFCHNsaXBwYWdlBAllbWl0THBBbXQJAKADAQgFCWxwQ2FsY1JlcwJfMgQBZQkA/AcEBQNmY2ECBGVtaXQJAMwIAgUJZW1pdExwQW10BQNuaWwFA25pbAMJAAACBQFlBQFlBAJlbAQHJG1hdGNoMAUBZQMJAAECBQckbWF0Y2gwAgdBZGRyZXNzBAZsZWdhY3kFByRtYXRjaDAJAPwHBAUGbGVnYWN5AgRlbWl0CQDMCAIFCWVtaXRMcEFtdAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZWwFAmVsBAJzYQMJAGYCBQZhbURpZmYAAAkA/AcEBQhzbGlwQ250cgIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUEYW1JZAUGYW1EaWZmBQNuaWwFA25pbAMJAAACBQJzYQUCc2EEAnNwAwkAZgIFBnByRGlmZgAACQD8BwQFCHNsaXBDbnRyAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQRwcklkBQZwckRpZmYFA25pbAUDbmlsAwkAAAIFAnNwBQJzcAQIbHBUcm5zZnIDBQlhdXRvU3Rha2UEAnNzCQD8BwQFC3N0YWtpbmdDbnRyAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQlscEFzc2V0SWQFCWVtaXRMcEFtdAUDbmlsAwkAAAIFAnNzBQJzcwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUJZW1pdExwQW10BQlscEFzc2V0SWQFA25pbAkAzggCBQVzdGF0ZQUIbHBUcm5zZnIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKcHV0Rm9yRnJlZQEHbWF4U2xwZwMJAGYCAAAFB21heFNscGcJAAIBAgpXcm9uZyBzbHBnAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAZlc3RQdXQJAQJjcAkJAKUIAQgFAWkGY2FsbGVyCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQFpCHBheW1lbnRzAAEFB21heFNscGcHBwAAAgAIBQZlc3RQdXQCXzkBaQEDZ2V0AAQBcgkBAmNnAQUBaQQJb3V0QW10QW10CAUBcgJfMQQIb3V0UHJBbXQIBQFyAl8yBAZwbXRBbXQIBQFyAl8zBApwbXRBc3NldElkCAUBcgJfNAQFc3RhdGUIBQFyAl81BAFiCQD8BwQFA2ZjYQIEYnVybgkAzAgCBQZwbXRBbXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUKcG10QXNzZXRJZAUGcG10QW10BQNuaWwDCQAAAgUBYgUBYgUFc3RhdGUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJZ2V0T25lVGtuBQpleGNoUmVzdWx0B25vdFVzZWQJb3V0QW1vdW50Cm91dEFzc2V0SWQIc2xpcHBhZ2UDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAgsxIHBtbnQgZXhwZAQDY2ZnCQEDZ3BjAAQEbHBJZAkAkQMCBQNjZmcFCWlkeExQQXNJZAQEYW1JZAkAkQMCBQNjZmcFCWlkeEFtQXNJZAQEcHJJZAkAkQMCBQNjZmcFCWlkeFByQXNJZAQFYW1EY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFC2lkeEFtdEFzRGNtBAVwckRjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUNaWR4UHJpY2VBc0RjbQQDc3RzCQCRAwIFA2NmZwUJaWR4UG9vbFN0BAdmYWN0Q2ZnCQEDZ2ZjAAQHZ3d4Q250cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHZmFjdENmZwURaWR4RmFjdEd3eFJld0NudHICCldyIHNsIGFkZHIEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAVhZGRvbgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEDYWRhAAIABAt1c2VyQWRkcmVzcwMJAAACBQVhZGRvbgkApQgBCAUBaQZjYWxsZXIIBQFpDG9yaWdpbkNhbGxlcggFAWkGY2FsbGVyBAZ0eElkNTgJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAQKcG10QXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAZwbXRBbXQIBQNwbXQGYW1vdW50BA1hZGRvbkNvbnRyYWN0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJAQNhZGEAAglubyBhZGRvbnMCGmFkZG9uIGFkZHJlc3MgaW4gbm90IHZhbGlkBAVjaGVjawkA/QcEBQ1hZGRvbkNvbnRyYWN0AhJlbnN1cmVDYW5HZXRPbmVUa24JAMwIAgkApQgBBQt1c2VyQWRkcmVzcwUDbmlsBQNuaWwDCQAAAgUFY2hlY2sFBWNoZWNrAwkAZgIAgJTr3AMFBnBtdEFtdAkAAgECDU1pbiBwbXQgMTAgTFADAwMJAGYCAAAFCHNsaXBwYWdlBgkAZgIAAAUKZXhjaFJlc3VsdAYJAGYCAAAFCW91dEFtb3VudAkAAgECDFdyb25nIHBhcmFtcwMJAQIhPQIFBGxwSWQJANgEAQUKcG10QXNzZXRJZAkAAgECCFdyb25nIExQBAFyCQEDZWdvBAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEFCnBtdEFzc2V0SWQFBnBtdEFtdAgFAWkGY2FsbGVyBAplc3RpbUFtQW10CAUBcgJfMQQKZXN0aW1QckFtdAgFAXICXzIECWFtQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQRhbUlkBAlwckJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEcHJJZAQNJHQwMzA0NjYzMDkyMwMJAAACBQpvdXRBc3NldElkBQRhbUlkCQCZCgcJAGUCBQlhbUJhbGFuY2UFCmVzdGltQW1BbXQJAGUCBQlwckJhbGFuY2UFCmVzdGltUHJBbXQFCmV4Y2hSZXN1bHQFCmVzdGltUHJBbXQAAAAACQBkAgUKZXN0aW1BbUFtdAUKZXhjaFJlc3VsdAMJAAACBQpvdXRBc3NldElkBQRwcklkCQCZCgcJAGUCBQlhbUJhbGFuY2UFCmVzdGltQW1BbXQJAGUCBQlwckJhbGFuY2UFCmVzdGltUHJBbXQAAAAABQpleGNoUmVzdWx0BQplc3RpbUFtQW10CQBkAgUKZXN0aW1QckFtdAUKZXhjaFJlc3VsdAkAAgECEHdyb25nIG91dEFzc2V0SWQEDGFtQmFsYW5jZU5vdwgFDSR0MDMwNDY2MzA5MjMCXzEEDHByQmFsYW5jZU5vdwgFDSR0MDMwNDY2MzA5MjMCXzIEDHZpcnRTd2FwSW5BbQgFDSR0MDMwNDY2MzA5MjMCXzMEDXZpcnRTd2FwT3V0UHIIBQ0kdDAzMDQ2NjMwOTIzAl80BAx2aXJ0U3dhcEluUHIIBQ0kdDAzMDQ2NjMwOTIzAl81BA12aXJ0U3dhcE91dEFtCAUNJHQwMzA0NjYzMDkyMwJfNgQIdG90YWxHZXQIBQ0kdDAzMDQ2NjMwOTIzAl83AwMJAGYCAAAFDHZpcnRTd2FwSW5BbQYJAGYCAAAFDHZpcnRTd2FwSW5QcgkAAgECCldyb25nIGNhbGMEAkQwCQD8BwQFB2d3eENudHICBWNhbGNECQDMCAIJAKQDAQUMYW1CYWxhbmNlTm93CQDMCAIJAKQDAQUMcHJCYWxhbmNlTm93CQDMCAIFAUEJAMwIAgUFQW11bHQJAMwIAgUFRGNvbnYFA25pbAUDbmlsBAJEMQkA/AcEBQdnd3hDbnRyAgVjYWxjRAkAzAgCCQCkAwEJAGQCCQBlAgUMYW1CYWxhbmNlTm93BQx2aXJ0U3dhcEluQW0FDXZpcnRTd2FwT3V0QW0JAMwIAgkApAMBCQBlAgkAZAIFDHByQmFsYW5jZU5vdwUNdmlydFN3YXBPdXRQcgUMdmlydFN3YXBJblByCQDMCAIFAUEJAMwIAgUFQW11bHQJAMwIAgUFRGNvbnYFA25pbAUDbmlsBAZEMHZzRDEJAQJ2ZAMJAKcDAQkBA3N0cgEFAkQxCQCnAwEJAQNzdHIBBQJEMAUKc2xpcHBhZ2U0RAMJAAACBQZEMHZzRDEFBkQwdnNEMQQIZmluYWxSZXMJAQN2YWQDCQC2AgEFCHRvdGFsR2V0CQC2AgEFCW91dEFtb3VudAkAtgIBBQhzbGlwcGFnZQMJAAACBQhmaW5hbFJlcwUIZmluYWxSZXMEDSR0MDMxNjI4MzE3MzIDCQAAAgUKb3V0QXNzZXRJZAUEYW1JZAkAlAoCCQCgAwEIBQhmaW5hbFJlcwJfMgAACQCUCgIAAAkAoAMBCAUIZmluYWxSZXMCXzIEBW91dEFtCAUNJHQwMzE2MjgzMTczMgJfMQQFb3V0UHIIBQ0kdDAzMTYyODMxNzMyAl8yBAhjdXJQclgxOAkBBGNwYmkCCQECdDECBQlwckJhbGFuY2UFBXByRGNtCQECdDECBQlhbUJhbGFuY2UFBWFtRGNtBAVjdXJQcgkBAmYxAgUIY3VyUHJYMTgFBnNjYWxlOAQFc3RhdGUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MJAGQCBQVvdXRBbQUFb3V0UHIDCQAAAgUKb3V0QXNzZXRJZAIFV0FWRVMFBHVuaXQJANkEAQUKb3V0QXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQEDZ2F1AgkApQgBBQt1c2VyQWRkcmVzcwUGdHhJZDU4CQERZGF0YUdldEFjdGlvbkluZm8GBQVvdXRBbQUFb3V0UHIFBnBtdEFtdAUFY3VyUHIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwbAAFBWN1clByCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQVjdXJQcgUDbmlsAwkAAAIFBXN0YXRlBQVzdGF0ZQQEYnVybgkA/AcEBQNmY2ECBGJ1cm4JAMwIAgUGcG10QW10BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCnBtdEFzc2V0SWQFBnBtdEFtdAUDbmlsAwkAAAIFBGJ1cm4FBGJ1cm4FBXN0YXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCWdldE5vTGVzcwISbm9MZXNzVGhlbkFtdEFzc2V0FG5vTGVzc1RoZW5QcmljZUFzc2V0BAFyCQECY2cBBQFpBAhvdXRBbUFtdAgFAXICXzEECG91dFByQW10CAUBcgJfMgQGcG10QW10CAUBcgJfMwQKcG10QXNzZXRJZAgFAXICXzQEBXN0YXRlCAUBcgJfNQMJAGYCBRJub0xlc3NUaGVuQW10QXNzZXQFCG91dEFtQW10CQACAQkArAICCQCsAgIJAKwCAgIJRmFpbGVkOiAgCQCkAwEFCG91dEFtQW10AgMgPCAJAKQDAQUSbm9MZXNzVGhlbkFtdEFzc2V0AwkAZgIFFG5vTGVzc1RoZW5QcmljZUFzc2V0BQhvdXRQckFtdAkAAgEJAKwCAgkArAICCQCsAgICCEZhaWxlZDogCQCkAwEFCG91dFByQW10AgMgPCAJAKQDAQUUbm9MZXNzVGhlblByaWNlQXNzZXQEFGJ1cm5MUEFzc2V0T25GYWN0b3J5CQD8BwQFA2ZjYQIEYnVybgkAzAgCBQZwbXRBbXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUKcG10QXNzZXRJZAUGcG10QW10BQNuaWwDCQAAAgUUYnVybkxQQXNzZXRPbkZhY3RvcnkFFGJ1cm5MUEFzc2V0T25GYWN0b3J5BQVzdGF0ZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ11bnN0YWtlQW5kR2V0AQZhbW91bnQEDWNoZWNrUGF5bWVudHMDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAg1ObyBwbW50cyBleHBkBgMJAAACBQ1jaGVja1BheW1lbnRzBQ1jaGVja1BheW1lbnRzBANjZmcJAQNncGMABApmYWN0b3J5Q2ZnCQEDZ2ZjAAQJbHBBc3NldElkCQDZBAEJAJEDAgUDY2ZnBQlpZHhMUEFzSWQEB3N0YWtpbmcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFCmZhY3RvcnlDZmcFD2lkeEZhY3RTdGFrQ250cgIKV3Igc3QgYWRkcgQKdW5zdGFrZUludgkA/AcEBQdzdGFraW5nAgd1bnN0YWtlCQDMCAIJANgEAQUJbHBBc3NldElkCQDMCAIFBmFtb3VudAUDbmlsBQNuaWwDCQAAAgUKdW5zdGFrZUludgUKdW5zdGFrZUludgQBcgkBA2VnbwQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkA2AQBBQlscEFzc2V0SWQFBmFtb3VudAgFAWkGY2FsbGVyBANzdHMJAQ1wYXJzZUludFZhbHVlAQgFAXICXzkEBXN0YXRlCAUBcgNfMTAEAXYDAwkBA2lncwAGCQAAAgUDc3RzBQxQb29sU2h1dGRvd24JAAIBCQCsAgICCUJsb2NrZWQ6IAkApAMBBQNzdHMGAwkAAAIFAXYFAXYEBWJ1cm5BCQD8BwQFA2ZjYQIEYnVybgkAzAgCBQZhbW91bnQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUJbHBBc3NldElkBQZhbW91bnQFA25pbAMJAAACBQVidXJuQQUFYnVybkEFBXN0YXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCGFjdGl2YXRlAghhbXRBc1N0cgdwckFzU3RyAwkBAiE9AgkApQgBCAUBaQZjYWxsZXIJAKUIAQUDZmNhCQACAQIGZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAAUIYW10QXNTdHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAnBhAAUHcHJBc1N0cgUDbmlsAgdzdWNjZXNzAWkBBHNldFMCAWsBdgMJAQIhPQIJAKUIAQgFAWkGY2FsbGVyCQEEc3RyZgIFBHRoaXMJAQNhZGEABQJwZAkAzAgCCQELU3RyaW5nRW50cnkCBQFrBQF2BQNuaWwBaQEEc2V0SQIBawF2AwkBAiE9AgkApQgBCAUBaQZjYWxsZXIJAQRzdHJmAgUEdGhpcwkBA2FkYQAFAnBkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFrBQF2BQNuaWwBaQEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQEDZ3BjAAFpARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQdhc3NldElkCQCUCgIFA25pbAkBDWdldEFjY0JhbGFuY2UBBQdhc3NldElkAWkBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDBWFtQW10BXByQW10BWxwQW10BAJwcgkBCmNhbGNQcmljZXMDBQVhbUFtdAUFcHJBbXQFBWxwQW10CQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUCcHIAAAkAzAgCCQCmAwEJAJEDAgUCcHIAAQkAzAgCCQCmAwEJAJEDAgUCcHIAAgUDbmlsAWkBFmZyb21YMThXcmFwcGVyUkVBRE9OTFkCA3ZhbAxyZXNTY2FsZU11bHQJAJQKAgUDbmlsCQECZjECCQCnAwEFA3ZhbAUMcmVzU2NhbGVNdWx0AWkBFHRvWDE4V3JhcHBlclJFQURPTkxZAgdvcmlnVmFsDW9yaWdTY2FsZU11bHQJAJQKAgUDbmlsCQCmAwEJAQJ0MQIFB29yaWdWYWwFDW9yaWdTY2FsZU11bHQBaQEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAghwckFtdFgxOAhhbUFtdFgxOAkAlAoCBQNuaWwJAKYDAQkBBGNwYmkCCQCnAwEFCHByQW10WDE4CQCnAwEFCGFtQW10WDE4AWkBI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQZ0eElkNTgIc2xpcHBhZ2UHaW5BbUFtdAZpbkFtSWQHaW5QckFtdAZpblBySWQHdXNyQWRkcgZpc0V2YWwGZW1pdExwCQCUCgIFA25pbAkBA2VwbwwFBnR4SWQ1OAUIc2xpcHBhZ2UFB2luQW1BbXQFBmluQW1JZAUHaW5QckFtdAUGaW5QcklkBQd1c3JBZGRyBQZpc0V2YWwFBmVtaXRMcAcAAAIAAWkBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAZ0eElkNTgHcG10QXNJZAhwbXRMcEFtdAd1c3JBZGRyBAFyCQEDZWdvBAUGdHhJZDU4BQdwbXRBc0lkBQhwbXRMcEFtdAkBEUBleHRyTmF0aXZlKDEwNjIpAQUHdXNyQWRkcgkAlAoCBQNuaWwJAJwKCggFAXICXzEIBQFyAl8yCAUBcgJfMwgFAXICXzQIBQFyAl81CAUBcgJfNggFAXICXzcJAKYDAQgFAXICXzgIBQFyAl85CAUBcgNfMTABAnR4AQZ2ZXJpZnkABA90YXJnZXRQdWJsaWNLZXkEByRtYXRjaDAJAQFtAAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAUCcGsDCQABAgUHJG1hdGNoMAIEVW5pdAgFAnR4D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAckbWF0Y2gwBQJ0eAMJAAECBQckbWF0Y2gwAgVPcmRlcgQFb3JkZXIFByRtYXRjaDAECm1hdGNoZXJQdWIJAQJtcAAECm9yZGVyVmFsaWQJAQNtb2EBBQVvcmRlcgQLc2VuZGVyVmFsaWQJAPQDAwgFBW9yZGVyCWJvZHlCeXRlcwkAkQMCCAUFb3JkZXIGcHJvb2ZzAAAIBQVvcmRlcg9zZW5kZXJQdWJsaWNLZXkEDG1hdGNoZXJWYWxpZAkA9AMDCAUFb3JkZXIJYm9keUJ5dGVzCQCRAwIIBQVvcmRlcgZwcm9vZnMAAQUKbWF0Y2hlclB1YgMDAwUKb3JkZXJWYWxpZAULc2VuZGVyVmFsaWQHBQxtYXRjaGVyVmFsaWQHBgkBA3RvZQMFCm9yZGVyVmFsaWQFC3NlbmRlclZhbGlkBQxtYXRjaGVyVmFsaWQDCQABAgUHJG1hdGNoMAIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAXMFByRtYXRjaDAEB25ld0hhc2gJAPYDAQkBBXZhbHVlAQgFAXMGc2NyaXB0BAthbGxvd2VkSGFzaAkA2wQBCQEFdmFsdWUBCQCdCAIFA2ZjYQkBHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gABAtjdXJyZW50SGFzaAkA8QcBBQR0aGlzAwMJAAACBQthbGxvd2VkSGFzaAUHbmV3SGFzaAkBAiE9AgULY3VycmVudEhhc2gFB25ld0hhc2gHBgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUPdGFyZ2V0UHVibGljS2V5CQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ90YXJnZXRQdWJsaWNLZXm8emkr", "chainId": 87, "height": 3272928, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3a9BkxMWb2ZdmZMRJHYVVVeLAquVb3GC9NhXQPngD5dK Next: 92DYLyGX4B5suNvBuBkJpy7DuFpUi5PdUB9szaf9DVYx 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 (F) = {
130- let ar = F
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 (F) = {
133+ let as = F
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, M()))
149+let ay = addressFromStringValue(au(this, M()))
147150
148-let ay = at(this, Z())
151+let az = au(this, Z())
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-func aB () = {
157- let aC = at(this, X())
158- let aD = at(this, Y())
159- let aE = aw(ax, aj(aD))
160- let ah = aw(ax, aj(aC))
161- split(at(ax, ag(toString(ah), toString(aE))), i)
159+func aC () = {
160+ let aD = au(this, X())
161+ let aE = au(this, Y())
162+ let aF = ax(ay, aj(aE))
163+ let ah = ax(ay, aj(aD))
164+ split(au(ay, ag(toString(ah), toString(aF))), i)
162165 }
163166
164167
165-func aF () = split(at(ax, ae()), i)
168+func aG () = split(au(ay, ae()), i)
166169
167170
168-func aG (aH,aI,aJ,aK,aL,aM,aN,aO,aP,aQ) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aH), toString(aI), toString(aJ), toString(aK), toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ)], i)
171+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)], i)
169172
170173
171-func aR (aS,aT,aU,aK,aN,aO) = makeString(["%d%d%d%d%d%d", toString(aS), toString(aT), toString(aU), toString(aK), toString(aN), toString(aO)], i)
174+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)], i)
172175
173176
174-func aV (aW) = if ((aW == "WAVES"))
177+func aW (aX) = if ((aX == "WAVES"))
175178 then wavesBalance(this).available
176- else assetBalance(this, fromBase58String(aW))
179+ else assetBalance(this, fromBase58String(aX))
177180
178181
179-func aX (aY,aZ) = fraction(aY, c, aZ)
182+func aY (aZ,ba) = fraction(aZ, c, ba)
180183
181184
182-func ba (bb,bc,bd) = {
183- let be = fraction((bb - bc), b, bc)
184- let bf = ((bd - L(be)) > d)
185- if (!(bf))
186- then throw(("Big slpg: " + toString(be)))
187- else $Tuple2(bf, min([bb, bc]))
185+func bb (bc,bd,be) = {
186+ let bf = fraction((bc - bd), b, bd)
187+ let bg = ((be - L(bf)) > d)
188+ if (!(bg))
189+ then throw(("Big slpg: " + toString(bf)))
190+ else $Tuple2(bg, min([bc, bd]))
188191 }
189192
190193
191-func bg (bh,bi,bj) = {
192- let be = fraction(bi, b, bh)
193- let bk = (bj > be)
194- if (if (bk)
194+func bh (bi,bj,bk) = {
195+ let bf = fraction(bj, b, bi)
196+ let bl = (bk > bf)
197+ if (if (bl)
195198 then true
196- else (bi > bh))
197- then throw(((((((toString(bi) + " ") + toString(bh)) + " ") + toString(be)) + " ") + toString(bj)))
198- else bk
199+ else (bj > bi))
200+ then throw(((((((toString(bj) + " ") + toString(bi)) + " ") + toString(bf)) + " ") + toString(bk)))
201+ else bl
199202 }
200203
201204
202-func bl (bm,bn,bo,bp) = {
203- let bq = B(bo, bm)
205+func bm (bn,bo,bp,bq) = {
204206 let br = B(bp, bn)
205- aX(br, bq)
207+ let bs = B(bq, bo)
208+ aY(bs, br)
206209 }
207210
208211
209-func bs (bo,bp,bt) = {
210- let bu = aB()
211- let bv = parseIntValue(bu[t])
212- let bw = parseIntValue(bu[u])
213- let bx = bl(bv, bw, bo, bp)
214- let aZ = B(bo, bv)
215- let aY = B(bp, bw)
216- let by = B(bt, a)
217- let bz = aX(aZ, by)
218- let bA = aX(aY, by)
219-[bx, bz, bA]
212+func bt (bp,bq,bu) = {
213+ let bv = aC()
214+ let bw = parseIntValue(bv[t])
215+ let bx = parseIntValue(bv[u])
216+ let by = bm(bw, bx, bp, bq)
217+ let ba = B(bp, bw)
218+ let aZ = B(bq, bx)
219+ let bz = B(bu, a)
220+ let bA = aY(ba, bz)
221+ let bB = aY(aZ, bz)
222+[by, bA, bB]
220223 }
221224
222225
223-func bB (bo,bp,bt) = {
224- let bC = bs(bo, bp, bt)
225-[E(bC[0], a), E(bC[1], a), E(bC[2], a)]
226+func bC (bp,bq,bu) = {
227+ let bD = bt(bp, bq, bu)
228+[E(bD[0], a), E(bD[1], a), E(bD[2], a)]
226229 }
227230
228231
229-func bD (bE,bF,bG,bH) = {
230- let bu = aB()
231- let bI = bu[q]
232- let bJ = bu[r]
233- let bK = bu[s]
234- let bL = parseIntValue(bu[t])
235- let bM = parseIntValue(bu[u])
236- let bN = bu[p]
237- let bO = valueOrErrorMessage(assetInfo(fromBase58String(bI)), "Wrong LP id").quantity
238- if ((bI != bF))
232+func bE (bF,bG,bH,bI) = {
233+ let bv = aC()
234+ let bJ = bv[q]
235+ let bK = bv[r]
236+ let bL = bv[s]
237+ let bM = parseIntValue(bv[t])
238+ let bN = parseIntValue(bv[u])
239+ let bO = bv[p]
240+ let bP = valueOrErrorMessage(assetInfo(fromBase58String(bJ)), "Wrong LP id").quantity
241+ if ((bJ != bG))
239242 then throw("Wrong pmt asset")
240243 else {
241- let bP = aV(bJ)
242- let bQ = B(bP, bL)
243- let bR = aV(bK)
244- let bS = B(bR, bM)
245- let bT = aX(bS, bQ)
246- let bU = E(bT, a)
247- let bV = B(bG, a)
248- let bW = B(bO, a)
249- let bX = fraction(bQ, bV, bW)
250- let bY = fraction(bS, bV, bW)
251- let bZ = E(bX, bL)
244+ let bQ = aW(bK)
245+ let bR = B(bQ, bM)
246+ let bS = aW(bL)
247+ let bT = B(bS, bN)
248+ let bU = aY(bT, bR)
249+ let bV = E(bU, a)
250+ let bW = B(bH, a)
251+ let bX = B(bP, a)
252+ let bY = fraction(bR, bW, bX)
253+ let bZ = fraction(bT, bW, bX)
252254 let ca = E(bY, bM)
253- let cb = if ((bE == ""))
255+ let cb = E(bZ, bN)
256+ let cc = if ((bF == ""))
254257 then nil
255- else [ScriptTransfer(bH, bZ, if ((bJ == "WAVES"))
258+ else [ScriptTransfer(bI, ca, if ((bK == "WAVES"))
256259 then unit
257- else fromBase58String(bJ)), ScriptTransfer(bH, ca, if ((bK == "WAVES"))
260+ else fromBase58String(bK)), ScriptTransfer(bI, cb, if ((bL == "WAVES"))
258261 then unit
259- else fromBase58String(bK)), StringEntry(W(toString(bH), bE), aR(bZ, ca, bG, bU, height, lastBlock.timestamp)), IntegerEntry(P(), bU), IntegerEntry(Q(height, lastBlock.timestamp), bU)]
260- $Tuple10(bZ, ca, bJ, bK, bP, bR, bO, bT, bN, cb)
262+ else fromBase58String(bL)), StringEntry(W(toString(bI), bF), aS(ca, cb, bH, bV, height, lastBlock.timestamp)), IntegerEntry(P(), bV), IntegerEntry(Q(height, lastBlock.timestamp), bV)]
263+ $Tuple10(ca, cb, bK, bL, bQ, bS, bP, bU, bO, cc)
261264 }
262265 }
263266
264267
265-func cc (bE,bd,cd,ce,cf,cg,bH,ch,ci,cj,ck,cl) = {
266- let bu = aB()
267- let bI = fromBase58String(bu[q])
268- let cm = bu[r]
269- let cn = bu[s]
270- let co = bu[v]
271- let cp = bu[w]
272- let cq = parseIntValue(bu[t])
273- let cr = parseIntValue(bu[u])
274- let bN = bu[p]
275- let cs = valueOrErrorMessage(assetInfo(bI), "Wr lp as").quantity
276- let bP = if (ch)
277- then aV(cm)
278- else if (if (cj)
279- then (cl == cm)
268+func cd (bF,be,ce,cf,cg,ch,bI,ci,cj,ck,cl,cm) = {
269+ let bv = aC()
270+ let bJ = fromBase58String(bv[q])
271+ let cn = bv[r]
272+ let co = bv[s]
273+ let cp = bv[v]
274+ let cq = bv[w]
275+ let cr = parseIntValue(bv[t])
276+ let cs = parseIntValue(bv[u])
277+ let bO = bv[p]
278+ let ct = valueOrErrorMessage(assetInfo(bJ), "Wr lp as").quantity
279+ let bQ = if (ci)
280+ then aW(cn)
281+ else if (if (ck)
282+ then (cm == cn)
280283 else false)
281- then (aV(cm) - ck)
282- else if (cj)
283- then aV(cm)
284- else (aV(cm) - cd)
285- let bR = if (ch)
286- then aV(cn)
287- else if (if (cj)
288- then (cl == cn)
284+ then (aW(cn) - cl)
285+ else if (ck)
286+ then aW(cn)
287+ else (aW(cn) - ce)
288+ let bS = if (ci)
289+ then aW(co)
290+ else if (if (ck)
291+ then (cm == co)
289292 else false)
290- then (aV(cn) - ck)
291- else if (cj)
292- then aV(cn)
293- else (aV(cn) - cf)
294- let ct = B(cd, cq)
295- let cu = B(cf, cr)
296- let cv = aX(cu, ct)
297- let bQ = B(bP, cq)
298- let bS = B(bR, cr)
299- let cw = if ((cs == 0))
293+ then (aW(co) - cl)
294+ else if (ck)
295+ then aW(co)
296+ else (aW(co) - cg)
297+ let cu = B(ce, cr)
298+ let cv = B(cg, cs)
299+ let cw = aY(cv, cu)
300+ let bR = B(bQ, cr)
301+ let bT = B(bS, cs)
302+ let cx = if ((ct == 0))
300303 then {
301- let bT = d
302- let cx = d
303- let by = pow((ct * cu), 0, toBigInt(5), 1, 0, DOWN)
304- $Tuple5(E(by, a), E(ct, cq), E(cu, cr), aX((bS + cu), (bQ + ct)), cx)
304+ let bU = d
305+ let cy = d
306+ let bz = pow((cu * cv), 0, toBigInt(5), 1, 0, DOWN)
307+ $Tuple5(E(bz, a), E(cu, cr), E(cv, cs), aY((bT + cv), (bR + cu)), cy)
305308 }
306309 else {
307- let bT = aX(bS, bQ)
308- let cy = fraction(L((bT - cv)), c, bT)
309- let cx = B(bd, a)
310- if (if ((bT != d))
311- then (cy > cx)
310+ let bU = aY(bT, bR)
311+ let cz = fraction(L((bU - cw)), c, bU)
312+ let cy = B(be, a)
313+ if (if ((bU != d))
314+ then (cz > cy)
312315 else false)
313- then throw(((("Price slippage " + toString(cy)) + " > ") + toString(cx)))
316+ then throw(((("Price slippage " + toString(cz)) + " > ") + toString(cy)))
314317 else {
315- let cz = B(cs, a)
316- let cA = fraction(ct, bT, c)
317- let cB = fraction(cu, c, bT)
318- let cC = if ((cA > cu))
319- then $Tuple2(cB, cu)
320- else $Tuple2(ct, cA)
321- let cD = cC._1
322- let cE = cC._2
323- let by = fraction(cz, cE, bS)
324- $Tuple5(E(by, a), E(cD, cq), E(cE, cr), bT, cx)
318+ let cA = B(ct, a)
319+ let cB = fraction(cu, bU, c)
320+ let cC = fraction(cv, c, bU)
321+ let cD = if ((cB > cv))
322+ then $Tuple2(cC, cv)
323+ else $Tuple2(cu, cB)
324+ let cE = cD._1
325+ let cF = cD._2
326+ let bz = fraction(cA, cF, bT)
327+ $Tuple5(E(bz, a), E(cE, cr), E(cF, cs), bU, cy)
325328 }
326329 }
327- let cF = cw._1
328- let cG = cw._2
329- let cH = cw._3
330- let bU = E(cw._4, a)
331- let cI = E(cw._5, a)
332- if ((0 >= cF))
330+ let cG = cx._1
331+ let cH = cx._2
332+ let cI = cx._3
333+ let bV = E(cx._4, a)
334+ let cJ = E(cx._5, a)
335+ if ((0 >= cG))
333336 then throw("LP <= 0")
334337 else {
335- let cJ = if (!(ci))
338+ let cK = if (!(cj))
336339 then 0
337- else cF
338- let cK = (cd - cG)
339- let cL = (cf - cH)
340- let cM = if (if (cj)
341- then (cl == cm)
340+ else cG
341+ let cL = (ce - cH)
342+ let cM = (cg - cI)
343+ let cN = if (if (ck)
344+ then (cm == cn)
342345 else false)
343- then $Tuple2(ck, 0)
344- else if (if (cj)
345- then (cl == cn)
346+ then $Tuple2(cl, 0)
347+ else if (if (ck)
348+ then (cm == co)
346349 else false)
347- then $Tuple2(0, ck)
348- else $Tuple2(cG, cH)
349- let cN = cM._1
350- let cO = cM._2
351- let cP = [IntegerEntry(P(), bU), IntegerEntry(Q(height, lastBlock.timestamp), bU), StringEntry(T(bH, bE), aG(cN, cO, cJ, bU, bd, cI, height, lastBlock.timestamp, cK, cL))]
352- $Tuple13(cF, cJ, bU, bP, bR, cs, bI, bN, cP, cK, cL, ce, cg)
350+ then $Tuple2(0, cl)
351+ else $Tuple2(cH, cI)
352+ let cO = cN._1
353+ let cP = cN._2
354+ let cQ = [IntegerEntry(P(), bV), IntegerEntry(Q(height, lastBlock.timestamp), bV), StringEntry(T(bI, bF), aH(cO, cP, cK, bV, be, cJ, height, lastBlock.timestamp, cL, cM))]
355+ $Tuple13(cG, cK, bV, bQ, bS, ct, bJ, bO, cQ, cL, cM, cf, ch)
353356 }
354357 }
355358
356359
357-func cQ (cR) = {
358- let bu = aB()
359- let cS = bu[r]
360- let cT = bu[s]
361- let bN = parseIntValue(bu[p])
362- let bv = parseIntValue(bu[t])
363- let bw = parseIntValue(bu[u])
364- let cU = aV(cS)
365- let cV = aV(cT)
366- let bT = if ((cR.orderType == Buy))
367- then bl(bv, bw, (cU + cR.amount), cV)
368- else bl(bv, bw, (cU - cR.amount), cV)
369- let bU = E(bT, a)
370- if (if (if (az())
360+func cR (cS) = {
361+ let bv = aC()
362+ let cT = bv[r]
363+ let cU = bv[s]
364+ let bO = parseIntValue(bv[p])
365+ let bw = parseIntValue(bv[t])
366+ let bx = parseIntValue(bv[u])
367+ let cV = aW(cT)
368+ let cW = aW(cU)
369+ let bU = if ((cS.orderType == Buy))
370+ then bm(bw, bx, (cV + cS.amount), cW)
371+ else bm(bw, bx, (cV - cS.amount), cW)
372+ let bV = E(bU, a)
373+ if (if (if (aA())
371374 then true
372- else (bN == m))
375+ else (bO == m))
373376 then true
374- else (bN == n))
377+ else (bO == n))
375378 then throw("Admin blocked")
376379 else {
377- let cW = cR.assetPair.amountAsset
378- let cX = if ((cW == unit))
380+ let cX = cS.assetPair.amountAsset
381+ let cY = if ((cX == unit))
379382 then "WAVES"
380- else toBase58String(value(cW))
381- let cY = cR.assetPair.priceAsset
382- let cZ = if ((cY == unit))
383+ else toBase58String(value(cX))
384+ let cZ = cS.assetPair.priceAsset
385+ let da = if ((cZ == unit))
383386 then "WAVES"
384- else toBase58String(value(cY))
385- if (if ((cX != cS))
387+ else toBase58String(value(cZ))
388+ if (if ((cY != cT))
386389 then true
387- else (cZ != cT))
390+ else (da != cU))
388391 then throw("Wr assets")
389392 else {
390- let da = cR.price
391- let cr = fraction(a, bw, bv)
392- let db = H(da, a, cr)
393- let dc = if ((cR.orderType == Buy))
394- then (bU >= db)
395- else (db >= bU)
393+ let db = cS.price
394+ let cs = fraction(a, bx, bw)
395+ let dc = H(db, a, cs)
396+ let dd = if ((cS.orderType == Buy))
397+ then (bV >= dc)
398+ else (dc >= bV)
396399 true
397400 }
398401 }
399402 }
400403
401404
402-func dd (de) = if ((size(de.payments) != 1))
405+func de (df) = if ((size(df.payments) != 1))
403406 then throw("1 pmnt exp")
404407 else {
405- let df = value(de.payments[0])
406- let bF = value(df.assetId)
407- let ck = df.amount
408- let cw = bD(toBase58String(de.transactionId), toBase58String(bF), ck, de.caller)
409- let bZ = cw._1
410- let ca = cw._2
411- let bN = parseIntValue(cw._9)
412- let cb = cw._10
413- if (if (az())
408+ let dg = value(df.payments[0])
409+ let bG = value(dg.assetId)
410+ let cl = dg.amount
411+ let cx = bE(toBase58String(df.transactionId), toBase58String(bG), cl, df.caller)
412+ let ca = cx._1
413+ let cb = cx._2
414+ let bO = parseIntValue(cx._9)
415+ let cc = cx._10
416+ if (if (aA())
414417 then true
415- else (bN == n))
416- then throw(("Admin blocked: " + toString(bN)))
417- else $Tuple5(bZ, ca, ck, bF, cb)
418+ else (bO == n))
419+ then throw(("Admin blocked: " + toString(bO)))
420+ else $Tuple5(ca, cb, cl, bG, cc)
418421 }
419422
420423
421-func dg (ac,V,dh,di,bd,ci,cj,ck,cl) = {
422- let cw = cc(V, bd, value(dh).amount, value(dh).assetId, value(di).amount, value(di).assetId, ac, false, ci, cj, ck, cl)
423- let bN = parseIntValue(cw._8)
424- if (if (if (az())
424+func dh (ac,V,di,dj,be,cj,ck,cl,cm) = {
425+ let cx = cd(V, be, value(di).amount, value(di).assetId, value(dj).amount, value(dj).assetId, ac, false, cj, ck, cl, cm)
426+ let bO = parseIntValue(cx._8)
427+ if (if (if (aA())
425428 then true
426- else (bN == l))
429+ else (bO == l))
427430 then true
428- else (bN == n))
429- then throw(("Blocked:" + toString(bN)))
430- else cw
431+ else (bO == n))
432+ then throw(("Blocked:" + toString(bO)))
433+ else cx
431434 }
432435
433436
434-func dj () = {
435- let ar = getString(N())
436- if ($isInstanceOf(ar, "String"))
437+func dk () = {
438+ let as = getString(N())
439+ if ($isInstanceOf(as, "String"))
437440 then {
438- let dk = ar
439- fromBase58String(dk)
441+ let dl = as
442+ fromBase58String(dl)
440443 }
441- else if ($isInstanceOf(ar, "Unit"))
444+ else if ($isInstanceOf(as, "Unit"))
442445 then unit
443446 else throw("Match error")
444447 }
445448
446449
447-func dl () = {
448- let ar = getString(O())
449- if ($isInstanceOf(ar, "String"))
450+func dm () = {
451+ let as = getString(O())
452+ if ($isInstanceOf(as, "String"))
450453 then {
451- let dk = ar
452- fromBase58String(dk)
454+ let dl = as
455+ fromBase58String(dl)
453456 }
454- else if ($isInstanceOf(ar, "Unit"))
457+ else if ($isInstanceOf(as, "Unit"))
455458 then unit
456459 else throw("Match error")
457460 }
458461
459462
460-let dm = throw("Permission denied")
463+let dn = throw("Permission denied")
461464
462-func dn (de) = {
463- let ar = dj()
464- if ($isInstanceOf(ar, "ByteVector"))
465+func do (df) = {
466+ let as = dk()
467+ if ($isInstanceOf(as, "ByteVector"))
465468 then {
466- let do = ar
467- if ((de.callerPublicKey == do))
469+ let dp = as
470+ if ((df.callerPublicKey == dp))
468471 then true
469- else dm
472+ else dn
470473 }
471- else if ($isInstanceOf(ar, "Unit"))
472- then if ((de.caller == this))
474+ else if ($isInstanceOf(as, "Unit"))
475+ then if ((df.caller == this))
473476 then true
474- else dm
477+ else dn
475478 else throw("Match error")
476479 }
477480
478481
479-@Callable(de)
482+@Callable(df)
480483 func constructor (M) = {
481- let dp = dn(de)
482- if ((dp == dp))
484+ let dq = do(df)
485+ if ((dq == dq))
483486 then [StringEntry(M(), M)]
484487 else throw("Strict value is not equal to itself.")
485488 }
486489
487490
488491
489-@Callable(de)
490-func setManager (dq) = {
491- let dp = dn(de)
492- if ((dp == dp))
492+@Callable(df)
493+func setManager (dr) = {
494+ let dq = do(df)
495+ if ((dq == dq))
493496 then {
494- let dr = fromBase58String(dq)
495- if ((dr == dr))
496- then [StringEntry(O(), dq)]
497+ let ds = fromBase58String(dr)
498+ if ((ds == ds))
499+ then [StringEntry(O(), dr)]
497500 else throw("Strict value is not equal to itself.")
498501 }
499502 else throw("Strict value is not equal to itself.")
501504
502505
503506
504-@Callable(de)
507+@Callable(df)
505508 func confirmManager () = {
506- let bC = dl()
507- let ds = if (isDefined(bC))
509+ let bD = dm()
510+ let dt = if (isDefined(bD))
508511 then true
509512 else throw("No pending manager")
510- if ((ds == ds))
513+ if ((dt == dt))
511514 then {
512- let dt = if ((de.callerPublicKey == value(bC)))
515+ let du = if ((df.callerPublicKey == value(bD)))
513516 then true
514517 else throw("You are not pending manager")
515- if ((dt == dt))
516- then [StringEntry(N(), toBase58String(value(bC))), DeleteEntry(O())]
518+ if ((du == du))
519+ then [StringEntry(N(), toBase58String(value(bD))), DeleteEntry(O())]
517520 else throw("Strict value is not equal to itself.")
518521 }
519522 else throw("Strict value is not equal to itself.")
521524
522525
523526
524-@Callable(de)
525-func put (du,dv) = {
526- let dw = aF()
527- let dx = valueOrErrorMessage(addressFromString(dw[x]), "Wr st addr")
528- let dy = valueOrErrorMessage(addressFromString(dw[y]), "Wr sl addr")
529- if ((0 > du))
527+@Callable(df)
528+func put (dv,dw) = {
529+ let dx = aG()
530+ let dy = valueOrErrorMessage(addressFromString(dx[x]), "Wr st addr")
531+ let dz = valueOrErrorMessage(addressFromString(dx[y]), "Wr sl addr")
532+ if ((0 > dv))
530533 then throw("Wrong slippage")
531- else if ((size(de.payments) != 2))
534+ else if ((size(df.payments) != 2))
532535 then throw("2 pmnts expd")
533536 else {
534- let dz = dg(toString(de.caller), toBase58String(de.transactionId), AttachedPayment(value(de.payments[0]).assetId, value(de.payments[0]).amount), de.payments[1], du, true, false, 0, "")
535- let cJ = dz._2
536- let dA = dz._7
537- let cb = dz._9
538- let cK = dz._10
539- let cL = dz._11
540- let bJ = dz._12
541- let bK = dz._13
542- let cw = invoke(ax, "emit", [cJ], nil)
543- if ((cw == cw))
537+ let dA = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(value(df.payments[0]).assetId, value(df.payments[0]).amount), df.payments[1], dv, true, false, 0, "")
538+ let cK = dA._2
539+ let dB = dA._7
540+ let cc = dA._9
541+ let cL = dA._10
542+ let cM = dA._11
543+ let bK = dA._12
544+ let bL = dA._13
545+ let cx = invoke(ay, "emit", [cK], nil)
546+ if ((cx == cx))
544547 then {
545- let dB = {
546- let ar = cw
547- if ($isInstanceOf(ar, "Address"))
548+ let dC = {
549+ let as = cx
550+ if ($isInstanceOf(as, "Address"))
548551 then {
549- let dC = ar
550- invoke(dC, "emit", [cJ], nil)
552+ let dD = as
553+ invoke(dD, "emit", [cK], nil)
551554 }
552555 else unit
553556 }
554- if ((dB == dB))
557+ if ((dC == dC))
555558 then {
556- let dD = if ((cK > 0))
557- then invoke(dy, "put", nil, [AttachedPayment(bJ, cK)])
559+ let dE = if ((cL > 0))
560+ then invoke(dz, "put", nil, [AttachedPayment(bK, cL)])
558561 else nil
559- if ((dD == dD))
562+ if ((dE == dE))
560563 then {
561- let dE = if ((cL > 0))
562- then invoke(dy, "put", nil, [AttachedPayment(bK, cL)])
564+ let dF = if ((cM > 0))
565+ then invoke(dz, "put", nil, [AttachedPayment(bL, cM)])
563566 else nil
564- if ((dE == dE))
567+ if ((dF == dF))
565568 then {
566- let dF = if (dv)
569+ let dG = if (dw)
567570 then {
568- let dG = invoke(dx, "stake", nil, [AttachedPayment(dA, cJ)])
569- if ((dG == dG))
571+ let dH = invoke(dy, "stake", nil, [AttachedPayment(dB, cK)])
572+ if ((dH == dH))
570573 then nil
571574 else throw("Strict value is not equal to itself.")
572575 }
573- else [ScriptTransfer(de.caller, cJ, dA)]
574- (cb ++ dF)
576+ else [ScriptTransfer(df.caller, cK, dB)]
577+ (cc ++ dG)
575578 }
576579 else throw("Strict value is not equal to itself.")
577580 }
585588
586589
587590
588-@Callable(de)
589-func putOneTkn (dH,dI,dJ,bd,dv) = {
590- let bu = aF()
591- let dx = valueOrErrorMessage(addressFromString(bu[x]), "Wr st addr")
592- let dy = valueOrErrorMessage(addressFromString(bu[y]), "Wr sl addr")
593- let dK = valueOrErrorMessage(addressFromString(bu[z]), "Wr gwx addr")
594- let dL = aB()
595- let bJ = dL[r]
596- let bK = dL[s]
597- let bL = parseIntValue(dL[t])
598- let bM = parseIntValue(dL[u])
599- let dM = valueOrElse(getString(this, aa()), "")
600- let bH = if ((dM == toString(de.caller)))
601- then de.originCaller
602- else de.caller
603- let dN = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
604- let dO = reentrantInvoke(dN, "ensureCanPutOneTkn", [toString(bH)], nil)
605- if ((dO == dO))
606- then if (if (if (if ((0 >= bd))
607- then true
608- else (0 >= dH))
591+@Callable(df)
592+func putOneTkn (dI,dJ,dK,be,dw) = {
593+ let bv = aG()
594+ let dy = valueOrErrorMessage(addressFromString(bv[x]), "Wr st addr")
595+ let dz = valueOrErrorMessage(addressFromString(bv[y]), "Wr sl addr")
596+ let dL = valueOrErrorMessage(addressFromString(bv[z]), "Wr gwx addr")
597+ let dM = aC()
598+ let bK = dM[r]
599+ let bL = dM[s]
600+ let bM = parseIntValue(dM[t])
601+ let bN = parseIntValue(dM[u])
602+ let dN = valueOrElse(getString(this, aa()), "")
603+ let bI = if ((dN == toString(df.caller)))
604+ then df.originCaller
605+ else df.caller
606+ let dO = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
607+ let dP = reentrantInvoke(dO, "ensureCanPutOneTkn", [toString(bI)], nil)
608+ if ((dP == dP))
609+ then if (if (if (if ((0 >= be))
609610 then true
610611 else (0 >= dI))
611612 then true
612613 else (0 >= dJ))
614+ then true
615+ else (0 >= dK))
613616 then throw("Wrong params")
614- else if ((size(de.payments) != 1))
617+ else if ((size(df.payments) != 1))
615618 then throw("1 pmnt expd")
616619 else {
617- let df = value(de.payments[0])
618- let bF = toBase58String(value(df.assetId))
619- let ck = df.amount
620- if ((10000000 > ck))
620+ let dg = value(df.payments[0])
621+ let bG = toBase58String(value(dg.assetId))
622+ let cl = dg.amount
623+ if ((10000000 > cl))
621624 then throw("Wrong pmt amt")
622625 else {
623- let bP = aV(bJ)
624- let bR = aV(bK)
625- let dP = if ((bF == bJ))
626- then if (if ((ck > bP))
626+ let bQ = aW(bK)
627+ let bS = aW(bL)
628+ let dQ = if ((bG == bK))
629+ then if (if ((cl > bQ))
627630 then true
628- else (dH > ck))
631+ else (dI > cl))
629632 then throw("invalid payment amount")
630- else $Tuple6((bP - ck), bR, (ck - dH), dI, 0, 0)
631- else if ((bF == bK))
632- then if (if ((ck > bR))
633+ else $Tuple6((bQ - cl), bS, (cl - dI), dJ, 0, 0)
634+ else if ((bG == bL))
635+ then if (if ((cl > bS))
633636 then true
634- else (dI > ck))
637+ else (dJ > cl))
635638 then throw("invalid payment amount")
636- else $Tuple6(bP, (bR - ck), 0, 0, (ck - dI), dH)
639+ else $Tuple6(bQ, (bS - cl), 0, 0, (cl - dJ), dI)
637640 else throw("wrong pmtAssetId")
638- let dQ = dP._1
639- let dR = dP._2
640- let dS = dP._3
641- let dT = dP._4
642- let dU = dP._5
643- let dV = dP._6
644- let bi = invoke(dK, "calcD", [toString(dQ), toString(dR), ay, g, h], nil)
645- let bh = invoke(dK, "calcD", [toString(toBigInt(((dQ + dS) - dV))), toString(toBigInt(((dR + dU) - dT))), ay, g, h], nil)
646- let dW = bg(parseBigIntValue(aq(bh)), parseBigIntValue(aq(bi)), f)
647- if ((dW == dW))
641+ let dR = dQ._1
642+ let dS = dQ._2
643+ let dT = dQ._3
644+ let dU = dQ._4
645+ let dV = dQ._5
646+ let dW = dQ._6
647+ let bj = invoke(dL, "calcD", [toString(dR), toString(dS), az, g, h], nil)
648+ let bi = invoke(dL, "calcD", [toString(toBigInt(((dR + dT) - dW))), toString(toBigInt(((dS + dV) - dU))), az, g, h], nil)
649+ let dX = bh(parseBigIntValue(ar(bi)), parseBigIntValue(ar(bj)), f)
650+ if ((dX == dX))
648651 then {
649- let dX = dg(toString(de.caller), toBase58String(de.transactionId), AttachedPayment(fromBase58String(bJ), dH), AttachedPayment(fromBase58String(bK), dI), bd, true, true, ck, bF)
650- let dY = dX._2
651- let dA = dX._7
652- let cb = dX._9
653- let cK = dX._10
654- let cL = dX._11
655- let dZ = ba(toBigInt(dY), toBigInt(dJ), toBigInt(bd))
656- let cJ = toInt(dZ._2)
657- let dz = invoke(ax, "emit", [cJ], nil)
658- if ((dz == dz))
652+ let dY = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(fromBase58String(bK), dI), AttachedPayment(fromBase58String(bL), dJ), be, true, true, cl, bG)
653+ let dZ = dY._2
654+ let dB = dY._7
655+ let cc = dY._9
656+ let cL = dY._10
657+ let cM = dY._11
658+ let ea = bb(toBigInt(dZ), toBigInt(dK), toBigInt(be))
659+ let cK = toInt(ea._2)
660+ let dA = invoke(ay, "emit", [cK], nil)
661+ if ((dA == dA))
659662 then {
660- let dB = {
661- let ar = dz
662- if ($isInstanceOf(ar, "Address"))
663+ let dC = {
664+ let as = dA
665+ if ($isInstanceOf(as, "Address"))
663666 then {
664- let dC = ar
665- invoke(dC, "emit", [cJ], nil)
667+ let dD = as
668+ invoke(dD, "emit", [cK], nil)
666669 }
667670 else unit
668671 }
669- if ((dB == dB))
672+ if ((dC == dC))
670673 then {
671- let dD = if ((cK > 0))
672- then invoke(dy, "put", nil, [AttachedPayment(fromBase58String(bJ), cK)])
674+ let dE = if ((cL > 0))
675+ then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bK), cL)])
673676 else nil
674- if ((dD == dD))
677+ if ((dE == dE))
675678 then {
676- let dE = if ((cL > 0))
677- then invoke(dy, "put", nil, [AttachedPayment(fromBase58String(bK), cL)])
679+ let dF = if ((cM > 0))
680+ then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bL), cM)])
678681 else nil
679- if ((dE == dE))
682+ if ((dF == dF))
680683 then {
681- let dF = if (dv)
684+ let dG = if (dw)
682685 then {
683- let dG = invoke(dx, "stake", nil, [AttachedPayment(dA, cJ)])
684- if ((dG == dG))
686+ let dH = invoke(dy, "stake", nil, [AttachedPayment(dB, cK)])
687+ if ((dH == dH))
685688 then nil
686689 else throw("Strict value is not equal to itself.")
687690 }
688- else [ScriptTransfer(de.caller, cJ, dA)]
689- (cb ++ dF)
691+ else [ScriptTransfer(df.caller, cK, dB)]
692+ (cc ++ dG)
690693 }
691694 else throw("Strict value is not equal to itself.")
692695 }
704707
705708
706709
707-@Callable(de)
708-func putForFree (ea) = if ((0 > ea))
710+@Callable(df)
711+func putForFree (eb) = if ((0 > eb))
709712 then throw("Wrong slpg")
710- else if ((size(de.payments) != 2))
713+ else if ((size(df.payments) != 2))
711714 then throw("2 pmnts expd")
712715 else {
713- let dX = dg(toString(de.caller), toBase58String(de.transactionId), AttachedPayment(value(de.payments[0]).assetId, value(de.payments[0]).amount), de.payments[1], ea, false, false, 0, "")
714- dX._9
716+ let dY = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(value(df.payments[0]).assetId, value(df.payments[0]).amount), df.payments[1], eb, false, false, 0, "")
717+ dY._9
715718 }
716719
717720
718721
719-@Callable(de)
722+@Callable(df)
720723 func get () = {
721- let cw = dd(de)
722- let eb = cw._1
723- let ca = cw._2
724- let ck = cw._3
725- let bF = cw._4
726- let cb = cw._5
727- let ec = invoke(ax, "burn", [ck], [AttachedPayment(bF, ck)])
728- if ((ec == ec))
729- then cb
724+ let cx = de(df)
725+ let ec = cx._1
726+ let cb = cx._2
727+ let cl = cx._3
728+ let bG = cx._4
729+ let cc = cx._5
730+ let ed = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
731+ if ((ed == ed))
732+ then cc
730733 else throw("Strict value is not equal to itself.")
731734 }
732735
733736
734737
735-@Callable(de)
736-func getOneTkn (ed,ee,ef,eg,bd) = if ((size(de.payments) != 1))
738+@Callable(df)
739+func getOneTkn (ee,ef,eg,eh,be) = if ((size(df.payments) != 1))
737740 then throw("1 pmnt expd")
738741 else {
739- let bu = aB()
740- let bI = bu[q]
741- let bJ = bu[r]
742- let bK = bu[s]
743- let bL = parseIntValue(bu[t])
744- let bM = parseIntValue(bu[u])
745- let bN = bu[p]
746- let dw = aF()
747- let dK = valueOrErrorMessage(addressFromString(dw[z]), "Wr sl addr")
748- let df = value(de.payments[0])
749- let dM = valueOrElse(getString(this, aa()), "")
750- let bH = if ((dM == toString(de.caller)))
751- then de.originCaller
752- else de.caller
753- let bE = toBase58String(de.transactionId)
754- let bF = value(df.assetId)
755- let ck = df.amount
756- let dN = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
757- let dO = reentrantInvoke(dN, "ensureCanGetOneTkn", [toString(bH)], nil)
758- if ((dO == dO))
759- then if ((1000000000 > ck))
742+ let bv = aC()
743+ let bJ = bv[q]
744+ let bK = bv[r]
745+ let bL = bv[s]
746+ let bM = parseIntValue(bv[t])
747+ let bN = parseIntValue(bv[u])
748+ let bO = bv[p]
749+ let dx = aG()
750+ let dL = valueOrErrorMessage(addressFromString(dx[z]), "Wr sl addr")
751+ let dg = value(df.payments[0])
752+ let dN = valueOrElse(getString(this, aa()), "")
753+ let bI = if ((dN == toString(df.caller)))
754+ then df.originCaller
755+ else df.caller
756+ let bF = toBase58String(df.transactionId)
757+ let bG = value(dg.assetId)
758+ let cl = dg.amount
759+ let dO = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
760+ let dP = reentrantInvoke(dO, "ensureCanGetOneTkn", [toString(bI)], nil)
761+ if ((dP == dP))
762+ then if ((1000000000 > cl))
760763 then throw("Min pmt 10 LP")
761- else if (if (if ((0 > bd))
764+ else if (if (if ((0 > be))
762765 then true
763- else (0 > ed))
766+ else (0 > ee))
764767 then true
765- else (0 > ef))
768+ else (0 > eg))
766769 then throw("Wrong params")
767- else if ((bI != toBase58String(bF)))
770+ else if ((bJ != toBase58String(bG)))
768771 then throw("Wrong LP")
769772 else {
770- let cw = bD(toBase58String(de.transactionId), toBase58String(bF), ck, de.caller)
771- let eh = cw._1
772- let ei = cw._2
773- let bP = aV(bJ)
774- let bR = aV(bK)
775- let ej = if ((eg == bJ))
776- then $Tuple7((bP - eh), (bR - ei), ed, ei, 0, 0, (eh + ed))
777- else if ((eg == bK))
778- then $Tuple7((bP - eh), (bR - ei), 0, 0, ed, eh, (ei + ed))
773+ let cx = bE(toBase58String(df.transactionId), toBase58String(bG), cl, df.caller)
774+ let ei = cx._1
775+ let ej = cx._2
776+ let bQ = aW(bK)
777+ let bS = aW(bL)
778+ let ek = if ((eh == bK))
779+ then $Tuple7((bQ - ei), (bS - ej), ee, ej, 0, 0, (ei + ee))
780+ else if ((eh == bL))
781+ then $Tuple7((bQ - ei), (bS - ej), 0, 0, ee, ei, (ej + ee))
779782 else throw("wrong outAssetId")
780- let dQ = ej._1
781- let dR = ej._2
782- let dS = ej._3
783- let dT = ej._4
784- let dU = ej._5
785- let dV = ej._6
786- let ek = ej._7
787- if (if ((0 > dS))
783+ let dR = ek._1
784+ let dS = ek._2
785+ let dT = ek._3
786+ let dU = ek._4
787+ let dV = ek._5
788+ let dW = ek._6
789+ let el = ek._7
790+ if (if ((0 > dT))
788791 then true
789- else (0 > dU))
792+ else (0 > dV))
790793 then throw("Wrong calc")
791794 else {
792- let bi = invoke(dK, "calcD", [toString(dQ), toString(dR), ay, g, h], nil)
793- let bh = invoke(dK, "calcD", [toString(((dQ - dS) + dV)), toString(((dR + dT) - dU)), ay, g, h], nil)
794- let dW = bg(parseBigIntValue(aq(bh)), parseBigIntValue(aq(bi)), f)
795- if ((dW == dW))
795+ let bj = invoke(dL, "calcD", [toString(dR), toString(dS), az, g, h], nil)
796+ let bi = invoke(dL, "calcD", [toString(((dR - dT) + dW)), toString(((dS + dU) - dV)), az, g, h], nil)
797+ let dX = bh(parseBigIntValue(ar(bi)), parseBigIntValue(ar(bj)), f)
798+ if ((dX == dX))
796799 then {
797- let el = ba(toBigInt(ek), toBigInt(ef), toBigInt(bd))
798- if ((el == el))
800+ let em = bb(toBigInt(el), toBigInt(eg), toBigInt(be))
801+ if ((em == em))
799802 then {
800- let em = if ((eg == bJ))
801- then $Tuple2(toInt(el._2), 0)
802- else $Tuple2(0, toInt(el._2))
803- let en = em._1
804- let eo = em._2
805- let ep = aX(B(bR, bM), B(bP, bL))
806- let eq = E(ep, a)
807- let cb = [ScriptTransfer(bH, (en + eo), if ((eg == "WAVES"))
803+ let en = if ((eh == bK))
804+ then $Tuple2(toInt(em._2), 0)
805+ else $Tuple2(0, toInt(em._2))
806+ let eo = en._1
807+ let ep = en._2
808+ let eq = aY(B(bS, bN), B(bQ, bM))
809+ let er = E(eq, a)
810+ let cc = [ScriptTransfer(bI, (eo + ep), if ((eh == "WAVES"))
808811 then unit
809- else fromBase58String(eg)), StringEntry(W(toString(bH), bE), aR(en, eo, ck, eq, height, lastBlock.timestamp)), IntegerEntry(P(), eq), IntegerEntry(Q(height, lastBlock.timestamp), eq)]
810- if ((cb == cb))
812+ else fromBase58String(eh)), StringEntry(W(toString(bI), bF), aS(eo, ep, cl, er, height, lastBlock.timestamp)), IntegerEntry(P(), er), IntegerEntry(Q(height, lastBlock.timestamp), er)]
813+ if ((cc == cc))
811814 then {
812- let er = invoke(ax, "burn", [ck], [AttachedPayment(bF, ck)])
813- if ((er == er))
814- then cb
815+ let es = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
816+ if ((es == es))
817+ then cc
815818 else throw("Strict value is not equal to itself.")
816819 }
817820 else throw("Strict value is not equal to itself.")
826829
827830
828831
829-@Callable(de)
830-func getNoLess (es,et) = {
831- let cw = dd(de)
832- let bZ = cw._1
833- let ca = cw._2
834- let ck = cw._3
835- let bF = cw._4
836- let cb = cw._5
837- if ((es > bZ))
838- then throw(((("Failed: " + toString(bZ)) + " < ") + toString(es)))
839- else if ((et > ca))
840- then throw(((("Failed: " + toString(ca)) + " < ") + toString(et)))
832+@Callable(df)
833+func getNoLess (et,eu) = {
834+ let cx = de(df)
835+ let ca = cx._1
836+ let cb = cx._2
837+ let cl = cx._3
838+ let bG = cx._4
839+ let cc = cx._5
840+ if ((et > ca))
841+ then throw(((("Failed: " + toString(ca)) + " < ") + toString(et)))
842+ else if ((eu > cb))
843+ then throw(((("Failed: " + toString(cb)) + " < ") + toString(eu)))
841844 else {
842- let eu = invoke(ax, "burn", [ck], [AttachedPayment(bF, ck)])
843- if ((eu == eu))
844- then cb
845+ let ev = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
846+ if ((ev == ev))
847+ then cc
845848 else throw("Strict value is not equal to itself.")
846849 }
847850 }
848851
849852
850853
851-@Callable(de)
852-func unstakeAndGet (ev) = {
853- let ew = if ((size(de.payments) != 0))
854+@Callable(df)
855+func unstakeAndGet (ew) = {
856+ let ex = if ((size(df.payments) != 0))
854857 then throw("No pmnts expd")
855858 else true
856- if ((ew == ew))
859+ if ((ex == ex))
857860 then {
858- let bu = aB()
859- let ex = aF()
860- let dA = fromBase58String(bu[q])
861- let ey = valueOrErrorMessage(addressFromString(ex[x]), "Wr st addr")
862- let ez = invoke(ey, "unstake", [toBase58String(dA), ev], nil)
863- if ((ez == ez))
861+ let bv = aC()
862+ let ey = aG()
863+ let dB = fromBase58String(bv[q])
864+ let ez = valueOrErrorMessage(addressFromString(ey[x]), "Wr st addr")
865+ let eA = invoke(ez, "unstake", [toBase58String(dB), ew], nil)
866+ if ((eA == eA))
864867 then {
865- let cw = bD(toBase58String(de.transactionId), toBase58String(dA), ev, de.caller)
866- let bN = parseIntValue(cw._9)
867- let cb = cw._10
868- let eA = if (if (az())
868+ let cx = bE(toBase58String(df.transactionId), toBase58String(dB), ew, df.caller)
869+ let bO = parseIntValue(cx._9)
870+ let cc = cx._10
871+ let eB = if (if (aA())
869872 then true
870- else (bN == n))
871- then throw(("Blocked: " + toString(bN)))
873+ else (bO == n))
874+ then throw(("Blocked: " + toString(bO)))
872875 else true
873- if ((eA == eA))
876+ if ((eB == eB))
874877 then {
875- let eB = invoke(ax, "burn", [ev], [AttachedPayment(dA, ev)])
876- if ((eB == eB))
877- then cb
878+ let eC = invoke(ay, "burn", [ew], [AttachedPayment(dB, ew)])
879+ if ((eC == eC))
880+ then cc
878881 else throw("Strict value is not equal to itself.")
879882 }
880883 else throw("Strict value is not equal to itself.")
886889
887890
888891
889-@Callable(de)
890-func activate (eC,eD) = if ((toString(de.caller) != toString(ax)))
892+@Callable(df)
893+func activate (eD,eE) = if ((toString(df.caller) != toString(ay)))
891894 then throw("denied")
892- else $Tuple2([StringEntry(X(), eC), StringEntry(Y(), eD)], "success")
895+ else $Tuple2([StringEntry(X(), eD), StringEntry(Y(), eE)], "success")
893896
894897
895898
896-@Callable(de)
897-func setS (eE,eA) = if ((toString(de.caller) != at(this, aa())))
898- then dm
899- else [StringEntry(eE, eA)]
899+@Callable(df)
900+func setS (eF,eB) = if ((toString(df.caller) != au(this, aa())))
901+ then dn
902+ else [StringEntry(eF, eB)]
900903
901904
902905
903-@Callable(de)
904-func setI (eE,eA) = if ((toString(de.caller) != at(this, aa())))
905- then dm
906- else [IntegerEntry(eE, eA)]
906+@Callable(df)
907+func setI (eF,eB) = if ((toString(df.caller) != au(this, aa())))
908+ then dn
909+ else [IntegerEntry(eF, eB)]
907910
908911
909912
910-@Callable(de)
911-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aB())
913+@Callable(df)
914+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aC())
912915
913916
914917
915-@Callable(de)
916-func getAccBalanceWrapperREADONLY (aW) = $Tuple2(nil, aV(aW))
918+@Callable(df)
919+func getAccBalanceWrapperREADONLY (aX) = $Tuple2(nil, aW(aX))
917920
918921
919922
920-@Callable(de)
921-func calcPricesWrapperREADONLY (bo,bp,bt) = {
922- let eF = bs(bo, bp, bt)
923- $Tuple2(nil, [toString(eF[0]), toString(eF[1]), toString(eF[2])])
923+@Callable(df)
924+func calcPricesWrapperREADONLY (bp,bq,bu) = {
925+ let eG = bt(bp, bq, bu)
926+ $Tuple2(nil, [toString(eG[0]), toString(eG[1]), toString(eG[2])])
924927 }
925928
926929
927930
928-@Callable(de)
929-func fromX18WrapperREADONLY (F,eG) = $Tuple2(nil, E(parseBigIntValue(F), eG))
931+@Callable(df)
932+func fromX18WrapperREADONLY (F,eH) = $Tuple2(nil, E(parseBigIntValue(F), eH))
930933
931934
932935
933-@Callable(de)
936+@Callable(df)
934937 func toX18WrapperREADONLY (C,D) = $Tuple2(nil, toString(B(C, D)))
935938
936939
937940
938-@Callable(de)
939-func calcPriceBigIntWrapperREADONLY (aY,aZ) = $Tuple2(nil, toString(aX(parseBigIntValue(aY), parseBigIntValue(aZ))))
941+@Callable(df)
942+func calcPriceBigIntWrapperREADONLY (aZ,ba) = $Tuple2(nil, toString(aY(parseBigIntValue(aZ), parseBigIntValue(ba))))
940943
941944
942945
943-@Callable(de)
944-func estimatePutOperationWrapperREADONLY (bE,bd,cd,ce,cf,cg,eH,ch,ci) = $Tuple2(nil, cc(bE, bd, cd, ce, cf, cg, eH, ch, ci, false, 0, ""))
946+@Callable(df)
947+func estimatePutOperationWrapperREADONLY (bF,be,ce,cf,cg,ch,eI,ci,cj) = $Tuple2(nil, cd(bF, be, ce, cf, cg, ch, eI, ci, cj, false, 0, ""))
945948
946949
947950
948-@Callable(de)
949-func estimateGetOperationWrapperREADONLY (bE,eI,bG,eH) = {
950- let cw = bD(bE, eI, bG, addressFromStringValue(eH))
951- $Tuple2(nil, $Tuple10(cw._1, cw._2, cw._3, cw._4, cw._5, cw._6, cw._7, toString(cw._8), cw._9, cw._10))
951+@Callable(df)
952+func estimateGetOperationWrapperREADONLY (bF,eJ,bH,eI) = {
953+ let cx = bE(bF, eJ, bH, addressFromStringValue(eI))
954+ $Tuple2(nil, $Tuple10(cx._1, cx._2, cx._3, cx._4, cx._5, cx._6, cx._7, toString(cx._8), cx._9, cx._10))
952955 }
953956
954957
955-@Verifier(eJ)
956-func eK () = {
957- let ar = eJ
958- if ($isInstanceOf(ar, "Order"))
958+@Verifier(eK)
959+func eL () = {
960+ let eM = {
961+ let as = dk()
962+ if ($isInstanceOf(as, "ByteVector"))
963+ then {
964+ let dp = as
965+ dp
966+ }
967+ else if ($isInstanceOf(as, "Unit"))
968+ then eK.senderPublicKey
969+ else throw("Match error")
970+ }
971+ let as = eK
972+ if ($isInstanceOf(as, "Order"))
959973 then {
960- let cR = ar
961- let eL = aA()
962- let an = cQ(cR)
963- let eM = sigVerify(cR.bodyBytes, cR.proofs[0], cR.senderPublicKey)
964- let eN = sigVerify(cR.bodyBytes, cR.proofs[1], eL)
965- if (if (if (an)
966- then eM
974+ let cS = as
975+ let eN = aB()
976+ let eO = cR(cS)
977+ let eP = sigVerify(cS.bodyBytes, cS.proofs[0], cS.senderPublicKey)
978+ let eQ = sigVerify(cS.bodyBytes, cS.proofs[1], eN)
979+ if (if (if (eO)
980+ then eP
967981 else false)
968- then eN
982+ then eQ
969983 else false)
970984 then true
971- else am(an, eM, eN)
985+ else an(eO, eP, eQ)
972986 }
973- else {
974- let eO = {
975- let eP = dj()
976- if ($isInstanceOf(eP, "ByteVector"))
977- then {
978- let do = eP
979- do
980- }
981- else if ($isInstanceOf(eP, "Unit"))
982- then eJ.senderPublicKey
983- else throw("Match error")
987+ else if ($isInstanceOf(as, "SetScriptTransaction"))
988+ then {
989+ let dl = as
990+ let eR = blake2b256(value(dl.script))
991+ let eS = fromBase64String(value(getString(ay, am())))
992+ let eT = scriptHash(this)
993+ if (if ((eS == eR))
994+ then (eT != eR)
995+ else false)
996+ then true
997+ else sigVerify(eK.bodyBytes, eK.proofs[0], eM)
984998 }
985- sigVerify(eJ.bodyBytes, eJ.proofs[0], eO)
986- }
999+ else sigVerify(eK.bodyBytes, eK.proofs[0], eM)
9871000 }
9881001
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 = toBigInt(0)
1111
1212 let e = toBigInt(1)
1313
1414 let f = toBigInt((a - ((a * 1) / a)))
1515
1616 let g = "100"
1717
1818 let h = "1"
1919
2020 let i = "__"
2121
2222 let j = ""
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 1
5151
5252 let y = 7
5353
5454 let z = 10
5555
5656 let A = "%s__delay"
5757
5858 func B (C,D) = fraction(toBigInt(C), c, toBigInt(D))
5959
6060
6161 func E (F,G) = toInt(fraction(F, toBigInt(G), c))
6262
6363
6464 func H (I,J,K) = fraction(I, J, K)
6565
6666
6767 func L (F) = if ((d > F))
6868 then -(F)
6969 else F
7070
7171
7272 func M () = "%s__factoryContract"
7373
7474
7575 func N () = "%s__managerPublicKey"
7676
7777
7878 func O () = "%s__pendingManagerPublicKey"
7979
8080
8181 func P () = "%s%s__price__last"
8282
8383
8484 func Q (R,S) = makeString(["%s%s%d%d__price__history", toString(R), toString(S)], i)
8585
8686
8787 func T (U,V) = ((("%s%s%s__P__" + U) + "__") + V)
8888
8989
9090 func W (U,V) = ((("%s%s%s__G__" + U) + "__") + V)
9191
9292
9393 func X () = "%s__amountAsset"
9494
9595
9696 func Y () = "%s__priceAsset"
9797
9898
9999 func Z () = "%s__amp"
100100
101101
102102 func aa () = "%s__addonAddr"
103103
104104
105105 func ab (ac) = makeString(["%s%s__lastGetOneTknCall", ac], i)
106106
107107
108108 func ad (ac) = makeString(["%s%s__lastPutOneTknCall", ac], i)
109109
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 (F) = {
130- let ar = F
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 (F) = {
133+ let as = F
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, M()))
149+let ay = addressFromStringValue(au(this, M()))
147150
148-let ay = at(this, Z())
151+let az = au(this, Z())
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-func aB () = {
157- let aC = at(this, X())
158- let aD = at(this, Y())
159- let aE = aw(ax, aj(aD))
160- let ah = aw(ax, aj(aC))
161- split(at(ax, ag(toString(ah), toString(aE))), i)
159+func aC () = {
160+ let aD = au(this, X())
161+ let aE = au(this, Y())
162+ let aF = ax(ay, aj(aE))
163+ let ah = ax(ay, aj(aD))
164+ split(au(ay, ag(toString(ah), toString(aF))), i)
162165 }
163166
164167
165-func aF () = split(at(ax, ae()), i)
168+func aG () = split(au(ay, ae()), i)
166169
167170
168-func aG (aH,aI,aJ,aK,aL,aM,aN,aO,aP,aQ) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aH), toString(aI), toString(aJ), toString(aK), toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ)], i)
171+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)], i)
169172
170173
171-func aR (aS,aT,aU,aK,aN,aO) = makeString(["%d%d%d%d%d%d", toString(aS), toString(aT), toString(aU), toString(aK), toString(aN), toString(aO)], i)
174+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)], i)
172175
173176
174-func aV (aW) = if ((aW == "WAVES"))
177+func aW (aX) = if ((aX == "WAVES"))
175178 then wavesBalance(this).available
176- else assetBalance(this, fromBase58String(aW))
179+ else assetBalance(this, fromBase58String(aX))
177180
178181
179-func aX (aY,aZ) = fraction(aY, c, aZ)
182+func aY (aZ,ba) = fraction(aZ, c, ba)
180183
181184
182-func ba (bb,bc,bd) = {
183- let be = fraction((bb - bc), b, bc)
184- let bf = ((bd - L(be)) > d)
185- if (!(bf))
186- then throw(("Big slpg: " + toString(be)))
187- else $Tuple2(bf, min([bb, bc]))
185+func bb (bc,bd,be) = {
186+ let bf = fraction((bc - bd), b, bd)
187+ let bg = ((be - L(bf)) > d)
188+ if (!(bg))
189+ then throw(("Big slpg: " + toString(bf)))
190+ else $Tuple2(bg, min([bc, bd]))
188191 }
189192
190193
191-func bg (bh,bi,bj) = {
192- let be = fraction(bi, b, bh)
193- let bk = (bj > be)
194- if (if (bk)
194+func bh (bi,bj,bk) = {
195+ let bf = fraction(bj, b, bi)
196+ let bl = (bk > bf)
197+ if (if (bl)
195198 then true
196- else (bi > bh))
197- then throw(((((((toString(bi) + " ") + toString(bh)) + " ") + toString(be)) + " ") + toString(bj)))
198- else bk
199+ else (bj > bi))
200+ then throw(((((((toString(bj) + " ") + toString(bi)) + " ") + toString(bf)) + " ") + toString(bk)))
201+ else bl
199202 }
200203
201204
202-func bl (bm,bn,bo,bp) = {
203- let bq = B(bo, bm)
205+func bm (bn,bo,bp,bq) = {
204206 let br = B(bp, bn)
205- aX(br, bq)
207+ let bs = B(bq, bo)
208+ aY(bs, br)
206209 }
207210
208211
209-func bs (bo,bp,bt) = {
210- let bu = aB()
211- let bv = parseIntValue(bu[t])
212- let bw = parseIntValue(bu[u])
213- let bx = bl(bv, bw, bo, bp)
214- let aZ = B(bo, bv)
215- let aY = B(bp, bw)
216- let by = B(bt, a)
217- let bz = aX(aZ, by)
218- let bA = aX(aY, by)
219-[bx, bz, bA]
212+func bt (bp,bq,bu) = {
213+ let bv = aC()
214+ let bw = parseIntValue(bv[t])
215+ let bx = parseIntValue(bv[u])
216+ let by = bm(bw, bx, bp, bq)
217+ let ba = B(bp, bw)
218+ let aZ = B(bq, bx)
219+ let bz = B(bu, a)
220+ let bA = aY(ba, bz)
221+ let bB = aY(aZ, bz)
222+[by, bA, bB]
220223 }
221224
222225
223-func bB (bo,bp,bt) = {
224- let bC = bs(bo, bp, bt)
225-[E(bC[0], a), E(bC[1], a), E(bC[2], a)]
226+func bC (bp,bq,bu) = {
227+ let bD = bt(bp, bq, bu)
228+[E(bD[0], a), E(bD[1], a), E(bD[2], a)]
226229 }
227230
228231
229-func bD (bE,bF,bG,bH) = {
230- let bu = aB()
231- let bI = bu[q]
232- let bJ = bu[r]
233- let bK = bu[s]
234- let bL = parseIntValue(bu[t])
235- let bM = parseIntValue(bu[u])
236- let bN = bu[p]
237- let bO = valueOrErrorMessage(assetInfo(fromBase58String(bI)), "Wrong LP id").quantity
238- if ((bI != bF))
232+func bE (bF,bG,bH,bI) = {
233+ let bv = aC()
234+ let bJ = bv[q]
235+ let bK = bv[r]
236+ let bL = bv[s]
237+ let bM = parseIntValue(bv[t])
238+ let bN = parseIntValue(bv[u])
239+ let bO = bv[p]
240+ let bP = valueOrErrorMessage(assetInfo(fromBase58String(bJ)), "Wrong LP id").quantity
241+ if ((bJ != bG))
239242 then throw("Wrong pmt asset")
240243 else {
241- let bP = aV(bJ)
242- let bQ = B(bP, bL)
243- let bR = aV(bK)
244- let bS = B(bR, bM)
245- let bT = aX(bS, bQ)
246- let bU = E(bT, a)
247- let bV = B(bG, a)
248- let bW = B(bO, a)
249- let bX = fraction(bQ, bV, bW)
250- let bY = fraction(bS, bV, bW)
251- let bZ = E(bX, bL)
244+ let bQ = aW(bK)
245+ let bR = B(bQ, bM)
246+ let bS = aW(bL)
247+ let bT = B(bS, bN)
248+ let bU = aY(bT, bR)
249+ let bV = E(bU, a)
250+ let bW = B(bH, a)
251+ let bX = B(bP, a)
252+ let bY = fraction(bR, bW, bX)
253+ let bZ = fraction(bT, bW, bX)
252254 let ca = E(bY, bM)
253- let cb = if ((bE == ""))
255+ let cb = E(bZ, bN)
256+ let cc = if ((bF == ""))
254257 then nil
255- else [ScriptTransfer(bH, bZ, if ((bJ == "WAVES"))
258+ else [ScriptTransfer(bI, ca, if ((bK == "WAVES"))
256259 then unit
257- else fromBase58String(bJ)), ScriptTransfer(bH, ca, if ((bK == "WAVES"))
260+ else fromBase58String(bK)), ScriptTransfer(bI, cb, if ((bL == "WAVES"))
258261 then unit
259- else fromBase58String(bK)), StringEntry(W(toString(bH), bE), aR(bZ, ca, bG, bU, height, lastBlock.timestamp)), IntegerEntry(P(), bU), IntegerEntry(Q(height, lastBlock.timestamp), bU)]
260- $Tuple10(bZ, ca, bJ, bK, bP, bR, bO, bT, bN, cb)
262+ else fromBase58String(bL)), StringEntry(W(toString(bI), bF), aS(ca, cb, bH, bV, height, lastBlock.timestamp)), IntegerEntry(P(), bV), IntegerEntry(Q(height, lastBlock.timestamp), bV)]
263+ $Tuple10(ca, cb, bK, bL, bQ, bS, bP, bU, bO, cc)
261264 }
262265 }
263266
264267
265-func cc (bE,bd,cd,ce,cf,cg,bH,ch,ci,cj,ck,cl) = {
266- let bu = aB()
267- let bI = fromBase58String(bu[q])
268- let cm = bu[r]
269- let cn = bu[s]
270- let co = bu[v]
271- let cp = bu[w]
272- let cq = parseIntValue(bu[t])
273- let cr = parseIntValue(bu[u])
274- let bN = bu[p]
275- let cs = valueOrErrorMessage(assetInfo(bI), "Wr lp as").quantity
276- let bP = if (ch)
277- then aV(cm)
278- else if (if (cj)
279- then (cl == cm)
268+func cd (bF,be,ce,cf,cg,ch,bI,ci,cj,ck,cl,cm) = {
269+ let bv = aC()
270+ let bJ = fromBase58String(bv[q])
271+ let cn = bv[r]
272+ let co = bv[s]
273+ let cp = bv[v]
274+ let cq = bv[w]
275+ let cr = parseIntValue(bv[t])
276+ let cs = parseIntValue(bv[u])
277+ let bO = bv[p]
278+ let ct = valueOrErrorMessage(assetInfo(bJ), "Wr lp as").quantity
279+ let bQ = if (ci)
280+ then aW(cn)
281+ else if (if (ck)
282+ then (cm == cn)
280283 else false)
281- then (aV(cm) - ck)
282- else if (cj)
283- then aV(cm)
284- else (aV(cm) - cd)
285- let bR = if (ch)
286- then aV(cn)
287- else if (if (cj)
288- then (cl == cn)
284+ then (aW(cn) - cl)
285+ else if (ck)
286+ then aW(cn)
287+ else (aW(cn) - ce)
288+ let bS = if (ci)
289+ then aW(co)
290+ else if (if (ck)
291+ then (cm == co)
289292 else false)
290- then (aV(cn) - ck)
291- else if (cj)
292- then aV(cn)
293- else (aV(cn) - cf)
294- let ct = B(cd, cq)
295- let cu = B(cf, cr)
296- let cv = aX(cu, ct)
297- let bQ = B(bP, cq)
298- let bS = B(bR, cr)
299- let cw = if ((cs == 0))
293+ then (aW(co) - cl)
294+ else if (ck)
295+ then aW(co)
296+ else (aW(co) - cg)
297+ let cu = B(ce, cr)
298+ let cv = B(cg, cs)
299+ let cw = aY(cv, cu)
300+ let bR = B(bQ, cr)
301+ let bT = B(bS, cs)
302+ let cx = if ((ct == 0))
300303 then {
301- let bT = d
302- let cx = d
303- let by = pow((ct * cu), 0, toBigInt(5), 1, 0, DOWN)
304- $Tuple5(E(by, a), E(ct, cq), E(cu, cr), aX((bS + cu), (bQ + ct)), cx)
304+ let bU = d
305+ let cy = d
306+ let bz = pow((cu * cv), 0, toBigInt(5), 1, 0, DOWN)
307+ $Tuple5(E(bz, a), E(cu, cr), E(cv, cs), aY((bT + cv), (bR + cu)), cy)
305308 }
306309 else {
307- let bT = aX(bS, bQ)
308- let cy = fraction(L((bT - cv)), c, bT)
309- let cx = B(bd, a)
310- if (if ((bT != d))
311- then (cy > cx)
310+ let bU = aY(bT, bR)
311+ let cz = fraction(L((bU - cw)), c, bU)
312+ let cy = B(be, a)
313+ if (if ((bU != d))
314+ then (cz > cy)
312315 else false)
313- then throw(((("Price slippage " + toString(cy)) + " > ") + toString(cx)))
316+ then throw(((("Price slippage " + toString(cz)) + " > ") + toString(cy)))
314317 else {
315- let cz = B(cs, a)
316- let cA = fraction(ct, bT, c)
317- let cB = fraction(cu, c, bT)
318- let cC = if ((cA > cu))
319- then $Tuple2(cB, cu)
320- else $Tuple2(ct, cA)
321- let cD = cC._1
322- let cE = cC._2
323- let by = fraction(cz, cE, bS)
324- $Tuple5(E(by, a), E(cD, cq), E(cE, cr), bT, cx)
318+ let cA = B(ct, a)
319+ let cB = fraction(cu, bU, c)
320+ let cC = fraction(cv, c, bU)
321+ let cD = if ((cB > cv))
322+ then $Tuple2(cC, cv)
323+ else $Tuple2(cu, cB)
324+ let cE = cD._1
325+ let cF = cD._2
326+ let bz = fraction(cA, cF, bT)
327+ $Tuple5(E(bz, a), E(cE, cr), E(cF, cs), bU, cy)
325328 }
326329 }
327- let cF = cw._1
328- let cG = cw._2
329- let cH = cw._3
330- let bU = E(cw._4, a)
331- let cI = E(cw._5, a)
332- if ((0 >= cF))
330+ let cG = cx._1
331+ let cH = cx._2
332+ let cI = cx._3
333+ let bV = E(cx._4, a)
334+ let cJ = E(cx._5, a)
335+ if ((0 >= cG))
333336 then throw("LP <= 0")
334337 else {
335- let cJ = if (!(ci))
338+ let cK = if (!(cj))
336339 then 0
337- else cF
338- let cK = (cd - cG)
339- let cL = (cf - cH)
340- let cM = if (if (cj)
341- then (cl == cm)
340+ else cG
341+ let cL = (ce - cH)
342+ let cM = (cg - cI)
343+ let cN = if (if (ck)
344+ then (cm == cn)
342345 else false)
343- then $Tuple2(ck, 0)
344- else if (if (cj)
345- then (cl == cn)
346+ then $Tuple2(cl, 0)
347+ else if (if (ck)
348+ then (cm == co)
346349 else false)
347- then $Tuple2(0, ck)
348- else $Tuple2(cG, cH)
349- let cN = cM._1
350- let cO = cM._2
351- let cP = [IntegerEntry(P(), bU), IntegerEntry(Q(height, lastBlock.timestamp), bU), StringEntry(T(bH, bE), aG(cN, cO, cJ, bU, bd, cI, height, lastBlock.timestamp, cK, cL))]
352- $Tuple13(cF, cJ, bU, bP, bR, cs, bI, bN, cP, cK, cL, ce, cg)
350+ then $Tuple2(0, cl)
351+ else $Tuple2(cH, cI)
352+ let cO = cN._1
353+ let cP = cN._2
354+ let cQ = [IntegerEntry(P(), bV), IntegerEntry(Q(height, lastBlock.timestamp), bV), StringEntry(T(bI, bF), aH(cO, cP, cK, bV, be, cJ, height, lastBlock.timestamp, cL, cM))]
355+ $Tuple13(cG, cK, bV, bQ, bS, ct, bJ, bO, cQ, cL, cM, cf, ch)
353356 }
354357 }
355358
356359
357-func cQ (cR) = {
358- let bu = aB()
359- let cS = bu[r]
360- let cT = bu[s]
361- let bN = parseIntValue(bu[p])
362- let bv = parseIntValue(bu[t])
363- let bw = parseIntValue(bu[u])
364- let cU = aV(cS)
365- let cV = aV(cT)
366- let bT = if ((cR.orderType == Buy))
367- then bl(bv, bw, (cU + cR.amount), cV)
368- else bl(bv, bw, (cU - cR.amount), cV)
369- let bU = E(bT, a)
370- if (if (if (az())
360+func cR (cS) = {
361+ let bv = aC()
362+ let cT = bv[r]
363+ let cU = bv[s]
364+ let bO = parseIntValue(bv[p])
365+ let bw = parseIntValue(bv[t])
366+ let bx = parseIntValue(bv[u])
367+ let cV = aW(cT)
368+ let cW = aW(cU)
369+ let bU = if ((cS.orderType == Buy))
370+ then bm(bw, bx, (cV + cS.amount), cW)
371+ else bm(bw, bx, (cV - cS.amount), cW)
372+ let bV = E(bU, a)
373+ if (if (if (aA())
371374 then true
372- else (bN == m))
375+ else (bO == m))
373376 then true
374- else (bN == n))
377+ else (bO == n))
375378 then throw("Admin blocked")
376379 else {
377- let cW = cR.assetPair.amountAsset
378- let cX = if ((cW == unit))
380+ let cX = cS.assetPair.amountAsset
381+ let cY = if ((cX == unit))
379382 then "WAVES"
380- else toBase58String(value(cW))
381- let cY = cR.assetPair.priceAsset
382- let cZ = if ((cY == unit))
383+ else toBase58String(value(cX))
384+ let cZ = cS.assetPair.priceAsset
385+ let da = if ((cZ == unit))
383386 then "WAVES"
384- else toBase58String(value(cY))
385- if (if ((cX != cS))
387+ else toBase58String(value(cZ))
388+ if (if ((cY != cT))
386389 then true
387- else (cZ != cT))
390+ else (da != cU))
388391 then throw("Wr assets")
389392 else {
390- let da = cR.price
391- let cr = fraction(a, bw, bv)
392- let db = H(da, a, cr)
393- let dc = if ((cR.orderType == Buy))
394- then (bU >= db)
395- else (db >= bU)
393+ let db = cS.price
394+ let cs = fraction(a, bx, bw)
395+ let dc = H(db, a, cs)
396+ let dd = if ((cS.orderType == Buy))
397+ then (bV >= dc)
398+ else (dc >= bV)
396399 true
397400 }
398401 }
399402 }
400403
401404
402-func dd (de) = if ((size(de.payments) != 1))
405+func de (df) = if ((size(df.payments) != 1))
403406 then throw("1 pmnt exp")
404407 else {
405- let df = value(de.payments[0])
406- let bF = value(df.assetId)
407- let ck = df.amount
408- let cw = bD(toBase58String(de.transactionId), toBase58String(bF), ck, de.caller)
409- let bZ = cw._1
410- let ca = cw._2
411- let bN = parseIntValue(cw._9)
412- let cb = cw._10
413- if (if (az())
408+ let dg = value(df.payments[0])
409+ let bG = value(dg.assetId)
410+ let cl = dg.amount
411+ let cx = bE(toBase58String(df.transactionId), toBase58String(bG), cl, df.caller)
412+ let ca = cx._1
413+ let cb = cx._2
414+ let bO = parseIntValue(cx._9)
415+ let cc = cx._10
416+ if (if (aA())
414417 then true
415- else (bN == n))
416- then throw(("Admin blocked: " + toString(bN)))
417- else $Tuple5(bZ, ca, ck, bF, cb)
418+ else (bO == n))
419+ then throw(("Admin blocked: " + toString(bO)))
420+ else $Tuple5(ca, cb, cl, bG, cc)
418421 }
419422
420423
421-func dg (ac,V,dh,di,bd,ci,cj,ck,cl) = {
422- let cw = cc(V, bd, value(dh).amount, value(dh).assetId, value(di).amount, value(di).assetId, ac, false, ci, cj, ck, cl)
423- let bN = parseIntValue(cw._8)
424- if (if (if (az())
424+func dh (ac,V,di,dj,be,cj,ck,cl,cm) = {
425+ let cx = cd(V, be, value(di).amount, value(di).assetId, value(dj).amount, value(dj).assetId, ac, false, cj, ck, cl, cm)
426+ let bO = parseIntValue(cx._8)
427+ if (if (if (aA())
425428 then true
426- else (bN == l))
429+ else (bO == l))
427430 then true
428- else (bN == n))
429- then throw(("Blocked:" + toString(bN)))
430- else cw
431+ else (bO == n))
432+ then throw(("Blocked:" + toString(bO)))
433+ else cx
431434 }
432435
433436
434-func dj () = {
435- let ar = getString(N())
436- if ($isInstanceOf(ar, "String"))
437+func dk () = {
438+ let as = getString(N())
439+ if ($isInstanceOf(as, "String"))
437440 then {
438- let dk = ar
439- fromBase58String(dk)
441+ let dl = as
442+ fromBase58String(dl)
440443 }
441- else if ($isInstanceOf(ar, "Unit"))
444+ else if ($isInstanceOf(as, "Unit"))
442445 then unit
443446 else throw("Match error")
444447 }
445448
446449
447-func dl () = {
448- let ar = getString(O())
449- if ($isInstanceOf(ar, "String"))
450+func dm () = {
451+ let as = getString(O())
452+ if ($isInstanceOf(as, "String"))
450453 then {
451- let dk = ar
452- fromBase58String(dk)
454+ let dl = as
455+ fromBase58String(dl)
453456 }
454- else if ($isInstanceOf(ar, "Unit"))
457+ else if ($isInstanceOf(as, "Unit"))
455458 then unit
456459 else throw("Match error")
457460 }
458461
459462
460-let dm = throw("Permission denied")
463+let dn = throw("Permission denied")
461464
462-func dn (de) = {
463- let ar = dj()
464- if ($isInstanceOf(ar, "ByteVector"))
465+func do (df) = {
466+ let as = dk()
467+ if ($isInstanceOf(as, "ByteVector"))
465468 then {
466- let do = ar
467- if ((de.callerPublicKey == do))
469+ let dp = as
470+ if ((df.callerPublicKey == dp))
468471 then true
469- else dm
472+ else dn
470473 }
471- else if ($isInstanceOf(ar, "Unit"))
472- then if ((de.caller == this))
474+ else if ($isInstanceOf(as, "Unit"))
475+ then if ((df.caller == this))
473476 then true
474- else dm
477+ else dn
475478 else throw("Match error")
476479 }
477480
478481
479-@Callable(de)
482+@Callable(df)
480483 func constructor (M) = {
481- let dp = dn(de)
482- if ((dp == dp))
484+ let dq = do(df)
485+ if ((dq == dq))
483486 then [StringEntry(M(), M)]
484487 else throw("Strict value is not equal to itself.")
485488 }
486489
487490
488491
489-@Callable(de)
490-func setManager (dq) = {
491- let dp = dn(de)
492- if ((dp == dp))
492+@Callable(df)
493+func setManager (dr) = {
494+ let dq = do(df)
495+ if ((dq == dq))
493496 then {
494- let dr = fromBase58String(dq)
495- if ((dr == dr))
496- then [StringEntry(O(), dq)]
497+ let ds = fromBase58String(dr)
498+ if ((ds == ds))
499+ then [StringEntry(O(), dr)]
497500 else throw("Strict value is not equal to itself.")
498501 }
499502 else throw("Strict value is not equal to itself.")
500503 }
501504
502505
503506
504-@Callable(de)
507+@Callable(df)
505508 func confirmManager () = {
506- let bC = dl()
507- let ds = if (isDefined(bC))
509+ let bD = dm()
510+ let dt = if (isDefined(bD))
508511 then true
509512 else throw("No pending manager")
510- if ((ds == ds))
513+ if ((dt == dt))
511514 then {
512- let dt = if ((de.callerPublicKey == value(bC)))
515+ let du = if ((df.callerPublicKey == value(bD)))
513516 then true
514517 else throw("You are not pending manager")
515- if ((dt == dt))
516- then [StringEntry(N(), toBase58String(value(bC))), DeleteEntry(O())]
518+ if ((du == du))
519+ then [StringEntry(N(), toBase58String(value(bD))), DeleteEntry(O())]
517520 else throw("Strict value is not equal to itself.")
518521 }
519522 else throw("Strict value is not equal to itself.")
520523 }
521524
522525
523526
524-@Callable(de)
525-func put (du,dv) = {
526- let dw = aF()
527- let dx = valueOrErrorMessage(addressFromString(dw[x]), "Wr st addr")
528- let dy = valueOrErrorMessage(addressFromString(dw[y]), "Wr sl addr")
529- if ((0 > du))
527+@Callable(df)
528+func put (dv,dw) = {
529+ let dx = aG()
530+ let dy = valueOrErrorMessage(addressFromString(dx[x]), "Wr st addr")
531+ let dz = valueOrErrorMessage(addressFromString(dx[y]), "Wr sl addr")
532+ if ((0 > dv))
530533 then throw("Wrong slippage")
531- else if ((size(de.payments) != 2))
534+ else if ((size(df.payments) != 2))
532535 then throw("2 pmnts expd")
533536 else {
534- let dz = dg(toString(de.caller), toBase58String(de.transactionId), AttachedPayment(value(de.payments[0]).assetId, value(de.payments[0]).amount), de.payments[1], du, true, false, 0, "")
535- let cJ = dz._2
536- let dA = dz._7
537- let cb = dz._9
538- let cK = dz._10
539- let cL = dz._11
540- let bJ = dz._12
541- let bK = dz._13
542- let cw = invoke(ax, "emit", [cJ], nil)
543- if ((cw == cw))
537+ let dA = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(value(df.payments[0]).assetId, value(df.payments[0]).amount), df.payments[1], dv, true, false, 0, "")
538+ let cK = dA._2
539+ let dB = dA._7
540+ let cc = dA._9
541+ let cL = dA._10
542+ let cM = dA._11
543+ let bK = dA._12
544+ let bL = dA._13
545+ let cx = invoke(ay, "emit", [cK], nil)
546+ if ((cx == cx))
544547 then {
545- let dB = {
546- let ar = cw
547- if ($isInstanceOf(ar, "Address"))
548+ let dC = {
549+ let as = cx
550+ if ($isInstanceOf(as, "Address"))
548551 then {
549- let dC = ar
550- invoke(dC, "emit", [cJ], nil)
552+ let dD = as
553+ invoke(dD, "emit", [cK], nil)
551554 }
552555 else unit
553556 }
554- if ((dB == dB))
557+ if ((dC == dC))
555558 then {
556- let dD = if ((cK > 0))
557- then invoke(dy, "put", nil, [AttachedPayment(bJ, cK)])
559+ let dE = if ((cL > 0))
560+ then invoke(dz, "put", nil, [AttachedPayment(bK, cL)])
558561 else nil
559- if ((dD == dD))
562+ if ((dE == dE))
560563 then {
561- let dE = if ((cL > 0))
562- then invoke(dy, "put", nil, [AttachedPayment(bK, cL)])
564+ let dF = if ((cM > 0))
565+ then invoke(dz, "put", nil, [AttachedPayment(bL, cM)])
563566 else nil
564- if ((dE == dE))
567+ if ((dF == dF))
565568 then {
566- let dF = if (dv)
569+ let dG = if (dw)
567570 then {
568- let dG = invoke(dx, "stake", nil, [AttachedPayment(dA, cJ)])
569- if ((dG == dG))
571+ let dH = invoke(dy, "stake", nil, [AttachedPayment(dB, cK)])
572+ if ((dH == dH))
570573 then nil
571574 else throw("Strict value is not equal to itself.")
572575 }
573- else [ScriptTransfer(de.caller, cJ, dA)]
574- (cb ++ dF)
576+ else [ScriptTransfer(df.caller, cK, dB)]
577+ (cc ++ dG)
575578 }
576579 else throw("Strict value is not equal to itself.")
577580 }
578581 else throw("Strict value is not equal to itself.")
579582 }
580583 else throw("Strict value is not equal to itself.")
581584 }
582585 else throw("Strict value is not equal to itself.")
583586 }
584587 }
585588
586589
587590
588-@Callable(de)
589-func putOneTkn (dH,dI,dJ,bd,dv) = {
590- let bu = aF()
591- let dx = valueOrErrorMessage(addressFromString(bu[x]), "Wr st addr")
592- let dy = valueOrErrorMessage(addressFromString(bu[y]), "Wr sl addr")
593- let dK = valueOrErrorMessage(addressFromString(bu[z]), "Wr gwx addr")
594- let dL = aB()
595- let bJ = dL[r]
596- let bK = dL[s]
597- let bL = parseIntValue(dL[t])
598- let bM = parseIntValue(dL[u])
599- let dM = valueOrElse(getString(this, aa()), "")
600- let bH = if ((dM == toString(de.caller)))
601- then de.originCaller
602- else de.caller
603- let dN = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
604- let dO = reentrantInvoke(dN, "ensureCanPutOneTkn", [toString(bH)], nil)
605- if ((dO == dO))
606- then if (if (if (if ((0 >= bd))
607- then true
608- else (0 >= dH))
591+@Callable(df)
592+func putOneTkn (dI,dJ,dK,be,dw) = {
593+ let bv = aG()
594+ let dy = valueOrErrorMessage(addressFromString(bv[x]), "Wr st addr")
595+ let dz = valueOrErrorMessage(addressFromString(bv[y]), "Wr sl addr")
596+ let dL = valueOrErrorMessage(addressFromString(bv[z]), "Wr gwx addr")
597+ let dM = aC()
598+ let bK = dM[r]
599+ let bL = dM[s]
600+ let bM = parseIntValue(dM[t])
601+ let bN = parseIntValue(dM[u])
602+ let dN = valueOrElse(getString(this, aa()), "")
603+ let bI = if ((dN == toString(df.caller)))
604+ then df.originCaller
605+ else df.caller
606+ let dO = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
607+ let dP = reentrantInvoke(dO, "ensureCanPutOneTkn", [toString(bI)], nil)
608+ if ((dP == dP))
609+ then if (if (if (if ((0 >= be))
609610 then true
610611 else (0 >= dI))
611612 then true
612613 else (0 >= dJ))
614+ then true
615+ else (0 >= dK))
613616 then throw("Wrong params")
614- else if ((size(de.payments) != 1))
617+ else if ((size(df.payments) != 1))
615618 then throw("1 pmnt expd")
616619 else {
617- let df = value(de.payments[0])
618- let bF = toBase58String(value(df.assetId))
619- let ck = df.amount
620- if ((10000000 > ck))
620+ let dg = value(df.payments[0])
621+ let bG = toBase58String(value(dg.assetId))
622+ let cl = dg.amount
623+ if ((10000000 > cl))
621624 then throw("Wrong pmt amt")
622625 else {
623- let bP = aV(bJ)
624- let bR = aV(bK)
625- let dP = if ((bF == bJ))
626- then if (if ((ck > bP))
626+ let bQ = aW(bK)
627+ let bS = aW(bL)
628+ let dQ = if ((bG == bK))
629+ then if (if ((cl > bQ))
627630 then true
628- else (dH > ck))
631+ else (dI > cl))
629632 then throw("invalid payment amount")
630- else $Tuple6((bP - ck), bR, (ck - dH), dI, 0, 0)
631- else if ((bF == bK))
632- then if (if ((ck > bR))
633+ else $Tuple6((bQ - cl), bS, (cl - dI), dJ, 0, 0)
634+ else if ((bG == bL))
635+ then if (if ((cl > bS))
633636 then true
634- else (dI > ck))
637+ else (dJ > cl))
635638 then throw("invalid payment amount")
636- else $Tuple6(bP, (bR - ck), 0, 0, (ck - dI), dH)
639+ else $Tuple6(bQ, (bS - cl), 0, 0, (cl - dJ), dI)
637640 else throw("wrong pmtAssetId")
638- let dQ = dP._1
639- let dR = dP._2
640- let dS = dP._3
641- let dT = dP._4
642- let dU = dP._5
643- let dV = dP._6
644- let bi = invoke(dK, "calcD", [toString(dQ), toString(dR), ay, g, h], nil)
645- let bh = invoke(dK, "calcD", [toString(toBigInt(((dQ + dS) - dV))), toString(toBigInt(((dR + dU) - dT))), ay, g, h], nil)
646- let dW = bg(parseBigIntValue(aq(bh)), parseBigIntValue(aq(bi)), f)
647- if ((dW == dW))
641+ let dR = dQ._1
642+ let dS = dQ._2
643+ let dT = dQ._3
644+ let dU = dQ._4
645+ let dV = dQ._5
646+ let dW = dQ._6
647+ let bj = invoke(dL, "calcD", [toString(dR), toString(dS), az, g, h], nil)
648+ let bi = invoke(dL, "calcD", [toString(toBigInt(((dR + dT) - dW))), toString(toBigInt(((dS + dV) - dU))), az, g, h], nil)
649+ let dX = bh(parseBigIntValue(ar(bi)), parseBigIntValue(ar(bj)), f)
650+ if ((dX == dX))
648651 then {
649- let dX = dg(toString(de.caller), toBase58String(de.transactionId), AttachedPayment(fromBase58String(bJ), dH), AttachedPayment(fromBase58String(bK), dI), bd, true, true, ck, bF)
650- let dY = dX._2
651- let dA = dX._7
652- let cb = dX._9
653- let cK = dX._10
654- let cL = dX._11
655- let dZ = ba(toBigInt(dY), toBigInt(dJ), toBigInt(bd))
656- let cJ = toInt(dZ._2)
657- let dz = invoke(ax, "emit", [cJ], nil)
658- if ((dz == dz))
652+ let dY = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(fromBase58String(bK), dI), AttachedPayment(fromBase58String(bL), dJ), be, true, true, cl, bG)
653+ let dZ = dY._2
654+ let dB = dY._7
655+ let cc = dY._9
656+ let cL = dY._10
657+ let cM = dY._11
658+ let ea = bb(toBigInt(dZ), toBigInt(dK), toBigInt(be))
659+ let cK = toInt(ea._2)
660+ let dA = invoke(ay, "emit", [cK], nil)
661+ if ((dA == dA))
659662 then {
660- let dB = {
661- let ar = dz
662- if ($isInstanceOf(ar, "Address"))
663+ let dC = {
664+ let as = dA
665+ if ($isInstanceOf(as, "Address"))
663666 then {
664- let dC = ar
665- invoke(dC, "emit", [cJ], nil)
667+ let dD = as
668+ invoke(dD, "emit", [cK], nil)
666669 }
667670 else unit
668671 }
669- if ((dB == dB))
672+ if ((dC == dC))
670673 then {
671- let dD = if ((cK > 0))
672- then invoke(dy, "put", nil, [AttachedPayment(fromBase58String(bJ), cK)])
674+ let dE = if ((cL > 0))
675+ then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bK), cL)])
673676 else nil
674- if ((dD == dD))
677+ if ((dE == dE))
675678 then {
676- let dE = if ((cL > 0))
677- then invoke(dy, "put", nil, [AttachedPayment(fromBase58String(bK), cL)])
679+ let dF = if ((cM > 0))
680+ then invoke(dz, "put", nil, [AttachedPayment(fromBase58String(bL), cM)])
678681 else nil
679- if ((dE == dE))
682+ if ((dF == dF))
680683 then {
681- let dF = if (dv)
684+ let dG = if (dw)
682685 then {
683- let dG = invoke(dx, "stake", nil, [AttachedPayment(dA, cJ)])
684- if ((dG == dG))
686+ let dH = invoke(dy, "stake", nil, [AttachedPayment(dB, cK)])
687+ if ((dH == dH))
685688 then nil
686689 else throw("Strict value is not equal to itself.")
687690 }
688- else [ScriptTransfer(de.caller, cJ, dA)]
689- (cb ++ dF)
691+ else [ScriptTransfer(df.caller, cK, dB)]
692+ (cc ++ dG)
690693 }
691694 else throw("Strict value is not equal to itself.")
692695 }
693696 else throw("Strict value is not equal to itself.")
694697 }
695698 else throw("Strict value is not equal to itself.")
696699 }
697700 else throw("Strict value is not equal to itself.")
698701 }
699702 else throw("Strict value is not equal to itself.")
700703 }
701704 }
702705 else throw("Strict value is not equal to itself.")
703706 }
704707
705708
706709
707-@Callable(de)
708-func putForFree (ea) = if ((0 > ea))
710+@Callable(df)
711+func putForFree (eb) = if ((0 > eb))
709712 then throw("Wrong slpg")
710- else if ((size(de.payments) != 2))
713+ else if ((size(df.payments) != 2))
711714 then throw("2 pmnts expd")
712715 else {
713- let dX = dg(toString(de.caller), toBase58String(de.transactionId), AttachedPayment(value(de.payments[0]).assetId, value(de.payments[0]).amount), de.payments[1], ea, false, false, 0, "")
714- dX._9
716+ let dY = dh(toString(df.caller), toBase58String(df.transactionId), AttachedPayment(value(df.payments[0]).assetId, value(df.payments[0]).amount), df.payments[1], eb, false, false, 0, "")
717+ dY._9
715718 }
716719
717720
718721
719-@Callable(de)
722+@Callable(df)
720723 func get () = {
721- let cw = dd(de)
722- let eb = cw._1
723- let ca = cw._2
724- let ck = cw._3
725- let bF = cw._4
726- let cb = cw._5
727- let ec = invoke(ax, "burn", [ck], [AttachedPayment(bF, ck)])
728- if ((ec == ec))
729- then cb
724+ let cx = de(df)
725+ let ec = cx._1
726+ let cb = cx._2
727+ let cl = cx._3
728+ let bG = cx._4
729+ let cc = cx._5
730+ let ed = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
731+ if ((ed == ed))
732+ then cc
730733 else throw("Strict value is not equal to itself.")
731734 }
732735
733736
734737
735-@Callable(de)
736-func getOneTkn (ed,ee,ef,eg,bd) = if ((size(de.payments) != 1))
738+@Callable(df)
739+func getOneTkn (ee,ef,eg,eh,be) = if ((size(df.payments) != 1))
737740 then throw("1 pmnt expd")
738741 else {
739- let bu = aB()
740- let bI = bu[q]
741- let bJ = bu[r]
742- let bK = bu[s]
743- let bL = parseIntValue(bu[t])
744- let bM = parseIntValue(bu[u])
745- let bN = bu[p]
746- let dw = aF()
747- let dK = valueOrErrorMessage(addressFromString(dw[z]), "Wr sl addr")
748- let df = value(de.payments[0])
749- let dM = valueOrElse(getString(this, aa()), "")
750- let bH = if ((dM == toString(de.caller)))
751- then de.originCaller
752- else de.caller
753- let bE = toBase58String(de.transactionId)
754- let bF = value(df.assetId)
755- let ck = df.amount
756- let dN = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
757- let dO = reentrantInvoke(dN, "ensureCanGetOneTkn", [toString(bH)], nil)
758- if ((dO == dO))
759- then if ((1000000000 > ck))
742+ let bv = aC()
743+ let bJ = bv[q]
744+ let bK = bv[r]
745+ let bL = bv[s]
746+ let bM = parseIntValue(bv[t])
747+ let bN = parseIntValue(bv[u])
748+ let bO = bv[p]
749+ let dx = aG()
750+ let dL = valueOrErrorMessage(addressFromString(dx[z]), "Wr sl addr")
751+ let dg = value(df.payments[0])
752+ let dN = valueOrElse(getString(this, aa()), "")
753+ let bI = if ((dN == toString(df.caller)))
754+ then df.originCaller
755+ else df.caller
756+ let bF = toBase58String(df.transactionId)
757+ let bG = value(dg.assetId)
758+ let cl = dg.amount
759+ let dO = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
760+ let dP = reentrantInvoke(dO, "ensureCanGetOneTkn", [toString(bI)], nil)
761+ if ((dP == dP))
762+ then if ((1000000000 > cl))
760763 then throw("Min pmt 10 LP")
761- else if (if (if ((0 > bd))
764+ else if (if (if ((0 > be))
762765 then true
763- else (0 > ed))
766+ else (0 > ee))
764767 then true
765- else (0 > ef))
768+ else (0 > eg))
766769 then throw("Wrong params")
767- else if ((bI != toBase58String(bF)))
770+ else if ((bJ != toBase58String(bG)))
768771 then throw("Wrong LP")
769772 else {
770- let cw = bD(toBase58String(de.transactionId), toBase58String(bF), ck, de.caller)
771- let eh = cw._1
772- let ei = cw._2
773- let bP = aV(bJ)
774- let bR = aV(bK)
775- let ej = if ((eg == bJ))
776- then $Tuple7((bP - eh), (bR - ei), ed, ei, 0, 0, (eh + ed))
777- else if ((eg == bK))
778- then $Tuple7((bP - eh), (bR - ei), 0, 0, ed, eh, (ei + ed))
773+ let cx = bE(toBase58String(df.transactionId), toBase58String(bG), cl, df.caller)
774+ let ei = cx._1
775+ let ej = cx._2
776+ let bQ = aW(bK)
777+ let bS = aW(bL)
778+ let ek = if ((eh == bK))
779+ then $Tuple7((bQ - ei), (bS - ej), ee, ej, 0, 0, (ei + ee))
780+ else if ((eh == bL))
781+ then $Tuple7((bQ - ei), (bS - ej), 0, 0, ee, ei, (ej + ee))
779782 else throw("wrong outAssetId")
780- let dQ = ej._1
781- let dR = ej._2
782- let dS = ej._3
783- let dT = ej._4
784- let dU = ej._5
785- let dV = ej._6
786- let ek = ej._7
787- if (if ((0 > dS))
783+ let dR = ek._1
784+ let dS = ek._2
785+ let dT = ek._3
786+ let dU = ek._4
787+ let dV = ek._5
788+ let dW = ek._6
789+ let el = ek._7
790+ if (if ((0 > dT))
788791 then true
789- else (0 > dU))
792+ else (0 > dV))
790793 then throw("Wrong calc")
791794 else {
792- let bi = invoke(dK, "calcD", [toString(dQ), toString(dR), ay, g, h], nil)
793- let bh = invoke(dK, "calcD", [toString(((dQ - dS) + dV)), toString(((dR + dT) - dU)), ay, g, h], nil)
794- let dW = bg(parseBigIntValue(aq(bh)), parseBigIntValue(aq(bi)), f)
795- if ((dW == dW))
795+ let bj = invoke(dL, "calcD", [toString(dR), toString(dS), az, g, h], nil)
796+ let bi = invoke(dL, "calcD", [toString(((dR - dT) + dW)), toString(((dS + dU) - dV)), az, g, h], nil)
797+ let dX = bh(parseBigIntValue(ar(bi)), parseBigIntValue(ar(bj)), f)
798+ if ((dX == dX))
796799 then {
797- let el = ba(toBigInt(ek), toBigInt(ef), toBigInt(bd))
798- if ((el == el))
800+ let em = bb(toBigInt(el), toBigInt(eg), toBigInt(be))
801+ if ((em == em))
799802 then {
800- let em = if ((eg == bJ))
801- then $Tuple2(toInt(el._2), 0)
802- else $Tuple2(0, toInt(el._2))
803- let en = em._1
804- let eo = em._2
805- let ep = aX(B(bR, bM), B(bP, bL))
806- let eq = E(ep, a)
807- let cb = [ScriptTransfer(bH, (en + eo), if ((eg == "WAVES"))
803+ let en = if ((eh == bK))
804+ then $Tuple2(toInt(em._2), 0)
805+ else $Tuple2(0, toInt(em._2))
806+ let eo = en._1
807+ let ep = en._2
808+ let eq = aY(B(bS, bN), B(bQ, bM))
809+ let er = E(eq, a)
810+ let cc = [ScriptTransfer(bI, (eo + ep), if ((eh == "WAVES"))
808811 then unit
809- else fromBase58String(eg)), StringEntry(W(toString(bH), bE), aR(en, eo, ck, eq, height, lastBlock.timestamp)), IntegerEntry(P(), eq), IntegerEntry(Q(height, lastBlock.timestamp), eq)]
810- if ((cb == cb))
812+ else fromBase58String(eh)), StringEntry(W(toString(bI), bF), aS(eo, ep, cl, er, height, lastBlock.timestamp)), IntegerEntry(P(), er), IntegerEntry(Q(height, lastBlock.timestamp), er)]
813+ if ((cc == cc))
811814 then {
812- let er = invoke(ax, "burn", [ck], [AttachedPayment(bF, ck)])
813- if ((er == er))
814- then cb
815+ let es = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
816+ if ((es == es))
817+ then cc
815818 else throw("Strict value is not equal to itself.")
816819 }
817820 else throw("Strict value is not equal to itself.")
818821 }
819822 else throw("Strict value is not equal to itself.")
820823 }
821824 else throw("Strict value is not equal to itself.")
822825 }
823826 }
824827 else throw("Strict value is not equal to itself.")
825828 }
826829
827830
828831
829-@Callable(de)
830-func getNoLess (es,et) = {
831- let cw = dd(de)
832- let bZ = cw._1
833- let ca = cw._2
834- let ck = cw._3
835- let bF = cw._4
836- let cb = cw._5
837- if ((es > bZ))
838- then throw(((("Failed: " + toString(bZ)) + " < ") + toString(es)))
839- else if ((et > ca))
840- then throw(((("Failed: " + toString(ca)) + " < ") + toString(et)))
832+@Callable(df)
833+func getNoLess (et,eu) = {
834+ let cx = de(df)
835+ let ca = cx._1
836+ let cb = cx._2
837+ let cl = cx._3
838+ let bG = cx._4
839+ let cc = cx._5
840+ if ((et > ca))
841+ then throw(((("Failed: " + toString(ca)) + " < ") + toString(et)))
842+ else if ((eu > cb))
843+ then throw(((("Failed: " + toString(cb)) + " < ") + toString(eu)))
841844 else {
842- let eu = invoke(ax, "burn", [ck], [AttachedPayment(bF, ck)])
843- if ((eu == eu))
844- then cb
845+ let ev = invoke(ay, "burn", [cl], [AttachedPayment(bG, cl)])
846+ if ((ev == ev))
847+ then cc
845848 else throw("Strict value is not equal to itself.")
846849 }
847850 }
848851
849852
850853
851-@Callable(de)
852-func unstakeAndGet (ev) = {
853- let ew = if ((size(de.payments) != 0))
854+@Callable(df)
855+func unstakeAndGet (ew) = {
856+ let ex = if ((size(df.payments) != 0))
854857 then throw("No pmnts expd")
855858 else true
856- if ((ew == ew))
859+ if ((ex == ex))
857860 then {
858- let bu = aB()
859- let ex = aF()
860- let dA = fromBase58String(bu[q])
861- let ey = valueOrErrorMessage(addressFromString(ex[x]), "Wr st addr")
862- let ez = invoke(ey, "unstake", [toBase58String(dA), ev], nil)
863- if ((ez == ez))
861+ let bv = aC()
862+ let ey = aG()
863+ let dB = fromBase58String(bv[q])
864+ let ez = valueOrErrorMessage(addressFromString(ey[x]), "Wr st addr")
865+ let eA = invoke(ez, "unstake", [toBase58String(dB), ew], nil)
866+ if ((eA == eA))
864867 then {
865- let cw = bD(toBase58String(de.transactionId), toBase58String(dA), ev, de.caller)
866- let bN = parseIntValue(cw._9)
867- let cb = cw._10
868- let eA = if (if (az())
868+ let cx = bE(toBase58String(df.transactionId), toBase58String(dB), ew, df.caller)
869+ let bO = parseIntValue(cx._9)
870+ let cc = cx._10
871+ let eB = if (if (aA())
869872 then true
870- else (bN == n))
871- then throw(("Blocked: " + toString(bN)))
873+ else (bO == n))
874+ then throw(("Blocked: " + toString(bO)))
872875 else true
873- if ((eA == eA))
876+ if ((eB == eB))
874877 then {
875- let eB = invoke(ax, "burn", [ev], [AttachedPayment(dA, ev)])
876- if ((eB == eB))
877- then cb
878+ let eC = invoke(ay, "burn", [ew], [AttachedPayment(dB, ew)])
879+ if ((eC == eC))
880+ then cc
878881 else throw("Strict value is not equal to itself.")
879882 }
880883 else throw("Strict value is not equal to itself.")
881884 }
882885 else throw("Strict value is not equal to itself.")
883886 }
884887 else throw("Strict value is not equal to itself.")
885888 }
886889
887890
888891
889-@Callable(de)
890-func activate (eC,eD) = if ((toString(de.caller) != toString(ax)))
892+@Callable(df)
893+func activate (eD,eE) = if ((toString(df.caller) != toString(ay)))
891894 then throw("denied")
892- else $Tuple2([StringEntry(X(), eC), StringEntry(Y(), eD)], "success")
895+ else $Tuple2([StringEntry(X(), eD), StringEntry(Y(), eE)], "success")
893896
894897
895898
896-@Callable(de)
897-func setS (eE,eA) = if ((toString(de.caller) != at(this, aa())))
898- then dm
899- else [StringEntry(eE, eA)]
899+@Callable(df)
900+func setS (eF,eB) = if ((toString(df.caller) != au(this, aa())))
901+ then dn
902+ else [StringEntry(eF, eB)]
900903
901904
902905
903-@Callable(de)
904-func setI (eE,eA) = if ((toString(de.caller) != at(this, aa())))
905- then dm
906- else [IntegerEntry(eE, eA)]
906+@Callable(df)
907+func setI (eF,eB) = if ((toString(df.caller) != au(this, aa())))
908+ then dn
909+ else [IntegerEntry(eF, eB)]
907910
908911
909912
910-@Callable(de)
911-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aB())
913+@Callable(df)
914+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aC())
912915
913916
914917
915-@Callable(de)
916-func getAccBalanceWrapperREADONLY (aW) = $Tuple2(nil, aV(aW))
918+@Callable(df)
919+func getAccBalanceWrapperREADONLY (aX) = $Tuple2(nil, aW(aX))
917920
918921
919922
920-@Callable(de)
921-func calcPricesWrapperREADONLY (bo,bp,bt) = {
922- let eF = bs(bo, bp, bt)
923- $Tuple2(nil, [toString(eF[0]), toString(eF[1]), toString(eF[2])])
923+@Callable(df)
924+func calcPricesWrapperREADONLY (bp,bq,bu) = {
925+ let eG = bt(bp, bq, bu)
926+ $Tuple2(nil, [toString(eG[0]), toString(eG[1]), toString(eG[2])])
924927 }
925928
926929
927930
928-@Callable(de)
929-func fromX18WrapperREADONLY (F,eG) = $Tuple2(nil, E(parseBigIntValue(F), eG))
931+@Callable(df)
932+func fromX18WrapperREADONLY (F,eH) = $Tuple2(nil, E(parseBigIntValue(F), eH))
930933
931934
932935
933-@Callable(de)
936+@Callable(df)
934937 func toX18WrapperREADONLY (C,D) = $Tuple2(nil, toString(B(C, D)))
935938
936939
937940
938-@Callable(de)
939-func calcPriceBigIntWrapperREADONLY (aY,aZ) = $Tuple2(nil, toString(aX(parseBigIntValue(aY), parseBigIntValue(aZ))))
941+@Callable(df)
942+func calcPriceBigIntWrapperREADONLY (aZ,ba) = $Tuple2(nil, toString(aY(parseBigIntValue(aZ), parseBigIntValue(ba))))
940943
941944
942945
943-@Callable(de)
944-func estimatePutOperationWrapperREADONLY (bE,bd,cd,ce,cf,cg,eH,ch,ci) = $Tuple2(nil, cc(bE, bd, cd, ce, cf, cg, eH, ch, ci, false, 0, ""))
946+@Callable(df)
947+func estimatePutOperationWrapperREADONLY (bF,be,ce,cf,cg,ch,eI,ci,cj) = $Tuple2(nil, cd(bF, be, ce, cf, cg, ch, eI, ci, cj, false, 0, ""))
945948
946949
947950
948-@Callable(de)
949-func estimateGetOperationWrapperREADONLY (bE,eI,bG,eH) = {
950- let cw = bD(bE, eI, bG, addressFromStringValue(eH))
951- $Tuple2(nil, $Tuple10(cw._1, cw._2, cw._3, cw._4, cw._5, cw._6, cw._7, toString(cw._8), cw._9, cw._10))
951+@Callable(df)
952+func estimateGetOperationWrapperREADONLY (bF,eJ,bH,eI) = {
953+ let cx = bE(bF, eJ, bH, addressFromStringValue(eI))
954+ $Tuple2(nil, $Tuple10(cx._1, cx._2, cx._3, cx._4, cx._5, cx._6, cx._7, toString(cx._8), cx._9, cx._10))
952955 }
953956
954957
955-@Verifier(eJ)
956-func eK () = {
957- let ar = eJ
958- if ($isInstanceOf(ar, "Order"))
958+@Verifier(eK)
959+func eL () = {
960+ let eM = {
961+ let as = dk()
962+ if ($isInstanceOf(as, "ByteVector"))
963+ then {
964+ let dp = as
965+ dp
966+ }
967+ else if ($isInstanceOf(as, "Unit"))
968+ then eK.senderPublicKey
969+ else throw("Match error")
970+ }
971+ let as = eK
972+ if ($isInstanceOf(as, "Order"))
959973 then {
960- let cR = ar
961- let eL = aA()
962- let an = cQ(cR)
963- let eM = sigVerify(cR.bodyBytes, cR.proofs[0], cR.senderPublicKey)
964- let eN = sigVerify(cR.bodyBytes, cR.proofs[1], eL)
965- if (if (if (an)
966- then eM
974+ let cS = as
975+ let eN = aB()
976+ let eO = cR(cS)
977+ let eP = sigVerify(cS.bodyBytes, cS.proofs[0], cS.senderPublicKey)
978+ let eQ = sigVerify(cS.bodyBytes, cS.proofs[1], eN)
979+ if (if (if (eO)
980+ then eP
967981 else false)
968- then eN
982+ then eQ
969983 else false)
970984 then true
971- else am(an, eM, eN)
985+ else an(eO, eP, eQ)
972986 }
973- else {
974- let eO = {
975- let eP = dj()
976- if ($isInstanceOf(eP, "ByteVector"))
977- then {
978- let do = eP
979- do
980- }
981- else if ($isInstanceOf(eP, "Unit"))
982- then eJ.senderPublicKey
983- else throw("Match error")
987+ else if ($isInstanceOf(as, "SetScriptTransaction"))
988+ then {
989+ let dl = as
990+ let eR = blake2b256(value(dl.script))
991+ let eS = fromBase64String(value(getString(ay, am())))
992+ let eT = scriptHash(this)
993+ if (if ((eS == eR))
994+ then (eT != eR)
995+ else false)
996+ then true
997+ else sigVerify(eK.bodyBytes, eK.proofs[0], eM)
984998 }
985- sigVerify(eJ.bodyBytes, eJ.proofs[0], eO)
986- }
999+ else sigVerify(eK.bodyBytes, eK.proofs[0], eM)
9871000 }
9881001

github/deemru/w8io/3ef1775 
354.71 ms