tx · J4Grg3KAFzWz6BRLjFozgvfhG2DzZQtL8uo4HD7zLT8w

3N4yYqBkTUq1mDdHhvAd3St7spCbm84DytS:  -0.02200000 Waves

2023.11.29 12:53 [2864540] smart account 3N4yYqBkTUq1mDdHhvAd3St7spCbm84DytS > SELF 0.00000000 Waves

{ "type": 13, "id": "J4Grg3KAFzWz6BRLjFozgvfhG2DzZQtL8uo4HD7zLT8w", "fee": 2200000, "feeAssetId": null, "timestamp": 1701251617599, "version": 1, "sender": "3N4yYqBkTUq1mDdHhvAd3St7spCbm84DytS", "senderPublicKey": "8h7G4haeVwXKNHXNHsWkC1miUp5CQtk3WmpBKazQPxRh", "proofs": [ "4PgWm7G3nExG68UB2vxMwdEFcqz4PtyDhhtFmpRU893CCTi3CJL87XQUyHhULAQ4wgTq1TbqywV2qXNJe7WveDKJ" ], "script": "base64:BgI0CAISAwoBARIDCgEBEgASAwoBCBIDCgEBEgMKAQgSAwoBCBIECgIYERIDCgEIEgASAwoBCEAADGNvbnRyYWN0RmlsZQIRbDJtcF9zdGFraW5nLnJpZGUAA1NFUAICX18ABnNjYWxlOACAwtcvAAdzY2FsZTE4AICAkLu61q3wDQANc2NhbGUxOEJpZ0ludAkAtgIBBQdzY2FsZTE4ABJBRERSRVNTX0JZVEVTX1NJWkUAGgANQkxPQ0tTX0lOX0RBWQCgCwEIdGhyb3dFcnIBA21zZwkAAgEJAKwCAgkArAICBQxjb250cmFjdEZpbGUCAjogBQNtc2cACmtleUFzc2V0SWQJALkJAgkAzAgCAgIlcwkAzAgCAgdhc3NldElkBQNuaWwFA1NFUAATa2V5RW1pc3Npb25QZXJCbG9jawkAuQkCCQDMCAICAiVzCQDMCAICEGVtaXNzaW9uUGVyQmxvY2sFA25pbAUDU0VQABlrZXlFbWlzc2lvblBlcmlvZEluQmxvY2tzCQC5CQIJAMwIAgICJXMJAMwIAgIWZW1pc3Npb25QZXJpb2RJbkJsb2NrcwUDbmlsBQNTRVAADWtleVN0YXJ0QmxvY2sJALkJAgkAzAgCAgIlcwkAzAgCAgpzdGFydEJsb2NrBQNuaWwFA1NFUAAQa2V5VG90YWxMcEFtb3VudAkAuQkCCQDMCAICAiVzCQDMCAICDXRvdGFsTHBBbW91bnQFA25pbAUDU0VQABNrZXlUb3RhbEFzc2V0QW1vdW50CQC5CQIJAMwIAgICJXMJAMwIAgIQdG90YWxBc3NldEFtb3VudAUDbmlsBQNTRVAAFmtleVRvdGFsTG9ja2VkTHBBbW91bnQJALkJAgkAzAgCAgIlcwkAzAgCAhN0b3RhbExvY2tlZExwQW1vdW50BQNuaWwFA1NFUAEPa2V5VXNlckxwQW1vdW50AQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgIMdXNlckxwQW1vdW50CQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwFA1NFUAEVa2V5VXNlckxvY2tlZExwQW1vdW50AQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgISdXNlckxvY2tlZExwQW1vdW50CQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwFA1NFUAETa2V5VXNlclN0YWtpbmdOb2RlcwELdXNlckFkZHJlc3MJALkJAgkAzAgCAgQlcyVzCQDMCAICEHVzZXJTdGFraW5nTm9kZXMJAMwIAgULdXNlckFkZHJlc3MFA25pbAUDU0VQARlrZXlVc2VyU3Rha2luZ05vZGVzU2hhcmVzAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgIWdXNlclN0YWtpbmdOb2Rlc1NoYXJlcwkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABGmtleVVzZXJUb3RhbEFzc2V0V2l0aGRyYXduAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgITdG90YWxBc3NldFdpdGhkcmF3bgkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABF2tleVVzZXJUb3RhbEFzc2V0U3Rha2VkAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgIQdG90YWxBc3NldFN0YWtlZAkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABCmtleUhpc3RvcnkDBHR5cGULdXNlckFkZHJlc3MEdHhJZAkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQR0eXBlCQDMCAIFC3VzZXJBZGRyZXNzCQDMCAIJANgEAQUEdHhJZAUDbmlsBQNTRVABDWZvcm1hdEhpc3RvcnkEC3RvdGFsUHJvZml0BXByaWNlEHRvdGFsQXNzZXRBbW91bnQNdG90YWxMcEFtb3VudAkAuQkCCQDMCAICCCVkJWQlZCVkCQDMCAIJAKQDAQULdG90YWxQcm9maXQJAMwIAgkApgMBBQVwcmljZQkAzAgCCQCkAwEFEHRvdGFsQXNzZXRBbW91bnQJAMwIAgkApAMBBQ10b3RhbExwQW1vdW50BQNuaWwFA1NFUAANdG90YWxMcEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRBrZXlUb3RhbExwQW1vdW50AAAAEHRvdGFsQXNzZXRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUTa2V5VG90YWxBc3NldEFtb3VudAAAABN0b3RhbExvY2tlZExwQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFFmtleVRvdGFsTG9ja2VkTHBBbW91bnQAAAANYXNzZXRJZFN0cmluZwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQprZXlBc3NldElkAgVXQVZFUwAMYXNzZXRJZEJ5dGVzAwkAAAIFDWFzc2V0SWRTdHJpbmcCBVdBVkVTBQR1bml0CQDZBAEFDWFzc2V0SWRTdHJpbmcAFmVtaXNzaW9uUGVyaW9kSW5CbG9ja3MJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUZa2V5RW1pc3Npb25QZXJpb2RJbkJsb2NrcwUNQkxPQ0tTX0lOX0RBWQAQZW1pc3Npb25QZXJCbG9jawkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRNrZXlFbWlzc2lvblBlckJsb2NrAAAAEWVtaXNzaW9uUGVyUGVyaW9kCQBoAgUQZW1pc3Npb25QZXJCbG9jawUWZW1pc3Npb25QZXJpb2RJbkJsb2NrcwAPQURNSU5fTElTVF9TSVpFAAUABlFVT1JVTQADABFUWElEX0JZVEVTX0xFTkdUSAAgARhrZXlBbGxvd2VkVHhJZFZvdGVQcmVmaXgBBHR4SWQJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIJYWxsb3dUeElkCQDMCAIFBHR4SWQFA25pbAUDU0VQARBrZXlGdWxsQWRtaW5Wb3RlAgZwcmVmaXgMYWRtaW5BZGRyZXNzCQC5CQIJAMwIAgUGcHJlZml4CQDMCAIFDGFkbWluQWRkcmVzcwUDbmlsBQNTRVABE2tleUFkbWluQWRkcmVzc0xpc3QACQC5CQIJAMwIAgICJXMJAMwIAgIQYWRtaW5BZGRyZXNzTGlzdAUDbmlsBQNTRVABDmtleUFsbG93ZWRUeElkAAkAuQkCCQDMCAICAiVzCQDMCAICBHR4SWQFA25pbAUDU0VQAQxnZXRBZG1pblZvdGUCBnByZWZpeAVhZG1pbgQHdm90ZUtleQkBEGtleUZ1bGxBZG1pblZvdGUCBQZwcmVmaXgFBWFkbWluCQELdmFsdWVPckVsc2UCCQCfCAEFB3ZvdGVLZXkAAAENZ2V0QWRtaW5zTGlzdAAEByRtYXRjaDAJAJ0IAgUEdGhpcwkBE2tleUFkbWluQWRkcmVzc0xpc3QAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkAtQkCBQFzBQNTRVAFA25pbAENaXNJbkFkbWluTGlzdAEHYWRkcmVzcwkBD2NvbnRhaW5zRWxlbWVudAIJAQ1nZXRBZG1pbnNMaXN0AAUHYWRkcmVzcwESZ2VuVm90ZXNLZXlzSGVscGVyAgFhDGFkbWluQWRkcmVzcwQLJHQwMzU5NTM2MTkFAWEEBnJlc3VsdAgFCyR0MDM1OTUzNjE5Al8xBAZwcmVmaXgIBQskdDAzNTk1MzYxOQJfMgkAlAoCCQDNCAIFBnJlc3VsdAkBEGtleUZ1bGxBZG1pblZvdGUCBQZwcmVmaXgFDGFkbWluQWRkcmVzcwUGcHJlZml4AQxnZW5Wb3Rlc0tleXMBCWtleVByZWZpeAQJYWRtaW5MaXN0CQETa2V5QWRtaW5BZGRyZXNzTGlzdAAECyR0MDM3NjYzODUwCgACJGwJAQ1nZXRBZG1pbnNMaXN0AAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsBQlrZXlQcmVmaXgKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEmdlblZvdGVzS2V5c0hlbHBlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUEBnJlc3VsdAgFCyR0MDM3NjYzODUwAl8xBAZwcmVmaXgIBQskdDAzNzY2Mzg1MAJfMgUGcmVzdWx0ARBjb3VudFZvdGVzSGVscGVyAgZyZXN1bHQHdm90ZUtleQkAZAIFBnJlc3VsdAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQd2b3RlS2V5AAABCmNvdW50Vm90ZXMBBnByZWZpeAQFdm90ZXMJAQxnZW5Wb3Rlc0tleXMBBQZwcmVmaXgKAAIkbAUFdm90ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEGNvdW50Vm90ZXNIZWxwZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFARBjbGVhclZvdGVzSGVscGVyAgZyZXN1bHQDa2V5CQDNCAIFBnJlc3VsdAkBC0RlbGV0ZUVudHJ5AQUDa2V5ARNnZXRDbGVhclZvdGVFbnRyaWVzAQZwcmVmaXgEBXZvdGVzCQEMZ2VuVm90ZXNLZXlzAQUGcHJlZml4CgACJGwFBXZvdGVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARBjbGVhclZvdGVzSGVscGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQEMdm90ZUlOVEVSTkFMBBNjYWxsZXJBZGRyZXNzU3RyaW5nCWtleVByZWZpeAhtaW5Wb3Rlcwp2b3RlUmVzdWx0BAd2b3RlS2V5CQEQa2V5RnVsbEFkbWluVm90ZQIFCWtleVByZWZpeAUTY2FsbGVyQWRkcmVzc1N0cmluZwQQYWRtaW5DdXJyZW50Vm90ZQkBDGdldEFkbWluVm90ZQIFCWtleVByZWZpeAUTY2FsbGVyQWRkcmVzc1N0cmluZwQDZXJyAwkBASEBCQENaXNJbkFkbWluTGlzdAEFE2NhbGxlckFkZHJlc3NTdHJpbmcJAQh0aHJvd0VycgEJAKwCAgkArAICAglBZGRyZXNzOiAFE2NhbGxlckFkZHJlc3NTdHJpbmcCEiBub3QgaW4gQWRtaW4gbGlzdAMJAAACBRBhZG1pbkN1cnJlbnRWb3RlAAEJAQh0aHJvd0VycgEJAKwCAgUHdm90ZUtleQISIHlvdSBhbHJlYWR5IHZvdGVkBQR1bml0AwkAAAIFA2VycgUDZXJyBAV2b3RlcwkBCmNvdW50Vm90ZXMBBQlrZXlQcmVmaXgDCQBnAgkAZAIFBXZvdGVzAAEFCG1pblZvdGVzBBBjbGVhclZvdGVFbnRyaWVzCQETZ2V0Q2xlYXJWb3RlRW50cmllcwEFCWtleVByZWZpeAkAzggCBRBjbGVhclZvdGVFbnRyaWVzBQp2b3RlUmVzdWx0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd2b3RlS2V5AAEFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEZc3RyaW5nTGlzdFRvSW50TGlzdEhlbHBlcgIDYWNjBXZhbHVlCQDNCAIFA2FjYwkBDXBhcnNlSW50VmFsdWUBBQV2YWx1ZQEYY2FsY1RvdGFsUHJvZml0Rm9ySGVpZ2h0AQFoBApzdGFydEJsb2NrCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDWtleVN0YXJ0QmxvY2sFBmhlaWdodAQLc3RhcnRQZXJpb2QJAGsDBQpzdGFydEJsb2NrAAEFFmVtaXNzaW9uUGVyaW9kSW5CbG9ja3MEDmVsYXBzZWRQZXJpb2RzCQBlAgkAaQIFAWgFFmVtaXNzaW9uUGVyaW9kSW5CbG9ja3MFC3N0YXJ0UGVyaW9kCQCWAwEJAMwIAgAACQDMCAIJAGgCBRFlbWlzc2lvblBlclBlcmlvZAUOZWxhcHNlZFBlcmlvZHMFA25pbAEPY2FsY1RvdGFsUHJvZml0AAkBGGNhbGNUb3RhbFByb2ZpdEZvckhlaWdodAEFBmhlaWdodAEUZ2V0TWF4QXNzZXRBdmFpbGFibGUABAckbWF0Y2gwBQxhc3NldElkQnl0ZXMDCQABAgUHJG1hdGNoMAIEVW5pdAQBdQUHJG1hdGNoMAgJAO8HAQUEdGhpcwlhdmFpbGFibGUDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYgUHJG1hdGNoMAkA8AcCBQR0aGlzBQFiCQACAQILTWF0Y2ggZXJyb3IBK2dldFRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0T3JNYXhBdmFpbGFibGUABBp0b3RhbEFzc2V0QW1vdW50V2l0aFByb2ZpdAkAZAIFEHRvdGFsQXNzZXRBbW91bnQJAQ9jYWxjVG90YWxQcm9maXQABAt0b3RhbEFtb3VudAkAlwMBCQDMCAIFGnRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0CQDMCAIJARRnZXRNYXhBc3NldEF2YWlsYWJsZQAFA25pbAMJAAACBQ10b3RhbExwQW1vdW50AAAAAAULdG90YWxBbW91bnQBD2dldEN1cnJlbnRQcmljZQADCQECIT0CBQ10b3RhbExwQW1vdW50AAAJALwCAwkAtgIBCQErZ2V0VG90YWxBc3NldEFtb3VudFdpdGhQcm9maXRPck1heEF2YWlsYWJsZQAFDXNjYWxlMThCaWdJbnQJALYCAQUNdG90YWxMcEFtb3VudAUNc2NhbGUxOEJpZ0ludAESZ2V0UmVtYWluaW5nQmxvY2tzAAMJAAACBRBlbWlzc2lvblBlckJsb2NrAAAAAAkAawMJAGUCCQEUZ2V0TWF4QXNzZXRBdmFpbGFibGUACQErZ2V0VG90YWxBc3NldEFtb3VudFdpdGhQcm9maXRPck1heEF2YWlsYWJsZQAAAQUQZW1pc3Npb25QZXJCbG9jawEXZ2V0VXNlclN0YWtpbmdOb2Rlc0RhdGEBC3VzZXJBZGRyZXNzBAhub2Rlc1JhdwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQETa2V5VXNlclN0YWtpbmdOb2RlcwEFC3VzZXJBZGRyZXNzAgAECXNoYXJlc1JhdwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEZa2V5VXNlclN0YWtpbmdOb2Rlc1NoYXJlcwEFC3VzZXJBZGRyZXNzAgAECW5vZGVzTGlzdAMJAAACBQhub2Rlc1JhdwIABQNuaWwJALUJAgUIbm9kZXNSYXcFA1NFUAQQc2hhcmVzU3RyaW5nTGlzdAMJAAACBQlzaGFyZXNSYXcCAAUDbmlsCQC1CQIFCXNoYXJlc1JhdwUDU0VQBApzaGFyZXNMaXN0CgACJGwFEHNoYXJlc1N0cmluZ0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBGXN0cmluZ0xpc3RUb0ludExpc3RIZWxwZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDIwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAkAlAoCBQlub2Rlc0xpc3QFCnNoYXJlc0xpc3QBD2NhbGNBc3NldEZyb21McAEIbHBBbW91bnQJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC8AgMJALYCAQUIbHBBbW91bnQJAQ9nZXRDdXJyZW50UHJpY2UABQ1zY2FsZTE4QmlnSW50BQNuaWwBD2NhbGNMcEZyb21Bc3NldAELYXNzZXRBbW91bnQJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC8AgMJALYCAQULYXNzZXRBbW91bnQFDXNjYWxlMThCaWdJbnQJAQ9nZXRDdXJyZW50UHJpY2UABQNuaWwBD2dldFVzZXJMcEFtb3VudAELdXNlckFkZHJlc3MJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBD2tleVVzZXJMcEFtb3VudAEFC3VzZXJBZGRyZXNzAAABFWdldFVzZXJMb2NrZWRMcEFtb3VudAELdXNlckFkZHJlc3MJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBFWtleVVzZXJMb2NrZWRMcEFtb3VudAEFC3VzZXJBZGRyZXNzAAABIGdldFVzZXJBdmFpbGFibGVBc3NldHNUb1dpdGhkcmF3AQt1c2VyQWRkcmVzcwQMdXNlckxwQW1vdW50CQEPZ2V0VXNlckxwQW1vdW50AQULdXNlckFkZHJlc3MJAQ9jYWxjQXNzZXRGcm9tTHABBQx1c2VyTHBBbW91bnQBD2dldFN0YWtlQWN0aW9ucwIBaQt1c2VyQWRkcmVzcwQGY2hlY2tzCQDMCAIDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABBgkBCHRocm93RXJyAQIYc2hvdWxkIGluY2x1ZGUgMSBwYXltZW50CQDMCAIDCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQxhc3NldElkQnl0ZXMGCQEIdGhyb3dFcnIBCQCsAgICFXBheW1lbnQgc2hvdWxkIGJlIGluIAUNYXNzZXRJZFN0cmluZwkAzAgCAwkAZgIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AAAGAidwYXltZW50IGFtb3VudCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDAJAMwIAgMJAAACCQDIAQEJANkEAQULdXNlckFkZHJlc3MFEkFERFJFU1NfQllURVNfU0laRQYJAQh0aHJvd0VycgECGXVzZXIgYWRkcmVzcyBpcyBub3QgdmFsaWQFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQNcGF5bWVudEFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQED3BheW1lbnRMcEFtb3VudAkBD2NhbGNMcEZyb21Bc3NldAEFDXBheW1lbnRBbW91bnQEDHVzZXJMcEFtb3VudAkBD2dldFVzZXJMcEFtb3VudAEFC3VzZXJBZGRyZXNzBBV1c2VyVG90YWxTdGFrZWRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBF2tleVVzZXJUb3RhbEFzc2V0U3Rha2VkAQULdXNlckFkZHJlc3MAAAQQbmV3VG90YWxMcEFtb3VudAkAZAIFDXRvdGFsTHBBbW91bnQFD3BheW1lbnRMcEFtb3VudAQTbmV3VG90YWxBc3NldEFtb3VudAkBD2NhbGNBc3NldEZyb21McAEFEG5ld1RvdGFsTHBBbW91bnQED25ld1VzZXJMcEFtb3VudAkAZAIFDHVzZXJMcEFtb3VudAUPcGF5bWVudExwQW1vdW50BBhuZXdVc2VyVG90YWxTdGFrZWRBbW91bnQJAGQCBRV1c2VyVG90YWxTdGFrZWRBbW91bnQFDXBheW1lbnRBbW91bnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBCmtleUhpc3RvcnkDAgVzdGFrZQULdXNlckFkZHJlc3MIBQFpDXRyYW5zYWN0aW9uSWQJAQ1mb3JtYXRIaXN0b3J5BAkBD2NhbGNUb3RhbFByb2ZpdAAJAQ9nZXRDdXJyZW50UHJpY2UABQ10b3RhbExwQW1vdW50BRB0b3RhbEFzc2V0QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrZXlUb3RhbExwQW1vdW50BRBuZXdUb3RhbExwQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrZXlUb3RhbEFzc2V0QW1vdW50BRNuZXdUb3RhbEFzc2V0QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5VXNlckxwQW1vdW50AQULdXNlckFkZHJlc3MFD25ld1VzZXJMcEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBF2tleVVzZXJUb3RhbEFzc2V0U3Rha2VkAQULdXNlckFkZHJlc3MFGG5ld1VzZXJUb3RhbFN0YWtlZEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUNa2V5U3RhcnRCbG9jawUGaGVpZ2h0BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BEmdldFdpdGhkcmF3QWN0aW9ucwIBaRVscEFzc2V0V2l0aGRyYXdBbW91bnQEC3VzZXJBZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQMdXNlckxwQW1vdW50CQEPZ2V0VXNlckxwQW1vdW50AQULdXNlckFkZHJlc3MEBWNoZWNrCQDMCAIDCQBmAgUVbHBBc3NldFdpdGhkcmF3QW1vdW50AAAGCQEIdGhyb3dFcnIBAh9MUCBhbW91bnQgc2hvdWxkIGJlIG1vcmUgdGhhbiAwCQDMCAIDCQBnAgUMdXNlckxwQW1vdW50BRVscEFzc2V0V2l0aGRyYXdBbW91bnQGCQEIdGhyb3dFcnIBCQCsAgIJAKwCAgIoY2Fubm90IHdpdGhkcmF3IG1vcmUgdGhhbiBhdmFpbGFibGUgTFAgKAkApAMBBQx1c2VyTHBBbW91bnQCASkFA25pbAMJAAACBQVjaGVjawUFY2hlY2sED25ld1VzZXJMcEFtb3VudAkAZQIFDHVzZXJMcEFtb3VudAUVbHBBc3NldFdpdGhkcmF3QW1vdW50BBN3aXRoZHJhd0Fzc2V0QW1vdW50CQEPY2FsY0Fzc2V0RnJvbUxwAQUVbHBBc3NldFdpdGhkcmF3QW1vdW50BBBuZXdUb3RhbExwQW1vdW50CQBlAgUNdG90YWxMcEFtb3VudAUVbHBBc3NldFdpdGhkcmF3QW1vdW50BBNuZXdUb3RhbEFzc2V0QW1vdW50CQEPY2FsY0Fzc2V0RnJvbUxwAQUQbmV3VG90YWxMcEFtb3VudAQXdXNlclRvdGFsQXNzZXRXaXRoZHJhd24JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBGmtleVVzZXJUb3RhbEFzc2V0V2l0aGRyYXduAQULdXNlckFkZHJlc3MAAAQabmV3VXNlclRvdGFsQXNzZXRXaXRoZHJhd24JAGQCBRd1c2VyVG90YWxBc3NldFdpdGhkcmF3bgUTd2l0aGRyYXdBc3NldEFtb3VudAkAzAgCCQELU3RyaW5nRW50cnkCCQEKa2V5SGlzdG9yeQMCCHdpdGhkcmF3BQt1c2VyQWRkcmVzcwgFAWkNdHJhbnNhY3Rpb25JZAkBDWZvcm1hdEhpc3RvcnkECQEPY2FsY1RvdGFsUHJvZml0AAkBD2dldEN1cnJlbnRQcmljZQAFDXRvdGFsTHBBbW91bnQFEHRvdGFsQXNzZXRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFEGtleVRvdGFsTHBBbW91bnQFEG5ld1RvdGFsTHBBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tleVRvdGFsQXNzZXRBbW91bnQFE25ld1RvdGFsQXNzZXRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ9rZXlVc2VyTHBBbW91bnQBBQt1c2VyQWRkcmVzcwUPbmV3VXNlckxwQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEaa2V5VXNlclRvdGFsQXNzZXRXaXRoZHJhd24BBQt1c2VyQWRkcmVzcwUabmV3VXNlclRvdGFsQXNzZXRXaXRoZHJhd24JAMwIAgkBDEludGVnZXJFbnRyeQIFDWtleVN0YXJ0QmxvY2sFBmhlaWdodAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFE3dpdGhkcmF3QXNzZXRBbW91bnQFDGFzc2V0SWRCeXRlcwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARhnZXRTZXRTdGFraW5nTm9kZUFjdGlvbnMDC3VzZXJBZGRyZXNzC25vZGVBZGRyZXNzCW5vZGVTaGFyZQQFY2hlY2sJAMwIAgMJAAACCQDIAQEJANkEAQULdXNlckFkZHJlc3MFEkFERFJFU1NfQllURVNfU0laRQYJAQh0aHJvd0VycgECGXVzZXIgYWRkcmVzcyBpcyBub3QgdmFsaWQJAMwIAgMJAAACCQDIAQEJANkEAQULbm9kZUFkZHJlc3MFEkFERFJFU1NfQllURVNfU0laRQYJAQh0aHJvd0VycgECGW5vZGUgYWRkcmVzcyBpcyBub3QgdmFsaWQFA25pbAMJAAACBQVjaGVjawUFY2hlY2sJAMwIAgkBC1N0cmluZ0VudHJ5AgkBE2tleVVzZXJTdGFraW5nTm9kZXMBBQt1c2VyQWRkcmVzcwULbm9kZUFkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBGWtleVVzZXJTdGFraW5nTm9kZXNTaGFyZXMBBQt1c2VyQWRkcmVzcwkApAMBBQlub2RlU2hhcmUFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgsBaQETc2V0RW1pc3Npb25QZXJCbG9jawEQZW1pc3Npb25QZXJCbG9jawQFY2hlY2sJAMwIAgMJAAACCAUBaQZjYWxsZXIFBHRoaXMGCQEIdGhyb3dFcnIBAhFwZXJtaXNzaW9uIGRlbmllZAUDbmlsAwkAAAIFBWNoZWNrBQVjaGVjawkAzAgCCQEMSW50ZWdlckVudHJ5AgUTa2V5VG90YWxBc3NldEFtb3VudAkBK2dldFRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0T3JNYXhBdmFpbGFibGUACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rZXlTdGFydEJsb2NrBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tleUVtaXNzaW9uUGVyQmxvY2sJAJYDAQkAzAgCAAAJAMwIAgUQZW1pc3Npb25QZXJCbG9jawUDbmlsBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEZc2V0RW1pc3Npb25QZXJpb2RJbkJsb2NrcwEBcAQFY2hlY2sJAMwIAgMJAGYCBQFwAAAGCQEIdGhyb3dFcnIBAihlbWlzc2lvbiBwZXJpb2Qgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiAwCQDMCAIDCQAAAggFAWkGY2FsbGVyBQR0aGlzBgkBCHRocm93RXJyAQIRcGVybWlzc2lvbiBkZW5pZWQFA25pbAMJAAACBQVjaGVjawUFY2hlY2sJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tleVRvdGFsQXNzZXRBbW91bnQJAStnZXRUb3RhbEFzc2V0QW1vdW50V2l0aFByb2ZpdE9yTWF4QXZhaWxhYmxlAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUNa2V5U3RhcnRCbG9jawUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRlrZXlFbWlzc2lvblBlcmlvZEluQmxvY2tzBQFwBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEFc3Rha2UABAt1c2VyQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIJAQ9nZXRTdGFrZUFjdGlvbnMCBQFpBQt1c2VyQWRkcmVzcwFpAQhzdGFrZUZvcgELdXNlckFkZHJlc3MJAQ9nZXRTdGFrZUFjdGlvbnMCBQFpBQt1c2VyQWRkcmVzcwFpAQh3aXRoZHJhdwETd2l0aGRyYXdBc3NldEFtb3VudAQLdXNlckFkZHJlc3MJAKUIAQgFAWkGY2FsbGVyBAx1c2VyTHBBbW91bnQJAQ9nZXRVc2VyTHBBbW91bnQBBQt1c2VyQWRkcmVzcwQSbHBBbW91bnRUb1dpdGhkcmF3CQEPY2FsY0xwRnJvbUFzc2V0AQUTd2l0aGRyYXdBc3NldEFtb3VudAQcdXNlckF2YWlsYWJsZUFzc2V0VG9XaXRoZHJhdwkBIGdldFVzZXJBdmFpbGFibGVBc3NldHNUb1dpdGhkcmF3AQULdXNlckFkZHJlc3MEFm1pbldpdGhkcmF3QXNzZXRBbW91bnQJAKADAQkAvQIECQEPZ2V0Q3VycmVudFByaWNlAAkAtgIBAAEFDXNjYWxlMThCaWdJbnQFB0NFSUxJTkcEBWNoZWNrCQDMCAIDCQBmAgUTd2l0aGRyYXdBc3NldEFtb3VudAAABgkBCHRocm93RXJyAQIld2l0aGRyYXcgYW1vdW50IHNob3VsZCBiZSBtb3JlIHRoYW4gMAkAzAgCAwkAZwIFHHVzZXJBdmFpbGFibGVBc3NldFRvV2l0aGRyYXcFE3dpdGhkcmF3QXNzZXRBbW91bnQGCQEIdGhyb3dFcnIBCQCsAgIJAKwCAgIlY2Fubm90IHdpdGhkcmF3IG1vcmUgdGhhbiBhdmFpbGFibGUgKAkApAMBBRx1c2VyQXZhaWxhYmxlQXNzZXRUb1dpdGhkcmF3AgEpCQDMCAIDCQBnAgUTd2l0aGRyYXdBc3NldEFtb3VudAUWbWluV2l0aGRyYXdBc3NldEFtb3VudAYJAQh0aHJvd0VycgEJAKwCAgkArAICAiR3aXRoZHJhdyBhbW91bnQgaXMgdG9vIHNtYWxsLiBNaW46ICgJAKQDAQUWbWluV2l0aGRyYXdBc3NldEFtb3VudAIBKQUDbmlsAwkAAAIFBWNoZWNrBQVjaGVjawkBEmdldFdpdGhkcmF3QWN0aW9ucwIFAWkJAJcDAQkAzAgCBQx1c2VyTHBBbW91bnQJAMwIAgkAZAIFEmxwQW1vdW50VG9XaXRoZHJhdwABBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOc2V0U3Rha2luZ05vZGUBC25vZGVBZGRyZXNzBAt1c2VyQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIJARhnZXRTZXRTdGFraW5nTm9kZUFjdGlvbnMDBQt1c2VyQWRkcmVzcwULbm9kZUFkZHJlc3MAZAFpARZzdGFrZUFuZFNldFN0YWtpbmdOb2RlAQtub2RlQWRkcmVzcwQLdXNlckFkZHJlc3MJAKUIAQgFAWkGY2FsbGVyCQDOCAIJAQ9nZXRTdGFrZUFjdGlvbnMCBQFpBQt1c2VyQWRkcmVzcwkBGGdldFNldFN0YWtpbmdOb2RlQWN0aW9ucwMFC3VzZXJBZGRyZXNzBQtub2RlQWRkcmVzcwBkAWkBB2FpcmRyb3ACC2FkZHJlc3NMaXN0CmFtb3VudExpc3QKAQNzdW0CBWFjY3VtBG5leHQJAGQCBQVhY2N1bQUEbmV4dAQNYW1v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MgQHdG90YWxMcAgFDSR0MDE0MjYxMTQyOTcCXzMEDWFkZGVkTHBBbW91bnQJAQ9jYWxjTHBGcm9tQXNzZXQBBQthc3NldEFtb3VudAQPdXNlckxvY2tlZExwS2V5CQEVa2V5VXNlckxvY2tlZExwQW1vdW50AQkAkQMCBQthZGRyZXNzTGlzdAUFaW5kZXgEC29sZExwQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFD3VzZXJMb2NrZWRMcEtleQAACQCVCgMJAM0IAgUGcmVzdWx0CQEMSW50ZWdlckVudHJ5AgUPdXNlckxvY2tlZExwS2V5CQBkAgULb2xkTHBBbW91bnQFDWFkZGVkTHBBbW91bnQJAGQCBQVpbmRleAABCQBkAgUHdG90YWxMcAUNYWRkZWRMcEFtb3VudAQNJHQwMTQ2MjgxNDczNwoAAiRsBQphbW91bnRMaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlQoDBQNuaWwAAAAACgEFJGYxXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARZnZXRBaXJkcm9wU3RhdGVDaGFuZ2VzAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYxXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA5MAkBBSRmMV8yAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgQOYWlyZHJvcEVudHJpZXMIBQ0kdDAxNDYyODE0NzM3Al8xBAJfYQgFDSR0MDE0NjI4MTQ3MzcCXzIEGGFkZGVkVG90YWxMb2NrZWRMcEFtb3VudAgFDSR0MDE0NjI4MTQ3MzcCXzMEDW5ld1RvdGFsQXNzZXQJAQ9jYWxjQXNzZXRGcm9tTHABCQBkAgUNdG90YWxMcEFtb3VudAUYYWRkZWRUb3RhbExvY2tlZExwQW1vdW50CQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFFmtleVRvdGFsTG9ja2VkTHBBbW91bnQJAGQCBRN0b3RhbExvY2tlZExwQW1vdW50BRhhZGRlZFRvdGFsTG9ja2VkTHBBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFEGtleVRvdGFsTHBBbW91bnQJAGQCBQ10b3RhbExwQW1vdW50BRhhZGRlZFRvdGFsTG9ja2VkTHBBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tleVRvdGFsQXNzZXRBbW91bnQFDW5ld1RvdGFsQXNzZXQJAMwIAgkBDEludGVnZXJFbnRyeQIFDWtleVN0YXJ0QmxvY2sFBmhlaWdodAUDbmlsBQ5haXJkcm9wRW50cmllcwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARVnZXRVc2VyQXNzZXRzUkVBRE9OTFkBC3VzZXJBZGRyZXNzBAx1c2VyTHBBbW91bnQJAQ9nZXRVc2VyTHBBbW91bnQBBQt1c2VyQWRkcmVzcwQSdXNlckxvY2tlZExwQW1vdW50CQEVZ2V0VXNlckxvY2tlZExwQW1vdW50AQULdXNlckFkZHJlc3MEFXVzZXJMb2NrZWRBc3NldEFtb3VudAkBD2NhbGNBc3NldEZyb21McAEFEnVzZXJMb2NrZWRMcEFtb3VudAQcdXNlckF2YWlsYWJsZUFzc2V0VG9XaXRoZHJhdwkBIGdldFVzZXJBdmFpbGFibGVBc3NldHNUb1dpdGhkcmF3AQULdXNlckFkZHJlc3MEFXVzZXJUb3RhbFN0YWtlZEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEXa2V5VXNlclRvdGFsQXNzZXRTdGFrZWQBBQt1c2VyQWRkcmVzcwAABBd1c2VyVG90YWxBc3NldFdpdGhkcmF3bgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEaa2V5VXNlclRvdGFsQXNzZXRXaXRoZHJhd24BBQt1c2VyQWRkcmVzcwAABA0kdDAxNjA4NzE2MTc5CQEXZ2V0VXNlclN0YWtpbmdOb2Rlc0RhdGEBBQt1c2VyQWRkcmVzcwQUdXNlclN0YWtpbmdOb2Rlc0xpc3QIBQ0kdDAxNjA4NzE2MTc5Al8xBBl1c2VyU3Rha2luZ05vZGVTaGFyZXNMaXN0CAUNJHQwMTYwODcxNjE3OQJfMgkAlAoCBQNuaWwJAJwKCgUMdXNlckxwQW1vdW50BRx1c2VyQXZhaWxhYmxlQXNzZXRUb1dpdGhkcmF3CQEPZ2V0Q3VycmVudFByaWNlAAUVdXNlclRvdGFsU3Rha2VkQW1vdW50BRd1c2VyVG90YWxBc3NldFdpdGhkcmF3bgUSdXNlckxvY2tlZExwQW1vdW50BRV1c2VyTG9ja2VkQXNzZXRBbW91bnQFFHVzZXJTdGFraW5nTm9kZXNMaXN0BRl1c2VyU3Rha2luZ05vZGVTaGFyZXNMaXN0CQESZ2V0UmVtYWluaW5nQmxvY2tzAAFpARZnZXRUb3RhbEFzc2V0c1JFQURPTkxZAAkAlAoCBQNuaWwJAJgKBgUNdG90YWxMcEFtb3VudAkBK2dldFRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0T3JNYXhBdmFpbGFibGUACQEPZ2V0Q3VycmVudFByaWNlAAUTdG90YWxMb2NrZWRMcEFtb3VudAkBD2NhbGNBc3NldEZyb21McAEFE3RvdGFsTG9ja2VkTHBBbW91bnQJARJnZXRSZW1haW5pbmdCbG9ja3MAAWkBC3ZvdGVGb3JUeElkAQR0eElkBBNjYWxsZXJBZGRyZXNzU3RyaW5nCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMECWtleVByZWZpeAkBGGtleUFsbG93ZWRUeElkVm90ZVByZWZpeAEFBHR4SWQEBnJlc3VsdAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5QWxsb3dlZFR4SWQABQR0eElkBQNuaWwEEWFsbG93ZWRUeElkT3B0aW9uCQCdCAIFBHRoaXMJAQ5rZXlBbGxvd2VkVHhJZAAEA2VycgkAzAgCAwkAAAIJAMgBAQkA2QQBBQR0eElkBRFUWElEX0JZVEVTX0xFTkdUSAYJAQh0aHJvd0VycgEJAKwCAgUEdHhJZAISIGlzIG5vdCB2YWxpZCB0eElkCQDMCAIDAwkAAAIFEWFsbG93ZWRUeElkT3B0aW9uBQR1bml0BgkBAiE9AgkBBXZhbHVlAQURYWxsb3dlZFR4SWRPcHRpb24FBHR4SWQGCQEIdGhyb3dFcnIBCQCsAgIFBHR4SWQCEyBpcyBhbHJlYWR5IGFsbG93ZWQFA25pbAMJAAACBQNlcnIFA2VycgkBDHZvdGVJTlRFUk5BTAQFE2NhbGxlckFkZHJlc3NTdHJpbmcFCWtleVByZWZpeAUGUVVPUlVNBQZyZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkABAhieUFkbWlucwkAAAIIBQJ0eAJpZAkA2QQBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ5rZXlBbGxvd2VkVHhJZAACAAQHYnlPd25lcgMJAGcCCQCQAwEJAQ1nZXRBZG1pbnNMaXN0AAUGUVVPUlVNBwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleQMFCGJ5QWRtaW5zBgUHYnlPd25lct3wwDc=", "chainId": 84, "height": 2864540, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: PgAt8ZTB54Va2DyYPDnsX3TuK8ZfCa1xgqVCcgVRfhp Next: C535cxDyehEmG37nqYHoKcV4GDUjkKMxvz6SPyNuZYeX Diff:
OldNewDifferences
311311 if ((bl == bl))
312312 then {
313313 let bm = bk.payments[0].amount
314- let bn = toInt(fraction(toBigInt(bm), e, aT()))
314+ let bn = bd(bm)
315315 let bi = bf(r)
316316 let bo = valueOrElse(getInteger(this, w(r)), 0)
317317 let bp = (E + bn)
318- let bq = toInt(fraction(toBigInt(bp), aT(), e))
318+ let bq = bb(bp)
319319 let br = (bi + bn)
320320 let bs = (bo + bm)
321321 [StringEntry(x("stake", r, bk.transactionId), A(aM(), aT(), E, D)), IntegerEntry(n, bp), IntegerEntry(o, bq), IntegerEntry(q(r), br), IntegerEntry(w(r), bs), IntegerEntry(m, height)]
335335 if ((bv == bv))
336336 then {
337337 let br = (bi - bu)
338- let bw = toInt(fraction(toBigInt(bu), aT(), e))
338+ let bw = bb(bu)
339339 let bp = (E - bu)
340- let bq = toInt(fraction(toBigInt(bp), aT(), e))
340+ let bq = bb(bp)
341341 let bx = valueOrElse(getInteger(this, v(r)), 0)
342342 let by = (bx + bw)
343343 [StringEntry(x("withdraw", r, bk.transactionId), A(aM(), aT(), E, D)), IntegerEntry(n, bp), IntegerEntry(o, bq), IntegerEntry(q(r), br), IntegerEntry(v(r), by), IntegerEntry(m, height), ScriptTransfer(bk.caller, bw, H)]
401401 func withdraw (bw) = {
402402 let r = toString(bk.caller)
403403 let bi = bf(r)
404- let bD = toInt(fraction(toBigInt(bw), e, aT()))
404+ let bD = bd(bw)
405405 let bE = bh(r)
406406 let bF = toInt(fraction(aT(), toBigInt(1), e, CEILING))
407407 let bv = [if ((bw > 0))
493493 let bW = bT._1
494494 let bX = bT._2
495495 let bY = bT._3
496- ([IntegerEntry(p, (F + bY)), IntegerEntry(n, (E + bY)), IntegerEntry(o, (D + bL))] ++ bW)
496+ let bZ = bb((E + bY))
497+ ([IntegerEntry(p, (F + bY)), IntegerEntry(n, (E + bY)), IntegerEntry(o, bZ), IntegerEntry(m, height)] ++ bW)
497498 }
498499 else throw("Strict value is not equal to itself.")
499500 }
503504 @Callable(bk)
504505 func getUserAssetsREADONLY (r) = {
505506 let bi = bf(r)
506- let bZ = bg(r)
507- let ca = bb(bZ)
507+ let ca = bg(r)
508+ let cb = bb(ca)
508509 let bE = bh(r)
509510 let bo = valueOrElse(getInteger(this, w(r)), 0)
510511 let bx = valueOrElse(getInteger(this, v(r)), 0)
511- let cb = aV(r)
512- let cc = cb._1
513- let cd = cb._2
514- $Tuple2(nil, $Tuple9(bi, bE, aT(), bo, bx, bZ, ca, cc, cd))
512+ let cc = aV(r)
513+ let cd = cc._1
514+ let ce = cc._2
515+ $Tuple2(nil, $Tuple10(bi, bE, aT(), bo, bx, ca, cb, cd, ce, aU()))
515516 }
516517
517518
526527 let ay = toBase58String(bk.caller.bytes)
527528 let ah = O(z)
528529 let af = [StringEntry(T(), z)]
529- let ce = getString(this, T())
530+ let cf = getString(this, T())
530531 let aC = [if ((size(fromBase58String(z)) == N))
531532 then true
532- else h((z + " is not valid txId")), if (if ((ce == unit))
533+ else h((z + " is not valid txId")), if (if ((cf == unit))
533534 then true
534- else (value(ce) != z))
535+ else (value(cf) != z))
535536 then true
536537 else h((z + " is already allowed"))]
537538 if ((aC == aC))
540541 }
541542
542543
543-@Verifier(cf)
544-func cg () = {
545- let ch = (cf.id == fromBase58String(valueOrElse(getString(this, T()), "")))
546- let ci = if ((size(X()) >= M))
544+@Verifier(cg)
545+func ch () = {
546+ let ci = (cg.id == fromBase58String(valueOrElse(getString(this, T()), "")))
547+ let cj = if ((size(X()) >= M))
547548 then false
548- else sigVerify(cf.bodyBytes, cf.proofs[0], cf.senderPublicKey)
549- if (ch)
549+ else sigVerify(cg.bodyBytes, cg.proofs[0], cg.senderPublicKey)
550+ if (ci)
550551 then true
551- else ci
552+ else cj
552553 }
553554
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "l2mp_staking.ride"
55
66 let b = "__"
77
88 let c = 100000000
99
1010 let d = 1000000000000000000
1111
1212 let e = toBigInt(d)
1313
1414 let f = 26
1515
1616 let g = 1440
1717
1818 func h (i) = throw(((a + ": ") + i))
1919
2020
2121 let j = makeString(["%s", "assetId"], b)
2222
2323 let k = makeString(["%s", "emissionPerBlock"], b)
2424
2525 let l = makeString(["%s", "emissionPeriodInBlocks"], b)
2626
2727 let m = makeString(["%s", "startBlock"], b)
2828
2929 let n = makeString(["%s", "totalLpAmount"], b)
3030
3131 let o = makeString(["%s", "totalAssetAmount"], b)
3232
3333 let p = makeString(["%s", "totalLockedLpAmount"], b)
3434
3535 func q (r) = makeString(["%s%s", "userLpAmount", r], b)
3636
3737
3838 func s (r) = makeString(["%s%s", "userLockedLpAmount", r], b)
3939
4040
4141 func t (r) = makeString(["%s%s", "userStakingNodes", r], b)
4242
4343
4444 func u (r) = makeString(["%s%s", "userStakingNodesShares", r], b)
4545
4646
4747 func v (r) = makeString(["%s%s", "totalAssetWithdrawn", r], b)
4848
4949
5050 func w (r) = makeString(["%s%s", "totalAssetStaked", r], b)
5151
5252
5353 func x (y,r,z) = makeString(["%s%s%s", y, r, toBase58String(z)], b)
5454
5555
5656 func A (B,C,D,E) = makeString(["%d%d%d%d", toString(B), toString(C), toString(D), toString(E)], b)
5757
5858
5959 let E = valueOrElse(getInteger(this, n), 0)
6060
6161 let D = valueOrElse(getInteger(this, o), 0)
6262
6363 let F = valueOrElse(getInteger(this, p), 0)
6464
6565 let G = valueOrElse(getString(this, j), "WAVES")
6666
6767 let H = if ((G == "WAVES"))
6868 then unit
6969 else fromBase58String(G)
7070
7171 let I = valueOrElse(getInteger(this, l), g)
7272
7373 let J = valueOrElse(getInteger(this, k), 0)
7474
7575 let K = (J * I)
7676
7777 let L = 5
7878
7979 let M = 3
8080
8181 let N = 32
8282
8383 func O (z) = makeString(["%s%s%s", "allowTxId", z], b)
8484
8585
8686 func P (Q,R) = makeString([Q, R], b)
8787
8888
8989 func S () = makeString(["%s", "adminAddressList"], b)
9090
9191
9292 func T () = makeString(["%s", "txId"], b)
9393
9494
9595 func U (Q,V) = {
9696 let W = P(Q, V)
9797 valueOrElse(getInteger(W), 0)
9898 }
9999
100100
101101 func X () = {
102102 let Y = getString(this, S())
103103 if ($isInstanceOf(Y, "String"))
104104 then {
105105 let Z = Y
106106 split(Z, b)
107107 }
108108 else nil
109109 }
110110
111111
112112 func aa (ab) = containsElement(X(), ab)
113113
114114
115115 func ac (ad,R) = {
116116 let ae = ad
117117 let af = ae._1
118118 let Q = ae._2
119119 $Tuple2((af :+ P(Q, R)), Q)
120120 }
121121
122122
123123 func ag (ah) = {
124124 let ai = S()
125125 let aj = {
126126 let ak = X()
127127 let al = size(ak)
128128 let am = $Tuple2(nil, ah)
129129 func an (ao,ap) = if ((ap >= al))
130130 then ao
131131 else ac(ao, ak[ap])
132132
133133 func aq (ao,ap) = if ((ap >= al))
134134 then ao
135135 else throw("List size exceeds 5")
136136
137137 aq(an(an(an(an(an(am, 0), 1), 2), 3), 4), 5)
138138 }
139139 let af = aj._1
140140 let Q = aj._2
141141 af
142142 }
143143
144144
145145 func ar (af,W) = (af + valueOrElse(getInteger(W), 0))
146146
147147
148148 func as (Q) = {
149149 let at = ag(Q)
150150 let ak = at
151151 let al = size(ak)
152152 let am = 0
153153 func an (ao,ap) = if ((ap >= al))
154154 then ao
155155 else ar(ao, ak[ap])
156156
157157 func aq (ao,ap) = if ((ap >= al))
158158 then ao
159159 else throw("List size exceeds 5")
160160
161161 aq(an(an(an(an(an(am, 0), 1), 2), 3), 4), 5)
162162 }
163163
164164
165165 func au (af,av) = (af :+ DeleteEntry(av))
166166
167167
168168 func aw (Q) = {
169169 let at = ag(Q)
170170 let ak = at
171171 let al = size(ak)
172172 let am = nil
173173 func an (ao,ap) = if ((ap >= al))
174174 then ao
175175 else au(ao, ak[ap])
176176
177177 func aq (ao,ap) = if ((ap >= al))
178178 then ao
179179 else throw("List size exceeds 5")
180180
181181 aq(an(an(an(an(an(am, 0), 1), 2), 3), 4), 5)
182182 }
183183
184184
185185 func ax (ay,ah,az,aA) = {
186186 let W = P(ah, ay)
187187 let aB = U(ah, ay)
188188 let aC = if (!(aa(ay)))
189189 then h((("Address: " + ay) + " not in Admin list"))
190190 else if ((aB == 1))
191191 then h((W + " you already voted"))
192192 else unit
193193 if ((aC == aC))
194194 then {
195195 let at = as(ah)
196196 if (((at + 1) >= az))
197197 then {
198198 let aD = aw(ah)
199199 (aD ++ aA)
200200 }
201201 else [IntegerEntry(W, 1)]
202202 }
203203 else throw("Strict value is not equal to itself.")
204204 }
205205
206206
207207 func aE (aF,aG) = (aF :+ parseIntValue(aG))
208208
209209
210210 func aH (aI) = {
211211 let aJ = valueOrElse(getInteger(this, m), height)
212212 let aK = fraction(aJ, 1, I)
213213 let aL = ((aI / I) - aK)
214214 max([0, (K * aL)])
215215 }
216216
217217
218218 func aM () = aH(height)
219219
220220
221221 func aN () = {
222222 let Y = H
223223 if ($isInstanceOf(Y, "Unit"))
224224 then {
225225 let aO = Y
226226 wavesBalance(this).available
227227 }
228228 else if ($isInstanceOf(Y, "ByteVector"))
229229 then {
230230 let aP = Y
231231 assetBalance(this, aP)
232232 }
233233 else throw("Match error")
234234 }
235235
236236
237237 func aQ () = {
238238 let aR = (D + aM())
239239 let aS = min([aR, aN()])
240240 if ((E == 0))
241241 then 0
242242 else aS
243243 }
244244
245245
246246 func aT () = if ((E != 0))
247247 then fraction(toBigInt(aQ()), e, toBigInt(E))
248248 else e
249249
250250
251251 func aU () = if ((J == 0))
252252 then 0
253253 else fraction((aN() - aQ()), 1, J)
254254
255255
256256 func aV (r) = {
257257 let aW = valueOrElse(getString(this, t(r)), "")
258258 let aX = valueOrElse(getString(this, u(r)), "")
259259 let aY = if ((aW == ""))
260260 then nil
261261 else split(aW, b)
262262 let aZ = if ((aX == ""))
263263 then nil
264264 else split(aX, b)
265265 let ba = {
266266 let ak = aZ
267267 let al = size(ak)
268268 let am = nil
269269 func an (ao,ap) = if ((ap >= al))
270270 then ao
271271 else aE(ao, ak[ap])
272272
273273 func aq (ao,ap) = if ((ap >= al))
274274 then ao
275275 else throw("List size exceeds 20")
276276
277277 aq(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(am, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
278278 }
279279 $Tuple2(aY, ba)
280280 }
281281
282282
283283 func bb (bc) = max([0, toInt(fraction(toBigInt(bc), aT(), e))])
284284
285285
286286 func bd (be) = max([0, toInt(fraction(toBigInt(be), e, aT()))])
287287
288288
289289 func bf (r) = valueOrElse(getInteger(this, q(r)), 0)
290290
291291
292292 func bg (r) = valueOrElse(getInteger(this, s(r)), 0)
293293
294294
295295 func bh (r) = {
296296 let bi = bf(r)
297297 bb(bi)
298298 }
299299
300300
301301 func bj (bk,r) = {
302302 let bl = [if ((size(bk.payments) == 1))
303303 then true
304304 else h("should include 1 payment"), if ((bk.payments[0].assetId == H))
305305 then true
306306 else h(("payment should be in " + G)), if ((bk.payments[0].amount > 0))
307307 then true
308308 else "payment amount should be greater than 0", if ((size(fromBase58String(r)) == f))
309309 then true
310310 else h("user address is not valid")]
311311 if ((bl == bl))
312312 then {
313313 let bm = bk.payments[0].amount
314- let bn = toInt(fraction(toBigInt(bm), e, aT()))
314+ let bn = bd(bm)
315315 let bi = bf(r)
316316 let bo = valueOrElse(getInteger(this, w(r)), 0)
317317 let bp = (E + bn)
318- let bq = toInt(fraction(toBigInt(bp), aT(), e))
318+ let bq = bb(bp)
319319 let br = (bi + bn)
320320 let bs = (bo + bm)
321321 [StringEntry(x("stake", r, bk.transactionId), A(aM(), aT(), E, D)), IntegerEntry(n, bp), IntegerEntry(o, bq), IntegerEntry(q(r), br), IntegerEntry(w(r), bs), IntegerEntry(m, height)]
322322 }
323323 else throw("Strict value is not equal to itself.")
324324 }
325325
326326
327327 func bt (bk,bu) = {
328328 let r = toString(bk.caller)
329329 let bi = bf(r)
330330 let bv = [if ((bu > 0))
331331 then true
332332 else h("LP amount should be more than 0"), if ((bi >= bu))
333333 then true
334334 else h((("cannot withdraw more than available LP (" + toString(bi)) + ")"))]
335335 if ((bv == bv))
336336 then {
337337 let br = (bi - bu)
338- let bw = toInt(fraction(toBigInt(bu), aT(), e))
338+ let bw = bb(bu)
339339 let bp = (E - bu)
340- let bq = toInt(fraction(toBigInt(bp), aT(), e))
340+ let bq = bb(bp)
341341 let bx = valueOrElse(getInteger(this, v(r)), 0)
342342 let by = (bx + bw)
343343 [StringEntry(x("withdraw", r, bk.transactionId), A(aM(), aT(), E, D)), IntegerEntry(n, bp), IntegerEntry(o, bq), IntegerEntry(q(r), br), IntegerEntry(v(r), by), IntegerEntry(m, height), ScriptTransfer(bk.caller, bw, H)]
344344 }
345345 else throw("Strict value is not equal to itself.")
346346 }
347347
348348
349349 func bz (r,bA,bB) = {
350350 let bv = [if ((size(fromBase58String(r)) == f))
351351 then true
352352 else h("user address is not valid"), if ((size(fromBase58String(bA)) == f))
353353 then true
354354 else h("node address is not valid")]
355355 if ((bv == bv))
356356 then [StringEntry(t(r), bA), StringEntry(u(r), toString(bB))]
357357 else throw("Strict value is not equal to itself.")
358358 }
359359
360360
361361 @Callable(bk)
362362 func setEmissionPerBlock (J) = {
363363 let bv = [if ((bk.caller == this))
364364 then true
365365 else h("permission denied")]
366366 if ((bv == bv))
367367 then [IntegerEntry(o, aQ()), IntegerEntry(m, height), IntegerEntry(k, max([0, J]))]
368368 else throw("Strict value is not equal to itself.")
369369 }
370370
371371
372372
373373 @Callable(bk)
374374 func setEmissionPeriodInBlocks (bC) = {
375375 let bv = [if ((bC > 0))
376376 then true
377377 else h("emission period should be greater than 0"), if ((bk.caller == this))
378378 then true
379379 else h("permission denied")]
380380 if ((bv == bv))
381381 then [IntegerEntry(o, aQ()), IntegerEntry(m, height), IntegerEntry(l, bC)]
382382 else throw("Strict value is not equal to itself.")
383383 }
384384
385385
386386
387387 @Callable(bk)
388388 func stake () = {
389389 let r = toString(bk.caller)
390390 bj(bk, r)
391391 }
392392
393393
394394
395395 @Callable(bk)
396396 func stakeFor (r) = bj(bk, r)
397397
398398
399399
400400 @Callable(bk)
401401 func withdraw (bw) = {
402402 let r = toString(bk.caller)
403403 let bi = bf(r)
404- let bD = toInt(fraction(toBigInt(bw), e, aT()))
404+ let bD = bd(bw)
405405 let bE = bh(r)
406406 let bF = toInt(fraction(aT(), toBigInt(1), e, CEILING))
407407 let bv = [if ((bw > 0))
408408 then true
409409 else h("withdraw amount should be more than 0"), if ((bE >= bw))
410410 then true
411411 else h((("cannot withdraw more than available (" + toString(bE)) + ")")), if ((bw >= bF))
412412 then true
413413 else h((("withdraw amount is too small. Min: (" + toString(bF)) + ")"))]
414414 if ((bv == bv))
415415 then bt(bk, min([bi, (bD + 1)]))
416416 else throw("Strict value is not equal to itself.")
417417 }
418418
419419
420420
421421 @Callable(bk)
422422 func setStakingNode (bA) = {
423423 let r = toString(bk.caller)
424424 bz(r, bA, 100)
425425 }
426426
427427
428428
429429 @Callable(bk)
430430 func stakeAndSetStakingNode (bA) = {
431431 let r = toString(bk.caller)
432432 (bj(bk, r) ++ bz(r, bA, 100))
433433 }
434434
435435
436436
437437 @Callable(bk)
438438 func airdrop (bG,bH) = {
439439 func bI (bJ,bK) = (bJ + bK)
440440
441441 let bL = {
442442 let ak = bH
443443 let al = size(ak)
444444 let am = 0
445445 func an (ao,ap) = if ((ap >= al))
446446 then ao
447447 else bI(ao, ak[ap])
448448
449449 func aq (ao,ap) = if ((ap >= al))
450450 then ao
451451 else throw("List size exceeds 90")
452452
453453 aq(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(am, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90)
454454 }
455455 let bv = [if ((size(bk.payments) == 1))
456456 then true
457457 else h("should include 1 payment"), if ((bk.payments[0].assetId == H))
458458 then true
459459 else h(("payment should be in " + G)), if ((bk.payments[0].amount > 0))
460460 then true
461461 else "payment amount should be greater than 0", if ((size(bG) == size(bH)))
462462 then true
463463 else h("addressList should be same size as amountList"), if ((bk.payments[0].amount >= bL))
464464 then true
465465 else h("payment amount is less than sum of amountList")]
466466 if ((bv == bv))
467467 then {
468468 func bM (bJ,be) = {
469469 let bN = bJ
470470 let af = bN._1
471471 let bO = bN._2
472472 let bP = bN._3
473473 let bQ = bd(be)
474474 let bR = s(bG[bO])
475475 let bS = valueOrElse(getInteger(this, bR), 0)
476476 $Tuple3((af :+ IntegerEntry(bR, (bS + bQ))), (bO + 1), (bP + bQ))
477477 }
478478
479479 let bT = {
480480 let ak = bH
481481 let al = size(ak)
482482 let am = $Tuple3(nil, 0, 0)
483483 func bU (ao,ap) = if ((ap >= al))
484484 then ao
485485 else bM(ao, ak[ap])
486486
487487 func bV (ao,ap) = if ((ap >= al))
488488 then ao
489489 else throw("List size exceeds 90")
490490
491491 bV(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(am, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90)
492492 }
493493 let bW = bT._1
494494 let bX = bT._2
495495 let bY = bT._3
496- ([IntegerEntry(p, (F + bY)), IntegerEntry(n, (E + bY)), IntegerEntry(o, (D + bL))] ++ bW)
496+ let bZ = bb((E + bY))
497+ ([IntegerEntry(p, (F + bY)), IntegerEntry(n, (E + bY)), IntegerEntry(o, bZ), IntegerEntry(m, height)] ++ bW)
497498 }
498499 else throw("Strict value is not equal to itself.")
499500 }
500501
501502
502503
503504 @Callable(bk)
504505 func getUserAssetsREADONLY (r) = {
505506 let bi = bf(r)
506- let bZ = bg(r)
507- let ca = bb(bZ)
507+ let ca = bg(r)
508+ let cb = bb(ca)
508509 let bE = bh(r)
509510 let bo = valueOrElse(getInteger(this, w(r)), 0)
510511 let bx = valueOrElse(getInteger(this, v(r)), 0)
511- let cb = aV(r)
512- let cc = cb._1
513- let cd = cb._2
514- $Tuple2(nil, $Tuple9(bi, bE, aT(), bo, bx, bZ, ca, cc, cd))
512+ let cc = aV(r)
513+ let cd = cc._1
514+ let ce = cc._2
515+ $Tuple2(nil, $Tuple10(bi, bE, aT(), bo, bx, ca, cb, cd, ce, aU()))
515516 }
516517
517518
518519
519520 @Callable(bk)
520521 func getTotalAssetsREADONLY () = $Tuple2(nil, $Tuple6(E, aQ(), aT(), F, bb(F), aU()))
521522
522523
523524
524525 @Callable(bk)
525526 func voteForTxId (z) = {
526527 let ay = toBase58String(bk.caller.bytes)
527528 let ah = O(z)
528529 let af = [StringEntry(T(), z)]
529- let ce = getString(this, T())
530+ let cf = getString(this, T())
530531 let aC = [if ((size(fromBase58String(z)) == N))
531532 then true
532- else h((z + " is not valid txId")), if (if ((ce == unit))
533+ else h((z + " is not valid txId")), if (if ((cf == unit))
533534 then true
534- else (value(ce) != z))
535+ else (value(cf) != z))
535536 then true
536537 else h((z + " is already allowed"))]
537538 if ((aC == aC))
538539 then ax(ay, ah, M, af)
539540 else throw("Strict value is not equal to itself.")
540541 }
541542
542543
543-@Verifier(cf)
544-func cg () = {
545- let ch = (cf.id == fromBase58String(valueOrElse(getString(this, T()), "")))
546- let ci = if ((size(X()) >= M))
544+@Verifier(cg)
545+func ch () = {
546+ let ci = (cg.id == fromBase58String(valueOrElse(getString(this, T()), "")))
547+ let cj = if ((size(X()) >= M))
547548 then false
548- else sigVerify(cf.bodyBytes, cf.proofs[0], cf.senderPublicKey)
549- if (ch)
549+ else sigVerify(cg.bodyBytes, cg.proofs[0], cg.senderPublicKey)
550+ if (ci)
550551 then true
551- else ci
552+ else cj
552553 }
553554

github/deemru/w8io/169f3d6 
101.74 ms