tx · CQycKbaBhvNbaRjH3miKJLZxZVkoA49ZQY1Cervic1UW

3N8xVsHSfRk1kVs9qDaRy8EW2vGAckYBWYg:  -0.03500000 Waves

2022.10.12 17:09 [2269238] smart account 3N8xVsHSfRk1kVs9qDaRy8EW2vGAckYBWYg > SELF 0.00000000 Waves

{ "type": 13, "id": "CQycKbaBhvNbaRjH3miKJLZxZVkoA49ZQY1Cervic1UW", "fee": 3500000, "feeAssetId": null, "timestamp": 1665583726553, "version": 1, "sender": "3N8xVsHSfRk1kVs9qDaRy8EW2vGAckYBWYg", "senderPublicKey": "5rAjX8jUZYc66owGPJ8QsVfavrMFqXKnkxj3puK23eyi", "proofs": [ "2a8A7S2cuz2w3M7TX2rC2d6dKdW44PaURhYJduHLXZLEGZrQ4SvDiSZCCyuVYTqqZe48JGE2VDJmLHhATqGaF5Sk" ], "script": "base64:BgJ7CAISAwoBCBIAEgQKAgEEEgMKAQESBAoCAQQSBQoDCAEBEgASBAoCAQESAwoBARIECgIICBIAEgMKAQgSBQoDAQEBEgQKAgEBEgQKAggBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgASAwoBARIDCgEBEgQKAggBUgAKbFBkZWNpbWFscwAIAAZzY2FsZTgAgMLXLwAMc2NhbGU4QmlnSW50CQC2AgEAgMLXLwAHc2NhbGUxOAkAtgIBAICAkLu61q3wDQAKemVyb0JpZ0ludAkAtgIBAAAABGJpZzAJALYCAQAAAARiaWcxCQC2AgEAAQAEYmlnMgkAtgIBAAEAC3dhdmVzU3RyaW5nAgVXQVZFUwADU0VQAgJfXwAKUG9vbEFjdGl2ZQABAA9Qb29sUHV0RGlzYWJsZWQAAgATUG9vbE1hdGNoZXJEaXNhYmxlZAADAAxQb29sU2h1dGRvd24ABAAOaWR4UG9vbEFkZHJlc3MAAQANaWR4UG9vbFN0YXR1cwACABBpZHhQb29sTFBBc3NldElkAAMADWlkeEFtdEFzc2V0SWQABAAPaWR4UHJpY2VBc3NldElkAAUADmlkeEFtdEFzc2V0RGNtAAYAEGlkeFByaWNlQXNzZXREY20ABwAOaWR4SUFtdEFzc2V0SWQACAAQaWR4SVByaWNlQXNzZXRJZAAJAA1pZHhMUEFzc2V0RGNtAAoAEmlkeFBvb2xBbXRBc3NldEFtdAABABRpZHhQb29sUHJpY2VBc3NldEFtdAACABFpZHhQb29sTFBBc3NldEFtdAADABlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0AAEAGmlkeEZhY3RvcnlTbGlwcGFnZUNvbnRyYWN0AAcBBXRvWDE4AgdvcmlnVmFsDW9yaWdTY2FsZU11bHQJALwCAwkAtgIBBQdvcmlnVmFsBQdzY2FsZTE4CQC2AgEFDW9yaWdTY2FsZU11bHQBB2Zyb21YMTgCA3ZhbA9yZXN1bHRTY2FsZU11bHQJAKADAQkAvAIDBQN2YWwJALYCAQUPcmVzdWx0U2NhbGVNdWx0BQdzY2FsZTE4AQd0b1NjYWxlAwNhbXQIcmVzU2NhbGUIY3VyU2NhbGUJAGsDBQNhbXQFCHJlc1NjYWxlBQhjdXJTY2FsZQEDYWJzAQN2YWwDCQC/AgIFCnplcm9CaWdJbnQFA3ZhbAkAvgIBBQN2YWwFA3ZhbAECZmMAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQNtcGsAAhQlc19fbWFuYWdlclB1YmxpY0tleQEEcG1wawACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQECcGwAAhElcyVzX19wcmljZV9fbGFzdAECcGgCAWgJdGltZXN0YW1wCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUBaAkAzAgCCQCkAwEFCXRpbWVzdGFtcAUDbmlsBQNTRVABA3BhdQILdXNlckFkZHJlc3MEdHhJZAkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FC3VzZXJBZGRyZXNzAgJfXwUEdHhJZAEDZ2F1Agt1c2VyQWRkcmVzcwR0eElkCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwULdXNlckFkZHJlc3MCAl9fBQR0eElkAQJhYQACDyVzX19hbW91bnRBc3NldAECcGEAAg4lc19fcHJpY2VBc3NldAEQa2V5RmFjdG9yeUNvbmZpZwACESVzX19mYWN0b3J5Q29uZmlnAQ1rZXlNYXRjaGVyUHViAAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5ASlrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cwETcG9vbENvbnRyYWN0QWRkcmVzcwkArAICCQCsAgICCCVzJXMlc19fBRNwb29sQ29udHJhY3RBZGRyZXNzAiBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAENa2V5UG9vbENvbmZpZwIJaUFtdEFzc2V0C2lQcmljZUFzc2V0CQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQlpQW10QXNzZXQCAl9fBQtpUHJpY2VBc3NldAIIX19jb25maWcBH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQBDGJhc2VBc3NldFN0cgkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQxiYXNlQXNzZXRTdHIBE2tleUFsbFBvb2xzU2h1dGRvd24AAgwlc19fc2h1dGRvd24BDWtleVBvb2xXZWlnaHQBD2NvbnRyYWN0QWRkcmVzcwkArAICAhIlcyVzX19wb29sV2VpZ2h0X18FD2NvbnRyYWN0QWRkcmVzcwEWa2V5QWxsb3dlZExwU2NyaXB0SGFzaAACFyVzX19hbGxvd2VkTHBTY3JpcHRIYXNoAQ90aHJvd09yZGVyRXJyb3IDCm9yZGVyVmFsaWQLc2VuZGVyVmFsaWQMbWF0Y2hlclZhbGlkCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICJG9yZGVyIHZhbGlkYXRpb24gZmFpbGVkOiBvcmRlclZhbGlkPQkApQMBBQpvcmRlclZhbGlkAg0gc2VuZGVyVmFsaWQ9CQClAwEFC3NlbmRlclZhbGlkAg4gbWF0Y2hlclZhbGlkPQkApQMBBQxtYXRjaGVyVmFsaWQBD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQxnZXRJbnRPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUHYWRkcmVzcwUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAEIdGhyb3dFcnIBA21zZwkAAgEJALkJAgkAzAgCAghscC5yaWRlOgkAzAgCBQNtc2cFA25pbAIBIAAPZmFjdG9yeUNvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQEPZ2V0U3RyaW5nT3JGYWlsAgUEdGhpcwkBAmZjAAEQaXNHbG9iYWxTaHV0ZG93bgAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUPZmFjdG9yeUNvbnRyYWN0CQETa2V5QWxsUG9vbHNTaHV0ZG93bgAHARNnZXRNYXRjaGVyUHViT3JGYWlsAAkA2QQBCQEPZ2V0U3RyaW5nT3JGYWlsAgUPZmFjdG9yeUNvbnRyYWN0CQENa2V5TWF0Y2hlclB1YgABDWdldFBvb2xDb25maWcABAhhbXRBc3NldAkBD2dldFN0cmluZ09yRmFpbAIFBHRoaXMJAQJhYQAECnByaWNlQXNzZXQJAQ9nZXRTdHJpbmdPckZhaWwCBQR0aGlzCQECcGEABAtpUHJpY2VBc3NldAkBDGdldEludE9yRmFpbAIFD2ZhY3RvcnlDb250cmFjdAkBH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQBBQpwcmljZUFzc2V0BAlpQW10QXNzZXQJAQxnZXRJbnRPckZhaWwCBQ9mYWN0b3J5Q29udHJhY3QJAR9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAQUIYW10QXNzZXQJALUJAgkBD2dldFN0cmluZ09yRmFpbAIFD2ZhY3RvcnlDb250cmFjdAkBDWtleVBvb2xDb25maWcCCQCkAwEFCWlBbXRBc3NldAkApAMBBQtpUHJpY2VBc3NldAUDU0VQAQxwYXJzZUFzc2V0SWQBBWlucHV0AwkAAAIFBWlucHV0BQt3YXZlc1N0cmluZwUEdW5pdAkA2QQBBQVpbnB1dAEPYXNzZXRJZFRvU3RyaW5nAQVpbnB1dAMJAAACBQVpbnB1dAUEdW5pdAULd2F2ZXNTdHJpbmcJANgEAQkBBXZhbHVlAQUFaW5wdXQBD3BhcnNlUG9vbENvbmZpZwEKcG9vbENvbmZpZwkAmQoHCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFCnBvb2xDb25maWcFDmlkeFBvb2xBZGRyZXNzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKcG9vbENvbmZpZwUNaWR4UG9vbFN0YXR1cwkA2QQBCQCRAwIFCnBvb2xDb25maWcFEGlkeFBvb2xMUEFzc2V0SWQJAQxwYXJzZUFzc2V0SWQBCQCRAwIFCnBvb2xDb25maWcFDWlkeEFtdEFzc2V0SWQJAQxwYXJzZUFzc2V0SWQBCQCRAwIFCnBvb2xDb25maWcFD2lkeFByaWNlQXNzZXRJZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnBvb2xDb25maWcFDmlkeEFtdEFzc2V0RGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKcG9vbENvbmZpZwUQaWR4UHJpY2VBc3NldERjbQEQZ2V0RmFjdG9yeUNvbmZpZwAJALUJAgkBD2dldFN0cmluZ09yRmFpbAIFD2ZhY3RvcnlDb250cmFjdAkBEGtleUZhY3RvcnlDb25maWcABQNTRVAAD3N0YWtpbmdDb250cmFjdAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBEGdldEZhY3RvcnlDb25maWcABRlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0AhlpbmNvcnJlY3Qgc3Rha2luZyBhZGRyZXNzABBzbGlwcGFnZUNvbnRyYWN0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCCQEQZ2V0RmFjdG9yeUNvbmZpZwAFGmlkeEZhY3RvcnlTbGlwcGFnZUNvbnRyYWN0AhlpbmNvcnJlY3Qgc3Rha2luZyBhZGRyZXNzARFkYXRhUHV0QWN0aW9uSW5mbwoNaW5BbXRBc3NldEFtdA9pblByaWNlQXNzZXRBbXQIb3V0THBBbXQFcHJpY2Udc2xpcHBhZ2VUb2xlcmFuY2VQYXNzZWRCeVVzZXIVc2xpcHBhZ2VUb2xlcmFuY2VSZWFsCHR4SGVpZ2h0C3R4VGltZXN0YW1wEnNsaXBhZ2VBbXRBc3NldEFtdBRzbGlwYWdlUHJpY2VBc3NldEFtdAkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUNaW5BbXRBc3NldEFtdAkAzAgCCQCkAwEFD2luUHJpY2VBc3NldEFtdAkAzAgCCQCkAwEFCG91dExwQW10CQDMCAIJAKQDAQUFcHJpY2UJAMwIAgkApAMBBR1zbGlwcGFnZVRvbGVyYW5jZVBhc3NlZEJ5VXNlcgkAzAgCCQCkAwEFFXNsaXBwYWdlVG9sZXJhbmNlUmVhbAkAzAgCCQCkAwEFCHR4SGVpZ2h0CQDMCAIJAKQDAQULdHhUaW1lc3RhbXAJAMwIAgkApAMBBRJzbGlwYWdlQW10QXNzZXRBbXQJAMwIAgkApAMBBRRzbGlwYWdlUHJpY2VBc3NldEFtdAUDbmlsBQNTRVABEWRhdGFHZXRBY3Rpb25JbmZvBg5vdXRBbXRBc3NldEFtdBBvdXRQcmljZUFzc2V0QW10B2luTHBBbXQFcHJpY2UIdHhIZWlnaHQLdHhUaW1lc3RhbXAJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQ5vdXRBbXRBc3NldEFtdAkAzAgCCQCkAwEFEG91dFByaWNlQXNzZXRBbXQJAMwIAgkApAMBBQdpbkxwQW10CQDMCAIJAKQDAQUFcHJpY2UJAMwIAgkApAMBBQh0eEhlaWdodAkAzAgCCQCkAwEFC3R4VGltZXN0YW1wBQNuaWwFA1NFUAENZ2V0QWNjQmFsYW5jZQEHYXNzZXRJZAMJAAACBQdhc3NldElkAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQdhc3NldElkAQ9jYWxjUHJpY2VCaWdJbnQCCHByQW10WDE4CGFtQW10WDE4CQC8AgMFCHByQW10WDE4BQdzY2FsZTE4BQhhbUFtdFgxOAEQcHJpdmF0ZUNhbGNQcmljZQQKYW1Bc3NldERjbQpwckFzc2V0RGNtBWFtQW10BXByQW10BA5hbXRBc3NldEFtdFgxOAkBBXRvWDE4AgUFYW1BbXQFCmFtQXNzZXREY20EEHByaWNlQXNzZXRBbXRYMTgJAQV0b1gxOAIFBXByQW10BQpwckFzc2V0RGNtCQEPY2FsY1ByaWNlQmlnSW50AgUQcHJpY2VBc3NldEFtdFgxOAUOYW10QXNzZXRBbXRYMTgBCmNhbGNQcmljZXMDBWFtQW10BXByQW10BWxwQW10BANjZmcJAQ1nZXRQb29sQ29uZmlnAAQLYW10QXNzZXREY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDmlkeEFtdEFzc2V0RGNtBA1wcmljZUFzc2V0RGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBRBpZHhQcmljZUFzc2V0RGNtBAhwcmljZVgxOAkBEHByaXZhdGVDYWxjUHJpY2UEBQthbXRBc3NldERjbQUNcHJpY2VBc3NldERjbQUFYW1BbXQFBXByQW10BAhhbUFtdFgxOAkBBXRvWDE4AgUFYW1BbXQFC2FtdEFzc2V0RGNtBAhwckFtdFgxOAkBBXRvWDE4AgUFcHJBbXQFDXByaWNlQXNzZXREY20ECGxwQW10WDE4CQEFdG9YMTgCBQVscEFtdAUGc2NhbGU4BBNscFByaWNlSW5BbUFzc2V0WDE4CQEPY2FsY1ByaWNlQmlnSW50AgUIYW1BbXRYMTgFCGxwQW10WDE4BBNscFByaWNlSW5QckFzc2V0WDE4CQEPY2FsY1ByaWNlQmlnSW50AgUIcHJBbXRYMTgFCGxwQW10WDE4CQDMCAIFCHByaWNlWDE4CQDMCAIFE2xwUHJpY2VJbkFtQXNzZXRYMTgJAMwIAgUTbHBQcmljZUluUHJBc3NldFgxOAUDbmlsAQ9jYWxjdWxhdGVQcmljZXMDBWFtQW10BXByQW10BWxwQW10BAZwcmljZXMJAQpjYWxjUHJpY2VzAwUFYW1BbXQFBXByQW10BQVscEFtdAkAzAgCCQEHZnJvbVgxOAIJAJEDAgUGcHJpY2VzAAAFBnNjYWxlOAkAzAgCCQEHZnJvbVgxOAIJAJEDAgUGcHJpY2VzAAEFBnNjYWxlOAkAzAgCCQEHZnJvbVgxOAIJAJEDAgUGcHJpY2VzAAIFBnNjYWxlOAUDbmlsARRlc3RpbWF0ZUdldE9wZXJhdGlvbgQGdHhJZDU4CnBtdEFzc2V0SWQIcG10THBBbXQLdXNlckFkZHJlc3MEA2NmZwkBDWdldFBvb2xDb25maWcABAlscEFzc2V0SWQJAJEDAgUDY2ZnBRBpZHhQb29sTFBBc3NldElkBAlhbUFzc2V0SWQJAJEDAgUDY2ZnBQ1pZHhBbXRBc3NldElkBAlwckFzc2V0SWQJAJEDAgUDY2ZnBQ9pZHhQcmljZUFzc2V0SWQECmFtQXNzZXREY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDmlkeEFtdEFzc2V0RGNtBApwckFzc2V0RGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBRBpZHhQcmljZUFzc2V0RGNtBApwb29sU3RhdHVzCQCRAwIFA2NmZwUNaWR4UG9vbFN0YXR1cwQKbHBFbWlzc2lvbggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFCWxwQXNzZXRJZAkArAICCQCsAgICBkFzc2V0IAUJbHBBc3NldElkAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQMJAQIhPQIFCWxwQXNzZXRJZAUKcG10QXNzZXRJZAkAAgECFUludmFsaWQgYXNzZXQgcGFzc2VkLgQJYW1CYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFCWFtQXNzZXRJZAQMYW1CYWxhbmNlWDE4CQEFdG9YMTgCBQlhbUJhbGFuY2UFCmFtQXNzZXREY20ECXByQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQlwckFzc2V0SWQEDHByQmFsYW5jZVgxOAkBBXRvWDE4AgUJcHJCYWxhbmNlBQpwckFzc2V0RGNtBAtjdXJQcmljZVgxOAkBD2NhbGNQcmljZUJpZ0ludAIFDHByQmFsYW5jZVgxOAUMYW1CYWxhbmNlWDE4BAhjdXJQcmljZQkBB2Zyb21YMTgCBQtjdXJQcmljZVgxOAUGc2NhbGU4BAtwbXRMcEFtdFgxOAkBBXRvWDE4AgUIcG10THBBbXQFBnNjYWxlOAQNbHBFbWlzc2lvblgxOAkBBXRvWDE4AgUKbHBFbWlzc2lvbgUGc2NhbGU4BAtvdXRBbUFtdFgxOAkAvAIDBQxhbUJhbGFuY2VYMTgFC3BtdExwQW10WDE4BQ1scEVtaXNzaW9uWDE4BAtvdXRQckFtdFgxOAkAvAIDBQxwckJhbGFuY2VYMTgFC3BtdExwQW10WDE4BQ1scEVtaXNzaW9uWDE4BAhvdXRBbUFtdAkBB2Zyb21YMTgCBQtvdXRBbUFtdFgxOAUKYW1Bc3NldERjbQQIb3V0UHJBbXQJAQdmcm9tWDE4AgULb3V0UHJBbXRYMTgFCnByQXNzZXREY20EBXN0YXRlAwkAAAIFBnR4SWQ1OAIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFCG91dEFtQW10AwkAAAIFCWFtQXNzZXRJZAIFV0FWRVMFBHVuaXQJANkEAQUJYW1Bc3NldElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQhvdXRQckFtdAMJAAACBQlwckFzc2V0SWQCBVdBVkVTBQR1bml0CQDZBAEFCXByQXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQEDZ2F1AgkApQgBBQt1c2VyQWRkcmVzcwUGdHhJZDU4CQERZGF0YUdldEFjdGlvbkluZm8GBQhvdXRBbUFtdAUIb3V0UHJBbXQFCHBtdExwQW10BQhjdXJQcmljZQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBsAAUIY3VyUHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwaAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFCGN1clByaWNlBQNuaWwJAJwKCgUIb3V0QW1BbXQFCG91dFByQW10BQlhbUFzc2V0SWQFCXByQXNzZXRJZAUJYW1CYWxhbmNlBQlwckJhbGFuY2UFCmxwRW1pc3Npb24FC2N1clByaWNlWDE4BQpwb29sU3RhdHVzBQVzdGF0ZQEUZXN0aW1hdGVQdXRPcGVyYXRpb24JBnR4SWQ1OBFzbGlwcGFnZVRvbGVyYW5jZQxpbkFtQXNzZXRBbXQLaW5BbUFzc2V0SWQMaW5QckFzc2V0QW10C2luUHJBc3NldElkC3VzZXJBZGRyZXNzCmlzRXZhbHVhdGUGZW1pdExwBANjZmcJAQ1nZXRQb29sQ29uZmlnAAQJbHBBc3NldElkCQDZBAEJAJEDAgUDY2ZnBRBpZHhQb29sTFBBc3NldElkBAxhbUFzc2V0SWRTdHIJAJEDAgUDY2ZnBQ1pZHhBbXRBc3NldElkBAxwckFzc2V0SWRTdHIJAJEDAgUDY2ZnBQ9pZHhQcmljZUFzc2V0SWQEC2lBbXRBc3NldElkCQCRAwIFA2NmZwUOaWR4SUFtdEFzc2V0SWQEDWlQcmljZUFzc2V0SWQJAJEDAgUDY2ZnBRBpZHhJUHJpY2VBc3NldElkBAthbXRBc3NldERjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUOaWR4QW10QXNzZXREY20EDXByaWNlQXNzZXREY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFEGlkeFByaWNlQXNzZXREY20ECnBvb2xTdGF0dXMJAJEDAgUDY2ZnBQ1pZHhQb29sU3RhdHVzBApscEVtaXNzaW9uCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFCWxwQXNzZXRJZAkArAICCQCsAgICBkFzc2V0IAkA2AQBBQlscEFzc2V0SWQCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BA5pbkFtQXNzZXRJZFN0cgkA2AQBCQELdmFsdWVPckVsc2UCBQtpbkFtQXNzZXRJZAkA2QQBAgVXQVZFUwQOaW5QckFzc2V0SWRTdHIJANgEAQkBC3ZhbHVlT3JFbHNlAgULaW5QckFzc2V0SWQJANkEAQIFV0FWRVMDAwkBAiE9AgUMYW1Bc3NldElkU3RyBQ5pbkFtQXNzZXRJZFN0cgYJAQIhPQIFDHByQXNzZXRJZFN0cgUOaW5QckFzc2V0SWRTdHIJAAIBAiJJbnZhbGlkIGFtdCBvciBwcmljZSBhc3NldCBwYXNzZWQuBAlhbUJhbGFuY2UDBQppc0V2YWx1YXRlCQENZ2V0QWNjQmFsYW5jZQEFDGFtQXNzZXRJZFN0cgkAZQIJAQ1nZXRBY2NCYWxhbmNlAQUMYW1Bc3NldElkU3RyBQxpbkFtQXNzZXRBbXQECXByQmFsYW5jZQMFCmlzRXZhbHVhdGUJAQ1nZXRBY2NCYWxhbmNlAQUMcHJBc3NldElkU3RyCQBlAgkBDWdldEFjY0JhbGFuY2UBBQxwckFzc2V0SWRTdHIFDGluUHJBc3NldEFtdAQPaW5BbUFzc2V0QW10WDE4CQEFdG9YMTgCBQxpbkFtQXNzZXRBbXQFC2FtdEFzc2V0RGNtBA9pblByQXNzZXRBbXRYMTgJAQV0b1gxOAIFDGluUHJBc3NldEFtdAUNcHJpY2VBc3NldERjbQQMdXNlclByaWNlWDE4CQEPY2FsY1ByaWNlQmlnSW50AgUPaW5QckFzc2V0QW10WDE4BQ9pbkFtQXNzZXRBbXRYMTgEDGFtQmFsYW5jZVgxOAkBBXRvWDE4AgUJYW1CYWxhbmNlBQthbXRBc3NldERjbQQMcHJCYWxhbmNlWDE4CQEFdG9YMTgCBQlwckJhbGFuY2UFDXByaWNlQXNzZXREY20EA3JlcwMJAAACBQpscEVtaXNzaW9uAAAEC2N1clByaWNlWDE4BQp6ZXJvQmlnSW50BAtzbGlwcGFnZVgxOAUKemVyb0JpZ0ludAQIbHBBbXRYMTgJAHYGCQC5AgIFD2luQW1Bc3NldEFtdFgxOAUPaW5QckFzc2V0QW10WDE4AAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEHZnJvbVgxOAIFCGxwQW10WDE4BQZzY2FsZTgJAQdmcm9tWDE4AgUPaW5BbUFzc2V0QW10WDE4BQthbXRBc3NldERjbQkBB2Zyb21YMTgCBQ9pblByQXNzZXRBbXRYMTgFDXByaWNlQXNzZXREY20JAQ9jYWxjUHJpY2VCaWdJbnQCCQC3AgIFDHByQmFsYW5jZVgxOAUPaW5QckFzc2V0QW10WDE4CQC3AgIFDGFtQmFsYW5jZVgxOAUPaW5BbUFzc2V0QW10WDE4BQtzbGlwcGFnZVgxOAQLY3VyUHJpY2VYMTgJAQ9jYWxjUHJpY2VCaWdJbnQCBQxwckJhbGFuY2VYMTgFDGFtQmFsYW5jZVgxOAQLc2xpcHBhZ2VYMTgJALwCAwkBA2FicwEJALgCAgULY3VyUHJpY2VYMTgFDHVzZXJQcmljZVgxOAUHc2NhbGUxOAULY3VyUHJpY2VYMTgEFHNsaXBwYWdlVG9sZXJhbmNlWDE4CQEFdG9YMTgCBRFzbGlwcGFnZVRvbGVyYW5jZQUGc2NhbGU4AwMJAQIhPQIFC2N1clByaWNlWDE4BQp6ZXJvQmlnSW50CQC/AgIFC3NsaXBwYWdlWDE4BRRzbGlwcGFnZVRvbGVyYW5jZVgxOAcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQULc2xpcHBhZ2VYMTgCHiBleGNlZWRlZCB0aGUgcGFzc2VkIGxpbWl0IG9mIAkApgMBBRRzbGlwcGFnZVRvbGVyYW5jZVgxOAQNbHBFbWlzc2lvblgxOAkBBXRvWDE4AgUKbHBFbWlzc2lvbgUGc2NhbGU4BApwclZpYUFtWDE4CQC8AgMFD2luQW1Bc3NldEFtdFgxOAULY3VyUHJpY2VYMTgFB3NjYWxlMTgECmFtVmlhUHJYMTgJALwCAwUPaW5QckFzc2V0QW10WDE4BQdzY2FsZTE4BQtjdXJQcmljZVgxOAQMZXhwZWN0ZWRBbXRzAwkAvwICBQpwclZpYUFtWDE4BQ9pblByQXNzZXRBbXRYMTgJAJQKAgUKYW1WaWFQclgxOAUPaW5QckFzc2V0QW10WDE4CQCUCgIFD2luQW1Bc3NldEFtdFgxOAUKcHJWaWFBbVgxOAQRZXhwQW10QXNzZXRBbXRYMTgIBQxleHBlY3RlZEFtdHMCXzEEE2V4cFByaWNlQXNzZXRBbXRYMTgIBQxleHBlY3RlZEFtdHMCXzIECGxwQW10WDE4CQC8AgMFDWxwRW1pc3Npb25YMTgFE2V4cFByaWNlQXNzZXRBbXRYMTgFDHByQmFsYW5jZVgxOAkAlwoFCQEHZnJvbVgxOAIFCGxwQW10WDE4BQZzY2FsZTgJAQdmcm9tWDE4AgURZXhwQW10QXNzZXRBbXRYMTgFC2FtdEFzc2V0RGNtCQEHZnJvbVgxOAIFE2V4cFByaWNlQXNzZXRBbXRYMTgFDXByaWNlQXNzZXREY20FC2N1clByaWNlWDE4BQtzbGlwcGFnZVgxOAQJY2FsY0xwQW10CAUDcmVzAl8xBA5jYWxjQW1Bc3NldFBtdAgFA3JlcwJfMgQOY2FsY1ByQXNzZXRQbXQIBQNyZXMCXzMECGN1clByaWNlCQEHZnJvbVgxOAIIBQNyZXMCXzQFBnNjYWxlOAQMc2xpcHBhZ2VDYWxjCQEHZnJvbVgxOAIIBQNyZXMCXzUFBnNjYWxlOAMJAGcCAAAFCWNhbGNMcEFtdAkAAgECNkludmFsaWQgY2FsY3VsYXRpb25zLiBMUCBjYWxjdWxhdGVkIGlzIGxlc3MgdGhhbiB6ZXJvLgQJZW1pdExwQW10AwkBASEBBQZlbWl0THAAAAUJY2FsY0xwQW10BAZhbURpZmYJAGUCBQxpbkFtQXNzZXRBbXQFDmNhbGNBbUFzc2V0UG10BAZwckRpZmYJAGUCBQxpblByQXNzZXRBbXQFDmNhbGNQckFzc2V0UG10BAtjb21tb25TdGF0ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBsAAUIY3VyUHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwaAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFCGN1clByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNwYXUCBQt1c2VyQWRkcmVzcwUGdHhJZDU4CQERZGF0YVB1dEFjdGlvbkluZm8KBQ5jYWxjQW1Bc3NldFBtdAUOY2FsY1ByQXNzZXRQbXQFCWVtaXRMcEFtdAUIY3VyUHJpY2UFEXNsaXBwYWdlVG9sZXJhbmNlBQxzbGlwcGFnZUNhbGMFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFBmFtRGlmZgUGcHJEaWZmBQNuaWwJAJ8KDQUJY2FsY0xwQW10BQllbWl0THBBbXQFCGN1clByaWNlBQlhbUJhbGFuY2UFCXByQmFsYW5jZQUKbHBFbWlzc2lvbgUJbHBBc3NldElkBQpwb29sU3RhdHVzBQtjb21tb25TdGF0ZQUGYW1EaWZmBQZwckRpZmYFC2luQW1Bc3NldElkBQtpblByQXNzZXRJZAEbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkAQVvcmRlcgQDY2ZnCQENZ2V0UG9vbENvbmZpZwAECmFtdEFzc2V0SWQJAJEDAgUDY2ZnBQ1pZHhBbXRBc3NldElkBAxwcmljZUFzc2V0SWQJAJEDAgUDY2ZnBQ9pZHhQcmljZUFzc2V0SWQECnBvb2xTdGF0dXMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFBvb2xTdGF0dXMEC2FtdEFzc2V0RGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQ5pZHhBbXRBc3NldERjbQQNcHJpY2VBc3NldERjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUQaWR4UHJpY2VBc3NldERjbQQSYWNjQW10QXNzZXRCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFCmFtdEFzc2V0SWQEFGFjY1ByaWNlQXNzZXRCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFDHByaWNlQXNzZXRJZAQLY3VyUHJpY2VYMTgDCQAAAggFBW9yZGVyCW9yZGVyVHlwZQUDQnV5CQEQcHJpdmF0ZUNhbGNQcmljZQQFC2FtdEFzc2V0RGNtBQ1wcmljZUFzc2V0RGNtCQBkAgUSYWNjQW10QXNzZXRCYWxhbmNlCAUFb3JkZXIGYW1vdW50BRRhY2NQcmljZUFzc2V0QmFsYW5jZQkBEHByaXZhdGVDYWxjUHJpY2UEBQthbXRBc3NldERjbQUNcHJpY2VBc3NldERjbQkAZQIFEmFjY0FtdEFzc2V0QmFsYW5jZQgFBW9yZGVyBmFtb3VudAUUYWNjUHJpY2VBc3NldEJhbGFuY2UECGN1clByaWNlCQEHZnJvbVgxOAIFC2N1clByaWNlWDE4BQZzY2FsZTgDAwMJARBpc0dsb2JhbFNodXRkb3duAAYJAAACBQpwb29sU3RhdHVzBRNQb29sTWF0Y2hlckRpc2FibGVkBgkAAAIFCnBvb2xTdGF0dXMFDFBvb2xTaHV0ZG93bgkAAgECHEV4Y2hhbmdlIG9wZXJhdGlvbnMgZGlzYWJsZWQEDW9yZGVyQW10QXNzZXQICAUFb3JkZXIJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BBBvcmRlckFtdEFzc2V0U3RyAwkAAAIFDW9yZGVyQW10QXNzZXQFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFDW9yZGVyQW10QXNzZXQED29yZGVyUHJpY2VBc3NldAgIBQVvcmRlcglhc3NldFBhaXIKcHJpY2VBc3NldAQSb3JkZXJQcmljZUFzc2V0U3RyAwkAAAIFD29yZGVyUHJpY2VBc3NldAUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUPb3JkZXJQcmljZUFzc2V0AwMJAQIhPQIFEG9yZGVyQW10QXNzZXRTdHIFCmFtdEFzc2V0SWQGCQECIT0CBRJvcmRlclByaWNlQXNzZXRTdHIFDHByaWNlQXNzZXRJZAkAAgECE1dyb25nIG9yZGVyIGFzc2V0cy4ECm9yZGVyUHJpY2UIBQVvcmRlcgVwcmljZQQIcHJpY2VEY20JAGsDBQZzY2FsZTgFDXByaWNlQXNzZXREY20FC2FtdEFzc2V0RGNtBBBjYXN0ZWRPcmRlclByaWNlCQEHdG9TY2FsZQMFCm9yZGVyUHJpY2UFBnNjYWxlOAUIcHJpY2VEY20EEWlzT3JkZXJQcmljZVZhbGlkAwkAAAIIBQVvcmRlcglvcmRlclR5cGUFA0J1eQkAZwIFCGN1clByaWNlBRBjYXN0ZWRPcmRlclByaWNlCQBnAgUQY2FzdGVkT3JkZXJQcmljZQUIY3VyUHJpY2UGAQljb21tb25HZXQBAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAh1leGFjdGx5IDEgcGF5bWVudCBpcyBleHBlY3RlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAECnBtdEFzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQGcG10QW10CAUDcG10BmFtb3VudAQDcmVzCQEUZXN0aW1hdGVHZXRPcGVyYXRpb24ECQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJANgEAQUKcG10QXNzZXRJZAUGcG10QW10CAUBaQZjYWxsZXIECG91dEFtQW10CAUDcmVzAl8xBAhvdXRQckFtdAgFA3JlcwJfMgQKcG9vbFN0YXR1cwkBDXBhcnNlSW50VmFsdWUBCAUDcmVzAl85BAVzdGF0ZQgFA3JlcwNfMTADAwkBEGlzR2xvYmFsU2h1dGRvd24ABgkAAAIFCnBvb2xTdGF0dXMFDFBvb2xTaHV0ZG93bgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUKcG9vbFN0YXR1cwkAlwoFBQhvdXRBbUFtdAUIb3V0UHJBbXQFBnBtdEFtdAUKcG10QXNzZXRJZAUFc3RhdGUBCWNvbW1vblB1dAMBaRFzbGlwcGFnZVRvbGVyYW5jZQZlbWl0THADCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAIJAAIBAh9leGFjdGx5IDIgcGF5bWVudHMgYXJlIGV4cGVjdGVkBAphbUFzc2V0UG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAECnByQXNzZXRQbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAQQGZXN0UHV0CQEUZXN0aW1hdGVQdXRPcGVyYXRpb24JCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQFEXNsaXBwYWdlVG9sZXJhbmNlCAUKYW1Bc3NldFBtdAZhbW91bnQIBQphbUFzc2V0UG10B2Fzc2V0SWQIBQpwckFzc2V0UG10BmFtb3VudAgFCnByQXNzZXRQbXQHYXNzZXRJZAkApQgBCAUBaQZjYWxsZXIHBQZlbWl0THAECnBvb2xTdGF0dXMJAQ1wYXJzZUludFZhbHVlAQgFBmVzdFB1dAJfOAMDAwkBEGlzR2xvYmFsU2h1dGRvd24ABgkAAAIFCnBvb2xTdGF0dXMFD1Bvb2xQdXREaXNhYmxlZAYJAAACBQpwb29sU3RhdHVzBQxQb29sU2h1dGRvd24JAAIBCQCsAgICLFB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFCnBvb2xTdGF0dXMFBmVzdFB1dAEEZW1pdAEGYW1vdW50BAdlbWl0SW52CQD8BwQFD2ZhY3RvcnlDb250cmFjdAIEZW1pdAkAzAgCBQZhbW91bnQFA25pbAUDbmlsAwkAAAIFB2VtaXRJbnYFB2VtaXRJbnYEDWVtaXRJbnZMZWdhY3kEByRtYXRjaDAFB2VtaXRJbnYDCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQVbGVnYWN5RmFjdG9yeUNvbnRyYWN0BQckbWF0Y2gwCQD8BwQFFWxlZ2FjeUZhY3RvcnlDb250cmFjdAIEZW1pdAkAzAgCBQZhbW91bnQFA25pbAUDbmlsBQR1bml0AwkAAAIFDWVtaXRJbnZMZWdhY3kFDWVtaXRJbnZMZWdhY3kFBmFtb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEPY2FsY1B1dE9uZVRva2VuBBBwYXltZW50QW1vdW50UmF3DnBheW1lbnRBc3NldElkC3VzZXJBZGRyZXNzBHR4SWQEBmlzRXZhbAkAAAIFBHR4SWQFBHVuaXQEDSR0MDIxNDg1MjE2NjMJAQ9wYXJzZVBvb2xDb25maWcBCQENZ2V0UG9vbENvbmZpZwAEC3Bvb2xBZGRyZXNzCAUNJHQwMjE0ODUyMTY2MwJfMQQKcG9vbFN0YXR1cwgFDSR0MDIxNDg1MjE2NjMCXzIECWxwQXNzZXRJZAgFDSR0MDIxNDg1MjE2NjMCXzMEDWFtb3VudEFzc2V0SWQIBQ0kdDAyMTQ4NTIxNjYzAl80BAxwcmljZUFzc2V0SWQIBQ0kdDAyMTQ4NTIxNjYzAl81BBNhbW91bnRBc3NldERlY2ltYWxzCAUNJHQwMjE0ODUyMTY2MwJfNgQScHJpY2VBc3NldERlY2ltYWxzCAUNJHQwMjE0ODUyMTY2MwJfNwQNcGF5bWVudEFtb3VudAUQcGF5bWVudEFtb3VudFJhdwQKYmFsYW5jZVJhdwMJAAACBQ5wYXltZW50QXNzZXRJZAUNYW1vdW50QXNzZXRJZAkBDWdldEFjY0JhbGFuY2UBCQEPYXNzZXRJZFRvU3RyaW5nAQUNYW1vdW50QXNzZXRJZAMJAAACBQ5wYXltZW50QXNzZXRJZAUMcHJpY2VBc3NldElkCQENZ2V0QWNjQmFsYW5jZQEJAQ9hc3NldElkVG9TdHJpbmcBBQxwcmljZUFzc2V0SWQJAQh0aHJvd0VycgECDWludmFsaWQgYXNzZXQEEGFtb3VudFRvU3VidHJhY3QDBQZpc0V2YWwAAAUNcGF5bWVudEFtb3VudAQHYmFsYW5jZQkAZQIFCmJhbGFuY2VSYXcFEGFtb3VudFRvU3VidHJhY3QEDWJhbGFuY2VCaWdJbnQJALYCAQUHYmFsYW5jZQQMc3VwcGx5QmlnSW50CQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUJbHBBc3NldElkCQCsAgIJAKwCAgIGYXNzZXQgCQDYBAEFCWxwQXNzZXRJZAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEDWRlcG9zaXRCaWdJbnQJALYCAQUNcGF5bWVudEFtb3VudAQLaXNzdWVBbW91bnQJALoCAgkAuQICBQxzdXBwbHlCaWdJbnQJALgCAgkBCnNxcnRCaWdJbnQECQC3AgIFDHNjYWxlOEJpZ0ludAkAugICCQC5AgIFDWRlcG9zaXRCaWdJbnQFDHNjYWxlOEJpZ0ludAUNYmFsYW5jZUJpZ0ludAAIAAgFBERPV04FDHNjYWxlOEJpZ0ludAUMc2NhbGU4QmlnSW50CQCgAwEFC2lzc3VlQW1vdW50AQ9jYWxjR2V0T25lVG9rZW4FCm91dEFzc2V0SWQNcGF5bWVudEFtb3VudA5wYXltZW50QXNzZXRJZAt1c2VyQWRkcmVzcwR0eElkBAZpc0V2YWwJAAACBQR0eElkBQR1bml0BA0kdDAyMjY3MTIyODQ5CQEPcGFyc2VQb29sQ29uZmlnAQkBDWdldFBvb2xDb25maWcABAtwb29sQWRkcmVzcwgFDSR0MDIyNjcxMjI4NDkCXzEECnBvb2xTdGF0dXMIBQ0kdDAyMjY3MTIyODQ5Al8yBAlscEFzc2V0SWQIBQ0kdDAyMjY3MTIyODQ5Al8zBA1hbW91bnRBc3NldElkCAUNJHQwMjI2NzEyMjg0OQJfNAQMcHJpY2VBc3NldElkCAUNJHQwMjI2NzEyMjg0OQJfNQQTYW1vdW50QXNzZXREZWNpbWFscwgFDSR0MDIyNjcxMjI4NDkCXzYEEnByaWNlQXNzZXREZWNpbWFscwgFDSR0MDIyNjcxMjI4NDkCXzcEBmNoZWNrcwkAzAgCAwkAAAIFDnBheW1lbnRBc3NldElkBQlscEFzc2V0SWQGCQACAQIQaW52YWxpZCBscCBhc3NldAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBA1iYWxhbmNlQmlnSW50AwkAAAIFCm91dEFzc2V0SWQFDWFtb3VudEFzc2V0SWQJALYCAQkBDWdldEFjY0JhbGFuY2UBCQEPYXNzZXRJZFRvU3RyaW5nAQUNYW1vdW50QXNzZXRJZAMJAAACBQpvdXRBc3NldElkBQxwcmljZUFzc2V0SWQJALYCAQkBDWdldEFjY0JhbGFuY2UBCQEPYXNzZXRJZFRvU3RyaW5nAQUMcHJpY2VBc3NldElkCQEIdGhyb3dFcnIBAg1pbnZhbGlkIGFzc2V0BAxzdXBwbHlCaWdJbnQJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQlscEFzc2V0SWQJAKwCAgkArAICAgZhc3NldCAJANgEAQUJbHBBc3NldElkAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQOcmVkZWVtZWRCaWdJbnQJALYCAQUNcGF5bWVudEFtb3VudAQGYW1vdW50CQC6AgIJALkCAgUNYmFsYW5jZUJpZ0ludAkAuAICBQxzY2FsZThCaWdJbnQJAHYGCQC4AgIFDHNjYWxlOEJpZ0ludAkAugICCQC5AgIFDnJlZGVlbWVkQmlnSW50BQxzY2FsZThCaWdJbnQFDHN1cHBseUJpZ0ludAAIBQRiaWcyAAAACAUERE9XTgUMc2NhbGU4QmlnSW50CQCgAwEFBmFtb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAAEByRtYXRjaDAJAKIIAQkBA21wawADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAR1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdAAEByRtYXRjaDAJAKIIAQkBBHBtcGsAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgELbXVzdE1hbmFnZXIBAWkEAnBkCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEByRtYXRjaDAJARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkFAnBrBgUCcGQDCQABAgUHJG1hdGNoMAIEVW5pdAMJAAACCAUBaQZjYWxsZXIFBHRoaXMGBQJwZAkAAgECC01hdGNoIGVycm9yFgFpAQpzZXRNYW5hZ2VyARdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBBVjaGVja01hbmFnZXJQdWJsaWNLZXkJANkEAQUXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkDCQAAAgUVY2hlY2tNYW5hZ2VyUHVibGljS2V5BRVjaGVja01hbmFnZXJQdWJsaWNLZXkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBBHBtcGsABRdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDmNvbmZpcm1NYW5hZ2VyAAQCcG0JAR1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdAAEBWhhc1BNAwkBCWlzRGVmaW5lZAEFAnBtBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQVoYXNQTQUFaGFzUE0EB2NoZWNrUE0DCQAAAggFAWkPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJwbQYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUHY2hlY2tQTQUHY2hlY2tQTQkAzAgCCQELU3RyaW5nRW50cnkCCQEDbXBrAAkA2AQBCQEFdmFsdWUBBQJwbQkAzAgCCQELRGVsZXRlRW50cnkBCQEEcG1wawAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQNwdXQCEXNsaXBwYWdlVG9sZXJhbmNlD3Nob3VsZEF1dG9TdGFrZQMJAGYCAAAFEXNsaXBwYWdlVG9sZXJhbmNlCQACAQIgSW52YWxpZCBzbGlwcGFnZVRvbGVyYW5jZSBwYXNzZWQEBmVzdFB1dAkBCWNvbW1vblB1dAMFAWkFEXNsaXBwYWdlVG9sZXJhbmNlBgQJZW1pdExwQW10CAUGZXN0UHV0Al8yBAlscEFzc2V0SWQIBQZlc3RQdXQCXzcEBXN0YXRlCAUGZXN0UHV0Al85BAZhbURpZmYIBQZlc3RQdXQDXzEwBAZwckRpZmYIBQZlc3RQdXQDXzExBARhbUlkCAUGZXN0UHV0A18xMgQEcHJJZAgFBmVzdFB1dANfMTMEB2VtaXRJbnYJAPwHBAUPZmFjdG9yeUNvbnRyYWN0AgRlbWl0CQDMCAIFCWVtaXRMcEFtdAUDbmlsBQNuaWwDCQAAAgUHZW1pdEludgUHZW1pdEludgQNZW1pdEludkxlZ2FjeQQHJG1hdGNoMAUHZW1pdEludgMJAAECBQckbWF0Y2gwAgdBZGRyZXNzBBVsZWdhY3lGYWN0b3J5Q29udHJhY3QFByRtYXRjaDAJAPwHBAUVbGVnYWN5RmFjdG9yeUNvbnRyYWN0AgRlbWl0CQDMCAIFCWVtaXRMcEFtdAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUNZW1pdEludkxlZ2FjeQUNZW1pdEludkxlZ2FjeQQMc2xpcHBhZ2VBSW52AwkAZgIFBmFtRGlmZgAACQD8BwQFEHNsaXBwYWdlQ29udHJhY3QCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQRhbUlkBQZhbURpZmYFA25pbAUDbmlsAwkAAAIFDHNsaXBwYWdlQUludgUMc2xpcHBhZ2VBSW52BAxzbGlwcGFnZVBJbnYDCQBmAgUGcHJEaWZmAAAJAPwHBAUQc2xpcHBhZ2VDb250cmFjdAIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHBySWQFBnByRGlmZgUDbmlsBQNuaWwDCQAAAgUMc2xpcHBhZ2VQSW52BQxzbGlwcGFnZVBJbnYECmxwVHJhbnNmZXIDBQ9zaG91bGRBdXRvU3Rha2UEC3NscFN0YWtlSW52CQD8BwQFD3N0YWtpbmdDb250cmFjdAIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUJbHBBc3NldElkBQllbWl0THBBbXQFA25pbAMJAAACBQtzbHBTdGFrZUludgULc2xwU3Rha2VJbnYFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFCWVtaXRMcEFtdAUJbHBBc3NldElkBQNuaWwJAM4IAgUFc3RhdGUFCmxwVHJhbnNmZXIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKcHV0Rm9yRnJlZQELbWF4U2xpcHBhZ2UDCQBmAgAABQttYXhTbGlwcGFnZQkAAgECFEludmFsaWQgdmFsdWUgcGFzc2VkBAZlc3RQdXQJAQljb21tb25QdXQDBQFpBQttYXhTbGlwcGFnZQcIBQZlc3RQdXQCXzkBaQEJcHV0T25lVGtuAgxtaW5PdXRBbW91bnQJYXV0b1N0YWtlBA0kdDAyNjc1NjI2OTM0CQEPcGFyc2VQb29sQ29uZmlnAQkBDWdldFBvb2xDb25maWcABAtwb29sQWRkcmVzcwgFDSR0MDI2NzU2MjY5MzQCXzEECnBvb2xTdGF0dXMIBQ0kdDAyNjc1NjI2OTM0Al8yBAlscEFzc2V0SWQIBQ0kdDAyNjc1NjI2OTM0Al8zBA1hbW91bnRBc3NldElkCAUNJHQwMjY3NTYyNjkzNAJfNAQMcHJpY2VBc3NldElkCAUNJHQwMjY3NTYyNjkzNAJfNQQTYW1vdW50QXNzZXREZWNpbWFscwgFDSR0MDI2NzU2MjY5MzQCXzYEEnByaWNlQXNzZXREZWNpbWFscwgFDSR0MDI2NzU2MjY5MzQCXzcEDWlzUHV0RGlzYWJsZWQDAwkBEGlzR2xvYmFsU2h1dGRvd24ABgkAAAIFCnBvb2xTdGF0dXMFD1Bvb2xQdXREaXNhYmxlZAYJAAACBQpwb29sU3RhdHVzBQxQb29sU2h1dGRvd24EBmNoZWNrcwkAzAgCAwkBASEBBQ1pc1B1dERpc2FibGVkBgkBCHRocm93RXJyAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABBgkBCHRocm93RXJyAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEB3BheW1lbnQJAJEDAggFAWkIcGF5bWVudHMAAAQOcGF5bWVudEFzc2V0SWQIBQdwYXltZW50B2Fzc2V0SWQEEHBheW1lbnRBbW91bnRSYXcIBQdwYXltZW50BmFtb3VudAQNcGF5bWVudEFtb3VudAUQcGF5bWVudEFtb3VudFJhdwQLdXNlckFkZHJlc3MIBQFpBmNhbGxlcgQEdHhJZAgFAWkNdHJhbnNhY3Rpb25JZAQKZW1pdEFtb3VudAQTZW1pdEFtb3VudEVzdGltYXRlZAkBD2NhbGNQdXRPbmVUb2tlbgQFEHBheW1lbnRBbW91bnRSYXcFDnBheW1lbnRBc3NldElkBQt1c2VyQWRkcmVzcwUEdHhJZAMDCQBmAgUMbWluT3V0QW1vdW50AAAJAGYCBQxtaW5PdXRBbW91bnQFE2VtaXRBbW91bnRFc3RpbWF0ZWQHCQACAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQxtaW5PdXRBbW91bnQFA25pbAIABRNlbWl0QW1vdW50RXN0aW1hdGVkBAdlbWl0SW52CQEEZW1pdAEFCmVtaXRBbW91bnQDCQAAAgUHZW1pdEludgUHZW1pdEludgQKbHBUcmFuc2ZlcgMFCWF1dG9TdGFrZQQIc3Rha2VJbnYJAPwHBAUPc3Rha2luZ0NvbnRyYWN0AgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQlscEFzc2V0SWQFCmVtaXRBbW91bnQFA25pbAMJAAACBQhzdGFrZUludgUIc3Rha2VJbnYFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFCmVtaXRBbW91bnQFCWxwQXNzZXRJZAUDbmlsCQCUCgIFCmxwVHJhbnNmZXIFCmVtaXRBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJZ2V0T25lVGtuAwpvdXRBc3NldElkDG1pbk91dEFtb3VudA11bnN0YWtlQW1vdW50BA0kdDAyODE2NzI4MzQ1CQEPcGFyc2VQb29sQ29uZmlnAQkBDWdldFBvb2xDb25maWcABAtwb29sQWRkcmVzcwgFDSR0MDI4MTY3MjgzNDUCXzEECnBvb2xTdGF0dXMIBQ0kdDAyODE2NzI4MzQ1Al8yBAlscEFzc2V0SWQIBQ0kdDAyODE2NzI4MzQ1Al8zBA1hbW91bnRBc3NldElkCAUNJHQwMjgxNjcyODM0NQJfNAQMcHJpY2VBc3NldElkCAUNJHQwMjgxNjcyODM0NQJfNQQTYW1vdW50QXNzZXREZWNpbWFscwgFDSR0MDI4MTY3MjgzNDUCXzYEEnByaWNlQXNzZXREZWNpbWFscwgFDSR0MDI4MTY3MjgzNDUCXzcEDWlzR2V0RGlzYWJsZWQDCQEQaXNHbG9iYWxTaHV0ZG93bgAGCQAAAgUKcG9vbFN0YXR1cwUMUG9vbFNodXRkb3duBAZjaGVja3MJAMwIAgMJAQEhAQUNaXNHZXREaXNhYmxlZAYJAQh0aHJvd0VycgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQYJAQh0aHJvd0VycgECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBAdwYXltZW50CQCRAwIIBQFpCHBheW1lbnRzAAAEDnBheW1lbnRBc3NldElkCAUHcGF5bWVudAdhc3NldElkBA1wYXltZW50QW1vdW50CAUHcGF5bWVudAZhbW91bnQEC3VzZXJBZGRyZXNzCAUBaQZjYWxsZXIEBHR4SWQIBQFpDXRyYW5zYWN0aW9uSWQEBmFtb3VudAQPYW1vdW50RXN0aW1hdGVkCQEPY2FsY0dldE9uZVRva2VuBQkBDHBhcnNlQXNzZXRJZAEFCm91dEFzc2V0SWQFDXBheW1lbnRBbW91bnQFDnBheW1lbnRBc3NldElkBQt1c2VyQWRkcmVzcwUEdHhJZAMDCQBmAgUMbWluT3V0QW1vdW50AAAJAGYCBQxtaW5PdXRBbW91bnQFD2Ftb3VudEVzdGltYXRlZAcJAAIBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFDG1pbk91dEFtb3VudAUDbmlsAgAFD2Ftb3VudEVzdGltYXRlZAQHYnVybkludgkA/AcEBQ9mYWN0b3J5Q29udHJhY3QCBGJ1cm4JAMwIAgUNcGF5bWVudEFtb3VudAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQ5wYXltZW50QXNzZXRJZAUNcGF5bWVudEFtb3VudAUDbmlsAwkAAAIFB2J1cm5JbnYFB2J1cm5JbnYEDWFzc2V0VHJhbnNmZXIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFBmFtb3VudAkBDHBhcnNlQXNzZXRJZAEFCm91dEFzc2V0SWQFA25pbAkAlAoCBQ1hc3NldFRyYW5zZmVyBQZhbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEDZ2V0AAQDcmVzCQEJY29tbW9uR2V0AQUBaQQJb3V0QW10QW10CAUDcmVzAl8xBAhvdXRQckFtdAgFA3JlcwJfMgQGcG10QW10CAUDcmVzAl8zBApwbXRBc3NldElkCAUDcmVzAl80BAVzdGF0ZQgFA3JlcwJfNQQUYnVybkxQQXNzZXRPbkZhY3RvcnkJAPwHBAUPZmFjdG9yeUNvbnRyYWN0AgRidXJuCQDMCAIFBnBtdEFtdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQpwbXRBc3NldElkBQZwbXRBbXQFA25pbAMJAAACBRRidXJuTFBBc3NldE9uRmFjdG9yeQUUYnVybkxQQXNzZXRPbkZhY3RvcnkFBXN0YXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCWdldE5vTGVzcwISbm9MZXNzVGhlbkFtdEFzc2V0FG5vTGVzc1RoZW5QcmljZUFzc2V0BANyZXMJAQljb21tb25HZXQBBQFpBAhvdXRBbUFtdAgFA3JlcwJfMQQIb3V0UHJBbXQIBQNyZXMCXzIEBnBtdEFtdAgFA3JlcwJfMwQKcG10QXNzZXRJZAgFA3JlcwJfNAQFc3RhdGUIBQNyZXMCXzUDCQBmAgUSbm9MZXNzVGhlbkFtdEFzc2V0BQhvdXRBbUFtdAkAAgEJAKwCAgkArAICCQCsAgICHG5vTGVzc1RoZW5BbXRBc3NldCBmYWlsZWQ6ICAJAKQDAQUIb3V0QW1BbXQCAyA8IAkApAMBBRJub0xlc3NUaGVuQW10QXNzZXQDCQBmAgUUbm9MZXNzVGhlblByaWNlQXNzZXQFCG91dFByQW10CQACAQkArAICCQCsAgIJAKwCAgIdbm9MZXNzVGhlblByaWNlQXNzZXQgZmFpbGVkOiAJAKQDAQUIb3V0UHJBbXQCAyA8IAkApAMBBRRub0xlc3NUaGVuUHJpY2VBc3NldAQUYnVybkxQQXNzZXRPbkZhY3RvcnkJAPwHBAUPZmFjdG9yeUNvbnRyYWN0AgRidXJuCQDMCAIFBnBtdEFtdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQpwbXRBc3NldElkBQZwbXRBbXQFA25pbAMJAAACBRRidXJuTFBBc3NldE9uRmFjdG9yeQUUYnVybkxQQXNzZXRPbkZhY3RvcnkFBXN0YXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDXVuc3Rha2VBbmRHZXQBBmFtb3VudAQNY2hlY2tQYXltZW50cwMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECGE5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAYDCQAAAgUNY2hlY2tQYXltZW50cwUNY2hlY2tQYXltZW50cwQDY2ZnCQENZ2V0UG9vbENvbmZpZwAECWxwQXNzZXRJZAkA2QQBCQCRAwIFA2NmZwUQaWR4UG9vbExQQXNzZXRJZAQKdW5zdGFrZUludgkA/AcEBQ9zdGFraW5nQ29udHJhY3QCB3Vuc3Rha2UJAMwIAgkA2AQBBQlscEFzc2V0SWQJAMwIAgUGYW1vdW50BQNuaWwFA25pbAMJAAACBQp1bnN0YWtlSW52BQp1bnN0YWtlSW52BANyZXMJARRlc3RpbWF0ZUdldE9wZXJhdGlvbgQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkA2AQBBQlscEFzc2V0SWQFBmFtb3VudAgFAWkGY2FsbGVyBApwb29sU3RhdHVzCQENcGFyc2VJbnRWYWx1ZQEIBQNyZXMCXzkEBXN0YXRlCAUDcmVzA18xMAQPY2hlY2tQb29sU3RhdHVzAwMJARBpc0dsb2JhbFNodXRkb3duAAYJAAACBQpwb29sU3RhdHVzBQxQb29sU2h1dGRvd24JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFCnBvb2xTdGF0dXMGAwkAAAIFD2NoZWNrUG9vbFN0YXR1cwUPY2hlY2tQb29sU3RhdHVzBBRidXJuTFBBc3NldE9uRmFjdG9yeQkA/AcEBQ9mYWN0b3J5Q29udHJhY3QCBGJ1cm4JAMwIAgUGYW1vdW50BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCWxwQXNzZXRJZAUGYW1vdW50BQNuaWwDCQAAAgUUYnVybkxQQXNzZXRPbkZhY3RvcnkFFGJ1cm5MUEFzc2V0T25GYWN0b3J5BQVzdGF0ZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQhhY3RpdmF0ZQILYW10QXNzZXRTdHINcHJpY2VBc3NldFN0cgMJAQIhPQIJAKUIAQgFAWkGY2FsbGVyCQClCAEFD2ZhY3RvcnlDb250cmFjdAkAAgECEnBlcm1pc3Npb25zIGRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQAFC2FtdEFzc2V0U3RyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJwYQAFDXByaWNlQXNzZXRTdHIFA25pbAIHc3VjY2VzcwFpARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQ1nZXRQb29sQ29uZmlnAAFpARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQdhc3NldElkCQCUCgIFA25pbAkBDWdldEFjY0JhbGFuY2UBBQdhc3NldElkAWkBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDBWFtQW10BXByQW10BWxwQW10BAZwcmljZXMJAQpjYWxjUHJpY2VzAwUFYW1BbXQFBXByQW10BQVscEFtdAkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFBnByaWNlcwAACQDMCAIJAKYDAQkAkQMCBQZwcmljZXMAAQkAzAgCCQCmAwEJAJEDAgUGcHJpY2VzAAIFA25pbAFpARR0b1gxOFdyYXBwZXJSRUFET05MWQIHb3JpZ1ZhbA1vcmlnU2NhbGVNdWx0CQCUCgIFA25pbAkApgMBCQEFdG9YMTgCBQdvcmlnVmFsBQ1vcmlnU2NhbGVNdWx0AWkBFmZyb21YMThXcmFwcGVyUkVBRE9OTFkCA3ZhbA9yZXN1bHRTY2FsZU11bHQJAJQKAgUDbmlsCQEHZnJvbVgxOAIJAKcDAQUDdmFsBQ9yZXN1bHRTY2FsZU11bHQBaQEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAghwckFtdFgxOAhhbUFtdFgxOAkAlAoCBQNuaWwJAKYDAQkBD2NhbGNQcmljZUJpZ0ludAIJAKcDAQUIcHJBbXRYMTgJAKcDAQUIYW1BbXRYMTgBaQEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJBnR4SWQ1OBFzbGlwcGFnZVRvbGVyYW5jZQxpbkFtQXNzZXRBbXQLaW5BbUFzc2V0SWQMaW5QckFzc2V0QW10C2luUHJBc3NldElkC3VzZXJBZGRyZXNzCmlzRXZhbHVhdGUGZW1pdExwCQCUCgIFA25pbAkBFGVzdGltYXRlUHV0T3BlcmF0aW9uCQUGdHhJZDU4BRFzbGlwcGFnZVRvbGVyYW5jZQUMaW5BbUFzc2V0QW10BQtpbkFtQXNzZXRJZAUMaW5QckFzc2V0QW10BQtpblByQXNzZXRJZAULdXNlckFkZHJlc3MFCmlzRXZhbHVhdGUFBmVtaXRMcAFpASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQGdHhJZDU4CnBtdEFzc2V0SWQIcG10THBBbXQLdXNlckFkZHJlc3MEA3JlcwkBFGVzdGltYXRlR2V0T3BlcmF0aW9uBAUGdHhJZDU4BQpwbXRBc3NldElkBQhwbXRMcEFtdAkBEUBleHRyTmF0aXZlKDEwNjIpAQULdXNlckFkZHJlc3MJAJQKAgUDbmlsCQCcCgoIBQNyZXMCXzEIBQNyZXMCXzIIBQNyZXMCXzMIBQNyZXMCXzQIBQNyZXMCXzUIBQNyZXMCXzYIBQNyZXMCXzcJAKYDAQgFA3JlcwJfOAgFA3JlcwJfOQgFA3JlcwNfMTABaQENc3RhdHNSRUFET05MWQAEA2NmZwkBDWdldFBvb2xDb25maWcABAlscEFzc2V0SWQJANkEAQkAkQMCBQNjZmcFEGlkeFBvb2xMUEFzc2V0SWQECmFtdEFzc2V0SWQJAJEDAgUDY2ZnBQ1pZHhBbXRBc3NldElkBAxwcmljZUFzc2V0SWQJAJEDAgUDY2ZnBQ9pZHhQcmljZUFzc2V0SWQEC2lBbXRBc3NldElkCQCRAwIFA2NmZwUOaWR4SUFtdEFzc2V0SWQEDWlQcmljZUFzc2V0SWQJAJEDAgUDY2ZnBRBpZHhJUHJpY2VBc3NldElkBAthbXRBc3NldERjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUOaWR4QW10QXNzZXREY20EDXByaWNlQXNzZXREY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFEGlkeFByaWNlQXNzZXREY20EDXBvb2xMUEJhbGFuY2UICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUJbHBBc3NldElkCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFCWxwQXNzZXRJZAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEEmFjY0FtdEFzc2V0QmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQphbXRBc3NldElkBBRhY2NQcmljZUFzc2V0QmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQxwcmljZUFzc2V0SWQECnByaWNlc0xpc3QDCQAAAgUNcG9vbExQQmFsYW5jZQAACQDMCAIFCnplcm9CaWdJbnQJAMwIAgUKemVyb0JpZ0ludAkAzAgCBQp6ZXJvQmlnSW50BQNuaWwJAQpjYWxjUHJpY2VzAwUSYWNjQW10QXNzZXRCYWxhbmNlBRRhY2NQcmljZUFzc2V0QmFsYW5jZQUNcG9vbExQQmFsYW5jZQQIY3VyUHJpY2UAAAQPbHBBbXRBc3NldFNoYXJlCQEHZnJvbVgxOAIJAJEDAgUKcHJpY2VzTGlzdAABBQZzY2FsZTgEEWxwUHJpY2VBc3NldFNoYXJlCQEHZnJvbVgxOAIJAJEDAgUKcHJpY2VzTGlzdAACBQZzY2FsZTgECnBvb2xXZWlnaHQJAQV2YWx1ZQEJAJoIAgUPZmFjdG9yeUNvbnRyYWN0CQENa2V5UG9vbFdlaWdodAEJAKUIAQUEdGhpcwkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFEmFjY0FtdEFzc2V0QmFsYW5jZQkAzAgCCQCkAwEFFGFjY1ByaWNlQXNzZXRCYWxhbmNlCQDMCAIJAKQDAQUNcG9vbExQQmFsYW5jZQkAzAgCCQCkAwEFCGN1clByaWNlCQDMCAIJAKQDAQUPbHBBbXRBc3NldFNoYXJlCQDMCAIJAKQDAQURbHBQcmljZUFzc2V0U2hhcmUJAMwIAgkApAMBBQpwb29sV2VpZ2h0BQNuaWwFA1NFUAFpASBldmFsdWF0ZVB1dEJ5QW1vdW50QXNzZXRSRUFET05MWQEMaW5BbUFzc2V0QW10BANjZmcJAQ1nZXRQb29sQ29uZmlnAAQJbHBBc3NldElkCQDZBAEJAJEDAgUDY2ZnBRBpZHhQb29sTFBBc3NldElkBAxhbUFzc2V0SWRTdHIJAJEDAgUDY2ZnBQ1pZHhBbXRBc3NldElkBAlhbUFzc2V0SWQJANkEAQUMYW1Bc3NldElkU3RyBAxwckFzc2V0SWRTdHIJAJEDAgUDY2ZnBQ9pZHhQcmljZUFzc2V0SWQECXByQXNzZXRJZAkA2QQBBQxwckFzc2V0SWRTdHIEC2FtdEFzc2V0RGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQ5pZHhBbXRBc3NldERjbQQNcHJpY2VBc3NldERjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUQaWR4UHJpY2VBc3NldERjbQQKcG9vbFN0YXR1cwkAkQMCBQNjZmcFDWlkeFBvb2xTdGF0dXMEDXBvb2xMUEJhbGFuY2UICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUJbHBBc3NldElkCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFCWxwQXNzZXRJZAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEEmFjY0FtdEFzc2V0QmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQxhbUFzc2V0SWRTdHIEFGFjY1ByaWNlQXNzZXRCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFDHByQXNzZXRJZFN0cgQOYW10QXNzZXRBbXRYMTgJAQV0b1gxOAIFEmFjY0FtdEFzc2V0QmFsYW5jZQULYW10QXNzZXREY20EEHByaWNlQXNzZXRBbXRYMTgJAQV0b1gxOAIFFGFjY1ByaWNlQXNzZXRCYWxhbmNlBQ1wcmljZUFzc2V0RGNtBAtjdXJQcmljZVgxOAMJAAACBQ1wb29sTFBCYWxhbmNlAAAFCnplcm9CaWdJbnQJAQ9jYWxjUHJpY2VCaWdJbnQCBRBwcmljZUFzc2V0QW10WDE4BQ5hbXRBc3NldEFtdFgxOAQPaW5BbUFzc2V0QW10WDE4CQEFdG9YMTgCBQxpbkFtQXNzZXRBbXQFC2FtdEFzc2V0RGNtBA9pblByQXNzZXRBbXRYMTgJALwCAwUPaW5BbUFzc2V0QW10WDE4BQtjdXJQcmljZVgxOAUHc2NhbGUxOAQMaW5QckFzc2V0QW10CQEHZnJvbVgxOAIFD2luUHJBc3NldEFtdFgxOAUNcHJpY2VBc3NldERjbQQGZXN0UHV0CQEUZXN0aW1hdGVQdXRPcGVyYXRpb24JAgAAoMIeBQxpbkFtQXNzZXRBbXQFCWFtQXNzZXRJZAUMaW5QckFzc2V0QW10BQlwckFzc2V0SWQCAAYHBAljYWxjTHBBbXQIBQZlc3RQdXQCXzEEDGN1clByaWNlQ2FsYwgFBmVzdFB1dAJfMwQJYW1CYWxhbmNlCAUGZXN0UHV0Al80BAlwckJhbGFuY2UIBQZlc3RQdXQCXzUECmxwRW1pc3Npb24IBQZlc3RQdXQCXzYJAJQKAgUDbmlsCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFCWNhbGNMcEFtdAkAzAgCCQCkAwEJAQdmcm9tWDE4AgULY3VyUHJpY2VYMTgFBnNjYWxlOAkAzAgCCQCkAwEFCWFtQmFsYW5jZQkAzAgCCQCkAwEFCXByQmFsYW5jZQkAzAgCCQCkAwEFCmxwRW1pc3Npb24JAMwIAgUKcG9vbFN0YXR1cwkAzAgCCQCkAwEFDGluQW1Bc3NldEFtdAkAzAgCCQCkAwEFDGluUHJBc3NldEFtdAUDbmlsBQNTRVABaQEfZXZhbHVhdGVQdXRCeVByaWNlQXNzZXRSRUFET05MWQEMaW5QckFzc2V0QW10BANjZmcJAQ1nZXRQb29sQ29uZmlnAAQJbHBBc3NldElkCQDZBAEJAJEDAgUDY2ZnBRBpZHhQb29sTFBBc3NldElkBAxhbUFzc2V0SWRTdHIJAJEDAgUDY2ZnBQ1pZHhBbXRBc3NldElkBAlhbUFzc2V0SWQJANkEAQUMYW1Bc3NldElkU3RyBAxwckFzc2V0SWRTdHIJAJEDAgUDY2ZnBQ9pZHhQcmljZUFzc2V0SWQECXByQXNzZXRJZAkA2QQBBQxwckFzc2V0SWRTdHIEC2FtdEFzc2V0RGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQ5pZHhBbXRBc3NldERjbQQNcHJpY2VBc3NldERjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUQaWR4UHJpY2VBc3NldERjbQQKcG9vbFN0YXR1cwkAkQMCBQNjZmcFDWlkeFBvb2xTdGF0dXMEDXBvb2xMUEJhbGFuY2UICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUJbHBBc3NldElkCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFCWxwQXNzZXRJZAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEDGFtQmFsYW5jZVJhdwkBDWdldEFjY0JhbGFuY2UBBQxhbUFzc2V0SWRTdHIEDHByQmFsYW5jZVJhdwkBDWdldEFjY0JhbGFuY2UBBQxwckFzc2V0SWRTdHIED2FtQmFsYW5jZVJhd1gxOAkBBXRvWDE4AgUMYW1CYWxhbmNlUmF3BQthbXRBc3NldERjbQQPcHJCYWxhbmNlUmF3WDE4CQEFdG9YMTgCBQxwckJhbGFuY2VSYXcFDXByaWNlQXNzZXREY20EC2N1clByaWNlWDE4AwkAAAIFDXBvb2xMUEJhbGFuY2UAAAUKemVyb0JpZ0ludAkBD2NhbGNQcmljZUJpZ0ludAIFD3ByQmFsYW5jZVJhd1gxOAUPYW1CYWxhbmNlUmF3WDE4BA9pblByQXNzZXRBbXRYMTgJAQV0b1gxOAIFDGluUHJBc3NldEFtdAUNcHJpY2VBc3NldERjbQQPaW5BbUFzc2V0QW10WDE4CQC8AgMFD2luUHJBc3NldEFtdFgxOAUHc2NhbGUxOAULY3VyUHJpY2VYMTgEDGluQW1Bc3NldEFtdAkBB2Zyb21YMTgCBQ9pbkFtQXNzZXRBbXRYMTgFC2FtdEFzc2V0RGNtBAZlc3RQdXQJARRlc3RpbWF0ZVB1dE9wZXJhdGlvbgkCAACgwh4FDGluQW1Bc3NldEFtdAUJYW1Bc3NldElkBQxpblByQXNzZXRBbXQFCXByQXNzZXRJZAIABgcECWNhbGNMcEFtdAgFBmVzdFB1dAJfMQQMY3VyUHJpY2VDYWxjCAUGZXN0UHV0Al8zBAlhbUJhbGFuY2UIBQZlc3RQdXQCXzQECXByQmFsYW5jZQgFBmVzdFB1dAJfNQQKbHBFbWlzc2lvbggFBmVzdFB1dAJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUJY2FsY0xwQW10CQDMCAIJAKQDAQkBB2Zyb21YMTgCBQtjdXJQcmljZVgxOAUGc2NhbGU4CQDMCAIJAKQDAQUJYW1CYWxhbmNlCQDMCAIJAKQDAQUJcHJCYWxhbmNlCQDMCAIJAKQDAQUKbHBFbWlzc2lvbgkAzAgCBQpwb29sU3RhdHVzCQDMCAIJAKQDAQUMaW5BbUFzc2V0QW10CQDMCAIJAKQDAQUMaW5QckFzc2V0QW10BQNuaWwFA1NFUAFpARNldmFsdWF0ZUdldFJFQURPTkxZAhBwYXltZW50THBBc3NldElkDHBheW1lbnRMcEFtdAQDcmVzCQEUZXN0aW1hdGVHZXRPcGVyYXRpb24EAgAFEHBheW1lbnRMcEFzc2V0SWQFDHBheW1lbnRMcEFtdAUEdGhpcwQIb3V0QW1BbXQIBQNyZXMCXzEECG91dFByQW10CAUDcmVzAl8yBAlhbUJhbGFuY2UIBQNyZXMCXzUECXByQmFsYW5jZQgFA3JlcwJfNgQKbHBFbWlzc2lvbggFA3JlcwJfNwQIY3VyUHJpY2UIBQNyZXMCXzgECnBvb2xTdGF0dXMJAQ1wYXJzZUludFZhbHVlAQgFA3JlcwJfOQkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFCG91dEFtQW10CQDMCAIJAKQDAQUIb3V0UHJBbXQJAMwIAgkApAMBBQlhbUJhbGFuY2UJAMwIAgkApAMBBQlwckJhbGFuY2UJAMwIAgkApAMBBQpscEVtaXNzaW9uCQDMCAIJAKYDAQUIY3VyUHJpY2UJAMwIAgkApAMBBQpwb29sU3RhdHVzBQNuaWwFA1NFUAECdHgBBnZlcmlmeQAED3RhcmdldFB1YmxpY0tleQQHJG1hdGNoMAkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwBQJwawMJAAECBQckbWF0Y2gwAgRVbml0CAUCdHgPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEByRtYXRjaDAFAnR4AwkAAQIFByRtYXRjaDACBU9yZGVyBAVvcmRlcgUHJG1hdGNoMAQKbWF0Y2hlclB1YgkBE2dldE1hdGNoZXJQdWJPckZhaWwABApvcmRlclZhbGlkCQEbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkAQUFb3JkZXIEC3NlbmRlclZhbGlkCQD0AwMIBQVvcmRlcglib2R5Qnl0ZXMJAJEDAggFBW9yZGVyBnByb29mcwAACAUFb3JkZXIPc2VuZGVyUHVibGljS2V5BAxtYXRjaGVyVmFsaWQJAPQDAwgFBW9yZGVyCWJvZHlCeXRlcwkAkQMCCAUFb3JkZXIGcHJvb2ZzAAEFCm1hdGNoZXJQdWIDAwMFCm9yZGVyVmFsaWQFC3NlbmRlclZhbGlkBwUMbWF0Y2hlclZhbGlkBwYJAQ90aHJvd09yZGVyRXJyb3IDBQpvcmRlclZhbGlkBQtzZW5kZXJWYWxpZAUMbWF0Y2hlclZhbGlkAwkAAQIFByRtYXRjaDACFFNldFNjcmlwdFRyYW5zYWN0aW9uBAFzBQckbWF0Y2gwBAduZXdIYXNoCQD2AwEJAQV2YWx1ZQEIBQFzBnNjcmlwdAQLYWxsb3dlZEhhc2gJANsEAQkBBXZhbHVlAQkAnQgCBQ9mYWN0b3J5Q29udHJhY3QJARZrZXlBbGxvd2VkTHBTY3JpcHRIYXNoAAQLY3VycmVudEhhc2gJAPEHAQUEdGhpcwMDCQAAAgULYWxsb3dlZEhhc2gFB25ld0hhc2gJAQIhPQIFC2N1cnJlbnRIYXNoBQduZXdIYXNoBwYJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFD3RhcmdldFB1YmxpY0tleQkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUPdGFyZ2V0UHVibGljS2V5KU/DiA==", "chainId": 84, "height": 2269238, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3KAPA12t3zNH8m2f7eE6dqWUSLBPTvx5o2xEaSMZYzkt Next: 3sHjbRCnxfoyff4hm4u9EKjkVNbqmsmAXu2za7EfZFaK Diff:
OldNewDifferences
1111
1212 let e = toBigInt(0)
1313
14-let f = "__"
14+let f = toBigInt(0)
1515
16-let g = 1
16+let g = toBigInt(1)
1717
18-let h = 2
18+let h = toBigInt(1)
1919
20-let i = 3
20+let i = "WAVES"
2121
22-let j = 4
22+let j = "__"
2323
2424 let k = 1
2525
2929
3030 let n = 4
3131
32-let o = 5
32+let o = 1
3333
34-let p = 6
34+let p = 2
3535
36-let q = 7
36+let q = 3
3737
38-let r = 8
38+let r = 4
3939
40-let s = 9
40+let s = 5
4141
42-let t = 10
42+let t = 6
4343
44-let u = 1
44+let u = 7
4545
46-let v = 2
46+let v = 8
4747
48-let w = 3
48+let w = 9
4949
50-let x = 1
50+let x = 10
5151
52-let y = 7
52+let y = 1
5353
54-func z (A,B) = fraction(toBigInt(A), d, toBigInt(B))
54+let z = 2
55+
56+let A = 3
57+
58+let B = 1
59+
60+let C = 7
61+
62+func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
5563
5664
57-func C (D,E) = toInt(fraction(D, toBigInt(E), d))
65+func G (H,I) = toInt(fraction(H, toBigInt(I), d))
5866
5967
60-func F (G,H,I) = fraction(G, H, I)
68+func J (K,L,M) = fraction(K, L, M)
6169
6270
63-func J (D) = if ((e > D))
64- then -(D)
65- else D
71+func N (H) = if ((e > H))
72+ then -(H)
73+ else H
6674
6775
68-func K () = "%s__factoryContract"
76+func O () = "%s__factoryContract"
6977
7078
71-func L () = "%s__managerPublicKey"
79+func P () = "%s__managerPublicKey"
7280
7381
74-func M () = "%s__pendingManagerPublicKey"
82+func Q () = "%s__pendingManagerPublicKey"
7583
7684
77-func N () = "%s%s__price__last"
85+func R () = "%s%s__price__last"
7886
7987
80-func O (P,Q) = makeString(["%s%s%d%d__price__history", toString(P), toString(Q)], f)
88+func S (T,U) = makeString(["%s%s%d%d__price__history", toString(T), toString(U)], j)
8189
8290
83-func R (S,T) = ((("%s%s%s__P__" + S) + "__") + T)
91+func V (W,X) = ((("%s%s%s__P__" + W) + "__") + X)
8492
8593
86-func U (S,T) = ((("%s%s%s__G__" + S) + "__") + T)
94+func Y (W,X) = ((("%s%s%s__G__" + W) + "__") + X)
8795
8896
89-func V () = "%s__amountAsset"
97+func Z () = "%s__amountAsset"
9098
9199
92-func W () = "%s__priceAsset"
100+func aa () = "%s__priceAsset"
93101
94102
95-func X () = "%s__factoryConfig"
103+func ab () = "%s__factoryConfig"
96104
97105
98-func Y () = "%s%s__matcher__publicKey"
106+func ac () = "%s%s__matcher__publicKey"
99107
100108
101-func Z (aa) = (("%s%s%s__" + aa) + "__mappings__poolContract2LpAsset")
109+func ad (ae) = (("%s%s%s__" + ae) + "__mappings__poolContract2LpAsset")
102110
103111
104-func ab (ac,ad) = (((("%d%d%s__" + ac) + "__") + ad) + "__config")
112+func af (ag,ah) = (((("%d%d%s__" + ag) + "__") + ah) + "__config")
105113
106114
107-func ae (af) = ("%s%s%s__mappings__baseAsset2internalId__" + af)
115+func ai (aj) = ("%s%s%s__mappings__baseAsset2internalId__" + aj)
108116
109117
110-func ag () = "%s__shutdown"
118+func ak () = "%s__shutdown"
111119
112120
113-func ah (ai) = ("%s%s__poolWeight__" + ai)
121+func al (am) = ("%s%s__poolWeight__" + am)
114122
115123
116-func aj () = "%s__allowedLpScriptHash"
124+func an () = "%s__allowedLpScriptHash"
117125
118126
119-func ak (al,am,an) = throw(((((("order validation failed: orderValid=" + toString(al)) + " senderValid=") + toString(am)) + " matcherValid=") + toString(an)))
127+func ao (ap,aq,ar) = throw(((((("order validation failed: orderValid=" + toString(ap)) + " senderValid=") + toString(aq)) + " matcherValid=") + toString(ar)))
120128
121129
122-func ao (ap,aq) = valueOrErrorMessage(getString(ap, aq), makeString(["mandatory ", toString(ap), ".", aq, " is not defined"], ""))
130+func as (at,au) = valueOrErrorMessage(getString(at, au), makeString(["mandatory ", toString(at), ".", au, " is not defined"], ""))
123131
124132
125-func ar (ap,aq) = valueOrErrorMessage(getInteger(ap, aq), makeString(["mandatory ", toString(ap), ".", aq, " is not defined"], ""))
133+func av (at,au) = valueOrErrorMessage(getInteger(at, au), makeString(["mandatory ", toString(at), ".", au, " is not defined"], ""))
126134
127135
128-let as = addressFromStringValue(ao(this, K()))
129-
130-func at () = valueOrElse(getBoolean(as, ag()), false)
136+func aw (ax) = throw(makeString(["lp.ride:", ax], " "))
131137
132138
133-func au () = fromBase58String(ao(as, Y()))
139+let ay = addressFromStringValue(as(this, O()))
140+
141+func az () = valueOrElse(getBoolean(ay, ak()), false)
134142
135143
136-func av () = {
137- let aw = ao(this, V())
138- let ax = ao(this, W())
139- let ad = ar(as, ae(ax))
140- let ac = ar(as, ae(aw))
141- split(ao(as, ab(toString(ac), toString(ad))), f)
144+func aA () = fromBase58String(as(ay, ac()))
145+
146+
147+func aB () = {
148+ let aC = as(this, Z())
149+ let aD = as(this, aa())
150+ let ah = av(ay, ai(aD))
151+ let ag = av(ay, ai(aC))
152+ split(as(ay, af(toString(ag), toString(ah))), j)
142153 }
143154
144155
145-func ay () = split(ao(as, X()), f)
156+func aE (aF) = if ((aF == i))
157+ then unit
158+ else fromBase58String(aF)
146159
147160
148-func az (aA,aB,aC,aD,aE,aF,aG,aH,aI,aJ) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aA), toString(aB), toString(aC), toString(aD), toString(aE), toString(aF), toString(aG), toString(aH), toString(aI), toString(aJ)], f)
161+func aG (aF) = if ((aF == unit))
162+ then i
163+ else toBase58String(value(aF))
149164
150165
151-func aK (aL,aM,aN,aD,aG,aH) = makeString(["%d%d%d%d%d%d", toString(aL), toString(aM), toString(aN), toString(aD), toString(aG), toString(aH)], f)
166+func aH (aI) = $Tuple7(addressFromStringValue(aI[o]), parseIntValue(aI[p]), fromBase58String(aI[q]), aE(aI[r]), aE(aI[s]), parseIntValue(aI[t]), parseIntValue(aI[u]))
152167
153168
154-func aO (aP) = if ((aP == "WAVES"))
155- then wavesBalance(this).available
156- else assetBalance(this, fromBase58String(aP))
169+func aJ () = split(as(ay, ab()), j)
157170
158171
159-func aQ (aR,aS) = fraction(aR, d, aS)
172+let aK = valueOrErrorMessage(addressFromString(aJ()[B]), "incorrect staking address")
173+
174+let aL = valueOrErrorMessage(addressFromString(aJ()[C]), "incorrect staking address")
175+
176+func aM (aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU), toString(aV), toString(aW)], j)
160177
161178
162-func aT (aU,aV,aW,aX) = {
163- let aY = z(aW, aU)
164- let aZ = z(aX, aV)
165- aQ(aZ, aY)
179+func aX (aY,aZ,ba,aQ,aT,aU) = makeString(["%d%d%d%d%d%d", toString(aY), toString(aZ), toString(ba), toString(aQ), toString(aT), toString(aU)], j)
180+
181+
182+func bb (bc) = if ((bc == "WAVES"))
183+ then wavesBalance(this).available
184+ else assetBalance(this, fromBase58String(bc))
185+
186+
187+func bd (be,bf) = fraction(be, d, bf)
188+
189+
190+func bg (bh,bi,bj,bk) = {
191+ let bl = D(bj, bh)
192+ let bm = D(bk, bi)
193+ bd(bm, bl)
166194 }
167195
168196
169-func ba (aW,aX,bb) = {
170- let bc = av()
171- let bd = parseIntValue(bc[p])
172- let be = parseIntValue(bc[q])
173- let bf = aT(bd, be, aW, aX)
174- let aS = z(aW, bd)
175- let aR = z(aX, be)
176- let bg = z(bb, b)
177- let bh = aQ(aS, bg)
178- let bi = aQ(aR, bg)
179-[bf, bh, bi]
197+func bn (bj,bk,bo) = {
198+ let bp = aB()
199+ let bq = parseIntValue(bp[t])
200+ let br = parseIntValue(bp[u])
201+ let bs = bg(bq, br, bj, bk)
202+ let bf = D(bj, bq)
203+ let be = D(bk, br)
204+ let bt = D(bo, b)
205+ let bu = bd(bf, bt)
206+ let bv = bd(be, bt)
207+[bs, bu, bv]
180208 }
181209
182210
183-func bj (aW,aX,bb) = {
184- let bk = ba(aW, aX, bb)
185-[C(bk[0], b), C(bk[1], b), C(bk[2], b)]
211+func bw (bj,bk,bo) = {
212+ let bx = bn(bj, bk, bo)
213+[G(bx[0], b), G(bx[1], b), G(bx[2], b)]
186214 }
187215
188216
189-func bl (bm,bn,bo,S) = {
190- let bc = av()
191- let bp = bc[m]
192- let bq = bc[n]
193- let br = bc[o]
194- let aU = parseIntValue(bc[p])
195- let aV = parseIntValue(bc[q])
196- let bs = bc[l]
197- let bt = valueOrErrorMessage(assetInfo(fromBase58String(bp)), (("Asset " + bp) + " doesn't exist")).quantity
198- if ((bp != bn))
217+func by (bz,bA,bB,W) = {
218+ let bp = aB()
219+ let bC = bp[q]
220+ let bD = bp[r]
221+ let bE = bp[s]
222+ let bh = parseIntValue(bp[t])
223+ let bi = parseIntValue(bp[u])
224+ let bF = bp[p]
225+ let bG = valueOrErrorMessage(assetInfo(fromBase58String(bC)), (("Asset " + bC) + " doesn't exist")).quantity
226+ if ((bC != bA))
199227 then throw("Invalid asset passed.")
200228 else {
201- let bu = aO(bq)
202- let bv = z(bu, aU)
203- let bw = aO(br)
204- let bx = z(bw, aV)
205- let by = aQ(bx, bv)
206- let bz = C(by, b)
207- let bA = z(bo, b)
208- let bB = z(bt, b)
209- let bC = fraction(bv, bA, bB)
210- let bD = fraction(bx, bA, bB)
211- let bE = C(bC, aU)
212- let bF = C(bD, aV)
213- let bG = if ((bm == ""))
229+ let bH = bb(bD)
230+ let bI = D(bH, bh)
231+ let bJ = bb(bE)
232+ let bK = D(bJ, bi)
233+ let bL = bd(bK, bI)
234+ let bM = G(bL, b)
235+ let bN = D(bB, b)
236+ let bO = D(bG, b)
237+ let bP = fraction(bI, bN, bO)
238+ let bQ = fraction(bK, bN, bO)
239+ let bR = G(bP, bh)
240+ let bS = G(bQ, bi)
241+ let bT = if ((bz == ""))
214242 then nil
215- else [ScriptTransfer(S, bE, if ((bq == "WAVES"))
243+ else [ScriptTransfer(W, bR, if ((bD == "WAVES"))
216244 then unit
217- else fromBase58String(bq)), ScriptTransfer(S, bF, if ((br == "WAVES"))
245+ else fromBase58String(bD)), ScriptTransfer(W, bS, if ((bE == "WAVES"))
218246 then unit
219- else fromBase58String(br)), StringEntry(U(toString(S), bm), aK(bE, bF, bo, bz, height, lastBlock.timestamp)), IntegerEntry(N(), bz), IntegerEntry(O(height, lastBlock.timestamp), bz)]
220- $Tuple10(bE, bF, bq, br, bu, bw, bt, by, bs, bG)
247+ else fromBase58String(bE)), StringEntry(Y(toString(W), bz), aX(bR, bS, bB, bM, height, lastBlock.timestamp)), IntegerEntry(R(), bM), IntegerEntry(S(height, lastBlock.timestamp), bM)]
248+ $Tuple10(bR, bS, bD, bE, bH, bJ, bG, bL, bF, bT)
221249 }
222250 }
223251
224252
225-func bH (bm,bI,bJ,bK,bL,bM,S,bN,bO) = {
226- let bc = av()
227- let bp = fromBase58String(bc[m])
228- let bP = bc[n]
229- let bQ = bc[o]
230- let bR = bc[r]
231- let bS = bc[s]
232- let bd = parseIntValue(bc[p])
233- let be = parseIntValue(bc[q])
234- let bs = bc[l]
235- let bt = valueOrErrorMessage(assetInfo(bp), (("Asset " + toBase58String(bp)) + " doesn't exist")).quantity
236- let bT = toBase58String(valueOrElse(bK, fromBase58String("WAVES")))
237- let bU = toBase58String(valueOrElse(bM, fromBase58String("WAVES")))
238- if (if ((bP != bT))
253+func bU (bz,bV,bW,bX,bY,bZ,W,ca,cb) = {
254+ let bp = aB()
255+ let bC = fromBase58String(bp[q])
256+ let cc = bp[r]
257+ let cd = bp[s]
258+ let ce = bp[v]
259+ let cf = bp[w]
260+ let bq = parseIntValue(bp[t])
261+ let br = parseIntValue(bp[u])
262+ let bF = bp[p]
263+ let bG = valueOrErrorMessage(assetInfo(bC), (("Asset " + toBase58String(bC)) + " doesn't exist")).quantity
264+ let cg = toBase58String(valueOrElse(bX, fromBase58String("WAVES")))
265+ let ch = toBase58String(valueOrElse(bZ, fromBase58String("WAVES")))
266+ if (if ((cc != cg))
239267 then true
240- else (bQ != bU))
268+ else (cd != ch))
241269 then throw("Invalid amt or price asset passed.")
242270 else {
243- let bu = if (bN)
244- then aO(bP)
245- else (aO(bP) - bJ)
246- let bw = if (bN)
247- then aO(bQ)
248- else (aO(bQ) - bL)
249- let bV = z(bJ, bd)
250- let bW = z(bL, be)
251- let bX = aQ(bW, bV)
252- let bv = z(bu, bd)
253- let bx = z(bw, be)
254- let bY = if ((bt == 0))
271+ let bH = if (ca)
272+ then bb(cc)
273+ else (bb(cc) - bW)
274+ let bJ = if (ca)
275+ then bb(cd)
276+ else (bb(cd) - bY)
277+ let ci = D(bW, bq)
278+ let cj = D(bY, br)
279+ let ck = bd(cj, ci)
280+ let bI = D(bH, bq)
281+ let bK = D(bJ, br)
282+ let cl = if ((bG == 0))
255283 then {
256- let by = e
257- let bZ = e
258- let bg = pow((bV * bW), 0, toBigInt(5), 1, 0, DOWN)
259- $Tuple5(C(bg, b), C(bV, bd), C(bW, be), aQ((bx + bW), (bv + bV)), bZ)
284+ let bL = e
285+ let cm = e
286+ let bt = pow((ci * cj), 0, toBigInt(5), 1, 0, DOWN)
287+ $Tuple5(G(bt, b), G(ci, bq), G(cj, br), bd((bK + cj), (bI + ci)), cm)
260288 }
261289 else {
262- let by = aQ(bx, bv)
263- let bZ = fraction(J((by - bX)), d, by)
264- let ca = z(bI, b)
265- if (if ((by != e))
266- then (bZ > ca)
290+ let bL = bd(bK, bI)
291+ let cm = fraction(N((bL - ck)), d, bL)
292+ let cn = D(bV, b)
293+ if (if ((bL != e))
294+ then (cm > cn)
267295 else false)
268- then throw(((("Price slippage " + toString(bZ)) + " exceeded the passed limit of ") + toString(ca)))
296+ then throw(((("Price slippage " + toString(cm)) + " exceeded the passed limit of ") + toString(cn)))
269297 else {
270- let bB = z(bt, b)
271- let cb = fraction(bV, by, d)
272- let cc = fraction(bW, d, by)
273- let cd = if ((cb > bW))
274- then $Tuple2(cc, bW)
275- else $Tuple2(bV, cb)
276- let ce = cd._1
277- let cf = cd._2
278- let bg = fraction(bB, cf, bx)
279- $Tuple5(C(bg, b), C(ce, bd), C(cf, be), by, bZ)
298+ let bO = D(bG, b)
299+ let co = fraction(ci, bL, d)
300+ let cp = fraction(cj, d, bL)
301+ let cq = if ((co > cj))
302+ then $Tuple2(cp, cj)
303+ else $Tuple2(ci, co)
304+ let cr = cq._1
305+ let cs = cq._2
306+ let bt = fraction(bO, cs, bK)
307+ $Tuple5(G(bt, b), G(cr, bq), G(cs, br), bL, cm)
280308 }
281309 }
282- let cg = bY._1
283- let ch = bY._2
284- let ci = bY._3
285- let bz = C(bY._4, b)
286- let cj = C(bY._5, b)
287- if ((0 >= cg))
310+ let ct = cl._1
311+ let cu = cl._2
312+ let cv = cl._3
313+ let bM = G(cl._4, b)
314+ let cw = G(cl._5, b)
315+ if ((0 >= ct))
288316 then throw("Invalid calculations. LP calculated is less than zero.")
289317 else {
290- let ck = if (!(bO))
318+ let cx = if (!(cb))
291319 then 0
292- else cg
293- let cl = (bJ - ch)
294- let cm = (bL - ci)
295- let cn = [IntegerEntry(N(), bz), IntegerEntry(O(height, lastBlock.timestamp), bz), StringEntry(R(S, bm), az(ch, ci, ck, bz, bI, cj, height, lastBlock.timestamp, cl, cm))]
296- $Tuple13(cg, ck, bz, bu, bw, bt, bp, bs, cn, cl, cm, bK, bM)
320+ else ct
321+ let cy = (bW - cu)
322+ let cz = (bY - cv)
323+ let cA = [IntegerEntry(R(), bM), IntegerEntry(S(height, lastBlock.timestamp), bM), StringEntry(V(W, bz), aM(cu, cv, cx, bM, bV, cw, height, lastBlock.timestamp, cy, cz))]
324+ $Tuple13(ct, cx, bM, bH, bJ, bG, bC, bF, cA, cy, cz, bX, bZ)
297325 }
298326 }
299327 }
300328
301329
302-func co (cp) = {
303- let bc = av()
304- let cq = bc[n]
305- let cr = bc[o]
306- let bs = parseIntValue(bc[l])
307- let bd = parseIntValue(bc[p])
308- let be = parseIntValue(bc[q])
309- let cs = aO(cq)
310- let ct = aO(cr)
311- let by = if ((cp.orderType == Buy))
312- then aT(bd, be, (cs + cp.amount), ct)
313- else aT(bd, be, (cs - cp.amount), ct)
314- let bz = C(by, b)
315- if (if (if (at())
330+func cB (cC) = {
331+ let bp = aB()
332+ let cD = bp[r]
333+ let cE = bp[s]
334+ let bF = parseIntValue(bp[p])
335+ let bq = parseIntValue(bp[t])
336+ let br = parseIntValue(bp[u])
337+ let cF = bb(cD)
338+ let cG = bb(cE)
339+ let bL = if ((cC.orderType == Buy))
340+ then bg(bq, br, (cF + cC.amount), cG)
341+ else bg(bq, br, (cF - cC.amount), cG)
342+ let bM = G(bL, b)
343+ if (if (if (az())
316344 then true
317- else (bs == i))
345+ else (bF == m))
318346 then true
319- else (bs == j))
347+ else (bF == n))
320348 then throw("Exchange operations disabled")
321349 else {
322- let cu = cp.assetPair.amountAsset
323- let cv = if ((cu == unit))
350+ let cH = cC.assetPair.amountAsset
351+ let cI = if ((cH == unit))
324352 then "WAVES"
325- else toBase58String(value(cu))
326- let cw = cp.assetPair.priceAsset
327- let cx = if ((cw == unit))
353+ else toBase58String(value(cH))
354+ let cJ = cC.assetPair.priceAsset
355+ let cK = if ((cJ == unit))
328356 then "WAVES"
329- else toBase58String(value(cw))
330- if (if ((cv != cq))
357+ else toBase58String(value(cJ))
358+ if (if ((cI != cD))
331359 then true
332- else (cx != cr))
360+ else (cK != cE))
333361 then throw("Wrong order assets.")
334362 else {
335- let cy = cp.price
336- let cz = fraction(b, be, bd)
337- let cA = F(cy, b, cz)
338- let cB = if ((cp.orderType == Buy))
339- then (bz >= cA)
340- else (cA >= bz)
363+ let cL = cC.price
364+ let cM = fraction(b, br, bq)
365+ let cN = J(cL, b, cM)
366+ let cO = if ((cC.orderType == Buy))
367+ then (bM >= cN)
368+ else (cN >= bM)
341369 true
342370 }
343371 }
344372 }
345373
346374
347-func cC (cD) = if ((size(cD.payments) != 1))
375+func cP (cQ) = if ((size(cQ.payments) != 1))
348376 then throw("exactly 1 payment is expected")
349377 else {
350- let cE = value(cD.payments[0])
351- let bn = value(cE.assetId)
352- let cF = cE.amount
353- let bY = bl(toBase58String(cD.transactionId), toBase58String(bn), cF, cD.caller)
354- let bE = bY._1
355- let bF = bY._2
356- let bs = parseIntValue(bY._9)
357- let bG = bY._10
358- if (if (at())
378+ let cR = value(cQ.payments[0])
379+ let bA = value(cR.assetId)
380+ let cS = cR.amount
381+ let cl = by(toBase58String(cQ.transactionId), toBase58String(bA), cS, cQ.caller)
382+ let bR = cl._1
383+ let bS = cl._2
384+ let bF = parseIntValue(cl._9)
385+ let bT = cl._10
386+ if (if (az())
359387 then true
360- else (bs == j))
361- then throw(("Get operation is blocked by admin. Status = " + toString(bs)))
362- else $Tuple5(bE, bF, cF, bn, bG)
388+ else (bF == n))
389+ then throw(("Get operation is blocked by admin. Status = " + toString(bF)))
390+ else $Tuple5(bR, bS, cS, bA, bT)
363391 }
364392
365393
366-func cG (cD,bI,bO) = if ((size(cD.payments) != 2))
394+func cT (cQ,bV,cb) = if ((size(cQ.payments) != 2))
367395 then throw("exactly 2 payments are expected")
368396 else {
369- let cH = value(cD.payments[0])
370- let cI = value(cD.payments[1])
371- let cJ = bH(toBase58String(cD.transactionId), bI, cH.amount, cH.assetId, cI.amount, cI.assetId, toString(cD.caller), false, bO)
372- let bs = parseIntValue(cJ._8)
373- if (if (if (at())
397+ let cU = value(cQ.payments[0])
398+ let cV = value(cQ.payments[1])
399+ let cW = bU(toBase58String(cQ.transactionId), bV, cU.amount, cU.assetId, cV.amount, cV.assetId, toString(cQ.caller), false, cb)
400+ let bF = parseIntValue(cW._8)
401+ if (if (if (az())
374402 then true
375- else (bs == h))
403+ else (bF == l))
376404 then true
377- else (bs == j))
378- then throw(("Put operation is blocked by admin. Status = " + toString(bs)))
379- else cJ
405+ else (bF == n))
406+ then throw(("Put operation is blocked by admin. Status = " + toString(bF)))
407+ else cW
380408 }
381409
382410
383-func cK () = {
384- let cL = getString(L())
385- if ($isInstanceOf(cL, "String"))
411+func cX (cY) = {
412+ let cZ = invoke(ay, "emit", [cY], nil)
413+ if ((cZ == cZ))
386414 then {
387- let cM = cL
388- fromBase58String(cM)
415+ let da = {
416+ let db = cZ
417+ if ($isInstanceOf(db, "Address"))
418+ then {
419+ let dc = db
420+ invoke(dc, "emit", [cY], nil)
421+ }
422+ else unit
423+ }
424+ if ((da == da))
425+ then cY
426+ else throw("Strict value is not equal to itself.")
389427 }
390- else if ($isInstanceOf(cL, "Unit"))
428+ else throw("Strict value is not equal to itself.")
429+ }
430+
431+
432+func dd (de,df,W,X) = {
433+ let dg = (X == unit)
434+ let dh = aH(aB())
435+ let di = dh._1
436+ let bF = dh._2
437+ let bC = dh._3
438+ let dj = dh._4
439+ let cE = dh._5
440+ let dk = dh._6
441+ let dl = dh._7
442+ let dm = de
443+ let dn = if ((df == dj))
444+ then bb(aG(dj))
445+ else if ((df == cE))
446+ then bb(aG(cE))
447+ else aw("invalid asset")
448+ let do = if (dg)
449+ then 0
450+ else dm
451+ let dp = (dn - do)
452+ let dq = toBigInt(dp)
453+ let dr = toBigInt(valueOrErrorMessage(assetInfo(bC), (("asset " + toBase58String(bC)) + " doesn't exist")).quantity)
454+ let ds = toBigInt(dm)
455+ let dt = ((dr * (sqrtBigInt((c + ((ds * c) / dq)), 8, 8, DOWN) - c)) / c)
456+ toInt(dt)
457+ }
458+
459+
460+func du (dv,dm,df,W,X) = {
461+ let dg = (X == unit)
462+ let dw = aH(aB())
463+ let di = dw._1
464+ let bF = dw._2
465+ let bC = dw._3
466+ let dj = dw._4
467+ let cE = dw._5
468+ let dk = dw._6
469+ let dl = dw._7
470+ let dx = [if ((df == bC))
471+ then true
472+ else throw("invalid lp asset")]
473+ if ((dx == dx))
474+ then {
475+ let dq = if ((dv == dj))
476+ then toBigInt(bb(aG(dj)))
477+ else if ((dv == cE))
478+ then toBigInt(bb(aG(cE)))
479+ else aw("invalid asset")
480+ let dr = toBigInt(valueOrErrorMessage(assetInfo(bC), (("asset " + toBase58String(bC)) + " doesn't exist")).quantity)
481+ let dy = toBigInt(dm)
482+ let cY = ((dq * (c - pow((c - ((dy * c) / dr)), 8, h, 0, 8, DOWN))) / c)
483+ toInt(cY)
484+ }
485+ else throw("Strict value is not equal to itself.")
486+ }
487+
488+
489+func dz () = {
490+ let db = getString(P())
491+ if ($isInstanceOf(db, "String"))
492+ then {
493+ let dA = db
494+ fromBase58String(dA)
495+ }
496+ else if ($isInstanceOf(db, "Unit"))
391497 then unit
392498 else throw("Match error")
393499 }
394500
395501
396-func cN () = {
397- let cL = getString(M())
398- if ($isInstanceOf(cL, "String"))
502+func dB () = {
503+ let db = getString(Q())
504+ if ($isInstanceOf(db, "String"))
399505 then {
400- let cM = cL
401- fromBase58String(cM)
506+ let dA = db
507+ fromBase58String(dA)
402508 }
403- else if ($isInstanceOf(cL, "Unit"))
509+ else if ($isInstanceOf(db, "Unit"))
404510 then unit
405511 else throw("Match error")
406512 }
407513
408514
409-func cO (cD) = {
410- let cP = throw("Permission denied")
411- let cL = cK()
412- if ($isInstanceOf(cL, "ByteVector"))
515+func dC (cQ) = {
516+ let dD = throw("Permission denied")
517+ let db = dz()
518+ if ($isInstanceOf(db, "ByteVector"))
413519 then {
414- let cQ = cL
415- if ((cD.callerPublicKey == cQ))
520+ let dE = db
521+ if ((cQ.callerPublicKey == dE))
416522 then true
417- else cP
523+ else dD
418524 }
419- else if ($isInstanceOf(cL, "Unit"))
420- then if ((cD.caller == this))
525+ else if ($isInstanceOf(db, "Unit"))
526+ then if ((cQ.caller == this))
421527 then true
422- else cP
528+ else dD
423529 else throw("Match error")
424530 }
425531
426532
427-@Callable(cD)
428-func constructor (as) = {
429- let cR = cO(cD)
430- if ((cR == cR))
431- then [StringEntry(K(), as)]
432- else throw("Strict value is not equal to itself.")
433- }
434-
435-
436-
437-@Callable(cD)
438-func setManager (cS) = {
439- let cR = cO(cD)
440- if ((cR == cR))
533+@Callable(cQ)
534+func setManager (dF) = {
535+ let dG = dC(cQ)
536+ if ((dG == dG))
441537 then {
442- let cT = fromBase58String(cS)
443- if ((cT == cT))
444- then [StringEntry(M(), cS)]
538+ let dH = fromBase58String(dF)
539+ if ((dH == dH))
540+ then [StringEntry(Q(), dF)]
445541 else throw("Strict value is not equal to itself.")
446542 }
447543 else throw("Strict value is not equal to itself.")
449545
450546
451547
452-@Callable(cD)
548+@Callable(cQ)
453549 func confirmManager () = {
454- let cU = cN()
455- let cV = if (isDefined(cU))
550+ let dI = dB()
551+ let dJ = if (isDefined(dI))
456552 then true
457553 else throw("No pending manager")
458- if ((cV == cV))
554+ if ((dJ == dJ))
459555 then {
460- let cW = if ((cD.callerPublicKey == value(cU)))
556+ let dK = if ((cQ.callerPublicKey == value(dI)))
461557 then true
462558 else throw("You are not pending manager")
463- if ((cW == cW))
464- then [StringEntry(L(), toBase58String(value(cU))), DeleteEntry(M())]
559+ if ((dK == dK))
560+ then [StringEntry(P(), toBase58String(value(dI))), DeleteEntry(Q())]
465561 else throw("Strict value is not equal to itself.")
466562 }
467563 else throw("Strict value is not equal to itself.")
469565
470566
471567
472-@Callable(cD)
473-func put (bI,cX) = {
474- let cY = ay()
475- let cZ = valueOrErrorMessage(addressFromString(cY[x]), "Error. Incorrect staking address.")
476- let da = valueOrErrorMessage(addressFromString(cY[y]), "Error. Incorrect slippage contract address.")
477- if ((0 > bI))
478- then throw("Invalid slippageTolerance passed")
479- else {
480- let cJ = cG(cD, bI, true)
481- let ck = cJ._2
482- let bp = cJ._7
483- let bG = cJ._9
484- let cl = cJ._10
485- let cm = cJ._11
486- let db = cJ._12
487- let dc = cJ._13
488- let dd = invoke(as, "emit", [ck], nil)
489- if ((dd == dd))
490- then {
491- let de = {
492- let cL = dd
493- if ($isInstanceOf(cL, "Address"))
568+@Callable(cQ)
569+func put (bV,dL) = if ((0 > bV))
570+ then throw("Invalid slippageTolerance passed")
571+ else {
572+ let cW = cT(cQ, bV, true)
573+ let cx = cW._2
574+ let bC = cW._7
575+ let bT = cW._9
576+ let cy = cW._10
577+ let cz = cW._11
578+ let dM = cW._12
579+ let dN = cW._13
580+ let cZ = invoke(ay, "emit", [cx], nil)
581+ if ((cZ == cZ))
582+ then {
583+ let da = {
584+ let db = cZ
585+ if ($isInstanceOf(db, "Address"))
586+ then {
587+ let dc = db
588+ invoke(dc, "emit", [cx], nil)
589+ }
590+ else unit
591+ }
592+ if ((da == da))
593+ then {
594+ let dO = if ((cy > 0))
595+ then invoke(aL, "put", nil, [AttachedPayment(dM, cy)])
596+ else nil
597+ if ((dO == dO))
494598 then {
495- let df = cL
496- invoke(df, "emit", [ck], nil)
599+ let dP = if ((cz > 0))
600+ then invoke(aL, "put", nil, [AttachedPayment(dN, cz)])
601+ else nil
602+ if ((dP == dP))
603+ then {
604+ let dQ = if (dL)
605+ then {
606+ let dR = invoke(aK, "stake", nil, [AttachedPayment(bC, cx)])
607+ if ((dR == dR))
608+ then nil
609+ else throw("Strict value is not equal to itself.")
610+ }
611+ else [ScriptTransfer(cQ.caller, cx, bC)]
612+ (bT ++ dQ)
613+ }
614+ else throw("Strict value is not equal to itself.")
497615 }
498- else unit
616+ else throw("Strict value is not equal to itself.")
499617 }
500- if ((de == de))
501- then {
502- let dg = if ((cl > 0))
503- then invoke(da, "put", nil, [AttachedPayment(db, cl)])
504- else nil
505- if ((dg == dg))
506- then {
507- let dh = if ((cm > 0))
508- then invoke(da, "put", nil, [AttachedPayment(dc, cm)])
509- else nil
510- if ((dh == dh))
511- then {
512- let di = if (cX)
513- then {
514- let dj = invoke(cZ, "stake", nil, [AttachedPayment(bp, ck)])
515- if ((dj == dj))
516- then nil
517- else throw("Strict value is not equal to itself.")
518- }
519- else [ScriptTransfer(cD.caller, ck, bp)]
520- (bG ++ di)
521- }
522- else throw("Strict value is not equal to itself.")
523- }
524- else throw("Strict value is not equal to itself.")
525- }
526- else throw("Strict value is not equal to itself.")
527- }
528- else throw("Strict value is not equal to itself.")
529- }
530- }
531-
532-
533-
534-@Callable(cD)
535-func putForFree (dk) = if ((0 > dk))
536- then throw("Invalid value passed")
537- else {
538- let cJ = cG(cD, dk, false)
539- cJ._9
618+ else throw("Strict value is not equal to itself.")
619+ }
620+ else throw("Strict value is not equal to itself.")
540621 }
541622
542623
543624
544-@Callable(cD)
545-func get () = {
546- let bY = cC(cD)
547- let dl = bY._1
548- let bF = bY._2
549- let cF = bY._3
550- let bn = bY._4
551- let bG = bY._5
552- let dm = invoke(as, "burn", [cF], [AttachedPayment(bn, cF)])
553- if ((dm == dm))
554- then bG
625+@Callable(cQ)
626+func putForFree (dS) = if ((0 > dS))
627+ then throw("Invalid value passed")
628+ else {
629+ let cW = cT(cQ, dS, false)
630+ cW._9
631+ }
632+
633+
634+
635+@Callable(cQ)
636+func putOneTkn (dT,dU) = {
637+ let dV = aH(aB())
638+ let di = dV._1
639+ let bF = dV._2
640+ let bC = dV._3
641+ let dj = dV._4
642+ let cE = dV._5
643+ let dk = dV._6
644+ let dl = dV._7
645+ let dW = if (if (az())
646+ then true
647+ else (bF == l))
648+ then true
649+ else (bF == n)
650+ let dx = [if (!(dW))
651+ then true
652+ else aw("put operation is blocked by admin"), if ((size(cQ.payments) == 1))
653+ then true
654+ else aw("exactly 1 payment are expected")]
655+ if ((dx == dx))
656+ then {
657+ let dX = cQ.payments[0]
658+ let df = dX.assetId
659+ let de = dX.amount
660+ let dm = de
661+ let W = cQ.caller
662+ let X = cQ.transactionId
663+ let dY = {
664+ let dZ = dd(de, df, W, X)
665+ if (if ((dT > 0))
666+ then (dT > dZ)
667+ else false)
668+ then throw(makeString(["amount to receive is less than ", toString(dT)], ""))
669+ else dZ
670+ }
671+ let cZ = cX(dY)
672+ if ((cZ == cZ))
673+ then {
674+ let dQ = if (dU)
675+ then {
676+ let ea = invoke(aK, "stake", nil, [AttachedPayment(bC, dY)])
677+ if ((ea == ea))
678+ then nil
679+ else throw("Strict value is not equal to itself.")
680+ }
681+ else [ScriptTransfer(cQ.caller, dY, bC)]
682+ $Tuple2(dQ, dY)
683+ }
684+ else throw("Strict value is not equal to itself.")
685+ }
555686 else throw("Strict value is not equal to itself.")
556687 }
557688
558689
559690
560-@Callable(cD)
561-func getNoLess (dn,do) = {
562- let bY = cC(cD)
563- let bE = bY._1
564- let bF = bY._2
565- let cF = bY._3
566- let bn = bY._4
567- let bG = bY._5
568- if ((dn > bE))
569- then throw(((("noLessThenAmtAsset failed: " + toString(bE)) + " < ") + toString(dn)))
570- else if ((do > bF))
571- then throw(((("noLessThenPriceAsset failed: " + toString(bF)) + " < ") + toString(do)))
691+@Callable(cQ)
692+func getOneTkn (dv,dT,eb) = {
693+ let ec = aH(aB())
694+ let di = ec._1
695+ let bF = ec._2
696+ let bC = ec._3
697+ let dj = ec._4
698+ let cE = ec._5
699+ let dk = ec._6
700+ let dl = ec._7
701+ let ed = if (az())
702+ then true
703+ else (bF == n)
704+ let dx = [if (!(ed))
705+ then true
706+ else aw("get operation is blocked by admin"), if ((size(cQ.payments) == 1))
707+ then true
708+ else aw("exactly 1 payment are expected")]
709+ if ((dx == dx))
710+ then {
711+ let dX = cQ.payments[0]
712+ let df = dX.assetId
713+ let dm = dX.amount
714+ let W = cQ.caller
715+ let X = cQ.transactionId
716+ let cY = {
717+ let ee = du(aE(dv), dm, df, W, X)
718+ if (if ((dT > 0))
719+ then (dT > ee)
720+ else false)
721+ then throw(makeString(["amount to receive is less than ", toString(dT)], ""))
722+ else ee
723+ }
724+ let ef = invoke(ay, "burn", [dm], [AttachedPayment(df, dm)])
725+ if ((ef == ef))
726+ then {
727+ let eg = [ScriptTransfer(W, cY, aE(dv))]
728+ $Tuple2(eg, cY)
729+ }
730+ else throw("Strict value is not equal to itself.")
731+ }
732+ else throw("Strict value is not equal to itself.")
733+ }
734+
735+
736+
737+@Callable(cQ)
738+func get () = {
739+ let cl = cP(cQ)
740+ let eh = cl._1
741+ let bS = cl._2
742+ let cS = cl._3
743+ let bA = cl._4
744+ let bT = cl._5
745+ let ei = invoke(ay, "burn", [cS], [AttachedPayment(bA, cS)])
746+ if ((ei == ei))
747+ then bT
748+ else throw("Strict value is not equal to itself.")
749+ }
750+
751+
752+
753+@Callable(cQ)
754+func getNoLess (ej,ek) = {
755+ let cl = cP(cQ)
756+ let bR = cl._1
757+ let bS = cl._2
758+ let cS = cl._3
759+ let bA = cl._4
760+ let bT = cl._5
761+ if ((ej > bR))
762+ then throw(((("noLessThenAmtAsset failed: " + toString(bR)) + " < ") + toString(ej)))
763+ else if ((ek > bS))
764+ then throw(((("noLessThenPriceAsset failed: " + toString(bS)) + " < ") + toString(ek)))
572765 else {
573- let dm = invoke(as, "burn", [cF], [AttachedPayment(bn, cF)])
574- if ((dm == dm))
575- then bG
766+ let ei = invoke(ay, "burn", [cS], [AttachedPayment(bA, cS)])
767+ if ((ei == ei))
768+ then bT
576769 else throw("Strict value is not equal to itself.")
577770 }
578771 }
579772
580773
581774
582-@Callable(cD)
583-func unstakeAndGet (dp) = {
584- let dq = if ((size(cD.payments) != 0))
775+@Callable(cQ)
776+func unstakeAndGet (cY) = {
777+ let el = if ((size(cQ.payments) != 0))
585778 then throw("No payments are expected")
586779 else true
587- if ((dq == dq))
780+ if ((el == el))
588781 then {
589- let bc = av()
590- let cY = ay()
591- let bp = fromBase58String(bc[m])
592- let cZ = valueOrErrorMessage(addressFromString(cY[x]), "Error. Incorrect staking address.")
593- let dr = invoke(cZ, "unstake", [toBase58String(bp), dp], nil)
594- if ((dr == dr))
782+ let bp = aB()
783+ let bC = fromBase58String(bp[q])
784+ let em = invoke(aK, "unstake", [toBase58String(bC), cY], nil)
785+ if ((em == em))
595786 then {
596- let bY = bl(toBase58String(cD.transactionId), toBase58String(bp), dp, cD.caller)
597- let bs = parseIntValue(bY._9)
598- let bG = bY._10
599- let ds = if (if (at())
787+ let cl = by(toBase58String(cQ.transactionId), toBase58String(bC), cY, cQ.caller)
788+ let bF = parseIntValue(cl._9)
789+ let bT = cl._10
790+ let en = if (if (az())
600791 then true
601- else (bs == j))
602- then throw(("Get operation is blocked by admin. Status = " + toString(bs)))
792+ else (bF == n))
793+ then throw(("Get operation is blocked by admin. Status = " + toString(bF)))
603794 else true
604- if ((ds == ds))
795+ if ((en == en))
605796 then {
606- let dm = invoke(as, "burn", [dp], [AttachedPayment(bp, dp)])
607- if ((dm == dm))
608- then bG
797+ let ei = invoke(ay, "burn", [cY], [AttachedPayment(bC, cY)])
798+ if ((ei == ei))
799+ then bT
609800 else throw("Strict value is not equal to itself.")
610801 }
611802 else throw("Strict value is not equal to itself.")
617808
618809
619810
620-@Callable(cD)
621-func activate (dt,du) = if ((toString(cD.caller) != toString(as)))
811+@Callable(cQ)
812+func activate (eo,ep) = if ((toString(cQ.caller) != toString(ay)))
622813 then throw("permissions denied")
623- else $Tuple2([StringEntry(V(), dt), StringEntry(W(), du)], "success")
814+ else $Tuple2([StringEntry(Z(), eo), StringEntry(aa(), ep)], "success")
624815
625816
626817
627-@Callable(cD)
628-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, av())
818+@Callable(cQ)
819+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aB())
629820
630821
631822
632-@Callable(cD)
633-func getAccBalanceWrapperREADONLY (aP) = $Tuple2(nil, aO(aP))
823+@Callable(cQ)
824+func getAccBalanceWrapperREADONLY (bc) = $Tuple2(nil, bb(bc))
634825
635826
636827
637-@Callable(cD)
638-func calcPricesWrapperREADONLY (aW,aX,bb) = {
639- let bk = ba(aW, aX, bb)
640- $Tuple2(nil, [toString(bk[0]), toString(bk[1]), toString(bk[2])])
828+@Callable(cQ)
829+func calcPricesWrapperREADONLY (bj,bk,bo) = {
830+ let bx = bn(bj, bk, bo)
831+ $Tuple2(nil, [toString(bx[0]), toString(bx[1]), toString(bx[2])])
641832 }
642833
643834
644835
645-@Callable(cD)
646-func toX18WrapperREADONLY (A,B) = $Tuple2(nil, toString(z(A, B)))
836+@Callable(cQ)
837+func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
647838
648839
649840
650-@Callable(cD)
651-func fromX18WrapperREADONLY (D,E) = $Tuple2(nil, C(parseBigIntValue(D), E))
841+@Callable(cQ)
842+func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
652843
653844
654845
655-@Callable(cD)
656-func calcPriceBigIntWrapperREADONLY (aR,aS) = $Tuple2(nil, toString(aQ(parseBigIntValue(aR), parseBigIntValue(aS))))
846+@Callable(cQ)
847+func calcPriceBigIntWrapperREADONLY (be,bf) = $Tuple2(nil, toString(bd(parseBigIntValue(be), parseBigIntValue(bf))))
657848
658849
659850
660-@Callable(cD)
661-func estimatePutOperationWrapperREADONLY (bm,bI,bJ,bK,bL,bM,S,bN,bO) = $Tuple2(nil, bH(bm, bI, bJ, bK, bL, bM, S, bN, bO))
851+@Callable(cQ)
852+func estimatePutOperationWrapperREADONLY (bz,bV,bW,bX,bY,bZ,W,ca,cb) = $Tuple2(nil, bU(bz, bV, bW, bX, bY, bZ, W, ca, cb))
662853
663854
664855
665-@Callable(cD)
666-func estimateGetOperationWrapperREADONLY (bm,bn,bo,S) = {
667- let bY = bl(bm, bn, bo, addressFromStringValue(S))
668- $Tuple2(nil, $Tuple10(bY._1, bY._2, bY._3, bY._4, bY._5, bY._6, bY._7, toString(bY._8), bY._9, bY._10))
856+@Callable(cQ)
857+func estimateGetOperationWrapperREADONLY (bz,bA,bB,W) = {
858+ let cl = by(bz, bA, bB, addressFromStringValue(W))
859+ $Tuple2(nil, $Tuple10(cl._1, cl._2, cl._3, cl._4, cl._5, cl._6, cl._7, toString(cl._8), cl._9, cl._10))
669860 }
670861
671862
672863
673-@Callable(cD)
864+@Callable(cQ)
674865 func statsREADONLY () = {
675- let bc = av()
676- let bp = fromBase58String(bc[m])
677- let cq = bc[n]
678- let cr = bc[o]
679- let bR = bc[r]
680- let bS = bc[s]
681- let bd = parseIntValue(bc[p])
682- let be = parseIntValue(bc[q])
683- let dv = valueOrErrorMessage(assetInfo(bp), (("Asset " + toBase58String(bp)) + " doesn't exist")).quantity
684- let cs = aO(cq)
685- let ct = aO(cr)
686- let dw = if ((dv == 0))
866+ let bp = aB()
867+ let bC = fromBase58String(bp[q])
868+ let cD = bp[r]
869+ let cE = bp[s]
870+ let ce = bp[v]
871+ let cf = bp[w]
872+ let bq = parseIntValue(bp[t])
873+ let br = parseIntValue(bp[u])
874+ let eq = valueOrErrorMessage(assetInfo(bC), (("Asset " + toBase58String(bC)) + " doesn't exist")).quantity
875+ let cF = bb(cD)
876+ let cG = bb(cE)
877+ let er = if ((eq == 0))
687878 then [e, e, e]
688- else ba(cs, ct, dv)
689- let bz = 0
690- let dx = C(dw[1], b)
691- let dy = C(dw[2], b)
692- let dz = value(getInteger(as, ah(toString(this))))
693- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cs), toString(ct), toString(dv), toString(bz), toString(dx), toString(dy), toString(dz)], f))
879+ else bn(cF, cG, eq)
880+ let bM = 0
881+ let es = G(er[1], b)
882+ let et = G(er[2], b)
883+ let eu = value(getInteger(ay, al(toString(this))))
884+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cF), toString(cG), toString(eq), toString(bM), toString(es), toString(et), toString(eu)], j))
694885 }
695886
696887
697888
698-@Callable(cD)
699-func evaluatePutByAmountAssetREADONLY (bJ) = {
700- let bc = av()
701- let bp = fromBase58String(bc[m])
702- let bP = bc[n]
703- let bq = fromBase58String(bP)
704- let bQ = bc[o]
705- let br = fromBase58String(bQ)
706- let bd = parseIntValue(bc[p])
707- let be = parseIntValue(bc[q])
708- let bs = bc[l]
709- let dv = valueOrErrorMessage(assetInfo(bp), (("Asset " + toBase58String(bp)) + " doesn't exist")).quantity
710- let cs = aO(bP)
711- let ct = aO(bQ)
712- let aY = z(cs, bd)
713- let aZ = z(ct, be)
714- let by = if ((dv == 0))
889+@Callable(cQ)
890+func evaluatePutByAmountAssetREADONLY (bW) = {
891+ let bp = aB()
892+ let bC = fromBase58String(bp[q])
893+ let cc = bp[r]
894+ let bD = fromBase58String(cc)
895+ let cd = bp[s]
896+ let bE = fromBase58String(cd)
897+ let bq = parseIntValue(bp[t])
898+ let br = parseIntValue(bp[u])
899+ let bF = bp[p]
900+ let eq = valueOrErrorMessage(assetInfo(bC), (("Asset " + toBase58String(bC)) + " doesn't exist")).quantity
901+ let cF = bb(cc)
902+ let cG = bb(cd)
903+ let bl = D(cF, bq)
904+ let bm = D(cG, br)
905+ let bL = if ((eq == 0))
715906 then e
716- else aQ(aZ, aY)
717- let bV = z(bJ, bd)
718- let bW = fraction(bV, by, d)
719- let bL = C(bW, be)
720- let cJ = bH("", 500000, bJ, bq, bL, br, "", true, false)
721- let cg = cJ._1
722- let dA = cJ._3
723- let bu = cJ._4
724- let bw = cJ._5
725- let bt = cJ._6
726- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cg), toString(C(by, b)), toString(bu), toString(bw), toString(bt), bs, toString(bJ), toString(bL)], f))
907+ else bd(bm, bl)
908+ let ci = D(bW, bq)
909+ let cj = fraction(ci, bL, d)
910+ let bY = G(cj, br)
911+ let cW = bU("", 500000, bW, bD, bY, bE, "", true, false)
912+ let ct = cW._1
913+ let ev = cW._3
914+ let bH = cW._4
915+ let bJ = cW._5
916+ let bG = cW._6
917+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ct), toString(G(bL, b)), toString(bH), toString(bJ), toString(bG), bF, toString(bW), toString(bY)], j))
727918 }
728919
729920
730921
731-@Callable(cD)
732-func evaluatePutByPriceAssetREADONLY (bL) = {
733- let bc = av()
734- let bp = fromBase58String(bc[m])
735- let bP = bc[n]
736- let bq = fromBase58String(bP)
737- let bQ = bc[o]
738- let br = fromBase58String(bQ)
739- let bd = parseIntValue(bc[p])
740- let be = parseIntValue(bc[q])
741- let bs = bc[l]
742- let dv = valueOrErrorMessage(assetInfo(bp), (("Asset " + toBase58String(bp)) + " doesn't exist")).quantity
743- let dB = aO(bP)
744- let dC = aO(bQ)
745- let dD = z(dB, bd)
746- let dE = z(dC, be)
747- let by = if ((dv == 0))
922+@Callable(cQ)
923+func evaluatePutByPriceAssetREADONLY (bY) = {
924+ let bp = aB()
925+ let bC = fromBase58String(bp[q])
926+ let cc = bp[r]
927+ let bD = fromBase58String(cc)
928+ let cd = bp[s]
929+ let bE = fromBase58String(cd)
930+ let bq = parseIntValue(bp[t])
931+ let br = parseIntValue(bp[u])
932+ let bF = bp[p]
933+ let eq = valueOrErrorMessage(assetInfo(bC), (("Asset " + toBase58String(bC)) + " doesn't exist")).quantity
934+ let ew = bb(cc)
935+ let ex = bb(cd)
936+ let ey = D(ew, bq)
937+ let ez = D(ex, br)
938+ let bL = if ((eq == 0))
748939 then e
749- else aQ(dE, dD)
750- let bW = z(bL, be)
751- let bV = fraction(bW, d, by)
752- let bJ = C(bV, bd)
753- let cJ = bH("", 500000, bJ, bq, bL, br, "", true, false)
754- let cg = cJ._1
755- let dA = cJ._3
756- let bu = cJ._4
757- let bw = cJ._5
758- let bt = cJ._6
759- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cg), toString(C(by, b)), toString(bu), toString(bw), toString(bt), bs, toString(bJ), toString(bL)], f))
940+ else bd(ez, ey)
941+ let cj = D(bY, br)
942+ let ci = fraction(cj, d, bL)
943+ let bW = G(ci, bq)
944+ let cW = bU("", 500000, bW, bD, bY, bE, "", true, false)
945+ let ct = cW._1
946+ let ev = cW._3
947+ let bH = cW._4
948+ let bJ = cW._5
949+ let bG = cW._6
950+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ct), toString(G(bL, b)), toString(bH), toString(bJ), toString(bG), bF, toString(bW), toString(bY)], j))
760951 }
761952
762953
763954
764-@Callable(cD)
765-func evaluateGetREADONLY (dF,dG) = {
766- let bY = bl("", dF, dG, this)
767- let bE = bY._1
768- let bF = bY._2
769- let bu = bY._5
770- let bw = bY._6
771- let bt = bY._7
772- let bz = bY._8
773- let bs = parseIntValue(bY._9)
774- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(bE), toString(bF), toString(bu), toString(bw), toString(bt), toString(bz), toString(bs)], f))
955+@Callable(cQ)
956+func evaluateGetREADONLY (eA,eB) = {
957+ let cl = by("", eA, eB, this)
958+ let bR = cl._1
959+ let bS = cl._2
960+ let bH = cl._5
961+ let bJ = cl._6
962+ let bG = cl._7
963+ let bM = cl._8
964+ let bF = parseIntValue(cl._9)
965+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(bR), toString(bS), toString(bH), toString(bJ), toString(bG), toString(bM), toString(bF)], j))
775966 }
776967
777968
778-@Verifier(dH)
779-func dI () = {
780- let dJ = {
781- let cL = cK()
782- if ($isInstanceOf(cL, "ByteVector"))
969+@Verifier(eC)
970+func eD () = {
971+ let eE = {
972+ let db = dz()
973+ if ($isInstanceOf(db, "ByteVector"))
783974 then {
784- let cQ = cL
785- cQ
975+ let dE = db
976+ dE
786977 }
787- else if ($isInstanceOf(cL, "Unit"))
788- then dH.senderPublicKey
978+ else if ($isInstanceOf(db, "Unit"))
979+ then eC.senderPublicKey
789980 else throw("Match error")
790981 }
791- let cL = dH
792- if ($isInstanceOf(cL, "Order"))
982+ let db = eC
983+ if ($isInstanceOf(db, "Order"))
793984 then {
794- let cp = cL
795- let dK = au()
796- let al = co(cp)
797- let am = sigVerify(cp.bodyBytes, cp.proofs[0], cp.senderPublicKey)
798- let an = sigVerify(cp.bodyBytes, cp.proofs[1], dK)
799- if (if (if (al)
800- then am
985+ let cC = db
986+ let eF = aA()
987+ let ap = cB(cC)
988+ let aq = sigVerify(cC.bodyBytes, cC.proofs[0], cC.senderPublicKey)
989+ let ar = sigVerify(cC.bodyBytes, cC.proofs[1], eF)
990+ if (if (if (ap)
991+ then aq
801992 else false)
802- then an
993+ then ar
803994 else false)
804995 then true
805- else ak(al, am, an)
996+ else ao(ap, aq, ar)
806997 }
807- else if ($isInstanceOf(cL, "SetScriptTransaction"))
998+ else if ($isInstanceOf(db, "SetScriptTransaction"))
808999 then {
809- let cM = cL
810- let dL = blake2b256(value(cM.script))
811- let dM = fromBase64String(value(getString(as, aj())))
812- let dN = scriptHash(this)
813- if (if ((dM == dL))
814- then (dN != dL)
1000+ let dA = db
1001+ let eG = blake2b256(value(dA.script))
1002+ let eH = fromBase64String(value(getString(ay, an())))
1003+ let eI = scriptHash(this)
1004+ if (if ((eH == eG))
1005+ then (eI != eG)
8151006 else false)
8161007 then true
817- else sigVerify(dH.bodyBytes, dH.proofs[0], dJ)
1008+ else sigVerify(eC.bodyBytes, eC.proofs[0], eE)
8181009 }
819- else sigVerify(dH.bodyBytes, dH.proofs[0], dJ)
1010+ else sigVerify(eC.bodyBytes, eC.proofs[0], eE)
8201011 }
8211012
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = toBigInt(0)
1313
14-let f = "__"
14+let f = toBigInt(0)
1515
16-let g = 1
16+let g = toBigInt(1)
1717
18-let h = 2
18+let h = toBigInt(1)
1919
20-let i = 3
20+let i = "WAVES"
2121
22-let j = 4
22+let j = "__"
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
32-let o = 5
32+let o = 1
3333
34-let p = 6
34+let p = 2
3535
36-let q = 7
36+let q = 3
3737
38-let r = 8
38+let r = 4
3939
40-let s = 9
40+let s = 5
4141
42-let t = 10
42+let t = 6
4343
44-let u = 1
44+let u = 7
4545
46-let v = 2
46+let v = 8
4747
48-let w = 3
48+let w = 9
4949
50-let x = 1
50+let x = 10
5151
52-let y = 7
52+let y = 1
5353
54-func z (A,B) = fraction(toBigInt(A), d, toBigInt(B))
54+let z = 2
55+
56+let A = 3
57+
58+let B = 1
59+
60+let C = 7
61+
62+func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
5563
5664
57-func C (D,E) = toInt(fraction(D, toBigInt(E), d))
65+func G (H,I) = toInt(fraction(H, toBigInt(I), d))
5866
5967
60-func F (G,H,I) = fraction(G, H, I)
68+func J (K,L,M) = fraction(K, L, M)
6169
6270
63-func J (D) = if ((e > D))
64- then -(D)
65- else D
71+func N (H) = if ((e > H))
72+ then -(H)
73+ else H
6674
6775
68-func K () = "%s__factoryContract"
76+func O () = "%s__factoryContract"
6977
7078
71-func L () = "%s__managerPublicKey"
79+func P () = "%s__managerPublicKey"
7280
7381
74-func M () = "%s__pendingManagerPublicKey"
82+func Q () = "%s__pendingManagerPublicKey"
7583
7684
77-func N () = "%s%s__price__last"
85+func R () = "%s%s__price__last"
7886
7987
80-func O (P,Q) = makeString(["%s%s%d%d__price__history", toString(P), toString(Q)], f)
88+func S (T,U) = makeString(["%s%s%d%d__price__history", toString(T), toString(U)], j)
8189
8290
83-func R (S,T) = ((("%s%s%s__P__" + S) + "__") + T)
91+func V (W,X) = ((("%s%s%s__P__" + W) + "__") + X)
8492
8593
86-func U (S,T) = ((("%s%s%s__G__" + S) + "__") + T)
94+func Y (W,X) = ((("%s%s%s__G__" + W) + "__") + X)
8795
8896
89-func V () = "%s__amountAsset"
97+func Z () = "%s__amountAsset"
9098
9199
92-func W () = "%s__priceAsset"
100+func aa () = "%s__priceAsset"
93101
94102
95-func X () = "%s__factoryConfig"
103+func ab () = "%s__factoryConfig"
96104
97105
98-func Y () = "%s%s__matcher__publicKey"
106+func ac () = "%s%s__matcher__publicKey"
99107
100108
101-func Z (aa) = (("%s%s%s__" + aa) + "__mappings__poolContract2LpAsset")
109+func ad (ae) = (("%s%s%s__" + ae) + "__mappings__poolContract2LpAsset")
102110
103111
104-func ab (ac,ad) = (((("%d%d%s__" + ac) + "__") + ad) + "__config")
112+func af (ag,ah) = (((("%d%d%s__" + ag) + "__") + ah) + "__config")
105113
106114
107-func ae (af) = ("%s%s%s__mappings__baseAsset2internalId__" + af)
115+func ai (aj) = ("%s%s%s__mappings__baseAsset2internalId__" + aj)
108116
109117
110-func ag () = "%s__shutdown"
118+func ak () = "%s__shutdown"
111119
112120
113-func ah (ai) = ("%s%s__poolWeight__" + ai)
121+func al (am) = ("%s%s__poolWeight__" + am)
114122
115123
116-func aj () = "%s__allowedLpScriptHash"
124+func an () = "%s__allowedLpScriptHash"
117125
118126
119-func ak (al,am,an) = throw(((((("order validation failed: orderValid=" + toString(al)) + " senderValid=") + toString(am)) + " matcherValid=") + toString(an)))
127+func ao (ap,aq,ar) = throw(((((("order validation failed: orderValid=" + toString(ap)) + " senderValid=") + toString(aq)) + " matcherValid=") + toString(ar)))
120128
121129
122-func ao (ap,aq) = valueOrErrorMessage(getString(ap, aq), makeString(["mandatory ", toString(ap), ".", aq, " is not defined"], ""))
130+func as (at,au) = valueOrErrorMessage(getString(at, au), makeString(["mandatory ", toString(at), ".", au, " is not defined"], ""))
123131
124132
125-func ar (ap,aq) = valueOrErrorMessage(getInteger(ap, aq), makeString(["mandatory ", toString(ap), ".", aq, " is not defined"], ""))
133+func av (at,au) = valueOrErrorMessage(getInteger(at, au), makeString(["mandatory ", toString(at), ".", au, " is not defined"], ""))
126134
127135
128-let as = addressFromStringValue(ao(this, K()))
129-
130-func at () = valueOrElse(getBoolean(as, ag()), false)
136+func aw (ax) = throw(makeString(["lp.ride:", ax], " "))
131137
132138
133-func au () = fromBase58String(ao(as, Y()))
139+let ay = addressFromStringValue(as(this, O()))
140+
141+func az () = valueOrElse(getBoolean(ay, ak()), false)
134142
135143
136-func av () = {
137- let aw = ao(this, V())
138- let ax = ao(this, W())
139- let ad = ar(as, ae(ax))
140- let ac = ar(as, ae(aw))
141- split(ao(as, ab(toString(ac), toString(ad))), f)
144+func aA () = fromBase58String(as(ay, ac()))
145+
146+
147+func aB () = {
148+ let aC = as(this, Z())
149+ let aD = as(this, aa())
150+ let ah = av(ay, ai(aD))
151+ let ag = av(ay, ai(aC))
152+ split(as(ay, af(toString(ag), toString(ah))), j)
142153 }
143154
144155
145-func ay () = split(ao(as, X()), f)
156+func aE (aF) = if ((aF == i))
157+ then unit
158+ else fromBase58String(aF)
146159
147160
148-func az (aA,aB,aC,aD,aE,aF,aG,aH,aI,aJ) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aA), toString(aB), toString(aC), toString(aD), toString(aE), toString(aF), toString(aG), toString(aH), toString(aI), toString(aJ)], f)
161+func aG (aF) = if ((aF == unit))
162+ then i
163+ else toBase58String(value(aF))
149164
150165
151-func aK (aL,aM,aN,aD,aG,aH) = makeString(["%d%d%d%d%d%d", toString(aL), toString(aM), toString(aN), toString(aD), toString(aG), toString(aH)], f)
166+func aH (aI) = $Tuple7(addressFromStringValue(aI[o]), parseIntValue(aI[p]), fromBase58String(aI[q]), aE(aI[r]), aE(aI[s]), parseIntValue(aI[t]), parseIntValue(aI[u]))
152167
153168
154-func aO (aP) = if ((aP == "WAVES"))
155- then wavesBalance(this).available
156- else assetBalance(this, fromBase58String(aP))
169+func aJ () = split(as(ay, ab()), j)
157170
158171
159-func aQ (aR,aS) = fraction(aR, d, aS)
172+let aK = valueOrErrorMessage(addressFromString(aJ()[B]), "incorrect staking address")
173+
174+let aL = valueOrErrorMessage(addressFromString(aJ()[C]), "incorrect staking address")
175+
176+func aM (aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU), toString(aV), toString(aW)], j)
160177
161178
162-func aT (aU,aV,aW,aX) = {
163- let aY = z(aW, aU)
164- let aZ = z(aX, aV)
165- aQ(aZ, aY)
179+func aX (aY,aZ,ba,aQ,aT,aU) = makeString(["%d%d%d%d%d%d", toString(aY), toString(aZ), toString(ba), toString(aQ), toString(aT), toString(aU)], j)
180+
181+
182+func bb (bc) = if ((bc == "WAVES"))
183+ then wavesBalance(this).available
184+ else assetBalance(this, fromBase58String(bc))
185+
186+
187+func bd (be,bf) = fraction(be, d, bf)
188+
189+
190+func bg (bh,bi,bj,bk) = {
191+ let bl = D(bj, bh)
192+ let bm = D(bk, bi)
193+ bd(bm, bl)
166194 }
167195
168196
169-func ba (aW,aX,bb) = {
170- let bc = av()
171- let bd = parseIntValue(bc[p])
172- let be = parseIntValue(bc[q])
173- let bf = aT(bd, be, aW, aX)
174- let aS = z(aW, bd)
175- let aR = z(aX, be)
176- let bg = z(bb, b)
177- let bh = aQ(aS, bg)
178- let bi = aQ(aR, bg)
179-[bf, bh, bi]
197+func bn (bj,bk,bo) = {
198+ let bp = aB()
199+ let bq = parseIntValue(bp[t])
200+ let br = parseIntValue(bp[u])
201+ let bs = bg(bq, br, bj, bk)
202+ let bf = D(bj, bq)
203+ let be = D(bk, br)
204+ let bt = D(bo, b)
205+ let bu = bd(bf, bt)
206+ let bv = bd(be, bt)
207+[bs, bu, bv]
180208 }
181209
182210
183-func bj (aW,aX,bb) = {
184- let bk = ba(aW, aX, bb)
185-[C(bk[0], b), C(bk[1], b), C(bk[2], b)]
211+func bw (bj,bk,bo) = {
212+ let bx = bn(bj, bk, bo)
213+[G(bx[0], b), G(bx[1], b), G(bx[2], b)]
186214 }
187215
188216
189-func bl (bm,bn,bo,S) = {
190- let bc = av()
191- let bp = bc[m]
192- let bq = bc[n]
193- let br = bc[o]
194- let aU = parseIntValue(bc[p])
195- let aV = parseIntValue(bc[q])
196- let bs = bc[l]
197- let bt = valueOrErrorMessage(assetInfo(fromBase58String(bp)), (("Asset " + bp) + " doesn't exist")).quantity
198- if ((bp != bn))
217+func by (bz,bA,bB,W) = {
218+ let bp = aB()
219+ let bC = bp[q]
220+ let bD = bp[r]
221+ let bE = bp[s]
222+ let bh = parseIntValue(bp[t])
223+ let bi = parseIntValue(bp[u])
224+ let bF = bp[p]
225+ let bG = valueOrErrorMessage(assetInfo(fromBase58String(bC)), (("Asset " + bC) + " doesn't exist")).quantity
226+ if ((bC != bA))
199227 then throw("Invalid asset passed.")
200228 else {
201- let bu = aO(bq)
202- let bv = z(bu, aU)
203- let bw = aO(br)
204- let bx = z(bw, aV)
205- let by = aQ(bx, bv)
206- let bz = C(by, b)
207- let bA = z(bo, b)
208- let bB = z(bt, b)
209- let bC = fraction(bv, bA, bB)
210- let bD = fraction(bx, bA, bB)
211- let bE = C(bC, aU)
212- let bF = C(bD, aV)
213- let bG = if ((bm == ""))
229+ let bH = bb(bD)
230+ let bI = D(bH, bh)
231+ let bJ = bb(bE)
232+ let bK = D(bJ, bi)
233+ let bL = bd(bK, bI)
234+ let bM = G(bL, b)
235+ let bN = D(bB, b)
236+ let bO = D(bG, b)
237+ let bP = fraction(bI, bN, bO)
238+ let bQ = fraction(bK, bN, bO)
239+ let bR = G(bP, bh)
240+ let bS = G(bQ, bi)
241+ let bT = if ((bz == ""))
214242 then nil
215- else [ScriptTransfer(S, bE, if ((bq == "WAVES"))
243+ else [ScriptTransfer(W, bR, if ((bD == "WAVES"))
216244 then unit
217- else fromBase58String(bq)), ScriptTransfer(S, bF, if ((br == "WAVES"))
245+ else fromBase58String(bD)), ScriptTransfer(W, bS, if ((bE == "WAVES"))
218246 then unit
219- else fromBase58String(br)), StringEntry(U(toString(S), bm), aK(bE, bF, bo, bz, height, lastBlock.timestamp)), IntegerEntry(N(), bz), IntegerEntry(O(height, lastBlock.timestamp), bz)]
220- $Tuple10(bE, bF, bq, br, bu, bw, bt, by, bs, bG)
247+ else fromBase58String(bE)), StringEntry(Y(toString(W), bz), aX(bR, bS, bB, bM, height, lastBlock.timestamp)), IntegerEntry(R(), bM), IntegerEntry(S(height, lastBlock.timestamp), bM)]
248+ $Tuple10(bR, bS, bD, bE, bH, bJ, bG, bL, bF, bT)
221249 }
222250 }
223251
224252
225-func bH (bm,bI,bJ,bK,bL,bM,S,bN,bO) = {
226- let bc = av()
227- let bp = fromBase58String(bc[m])
228- let bP = bc[n]
229- let bQ = bc[o]
230- let bR = bc[r]
231- let bS = bc[s]
232- let bd = parseIntValue(bc[p])
233- let be = parseIntValue(bc[q])
234- let bs = bc[l]
235- let bt = valueOrErrorMessage(assetInfo(bp), (("Asset " + toBase58String(bp)) + " doesn't exist")).quantity
236- let bT = toBase58String(valueOrElse(bK, fromBase58String("WAVES")))
237- let bU = toBase58String(valueOrElse(bM, fromBase58String("WAVES")))
238- if (if ((bP != bT))
253+func bU (bz,bV,bW,bX,bY,bZ,W,ca,cb) = {
254+ let bp = aB()
255+ let bC = fromBase58String(bp[q])
256+ let cc = bp[r]
257+ let cd = bp[s]
258+ let ce = bp[v]
259+ let cf = bp[w]
260+ let bq = parseIntValue(bp[t])
261+ let br = parseIntValue(bp[u])
262+ let bF = bp[p]
263+ let bG = valueOrErrorMessage(assetInfo(bC), (("Asset " + toBase58String(bC)) + " doesn't exist")).quantity
264+ let cg = toBase58String(valueOrElse(bX, fromBase58String("WAVES")))
265+ let ch = toBase58String(valueOrElse(bZ, fromBase58String("WAVES")))
266+ if (if ((cc != cg))
239267 then true
240- else (bQ != bU))
268+ else (cd != ch))
241269 then throw("Invalid amt or price asset passed.")
242270 else {
243- let bu = if (bN)
244- then aO(bP)
245- else (aO(bP) - bJ)
246- let bw = if (bN)
247- then aO(bQ)
248- else (aO(bQ) - bL)
249- let bV = z(bJ, bd)
250- let bW = z(bL, be)
251- let bX = aQ(bW, bV)
252- let bv = z(bu, bd)
253- let bx = z(bw, be)
254- let bY = if ((bt == 0))
271+ let bH = if (ca)
272+ then bb(cc)
273+ else (bb(cc) - bW)
274+ let bJ = if (ca)
275+ then bb(cd)
276+ else (bb(cd) - bY)
277+ let ci = D(bW, bq)
278+ let cj = D(bY, br)
279+ let ck = bd(cj, ci)
280+ let bI = D(bH, bq)
281+ let bK = D(bJ, br)
282+ let cl = if ((bG == 0))
255283 then {
256- let by = e
257- let bZ = e
258- let bg = pow((bV * bW), 0, toBigInt(5), 1, 0, DOWN)
259- $Tuple5(C(bg, b), C(bV, bd), C(bW, be), aQ((bx + bW), (bv + bV)), bZ)
284+ let bL = e
285+ let cm = e
286+ let bt = pow((ci * cj), 0, toBigInt(5), 1, 0, DOWN)
287+ $Tuple5(G(bt, b), G(ci, bq), G(cj, br), bd((bK + cj), (bI + ci)), cm)
260288 }
261289 else {
262- let by = aQ(bx, bv)
263- let bZ = fraction(J((by - bX)), d, by)
264- let ca = z(bI, b)
265- if (if ((by != e))
266- then (bZ > ca)
290+ let bL = bd(bK, bI)
291+ let cm = fraction(N((bL - ck)), d, bL)
292+ let cn = D(bV, b)
293+ if (if ((bL != e))
294+ then (cm > cn)
267295 else false)
268- then throw(((("Price slippage " + toString(bZ)) + " exceeded the passed limit of ") + toString(ca)))
296+ then throw(((("Price slippage " + toString(cm)) + " exceeded the passed limit of ") + toString(cn)))
269297 else {
270- let bB = z(bt, b)
271- let cb = fraction(bV, by, d)
272- let cc = fraction(bW, d, by)
273- let cd = if ((cb > bW))
274- then $Tuple2(cc, bW)
275- else $Tuple2(bV, cb)
276- let ce = cd._1
277- let cf = cd._2
278- let bg = fraction(bB, cf, bx)
279- $Tuple5(C(bg, b), C(ce, bd), C(cf, be), by, bZ)
298+ let bO = D(bG, b)
299+ let co = fraction(ci, bL, d)
300+ let cp = fraction(cj, d, bL)
301+ let cq = if ((co > cj))
302+ then $Tuple2(cp, cj)
303+ else $Tuple2(ci, co)
304+ let cr = cq._1
305+ let cs = cq._2
306+ let bt = fraction(bO, cs, bK)
307+ $Tuple5(G(bt, b), G(cr, bq), G(cs, br), bL, cm)
280308 }
281309 }
282- let cg = bY._1
283- let ch = bY._2
284- let ci = bY._3
285- let bz = C(bY._4, b)
286- let cj = C(bY._5, b)
287- if ((0 >= cg))
310+ let ct = cl._1
311+ let cu = cl._2
312+ let cv = cl._3
313+ let bM = G(cl._4, b)
314+ let cw = G(cl._5, b)
315+ if ((0 >= ct))
288316 then throw("Invalid calculations. LP calculated is less than zero.")
289317 else {
290- let ck = if (!(bO))
318+ let cx = if (!(cb))
291319 then 0
292- else cg
293- let cl = (bJ - ch)
294- let cm = (bL - ci)
295- let cn = [IntegerEntry(N(), bz), IntegerEntry(O(height, lastBlock.timestamp), bz), StringEntry(R(S, bm), az(ch, ci, ck, bz, bI, cj, height, lastBlock.timestamp, cl, cm))]
296- $Tuple13(cg, ck, bz, bu, bw, bt, bp, bs, cn, cl, cm, bK, bM)
320+ else ct
321+ let cy = (bW - cu)
322+ let cz = (bY - cv)
323+ let cA = [IntegerEntry(R(), bM), IntegerEntry(S(height, lastBlock.timestamp), bM), StringEntry(V(W, bz), aM(cu, cv, cx, bM, bV, cw, height, lastBlock.timestamp, cy, cz))]
324+ $Tuple13(ct, cx, bM, bH, bJ, bG, bC, bF, cA, cy, cz, bX, bZ)
297325 }
298326 }
299327 }
300328
301329
302-func co (cp) = {
303- let bc = av()
304- let cq = bc[n]
305- let cr = bc[o]
306- let bs = parseIntValue(bc[l])
307- let bd = parseIntValue(bc[p])
308- let be = parseIntValue(bc[q])
309- let cs = aO(cq)
310- let ct = aO(cr)
311- let by = if ((cp.orderType == Buy))
312- then aT(bd, be, (cs + cp.amount), ct)
313- else aT(bd, be, (cs - cp.amount), ct)
314- let bz = C(by, b)
315- if (if (if (at())
330+func cB (cC) = {
331+ let bp = aB()
332+ let cD = bp[r]
333+ let cE = bp[s]
334+ let bF = parseIntValue(bp[p])
335+ let bq = parseIntValue(bp[t])
336+ let br = parseIntValue(bp[u])
337+ let cF = bb(cD)
338+ let cG = bb(cE)
339+ let bL = if ((cC.orderType == Buy))
340+ then bg(bq, br, (cF + cC.amount), cG)
341+ else bg(bq, br, (cF - cC.amount), cG)
342+ let bM = G(bL, b)
343+ if (if (if (az())
316344 then true
317- else (bs == i))
345+ else (bF == m))
318346 then true
319- else (bs == j))
347+ else (bF == n))
320348 then throw("Exchange operations disabled")
321349 else {
322- let cu = cp.assetPair.amountAsset
323- let cv = if ((cu == unit))
350+ let cH = cC.assetPair.amountAsset
351+ let cI = if ((cH == unit))
324352 then "WAVES"
325- else toBase58String(value(cu))
326- let cw = cp.assetPair.priceAsset
327- let cx = if ((cw == unit))
353+ else toBase58String(value(cH))
354+ let cJ = cC.assetPair.priceAsset
355+ let cK = if ((cJ == unit))
328356 then "WAVES"
329- else toBase58String(value(cw))
330- if (if ((cv != cq))
357+ else toBase58String(value(cJ))
358+ if (if ((cI != cD))
331359 then true
332- else (cx != cr))
360+ else (cK != cE))
333361 then throw("Wrong order assets.")
334362 else {
335- let cy = cp.price
336- let cz = fraction(b, be, bd)
337- let cA = F(cy, b, cz)
338- let cB = if ((cp.orderType == Buy))
339- then (bz >= cA)
340- else (cA >= bz)
363+ let cL = cC.price
364+ let cM = fraction(b, br, bq)
365+ let cN = J(cL, b, cM)
366+ let cO = if ((cC.orderType == Buy))
367+ then (bM >= cN)
368+ else (cN >= bM)
341369 true
342370 }
343371 }
344372 }
345373
346374
347-func cC (cD) = if ((size(cD.payments) != 1))
375+func cP (cQ) = if ((size(cQ.payments) != 1))
348376 then throw("exactly 1 payment is expected")
349377 else {
350- let cE = value(cD.payments[0])
351- let bn = value(cE.assetId)
352- let cF = cE.amount
353- let bY = bl(toBase58String(cD.transactionId), toBase58String(bn), cF, cD.caller)
354- let bE = bY._1
355- let bF = bY._2
356- let bs = parseIntValue(bY._9)
357- let bG = bY._10
358- if (if (at())
378+ let cR = value(cQ.payments[0])
379+ let bA = value(cR.assetId)
380+ let cS = cR.amount
381+ let cl = by(toBase58String(cQ.transactionId), toBase58String(bA), cS, cQ.caller)
382+ let bR = cl._1
383+ let bS = cl._2
384+ let bF = parseIntValue(cl._9)
385+ let bT = cl._10
386+ if (if (az())
359387 then true
360- else (bs == j))
361- then throw(("Get operation is blocked by admin. Status = " + toString(bs)))
362- else $Tuple5(bE, bF, cF, bn, bG)
388+ else (bF == n))
389+ then throw(("Get operation is blocked by admin. Status = " + toString(bF)))
390+ else $Tuple5(bR, bS, cS, bA, bT)
363391 }
364392
365393
366-func cG (cD,bI,bO) = if ((size(cD.payments) != 2))
394+func cT (cQ,bV,cb) = if ((size(cQ.payments) != 2))
367395 then throw("exactly 2 payments are expected")
368396 else {
369- let cH = value(cD.payments[0])
370- let cI = value(cD.payments[1])
371- let cJ = bH(toBase58String(cD.transactionId), bI, cH.amount, cH.assetId, cI.amount, cI.assetId, toString(cD.caller), false, bO)
372- let bs = parseIntValue(cJ._8)
373- if (if (if (at())
397+ let cU = value(cQ.payments[0])
398+ let cV = value(cQ.payments[1])
399+ let cW = bU(toBase58String(cQ.transactionId), bV, cU.amount, cU.assetId, cV.amount, cV.assetId, toString(cQ.caller), false, cb)
400+ let bF = parseIntValue(cW._8)
401+ if (if (if (az())
374402 then true
375- else (bs == h))
403+ else (bF == l))
376404 then true
377- else (bs == j))
378- then throw(("Put operation is blocked by admin. Status = " + toString(bs)))
379- else cJ
405+ else (bF == n))
406+ then throw(("Put operation is blocked by admin. Status = " + toString(bF)))
407+ else cW
380408 }
381409
382410
383-func cK () = {
384- let cL = getString(L())
385- if ($isInstanceOf(cL, "String"))
411+func cX (cY) = {
412+ let cZ = invoke(ay, "emit", [cY], nil)
413+ if ((cZ == cZ))
386414 then {
387- let cM = cL
388- fromBase58String(cM)
415+ let da = {
416+ let db = cZ
417+ if ($isInstanceOf(db, "Address"))
418+ then {
419+ let dc = db
420+ invoke(dc, "emit", [cY], nil)
421+ }
422+ else unit
423+ }
424+ if ((da == da))
425+ then cY
426+ else throw("Strict value is not equal to itself.")
389427 }
390- else if ($isInstanceOf(cL, "Unit"))
428+ else throw("Strict value is not equal to itself.")
429+ }
430+
431+
432+func dd (de,df,W,X) = {
433+ let dg = (X == unit)
434+ let dh = aH(aB())
435+ let di = dh._1
436+ let bF = dh._2
437+ let bC = dh._3
438+ let dj = dh._4
439+ let cE = dh._5
440+ let dk = dh._6
441+ let dl = dh._7
442+ let dm = de
443+ let dn = if ((df == dj))
444+ then bb(aG(dj))
445+ else if ((df == cE))
446+ then bb(aG(cE))
447+ else aw("invalid asset")
448+ let do = if (dg)
449+ then 0
450+ else dm
451+ let dp = (dn - do)
452+ let dq = toBigInt(dp)
453+ let dr = toBigInt(valueOrErrorMessage(assetInfo(bC), (("asset " + toBase58String(bC)) + " doesn't exist")).quantity)
454+ let ds = toBigInt(dm)
455+ let dt = ((dr * (sqrtBigInt((c + ((ds * c) / dq)), 8, 8, DOWN) - c)) / c)
456+ toInt(dt)
457+ }
458+
459+
460+func du (dv,dm,df,W,X) = {
461+ let dg = (X == unit)
462+ let dw = aH(aB())
463+ let di = dw._1
464+ let bF = dw._2
465+ let bC = dw._3
466+ let dj = dw._4
467+ let cE = dw._5
468+ let dk = dw._6
469+ let dl = dw._7
470+ let dx = [if ((df == bC))
471+ then true
472+ else throw("invalid lp asset")]
473+ if ((dx == dx))
474+ then {
475+ let dq = if ((dv == dj))
476+ then toBigInt(bb(aG(dj)))
477+ else if ((dv == cE))
478+ then toBigInt(bb(aG(cE)))
479+ else aw("invalid asset")
480+ let dr = toBigInt(valueOrErrorMessage(assetInfo(bC), (("asset " + toBase58String(bC)) + " doesn't exist")).quantity)
481+ let dy = toBigInt(dm)
482+ let cY = ((dq * (c - pow((c - ((dy * c) / dr)), 8, h, 0, 8, DOWN))) / c)
483+ toInt(cY)
484+ }
485+ else throw("Strict value is not equal to itself.")
486+ }
487+
488+
489+func dz () = {
490+ let db = getString(P())
491+ if ($isInstanceOf(db, "String"))
492+ then {
493+ let dA = db
494+ fromBase58String(dA)
495+ }
496+ else if ($isInstanceOf(db, "Unit"))
391497 then unit
392498 else throw("Match error")
393499 }
394500
395501
396-func cN () = {
397- let cL = getString(M())
398- if ($isInstanceOf(cL, "String"))
502+func dB () = {
503+ let db = getString(Q())
504+ if ($isInstanceOf(db, "String"))
399505 then {
400- let cM = cL
401- fromBase58String(cM)
506+ let dA = db
507+ fromBase58String(dA)
402508 }
403- else if ($isInstanceOf(cL, "Unit"))
509+ else if ($isInstanceOf(db, "Unit"))
404510 then unit
405511 else throw("Match error")
406512 }
407513
408514
409-func cO (cD) = {
410- let cP = throw("Permission denied")
411- let cL = cK()
412- if ($isInstanceOf(cL, "ByteVector"))
515+func dC (cQ) = {
516+ let dD = throw("Permission denied")
517+ let db = dz()
518+ if ($isInstanceOf(db, "ByteVector"))
413519 then {
414- let cQ = cL
415- if ((cD.callerPublicKey == cQ))
520+ let dE = db
521+ if ((cQ.callerPublicKey == dE))
416522 then true
417- else cP
523+ else dD
418524 }
419- else if ($isInstanceOf(cL, "Unit"))
420- then if ((cD.caller == this))
525+ else if ($isInstanceOf(db, "Unit"))
526+ then if ((cQ.caller == this))
421527 then true
422- else cP
528+ else dD
423529 else throw("Match error")
424530 }
425531
426532
427-@Callable(cD)
428-func constructor (as) = {
429- let cR = cO(cD)
430- if ((cR == cR))
431- then [StringEntry(K(), as)]
432- else throw("Strict value is not equal to itself.")
433- }
434-
435-
436-
437-@Callable(cD)
438-func setManager (cS) = {
439- let cR = cO(cD)
440- if ((cR == cR))
533+@Callable(cQ)
534+func setManager (dF) = {
535+ let dG = dC(cQ)
536+ if ((dG == dG))
441537 then {
442- let cT = fromBase58String(cS)
443- if ((cT == cT))
444- then [StringEntry(M(), cS)]
538+ let dH = fromBase58String(dF)
539+ if ((dH == dH))
540+ then [StringEntry(Q(), dF)]
445541 else throw("Strict value is not equal to itself.")
446542 }
447543 else throw("Strict value is not equal to itself.")
448544 }
449545
450546
451547
452-@Callable(cD)
548+@Callable(cQ)
453549 func confirmManager () = {
454- let cU = cN()
455- let cV = if (isDefined(cU))
550+ let dI = dB()
551+ let dJ = if (isDefined(dI))
456552 then true
457553 else throw("No pending manager")
458- if ((cV == cV))
554+ if ((dJ == dJ))
459555 then {
460- let cW = if ((cD.callerPublicKey == value(cU)))
556+ let dK = if ((cQ.callerPublicKey == value(dI)))
461557 then true
462558 else throw("You are not pending manager")
463- if ((cW == cW))
464- then [StringEntry(L(), toBase58String(value(cU))), DeleteEntry(M())]
559+ if ((dK == dK))
560+ then [StringEntry(P(), toBase58String(value(dI))), DeleteEntry(Q())]
465561 else throw("Strict value is not equal to itself.")
466562 }
467563 else throw("Strict value is not equal to itself.")
468564 }
469565
470566
471567
472-@Callable(cD)
473-func put (bI,cX) = {
474- let cY = ay()
475- let cZ = valueOrErrorMessage(addressFromString(cY[x]), "Error. Incorrect staking address.")
476- let da = valueOrErrorMessage(addressFromString(cY[y]), "Error. Incorrect slippage contract address.")
477- if ((0 > bI))
478- then throw("Invalid slippageTolerance passed")
479- else {
480- let cJ = cG(cD, bI, true)
481- let ck = cJ._2
482- let bp = cJ._7
483- let bG = cJ._9
484- let cl = cJ._10
485- let cm = cJ._11
486- let db = cJ._12
487- let dc = cJ._13
488- let dd = invoke(as, "emit", [ck], nil)
489- if ((dd == dd))
490- then {
491- let de = {
492- let cL = dd
493- if ($isInstanceOf(cL, "Address"))
568+@Callable(cQ)
569+func put (bV,dL) = if ((0 > bV))
570+ then throw("Invalid slippageTolerance passed")
571+ else {
572+ let cW = cT(cQ, bV, true)
573+ let cx = cW._2
574+ let bC = cW._7
575+ let bT = cW._9
576+ let cy = cW._10
577+ let cz = cW._11
578+ let dM = cW._12
579+ let dN = cW._13
580+ let cZ = invoke(ay, "emit", [cx], nil)
581+ if ((cZ == cZ))
582+ then {
583+ let da = {
584+ let db = cZ
585+ if ($isInstanceOf(db, "Address"))
586+ then {
587+ let dc = db
588+ invoke(dc, "emit", [cx], nil)
589+ }
590+ else unit
591+ }
592+ if ((da == da))
593+ then {
594+ let dO = if ((cy > 0))
595+ then invoke(aL, "put", nil, [AttachedPayment(dM, cy)])
596+ else nil
597+ if ((dO == dO))
494598 then {
495- let df = cL
496- invoke(df, "emit", [ck], nil)
599+ let dP = if ((cz > 0))
600+ then invoke(aL, "put", nil, [AttachedPayment(dN, cz)])
601+ else nil
602+ if ((dP == dP))
603+ then {
604+ let dQ = if (dL)
605+ then {
606+ let dR = invoke(aK, "stake", nil, [AttachedPayment(bC, cx)])
607+ if ((dR == dR))
608+ then nil
609+ else throw("Strict value is not equal to itself.")
610+ }
611+ else [ScriptTransfer(cQ.caller, cx, bC)]
612+ (bT ++ dQ)
613+ }
614+ else throw("Strict value is not equal to itself.")
497615 }
498- else unit
616+ else throw("Strict value is not equal to itself.")
499617 }
500- if ((de == de))
501- then {
502- let dg = if ((cl > 0))
503- then invoke(da, "put", nil, [AttachedPayment(db, cl)])
504- else nil
505- if ((dg == dg))
506- then {
507- let dh = if ((cm > 0))
508- then invoke(da, "put", nil, [AttachedPayment(dc, cm)])
509- else nil
510- if ((dh == dh))
511- then {
512- let di = if (cX)
513- then {
514- let dj = invoke(cZ, "stake", nil, [AttachedPayment(bp, ck)])
515- if ((dj == dj))
516- then nil
517- else throw("Strict value is not equal to itself.")
518- }
519- else [ScriptTransfer(cD.caller, ck, bp)]
520- (bG ++ di)
521- }
522- else throw("Strict value is not equal to itself.")
523- }
524- else throw("Strict value is not equal to itself.")
525- }
526- else throw("Strict value is not equal to itself.")
527- }
528- else throw("Strict value is not equal to itself.")
529- }
530- }
531-
532-
533-
534-@Callable(cD)
535-func putForFree (dk) = if ((0 > dk))
536- then throw("Invalid value passed")
537- else {
538- let cJ = cG(cD, dk, false)
539- cJ._9
618+ else throw("Strict value is not equal to itself.")
619+ }
620+ else throw("Strict value is not equal to itself.")
540621 }
541622
542623
543624
544-@Callable(cD)
545-func get () = {
546- let bY = cC(cD)
547- let dl = bY._1
548- let bF = bY._2
549- let cF = bY._3
550- let bn = bY._4
551- let bG = bY._5
552- let dm = invoke(as, "burn", [cF], [AttachedPayment(bn, cF)])
553- if ((dm == dm))
554- then bG
625+@Callable(cQ)
626+func putForFree (dS) = if ((0 > dS))
627+ then throw("Invalid value passed")
628+ else {
629+ let cW = cT(cQ, dS, false)
630+ cW._9
631+ }
632+
633+
634+
635+@Callable(cQ)
636+func putOneTkn (dT,dU) = {
637+ let dV = aH(aB())
638+ let di = dV._1
639+ let bF = dV._2
640+ let bC = dV._3
641+ let dj = dV._4
642+ let cE = dV._5
643+ let dk = dV._6
644+ let dl = dV._7
645+ let dW = if (if (az())
646+ then true
647+ else (bF == l))
648+ then true
649+ else (bF == n)
650+ let dx = [if (!(dW))
651+ then true
652+ else aw("put operation is blocked by admin"), if ((size(cQ.payments) == 1))
653+ then true
654+ else aw("exactly 1 payment are expected")]
655+ if ((dx == dx))
656+ then {
657+ let dX = cQ.payments[0]
658+ let df = dX.assetId
659+ let de = dX.amount
660+ let dm = de
661+ let W = cQ.caller
662+ let X = cQ.transactionId
663+ let dY = {
664+ let dZ = dd(de, df, W, X)
665+ if (if ((dT > 0))
666+ then (dT > dZ)
667+ else false)
668+ then throw(makeString(["amount to receive is less than ", toString(dT)], ""))
669+ else dZ
670+ }
671+ let cZ = cX(dY)
672+ if ((cZ == cZ))
673+ then {
674+ let dQ = if (dU)
675+ then {
676+ let ea = invoke(aK, "stake", nil, [AttachedPayment(bC, dY)])
677+ if ((ea == ea))
678+ then nil
679+ else throw("Strict value is not equal to itself.")
680+ }
681+ else [ScriptTransfer(cQ.caller, dY, bC)]
682+ $Tuple2(dQ, dY)
683+ }
684+ else throw("Strict value is not equal to itself.")
685+ }
555686 else throw("Strict value is not equal to itself.")
556687 }
557688
558689
559690
560-@Callable(cD)
561-func getNoLess (dn,do) = {
562- let bY = cC(cD)
563- let bE = bY._1
564- let bF = bY._2
565- let cF = bY._3
566- let bn = bY._4
567- let bG = bY._5
568- if ((dn > bE))
569- then throw(((("noLessThenAmtAsset failed: " + toString(bE)) + " < ") + toString(dn)))
570- else if ((do > bF))
571- then throw(((("noLessThenPriceAsset failed: " + toString(bF)) + " < ") + toString(do)))
691+@Callable(cQ)
692+func getOneTkn (dv,dT,eb) = {
693+ let ec = aH(aB())
694+ let di = ec._1
695+ let bF = ec._2
696+ let bC = ec._3
697+ let dj = ec._4
698+ let cE = ec._5
699+ let dk = ec._6
700+ let dl = ec._7
701+ let ed = if (az())
702+ then true
703+ else (bF == n)
704+ let dx = [if (!(ed))
705+ then true
706+ else aw("get operation is blocked by admin"), if ((size(cQ.payments) == 1))
707+ then true
708+ else aw("exactly 1 payment are expected")]
709+ if ((dx == dx))
710+ then {
711+ let dX = cQ.payments[0]
712+ let df = dX.assetId
713+ let dm = dX.amount
714+ let W = cQ.caller
715+ let X = cQ.transactionId
716+ let cY = {
717+ let ee = du(aE(dv), dm, df, W, X)
718+ if (if ((dT > 0))
719+ then (dT > ee)
720+ else false)
721+ then throw(makeString(["amount to receive is less than ", toString(dT)], ""))
722+ else ee
723+ }
724+ let ef = invoke(ay, "burn", [dm], [AttachedPayment(df, dm)])
725+ if ((ef == ef))
726+ then {
727+ let eg = [ScriptTransfer(W, cY, aE(dv))]
728+ $Tuple2(eg, cY)
729+ }
730+ else throw("Strict value is not equal to itself.")
731+ }
732+ else throw("Strict value is not equal to itself.")
733+ }
734+
735+
736+
737+@Callable(cQ)
738+func get () = {
739+ let cl = cP(cQ)
740+ let eh = cl._1
741+ let bS = cl._2
742+ let cS = cl._3
743+ let bA = cl._4
744+ let bT = cl._5
745+ let ei = invoke(ay, "burn", [cS], [AttachedPayment(bA, cS)])
746+ if ((ei == ei))
747+ then bT
748+ else throw("Strict value is not equal to itself.")
749+ }
750+
751+
752+
753+@Callable(cQ)
754+func getNoLess (ej,ek) = {
755+ let cl = cP(cQ)
756+ let bR = cl._1
757+ let bS = cl._2
758+ let cS = cl._3
759+ let bA = cl._4
760+ let bT = cl._5
761+ if ((ej > bR))
762+ then throw(((("noLessThenAmtAsset failed: " + toString(bR)) + " < ") + toString(ej)))
763+ else if ((ek > bS))
764+ then throw(((("noLessThenPriceAsset failed: " + toString(bS)) + " < ") + toString(ek)))
572765 else {
573- let dm = invoke(as, "burn", [cF], [AttachedPayment(bn, cF)])
574- if ((dm == dm))
575- then bG
766+ let ei = invoke(ay, "burn", [cS], [AttachedPayment(bA, cS)])
767+ if ((ei == ei))
768+ then bT
576769 else throw("Strict value is not equal to itself.")
577770 }
578771 }
579772
580773
581774
582-@Callable(cD)
583-func unstakeAndGet (dp) = {
584- let dq = if ((size(cD.payments) != 0))
775+@Callable(cQ)
776+func unstakeAndGet (cY) = {
777+ let el = if ((size(cQ.payments) != 0))
585778 then throw("No payments are expected")
586779 else true
587- if ((dq == dq))
780+ if ((el == el))
588781 then {
589- let bc = av()
590- let cY = ay()
591- let bp = fromBase58String(bc[m])
592- let cZ = valueOrErrorMessage(addressFromString(cY[x]), "Error. Incorrect staking address.")
593- let dr = invoke(cZ, "unstake", [toBase58String(bp), dp], nil)
594- if ((dr == dr))
782+ let bp = aB()
783+ let bC = fromBase58String(bp[q])
784+ let em = invoke(aK, "unstake", [toBase58String(bC), cY], nil)
785+ if ((em == em))
595786 then {
596- let bY = bl(toBase58String(cD.transactionId), toBase58String(bp), dp, cD.caller)
597- let bs = parseIntValue(bY._9)
598- let bG = bY._10
599- let ds = if (if (at())
787+ let cl = by(toBase58String(cQ.transactionId), toBase58String(bC), cY, cQ.caller)
788+ let bF = parseIntValue(cl._9)
789+ let bT = cl._10
790+ let en = if (if (az())
600791 then true
601- else (bs == j))
602- then throw(("Get operation is blocked by admin. Status = " + toString(bs)))
792+ else (bF == n))
793+ then throw(("Get operation is blocked by admin. Status = " + toString(bF)))
603794 else true
604- if ((ds == ds))
795+ if ((en == en))
605796 then {
606- let dm = invoke(as, "burn", [dp], [AttachedPayment(bp, dp)])
607- if ((dm == dm))
608- then bG
797+ let ei = invoke(ay, "burn", [cY], [AttachedPayment(bC, cY)])
798+ if ((ei == ei))
799+ then bT
609800 else throw("Strict value is not equal to itself.")
610801 }
611802 else throw("Strict value is not equal to itself.")
612803 }
613804 else throw("Strict value is not equal to itself.")
614805 }
615806 else throw("Strict value is not equal to itself.")
616807 }
617808
618809
619810
620-@Callable(cD)
621-func activate (dt,du) = if ((toString(cD.caller) != toString(as)))
811+@Callable(cQ)
812+func activate (eo,ep) = if ((toString(cQ.caller) != toString(ay)))
622813 then throw("permissions denied")
623- else $Tuple2([StringEntry(V(), dt), StringEntry(W(), du)], "success")
814+ else $Tuple2([StringEntry(Z(), eo), StringEntry(aa(), ep)], "success")
624815
625816
626817
627-@Callable(cD)
628-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, av())
818+@Callable(cQ)
819+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aB())
629820
630821
631822
632-@Callable(cD)
633-func getAccBalanceWrapperREADONLY (aP) = $Tuple2(nil, aO(aP))
823+@Callable(cQ)
824+func getAccBalanceWrapperREADONLY (bc) = $Tuple2(nil, bb(bc))
634825
635826
636827
637-@Callable(cD)
638-func calcPricesWrapperREADONLY (aW,aX,bb) = {
639- let bk = ba(aW, aX, bb)
640- $Tuple2(nil, [toString(bk[0]), toString(bk[1]), toString(bk[2])])
828+@Callable(cQ)
829+func calcPricesWrapperREADONLY (bj,bk,bo) = {
830+ let bx = bn(bj, bk, bo)
831+ $Tuple2(nil, [toString(bx[0]), toString(bx[1]), toString(bx[2])])
641832 }
642833
643834
644835
645-@Callable(cD)
646-func toX18WrapperREADONLY (A,B) = $Tuple2(nil, toString(z(A, B)))
836+@Callable(cQ)
837+func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
647838
648839
649840
650-@Callable(cD)
651-func fromX18WrapperREADONLY (D,E) = $Tuple2(nil, C(parseBigIntValue(D), E))
841+@Callable(cQ)
842+func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
652843
653844
654845
655-@Callable(cD)
656-func calcPriceBigIntWrapperREADONLY (aR,aS) = $Tuple2(nil, toString(aQ(parseBigIntValue(aR), parseBigIntValue(aS))))
846+@Callable(cQ)
847+func calcPriceBigIntWrapperREADONLY (be,bf) = $Tuple2(nil, toString(bd(parseBigIntValue(be), parseBigIntValue(bf))))
657848
658849
659850
660-@Callable(cD)
661-func estimatePutOperationWrapperREADONLY (bm,bI,bJ,bK,bL,bM,S,bN,bO) = $Tuple2(nil, bH(bm, bI, bJ, bK, bL, bM, S, bN, bO))
851+@Callable(cQ)
852+func estimatePutOperationWrapperREADONLY (bz,bV,bW,bX,bY,bZ,W,ca,cb) = $Tuple2(nil, bU(bz, bV, bW, bX, bY, bZ, W, ca, cb))
662853
663854
664855
665-@Callable(cD)
666-func estimateGetOperationWrapperREADONLY (bm,bn,bo,S) = {
667- let bY = bl(bm, bn, bo, addressFromStringValue(S))
668- $Tuple2(nil, $Tuple10(bY._1, bY._2, bY._3, bY._4, bY._5, bY._6, bY._7, toString(bY._8), bY._9, bY._10))
856+@Callable(cQ)
857+func estimateGetOperationWrapperREADONLY (bz,bA,bB,W) = {
858+ let cl = by(bz, bA, bB, addressFromStringValue(W))
859+ $Tuple2(nil, $Tuple10(cl._1, cl._2, cl._3, cl._4, cl._5, cl._6, cl._7, toString(cl._8), cl._9, cl._10))
669860 }
670861
671862
672863
673-@Callable(cD)
864+@Callable(cQ)
674865 func statsREADONLY () = {
675- let bc = av()
676- let bp = fromBase58String(bc[m])
677- let cq = bc[n]
678- let cr = bc[o]
679- let bR = bc[r]
680- let bS = bc[s]
681- let bd = parseIntValue(bc[p])
682- let be = parseIntValue(bc[q])
683- let dv = valueOrErrorMessage(assetInfo(bp), (("Asset " + toBase58String(bp)) + " doesn't exist")).quantity
684- let cs = aO(cq)
685- let ct = aO(cr)
686- let dw = if ((dv == 0))
866+ let bp = aB()
867+ let bC = fromBase58String(bp[q])
868+ let cD = bp[r]
869+ let cE = bp[s]
870+ let ce = bp[v]
871+ let cf = bp[w]
872+ let bq = parseIntValue(bp[t])
873+ let br = parseIntValue(bp[u])
874+ let eq = valueOrErrorMessage(assetInfo(bC), (("Asset " + toBase58String(bC)) + " doesn't exist")).quantity
875+ let cF = bb(cD)
876+ let cG = bb(cE)
877+ let er = if ((eq == 0))
687878 then [e, e, e]
688- else ba(cs, ct, dv)
689- let bz = 0
690- let dx = C(dw[1], b)
691- let dy = C(dw[2], b)
692- let dz = value(getInteger(as, ah(toString(this))))
693- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cs), toString(ct), toString(dv), toString(bz), toString(dx), toString(dy), toString(dz)], f))
879+ else bn(cF, cG, eq)
880+ let bM = 0
881+ let es = G(er[1], b)
882+ let et = G(er[2], b)
883+ let eu = value(getInteger(ay, al(toString(this))))
884+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cF), toString(cG), toString(eq), toString(bM), toString(es), toString(et), toString(eu)], j))
694885 }
695886
696887
697888
698-@Callable(cD)
699-func evaluatePutByAmountAssetREADONLY (bJ) = {
700- let bc = av()
701- let bp = fromBase58String(bc[m])
702- let bP = bc[n]
703- let bq = fromBase58String(bP)
704- let bQ = bc[o]
705- let br = fromBase58String(bQ)
706- let bd = parseIntValue(bc[p])
707- let be = parseIntValue(bc[q])
708- let bs = bc[l]
709- let dv = valueOrErrorMessage(assetInfo(bp), (("Asset " + toBase58String(bp)) + " doesn't exist")).quantity
710- let cs = aO(bP)
711- let ct = aO(bQ)
712- let aY = z(cs, bd)
713- let aZ = z(ct, be)
714- let by = if ((dv == 0))
889+@Callable(cQ)
890+func evaluatePutByAmountAssetREADONLY (bW) = {
891+ let bp = aB()
892+ let bC = fromBase58String(bp[q])
893+ let cc = bp[r]
894+ let bD = fromBase58String(cc)
895+ let cd = bp[s]
896+ let bE = fromBase58String(cd)
897+ let bq = parseIntValue(bp[t])
898+ let br = parseIntValue(bp[u])
899+ let bF = bp[p]
900+ let eq = valueOrErrorMessage(assetInfo(bC), (("Asset " + toBase58String(bC)) + " doesn't exist")).quantity
901+ let cF = bb(cc)
902+ let cG = bb(cd)
903+ let bl = D(cF, bq)
904+ let bm = D(cG, br)
905+ let bL = if ((eq == 0))
715906 then e
716- else aQ(aZ, aY)
717- let bV = z(bJ, bd)
718- let bW = fraction(bV, by, d)
719- let bL = C(bW, be)
720- let cJ = bH("", 500000, bJ, bq, bL, br, "", true, false)
721- let cg = cJ._1
722- let dA = cJ._3
723- let bu = cJ._4
724- let bw = cJ._5
725- let bt = cJ._6
726- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cg), toString(C(by, b)), toString(bu), toString(bw), toString(bt), bs, toString(bJ), toString(bL)], f))
907+ else bd(bm, bl)
908+ let ci = D(bW, bq)
909+ let cj = fraction(ci, bL, d)
910+ let bY = G(cj, br)
911+ let cW = bU("", 500000, bW, bD, bY, bE, "", true, false)
912+ let ct = cW._1
913+ let ev = cW._3
914+ let bH = cW._4
915+ let bJ = cW._5
916+ let bG = cW._6
917+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ct), toString(G(bL, b)), toString(bH), toString(bJ), toString(bG), bF, toString(bW), toString(bY)], j))
727918 }
728919
729920
730921
731-@Callable(cD)
732-func evaluatePutByPriceAssetREADONLY (bL) = {
733- let bc = av()
734- let bp = fromBase58String(bc[m])
735- let bP = bc[n]
736- let bq = fromBase58String(bP)
737- let bQ = bc[o]
738- let br = fromBase58String(bQ)
739- let bd = parseIntValue(bc[p])
740- let be = parseIntValue(bc[q])
741- let bs = bc[l]
742- let dv = valueOrErrorMessage(assetInfo(bp), (("Asset " + toBase58String(bp)) + " doesn't exist")).quantity
743- let dB = aO(bP)
744- let dC = aO(bQ)
745- let dD = z(dB, bd)
746- let dE = z(dC, be)
747- let by = if ((dv == 0))
922+@Callable(cQ)
923+func evaluatePutByPriceAssetREADONLY (bY) = {
924+ let bp = aB()
925+ let bC = fromBase58String(bp[q])
926+ let cc = bp[r]
927+ let bD = fromBase58String(cc)
928+ let cd = bp[s]
929+ let bE = fromBase58String(cd)
930+ let bq = parseIntValue(bp[t])
931+ let br = parseIntValue(bp[u])
932+ let bF = bp[p]
933+ let eq = valueOrErrorMessage(assetInfo(bC), (("Asset " + toBase58String(bC)) + " doesn't exist")).quantity
934+ let ew = bb(cc)
935+ let ex = bb(cd)
936+ let ey = D(ew, bq)
937+ let ez = D(ex, br)
938+ let bL = if ((eq == 0))
748939 then e
749- else aQ(dE, dD)
750- let bW = z(bL, be)
751- let bV = fraction(bW, d, by)
752- let bJ = C(bV, bd)
753- let cJ = bH("", 500000, bJ, bq, bL, br, "", true, false)
754- let cg = cJ._1
755- let dA = cJ._3
756- let bu = cJ._4
757- let bw = cJ._5
758- let bt = cJ._6
759- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cg), toString(C(by, b)), toString(bu), toString(bw), toString(bt), bs, toString(bJ), toString(bL)], f))
940+ else bd(ez, ey)
941+ let cj = D(bY, br)
942+ let ci = fraction(cj, d, bL)
943+ let bW = G(ci, bq)
944+ let cW = bU("", 500000, bW, bD, bY, bE, "", true, false)
945+ let ct = cW._1
946+ let ev = cW._3
947+ let bH = cW._4
948+ let bJ = cW._5
949+ let bG = cW._6
950+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ct), toString(G(bL, b)), toString(bH), toString(bJ), toString(bG), bF, toString(bW), toString(bY)], j))
760951 }
761952
762953
763954
764-@Callable(cD)
765-func evaluateGetREADONLY (dF,dG) = {
766- let bY = bl("", dF, dG, this)
767- let bE = bY._1
768- let bF = bY._2
769- let bu = bY._5
770- let bw = bY._6
771- let bt = bY._7
772- let bz = bY._8
773- let bs = parseIntValue(bY._9)
774- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(bE), toString(bF), toString(bu), toString(bw), toString(bt), toString(bz), toString(bs)], f))
955+@Callable(cQ)
956+func evaluateGetREADONLY (eA,eB) = {
957+ let cl = by("", eA, eB, this)
958+ let bR = cl._1
959+ let bS = cl._2
960+ let bH = cl._5
961+ let bJ = cl._6
962+ let bG = cl._7
963+ let bM = cl._8
964+ let bF = parseIntValue(cl._9)
965+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(bR), toString(bS), toString(bH), toString(bJ), toString(bG), toString(bM), toString(bF)], j))
775966 }
776967
777968
778-@Verifier(dH)
779-func dI () = {
780- let dJ = {
781- let cL = cK()
782- if ($isInstanceOf(cL, "ByteVector"))
969+@Verifier(eC)
970+func eD () = {
971+ let eE = {
972+ let db = dz()
973+ if ($isInstanceOf(db, "ByteVector"))
783974 then {
784- let cQ = cL
785- cQ
975+ let dE = db
976+ dE
786977 }
787- else if ($isInstanceOf(cL, "Unit"))
788- then dH.senderPublicKey
978+ else if ($isInstanceOf(db, "Unit"))
979+ then eC.senderPublicKey
789980 else throw("Match error")
790981 }
791- let cL = dH
792- if ($isInstanceOf(cL, "Order"))
982+ let db = eC
983+ if ($isInstanceOf(db, "Order"))
793984 then {
794- let cp = cL
795- let dK = au()
796- let al = co(cp)
797- let am = sigVerify(cp.bodyBytes, cp.proofs[0], cp.senderPublicKey)
798- let an = sigVerify(cp.bodyBytes, cp.proofs[1], dK)
799- if (if (if (al)
800- then am
985+ let cC = db
986+ let eF = aA()
987+ let ap = cB(cC)
988+ let aq = sigVerify(cC.bodyBytes, cC.proofs[0], cC.senderPublicKey)
989+ let ar = sigVerify(cC.bodyBytes, cC.proofs[1], eF)
990+ if (if (if (ap)
991+ then aq
801992 else false)
802- then an
993+ then ar
803994 else false)
804995 then true
805- else ak(al, am, an)
996+ else ao(ap, aq, ar)
806997 }
807- else if ($isInstanceOf(cL, "SetScriptTransaction"))
998+ else if ($isInstanceOf(db, "SetScriptTransaction"))
808999 then {
809- let cM = cL
810- let dL = blake2b256(value(cM.script))
811- let dM = fromBase64String(value(getString(as, aj())))
812- let dN = scriptHash(this)
813- if (if ((dM == dL))
814- then (dN != dL)
1000+ let dA = db
1001+ let eG = blake2b256(value(dA.script))
1002+ let eH = fromBase64String(value(getString(ay, an())))
1003+ let eI = scriptHash(this)
1004+ if (if ((eH == eG))
1005+ then (eI != eG)
8151006 else false)
8161007 then true
817- else sigVerify(dH.bodyBytes, dH.proofs[0], dJ)
1008+ else sigVerify(eC.bodyBytes, eC.proofs[0], eE)
8181009 }
819- else sigVerify(dH.bodyBytes, dH.proofs[0], dJ)
1010+ else sigVerify(eC.bodyBytes, eC.proofs[0], eE)
8201011 }
8211012

github/deemru/w8io/026f985 
264.15 ms