tx · CTf2a5uWqNPbVMStrG1GMPGD34Ti2mLgE68ZdUdHm9qe

3NCX3qr5ABsbWQhQR8CV3vCvHQa2xANk2f2:  -0.03600000 Waves

2023.01.19 12:41 [2411642] smart account 3NCX3qr5ABsbWQhQR8CV3vCvHQa2xANk2f2 > SELF 0.00000000 Waves

{ "type": 13, "id": "CTf2a5uWqNPbVMStrG1GMPGD34Ti2mLgE68ZdUdHm9qe", "fee": 3600000, "feeAssetId": null, "timestamp": 1674121276300, "version": 1, "sender": "3NCX3qr5ABsbWQhQR8CV3vCvHQa2xANk2f2", "senderPublicKey": "9LajxyiDMFaW5Xgcye62gHbqchgWLEYTebgbfnZFdtTu", "proofs": [ "4pQwAFWC3co7bwBE4yzmboejFSD2fpjtbFdDs3EWi9aoy5H5wfYejTWmznpGm4W9Qucu5RoASfi2oKm2KzhY2wmS" ], "script": "base64:BgKsLQgCEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASABIDCgEIEgUKAwEBARIECgIBARIECgIIARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAEgMKAQESAwoBARIECgIIASIKbFBkZWNpbWFscyIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiC3dhdmVzU3RyaW5nIgNTRVAiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iEmlkeFBvb2xBbXRBc3NldEFtdCIUaWR4UG9vbFByaWNlQXNzZXRBbXQiEWlkeFBvb2xMUEFzc2V0QW10IhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiB2Zyb21YMTgiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igxmcm9tWDE4Um91bmQiBXJvdW5kIgd0b1NjYWxlIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIGa2V5RmVlIgpmZWVEZWZhdWx0IgNmZWUiBmtleUtMcCIVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0IhJrZXlLTHBSZWZyZXNoRGVsYXkiFmtMcFJlZnJlc2hEZWxheURlZmF1bHQiD2tMcFJlZnJlc2hEZWxheSIQa2V5RmFjdG9yeUNvbmZpZyINa2V5TWF0Y2hlclB1YiIpa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMiE3Bvb2xDb250cmFjdEFkZHJlc3MiDWtleVBvb2xDb25maWciCWlBbXRBc3NldCILaVByaWNlQXNzZXQiH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQiDGJhc2VBc3NldFN0ciITa2V5QWxsUG9vbHNTaHV0ZG93biINa2V5UG9vbFdlaWdodCIPY29udHJhY3RBZGRyZXNzIhZrZXlBbGxvd2VkTHBTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIg90aHJvd09yZGVyRXJyb3IiCm9yZGVyVmFsaWQiC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiD2dldFN0cmluZ09yRmFpbCIHYWRkcmVzcyIDa2V5IgxnZXRJbnRPckZhaWwiCHRocm93RXJyIgNtc2ciBmZtdEVyciIPZmFjdG9yeUNvbnRyYWN0IhNmZWVDb2xsZWN0b3JBZGRyZXNzIgVpbkZlZSIBQCIGb3V0RmVlIhBpc0dsb2JhbFNodXRkb3duIhNnZXRNYXRjaGVyUHViT3JGYWlsIg1nZXRQb29sQ29uZmlnIghhbXRBc3NldCIKcHJpY2VBc3NldCIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDgyNDM4NDA5Ig5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIQZ2V0RmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyIhVzbGlwcGFnZVRvbGVyYW5jZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCISc2xpcGFnZUFtdEFzc2V0QW10IhRzbGlwYWdlUHJpY2VBc3NldEFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIg9jYWxjUHJpY2VCaWdJbnQiCHByQW10WDE4IghhbUFtdFgxOCIUY2FsY1ByaWNlQmlnSW50Um91bmQiEHByaXZhdGVDYWxjUHJpY2UiCmFtQXNzZXREY20iCnByQXNzZXREY20iBWFtQW10IgVwckFtdCIOYW10QXNzZXRBbXRYMTgiEHByaWNlQXNzZXRBbXRYMTgiCmNhbGNQcmljZXMiBWxwQW10IgNjZmciC2FtdEFzc2V0RGNtIg1wcmljZUFzc2V0RGNtIghwcmljZVgxOCIIbHBBbXRYMTgiE2xwUHJpY2VJbkFtQXNzZXRYMTgiE2xwUHJpY2VJblByQXNzZXRYMTgiD2NhbGN1bGF0ZVByaWNlcyIGcHJpY2VzIhRlc3RpbWF0ZUdldE9wZXJhdGlvbiIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCIJbHBBc3NldElkIglhbUFzc2V0SWQiCXByQXNzZXRJZCIKcG9vbFN0YXR1cyIKbHBFbWlzc2lvbiIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4Ig1scEVtaXNzaW9uWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiFGVzdGltYXRlUHV0T3BlcmF0aW9uIhFzbGlwcGFnZVRvbGVyYW5jZSIMaW5BbUFzc2V0QW10IgtpbkFtQXNzZXRJZCIMaW5QckFzc2V0QW10IgtpblByQXNzZXRJZCIKaXNFdmFsdWF0ZSIGZW1pdExwIgxhbUFzc2V0SWRTdHIiDHByQXNzZXRJZFN0ciILaUFtdEFzc2V0SWQiDWlQcmljZUFzc2V0SWQiDmluQW1Bc3NldElkU3RyIg5pblByQXNzZXRJZFN0ciIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIDcmVzIgtzbGlwcGFnZVgxOCIUc2xpcHBhZ2VUb2xlcmFuY2VYMTgiCnByVmlhQW1YMTgiCmFtVmlhUHJYMTgiDGV4cGVjdGVkQW10cyIRZXhwQW10QXNzZXRBbXRYMTgiE2V4cFByaWNlQXNzZXRBbXRYMTgiCWNhbGNMcEFtdCIOY2FsY0FtQXNzZXRQbXQiDmNhbGNQckFzc2V0UG10IgxzbGlwcGFnZUNhbGMiCWVtaXRMcEFtdCIGYW1EaWZmIgZwckRpZmYiC2NvbW1vblN0YXRlIgdjYWxjS0xwIg1hbW91bnRCYWxhbmNlIgxwcmljZUJhbGFuY2UiCnVwZGF0ZWRLTHAiDmNhbGNDdXJyZW50S0xwIhBhbW91bnRBc3NldERlbHRhIg9wcmljZUFzc2V0RGVsdGEiFGxwQXNzZXRFbWlzc2lvbkRlbHRhIhJhbW91bnRBc3NldEJhbGFuY2UiEXByaWNlQXNzZXRCYWxhbmNlIg9scEFzc2V0RW1pc3Npb24iCmN1cnJlbnRLTHAiEnJlZnJlc2hLTHBJbnRlcm5hbCIXYW1vdW50QXNzZXRCYWxhbmNlRGVsdGEiFnByaWNlQXNzZXRCYWxhbmNlRGVsdGEiB2FjdGlvbnMiEnZhbGlkYXRlVXBkYXRlZEtMcCIGb2xkS0xwIht2YWxpZGF0ZU1hdGNoZXJPcmRlckFsbG93ZWQiBW9yZGVyIhFhbW91bnRBc3NldEFtb3VudCIQcHJpY2VBc3NldEFtb3VudCINJHQwMjA5ODYyMTE5OCIDa0xwIg0kdDAyMTY2OTIxNzY5Ig11bnVzZWRBY3Rpb25zIgZrTHBOZXciDGlzT3JkZXJWYWxpZCIJY29tbW9uR2V0IgFpIgNwbXQiBnBtdEFtdCIJY29tbW9uUHV0IgphbUFzc2V0UG10IgpwckFzc2V0UG10IgZlc3RQdXQiBGVtaXQiBmFtb3VudCIHZW1pdEludiINZW1pdEludkxlZ2FjeSIHJG1hdGNoMCIVbGVnYWN5RmFjdG9yeUNvbnRyYWN0Igd0YWtlRmVlIglmZWVBbW91bnQiD2NhbGNQdXRPbmVUb2tlbiIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiBmlzRXZhbCIQYW1vdW50QmFsYW5jZVJhdyIPcHJpY2VCYWxhbmNlUmF3IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMjQ0OTAyNDc4MyIQYW1vdW50QmFsYW5jZU9sZCIPcHJpY2VCYWxhbmNlT2xkIg0kdDAyNDc4NzI0OTM2IhRhbW91bnRBc3NldEFtb3VudFJhdyITcHJpY2VBc3NldEFtb3VudFJhdyINJHQwMjUwNjgyNTEzMiINcGF5bWVudEFtb3VudCIQYW1vdW50QmFsYW5jZU5ldyIPcHJpY2VCYWxhbmNlTmV3IgtwcmljZU5ld1gxOCIIcHJpY2VOZXciDnBheW1lbnRCYWxhbmNlIhRwYXltZW50QmFsYW5jZUJpZ0ludCIMc3VwcGx5QmlnSW50IgtjaGVjaFN1cHBseSINZGVwb3NpdEJpZ0ludCILaXNzdWVBbW91bnQiC3ByaWNlT2xkWDE4IghwcmljZU9sZCIEbG9zcyINJHQwMjY4MTMyNjk4MCIHYmFsYW5jZSIPaXNzdWVBbW91bnRCb3RoIg9jYWxjR2V0T25lVG9rZW4iCm91dEFzc2V0SWQiBmNoZWNrcyIQb3V0SW5BbW91bnRBc3NldCINYmFsYW5jZUJpZ0ludCIYb3V0SW5BbW91bnRBc3NldERlY2ltYWxzIgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCIKb3V0QmFsYW5jZSIQb3V0QmFsYW5jZUJpZ0ludCIOcmVkZWVtZWRCaWdJbnQiCWFtb3VudFJhdyINJHQwMjkwNTgyOTExNCILdG90YWxBbW91bnQiDSR0MDI5MTE4MjkzNDQiC291dEFtQW1vdW50IgtvdXRQckFtb3VudCIMYW1CYWxhbmNlTmV3IgxwckJhbGFuY2VOZXciGGFtb3VudEJvdGhJblBheW1lbnRBc3NldCIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCIBcyIdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQiCWlzTWFuYWdlciICcGsiC211c3RNYW5hZ2VyIgJwZCIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiC2NoZWNrQ2FsbGVyIhVjaGVja01hbmFnZXJQdWJsaWNLZXkiAnBtIgVoYXNQTSIHY2hlY2tQTSIPc2hvdWxkQXV0b1N0YWtlIgRhbUlkIgRwcklkIgxzbGlwcGFnZUFJbnYiDHNsaXBwYWdlUEludiIKbHBUcmFuc2ZlciILc2xwU3Rha2VJbnYiDSR0MDMzODcyMzQzMzQiEXJlZnJlc2hLTHBBY3Rpb25zIhFpc1VwZGF0ZWRLTHBWYWxpZCILbWF4U2xpcHBhZ2UiDSR0MDM0ODk2MzQ5NjEiDG1pbk91dEFtb3VudCIJYXV0b1N0YWtlIiBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCINaXNQdXREaXNhYmxlZCIHcGF5bWVudCINJHQwMzYxNDkzNjMwMSIFYm9udXMiE2VtaXRBbW91bnRFc3RpbWF0ZWQiCmVtaXRBbW91bnQiCHN0YWtlSW52IgdzZW5kRmVlIg0kdDAzNjg4NzM3MDg0Ig0kdDAzNzA4NzM3MTk1Ig0kdDAzNzUwMTM3NjU4Ig1vdXRBc3NldElkU3RyIg1pc0dldERpc2FibGVkIg0kdDAzODU0MzM4Njk2Ig9hbW91bnRFc3RpbWF0ZWQiB2J1cm5JbnYiDWFzc2V0VHJhbnNmZXIiDSR0MDM5MTk2Mzk0NDMiEGZlZUFtb3VudEZvckNhbGMiDSR0MDM5NDQ2Mzk1NTQiDSR0MDM5ODExMzk5NjciDXVuc3Rha2VBbW91bnQiCnVuc3Rha2VJbnYiDSR0MDQwODcyNDEwMjMiDSR0MDQxNTE4NDE3NjUiDSR0MDQxNzY4NDE4NzYiCW91dEFtdEFtdCIUYnVybkxQQXNzZXRPbkZhY3RvcnkiDSR0MDQyODIyNDI5MDQiEm5vTGVzc1RoZW5BbXRBc3NldCIUbm9MZXNzVGhlblByaWNlQXNzZXQiDSR0MDQzODUzNDM5MzQiDWNoZWNrUGF5bWVudHMiD2NoZWNrUG9vbFN0YXR1cyINJHQwNDUwNjA0NTE0MSIVbm9MZXNzVGhlbkFtb3VudEFzc2V0IgxjaGVja0Ftb3VudHMiDSR0MDQ2NDM2NDY1MTciC2FtdEFzc2V0U3RyIg1wcmljZUFzc2V0U3RyIhhsYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiHWNoZWNrTGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ig0kdDA0NzcwNDQ3NzY4IhBrTHBVcGRhdGVBY3Rpb25zIgphbXRBc3NldElkIgxwcmljZUFzc2V0SWQiDXBvb2xMUEJhbGFuY2UiEmFjY0FtdEFzc2V0QmFsYW5jZSIUYWNjUHJpY2VBc3NldEJhbGFuY2UiCnByaWNlc0xpc3QiD2xwQW10QXNzZXRTaGFyZSIRbHBQcmljZUFzc2V0U2hhcmUiCnBvb2xXZWlnaHQiDGN1clByaWNlQ2FsYyIMYW1CYWxhbmNlUmF3IgxwckJhbGFuY2VSYXciD2FtQmFsYW5jZVJhd1gxOCIPcHJCYWxhbmNlUmF3WDE4IhBwYXltZW50THBBc3NldElkIgxwYXltZW50THBBbXQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNocQABYQAIAAFiAIDC1y8AAWMJALYCAQCAwtcvAAFkCQC2AgEAgICQu7rWrfANAAFlCQC2AgEAAAABZgkAtgIBAAAAAWcJALYCAQABAAFoCQC2AgEAAgABaQIFV0FWRVMAAWoCAl9fAAFrAAEAAWwAAgABbQADAAFuAAQAAW8AAQABcAACAAFxAAMAAXIABAABcwAFAAF0AAYAAXUABwABdgAIAAF3AAkAAXgACgABeQABAAF6AAIAAUEAAwABQgABAAFDAAcBAUQCAUUBRgkAvAIDCQC2AgEFAUUFAWQJALYCAQUBRgEBRwIBSAFJCQCgAwEJALwCAwUBSAkAtgIBBQFJBQFkAQFKAwFIAUkBSwkAoAMBCQC9AgQFAUgJALYCAQUBSQUBZAUBSwEBTAMBTQFOAU8JAGsDBQFNBQFOBQFPAQFQAQFIAwkAZgIAAAUBSAkBAS0BBQFIBQFIAQFRAQFIAwkAvwICBQFlBQFICQC+AgEFAUgFAUgBAVIAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQFTAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVQAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAVUAAhElcyVzX19wcmljZV9fbGFzdAEBVgIBVwFYCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUBVwkAzAgCCQCkAwEFAVgFA25pbAUBagEBWQIBWgJhYQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAVoCAl9fBQJhYQECYWICAVoCYWEJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQFaAgJfXwUCYWEBAmFjAAIPJXNfX2Ftb3VudEFzc2V0AQJhZAACDiVzX19wcmljZUFzc2V0AAJhZQIHJXNfX2ZlZQACYWYJAGsDAAoFAWIAkE4AAmFnCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFlBQJhZgACYWgJALkJAgkAzAgCAgIlcwkAzAgCAgNrTHAFA25pbAUBagACYWkJALkJAgkAzAgCAgIlcwkAzAgCAhJrTHBSZWZyZXNoZWRIZWlnaHQFA25pbAUBagACYWoJALkJAgkAzAgCAgIlcwkAzAgCAg9yZWZyZXNoS0xwRGVsYXkFA25pbAUBagACYWsAHgACYWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWoFAmFrAQJhbQACESVzX19mYWN0b3J5Q29uZmlnAQJhbgACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYW8BAmFwCQCsAgIJAKwCAgIIJXMlcyVzX18FAmFwAiBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAECYXECAmFyAmFzCQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJhcgICX18FAmFzAghfX2NvbmZpZwECYXQBAmF1CQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmF1AQJhdgACDCVzX19zaHV0ZG93bgECYXcBAmF4CQCsAgICEiVzJXNfX3Bvb2xXZWlnaHRfXwUCYXgBAmF5AAIXJXNfX2FsbG93ZWRMcFNjcmlwdEhhc2gAAmF6Ahclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYUEDAmFCAmFDAmFECQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICJG9yZGVyIHZhbGlkYXRpb24gZmFpbGVkOiBvcmRlclZhbGlkPQkApQMBBQJhQgINIHNlbmRlclZhbGlkPQkApQMBBQJhQwIOIG1hdGNoZXJWYWxpZD0JAKUDAQUCYUQBAmFFAgJhRgJhRwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmFGBQJhRwkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhRgkAzAgCAgEuCQDMCAIFAmFHCQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmFIAgJhRgJhRwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAmFGBQJhRwkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhRgkAzAgCAgEuCQDMCAIFAmFHCQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmFJAQJhSgkAAgEJALkJAgkAzAgCAghscC5yaWRlOgkAzAgCBQJhSgUDbmlsAgEgAQJhSwECYUoJALkJAgkAzAgCAghscC5yaWRlOgkAzAgCBQJhSgUDbmlsAgEgAAJhTAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFFAgUEdGhpcwkBAVIAAAJhTQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFFAgUCYUwFAmF6AAJhTgoAAmFPCQD8BwQFAmFMAhBnZXRJbkZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYU8CA0ludAUCYU8JAAIBCQCsAgIJAAMBBQJhTwIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AAJhUAoAAmFPCQD8BwQFAmFMAhFnZXRPdXRGZWVSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFPAgNJbnQFAmFPCQACAQkArAICCQADAQUCYU8CGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAECYVEACQELdmFsdWVPckVsc2UCCQCbCAIFAmFMCQECYXYABwECYVIACQDZBAEJAQJhRQIFAmFMCQECYW4AAQJhUwAEAmFUCQECYUUCBQR0aGlzCQECYWMABAJhVQkBAmFFAgUEdGhpcwkBAmFkAAQCYXMJAQJhSAIFAmFMCQECYXQBBQJhVQQCYXIJAQJhSAIFAmFMCQECYXQBBQJhVAkAtQkCCQECYUUCBQJhTAkBAmFxAgkApAMBBQJhcgkApAMBBQJhcwUBagECYVYBAmFXAwkAAAIFAmFXBQFpBQR1bml0CQDZBAEFAmFXAQJhWAECYVcDCQAAAgUCYVcFBHVuaXQFAWkJANgEAQkBBXZhbHVlAQUCYVcBAmFZAQJhWgkAmQoHCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmFaBQFvCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVoFAXAJANkEAQkAkQMCBQJhWgUBcQkBAmFWAQkAkQMCBQJhWgUBcgkBAmFWAQkAkQMCBQJhWgUBcwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFaBQF0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVoFAXUAAmJhCQECYVkBCQECYVMAAAJiYgUCYmEAAmJjCAUCYmICXzEAAmJkCAUCYmICXzIAAmJlCAUCYmICXzMAAmJmCAUCYmICXzQAAmJnCAUCYmICXzUAAmJoCAUCYmICXzYAAmJpCAUCYmICXzcBAmJqAAkAtQkCCQECYUUCBQJhTAkBAmFtAAUBagACYmsJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJAQJiagAFAUICGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MAAmJsCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCCQECYmoABQFDAhlpbmNvcnJlY3Qgc3Rha2luZyBhZGRyZXNzAQJibQoCYm4CYm8CYnACYnECYnICYnMCYnQCYnUCYnYCYncJALkJAgkAzAgCAhQlZCVkJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJuCQDMCAIJAKQDAQUCYm8JAMwIAgkApAMBBQJicAkAzAgCCQCkAwEFAmJxCQDMCAIJAKQDAQUCYnIJAMwIAgkApAMBBQJicwkAzAgCCQCkAwEFAmJ0CQDMCAIJAKQDAQUCYnUJAMwIAgkApAMBBQJidgkAzAgCCQCkAwEFAmJ3BQNuaWwFAWoBAmJ4BgJieQJiegJiQQJicQJidAJidQkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJ5CQDMCAIJAKQDAQUCYnoJAMwIAgkApAMBBQJiQQkAzAgCCQCkAwEFAmJxCQDMCAIJAKQDAQUCYnQJAMwIAgkApAMBBQJidQUDbmlsBQFqAQJiQgECYkMDCQAAAgUCYkMCBVdBVkVTCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQDZBAEFAmJDAQJiRAICYkUCYkYJALwCAwUCYkUFAWQFAmJGAQJiRwMCYkUCYkYBSwkAvQIEBQJiRQUBZAUCYkYFAUsBAmJIBAJiSQJiSgJiSwJiTAQCYk0JAQFEAgUCYksFAmJJBAJiTgkBAUQCBQJiTAUCYkoJAQJiRAIFAmJOBQJiTQECYk8DAmJLAmJMAmJQBAJiUQkBAmFTAAQCYlIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiUQUBdAQCYlMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiUQUBdQQCYlQJAQJiSAQFAmJSBQJiUwUCYksFAmJMBAJiRgkBAUQCBQJiSwUCYlIEAmJFCQEBRAIFAmJMBQJiUwQCYlUJAQFEAgUCYlAFAWIEAmJWCQECYkQCBQJiRgUCYlUEAmJXCQECYkQCBQJiRQUCYlUJAMwIAgUCYlQJAMwIAgUCYlYJAMwIAgUCYlcFA25pbAECYlgDAmJLAmJMAmJQBAJiWQkBAmJPAwUCYksFAmJMBQJiUAkAzAgCCQEBRwIJAJEDAgUCYlkAAAUBYgkAzAgCCQEBRwIJAJEDAgUCYlkAAQUBYgkAzAgCCQEBRwIJAJEDAgUCYlkAAgUBYgUDbmlsAQJiWgQCY2ECY2ICY2MBWgQCYlEJAQJhUwAEAmNkCQCRAwIFAmJRBQFxBAJjZQkAkQMCBQJiUQUBcgQCY2YJAJEDAgUCYlEFAXMEAmJJCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlEFAXQEAmJKCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlEFAXUEAmNnCQCRAwIFAmJRBQFwBAJjaAgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmNkCQCsAgIJAKwCAgIGQXNzZXQgBQJjZAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkDCQECIT0CBQJjZAUCY2IJAAIBAhVJbnZhbGlkIGFzc2V0IHBhc3NlZC4EAmNpCQECYkIBBQJjZQQCY2oJAQFEAgUCY2kFAmJJBAJjawkBAmJCAQUCY2YEAmNsCQEBRAIFAmNrBQJiSgQCY20JAQJiRAIFAmNsBQJjagQCY24JAQFHAgUCY20FAWIEAmNvCQEBRAIFAmNjBQFiBAJjcAkBAUQCBQJjaAUBYgQCY3EJALwCAwUCY2oFAmNvBQJjcAQCY3IJALwCAwUCY2wFAmNvBQJjcAQCY3MJAQFKAwUCY3EFAmJJBQVGTE9PUgQCY3QJAQFKAwUCY3IFAmJKBQVGTE9PUgQCY3UDCQAAAgUCY2ECAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAVoFAmNzAwkAAAIFAmNlAgVXQVZFUwUEdW5pdAkA2QQBBQJjZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQFaBQJjdAMJAAACBQJjZgIFV0FWRVMFBHVuaXQJANkEAQUCY2YJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFiAgkApQgBBQFaBQJjYQkBAmJ4BgUCY3MFAmN0BQJjYwUCY24FBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFVAAUCY24JAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY24FA25pbAkAnAoKBQJjcwUCY3QFAmNlBQJjZgUCY2kFAmNrBQJjaAUCY20FAmNnBQJjdQECY3YJAmNhAmN3AmN4AmN5AmN6AmNBAVoCY0ICY0MEAmJRCQECYVMABAJjZAkA2QQBCQCRAwIFAmJRBQFxBAJjRAkAkQMCBQJiUQUBcgQCY0UJAJEDAgUCYlEFAXMEAmNGCQCRAwIFAmJRBQF2BAJjRwkAkQMCBQJiUQUBdwQCYlIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiUQUBdAQCYlMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiUQUBdQQCY2cJAJEDAgUCYlEFAXAEAmNoCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmNkCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmNkAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCY0gJANgEAQkBC3ZhbHVlT3JFbHNlAgUCY3kJANkEAQIFV0FWRVMEAmNJCQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmNBCQDZBAECBVdBVkVTAwMJAQIhPQIFAmNEBQJjSAYJAQIhPQIFAmNFBQJjSQkAAgECIkludmFsaWQgYW10IG9yIHByaWNlIGFzc2V0IHBhc3NlZC4EAmNpAwUCY0IJAQJiQgEFAmNECQBlAgkBAmJCAQUCY0QFAmN4BAJjawMFAmNCCQECYkIBBQJjRQkAZQIJAQJiQgEFAmNFBQJjegQCY0oJAQFEAgUCY3gFAmJSBAJjSwkBAUQCBQJjegUCYlMEAmNMCQECYkQCBQJjSwUCY0oEAmNqCQEBRAIFAmNpBQJiUgQCY2wJAQFEAgUCY2sFAmJTBAJjTQMJAAACBQJjaAAABAJjbQUBZQQCY04FAWUEAmJVCQB2BgkAuQICBQJjSgUCY0sAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQFHAgUCYlUFAWIJAQFHAgUCY0oFAmJSCQEBRwIFAmNLBQJiUwkBAmJEAgkAtwICBQJjbAUCY0sJALcCAgUCY2oFAmNKBQJjTgQCY20JAQJiRAIFAmNsBQJjagQCY04JALwCAwkBAVEBCQC4AgIFAmNtBQJjTAUBZAUCY20EAmNPCQEBRAIFAmN3BQFiAwMJAQIhPQIFAmNtBQFlCQC/AgIFAmNOBQJjTwcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCY04CHiBleGNlZWRlZCB0aGUgcGFzc2VkIGxpbWl0IG9mIAkApgMBBQJjTwQCY3AJAQFEAgUCY2gFAWIEAmNQCQC9AgQFAmNKCQECYkcDBQJjbAUCY2oFB0NFSUxJTkcFAWQFB0NFSUxJTkcEAmNRCQC9AgQFAmNLBQFkCQECYkcDBQJjbAUCY2oFBUZMT09SBQdDRUlMSU5HBAJjUgMJAL8CAgUCY1AFAmNLCQCUCgIFAmNRBQJjSwkAlAoCBQJjSgUCY1AEAmNTCAUCY1ICXzEEAmNUCAUCY1ICXzIEAmJVCQC9AgQFAmNwBQJjVAUCY2wFBUZMT09SCQCXCgUJAQFKAwUCYlUFAWIFBUZMT09SCQEBSgMFAmNTBQJiUgUHQ0VJTElORwkBAUoDBQJjVAUCYlMFB0NFSUxJTkcFAmNtBQJjTgQCY1UIBQJjTQJfMQQCY1YIBQJjTQJfMgQCY1cIBQJjTQJfMwQCY24JAQFHAggFAmNNAl80BQFiBAJjWAkBAUcCCAUCY00CXzUFAWIDCQBnAgAABQJjVQkAAgECNkludmFsaWQgY2FsY3VsYXRpb25zLiBMUCBjYWxjdWxhdGVkIGlzIGxlc3MgdGhhbiB6ZXJvLgQCY1kDCQEBIQEFAmNDAAAFAmNVBAJjWgkAZQIFAmN4BQJjVgQCZGEJAGUCBQJjegUCY1cEAmRiCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQAFAmNuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNuCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFZAgUBWgUCY2EJAQJibQoFAmNWBQJjVwUCY1kFAmNuBQJjdwUCY1gFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNaBQJkYQUDbmlsCQCfCg0FAmNVBQJjWQUCY24FAmNpBQJjawUCY2gFAmNkBQJjZwUCZGIFAmNaBQJkYQUCY3kFAmNBAQJkYwMCZGQCZGUCY2gEAmRmCQC8AgMJAHYGCQC5AgIFAmRkBQJkZQAACQC2AgEABQABABIFBERPV04FAWcFAmNoAwkAAAIFAmNoBQFmBQFmBQJkZgECZGcDAmRoAmRpAmRqBAJkawkAuAICCQC2AgEJAQJiQgEJAQJhWAEFAmJmBQJkaAQCZGwJALgCAgkAtgIBCQECYkIBCQECYVgBBQJiZwUCZGkEAmRtCQC4AgIJALYCAQgJAQV2YWx1ZQEJAOwHAQUCYmUIcXVhbnRpdHkFAmRqBAJkbgkBAmRjAwUCZGsFAmRsBQJkbQUCZG4BAmRvAwJkcAJkcQJkagQCZGsJAGQCCQECYkIBCQECYVgBBQJiZgUCZHAEAmRsCQBkAgkBAmJCAQkBAmFYAQUCYmcFAmRxBAJkbQkAZAIICQEFdmFsdWUBCQDsBwEFAmJlCHF1YW50aXR5BQJkagQCZGYJAQJkYwMJALYCAQUCZGsJALYCAQUCZGwJALYCAQUCZG0EAmRyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJhaQUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIFAmFoCQCmAwEFAmRmBQNuaWwJAJQKAgUCZHIFAmRmAQJkcwICZHQCZGYDCQDAAgIFAmRmBQJkdAYJAQJhSQEJALkJAgkAzAgCAiJ1cGRhdGVkIEtMcCBsb3dlciB0aGFuIGN1cnJlbnQgS0xwCQDMCAIJAKYDAQUCZHQJAMwIAgkApgMBBQJkZgUDbmlsAgEgAQJkdQECZHYEAmR3CAUCZHYGYW1vdW50BAJkeAkAbgQIBQJkdgZhbW91bnQIBQJkdgVwcmljZQUBYgUFRkxPT1IEAmR5AwkAAAIIBQJkdglvcmRlclR5cGUFA0J1eQkAlAoCBQJkdwkBAS0BBQJkeAkAlAoCCQEBLQEFAmR3BQJkeAQCZHAIBQJkeQJfMQQCZHEIBQJkeQJfMgMDAwkBAmFRAAYJAAACBQJiZAUBbQYJAAACBQJiZAUBbgkAAgECHEV4Y2hhbmdlIG9wZXJhdGlvbnMgZGlzYWJsZWQDAwkBAiE9AggIBQJkdglhc3NldFBhaXILYW1vdW50QXNzZXQFAmJmBgkBAiE9AggIBQJkdglhc3NldFBhaXIKcHJpY2VBc3NldAUCYmcJAAIBAhNXcm9uZyBvcmRlciBhc3NldHMuBAJkegkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQJhaAkBAmFLAQIPa0xwIGlzIHJlcXVpcmVkCQECYUsBAgtpbnZhbGlkIGtMcAQCZEEJAQJkbwMFAmRwBQJkcQAABAJkQggFAmRBAl8xBAJkQwgFAmRBAl8yBAJkRAkAwAICBQJkQwUCZHoFAmREAQJkRQECZEYDCQECIT0CCQCQAwEIBQJkRghwYXltZW50cwABCQACAQIdZXhhY3RseSAxIHBheW1lbnQgaXMgZXhwZWN0ZWQEAmRHCQEFdmFsdWUBCQCRAwIIBQJkRghwYXltZW50cwAABAJjYgkBBXZhbHVlAQgFAmRHB2Fzc2V0SWQEAmRICAUCZEcGYW1vdW50BAJjTQkBAmJaBAkA2AQBCAUCZEYNdHJhbnNhY3Rpb25JZAkA2AQBBQJjYgUCZEgIBQJkRgZjYWxsZXIEAmNzCAUCY00CXzEEAmN0CAUCY00CXzIEAmNnCQENcGFyc2VJbnRWYWx1ZQEIBQJjTQJfOQQCY3UIBQJjTQNfMTADAwkBAmFRAAYJAAACBQJjZwUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCY2cJAJcKBQUCY3MFAmN0BQJkSAUCY2IFAmN1AQJkSQMCZEYCY3cCY0MDCQECIT0CCQCQAwEIBQJkRghwYXltZW50cwACCQACAQIfZXhhY3RseSAyIHBheW1lbnRzIGFyZSBleHBlY3RlZAQCZEoJAQV2YWx1ZQEJAJEDAggFAmRGCHBheW1lbnRzAAAEAmRLCQEFdmFsdWUBCQCRAwIIBQJkRghwYXltZW50cwABBAJkTAkBAmN2CQkA2AQBCAUCZEYNdHJhbnNhY3Rpb25JZAUCY3cIBQJkSgZhbW91bnQIBQJkSgdhc3NldElkCAUCZEsGYW1vdW50CAUCZEsHYXNzZXRJZAkApQgBCAUCZEYGY2FsbGVyBwUCY0MEAmNnCQENcGFyc2VJbnRWYWx1ZQEIBQJkTAJfOAMDAwkBAmFRAAYJAAACBQJjZwUBbAYJAAACBQJjZwUBbgkAAgEJAKwCAgIsUHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCY2cFAmRMAQJkTQECZE4EAmRPCQD8BwQFAmFMAgRlbWl0CQDMCAIFAmROBQNuaWwFA25pbAMJAAACBQJkTwUCZE8EAmRQBAJkUQUCZE8DCQABAgUCZFECB0FkZHJlc3MEAmRSBQJkUQkA/AcEBQJkUgIEZW1pdAkAzAgCBQJkTgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZFAFAmRQBQJkTgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZFMCAmROAmFnBAJkVAMJAAACBQJhZwAAAAAJAGsDBQJkTgUCYWcFAWIJAJQKAgkAZQIFAmROBQJkVAUCZFQBAmRVBAJkVgJkVwFaAmFhBAJkWAkAAAIFAmFhBQR1bml0BAJkWQkBAmJCAQkBAmFYAQUCYmYEAmRaCQECYkIBCQECYVgBBQJiZwQCZWEDCQAAAgUCZFcFAmJmBgMJAAACBQJkVwUCYmcHCQECYUkBAg1pbnZhbGlkIGFzc2V0BAJlYgMFAmRYCQCUCgIFAmRZBQJkWgMFAmVhCQCUCgIJAGUCBQJkWQUCZFYFAmRaCQCUCgIFAmRZCQBlAgUCZFoFAmRWBAJlYwgFAmViAl8xBAJlZAgFAmViAl8yBAJlZQMFAmVhCQCUCgIFAmRWAAAJAJQKAgAABQJkVgQCZWYIBQJlZQJfMQQCZWcIBQJlZQJfMgQCZHcICQECZFMCBQJlZgUCYU4CXzEEAmR4CAkBAmRTAgUCZWcFAmFOAl8xBAJlaAkBAmRTAgUCZFYFAmFOBAJlaQgFAmVoAl8xBAJkVAgFAmVoAl8yBAJlagkAZAIFAmVjBQJkdwQCZWsJAGQCBQJlZAUCZHgEAmVsCQECYkQCCQEBRAIFAmVrBQJiaQkBAUQCBQJlagUCYmgEAmVtCQEBRwIFAmVsBQFiBAJlbgMFAmVhBQJlYwUCZWQEAmVvCQC2AgEFAmVuBAJlcAkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJlCQCsAgIJAKwCAgIGYXNzZXQgCQDYBAEFAmJlAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZXEDCQC/AgIFAmVwBQFmBgkBAmFJAQIiaW5pdGlhbCBkZXBvc2l0IHJlcXVpcmVzIGFsbCBjb2lucwMJAAACBQJlcQUCZXEEAmVyCQC2AgEFAmVpBAJlcwkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQJlcAkAuAICCQEKc3FydEJpZ0ludAQJALcCAgUBZAkAugICCQC5AgIFAmVyBQFkBQJlbwASABIFBERPV04FAWQFAWQFA25pbAQCZGIDBQJkWAUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQAFAmVtCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmVtCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFZAgkApQgBCQEFdmFsdWUBBQFaCQDYBAEJAQV2YWx1ZQEFAmFhCQECYm0KBQJlZgUCZWcFAmVzBQJlbQAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEAmV0CQECYkQCCQEBRAIFAmVkBQJiaQkBAUQCBQJlYwUCYmgEAmV1CQEBRwIFAmV0BQFiBAJldgQCZXcDBQJlYQkAlAoCBQJlZgUCZWMJAJQKAgUCZWcFAmVkBAJkTggFAmV3Al8xBAJleAgFAmV3Al8yBAJleQkAoAMBCQC8AgMFAmVwCQC2AgEJAGkCBQJkTgACCQC2AgEFAmV4CQBrAwkAZQIFAmVzBQJleQUBYgUCZXkJAJcKBQUCZXMFAmRiBQJkVAUCZXYFAmVhCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlegUCZUECZWkCZFcBWgJhYQQCZFgJAAACBQJhYQUEdW5pdAQCYlEJAQJhUwAEAmJSCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlEFAXQEAmJTCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlEFAXUEAmVCCQDMCAIDCQAAAgUCZFcFAmJlBgkBAmFJAQIQaW52YWxpZCBscCBhc3NldAUDbmlsAwkAAAIFAmVCBQJlQgQCZUMDCQAAAgUCZUEFAmJmBgMJAAACBQJlQQUCYmcHCQECYUkBAg1pbnZhbGlkIGFzc2V0BAJlRAMFAmVDCQC2AgEJAQJiQgEJAQJhWAEFAmJmCQC2AgEJAQJiQgEJAQJhWAEFAmJnBAJlRQMFAmVDBQJiUgUCYlMEAmVGCQECYkIBCQECYVgBBQJiZgQCZUcJAQJiQgEJAQJhWAEFAmJnBAJlSAMFAmVDBQJlRgUCZUcEAmVJCQC2AgEFAmVIBAJlcAkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJlCQCsAgIJAKwCAgIGYXNzZXQgCQDYBAEFAmJlAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZUoJALYCAQUCZWkEAmVLCQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmVECQC4AgIFAWQJAHYGCQC4AgIFAWQJALoCAgkAuQICBQJlSgUBZAUCZXAAEgUBaAAAABIFBERPV04FAWQFA25pbAQCZUwJAQJkUwIFAmVLBQJhUAQCZU0IBQJlTAJfMQQCZFQIBQJlTAJfMgQCZU4DBQJlQwkAlgoEBQJlTQAACQBlAgUCZUYFAmVLBQJlRwkAlgoEAAAFAmVNBQJlRgkAZQIFAmVHBQJlSwQCZU8IBQJlTgJfMQQCZVAIBQJlTgJfMgQCZVEIBQJlTgJfMwQCZVIIBQJlTgJfNAQCZWwJAQJiRAIJAQFEAgUCZVIFAmJpCQEBRAIFAmVRBQJiaAQCZW0JAQFHAgUCZWwFAWIEAmRiAwUCZFgFA25pbAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWICCQClCAEJAQV2YWx1ZQEFAVoJANgEAQkBBXZhbHVlAQUCYWEJAQJieAYFAmVPBQJlUAUCZWkFAmVtBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQAFAmVtCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmVtBQNuaWwEAmV0CQECYkQCCQEBRAIFAmVHBQJiaQkBAUQCBQJlRgUCYmgEAmV1CQEBRwIFAmV0BQFiBAJldgQCZVMJAGgCCQCgAwEJALwCAwUCZUQFAmVKBQJlcAACCQBrAwkAZQIFAmVNBQJlUwUBYgUCZVMJAJcKBQUCZU0FAmRiBQJkVAUCZXYFAmVDCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlVAAEAmRRCQCiCAEJAQFTAAMJAAECBQJkUQIGU3RyaW5nBAJlVQUCZFEJANkEAQUCZVUDCQABAgUCZFECBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZVYABAJkUQkAoggBCQEBVAADCQABAgUCZFECBlN0cmluZwQCZVUFAmRRCQDZBAEFAmVVAwkAAQIFAmRRAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmVXAQJkRgQCZFEJAQJlVAADCQABAgUCZFECCkJ5dGVWZWN0b3IEAmVYBQJkUQkAAAIIBQJkRg9jYWxsZXJQdWJsaWNLZXkFAmVYAwkAAQIFAmRRAgRVbml0CQAAAggFAmRGBmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJlWQECZEYEAmVaCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEAmRRCQECZVQAAwkAAQIFAmRRAgpCeXRlVmVjdG9yBAJlWAUCZFEDCQAAAggFAmRGD2NhbGxlclB1YmxpY0tleQUCZVgGBQJlWgMJAAECBQJkUQIEVW5pdAMJAAACCAUCZEYGY2FsbGVyBQR0aGlzBgUCZVoJAAIBAgtNYXRjaCBlcnJvchsCZEYBCnNldE1hbmFnZXIBAmZhBAJmYgkBAmVZAQUCZEYDCQAAAgUCZmIFAmZiBAJmYwkA2QQBBQJmYQMJAAACBQJmYwUCZmMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVQABQJmYQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRGAQ5jb25maXJtTWFuYWdlcgAEAmZkCQECZVYABAJmZQMJAQlpc0RlZmluZWQBBQJmZAYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZmUFAmZlBAJmZgMJAAACCAUCZEYPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJmZAYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZmYFAmZmCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFTAAkA2AQBCQEFdmFsdWUBBQJmZAkAzAgCCQELRGVsZXRlRW50cnkBCQEBVAAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkRgEDcHV0AgJjdwJmZwMJAGYCAAAFAmN3CQACAQIgSW52YWxpZCBzbGlwcGFnZVRvbGVyYW5jZSBwYXNzZWQEAmRMCQECZEkDBQJkRgUCY3cGBAJjWQgFAmRMAl8yBAJjZAgFAmRMAl83BAJjdQgFAmRMAl85BAJjWggFAmRMA18xMAQCZGEIBQJkTANfMTEEAmZoCAUCZEwDXzEyBAJmaQgFAmRMA18xMwQCZEoJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRGCHBheW1lbnRzAAAGYW1vdW50BAJkSwkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZEYIcGF5bWVudHMAAQZhbW91bnQEAmRuCQECZGcDBQJkSgUCZEsJALYCAQAAAwkAAAIFAmRuBQJkbgQCZE8JAPwHBAUCYUwCBGVtaXQJAMwIAgUCY1kFA25pbAUDbmlsAwkAAAIFAmRPBQJkTwQCZFAEAmRRBQJkTwMJAAECBQJkUQIHQWRkcmVzcwQCZFIFAmRRCQD8BwQFAmRSAgRlbWl0CQDMCAIFAmNZBQNuaWwFA25pbAUEdW5pdAMJAAACBQJkUAUCZFAEAmZqAwkAZgIFAmNaAAAJAPwHBAUCYmwCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJmaAUCY1oFA25pbAUDbmlsAwkAAAIFAmZqBQJmagQCZmsDCQBmAgUCZGEAAAkA/AcEBQJibAIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmZpBQJkYQUDbmlsBQNuaWwDCQAAAgUCZmsFAmZrBAJmbAMFAmZnBAJmbQkA/AcEBQJiawIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY2QFAmNZBQNuaWwDCQAAAgUCZm0FAmZtBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRGBmNhbGxlcgUCY1kFAmNkBQNuaWwEAmZuCQECZG8DAAAAAAAAAwkAAAIFAmZuBQJmbgQCZGYIBQJmbgJfMgQCZm8IBQJmbgJfMQQCZnAJAQJkcwIFAmRuBQJkZgMJAAACBQJmcAUCZnAJAM4IAgkAzggCBQJjdQUCZmwFAmZvCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRGAQpwdXRGb3JGcmVlAQJmcQMJAGYCAAAFAmZxCQACAQIUSW52YWxpZCB2YWx1ZSBwYXNzZWQEAmRMCQECZEkDBQJkRgUCZnEHBAJjdQgFAmRMAl85BAJkSgkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZEYIcGF5bWVudHMAAAZhbW91bnQEAmRLCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkRghwYXltZW50cwABBmFtb3VudAQCZG4JAQJkZwMFAmRKBQJkSwkAtgIBAAADCQAAAgUCZG4FAmRuBAJmcgkBAmRvAwAAAAAAAAQCZm8IBQJmcgJfMQQCZGYIBQJmcgJfMgQCZnAJAQJkcwIFAmRuBQJkZgMJAAACBQJmcAUCZnAJAM4IAgUCY3UFAmZvCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRGAQlwdXRPbmVUa24CAmZzAmZ0BAJmdQoAAmFPCQD8BwQFAmFMAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYU8CB0Jvb2xlYW4FAmFPCQACAQkArAICCQADAQUCYU8CHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZ2AwMDCQECYVEABgkAAAIFAmJkBQFsBgkAAAIFAmJkBQFuBgUCZnUEAmVCCQDMCAIDAwkBASEBBQJmdgYJAQJlVwEFAmRGBgkBAmFJAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZEYIcGF5bWVudHMAAQYJAQJhSQECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmVCBQJlQgQCZncJAJEDAggFAmRGCHBheW1lbnRzAAAEAmRXCAUCZncHYXNzZXRJZAQCZFYIBQJmdwZhbW91bnQEAmRuAwkAAAIFAmRXBQJiZgkBAmRnAwkAtgIBBQJkVgkAtgIBAAAJALYCAQAAAwkAAAIFAmRXBQJiZwkBAmRnAwkAtgIBAAAJALYCAQUCZFYJALYCAQAACQECYUkBAh5wYXltZW50IGFzc2V0IGlzIG5vdCBzdXBwb3J0ZWQDCQAAAgUCZG4FAmRuBAFaCAUCZEYGY2FsbGVyBAJhYQgFAmRGDXRyYW5zYWN0aW9uSWQEAmZ4CQECZFUEBQJkVgUCZFcFAVoFAmFhAwkAAAIFAmZ4BQJmeAQCZWEIBQJmeAJfNQQCZnkIBQJmeAJfNAQCZFQIBQJmeAJfMwQCZGIIBQJmeAJfMgQCZnoIBQJmeAJfMQQCZkEDAwkAZgIFAmZzAAAJAGYCBQJmcwUCZnoHCQECYUkBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZzBQNuaWwCAAUCZnoEAmRPCQECZE0BBQJmQQMJAAACBQJkTwUCZE8EAmZsAwUCZnQEAmZCCQD8BwQFAmJrAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiZQUCZkEFA25pbAMJAAACBQJmQgUCZkIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZEYGY2FsbGVyBQJmQQUCYmUFA25pbAQCZkMDCQBmAgUCZFQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhTQUCZFQFAmRXBQNuaWwFA25pbAQCZkQDCQAAAgUEdGhpcwUCYU0JAJQKAgAAAAADBQJlYQkAlAoCCQEBLQEFAmRUAAAJAJQKAgAACQEBLQEFAmRUBAJkcAgFAmZEAl8xBAJkcQgFAmZEAl8yBAJmRQkBAmRvAwUCZHAFAmRxAAAEAmZvCAUCZkUCXzEEAmRmCAUCZkUCXzIEAmR6CQEFdmFsdWUBCQCiCAEFAmFoBAJmcAkBAmRzAgUCZG4FAmRmAwkAAAIFAmZwBQJmcAkAlAoCCQDOCAIJAM4IAgkAzggCBQJkYgUCZmwFAmZDBQJmbwUCZkEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEYBEXB1dE9uZVRrblJFQURPTkxZAgJkVwJkVgQCZkYJAQJkVQQFAmRWCQECYVYBBQJkVwUEdW5pdAUEdW5pdAQCZnoIBQJmRgJfMQQCZGIIBQJmRgJfMgQCZFQIBQJmRgJfMwQCZnkIBQJmRgJfNAQCZWEIBQJmRgJfNQkAlAoCBQNuaWwJAJUKAwUCZnoFAmRUBQJmeQJkRgEJZ2V0T25lVGtuAgJmRwJmcwQCZnUKAAJhTwkA/AcEBQJhTAIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFPAgdCb29sZWFuBQJhTwkAAgEJAKwCAgkAAwEFAmFPAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJmSAMDCQECYVEABgkAAAIFAmJkBQFuBgUCZnUEAmVCCQDMCAIDAwkBASEBBQJmSAYJAQJlVwEFAmRGBgkBAmFJAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZEYIcGF5bWVudHMAAQYJAQJhSQECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmVCBQJlQgQCZUEJAQJhVgEFAmZHBAJmdwkAkQMCCAUCZEYIcGF5bWVudHMAAAQCZFcIBQJmdwdhc3NldElkBAJlaQgFAmZ3BmFtb3VudAQCZG4JAQJkZwMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZG4FAmRuBAFaCAUCZEYGY2FsbGVyBAJhYQgFAmRGDXRyYW5zYWN0aW9uSWQEAmZJCQECZXoFBQJlQQUCZWkFAmRXBQFaBQJhYQMJAAACBQJmSQUCZkkEAmVDCAUCZkkCXzUEAmZ5CAUCZkkCXzQEAmRUCAUCZkkCXzMEAmRiCAUCZkkCXzIEAmZKCAUCZkkCXzEEAmROAwMJAGYCBQJmcwAACQBmAgUCZnMFAmZKBwkBAmFJAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmcwUDbmlsAgAFAmZKBAJmSwkA/AcEBQJhTAIEYnVybgkAzAgCBQJlaQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkVwUCZWkFA25pbAMJAAACBQJmSwUCZksEAmZMCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAVoFAmROBQJlQQUDbmlsBAJmQwMJAGYCBQJkVAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFNBQJkVAUCZUEFA25pbAUDbmlsBAJmTQQCZk4DCQAAAgUEdGhpcwUCYU0AAAUCZFQDBQJlQwkAlAoCCQEBLQEJAGQCBQJkTgUCZk4AAAkAlAoCAAAJAQEtAQkAZAIFAmROBQJmTgQCZHAIBQJmTQJfMQQCZHEIBQJmTQJfMgQCZk8JAQJkbwMFAmRwBQJkcQAABAJmbwgFAmZPAl8xBAJkZggFAmZPAl8yBAJmcAkBAmRzAgUCZG4FAmRmAwkAAAIFAmZwBQJmcAkAlAoCCQDOCAIJAM4IAgkAzggCBQJkYgUCZkwFAmZDBQJmbwUCZE4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEYBEWdldE9uZVRrblJFQURPTkxZAgJlQQJlaQQCZlAJAQJlegUJAQJhVgEFAmVBBQJlaQUCYmUFBHVuaXQFBHVuaXQEAmZKCAUCZlACXzEEAmRiCAUCZlACXzIEAmRUCAUCZlACXzMEAmZ5CAUCZlACXzQEAmVDCAUCZlACXzUJAJQKAgUDbmlsCQCVCgMFAmZKBQJkVAUCZnkCZEYBE3Vuc3Rha2VBbmRHZXRPbmVUa24DAmZRAmZHAmZzBAJmdQoAAmFPCQD8BwQFAmFMAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYU8CB0Jvb2xlYW4FAmFPCQACAQkArAICCQADAQUCYU8CHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZIAwMJAQJhUQAGCQAAAgUCYmQFAW4GBQJmdQQCZUIJAMwIAgMDCQEBIQEFAmZIBgkBAmVXAQUCZEYGCQECYUkBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkRghwYXltZW50cwAABgkBAmFJAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZUIFAmVCBAJlQQkBAmFWAQUCZkcEAVoIBQJkRgZjYWxsZXIEAmFhCAUCZEYNdHJhbnNhY3Rpb25JZAQCZG4JAQJkZwMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZG4FAmRuBAJmUgkA/AcEBQJiawIHdW5zdGFrZQkAzAgCCQDYBAEFAmJlCQDMCAIFAmZRBQNuaWwFA25pbAMJAAACBQJmUgUCZlIEAmZTCQECZXoFBQJlQQUCZlEFAmJlBQFaBQJhYQMJAAACBQJmUwUCZlMEAmVDCAUCZlMCXzUEAmZ5CAUCZlMCXzQEAmRUCAUCZlMCXzMEAmRiCAUCZlMCXzIEAmZKCAUCZlMCXzEEAmROAwMJAGYCBQJmcwAACQBmAgUCZnMFAmZKBwkBAmFJAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmcwUDbmlsAgAFAmZKBAJmSwkA/AcEBQJhTAIEYnVybgkAzAgCBQJmUQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiZQUCZlEFA25pbAMJAAACBQJmSwUCZksEAmZMCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkRgZjYWxsZXIFAmROBQJlQQUDbmlsBAJmQwMJAGYCBQJkVAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFNBQJkVAUCZUEFA25pbAUDbmlsBAJmVAQCZk4DCQAAAgUEdGhpcwUCYU0AAAUCZFQDBQJlQwkAlAoCCQEBLQEJAGQCBQJkTgUCZk4AAAkAlAoCAAAJAQEtAQkAZAIFAmROBQJmTgQCZHAIBQJmVAJfMQQCZHEIBQJmVAJfMgQCZlUJAQJkbwMFAmRwBQJkcQAABAJmbwgFAmZVAl8xBAJkZggFAmZVAl8yBAJmcAkBAmRzAgUCZG4FAmRmAwkAAAIFAmZwBQJmcAkAlAoCCQDOCAIJAM4IAgkAzggCBQJkYgUCZkwFAmZDBQJmbwUCZE4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEYBA2dldAAEAmNNCQECZEUBBQJkRgQCZlYIBQJjTQJfMQQCY3QIBQJjTQJfMgQCZEgIBQJjTQJfMwQCY2IIBQJjTQJfNAQCY3UIBQJjTQJfNQQCZG4JAQJkZwMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZG4FAmRuBAJmVwkA/AcEBQJhTAIEYnVybgkAzAgCBQJkSAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjYgUCZEgFA25pbAMJAAACBQJmVwUCZlcEAmZYCQECZG8DCQEBLQEFAmZWCQEBLQEFAmN0AAAEAmZvCAUCZlgCXzEEAmRmCAUCZlgCXzIEAmZwCQECZHMCBQJkbgUCZGYDCQAAAgUCZnAFAmZwCQDOCAIFAmN1BQJmbwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkRgEJZ2V0Tm9MZXNzAgJmWQJmWgQCY00JAQJkRQEFAmRGBAJjcwgFAmNNAl8xBAJjdAgFAmNNAl8yBAJkSAgFAmNNAl8zBAJjYggFAmNNAl80BAJjdQgFAmNNAl81AwkAZgIFAmZZBQJjcwkAAgEJAKwCAgkArAICCQCsAgICHG5vTGVzc1RoZW5BbXRBc3NldCBmYWlsZWQ6ICAJAKQDAQUCY3MCAyA8IAkApAMBBQJmWQMJAGYCBQJmWgUCY3QJAAIBCQCsAgIJAKwCAgkArAICAh1ub0xlc3NUaGVuUHJpY2VBc3NldCBmYWlsZWQ6IAkApAMBBQJjdAIDIDwgCQCkAwEFAmZaBAJkbgkBAmRnAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJkbgUCZG4EAmZXCQD8BwQFAmFMAgRidXJuCQDMCAIFAmRIBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNiBQJkSAUDbmlsAwkAAAIFAmZXBQJmVwQCZ2EJAQJkbwMJAQEtAQUCY3MJAQEtAQUCY3QAAAQCZm8IBQJnYQJfMQQCZGYIBQJnYQJfMgQCZnAJAQJkcwIFAmRuBQJkZgMJAAACBQJmcAUCZnAJAM4IAgUCY3UFAmZvCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRGAQ11bnN0YWtlQW5kR2V0AQJkTgQCZ2IDCQECIT0CCQCQAwEIBQJkRghwYXltZW50cwAACQACAQIYTm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBgMJAAACBQJnYgUCZ2IEAmJRCQECYVMABAJjZAkA2QQBCQCRAwIFAmJRBQFxBAJkbgkBAmRnAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJkbgUCZG4EAmZSCQD8BwQFAmJrAgd1bnN0YWtlCQDMCAIJANgEAQUCY2QJAMwIAgUCZE4FA25pbAUDbmlsAwkAAAIFAmZSBQJmUgQCY00JAQJiWgQJANgEAQgFAmRGDXRyYW5zYWN0aW9uSWQJANgEAQUCY2QFAmROCAUCZEYGY2FsbGVyBAJjcwgFAmNNAl8xBAJjdAgFAmNNAl8yBAJjZwkBDXBhcnNlSW50VmFsdWUBCAUCY00CXzkEAmN1CAUCY00DXzEwBAJnYwMDCQECYVEABgkAAAIFAmNnBQFuCQACAQkArAICAixHZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJjZwYDCQAAAgUCZ2MFAmdjBAJmVwkA/AcEBQJhTAIEYnVybgkAzAgCBQJkTgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjZAUCZE4FA25pbAMJAAACBQJmVwUCZlcEAmdkCQECZG8DCQEBLQEFAmNzCQEBLQEFAmN0AAAEAmZvCAUCZ2QCXzEEAmRmCAUCZ2QCXzIEAmZwCQECZHMCBQJkbgUCZGYDCQAAAgUCZnAFAmZwCQDOCAIFAmN1BQJmbwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkRgETdW5zdGFrZUFuZEdldE5vTGVzcwMCZlECZ2UCZloEAmZIAwkBAmFRAAYJAAACBQJiZAUBbgQCZUIJAMwIAgMJAQEhAQUCZkgGCQACAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZEYIcGF5bWVudHMAAAYJAAIBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJlQgUCZUIEAmRuCQECZGcDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmRuBQJkbgQCZlIJAPwHBAUCYmsCB3Vuc3Rha2UJAMwIAgkA2AQBBQJiZQkAzAgCBQJmUQUDbmlsBQNuaWwDCQAAAgUCZlIFAmZSBAJjTQkBAmJaBAkA2AQBCAUCZEYNdHJhbnNhY3Rpb25JZAkA2AQBBQJiZQUCZlEIBQJkRgZjYWxsZXIEAmNzCAUCY00CXzEEAmN0CAUCY00CXzIEAmN1CAUCY00DXzEwBAJnZgkAzAgCAwkAZwIFAmNzBQJnZQYJAAIBCQC5CQIJAMwIAgIsYW1vdW50IGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJnZQUDbmlsAgAJAMwIAgMJAGcCBQJjdAUCZloGCQACAQkAuQkCCQDMCAICK3ByaWNlIGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmWgUDbmlsAgAFA25pbAMJAAACBQJnZgUCZ2YEAmZXCQD8BwQFAmFMAgRidXJuCQDMCAIFAmZRBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJlBQJmUQUDbmlsAwkAAAIFAmZXBQJmVwQCZ2cJAQJkbwMJAQEtAQUCY3MJAQEtAQUCY3QAAAQCZm8IBQJnZwJfMQQCZGYIBQJnZwJfMgQCZnAJAQJkcwIFAmRuBQJkZgMJAAACBQJmcAUCZnAJAM4IAgUCY3UFAmZvCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRGAQhhY3RpdmF0ZQICZ2gCZ2kDCQECIT0CCQClCAEIBQJkRgZjYWxsZXIJAKUIAQUCYUwJAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWMABQJnaAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWQABQJnaQUDbmlsAgdzdWNjZXNzAmRGAQpyZWZyZXNoS0xwAAQCZ2oJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUCYWkAAAQCZ2sDCQBnAgkAZQIFBmhlaWdodAUCZ2oFAmFsBQR1bml0CQECYUkBCQC5CQIJAMwIAgkApAMBBQJhbAkAzAgCAi8gYmxvY2tzIGhhdmUgbm90IHBhc3NlZCBzaW5jZSB0aGUgcHJldmlvdXMgY2FsbAUDbmlsAgADCQAAAgUCZ2sFAmdrBAJkegkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUCYWgCATAJAQJhSwECC2ludmFsaWQga0xwBAJnbAkBAmRvAwAAAAAAAAQCZ20IBQJnbAJfMQQCZGYIBQJnbAJfMgQCZHIDCQECIT0CBQJkegUCZGYFAmdtCQECYUkBAhJub3RoaW5nIHRvIHJlZnJlc2gJAJQKAgUCZHIJAKYDAQUCZGYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEYBHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBAmFTAAJkRgEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQECYkMJAJQKAgUDbmlsCQECYkIBBQJiQwJkRgEZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQMCYksCYkwCYlAEAmJZCQECYk8DBQJiSwUCYkwFAmJQCQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUCYlkAAAkAzAgCCQCmAwEJAJEDAgUCYlkAAQkAzAgCCQCmAwEJAJEDAgUCYlkAAgUDbmlsAmRGARR0b1gxOFdyYXBwZXJSRUFET05MWQIBRQFGCQCUCgIFA25pbAkApgMBCQEBRAIFAUUFAUYCZEYBFmZyb21YMThXcmFwcGVyUkVBRE9OTFkCAUgBSQkAlAoCBQNuaWwJAQFHAgkApwMBBQFIBQFJAmRGAR5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkCAmJFAmJGCQCUCgIFA25pbAkApgMBCQECYkQCCQCnAwEFAmJFCQCnAwEFAmJGAmRGASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkCY2ECY3cCY3gCY3kCY3oCY0EBWgJjQgJjQwkAlAoCBQNuaWwJAQJjdgkFAmNhBQJjdwUCY3gFAmN5BQJjegUCY0EFAVoFAmNCBQJjQwJkRgEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEAmNhAmNiAmNjAVoEAmNNCQECYloEBQJjYQUCY2IFAmNjCQERQGV4dHJOYXRpdmUoMTA2MikBBQFaCQCUCgIFA25pbAkAnAoKCAUCY00CXzEIBQJjTQJfMggFAmNNAl8zCAUCY00CXzQIBQJjTQJfNQgFAmNNAl82CAUCY00CXzcJAKYDAQgFAmNNAl84CAUCY00CXzkIBQJjTQNfMTACZEYBDXN0YXRzUkVBRE9OTFkABAJiUQkBAmFTAAQCY2QJANkEAQkAkQMCBQJiUQUBcQQCZ24JAJEDAgUCYlEFAXIEAmdvCQCRAwIFAmJRBQFzBAJjRgkAkQMCBQJiUQUBdgQCY0cJAJEDAgUCYlEFAXcEAmJSCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlEFAXQEAmJTCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlEFAXUEAmdwCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmNkCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmNkAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZ3EJAQJiQgEFAmduBAJncgkBAmJCAQUCZ28EAmdzAwkAAAIFAmdwAAAJAMwIAgUBZQkAzAgCBQFlCQDMCAIFAWUFA25pbAkBAmJPAwUCZ3EFAmdyBQJncAQCY24AAAQCZ3QJAQFHAgkAkQMCBQJncwABBQFiBAJndQkBAUcCCQCRAwIFAmdzAAIFAWIEAmd2CQEFdmFsdWUBCQCaCAIFAmFMCQECYXcBCQClCAEFBHRoaXMJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJncQkAzAgCCQCkAwEFAmdyCQDMCAIJAKQDAQUCZ3AJAMwIAgkApAMBBQJjbgkAzAgCCQCkAwEFAmd0CQDMCAIJAKQDAQUCZ3UJAMwIAgkApAMBBQJndgUDbmlsBQFqAmRGASBldmFsdWF0ZVB1dEJ5QW1vdW50QXNzZXRSRUFET05MWQECY3gEAmJRCQECYVMABAJjZAkA2QQBCQCRAwIFAmJRBQFxBAJjRAkAkQMCBQJiUQUBcgQCY2UJANkEAQUCY0QEAmNFCQCRAwIFAmJRBQFzBAJjZgkA2QQBBQJjRQQCYlIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiUQUBdAQCYlMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiUQUBdQQCY2cJAJEDAgUCYlEFAXAEAmdwCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmNkCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmNkAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZ3EJAQJiQgEFAmNEBAJncgkBAmJCAQUCY0UEAmJNCQEBRAIFAmdxBQJiUgQCYk4JAQFEAgUCZ3IFAmJTBAJjbQMJAAACBQJncAAABQFlCQECYkQCBQJiTgUCYk0EAmNKCQEBRAIFAmN4BQJiUgQCY0sJALwCAwUCY0oFAmNtBQFkBAJjegkBAUcCBQJjSwUCYlMEAmRMCQECY3YJAgAAoMIeBQJjeAUCY2UFAmN6BQJjZgIABgcEAmNVCAUCZEwCXzEEAmd3CAUCZEwCXzMEAmNpCAUCZEwCXzQEAmNrCAUCZEwCXzUEAmNoCAUCZEwCXzYJAJQKAgUDbmlsCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmNVCQDMCAIJAKQDAQkBAUcCBQJjbQUBYgkAzAgCCQCkAwEFAmNpCQDMCAIJAKQDAQUCY2sJAMwIAgkApAMBBQJjaAkAzAgCBQJjZwkAzAgCCQCkAwEFAmN4CQDMCAIJAKQDAQUCY3oFA25pbAUBagJkRgEfZXZhbHVhdGVQdXRCeVByaWNlQXNzZXRSRUFET05MWQECY3oEAmJRCQECYVMABAJjZAkA2QQBCQCRAwIFAmJRBQFxBAJjRAkAkQMCBQJiUQUBcgQCY2UJANkEAQUCY0QEAmNFCQCRAwIFAmJRBQFzBAJjZgkA2QQBBQJjRQQCYlIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiUQUBdAQCYlMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiUQUBdQQCY2cJAJEDAgUCYlEFAXAEAmdwCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmNkCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmNkAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZ3gJAQJiQgEFAmNEBAJneQkBAmJCAQUCY0UEAmd6CQEBRAIFAmd4BQJiUgQCZ0EJAQFEAgUCZ3kFAmJTBAJjbQMJAAACBQJncAAABQFlCQECYkQCBQJnQQUCZ3oEAmNLCQEBRAIFAmN6BQJiUwQCY0oJALwCAwUCY0sFAWQFAmNtBAJjeAkBAUcCBQJjSgUCYlIEAmRMCQECY3YJAgAAoMIeBQJjeAUCY2UFAmN6BQJjZgIABgcEAmNVCAUCZEwCXzEEAmd3CAUCZEwCXzMEAmNpCAUCZEwCXzQEAmNrCAUCZEwCXzUEAmNoCAUCZEwCXzYJAJQKAgUDbmlsCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmNVCQDMCAIJAKQDAQkBAUcCBQJjbQUBYgkAzAgCCQCkAwEFAmNpCQDMCAIJAKQDAQUCY2sJAMwIAgkApAMBBQJjaAkAzAgCBQJjZwkAzAgCCQCkAwEFAmN4CQDMCAIJAKQDAQUCY3oFA25pbAUBagJkRgETZXZhbHVhdGVHZXRSRUFET05MWQICZ0ICZ0MEAmNNCQECYloEAgAFAmdCBQJnQwUEdGhpcwQCY3MIBQJjTQJfMQQCY3QIBQJjTQJfMgQCY2kIBQJjTQJfNQQCY2sIBQJjTQJfNgQCY2gIBQJjTQJfNwQCY24IBQJjTQJfOAQCY2cJAQ1wYXJzZUludFZhbHVlAQgFAmNNAl85CQCUCgIFA25pbAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY3MJAMwIAgkApAMBBQJjdAkAzAgCCQCkAwEFAmNpCQDMCAIJAKQDAQUCY2sJAMwIAgkApAMBBQJjaAkAzAgCCQCmAwEFAmNuCQDMCAIJAKQDAQUCY2cFA25pbAUBagECZ0QBAmdFAAQCZ0YEAmRRCQECZVQAAwkAAQIFAmRRAgpCeXRlVmVjdG9yBAJlWAUCZFEFAmVYAwkAAQIFAmRRAgRVbml0CAUCZ0QPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEAmRRBQJnRAMJAAECBQJkUQIFT3JkZXIEAmR2BQJkUQQCZ0cJAQJhUgAEAmFCCQECZHUBBQJkdgQCYUMJAPQDAwgFAmR2CWJvZHlCeXRlcwkAkQMCCAUCZHYGcHJvb2ZzAAAIBQJkdg9zZW5kZXJQdWJsaWNLZXkEAmFECQD0AwMIBQJkdglib2R5Qnl0ZXMJAJEDAggFAmR2BnByb29mcwABBQJnRwMDAwUCYUIFAmFDBwUCYUQHBgkBAmFBAwUCYUIFAmFDBQJhRAMJAAECBQJkUQIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAmVVBQJkUQQCZ0gJAPYDAQkBBXZhbHVlAQgFAmVVBnNjcmlwdAQCZ0kJANsEAQkBBXZhbHVlAQkAnQgCBQJhTAkBAmF5AAQCZ0oJAPEHAQUEdGhpcwMDCQAAAgUCZ0kFAmdICQECIT0CBQJnSgUCZ0gHBgkA9AMDCAUCZ0QJYm9keUJ5dGVzCQCRAwIIBQJnRAZwcm9vZnMAAAUCZ0YJAPQDAwgFAmdECWJvZHlCeXRlcwkAkQMCCAUCZ0QGcHJvb2ZzAAAFAmdGigMyEw==", "chainId": 84, "height": 2411642, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: f5WdyTekcJ5n1ETG8NvPRuWpVxRCYxMt8yvMd8H3p6j Next: 3FBTLH6FCYYYrf8vSVSquEt1w7AvJBMed5YAg8BX1pTv Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(0)
1515
1616 let g = toBigInt(1)
1717
1818 let h = toBigInt(2)
1919
2020 let i = "WAVES"
2121
2222 let j = "__"
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 10
5151
5252 let y = 1
5353
5454 let z = 2
5555
5656 let A = 3
5757
5858 let B = 1
5959
6060 let C = 7
6161
6262 func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
6363
6464
6565 func G (H,I) = toInt(fraction(H, toBigInt(I), d))
6666
6767
6868 func J (H,I,K) = toInt(fraction(H, toBigInt(I), d, K))
6969
7070
7171 func L (M,N,O) = fraction(M, N, O)
7272
7373
7474 func P (H) = if ((0 > H))
7575 then -(H)
7676 else H
7777
7878
7979 func Q (H) = if ((e > H))
8080 then -(H)
8181 else H
8282
8383
8484 func R () = "%s__factoryContract"
8585
8686
8787 func S () = "%s__managerPublicKey"
8888
8989
9090 func T () = "%s__pendingManagerPublicKey"
9191
9292
9393 func U () = "%s%s__price__last"
9494
9595
9696 func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], j)
9797
9898
9999 func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
100100
101101
102102 func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
103103
104104
105105 func ac () = "%s__amountAsset"
106106
107107
108108 func ad () = "%s__priceAsset"
109109
110110
111111 let ae = "%s__fee"
112112
113113 let af = fraction(10, b, 10000)
114114
115115 let ag = valueOrElse(getInteger(this, ae), af)
116116
117117 let ah = makeString(["%s", "kLp"], j)
118118
119119 let ai = makeString(["%s", "kLpRefreshedHeight"], j)
120120
121121 let aj = makeString(["%s", "refreshKLpDelay"], j)
122122
123123 let ak = 30
124124
125125 let al = valueOrElse(getInteger(this, aj), ak)
126126
127127 func am () = "%s__factoryConfig"
128128
129129
130130 func an () = "%s%s__matcher__publicKey"
131131
132132
133133 func ao (ap) = (("%s%s%s__" + ap) + "__mappings__poolContract2LpAsset")
134134
135135
136136 func aq (ar,as) = (((("%d%d%s__" + ar) + "__") + as) + "__config")
137137
138138
139139 func at (au) = ("%s%s%s__mappings__baseAsset2internalId__" + au)
140140
141141
142142 func av () = "%s__shutdown"
143143
144144
145145 func aw (ax) = ("%s%s__poolWeight__" + ax)
146146
147147
148148 func ay () = "%s__allowedLpScriptHash"
149149
150150
151151 let az = "%s__feeCollectorAddress"
152152
153153 func aA (aB,aC,aD) = throw(((((("order validation failed: orderValid=" + toString(aB)) + " senderValid=") + toString(aC)) + " matcherValid=") + toString(aD)))
154154
155155
156156 func aE (aF,aG) = valueOrErrorMessage(getString(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " is not defined"], ""))
157157
158158
159159 func aH (aF,aG) = valueOrErrorMessage(getInteger(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " is not defined"], ""))
160160
161161
162162 func aI (aJ) = throw(makeString(["lp.ride:", aJ], " "))
163163
164164
165165 func aK (aJ) = makeString(["lp.ride:", aJ], " ")
166166
167167
168168 let aL = addressFromStringValue(aE(this, R()))
169169
170170 let aM = addressFromStringValue(aE(aL, az))
171171
172172 let aN = {
173173 let aO = invoke(aL, "getInFeeREADONLY", [toString(this)], nil)
174174 if ($isInstanceOf(aO, "Int"))
175175 then aO
176176 else throw(($getType(aO) + " couldn't be cast to Int"))
177177 }
178178
179179 let aP = {
180180 let aO = invoke(aL, "getOutFeeREADONLY", [toString(this)], nil)
181181 if ($isInstanceOf(aO, "Int"))
182182 then aO
183183 else throw(($getType(aO) + " couldn't be cast to Int"))
184184 }
185185
186186 func aQ () = valueOrElse(getBoolean(aL, av()), false)
187187
188188
189189 func aR () = fromBase58String(aE(aL, an()))
190190
191191
192192 func aS () = {
193193 let aT = aE(this, ac())
194194 let aU = aE(this, ad())
195195 let as = aH(aL, at(aU))
196196 let ar = aH(aL, at(aT))
197197 split(aE(aL, aq(toString(ar), toString(as))), j)
198198 }
199199
200200
201201 func aV (aW) = if ((aW == i))
202202 then unit
203203 else fromBase58String(aW)
204204
205205
206206 func aX (aW) = if ((aW == unit))
207207 then i
208208 else toBase58String(value(aW))
209209
210210
211211 func aY (aZ) = $Tuple7(addressFromStringValue(aZ[o]), parseIntValue(aZ[p]), fromBase58String(aZ[q]), aV(aZ[r]), aV(aZ[s]), parseIntValue(aZ[t]), parseIntValue(aZ[u]))
212212
213213
214214 let ba = aY(aS())
215215
216216 let bb = ba
217217
218218 let bc = bb._1
219219
220220 let bd = bb._2
221221
222222 let be = bb._3
223223
224224 let bf = bb._4
225225
226226 let bg = bb._5
227227
228228 let bh = bb._6
229229
230230 let bi = bb._7
231231
232232 func bj () = split(aE(aL, am()), j)
233233
234234
235235 let bk = valueOrErrorMessage(addressFromString(bj()[B]), "incorrect staking address")
236236
237237 let bl = valueOrErrorMessage(addressFromString(bj()[C]), "incorrect staking address")
238238
239239 func bm (bn,bo,bp,bq,br,bs,bt,bu,bv,bw) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bn), toString(bo), toString(bp), toString(bq), toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw)], j)
240240
241241
242242 func bx (by,bz,bA,bq,bt,bu) = makeString(["%d%d%d%d%d%d", toString(by), toString(bz), toString(bA), toString(bq), toString(bt), toString(bu)], j)
243243
244244
245245 func bB (bC) = if ((bC == "WAVES"))
246246 then wavesBalance(this).available
247247 else assetBalance(this, fromBase58String(bC))
248248
249249
250250 func bD (bE,bF) = fraction(bE, d, bF)
251251
252252
253253 func bG (bE,bF,K) = fraction(bE, d, bF, K)
254254
255255
256256 func bH (bI,bJ,bK,bL) = {
257257 let bM = D(bK, bI)
258258 let bN = D(bL, bJ)
259259 bD(bN, bM)
260260 }
261261
262262
263263 func bO (bK,bL,bP) = {
264264 let bQ = aS()
265265 let bR = parseIntValue(bQ[t])
266266 let bS = parseIntValue(bQ[u])
267267 let bT = bH(bR, bS, bK, bL)
268268 let bF = D(bK, bR)
269269 let bE = D(bL, bS)
270270 let bU = D(bP, b)
271271 let bV = bD(bF, bU)
272272 let bW = bD(bE, bU)
273273 [bT, bV, bW]
274274 }
275275
276276
277277 func bX (bK,bL,bP) = {
278278 let bY = bO(bK, bL, bP)
279279 [G(bY[0], b), G(bY[1], b), G(bY[2], b)]
280280 }
281281
282282
283283 func bZ (ca,cb,cc,Z) = {
284284 let bQ = aS()
285285 let cd = bQ[q]
286286 let ce = bQ[r]
287287 let cf = bQ[s]
288288 let bI = parseIntValue(bQ[t])
289289 let bJ = parseIntValue(bQ[u])
290290 let cg = bQ[p]
291291 let ch = valueOrErrorMessage(assetInfo(fromBase58String(cd)), (("Asset " + cd) + " doesn't exist")).quantity
292292 if ((cd != cb))
293293 then throw("Invalid asset passed.")
294294 else {
295295 let ci = bB(ce)
296296 let cj = D(ci, bI)
297297 let ck = bB(cf)
298298 let cl = D(ck, bJ)
299299 let cm = bD(cl, cj)
300300 let cn = G(cm, b)
301301 let co = D(cc, b)
302302 let cp = D(ch, b)
303303 let cq = fraction(cj, co, cp)
304304 let cr = fraction(cl, co, cp)
305305 let cs = J(cq, bI, FLOOR)
306306 let ct = J(cr, bJ, FLOOR)
307307 let cu = if ((ca == ""))
308308 then nil
309309 else [ScriptTransfer(Z, cs, if ((ce == "WAVES"))
310310 then unit
311311 else fromBase58String(ce)), ScriptTransfer(Z, ct, if ((cf == "WAVES"))
312312 then unit
313313 else fromBase58String(cf)), StringEntry(ab(toString(Z), ca), bx(cs, ct, cc, cn, height, lastBlock.timestamp)), IntegerEntry(U(), cn), IntegerEntry(V(height, lastBlock.timestamp), cn)]
314314 $Tuple10(cs, ct, ce, cf, ci, ck, ch, cm, cg, cu)
315315 }
316316 }
317317
318318
319319 func cv (ca,cw,cx,cy,cz,cA,Z,cB,cC) = {
320320 let bQ = aS()
321321 let cd = fromBase58String(bQ[q])
322322 let cD = bQ[r]
323323 let cE = bQ[s]
324324 let cF = bQ[v]
325325 let cG = bQ[w]
326326 let bR = parseIntValue(bQ[t])
327327 let bS = parseIntValue(bQ[u])
328328 let cg = bQ[p]
329329 let ch = valueOrErrorMessage(assetInfo(cd), (("Asset " + toBase58String(cd)) + " doesn't exist")).quantity
330330 let cH = toBase58String(valueOrElse(cy, fromBase58String("WAVES")))
331331 let cI = toBase58String(valueOrElse(cA, fromBase58String("WAVES")))
332332 if (if ((cD != cH))
333333 then true
334334 else (cE != cI))
335335 then throw("Invalid amt or price asset passed.")
336336 else {
337337 let ci = if (cB)
338338 then bB(cD)
339339 else (bB(cD) - cx)
340340 let ck = if (cB)
341341 then bB(cE)
342342 else (bB(cE) - cz)
343343 let cJ = D(cx, bR)
344344 let cK = D(cz, bS)
345345 let cL = bD(cK, cJ)
346346 let cj = D(ci, bR)
347347 let cl = D(ck, bS)
348348 let cM = if ((ch == 0))
349349 then {
350350 let cm = e
351351 let cN = e
352352 let bU = pow((cJ * cK), 0, toBigInt(5), 1, 0, DOWN)
353353 $Tuple5(G(bU, b), G(cJ, bR), G(cK, bS), bD((cl + cK), (cj + cJ)), cN)
354354 }
355355 else {
356356 let cm = bD(cl, cj)
357357 let cN = fraction(Q((cm - cL)), d, cm)
358358 let cO = D(cw, b)
359359 if (if ((cm != e))
360360 then (cN > cO)
361361 else false)
362362 then throw(((("Price slippage " + toString(cN)) + " exceeded the passed limit of ") + toString(cO)))
363363 else {
364364 let cp = D(ch, b)
365365 let cP = fraction(cJ, bG(cl, cj, CEILING), d, CEILING)
366366 let cQ = fraction(cK, d, bG(cl, cj, FLOOR), CEILING)
367367 let cR = if ((cP > cK))
368368 then $Tuple2(cQ, cK)
369369 else $Tuple2(cJ, cP)
370370 let cS = cR._1
371371 let cT = cR._2
372372 let bU = fraction(cp, cT, cl, FLOOR)
373373 $Tuple5(J(bU, b, FLOOR), J(cS, bR, CEILING), J(cT, bS, CEILING), cm, cN)
374374 }
375375 }
376376 let cU = cM._1
377377 let cV = cM._2
378378 let cW = cM._3
379379 let cn = G(cM._4, b)
380380 let cX = G(cM._5, b)
381381 if ((0 >= cU))
382382 then throw("Invalid calculations. LP calculated is less than zero.")
383383 else {
384384 let cY = if (!(cC))
385385 then 0
386386 else cU
387387 let cZ = (cx - cV)
388388 let da = (cz - cW)
389389 let db = [IntegerEntry(U(), cn), IntegerEntry(V(height, lastBlock.timestamp), cn), StringEntry(Y(Z, ca), bm(cV, cW, cY, cn, cw, cX, height, lastBlock.timestamp, cZ, da))]
390390 $Tuple13(cU, cY, cn, ci, ck, ch, cd, cg, db, cZ, da, cy, cA)
391391 }
392392 }
393393 }
394394
395395
396396 func dc (dd,de,ch) = {
397397 let df = fraction(pow((dd * de), 0, toBigInt(5), 1, 18, DOWN), g, ch)
398398 if ((ch == f))
399399 then f
400400 else df
401401 }
402402
403403
404404 func dg (dh,di,dj) = {
405405 let dk = (toBigInt(bB(aX(bf))) - dh)
406406 let dl = (toBigInt(bB(aX(bg))) - di)
407407 let dm = (toBigInt(value(assetInfo(be)).quantity) - dj)
408408 let dn = dc(dk, dl, dm)
409409 dn
410410 }
411411
412412
413413 func do (dp,dq,dj) = {
414414 let dk = (bB(aX(bf)) + dp)
415415 let dl = (bB(aX(bg)) + dq)
416416 let dm = (value(assetInfo(be)).quantity + dj)
417417 let df = dc(toBigInt(dk), toBigInt(dl), toBigInt(dm))
418418 let dr = [IntegerEntry(ai, height), StringEntry(ah, toString(df))]
419419 $Tuple2(dr, df)
420420 }
421421
422422
423423 func ds (dt,df) = if ((df >= dt))
424424 then true
425425 else aI(makeString(["updated KLp lower than current KLp", toString(dt), toString(df)], " "))
426426
427427
428428 func du (dv) = {
429429 let dw = dv.amount
430430 let dx = fraction(dv.amount, dv.price, b, FLOOR)
431431 let dy = if ((dv.orderType == Buy))
432432 then $Tuple2(dw, -(dx))
433433 else $Tuple2(-(dw), dx)
434434 let dp = dy._1
435435 let dq = dy._2
436436 if (if (if (aQ())
437437 then true
438438 else (bd == m))
439439 then true
440440 else (bd == n))
441441 then throw("Exchange operations disabled")
442442 else if (if ((dv.assetPair.amountAsset != bf))
443443 then true
444444 else (dv.assetPair.priceAsset != bg))
445445 then throw("Wrong order assets.")
446446 else {
447447 let dz = valueOrErrorMessage(parseBigInt(valueOrErrorMessage(getString(this, ah), aK("kLp is required"))), aK("invalid kLp"))
448448 let dA = do(dp, dq, 0)
449449 let dB = dA._1
450450 let dC = dA._2
451451 let dD = (dC >= dz)
452452 dD
453453 }
454454 }
455455
456456
457457 func dE (dF) = if ((size(dF.payments) != 1))
458458 then throw("exactly 1 payment is expected")
459459 else {
460460 let dG = value(dF.payments[0])
461461 let cb = value(dG.assetId)
462462 let dH = dG.amount
463463 let cM = bZ(toBase58String(dF.transactionId), toBase58String(cb), dH, dF.caller)
464464 let cs = cM._1
465465 let ct = cM._2
466466 let cg = parseIntValue(cM._9)
467467 let cu = cM._10
468468 if (if (aQ())
469469 then true
470470 else (cg == n))
471471 then throw(("Get operation is blocked by admin. Status = " + toString(cg)))
472472 else $Tuple5(cs, ct, dH, cb, cu)
473473 }
474474
475475
476476 func dI (dF,cw,cC) = if ((size(dF.payments) != 2))
477477 then throw("exactly 2 payments are expected")
478478 else {
479479 let dJ = value(dF.payments[0])
480480 let dK = value(dF.payments[1])
481481 let dL = cv(toBase58String(dF.transactionId), cw, dJ.amount, dJ.assetId, dK.amount, dK.assetId, toString(dF.caller), false, cC)
482482 let cg = parseIntValue(dL._8)
483483 if (if (if (aQ())
484484 then true
485485 else (cg == l))
486486 then true
487487 else (cg == n))
488488 then throw(("Put operation is blocked by admin. Status = " + toString(cg)))
489489 else dL
490490 }
491491
492492
493493 func dM (dN) = {
494494 let dO = invoke(aL, "emit", [dN], nil)
495495 if ((dO == dO))
496496 then {
497497 let dP = {
498498 let dQ = dO
499499 if ($isInstanceOf(dQ, "Address"))
500500 then {
501501 let dR = dQ
502502 invoke(dR, "emit", [dN], nil)
503503 }
504504 else unit
505505 }
506506 if ((dP == dP))
507507 then dN
508508 else throw("Strict value is not equal to itself.")
509509 }
510510 else throw("Strict value is not equal to itself.")
511511 }
512512
513513
514514 func dS (dN,ag) = {
515515 let dT = if ((ag == 0))
516516 then 0
517517 else fraction(dN, ag, b)
518518 $Tuple2((dN - dT), dT)
519519 }
520520
521521
522522 func dU (dV,dW,Z,aa) = {
523523 let dX = (aa == unit)
524524 let dY = bB(aX(bf))
525525 let dZ = bB(aX(bg))
526526 let ea = if ((dW == bf))
527527 then true
528528 else if ((dW == bg))
529529 then false
530530 else aI("invalid asset")
531531 let eb = if (dX)
532532 then $Tuple2(dY, dZ)
533533 else if (ea)
534534 then $Tuple2((dY - dV), dZ)
535535 else $Tuple2(dY, (dZ - dV))
536536 let ec = eb._1
537537 let ed = eb._2
538538 let ee = if (ea)
539539 then $Tuple2(dV, 0)
540540 else $Tuple2(0, dV)
541541 let ef = ee._1
542542 let eg = ee._2
543543 let dw = dS(ef, aN)._1
544544 let dx = dS(eg, aN)._1
545545 let eh = dS(dV, aN)
546546 let ei = eh._1
547547 let dT = eh._2
548548 let ej = (ec + dw)
549549 let ek = (ed + dx)
550550 let el = bD(D(ek, bi), D(ej, bh))
551551 let em = G(el, b)
552552 let en = if (ea)
553553 then ec
554554 else ed
555555 let eo = toBigInt(en)
556556 let ep = toBigInt(valueOrErrorMessage(assetInfo(be), (("asset " + toBase58String(be)) + " doesn't exist")).quantity)
557557 let eq = if ((ep > f))
558558 then true
559559 else aI("initial deposit requires all coins")
560560 if ((eq == eq))
561561 then {
562562 let er = toBigInt(ei)
563563 let es = max([0, toInt(((ep * (sqrtBigInt((d + ((er * d) / eo)), 18, 18, DOWN) - d)) / d))])
564564 let db = if (dX)
565565 then nil
566566 else [IntegerEntry(U(), em), IntegerEntry(V(height, lastBlock.timestamp), em), StringEntry(Y(toString(value(Z)), toBase58String(value(aa))), bm(ef, eg, es, em, 0, 0, height, lastBlock.timestamp, 0, 0))]
567567 let et = bD(D(ed, bi), D(ec, bh))
568568 let eu = G(et, b)
569569 let ev = {
570570 let ew = if (ea)
571571 then $Tuple2(ef, ec)
572572 else $Tuple2(eg, ed)
573573 let dN = ew._1
574574 let ex = ew._2
575575 let ey = toInt(fraction(ep, toBigInt((dN / 2)), toBigInt(ex)))
576576 fraction((es - ey), b, ey)
577577 }
578578 $Tuple5(es, db, dT, ev, ea)
579579 }
580580 else throw("Strict value is not equal to itself.")
581581 }
582582
583583
584584 func ez (eA,ei,dW,Z,aa) = {
585585 let dX = (aa == unit)
586586 let bQ = aS()
587587 let bR = parseIntValue(bQ[t])
588588 let bS = parseIntValue(bQ[u])
589589 let eB = [if ((dW == be))
590590 then true
591591 else aI("invalid lp asset")]
592592 if ((eB == eB))
593593 then {
594594 let eC = if ((eA == bf))
595595 then true
596596 else if ((eA == bg))
597597 then false
598598 else aI("invalid asset")
599599 let eD = if (eC)
600600 then toBigInt(bB(aX(bf)))
601601 else toBigInt(bB(aX(bg)))
602602 let eE = if (eC)
603603 then bR
604604 else bS
605605 let eF = bB(aX(bf))
606606 let eG = bB(aX(bg))
607607 let eH = if (eC)
608608 then eF
609609 else eG
610610 let eI = toBigInt(eH)
611611 let ep = toBigInt(valueOrErrorMessage(assetInfo(be), (("asset " + toBase58String(be)) + " doesn't exist")).quantity)
612612 let eJ = toBigInt(ei)
613613 let eK = max([0, toInt(((eD * (d - pow((d - ((eJ * d) / ep)), 18, h, 0, 18, DOWN))) / d))])
614614 let eL = dS(eK, aP)
615615 let eM = eL._1
616616 let dT = eL._2
617617 let eN = if (eC)
618618 then $Tuple4(eM, 0, (eF - eK), eG)
619619 else $Tuple4(0, eM, eF, (eG - eK))
620620 let eO = eN._1
621621 let eP = eN._2
622622 let eQ = eN._3
623623 let eR = eN._4
624624 let el = bD(D(eR, bi), D(eQ, bh))
625625 let em = G(el, b)
626626 let db = if (dX)
627627 then nil
628628 else [StringEntry(ab(toString(value(Z)), toBase58String(value(aa))), bx(eO, eP, ei, em, height, lastBlock.timestamp)), IntegerEntry(U(), em), IntegerEntry(V(height, lastBlock.timestamp), em)]
629629 let et = bD(D(eG, bi), D(eF, bh))
630630 let eu = G(et, b)
631631 let ev = {
632632 let eS = (toInt(fraction(eD, eJ, ep)) * 2)
633633 fraction((eM - eS), b, eS)
634634 }
635635 $Tuple5(eM, db, dT, ev, eC)
636636 }
637637 else throw("Strict value is not equal to itself.")
638638 }
639639
640640
641641 func eT () = {
642642 let dQ = getString(S())
643643 if ($isInstanceOf(dQ, "String"))
644644 then {
645645 let eU = dQ
646646 fromBase58String(eU)
647647 }
648648 else if ($isInstanceOf(dQ, "Unit"))
649649 then unit
650650 else throw("Match error")
651651 }
652652
653653
654654 func eV () = {
655655 let dQ = getString(T())
656656 if ($isInstanceOf(dQ, "String"))
657657 then {
658658 let eU = dQ
659659 fromBase58String(eU)
660660 }
661661 else if ($isInstanceOf(dQ, "Unit"))
662662 then unit
663663 else throw("Match error")
664664 }
665665
666666
667667 func eW (dF) = {
668668 let dQ = eT()
669669 if ($isInstanceOf(dQ, "ByteVector"))
670670 then {
671671 let eX = dQ
672672 (dF.callerPublicKey == eX)
673673 }
674674 else if ($isInstanceOf(dQ, "Unit"))
675675 then (dF.caller == this)
676676 else throw("Match error")
677677 }
678678
679679
680680 func eY (dF) = {
681681 let eZ = throw("Permission denied")
682682 let dQ = eT()
683683 if ($isInstanceOf(dQ, "ByteVector"))
684684 then {
685685 let eX = dQ
686686 if ((dF.callerPublicKey == eX))
687687 then true
688688 else eZ
689689 }
690690 else if ($isInstanceOf(dQ, "Unit"))
691691 then if ((dF.caller == this))
692692 then true
693693 else eZ
694694 else throw("Match error")
695695 }
696696
697697
698698 @Callable(dF)
699699 func setManager (fa) = {
700700 let fb = eY(dF)
701701 if ((fb == fb))
702702 then {
703703 let fc = fromBase58String(fa)
704704 if ((fc == fc))
705705 then [StringEntry(T(), fa)]
706706 else throw("Strict value is not equal to itself.")
707707 }
708708 else throw("Strict value is not equal to itself.")
709709 }
710710
711711
712712
713713 @Callable(dF)
714714 func confirmManager () = {
715715 let fd = eV()
716716 let fe = if (isDefined(fd))
717717 then true
718718 else throw("No pending manager")
719719 if ((fe == fe))
720720 then {
721721 let ff = if ((dF.callerPublicKey == value(fd)))
722722 then true
723723 else throw("You are not pending manager")
724724 if ((ff == ff))
725725 then [StringEntry(S(), toBase58String(value(fd))), DeleteEntry(T())]
726726 else throw("Strict value is not equal to itself.")
727727 }
728728 else throw("Strict value is not equal to itself.")
729729 }
730730
731731
732732
733733 @Callable(dF)
734734 func put (cw,fg) = if ((0 > cw))
735735 then throw("Invalid slippageTolerance passed")
736736 else {
737737 let dL = dI(dF, cw, true)
738738 let cY = dL._2
739739 let cd = dL._7
740740 let cu = dL._9
741741 let cZ = dL._10
742742 let da = dL._11
743743 let fh = dL._12
744744 let fi = dL._13
745745 let dJ = toBigInt(value(dF.payments[0]).amount)
746746 let dK = toBigInt(value(dF.payments[1]).amount)
747747 let dn = dg(dJ, dK, toBigInt(0))
748748 if ((dn == dn))
749749 then {
750750 let dO = invoke(aL, "emit", [cY], nil)
751751 if ((dO == dO))
752752 then {
753753 let dP = {
754754 let dQ = dO
755755 if ($isInstanceOf(dQ, "Address"))
756756 then {
757757 let dR = dQ
758758 invoke(dR, "emit", [cY], nil)
759759 }
760760 else unit
761761 }
762762 if ((dP == dP))
763763 then {
764764 let fj = if ((cZ > 0))
765765 then invoke(bl, "put", nil, [AttachedPayment(fh, cZ)])
766766 else nil
767767 if ((fj == fj))
768768 then {
769769 let fk = if ((da > 0))
770770 then invoke(bl, "put", nil, [AttachedPayment(fi, da)])
771771 else nil
772772 if ((fk == fk))
773773 then {
774774 let fl = if (fg)
775775 then {
776776 let fm = invoke(bk, "stake", nil, [AttachedPayment(cd, cY)])
777777 if ((fm == fm))
778778 then nil
779779 else throw("Strict value is not equal to itself.")
780780 }
781781 else [ScriptTransfer(dF.caller, cY, cd)]
782782 let fn = do(0, 0, 0)
783783 if ((fn == fn))
784784 then {
785785 let df = fn._2
786786 let fo = fn._1
787787 let fp = ds(dn, df)
788788 if ((fp == fp))
789789 then ((cu ++ fl) ++ fo)
790790 else throw("Strict value is not equal to itself.")
791791 }
792792 else throw("Strict value is not equal to itself.")
793793 }
794794 else throw("Strict value is not equal to itself.")
795795 }
796796 else throw("Strict value is not equal to itself.")
797797 }
798798 else throw("Strict value is not equal to itself.")
799799 }
800800 else throw("Strict value is not equal to itself.")
801801 }
802802 else throw("Strict value is not equal to itself.")
803803 }
804804
805805
806806
807807 @Callable(dF)
808808 func putForFree (fq) = if ((0 > fq))
809809 then throw("Invalid value passed")
810810 else {
811811 let dL = dI(dF, fq, false)
812812 let cu = dL._9
813813 let dJ = toBigInt(value(dF.payments[0]).amount)
814814 let dK = toBigInt(value(dF.payments[1]).amount)
815815 let dn = dg(dJ, dK, toBigInt(0))
816816 if ((dn == dn))
817817 then {
818818 let fr = do(0, 0, 0)
819819 let fo = fr._1
820820 let df = fr._2
821821 let fp = ds(dn, df)
822822 if ((fp == fp))
823823 then (cu ++ fo)
824824 else throw("Strict value is not equal to itself.")
825825 }
826826 else throw("Strict value is not equal to itself.")
827827 }
828828
829829
830830
831831 @Callable(dF)
832832 func putOneTkn (fs,ft) = {
833833 let fu = {
834834 let aO = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
835835 if ($isInstanceOf(aO, "Boolean"))
836836 then aO
837837 else throw(($getType(aO) + " couldn't be cast to Boolean"))
838838 }
839839 let fv = if (if (if (aQ())
840840 then true
841841 else (bd == l))
842842 then true
843843 else (bd == n))
844844 then true
845845 else fu
846846 let eB = [if (if (!(fv))
847847 then true
848848 else eW(dF))
849849 then true
850850 else aI("put operation is blocked by admin"), if ((size(dF.payments) == 1))
851851 then true
852852 else aI("exactly 1 payment are expected")]
853853 if ((eB == eB))
854854 then {
855855 let fw = dF.payments[0]
856856 let dW = fw.assetId
857857 let dV = fw.amount
858858 let dn = if ((dW == bf))
859859 then dg(toBigInt(dV), toBigInt(0), toBigInt(0))
860860 else if ((dW == bg))
861861 then dg(toBigInt(0), toBigInt(dV), toBigInt(0))
862862 else aI("payment asset is not supported")
863863 if ((dn == dn))
864864 then {
865865 let Z = dF.caller
866866 let aa = dF.transactionId
867867 let fx = dU(dV, dW, Z, aa)
868868 if ((fx == fx))
869869 then {
870870 let ea = fx._5
871871 let fy = fx._4
872872 let dT = fx._3
873873 let db = fx._2
874874 let fz = fx._1
875875 let fA = if (if ((fs > 0))
876876 then (fs > fz)
877877 else false)
878878 then aI(makeString(["amount to receive is less than ", toString(fs)], ""))
879879 else fz
880880 let dO = dM(fA)
881881 if ((dO == dO))
882882 then {
883883 let fl = if (ft)
884884 then {
885885 let fB = invoke(bk, "stake", nil, [AttachedPayment(be, fA)])
886886 if ((fB == fB))
887887 then nil
888888 else throw("Strict value is not equal to itself.")
889889 }
890890 else [ScriptTransfer(dF.caller, fA, be)]
891891 let fC = if ((dT > 0))
892892 then [ScriptTransfer(aM, dT, dW)]
893893 else nil
894894 let fD = if ((this == aM))
895895 then $Tuple2(0, 0)
896896 else if (ea)
897897 then $Tuple2(-(dT), 0)
898898 else $Tuple2(0, -(dT))
899899 let dp = fD._1
900900 let dq = fD._2
901901 let fE = do(dp, dq, 0)
902902 let fo = fE._1
903903 let df = fE._2
904904 let dz = value(getString(ah))
905905 let fp = ds(dn, df)
906906 if ((fp == fp))
907907 then $Tuple2((((db ++ fl) ++ fC) ++ fo), fA)
908908 else throw("Strict value is not equal to itself.")
909909 }
910910 else throw("Strict value is not equal to itself.")
911911 }
912912 else throw("Strict value is not equal to itself.")
913913 }
914914 else throw("Strict value is not equal to itself.")
915915 }
916916 else throw("Strict value is not equal to itself.")
917917 }
918918
919919
920920
921921 @Callable(dF)
922922 func putOneTknREADONLY (dW,dV) = {
923923 let fF = dU(dV, aV(dW), unit, unit)
924924 let fz = fF._1
925925 let db = fF._2
926926 let dT = fF._3
927927 let fy = fF._4
928928 let ea = fF._5
929929 $Tuple2(nil, $Tuple3(fz, dT, fy))
930930 }
931931
932932
933933
934934 @Callable(dF)
935935 func getOneTkn (fG,fs) = {
936936 let fu = {
937937 let aO = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
938938 if ($isInstanceOf(aO, "Boolean"))
939939 then aO
940940 else throw(($getType(aO) + " couldn't be cast to Boolean"))
941941 }
942942 let fH = if (if (aQ())
943943 then true
944944 else (bd == n))
945945 then true
946946 else fu
947947 let eB = [if (if (!(fH))
948948 then true
949949 else eW(dF))
950950 then true
951951 else aI("get operation is blocked by admin"), if ((size(dF.payments) == 1))
952952 then true
953953 else aI("exactly 1 payment are expected")]
954954 if ((eB == eB))
955955 then {
956956 let eA = aV(fG)
957957 let fw = dF.payments[0]
958958 let dW = fw.assetId
959959 let ei = fw.amount
960960 let dn = dg(toBigInt(0), toBigInt(0), toBigInt(0))
961961 if ((dn == dn))
962962 then {
963963 let Z = dF.caller
964964 let aa = dF.transactionId
965965 let fI = ez(eA, ei, dW, Z, aa)
966966 if ((fI == fI))
967967 then {
968968 let eC = fI._5
969969 let fy = fI._4
970970 let dT = fI._3
971971 let db = fI._2
972972 let fJ = fI._1
973973 let dN = if (if ((fs > 0))
974974 then (fs > fJ)
975975 else false)
976976 then aI(makeString(["amount to receive is less than ", toString(fs)], ""))
977977 else fJ
978978 let fK = invoke(aL, "burn", [ei], [AttachedPayment(dW, ei)])
979979 if ((fK == fK))
980980 then {
981981 let fL = [ScriptTransfer(Z, dN, eA)]
982982 let fC = if ((dT > 0))
983983 then [ScriptTransfer(aM, dT, eA)]
984984 else nil
985985 let fM = {
986986 let fN = if ((this == aM))
987987 then 0
988988 else dT
989989 if (eC)
990990 then $Tuple2(-((dN + fN)), 0)
991991 else $Tuple2(0, -((dN + fN)))
992992 }
993993 let dp = fM._1
994994 let dq = fM._2
995995 let fO = do(dp, dq, 0)
996996 let fo = fO._1
997997 let df = fO._2
998998 let fp = ds(dn, df)
999999 if ((fp == fp))
10001000 then $Tuple2((((db ++ fL) ++ fC) ++ fo), dN)
10011001 else throw("Strict value is not equal to itself.")
10021002 }
10031003 else throw("Strict value is not equal to itself.")
10041004 }
10051005 else throw("Strict value is not equal to itself.")
10061006 }
10071007 else throw("Strict value is not equal to itself.")
10081008 }
10091009 else throw("Strict value is not equal to itself.")
10101010 }
10111011
10121012
10131013
10141014 @Callable(dF)
10151015 func getOneTknREADONLY (eA,ei) = {
10161016 let fP = ez(aV(eA), ei, be, unit, unit)
10171017 let fJ = fP._1
10181018 let db = fP._2
10191019 let dT = fP._3
10201020 let fy = fP._4
10211021 let eC = fP._5
10221022 $Tuple2(nil, $Tuple3(fJ, dT, fy))
10231023 }
10241024
10251025
10261026
10271027 @Callable(dF)
10281028 func unstakeAndGetOneTkn (fQ,fG,fs) = {
10291029 let fu = {
10301030 let aO = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
10311031 if ($isInstanceOf(aO, "Boolean"))
10321032 then aO
10331033 else throw(($getType(aO) + " couldn't be cast to Boolean"))
10341034 }
10351035 let fH = if (if (aQ())
10361036 then true
10371037 else (bd == n))
10381038 then true
10391039 else fu
10401040 let eB = [if (if (!(fH))
10411041 then true
10421042 else eW(dF))
10431043 then true
10441044 else aI("get operation is blocked by admin"), if ((size(dF.payments) == 0))
10451045 then true
10461046 else aI("no payments are expected")]
10471047 if ((eB == eB))
10481048 then {
10491049 let eA = aV(fG)
10501050 let Z = dF.caller
10511051 let aa = dF.transactionId
10521052 let dn = dg(toBigInt(0), toBigInt(0), toBigInt(0))
10531053 if ((dn == dn))
10541054 then {
10551055 let fR = invoke(bk, "unstake", [toBase58String(be), fQ], nil)
10561056 if ((fR == fR))
10571057 then {
10581058 let fS = ez(eA, fQ, be, Z, aa)
10591059 if ((fS == fS))
10601060 then {
10611061 let eC = fS._5
10621062 let fy = fS._4
10631063 let dT = fS._3
10641064 let db = fS._2
10651065 let fJ = fS._1
10661066 let dN = if (if ((fs > 0))
10671067 then (fs > fJ)
10681068 else false)
10691069 then aI(makeString(["amount to receive is less than ", toString(fs)], ""))
10701070 else fJ
10711071 let fK = invoke(aL, "burn", [fQ], [AttachedPayment(be, fQ)])
10721072 if ((fK == fK))
10731073 then {
10741074 let fL = [ScriptTransfer(dF.caller, dN, eA)]
10751075 let fC = if ((dT > 0))
10761076 then [ScriptTransfer(aM, dT, eA)]
10771077 else nil
10781078 let fT = {
10791079 let fN = if ((this == aM))
10801080 then 0
10811081 else dT
10821082 if (eC)
10831083 then $Tuple2(-((dN + fN)), 0)
10841084 else $Tuple2(0, -((dN + fN)))
10851085 }
10861086 let dp = fT._1
10871087 let dq = fT._2
10881088 let fU = do(dp, dq, 0)
10891089 let fo = fU._1
10901090 let df = fU._2
10911091 let fp = ds(dn, df)
10921092 if ((fp == fp))
10931093 then $Tuple2((((db ++ fL) ++ fC) ++ fo), dN)
10941094 else throw("Strict value is not equal to itself.")
10951095 }
10961096 else throw("Strict value is not equal to itself.")
10971097 }
10981098 else throw("Strict value is not equal to itself.")
10991099 }
11001100 else throw("Strict value is not equal to itself.")
11011101 }
11021102 else throw("Strict value is not equal to itself.")
11031103 }
11041104 else throw("Strict value is not equal to itself.")
11051105 }
11061106
11071107
11081108
11091109 @Callable(dF)
11101110 func get () = {
11111111 let cM = dE(dF)
11121112 let fV = cM._1
11131113 let ct = cM._2
11141114 let dH = cM._3
11151115 let cb = cM._4
11161116 let cu = cM._5
11171117 let dn = dg(toBigInt(0), toBigInt(0), toBigInt(0))
11181118 if ((dn == dn))
11191119 then {
11201120 let fW = invoke(aL, "burn", [dH], [AttachedPayment(cb, dH)])
11211121 if ((fW == fW))
11221122 then {
11231123 let fX = do(-(fV), -(ct), 0)
11241124 let fo = fX._1
11251125 let df = fX._2
11261126 let fp = ds(dn, df)
11271127 if ((fp == fp))
11281128 then (cu ++ fo)
11291129 else throw("Strict value is not equal to itself.")
11301130 }
11311131 else throw("Strict value is not equal to itself.")
11321132 }
11331133 else throw("Strict value is not equal to itself.")
11341134 }
11351135
11361136
11371137
11381138 @Callable(dF)
11391139 func getNoLess (fY,fZ) = {
11401140 let cM = dE(dF)
11411141 let cs = cM._1
11421142 let ct = cM._2
11431143 let dH = cM._3
11441144 let cb = cM._4
11451145 let cu = cM._5
11461146 if ((fY > cs))
11471147 then throw(((("noLessThenAmtAsset failed: " + toString(cs)) + " < ") + toString(fY)))
11481148 else if ((fZ > ct))
11491149 then throw(((("noLessThenPriceAsset failed: " + toString(ct)) + " < ") + toString(fZ)))
11501150 else {
11511151 let dn = dg(toBigInt(0), toBigInt(0), toBigInt(0))
11521152 if ((dn == dn))
11531153 then {
11541154 let fW = invoke(aL, "burn", [dH], [AttachedPayment(cb, dH)])
11551155 if ((fW == fW))
11561156 then {
11571157 let ga = do(-(cs), -(ct), 0)
11581158 let fo = ga._1
11591159 let df = ga._2
11601160 let fp = ds(dn, df)
11611161 if ((fp == fp))
11621162 then (cu ++ fo)
11631163 else throw("Strict value is not equal to itself.")
11641164 }
11651165 else throw("Strict value is not equal to itself.")
11661166 }
11671167 else throw("Strict value is not equal to itself.")
11681168 }
11691169 }
11701170
11711171
11721172
11731173 @Callable(dF)
11741174 func unstakeAndGet (dN) = {
11751175 let gb = if ((size(dF.payments) != 0))
11761176 then throw("No payments are expected")
11771177 else true
11781178 if ((gb == gb))
11791179 then {
11801180 let bQ = aS()
11811181 let cd = fromBase58String(bQ[q])
11821182 let dn = dg(toBigInt(0), toBigInt(0), toBigInt(0))
11831183 if ((dn == dn))
11841184 then {
11851185 let fR = invoke(bk, "unstake", [toBase58String(cd), dN], nil)
11861186 if ((fR == fR))
11871187 then {
11881188 let cM = bZ(toBase58String(dF.transactionId), toBase58String(cd), dN, dF.caller)
11891189 let cs = cM._1
11901190 let ct = cM._2
11911191 let cg = parseIntValue(cM._9)
11921192 let cu = cM._10
11931193 let gc = if (if (aQ())
11941194 then true
11951195 else (cg == n))
11961196 then throw(("Get operation is blocked by admin. Status = " + toString(cg)))
11971197 else true
11981198 if ((gc == gc))
11991199 then {
12001200 let fW = invoke(aL, "burn", [dN], [AttachedPayment(cd, dN)])
12011201 if ((fW == fW))
12021202 then {
12031203 let gd = do(-(cs), -(ct), 0)
12041204 let fo = gd._1
12051205 let df = gd._2
12061206 let fp = ds(dn, df)
12071207 if ((fp == fp))
12081208 then (cu ++ fo)
12091209 else throw("Strict value is not equal to itself.")
12101210 }
12111211 else throw("Strict value is not equal to itself.")
12121212 }
12131213 else throw("Strict value is not equal to itself.")
12141214 }
12151215 else throw("Strict value is not equal to itself.")
12161216 }
12171217 else throw("Strict value is not equal to itself.")
12181218 }
12191219 else throw("Strict value is not equal to itself.")
12201220 }
12211221
12221222
12231223
12241224 @Callable(dF)
12251225 func unstakeAndGetNoLess (fQ,ge,fZ) = {
12261226 let fH = if (aQ())
12271227 then true
12281228 else (bd == n)
12291229 let eB = [if (!(fH))
12301230 then true
12311231 else throw("get operation is blocked by admin"), if ((size(dF.payments) == 0))
12321232 then true
12331233 else throw("no payments are expected")]
12341234 if ((eB == eB))
12351235 then {
12361236 let dn = dg(toBigInt(0), toBigInt(0), toBigInt(0))
12371237 if ((dn == dn))
12381238 then {
12391239 let fR = invoke(bk, "unstake", [toBase58String(be), fQ], nil)
12401240 if ((fR == fR))
12411241 then {
12421242 let cM = bZ(toBase58String(dF.transactionId), toBase58String(be), fQ, dF.caller)
12431243 let cs = cM._1
12441244 let ct = cM._2
12451245 let cu = cM._10
12461246 let gf = [if ((cs >= ge))
12471247 then true
12481248 else throw(makeString(["amount asset amount to receive is less than ", toString(ge)], "")), if ((ct >= fZ))
12491249 then true
12501250 else throw(makeString(["price asset amount to receive is less than ", toString(fZ)], ""))]
12511251 if ((gf == gf))
12521252 then {
12531253 let fW = invoke(aL, "burn", [fQ], [AttachedPayment(be, fQ)])
12541254 if ((fW == fW))
12551255 then {
12561256 let gg = do(-(cs), -(ct), 0)
12571257 let fo = gg._1
12581258 let df = gg._2
12591259 let fp = ds(dn, df)
12601260 if ((fp == fp))
12611261 then (cu ++ fo)
12621262 else throw("Strict value is not equal to itself.")
12631263 }
12641264 else throw("Strict value is not equal to itself.")
12651265 }
12661266 else throw("Strict value is not equal to itself.")
12671267 }
12681268 else throw("Strict value is not equal to itself.")
12691269 }
12701270 else throw("Strict value is not equal to itself.")
12711271 }
12721272 else throw("Strict value is not equal to itself.")
12731273 }
12741274
12751275
12761276
12771277 @Callable(dF)
12781278 func activate (gh,gi) = if ((toString(dF.caller) != toString(aL)))
12791279 then throw("permissions denied")
12801280 else $Tuple2([StringEntry(ac(), gh), StringEntry(ad(), gi)], "success")
12811281
12821282
12831283
12841284 @Callable(dF)
12851285 func refreshKLp () = {
12861286 let gj = valueOrElse(getInteger(ai), 0)
12871287 let gk = if (((height - gj) >= al))
12881288 then unit
12891289 else aI(makeString([toString(al), " blocks have not passed since the previous call"], ""))
12901290 if ((gk == gk))
12911291 then {
12921292 let dz = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ah), "0")), aK("invalid kLp"))
12931293 let gl = do(0, 0, 0)
12941294 let gm = gl._1
12951295 let df = gl._2
12961296 let dr = if ((dz != df))
12971297 then gm
12981298 else aI("nothing to refresh")
12991299 $Tuple2(dr, toString(df))
13001300 }
13011301 else throw("Strict value is not equal to itself.")
13021302 }
13031303
13041304
13051305
13061306 @Callable(dF)
13071307 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aS())
13081308
13091309
13101310
13111311 @Callable(dF)
13121312 func getAccBalanceWrapperREADONLY (bC) = $Tuple2(nil, bB(bC))
13131313
13141314
13151315
13161316 @Callable(dF)
13171317 func calcPricesWrapperREADONLY (bK,bL,bP) = {
13181318 let bY = bO(bK, bL, bP)
13191319 $Tuple2(nil, [toString(bY[0]), toString(bY[1]), toString(bY[2])])
13201320 }
13211321
13221322
13231323
13241324 @Callable(dF)
13251325 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
13261326
13271327
13281328
13291329 @Callable(dF)
13301330 func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
13311331
13321332
13331333
13341334 @Callable(dF)
13351335 func calcPriceBigIntWrapperREADONLY (bE,bF) = $Tuple2(nil, toString(bD(parseBigIntValue(bE), parseBigIntValue(bF))))
13361336
13371337
13381338
13391339 @Callable(dF)
13401340 func estimatePutOperationWrapperREADONLY (ca,cw,cx,cy,cz,cA,Z,cB,cC) = $Tuple2(nil, cv(ca, cw, cx, cy, cz, cA, Z, cB, cC))
13411341
13421342
13431343
13441344 @Callable(dF)
13451345 func estimateGetOperationWrapperREADONLY (ca,cb,cc,Z) = {
13461346 let cM = bZ(ca, cb, cc, addressFromStringValue(Z))
13471347 $Tuple2(nil, $Tuple10(cM._1, cM._2, cM._3, cM._4, cM._5, cM._6, cM._7, toString(cM._8), cM._9, cM._10))
13481348 }
13491349
13501350
13511351
13521352 @Callable(dF)
13531353 func statsREADONLY () = {
13541354 let bQ = aS()
13551355 let cd = fromBase58String(bQ[q])
13561356 let gn = bQ[r]
13571357 let go = bQ[s]
13581358 let cF = bQ[v]
13591359 let cG = bQ[w]
13601360 let bR = parseIntValue(bQ[t])
13611361 let bS = parseIntValue(bQ[u])
13621362 let gp = valueOrErrorMessage(assetInfo(cd), (("Asset " + toBase58String(cd)) + " doesn't exist")).quantity
13631363 let gq = bB(gn)
13641364 let gr = bB(go)
13651365 let gs = if ((gp == 0))
13661366 then [e, e, e]
13671367 else bO(gq, gr, gp)
13681368 let cn = 0
13691369 let gt = G(gs[1], b)
13701370 let gu = G(gs[2], b)
13711371 let gv = value(getInteger(aL, aw(toString(this))))
13721372 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gq), toString(gr), toString(gp), toString(cn), toString(gt), toString(gu), toString(gv)], j))
13731373 }
13741374
13751375
13761376
13771377 @Callable(dF)
13781378 func evaluatePutByAmountAssetREADONLY (cx) = {
13791379 let bQ = aS()
13801380 let cd = fromBase58String(bQ[q])
13811381 let cD = bQ[r]
13821382 let ce = fromBase58String(cD)
13831383 let cE = bQ[s]
13841384 let cf = fromBase58String(cE)
13851385 let bR = parseIntValue(bQ[t])
13861386 let bS = parseIntValue(bQ[u])
13871387 let cg = bQ[p]
13881388 let gp = valueOrErrorMessage(assetInfo(cd), (("Asset " + toBase58String(cd)) + " doesn't exist")).quantity
13891389 let gq = bB(cD)
13901390 let gr = bB(cE)
13911391 let bM = D(gq, bR)
13921392 let bN = D(gr, bS)
13931393 let cm = if ((gp == 0))
13941394 then e
13951395 else bD(bN, bM)
13961396 let cJ = D(cx, bR)
13971397 let cK = fraction(cJ, cm, d)
13981398 let cz = G(cK, bS)
13991399 let dL = cv("", 500000, cx, ce, cz, cf, "", true, false)
14001400 let cU = dL._1
14011401 let gw = dL._3
14021402 let ci = dL._4
14031403 let ck = dL._5
14041404 let ch = dL._6
14051405 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cU), toString(G(cm, b)), toString(ci), toString(ck), toString(ch), cg, toString(cx), toString(cz)], j))
14061406 }
14071407
14081408
14091409
14101410 @Callable(dF)
14111411 func evaluatePutByPriceAssetREADONLY (cz) = {
14121412 let bQ = aS()
14131413 let cd = fromBase58String(bQ[q])
14141414 let cD = bQ[r]
14151415 let ce = fromBase58String(cD)
14161416 let cE = bQ[s]
14171417 let cf = fromBase58String(cE)
14181418 let bR = parseIntValue(bQ[t])
14191419 let bS = parseIntValue(bQ[u])
14201420 let cg = bQ[p]
14211421 let gp = valueOrErrorMessage(assetInfo(cd), (("Asset " + toBase58String(cd)) + " doesn't exist")).quantity
14221422 let gx = bB(cD)
14231423 let gy = bB(cE)
14241424 let gz = D(gx, bR)
14251425 let gA = D(gy, bS)
14261426 let cm = if ((gp == 0))
14271427 then e
14281428 else bD(gA, gz)
14291429 let cK = D(cz, bS)
14301430 let cJ = fraction(cK, d, cm)
14311431 let cx = G(cJ, bR)
14321432 let dL = cv("", 500000, cx, ce, cz, cf, "", true, false)
14331433 let cU = dL._1
14341434 let gw = dL._3
14351435 let ci = dL._4
14361436 let ck = dL._5
14371437 let ch = dL._6
14381438 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cU), toString(G(cm, b)), toString(ci), toString(ck), toString(ch), cg, toString(cx), toString(cz)], j))
14391439 }
14401440
14411441
14421442
14431443 @Callable(dF)
14441444 func evaluateGetREADONLY (gB,gC) = {
14451445 let cM = bZ("", gB, gC, this)
14461446 let cs = cM._1
14471447 let ct = cM._2
14481448 let ci = cM._5
14491449 let ck = cM._6
14501450 let ch = cM._7
14511451 let cn = cM._8
14521452 let cg = parseIntValue(cM._9)
14531453 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cs), toString(ct), toString(ci), toString(ck), toString(ch), toString(cn), toString(cg)], j))
14541454 }
14551455
14561456
14571457 @Verifier(gD)
14581458 func gE () = {
14591459 let gF = {
14601460 let dQ = eT()
14611461 if ($isInstanceOf(dQ, "ByteVector"))
14621462 then {
14631463 let eX = dQ
14641464 eX
14651465 }
14661466 else if ($isInstanceOf(dQ, "Unit"))
14671467 then gD.senderPublicKey
14681468 else throw("Match error")
14691469 }
14701470 let dQ = gD
14711471 if ($isInstanceOf(dQ, "Order"))
14721472 then {
14731473 let dv = dQ
14741474 let gG = aR()
14751475 let aB = du(dv)
14761476 let aC = sigVerify(dv.bodyBytes, dv.proofs[0], dv.senderPublicKey)
14771477 let aD = sigVerify(dv.bodyBytes, dv.proofs[1], gG)
14781478 if (if (if (aB)
14791479 then aC
14801480 else false)
14811481 then aD
14821482 else false)
14831483 then true
14841484 else aA(aB, aC, aD)
14851485 }
14861486 else if ($isInstanceOf(dQ, "SetScriptTransaction"))
14871487 then {
14881488 let eU = dQ
14891489 let gH = blake2b256(value(eU.script))
14901490 let gI = fromBase64String(value(getString(aL, ay())))
14911491 let gJ = scriptHash(this)
14921492 if (if ((gI == gH))
14931493 then (gJ != gH)
14941494 else false)
14951495 then true
14961496 else sigVerify(gD.bodyBytes, gD.proofs[0], gF)
14971497 }
14981498 else sigVerify(gD.bodyBytes, gD.proofs[0], gF)
14991499 }
15001500

github/deemru/w8io/026f985 
110.55 ms