tx · HWanK6PzTPuGB1KZ3wK7oQTmXjENDKdZuPYrZe6RDrWQ 3Mzep1R5kHeC1ecKFkWjuhU3Gw4LAdCib9N: -0.01700000 Waves 2024.02.13 12:09 [2974260] smart account 3Mzep1R5kHeC1ecKFkWjuhU3Gw4LAdCib9N > SELF 0.00000000 Waves
{ "type": 13, "id": "HWanK6PzTPuGB1KZ3wK7oQTmXjENDKdZuPYrZe6RDrWQ", "fee": 1700000, "feeAssetId": null, "timestamp": 1707815380098, "version": 2, "chainId": 84, "sender": "3Mzep1R5kHeC1ecKFkWjuhU3Gw4LAdCib9N", "senderPublicKey": "41THq9VrFxHEvVGJyz2oMpJQErnSkkqJXpBypSDxa5Mv", "proofs": [ "4KnciNQMZ4dSoKNVk4Lj422uGG1ijW53HtNCL8ePmGqzK12Dvi9t7txrwxBozWoxPv8enEXVBEU9YtGstVpw5S8B" ], "script": "base64:BwIoCAISBAoCAhgSBgoEAgICARIECgICGBIECgICGBIECgICGBIECgICGDEAB2NoYWluSWQJAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEACGNoYWluSWRUAQFUAAhjaGFpbklkVwEBVwADU0VQAgJfXwAFV0FWRVMCBVdBVkVTABBjb250cmFjdEZpbGVuYW1lAhV3eGRhb19jYWxjdWxhdG9yLnJpZGUABW11bHQ4AIDC1y8ABm11bHQxOAkAtgIBAICAkLu61q3wDQANd2F2ZXNEZWNpbWFscwAIAAx1c2R0RGVjaW1hbHMABgEFdG9YMTgCB29yaWdWYWwNb3JpZ1NjYWxlTXVsdAkAvAIDCQC2AgEFB29yaWdWYWwFBm11bHQxOAkAtgIBBQ1vcmlnU2NhbGVNdWx0AQdmcm9tWDE4AgN2YWwPcmVzdWx0U2NhbGVNdWx0CQCgAwEJALwCAwUDdmFsCQC2AgEFD3Jlc3VsdFNjYWxlTXVsdAUGbXVsdDE4AQd3cmFwRXJyAQFzCQCsAgIJAKwCAgUQY29udHJhY3RGaWxlbmFtZQICOiAFAXMBCHRocm93RXJyAQFzCQACAQkBB3dyYXBFcnIBBQFzAQtvbmx5QWRkcmVzcwIBaQdhZGRyZXNzAwkAAAIIBQFpBmNhbGxlcgUHYWRkcmVzcwYJAQh0aHJvd0VycgECEXBlcm1pc3Npb24gZGVuaWVkAQhvbmx5VGhpcwEBaQkBC29ubHlBZGRyZXNzAgUBaQUEdGhpcwAJd3hBc3NldElkAwkAAAIFB2NoYWluSWQFCGNoYWluSWRXASCTARyrqcduJVfOZp5xtr2qa/g86FgLKu7ZoE67PNwUsQMJAAACBQdjaGFpbklkBQhjaGFpbklkVAEgxlIegU7qbuM8wJewDl8s8mrp7Z2yhtGaQnioYH0+G7EJAQh0aHJvd0VycgECEGludmFsaWQgY2hhaW4gaWQBEGtleUN1cnJlbnRQZXJpb2QACQC5CQIJAMwIAgICJXMJAMwIAgINY3VycmVudFBlcmlvZAUDbmlsBQNTRVABFmtleVN0YXJ0SGVpZ2h0QnlQZXJpb2QBBnBlcmlvZAkAuQkCCQDMCAICBCVzJWQJAMwIAgILc3RhcnRIZWlnaHQJAMwIAgkApAMBBQZwZXJpb2QFA25pbAUDU0VQAQ9rZXlQZXJpb2RMZW5ndGgACQC5CQIJAMwIAgICJXMJAMwIAgIMcGVyaW9kTGVuZ3RoBQNuaWwFA1NFUAEYa2V5VHJlYXN1cnlWYWx1ZUJ5UGVyaW9kAQZwZXJpb2QJALkJAgkAzAgCAgQlcyVkCQDMCAICDXRyZWFzdXJ5VmFsdWUJAMwIAgkApAMBBQZwZXJpb2QFA25pbAUDU0VQARRrZXlMb2NrR2xvYmFsQ291bnRlcgAJALkJAgkAzAgCAgIlcwkAzAgCAhFsb2NrR2xvYmFsQ291bnRlcgUDbmlsBQNTRVABD2tleUxvY2tEdXJhdGlvbgAJALkJAgkAzAgCAgIlcwkAzAgCAgxsb2NrRHVyYXRpb24FA25pbAUDU0VQAQdrZXlMb2NrAgt1c2VyQWRkcmVzcwdjb3VudGVyCQC5CQIJAMwIAgIGJXMlcyVkCQDMCAICBGxvY2sJAMwIAgkApQgBBQt1c2VyQWRkcmVzcwkAzAgCCQCkAwEFB2NvdW50ZXIFA25pbAUDU0VQAQxrZXlTa2luVG90YWwBD3RyZWFzdXJ5QWRkcmVzcwkArAICAgtza2luX3RvdGFsXwkApQgBBQ90cmVhc3VyeUFkZHJlc3MBFWtleVBvd2VyQ29uZmlnQWRkcmVzcwACFiVzX19wb3dlckNvbmZpZ0FkZHJlc3MBEnBvd2VyQ29uZmlnQWRkcmVzcwEOZmFjdG9yeUFkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgQHJG1hdGNoMAkAnQgCBQ5mYWN0b3J5QWRkcmVzcwkBFWtleVBvd2VyQ29uZmlnQWRkcmVzcwADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQCmCAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yCQEHd3JhcEVycgECHGludmFsaWQgcG93ZXIgY29uZmlnIGFkZHJlc3MBD2tleVBvd2VyQXNzZXRJZAACDHBvd2VyQXNzZXRJZAEPZ2V0UG93ZXJBc3NldElkAQ5mYWN0b3J5QWRkcmVzcwkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgkBEnBvd2VyQ29uZmlnQWRkcmVzcwEFDmZhY3RvcnlBZGRyZXNzCQEPa2V5UG93ZXJBc3NldElkAAkBB3dyYXBFcnIBAhZpbnZhbGlkIHBvd2VyIGFzc2V0IGlkARdrZXlQb3dlckNvbnRyYWN0QWRkcmVzcwACGCVzX19wb3dlckNvbnRyYWN0QWRkcmVzcwEUcG93ZXJDb250cmFjdEFkZHJlc3MBDmZhY3RvcnlBZGRyZXNzCQETdmFsdWVPckVycm9yTWVzc2FnZQIEByRtYXRjaDAJAJ0IAgUOZmFjdG9yeUFkZHJlc3MJARdrZXlQb3dlckNvbnRyYWN0QWRkcmVzcwADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQCmCAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yCQEHd3JhcEVycgECHmludmFsaWQgcG93ZXIgY29udHJhY3QgYWRkcmVzcwEOa2V5TG9ja0FkZHJlc3MAAg8lc19fbG9ja0FkZHJlc3MBC2xvY2tBZGRyZXNzAQ5mYWN0b3J5QWRkcmVzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBAckbWF0Y2gwCQCdCAIFDmZhY3RvcnlBZGRyZXNzCQEOa2V5TG9ja0FkZHJlc3MAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkApggBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgkBB3dyYXBFcnIBAh1pbnZhbGlkIGxvY2sgY29udHJhY3QgYWRkcmVzcwEWa2V5UG9vbHNGYWN0b3J5QWRkcmVzcwACFyVzX19wb29sc0ZhY3RvcnlBZGRyZXNzARZnZXRQb29sc0ZhY3RvcnlBZGRyZXNzAQ5mYWN0b3J5QWRkcmVzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBAckbWF0Y2gwCQCdCAIFDmZhY3RvcnlBZGRyZXNzCQEWa2V5UG9vbHNGYWN0b3J5QWRkcmVzcwADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQCmCAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yCQEHd3JhcEVycgECHWludmFsaWQgcG9vbHMgZmFjdG9yeSBhZGRyZXNzARJrZXlUcmVhc3VyeUFkZHJlc3MAAhMlc19fdHJlYXN1cnlBZGRyZXNzARJnZXRUcmVhc3VyeUFkZHJlc3MBDmZhY3RvcnlBZGRyZXNzCQETdmFsdWVPckVycm9yTWVzc2FnZQIEByRtYXRjaDAJAJ0IAgUOZmFjdG9yeUFkZHJlc3MJARJrZXlUcmVhc3VyeUFkZHJlc3MAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkApggBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgkBB3dyYXBFcnIBAhhpbnZhbGlkIHRyZWFzdXJ5IGFkZHJlc3MBCWtleUFzc2V0cwACCiVzX19hc3NldHMBDGdldEFzc2V0c1N0cgEOZmFjdG9yeUFkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ5mYWN0b3J5QWRkcmVzcwkBCWtleUFzc2V0cwAJAQd3cmFwRXJyAQIOaW52YWxpZCBhc3NldHMBDGtleUxwQXNzZXRJZAACDSVzX19scEFzc2V0SWQBDGdldExwQXNzZXRJZAEOZmFjdG9yeUFkZHJlc3MJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDmZhY3RvcnlBZGRyZXNzCQEMa2V5THBBc3NldElkAAkBB3dyYXBFcnIBAhNpbnZhbGlkIGxwIGFzc2V0IGlkARJnZXRBc3NldEluZm9PckZhaWwBB2Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQdhc3NldElkCQEHd3JhcEVycgECEmludmFsaWQgYXNzZXQgaW5mbwEKbG9ja0Zvcm1hdAQEZnJvbQJ0bwdhc3NldElkBmFtb3VudAkAuQkCCQDMCAIJAKQDAQUEZnJvbQkAzAgCCQCkAwEFAnRvCQDMCAIJANgEAQUHYXNzZXRJZAkAzAgCCQCkAwEFBmFtb3VudAUDbmlsBQNTRVABCWxvY2tQYXJzZQEBcwQFcGFydHMJALUJAgUBcwUDU0VQCQCWCgQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAtgkBCQCRAwIFBXBhcnRzAAAJAQd3cmFwRXJyAQIpZXJyb3IgZHVyaW5nIHByb2Nlc3NpbmcgbG9jayBzdGFydCBoZWlnaHQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAtgkBCQCRAwIFBXBhcnRzAAEJAQd3cmFwRXJyAQInZXJyb3IgZHVyaW5nIHByb2Nlc3NpbmcgbG9jayBlbmQgaGVpZ2h0CQDZBAEJAJEDAgUFcGFydHMAAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEJAJEDAgUFcGFydHMAAwkBB3dyYXBFcnIBAiNlcnJvciBkdXJpbmcgcHJvY2Vzc2luZyBsb2NrIGFtb3VudAERZ2V0QXNzZXRzQmFsYW5jZXMCDXRhcmdldEFkZHJlc3MLYXNzZXRJZExpc3QKAQNtYXACA2FjYw5uZXh0QXNzZXRJZFN0cgQHYmFsYW5jZQMJAAACBQ5uZXh0QXNzZXRJZFN0cgUFV0FWRVMJAQV0b1gxOAIICQDvBwEFDXRhcmdldEFkZHJlc3MJYXZhaWxhYmxlCQBsBgAKAAAFDXdhdmVzRGVjaW1hbHMAAAAABQRET1dOBAdhc3NldElkCQDZBAEFDm5leHRBc3NldElkU3RyBA1hc3NldERlY2ltYWxzCAkBEmdldEFzc2V0SW5mb09yRmFpbAEFB2Fzc2V0SWQIZGVjaW1hbHMJAQV0b1gxOAIJAPAHAgUNdGFyZ2V0QWRkcmVzcwUHYXNzZXRJZAkAbAYACgAABQ1hc3NldERlY2ltYWxzAAAAAAUERE9XTgkAzQgCBQNhY2MFB2JhbGFuY2UKAAIkbAULYXNzZXRJZExpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBA21hcAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgEPZ2V0QXNzZXRzUHJpY2VzAhNwb29sc0ZhY3RvcnlBZGRyZXNzC2Fzc2V0SWRMaXN0AwkAAAIFB2NoYWluSWQFCGNoYWluSWRXBBN3YXZlc1VzZHRBZGRyZXNzU3RyAiMzUEtmcnVwRXlkVTJuWkFnaFZqWkFmdkN3TUJrenVSMUY1MgQOd2F2ZXNVc2R0UHJpY2UJAKcDAQoAAUAJAPwHBAUTcG9vbHNGYWN0b3J5QWRkcmVzcwIIZ2V0UHJpY2UJAMwIAgUTd2F2ZXNVc2R0QWRkcmVzc1N0cgUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nBBJ3YXZlc1h0bkFkZHJlc3NTdHICIzNQUFpXZ0ZOUktITHZNNTFwd1M5MzRDOFZaN2QyRjRaNThnBA13YXZlc1h0blByaWNlCQCnAwEKAAFACQD8BwQFE3Bvb2xzRmFjdG9yeUFkZHJlc3MCCGdldFByaWNlCQDMCAIFEndhdmVzWHRuQWRkcmVzc1N0cgUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nBAx4dG5Vc2R0UHJpY2UJALwCAwUOd2F2ZXNVc2R0UHJpY2UFBm11bHQxOAUNd2F2ZXNYdG5QcmljZQoBA21hcAIDYWNjC25leHRBc3NldElkBAVwcmljZQQHJG1hdGNoMAULbmV4dEFzc2V0SWQDCQAAAgIsMnRoc0FDdUhtekRNdU5lelBNMzJ3ZzlhM0J3VXpCV0RlU0tha2d6M2N3MjEFByRtYXRjaDAEEnB3cldhdmVzQWRkcmVzc1N0cgIjM1BEaTdRcThwTFFZdnRLeVRmUXVxcVBVV3lob1liVTk1N3QEDXB3cldhdmVzUHJpY2UJAKcDAQoAAUAJAPwHBAUTcG9vbHNGYWN0b3J5QWRkcmVzcwIIZ2V0UHJpY2UJAMwIAgUScHdyV2F2ZXNBZGRyZXNzU3RyBQNuaWwFA25pbAMJAAECBQFAAgZTdHJpbmcFAUAJAAIBCQCsAgIJAAMBBQFAAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcJALwCAwUNcHdyV2F2ZXNQcmljZQUOd2F2ZXNVc2R0UHJpY2UFBm11bHQxOAMJAAACAixBdHF2NTlFWXpqRkd1aXRLVm5NUms2SDhGdWtqb1Yza3RQb3JiRXlzMjVvbgUHJG1hdGNoMAQRd3hXYXZlc0FkZHJlc3NTdHICIzNQRnphSDJnaHB3QU5IRmdqZXZhODNOMXl4ekVyRUx4MmVoBAx3eFdhdmVzUHJpY2UJAKcDAQoAAUAJAPwHBAUTcG9vbHNGYWN0b3J5QWRkcmVzcwIIZ2V0UHJpY2UJAMwIAgURd3hXYXZlc0FkZHJlc3NTdHIFA25pbAUDbmlsAwkAAQIFAUACBlN0cmluZwUBQAkAAgEJAKwCAgkAAwEFAUACGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwkAvAIDBQx3eFdhdmVzUHJpY2UFDndhdmVzVXNkdFByaWNlBQZtdWx0MTgDCQAAAgIsMzROOVljRUVUTFduOTNxWVE2NEVzUDF4ODl0U3J1SlU0NFJyRU1TWFhFUEoFByRtYXRjaDAEFndhdmVzVXNkdHd4Z0FkZHJlc3NTdHICIzNQS01WWjdrUWVhUkVhallpOFljMjVSbzZtY053NUQ2UVNhBBF3YXZlc1VzZHR3eGdQcmljZQkApwMBCgABQAkA/AcEBRNwb29sc0ZhY3RvcnlBZGRyZXNzAghnZXRQcmljZQkAzAgCBRZ3YXZlc1VzZHR3eGdBZGRyZXNzU3RyBQNuaWwFA25pbAMJAAECBQFAAgZTdHJpbmcFAUAJAAIBCQCsAgIJAAMBBQFAAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcJALwCAwUOd2F2ZXNVc2R0UHJpY2UFBm11bHQxOAURd2F2ZXNVc2R0d3hnUHJpY2UDCQAAAgIsNlh0SGpwWGJzOVJSSlAyU3I5R1V5VnF6QUNjYnk5VGtUaEhYbmpWQzVDREoFByRtYXRjaDAEFndhdmVzVXNkY3d4Z0FkZHJlc3NTdHICIzNQM2czZWlwZkcyTlpLS1FFOERaWHQyRTl0UkpxaWk5amNYBBF3YXZlc1VzZGN3eGdQcmljZQkApwMBCgABQAkA/AcEBRNwb29sc0ZhY3RvcnlBZGRyZXNzAghnZXRQcmljZQkAzAgCBRZ3YXZlc1VzZGN3eGdBZGRyZXNzU3RyBQNuaWwFA25pbAMJAAECBQFAAgZTdHJpbmcFAUAJAAIBCQCsAgIJAAMBBQFAAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcJALwCAwUOd2F2ZXNVc2R0UHJpY2UFBm11bHQxOAURd2F2ZXNVc2Rjd3hnUHJpY2UDCQAAAgIsSFprMW1iZnVKcG14VTFGczRBWDVNV0xWWXRjdHNOY2c2ZTJDNlZLcUs4emsFByRtYXRjaDAEE2x0Y3d4Z1h0bkFkZHJlc3NTdHICIzNQOTR3dnU1Z0E3VmhqUGdBQjN0d2FlcWR3SEN3TksydnNuBA5sdGN3eGdYdG5QcmljZQkApwMBCgABQAkA/AcEBRNwb29sc0ZhY3RvcnlBZGRyZXNzAghnZXRQcmljZQkAzAgCBRNsdGN3eGdYdG5BZGRyZXNzU3RyBQNuaWwFA25pbAMJAAECBQFAAgZTdHJpbmcFAUAJAAIBCQCsAgIJAAMBBQFAAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcJALwCAwUObHRjd3hnWHRuUHJpY2UFDHh0blVzZHRQcmljZQUGbXVsdDE4AwkAAAICLDQ3NGpUZVl4MnIyVmEzNTc5NHRDU2NBWFdKRzloVTJIY2d4ek1vd2FaVW51BQckbWF0Y2gwBBVldGh3eGdXYXZlc0FkZHJlc3NTdHICIzNQM1hHVE42czI5Mmc5aXdZaHMzVEVxSnFIaWZmUVlvanVFBBBldGh3eGdXYXZlc1ByaWNlCQCnAwEKAAFACQD8BwQFE3Bvb2xzRmFjdG9yeUFkZHJlc3MCCGdldFByaWNlCQDMCAIFFWV0aHd4Z1dhdmVzQWRkcmVzc1N0cgUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nCQC8AgMFEGV0aHd4Z1dhdmVzUHJpY2UFDndhdmVzVXNkdFByaWNlBQZtdWx0MTgDCQAAAgIsOExRVzhmN1A1ZDVQWk03R3RaRUJnYXFSUEdTelMzRGZQdWlYclVSSjRBSlMFByRtYXRjaDAEE2J0Y3d4Z1h0bkFkZHJlc3NTdHICIzNQQ0JXRFRBNmpyRnN3ZDdnUWdhRTNYazdnTE01UktvZnZwBA5idGN3eGdYdG5QcmljZQkApwMBCgABQAkA/AcEBRNwb29sc0ZhY3RvcnlBZGRyZXNzAghnZXRQcmljZQkAzAgCBRNidGN3eGdYdG5BZGRyZXNzU3RyBQNuaWwFA25pbAMJAAECBQFAAgZTdHJpbmcFAUAJAAIBCQCsAgIJAAMBBQFAAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcJALwCAwUOYnRjd3hnWHRuUHJpY2UFDHh0blVzZHRQcmljZQUGbXVsdDE4CQEIdGhyb3dFcnIBAhBpbnZhbGlkIGFzc2V0IGlkCQDNCAIFA2FjYwUFcHJpY2UKAAIkbAULYXNzZXRJZExpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBA21hcAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgMJAAACBQdjaGFpbklkBQhjaGFpbklkVAoBA21hcAIDYWNjC25leHRBc3NldElkBAVwcmljZQQHJG1hdGNoMAULbmV4dEFzc2V0SWQDCQAAAgIsRU1BTUx4RG52M3hpejhSWGc4QnRqMzNqY0V3M3dMY3pMM0pLWVltdXVicGMFByRtYXRjaDAEEHd4VXNkdEFkZHJlc3NTdHICIzNNclVMUVJMYzUyR1dySkYxdE1jQW00TTc4ZlBlNTdvOUt0BAt3eFVzZHRQcmljZQkApwMBCgABQAkA/AcEBRNwb29sc0ZhY3RvcnlBZGRyZXNzAghnZXRQcmljZQkAzAgCBRB3eFVzZHRBZGRyZXNzU3RyBQNuaWwFA25pbAMJAAECBQFAAgZTdHJpbmcFAUAJAAIBCQCsAgIJAAMBBQFAAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcFC3d4VXNkdFByaWNlAwkAAAICLEE3S3NoN2ZYeXFtMUtoS0FpSzNiQUIyYWlQU2l0UVFGNnYxcHl1OVNTM0ZSBQckbWF0Y2gwBBJ1c2RjVXNkdEFkZHJlc3NTdHICIzNNektTZFRIMmpGYnlwTHNvTmZySDdRZ2t6U2J4M0VZd0NBBA11c2RjVXNkdFByaWNlCQCnAwEKAAFACQD8BwQFE3Bvb2xzRmFjdG9yeUFkZHJlc3MCCGdldFByaWNlCQDMCAIFEnVzZGNVc2R0QWRkcmVzc1N0cgUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nBQ11c2RjVXNkdFByaWNlAwkAAAICLDhRNlNFMkFOZWJ1Znc4SnVQakpWUmpaRDZkckQ4aWhqTmpNOHhhR1VTZmRSBQckbWF0Y2gwBAVwcmljZQkBBXRvWDE4AgCAo8NHCQBsBgAKAAAFDHVzZHREZWNpbWFscwAAAAAFBERPV04FBXByaWNlCQEIdGhyb3dFcnIBAhBpbnZhbGlkIGFzc2V0IGlkCQDNCAIFA2FjYwUFcHJpY2UKAAIkbAULYXNzZXRJZExpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBA21hcAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgkBCHRocm93RXJyAQIQaW52YWxpZCBjaGFpbiBpZAERY2FsY1RyZWFzdXJ5VmFsdWUBDmZhY3RvcnlBZGRyZXNzBA90cmVhc3VyeUFkZHJlc3MJARJnZXRUcmVhc3VyeUFkZHJlc3MBBQ5mYWN0b3J5QWRkcmVzcwQTcG9vbHNGYWN0b3J5QWRkcmVzcwkBFmdldFBvb2xzRmFjdG9yeUFkZHJlc3MBBQ5mYWN0b3J5QWRkcmVzcwQJYXNzZXRzU3RyCQC1CQIJAQxnZXRBc3NldHNTdHIBBQ5mYWN0b3J5QWRkcmVzcwUDU0VQBA5hc3NldHNCYWxhbmNlcwkBEWdldEFzc2V0c0JhbGFuY2VzAgUPdHJlYXN1cnlBZGRyZXNzBQlhc3NldHNTdHIEDGFzc2V0c1ByaWNlcwkBD2dldEFzc2V0c1ByaWNlcwIFE3Bvb2xzRmFjdG9yeUFkZHJlc3MFCWFzc2V0c1N0cgoBBnJlZHVjZQIDYWNjDm5leHRBc3NldElkU3RyBAdhc3NldElkCQDZBAEFDm5leHRBc3NldElkU3RyBAVpbmRleAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDPCAIFCWFzc2V0c1N0cgUObmV4dEFzc2V0SWRTdHIJAQd3cmFwRXJyAQIQaW52YWxpZCBhc3NldCBpZAQHYmFsYW5jZQkAkQMCBQ5hc3NldHNCYWxhbmNlcwUFaW5kZXgEBXByaWNlCQCRAwIFDGFzc2V0c1ByaWNlcwUFaW5kZXgECmFzc2V0VmFsdWUJALwCAwUHYmFsYW5jZQUFcHJpY2UFBm11bHQxOAkAtwICBQNhY2MFCmFzc2V0VmFsdWUEDXRyZWFzdXJ5VmFsdWUKAAIkbAUJYXNzZXRzU3RyCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAtgIBAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBnJlZHVjZQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgUNdHJlYXN1cnlWYWx1ZQESY2FsY1Jld2FyZHNBbmRMb2NrAw5mYWN0b3J5QWRkcmVzcw1wYXltZW50QW1vdW50EXVzZXJBZGRyZXNzT3B0aW9uBAlhc3NldHNTdHIJALUJAgkBDGdldEFzc2V0c1N0cgEFDmZhY3RvcnlBZGRyZXNzBQNTRVAEDXd4ZGFvUXVhbnRpdHkICQESZ2V0QXNzZXRJbmZvT3JGYWlsAQkBDGdldExwQXNzZXRJZAEFDmZhY3RvcnlBZGRyZXNzCHF1YW50aXR5AwkAAAIFDXd4ZGFvUXVhbnRpdHkFDXd4ZGFvUXVhbnRpdHkEDmFzc2V0c0JhbGFuY2VzCQERZ2V0QXNzZXRzQmFsYW5jZXMCBQ5mYWN0b3J5QWRkcmVzcwUJYXNzZXRzU3RyCgEDbWFwAgNhY2MObmV4dEFzc2V0SWRTdHIEB2Fzc2V0SWQJANkEAQUObmV4dEFzc2V0SWRTdHIEBWluZGV4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAM8IAgUJYXNzZXRzU3RyBQ5uZXh0QXNzZXRJZFN0cgkBB3dyYXBFcnIBAhVpbnZhbGlkIGFzc2V0IGJhbGFuY2UEDWFzc2V0RGVjaW1hbHMICQESZ2V0QXNzZXRJbmZvT3JGYWlsAQUHYXNzZXRJZAhkZWNpbWFscwQHYmFsYW5jZQkBB2Zyb21YMTgCCQCRAwIFDmFzc2V0c0JhbGFuY2VzBQVpbmRleAkAbAYACgAABQ1hc3NldERlY2ltYWxzAAAAAAUERE9XTgQGYW1vdW50CQBrAwUHYmFsYW5jZQUNcGF5bWVudEFtb3VudAUNd3hkYW9RdWFudGl0eQMJAGYCBQZhbW91bnQAAAQEbG9jawMJAAACBRF1c2VyQWRkcmVzc09wdGlvbgUEdW5pdAUEdW5pdAkA/AcEBQR0aGlzAgxsb2NrSW50ZXJuYWwJAMwIAggFDmZhY3RvcnlBZGRyZXNzBWJ5dGVzCQDMCAIICQEFdmFsdWUBBRF1c2VyQWRkcmVzc09wdGlvbgVieXRlcwkAzAgCBQdhc3NldElkCQDMCAIFBmFtb3VudAUDbmlsBQNuaWwDCQAAAgUEbG9jawUEbG9jawkAlAoCCQDNCAIIBQNhY2MCXzEFB2Fzc2V0SWQJAM0IAggFA2FjYwJfMgUGYW1vdW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNhY2MKAAIkbAUJYXNzZXRzU3RyCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQNuaWwFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEDbWFwAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQljYWxjUHJpY2UBDmZhY3RvcnlBZGRyZXNzBBNwb29sc0ZhY3RvcnlBZGRyZXNzCQEWZ2V0UG9vbHNGYWN0b3J5QWRkcmVzcwEFDmZhY3RvcnlBZGRyZXNzBA1jdXJyZW50UGVyaW9kCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUOZmFjdG9yeUFkZHJlc3MJARBrZXlDdXJyZW50UGVyaW9kAAkBB3dyYXBFcnIBAhZpbnZhbGlkIGN1cnJlbnQgcGVyaW9kBBJzdGFydFRyZWFzdXJ5VmFsdWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQ5mYWN0b3J5QWRkcmVzcwkBGGtleVRyZWFzdXJ5VmFsdWVCeVBlcmlvZAEFDWN1cnJlbnRQZXJpb2QJAQd3cmFwRXJyAQkArAICAiJpbnZhbGlkIHRyZWFzdXJ5IHZhbHVlIGZvciBwZXJpb2QgCQCkAwEFDWN1cnJlbnRQZXJpb2QEDXRyZWFzdXJ5VmFsdWUJAQdmcm9tWDE4AgkBEWNhbGNUcmVhc3VyeVZhbHVlAQUOZmFjdG9yeUFkZHJlc3MJAGwGAAoAAAUMdXNkdERlY2ltYWxzAAAAAAUERE9XTgQRdHJlYXN1cnlWYWx1ZURpZmYJAGUCBQ10cmVhc3VyeVZhbHVlBRJzdGFydFRyZWFzdXJ5VmFsdWUEFHRyZWFzdXJ5VmFsdWVEaWZmWDE4CQEFdG9YMTgCBRF0cmVhc3VyeVZhbHVlRGlmZgkAbAYACgAABQx1c2R0RGVjaW1hbHMAAAAABQRET1dOBApwd3JBc3NldElkCQEPZ2V0UG93ZXJBc3NldElkAQUOZmFjdG9yeUFkZHJlc3MEB3B3ckluZm8JARJnZXRBc3NldEluZm9PckZhaWwBBQpwd3JBc3NldElkBAtwd3JQcmljZVgxOAkAkQMCCQEPZ2V0QXNzZXRzUHJpY2VzAgUTcG9vbHNGYWN0b3J5QWRkcmVzcwkAzAgCCQDYBAEFCnB3ckFzc2V0SWQFA25pbAAABAhwd3JQcmljZQMJAL8CAgULcHdyUHJpY2VYMTgJALYCAQAACQEHZnJvbVgxOAIFC3B3clByaWNlWDE4CQBsBgAKAAAFDHVzZHREZWNpbWFscwAAAAAFBERPV04JAQh0aHJvd0VycgECEWludmFsaWQgUFdSIHByaWNlBA90cmVhc3VyeUFkZHJlc3MJARJnZXRUcmVhc3VyeUFkZHJlc3MBBQ5mYWN0b3J5QWRkcmVzcwQJc2tpblRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIJARRwb3dlckNvbnRyYWN0QWRkcmVzcwEFDmZhY3RvcnlBZGRyZXNzCQEMa2V5U2tpblRvdGFsAQUPdHJlYXN1cnlBZGRyZXNzAAAECXd4ZGFvSW5mbwkBEmdldEFzc2V0SW5mb09yRmFpbAEJAQxnZXRMcEFzc2V0SWQBBQ5mYWN0b3J5QWRkcmVzcwQMcHdyUmVtYWluaW5nCQBpAggFCXd4ZGFvSW5mbwhxdWFudGl0eQBkBAlwd3JBbW91bnQJAGQCBQlza2luVG90YWwFDHB3clJlbWFpbmluZwQMcHdyQW1vdW50WDE4CQEFdG9YMTgCBQlwd3JBbW91bnQJAGwGAAoAAAgFB3B3ckluZm8IZGVjaW1hbHMAAAAABQRET1dOBBpmYWN0b3J5QWRkcmVzc1d4QmFsYW5jZVgxOAkAkQMCCQERZ2V0QXNzZXRzQmFsYW5jZXMCBQ5mYWN0b3J5QWRkcmVzcwkAzAgCCQDYBAEFCXd4QXNzZXRJZAUDbmlsAAAEF2ZhY3RvcnlBZGRyZXNzV3hCYWxhbmNlCQEHZnJvbVgxOAIFGmZhY3RvcnlBZGRyZXNzV3hCYWxhbmNlWDE4CQBsBgAKAAAFDHVzZHREZWNpbWFscwAAAAAFBERPV04ECnd4UHJpY2VYMTgJAJEDAgkBD2dldEFzc2V0c1ByaWNlcwIFE3Bvb2xzRmFjdG9yeUFkZHJlc3MJAMwIAgkA2AQBBQl3eEFzc2V0SWQFA25pbAAABAd3eFByaWNlAwkAvwICBQp3eFByaWNlWDE4CQC2AgEAAAkBB2Zyb21YMTgCBQp3eFByaWNlWDE4CQBsBgAKAAAFDHVzZHREZWNpbWFscwAAAAAFBERPV04JAQh0aHJvd0VycgECEGludmFsaWQgd3ggcHJpY2UEDXd4ZGFvUXVhbnRpdHkIBQl3eGRhb0luZm8IcXVhbnRpdHkEEHd4ZGFvUXVhbnRpdHlYMTgJAQV0b1gxOAIFDXd4ZGFvUXVhbnRpdHkJAGwGAAoAAAgFCXd4ZGFvSW5mbwhkZWNpbWFscwAAAAAFBERPV04EDXd4RGFvUHJpY2VYMTgJALoCAgkAtwICCQC3AgIFC3B3clByaWNlWDE4CQC8AgMJALkCAgUaZmFjdG9yeUFkZHJlc3NXeEJhbGFuY2VYMTgJALYCAQBkBQp3eFByaWNlWDE4BRB3eGRhb1F1YW50aXR5WDE4CQC8AgMJAJgDAQkAzAgCBRR0cmVhc3VyeVZhbHVlRGlmZlgxOAkAzAgCCQC2AgEAAAUDbmlsCQC5AgIJALYCAQACBQZtdWx0MTgJALkCAgkAtgIBAAoFDHB3ckFtb3VudFgxOAkAtgIBAGQECnd4RGFvUHJpY2UJAQdmcm9tWDE4AgUNd3hEYW9QcmljZVgxOAkAbAYACgAABQx1c2R0RGVjaW1hbHMAAAAABQRET1dOBA1yZXdhcmRzUHJpY2VzCQESY2FsY1Jld2FyZHNBbmRMb2NrAwUOZmFjdG9yeUFkZHJlc3MJAGwGAAoAAAgFCXd4ZGFvSW5mbwhkZWNpbWFscwAAAAAFBERPV04FBHVuaXQJAJQKAgkAzAgCBQp3eERhb1ByaWNlCQDMCAIFDXJld2FyZHNQcmljZXMFA25pbAkAzAgCCQDMCAICCnd4RGFvUHJpY2UJAMwIAgUKd3hEYW9QcmljZQUDbmlsCQDMCAIJAMwIAgIIcHdyUHJpY2UJAMwIAgUIcHdyUHJpY2UFA25pbAkAzAgCCQDMCAICF2ZhY3RvcnlBZGRyZXNzV3hCYWxhbmNlCQDMCAIFF2ZhY3RvcnlBZGRyZXNzV3hCYWxhbmNlBQNuaWwJAMwIAgkAzAgCAgd3eFByaWNlCQDMCAIFB3d4UHJpY2UFA25pbAkAzAgCCQDMCAICDXd4ZGFvUXVhbnRpdHkJAMwIAgUNd3hkYW9RdWFudGl0eQUDbmlsCQDMCAIJAMwIAgIRdHJlYXN1cnlWYWx1ZURpZmYJAMwIAgURdHJlYXN1cnlWYWx1ZURpZmYFA25pbAkAzAgCCQDMCAICCXB3ckFtb3VudAkAzAgCBQlwd3JBbW91bnQFA25pbAkAzAgCCQDMCAICCXNraW5Ub3RhbAkAzAgCBQlza2luVG90YWwFA25pbAkAzAgCCQDMCAICDHB3clJlbWFpbmluZwkAzAgCBQxwd3JSZW1haW5pbmcFA25pbAUDbmlsBgFpAQRzd2FwAg9jYWxsZXJQdWJsaWNLZXkEYXJncwQOZmFjdG9yeUFkZHJlc3MIBQFpBmNhbGxlcgQLdXNlckFkZHJlc3MJAKcIAQUPY2FsbGVyUHVibGljS2V5BAdwYXltZW50AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQkAkQMCCAUBaQhwYXltZW50cwAACQEIdGhyb3dFcnIBAhUxIHBheW1lbnQgaXMgcmVxdWlyZWQEA2VycgkBB3dyYXBFcnIBAhhpbnZhbGlkIHBheW1lbnQgYXNzZXQgaWQEDnBheW1lbnRBc3NldElkAwkAAAIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAggFB3BheW1lbnQHYXNzZXRJZAUDZXJyCQEMZ2V0THBBc3NldElkAQUOZmFjdG9yeUFkZHJlc3MJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQJAQh0aHJvd0VycgEFA2VycgQIcHdyUHJpY2UAZAQJcHdyQW1vdW50CQBpAggFB3BheW1lbnQGYW1vdW50BQhwd3JQcmljZQQHcmV3YXJkcwkBEmNhbGNSZXdhcmRzQW5kTG9jawMFDmZhY3RvcnlBZGRyZXNzCAUHcGF5bWVudAZhbW91bnQFC3VzZXJBZGRyZXNzAwkAAAIFB3Jld2FyZHMFB3Jld2FyZHMEFGFkZGl0aW9uYWxMb2NrUm91bmRzAAAEDmZhY3RvcnlBY3Rpb25zCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCIGNvbW1pdEFmdGVyU3RhcnRXaXRoTG9ja1JvdW5kRm9yCQDMCAIJAKUIAQkBFHBvd2VyQ29udHJhY3RBZGRyZXNzAQUOZmFjdG9yeUFkZHJlc3MJAMwIAgkApQgBCQESZ2V0VHJlYXN1cnlBZGRyZXNzAQUOZmFjdG9yeUFkZHJlc3MJAMwIAgkApQgBBQt1c2VyQWRkcmVzcwkAzAgCBRRhZGRpdGlvbmFsTG9ja1JvdW5kcwkAzAgCCQEPZ2V0UG93ZXJBc3NldElkAQUOZmFjdG9yeUFkZHJlc3MJAMwIAgUJcHdyQW1vdW50BQNuaWwFA25pbAUDbmlsCQCUCgIJAMwIAgkBBEJ1cm4CBQ5wYXltZW50QXNzZXRJZAgFB3BheW1lbnQGYW1vdW50BQNuaWwFDmZhY3RvcnlBY3Rpb25zCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDGxvY2tJbnRlcm5hbAQTZmFjdG9yeUFkZHJlc3NCeXRlcxB1c2VyQWRkcmVzc0J5dGVzB2Fzc2V0SWQGYW1vdW50BAtjaGVja0NhbGxlcgkBCG9ubHlUaGlzAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIEDmZhY3RvcnlBZGRyZXNzCQEHQWRkcmVzcwEFE2ZhY3RvcnlBZGRyZXNzQnl0ZXMEC3VzZXJBZGRyZXNzCQEHQWRkcmVzcwEFEHVzZXJBZGRyZXNzQnl0ZXMEEWxvY2tHbG9iYWxDb3VudGVyCQELdmFsdWVPckVsc2UCCQCaCAIFDmZhY3RvcnlBZGRyZXNzCQEUa2V5TG9ja0dsb2JhbENvdW50ZXIAAAAEDGxvY2tEdXJhdGlvbgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFDmZhY3RvcnlBZGRyZXNzCQEPa2V5TG9ja0R1cmF0aW9uAAkBB3dyYXBFcnIBAhVpbnZhbGlkIGxvY2sgZHVyYXRpb24EB2FjdGlvbnMJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBC2xvY2tBZGRyZXNzAQUOZmFjdG9yeUFkZHJlc3MFBmFtb3VudAUHYXNzZXRJZAUDbmlsBA5mYWN0b3J5QWN0aW9ucwkAzAgCCQD8BwQFDmZhY3RvcnlBZGRyZXNzAgtzdHJpbmdFbnRyeQkAzAgCCQEHa2V5TG9jawIFC3VzZXJBZGRyZXNzBRFsb2NrR2xvYmFsQ291bnRlcgkAzAgCCQEKbG9ja0Zvcm1hdAQFBmhlaWdodAkAZAIFBmhlaWdodAUMbG9ja0R1cmF0aW9uBQdhc3NldElkBQZhbW91bnQFA25pbAUDbmlsCQDMCAIJAPwHBAUOZmFjdG9yeUFkZHJlc3MCDGludGVnZXJFbnRyeQkAzAgCCQEUa2V5TG9ja0dsb2JhbENvdW50ZXIACQDMCAIJAGQCBRFsb2NrR2xvYmFsQ291bnRlcgABBQNuaWwFA25pbAUDbmlsCQCUCgIFB2FjdGlvbnMFDmZhY3RvcnlBY3Rpb25zCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBnVubG9jawIPY2FsbGVyUHVibGljS2V5BGFyZ3MEDmZhY3RvcnlBZGRyZXNzCAUBaQZjYWxsZXIEC3VzZXJBZGRyZXNzCQCnCAEFD2NhbGxlclB1YmxpY0tleQQHY291bnRlcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEJAJEDAgUEYXJncwAACQEHd3JhcEVycgECD2ludmFsaWQgY291bnRlcgQNJHQwMTc2NDExNzgwNgkBCWxvY2tQYXJzZQEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ5mYWN0b3J5QWRkcmVzcwkBB2tleUxvY2sCBQt1c2VyQWRkcmVzcwUHY291bnRlcgkBB3dyYXBFcnIBAgxpbnZhbGlkIGxvY2sEBGZyb20IBQ0kdDAxNzY0MTE3ODA2Al8xBAJ0bwgFDSR0MDE3NjQxMTc4MDYCXzIEB2Fzc2V0SWQIBQ0kdDAxNzY0MTE3ODA2Al8zBAZhbW91bnQIBQ0kdDAxNzY0MTE3ODA2Al80BAZyZXN1bHQDCQBmAgUGaGVpZ2h0BQJ0bwkAzAgCCQD8BwQJAQtsb2NrQWRkcmVzcwEFDmZhY3RvcnlBZGRyZXNzAg10cmFuc2ZlckFzc2V0CQDMCAIIBQt1c2VyQWRkcmVzcwVieXRlcwkAzAgCBQZhbW91bnQJAMwIAgUHYXNzZXRJZAUDbmlsBQNuaWwJAMwIAgkA/AcEBQ5mYWN0b3J5QWRkcmVzcwILZGVsZXRlRW50cnkJAMwIAgkBB2tleUxvY2sCBQt1c2VyQWRkcmVzcwUHY291bnRlcgUDbmlsBQNuaWwFA25pbAUEdW5pdAkAlAoCBQNuaWwFBnJlc3VsdAFpAQVwcmljZQIPY2FsbGVyUHVibGljS2V5BGFyZ3MEDmZhY3RvcnlBZGRyZXNzCAUBaQZjYWxsZXIJAJQKAgUDbmlsCAkBCWNhbGNQcmljZQEFDmZhY3RvcnlBZGRyZXNzAl8xAWkBCnByaWNlRGVidWcCD2NhbGxlclB1YmxpY0tleQRhcmdzBA5mYWN0b3J5QWRkcmVzcwgFAWkGY2FsbGVyCQCUCgIFA25pbAgJAQljYWxjUHJpY2UBBQ5mYWN0b3J5QWRkcmVzcwJfMgFpARBnZXRUcmVhc3VyeVZhbHVlAg9jYWxsZXJQdWJsaWNLZXkEYXJncwQOZmFjdG9yeUFkZHJlc3MIBQFpBmNhbGxlcgQNdHJlYXN1cnlWYWx1ZQkBB2Zyb21YMTgCCQERY2FsY1RyZWFzdXJ5VmFsdWUBBQ5mYWN0b3J5QWRkcmVzcwkAbAYACgAABQx1c2R0RGVjaW1hbHMAAAAABQRET1dOCQCUCgIFA25pbAUNdHJlYXN1cnlWYWx1ZQECdHgBBnZlcmlmeQAJAAACBQdjaGFpbklkBQhjaGFpbklkVPz5oBo=", "height": 2974260, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7Dm2AdTsyibbZjun99FPgFytSWCPwkkWEyvWNpxEUHKt Next: DsUyoiyAqcepF7tFYb2aLGXY2bu1SNTvek3ocEFKKtWM Diff:
Old | New | Differences | |
---|---|---|---|
172 | 172 | func ac (ad) = valueOrErrorMessage(assetInfo(ad), q("invalid asset info")) | |
173 | 173 | ||
174 | 174 | ||
175 | - | func ae (af,ag,ad,ah) = [toString(af), toString(ag), toBase58String(ad), toString(ah)] | |
175 | + | func ae (af,ag,ad,ah) = makeString([toString(af), toString(ag), toBase58String(ad), toString(ah)], d) | |
176 | 176 | ||
177 | 177 | ||
178 | 178 | func ai (r) = { |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 7 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = take(drop(this.bytes, 1), 1) | |
5 | 5 | ||
6 | 6 | let b = base58'2T' | |
7 | 7 | ||
8 | 8 | let c = base58'2W' | |
9 | 9 | ||
10 | 10 | let d = "__" | |
11 | 11 | ||
12 | 12 | let e = "WAVES" | |
13 | 13 | ||
14 | 14 | let f = "wxdao_calculator.ride" | |
15 | 15 | ||
16 | 16 | let g = 100000000 | |
17 | 17 | ||
18 | 18 | let h = toBigInt(1000000000000000000) | |
19 | 19 | ||
20 | 20 | let i = 8 | |
21 | 21 | ||
22 | 22 | let j = 6 | |
23 | 23 | ||
24 | 24 | func k (l,m) = fraction(toBigInt(l), h, toBigInt(m)) | |
25 | 25 | ||
26 | 26 | ||
27 | 27 | func n (o,p) = toInt(fraction(o, toBigInt(p), h)) | |
28 | 28 | ||
29 | 29 | ||
30 | 30 | func q (r) = ((f + ": ") + r) | |
31 | 31 | ||
32 | 32 | ||
33 | 33 | func s (r) = throw(q(r)) | |
34 | 34 | ||
35 | 35 | ||
36 | 36 | func t (u,v) = if ((u.caller == v)) | |
37 | 37 | then true | |
38 | 38 | else s("permission denied") | |
39 | 39 | ||
40 | 40 | ||
41 | 41 | func w (u) = t(u, this) | |
42 | 42 | ||
43 | 43 | ||
44 | 44 | let x = if ((a == c)) | |
45 | 45 | then base58'Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on' | |
46 | 46 | else if ((a == b)) | |
47 | 47 | then base58'EMAMLxDnv3xiz8RXg8Btj33jcEw3wLczL3JKYYmuubpc' | |
48 | 48 | else s("invalid chain id") | |
49 | 49 | ||
50 | 50 | func y () = makeString(["%s", "currentPeriod"], d) | |
51 | 51 | ||
52 | 52 | ||
53 | 53 | func z (A) = makeString(["%s%d", "startHeight", toString(A)], d) | |
54 | 54 | ||
55 | 55 | ||
56 | 56 | func B () = makeString(["%s", "periodLength"], d) | |
57 | 57 | ||
58 | 58 | ||
59 | 59 | func C (A) = makeString(["%s%d", "treasuryValue", toString(A)], d) | |
60 | 60 | ||
61 | 61 | ||
62 | 62 | func D () = makeString(["%s", "lockGlobalCounter"], d) | |
63 | 63 | ||
64 | 64 | ||
65 | 65 | func E () = makeString(["%s", "lockDuration"], d) | |
66 | 66 | ||
67 | 67 | ||
68 | 68 | func F (G,H) = makeString(["%s%s%d", "lock", toString(G), toString(H)], d) | |
69 | 69 | ||
70 | 70 | ||
71 | 71 | func I (J) = ("skin_total_" + toString(J)) | |
72 | 72 | ||
73 | 73 | ||
74 | 74 | func K () = "%s__powerConfigAddress" | |
75 | 75 | ||
76 | 76 | ||
77 | 77 | func L (M) = valueOrErrorMessage({ | |
78 | 78 | let N = getString(M, K()) | |
79 | 79 | if ($isInstanceOf(N, "String")) | |
80 | 80 | then { | |
81 | 81 | let r = N | |
82 | 82 | addressFromString(r) | |
83 | 83 | } | |
84 | 84 | else if ($isInstanceOf(N, "Unit")) | |
85 | 85 | then unit | |
86 | 86 | else throw("Match error") | |
87 | 87 | }, q("invalid power config address")) | |
88 | 88 | ||
89 | 89 | ||
90 | 90 | func O () = "powerAssetId" | |
91 | 91 | ||
92 | 92 | ||
93 | 93 | func P (M) = fromBase58String(valueOrErrorMessage(getString(L(M), O()), q("invalid power asset id"))) | |
94 | 94 | ||
95 | 95 | ||
96 | 96 | func Q () = "%s__powerContractAddress" | |
97 | 97 | ||
98 | 98 | ||
99 | 99 | func R (M) = valueOrErrorMessage({ | |
100 | 100 | let N = getString(M, Q()) | |
101 | 101 | if ($isInstanceOf(N, "String")) | |
102 | 102 | then { | |
103 | 103 | let r = N | |
104 | 104 | addressFromString(r) | |
105 | 105 | } | |
106 | 106 | else if ($isInstanceOf(N, "Unit")) | |
107 | 107 | then unit | |
108 | 108 | else throw("Match error") | |
109 | 109 | }, q("invalid power contract address")) | |
110 | 110 | ||
111 | 111 | ||
112 | 112 | func S () = "%s__lockAddress" | |
113 | 113 | ||
114 | 114 | ||
115 | 115 | func T (M) = valueOrErrorMessage({ | |
116 | 116 | let N = getString(M, S()) | |
117 | 117 | if ($isInstanceOf(N, "String")) | |
118 | 118 | then { | |
119 | 119 | let r = N | |
120 | 120 | addressFromString(r) | |
121 | 121 | } | |
122 | 122 | else if ($isInstanceOf(N, "Unit")) | |
123 | 123 | then unit | |
124 | 124 | else throw("Match error") | |
125 | 125 | }, q("invalid lock contract address")) | |
126 | 126 | ||
127 | 127 | ||
128 | 128 | func U () = "%s__poolsFactoryAddress" | |
129 | 129 | ||
130 | 130 | ||
131 | 131 | func V (M) = valueOrErrorMessage({ | |
132 | 132 | let N = getString(M, U()) | |
133 | 133 | if ($isInstanceOf(N, "String")) | |
134 | 134 | then { | |
135 | 135 | let r = N | |
136 | 136 | addressFromString(r) | |
137 | 137 | } | |
138 | 138 | else if ($isInstanceOf(N, "Unit")) | |
139 | 139 | then unit | |
140 | 140 | else throw("Match error") | |
141 | 141 | }, q("invalid pools factory address")) | |
142 | 142 | ||
143 | 143 | ||
144 | 144 | func W () = "%s__treasuryAddress" | |
145 | 145 | ||
146 | 146 | ||
147 | 147 | func X (M) = valueOrErrorMessage({ | |
148 | 148 | let N = getString(M, W()) | |
149 | 149 | if ($isInstanceOf(N, "String")) | |
150 | 150 | then { | |
151 | 151 | let r = N | |
152 | 152 | addressFromString(r) | |
153 | 153 | } | |
154 | 154 | else if ($isInstanceOf(N, "Unit")) | |
155 | 155 | then unit | |
156 | 156 | else throw("Match error") | |
157 | 157 | }, q("invalid treasury address")) | |
158 | 158 | ||
159 | 159 | ||
160 | 160 | func Y () = "%s__assets" | |
161 | 161 | ||
162 | 162 | ||
163 | 163 | func Z (M) = valueOrErrorMessage(getString(M, Y()), q("invalid assets")) | |
164 | 164 | ||
165 | 165 | ||
166 | 166 | func aa () = "%s__lpAssetId" | |
167 | 167 | ||
168 | 168 | ||
169 | 169 | func ab (M) = fromBase58String(valueOrErrorMessage(getString(M, aa()), q("invalid lp asset id"))) | |
170 | 170 | ||
171 | 171 | ||
172 | 172 | func ac (ad) = valueOrErrorMessage(assetInfo(ad), q("invalid asset info")) | |
173 | 173 | ||
174 | 174 | ||
175 | - | func ae (af,ag,ad,ah) = [toString(af), toString(ag), toBase58String(ad), toString(ah)] | |
175 | + | func ae (af,ag,ad,ah) = makeString([toString(af), toString(ag), toBase58String(ad), toString(ah)], d) | |
176 | 176 | ||
177 | 177 | ||
178 | 178 | func ai (r) = { | |
179 | 179 | let aj = split(r, d) | |
180 | 180 | $Tuple4(valueOrErrorMessage(parseInt(aj[0]), q("error during processing lock start height")), valueOrErrorMessage(parseInt(aj[1]), q("error during processing lock end height")), fromBase58String(aj[2]), valueOrErrorMessage(parseInt(aj[3]), q("error during processing lock amount"))) | |
181 | 181 | } | |
182 | 182 | ||
183 | 183 | ||
184 | 184 | func ak (al,am) = { | |
185 | 185 | func an (ao,ap) = { | |
186 | 186 | let aq = if ((ap == e)) | |
187 | 187 | then k(wavesBalance(al).available, pow(10, 0, i, 0, 0, DOWN)) | |
188 | 188 | else { | |
189 | 189 | let ad = fromBase58String(ap) | |
190 | 190 | let ar = ac(ad).decimals | |
191 | 191 | k(assetBalance(al, ad), pow(10, 0, ar, 0, 0, DOWN)) | |
192 | 192 | } | |
193 | 193 | (ao :+ aq) | |
194 | 194 | } | |
195 | 195 | ||
196 | 196 | let as = am | |
197 | 197 | let at = size(as) | |
198 | 198 | let au = nil | |
199 | 199 | func av (aw,ax) = if ((ax >= at)) | |
200 | 200 | then aw | |
201 | 201 | else an(aw, as[ax]) | |
202 | 202 | ||
203 | 203 | func ay (aw,ax) = if ((ax >= at)) | |
204 | 204 | then aw | |
205 | 205 | else throw("List size exceeds 10") | |
206 | 206 | ||
207 | 207 | ay(av(av(av(av(av(av(av(av(av(av(au, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
208 | 208 | } | |
209 | 209 | ||
210 | 210 | ||
211 | 211 | func az (aA,am) = if ((a == c)) | |
212 | 212 | then { | |
213 | 213 | let aB = "3PKfrupEydU2nZAghVjZAfvCwMBkzuR1F52" | |
214 | 214 | let aC = parseBigIntValue({ | |
215 | 215 | let aD = invoke(aA, "getPrice", [aB], nil) | |
216 | 216 | if ($isInstanceOf(aD, "String")) | |
217 | 217 | then aD | |
218 | 218 | else throw(($getType(aD) + " couldn't be cast to String")) | |
219 | 219 | }) | |
220 | 220 | let aE = "3PPZWgFNRKHLvM51pwS934C8VZ7d2F4Z58g" | |
221 | 221 | let aF = parseBigIntValue({ | |
222 | 222 | let aD = invoke(aA, "getPrice", [aE], nil) | |
223 | 223 | if ($isInstanceOf(aD, "String")) | |
224 | 224 | then aD | |
225 | 225 | else throw(($getType(aD) + " couldn't be cast to String")) | |
226 | 226 | }) | |
227 | 227 | let aG = fraction(aC, h, aF) | |
228 | 228 | func an (ao,aH) = { | |
229 | 229 | let aI = { | |
230 | 230 | let N = aH | |
231 | 231 | if (("2thsACuHmzDMuNezPM32wg9a3BwUzBWDeSKakgz3cw21" == N)) | |
232 | 232 | then { | |
233 | 233 | let aJ = "3PDi7Qq8pLQYvtKyTfQuqqPUWyhoYbU957t" | |
234 | 234 | let aK = parseBigIntValue({ | |
235 | 235 | let aD = invoke(aA, "getPrice", [aJ], nil) | |
236 | 236 | if ($isInstanceOf(aD, "String")) | |
237 | 237 | then aD | |
238 | 238 | else throw(($getType(aD) + " couldn't be cast to String")) | |
239 | 239 | }) | |
240 | 240 | fraction(aK, aC, h) | |
241 | 241 | } | |
242 | 242 | else if (("Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on" == N)) | |
243 | 243 | then { | |
244 | 244 | let aL = "3PFzaH2ghpwANHFgjeva83N1yxzErELx2eh" | |
245 | 245 | let aM = parseBigIntValue({ | |
246 | 246 | let aD = invoke(aA, "getPrice", [aL], nil) | |
247 | 247 | if ($isInstanceOf(aD, "String")) | |
248 | 248 | then aD | |
249 | 249 | else throw(($getType(aD) + " couldn't be cast to String")) | |
250 | 250 | }) | |
251 | 251 | fraction(aM, aC, h) | |
252 | 252 | } | |
253 | 253 | else if (("34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ" == N)) | |
254 | 254 | then { | |
255 | 255 | let aN = "3PKMVZ7kQeaREajYi8Yc25Ro6mcNw5D6QSa" | |
256 | 256 | let aO = parseBigIntValue({ | |
257 | 257 | let aD = invoke(aA, "getPrice", [aN], nil) | |
258 | 258 | if ($isInstanceOf(aD, "String")) | |
259 | 259 | then aD | |
260 | 260 | else throw(($getType(aD) + " couldn't be cast to String")) | |
261 | 261 | }) | |
262 | 262 | fraction(aC, h, aO) | |
263 | 263 | } | |
264 | 264 | else if (("6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ" == N)) | |
265 | 265 | then { | |
266 | 266 | let aP = "3P3g3eipfG2NZKKQE8DZXt2E9tRJqii9jcX" | |
267 | 267 | let aQ = parseBigIntValue({ | |
268 | 268 | let aD = invoke(aA, "getPrice", [aP], nil) | |
269 | 269 | if ($isInstanceOf(aD, "String")) | |
270 | 270 | then aD | |
271 | 271 | else throw(($getType(aD) + " couldn't be cast to String")) | |
272 | 272 | }) | |
273 | 273 | fraction(aC, h, aQ) | |
274 | 274 | } | |
275 | 275 | else if (("HZk1mbfuJpmxU1Fs4AX5MWLVYtctsNcg6e2C6VKqK8zk" == N)) | |
276 | 276 | then { | |
277 | 277 | let aR = "3P94wvu5gA7VhjPgAB3twaeqdwHCwNK2vsn" | |
278 | 278 | let aS = parseBigIntValue({ | |
279 | 279 | let aD = invoke(aA, "getPrice", [aR], nil) | |
280 | 280 | if ($isInstanceOf(aD, "String")) | |
281 | 281 | then aD | |
282 | 282 | else throw(($getType(aD) + " couldn't be cast to String")) | |
283 | 283 | }) | |
284 | 284 | fraction(aS, aG, h) | |
285 | 285 | } | |
286 | 286 | else if (("474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu" == N)) | |
287 | 287 | then { | |
288 | 288 | let aT = "3P3XGTN6s292g9iwYhs3TEqJqHiffQYojuE" | |
289 | 289 | let aU = parseBigIntValue({ | |
290 | 290 | let aD = invoke(aA, "getPrice", [aT], nil) | |
291 | 291 | if ($isInstanceOf(aD, "String")) | |
292 | 292 | then aD | |
293 | 293 | else throw(($getType(aD) + " couldn't be cast to String")) | |
294 | 294 | }) | |
295 | 295 | fraction(aU, aC, h) | |
296 | 296 | } | |
297 | 297 | else if (("8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS" == N)) | |
298 | 298 | then { | |
299 | 299 | let aV = "3PCBWDTA6jrFswd7gQgaE3Xk7gLM5RKofvp" | |
300 | 300 | let aW = parseBigIntValue({ | |
301 | 301 | let aD = invoke(aA, "getPrice", [aV], nil) | |
302 | 302 | if ($isInstanceOf(aD, "String")) | |
303 | 303 | then aD | |
304 | 304 | else throw(($getType(aD) + " couldn't be cast to String")) | |
305 | 305 | }) | |
306 | 306 | fraction(aW, aG, h) | |
307 | 307 | } | |
308 | 308 | else s("invalid asset id") | |
309 | 309 | } | |
310 | 310 | (ao :+ aI) | |
311 | 311 | } | |
312 | 312 | ||
313 | 313 | let as = am | |
314 | 314 | let at = size(as) | |
315 | 315 | let au = nil | |
316 | 316 | func av (aw,ax) = if ((ax >= at)) | |
317 | 317 | then aw | |
318 | 318 | else an(aw, as[ax]) | |
319 | 319 | ||
320 | 320 | func ay (aw,ax) = if ((ax >= at)) | |
321 | 321 | then aw | |
322 | 322 | else throw("List size exceeds 10") | |
323 | 323 | ||
324 | 324 | ay(av(av(av(av(av(av(av(av(av(av(au, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
325 | 325 | } | |
326 | 326 | else if ((a == b)) | |
327 | 327 | then { | |
328 | 328 | func an (ao,aH) = { | |
329 | 329 | let aI = { | |
330 | 330 | let N = aH | |
331 | 331 | if (("EMAMLxDnv3xiz8RXg8Btj33jcEw3wLczL3JKYYmuubpc" == N)) | |
332 | 332 | then { | |
333 | 333 | let aX = "3MrULQRLc52GWrJF1tMcAm4M78fPe57o9Kt" | |
334 | 334 | let aY = parseBigIntValue({ | |
335 | 335 | let aD = invoke(aA, "getPrice", [aX], nil) | |
336 | 336 | if ($isInstanceOf(aD, "String")) | |
337 | 337 | then aD | |
338 | 338 | else throw(($getType(aD) + " couldn't be cast to String")) | |
339 | 339 | }) | |
340 | 340 | aY | |
341 | 341 | } | |
342 | 342 | else if (("A7Ksh7fXyqm1KhKAiK3bAB2aiPSitQQF6v1pyu9SS3FR" == N)) | |
343 | 343 | then { | |
344 | 344 | let aZ = "3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA" | |
345 | 345 | let ba = parseBigIntValue({ | |
346 | 346 | let aD = invoke(aA, "getPrice", [aZ], nil) | |
347 | 347 | if ($isInstanceOf(aD, "String")) | |
348 | 348 | then aD | |
349 | 349 | else throw(($getType(aD) + " couldn't be cast to String")) | |
350 | 350 | }) | |
351 | 351 | ba | |
352 | 352 | } | |
353 | 353 | else if (("8Q6SE2ANebufw8JuPjJVRjZD6drD8ihjNjM8xaGUSfdR" == N)) | |
354 | 354 | then { | |
355 | 355 | let aI = k(150000000, pow(10, 0, j, 0, 0, DOWN)) | |
356 | 356 | aI | |
357 | 357 | } | |
358 | 358 | else s("invalid asset id") | |
359 | 359 | } | |
360 | 360 | (ao :+ aI) | |
361 | 361 | } | |
362 | 362 | ||
363 | 363 | let as = am | |
364 | 364 | let at = size(as) | |
365 | 365 | let au = nil | |
366 | 366 | func av (aw,ax) = if ((ax >= at)) | |
367 | 367 | then aw | |
368 | 368 | else an(aw, as[ax]) | |
369 | 369 | ||
370 | 370 | func ay (aw,ax) = if ((ax >= at)) | |
371 | 371 | then aw | |
372 | 372 | else throw("List size exceeds 10") | |
373 | 373 | ||
374 | 374 | ay(av(av(av(av(av(av(av(av(av(av(au, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
375 | 375 | } | |
376 | 376 | else s("invalid chain id") | |
377 | 377 | ||
378 | 378 | ||
379 | 379 | func bb (M) = { | |
380 | 380 | let J = X(M) | |
381 | 381 | let aA = V(M) | |
382 | 382 | let bc = split(Z(M), d) | |
383 | 383 | let bd = ak(J, bc) | |
384 | 384 | let be = az(aA, bc) | |
385 | 385 | func bf (ao,ap) = { | |
386 | 386 | let ad = fromBase58String(ap) | |
387 | 387 | let bg = valueOrErrorMessage(indexOf(bc, ap), q("invalid asset id")) | |
388 | 388 | let aq = bd[bg] | |
389 | 389 | let aI = be[bg] | |
390 | 390 | let bh = fraction(aq, aI, h) | |
391 | 391 | (ao + bh) | |
392 | 392 | } | |
393 | 393 | ||
394 | 394 | let bi = { | |
395 | 395 | let as = bc | |
396 | 396 | let at = size(as) | |
397 | 397 | let au = toBigInt(0) | |
398 | 398 | func av (aw,ax) = if ((ax >= at)) | |
399 | 399 | then aw | |
400 | 400 | else bf(aw, as[ax]) | |
401 | 401 | ||
402 | 402 | func ay (aw,ax) = if ((ax >= at)) | |
403 | 403 | then aw | |
404 | 404 | else throw("List size exceeds 10") | |
405 | 405 | ||
406 | 406 | ay(av(av(av(av(av(av(av(av(av(av(au, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
407 | 407 | } | |
408 | 408 | bi | |
409 | 409 | } | |
410 | 410 | ||
411 | 411 | ||
412 | 412 | func bj (M,bk,bl) = { | |
413 | 413 | let bc = split(Z(M), d) | |
414 | 414 | let bm = ac(ab(M)).quantity | |
415 | 415 | if ((bm == bm)) | |
416 | 416 | then { | |
417 | 417 | let bd = ak(M, bc) | |
418 | 418 | func an (ao,ap) = { | |
419 | 419 | let ad = fromBase58String(ap) | |
420 | 420 | let bg = valueOrErrorMessage(indexOf(bc, ap), q("invalid asset balance")) | |
421 | 421 | let ar = ac(ad).decimals | |
422 | 422 | let aq = n(bd[bg], pow(10, 0, ar, 0, 0, DOWN)) | |
423 | 423 | let ah = fraction(aq, bk, bm) | |
424 | 424 | if ((ah > 0)) | |
425 | 425 | then { | |
426 | 426 | let bn = if ((bl == unit)) | |
427 | 427 | then unit | |
428 | 428 | else invoke(this, "lockInternal", [M.bytes, value(bl).bytes, ad, ah], nil) | |
429 | 429 | if ((bn == bn)) | |
430 | 430 | then $Tuple2((ao._1 :+ ad), (ao._2 :+ ah)) | |
431 | 431 | else throw("Strict value is not equal to itself.") | |
432 | 432 | } | |
433 | 433 | else ao | |
434 | 434 | } | |
435 | 435 | ||
436 | 436 | let as = bc | |
437 | 437 | let at = size(as) | |
438 | 438 | let au = $Tuple2(nil, nil) | |
439 | 439 | func av (aw,ax) = if ((ax >= at)) | |
440 | 440 | then aw | |
441 | 441 | else an(aw, as[ax]) | |
442 | 442 | ||
443 | 443 | func ay (aw,ax) = if ((ax >= at)) | |
444 | 444 | then aw | |
445 | 445 | else throw("List size exceeds 6") | |
446 | 446 | ||
447 | 447 | ay(av(av(av(av(av(av(au, 0), 1), 2), 3), 4), 5), 6) | |
448 | 448 | } | |
449 | 449 | else throw("Strict value is not equal to itself.") | |
450 | 450 | } | |
451 | 451 | ||
452 | 452 | ||
453 | 453 | func bo (M) = { | |
454 | 454 | let aA = V(M) | |
455 | 455 | let bp = valueOrErrorMessage(getInteger(M, y()), q("invalid current period")) | |
456 | 456 | let bq = valueOrErrorMessage(getInteger(M, C(bp)), q(("invalid treasury value for period " + toString(bp)))) | |
457 | 457 | let bi = n(bb(M), pow(10, 0, j, 0, 0, DOWN)) | |
458 | 458 | let br = (bi - bq) | |
459 | 459 | let bs = k(br, pow(10, 0, j, 0, 0, DOWN)) | |
460 | 460 | let bt = P(M) | |
461 | 461 | let bu = ac(bt) | |
462 | 462 | let bv = az(aA, [toBase58String(bt)])[0] | |
463 | 463 | let bw = if ((bv > toBigInt(0))) | |
464 | 464 | then n(bv, pow(10, 0, j, 0, 0, DOWN)) | |
465 | 465 | else s("invalid PWR price") | |
466 | 466 | let J = X(M) | |
467 | 467 | let bx = valueOrElse(getInteger(R(M), I(J)), 0) | |
468 | 468 | let by = ac(ab(M)) | |
469 | 469 | let bz = (by.quantity / 100) | |
470 | 470 | let bA = (bx + bz) | |
471 | 471 | let bB = k(bA, pow(10, 0, bu.decimals, 0, 0, DOWN)) | |
472 | 472 | let bC = ak(M, [toBase58String(x)])[0] | |
473 | 473 | let bD = n(bC, pow(10, 0, j, 0, 0, DOWN)) | |
474 | 474 | let bE = az(aA, [toBase58String(x)])[0] | |
475 | 475 | let bF = if ((bE > toBigInt(0))) | |
476 | 476 | then n(bE, pow(10, 0, j, 0, 0, DOWN)) | |
477 | 477 | else s("invalid wx price") | |
478 | 478 | let bm = by.quantity | |
479 | 479 | let bG = k(bm, pow(10, 0, by.decimals, 0, 0, DOWN)) | |
480 | 480 | let bH = (((bv + fraction((bC * toBigInt(100)), bE, bG)) + fraction(max([bs, toBigInt(0)]), (toBigInt(2) * h), (toBigInt(10) * bB))) / toBigInt(100)) | |
481 | 481 | let bI = n(bH, pow(10, 0, j, 0, 0, DOWN)) | |
482 | 482 | let bJ = bj(M, pow(10, 0, by.decimals, 0, 0, DOWN), unit) | |
483 | 483 | $Tuple2([bI, bJ], [["wxDaoPrice", bI], ["pwrPrice", bw], ["factoryAddressWxBalance", bD], ["wxPrice", bF], ["wxdaoQuantity", bm], ["treasuryValueDiff", br], ["pwrAmount", bA], ["skinTotal", bx], ["pwrRemaining", bz]]) | |
484 | 484 | } | |
485 | 485 | ||
486 | 486 | ||
487 | 487 | @Callable(u) | |
488 | 488 | func swap (bK,bL) = { | |
489 | 489 | let M = u.caller | |
490 | 490 | let G = addressFromPublicKey(bK) | |
491 | 491 | let bM = if ((size(u.payments) == 1)) | |
492 | 492 | then u.payments[0] | |
493 | 493 | else s("1 payment is required") | |
494 | 494 | let bN = q("invalid payment asset id") | |
495 | 495 | let bO = if ((valueOrErrorMessage(bM.assetId, bN) == ab(M))) | |
496 | 496 | then value(bM.assetId) | |
497 | 497 | else s(bN) | |
498 | 498 | let bw = 100 | |
499 | 499 | let bA = (bM.amount / bw) | |
500 | 500 | let bP = bj(M, bM.amount, G) | |
501 | 501 | if ((bP == bP)) | |
502 | 502 | then { | |
503 | 503 | let bQ = 0 | |
504 | 504 | let bR = [invoke(M, "commitAfterStartWithLockRoundFor", [toString(R(M)), toString(X(M)), toString(G), bQ, P(M), bA], nil)] | |
505 | 505 | $Tuple2([Burn(bO, bM.amount)], bR) | |
506 | 506 | } | |
507 | 507 | else throw("Strict value is not equal to itself.") | |
508 | 508 | } | |
509 | 509 | ||
510 | 510 | ||
511 | 511 | ||
512 | 512 | @Callable(u) | |
513 | 513 | func lockInternal (bS,bT,ad,ah) = { | |
514 | 514 | let bU = w(u) | |
515 | 515 | if ((bU == bU)) | |
516 | 516 | then { | |
517 | 517 | let M = Address(bS) | |
518 | 518 | let G = Address(bT) | |
519 | 519 | let bV = valueOrElse(getInteger(M, D()), 0) | |
520 | 520 | let bW = valueOrErrorMessage(getInteger(M, E()), q("invalid lock duration")) | |
521 | 521 | let bX = [ScriptTransfer(T(M), ah, ad)] | |
522 | 522 | let bR = [invoke(M, "stringEntry", [F(G, bV), ae(height, (height + bW), ad, ah)], nil), invoke(M, "integerEntry", [D(), (bV + 1)], nil)] | |
523 | 523 | $Tuple2(bX, bR) | |
524 | 524 | } | |
525 | 525 | else throw("Strict value is not equal to itself.") | |
526 | 526 | } | |
527 | 527 | ||
528 | 528 | ||
529 | 529 | ||
530 | 530 | @Callable(u) | |
531 | 531 | func unlock (bK,bL) = { | |
532 | 532 | let M = u.caller | |
533 | 533 | let G = addressFromPublicKey(bK) | |
534 | 534 | let H = valueOrErrorMessage(parseInt(bL[0]), q("invalid counter")) | |
535 | 535 | let bY = ai(valueOrErrorMessage(getString(M, F(G, H)), q("invalid lock"))) | |
536 | 536 | let af = bY._1 | |
537 | 537 | let ag = bY._2 | |
538 | 538 | let ad = bY._3 | |
539 | 539 | let ah = bY._4 | |
540 | 540 | let bZ = if ((height > ag)) | |
541 | 541 | then [invoke(T(M), "transferAsset", [G.bytes, ah, ad], nil), invoke(M, "deleteEntry", [F(G, H)], nil)] | |
542 | 542 | else unit | |
543 | 543 | $Tuple2(nil, bZ) | |
544 | 544 | } | |
545 | 545 | ||
546 | 546 | ||
547 | 547 | ||
548 | 548 | @Callable(u) | |
549 | 549 | func price (bK,bL) = { | |
550 | 550 | let M = u.caller | |
551 | 551 | $Tuple2(nil, bo(M)._1) | |
552 | 552 | } | |
553 | 553 | ||
554 | 554 | ||
555 | 555 | ||
556 | 556 | @Callable(u) | |
557 | 557 | func priceDebug (bK,bL) = { | |
558 | 558 | let M = u.caller | |
559 | 559 | $Tuple2(nil, bo(M)._2) | |
560 | 560 | } | |
561 | 561 | ||
562 | 562 | ||
563 | 563 | ||
564 | 564 | @Callable(u) | |
565 | 565 | func getTreasuryValue (bK,bL) = { | |
566 | 566 | let M = u.caller | |
567 | 567 | let bi = n(bb(M), pow(10, 0, j, 0, 0, DOWN)) | |
568 | 568 | $Tuple2(nil, bi) | |
569 | 569 | } | |
570 | 570 | ||
571 | 571 | ||
572 | 572 | @Verifier(ca) | |
573 | 573 | func cb () = (a == b) | |
574 | 574 |
github/deemru/w8io/c3f4982 56.10 ms ◑