tx · FAoSi1SEpsswjSZZQaHGjhnBymC5a7Ba77XMpKfhuqPb

3N98Ngyaszw66EakvWRCiZ771ja2RDgNaxV:  -0.03000000 Waves

2023.04.26 12:56 [2551359] smart account 3N98Ngyaszw66EakvWRCiZ771ja2RDgNaxV > SELF 0.00000000 Waves

{ "type": 13, "id": "FAoSi1SEpsswjSZZQaHGjhnBymC5a7Ba77XMpKfhuqPb", "fee": 3000000, "feeAssetId": null, "timestamp": 1682503049830, "version": 2, "chainId": 84, "sender": "3N98Ngyaszw66EakvWRCiZ771ja2RDgNaxV", "senderPublicKey": "F4oaTkX67vt2MEsXLJJ8a7gaURGjW7x8fkvGfdEiH5oy", "proofs": [ "2nZkUfF3Chh5xedHxjGLgMXczJi7jovwwY5UHzTRqCX2U3bsQYMXS5Yavm7GztNb8ugfvuUFoV3oJ95Nn8kYTXHN" ], "script": "base64:BgIzCAISAwoBCBIAEgQKAgIBEgQKAgIBEgcKBQgICAgIEgASBAoCCAgSABIECgIICBIDCgEIQQAJc2VwYXJhdG9yAgJfXwASc2hhcmVBc3NldERlY2ltYWxzAAgAC3dhdmVzU3RyaW5nAgVXQVZFUwAHc2NhbGUxOACAgJC7utat8A0ADXNjYWxlMThCaWdJbnQJALYCAQUHc2NhbGUxOAEHd3JhcEVycgEDbXNnCQC5CQIJAMwIAgIWbHBfc3Rha2luZ19wb29scy5yaWRlOgkAzAgCBQNtc2cFA25pbAIBIAEIdGhyb3dFcnIBA21zZwkAAgEJAQd3cmFwRXJyAQUDbXNnARJlcnJLZXlJc05vdERlZmluZWQCB2FkZHJlc3MDa2V5CQEHd3JhcEVycgEJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQxnZXRTdHJPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQESZXJyS2V5SXNOb3REZWZpbmVkAgUHYWRkcmVzcwUDa2V5AQxnZXRJbnRPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUHYWRkcmVzcwUDa2V5CQESZXJyS2V5SXNOb3REZWZpbmVkAgUHYWRkcmVzcwUDa2V5AQxwYXJzZUFzc2V0SWQBBWlucHV0AwkAAAIFBWlucHV0BQt3YXZlc1N0cmluZwUEdW5pdAkA2QQBBQVpbnB1dAEPYXNzZXRJZFRvU3RyaW5nAQVpbnB1dAMJAAACBQVpbnB1dAUEdW5pdAULd2F2ZXNTdHJpbmcJANgEAQkBBXZhbHVlAQUFaW5wdXQBDmVuc3VyZVBvc2l0aXZlAQF2AwkAZwIFAXYAAAUBdgkBCHRocm93RXJyAQIYdmFsdWUgc2hvdWxkIGJlIHBvc2l0aXZlARJrZXlGYWN0b3J5Q29udHJhY3QACQC5CQIJAMwIAgICJXMJAMwIAgIPZmFjdG9yeUNvbnRyYWN0BQNuaWwFCXNlcGFyYXRvcgEUa2V5THBTdGFraW5nQ29udHJhY3QACQC5CQIJAMwIAgICJXMJAMwIAgIRbHBTdGFraW5nQ29udHJhY3QFA25pbAUJc2VwYXJhdG9yARJrZXlTdGFraW5nQ29udHJhY3QACQC5CQIJAMwIAgICJXMJAMwIAgIPc3Rha2luZ0NvbnRyYWN0BQNuaWwFCXNlcGFyYXRvcgETa2V5Qm9vc3RpbmdDb250cmFjdAAJALkJAgkAzAgCAgIlcwkAzAgCAhBib29zdGluZ0NvbnRyYWN0BQNuaWwFCXNlcGFyYXRvcgEPa2V5U3dhcENvbnRyYWN0AAkAuQkCCQDMCAICAiVzCQDMCAICDHN3YXBDb250cmFjdAUDbmlsBQlzZXBhcmF0b3IBFmtleUFzc2V0c1N0b3JlQ29udHJhY3QACQC5CQIJAMwIAgICJXMJAMwIAgITYXNzZXRzU3RvcmVDb250cmFjdAUDbmlsBQlzZXBhcmF0b3IBDmtleVVzZHRBc3NldElkAAkAuQkCCQDMCAICAiVzCQDMCAICC3VzZHRBc3NldElkBQNuaWwFCXNlcGFyYXRvcgEMa2V5V3hBc3NldElkAAkAuQkCCQDMCAICAiVzCQDMCAICCXd4QXNzZXRJZAUDbmlsBQlzZXBhcmF0b3IBC2tleVNodXRkb3duAAkAuQkCCQDMCAICAiVzCQDMCAICCHNodXRkb3duBQNuaWwFCXNlcGFyYXRvcgELa2V5TWluRGVsYXkACQC5CQIJAMwIAgICJXMJAMwIAgIIbWluRGVsYXkFA25pbAUJc2VwYXJhdG9yAQ9rZXlMb2NrRnJhY3Rpb24ACQC5CQIJAMwIAgICJXMJAMwIAgIMbG9ja0ZyYWN0aW9uBQNuaWwFCXNlcGFyYXRvcgEPa2V5U2hhcmVBc3NldElkAQtiYXNlQXNzZXRJZAkAuQkCCQDMCAICBCVzJXMJAMwIAgkBD2Fzc2V0SWRUb1N0cmluZwEFC2Jhc2VBc3NldElkCQDMCAICDHNoYXJlQXNzZXRJZAUDbmlsBQlzZXBhcmF0b3IBDmtleUJhc2VBc3NldElkAQxzaGFyZUFzc2V0SWQJALkJAgkAzAgCAgQlcyVzCQDMCAIJAQ9hc3NldElkVG9TdHJpbmcBBQxzaGFyZUFzc2V0SWQJAMwIAgILYmFzZUFzc2V0SWQFA25pbAUJc2VwYXJhdG9yAQlrZXlQZXJpb2QBC2Jhc2VBc3NldElkCQC5CQIJAMwIAgIEJXMlcwkAzAgCCQEPYXNzZXRJZFRvU3RyaW5nAQULYmFzZUFzc2V0SWQJAMwIAgIGcGVyaW9kBQNuaWwFCXNlcGFyYXRvcgEUa2V5UGVyaW9kU3RhcnRIZWlnaHQCC2Jhc2VBc3NldElkBnBlcmlvZAkAuQkCCQDMCAICBiVzJXMlZAkAzAgCCQEPYXNzZXRJZFRvU3RyaW5nAQULYmFzZUFzc2V0SWQJAMwIAgIRcGVyaW9kU3RhcnRIZWlnaHQJAMwIAgkApAMBBQZwZXJpb2QFA25pbAUJc2VwYXJhdG9yARtrZXlCYXNlQXNzZXRBbW91bnRUb0NvbnZlcnQBC2Jhc2VBc3NldElkCQC5CQIJAMwIAgIEJXMlcwkAzAgCCQEPYXNzZXRJZFRvU3RyaW5nAQULYmFzZUFzc2V0SWQJAMwIAgIYYmFzZUFzc2V0QW1vdW50VG9Db252ZXJ0BQNuaWwFCXNlcGFyYXRvcgEca2V5U2hhcmVBc3NldEFtb3VudFRvQ29udmVydAELYmFzZUFzc2V0SWQJALkJAgkAzAgCAgQlcyVzCQDMCAIJAQ9hc3NldElkVG9TdHJpbmcBBQtiYXNlQXNzZXRJZAkAzAgCAhlzaGFyZUFzc2V0QW1vdW50VG9Db252ZXJ0BQNuaWwFCXNlcGFyYXRvcgEfa2V5VXNlckJhc2VBc3NldEFtb3VudFRvQ29udmVydAILYmFzZUFzc2V0SWQLdXNlckFkZHJlc3MJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgkBD2Fzc2V0SWRUb1N0cmluZwEFC2Jhc2VBc3NldElkCQDMCAIJAKUIAQULdXNlckFkZHJlc3MJAMwIAgIYYmFzZUFzc2V0QW1vdW50VG9Db252ZXJ0BQNuaWwFCXNlcGFyYXRvcgEla2V5VXNlckJhc2VBc3NldEFtb3VudFRvQ29udmVydFBlcmlvZAILYmFzZUFzc2V0SWQLdXNlckFkZHJlc3MJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCCQEPYXNzZXRJZFRvU3RyaW5nAQULYmFzZUFzc2V0SWQJAMwIAgkApQgBBQt1c2VyQWRkcmVzcwkAzAgCAhhiYXNlQXNzZXRBbW91bnRUb0NvbnZlcnQJAMwIAgIGcGVyaW9kBQNuaWwFCXNlcGFyYXRvcgEga2V5VXNlclNoYXJlQXNzZXRBbW91bnRUb0NvbnZlcnQCC2Jhc2VBc3NldElkC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIJAQ9hc3NldElkVG9TdHJpbmcBBQtiYXNlQXNzZXRJZAkAzAgCCQClCAEFC3VzZXJBZGRyZXNzCQDMCAICGXNoYXJlQXNzZXRBbW91bnRUb0NvbnZlcnQFA25pbAUJc2VwYXJhdG9yASZrZXlVc2VyU2hhcmVBc3NldEFtb3VudFRvQ29udmVydFBlcmlvZAILYmFzZUFzc2V0SWQLdXNlckFkZHJlc3MJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCCQEPYXNzZXRJZFRvU3RyaW5nAQULYmFzZUFzc2V0SWQJAMwIAgkApQgBBQt1c2VyQWRkcmVzcwkAzAgCAhlzaGFyZUFzc2V0QW1vdW50VG9Db252ZXJ0CQDMCAICBnBlcmlvZAUDbmlsBQlzZXBhcmF0b3IBDmtleVByaWNlUGVyaW9kAgtiYXNlQXNzZXRJZAZwZXJpb2QJALkJAgkAzAgCAgYlcyVzJWQJAMwIAgkBD2Fzc2V0SWRUb1N0cmluZwEFC2Jhc2VBc3NldElkCQDMCAICBXByaWNlCQDMCAIJAKQDAQUGcGVyaW9kBQNuaWwFCXNlcGFyYXRvcgEPa2V5UHJpY2VIaXN0b3J5AQtiYXNlQXNzZXRJZAkAuQkCCQDMCAICCiVzJXMlcyVkJWQJAMwIAgkBD2Fzc2V0SWRUb1N0cmluZwEFC2Jhc2VBc3NldElkCQDMCAICBXByaWNlCQDMCAICB2hpc3RvcnkJAMwIAgkApAMBCAUJbGFzdEJsb2NrBmhlaWdodAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQNuaWwFCXNlcGFyYXRvcgERa2V5UHJpY2VQZXJpb2RQdXQCC2Jhc2VBc3NldElkBnBlcmlvZAkAuQkCCQDMCAICCCVzJXMlZCVzCQDMCAIJAQ9hc3NldElkVG9TdHJpbmcBBQtiYXNlQXNzZXRJZAkAzAgCAgVwcmljZQkAzAgCCQCkAwEFBnBlcmlvZAkAzAgCAgNwdXQFA25pbAUJc2VwYXJhdG9yARJrZXlQcmljZVB1dEhpc3RvcnkBC2Jhc2VBc3NldElkCQC5CQIJAMwIAgIMJXMlcyVzJXMlZCVkCQDMCAIJAQ9hc3NldElkVG9TdHJpbmcBBQtiYXNlQXNzZXRJZAkAzAgCAgVwcmljZQkAzAgCAgdoaXN0b3J5CQDMCAICA3B1dAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sGaGVpZ2h0CQDMCAIJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAFA25pbAUJc2VwYXJhdG9yARFrZXlQcmljZVBlcmlvZEdldAILYmFzZUFzc2V0SWQGcGVyaW9kCQC5CQIJAMwIAgIIJXMlcyVkJXMJAMwIAgkBD2Fzc2V0SWRUb1N0cmluZwEFC2Jhc2VBc3NldElkCQDMCAICBXByaWNlCQDMCAIJAKQDAQUGcGVyaW9kCQDMCAICA2dldAUDbmlsBQlzZXBhcmF0b3IBEmtleVByaWNlR2V0SGlzdG9yeQELYmFzZUFzc2V0SWQJALkJAgkAzAgCAgwlcyVzJXMlcyVkJWQJAMwIAgkBD2Fzc2V0SWRUb1N0cmluZwEFC2Jhc2VBc3NldElkCQDMCAICBXByaWNlCQDMCAICB2hpc3RvcnkJAMwIAgIDZ2V0CQDMCAIJAKQDAQgFCWxhc3RCbG9jawZoZWlnaHQJAMwIAgkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUDbmlsBQlzZXBhcmF0b3IBD2tleUhpc3RvcnlFbnRyeQULYmFzZUFzc2V0SWQJb3BlcmF0aW9uBnBlcmlvZAt1c2VyQWRkcmVzcwR0eElkCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgIHaGlzdG9yeQkAzAgCCQCwCQEJAQV2YWx1ZQEFC2Jhc2VBc3NldElkCQDMCAIFCW9wZXJhdGlvbgkAzAgCCQClCAEFC3VzZXJBZGRyZXNzCQDMCAIJANgEAQUEdHhJZAkAzAgCCQCkAwEFBmhlaWdodAUDbmlsBQlzZXBhcmF0b3IBE2tleU1hbmFnZXJQdWJsaWNLZXkAAhQlc19fbWFuYWdlclB1YmxpY0tleQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQABAckbWF0Y2gwCQCiCAEJARNrZXlNYW5hZ2VyUHVibGljS2V5AAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJANkEAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAQHJG1hdGNoMAkAoggBCQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgAVcGVybWlzc2lvbkRlbmllZEVycm9yCQACAQIRUGVybWlzc2lvbiBkZW5pZWQBCG11c3RUaGlzAQFpAwkAAAIIBQFpBmNhbGxlcgUEdGhpcwYFFXBlcm1pc3Npb25EZW5pZWRFcnJvcgELbXVzdE1hbmFnZXIBAWkEByRtYXRjaDAJARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkFAnBrBgUVcGVybWlzc2lvbkRlbmllZEVycm9yAwkAAQIFByRtYXRjaDACBFVuaXQJAQhtdXN0VGhpcwEFAWkJAAIBAgtNYXRjaCBlcnJvcgAIc2h1dGRvd24JAQt2YWx1ZU9yRWxzZQIJAKAIAQkBC2tleVNodXRkb3duAAcBDXNodXRkb3duQ2hlY2sBAWkDAwkBASEBBQhzaHV0ZG93bgYJAQttdXN0TWFuYWdlcgEFAWkGCQACAQIVb3BlcmF0aW9uIGlzIGRpc2FibGVkAA9mYWN0b3J5Q29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQxnZXRTdHJPckZhaWwCBQR0aGlzCQESa2V5RmFjdG9yeUNvbnRyYWN0AAARbHBTdGFraW5nQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQxnZXRTdHJPckZhaWwCBQR0aGlzCQEUa2V5THBTdGFraW5nQ29udHJhY3QAAA9zdGFraW5nQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQxnZXRTdHJPckZhaWwCBQR0aGlzCQESa2V5U3Rha2luZ0NvbnRyYWN0AAAQYm9vc3RpbmdDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBDGdldFN0ck9yRmFpbAIFBHRoaXMJARNrZXlCb29zdGluZ0NvbnRyYWN0AAAMc3dhcENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQEMZ2V0U3RyT3JGYWlsAgUEdGhpcwkBD2tleVN3YXBDb250cmFjdAAAE2Fzc2V0c1N0b3JlQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQxnZXRTdHJPckZhaWwCBQR0aGlzCQEWa2V5QXNzZXRzU3RvcmVDb250cmFjdAAAC3VzZHRBc3NldElkCQEMcGFyc2VBc3NldElkAQkBDGdldFN0ck9yRmFpbAIFBHRoaXMJAQ5rZXlVc2R0QXNzZXRJZAAACXd4QXNzZXRJZAkBDHBhcnNlQXNzZXRJZAEJAQxnZXRTdHJPckZhaWwCBQR0aGlzCQEMa2V5V3hBc3NldElkAAAPbWluRGVsYXlEZWZhdWx0AKALAAhtaW5EZWxheQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQELa2V5TWluRGVsYXkABQ9taW5EZWxheURlZmF1bHQAFmxvY2tGcmFjdGlvbk11bHRpcGxpZXIAgMLXLwATbG9ja0ZyYWN0aW9uRGVmYXVsdAkAawMAAQUWbG9ja0ZyYWN0aW9uTXVsdGlwbGllcgACAAxsb2NrRnJhY3Rpb24JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBD2tleUxvY2tGcmFjdGlvbgAFE2xvY2tGcmFjdGlvbkRlZmF1bHQBC2dldFBvb2xJbmZvAQ1hbW91bnRBc3NldElkBBBhbW91bnRBc3NldElkU3RyCQEPYXNzZXRJZFRvU3RyaW5nAQUNYW1vdW50QXNzZXRJZAQPcHJpY2VBc3NldElkU3RyCQEPYXNzZXRJZFRvU3RyaW5nAQULdXNkdEFzc2V0SWQEDnBvb2xJbmZvT3B0aW9uCgABQAkA/AcEBQ9mYWN0b3J5Q29udHJhY3QCEHBvb2xJbmZvUkVBRE9OTFkJAMwIAgUQYW1vdW50QXNzZXRJZFN0cgkAzAgCBQ9wcmljZUFzc2V0SWRTdHIFA25pbAUDbmlsAwkAAQIFAUACFShBZGRyZXNzLCBCeXRlVmVjdG9yKQUBQAUEdW5pdAUOcG9vbEluZm9PcHRpb24BCWNhbGNQcmljZQIJbHBBc3NldElkDHNoYXJlQXNzZXRJZAQOc2hhcmVBc3NldEluZm8JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQxzaGFyZUFzc2V0SWQCHmZhaWxlZCB0byBnZXQgc2hhcmUgYXNzZXQgaW5mbwQSc2hhcmVBc3NldEVtaXNzaW9uCAUOc2hhcmVBc3NldEluZm8IcXVhbnRpdHkEDHN0YWtlZEFtb3VudAkBDmVuc3VyZVBvc2l0aXZlAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCgABQAkA/AcEBQ9zdGFraW5nQ29udHJhY3QCFHN0YWtlZEJ5VXNlclJFQURPTkxZCQDMCAIJAQ9hc3NldElkVG9TdHJpbmcBBQlscEFzc2V0SWQJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAFBHVuaXQJAQd3cmFwRXJyAQIjaW52YWxpZCBzdGFrZWRCeVVzZXJSRUFET05MWSByZXN1bHQEBXByaWNlAwkAAAIFEnNoYXJlQXNzZXRFbWlzc2lvbgAABQ1zY2FsZTE4QmlnSW50CQC9AgQJALYCAQUMc3Rha2VkQW1vdW50BQ1zY2FsZTE4QmlnSW50CQC2AgEFEnNoYXJlQXNzZXRFbWlzc2lvbgUFRkxPT1IFBXByaWNlCgFpAQpzZXRNYW5hZ2VyARdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBBVjaGVja01hbmFnZXJQdWJsaWNLZXkJANkEAQUXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkDCQAAAgUVY2hlY2tNYW5hZ2VyUHVibGljS2V5BRVjaGVja01hbmFnZXJQdWJsaWNLZXkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAUXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5jb25maXJtTWFuYWdlcgAEAnBtCQEdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQABAVoYXNQTQMJAQlpc0RlZmluZWQBBQJwbQYJAQh0aHJvd0VycgECEm5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQVoYXNQTQUFaGFzUE0EB2NoZWNrUE0DCQAAAggFAWkPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJwbQYJAQh0aHJvd0VycgECG3lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQdjaGVja1BNBQdjaGVja1BNCQDMCAIJAQtTdHJpbmdFbnRyeQIJARNrZXlNYW5hZ2VyUHVibGljS2V5AAkA2AQBCQEFdmFsdWUBBQJwbQkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEEZW1pdAIHYXNzZXRJZAZhbW91bnQEC2NoZWNrQ2FsbGVyCQEIbXVzdFRoaXMBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQMaXNSZWlzc3VhYmxlBgkAlAoCCQDMCAIJAQdSZWlzc3VlAwUHYXNzZXRJZAUGYW1vdW50BQxpc1JlaXNzdWFibGUFA25pbAUGYW1vdW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBGJ1cm4CB2Fzc2V0SWQGYW1vdW50BAtjaGVja0NhbGxlcgkBCG11c3RUaGlzAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIJAJQKAgkAzAgCCQEEQnVybgIFB2Fzc2V0SWQFBmFtb3VudAUDbmlsBQZhbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEGY3JlYXRlBQ5iYXNlQXNzZXRJZFN0cg9zaGFyZUFzc2V0SWRTdHIOc2hhcmVBc3NldE5hbWUVc2hhcmVBc3NldERlc2NyaXB0aW9uDnNoYXJlQXNzZXRMb2dvBA9zaGFyZUFzc2V0TGFiZWwCClNUQUtJTkdfTFAEC2Jhc2VBc3NldElkCQEMcGFyc2VBc3NldElkAQUOYmFzZUFzc2V0SWRTdHIEBmNoZWNrcwkAzAgCCQELbXVzdE1hbmFnZXIBBQFpCQDMCAIDCQEJaXNEZWZpbmVkAQkBC2dldFBvb2xJbmZvAQULYmFzZUFzc2V0SWQGCQEIdGhyb3dFcnIBAhJpbnZhbGlkIGJhc2UgYXNzZXQFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQLY29tbW9uU3RhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQlrZXlQZXJpb2QBBQtiYXNlQXNzZXRJZAAABQNuaWwDCQAAAgUPc2hhcmVBc3NldElkU3RyAgAEFXNoYXJlQXNzZXRJc3N1ZUFtb3VudAABBBVzaGFyZUFzc2V0SXNzdWVBY3Rpb24JAMIIBQUOc2hhcmVBc3NldE5hbWUFFXNoYXJlQXNzZXREZXNjcmlwdGlvbgUVc2hhcmVBc3NldElzc3VlQW1vdW50BRJzaGFyZUFzc2V0RGVjaW1hbHMGBBZjYWxjdWxhdGVkU2hhcmVBc3NldElkCQC4CAEFFXNoYXJlQXNzZXRJc3N1ZUFjdGlvbgQUc2hhcmVBc3NldEJ1cm5BY3Rpb24JAQRCdXJuAgUWY2FsY3VsYXRlZFNoYXJlQXNzZXRJZAUVc2hhcmVBc3NldElzc3VlQW1vdW50BBljYWxjdWxhdGVkU2hhcmVBc3NldElkU3RyCQDYBAEFFmNhbGN1bGF0ZWRTaGFyZUFzc2V0SWQEDmNyZWF0ZU9yVXBkYXRlCQD8BwQFE2Fzc2V0c1N0b3JlQ29udHJhY3QCDmNyZWF0ZU9yVXBkYXRlCQDMCAIFGWNhbGN1bGF0ZWRTaGFyZUFzc2V0SWRTdHIJAMwIAgUOc2hhcmVBc3NldExvZ28JAMwIAgcFA25pbAUDbmlsAwkAAAIFDmNyZWF0ZU9yVXBkYXRlBQ5jcmVhdGVPclVwZGF0ZQQIYWRkTGFiZWwJAPwHBAUTYXNzZXRzU3RvcmVDb250cmFjdAIIYWRkTGFiZWwJAMwIAgUZY2FsY3VsYXRlZFNoYXJlQXNzZXRJZFN0cgkAzAgCBQ9zaGFyZUFzc2V0TGFiZWwFA25pbAUDbmlsAwkAAAIFCGFkZExhYmVsBQhhZGRMYWJlbAkAlAoCCQDOCAIFC2NvbW1vblN0YXRlCQDMCAIFFXNoYXJlQXNzZXRJc3N1ZUFjdGlvbgkAzAgCBRRzaGFyZUFzc2V0QnVybkFjdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5U2hhcmVBc3NldElkAQULYmFzZUFzc2V0SWQFGWNhbGN1bGF0ZWRTaGFyZUFzc2V0SWRTdHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleUJhc2VBc3NldElkAQUWY2FsY3VsYXRlZFNoYXJlQXNzZXRJZAUOYmFzZUFzc2V0SWRTdHIFA25pbAUZY2FsY3VsYXRlZFNoYXJlQXNzZXRJZFN0cgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQMc2hhcmVBc3NldElkCQDZBAEFD3NoYXJlQXNzZXRJZFN0cgQOc2hhcmVBc3NldEluZm8JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQxzaGFyZUFzc2V0SWQJAQd3cmFwRXJyAQIWaW52YWxpZCBzaGFyZSBhc3NldCBpZAQLY2hlY2tJc3N1ZXIDCQAAAggFDnNoYXJlQXNzZXRJbmZvBmlzc3VlcgURbHBTdGFraW5nQ29udHJhY3QGCQEIdGhyb3dFcnIBAh1pbnZhbGlkIHNoYXJlIGFzc2V0IGlkIGlzc3VlcgMJAAACBQtjaGVja0lzc3VlcgULY2hlY2tJc3N1ZXIJAJQKAgkAzggCBQtjb21tb25TdGF0ZQkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5U2hhcmVBc3NldElkAQULYmFzZUFzc2V0SWQFD3NoYXJlQXNzZXRJZFN0cgkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5QmFzZUFzc2V0SWQBBQxzaGFyZUFzc2V0SWQFDmJhc2VBc3NldElkU3RyBQNuaWwFD3NoYXJlQXNzZXRJZFN0cgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQNwdXQABANwbXQDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABCQCRAwIIBQFpCHBheW1lbnRzAAAJAQh0aHJvd0VycgECHWV4YWN0bHkgMSBwYXltZW50IGlzIGV4cGVjdGVkBAtiYXNlQXNzZXRJZAgFA3BtdAdhc3NldElkBAt1c2VyQWRkcmVzcwgFAWkGY2FsbGVyBAZjaGVja3MJAMwIAgkBDXNodXRkb3duQ2hlY2sBBQFpCQDMCAIDCQEJaXNEZWZpbmVkAQkAoggBCQEPa2V5U2hhcmVBc3NldElkAQULYmFzZUFzc2V0SWQGCQEIdGhyb3dFcnIBAg1pbnZhbGlkIGFzc2V0BQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEDSR0MDExNjc1MTE3NzgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkBC2dldFBvb2xJbmZvAQULYmFzZUFzc2V0SWQJAQd3cmFwRXJyAQINaW52YWxpZCBhc3NldAQLcG9vbEFkZHJlc3MIBQ0kdDAxMTY3NTExNzc4Al8xBAlscEFzc2V0SWQIBQ0kdDAxMTY3NTExNzc4Al8yBAZwZXJpb2QJAQV2YWx1ZQEJAJ8IAQkBCWtleVBlcmlvZAEFC2Jhc2VBc3NldElkBCh1c2VyQmFzZUFzc2V0QW1vdW50VG9Db252ZXJ0UGVyaW9kT3B0aW9uCQCfCAEJASVrZXlVc2VyQmFzZUFzc2V0QW1vdW50VG9Db252ZXJ0UGVyaW9kAgULYmFzZUFzc2V0SWQFC3VzZXJBZGRyZXNzBBljbGFpbVNoYXJlQXNzZXRJbnZvY2F0aW9uAwkAAAIFKHVzZXJCYXNlQXNzZXRBbW91bnRUb0NvbnZlcnRQZXJpb2RPcHRpb24FBHVuaXQFBHVuaXQEInVzZXJCYXNlQXNzZXRBbW91bnRUb0NvbnZlcnRQZXJpb2QJAQV2YWx1ZQEFKHVzZXJCYXNlQXNzZXRBbW91bnRUb0NvbnZlcnRQZXJpb2RPcHRpb24DCQAAAgUidXNlckJhc2VBc3NldEFtb3VudFRvQ29udmVydFBlcmlvZAUGcGVyaW9kBQR1bml0CQD8BwQFBHRoaXMCD2NsYWltU2hhcmVBc3NldAkAzAgCCQEPYXNzZXRJZFRvU3RyaW5nAQULYmFzZUFzc2V0SWQJAMwIAgkApQgBBQt1c2VyQWRkcmVzcwUDbmlsBQNuaWwDCQAAAgUZY2xhaW1TaGFyZUFzc2V0SW52b2NhdGlvbgUZY2xhaW1TaGFyZUFzc2V0SW52b2NhdGlvbgQYYmFzZUFzc2V0QW1vdW50VG9Db252ZXJ0CQELdmFsdWVPckVsc2UCCQCfCAEJARtrZXlCYXNlQXNzZXRBbW91bnRUb0NvbnZlcnQBBQtiYXNlQXNzZXRJZAAABBx1c2VyQmFzZUFzc2V0QW1vdW50VG9Db252ZXJ0CQEFdmFsdWUBCQC2CQEJAJEDAgkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJAR9rZXlVc2VyQmFzZUFzc2V0QW1vdW50VG9Db252ZXJ0AgULYmFzZUFzc2V0SWQFC3VzZXJBZGRyZXNzAgwlZCVkJWRfXzBfXzAFCXNlcGFyYXRvcgABCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJARtrZXlCYXNlQXNzZXRBbW91bnRUb0NvbnZlcnQBBQtiYXNlQXNzZXRJZAkAZAIFGGJhc2VBc3NldEFtb3VudFRvQ29udmVydAgFA3BtdAZhbW91bnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBH2tleVVzZXJCYXNlQXNzZXRBbW91bnRUb0NvbnZlcnQCBQtiYXNlQXNzZXRJZAULdXNlckFkZHJlc3MJALkJAgkAzAgCAgYlZCVkJWQJAMwIAgkApAMBCQBkAgUcdXNlckJhc2VBc3NldEFtb3VudFRvQ29udmVydAgFA3BtdAZhbW91bnQJAMwIAgkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQCkAwEFBnBlcmlvZAUDbmlsBQlzZXBhcmF0b3IJAMwIAgkBDEludGVnZXJFbnRyeQIJASVrZXlVc2VyQmFzZUFzc2V0QW1vdW50VG9Db252ZXJ0UGVyaW9kAgULYmFzZUFzc2V0SWQFC3VzZXJBZGRyZXNzBQZwZXJpb2QJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD2tleUhpc3RvcnlFbnRyeQUFC2Jhc2VBc3NldElkAgNwdXQFBnBlcmlvZAULdXNlckFkZHJlc3MIBQFpDXRyYW5zYWN0aW9uSWQJALkJAgkAzAgCAgYlZCVkJWQJAMwIAgkApAMBCAUDcG10BmFtb3VudAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAKQDAQUcdXNlckJhc2VBc3NldEFtb3VudFRvQ29udmVydAUDbmlsBQlzZXBhcmF0b3IFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ9jbGFpbVNoYXJlQXNzZXQCDmJhc2VBc3NldElkU3RyDnVzZXJBZGRyZXNzU3RyBAZjaGVja3MJAMwIAgkBDXNodXRkb3duQ2hlY2sBBQFpBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEC3VzZXJBZGRyZXNzAwkAAAIFDnVzZXJBZGRyZXNzU3RyAgAIBQFpBmNhbGxlcgQLY2hlY2tDYWxsZXIJAQhtdXN0VGhpcwEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUOdXNlckFkZHJlc3NTdHIJAQd3cmFwRXJyAQIUaW52YWxpZCB1c2VyIGFkZHJlc3MJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgULdXNlckFkZHJlc3MFC3VzZXJBZGRyZXNzBAtiYXNlQXNzZXRJZAkBDHBhcnNlQXNzZXRJZAEFDmJhc2VBc3NldElkU3RyBAxzaGFyZUFzc2V0SWQJAQV2YWx1ZQEJAQxwYXJzZUFzc2V0SWQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBD2tleVNoYXJlQXNzZXRJZAEFC2Jhc2VBc3NldElkCQEHd3JhcEVycgECFWludmFsaWQgYmFzZSBhc3NldCBpZAMJAAACBQxzaGFyZUFzc2V0SWQFDHNoYXJlQXNzZXRJZAQGcGVyaW9kCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQkBCWtleVBlcmlvZAEFC2Jhc2VBc3NldElkCQEHd3JhcEVycgECDmludmFsaWQgcGVyaW9kAwkAAAIFBnBlcmlvZAUGcGVyaW9kBBx1c2VyQmFzZUFzc2V0QW1vdW50VG9Db252ZXJ0CQEFdmFsdWUBCQC2CQEJAJEDAgkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJAR9rZXlVc2VyQmFzZUFzc2V0QW1vdW50VG9Db252ZXJ0AgULYmFzZUFzc2V0SWQFC3VzZXJBZGRyZXNzAgwlZCVkJWRfXzBfXzAFCXNlcGFyYXRvcgABBBRjaGVja0Ftb3VudFRvQ29udmVydAMJAGYCBRx1c2VyQmFzZUFzc2V0QW1vdW50VG9Db252ZXJ0AAAGCQEIdGhyb3dFcnIBAhBub3RoaW5nIHRvIGNsYWltAwkAAAIFFGNoZWNrQW1vdW50VG9Db252ZXJ0BRRjaGVja0Ftb3VudFRvQ29udmVydAQidXNlckJhc2VBc3NldEFtb3VudFRvQ29udmVydFBlcmlvZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEJASVrZXlVc2VyQmFzZUFzc2V0QW1vdW50VG9Db252ZXJ0UGVyaW9kAgULYmFzZUFzc2V0SWQFC3VzZXJBZGRyZXNzCQEHd3JhcEVycgECFGZhaWxlZCB0byBnZXQgcGVyaW9kBAtjaGVja1BlcmlvZAMJAGYCBQZwZXJpb2QFInVzZXJCYXNlQXNzZXRBbW91bnRUb0NvbnZlcnRQZXJpb2QGCQEIdGhyb3dFcnIBAg5pbnZhbGlkIHBlcmlvZAMJAAACBQtjaGVja1BlcmlvZAULY2hlY2tQZXJpb2QEBXByaWNlCQCeAwEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoQgBCQERa2V5UHJpY2VQZXJpb2RQdXQCBQtiYXNlQXNzZXRJZAUidXNlckJhc2VBc3NldEFtb3VudFRvQ29udmVydFBlcmlvZAkBB3dyYXBFcnIBAhNmYWlsZWQgdG8gZ2V0IHByaWNlBBBzaGFyZUFzc2V0QW1vdW50CQCgAwEJALwCAwkAtgIBBRx1c2VyQmFzZUFzc2V0QW1vdW50VG9Db252ZXJ0BQ1zY2FsZTE4QmlnSW50BQVwcmljZQkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAR9rZXlVc2VyQmFzZUFzc2V0QW1vdW50VG9Db252ZXJ0AgULYmFzZUFzc2V0SWQFC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIGJWQlZCVkCQDMCAIJAKQDAQAACQDMCAIJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkApAMBBQZwZXJpb2QFA25pbAUJc2VwYXJhdG9yCQDMCAIJAQtEZWxldGVFbnRyeQEJASVrZXlVc2VyQmFzZUFzc2V0QW1vdW50VG9Db252ZXJ0UGVyaW9kAgULYmFzZUFzc2V0SWQFC3VzZXJBZGRyZXNzCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBRBzaGFyZUFzc2V0QW1vdW50BQxzaGFyZUFzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD2tleUhpc3RvcnlFbnRyeQUFC2Jhc2VBc3NldElkAg9jbGFpbVNoYXJlQXNzZXQFBnBlcmlvZAULdXNlckFkZHJlc3MIBQFpDXRyYW5zYWN0aW9uSWQJALkJAgkAzAgCAgglZCVkJWQlZAkAzAgCCQCkAwEFEHNoYXJlQXNzZXRBbW91bnQJAMwIAgkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQCmAwEFBXByaWNlCQDMCAIJAKQDAQUcdXNlckJhc2VBc3NldEFtb3VudFRvQ29udmVydAUDbmlsBQlzZXBhcmF0b3IFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQNnZXQABAZjaGVja3MJAMwIAgkBDXNodXRkb3duQ2hlY2sBBQFpBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEA3BtdAMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAEJAJEDAggFAWkIcGF5bWVudHMAAAkBCHRocm93RXJyAQIdZXhhY3RseSAxIHBheW1lbnQgaXMgZXhwZWN0ZWQEDHNoYXJlQXNzZXRJZAgFA3BtdAdhc3NldElkBAtiYXNlQXNzZXRJZAkBBXZhbHVlAQkBDHBhcnNlQXNzZXRJZAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEOa2V5QmFzZUFzc2V0SWQBBQxzaGFyZUFzc2V0SWQJAQd3cmFwRXJyAQIWaW52YWxpZCBzaGFyZSBhc3NldCBpZAMJAAACBQtiYXNlQXNzZXRJZAULYmFzZUFzc2V0SWQEC3VzZXJBZGRyZXNzCAUBaQZjYWxsZXIEDSR0MDE2MTg4MTYzNzcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkBC2dldFBvb2xJbmZvAQULYmFzZUFzc2V0SWQJAQd3cmFwRXJyAQINaW52YWxpZCBhc3NldAQLcG9vbEFkZHJlc3MIBQ0kdDAxNjE4ODE2Mzc3Al8xBAlscEFzc2V0SWQIBQ0kdDAxNjE4ODE2Mzc3Al8yBAZwZXJpb2QJAQV2YWx1ZQEJAJ8IAQkBCWtleVBlcmlvZAEFC2Jhc2VBc3NldElkBCl1c2VyU2hhcmVBc3NldEFtb3VudFRvQ29udmVydFBlcmlvZE9wdGlvbgkAnwgBCQEma2V5VXNlclNoYXJlQXNzZXRBbW91bnRUb0NvbnZlcnRQZXJpb2QCBQtiYXNlQXNzZXRJZAULdXNlckFkZHJlc3MEGGNsYWltQmFzZUFzc2V0SW52b2NhdGlvbgMJAAACBSl1c2VyU2hhcmVBc3NldEFtb3VudFRvQ29udmVydFBlcmlvZE9wdGlvbgUEdW5pdAUEdW5pdAQjdXNlclNoYXJlQXNzZXRBbW91bnRUb0NvbnZlcnRQZXJpb2QJAQV2YWx1ZQEFKXVzZXJTaGFyZUFzc2V0QW1vdW50VG9Db252ZXJ0UGVyaW9kT3B0aW9uAwkAAAIFI3VzZXJTaGFyZUFzc2V0QW1vdW50VG9Db252ZXJ0UGVyaW9kBQZwZXJpb2QFBHVuaXQJAPwHBAUEdGhpcwIOY2xhaW1CYXNlQXNzZXQJAMwIAgkBD2Fzc2V0SWRUb1N0cmluZwEFC2Jhc2VBc3NldElkCQDMCAIJAKUIAQULdXNlckFkZHJlc3MFA25pbAUDbmlsAwkAAAIFGGNsYWltQmFzZUFzc2V0SW52b2NhdGlvbgUYY2xhaW1CYXNlQXNzZXRJbnZvY2F0aW9uBBlzaGFyZUFzc2V0QW1vdW50VG9Db252ZXJ0CQELdmFsdWVPckVsc2UCCQCfCAEJARxrZXlTaGFyZUFzc2V0QW1vdW50VG9Db252ZXJ0AQULYmFzZUFzc2V0SWQAAAQddXNlclNoYXJlQXNzZXRBbW91bnRUb0NvbnZlcnQJAQV2YWx1ZQEJALYJAQkAkQMCCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBIGtleVVzZXJTaGFyZUFzc2V0QW1vdW50VG9Db252ZXJ0AgULYmFzZUFzc2V0SWQFC3VzZXJBZGRyZXNzAgwlZCVkJWRfXzBfXzAFCXNlcGFyYXRvcgABCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJARxrZXlTaGFyZUFzc2V0QW1vdW50VG9Db252ZXJ0AQULYmFzZUFzc2V0SWQJAGQCBRlzaGFyZUFzc2V0QW1vdW50VG9Db252ZXJ0CAUDcG10BmFtb3VudAkAzAgCCQELU3RyaW5nRW50cnkCCQEga2V5VXNlclNoYXJlQXNzZXRBbW91bnRUb0NvbnZlcnQCBQtiYXNlQXNzZXRJZAULdXNlckFkZHJlc3MJALkJAgkAzAgCAgYlZCVkJWQJAMwIAgkApAMBCQBkAgUddXNlclNoYXJlQXNzZXRBbW91bnRUb0NvbnZlcnQIBQNwbXQGYW1vdW50CQDMCAIJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkApAMBBQZwZXJpb2QFA25pbAUJc2VwYXJhdG9yCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEma2V5VXNlclNoYXJlQXNzZXRBbW91bnRUb0NvbnZlcnRQZXJpb2QCBQtiYXNlQXNzZXRJZAULdXNlckFkZHJlc3MFBnBlcmlvZAkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5SGlzdG9yeUVudHJ5BQULYmFzZUFzc2V0SWQCA2dldAUGcGVyaW9kBQt1c2VyQWRkcmVzcwgFAWkNdHJhbnNhY3Rpb25JZAkAuQkCCQDMCAICBiVkJWQlZAkAzAgCCQCkAwEIBQNwbXQGYW1vdW50CQDMCAIJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkApAMBBR11c2VyU2hhcmVBc3NldEFtb3VudFRvQ29udmVydAUDbmlsBQlzZXBhcmF0b3IFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5jbGFpbUJhc2VBc3NldAIOYmFzZUFzc2V0SWRTdHIOdXNlckFkZHJlc3NTdHIEBmNoZWNrcwkAzAgCCQENc2h1dGRvd25DaGVjawEFAWkFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQLdXNlckFkZHJlc3MDCQAAAgUOdXNlckFkZHJlc3NTdHICAAgFAWkGY2FsbGVyBAtjaGVja0NhbGxlcgkBCG11c3RUaGlzAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQ51c2VyQWRkcmVzc1N0cgkBB3dyYXBFcnIBAhRpbnZhbGlkIHVzZXIgYWRkcmVzcwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQt1c2VyQWRkcmVzcwULdXNlckFkZHJlc3MEC2Jhc2VBc3NldElkCQEMcGFyc2VBc3NldElkAQUOYmFzZUFzc2V0SWRTdHIEDHNoYXJlQXNzZXRJZAkBBXZhbHVlAQkBDHBhcnNlQXNzZXRJZAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEPa2V5U2hhcmVBc3NldElkAQULYmFzZUFzc2V0SWQJAQd3cmFwRXJyAQIVaW52YWxpZCBiYXNlIGFzc2V0IGlkAwkAAAIFDHNoYXJlQXNzZXRJZAUMc2hhcmVBc3NldElkBAZwZXJpb2QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBCQEJa2V5UGVyaW9kAQULYmFzZUFzc2V0SWQJAQd3cmFwRXJyAQIOaW52YWxpZCBwZXJpb2QDCQAAAgUGcGVyaW9kBQZwZXJpb2QEHXVzZXJTaGFyZUFzc2V0QW1vdW50VG9Db252ZXJ0CQEFdmFsdWUBCQC2CQEJAJEDAgkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJASBrZXlVc2VyU2hhcmVBc3NldEFtb3VudFRvQ29udmVydAIFC2Jhc2VBc3NldElkBQt1c2VyQWRkcmVzcwIMJWQlZCVkX18wX18wBQlzZXBhcmF0b3IAAQQjdXNlclNoYXJlQXNzZXRBbW91bnRUb0NvbnZlcnRQZXJpb2QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBCQEma2V5VXNlclNoYXJlQXNzZXRBbW91bnRUb0NvbnZlcnRQZXJpb2QCBQtiYXNlQXNzZXRJZAULdXNlckFkZHJlc3MJAQd3cmFwRXJyAQIUZmFpbGVkIHRvIGdldCBwZXJpb2QEC2NoZWNrUGVyaW9kAwkAZgIFBnBlcmlvZAUjdXNlclNoYXJlQXNzZXRBbW91bnRUb0NvbnZlcnRQZXJpb2QGCQEIdGhyb3dFcnIBAg5pbnZhbGlkIHBlcmlvZAMJAAACBQtjaGVja1BlcmlvZAULY2hlY2tQZXJpb2QEBXByaWNlCQCeAwEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoQgBCQERa2V5UHJpY2VQZXJpb2RHZXQCBQtiYXNlQXNzZXRJZAUjdXNlclNoYXJlQXNzZXRBbW91bnRUb0NvbnZlcnRQZXJpb2QJAQd3cmFwRXJyAQITZmFpbGVkIHRvIGdldCBwcmljZQQPYmFzZUFzc2V0QW1vdW50CQCgAwEJALwCAwkAtgIBBR11c2VyU2hhcmVBc3NldEFtb3VudFRvQ29udmVydAUFcHJpY2UFDXNjYWxlMThCaWdJbnQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQEga2V5VXNlclNoYXJlQXNzZXRBbW91bnRUb0NvbnZlcnQCBQtiYXNlQXNzZXRJZAULdXNlckFkZHJlc3MJALkJAgkAzAgCAgYlZCVkJWQJAMwIAgkApAMBAAAJAMwIAgkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQCkAwEFBnBlcmlvZAUDbmlsBQlzZXBhcmF0b3IJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBJmtleVVzZXJTaGFyZUFzc2V0QW1vdW50VG9Db252ZXJ0UGVyaW9kAgULYmFzZUFzc2V0SWQFC3VzZXJBZGRyZXNzCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQ9iYXNlQXNzZXRBbW91bnQFC2Jhc2VBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9rZXlIaXN0b3J5RW50cnkFBQtiYXNlQXNzZXRJZAIOY2xhaW1CYXNlQXNzZXQFBnBlcmlvZAULdXNlckFkZHJlc3MIBQFpDXRyYW5zYWN0aW9uSWQJALkJAgkAzAgCAgglZCVkJWQlZAkAzAgCCQCkAwEFD2Jhc2VBc3NldEFtb3VudAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAKYDAQUFcHJpY2UJAMwIAgkApAMBBSN1c2VyU2hhcmVBc3NldEFtb3VudFRvQ29udmVydFBlcmlvZAUDbmlsBQlzZXBhcmF0b3IFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQhmaW5hbGl6ZQEOYmFzZUFzc2V0SWRTdHIEBmNoZWNrcwkAzAgCCQENc2h1dGRvd25DaGVjawEFAWkFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQLYmFzZUFzc2V0SWQJAQxwYXJzZUFzc2V0SWQBBQ5iYXNlQXNzZXRJZFN0cgQMc2hhcmVBc3NldElkCQEFdmFsdWUBCQEMcGFyc2VBc3NldElkAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJAQ9rZXlTaGFyZUFzc2V0SWQBBQtiYXNlQXNzZXRJZAkBB3dyYXBFcnIBAhVpbnZhbGlkIGJhc2UgYXNzZXQgaWQDCQAAAgUMc2hhcmVBc3NldElkBQxzaGFyZUFzc2V0SWQEDnNoYXJlQXNzZXRJbmZvCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUMc2hhcmVBc3NldElkCQEHd3JhcEVycgECFmludmFsaWQgc2hhcmUgYXNzZXQgaWQEBnBlcmlvZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEJAQlrZXlQZXJpb2QBBQtiYXNlQXNzZXRJZAkBB3dyYXBFcnIBAg5pbnZhbGlkIHBlcmlvZAMJAAACBQZwZXJpb2QFBnBlcmlvZAQXcGVyaW9kU3RhcnRIZWlnaHRPcHRpb24JAJ8IAQkBFGtleVBlcmlvZFN0YXJ0SGVpZ2h0AgULYmFzZUFzc2V0SWQFBnBlcmlvZAQKY2hlY2tEZWxheQMJAAACBRdwZXJpb2RTdGFydEhlaWdodE9wdGlvbgUEdW5pdAUEdW5pdAQFZGVsYXkJAGUCBQZoZWlnaHQJAQV2YWx1ZQEFF3BlcmlvZFN0YXJ0SGVpZ2h0T3B0aW9uBAxibG9ja3NUb1dhaXQJAJYDAQkAzAgCAAAJAMwIAgkAZQIFCG1pbkRlbGF5BQVkZWxheQUDbmlsAwkAAAIFDGJsb2Nrc1RvV2FpdAAABQR1bml0CQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIhZmluYWxpemF0aW9uIHdpbGwgYmUgcG9zc2libGUgaW4gCQDMCAIJAKQDAQUMYmxvY2tzVG9XYWl0CQDMCAICByBibG9ja3MFA25pbAIAAwkAAAIFCmNoZWNrRGVsYXkFCmNoZWNrRGVsYXkEDSR0MDIxODE4MjE5OTkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkBC2dldFBvb2xJbmZvAQULYmFzZUFzc2V0SWQJAQd3cmFwRXJyAQINaW52YWxpZCBhc3NldAQLcG9vbEFkZHJlc3MIBQ0kdDAyMTgxODIxOTk5Al8xBAlscEFzc2V0SWQIBQ0kdDAyMTgxODIxOTk5Al8yBA1zdGFraW5nUmV3YXJkCQETdmFsdWVPckVycm9yTWVzc2FnZQIKAAFACQD8BwQFD3N0YWtpbmdDb250cmFjdAIRY2xhaW1XeERvTm90VGhyb3cJAMwIAgkBD2Fzc2V0SWRUb1N0cmluZwEFCWxwQXNzZXRJZAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFABQR1bml0CQEHd3JhcEVycgECFmludmFsaWQgY2xhaW1XeCByZXN1bHQDCQAAAgUNc3Rha2luZ1Jld2FyZAUNc3Rha2luZ1Jld2FyZAQYYmFzZUFzc2V0QW1vdW50VG9Db252ZXJ0CQELdmFsdWVPckVsc2UCCQCfCAEJARtrZXlCYXNlQXNzZXRBbW91bnRUb0NvbnZlcnQBBQtiYXNlQXNzZXRJZAAABBlzaGFyZUFzc2V0QW1vdW50VG9Db252ZXJ0CQELdmFsdWVPckVsc2UCCQCfCAEJARxrZXlTaGFyZUFzc2V0QW1vdW50VG9Db252ZXJ0AQULYmFzZUFzc2V0SWQAAAQbY2hlY2tGaW5hbGl6YXRpb25Jc1JlcXVpcmVkBBZpc0ZpbmFsaXphdGlvblJlcXVpcmVkAwMJAGYCBQ1zdGFraW5nUmV3YXJkAAAGCQBmAgUYYmFzZUFzc2V0QW1vdW50VG9Db252ZXJ0AAAGCQBmAgUZc2hhcmVBc3NldEFtb3VudFRvQ29udmVydAAAAwUWaXNGaW5hbGl6YXRpb25SZXF1aXJlZAYJAQh0aHJvd0VycgECE25vdGhpbmcgdG8gZmluYWxpemUDCQAAAgUbY2hlY2tGaW5hbGl6YXRpb25Jc1JlcXVpcmVkBRtjaGVja0ZpbmFsaXphdGlvbklzUmVxdWlyZWQEEHVzZVN0YWtpbmdSZXdhcmQDCQBmAgUNc3Rha2luZ1Jld2FyZAAABAhsb2NrUGFydAkAawMFDXN0YWtpbmdSZXdhcmQFDGxvY2tGcmFjdGlvbgUWbG9ja0ZyYWN0aW9uTXVsdGlwbGllcgQLY29udmVydFBhcnQJAGUCBQ1zdGFraW5nUmV3YXJkBQhsb2NrUGFydAQBcgkA/AcEBRBib29zdGluZ0NvbnRyYWN0Ahd1c2VyTWF4RHVyYXRpb25SRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsBARsb2NrAwkAZgIFCGxvY2tQYXJ0AAAEByRtYXRjaDAFAXIDAwMJAAECCAUHJG1hdGNoMAJfMQIGU3RyaW5nCQABAggFByRtYXRjaDACXzICA0ludAcJAAECBQckbWF0Y2gwAg0oU3RyaW5nLCBJbnQpBwQIZnVuY3Rpb24IBQckbWF0Y2gwAl8xBAhkdXJhdGlvbggFByRtYXRjaDACXzIDCQBmAgUIbG9ja1BhcnQAAAkA/AcEBRBib29zdGluZ0NvbnRyYWN0BQhmdW5jdGlvbgkAzAgCBQhkdXJhdGlvbgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQl3eEFzc2V0SWQFCGxvY2tQYXJ0BQNuaWwFBHVuaXQJAQh0aHJvd0VycgECE2ludmFsaWQgbG9jayBwYXJhbXMFBHVuaXQDCQAAAgUEbG9jawUEbG9jawQPY29udmVydGVkQW1vdW50AwkAZgIFC2NvbnZlcnRQYXJ0AAAECWluQXNzZXRJZAUJd3hBc3NldElkBBBtaW5pbXVtVG9SZWNlaXZlAAAEDW91dEFzc2V0SWRTdHIJAQ9hc3NldElkVG9TdHJpbmcBBQt1c2R0QXNzZXRJZAQNdGFyZ2V0QWRkcmVzcwkApQgBBQR0aGlzCQETdmFsdWVPckVycm9yTWVzc2FnZQIKAAFACQD8BwQFDHN3YXBDb250cmFjdAIEc3dhcAkAzAgCBRBtaW5pbXVtVG9SZWNlaXZlCQDMCAIFDW91dEFzc2V0SWRTdHIJAMwIAgUNdGFyZ2V0QWRkcmVzcwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQlpbkFzc2V0SWQFC2NvbnZlcnRQYXJ0BQNuaWwDCQABAgUBQAIDSW50BQFABQR1bml0CQEHd3JhcEVycgECE2ludmFsaWQgc3dhcCByZXN1bHQAAAMJAAACBQ9jb252ZXJ0ZWRBbW91bnQFD2NvbnZlcnRlZEFtb3VudAQNbHBBc3NldEFtb3VudAMJAGYCBQ9jb252ZXJ0ZWRBbW91bnQAAAQMbWluT3V0QW1vdW50AAAECWF1dG9TdGFrZQYJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgoAAUAJAPwHBAULcG9vbEFkZHJlc3MCC3B1dE9uZVRrblYyCQDMCAIFDG1pbk91dEFtb3VudAkAzAgCBQlhdXRvU3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgULdXNkdEFzc2V0SWQFD2NvbnZlcnRlZEFtb3VudAUDbmlsAwkAAQIFAUACA0ludAUBQAUEdW5pdAkBB3dyYXBFcnIBAhppbnZhbGlkIHB1dE9uZVRrblYyIHJlc3VsdAAAAwkAAAIFDWxwQXNzZXRBbW91bnQFDWxwQXNzZXRBbW91bnQFDWxwQXNzZXRBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FBHVuaXQDCQAAAgUQdXNlU3Rha2luZ1Jld2FyZAUQdXNlU3Rha2luZ1Jld2FyZAQKZ2V0QWN0aW9ucwMJAGYCBRlzaGFyZUFzc2V0QW1vdW50VG9Db252ZXJ0AAAEBXByaWNlCQEJY2FsY1ByaWNlAgUJbHBBc3NldElkBQxzaGFyZUFzc2V0SWQDCQAAAgUFcHJpY2UFBXByaWNlBA11bnN0YWtlQW1vdW50CQCgAwEJAL0CBAkAtgIBBRlzaGFyZUFzc2V0QW1vdW50VG9Db252ZXJ0BQVwcmljZQUNc2NhbGUxOEJpZ0ludAUFRkxPT1IED2Jhc2VBc3NldEFtb3VudAQKb3V0QXNzZXRJZAULYmFzZUFzc2V0SWQEDG1pbk91dEFtb3VudAAACQETdmFsdWVPckVycm9yTWVzc2FnZQIKAAFACQD8BwQFC3Bvb2xBZGRyZXNzAhV1bnN0YWtlQW5kR2V0T25lVGtuVjIJAMwIAgUNdW5zdGFrZUFtb3VudAkAzAgCCQEPYXNzZXRJZFRvU3RyaW5nAQUKb3V0QXNzZXRJZAkAzAgCBQxtaW5PdXRBbW91bnQFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAUEdW5pdAkBB3dyYXBFcnIBAiRpbnZhbGlkIHVuc3Rha2VBbmRHZXRPbmVUa25WMiByZXN1bHQDCQAAAgUPYmFzZUFzc2V0QW1vdW50BQ9iYXNlQXNzZXRBbW91bnQEDnNoYXJlQXNzZXRCdXJuAwkAAAIIBQ5zaGFyZUFzc2V0SW5mbwZpc3N1ZXIFBHRoaXMJAPwHBAUEdGhpcwIEYnVybgkAzAgCBQxzaGFyZUFzc2V0SWQJAMwIAgUZc2hhcmVBc3NldEFtb3VudFRvQ29udmVydAUDbmlsBQNuaWwJAQh0aHJvd0VycgECGmludmFsaWQgc2hhcmUgYXNzZXQgaXNzdWVyAwkAAAIFDnNoYXJlQXNzZXRCdXJuBQ5zaGFyZUFzc2V0QnVybgQIcHJpY2VHZXQJAL0CBAkAtgIBBQ9iYXNlQXNzZXRBbW91bnQFDXNjYWxlMThCaWdJbnQJALYCAQUZc2hhcmVBc3NldEFtb3VudFRvQ29udmVydAUFRkxPT1IEFXByaWNlR2V0VXBkYXRlQWN0aW9ucwkAzAgCCQELQmluYXJ5RW50cnkCCQERa2V5UHJpY2VQZXJpb2RHZXQCBQtiYXNlQXNzZXRJZAUGcGVyaW9kCQCdAwEFCHByaWNlR2V0CQDMCAIJAQtTdHJpbmdFbnRyeQIJARJrZXlQcmljZUdldEhpc3RvcnkBBQtiYXNlQXNzZXRJZAkApgMBBQhwcmljZUdldAUDbmlsBRVwcmljZUdldFVwZGF0ZUFjdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAMJAAACBQpnZXRBY3Rpb25zBQpnZXRBY3Rpb25zBApwdXRBY3Rpb25zAwkAZgIFGGJhc2VBc3NldEFtb3VudFRvQ29udmVydAAABA1scEFzc2V0QW1vdW50BAxtaW5PdXRBbW91bnQAAAQJYXV0b1N0YWtlBgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCgABQAkA/AcEBQtwb29sQWRkcmVzcwILcHV0T25lVGtuVjIJAMwIAgUMbWluT3V0QW1vdW50CQDMCAIFCWF1dG9TdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQtiYXNlQXNzZXRJZAUYYmFzZUFzc2V0QW1vdW50VG9Db252ZXJ0BQNuaWwDCQABAgUBQAIDSW50BQFABQR1bml0CQEHd3JhcEVycgECGmludmFsaWQgcHV0T25lVGtuVjIgcmVzdWx0AwkAAAIFDWxwQXNzZXRBbW91bnQFDWxwQXNzZXRBbW91bnQEBXByaWNlCQEJY2FsY1ByaWNlAgUJbHBBc3NldElkBQxzaGFyZUFzc2V0SWQDCQAAAgUFcHJpY2UFBXByaWNlBApjaGVja1ByaWNlAwkBAiE9AgkBBXZhbHVlAQkAoAMBBQVwcmljZQAABgkAAgECDXByaWNlIGlzIFpFUk8DCQAAAgUKY2hlY2tQcmljZQUKY2hlY2tQcmljZQQQc2hhcmVBc3NldEFtb3VudAkAoAMBCQC9AgQJALYCAQUNbHBBc3NldEFtb3VudAUNc2NhbGUxOEJpZ0ludAUFcHJpY2UFBUZMT09SBBVjaGVja1NoYXJlQXNzZXRBbW91bnQDCQECIT0CCQEFdmFsdWUBCQCgAwEFBXByaWNlAAAGCQACAQIYc2hhcmVBc3NldEFtb3VudCBpcyBaRVJPAwkAAAIFFWNoZWNrU2hhcmVBc3NldEFtb3VudAUVY2hlY2tTaGFyZUFzc2V0QW1vdW50BBFzaGFyZUFzc2V0UmVpc3N1ZQMJAAACCAUOc2hhcmVBc3NldEluZm8GaXNzdWVyBQR0aGlzCQD8BwQFBHRoaXMCBGVtaXQJAMwIAgUMc2hhcmVBc3NldElkCQDMCAIFEHNoYXJlQXNzZXRBbW91bnQFA25pbAUDbmlsCQEIdGhyb3dFcnIBAhppbnZhbGlkIHNoYXJlIGFzc2V0IGlzc3VlcgMJAAACBRFzaGFyZUFzc2V0UmVpc3N1ZQURc2hhcmVBc3NldFJlaXNzdWUECHByaWNlUHV0CQC8AgMJALYCAQUYYmFzZUFzc2V0QW1vdW50VG9Db252ZXJ0BQ1zY2FsZTE4QmlnSW50CQC2AgEFEHNoYXJlQXNzZXRBbW91bnQEFXByaWNlUHV0VXBkYXRlQWN0aW9ucwkAzAgCCQELQmluYXJ5RW50cnkCCQERa2V5UHJpY2VQZXJpb2RQdXQCBQtiYXNlQXNzZXRJZAUGcGVyaW9kCQCdAwEFCHByaWNlUHV0CQDMCAIJAQtTdHJpbmdFbnRyeQIJARJrZXlQcmljZVB1dEhpc3RvcnkBBQtiYXNlQXNzZXRJZAkApgMBBQhwcmljZVB1dAUDbmlsBRVwcmljZVB1dFVwZGF0ZUFjdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAMJAAACBQpwdXRBY3Rpb25zBQpwdXRBY3Rpb25zBAluZXdQZXJpb2QJAGQCBQZwZXJpb2QAAQQJbGFzdFByaWNlCQEJY2FsY1ByaWNlAgUJbHBBc3NldElkBQxzaGFyZUFzc2V0SWQEB2FjdGlvbnMJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEJa2V5UGVyaW9kAQULYmFzZUFzc2V0SWQFCW5ld1BlcmlvZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFGtleVBlcmlvZFN0YXJ0SGVpZ2h0AgULYmFzZUFzc2V0SWQFCW5ld1BlcmlvZAUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEca2V5U2hhcmVBc3NldEFtb3VudFRvQ29udmVydAEFC2Jhc2VBc3NldElkAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJARtrZXlCYXNlQXNzZXRBbW91bnRUb0NvbnZlcnQBBQtiYXNlQXNzZXRJZAAACQDMCAIJAQtCaW5hcnlFbnRyeQIJAQ5rZXlQcmljZVBlcmlvZAIFC2Jhc2VBc3NldElkBQZwZXJpb2QJAJ0DAQUJbGFzdFByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9rZXlQcmljZUhpc3RvcnkBBQtiYXNlQXNzZXRJZAkApgMBBQlsYXN0UHJpY2UFA25pbAUKcHV0QWN0aW9ucwUKZ2V0QWN0aW9ucwkAlAoCBQdhY3Rpb25zCQCdAwEFCWxhc3RQcmljZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAED3RhcmdldFB1YmxpY0tleQQHJG1hdGNoMAkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwBQJwawMJAAECBQckbWF0Y2gwAgRVbml0CAUCdHgPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFD3RhcmdldFB1YmxpY0tleRTp110=", "height": 2551359, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: H69tGjR2Q2UBryiPWuzoZHjwSkaxQfsCsZFgbcFbZYCP Next: HyCJVY3ypdnWdQx4jtDX5JhGoWP5hZbGyNvvCo3kLktw Diff:
OldNewDifferences
372372 if ((bp == bp))
373373 then {
374374 let br = valueOrElse(getInteger(K(E)), 0)
375- let bs = valueOrElse(parseInt(split(value(getString(M(E, N))), a)[1]), 0)
375+ let bs = value(parseInt(split(valueOrElse(getString(M(E, N)), "%d%d%d__0__0"), a)[1]))
376376 $Tuple2([IntegerEntry(K(E), (br + bl.amount)), StringEntry(M(E, N), makeString(["%d%d%d", toString((bs + bl.amount)), toString(lastBlock.timestamp), toString(J)], a)), IntegerEntry(O(E, N), J), StringEntry(X(E, "put", J, N, ai.transactionId), makeString(["%d%d%d", toString(bl.amount), toString(lastBlock.timestamp), toString(bs)], a))], unit)
377377 }
378378 else throw("Strict value is not equal to itself.")
404404 let J = valueOrErrorMessage(getInteger(H(E)), f("invalid period"))
405405 if ((J == J))
406406 then {
407- let bs = valueOrElse(parseInt(split(value(getString(M(E, N))), a)[1]), 0)
407+ let bs = value(parseInt(split(valueOrElse(getString(M(E, N)), "%d%d%d__0__0"), a)[1]))
408408 let bu = if ((bs > 0))
409409 then true
410410 else h("nothing to claim")
464464 if ((bz == bz))
465465 then {
466466 let bB = valueOrElse(getInteger(L(E)), 0)
467- let bC = valueOrElse(parseInt(split(value(getString(P(E, N))), a)[1]), 0)
467+ let bC = value(parseInt(split(valueOrElse(getString(P(E, N)), "%d%d%d__0__0"), a)[1]))
468468 $Tuple2([IntegerEntry(L(E), (bB + bl.amount)), StringEntry(P(E, N), makeString(["%d%d%d", toString((bC + bl.amount)), toString(lastBlock.timestamp), toString(J)], a)), IntegerEntry(Q(E, N), J), StringEntry(X(E, "get", J, N, ai.transactionId), makeString(["%d%d%d", toString(bl.amount), toString(lastBlock.timestamp), toString(bC)], a))], unit)
469469 }
470470 else throw("Strict value is not equal to itself.")
498498 let J = valueOrErrorMessage(getInteger(H(E)), f("invalid period"))
499499 if ((J == J))
500500 then {
501- let bC = valueOrElse(parseInt(split(value(getString(P(E, N))), a)[1]), 0)
501+ let bC = value(parseInt(split(valueOrElse(getString(P(E, N)), "%d%d%d__0__0"), a)[1]))
502502 let bA = valueOrErrorMessage(getInteger(Q(E, N)), f("failed to get period"))
503503 let bv = if ((J > bA))
504504 then true
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 8
77
88 let c = "WAVES"
99
1010 let d = 1000000000000000000
1111
1212 let e = toBigInt(d)
1313
1414 func f (g) = makeString(["lp_staking_pools.ride:", g], " ")
1515
1616
1717 func h (g) = throw(f(g))
1818
1919
2020 func i (j,k) = f(makeString(["mandatory ", toString(j), ".", k, " is not defined"], ""))
2121
2222
2323 func l (j,k) = valueOrErrorMessage(getString(j, k), i(j, k))
2424
2525
2626 func m (j,k) = valueOrErrorMessage(getInteger(j, k), i(j, k))
2727
2828
2929 func n (o) = if ((o == c))
3030 then unit
3131 else fromBase58String(o)
3232
3333
3434 func p (o) = if ((o == unit))
3535 then c
3636 else toBase58String(value(o))
3737
3838
3939 func q (r) = if ((r >= 0))
4040 then r
4141 else h("value should be positive")
4242
4343
4444 func s () = makeString(["%s", "factoryContract"], a)
4545
4646
4747 func t () = makeString(["%s", "lpStakingContract"], a)
4848
4949
5050 func u () = makeString(["%s", "stakingContract"], a)
5151
5252
5353 func v () = makeString(["%s", "boostingContract"], a)
5454
5555
5656 func w () = makeString(["%s", "swapContract"], a)
5757
5858
5959 func x () = makeString(["%s", "assetsStoreContract"], a)
6060
6161
6262 func y () = makeString(["%s", "usdtAssetId"], a)
6363
6464
6565 func z () = makeString(["%s", "wxAssetId"], a)
6666
6767
6868 func A () = makeString(["%s", "shutdown"], a)
6969
7070
7171 func B () = makeString(["%s", "minDelay"], a)
7272
7373
7474 func C () = makeString(["%s", "lockFraction"], a)
7575
7676
7777 func D (E) = makeString(["%s%s", p(E), "shareAssetId"], a)
7878
7979
8080 func F (G) = makeString(["%s%s", p(G), "baseAssetId"], a)
8181
8282
8383 func H (E) = makeString(["%s%s", p(E), "period"], a)
8484
8585
8686 func I (E,J) = makeString(["%s%s%d", p(E), "periodStartHeight", toString(J)], a)
8787
8888
8989 func K (E) = makeString(["%s%s", p(E), "baseAssetAmountToConvert"], a)
9090
9191
9292 func L (E) = makeString(["%s%s", p(E), "shareAssetAmountToConvert"], a)
9393
9494
9595 func M (E,N) = makeString(["%s%s%s", p(E), toString(N), "baseAssetAmountToConvert"], a)
9696
9797
9898 func O (E,N) = makeString(["%s%s%s%s", p(E), toString(N), "baseAssetAmountToConvert", "period"], a)
9999
100100
101101 func P (E,N) = makeString(["%s%s%s", p(E), toString(N), "shareAssetAmountToConvert"], a)
102102
103103
104104 func Q (E,N) = makeString(["%s%s%s%s", p(E), toString(N), "shareAssetAmountToConvert", "period"], a)
105105
106106
107107 func R (E,J) = makeString(["%s%s%d", p(E), "price", toString(J)], a)
108108
109109
110110 func S (E) = makeString(["%s%s%s%d%d", p(E), "price", "history", toString(lastBlock.height), toString(lastBlock.timestamp)], a)
111111
112112
113113 func T (E,J) = makeString(["%s%s%d%s", p(E), "price", toString(J), "put"], a)
114114
115115
116116 func U (E) = makeString(["%s%s%s%s%d%d", p(E), "price", "history", "put", toString(lastBlock.height), toString(lastBlock.timestamp)], a)
117117
118118
119119 func V (E,J) = makeString(["%s%s%d%s", p(E), "price", toString(J), "get"], a)
120120
121121
122122 func W (E) = makeString(["%s%s%s%s%d%d", p(E), "price", "history", "get", toString(lastBlock.height), toString(lastBlock.timestamp)], a)
123123
124124
125125 func X (E,Y,J,N,Z) = makeString(["%s%s%s%s", "history", toUtf8String(value(E)), Y, toString(N), toBase58String(Z), toString(height)], a)
126126
127127
128128 func aa () = "%s__managerPublicKey"
129129
130130
131131 func ab () = "%s__pendingManagerPublicKey"
132132
133133
134134 func ac () = {
135135 let ad = getString(aa())
136136 if ($isInstanceOf(ad, "String"))
137137 then {
138138 let ae = ad
139139 fromBase58String(ae)
140140 }
141141 else if ($isInstanceOf(ad, "Unit"))
142142 then unit
143143 else throw("Match error")
144144 }
145145
146146
147147 func af () = {
148148 let ad = getString(ab())
149149 if ($isInstanceOf(ad, "String"))
150150 then {
151151 let ae = ad
152152 fromBase58String(ae)
153153 }
154154 else if ($isInstanceOf(ad, "Unit"))
155155 then unit
156156 else throw("Match error")
157157 }
158158
159159
160160 let ag = throw("Permission denied")
161161
162162 func ah (ai) = if ((ai.caller == this))
163163 then true
164164 else ag
165165
166166
167167 func aj (ai) = {
168168 let ad = ac()
169169 if ($isInstanceOf(ad, "ByteVector"))
170170 then {
171171 let ak = ad
172172 if ((ai.callerPublicKey == ak))
173173 then true
174174 else ag
175175 }
176176 else if ($isInstanceOf(ad, "Unit"))
177177 then ah(ai)
178178 else throw("Match error")
179179 }
180180
181181
182182 let al = valueOrElse(getBoolean(A()), false)
183183
184184 func am (ai) = if (if (!(al))
185185 then true
186186 else aj(ai))
187187 then true
188188 else throw("operation is disabled")
189189
190190
191191 let an = addressFromStringValue(l(this, s()))
192192
193193 let ao = addressFromStringValue(l(this, t()))
194194
195195 let ap = addressFromStringValue(l(this, u()))
196196
197197 let aq = addressFromStringValue(l(this, v()))
198198
199199 let ar = addressFromStringValue(l(this, w()))
200200
201201 let as = addressFromStringValue(l(this, x()))
202202
203203 let at = n(l(this, y()))
204204
205205 let au = n(l(this, z()))
206206
207207 let av = 1440
208208
209209 let aw = valueOrElse(getInteger(this, B()), av)
210210
211211 let ax = 100000000
212212
213213 let ay = fraction(1, ax, 2)
214214
215215 let az = valueOrElse(getInteger(this, C()), ay)
216216
217217 func aA (aB) = {
218218 let aC = p(aB)
219219 let aD = p(at)
220220 let aE = {
221221 let aF = invoke(an, "poolInfoREADONLY", [aC, aD], nil)
222222 if ($isInstanceOf(aF, "(Address, ByteVector)"))
223223 then aF
224224 else unit
225225 }
226226 aE
227227 }
228228
229229
230230 func aG (aH,G) = {
231231 let aI = valueOrErrorMessage(assetInfo(G), "failed to get share asset info")
232232 let aJ = aI.quantity
233233 let aK = q(valueOrErrorMessage({
234234 let aF = invoke(ap, "stakedByUserREADONLY", [p(aH), toString(this)], nil)
235235 if ($isInstanceOf(aF, "Int"))
236236 then aF
237237 else unit
238238 }, f("invalid stakedByUserREADONLY result")))
239239 let aL = if ((aJ == 0))
240240 then e
241241 else fraction(toBigInt(aK), e, toBigInt(aJ), FLOOR)
242242 aL
243243 }
244244
245245
246246 @Callable(ai)
247247 func setManager (aM) = {
248248 let aN = aj(ai)
249249 if ((aN == aN))
250250 then {
251251 let aO = fromBase58String(aM)
252252 if ((aO == aO))
253253 then [StringEntry(ab(), aM)]
254254 else throw("Strict value is not equal to itself.")
255255 }
256256 else throw("Strict value is not equal to itself.")
257257 }
258258
259259
260260
261261 @Callable(ai)
262262 func confirmManager () = {
263263 let aP = af()
264264 let aQ = if (isDefined(aP))
265265 then true
266266 else h("no pending manager")
267267 if ((aQ == aQ))
268268 then {
269269 let aR = if ((ai.callerPublicKey == value(aP)))
270270 then true
271271 else h("you are not pending manager")
272272 if ((aR == aR))
273273 then [StringEntry(aa(), toBase58String(value(aP))), DeleteEntry(ab())]
274274 else throw("Strict value is not equal to itself.")
275275 }
276276 else throw("Strict value is not equal to itself.")
277277 }
278278
279279
280280
281281 @Callable(ai)
282282 func emit (aS,aT) = {
283283 let aN = ah(ai)
284284 if ((aN == aN))
285285 then {
286286 let aU = true
287287 $Tuple2([Reissue(aS, aT, aU)], aT)
288288 }
289289 else throw("Strict value is not equal to itself.")
290290 }
291291
292292
293293
294294 @Callable(ai)
295295 func burn (aS,aT) = {
296296 let aN = ah(ai)
297297 if ((aN == aN))
298298 then $Tuple2([Burn(aS, aT)], aT)
299299 else throw("Strict value is not equal to itself.")
300300 }
301301
302302
303303
304304 @Callable(ai)
305305 func create (aV,aW,aX,aY,aZ) = {
306306 let ba = "STAKING_LP"
307307 let E = n(aV)
308308 let bb = [aj(ai), if (isDefined(aA(E)))
309309 then true
310310 else h("invalid base asset")]
311311 if ((bb == bb))
312312 then {
313313 let bc = [IntegerEntry(H(E), 0)]
314314 if ((aW == ""))
315315 then {
316316 let bd = 1
317317 let be = Issue(aX, aY, bd, b, true)
318318 let bf = calculateAssetId(be)
319319 let bg = Burn(bf, bd)
320320 let bh = toBase58String(bf)
321321 let bi = invoke(as, "createOrUpdate", [bh, aZ, false], nil)
322322 if ((bi == bi))
323323 then {
324324 let bj = invoke(as, "addLabel", [bh, ba], nil)
325325 if ((bj == bj))
326326 then $Tuple2((bc ++ [be, bg, StringEntry(D(E), bh), StringEntry(F(bf), aV)]), bh)
327327 else throw("Strict value is not equal to itself.")
328328 }
329329 else throw("Strict value is not equal to itself.")
330330 }
331331 else {
332332 let G = fromBase58String(aW)
333333 let aI = valueOrErrorMessage(assetInfo(G), f("invalid share asset id"))
334334 let bk = if ((aI.issuer == ao))
335335 then true
336336 else h("invalid share asset id issuer")
337337 if ((bk == bk))
338338 then $Tuple2((bc ++ [StringEntry(D(E), aW), StringEntry(F(G), aV)]), aW)
339339 else throw("Strict value is not equal to itself.")
340340 }
341341 }
342342 else throw("Strict value is not equal to itself.")
343343 }
344344
345345
346346
347347 @Callable(ai)
348348 func put () = {
349349 let bl = if ((size(ai.payments) == 1))
350350 then ai.payments[0]
351351 else h("exactly 1 payment is expected")
352352 let E = bl.assetId
353353 let N = ai.caller
354354 let bb = [am(ai), if (isDefined(getString(D(E))))
355355 then true
356356 else h("invalid asset")]
357357 if ((bb == bb))
358358 then {
359359 let bm = valueOrErrorMessage(aA(E), f("invalid asset"))
360360 let bn = bm._1
361361 let aH = bm._2
362362 let J = value(getInteger(H(E)))
363363 let bo = getInteger(O(E, N))
364364 let bp = if ((bo == unit))
365365 then unit
366366 else {
367367 let bq = value(bo)
368368 if ((bq == J))
369369 then unit
370370 else invoke(this, "claimShareAsset", [p(E), toString(N)], nil)
371371 }
372372 if ((bp == bp))
373373 then {
374374 let br = valueOrElse(getInteger(K(E)), 0)
375- let bs = valueOrElse(parseInt(split(value(getString(M(E, N))), a)[1]), 0)
375+ let bs = value(parseInt(split(valueOrElse(getString(M(E, N)), "%d%d%d__0__0"), a)[1]))
376376 $Tuple2([IntegerEntry(K(E), (br + bl.amount)), StringEntry(M(E, N), makeString(["%d%d%d", toString((bs + bl.amount)), toString(lastBlock.timestamp), toString(J)], a)), IntegerEntry(O(E, N), J), StringEntry(X(E, "put", J, N, ai.transactionId), makeString(["%d%d%d", toString(bl.amount), toString(lastBlock.timestamp), toString(bs)], a))], unit)
377377 }
378378 else throw("Strict value is not equal to itself.")
379379 }
380380 else throw("Strict value is not equal to itself.")
381381 }
382382
383383
384384
385385 @Callable(ai)
386386 func claimShareAsset (aV,bt) = {
387387 let bb = [am(ai)]
388388 if ((bb == bb))
389389 then {
390390 let N = if ((bt == ""))
391391 then ai.caller
392392 else {
393393 let aN = ah(ai)
394394 if ((aN == aN))
395395 then valueOrErrorMessage(addressFromString(bt), f("invalid user address"))
396396 else throw("Strict value is not equal to itself.")
397397 }
398398 if ((N == N))
399399 then {
400400 let E = n(aV)
401401 let G = value(n(valueOrErrorMessage(getString(D(E)), f("invalid base asset id"))))
402402 if ((G == G))
403403 then {
404404 let J = valueOrErrorMessage(getInteger(H(E)), f("invalid period"))
405405 if ((J == J))
406406 then {
407- let bs = valueOrElse(parseInt(split(value(getString(M(E, N))), a)[1]), 0)
407+ let bs = value(parseInt(split(valueOrElse(getString(M(E, N)), "%d%d%d__0__0"), a)[1]))
408408 let bu = if ((bs > 0))
409409 then true
410410 else h("nothing to claim")
411411 if ((bu == bu))
412412 then {
413413 let bq = valueOrErrorMessage(getInteger(O(E, N)), f("failed to get period"))
414414 let bv = if ((J > bq))
415415 then true
416416 else h("invalid period")
417417 if ((bv == bv))
418418 then {
419419 let aL = toBigInt(valueOrErrorMessage(getBinary(T(E, bq)), f("failed to get price")))
420420 let bw = toInt(fraction(toBigInt(bs), e, aL))
421421 $Tuple2([StringEntry(M(E, N), makeString(["%d%d%d", toString(0), toString(lastBlock.timestamp), toString(J)], a)), DeleteEntry(O(E, N)), ScriptTransfer(N, bw, G), StringEntry(X(E, "claimShareAsset", J, N, ai.transactionId), makeString(["%d%d%d%d", toString(bw), toString(lastBlock.timestamp), toString(aL), toString(bs)], a))], unit)
422422 }
423423 else throw("Strict value is not equal to itself.")
424424 }
425425 else throw("Strict value is not equal to itself.")
426426 }
427427 else throw("Strict value is not equal to itself.")
428428 }
429429 else throw("Strict value is not equal to itself.")
430430 }
431431 else throw("Strict value is not equal to itself.")
432432 }
433433 else throw("Strict value is not equal to itself.")
434434 }
435435
436436
437437
438438 @Callable(ai)
439439 func get () = {
440440 let bb = [am(ai)]
441441 if ((bb == bb))
442442 then {
443443 let bl = if ((size(ai.payments) == 1))
444444 then ai.payments[0]
445445 else h("exactly 1 payment is expected")
446446 let G = bl.assetId
447447 let E = value(n(valueOrErrorMessage(getString(F(G)), f("invalid share asset id"))))
448448 if ((E == E))
449449 then {
450450 let N = ai.caller
451451 let bx = valueOrErrorMessage(aA(E), f("invalid asset"))
452452 let bn = bx._1
453453 let aH = bx._2
454454 let J = value(getInteger(H(E)))
455455 let by = getInteger(Q(E, N))
456456 let bz = if ((by == unit))
457457 then unit
458458 else {
459459 let bA = value(by)
460460 if ((bA == J))
461461 then unit
462462 else invoke(this, "claimBaseAsset", [p(E), toString(N)], nil)
463463 }
464464 if ((bz == bz))
465465 then {
466466 let bB = valueOrElse(getInteger(L(E)), 0)
467- let bC = valueOrElse(parseInt(split(value(getString(P(E, N))), a)[1]), 0)
467+ let bC = value(parseInt(split(valueOrElse(getString(P(E, N)), "%d%d%d__0__0"), a)[1]))
468468 $Tuple2([IntegerEntry(L(E), (bB + bl.amount)), StringEntry(P(E, N), makeString(["%d%d%d", toString((bC + bl.amount)), toString(lastBlock.timestamp), toString(J)], a)), IntegerEntry(Q(E, N), J), StringEntry(X(E, "get", J, N, ai.transactionId), makeString(["%d%d%d", toString(bl.amount), toString(lastBlock.timestamp), toString(bC)], a))], unit)
469469 }
470470 else throw("Strict value is not equal to itself.")
471471 }
472472 else throw("Strict value is not equal to itself.")
473473 }
474474 else throw("Strict value is not equal to itself.")
475475 }
476476
477477
478478
479479 @Callable(ai)
480480 func claimBaseAsset (aV,bt) = {
481481 let bb = [am(ai)]
482482 if ((bb == bb))
483483 then {
484484 let N = if ((bt == ""))
485485 then ai.caller
486486 else {
487487 let aN = ah(ai)
488488 if ((aN == aN))
489489 then valueOrErrorMessage(addressFromString(bt), f("invalid user address"))
490490 else throw("Strict value is not equal to itself.")
491491 }
492492 if ((N == N))
493493 then {
494494 let E = n(aV)
495495 let G = value(n(valueOrErrorMessage(getString(D(E)), f("invalid base asset id"))))
496496 if ((G == G))
497497 then {
498498 let J = valueOrErrorMessage(getInteger(H(E)), f("invalid period"))
499499 if ((J == J))
500500 then {
501- let bC = valueOrElse(parseInt(split(value(getString(P(E, N))), a)[1]), 0)
501+ let bC = value(parseInt(split(valueOrElse(getString(P(E, N)), "%d%d%d__0__0"), a)[1]))
502502 let bA = valueOrErrorMessage(getInteger(Q(E, N)), f("failed to get period"))
503503 let bv = if ((J > bA))
504504 then true
505505 else h("invalid period")
506506 if ((bv == bv))
507507 then {
508508 let aL = toBigInt(valueOrErrorMessage(getBinary(V(E, bA)), f("failed to get price")))
509509 let bD = toInt(fraction(toBigInt(bC), aL, e))
510510 $Tuple2([StringEntry(P(E, N), makeString(["%d%d%d", toString(0), toString(lastBlock.timestamp), toString(J)], a)), DeleteEntry(Q(E, N)), ScriptTransfer(N, bD, E), StringEntry(X(E, "claimBaseAsset", J, N, ai.transactionId), makeString(["%d%d%d%d", toString(bD), toString(lastBlock.timestamp), toString(aL), toString(bA)], a))], unit)
511511 }
512512 else throw("Strict value is not equal to itself.")
513513 }
514514 else throw("Strict value is not equal to itself.")
515515 }
516516 else throw("Strict value is not equal to itself.")
517517 }
518518 else throw("Strict value is not equal to itself.")
519519 }
520520 else throw("Strict value is not equal to itself.")
521521 }
522522
523523
524524
525525 @Callable(ai)
526526 func finalize (aV) = {
527527 let bb = [am(ai)]
528528 if ((bb == bb))
529529 then {
530530 let E = n(aV)
531531 let G = value(n(valueOrErrorMessage(getString(D(E)), f("invalid base asset id"))))
532532 if ((G == G))
533533 then {
534534 let aI = valueOrErrorMessage(assetInfo(G), f("invalid share asset id"))
535535 let J = valueOrErrorMessage(getInteger(H(E)), f("invalid period"))
536536 if ((J == J))
537537 then {
538538 let bE = getInteger(I(E, J))
539539 let bF = if ((bE == unit))
540540 then unit
541541 else {
542542 let bG = (height - value(bE))
543543 let bH = max([0, (aw - bG)])
544544 if ((bH == 0))
545545 then unit
546546 else h(makeString(["finalization will be possible in ", toString(bH), " blocks"], ""))
547547 }
548548 if ((bF == bF))
549549 then {
550550 let bI = valueOrErrorMessage(aA(E), f("invalid asset"))
551551 let bn = bI._1
552552 let aH = bI._2
553553 let bJ = valueOrErrorMessage({
554554 let aF = invoke(ap, "claimWxDoNotThrow", [p(aH)], nil)
555555 if ($isInstanceOf(aF, "Int"))
556556 then aF
557557 else unit
558558 }, f("invalid claimWx result"))
559559 if ((bJ == bJ))
560560 then {
561561 let br = valueOrElse(getInteger(K(E)), 0)
562562 let bB = valueOrElse(getInteger(L(E)), 0)
563563 let bK = {
564564 let bL = if (if ((bJ > 0))
565565 then true
566566 else (br > 0))
567567 then true
568568 else (bB > 0)
569569 if (bL)
570570 then true
571571 else h("nothing to finalize")
572572 }
573573 if ((bK == bK))
574574 then {
575575 let bM = if ((bJ > 0))
576576 then {
577577 let bN = fraction(bJ, az, ax)
578578 let bO = (bJ - bN)
579579 let bP = invoke(aq, "userMaxDurationREADONLY", [toString(this)], nil)
580580 let bQ = if ((bN > 0))
581581 then {
582582 let ad = bP
583583 if (if (if ($isInstanceOf(ad._1, "String"))
584584 then $isInstanceOf(ad._2, "Int")
585585 else false)
586586 then $isInstanceOf(ad, "(String, Int)")
587587 else false)
588588 then {
589589 let bR = ad._1
590590 let bS = ad._2
591591 if ((bN > 0))
592592 then invoke(aq, bR, [bS], [AttachedPayment(au, bN)])
593593 else unit
594594 }
595595 else h("invalid lock params")
596596 }
597597 else unit
598598 if ((bQ == bQ))
599599 then {
600600 let bT = if ((bO > 0))
601601 then {
602602 let bU = au
603603 let bV = 0
604604 let bW = p(at)
605605 let bX = toString(this)
606606 valueOrErrorMessage({
607607 let aF = invoke(ar, "swap", [bV, bW, bX], [AttachedPayment(bU, bO)])
608608 if ($isInstanceOf(aF, "Int"))
609609 then aF
610610 else unit
611611 }, f("invalid swap result"))
612612 }
613613 else 0
614614 if ((bT == bT))
615615 then {
616616 let bY = if ((bT > 0))
617617 then {
618618 let bZ = 0
619619 let ca = true
620620 valueOrErrorMessage({
621621 let aF = invoke(bn, "putOneTknV2", [bZ, ca], [AttachedPayment(at, bT)])
622622 if ($isInstanceOf(aF, "Int"))
623623 then aF
624624 else unit
625625 }, f("invalid putOneTknV2 result"))
626626 }
627627 else 0
628628 if ((bY == bY))
629629 then bY
630630 else throw("Strict value is not equal to itself.")
631631 }
632632 else throw("Strict value is not equal to itself.")
633633 }
634634 else throw("Strict value is not equal to itself.")
635635 }
636636 else unit
637637 if ((bM == bM))
638638 then {
639639 let cb = if ((bB > 0))
640640 then {
641641 let aL = aG(aH, G)
642642 if ((aL == aL))
643643 then {
644644 let cc = toInt(fraction(toBigInt(bB), aL, e, FLOOR))
645645 let bD = {
646646 let cd = E
647647 let bZ = 0
648648 valueOrErrorMessage({
649649 let aF = invoke(bn, "unstakeAndGetOneTknV2", [cc, p(cd), bZ], nil)
650650 if ($isInstanceOf(aF, "Int"))
651651 then aF
652652 else unit
653653 }, f("invalid unstakeAndGetOneTknV2 result"))
654654 }
655655 if ((bD == bD))
656656 then {
657657 let ce = if ((aI.issuer == this))
658658 then invoke(this, "burn", [G, bB], nil)
659659 else h("invalid share asset issuer")
660660 if ((ce == ce))
661661 then {
662662 let cf = fraction(toBigInt(bD), e, toBigInt(bB), FLOOR)
663663 let cg = [BinaryEntry(V(E, J), toBytes(cf)), StringEntry(W(E), toString(cf))]
664664 cg
665665 }
666666 else throw("Strict value is not equal to itself.")
667667 }
668668 else throw("Strict value is not equal to itself.")
669669 }
670670 else throw("Strict value is not equal to itself.")
671671 }
672672 else nil
673673 if ((cb == cb))
674674 then {
675675 let ch = if ((br > 0))
676676 then {
677677 let bY = {
678678 let bZ = 0
679679 let ca = true
680680 valueOrErrorMessage({
681681 let aF = invoke(bn, "putOneTknV2", [bZ, ca], [AttachedPayment(E, br)])
682682 if ($isInstanceOf(aF, "Int"))
683683 then aF
684684 else unit
685685 }, f("invalid putOneTknV2 result"))
686686 }
687687 if ((bY == bY))
688688 then {
689689 let aL = aG(aH, G)
690690 if ((aL == aL))
691691 then {
692692 let ci = if ((value(toInt(aL)) != 0))
693693 then true
694694 else throw("price is ZERO")
695695 if ((ci == ci))
696696 then {
697697 let bw = toInt(fraction(toBigInt(bY), e, aL, FLOOR))
698698 let cj = if ((value(toInt(aL)) != 0))
699699 then true
700700 else throw("shareAssetAmount is ZERO")
701701 if ((cj == cj))
702702 then {
703703 let ck = if ((aI.issuer == this))
704704 then invoke(this, "emit", [G, bw], nil)
705705 else h("invalid share asset issuer")
706706 if ((ck == ck))
707707 then {
708708 let cl = fraction(toBigInt(br), e, toBigInt(bw))
709709 let cm = [BinaryEntry(T(E, J), toBytes(cl)), StringEntry(U(E), toString(cl))]
710710 cm
711711 }
712712 else throw("Strict value is not equal to itself.")
713713 }
714714 else throw("Strict value is not equal to itself.")
715715 }
716716 else throw("Strict value is not equal to itself.")
717717 }
718718 else throw("Strict value is not equal to itself.")
719719 }
720720 else throw("Strict value is not equal to itself.")
721721 }
722722 else nil
723723 if ((ch == ch))
724724 then {
725725 let cn = (J + 1)
726726 let co = aG(aH, G)
727727 let cp = (([IntegerEntry(H(E), cn), IntegerEntry(I(E, cn), height), IntegerEntry(L(E), 0), IntegerEntry(K(E), 0), BinaryEntry(R(E, J), toBytes(co)), StringEntry(S(E), toString(co))] ++ ch) ++ cb)
728728 $Tuple2(cp, toBytes(co))
729729 }
730730 else throw("Strict value is not equal to itself.")
731731 }
732732 else throw("Strict value is not equal to itself.")
733733 }
734734 else throw("Strict value is not equal to itself.")
735735 }
736736 else throw("Strict value is not equal to itself.")
737737 }
738738 else throw("Strict value is not equal to itself.")
739739 }
740740 else throw("Strict value is not equal to itself.")
741741 }
742742 else throw("Strict value is not equal to itself.")
743743 }
744744 else throw("Strict value is not equal to itself.")
745745 }
746746 else throw("Strict value is not equal to itself.")
747747 }
748748
749749
750750 @Verifier(cq)
751751 func cr () = {
752752 let cs = {
753753 let ad = ac()
754754 if ($isInstanceOf(ad, "ByteVector"))
755755 then {
756756 let ak = ad
757757 ak
758758 }
759759 else if ($isInstanceOf(ad, "Unit"))
760760 then cq.senderPublicKey
761761 else throw("Match error")
762762 }
763763 sigVerify(cq.bodyBytes, cq.proofs[0], cs)
764764 }
765765

github/deemru/w8io/873ac7e 
121.30 ms