tx · DWd19sRQVW28nWeR6Vg23m2B7BMqNgYbJZunMhWUzDkS

3MshBTYYGc24JWzE2aYEktiz5KzeNQGA4GV:  -0.01400000 Waves

2021.08.23 23:02 [1671428] smart account 3MshBTYYGc24JWzE2aYEktiz5KzeNQGA4GV > SELF 0.00000000 Waves

{ "type": 13, "id": "DWd19sRQVW28nWeR6Vg23m2B7BMqNgYbJZunMhWUzDkS", "fee": 1400000, "feeAssetId": null, "timestamp": 1629749014570, "version": 2, "chainId": 84, "sender": "3MshBTYYGc24JWzE2aYEktiz5KzeNQGA4GV", "senderPublicKey": "GKmJ6BchUgQfwKp4mp5eX8Y9xLioYRm6e1gDfFgdAcCr", "proofs": [ "6ssFwn4LgSsMuFY3CciHxuXTkHcipifGeXet4gX9UAfYtS8FvVpJ2jAbDinmXUoqhrxPDXQQS4ed1UL6RdrEdiS" ], "script": "base64:AAIEAAAAAAAAACsIAhIFCgMIAQESABIAEgMKAQgSAwoBCBIDCgEIEgMKAQgSAwoBCBIDCgEIAAAAAAAAAAkAAAABaQEAAAAVUmVnaXN0ZXJQYWlyRm9yVm90aW5nAAAAAwAAAAhBc3NldElEMQAAAARkYXlzAAAADExpc3RpbmdQcmljZQQAAAAEcG10MQkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAEcG10MgkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQQAAAAKRmVlQWRkcmVzcwEAAAAg463XstSKNtaiPAMTm2AWTDVjxzAiveOx6Vx7CmnuvCMEAAAAEW1heGltdW12b3RpbmdkYXlzAAAAAAAAAABaBAAAAA1CYWxsZXRBc3NldElEAQAAACAtb1sBuZ3lSm8ahGink+4TF5YYAu/xRHYwe1h195OooAQAAAALVVNEVEFzc2V0SUQBAAAAIO1uns5hlJz9zuYakh0t3uLmLZDCTZgfB7wEww+WnHxxBAAAAApjdXJyZW50S2V5CQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAAlROCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAEcG10MgAAAAdhc3NldElkBAAAAAZvbmVkYXkAAAAAAAAABaAEAAAADk5vT2ZEYXlzQmxvY2tzCQAAaAAAAAIFAAAABm9uZWRheQUAAAAEZGF5cwQAAAADZ2FwCQAAZQAAAAIFAAAADk5vT2ZEYXlzQmxvY2tzAAAAAAAAAKi/BAAAAA12b3Rlc3JlcXVpcmVkCQAAaAAAAAIJAABkAAAAAgAAAAAAAAGGoAkAAGkAAAACCQAAaAAAAAIAAAAAAAAALTYFAAAAA2dhcAAAAAAAAAAnEAAAAAAABfXhAAQAAAAMdm90aW5nRXhwaXJlCQAAZAAAAAIFAAAABmhlaWdodAUAAAAOTm9PZkRheXNCbG9ja3MEAAAACWZldGNocGFpcgkABB0AAAACBQAAAAR0aGlzCQABLAAAAAICAAAAElBhaXJfVW5kZXJfVm90aW5nXwUAAAAIQXNzZXRJRDEEAAAADHZvdGluZ3N0YXR1cwIAAAAERmFpbAQAAAANYXNzZXRpbmZvcG10MgkAAlkAAAABBQAAAAhBc3NldElEMQQAAAAMcmV2ZXJzZXByaWNlCQAAawAAAAMAAAAAAAAAAAEAAAAA6NSlEAAFAAAADExpc3RpbmdQcmljZQMJAABmAAAAAgAAAAAAAAAAKwkAATEAAAABBQAAAAhBc3NldElEMQkAAAIAAAABAgAAAHlXcm9uZyBBc3NldElEMSBpcyBFbnRlcmVkIGZvciBWb3RpbmcuIFBsZWFzZSBFbnRlciBhIFZhbGlkIEFzc2V0SUQxLiBQcm9iYWJseSB5b3UgZW50ZXJlZCBhbiBBU1NFVElEMSBsZXNzIHRoYW4gNDMgQ2hhcnMuAwkAAGcAAAACAAAAAAAAAAAdBQAAAARkYXlzCQAAAgAAAAECAAAAJkVudGVyIG5vLiBvZiBkYXlzIGluIGJldHdlZW4gMzAgdG8gOTAuAwkAAGYAAAACBQAAAARkYXlzBQAAABFtYXhpbXVtdm90aW5nZGF5cwkAAAIAAAABAgAAAE1Zb3UgRW50ZXJlZCBkYXlzIGdyZWF0ZXIgdGhhbiA5MCBwbGVhc2UgRW50ZXIgbm8uIG9mIGRheXMgaW4gYmV0d2VlbiAxIHRvIDkwLgMJAAAAAAAAAgUAAAAJZmV0Y2hwYWlyBQAAAAhBc3NldElEMQkAAAIAAAABAgAAACJQYWlyIEFscmVhZHkgRXhpc3QgaW4gVm90aW5nIExpc3QuAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAgkAAAIAAAABAgAAAIdUd28gYXR0YWNoZWQgYXNzZXRzIGV4cGVjdGVkIGFzIHBheW1lbnQuIEtpbmRseSBBdHRhY2ggcGF5bWVudDEgPSBCYWxsZXQgVG9rZW4gYW5kIHBheW1lbnQyID0gVG9rZW4geW91IHdhbnQgdG8gYWRkIHRvIExpc3QgZm9yIFZvdGluZy4DCQEAAAACIT0AAAACCAUAAAAEcG10MQAAAAdhc3NldElkBQAAAA1CYWxsZXRBc3NldElECQAAAgAAAAECAAAAWEluY29ycmVjdCBhc3NldCBhdHRhY2hlZCBmb3IgVm90aW5nIGluIHBheW1lbnRbMV0sIHBsZWFzZSBhdHRhY2ggMTAwMCBCYWxsZXQgVG9rZW4gb25seS4DCQAAZgAAAAIAAAAAAACYloAIBQAAAARwbXQxAAAABmFtb3VudAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAEllvdSBhdHRhY2hlZCBvbmx5IAkAAaQAAAABCQAAawAAAAMIBQAAAARwbXQxAAAABmFtb3VudAAAAAAAAAAAAQAAAAAABfXhAAIAAAABLgkAAaQAAAABCQAAawAAAAMIBQAAAARwbXQxAAAABmFtb3VudAAAAAAAAAAAAQAAAAAAAJiWgAIAAABHIEJhbGxldCBmb3IgVm90aW5nIGluIHBheW1lbnRbMV0sIHBsZWFzZSBhdHRhY2ggMTAwMCBCYWxsZXQgVG9rZW4gb25seS4DCQEAAAACIT0AAAACCAUAAAAEcG10MgAAAAdhc3NldElkBQAAAA1hc3NldGluZm9wbXQyCQAAAgAAAAECAAAASEFzc2V0IFN0cmluZyBBdHRhY2hlZCBpbiBBU1NFVElEMSBpcyBub3QgbWF0Y2hpbmcgd2l0aCBQYXltZW50MiBBc3NldElELgMJAAAAAAAAAgUAAAACVE4GCQAAAgAAAAECAAAAXFlvdSBBdHRhY2hlZCBUTiBBc3NldCBJRCBmb3IgVm90aW5nLCBwbGVhc2UgYXR0YWNoIHRoZSBUb2tlbiBZb3Ugd2FudCB0byBsaXN0IGluIHBheW1lbnRbMl0uAwkAAAAAAAACCAUAAAAEcG10MgAAAAdhc3NldElkBQAAAA1CYWxsZXRBc3NldElECQAAAgAAAAECAAAAbllvdSBBdHRhY2hlZCBCYWxsZXQgYXNzZXQgZm9yIFZvdGluZyBpbiBib3RoIHBheW1lbnRzLCBwbGVhc2UgYXR0YWNoIHRoZSBUb2tlbiBZb3Ugd2FudCB0byBsaXN0IGluIHBheW1lbnRbMl0uAwkAAGcAAAACAAAAAAAAAABjBQAAAAxMaXN0aW5nUHJpY2UJAAACAAAAAQIAAABsTG93ZXIgbGlzdGluZyBQcmljZSBpcyBFbnRlcmVkIHBlciB0b2tlbiwgcGxlYXNlIGVudGVyIGFzIGEgdmFsaWQgcmFuZ2UgaW4gYmV0d2VlbiByYW5nZSBbMC4wMDAxMDAtMU1dIFVTRFQuAwkAAGYAAAACBQAAAAxMaXN0aW5nUHJpY2UAAAAA6NSlD/8JAAACAAAAAQIAAABtSGlnaGVyIGxpc3RpbmcgUHJpY2UgaXMgRW50ZXJlZCBwZXIgdG9rZW4sIHBsZWFzZSBlbnRlciBhcyBhIHZhbGlkIHJhbmdlIGluIGJldHdlZW4gcmFuZ2UgWzAuMDAwMTAwLTFNXSBVU0RULgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAICAAAAElBhaXJfVW5kZXJfVm90aW5nXwUAAAAIQXNzZXRJRDEFAAAACEFzc2V0SUQxCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgIAAAAOVm90aW5nX1N0YXR1c18FAAAACEFzc2V0SUQxBQAAAAx2b3RpbmdzdGF0dXMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgIAAAAUVm90aW5nX1N0YXJ0X0hlaWdodF8FAAAACEFzc2V0SUQxBQAAAAZoZWlnaHQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgIAAAASVm90aW5nX0VuZF9IZWlnaHRfBQAAAAhBc3NldElEMQUAAAAMdm90aW5nRXhwaXJlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAICAAAADlZvdGluZ19QZXJpb2RfBQAAAAhBc3NldElEMQUAAAAOTm9PZkRheXNCbG9ja3MJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgIAAAATVm90aW5nX0xpc3RpbmdfRmVlXwUAAAAIQXNzZXRJRDEIBQAAAARwbXQxAAAABmFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACAgAAAA9Wb3Rlc19SZXF1aXJlZF8FAAAACEFzc2V0SUQxBQAAAA12b3Rlc3JlcXVpcmVkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAICAAAAD1ZvdGVzX1JlY2VpdmVkXwUAAAAIQXNzZXRJRDEAAAAAAAAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACVByaWNlX09mXwUAAAAIQXNzZXRJRDECAAAAAV8JAAJYAAAAAQUAAAALVVNEVEFzc2V0SUQFAAAADExpc3RpbmdQcmljZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAQUmV2ZXJzZVByaWNlX09mXwUAAAAIQXNzZXRJRDECAAAAAV8JAAJYAAAAAQUAAAALVVNEVEFzc2V0SUQFAAAADHJldmVyc2VwcmljZQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABBQAAAApGZWVBZGRyZXNzCAUAAAAEcG10MQAAAAZhbW91bnQFAAAADUJhbGxldEFzc2V0SUQFAAAAA25pbAAAAAFpAQAAAAtJc3N1ZUJhbGxldAAAAAAEAAAAA3BtdAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAKY3VycmVudEtleQkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAA1CYWxsZXRBc3NldElEAQAAACAtb1sBuZ3lSm8ahGink+4TF5YYAu/xRHYwe1h195OooAQAAAAOUHJpY2VQZXJCYWxsZXQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMCAAAACUJBTExFVC9UTgQAAAAPTmV3QmFsbGV0VG9Vc2VyCQAAawAAAAMAAAAAAAABhqAIBQAAAANwbXQAAAAGYW1vdW50BQAAAA5QcmljZVBlckJhbGxldAQAAAAUUHJldmlvdXNJc3N1ZWRCYWxsZXQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMCAAAAFFRvdGFsX0lzc3VlZF9CYWxsZXQ6BAAAABFUb3RhbElzc3VlZEJhbGxldAkAAGQAAAACBQAAABRQcmV2aW91c0lzc3VlZEJhbGxldAUAAAAPTmV3QmFsbGV0VG9Vc2VyBAAAABpQcmV2aW91c0JhbGxldFJlc2VydmVWYWx1ZQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwIAAAAbVG90YWxfQmFsbGV0X1Jlc2VydmVfSW5fVE46BAAAABJCYWxsZXRSZXNlcnZlVmFsdWUJAABkAAAAAgUAAAAaUHJldmlvdXNCYWxsZXRSZXNlcnZlVmFsdWUIBQAAAANwbXQAAAAGYW1vdW50BAAAABlQcmV2aW91c0JhbGxldEJhY2t1cFByaWNlCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzAgAAABpCYWxsZXRfQmFja3VwX1ZhbHVlX0luX1ROOgQAAAARQmFsbGV0QmFja3VwUHJpY2UJAABrAAAAAwAAAAAAAAGGoAUAAAASQmFsbGV0UmVzZXJ2ZVZhbHVlBQAAABFUb3RhbElzc3VlZEJhbGxldAQAAAAKRmVlQWRkcmVzcwEAAAAg463XstSKNtaiPAMTm2AWTDVjxzAiveOx6Vx7CmnuvCMEAAAADUZlZVBlcmNlbnRhZ2UAAAAAAAAAAAEEAAAAG0JhbGFuY2VUb2tlbnNSZXR1cm5lZFRvVXNlcgkAAGUAAAACAAAAAAAAAABkBQAAAA1GZWVQZXJjZW50YWdlAwkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAANwbXQAAAAHYXNzZXRJZAkAAAIAAAABAgAAACtJbmNvcnJlY3QgYXNzZXQgYXR0YWNoZWQsIHBsZWFzZSBhdHRhY2ggVE4uAwkAAGYAAAACAAAAAAAATEtACAUAAAADcG10AAAABmFtb3VudAkAAAIAAAABAgAAADRQbGVhc2UgQXR0YWNoIG1pbmltdW0gMC4wNSBUTiBUbyBJc3N1ZSBCYWxsZXQgQXNzZXQuCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABRUb3RhbF9Jc3N1ZWRfQmFsbGV0OgUAAAARVG90YWxJc3N1ZWRCYWxsZXQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAG1RvdGFsX0JhbGxldF9SZXNlcnZlX0luX1ROOgUAAAASQmFsbGV0UmVzZXJ2ZVZhbHVlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABpCYWxsZXRfQmFja3VwX1ZhbHVlX0luX1ROOgUAAAARQmFsbGV0QmFja3VwUHJpY2UJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAHbWVzc2FnZQIAAAAoPGgxPkJhbGxldCBJc3N1ZWQgU3VjY2Vzc2Z1bGx5ITwvaDE+PGJyPgkABEwAAAACCQEAAAAHUmVpc3N1ZQAAAAMFAAAADUJhbGxldEFzc2V0SUQFAAAAD05ld0JhbGxldFRvVXNlcgYJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyCQAAaQAAAAIJAABoAAAAAgUAAAAPTmV3QmFsbGV0VG9Vc2VyBQAAABtCYWxhbmNlVG9rZW5zUmV0dXJuZWRUb1VzZXIAAAAAAAAAAGQFAAAADUJhbGxldEFzc2V0SUQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQUAAAAKRmVlQWRkcmVzcwkAAGkAAAACCQAAaAAAAAIFAAAAD05ld0JhbGxldFRvVXNlcgUAAAANRmVlUGVyY2VudGFnZQAAAAAAAAAAZAUAAAANQmFsbGV0QXNzZXRJRAUAAAADbmlsAAAAAWkBAAAACUxpcXVpZGF0ZQAAAAAEAAAACmN1cnJlbnRLZXkJAAJYAAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BAAAAANwbXQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAADUJhbGxldEFzc2V0SUQBAAAAIC1vWwG5neVKbxqEaKeT7hMXlhgC7/FEdjB7WHX3k6igBAAAABRQcmV2aW91c0lzc3VlZEJhbGxldAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwIAAAAUVG90YWxfSXNzdWVkX0JhbGxldDoEAAAAEVRvdGFsSXNzdWVkQmFsbGV0CQAAZQAAAAIFAAAAFFByZXZpb3VzSXNzdWVkQmFsbGV0CAUAAAADcG10AAAABmFtb3VudAQAAAAaUHJldmlvdXNCYWxsZXRSZXNlcnZlVmFsdWUJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMCAAAAG1RvdGFsX0JhbGxldF9SZXNlcnZlX0luX1ROOgQAAAAZUHJldmlvdXNCYWxsZXRCYWNrdXBQcmljZQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwIAAAAaQmFsbGV0X0JhY2t1cF9WYWx1ZV9Jbl9UTjoEAAAAEmNhbGN1bGF0ZWJ1cm52YWx1ZQkAAGsAAAADBQAAABlQcmV2aW91c0JhbGxldEJhY2t1cFByaWNlCAUAAAADcG10AAAABmFtb3VudAAAAAAAAAGGoAQAAAASQmFsbGV0UmVzZXJ2ZVZhbHVlCQAAZQAAAAIFAAAAGlByZXZpb3VzQmFsbGV0UmVzZXJ2ZVZhbHVlBQAAABJjYWxjdWxhdGVidXJudmFsdWUEAAAAEUJhbGxldEJhY2t1cFByaWNlCQAAawAAAAMAAAAAAAABhqAFAAAAEkJhbGxldFJlc2VydmVWYWx1ZQUAAAARVG90YWxJc3N1ZWRCYWxsZXQDCQEAAAACIT0AAAACCAUAAAADcG10AAAAB2Fzc2V0SWQFAAAADUJhbGxldEFzc2V0SUQJAAACAAAAAQIAAABKS2luZGx5IERlcG9zaXQgT25seSA0NE1xOEtxVWhNOTR0OTNNaUJxM1MyMmlpdUdjek14cEttc2U1ZEJ5Mnc1eSAoQmFsbGV0KS4DCQAAZgAAAAIAAAAAAAABhqAIBQAAAANwbXQAAAAGYW1vdW50CQAAAgAAAAECAAAAMEF0dGFjaCBBbW91bnQgbXVzdCBiZSBncmVhdGVyIHRoYW4gMC4wMDEgQmFsbGV0LgkABEwAAAACCQEAAAAEQnVybgAAAAIFAAAADUJhbGxldEFzc2V0SUQIBQAAAANwbXQAAAAGYW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABRUb3RhbF9Jc3N1ZWRfQmFsbGV0OgUAAAARVG90YWxJc3N1ZWRCYWxsZXQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAG1RvdGFsX0JhbGxldF9SZXNlcnZlX0luX1ROOgUAAAASQmFsbGV0UmVzZXJ2ZVZhbHVlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABpCYWxsZXRfQmFja3VwX1ZhbHVlX0luX1ROOgUAAAARQmFsbGV0QmFja3VwUHJpY2UJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAHbWVzc2FnZQIAAAAsPGgxPkJhbGxldCBMaXF1aWRhdGVkIFN1Y2Nlc3NmdWxseSE8L2gxPjxicj4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAABJjYWxjdWxhdGVidXJudmFsdWUFAAAABHVuaXQFAAAAA25pbAAAAAFpAQAAAAhEb1ZvdGluZwAAAAEAAAAMRW50ZXJBc3NldElEBAAAAANwbXQDCQAAAAAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAJAAACAAAAAQIAAAAsQmFsbGV0IFRva2VuIGlzIHJlcXVpcmVkIGFzIEF0dGFjaGVkIHBheW1lbnQEAAAADWNhbGxlcmFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAANQmFsbGV0QXNzZXRJRAEAAAAgLW9bAbmd5UpvGoRop5PuExeWGALv8UR2MHtYdfeTqKAEAAAAD05ld1ZvdGluZ1N0YXR1cwIAAAAEUGFzcwQAAAALVVNEVEFzc2V0SUQBAAAAIO1uns5hlJz9zuYakh0t3uLmLZDCTZgfB7wEww+WnHxxBAAAABhjaGVja3Byb2plY3RleHBpcmVoZWlnaHQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAASVm90aW5nX0VuZF9IZWlnaHRfBQAAAAxFbnRlckFzc2V0SUQEAAAAGWNoZWNrcGFpcmlzYXZhaWxhYmxlb3Jub3QJAAQdAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAABJQYWlyX1VuZGVyX1ZvdGluZ18FAAAADEVudGVyQXNzZXRJRAQAAAASY2hlY2t2b3Rlc3JlcXVpcmVkCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAICAAAAD1ZvdGVzX1JlcXVpcmVkXwUAAAAMRW50ZXJBc3NldElEBAAAABJjaGVja3ZvdGVzcmVjZWl2ZWQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAPVm90ZXNfUmVjZWl2ZWRfBQAAAAxFbnRlckFzc2V0SUQEAAAADFZvdGluZ1N0YXR1cwkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAAA5Wb3RpbmdfU3RhdHVzXwUAAAAMRW50ZXJBc3NldElEBAAAAAxjdXJyZW50dm90ZXMEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAAA9Wb3Rlc19SZWNlaXZlZF8FAAAADEVudGVyQXNzZXRJRAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAAA1uZXd2b3Rlc2NvdW50CQAAZAAAAAIFAAAADGN1cnJlbnR2b3RlcwgFAAAAA3BtdAAAAAZhbW91bnQEAAAAD2luZGl2aWR1YWx2b3RlcwQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA9Wb3Rlc19SZWNlaXZlZF8FAAAADWNhbGxlcmFkZHJlc3MCAAAAAV8FAAAADEVudGVyQXNzZXRJRAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiAAAAAAAAAAAABAAAABRpbmRpdmlkdWFsdm90ZXNjb3VudAkAAGQAAAACBQAAAA9pbmRpdmlkdWFsdm90ZXMIBQAAAANwbXQAAAAGYW1vdW50BAAAAA5jaGVja3doaXRlbGlzdAkAAGcAAAACBQAAABJjaGVja3ZvdGVzcmVjZWl2ZWQFAAAAEmNoZWNrdm90ZXNyZXF1aXJlZAQAAAAEaW5mbwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAD7AAAAAEJAAJZAAAAAQUAAAAMRW50ZXJBc3NldElECQABLAAAAAIJAAEsAAAAAgIAAAAGQXNzZXQgBQAAAAxFbnRlckFzc2V0SUQCAAAADiBkb2Vzbid0IGV4aXN0BAAAAAhkZWNpbWFscwgFAAAABGluZm8AAAAIZGVjaW1hbHMDCQEAAAACIT0AAAACBQAAABljaGVja3BhaXJpc2F2YWlsYWJsZW9ybm90BQAAAAxFbnRlckFzc2V0SUQJAAACAAAAAQIAAAAlUGFpciBpcyBub3QgYXZhaWxhYmxlIGluIFZvdGluZyBMaXN0LgMJAABmAAAAAgUAAAAGaGVpZ2h0BQAAABhjaGVja3Byb2plY3RleHBpcmVoZWlnaHQJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAFFZvdGluZyB0aW1lbGluZSBmb3IgBQAAAAxFbnRlckFzc2V0SUQCAAAADCBpcyBleHBpcmVkLgMJAQAAAAIhPQAAAAIIBQAAAANwbXQAAAAHYXNzZXRJZAUAAAANQmFsbGV0QXNzZXRJRAkAAAIAAAABAgAAAElLaW5kbHkgQXR0YWNoIE9ubHkgNDRNcThLcVVoTTk0dDkzTWlCcTNTMjJpaXVHY3pNeHBLbXNlNWRCeTJ3NXkgKEJhbGxldCkuAwkAAAAAAAACBQAAAAxWb3RpbmdTdGF0dXMFAAAAD05ld1ZvdGluZ1N0YXR1cwkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAALVm90aW5nIGZvciAFAAAADEVudGVyQXNzZXRJRAIAAAA1IHBhaXIgaXMgY29tcGxldGVkIGFuZCBpdOKAmXMgYXZhaWxhYmxlIGluIHdoaXRlbGlzdC4DBQAAAA5jaGVja3doaXRlbGlzdAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAICAAAADlZvdGluZ19TdGF0dXNfBQAAAAxFbnRlckFzc2V0SUQFAAAAD05ld1ZvdGluZ1N0YXR1cwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACAgAAAAxEZWNpbWFsc19vZl8FAAAADEVudGVyQXNzZXRJRAUAAAAIZGVjaW1hbHMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAD09sZF9CYWxhbmNlX29mXwUAAAAMRW50ZXJBc3NldElEAgAAAAFfCQACWAAAAAEFAAAAC1VTRFRBc3NldElEAAAAAAAAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA9OZXdfQmFsYW5jZV9vZl8FAAAADEVudGVyQXNzZXRJRAIAAAABXwkAAlgAAAABBQAAAAtVU0RUQXNzZXRJRAAAAAAAAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAPT2xkX0JhbGFuY2Vfb2ZfCQACWAAAAAEFAAAAC1VTRFRBc3NldElEAgAAAAFfBQAAAAxFbnRlckFzc2V0SUQAAAAAAAAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAD05ld19CYWxhbmNlX29mXwkAAlgAAAABBQAAAAtVU0RUQXNzZXRJRAIAAAABXwUAAAAMRW50ZXJBc3NldElEAAAAAAAAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABNUb3RhbF9vZl9wYWlyX1R4bnNfBQAAAAxFbnRlckFzc2V0SUQCAAAAAV8JAAJYAAAAAQUAAAALVVNEVEFzc2V0SUQAAAAAAAAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAE1RvdGFsX29mX1N3YXBzX1R4bnMAAAAAAAAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAGFRvdGFsX1N3YXBfRmVlX0NvbGxlY3RlZAAAAAAAAAAAAAUAAAADbmlsCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAICAAAAD1ZvdGVzX1JlY2VpdmVkXwUAAAAMRW50ZXJBc3NldElEBQAAAA1uZXd2b3Rlc2NvdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA9Wb3Rlc19SZWNlaXZlZF8FAAAADWNhbGxlcmFkZHJlc3MCAAAAAV8FAAAADEVudGVyQXNzZXRJRAUAAAAUaW5kaXZpZHVhbHZvdGVzY291bnQFAAAAA25pbAAAAAFpAQAAABNXaXRoZHJhd1ZvdGVkVG9rZW5zAAAAAQAAAAxFbnRlckFzc2V0SUQEAAAAA3BtdAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAANY2FsbGVyYWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAA1CYWxsZXRBc3NldElEAQAAACAtb1sBuZ3lSm8ahGink+4TF5YYAu/xRHYwe1h195OooAQAAAAYY2hlY2twcm9qZWN0ZXhwaXJlaGVpZ2h0CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAICAAAAElZvdGluZ19FbmRfSGVpZ2h0XwUAAAAMRW50ZXJBc3NldElEBAAAABljaGVja3BhaXJpc2F2YWlsYWJsZW9ybm90CQAEHQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAASUGFpcl9VbmRlcl9Wb3RpbmdfBQAAAAxFbnRlckFzc2V0SUQEAAAAFmNoZWNrdXNlcnZvdGluZ2JhbGFuY2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAD1ZvdGVzX1JlY2VpdmVkXwUAAAANY2FsbGVyYWRkcmVzcwIAAAABXwUAAAAMRW50ZXJBc3NldElEBAAAAB1wZW5kaW5nYmxvY2tzZm9ycHJvamVjdGV4cGlyZQkAAGUAAAACBQAAABhjaGVja3Byb2plY3RleHBpcmVoZWlnaHQFAAAABmhlaWdodAMJAQAAAAIhPQAAAAIFAAAAGWNoZWNrcGFpcmlzYXZhaWxhYmxlb3Jub3QFAAAADEVudGVyQXNzZXRJRAkAAAIAAAABAgAAACVQYWlyIGlzIG5vdCBhdmFpbGFibGUgaW4gVm90aW5nIExpc3QuAwkAAGYAAAACBQAAABhjaGVja3Byb2plY3RleHBpcmVoZWlnaHQFAAAABmhlaWdodAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAABUVm90aW5nIEFscmVhZHkgUnVubmluZy4gWW91IGNhbiB3aXRoZHJhdyB5b3VyIEJhbGxldCBUb2tlbiBvbmx5IGFmdGVyIHRoZSBleHBpcmUgb2YgCQABpAAAAAEFAAAAHXBlbmRpbmdibG9ja3Nmb3Jwcm9qZWN0ZXhwaXJlAgAAAAcgQmxvY2tzAwkAAGcAAAACAAAAAAAAAAAABQAAABZjaGVja3VzZXJ2b3RpbmdiYWxhbmNlCQAAAgAAAAECAAAAPllvdSBkb24ndCBoYXZlIGFueSBkdWVzIG9mIGJhbGxldCBiYWxhbmNlIGluIHRoaXMgVm90aW5nIFBhaXIuAwkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAANwbXQAAAAHYXNzZXRJZAkAAAIAAAABAgAAAFFEb24ndCBhdHRhY2ggYW55IG90aGVyIGFzc2V0LiBQbGVhc2UgYXR0YWNoIDAuMSBUTiBhcyBhIGZlZSB0byByZWxlYXNlIHlvdXIgdG9rZW4DCQEAAAACIT0AAAACCAUAAAADcG10AAAABmFtb3VudAAAAAAAAJiWgAkAAAIAAAABAgAAADRQbGVhc2UgYXR0YWNoIDAuMSBUTiBhcyBhIGZlZSB0byByZWxlYXNlIHlvdXIgdG9rZW4uCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA9Wb3Rlc19SZWNlaXZlZF8FAAAADWNhbGxlcmFkZHJlc3MCAAAAAV8FAAAADEVudGVyQXNzZXRJRAAAAAAAAAAAAAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAFmNoZWNrdXNlcnZvdGluZ2JhbGFuY2UFAAAADUJhbGxldEFzc2V0SUQFAAAAA25pbAAAAAFpAQAAABhTd2FwQXNzZXRUb1VTRFRQYWlyRW50cnkAAAABAAAADEVudGVyQXNzZXRJRAQAAAANY2FsbGVyYWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAANwbXQDCQAAAAAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAJAAACAAAAAQIAAAA6V2hpdGVsaXN0ZWQgU3dhcCBUb2tlbiBpcyByZXF1aXJlZCBhcyBBdHRhY2hlZCBwYXltZW50WzFdLgQAAAALVVNEVEFzc2V0SUQBAAAAIO1uns5hlJz9zuYakh0t3uLmLZDCTZgfB7wEww+WnHxxBAAAABljaGVja3BhaXJpc2F2YWlsYWJsZW9ybm90CQAEHQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAASUGFpcl9VbmRlcl9Wb3RpbmdfBQAAAAxFbnRlckFzc2V0SUQEAAAADFZvdGluZ1N0YXR1cwkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAAA5Wb3RpbmdfU3RhdHVzXwUAAAAMRW50ZXJBc3NldElEBAAAAA5DaGVja1BhaXJQcmljZQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJUHJpY2VfT2ZfBQAAAAxFbnRlckFzc2V0SUQCAAAAAV8JAAJYAAAAAQUAAAALVVNEVEFzc2V0SUQEAAAAGkNoZWNrT2xkQmFsYW5jZUFzc2V0dG9VU0RUCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA9PbGRfQmFsYW5jZV9vZl8FAAAADEVudGVyQXNzZXRJRAIAAAABXwkAAlgAAAABBQAAAAtVU0RUQXNzZXRJRAQAAAAaQ2hlY2tPbGRCYWxhbmNlVVNEVHRvQXNzZXQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAD09sZF9CYWxhbmNlX29mXwkAAlgAAAABBQAAAAtVU0RUQXNzZXRJRAIAAAABXwUAAAAMRW50ZXJBc3NldElEBAAAABJDaGVja0Fzc2V0RGVjaW1hbHMJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAMRGVjaW1hbHNfb2ZfBQAAAAxFbnRlckFzc2V0SUQEAAAAE0N1cnJlbnRWb3RpbmdTdGF0dXMCAAAABEZhaWwEAAAAB1N3YXBGZWUAAAAAAAAAAAEEAAAAE2Ftb3VudEFzc2V0RGVjaW1hbHMFAAAAEkNoZWNrQXNzZXREZWNpbWFscwQAAAAScHJpY2VBc3NldERlY2ltYWxzAAAAAAAAAAAGBAAAAAtkZWNpbWFsc2dhcAkAAGUAAAACCQAAZQAAAAIAAAAAAAAAAAYFAAAAE2Ftb3VudEFzc2V0RGVjaW1hbHMAAAAAAAAAAAgEAAAAFHF1YW50aXR5b2ZwcmljZWFzc2V0CQAAaQAAAAIJAABoAAAAAgkAAGgAAAACCAUAAAADcG10AAAABmFtb3VudAUAAAAOQ2hlY2tQYWlyUHJpY2UJAABsAAAABgAAAAAAAAAACgAAAAAAAAAAAAUAAAALZGVjaW1hbHNnYXAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAlVQCQAAbAAAAAYAAAAAAAAAAAoAAAAAAAAAAAAFAAAAE2Ftb3VudEFzc2V0RGVjaW1hbHMAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAlVQBAAAAA5nZXRVU0RUQmFsYW5jZQkAA/AAAAACBQAAAAR0aGlzBQAAAAtVU0RUQXNzZXRJRAQAAAAObmV3VVNEVEJhbGFuY2UJAABlAAAAAgUAAAAOZ2V0VVNEVEJhbGFuY2UFAAAAFHF1YW50aXR5b2ZwcmljZWFzc2V0AwkBAAAAAiE9AAAAAgUAAAAZY2hlY2twYWlyaXNhdmFpbGFibGVvcm5vdAUAAAAMRW50ZXJBc3NldElECQAAAgAAAAECAAAAK1BhaXIgaXMgbm90IGF2YWlsYWJsZSBpbiBXaGl0ZWxpc3RlZCBBc3NldC4DCQAAAAAAAAIFAAAADFZvdGluZ1N0YXR1cwUAAAATQ3VycmVudFZvdGluZ1N0YXR1cwkAAAIAAAABCQABLAAAAAIFAAAADEVudGVyQXNzZXRJRAIAAAAgIGlzIG5vdCBBIFdoaXRlbGlzdGVkIFRva2VuIFlldC4DCQAAAAAAAAIIBQAAAANwbXQAAAAHYXNzZXRJZAUAAAALVVNEVEFzc2V0SUQJAAACAAAAAQIAAABTWW91IGNhbid0IEF0dGFjaCBVU0RUIGFzIGFuIEF0dGFjaGVkIFBheW1lbnQuIE9ubHkgV2hpdGVsaXN0ZWQgVG9rZW5zIGFyZSBhY2NlcHRlZC4DCQEAAAACIT0AAAACCAUAAAADcG10AAAAB2Fzc2V0SWQJAAJZAAAAAQUAAAAMRW50ZXJBc3NldElECQAAAgAAAAEJAAEsAAAAAgIAAAAwSW5jb3JyZWN0IGFzc2V0IGF0dGFjaGVkLCBwbGVhc2UgYXR0YWNoIG9yIHNlbmQgBQAAAAxFbnRlckFzc2V0SUQDCQAAZgAAAAIAAAAAAAAAJxAFAAAAFHF1YW50aXR5b2ZwcmljZWFzc2V0CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAADRZb3VyIEF0dGFjaGVkIEFzc2V0IEFtb3VudCBpcyB2ZXJ5IGxvdy4gQXR0YWNoIE1vcmUgBQAAAAxFbnRlckFzc2V0SUQCAAAANiBUb2tlbnMgdG8gQ2xhaW0gdGhlIG1pbmltdW0gQW1vdW50IG9mIDEgY2VudCBhdGxlYXN0LgMJAAAAAAAAAgUAAAAaQ2hlY2tPbGRCYWxhbmNlQXNzZXR0b1VTRFQAAAAAAAAAAAAJAAACAAAAAQIAAABlU3dhcCBQYWlyIE5lZWQgdG8gQWRkIExpcXVpZGl0eSBmaXJzdCBpbnRvIFBvb2wuIE9ubHkgQWZ0ZXIgdGhhdCBQYWlyIHdpbGwgYmUgYWN0aXZhdGVkIGZvciBTd2FwcGluZy4DCQAAAAAAAAIFAAAAGkNoZWNrT2xkQmFsYW5jZVVTRFR0b0Fzc2V0AAAAAAAAAAAACQAAAgAAAAECAAAAZVN3YXAgUGFpciBOZWVkIHRvIEFkZCBMaXF1aWRpdHkgZmlyc3QgaW50byBQb29sLiBPbmx5IEFmdGVyIHRoYXQgUGFpciB3aWxsIGJlIGFjdGl2YXRlZCBmb3IgU3dhcHBpbmcuCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAlQcmljZV9PZl8FAAAADEVudGVyQXNzZXRJRAIAAAABXwkAAlgAAAABBQAAAAtVU0RUQXNzZXRJRAUAAAAOQ2hlY2tQYWlyUHJpY2UJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyCQAAaQAAAAIJAABoAAAAAgUAAAAUcXVhbnRpdHlvZnByaWNlYXNzZXQAAAAAAAAAAGMAAAAAAAAAAGQFAAAAC1VTRFRBc3NldElECQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgkAAGkAAAACCQAAaAAAAAIFAAAAFHF1YW50aXR5b2ZwcmljZWFzc2V0BQAAAAdTd2FwRmVlAAAAAAAAAABkBQAAAAtVU0RUQXNzZXRJRAUAAAADbmlsAAAAAWkBAAAAGFN3YXBVU0RUVG9Bc3NldFBhaXJFbnRyeQAAAAEAAAAMRW50ZXJBc3NldElEBAAAAA1jYWxsZXJhZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAA3BtdAMJAAAAAAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAkAAAIAAAABAgAAADZPbmx5IFVTRFQgVG9rZW4gaXMgcmVxdWlyZWQgYXMgYW4gQXR0YWNoZWQgcGF5bWVudFsxXS4EAAAAC1VTRFRBc3NldElEAQAAACDtbp7OYZSc/c7mGpIdLd7i5i2Qwk2YHwe8BMMPlpx8cQQAAAAZY2hlY2twYWlyaXNhdmFpbGFibGVvcm5vdAkABB0AAAACBQAAAAR0aGlzCQABLAAAAAICAAAAElBhaXJfVW5kZXJfVm90aW5nXwUAAAAMRW50ZXJBc3NldElEBAAAAAxWb3RpbmdTdGF0dXMJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAOVm90aW5nX1N0YXR1c18FAAAADEVudGVyQXNzZXRJRAQAAAAVQ2hlY2tSZXZlcnNlUGFpclByaWNlCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABBSZXZlcnNlUHJpY2VfT2ZfBQAAAAxFbnRlckFzc2V0SUQCAAAAAV8JAAJYAAAAAQUAAAALVVNEVEFzc2V0SUQEAAAAEkNoZWNrQXNzZXREZWNpbWFscwkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAAAxEZWNpbWFsc19vZl8FAAAADEVudGVyQXNzZXRJRAQAAAATQ3VycmVudFZvdGluZ1N0YXR1cwIAAAAERmFpbAQAAAAOUmV2ZXJzZVN3YXBGZWUAAAAAAAAAAAEEAAAAE2Ftb3VudEFzc2V0RGVjaW1hbHMFAAAAEkNoZWNrQXNzZXREZWNpbWFscwQAAAAScHJpY2VBc3NldERlY2ltYWxzAAAAAAAAAAAGBAAAAAtkZWNpbWFsc2dhcAkAAGUAAAACCQAAZQAAAAIAAAAAAAAAAAYFAAAAE2Ftb3VudEFzc2V0RGVjaW1hbHMAAAAAAAAAAAgEAAAAFHF1YW50aXR5b2ZwcmljZWFzc2V0CQAAaQAAAAIIBQAAAANwbXQAAAAGYW1vdW50CQAAbAAAAAYAAAAAAAAAAAoAAAAAAAAAAAAFAAAAE2Ftb3VudEFzc2V0RGVjaW1hbHMAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAlVQBAAAAA9nZXRBc3NldEJhbGFuY2UJAAPwAAAAAgUAAAAEdGhpcwkAAlkAAAABBQAAAAxFbnRlckFzc2V0SUQEAAAAD25ld0Fzc2V0QmFsYW5jZQkAAGUAAAACBQAAAA9nZXRBc3NldEJhbGFuY2UFAAAAFHF1YW50aXR5b2ZwcmljZWFzc2V0AwkBAAAAAiE9AAAAAgUAAAAZY2hlY2twYWlyaXNhdmFpbGFibGVvcm5vdAUAAAAMRW50ZXJBc3NldElECQAAAgAAAAECAAAAK1BhaXIgaXMgbm90IGF2YWlsYWJsZSBpbiBXaGl0ZWxpc3RlZCBBc3NldC4DCQAAAAAAAAIFAAAADFZvdGluZ1N0YXR1cwUAAAATQ3VycmVudFZvdGluZ1N0YXR1cwkAAAIAAAABCQABLAAAAAIFAAAADEVudGVyQXNzZXRJRAIAAAAgIGlzIG5vdCBBIFdoaXRlbGlzdGVkIFRva2VuIFlldC4DCQAAAAAAAAIFAAAADEVudGVyQXNzZXRJRAkAAlgAAAABBQAAAAtVU0RUQXNzZXRJRAkAAAIAAAABAgAAAF5JbnB1dCBjYW4gTmV2ZXIgYmUgYSBVU0RUIEFzc2V0SUQuIEVudGVyIEFzc2V0SUQgaW4gaW5wdXQgYW5kIEF0dGFjaCBVU0RUIGFzIGF0dGFjaG1lbnQgVG9rZW4uAwkBAAAAAiE9AAAAAggFAAAAA3BtdAAAAAdhc3NldElkBQAAAAtVU0RUQXNzZXRJRAkAAAIAAAABAgAAAHtZb3UgY2FuIEF0dGFjaCBVU0RUIGFzIGFuIEF0dGFjaGVkIFBheW1lbnQgdG8gU3dhcCBVU0RUIFRvIFJlcXVpcmVkIFRva2VuLiBBbnkgb3RoZXIgYXNzZXQgZWxzZSB0aGFuIFVTRFQgd2lsbCBiZSByZWplY3RlZC4DCQAAZgAAAAIAAAAAAAAPQkAIBQAAAANwbXQAAAAGYW1vdW50CQAAAgAAAAECAAAAWVlvdXIgQXR0YWNoZWQgVVNEVCBBbW91bnQgaXMgdmVyeSBsb3cuIEF0dGFjaCBBdGxlYXN0IDEgVVNEVCB0byBDbGFpbSB0aGUgbWluaW11bSBUb2tlbnMuCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABBSZXZlcnNlUHJpY2VfT2ZfBQAAAAxFbnRlckFzc2V0SUQCAAAAAV8JAAJYAAAAAQUAAAALVVNEVEFzc2V0SUQFAAAAFUNoZWNrUmV2ZXJzZVBhaXJQcmljZQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIJAABpAAAAAgkAAGgAAAACBQAAABRxdWFudGl0eW9mcHJpY2Vhc3NldAAAAAAAAAAAYwAAAAAAAAAAZAkAAlkAAAABBQAAAAxFbnRlckFzc2V0SUQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyCQAAaQAAAAIJAABoAAAAAgUAAAAUcXVhbnRpdHlvZnByaWNlYXNzZXQFAAAADlJldmVyc2VTd2FwRmVlAAAAAAAAAABkCQACWQAAAAEFAAAADEVudGVyQXNzZXRJRAUAAAADbmlsAAAAAWkBAAAADEFkZExpcXVpZGl0eQAAAAEAAAAMRW50ZXJBc3NldElEBAAAAA1jYWxsZXJhZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAA3BtdAMJAAAAAAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAkAAAIAAAABAgAAADpXaGl0ZWxpc3RlZCBTd2FwIFRva2VuIGlzIHJlcXVpcmVkIGFzIEF0dGFjaGVkIHBheW1lbnRbMV0uBAAAAAtVU0RUQXNzZXRJRAEAAAAg7W6ezmGUnP3O5hqSHS3e4uYtkMJNmB8HvATDD5acfHEFAAAAA25pbAAAAAFpAQAAAA9SZW1vdmVQYWlyRW50cnkAAAABAAAADEVudGVyQXNzZXRJRAQAAAALYWRtaW5yaWdodHMJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMCAAAAFVBvbGFyaXR5X0FkbWluX1JpZ2h0cwQAAAALVVNEVEFzc2V0SUQBAAAAIO1uns5hlJz9zuYakh0t3uLmLZDCTZgfB7wEww+WnHxxBAAAABhjaGVja3Byb2plY3RleHBpcmVoZWlnaHQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAASVm90aW5nX0VuZF9IZWlnaHRfBQAAAAxFbnRlckFzc2V0SUQEAAAAGWNoZWNrcGFpcmlzYXZhaWxhYmxlb3Jub3QJAAQdAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAABJQYWlyX1VuZGVyX1ZvdGluZ18FAAAADEVudGVyQXNzZXRJRAQAAAAMVm90aW5nU3RhdHVzCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzCQABLAAAAAICAAAADlZvdGluZ19TdGF0dXNfBQAAAAxFbnRlckFzc2V0SUQEAAAAD05ld1ZvdGluZ1N0YXR1cwIAAAAEUGFzcwQAAAANY2FsbGVyYWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAA1jdXJyZW50aGVpZ2h0BQAAAAZoZWlnaHQEAAAAHXBlbmRpbmdibG9ja3Nmb3Jwcm9qZWN0ZXhwaXJlCQAAZQAAAAIFAAAAGGNoZWNrcHJvamVjdGV4cGlyZWhlaWdodAUAAAAGaGVpZ2h0AwkBAAAAAiE9AAAAAgUAAAAZY2hlY2twYWlyaXNhdmFpbGFibGVvcm5vdAUAAAAMRW50ZXJBc3NldElECQAAAgAAAAECAAAAJVBhaXIgaXMgbm90IGF2YWlsYWJsZSBpbiBWb3RpbmcgTGlzdC4DCQEAAAACIT0AAAACBQAAAAthZG1pbnJpZ2h0cwUAAAANY2FsbGVyYWRkcmVzcwkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAiSSBrbm93IFlvdSBhcmUgbm90IEFuIEFkbWluLiBPbmx5IAUAAAALYWRtaW5yaWdodHMCAAAAHyBoYXMgcmlnaHRzIHRvIHJlbW92ZSB0aGUgcGFpci4DCQAAZgAAAAIFAAAAGGNoZWNrcHJvamVjdGV4cGlyZWhlaWdodAUAAAAGaGVpZ2h0CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAADZWb3RpbmcgQWxyZWFkeSBSdW5uaW5nLiBZb3UgY2FuIHJlbW92ZSB0aGUgcGFpciBhZnRlciAJAAGkAAAAAQUAAAAdcGVuZGluZ2Jsb2Nrc2ZvcnByb2plY3RleHBpcmUCAAAAByBCbG9ja3MDCQAAAAAAAAIFAAAADFZvdGluZ1N0YXR1cwUAAAAPTmV3Vm90aW5nU3RhdHVzCQAAAgAAAAEJAAEsAAAAAgUAAAAMRW50ZXJBc3NldElEAgAAACwgaXMgbm93IFdoaXRlbGlzdGVkLiBTbyB5b3UgY2FuJ3QgcmVtb3ZlIGl0LgkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAICAAAAElBhaXJfVW5kZXJfVm90aW5nXwUAAAAMRW50ZXJBc3NldElECQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgIAAAAUVm90aW5nX1N0YXJ0X0hlaWdodF8FAAAADEVudGVyQXNzZXRJRAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAICAAAAElZvdGluZ19FbmRfSGVpZ2h0XwUAAAAMRW50ZXJBc3NldElECQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgIAAAAOVm90aW5nX1BlcmlvZF8FAAAADEVudGVyQXNzZXRJRAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAICAAAAD1ZvdGVzX1JlcXVpcmVkXwUAAAAMRW50ZXJBc3NldElECQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgIAAAATVm90aW5nX0xpc3RpbmdfRmVlXwUAAAAMRW50ZXJBc3NldElECQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgIAAAAOVm90aW5nX1N0YXR1c18FAAAADEVudGVyQXNzZXRJRAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQABLAAAAAICAAAAD1ZvdGVzX1JlY2VpdmVkXwUAAAAMRW50ZXJBc3NldElECQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACVByaWNlX09mXwUAAAAMRW50ZXJBc3NldElEAgAAAAFfCQACWAAAAAEFAAAAC1VTRFRBc3NldElEBQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAABAAAAAckbWF0Y2gwBQAAAAJ0eAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXk6uolO", "height": 1671428, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8qcK3WdoqVJuq8HkddKfU3QeCcV2mz3M5R7DYhoojXQf Next: GD45vhBoyo5pX1ckVLACFsCFKLUHxRyjh4ogHjwzFK8F Diff:
OldNewDifferences
1010 let g = base58'GKmJ6BchUgQfwKp4mp5eX8Y9xLioYRm6e1gDfFgdAcCr'
1111 let h = 90
1212 let i = base58'44Mq8KqUhM94t93MiBq3S22iiuGczMxpKmse5dBy2w5y'
13- let j = base58'7RB3BWayeCVPq3kkpkeJZAFv2DYCB5gEwnutEpRofaw4'
13+ let j = base58'GyqTYDea3DWBaAyQs5S5uH2223ucELYFazJpZLCfMznU'
1414 let k = toBase58String(a.caller.bytes)
1515 let l = !(isDefined(f.assetId))
1616 let m = 1440
2121 let r = getString(this, ("Pair_Under_Voting_" + b))
2222 let s = "Fail"
2323 let t = fromBase58String(b)
24+ let u = fraction(1, 1000000000000, d)
2425 if ((43 > size(b)))
2526 then throw("Wrong AssetID1 is Entered for Voting. Please Enter a Valid AssetID1. Probably you entered an ASSETID1 less than 43 Chars.")
2627 else if ((29 >= c))
3334 then throw("Two attached assets expected as payment. Kindly Attach payment1 = Ballet Token and payment2 = Token you want to add to List for Voting.")
3435 else if ((e.assetId != i))
3536 then throw("Incorrect asset attached for Voting in payment[1], please attach 1000 Ballet Token only.")
36- else if ((40000000 > e.amount))
37+ else if ((10000000 > e.amount))
3738 then throw((((("You attached only " + toString(fraction(e.amount, 1, 100000000))) + ".") + toString(fraction(e.amount, 1, 10000000))) + " Ballet for Voting in payment[1], please attach 1000 Ballet Token only."))
3839 else if ((f.assetId != t))
3940 then throw("Asset String Attached in ASSETID1 is not matching with Payment2 AssetID.")
4142 then throw("You Attached TN Asset ID for Voting, please attach the Token You want to list in payment[2].")
4243 else if ((f.assetId == i))
4344 then throw("You Attached Ballet asset for Voting in both payments, please attach the Token You want to list in payment[2].")
44- else if ((99 > d))
45- then throw("Wrong Listing Price is Entered, please enter as minimum 0.000100 USDT.")
46- else [StringEntry(("Pair_Under_Voting_" + b), b), StringEntry(("Voting_Status_" + b), s), IntegerEntry(("Voting_Start_Height_" + b), height), IntegerEntry(("Voting_End_Height_" + b), q), IntegerEntry(("Voting_Period_" + b), n), IntegerEntry(("Voting_Listing_Fee_" + b), e.amount), IntegerEntry(("Votes_Required_" + b), p), IntegerEntry(("Votes_Received_" + b), 0), IntegerEntry(((("Price_Of_" + b) + "_") + toBase58String(j)), d), ScriptTransfer(addressFromPublicKey(g), e.amount, i)]
45+ else if ((99 >= d))
46+ then throw("Lower listing Price is Entered per token, please enter as a valid range in between range [0.000100-1M] USDT.")
47+ else if ((d > 999999999999))
48+ then throw("Higher listing Price is Entered per token, please enter as a valid range in between range [0.000100-1M] USDT.")
49+ else [StringEntry(("Pair_Under_Voting_" + b), b), StringEntry(("Voting_Status_" + b), s), IntegerEntry(("Voting_Start_Height_" + b), height), IntegerEntry(("Voting_End_Height_" + b), q), IntegerEntry(("Voting_Period_" + b), n), IntegerEntry(("Voting_Listing_Fee_" + b), e.amount), IntegerEntry(("Votes_Required_" + b), p), IntegerEntry(("Votes_Received_" + b), 0), IntegerEntry(((("Price_Of_" + b) + "_") + toBase58String(j)), d), IntegerEntry(((("ReversePrice_Of_" + b) + "_") + toBase58String(j)), u), ScriptTransfer(addressFromPublicKey(g), e.amount, i)]
4750 }
4851
4952
5053
5154 @Callable(a)
5255 func IssueBallet () = {
53- let u = value(a.payments[0])
56+ let v = value(a.payments[0])
5457 let k = toBase58String(a.caller.bytes)
5558 let i = base58'44Mq8KqUhM94t93MiBq3S22iiuGczMxpKmse5dBy2w5y'
56- let v = getIntegerValue(this, "BALLET/TN")
57- let w = fraction(100000, u.amount, v)
58- let x = getIntegerValue(this, "Total_Issued_Ballet:")
59- let y = (x + w)
60- let z = getIntegerValue(this, "Total_Ballet_Reserve_In_TN:")
61- let A = (z + u.amount)
62- let B = getIntegerValue(this, "Ballet_Backup_Value_In_TN:")
63- let C = fraction(100000, A, y)
59+ let w = getIntegerValue(this, "BALLET/TN")
60+ let x = fraction(100000, v.amount, w)
61+ let y = getIntegerValue(this, "Total_Issued_Ballet:")
62+ let z = (y + x)
63+ let A = getIntegerValue(this, "Total_Ballet_Reserve_In_TN:")
64+ let B = (A + v.amount)
65+ let C = getIntegerValue(this, "Ballet_Backup_Value_In_TN:")
66+ let D = fraction(100000, B, z)
6467 let g = base58'GKmJ6BchUgQfwKp4mp5eX8Y9xLioYRm6e1gDfFgdAcCr'
65- let D = 1
66- let E = (100 - D)
67- if (isDefined(u.assetId))
68+ let E = 1
69+ let F = (100 - E)
70+ if (isDefined(v.assetId))
6871 then throw("Incorrect asset attached, please attach TN.")
69- else if ((5000000 > u.amount))
72+ else if ((5000000 > v.amount))
7073 then throw("Please Attach minimum 0.05 TN To Issue Ballet Asset.")
71- else [IntegerEntry("Total_Issued_Ballet:", y), IntegerEntry("Total_Ballet_Reserve_In_TN:", A), IntegerEntry("Ballet_Backup_Value_In_TN:", C), StringEntry("message", "<h1>Ballet Issued Successfully!</h1><br>"), Reissue(i, w, true), ScriptTransfer(a.caller, ((w * E) / 100), i), ScriptTransfer(addressFromPublicKey(g), ((w * D) / 100), i)]
74+ else [IntegerEntry("Total_Issued_Ballet:", z), IntegerEntry("Total_Ballet_Reserve_In_TN:", B), IntegerEntry("Ballet_Backup_Value_In_TN:", D), StringEntry("message", "<h1>Ballet Issued Successfully!</h1><br>"), Reissue(i, x, true), ScriptTransfer(a.caller, ((x * F) / 100), i), ScriptTransfer(addressFromPublicKey(g), ((x * E) / 100), i)]
7275 }
7376
7477
7679 @Callable(a)
7780 func Liquidate () = {
7881 let k = toBase58String(a.callerPublicKey)
79- let u = value(a.payments[0])
82+ let v = value(a.payments[0])
8083 let i = base58'44Mq8KqUhM94t93MiBq3S22iiuGczMxpKmse5dBy2w5y'
81- let x = getIntegerValue(this, "Total_Issued_Ballet:")
82- let y = (x - u.amount)
83- let z = getIntegerValue(this, "Total_Ballet_Reserve_In_TN:")
84- let B = getIntegerValue(this, "Ballet_Backup_Value_In_TN:")
85- let F = fraction(B, u.amount, 100000)
86- let A = (z - F)
87- let C = fraction(100000, A, y)
88- if ((u.assetId != i))
84+ let y = getIntegerValue(this, "Total_Issued_Ballet:")
85+ let z = (y - v.amount)
86+ let A = getIntegerValue(this, "Total_Ballet_Reserve_In_TN:")
87+ let C = getIntegerValue(this, "Ballet_Backup_Value_In_TN:")
88+ let G = fraction(C, v.amount, 100000)
89+ let B = (A - G)
90+ let D = fraction(100000, B, z)
91+ if ((v.assetId != i))
8992 then throw("Kindly Deposit Only 44Mq8KqUhM94t93MiBq3S22iiuGczMxpKmse5dBy2w5y (Ballet).")
90- else if ((100000 > u.amount))
93+ else if ((100000 > v.amount))
9194 then throw("Attach Amount must be greater than 0.001 Ballet.")
92- else [Burn(i, u.amount), IntegerEntry("Total_Issued_Ballet:", y), IntegerEntry("Total_Ballet_Reserve_In_TN:", A), IntegerEntry("Ballet_Backup_Value_In_TN:", C), StringEntry("message", "<h1>Ballet Liquidated Successfully!</h1><br>"), ScriptTransfer(a.caller, F, unit)]
95+ else [Burn(i, v.amount), IntegerEntry("Total_Issued_Ballet:", z), IntegerEntry("Total_Ballet_Reserve_In_TN:", B), IntegerEntry("Ballet_Backup_Value_In_TN:", D), StringEntry("message", "<h1>Ballet Liquidated Successfully!</h1><br>"), ScriptTransfer(a.caller, G, unit)]
9396 }
9497
9598
9699
97100 @Callable(a)
98-func DoVoting (G) = {
99- let u = if ((size(a.payments) == 1))
101+func DoVoting (H) = {
102+ let v = if ((size(a.payments) == 1))
100103 then a.payments[0]
101104 else throw("Ballet Token is required as Attached payment")
102- let H = toBase58String(a.caller.bytes)
105+ let I = toBase58String(a.caller.bytes)
103106 let i = base58'44Mq8KqUhM94t93MiBq3S22iiuGczMxpKmse5dBy2w5y'
104- let I = "Pass"
105- let j = base58'7RB3BWayeCVPq3kkpkeJZAFv2DYCB5gEwnutEpRofaw4'
106- let J = getIntegerValue(this, ("Voting_End_Height_" + G))
107- let K = getString(this, ("Pair_Under_Voting_" + G))
108- let L = getIntegerValue(this, ("Votes_Required_" + G))
109- let M = getIntegerValue(this, ("Votes_Received_" + G))
110- let N = getStringValue(this, ("Voting_Status_" + G))
111- let O = {
112- let P = getInteger(this, ("Votes_Received_" + G))
113- if ($isInstanceOf(P, "Int"))
107+ let J = "Pass"
108+ let j = base58'GyqTYDea3DWBaAyQs5S5uH2223ucELYFazJpZLCfMznU'
109+ let K = getIntegerValue(this, ("Voting_End_Height_" + H))
110+ let L = getString(this, ("Pair_Under_Voting_" + H))
111+ let M = getIntegerValue(this, ("Votes_Required_" + H))
112+ let N = getIntegerValue(this, ("Votes_Received_" + H))
113+ let O = getStringValue(this, ("Voting_Status_" + H))
114+ let P = {
115+ let Q = getInteger(this, ("Votes_Received_" + H))
116+ if ($isInstanceOf(Q, "Int"))
114117 then {
115- let Q = P
116- Q
118+ let R = Q
119+ R
117120 }
118121 else 0
119122 }
120- let R = (O + u.amount)
121- let S = {
122- let P = getInteger(this, ((("Votes_Received_" + H) + "_") + G))
123- if ($isInstanceOf(P, "Int"))
123+ let S = (P + v.amount)
124+ let T = {
125+ let Q = getInteger(this, ((("Votes_Received_" + I) + "_") + H))
126+ if ($isInstanceOf(Q, "Int"))
124127 then {
125- let T = P
126- T
128+ let U = Q
129+ U
127130 }
128131 else 0
129132 }
130- let U = (S + u.amount)
131- let V = (M >= L)
132- let W = valueOrErrorMessage(assetInfo(fromBase58String(G)), (("Asset " + G) + " doesn't exist"))
133- let X = W.decimals
134- if ((K != G))
133+ let V = (T + v.amount)
134+ let W = (N >= M)
135+ let X = valueOrErrorMessage(assetInfo(fromBase58String(H)), (("Asset " + H) + " doesn't exist"))
136+ let Y = X.decimals
137+ if ((L != H))
135138 then throw("Pair is not available in Voting List.")
136- else if ((height > J))
137- then throw((("Voting timeline for " + G) + " is expired."))
138- else if ((u.assetId != i))
139+ else if ((height > K))
140+ then throw((("Voting timeline for " + H) + " is expired."))
141+ else if ((v.assetId != i))
139142 then throw("Kindly Attach Only 44Mq8KqUhM94t93MiBq3S22iiuGczMxpKmse5dBy2w5y (Ballet).")
140- else if ((N == I))
141- then throw((("Voting for " + G) + " pair is completed and it’s available in whitelist."))
142- else if (V)
143- then [StringEntry(("Voting_Status_" + G), I), IntegerEntry(("Decimals_of_" + G), X), IntegerEntry(((("Old_Balance_of_" + G) + "_") + toBase58String(j)), 0), IntegerEntry(((("New_Balance_of_" + G) + "_") + toBase58String(j)), 0), IntegerEntry(((("Total_of_pair_Txns_" + G) + "_") + toBase58String(j)), 0), IntegerEntry("Total_of_Swaps_Txns", 0), IntegerEntry("Total_Swap_Fee_Collected", 0)]
144- else [IntegerEntry(("Votes_Received_" + G), R), IntegerEntry(((("Votes_Received_" + H) + "_") + G), U)]
143+ else if ((O == J))
144+ then throw((("Voting for " + H) + " pair is completed and it’s available in whitelist."))
145+ else if (W)
146+ then [StringEntry(("Voting_Status_" + H), J), IntegerEntry(("Decimals_of_" + H), Y), IntegerEntry(((("Old_Balance_of_" + H) + "_") + toBase58String(j)), 0), IntegerEntry(((("New_Balance_of_" + H) + "_") + toBase58String(j)), 0), IntegerEntry(((("Old_Balance_of_" + toBase58String(j)) + "_") + H), 0), IntegerEntry(((("New_Balance_of_" + toBase58String(j)) + "_") + H), 0), IntegerEntry(((("Total_of_pair_Txns_" + H) + "_") + toBase58String(j)), 0), IntegerEntry("Total_of_Swaps_Txns", 0), IntegerEntry("Total_Swap_Fee_Collected", 0)]
147+ else [IntegerEntry(("Votes_Received_" + H), S), IntegerEntry(((("Votes_Received_" + I) + "_") + H), V)]
145148 }
146149
147150
148151
149152 @Callable(a)
150-func WithdrawVotedTokens (G) = {
151- let u = a.payments[0]
152- let H = toBase58String(a.caller.bytes)
153+func WithdrawVotedTokens (H) = {
154+ let v = a.payments[0]
155+ let I = toBase58String(a.caller.bytes)
153156 let i = base58'44Mq8KqUhM94t93MiBq3S22iiuGczMxpKmse5dBy2w5y'
154- let J = getIntegerValue(this, ("Voting_End_Height_" + G))
155- let K = getString(this, ("Pair_Under_Voting_" + G))
156- let Y = getIntegerValue(this, ((("Votes_Received_" + H) + "_") + G))
157- let Z = (J - height)
158- if ((K != G))
157+ let K = getIntegerValue(this, ("Voting_End_Height_" + H))
158+ let L = getString(this, ("Pair_Under_Voting_" + H))
159+ let Z = getIntegerValue(this, ((("Votes_Received_" + I) + "_") + H))
160+ let aa = (K - height)
161+ if ((L != H))
159162 then throw("Pair is not available in Voting List.")
160- else if ((J > height))
161- then throw((("Voting Already Running. You can withdraw your Ballet Token only after the expire of " + toString(Z)) + " Blocks"))
162- else if ((0 >= Y))
163+ else if ((K > height))
164+ then throw((("Voting Already Running. You can withdraw your Ballet Token only after the expire of " + toString(aa)) + " Blocks"))
165+ else if ((0 >= Z))
163166 then throw("You don't have any dues of ballet balance in this Voting Pair.")
164- else if (isDefined(u.assetId))
165- then throw("Don't attach any asset. If you still want to support we accept only TN as payment.")
166- else if ((u.amount != 10000000))
167+ else if (isDefined(v.assetId))
168+ then throw("Don't attach any other asset. Please attach 0.1 TN as a fee to release your token")
169+ else if ((v.amount != 10000000))
167170 then throw("Please attach 0.1 TN as a fee to release your token.")
168- else [IntegerEntry(((("Votes_Received_" + H) + "_") + G), 0), ScriptTransfer(a.caller, Y, i)]
171+ else [IntegerEntry(((("Votes_Received_" + I) + "_") + H), 0), ScriptTransfer(a.caller, Z, i)]
169172 }
170173
171174
172175
173176 @Callable(a)
174-func SwapAssetToUSDTPairEntry (G) = {
175- let H = toBase58String(a.caller.bytes)
176- let u = if ((size(a.payments) == 1))
177+func SwapAssetToUSDTPairEntry (H) = {
178+ let I = toBase58String(a.caller.bytes)
179+ let v = if ((size(a.payments) == 1))
177180 then a.payments[0]
178181 else throw("Whitelisted Swap Token is required as Attached payment[1].")
179- let j = base58'7RB3BWayeCVPq3kkpkeJZAFv2DYCB5gEwnutEpRofaw4'
180- let K = getString(this, ("Pair_Under_Voting_" + G))
181- let N = getStringValue(this, ("Voting_Status_" + G))
182- let aa = getIntegerValue(this, ((("Price_Of_" + G) + "_") + toBase58String(j)))
183- let ab = getIntegerValue(this, ((("Old_Balance_of_" + G) + "_") + toBase58String(j)))
184- let ac = getIntegerValue(this, ("Decimals_of_" + G))
185- let ad = "Fail"
186- let ae = 1
187- let af = ac
188- let ag = 6
189- let ah = ((6 - af) - 8)
190- let ai = (((u.amount * aa) * pow(10, 0, ah, 0, 0, UP)) / pow(10, 0, af, 0, 0, UP))
191- let aj = assetBalance(this, base58'GyqTYDea3DWBaAyQs5S5uH2223ucELYFazJpZLCfMznU')
192- let ak = (aj - ai)
193- if ((K != G))
182+ let j = base58'GyqTYDea3DWBaAyQs5S5uH2223ucELYFazJpZLCfMznU'
183+ let L = getString(this, ("Pair_Under_Voting_" + H))
184+ let O = getStringValue(this, ("Voting_Status_" + H))
185+ let ab = getIntegerValue(this, ((("Price_Of_" + H) + "_") + toBase58String(j)))
186+ let ac = getIntegerValue(this, ((("Old_Balance_of_" + H) + "_") + toBase58String(j)))
187+ let ad = getIntegerValue(this, ((("Old_Balance_of_" + toBase58String(j)) + "_") + H))
188+ let ae = getIntegerValue(this, ("Decimals_of_" + H))
189+ let af = "Fail"
190+ let ag = 1
191+ let ah = ae
192+ let ai = 6
193+ let aj = ((6 - ah) - 8)
194+ let ak = (((v.amount * ab) * pow(10, 0, aj, 0, 0, UP)) / pow(10, 0, ah, 0, 0, UP))
195+ let al = assetBalance(this, j)
196+ let am = (al - ak)
197+ if ((L != H))
194198 then throw("Pair is not available in Whitelisted Asset.")
195- else if ((N == ad))
196- then throw((G + " is not A Whitelisted Token Yet."))
197- else if ((u.assetId == j))
198- then throw("You can't Attach USDT as an Attached Payment. Only Whitelisted Tokens are Accepted.")
199- else if ((u.assetId != fromBase58String(G)))
200- then throw(("Incorrect asset attached, please attach or send " + G))
201- else if ((10000 > ai))
202- then throw((("Your Attached Amount is very low. Attach More " + G) + " Token to Claim the minimum Amount of 1 cent atleast."))
203- else if ((ab == 0))
199+ else if ((O == af))
200+ then throw((H + " is not A Whitelisted Token Yet."))
201+ else if ((v.assetId == j))
202+ then throw("You can't Attach USDT as an Attached Payment. Only Whitelisted Tokens are accepted.")
203+ else if ((v.assetId != fromBase58String(H)))
204+ then throw(("Incorrect asset attached, please attach or send " + H))
205+ else if ((10000 > ak))
206+ then throw((("Your Attached Asset Amount is very low. Attach More " + H) + " Tokens to Claim the minimum Amount of 1 cent atleast."))
207+ else if ((ac == 0))
204208 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
205- else [IntegerEntry(((("Price_Of_" + G) + "_") + toBase58String(j)), aa), ScriptTransfer(a.caller, ((ai * 99) / 100), base58'GyqTYDea3DWBaAyQs5S5uH2223ucELYFazJpZLCfMznU'), ScriptTransfer(a.caller, ((ai * ae) / 100), base58'GyqTYDea3DWBaAyQs5S5uH2223ucELYFazJpZLCfMznU')]
209+ else if ((ad == 0))
210+ then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
211+ else [IntegerEntry(((("Price_Of_" + H) + "_") + toBase58String(j)), ab), ScriptTransfer(a.caller, ((ak * 99) / 100), j), ScriptTransfer(a.caller, ((ak * ag) / 100), j)]
206212 }
207213
208214
209215
210216 @Callable(a)
211-func SwapUSDTToAssetPairEntry (G) = {
212- let H = toBase58String(a.caller.bytes)
213- let u = if ((size(a.payments) == 1))
217+func SwapUSDTToAssetPairEntry (H) = {
218+ let I = toBase58String(a.caller.bytes)
219+ let v = if ((size(a.payments) == 1))
220+ then a.payments[0]
221+ else throw("Only USDT Token is required as an Attached payment[1].")
222+ let j = base58'GyqTYDea3DWBaAyQs5S5uH2223ucELYFazJpZLCfMznU'
223+ let L = getString(this, ("Pair_Under_Voting_" + H))
224+ let O = getStringValue(this, ("Voting_Status_" + H))
225+ let an = getIntegerValue(this, ((("ReversePrice_Of_" + H) + "_") + toBase58String(j)))
226+ let ae = getIntegerValue(this, ("Decimals_of_" + H))
227+ let af = "Fail"
228+ let ao = 1
229+ let ah = ae
230+ let ai = 6
231+ let aj = ((6 - ah) - 8)
232+ let ak = (v.amount / pow(10, 0, ah, 0, 0, UP))
233+ let ap = assetBalance(this, fromBase58String(H))
234+ let aq = (ap - ak)
235+ if ((L != H))
236+ then throw("Pair is not available in Whitelisted Asset.")
237+ else if ((O == af))
238+ then throw((H + " is not A Whitelisted Token Yet."))
239+ else if ((H == toBase58String(j)))
240+ then throw("Input can Never be a USDT AssetID. Enter AssetID in input and Attach USDT as attachment Token.")
241+ else if ((v.assetId != j))
242+ then throw("You can Attach USDT as an Attached Payment to Swap USDT To Required Token. Any other asset else than USDT will be rejected.")
243+ else if ((1000000 > v.amount))
244+ then throw("Your Attached USDT Amount is very low. Attach Atleast 1 USDT to Claim the minimum Tokens.")
245+ else [IntegerEntry(((("ReversePrice_Of_" + H) + "_") + toBase58String(j)), an), ScriptTransfer(a.caller, ((ak * 99) / 100), fromBase58String(H)), ScriptTransfer(a.caller, ((ak * ao) / 100), fromBase58String(H))]
246+ }
247+
248+
249+
250+@Callable(a)
251+func AddLiquidity (H) = {
252+ let I = toBase58String(a.caller.bytes)
253+ let v = if ((size(a.payments) == 1))
214254 then a.payments[0]
215255 else throw("Whitelisted Swap Token is required as Attached payment[1].")
216- let j = base58'7RB3BWayeCVPq3kkpkeJZAFv2DYCB5gEwnutEpRofaw4'
256+ let j = base58'GyqTYDea3DWBaAyQs5S5uH2223ucELYFazJpZLCfMznU'
217257 nil
218258 }
219259
220260
221261
222262 @Callable(a)
223-func AddLiquidity (G) = {
224- let H = toBase58String(a.caller.bytes)
225- let u = if ((size(a.payments) == 1))
226- then a.payments[0]
227- else throw("Whitelisted Swap Token is required as Attached payment[1].")
228- let j = base58'7RB3BWayeCVPq3kkpkeJZAFv2DYCB5gEwnutEpRofaw4'
229- nil
263+func RemovePairEntry (H) = {
264+ let ar = getStringValue(this, "Polarity_Admin_Rights")
265+ let j = base58'GyqTYDea3DWBaAyQs5S5uH2223ucELYFazJpZLCfMznU'
266+ let K = getIntegerValue(this, ("Voting_End_Height_" + H))
267+ let L = getString(this, ("Pair_Under_Voting_" + H))
268+ let O = getStringValue(this, ("Voting_Status_" + H))
269+ let J = "Pass"
270+ let I = toBase58String(a.caller.bytes)
271+ let as = height
272+ let aa = (K - height)
273+ if ((L != H))
274+ then throw("Pair is not available in Voting List.")
275+ else if ((ar != I))
276+ then throw((("I know You are not An Admin. Only " + ar) + " has rights to remove the pair."))
277+ else if ((K > height))
278+ then throw((("Voting Already Running. You can remove the pair after " + toString(aa)) + " Blocks"))
279+ else if ((O == J))
280+ then throw((H + " is now Whitelisted. So you can't remove it."))
281+ else [DeleteEntry(("Pair_Under_Voting_" + H)), DeleteEntry(("Voting_Start_Height_" + H)), DeleteEntry(("Voting_End_Height_" + H)), DeleteEntry(("Voting_Period_" + H)), DeleteEntry(("Votes_Required_" + H)), DeleteEntry(("Voting_Listing_Fee_" + H)), DeleteEntry(("Voting_Status_" + H)), DeleteEntry(("Votes_Received_" + H)), DeleteEntry(((("Price_Of_" + H) + "_") + toBase58String(j)))]
230282 }
231283
232284
233-
234-@Callable(a)
235-func RemovePairEntry (G) = {
236- let al = getStringValue(this, "Polarity_Admin_Rights")
237- let j = base58'7RB3BWayeCVPq3kkpkeJZAFv2DYCB5gEwnutEpRofaw4'
238- let J = getIntegerValue(this, ("Voting_End_Height_" + G))
239- let K = getString(this, ("Pair_Under_Voting_" + G))
240- let N = getStringValue(this, ("Voting_Status_" + G))
241- let I = "Pass"
242- let H = toBase58String(a.caller.bytes)
243- let am = height
244- let Z = (J - height)
245- if ((K != G))
246- then throw("Pair is not available in Voting List.")
247- else if ((al != H))
248- then throw((("I know You are not An Admin. Only " + al) + " has rights to remove the pair."))
249- else if ((J > height))
250- then throw((("Voting Already Running. You can remove the pair after " + toString(Z)) + " Blocks"))
251- else if ((N == I))
252- then throw((G + " is now Whitelisted. So you can't remove it."))
253- else [DeleteEntry(("Pair_Under_Voting_" + G)), DeleteEntry(("Voting_Start_Height_" + G)), DeleteEntry(("Voting_End_Height_" + G)), DeleteEntry(("Voting_Period_" + G)), DeleteEntry(("Votes_Required_" + G)), DeleteEntry(("Voting_Listing_Fee_" + G)), DeleteEntry(("Voting_Status_" + G)), DeleteEntry(("Votes_Received_" + G)), DeleteEntry(((("Price_Of_" + G) + "_") + toBase58String(j)))]
254- }
255-
256-
257-@Verifier(an)
258-func ao () = {
259- let P = an
260- sigVerify(an.bodyBytes, an.proofs[0], an.senderPublicKey)
285+@Verifier(at)
286+func au () = {
287+ let Q = at
288+ sigVerify(at.bodyBytes, at.proofs[0], at.senderPublicKey)
261289 }
262290
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44
55
66 @Callable(a)
77 func RegisterPairForVoting (b,c,d) = {
88 let e = value(a.payments[0])
99 let f = value(a.payments[1])
1010 let g = base58'GKmJ6BchUgQfwKp4mp5eX8Y9xLioYRm6e1gDfFgdAcCr'
1111 let h = 90
1212 let i = base58'44Mq8KqUhM94t93MiBq3S22iiuGczMxpKmse5dBy2w5y'
13- let j = base58'7RB3BWayeCVPq3kkpkeJZAFv2DYCB5gEwnutEpRofaw4'
13+ let j = base58'GyqTYDea3DWBaAyQs5S5uH2223ucELYFazJpZLCfMznU'
1414 let k = toBase58String(a.caller.bytes)
1515 let l = !(isDefined(f.assetId))
1616 let m = 1440
1717 let n = (m * c)
1818 let o = (n - 43199)
1919 let p = ((100000 + ((11574 * o) / 10000)) * 100000000)
2020 let q = (height + n)
2121 let r = getString(this, ("Pair_Under_Voting_" + b))
2222 let s = "Fail"
2323 let t = fromBase58String(b)
24+ let u = fraction(1, 1000000000000, d)
2425 if ((43 > size(b)))
2526 then throw("Wrong AssetID1 is Entered for Voting. Please Enter a Valid AssetID1. Probably you entered an ASSETID1 less than 43 Chars.")
2627 else if ((29 >= c))
2728 then throw("Enter no. of days in between 30 to 90.")
2829 else if ((c > h))
2930 then throw("You Entered days greater than 90 please Enter no. of days in between 1 to 90.")
3031 else if ((r == b))
3132 then throw("Pair Already Exist in Voting List.")
3233 else if ((size(a.payments) != 2))
3334 then throw("Two attached assets expected as payment. Kindly Attach payment1 = Ballet Token and payment2 = Token you want to add to List for Voting.")
3435 else if ((e.assetId != i))
3536 then throw("Incorrect asset attached for Voting in payment[1], please attach 1000 Ballet Token only.")
36- else if ((40000000 > e.amount))
37+ else if ((10000000 > e.amount))
3738 then throw((((("You attached only " + toString(fraction(e.amount, 1, 100000000))) + ".") + toString(fraction(e.amount, 1, 10000000))) + " Ballet for Voting in payment[1], please attach 1000 Ballet Token only."))
3839 else if ((f.assetId != t))
3940 then throw("Asset String Attached in ASSETID1 is not matching with Payment2 AssetID.")
4041 else if ((l == true))
4142 then throw("You Attached TN Asset ID for Voting, please attach the Token You want to list in payment[2].")
4243 else if ((f.assetId == i))
4344 then throw("You Attached Ballet asset for Voting in both payments, please attach the Token You want to list in payment[2].")
44- else if ((99 > d))
45- then throw("Wrong Listing Price is Entered, please enter as minimum 0.000100 USDT.")
46- else [StringEntry(("Pair_Under_Voting_" + b), b), StringEntry(("Voting_Status_" + b), s), IntegerEntry(("Voting_Start_Height_" + b), height), IntegerEntry(("Voting_End_Height_" + b), q), IntegerEntry(("Voting_Period_" + b), n), IntegerEntry(("Voting_Listing_Fee_" + b), e.amount), IntegerEntry(("Votes_Required_" + b), p), IntegerEntry(("Votes_Received_" + b), 0), IntegerEntry(((("Price_Of_" + b) + "_") + toBase58String(j)), d), ScriptTransfer(addressFromPublicKey(g), e.amount, i)]
45+ else if ((99 >= d))
46+ then throw("Lower listing Price is Entered per token, please enter as a valid range in between range [0.000100-1M] USDT.")
47+ else if ((d > 999999999999))
48+ then throw("Higher listing Price is Entered per token, please enter as a valid range in between range [0.000100-1M] USDT.")
49+ else [StringEntry(("Pair_Under_Voting_" + b), b), StringEntry(("Voting_Status_" + b), s), IntegerEntry(("Voting_Start_Height_" + b), height), IntegerEntry(("Voting_End_Height_" + b), q), IntegerEntry(("Voting_Period_" + b), n), IntegerEntry(("Voting_Listing_Fee_" + b), e.amount), IntegerEntry(("Votes_Required_" + b), p), IntegerEntry(("Votes_Received_" + b), 0), IntegerEntry(((("Price_Of_" + b) + "_") + toBase58String(j)), d), IntegerEntry(((("ReversePrice_Of_" + b) + "_") + toBase58String(j)), u), ScriptTransfer(addressFromPublicKey(g), e.amount, i)]
4750 }
4851
4952
5053
5154 @Callable(a)
5255 func IssueBallet () = {
53- let u = value(a.payments[0])
56+ let v = value(a.payments[0])
5457 let k = toBase58String(a.caller.bytes)
5558 let i = base58'44Mq8KqUhM94t93MiBq3S22iiuGczMxpKmse5dBy2w5y'
56- let v = getIntegerValue(this, "BALLET/TN")
57- let w = fraction(100000, u.amount, v)
58- let x = getIntegerValue(this, "Total_Issued_Ballet:")
59- let y = (x + w)
60- let z = getIntegerValue(this, "Total_Ballet_Reserve_In_TN:")
61- let A = (z + u.amount)
62- let B = getIntegerValue(this, "Ballet_Backup_Value_In_TN:")
63- let C = fraction(100000, A, y)
59+ let w = getIntegerValue(this, "BALLET/TN")
60+ let x = fraction(100000, v.amount, w)
61+ let y = getIntegerValue(this, "Total_Issued_Ballet:")
62+ let z = (y + x)
63+ let A = getIntegerValue(this, "Total_Ballet_Reserve_In_TN:")
64+ let B = (A + v.amount)
65+ let C = getIntegerValue(this, "Ballet_Backup_Value_In_TN:")
66+ let D = fraction(100000, B, z)
6467 let g = base58'GKmJ6BchUgQfwKp4mp5eX8Y9xLioYRm6e1gDfFgdAcCr'
65- let D = 1
66- let E = (100 - D)
67- if (isDefined(u.assetId))
68+ let E = 1
69+ let F = (100 - E)
70+ if (isDefined(v.assetId))
6871 then throw("Incorrect asset attached, please attach TN.")
69- else if ((5000000 > u.amount))
72+ else if ((5000000 > v.amount))
7073 then throw("Please Attach minimum 0.05 TN To Issue Ballet Asset.")
71- else [IntegerEntry("Total_Issued_Ballet:", y), IntegerEntry("Total_Ballet_Reserve_In_TN:", A), IntegerEntry("Ballet_Backup_Value_In_TN:", C), StringEntry("message", "<h1>Ballet Issued Successfully!</h1><br>"), Reissue(i, w, true), ScriptTransfer(a.caller, ((w * E) / 100), i), ScriptTransfer(addressFromPublicKey(g), ((w * D) / 100), i)]
74+ else [IntegerEntry("Total_Issued_Ballet:", z), IntegerEntry("Total_Ballet_Reserve_In_TN:", B), IntegerEntry("Ballet_Backup_Value_In_TN:", D), StringEntry("message", "<h1>Ballet Issued Successfully!</h1><br>"), Reissue(i, x, true), ScriptTransfer(a.caller, ((x * F) / 100), i), ScriptTransfer(addressFromPublicKey(g), ((x * E) / 100), i)]
7275 }
7376
7477
7578
7679 @Callable(a)
7780 func Liquidate () = {
7881 let k = toBase58String(a.callerPublicKey)
79- let u = value(a.payments[0])
82+ let v = value(a.payments[0])
8083 let i = base58'44Mq8KqUhM94t93MiBq3S22iiuGczMxpKmse5dBy2w5y'
81- let x = getIntegerValue(this, "Total_Issued_Ballet:")
82- let y = (x - u.amount)
83- let z = getIntegerValue(this, "Total_Ballet_Reserve_In_TN:")
84- let B = getIntegerValue(this, "Ballet_Backup_Value_In_TN:")
85- let F = fraction(B, u.amount, 100000)
86- let A = (z - F)
87- let C = fraction(100000, A, y)
88- if ((u.assetId != i))
84+ let y = getIntegerValue(this, "Total_Issued_Ballet:")
85+ let z = (y - v.amount)
86+ let A = getIntegerValue(this, "Total_Ballet_Reserve_In_TN:")
87+ let C = getIntegerValue(this, "Ballet_Backup_Value_In_TN:")
88+ let G = fraction(C, v.amount, 100000)
89+ let B = (A - G)
90+ let D = fraction(100000, B, z)
91+ if ((v.assetId != i))
8992 then throw("Kindly Deposit Only 44Mq8KqUhM94t93MiBq3S22iiuGczMxpKmse5dBy2w5y (Ballet).")
90- else if ((100000 > u.amount))
93+ else if ((100000 > v.amount))
9194 then throw("Attach Amount must be greater than 0.001 Ballet.")
92- else [Burn(i, u.amount), IntegerEntry("Total_Issued_Ballet:", y), IntegerEntry("Total_Ballet_Reserve_In_TN:", A), IntegerEntry("Ballet_Backup_Value_In_TN:", C), StringEntry("message", "<h1>Ballet Liquidated Successfully!</h1><br>"), ScriptTransfer(a.caller, F, unit)]
95+ else [Burn(i, v.amount), IntegerEntry("Total_Issued_Ballet:", z), IntegerEntry("Total_Ballet_Reserve_In_TN:", B), IntegerEntry("Ballet_Backup_Value_In_TN:", D), StringEntry("message", "<h1>Ballet Liquidated Successfully!</h1><br>"), ScriptTransfer(a.caller, G, unit)]
9396 }
9497
9598
9699
97100 @Callable(a)
98-func DoVoting (G) = {
99- let u = if ((size(a.payments) == 1))
101+func DoVoting (H) = {
102+ let v = if ((size(a.payments) == 1))
100103 then a.payments[0]
101104 else throw("Ballet Token is required as Attached payment")
102- let H = toBase58String(a.caller.bytes)
105+ let I = toBase58String(a.caller.bytes)
103106 let i = base58'44Mq8KqUhM94t93MiBq3S22iiuGczMxpKmse5dBy2w5y'
104- let I = "Pass"
105- let j = base58'7RB3BWayeCVPq3kkpkeJZAFv2DYCB5gEwnutEpRofaw4'
106- let J = getIntegerValue(this, ("Voting_End_Height_" + G))
107- let K = getString(this, ("Pair_Under_Voting_" + G))
108- let L = getIntegerValue(this, ("Votes_Required_" + G))
109- let M = getIntegerValue(this, ("Votes_Received_" + G))
110- let N = getStringValue(this, ("Voting_Status_" + G))
111- let O = {
112- let P = getInteger(this, ("Votes_Received_" + G))
113- if ($isInstanceOf(P, "Int"))
107+ let J = "Pass"
108+ let j = base58'GyqTYDea3DWBaAyQs5S5uH2223ucELYFazJpZLCfMznU'
109+ let K = getIntegerValue(this, ("Voting_End_Height_" + H))
110+ let L = getString(this, ("Pair_Under_Voting_" + H))
111+ let M = getIntegerValue(this, ("Votes_Required_" + H))
112+ let N = getIntegerValue(this, ("Votes_Received_" + H))
113+ let O = getStringValue(this, ("Voting_Status_" + H))
114+ let P = {
115+ let Q = getInteger(this, ("Votes_Received_" + H))
116+ if ($isInstanceOf(Q, "Int"))
114117 then {
115- let Q = P
116- Q
118+ let R = Q
119+ R
117120 }
118121 else 0
119122 }
120- let R = (O + u.amount)
121- let S = {
122- let P = getInteger(this, ((("Votes_Received_" + H) + "_") + G))
123- if ($isInstanceOf(P, "Int"))
123+ let S = (P + v.amount)
124+ let T = {
125+ let Q = getInteger(this, ((("Votes_Received_" + I) + "_") + H))
126+ if ($isInstanceOf(Q, "Int"))
124127 then {
125- let T = P
126- T
128+ let U = Q
129+ U
127130 }
128131 else 0
129132 }
130- let U = (S + u.amount)
131- let V = (M >= L)
132- let W = valueOrErrorMessage(assetInfo(fromBase58String(G)), (("Asset " + G) + " doesn't exist"))
133- let X = W.decimals
134- if ((K != G))
133+ let V = (T + v.amount)
134+ let W = (N >= M)
135+ let X = valueOrErrorMessage(assetInfo(fromBase58String(H)), (("Asset " + H) + " doesn't exist"))
136+ let Y = X.decimals
137+ if ((L != H))
135138 then throw("Pair is not available in Voting List.")
136- else if ((height > J))
137- then throw((("Voting timeline for " + G) + " is expired."))
138- else if ((u.assetId != i))
139+ else if ((height > K))
140+ then throw((("Voting timeline for " + H) + " is expired."))
141+ else if ((v.assetId != i))
139142 then throw("Kindly Attach Only 44Mq8KqUhM94t93MiBq3S22iiuGczMxpKmse5dBy2w5y (Ballet).")
140- else if ((N == I))
141- then throw((("Voting for " + G) + " pair is completed and it’s available in whitelist."))
142- else if (V)
143- then [StringEntry(("Voting_Status_" + G), I), IntegerEntry(("Decimals_of_" + G), X), IntegerEntry(((("Old_Balance_of_" + G) + "_") + toBase58String(j)), 0), IntegerEntry(((("New_Balance_of_" + G) + "_") + toBase58String(j)), 0), IntegerEntry(((("Total_of_pair_Txns_" + G) + "_") + toBase58String(j)), 0), IntegerEntry("Total_of_Swaps_Txns", 0), IntegerEntry("Total_Swap_Fee_Collected", 0)]
144- else [IntegerEntry(("Votes_Received_" + G), R), IntegerEntry(((("Votes_Received_" + H) + "_") + G), U)]
143+ else if ((O == J))
144+ then throw((("Voting for " + H) + " pair is completed and it’s available in whitelist."))
145+ else if (W)
146+ then [StringEntry(("Voting_Status_" + H), J), IntegerEntry(("Decimals_of_" + H), Y), IntegerEntry(((("Old_Balance_of_" + H) + "_") + toBase58String(j)), 0), IntegerEntry(((("New_Balance_of_" + H) + "_") + toBase58String(j)), 0), IntegerEntry(((("Old_Balance_of_" + toBase58String(j)) + "_") + H), 0), IntegerEntry(((("New_Balance_of_" + toBase58String(j)) + "_") + H), 0), IntegerEntry(((("Total_of_pair_Txns_" + H) + "_") + toBase58String(j)), 0), IntegerEntry("Total_of_Swaps_Txns", 0), IntegerEntry("Total_Swap_Fee_Collected", 0)]
147+ else [IntegerEntry(("Votes_Received_" + H), S), IntegerEntry(((("Votes_Received_" + I) + "_") + H), V)]
145148 }
146149
147150
148151
149152 @Callable(a)
150-func WithdrawVotedTokens (G) = {
151- let u = a.payments[0]
152- let H = toBase58String(a.caller.bytes)
153+func WithdrawVotedTokens (H) = {
154+ let v = a.payments[0]
155+ let I = toBase58String(a.caller.bytes)
153156 let i = base58'44Mq8KqUhM94t93MiBq3S22iiuGczMxpKmse5dBy2w5y'
154- let J = getIntegerValue(this, ("Voting_End_Height_" + G))
155- let K = getString(this, ("Pair_Under_Voting_" + G))
156- let Y = getIntegerValue(this, ((("Votes_Received_" + H) + "_") + G))
157- let Z = (J - height)
158- if ((K != G))
157+ let K = getIntegerValue(this, ("Voting_End_Height_" + H))
158+ let L = getString(this, ("Pair_Under_Voting_" + H))
159+ let Z = getIntegerValue(this, ((("Votes_Received_" + I) + "_") + H))
160+ let aa = (K - height)
161+ if ((L != H))
159162 then throw("Pair is not available in Voting List.")
160- else if ((J > height))
161- then throw((("Voting Already Running. You can withdraw your Ballet Token only after the expire of " + toString(Z)) + " Blocks"))
162- else if ((0 >= Y))
163+ else if ((K > height))
164+ then throw((("Voting Already Running. You can withdraw your Ballet Token only after the expire of " + toString(aa)) + " Blocks"))
165+ else if ((0 >= Z))
163166 then throw("You don't have any dues of ballet balance in this Voting Pair.")
164- else if (isDefined(u.assetId))
165- then throw("Don't attach any asset. If you still want to support we accept only TN as payment.")
166- else if ((u.amount != 10000000))
167+ else if (isDefined(v.assetId))
168+ then throw("Don't attach any other asset. Please attach 0.1 TN as a fee to release your token")
169+ else if ((v.amount != 10000000))
167170 then throw("Please attach 0.1 TN as a fee to release your token.")
168- else [IntegerEntry(((("Votes_Received_" + H) + "_") + G), 0), ScriptTransfer(a.caller, Y, i)]
171+ else [IntegerEntry(((("Votes_Received_" + I) + "_") + H), 0), ScriptTransfer(a.caller, Z, i)]
169172 }
170173
171174
172175
173176 @Callable(a)
174-func SwapAssetToUSDTPairEntry (G) = {
175- let H = toBase58String(a.caller.bytes)
176- let u = if ((size(a.payments) == 1))
177+func SwapAssetToUSDTPairEntry (H) = {
178+ let I = toBase58String(a.caller.bytes)
179+ let v = if ((size(a.payments) == 1))
177180 then a.payments[0]
178181 else throw("Whitelisted Swap Token is required as Attached payment[1].")
179- let j = base58'7RB3BWayeCVPq3kkpkeJZAFv2DYCB5gEwnutEpRofaw4'
180- let K = getString(this, ("Pair_Under_Voting_" + G))
181- let N = getStringValue(this, ("Voting_Status_" + G))
182- let aa = getIntegerValue(this, ((("Price_Of_" + G) + "_") + toBase58String(j)))
183- let ab = getIntegerValue(this, ((("Old_Balance_of_" + G) + "_") + toBase58String(j)))
184- let ac = getIntegerValue(this, ("Decimals_of_" + G))
185- let ad = "Fail"
186- let ae = 1
187- let af = ac
188- let ag = 6
189- let ah = ((6 - af) - 8)
190- let ai = (((u.amount * aa) * pow(10, 0, ah, 0, 0, UP)) / pow(10, 0, af, 0, 0, UP))
191- let aj = assetBalance(this, base58'GyqTYDea3DWBaAyQs5S5uH2223ucELYFazJpZLCfMznU')
192- let ak = (aj - ai)
193- if ((K != G))
182+ let j = base58'GyqTYDea3DWBaAyQs5S5uH2223ucELYFazJpZLCfMznU'
183+ let L = getString(this, ("Pair_Under_Voting_" + H))
184+ let O = getStringValue(this, ("Voting_Status_" + H))
185+ let ab = getIntegerValue(this, ((("Price_Of_" + H) + "_") + toBase58String(j)))
186+ let ac = getIntegerValue(this, ((("Old_Balance_of_" + H) + "_") + toBase58String(j)))
187+ let ad = getIntegerValue(this, ((("Old_Balance_of_" + toBase58String(j)) + "_") + H))
188+ let ae = getIntegerValue(this, ("Decimals_of_" + H))
189+ let af = "Fail"
190+ let ag = 1
191+ let ah = ae
192+ let ai = 6
193+ let aj = ((6 - ah) - 8)
194+ let ak = (((v.amount * ab) * pow(10, 0, aj, 0, 0, UP)) / pow(10, 0, ah, 0, 0, UP))
195+ let al = assetBalance(this, j)
196+ let am = (al - ak)
197+ if ((L != H))
194198 then throw("Pair is not available in Whitelisted Asset.")
195- else if ((N == ad))
196- then throw((G + " is not A Whitelisted Token Yet."))
197- else if ((u.assetId == j))
198- then throw("You can't Attach USDT as an Attached Payment. Only Whitelisted Tokens are Accepted.")
199- else if ((u.assetId != fromBase58String(G)))
200- then throw(("Incorrect asset attached, please attach or send " + G))
201- else if ((10000 > ai))
202- then throw((("Your Attached Amount is very low. Attach More " + G) + " Token to Claim the minimum Amount of 1 cent atleast."))
203- else if ((ab == 0))
199+ else if ((O == af))
200+ then throw((H + " is not A Whitelisted Token Yet."))
201+ else if ((v.assetId == j))
202+ then throw("You can't Attach USDT as an Attached Payment. Only Whitelisted Tokens are accepted.")
203+ else if ((v.assetId != fromBase58String(H)))
204+ then throw(("Incorrect asset attached, please attach or send " + H))
205+ else if ((10000 > ak))
206+ then throw((("Your Attached Asset Amount is very low. Attach More " + H) + " Tokens to Claim the minimum Amount of 1 cent atleast."))
207+ else if ((ac == 0))
204208 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
205- else [IntegerEntry(((("Price_Of_" + G) + "_") + toBase58String(j)), aa), ScriptTransfer(a.caller, ((ai * 99) / 100), base58'GyqTYDea3DWBaAyQs5S5uH2223ucELYFazJpZLCfMznU'), ScriptTransfer(a.caller, ((ai * ae) / 100), base58'GyqTYDea3DWBaAyQs5S5uH2223ucELYFazJpZLCfMznU')]
209+ else if ((ad == 0))
210+ then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
211+ else [IntegerEntry(((("Price_Of_" + H) + "_") + toBase58String(j)), ab), ScriptTransfer(a.caller, ((ak * 99) / 100), j), ScriptTransfer(a.caller, ((ak * ag) / 100), j)]
206212 }
207213
208214
209215
210216 @Callable(a)
211-func SwapUSDTToAssetPairEntry (G) = {
212- let H = toBase58String(a.caller.bytes)
213- let u = if ((size(a.payments) == 1))
217+func SwapUSDTToAssetPairEntry (H) = {
218+ let I = toBase58String(a.caller.bytes)
219+ let v = if ((size(a.payments) == 1))
220+ then a.payments[0]
221+ else throw("Only USDT Token is required as an Attached payment[1].")
222+ let j = base58'GyqTYDea3DWBaAyQs5S5uH2223ucELYFazJpZLCfMznU'
223+ let L = getString(this, ("Pair_Under_Voting_" + H))
224+ let O = getStringValue(this, ("Voting_Status_" + H))
225+ let an = getIntegerValue(this, ((("ReversePrice_Of_" + H) + "_") + toBase58String(j)))
226+ let ae = getIntegerValue(this, ("Decimals_of_" + H))
227+ let af = "Fail"
228+ let ao = 1
229+ let ah = ae
230+ let ai = 6
231+ let aj = ((6 - ah) - 8)
232+ let ak = (v.amount / pow(10, 0, ah, 0, 0, UP))
233+ let ap = assetBalance(this, fromBase58String(H))
234+ let aq = (ap - ak)
235+ if ((L != H))
236+ then throw("Pair is not available in Whitelisted Asset.")
237+ else if ((O == af))
238+ then throw((H + " is not A Whitelisted Token Yet."))
239+ else if ((H == toBase58String(j)))
240+ then throw("Input can Never be a USDT AssetID. Enter AssetID in input and Attach USDT as attachment Token.")
241+ else if ((v.assetId != j))
242+ then throw("You can Attach USDT as an Attached Payment to Swap USDT To Required Token. Any other asset else than USDT will be rejected.")
243+ else if ((1000000 > v.amount))
244+ then throw("Your Attached USDT Amount is very low. Attach Atleast 1 USDT to Claim the minimum Tokens.")
245+ else [IntegerEntry(((("ReversePrice_Of_" + H) + "_") + toBase58String(j)), an), ScriptTransfer(a.caller, ((ak * 99) / 100), fromBase58String(H)), ScriptTransfer(a.caller, ((ak * ao) / 100), fromBase58String(H))]
246+ }
247+
248+
249+
250+@Callable(a)
251+func AddLiquidity (H) = {
252+ let I = toBase58String(a.caller.bytes)
253+ let v = if ((size(a.payments) == 1))
214254 then a.payments[0]
215255 else throw("Whitelisted Swap Token is required as Attached payment[1].")
216- let j = base58'7RB3BWayeCVPq3kkpkeJZAFv2DYCB5gEwnutEpRofaw4'
256+ let j = base58'GyqTYDea3DWBaAyQs5S5uH2223ucELYFazJpZLCfMznU'
217257 nil
218258 }
219259
220260
221261
222262 @Callable(a)
223-func AddLiquidity (G) = {
224- let H = toBase58String(a.caller.bytes)
225- let u = if ((size(a.payments) == 1))
226- then a.payments[0]
227- else throw("Whitelisted Swap Token is required as Attached payment[1].")
228- let j = base58'7RB3BWayeCVPq3kkpkeJZAFv2DYCB5gEwnutEpRofaw4'
229- nil
263+func RemovePairEntry (H) = {
264+ let ar = getStringValue(this, "Polarity_Admin_Rights")
265+ let j = base58'GyqTYDea3DWBaAyQs5S5uH2223ucELYFazJpZLCfMznU'
266+ let K = getIntegerValue(this, ("Voting_End_Height_" + H))
267+ let L = getString(this, ("Pair_Under_Voting_" + H))
268+ let O = getStringValue(this, ("Voting_Status_" + H))
269+ let J = "Pass"
270+ let I = toBase58String(a.caller.bytes)
271+ let as = height
272+ let aa = (K - height)
273+ if ((L != H))
274+ then throw("Pair is not available in Voting List.")
275+ else if ((ar != I))
276+ then throw((("I know You are not An Admin. Only " + ar) + " has rights to remove the pair."))
277+ else if ((K > height))
278+ then throw((("Voting Already Running. You can remove the pair after " + toString(aa)) + " Blocks"))
279+ else if ((O == J))
280+ then throw((H + " is now Whitelisted. So you can't remove it."))
281+ else [DeleteEntry(("Pair_Under_Voting_" + H)), DeleteEntry(("Voting_Start_Height_" + H)), DeleteEntry(("Voting_End_Height_" + H)), DeleteEntry(("Voting_Period_" + H)), DeleteEntry(("Votes_Required_" + H)), DeleteEntry(("Voting_Listing_Fee_" + H)), DeleteEntry(("Voting_Status_" + H)), DeleteEntry(("Votes_Received_" + H)), DeleteEntry(((("Price_Of_" + H) + "_") + toBase58String(j)))]
230282 }
231283
232284
233-
234-@Callable(a)
235-func RemovePairEntry (G) = {
236- let al = getStringValue(this, "Polarity_Admin_Rights")
237- let j = base58'7RB3BWayeCVPq3kkpkeJZAFv2DYCB5gEwnutEpRofaw4'
238- let J = getIntegerValue(this, ("Voting_End_Height_" + G))
239- let K = getString(this, ("Pair_Under_Voting_" + G))
240- let N = getStringValue(this, ("Voting_Status_" + G))
241- let I = "Pass"
242- let H = toBase58String(a.caller.bytes)
243- let am = height
244- let Z = (J - height)
245- if ((K != G))
246- then throw("Pair is not available in Voting List.")
247- else if ((al != H))
248- then throw((("I know You are not An Admin. Only " + al) + " has rights to remove the pair."))
249- else if ((J > height))
250- then throw((("Voting Already Running. You can remove the pair after " + toString(Z)) + " Blocks"))
251- else if ((N == I))
252- then throw((G + " is now Whitelisted. So you can't remove it."))
253- else [DeleteEntry(("Pair_Under_Voting_" + G)), DeleteEntry(("Voting_Start_Height_" + G)), DeleteEntry(("Voting_End_Height_" + G)), DeleteEntry(("Voting_Period_" + G)), DeleteEntry(("Votes_Required_" + G)), DeleteEntry(("Voting_Listing_Fee_" + G)), DeleteEntry(("Voting_Status_" + G)), DeleteEntry(("Votes_Received_" + G)), DeleteEntry(((("Price_Of_" + G) + "_") + toBase58String(j)))]
254- }
255-
256-
257-@Verifier(an)
258-func ao () = {
259- let P = an
260- sigVerify(an.bodyBytes, an.proofs[0], an.senderPublicKey)
285+@Verifier(at)
286+func au () = {
287+ let Q = at
288+ sigVerify(at.bodyBytes, at.proofs[0], at.senderPublicKey)
261289 }
262290

github/deemru/w8io/169f3d6 
85.48 ms