tx · GTvNtkdhFhoMg1MgXEyptAGAvMfsgsu2LvMJBMyWh2S5

3MsVsEgTUxTm6ETYkHGaqMhMhiY2Nb3yDN5:  -0.01900000 Waves

2023.09.24 18:03 [2769646] smart account 3MsVsEgTUxTm6ETYkHGaqMhMhiY2Nb3yDN5 > SELF 0.00000000 Waves

{ "type": 13, "id": "GTvNtkdhFhoMg1MgXEyptAGAvMfsgsu2LvMJBMyWh2S5", "fee": 1900000, "feeAssetId": null, "timestamp": 1695567877371, "version": 2, "chainId": 84, "sender": "3MsVsEgTUxTm6ETYkHGaqMhMhiY2Nb3yDN5", "senderPublicKey": "2LmNyaN5YAXdg9C5vsXcTLU66hsW2KUNPsN7KcHBYhUo", "proofs": [ "5f6Sy1xdFH4wMXR4S7f35gDtwHSo2zE2g1YGhgxUhim7f8SzzPTs1SJRvjxqNnqmXEBfQPvFWfQNrsz7gPuxrayT" ], "script": "base64:BgIbCAISAwoBCBIDCgEIEgMKAQgSAwoBCBIDCgEICAAHVmVyc2lvbgIFMS4wLjAADmRBcHBTaW5jZVN0YXJ0AMD394yqMQALbGlzdGluZ19mZWUAgJzJmwUACWtleTFvd25lcgkApwgBASAvzCPQT5h3KYI4s+Qe/JTLJXp/XTmuUdmGhLVoxaamewAJa2V5Mm93bmVyCQCnCAEBIC/MI9BPmHcpgjiz5B78lMslen9dOa5R2YaEtWjFpqZ7AAhUcmVhc3VyeQkApwgBASDOSN9zenNneSigwGfLTeDgcQdu/kD5ankaF9zuobgkAQAKWFROQXNzZXRJRAEgCGWEtw/wimoa8+Jo6C4IkCTD0ydYA80s9i5eC9/aFaQBCWNvdW50ZGF5cwAEB1RTX0RpZmYJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUOZEFwcFNpbmNlU3RhcnQECWRheW51bWJlcgkAawMAAQUHVFNfRGlmZgCAuJkpBQlkYXludW1iZXIFAWkBDFJlZ2lzdGVyUGFpcgEMRW50ZXJBc3NldElEBARwbXQxCQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEBHBtdDIJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAQQEcG10MwkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwACBApjdXJyZW50S2V5CQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEBVdBVkVTCQEBIQEJAQlpc0RlZmluZWQBCAUEcG10Mgdhc3NldElkBAlmZXRjaHBhaXIJAJ0IAgUEdGhpcwkArAICAghQYWlyX1VWXwUMRW50ZXJBc3NldElEBA1hc3NldGluZm9wbXQyCQDZBAEFDEVudGVyQXNzZXRJRAQEaW5mbwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUMRW50ZXJBc3NldElECQCsAgIJAKwCAgIGQXNzZXQgBQxFbnRlckFzc2V0SUQCDiBkb2Vzbid0IGV4aXN0BARuYW1lCAUEaW5mbwRuYW1lBAhkZWNpbWFscwgFBGluZm8IZGVjaW1hbHMECkxQZGVjaW1hbHMJAGsDCQBkAgUIZGVjaW1hbHMABgABAAIECkZpcnN0TFBRdHkJAGgCAAEJAGwGAAoAAAUKTFBkZWNpbWFscwAAAAAFB0NFSUxJTkcEEG11bHRpcGx5X2Ftb3VudHMJAGsDCAUEcG10MQZhbW91bnQIBQRwbXQyBmFtb3VudAUKRmlyc3RMUFF0eQQHZ2V0U3FydAkBBHNxcnQEBRBtdWx0aXBseV9hbW91bnRzBQpMUGRlY2ltYWxzBQpMUGRlY2ltYWxzBQdDRUlMSU5HBAdMUGlzc3VlCQDCCAUJAKwCAgkArAICAgNMUC0JAK8CAgUEbmFtZQAIAgQtWFROCQCsAgIJAKwCAgkArAICCQCsAgICA0xQLQUEbmFtZQIELVhUTgIuIGlzIGEgTGlxdWlkaXR5IFByb3ZpZGVyIFRva2VuIElzc3VlZCBBZ2FpbnN0IAUMRW50ZXJBc3NldElEBQdnZXRTcXJ0BQpMUGRlY2ltYWxzBgQETFBpZAkAuAgBBQdMUGlzc3VlAwkAAAIFCWZldGNocGFpcgUMRW50ZXJBc3NldElECQACAQIbUGFpciBBbHJlYWR5IEV4aXN0IGluIExpc3QuAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwADCQACAQkArAICCQCsAgICflR3byBhdHRhY2hlZCBhc3NldHMgZXhwZWN0ZWQgYXMgcGF5bWVudC4gS2luZGx5IEF0dGFjaCBwYXltZW50MSA9IFhUTiBUb2tlbiAmIHBheW1lbnQyID0gVG9rZW4geW91IHdhbnQgdG8gTGlzdCAmIHBheW1lbnQzID0gWwkApAMBBQtsaXN0aW5nX2ZlZQINLzEwXjhdIFdhdmVzLgMJAQIhPQIIBQRwbXQxB2Fzc2V0SWQFClhUTkFzc2V0SUQJAAIBAj9JbmNvcnJlY3QgYXNzZXQgYXR0YWNoZWQgYXMgcGF5bWVudFsxXSwgcGxlYXNlIGF0dGFjaCBYVE4gb25seS4DCQBmAgCgjQYIBQRwbXQxBmFtb3VudAkAAgECT0F0dGFjaGVkIHBheW1lbnRbMV0gYW1vdW50IGlzIGxlc3MgdGhhbiAwLjEgWFROLCBwbGVhc2UgYXR0YWNoIDAuMSBYVE4gTWluaW11bS4DCQECIT0CCAUEcG10Mgdhc3NldElkBQ1hc3NldGluZm9wbXQyCQACAQI8SW5wdXQgU3RyaW5nICYgQXR0YWNoZWQgQXNzZXRJRCBpbiBwYXltZW50MiBpcyBub3QgbWF0Y2hpbmcuAwkBAiE9AggFBHBtdDMGYW1vdW50BQtsaXN0aW5nX2ZlZQkAAgEJAKwCAgkArAICAixBdHRhY2hlZCBwYXltZW50WzNdIGFtb3VudCBoYXMgdG8gYmUgZXhhY3QgWwkApAMBBQtsaXN0aW5nX2ZlZQINLzEwXjhdIFdBVkVTLgMJAAACBQVXQVZFUwYJAAIBAl1Zb3UgQXR0YWNoZWQgV0FWRVMgQXNzZXQgSUQgZm9yIExpc3RpbmcsIHBsZWFzZSBhdHRhY2ggVG9rZW5zIFlvdSB3YW50IHRvIGxpc3QgaW4gcGF5bWVudFsyXS4JAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICAghQYWlyX1VWXwUMRW50ZXJBc3NldElEBQxFbnRlckFzc2V0SUQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgIMTGlzdGluZ19GZWVfBQxFbnRlckFzc2V0SUQIBQRwbXQzBmFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8FDEVudGVyQXNzZXRJRAIBXwkA2AQBBQpYVE5Bc3NldElECAUEcG10MQZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfCQDYBAEFClhUTkFzc2V0SUQCAV8FDEVudGVyQXNzZXRJRAgFBHBtdDIGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICE1RvdGFsX29mX1BhaXJfVHhuc18FDEVudGVyQXNzZXRJRAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICAhlUb3RhbF9Td2FwX0ZlZV9Db2xsZWN0ZWRfBQxFbnRlckFzc2V0SUQCAV8JANgEAQUKWFROQXNzZXRJRAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICGVRvdGFsX1N3YXBfRmVlX0NvbGxlY3RlZF8FDEVudGVyQXNzZXRJRAAACQDMCAIFB0xQaXNzdWUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQdnZXRTcXJ0BQRMUGlkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCWtleTFvd25lcgkAawMFC2xpc3RpbmdfZmVlAAEAAgUEdW5pdAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQlrZXkyb3duZXIJAGsDBQtsaXN0aW5nX2ZlZQABAAIFBHVuaXQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICAgNMUF8FDEVudGVyQXNzZXRJRAkA2AQBBQRMUGlkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICCVRvdGFsX0xQXwUMRW50ZXJBc3NldElEBQdnZXRTcXJ0BQNuaWwBaQEXU3dhcEFzc2V0VG9YVE5QYWlyRW50cnkBDEVudGVyQXNzZXRJRAQNY2FsbGVyYWRkcmVzcwkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBANwbXQDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABCQCRAwIIBQFpCHBheW1lbnRzAAAJAAIBAjVXaGl0ZWxpc3RlZCBUb2tlbiBpcyByZXF1aXJlZCBhcyBBdHRhY2hlZCBwYXltZW50WzFdLgQZY2hlY2twYWlyaXNhdmFpbGFibGVvcm5vdAkAnQgCBQR0aGlzCQCsAgICCFBhaXJfVVZfBQxFbnRlckFzc2V0SUQED0NoZWNrWFROQmFsYW5jZQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8FDEVudGVyQXNzZXRJRAIBXwkA2AQBBQpYVE5Bc3NldElEBBFDaGVja0Fzc2V0QmFsYW5jZQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8JANgEAQUKWFROQXNzZXRJRAIBXwUMRW50ZXJBc3NldElEBA9uZXdiYWxhbmNlb2ZYVE4JAGsDBQ9DaGVja1hUTkJhbGFuY2UFEUNoZWNrQXNzZXRCYWxhbmNlCQBkAgURQ2hlY2tBc3NldEJhbGFuY2UIBQNwbXQGYW1vdW50BBRxdWFudGl0eW9mcHJpY2Vhc3NldAkAZQIFD0NoZWNrWFROQmFsYW5jZQUPbmV3YmFsYW5jZW9mWFROBAdTd2FwRmVlAAUECkN1cnJlbnRkYXkJAQljb3VudGRheXMABBBTd2FwRmVldG9yZWNlaXZlCQBpAgkAaAIFFHF1YW50aXR5b2ZwcmljZWFzc2V0BQdTd2FwRmVlAOgHBBR1c2VyYmFsYW5jZXRvcmVjZWl2ZQkAZQIJAGUCBRRxdWFudGl0eW9mcHJpY2Vhc3NldAUQU3dhcEZlZXRvcmVjZWl2ZQUQU3dhcEZlZXRvcmVjZWl2ZQQYU3VtdXBvZkFzc2V0VG9YVE5Td2FwRmVlBAckbWF0Y2gwCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgICGVRvdGFsX1N3YXBfRmVlX0NvbGxlY3RlZF8FDEVudGVyQXNzZXRJRAIBXwkA2AQBBQpYVE5Bc3NldElEAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBtOZXdTdW11cG9mQXNzZXRUb1hUTlN3YXBGZWUJAGQCCQBkAgUYU3VtdXBvZkFzc2V0VG9YVE5Td2FwRmVlBRBTd2FwRmVldG9yZWNlaXZlBRBTd2FwRmVldG9yZWNlaXZlBBFTdW11cEFzc2V0QmFsYW5jZQQHJG1hdGNoMAkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwkA2AQBBQpYVE5Bc3NldElEAgFfBQxFbnRlckFzc2V0SUQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEFk5ld1N1bXVwb2ZBc3NldEJhbGFuY2UJAGQCBRFDaGVja0Fzc2V0QmFsYW5jZQgFA3BtdAZhbW91bnQED1N1bXVwWFROQmFsYW5jZQQHJG1hdGNoMAkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwUMRW50ZXJBc3NldElEAgFfCQDYBAEFClhUTkFzc2V0SUQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEFE5ld1N1bXVwb2ZYVE5CYWxhbmNlCQBkAgkAZQIFD0NoZWNrWFROQmFsYW5jZQUUcXVhbnRpdHlvZnByaWNlYXNzZXQFEFN3YXBGZWV0b3JlY2VpdmUEBFRPUFQEByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgITVG90YWxfb2ZfUGFpcl9UeG5zXwUMRW50ZXJBc3NldElEAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABAZOZXdUUFQJAGQCBQRUT1BUAAEDCQAAAgUMRW50ZXJBc3NldElECQDYBAEFClhUTkFzc2V0SUQJAAIBAoUBSW5wdXQgY2FuIE5ldmVyIGJlIGEgWFROIEFzc2V0SUQuIEVudGVyIFdoaXRlbGlzdGVkIEFzc2V0SUQgaW4gaW5wdXQgJiBBdHRhY2ggV2hpdGVsaXN0ZWQgQXNzZXQgYXMgYW4gYXR0YWNobWVudCBUb2tlbiBpbiBwYXltZW50WzFdLgMJAQIhPQIFGWNoZWNrcGFpcmlzYXZhaWxhYmxlb3Jub3QFDEVudGVyQXNzZXRJRAkAAgECK1BhaXIgaXMgbm90IGF2YWlsYWJsZSBpbiBXaGl0ZWxpc3RlZCBBc3NldC4DCQAAAggFA3BtdAdhc3NldElkBQpYVE5Bc3NldElECQACAQJSWW91IGNhbid0IEF0dGFjaCBYVE4gYXMgYW4gQXR0YWNoZWQgUGF5bWVudC4gT25seSBXaGl0ZWxpc3RlZCBUb2tlbnMgYXJlIGFjY2VwdGVkLgMJAQIhPQIIBQNwbXQHYXNzZXRJZAkA2QQBBQxFbnRlckFzc2V0SUQJAAIBCQCsAgICMEluY29ycmVjdCBhc3NldCBhdHRhY2hlZCwgcGxlYXNlIGF0dGFjaCBvciBzZW5kIAUMRW50ZXJBc3NldElEAwkAAAIFD0NoZWNrWFROQmFsYW5jZQAACQACAQJlU3dhcCBQYWlyIE5lZWQgdG8gQWRkIExpcXVpZGl0eSBmaXJzdCBpbnRvIFBvb2wuIE9ubHkgQWZ0ZXIgdGhhdCBQYWlyIHdpbGwgYmUgYWN0aXZhdGVkIGZvciBTd2FwcGluZy4DCQAAAgURQ2hlY2tBc3NldEJhbGFuY2UAAAkAAgECZVN3YXAgUGFpciBOZWVkIHRvIEFkZCBMaXF1aWRpdHkgZmlyc3QgaW50byBQb29sLiBPbmx5IEFmdGVyIHRoYXQgUGFpciB3aWxsIGJlIGFjdGl2YXRlZCBmb3IgU3dhcHBpbmcuAwkAZgIAoI0GBRRxdWFudGl0eW9mcHJpY2Vhc3NldAkAAgEJAKwCAgkArAICAjRZb3VyIEF0dGFjaGVkIEFzc2V0IEFtb3VudCBpcyB2ZXJ5IGxvdy4gQXR0YWNoIE1vcmUgBQxFbnRlckFzc2V0SUQCOiBUb2tlbnMgdG8gQ2xhaW0gdGhlIG1pbmltdW0gQW1vdW50IG9mIDAuMSBkb2xsYXIgYXRsZWFzdC4DCQBmAgUUcXVhbnRpdHlvZnByaWNlYXNzZXQFD0NoZWNrWFROQmFsYW5jZQkAAgEJAKwCAgkArAICAh1Qb29sIE9ubHkgaGFzIGEgTGlxdWlkaXR5IG9mIAkApAMBCQBpAgUPQ2hlY2tYVE5CYWxhbmNlCQBsBgAKAAAABgAAAAAFB0NFSUxJTkcCHiBYVE4uIEFkZCBMaXF1aWRpdHkgaW50byBQb29sLgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgIZVG90YWxfU3dhcF9GZWVfQ29sbGVjdGVkXwUMRW50ZXJBc3NldElEAgFfCQDYBAEFClhUTkFzc2V0SUQFG05ld1N1bXVwb2ZBc3NldFRvWFROU3dhcEZlZQkAzAgCCQEMSW50ZWdlckVudHJ5AgILQ3VycmVudF9EYXkFCkN1cnJlbnRkYXkJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgITVG90YWxfb2ZfUGFpcl9UeG5zXwUMRW50ZXJBc3NldElEBQZOZXdUUFQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfCQDYBAEFClhUTkFzc2V0SUQCAV8FDEVudGVyQXNzZXRJRAUWTmV3U3VtdXBvZkFzc2V0QmFsYW5jZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8FDEVudGVyQXNzZXRJRAIBXwkA2AQBBQpYVE5Bc3NldElEBRROZXdTdW11cG9mWFROQmFsYW5jZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFFHVzZXJiYWxhbmNldG9yZWNlaXZlBQpYVE5Bc3NldElECQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCWtleTFvd25lcgkAawMFEFN3YXBGZWV0b3JlY2VpdmUAAQADBQpYVE5Bc3NldElECQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCWtleTJvd25lcgkAawMFEFN3YXBGZWV0b3JlY2VpdmUAAQADBQpYVE5Bc3NldElECQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCFRyZWFzdXJ5CQBrAwUQU3dhcEZlZXRvcmVjZWl2ZQABAAMFClhUTkFzc2V0SUQFA25pbAFpARdTd2FwWFROVG9Bc3NldFBhaXJFbnRyeQEMRW50ZXJBc3NldElEBA1jYWxsZXJhZGRyZXNzCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEA3BtdAMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAEJAJEDAggFAWkIcGF5bWVudHMAAAkAAgEJAKwCAgkArAICAgVPbmx5IAkA2AQBBQpYVE5Bc3NldElEAjEgWFROIFRva2VuIGlzIHJlcXVpcmVkIGFzIGFuIEF0dGFjaGVkIHBheW1lbnRbMV0uBA9DaGVja1hUTkJhbGFuY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfBQxFbnRlckFzc2V0SUQCAV8JANgEAQUKWFROQXNzZXRJRAQRQ2hlY2tBc3NldEJhbGFuY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfCQDYBAEFClhUTkFzc2V0SUQCAV8FDEVudGVyQXNzZXRJRAQRbmV3YmFsYW5jZW9mQXNzZXQJAGsDBQ9DaGVja1hUTkJhbGFuY2UFEUNoZWNrQXNzZXRCYWxhbmNlCQBkAgUPQ2hlY2tYVE5CYWxhbmNlCAUDcG10BmFtb3VudAQUcXVhbnRpdHlvZnByaWNlYXNzZXQJAGUCBRFDaGVja0Fzc2V0QmFsYW5jZQURbmV3YmFsYW5jZW9mQXNzZXQEGWNoZWNrcGFpcmlzYXZhaWxhYmxlb3Jub3QJAJ0IAgUEdGhpcwkArAICAghQYWlyX1VWXwUMRW50ZXJBc3NldElEBAdTd2FwRmVlAAUECkN1cnJlbnRkYXkJAQljb3VudGRheXMABBBTd2FwRmVldG9yZWNlaXZlCQBpAgkAaAIFFHF1YW50aXR5b2ZwcmljZWFzc2V0BQdTd2FwRmVlAOgHBBR1c2VyYmFsYW5jZXRvcmVjZWl2ZQkAZQIJAGUCBRRxdWFudGl0eW9mcHJpY2Vhc3NldAUQU3dhcEZlZXRvcmVjZWl2ZQUQU3dhcEZlZXRvcmVjZWl2ZQQYU3VtdXBvZlhUTlRvQXNzZXRTd2FwRmVlBAckbWF0Y2gwCQCaCAIFBHRoaXMJAKwCAgIZVG90YWxfU3dhcF9GZWVfQ29sbGVjdGVkXwUMRW50ZXJBc3NldElEAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBtOZXdTdW11cG9mWFROVG9Bc3NldFN3YXBGZWUJAGQCCQBkAgUYU3VtdXBvZlhUTlRvQXNzZXRTd2FwRmVlBRBTd2FwRmVldG9yZWNlaXZlBRBTd2FwRmVldG9yZWNlaXZlBBFTdW11cEFzc2V0QmFsYW5jZQQHJG1hdGNoMAkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwkA2AQBBQpYVE5Bc3NldElEAgFfBQxFbnRlckFzc2V0SUQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEFk5ld1N1bXVwb2ZBc3NldEJhbGFuY2UJAGQCCQBlAgURQ2hlY2tBc3NldEJhbGFuY2UFFHF1YW50aXR5b2ZwcmljZWFzc2V0BRBTd2FwRmVldG9yZWNlaXZlBA9TdW11cFhUTkJhbGFuY2UEByRtYXRjaDAJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8FDEVudGVyQXNzZXRJRAIBXwkA2AQBBQpYVE5Bc3NldElEAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBROZXdTdW11cG9mWFROQmFsYW5jZQkAZAIFD0NoZWNrWFROQmFsYW5jZQgFA3BtdAZhbW91bnQEBFRPUFQEByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgITVG90YWxfb2ZfUGFpcl9UeG5zXwUMRW50ZXJBc3NldElEAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABAZOZXdUUFQJAGQCBQRUT1BUAAEDCQECIT0CBRljaGVja3BhaXJpc2F2YWlsYWJsZW9ybm90BQxFbnRlckFzc2V0SUQJAAIBAitQYWlyIGlzIG5vdCBhdmFpbGFibGUgaW4gV2hpdGVsaXN0ZWQgQXNzZXQuAwkAAAIFDEVudGVyQXNzZXRJRAkA2AQBBQpYVE5Bc3NldElECQACAQJ3SW5wdXQgY2FuIE5ldmVyIGJlIGEgWFROIEFzc2V0SUQuIEVudGVyIFdoaXRlbGlzdGVkIEFzc2V0SUQgaW4gaW5wdXQgJiBBdHRhY2ggWFROIGFzIGFuIGF0dGFjaG1lbnQgVG9rZW4gaW4gcGF5bWVudFsxXS4DCQECIT0CCAUDcG10B2Fzc2V0SWQFClhUTkFzc2V0SUQJAAIBCQCsAgIJAKwCAgIPWW91IGNhbiBBdHRhY2ggCQDYBAEFClhUTkFzc2V0SUQCaSBhcyBhbiBBdHRhY2hlZCBQYXltZW50WzFdIHRvIFN3YXAgWFROIFRvIFJlcXVpcmVkIFRva2VuLiBBbnkgb3RoZXIgYXNzZXQgZWxzZSB0aGFuIFhUTiB3aWxsIGJlIHJlamVjdGVkLgMJAGYCAKCNBggFA3BtdAZhbW91bnQJAAIBAllZb3VyIEF0dGFjaGVkIFhUTiBBbW91bnQgaXMgdmVyeSBsb3cuIEF0dGFjaCBBdGxlYXN0IDAuMSBYVE4gdG8gQ2xhaW0gdGhlIG1pbmltdW0gVG9rZW5zLgMJAAACBQ9DaGVja1hUTkJhbGFuY2UAAAkAAgECZVN3YXAgUGFpciBOZWVkIHRvIEFkZCBMaXF1aWRpdHkgZmlyc3QgaW50byBQb29sLiBPbmx5IEFmdGVyIHRoYXQgUGFpciB3aWxsIGJlIGFjdGl2YXRlZCBmb3IgU3dhcHBpbmcuAwkAAAIFEUNoZWNrQXNzZXRCYWxhbmNlAAAJAAIBAmVTd2FwIFBhaXIgTmVlZCB0byBBZGQgTGlxdWlkaXR5IGZpcnN0IGludG8gUG9vbC4gT25seSBBZnRlciB0aGF0IFBhaXIgd2lsbCBiZSBhY3RpdmF0ZWQgZm9yIFN3YXBwaW5nLgMJAGYCBRRxdWFudGl0eW9mcHJpY2Vhc3NldAURQ2hlY2tBc3NldEJhbGFuY2UJAAIBCQCsAgIJAKwCAgIdUG9vbCBPbmx5IGhhcyBhIExpcXVpZGl0eSBvZiAJAKQDAQURQ2hlY2tBc3NldEJhbGFuY2UCISBUb2tlbnMuIEFkZCBMaXF1aWRpdHkgaW50byBQb29sLgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhlUb3RhbF9Td2FwX0ZlZV9Db2xsZWN0ZWRfBQxFbnRlckFzc2V0SUQFG05ld1N1bXVwb2ZYVE5Ub0Fzc2V0U3dhcEZlZQkAzAgCCQEMSW50ZWdlckVudHJ5AgILQ3VycmVudF9EYXkFCkN1cnJlbnRkYXkJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgITVG90YWxfb2ZfUGFpcl9UeG5zXwUMRW50ZXJBc3NldElEBQZOZXdUUFQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfCQDYBAEFClhUTkFzc2V0SUQCAV8FDEVudGVyQXNzZXRJRAUWTmV3U3VtdXBvZkFzc2V0QmFsYW5jZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8FDEVudGVyQXNzZXRJRAIBXwkA2AQBBQpYVE5Bc3NldElEBRROZXdTdW11cG9mWFROQmFsYW5jZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFFHVzZXJiYWxhbmNldG9yZWNlaXZlCQDZBAEFDEVudGVyQXNzZXRJRAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQlrZXkxb3duZXIJAGsDBRBTd2FwRmVldG9yZWNlaXZlAAEAAwkA2QQBBQxFbnRlckFzc2V0SUQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUJa2V5Mm93bmVyCQBrAwUQU3dhcEZlZXRvcmVjZWl2ZQABAAMJANkEAQUMRW50ZXJBc3NldElECQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCFRyZWFzdXJ5CQBrAwUQU3dhcEZlZXRvcmVjZWl2ZQABAAMJANkEAQUMRW50ZXJBc3NldElEBQNuaWwBaQEMQWRkTGlxdWlkaXR5AQxFbnRlckFzc2V0SUQEDWNhbGxlcmFkZHJlc3MJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQEcG10MQkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABARwbXQyCQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAEEGWNoZWNrcGFpcmlzYXZhaWxhYmxlb3Jub3QJAJ0IAgUEdGhpcwkArAICAghQYWlyX1VWXwUMRW50ZXJBc3NldElEBA5SZWlzc3VlYXNzZXRJZAkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICAgNMUF8FDEVudGVyQXNzZXRJRAIsTFAgVG9rZW4gaXMgTWlzc2luZyBvciBNYXkgYmUgbm90IEdlbmVyYXRlZC4ED0NoZWNrWFROQmFsYW5jZQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8FDEVudGVyQXNzZXRJRAIBXwkA2AQBBQpYVE5Bc3NldElEBBFDaGVja0Fzc2V0QmFsYW5jZQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8JANgEAQUKWFROQXNzZXRJRAIBXwUMRW50ZXJBc3NldElEBAxkZWNpbWFsc2luZm8JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFDEVudGVyQXNzZXRJRAkArAICCQCsAgICBkFzc2V0IAUMRW50ZXJBc3NldElEAg4gZG9lc24ndCBleGlzdAQIZGVjaW1hbHMIBQxkZWNpbWFsc2luZm8IZGVjaW1hbHMECkxQZGVjaW1hbHMJAGsDCQBkAgUIZGVjaW1hbHMABgABAAIECkZpcnN0TFBRdHkJAGgCAAEJAGwGAAoAAAUKTFBkZWNpbWFscwAAAAAFB0NFSUxJTkcEEG11bHRpcGx5X2Ftb3VudHMJAGsDCAUEcG10MQZhbW91bnQIBQRwbXQyBmFtb3VudAUKRmlyc3RMUFF0eQQHZ2V0U3FydAkBBHNxcnQEBRBtdWx0aXBseV9hbW91bnRzBQpMUGRlY2ltYWxzBQpMUGRlY2ltYWxzBQdDRUlMSU5HBBBYVE5Ib2xkaW5nSW5QYWlyBAckbWF0Y2gwCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfBQxFbnRlckFzc2V0SUQCAV8JANgEAQUKWFROQXNzZXRJRAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQTTmV3WFROSG9sZGluZ0luUGFpcgkAZAIFEFhUTkhvbGRpbmdJblBhaXIIBQRwbXQyBmFtb3VudAQSQXNzZXRIb2xkaW5nSW5QYWlyBAckbWF0Y2gwCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfCQDYBAEFClhUTkFzc2V0SUQCAV8FDEVudGVyQXNzZXRJRAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQVTmV3QXNzZXRIb2xkaW5nSW5QYWlyCQBkAgUSQXNzZXRIb2xkaW5nSW5QYWlyCAUEcG10MQZhbW91bnQEDUxQVG9rZW5Jc3N1ZWQEByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgIJVG90YWxfTFBfBQxFbnRlckFzc2V0SUQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEEE5ld0xQVG9rZW5Jc3N1ZWQJAGQCBQ1MUFRva2VuSXNzdWVkBQdnZXRTcXJ0AwkBAiE9AgUZY2hlY2twYWlyaXNhdmFpbGFibGVvcm5vdAUMRW50ZXJBc3NldElECQACAQIrUGFpciBpcyBub3QgYXZhaWxhYmxlIGluIFdoaXRlbGlzdGVkIEFzc2V0LgMJAAACBQxFbnRlckFzc2V0SUQJANgEAQUKWFROQXNzZXRJRAkAAgECkAFJbnB1dCBjYW4gTmV2ZXIgYmUgYSBYVE4gQXNzZXRJRC4gRW50ZXIgV2hpdGVsaXN0ZWQgQXNzZXRJRCBpbiBpbnB1dCBhcyB3ZWxsIGFzIGluIHBheW1lbnRbMV0gJiBBdHRhY2ggWFROIGFzIGFuIGF0dGFjaG1lbnQgVG9rZW4gaW4gcGF5bWVudFsyXS4DCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAIJAAIBAosBVHdvIGF0dGFjaGVkIGFzc2V0cyBhcmUgZXhwZWN0ZWQgaW4gcGF5bWVudC4gS2luZGx5IEF0dGFjaCBwYXltZW50MSA9IFRva2VuIHlvdSB3YW50IHRvIGFkZCBmb3IgTGlxdWlkaXR5ICYgcGF5bWVudDIgPSBBbW91bnQgb2YgWFROIFRva2VuLgMJAAACCAUEcG10MQdhc3NldElkBQpYVE5Bc3NldElECQACAQJ2WW91IEF0dGFjaGVkIFhUTiBhc3NldCBpbiBwYXltZW50WzFdLCBwbGVhc2UgYXR0YWNoIG9ubHkgd2hpdGVsaXN0ZWQgVG9rZW4gaW4gcGF5bWVudFsxXSBhbG9uZyB3aXRoIFhUTiBpbiBwYXltZW50WzJdLgMJAQIhPQIIBQRwbXQxB2Fzc2V0SWQJANkEAQUMRW50ZXJBc3NldElECQACAQJrSW5jb3JyZWN0IGFzc2V0IGF0dGFjaGVkIGZvciBMaXF1aWRpdHkgaW4gcGF5bWVudFsxXSwgcGxlYXNlIGF0dGFjaCBTdHJpbmcgQXNzZXQgb3IgV2hpdGVsaXN0ZWQgVG9rZW4gb25seS4DCQECIT0CCAUEcG10Mgdhc3NldElkBQpYVE5Bc3NldElECQACAQJpV3JvbmcgQXNzZXQgQXR0YWNoZWQgaW4gcGF5bWVudHNbMl0sIFBsZWFzZSBhdHRhY2ggcGF5bWVudFsxXSA9IExpcXVpZGl0eSBUb2tlbiAmIHBheW1lbnRbMl0gPSBYVE4gVG9rZW4uAwkAZgIAoI0GCAUEcG10MgZhbW91bnQJAAIBAlVwbGVhc2UgYXR0YWNoIGF0bGVhc3QgMC4xIFhUTiBpbiBwYXltZW50WzJdICYgRXF1aXZhbGVudCB3b3J0aCBvZiBUb2tlbiBpbiBwYXltZW50WzFdAwkAZgIAAQUHZ2V0U3FydAkAAgECS0xQIFRva2VuIE91dGNvbWUgaXMgZ29pbmcgYmVsb3cgMSBpbiBGcmFjdGlvbmFsLiBQbGVhc2UgQXR0YWNoIG1vcmUgYW1vdW50LgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8FDEVudGVyQXNzZXRJRAIBXwkA2AQBBQpYVE5Bc3NldElEBRNOZXdYVE5Ib2xkaW5nSW5QYWlyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwkA2AQBBQpYVE5Bc3NldElEAgFfBQxFbnRlckFzc2V0SUQFFU5ld0Fzc2V0SG9sZGluZ0luUGFpcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAglUb3RhbF9MUF8FDEVudGVyQXNzZXRJRAUQTmV3TFBUb2tlbklzc3VlZAkAzAgCCQEHUmVpc3N1ZQMFDlJlaXNzdWVhc3NldElkBQdnZXRTcXJ0BgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFB2dldFNxcnQFDlJlaXNzdWVhc3NldElkBQNuaWwBaQEPUmVtb3ZlTGlxdWlkaXR5AQxFbnRlckFzc2V0SUQEDWNhbGxlcmFkZHJlc3MJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQDcG10AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQkAkQMCCAUBaQhwYXltZW50cwAACQACAQI6Tm8gcGF5bWVudCBhdHRhY2hlZCwgUGxlYXNlIEF0dGFjaCBMUCBUb2tlbiBhcyBwYXltZW50WzFdLgQZY2hlY2twYWlyaXNhdmFpbGFibGVvcm5vdAkAnQgCBQR0aGlzCQCsAgICCFBhaXJfVVZfBQxFbnRlckFzc2V0SUQEElJlaXNzdWVhYmxlYXNzZXRJZAkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICAgNMUF8FDEVudGVyQXNzZXRJRAIlTFAgVG9rZW4gaXMgTWlzc2luZyBvciBub3QgR2VuZXJhdGVkLgQMZGVjaW1hbHNpbmZvCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQxFbnRlckFzc2V0SUQJAKwCAgkArAICAgZBc3NldCAFDEVudGVyQXNzZXRJRAIOIGRvZXNuJ3QgZXhpc3QECGRlY2ltYWxzCAUMZGVjaW1hbHNpbmZvCGRlY2ltYWxzBBJib3RoYXNzZXRzZGVjaW1hbHMJAGQCAAYFCGRlY2ltYWxzBA1zaGFyZWRlY2ltYWxzCQBpAgUSYm90aGFzc2V0c2RlY2ltYWxzAAIEEkNoZWNrVG90YWxMUEFtb3VudAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICAglUb3RhbF9MUF8FDEVudGVyQXNzZXRJRAQQVXNlckxQUGVyY2VudGFnZQkAbAYJAGsDCAUDcG10BmFtb3VudAkAbAYACgAAAAgAAAAABQdDRUlMSU5HBRJDaGVja1RvdGFsTFBBbW91bnQABgABAAAABgUHQ0VJTElORwQPQ2hlY2tYVE5CYWxhbmNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwUMRW50ZXJBc3NldElEAgFfCQDYBAEFClhUTkFzc2V0SUQEEUNoZWNrQXNzZXRCYWxhbmNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwkA2AQBBQpYVE5Bc3NldElEAgFfBQxFbnRlckFzc2V0SUQEDlVzZXJMUFdvcnRoWFROCQBrAwUPQ2hlY2tYVE5CYWxhbmNlBRBVc2VyTFBQZXJjZW50YWdlCQBsBgAKAAAACAAAAAAFB0NFSUxJTkcEEFVzZXJMUFdvcnRoQXNzZXQJAGsDBRFDaGVja0Fzc2V0QmFsYW5jZQUQVXNlckxQUGVyY2VudGFnZQkAbAYACgAAAAgAAAAABQdDRUlMSU5HBBBYVE5Ib2xkaW5nSW5QYWlyBAckbWF0Y2gwCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgICC0JhbGFuY2Vfb2ZfBQxFbnRlckFzc2V0SUQCAV8JANgEAQUKWFROQXNzZXRJRAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAQTTmV3WFROSG9sZGluZ0luUGFpcgkAZQIFEFhUTkhvbGRpbmdJblBhaXIFDlVzZXJMUFdvcnRoWFROBBJBc3NldEhvbGRpbmdJblBhaXIEByRtYXRjaDAJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8JANgEAQUKWFROQXNzZXRJRAIBXwUMRW50ZXJBc3NldElEAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAABBVOZXdBc3NldEhvbGRpbmdJblBhaXIJAGUCBRJBc3NldEhvbGRpbmdJblBhaXIFEFVzZXJMUFdvcnRoQXNzZXQEDUxQVG9rZW5Jc3N1ZWQEByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgIJVG90YWxfTFBfBQxFbnRlckFzc2V0SUQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAEEE5ld0xQVG9rZW5Jc3N1ZWQJAGUCBQ1MUFRva2VuSXNzdWVkCAUDcG10BmFtb3VudAMJAQIhPQIFGWNoZWNrcGFpcmlzYXZhaWxhYmxlb3Jub3QFDEVudGVyQXNzZXRJRAkAAgECI1BhaXIgaXMgbm90IGF2YWlsYWJsZSBpbiBXaGl0ZWxpc3QuAwkAAAIJANkEAQUMRW50ZXJBc3NldElEBQpYVE5Bc3NldElECQACAQJqRG9uJ3QgY2hvb3NlIFhUTiBBc3NldElEIGFzIElucHV0LCBPbmx5IFdoaXRlbGlzdGVkIEFzc2V0IGFzIElucHV0IFN0cmluZyAmIEF0dGFjaCBMUCBUb2tlbnMgYXMgcGF5bWVudFsxXQMJAQIhPQIIBQNwbXQHYXNzZXRJZAUSUmVpc3N1ZWFibGVhc3NldElkCQACAQJHV3JvbmcgQXNzZXQgaXMgYXR0YWNoZWQgaW4gcGF5bWVudFsxXSBvciBMUCBUb2tlbiBOb3QgRm91bmQgb3IgTWlzc2luZy4DCQBmAgABBRBVc2VyTFBQZXJjZW50YWdlCQACAQIuWW91ciBMUCBUb2tlbiBhbW91bnQgJSBpcyB2ZXJ5IGxvdyB0byBjb252ZXJ0LgMJAGYCAAEFDlVzZXJMUFdvcnRoWFROCQACAQJRWW91ciBMUCBUb2tlbiBjb252ZXJzaW9uIGFtb3VudCBpcyB2ZXJ5IGxvdyB0byBjb252ZXJ0IG9yIGxlc3MgdGhhbiAwLjAwMDAwMSBYVE4uAwkAZgIAAQUQVXNlckxQV29ydGhBc3NldAkAAgECXFlvdXIgTFAgVG9rZW4gY29udmVyc2lvbiBhbW91bnQgaXMgdmVyeSBsb3cgdG8gY29udmVydCBvciBsZXNzIHRoYW4gZnJhY3Rpb24gdmFsdWUgb2YgVG9rZW4uCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhZXaXRoZHJhd19MUF9QZXJjZW50YWdlBRBVc2VyTFBQZXJjZW50YWdlCQDMCAIJAQRCdXJuAgUSUmVpc3N1ZWFibGVhc3NldElkCAUDcG10BmFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAglUb3RhbF9MUF8FDEVudGVyQXNzZXRJRAUQTmV3TFBUb2tlbklzc3VlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgILQmFsYW5jZV9vZl8FDEVudGVyQXNzZXRJRAIBXwkA2AQBBQpYVE5Bc3NldElEBRNOZXdYVE5Ib2xkaW5nSW5QYWlyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICAgtCYWxhbmNlX29mXwkA2AQBBQpYVE5Bc3NldElEAgFfBQxFbnRlckFzc2V0SUQFFU5ld0Fzc2V0SG9sZGluZ0luUGFpcgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFDlVzZXJMUFdvcnRoWFROBQpYVE5Bc3NldElECQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUQVXNlckxQV29ydGhBc3NldAkA2QQBBQxFbnRlckFzc2V0SUQFA25pbAECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXnPGnma", "height": 2769646, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: A3yxCaHfqzoeiHbpCUaEYTUczcuCH37XL3VjM2iK8JDA Next: 7h3EJoYjUKWyNgMMNEdhmMtSrf82AhaC8DWqP4dUQSVr Diff:
OldNewDifferences
130130 then throw((("Your Attached Asset Amount is very low. Attach More " + l) + " Tokens to Claim the minimum Amount of 0.1 dollar atleast."))
131131 else if ((I > F))
132132 then throw((("Pool Only has a Liquidity of " + toString((F / pow(10, 0, 6, 0, 0, CEILING)))) + " XTN. Add Liquidity into Pool."))
133- else [IntegerEntry(((("Total_Swap_Fee_Collected_" + l) + "_") + toBase58String(g)), Q), IntegerEntry("Current_Day", K), IntegerEntry(("Total_of_Pair_Txns_" + l), W), IntegerEntry(((("Balance_of_" + toBase58String(g)) + "_") + l), S), IntegerEntry(((("Balance_of_" + l) + "_") + toBase58String(g)), U), ScriptTransfer(k.caller, M, g), ScriptTransfer(d, fraction(L, 1, 2), g), ScriptTransfer(e, fraction(L, 1, 2), g)]
133+ else [IntegerEntry(((("Total_Swap_Fee_Collected_" + l) + "_") + toBase58String(g)), Q), IntegerEntry("Current_Day", K), IntegerEntry(("Total_of_Pair_Txns_" + l), W), IntegerEntry(((("Balance_of_" + toBase58String(g)) + "_") + l), S), IntegerEntry(((("Balance_of_" + l) + "_") + toBase58String(g)), U), ScriptTransfer(k.caller, M, g), ScriptTransfer(d, fraction(L, 1, 3), g), ScriptTransfer(e, fraction(L, 1, 3), g), ScriptTransfer(f, fraction(L, 1, 3), g)]
134134 }
135135
136136
204204 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
205205 else if ((I > G))
206206 then throw((("Pool Only has a Liquidity of " + toString(G)) + " Tokens. Add Liquidity into Pool."))
207- else [IntegerEntry(("Total_Swap_Fee_Collected_" + l), Z), IntegerEntry("Current_Day", K), IntegerEntry(("Total_of_Pair_Txns_" + l), W), IntegerEntry(((("Balance_of_" + toBase58String(g)) + "_") + l), S), IntegerEntry(((("Balance_of_" + l) + "_") + toBase58String(g)), U), ScriptTransfer(k.caller, M, fromBase58String(l)), ScriptTransfer(d, fraction(L, 1, 2), fromBase58String(l)), ScriptTransfer(e, fraction(L, 1, 2), fromBase58String(l))]
207+ else [IntegerEntry(("Total_Swap_Fee_Collected_" + l), Z), IntegerEntry("Current_Day", K), IntegerEntry(("Total_of_Pair_Txns_" + l), W), IntegerEntry(((("Balance_of_" + toBase58String(g)) + "_") + l), S), IntegerEntry(((("Balance_of_" + l) + "_") + toBase58String(g)), U), ScriptTransfer(k.caller, M, fromBase58String(l)), ScriptTransfer(d, fraction(L, 1, 3), fromBase58String(l)), ScriptTransfer(e, fraction(L, 1, 3), fromBase58String(l)), ScriptTransfer(f, fraction(L, 1, 3), fromBase58String(l))]
208208 }
209209
210210
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "1.0.0"
55
66 let b = 1694928600000
77
88 let c = 1400000000
99
1010 let d = addressFromPublicKey(base58'4Dahqn4MYNrieo9AX8qLWNCseBQNc9skQY81h4DFoote')
1111
1212 let e = addressFromPublicKey(base58'4Dahqn4MYNrieo9AX8qLWNCseBQNc9skQY81h4DFoote')
1313
1414 let f = addressFromPublicKey(base58'EtFSDsn89XfmXQvuQXPQMbLDbaAZ1YWYZHksptpQH4gp')
1515
1616 let g = base58'Zn3cLHW7aAVPm5aACcTjvg7e7iEy2cKDtbowok5qa9H'
1717
1818 func h () = {
1919 let i = (lastBlock.timestamp - b)
2020 let j = fraction(1, i, 86400000)
2121 j
2222 }
2323
2424
2525 @Callable(k)
2626 func RegisterPair (l) = {
2727 let m = value(k.payments[0])
2828 let n = value(k.payments[1])
2929 let o = value(k.payments[2])
3030 let p = toBase58String(k.caller.bytes)
3131 let q = !(isDefined(n.assetId))
3232 let r = getString(this, ("Pair_UV_" + l))
3333 let s = fromBase58String(l)
3434 let t = valueOrErrorMessage(assetInfo(fromBase58String(l)), (("Asset " + l) + " doesn't exist"))
3535 let u = t.name
3636 let v = t.decimals
3737 let w = fraction((v + 6), 1, 2)
3838 let x = (1 * pow(10, 0, w, 0, 0, CEILING))
3939 let y = fraction(m.amount, n.amount, x)
4040 let z = sqrt(y, w, w, CEILING)
4141 let A = Issue((("LP-" + take(u, 8)) + "-XTN"), (((("LP-" + u) + "-XTN") + " is a Liquidity Provider Token Issued Against ") + l), z, w, true)
4242 let B = calculateAssetId(A)
4343 if ((r == l))
4444 then throw("Pair Already Exist in List.")
4545 else if ((size(k.payments) != 3))
4646 then throw((("Two attached assets expected as payment. Kindly Attach payment1 = XTN Token & payment2 = Token you want to List & payment3 = [" + toString(c)) + "/10^8] Waves."))
4747 else if ((m.assetId != g))
4848 then throw("Incorrect asset attached as payment[1], please attach XTN only.")
4949 else if ((100000 > m.amount))
5050 then throw("Attached payment[1] amount is less than 0.1 XTN, please attach 0.1 XTN Minimum.")
5151 else if ((n.assetId != s))
5252 then throw("Input String & Attached AssetID in payment2 is not matching.")
5353 else if ((o.amount != c))
5454 then throw((("Attached payment[3] amount has to be exact [" + toString(c)) + "/10^8] WAVES."))
5555 else if ((q == true))
5656 then throw("You Attached WAVES Asset ID for Listing, please attach Tokens You want to list in payment[2].")
5757 else [StringEntry(("Pair_UV_" + l), l), IntegerEntry(("Listing_Fee_" + l), o.amount), IntegerEntry(((("Balance_of_" + l) + "_") + toBase58String(g)), m.amount), IntegerEntry(((("Balance_of_" + toBase58String(g)) + "_") + l), n.amount), IntegerEntry(("Total_of_Pair_Txns_" + l), 0), IntegerEntry(((("Total_Swap_Fee_Collected_" + l) + "_") + toBase58String(g)), 0), IntegerEntry(("Total_Swap_Fee_Collected_" + l), 0), A, ScriptTransfer(k.caller, z, B), ScriptTransfer(d, fraction(c, 1, 2), unit), ScriptTransfer(e, fraction(c, 1, 2), unit), StringEntry(("LP_" + l), toBase58String(B)), IntegerEntry(("Total_LP_" + l), z)]
5858 }
5959
6060
6161
6262 @Callable(k)
6363 func SwapAssetToXTNPairEntry (l) = {
6464 let C = toBase58String(k.caller.bytes)
6565 let D = if ((size(k.payments) == 1))
6666 then k.payments[0]
6767 else throw("Whitelisted Token is required as Attached payment[1].")
6868 let E = getString(this, ("Pair_UV_" + l))
6969 let F = getIntegerValue(this, ((("Balance_of_" + l) + "_") + toBase58String(g)))
7070 let G = getIntegerValue(this, ((("Balance_of_" + toBase58String(g)) + "_") + l))
7171 let H = fraction(F, G, (G + D.amount))
7272 let I = (F - H)
7373 let J = 5
7474 let K = h()
7575 let L = ((I * J) / 1000)
7676 let M = ((I - L) - L)
7777 let N = {
7878 let O = getInteger(this, ((("Total_Swap_Fee_Collected_" + l) + "_") + toBase58String(g)))
7979 if ($isInstanceOf(O, "Int"))
8080 then {
8181 let P = O
8282 P
8383 }
8484 else 0
8585 }
8686 let Q = ((N + L) + L)
8787 let R = {
8888 let O = getInteger(this, ((("Balance_of_" + toBase58String(g)) + "_") + l))
8989 if ($isInstanceOf(O, "Int"))
9090 then {
9191 let P = O
9292 P
9393 }
9494 else 0
9595 }
9696 let S = (G + D.amount)
9797 let T = {
9898 let O = getInteger(this, ((("Balance_of_" + l) + "_") + toBase58String(g)))
9999 if ($isInstanceOf(O, "Int"))
100100 then {
101101 let P = O
102102 P
103103 }
104104 else 0
105105 }
106106 let U = ((F - I) + L)
107107 let V = {
108108 let O = getIntegerValue(this, ("Total_of_Pair_Txns_" + l))
109109 if ($isInstanceOf(O, "Int"))
110110 then {
111111 let P = O
112112 P
113113 }
114114 else 0
115115 }
116116 let W = (V + 1)
117117 if ((l == toBase58String(g)))
118118 then throw("Input can Never be a XTN AssetID. Enter Whitelisted AssetID in input & Attach Whitelisted Asset as an attachment Token in payment[1].")
119119 else if ((E != l))
120120 then throw("Pair is not available in Whitelisted Asset.")
121121 else if ((D.assetId == g))
122122 then throw("You can't Attach XTN as an Attached Payment. Only Whitelisted Tokens are accepted.")
123123 else if ((D.assetId != fromBase58String(l)))
124124 then throw(("Incorrect asset attached, please attach or send " + l))
125125 else if ((F == 0))
126126 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
127127 else if ((G == 0))
128128 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
129129 else if ((100000 > I))
130130 then throw((("Your Attached Asset Amount is very low. Attach More " + l) + " Tokens to Claim the minimum Amount of 0.1 dollar atleast."))
131131 else if ((I > F))
132132 then throw((("Pool Only has a Liquidity of " + toString((F / pow(10, 0, 6, 0, 0, CEILING)))) + " XTN. Add Liquidity into Pool."))
133- else [IntegerEntry(((("Total_Swap_Fee_Collected_" + l) + "_") + toBase58String(g)), Q), IntegerEntry("Current_Day", K), IntegerEntry(("Total_of_Pair_Txns_" + l), W), IntegerEntry(((("Balance_of_" + toBase58String(g)) + "_") + l), S), IntegerEntry(((("Balance_of_" + l) + "_") + toBase58String(g)), U), ScriptTransfer(k.caller, M, g), ScriptTransfer(d, fraction(L, 1, 2), g), ScriptTransfer(e, fraction(L, 1, 2), g)]
133+ else [IntegerEntry(((("Total_Swap_Fee_Collected_" + l) + "_") + toBase58String(g)), Q), IntegerEntry("Current_Day", K), IntegerEntry(("Total_of_Pair_Txns_" + l), W), IntegerEntry(((("Balance_of_" + toBase58String(g)) + "_") + l), S), IntegerEntry(((("Balance_of_" + l) + "_") + toBase58String(g)), U), ScriptTransfer(k.caller, M, g), ScriptTransfer(d, fraction(L, 1, 3), g), ScriptTransfer(e, fraction(L, 1, 3), g), ScriptTransfer(f, fraction(L, 1, 3), g)]
134134 }
135135
136136
137137
138138 @Callable(k)
139139 func SwapXTNToAssetPairEntry (l) = {
140140 let C = toBase58String(k.caller.bytes)
141141 let D = if ((size(k.payments) == 1))
142142 then k.payments[0]
143143 else throw((("Only " + toBase58String(g)) + " XTN Token is required as an Attached payment[1]."))
144144 let F = getIntegerValue(this, ((("Balance_of_" + l) + "_") + toBase58String(g)))
145145 let G = getIntegerValue(this, ((("Balance_of_" + toBase58String(g)) + "_") + l))
146146 let X = fraction(F, G, (F + D.amount))
147147 let I = (G - X)
148148 let E = getString(this, ("Pair_UV_" + l))
149149 let J = 5
150150 let K = h()
151151 let L = ((I * J) / 1000)
152152 let M = ((I - L) - L)
153153 let Y = {
154154 let O = getInteger(this, ("Total_Swap_Fee_Collected_" + l))
155155 if ($isInstanceOf(O, "Int"))
156156 then {
157157 let P = O
158158 P
159159 }
160160 else 0
161161 }
162162 let Z = ((Y + L) + L)
163163 let R = {
164164 let O = getInteger(this, ((("Balance_of_" + toBase58String(g)) + "_") + l))
165165 if ($isInstanceOf(O, "Int"))
166166 then {
167167 let P = O
168168 P
169169 }
170170 else 0
171171 }
172172 let S = ((G - I) + L)
173173 let T = {
174174 let O = getInteger(this, ((("Balance_of_" + l) + "_") + toBase58String(g)))
175175 if ($isInstanceOf(O, "Int"))
176176 then {
177177 let P = O
178178 P
179179 }
180180 else 0
181181 }
182182 let U = (F + D.amount)
183183 let V = {
184184 let O = getIntegerValue(this, ("Total_of_Pair_Txns_" + l))
185185 if ($isInstanceOf(O, "Int"))
186186 then {
187187 let P = O
188188 P
189189 }
190190 else 0
191191 }
192192 let W = (V + 1)
193193 if ((E != l))
194194 then throw("Pair is not available in Whitelisted Asset.")
195195 else if ((l == toBase58String(g)))
196196 then throw("Input can Never be a XTN AssetID. Enter Whitelisted AssetID in input & Attach XTN as an attachment Token in payment[1].")
197197 else if ((D.assetId != g))
198198 then throw((("You can Attach " + toBase58String(g)) + " as an Attached Payment[1] to Swap XTN To Required Token. Any other asset else than XTN will be rejected."))
199199 else if ((100000 > D.amount))
200200 then throw("Your Attached XTN Amount is very low. Attach Atleast 0.1 XTN to Claim the minimum Tokens.")
201201 else if ((F == 0))
202202 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
203203 else if ((G == 0))
204204 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
205205 else if ((I > G))
206206 then throw((("Pool Only has a Liquidity of " + toString(G)) + " Tokens. Add Liquidity into Pool."))
207- else [IntegerEntry(("Total_Swap_Fee_Collected_" + l), Z), IntegerEntry("Current_Day", K), IntegerEntry(("Total_of_Pair_Txns_" + l), W), IntegerEntry(((("Balance_of_" + toBase58String(g)) + "_") + l), S), IntegerEntry(((("Balance_of_" + l) + "_") + toBase58String(g)), U), ScriptTransfer(k.caller, M, fromBase58String(l)), ScriptTransfer(d, fraction(L, 1, 2), fromBase58String(l)), ScriptTransfer(e, fraction(L, 1, 2), fromBase58String(l))]
207+ else [IntegerEntry(("Total_Swap_Fee_Collected_" + l), Z), IntegerEntry("Current_Day", K), IntegerEntry(("Total_of_Pair_Txns_" + l), W), IntegerEntry(((("Balance_of_" + toBase58String(g)) + "_") + l), S), IntegerEntry(((("Balance_of_" + l) + "_") + toBase58String(g)), U), ScriptTransfer(k.caller, M, fromBase58String(l)), ScriptTransfer(d, fraction(L, 1, 3), fromBase58String(l)), ScriptTransfer(e, fraction(L, 1, 3), fromBase58String(l)), ScriptTransfer(f, fraction(L, 1, 3), fromBase58String(l))]
208208 }
209209
210210
211211
212212 @Callable(k)
213213 func AddLiquidity (l) = {
214214 let C = toBase58String(k.caller.bytes)
215215 let m = value(k.payments[0])
216216 let n = value(k.payments[1])
217217 let E = getString(this, ("Pair_UV_" + l))
218218 let aa = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + l)), "LP Token is Missing or May be not Generated."))
219219 let F = getIntegerValue(this, ((("Balance_of_" + l) + "_") + toBase58String(g)))
220220 let G = getIntegerValue(this, ((("Balance_of_" + toBase58String(g)) + "_") + l))
221221 let ab = valueOrErrorMessage(assetInfo(fromBase58String(l)), (("Asset " + l) + " doesn't exist"))
222222 let v = ab.decimals
223223 let w = fraction((v + 6), 1, 2)
224224 let x = (1 * pow(10, 0, w, 0, 0, CEILING))
225225 let y = fraction(m.amount, n.amount, x)
226226 let z = sqrt(y, w, w, CEILING)
227227 let ac = {
228228 let O = getInteger(this, ((("Balance_of_" + l) + "_") + toBase58String(g)))
229229 if ($isInstanceOf(O, "Int"))
230230 then {
231231 let P = O
232232 P
233233 }
234234 else 0
235235 }
236236 let ad = (ac + n.amount)
237237 let ae = {
238238 let O = getInteger(this, ((("Balance_of_" + toBase58String(g)) + "_") + l))
239239 if ($isInstanceOf(O, "Int"))
240240 then {
241241 let P = O
242242 P
243243 }
244244 else 0
245245 }
246246 let af = (ae + m.amount)
247247 let ag = {
248248 let O = getIntegerValue(this, ("Total_LP_" + l))
249249 if ($isInstanceOf(O, "Int"))
250250 then {
251251 let P = O
252252 P
253253 }
254254 else 0
255255 }
256256 let ah = (ag + z)
257257 if ((E != l))
258258 then throw("Pair is not available in Whitelisted Asset.")
259259 else if ((l == toBase58String(g)))
260260 then throw("Input can Never be a XTN AssetID. Enter Whitelisted AssetID in input as well as in payment[1] & Attach XTN as an attachment Token in payment[2].")
261261 else if ((size(k.payments) != 2))
262262 then throw("Two attached assets are expected in payment. Kindly Attach payment1 = Token you want to add for Liquidity & payment2 = Amount of XTN Token.")
263263 else if ((m.assetId == g))
264264 then throw("You Attached XTN asset in payment[1], please attach only whitelisted Token in payment[1] along with XTN in payment[2].")
265265 else if ((m.assetId != fromBase58String(l)))
266266 then throw("Incorrect asset attached for Liquidity in payment[1], please attach String Asset or Whitelisted Token only.")
267267 else if ((n.assetId != g))
268268 then throw("Wrong Asset Attached in payments[2], Please attach payment[1] = Liquidity Token & payment[2] = XTN Token.")
269269 else if ((100000 > n.amount))
270270 then throw("please attach atleast 0.1 XTN in payment[2] & Equivalent worth of Token in payment[1]")
271271 else if ((1 > z))
272272 then throw("LP Token Outcome is going below 1 in Fractional. Please Attach more amount.")
273273 else [IntegerEntry(((("Balance_of_" + l) + "_") + toBase58String(g)), ad), IntegerEntry(((("Balance_of_" + toBase58String(g)) + "_") + l), af), IntegerEntry(("Total_LP_" + l), ah), Reissue(aa, z, true), ScriptTransfer(k.caller, z, aa)]
274274 }
275275
276276
277277
278278 @Callable(k)
279279 func RemoveLiquidity (l) = {
280280 let C = toBase58String(k.caller.bytes)
281281 let D = if ((size(k.payments) == 1))
282282 then k.payments[0]
283283 else throw("No payment attached, Please Attach LP Token as payment[1].")
284284 let E = getString(this, ("Pair_UV_" + l))
285285 let ai = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + l)), "LP Token is Missing or not Generated."))
286286 let ab = valueOrErrorMessage(assetInfo(fromBase58String(l)), (("Asset " + l) + " doesn't exist"))
287287 let v = ab.decimals
288288 let aj = (6 + v)
289289 let ak = (aj / 2)
290290 let al = getIntegerValue(this, ("Total_LP_" + l))
291291 let am = pow(fraction(D.amount, pow(10, 0, 8, 0, 0, CEILING), al), 6, 1, 0, 6, CEILING)
292292 let F = getIntegerValue(this, ((("Balance_of_" + l) + "_") + toBase58String(g)))
293293 let G = getIntegerValue(this, ((("Balance_of_" + toBase58String(g)) + "_") + l))
294294 let an = fraction(F, am, pow(10, 0, 8, 0, 0, CEILING))
295295 let ao = fraction(G, am, pow(10, 0, 8, 0, 0, CEILING))
296296 let ac = {
297297 let O = getInteger(this, ((("Balance_of_" + l) + "_") + toBase58String(g)))
298298 if ($isInstanceOf(O, "Int"))
299299 then {
300300 let P = O
301301 P
302302 }
303303 else 0
304304 }
305305 let ad = (ac - an)
306306 let ae = {
307307 let O = getInteger(this, ((("Balance_of_" + toBase58String(g)) + "_") + l))
308308 if ($isInstanceOf(O, "Int"))
309309 then {
310310 let P = O
311311 P
312312 }
313313 else 0
314314 }
315315 let af = (ae - ao)
316316 let ag = {
317317 let O = getIntegerValue(this, ("Total_LP_" + l))
318318 if ($isInstanceOf(O, "Int"))
319319 then {
320320 let P = O
321321 P
322322 }
323323 else 0
324324 }
325325 let ah = (ag - D.amount)
326326 if ((E != l))
327327 then throw("Pair is not available in Whitelist.")
328328 else if ((fromBase58String(l) == g))
329329 then throw("Don't choose XTN AssetID as Input, Only Whitelisted Asset as Input String & Attach LP Tokens as payment[1]")
330330 else if ((D.assetId != ai))
331331 then throw("Wrong Asset is attached in payment[1] or LP Token Not Found or Missing.")
332332 else if ((1 > am))
333333 then throw("Your LP Token amount % is very low to convert.")
334334 else if ((1 > an))
335335 then throw("Your LP Token conversion amount is very low to convert or less than 0.000001 XTN.")
336336 else if ((1 > ao))
337337 then throw("Your LP Token conversion amount is very low to convert or less than fraction value of Token.")
338338 else [IntegerEntry("Withdraw_LP_Percentage", am), Burn(ai, D.amount), IntegerEntry(("Total_LP_" + l), ah), IntegerEntry(((("Balance_of_" + l) + "_") + toBase58String(g)), ad), IntegerEntry(((("Balance_of_" + toBase58String(g)) + "_") + l), af), ScriptTransfer(k.caller, an, g), ScriptTransfer(k.caller, ao, fromBase58String(l))]
339339 }
340340
341341
342342 @Verifier(ap)
343343 func aq () = sigVerify(ap.bodyBytes, ap.proofs[0], ap.senderPublicKey)
344344

github/deemru/w8io/169f3d6 
63.93 ms