tx · 4zf1kkxY6RRgmPr7B4XkifUxHzrVN5fU4oDpprZMu5Mx

3NCroKxpCWCYijwjiVBg6hc2T7DaajrHuBr:  -0.02900000 Waves

2022.07.11 18:49 [2135272] smart account 3NCroKxpCWCYijwjiVBg6hc2T7DaajrHuBr > SELF 0.00000000 Waves

{ "type": 13, "id": "4zf1kkxY6RRgmPr7B4XkifUxHzrVN5fU4oDpprZMu5Mx", "fee": 2900000, "feeAssetId": null, "timestamp": 1657554601253, "version": 1, "sender": "3NCroKxpCWCYijwjiVBg6hc2T7DaajrHuBr", "senderPublicKey": "4j5ighurrUZ2WcdBTRGqBfXs5fz9YDA76D4gtpZ9basj", "proofs": [ "577FDXeCNLf5QbypYzcdnpmCupEDyai5848kcdZqjcXLfvV6yf4zbL2T6QdyrU3anz89YpCsAMK5EQszR1DZ96t5" ], "script": "base64:AAIFAAAAAAAAADQIAhIDCgEIEgkKBwgICAgBCAgSAwoBARIAEgASBQoDCAgIEgQKAggBEgMKAQgSAwoBCBIAAAAAOgAAAAADU0VQAgAAAAJfXwAAAAAFRU1QVFkCAAAAAAEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAQAAAANrZXkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkJAAEsAAAAAgIAAAAVTm8gZGF0YSBmb3IgdGhpcy5rZXk9BQAAAANrZXkBAAAAEGdldEJvb2xlYW5PckZhaWwAAAABAAAAA2tleQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGwAAAAIFAAAABHRoaXMFAAAAA2tleQkAASwAAAACAgAAABVObyBkYXRhIGZvciB0aGlzLmtleT0FAAAAA2tleQEAAAAHdGVzdGluZwAAAAEAAAADa2V5CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQbAAAAAgUAAAAEdGhpcwUAAAADa2V5CQABLAAAAAICAAAAFU5vIGRhdGEgZm9yIHRoaXMua2V5PQUAAAADa2V5AQAAABNrZXlNYW5hZ2VyUHVibGljS2V5AAAAAAkABLkAAAACCQAETAAAAAICAAAAAiVzCQAETAAAAAICAAAAEG1hbmFnZXJQdWJsaWNLZXkFAAAAA25pbAUAAAADU0VQAQAAABprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAAAAAJAAS5AAAAAgkABEwAAAACAgAAAAIlcwkABEwAAAACAgAAABdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQUAAAADbmlsBQAAAANTRVABAAAADmZhaWxFeGVjdXRlR2V0AAAABAAAAANtc2cAAAAMYmFzZUFzc2V0U3RyAAAADnVzZXJBZGRyZXNzU3RyAAAACmdldFR4SWRTdHIJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAADbXNnAgAAAA86IGJhc2VBc3NldFN0cj0FAAAADGJhc2VBc3NldFN0cgIAAAAQIHVzZXJBZGRyZXNzU3RyPQUAAAAOdXNlckFkZHJlc3NTdHICAAAADCBnZXRUeElkU3RyPQUAAAAKZ2V0VHhJZFN0cgEAAAAWa2V5QXNzZXRzU3RvcmVDb250cmFjdAAAAAAJAAS5AAAAAgkABEwAAAACAgAAAAIlcwkABEwAAAACAgAAABNhc3NldHNTdG9yZUNvbnRyYWN0BQAAAANuaWwFAAAAA1NFUAEAAAALa2V5QXNzZXRDZmcAAAABAAAADGJhc2VBc3NldFN0cgkAASwAAAACAgAAABclcyVzJXNfX2NvbmZpZ19fYXNzZXRfXwUAAAAMYmFzZUFzc2V0U3RyAQAAAA9rZXlQcm94eUFkZHJlc3MAAAABAAAAB2Fzc2V0SWQJAAS5AAAAAgkABEwAAAACAgAAAAQlcyVzCQAETAAAAAICAAAADHByb3h5QWRkcmVzcwkABEwAAAACBQAAAAdhc3NldElkBQAAAANuaWwFAAAAA1NFUAEAAAAKa2V5QmFsYW5jZQAAAAEAAAAHYXNzZXRJZAkABLkAAAACCQAETAAAAAICAAAABCVzJXMJAARMAAAAAgIAAAAHYmFsYW5jZQkABEwAAAACBQAAAAdhc3NldElkBQAAAANuaWwFAAAAA1NFUAEAAAAWa2V5TmV4dEludGVybmFsQXNzZXRJZAAAAAACAAAAFyVzX19uZXh0SW50ZXJuYWxBc3NldElkAQAAAAxrZXlQcmljZUxhc3QAAAABAAAAFWludGVybmFsQmFzZXRBc3NldFN0cgkAASwAAAACAgAAABUlcyVzJWRfX3ByaWNlX19sYXN0X18FAAAAFWludGVybmFsQmFzZXRBc3NldFN0cgEAAAASa2V5VG9wVXBMYXN0SGVpZ2h0AAAAAgAAABVpbnRlcm5hbEJhc2V0QXNzZXRTdHIAAAAGc2VuZGVyCQAEuQAAAAIJAARMAAAAAgIAAAAfJXMlcyVzJWQlc19fdG9wdXBfX2xhc3RfX2hlaWdodAkABEwAAAACBQAAABVpbnRlcm5hbEJhc2V0QXNzZXRTdHIJAARMAAAAAgUAAAAGc2VuZGVyBQAAAANuaWwFAAAAA1NFUAEAAAAPa2V5UHJpY2VIaXN0b3J5AAAAAwAAABVpbnRlcm5hbEJhc2V0QXNzZXRTdHIAAAABaAAAAAl0aW1lc3RhbXAJAAS5AAAAAgkABEwAAAACAgAAABolcyVzJWQlZCVkX19wcmljZV9faGlzdG9yeQkABEwAAAACBQAAABVpbnRlcm5hbEJhc2V0QXNzZXRTdHIJAARMAAAAAgkAAaQAAAABBQAAAAFoCQAETAAAAAIJAAGkAAAAAQUAAAAJdGltZXN0YW1wBQAAAANuaWwFAAAAA1NFUAEAAAAOa2V5VG90YWxMb2NrZWQAAAABAAAAFWludGVybmFsQmFzZXRBc3NldFN0cgkAASwAAAACAgAAABclcyVzJWRfX3RvdGFsX19sb2NrZWRfXwUAAAAVaW50ZXJuYWxCYXNldEFzc2V0U3RyAQAAABRrZXlUb3RhbExvY2tlZEJ5VXNlcgAAAAIAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIAAAAOdXNlckFkZHJlc3NTdHIJAAS5AAAAAgkABEwAAAACAgAAABclcyVzJWQlc19fdG90YWxfX2xvY2tlZAkABEwAAAACBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgkABEwAAAACBQAAAA51c2VyQWRkcmVzc1N0cgUAAAADbmlsBQAAAANTRVABAAAAH2tleU1hcHBpbmdzSW50ZXJuYWwyYmFzZUFzc2V0SWQAAAABAAAAEWludGVybmFsQmFzZUFzc2V0CQABLAAAAAICAAAAKCVzJXMlZF9fbWFwcGluZ3NfX2ludGVybmFsMmJhc2VBc3NldElkX18JAAGkAAAAAQUAAAARaW50ZXJuYWxCYXNlQXNzZXQBAAAAH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQAAAABAAAADGJhc2VBc3NldFN0cgkAASwAAAACAgAAACglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQAAAAxiYXNlQXNzZXRTdHIBAAAAHGtleU1hcHBpbmdzU2hhcmUyYmFzZUFzc2V0SWQAAAABAAAADXNoYXJlQXNzZXRTdHIJAAEsAAAAAgIAAAAlJXMlcyVzX19tYXBwaW5nc19fc2hhcmUyYmFzZUFzc2V0SWRfXwUAAAANc2hhcmVBc3NldFN0cgEAAAAca2V5TWFwcGluZ3NCYXNlQXNzZXQyc2hhcmVJZAAAAAEAAAAMYmFzZUFzc2V0U3RyCQABLAAAAAICAAAAJSVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJzaGFyZUlkX18FAAAADGJhc2VBc3NldFN0cgEAAAAXa2V5U2h1dGRvd25QdXRPcGVyYXRpb24AAAABAAAAFGludGVybmFsQmFzZUFzc2V0U3RyCQABLAAAAAICAAAAFyVzJXMlZF9fc2h1dGRvd25fX3B1dF9fBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgEAAAASa2V5U2h1dGRvd25NYW5hZ2VyAAAAAQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgkAASwAAAACAgAAABslcyVzJWRfX3NodXRkb3duX19tYW5hZ2VyX18FAAAAFGludGVybmFsQmFzZUFzc2V0U3RyAQAAABNhc3NldHNTdG9yZUNvbnRyYWN0AAAAAAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAABXZhbHVlAAAAAQkABCIAAAABCQEAAAAWa2V5QXNzZXRzU3RvcmVDb250cmFjdAAAAAAAAAAAEklkeENmZ1NoYXJlQXNzZXRJZAAAAAAAAAAAAQAAAAAXSWR4Q2ZnSW50ZXJuYWxCYXNlQXNzZXQAAAAAAAAAAAIAAAAAHElkeENmZ0RlY2ltYWxzTXVsdEJvdGhBc3NldHMAAAAAAAAAAAMAAAAAF0lkeENmZ0RlY2ltYWxzTXVsdFByaWNlAAAAAAAAAAAEAAAAABRJZHhDZmdHZXREZWxheUJsb2NrcwAAAAAAAAAABQEAAAAMZGF0YUFzc2V0Q2ZnAAAABQAAAA1zaGFyZUFzc2V0U3RyAAAAFGludGVybmFsQmFzZUFzc2V0U3RyAAAAFmRlY2ltYWxzTXVsdEJvdGhBc3NldHMAAAARZGVjaW1hbHNNdWx0UHJpY2UAAAAQZ2V0RGVsYXlJbkJsb2NrcwkABLkAAAACCQAETAAAAAICAAAACiVzJWQlZCVkJWQJAARMAAAAAgUAAAANc2hhcmVBc3NldFN0cgkABEwAAAACBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgkABEwAAAACCQABpAAAAAEFAAAAFmRlY2ltYWxzTXVsdEJvdGhBc3NldHMJAARMAAAAAgkAAaQAAAABBQAAABFkZWNpbWFsc011bHRQcmljZQkABEwAAAACCQABpAAAAAEFAAAAEGdldERlbGF5SW5CbG9ja3MFAAAAA25pbAUAAAADU0VQAAAAABNJZHhUb3RhbExvY2tlZFNoYXJlAAAAAAAAAAABAAAAABJJZHhUb3RhbExvY2tlZEJhc2UAAAAAAAAAAAIBAAAAD2RhdGFUb3RhbExvY2tlZAAAAAIAAAAQc2hhcmVBc3NldEFtb3VudAAAAA9iYXNlQXNzZXRBbW91bnQJAAS5AAAAAgkABEwAAAACAgAAAAQlZCVkCQAETAAAAAIJAAGkAAAAAQUAAAAQc2hhcmVBc3NldEFtb3VudAkABEwAAAACCQABpAAAAAEFAAAAD2Jhc2VBc3NldEFtb3VudAUAAAADbmlsBQAAAANTRVABAAAAD3JlYWRUb3RhbExvY2tlZAAAAAEAAAADa2V5BAAAABB0b3RhbExvY2tlZEFycmF5CQAEtQAAAAIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5CQEAAAAPZGF0YVRvdGFsTG9ja2VkAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAUAAAADU0VQCQAETAAAAAIA//////////8JAARMAAAAAgkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEHRvdGFsTG9ja2VkQXJyYXkFAAAAE0lkeFRvdGFsTG9ja2VkU2hhcmUJAARMAAAAAgkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEHRvdGFsTG9ja2VkQXJyYXkFAAAAEklkeFRvdGFsTG9ja2VkQmFzZQUAAAADbmlsAQAAAAxrZXlPcGVyYXRpb24AAAAEAAAADW9wZXJhdGlvblR5cGUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIAAAALdXNlckFkZHJlc3MAAAAEdHhJZAkABLkAAAACCQAETAAAAAICAAAACCVzJWQlcyVzCQAETAAAAAIFAAAADW9wZXJhdGlvblR5cGUJAARMAAAAAgUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIJAARMAAAAAgUAAAALdXNlckFkZHJlc3MJAARMAAAAAgUAAAAEdHhJZAUAAAADbmlsBQAAAANTRVAAAAAADUlkeE9wZXJTdGF0dXMAAAAAAAAAAAEAAAAAD0lkeE9wZXJJbkFtb3VudAAAAAAAAAAAAgAAAAAMSWR4T3BlclByaWNlAAAAAAAAAAADAAAAABBJZHhPcGVyT3V0QW1vdW50AAAAAAAAAAAEAAAAABJJZHhPcGVyU3RhcnRIZWlnaHQAAAAAAAAAAAUAAAAAFUlkeE9wZXJTdGFydFRpbWVzdGFtcAAAAAAAAAAABgAAAAAQSWR4T3BlckVuZEhlaWdodAAAAAAAAAAABwAAAAATSWR4T3BlckVuZFRpbWVzdGFtcAAAAAAAAAAACAEAAAAecHJpdmF0ZURhdGFPcGVyYXRpb25BbGxTdHJpbmdzAAAACAAAAAZzdGF0dXMAAAANaW5Bc3NldEFtb3VudAAAAAVwcmljZQAAAA5vdXRBc3NldEFtb3VudAAAAAtzdGFydEhlaWdodAAAAA5zdGFydFRpbWVzdGFtcAAAAAllbmRIZWlnaHQAAAAMZW5kVGltZXN0YW1wCQAEuQAAAAIJAARMAAAAAgIAAAAQJXMlZCVkJWQlZCVkJWQlZAkABEwAAAACBQAAAAZzdGF0dXMJAARMAAAAAgUAAAANaW5Bc3NldEFtb3VudAkABEwAAAACBQAAAAVwcmljZQkABEwAAAACBQAAAA5vdXRBc3NldEFtb3VudAkABEwAAAACBQAAAAtzdGFydEhlaWdodAkABEwAAAACBQAAAA5zdGFydFRpbWVzdGFtcAkABEwAAAACBQAAAAllbmRIZWlnaHQJAARMAAAAAgUAAAAMZW5kVGltZXN0YW1wBQAAAANuaWwFAAAAA1NFUAEAAAANZGF0YU9wZXJhdGlvbgAAAAgAAAAGc3RhdHVzAAAADWluQXNzZXRBbW91bnQAAAAFcHJpY2UAAAAOb3V0QXNzZXRBbW91bnQAAAALc3RhcnRIZWlnaHQAAAAOc3RhcnRUaW1lc3RhbXAAAAAJZW5kSGVpZ2h0AAAADGVuZFRpbWVzdGFtcAkBAAAAHnByaXZhdGVEYXRhT3BlcmF0aW9uQWxsU3RyaW5ncwAAAAgFAAAABnN0YXR1cwkAAaQAAAABBQAAAA1pbkFzc2V0QW1vdW50CQABpAAAAAEFAAAABXByaWNlCQABpAAAAAEFAAAADm91dEFzc2V0QW1vdW50CQABpAAAAAEFAAAAC3N0YXJ0SGVpZ2h0CQABpAAAAAEFAAAADnN0YXJ0VGltZXN0YW1wCQABpAAAAAEFAAAACWVuZEhlaWdodAkAAaQAAAABBQAAAAxlbmRUaW1lc3RhbXABAAAAHGRhdGFPcGVyYXRpb25FeGVjdXRpb25VcGRhdGUAAAADAAAADWN1cnJPcGVyQXJyYXkAAAAJbmV3U3RhdHVzAAAAD25ld0VuZFRpbWVzdGFtcAkBAAAAHnByaXZhdGVEYXRhT3BlcmF0aW9uQWxsU3RyaW5ncwAAAAgFAAAACW5ld1N0YXR1cwkAAZEAAAACBQAAAA1jdXJyT3BlckFycmF5BQAAAA9JZHhPcGVySW5BbW91bnQJAAGRAAAAAgUAAAANY3Vyck9wZXJBcnJheQUAAAAMSWR4T3BlclByaWNlCQABkQAAAAIFAAAADWN1cnJPcGVyQXJyYXkFAAAAEElkeE9wZXJPdXRBbW91bnQJAAGRAAAAAgUAAAANY3Vyck9wZXJBcnJheQUAAAASSWR4T3BlclN0YXJ0SGVpZ2h0CQABkQAAAAIFAAAADWN1cnJPcGVyQXJyYXkFAAAAFUlkeE9wZXJTdGFydFRpbWVzdGFtcAkAAZEAAAACBQAAAA1jdXJyT3BlckFycmF5BQAAABBJZHhPcGVyRW5kSGVpZ2h0CQABpAAAAAEFAAAAD25ld0VuZFRpbWVzdGFtcAEAAAAScmVhZEFzc2V0Q2ZnT3JGYWlsAAAAAQAAAAxiYXNlQXNzZXRTdHIEAAAAA2tleQkBAAAAC2tleUFzc2V0Q2ZnAAAAAQUAAAAMYmFzZUFzc2V0U3RyCQAEtQAAAAIJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAABBQAAAANrZXkFAAAAA1NFUAEAAAAUaW5jcmVtZW50VG90YWxMb2NrZWQAAAADAAAAA2tleQAAABBzaGFyZUFzc2V0QW1vdW50AAAAD2Jhc2VBc3NldEFtb3VudAQAAAAJZGF0YUFycmF5CQEAAAAPcmVhZFRvdGFsTG9ja2VkAAAAAQUAAAADa2V5CQEAAAALU3RyaW5nRW50cnkAAAACBQAAAANrZXkJAQAAAA9kYXRhVG90YWxMb2NrZWQAAAACCQAAZAAAAAIJAAGRAAAAAgUAAAAJZGF0YUFycmF5BQAAABNJZHhUb3RhbExvY2tlZFNoYXJlBQAAABBzaGFyZUFzc2V0QW1vdW50CQAAZAAAAAIJAAGRAAAAAgUAAAAJZGF0YUFycmF5BQAAABJJZHhUb3RhbExvY2tlZEJhc2UFAAAAD2Jhc2VBc3NldEFtb3VudAEAAAAUZGVjcmVtZW50VG90YWxMb2NrZWQAAAADAAAAA2tleQAAABBzaGFyZUFzc2V0QW1vdW50AAAAD2Jhc2VBc3NldEFtb3VudAQAAAAJZGF0YUFycmF5CQEAAAAPcmVhZFRvdGFsTG9ja2VkAAAAAQUAAAADa2V5CQEAAAALU3RyaW5nRW50cnkAAAACBQAAAANrZXkJAQAAAA9kYXRhVG90YWxMb2NrZWQAAAACCQAAZQAAAAIJAAGRAAAAAgUAAAAJZGF0YUFycmF5BQAAABNJZHhUb3RhbExvY2tlZFNoYXJlBQAAABBzaGFyZUFzc2V0QW1vdW50CQAAZQAAAAIJAAGRAAAAAgUAAAAJZGF0YUFycmF5BQAAABJJZHhUb3RhbExvY2tlZEJhc2UFAAAAD2Jhc2VBc3NldEFtb3VudAEAAAAWbWFuYWdlclB1YmxpY0tleU9yVW5pdAAAAAAEAAAAByRtYXRjaDAJAAQiAAAAAQkBAAAAE2tleU1hbmFnZXJQdWJsaWNLZXkAAAAAAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXMFAAAAByRtYXRjaDAJAAJZAAAAAQUAAAABcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAUAAAAEdW5pdAkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgEAAAAdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQAAAAABAAAAAckbWF0Y2gwCQAEIgAAAAEJAQAAABprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAAAAADCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABcwUAAAAHJG1hdGNoMAkAAlkAAAABBQAAAAFzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BQAAAAR1bml0CQAAAgAAAAECAAAAC01hdGNoIGVycm9yAQAAAA1iYWxhbmNlT3JaZXJvAAAAAQAAAAdhc3NldElkCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHwAAAAEJAQAAAAprZXlCYWxhbmNlAAAAAQUAAAAHYXNzZXRJZAAAAAAAAAAAAAEAAAAJY2FsY1ByaWNlAAAABgAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgAAAAtiYXNlQXNzZXRJZAAAAA90b3BVcEJhc2VBbW91bnQAAAAMc2hhcmVBc3NldElkAAAAFmRlY2ltYWxzTXVsdEJvdGhBc3NldHMAAAARZGVjaW1hbHNNdWx0UHJpY2UEAAAAEHRvdGFsTG9ja2VkQXJyYXkJAQAAAA9yZWFkVG90YWxMb2NrZWQAAAABCQEAAAAOa2V5VG90YWxMb2NrZWQAAAABBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgQAAAAVdG90YWxMb2NrZWRCYXNlQW1vdW50CQABkQAAAAIFAAAAEHRvdGFsTG9ja2VkQXJyYXkFAAAAEklkeFRvdGFsTG9ja2VkQmFzZQQAAAAQYmFzZUFzc2V0QmFsYW5jZQkBAAAADWJhbGFuY2VPclplcm8AAAABCQACWAAAAAEFAAAAC2Jhc2VBc3NldElkBAAAAB9iYXNlQXNzZXRCYWxhbmNlQ29uc2lkZXJpbmdMb2NrCQAAZAAAAAIFAAAAEGJhc2VBc3NldEJhbGFuY2UFAAAAD3RvcFVwQmFzZUFtb3VudAMJAABmAAAAAgAAAAAAAAAAAAUAAAAfYmFzZUFzc2V0QmFsYW5jZUNvbnNpZGVyaW5nTG9jawkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAADZiYXNlQXNzZXRCYWxhbmNlQ29uc2lkZXJpbmdMb2NrIDwgMDogYmFzZUFzc2V0QmFsYW5jZT0JAAGkAAAAAQUAAAAQYmFzZUFzc2V0QmFsYW5jZQIAAAAhIGJhc2VBc3NldEJhbGFuY2VDb25zaWRlcmluZ0xvY2s9CQABpAAAAAEFAAAAH2Jhc2VBc3NldEJhbGFuY2VDb25zaWRlcmluZ0xvY2sEAAAADXNoYXJlRW1pc3Npb24ICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAADHNoYXJlQXNzZXRJZAAAAAhxdWFudGl0eQQAAAAFcHJpY2UDCQAAAAAAAAIFAAAADXNoYXJlRW1pc3Npb24AAAAAAAAAAAAJAABoAAAAAgAAAAAAAAAAAQUAAAARZGVjaW1hbHNNdWx0UHJpY2UJAABrAAAAAwUAAAAfYmFzZUFzc2V0QmFsYW5jZUNvbnNpZGVyaW5nTG9jawUAAAARZGVjaW1hbHNNdWx0UHJpY2UFAAAADXNoYXJlRW1pc3Npb24JAAUXAAAABQUAAAAFcHJpY2UFAAAAEGJhc2VBc3NldEJhbGFuY2UFAAAAFXRvdGFsTG9ja2VkQmFzZUFtb3VudAUAAAAfYmFzZUFzc2V0QmFsYW5jZUNvbnNpZGVyaW5nTG9jawUAAAANc2hhcmVFbWlzc2lvbgEAAAAIZ2V0UHJpY2UAAAAFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyAAAAC2Jhc2VBc3NldElkAAAADHNoYXJlQXNzZXRJZAAAABZkZWNpbWFsc011bHRCb3RoQXNzZXRzAAAAEWRlY2ltYWxzTXVsdFByaWNlBAAAABB0b3RhbExvY2tlZEFycmF5CQEAAAAPcmVhZFRvdGFsTG9ja2VkAAAAAQkBAAAADmtleVRvdGFsTG9ja2VkAAAAAQUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIEAAAAFXRvdGFsTG9ja2VkQmFzZUFtb3VudAkAAZEAAAACBQAAABB0b3RhbExvY2tlZEFycmF5BQAAABJJZHhUb3RhbExvY2tlZEJhc2UEAAAAEGJhc2VBc3NldEJhbGFuY2UJAQAAAA1iYWxhbmNlT3JaZXJvAAAAAQkAAlgAAAABBQAAAAtiYXNlQXNzZXRJZAQAAAAfYmFzZUFzc2V0QmFsYW5jZUNvbnNpZGVyaW5nTG9jawUAAAAQYmFzZUFzc2V0QmFsYW5jZQQAAAANc2hhcmVFbWlzc2lvbggJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAAMc2hhcmVBc3NldElkAAAACHF1YW50aXR5BAAAAAVwcmljZQkBAAAABXZhbHVlAAAAAQkABB8AAAABCQEAAAAMa2V5UHJpY2VMYXN0AAAAAQUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIJAAUXAAAABQUAAAAFcHJpY2UFAAAAEGJhc2VBc3NldEJhbGFuY2UFAAAAFXRvdGFsTG9ja2VkQmFzZUFtb3VudAUAAAAfYmFzZUFzc2V0QmFsYW5jZUNvbnNpZGVyaW5nTG9jawUAAAANc2hhcmVFbWlzc2lvbgEAAAAbcHJpdmF0ZUN1cnJlbnRTeXNQYXJhbXNSRVNUAAAAAQAAAAxiYXNlQXNzZXRTdHIEAAAAC2Jhc2VBc3NldElkCQACWQAAAAEFAAAADGJhc2VBc3NldFN0cgQAAAAIY2ZnQXJyYXkJAQAAABJyZWFkQXNzZXRDZmdPckZhaWwAAAABBQAAAAxiYXNlQXNzZXRTdHIEAAAADXNoYXJlQXNzZXRTdHIJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAEklkeENmZ1NoYXJlQXNzZXRJZAQAAAAMc2hhcmVBc3NldElkCQACWQAAAAEFAAAADXNoYXJlQXNzZXRTdHIEAAAAFmRlY2ltYWxzTXVsdEJvdGhBc3NldHMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAAcSWR4Q2ZnRGVjaW1hbHNNdWx0Qm90aEFzc2V0cwQAAAARZGVjaW1hbHNNdWx0UHJpY2UJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAAXSWR4Q2ZnRGVjaW1hbHNNdWx0UHJpY2UEAAAAFGludGVybmFsQmFzZUFzc2V0U3RyCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABdJZHhDZmdJbnRlcm5hbEJhc2VBc3NldAQAAAAIc3lzU3RhdGUJAQAAAAhnZXRQcmljZQAAAAUFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAAAtiYXNlQXNzZXRJZAUAAAAMc2hhcmVBc3NldElkBQAAABZkZWNpbWFsc011bHRCb3RoQXNzZXRzBQAAABFkZWNpbWFsc011bHRQcmljZQQAAAAPdG9wVXBMYXN0SGVpZ2h0BAAAAAckbWF0Y2gwCQAEHwAAAAEJAQAAABJrZXlUb3BVcExhc3RIZWlnaHQAAAACBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgkBAAAAEUBleHRyTmF0aXZlKDEwNTgpAAAAAQkBAAAAD2tleVByb3h5QWRkcmVzcwAAAAEFAAAADGJhc2VBc3NldFN0cgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFoBQAAAAckbWF0Y2gwCQEAAAAFdmFsdWUAAAABBQAAAAFoAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0CQEAAAARQGV4dHJOYXRpdmUoMTA1NSkAAAABCQEAAAASa2V5VG9wVXBMYXN0SGVpZ2h0AAAAAgUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIJAAQlAAAAAQkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQkAAlkAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1OCkAAAABCQEAAAATa2V5TWFuYWdlclB1YmxpY0tleQAAAAAJAAACAAAAAQIAAAA4dW5kZWZpbmVkIGJlaGF2aW91ciBpbiBwcml2YXRlQ3VycmVudFN5c1BhcmFtc1JFU1QgbWF0Y2gJAAUaAAAACAkBAAAADEludGVnZXJFbnRyeQAAAAICAAAABXByaWNlCAUAAAAIc3lzU3RhdGUAAAACXzEJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABFkZWNpbWFsc011bHRQcmljZQUAAAARZGVjaW1hbHNNdWx0UHJpY2UJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABBiYXNlQXNzZXRCYWxhbmNlCAUAAAAIc3lzU3RhdGUAAAACXzIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABV0b3RhbExvY2tlZEJhc2VBbW91bnQIBQAAAAhzeXNTdGF0ZQAAAAJfMwkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAH2Jhc2VBc3NldEJhbGFuY2VDb25zaWRlcmluZ0xvY2sIBQAAAAhzeXNTdGF0ZQAAAAJfNAkBAAAADEludGVnZXJFbnRyeQAAAAICAAAADXNoYXJlRW1pc3Npb24IBQAAAAhzeXNTdGF0ZQAAAAJfNQkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAEWJhc2VBc3NldERlY2ltYWxzCAkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAAtiYXNlQXNzZXRJZAAAAAhkZWNpbWFscwkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAEmxhc3RUb3BVcFRpbWVzdGFtcAgJAQAAAAV2YWx1ZQAAAAEJAAPtAAAAAQUAAAAPdG9wVXBMYXN0SGVpZ2h0AAAACXRpbWVzdGFtcAEAAAALbXVzdE1hbmFnZXIAAAABAAAAAWkEAAAAAnBkCQAAAgAAAAECAAAAEXBlcm1pc3Npb24gZGVuaWVkBAAAAAckbWF0Y2gwCQEAAAAWbWFuYWdlclB1YmxpY0tleU9yVW5pdAAAAAADCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACkJ5dGVWZWN0b3IEAAAAAnBrBQAAAAckbWF0Y2gwAwkAAAAAAAACCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkFAAAAAnBrBgUAAAACcGQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQDCQAAAAAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwYFAAAAAnBkCQAAAgAAAAECAAAAC01hdGNoIGVycm9yAQAAABBtdXN0UHJveHlBZGRyZXNzAAAAAgAAAAFpAAAAB2Fzc2V0SWQEAAAAB2lzUHJveHkJAAAAAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQiAAAAAQkBAAAAD2tleVByb3h5QWRkcmVzcwAAAAEFAAAAB2Fzc2V0SWQFAAAABUVNUFRZAwUAAAAHaXNQcm94eQYEAAAAC2NoZWNrQ2FsbGVyCQEAAAALbXVzdE1hbmFnZXIAAAABBQAAAAFpAwkAAAAAAAACBQAAAAtjaGVja0NhbGxlcgUAAAALY2hlY2tDYWxsZXIGCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAoAAAABaQEAAAALY29uc3RydWN0b3IAAAABAAAAE2Fzc2V0c1N0b3JlQ29udHJhY3QEAAAAC2NoZWNrQ2FsbGVyCQEAAAALbXVzdE1hbmFnZXIAAAABBQAAAAFpAwkAAAAAAAACBQAAAAtjaGVja0NhbGxlcgUAAAALY2hlY2tDYWxsZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAFmtleUFzc2V0c1N0b3JlQ29udHJhY3QAAAAABQAAABNhc3NldHNTdG9yZUNvbnRyYWN0BQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAEmFkbWluUmVnaXN0ZXJBc3NldAAAAAcAAAAMYmFzZUFzc2V0U3RyAAAADnNoYXJlQXNzZXROYW1lAAAAD3NoYXJlQXNzZXREZXNjcgAAAA5zaGFyZUFzc2V0TG9nbwAAABBnZXREZWxheWluQmxvY2tzAAAAFnNodXRkb3duTWFuYWdlckFkZHJlc3MAAAAMcHJveHlBZGRyZXNzBAAAAAtiYXNlQXNzZXRJZAkAAlkAAAABBQAAAAxiYXNlQXNzZXRTdHIEAAAACGRlY2ltYWxzCAkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAAtiYXNlQXNzZXRJZAAAAAhkZWNpbWFscwQAAAAFY2hlY2sJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAABWNoZWNrBQAAAAVjaGVjawMJAQAAAAIhPQAAAAIJAAQlAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAAWc2h1dGRvd25NYW5hZ2VyQWRkcmVzcwUAAAAWc2h1dGRvd25NYW5hZ2VyQWRkcmVzcwkAAAIAAAABAgAAAB5pbnZhbGlkIHNodXRkb3duTWFuYWdlckFkZHJlc3MDCQAAZgAAAAIAAAAAAAAAAAAFAAAAEGdldERlbGF5aW5CbG9ja3MJAAACAAAAAQkAASwAAAACAgAAABlpbnZhbGlkIGdldERlbGF5aW5CbG9ja3M9CQABpAAAAAEFAAAAEGdldERlbGF5aW5CbG9ja3MEAAAAFXNoYXJlQXNzZXRJc3N1ZUFjdGlvbgkABEIAAAAFBQAAAA5zaGFyZUFzc2V0TmFtZQUAAAAPc2hhcmVBc3NldERlc2NyAAAAAAAAAAABBQAAAAhkZWNpbWFscwYEAAAADHNoYXJlQXNzZXRJZAkABDgAAAABBQAAABVzaGFyZUFzc2V0SXNzdWVBY3Rpb24EAAAADXNoYXJlQXNzZXRTdHIJAAJYAAAAAQUAAAAMc2hhcmVBc3NldElkBAAAABFkZWNpbWFsc011bHRQcmljZQkAAGgAAAACCQAAaAAAAAIAAAAAAAAAAGQAAAAAAAAAA+gAAAAAAAAAA+gEAAAAFmRlY2ltYWxzTXVsdEJvdGhBc3NldHMJAABsAAAABgAAAAAAAAAACgAAAAAAAAAAAAUAAAAIZGVjaW1hbHMAAAAAAAAAAAAAAAAAAAAAAAAFAAAABERPV04EAAAACnN0YXJ0UHJpY2UJAABoAAAAAgAAAAAAAAAAAQUAAAARZGVjaW1hbHNNdWx0UHJpY2UEAAAAFGludGVybmFsQmFzZUFzc2V0dElkCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAABZrZXlOZXh0SW50ZXJuYWxBc3NldElkAAAAAAAAAAAAAAAAAAQAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIJAAGkAAAAAQUAAAAUaW50ZXJuYWxCYXNlQXNzZXR0SWQEAAAADmNyZWF0ZU9yVXBkYXRlCQAD/AAAAAQJAQAAABNhc3NldHNTdG9yZUNvbnRyYWN0AAAAAAIAAAAOY3JlYXRlT3JVcGRhdGUJAARMAAAAAgUAAAANc2hhcmVBc3NldFN0cgkABEwAAAACBQAAAA5zaGFyZUFzc2V0TG9nbwkABEwAAAACBwUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAADmNyZWF0ZU9yVXBkYXRlBQAAAA5jcmVhdGVPclVwZGF0ZQQAAAAIYWRkTGFiZWwJAAP8AAAABAkBAAAAE2Fzc2V0c1N0b3JlQ29udHJhY3QAAAAAAgAAAAhhZGRMYWJlbAkABEwAAAACBQAAAA1zaGFyZUFzc2V0U3RyCQAETAAAAAICAAAABERFRkkFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAAhhZGRMYWJlbAUAAAAIYWRkTGFiZWwJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAC2tleUFzc2V0Q2ZnAAAAAQUAAAAMYmFzZUFzc2V0U3RyCQEAAAAMZGF0YUFzc2V0Q2ZnAAAABQUAAAANc2hhcmVBc3NldFN0cgUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIFAAAAFmRlY2ltYWxzTXVsdEJvdGhBc3NldHMFAAAAEWRlY2ltYWxzTXVsdFByaWNlBQAAABBnZXREZWxheWluQmxvY2tzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAB9rZXlNYXBwaW5nc0ludGVybmFsMmJhc2VBc3NldElkAAAAAQUAAAAUaW50ZXJuYWxCYXNlQXNzZXR0SWQFAAAADGJhc2VBc3NldFN0cgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAAAAAEFAAAADGJhc2VBc3NldFN0cgUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAHGtleU1hcHBpbmdzU2hhcmUyYmFzZUFzc2V0SWQAAAABBQAAAA1zaGFyZUFzc2V0U3RyBQAAAAxiYXNlQXNzZXRTdHIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAHGtleU1hcHBpbmdzQmFzZUFzc2V0MnNoYXJlSWQAAAABBQAAAAxiYXNlQXNzZXRTdHIFAAAADXNoYXJlQXNzZXRTdHIJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAQAAABdrZXlTaHV0ZG93blB1dE9wZXJhdGlvbgAAAAEFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAASa2V5U2h1dGRvd25NYW5hZ2VyAAAAAQUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIFAAAAFnNodXRkb3duTWFuYWdlckFkZHJlc3MJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABZrZXlOZXh0SW50ZXJuYWxBc3NldElkAAAAAAkAAGQAAAACBQAAABRpbnRlcm5hbEJhc2VBc3NldHRJZAAAAAAAAAAAAQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAADGtleVByaWNlTGFzdAAAAAEFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAAApzdGFydFByaWNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAPa2V5UHJpY2VIaXN0b3J5AAAAAwUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAFAAAACnN0YXJ0UHJpY2UJAARMAAAAAgUAAAAVc2hhcmVBc3NldElzc3VlQWN0aW9uCQAETAAAAAIJAQAAAARCdXJuAAAAAgUAAAAMc2hhcmVBc3NldElkAAAAAAAAAAABCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA9rZXlQcm94eUFkZHJlc3MAAAABBQAAAAxiYXNlQXNzZXRTdHIFAAAADHByb3h5QWRkcmVzcwUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAC3NodXRkb3duUHV0AAAAAQAAABNpbnRlcm5hbEJhc2VBc3NldElkBAAAABZpbnRlcm5hbEJhc2VBc3NldElkU3RyCQABpAAAAAEFAAAAE2ludGVybmFsQmFzZUFzc2V0SWQEAAAADmJhc2VBc3NldElkU3RyCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAQkBAAAAH2tleU1hcHBpbmdzSW50ZXJuYWwyYmFzZUFzc2V0SWQAAAABBQAAABNpbnRlcm5hbEJhc2VBc3NldElkBAAAABZzaHV0ZG93bk1hbmFnZXJBZGRyZXNzCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAQkBAAAAEmtleVNodXRkb3duTWFuYWdlcgAAAAEFAAAAFmludGVybmFsQmFzZUFzc2V0SWRTdHIDCQAAZgAAAAIAAAAAAAAAAAEJAAExAAAAAQUAAAAOYmFzZUFzc2V0SWRTdHIJAAACAAAAAQIAAAAbaW52YWxpZCBpbnRlcm5hbEJhc2VBc3NldElkAwkBAAAAAiE9AAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAFnNodXRkb3duTWFuYWdlckFkZHJlc3MJAAACAAAAAQIAAAANYWNjZXNzIGRlbmllZAkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkBAAAAF2tleVNodXRkb3duUHV0T3BlcmF0aW9uAAAAAQkAAaQAAAABBQAAABNpbnRlcm5hbEJhc2VBc3NldElkBgUAAAADbmlsAAAAAWkBAAAAA3B1dAAAAAAEAAAAA3BtdAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAALYmFzZUFzc2V0SWQJAQAAAAV2YWx1ZQAAAAEIBQAAAANwbXQAAAAHYXNzZXRJZAQAAAAMYmFzZUFzc2V0U3RyCQACWAAAAAEFAAAAC2Jhc2VBc3NldElkBAAAAA51c2VyQWRkcmVzc1N0cgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAACGNmZ0FycmF5CQEAAAAScmVhZEFzc2V0Q2ZnT3JGYWlsAAAAAQUAAAAMYmFzZUFzc2V0U3RyBAAAAA1zaGFyZUFzc2V0U3RyCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABJJZHhDZmdTaGFyZUFzc2V0SWQEAAAADHNoYXJlQXNzZXRJZAkAAlkAAAABBQAAAA1zaGFyZUFzc2V0U3RyBAAAABZkZWNpbWFsc011bHRCb3RoQXNzZXRzCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAHElkeENmZ0RlY2ltYWxzTXVsdEJvdGhBc3NldHMEAAAAEWRlY2ltYWxzTXVsdFByaWNlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAF0lkeENmZ0RlY2ltYWxzTXVsdFByaWNlBAAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAAXSWR4Q2ZnSW50ZXJuYWxCYXNlQXNzZXQEAAAADGlzUHV0QmxvY2tlZAkBAAAAEGdldEJvb2xlYW5PckZhaWwAAAABCQEAAAAXa2V5U2h1dGRvd25QdXRPcGVyYXRpb24AAAABBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgMFAAAADGlzUHV0QmxvY2tlZAkAAAIAAAABAgAAABhwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQEAAAACm5ld0JhbGFuY2UJAABkAAAAAgkBAAAADWJhbGFuY2VPclplcm8AAAABBQAAAAxiYXNlQXNzZXRTdHIIBQAAAANwbXQAAAAGYW1vdW50BAAAAAVwcmljZQgJAQAAAAhnZXRQcmljZQAAAAUFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAAAtiYXNlQXNzZXRJZAUAAAAMc2hhcmVBc3NldElkBQAAABZkZWNpbWFsc011bHRCb3RoQXNzZXRzBQAAABFkZWNpbWFsc011bHRQcmljZQAAAAJfMQQAAAAQc2hhcmVBc3NldEFtb3VudAkBAAAACGZyYWN0aW9uAAAABAgFAAAAA3BtdAAAAAZhbW91bnQFAAAAEWRlY2ltYWxzTXVsdFByaWNlBQAAAAVwcmljZQUAAAAHQ0VJTElORwkABEwAAAACCQEAAAAHUmVpc3N1ZQAAAAMFAAAADHNoYXJlQXNzZXRJZAUAAAAQc2hhcmVBc3NldEFtb3VudAYJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAABBzaGFyZUFzc2V0QW1vdW50BQAAAAxzaGFyZUFzc2V0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADGtleU9wZXJhdGlvbgAAAAQCAAAAAVAFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAAA51c2VyQWRkcmVzc1N0cgkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkCQEAAAANZGF0YU9wZXJhdGlvbgAAAAgCAAAACEZJTklTSEVECAUAAAADcG10AAAABmFtb3VudAUAAAAFcHJpY2UFAAAAEHNoYXJlQXNzZXRBbW91bnQFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAABXZhbHVlAAAAAQkABCIAAAABCQEAAAAPa2V5UHJveHlBZGRyZXNzAAAAAQUAAAAMYmFzZUFzc2V0U3RyCAUAAAADcG10AAAABmFtb3VudAUAAAALYmFzZUFzc2V0SWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAprZXlCYWxhbmNlAAAAAQUAAAAMYmFzZUFzc2V0U3RyBQAAAApuZXdCYWxhbmNlBQAAAANuaWwAAAABaQEAAAAQc3VibWl0R2V0UmVxdWVzdAAAAAAEAAAAA3BtdAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAMc2hhcmVBc3NldElkCQEAAAAFdmFsdWUAAAABCAUAAAADcG10AAAAB2Fzc2V0SWQEAAAADXNoYXJlQXNzZXRTdHIJAAJYAAAAAQUAAAAMc2hhcmVBc3NldElkBAAAAAxjYWxsZXJQdWJTdHIJAAJYAAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BAAAAAt1c2VyQWRkcmVzcwgFAAAAAWkAAAAGY2FsbGVyBAAAAA51c2VyQWRkcmVzc1N0cgkABCUAAAABBQAAAAt1c2VyQWRkcmVzcwQAAAAQc2hhcmVBc3NldEFtb3VudAgFAAAAA3BtdAAAAAZhbW91bnQEAAAADGJhc2VBc3NldFN0cgkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAEJAQAAABxrZXlNYXBwaW5nc1NoYXJlMmJhc2VBc3NldElkAAAAAQUAAAANc2hhcmVBc3NldFN0cgQAAAALYmFzZUFzc2V0SWQJAAJZAAAAAQUAAAAMYmFzZUFzc2V0U3RyBAAAAAhjZmdBcnJheQkBAAAAEnJlYWRBc3NldENmZ09yRmFpbAAAAAEFAAAADGJhc2VBc3NldFN0cgQAAAAWZGVjaW1hbHNNdWx0Qm90aEFzc2V0cwkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABxJZHhDZmdEZWNpbWFsc011bHRCb3RoQXNzZXRzBAAAABFkZWNpbWFsc011bHRQcmljZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABdJZHhDZmdEZWNpbWFsc011bHRQcmljZQQAAAAOZ2V0RGVsYXlCbG9ja3MJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAAUSWR4Q2ZnR2V0RGVsYXlCbG9ja3MEAAAAFGludGVybmFsQmFzZUFzc2V0U3RyCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABdJZHhDZmdJbnRlcm5hbEJhc2VBc3NldAQAAAAFcHJpY2UICQEAAAAIZ2V0UHJpY2UAAAAFBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgUAAAALYmFzZUFzc2V0SWQFAAAADHNoYXJlQXNzZXRJZAUAAAAWZGVjaW1hbHNNdWx0Qm90aEFzc2V0cwUAAAARZGVjaW1hbHNNdWx0UHJpY2UAAAACXzEEAAAAD2Jhc2VBc3NldEFtb3VudAkAAGsAAAADBQAAABBzaGFyZUFzc2V0QW1vdW50BQAAAAVwcmljZQUAAAARZGVjaW1hbHNNdWx0UHJpY2UEAAAADG9wZXJhdGlvbktleQkBAAAADGtleU9wZXJhdGlvbgAAAAQCAAAAAUcFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAAA51c2VyQWRkcmVzc1N0cgkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBAAAAA1vcGVyYXRpb25EYXRhCQEAAAANZGF0YU9wZXJhdGlvbgAAAAgCAAAAB1BFTkRJTkcFAAAAEHNoYXJlQXNzZXRBbW91bnQFAAAABXByaWNlBQAAAA9iYXNlQXNzZXRBbW91bnQFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAJAABkAAAAAgUAAAAGaGVpZ2h0BQAAAA5nZXREZWxheUJsb2NrcwAAAAAAAAAAAAkABEwAAAACCQEAAAAEQnVybgAAAAIFAAAADHNoYXJlQXNzZXRJZAUAAAAQc2hhcmVBc3NldEFtb3VudAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAxvcGVyYXRpb25LZXkFAAAADW9wZXJhdGlvbkRhdGEJAARMAAAAAgkBAAAAFGluY3JlbWVudFRvdGFsTG9ja2VkAAAAAwkBAAAADmtleVRvdGFsTG9ja2VkAAAAAQUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIFAAAAEHNoYXJlQXNzZXRBbW91bnQFAAAAD2Jhc2VBc3NldEFtb3VudAkABEwAAAACCQEAAAAUaW5jcmVtZW50VG90YWxMb2NrZWQAAAADCQEAAAAUa2V5VG90YWxMb2NrZWRCeVVzZXIAAAACBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgUAAAAOdXNlckFkZHJlc3NTdHIFAAAAEHNoYXJlQXNzZXRBbW91bnQFAAAAD2Jhc2VBc3NldEFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAACmtleUJhbGFuY2UAAAABBQAAAAxiYXNlQXNzZXRTdHIJAABlAAAAAgkBAAAADWJhbGFuY2VPclplcm8AAAABBQAAAAxiYXNlQXNzZXRTdHIFAAAAD2Jhc2VBc3NldEFtb3VudAUAAAADbmlsAAAAAWkBAAAAEWV4ZWN1dGVHZXRSZXF1ZXN0AAAAAwAAAAxiYXNlQXNzZXRTdHIAAAAOdXNlckFkZHJlc3NTdHIAAAAKZ2V0VHhJZFN0cgQAAAALdXNlckFkZHJlc3MJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAADnVzZXJBZGRyZXNzU3RyBAAAAA1hc3NldENmZ0FycmF5CQEAAAAScmVhZEFzc2V0Q2ZnT3JGYWlsAAAAAQUAAAAMYmFzZUFzc2V0U3RyBAAAAAxzaGFyZUFzc2V0SWQJAAJZAAAAAQkAAZEAAAACBQAAAA1hc3NldENmZ0FycmF5BQAAABJJZHhDZmdTaGFyZUFzc2V0SWQEAAAAC2Jhc2VBc3NldElkCQACWQAAAAEFAAAADGJhc2VBc3NldFN0cgQAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIJAAGRAAAAAgUAAAANYXNzZXRDZmdBcnJheQUAAAAXSWR4Q2ZnSW50ZXJuYWxCYXNlQXNzZXQEAAAADG9wZXJhdGlvbktleQkBAAAADGtleU9wZXJhdGlvbgAAAAQCAAAAAUcFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAAA51c2VyQWRkcmVzc1N0cgUAAAAKZ2V0VHhJZFN0cgQAAAAOb3BlcmF0aW9uQXJyYXkJAAS1AAAAAgkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAEFAAAADG9wZXJhdGlvbktleQUAAAADU0VQBAAAAAZzdGF0dXMJAAGRAAAAAgUAAAAOb3BlcmF0aW9uQXJyYXkFAAAADUlkeE9wZXJTdGF0dXMEAAAACWVuZEhlaWdodAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAADm9wZXJhdGlvbkFycmF5BQAAABBJZHhPcGVyRW5kSGVpZ2h0BAAAAA1pblNoYXJlQW1vdW50CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAOb3BlcmF0aW9uQXJyYXkFAAAAD0lkeE9wZXJJbkFtb3VudAQAAAANb3V0QmFzZUFtb3VudAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAADm9wZXJhdGlvbkFycmF5BQAAABBJZHhPcGVyT3V0QW1vdW50AwkBAAAAAiE9AAAAAgUAAAAGc3RhdHVzAgAAAAdQRU5ESU5HCQEAAAAOZmFpbEV4ZWN1dGVHZXQAAAAEAgAAABVTdGF0dXMgaXMgbm90IFBFTkRJTkcFAAAADGJhc2VBc3NldFN0cgUAAAAOdXNlckFkZHJlc3NTdHIFAAAACmdldFR4SWRTdHIDCQAAZgAAAAIFAAAACWVuZEhlaWdodAUAAAAGaGVpZ2h0CQEAAAAOZmFpbEV4ZWN1dGVHZXQAAAAECQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAApFbmRIZWlnaHRbCQABpAAAAAEFAAAACWVuZEhlaWdodAIAAAAEXSA+IAkAAaQAAAABBQAAAAZoZWlnaHQFAAAADGJhc2VBc3NldFN0cgUAAAAOdXNlckFkZHJlc3NTdHIFAAAACmdldFR4SWRTdHIJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAALdXNlckFkZHJlc3MFAAAADW91dEJhc2VBbW91bnQFAAAAC2Jhc2VBc3NldElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAADG9wZXJhdGlvbktleQkBAAAAHGRhdGFPcGVyYXRpb25FeGVjdXRpb25VcGRhdGUAAAADBQAAAA5vcGVyYXRpb25BcnJheQIAAAAIRklOSVNIRUQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wCQAETAAAAAIJAQAAABRkZWNyZW1lbnRUb3RhbExvY2tlZAAAAAMJAQAAAA5rZXlUb3RhbExvY2tlZAAAAAEFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAAA1pblNoYXJlQW1vdW50BQAAAA1vdXRCYXNlQW1vdW50CQAETAAAAAIJAQAAABRkZWNyZW1lbnRUb3RhbExvY2tlZAAAAAMJAQAAABRrZXlUb3RhbExvY2tlZEJ5VXNlcgAAAAIFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAAA51c2VyQWRkcmVzc1N0cgUAAAANaW5TaGFyZUFtb3VudAUAAAANb3V0QmFzZUFtb3VudAUAAAADbmlsAAAAAWkBAAAADHRvcFVwQmFsYW5jZQAAAAIAAAAMYmFzZUFzc2V0U3RyAAAABWRlbHRhBAAAAA1hc3NldENmZ0FycmF5CQEAAAAScmVhZEFzc2V0Q2ZnT3JGYWlsAAAAAQUAAAAMYmFzZUFzc2V0U3RyBAAAAANwbXQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAACnBtdEFzc2V0SWQJAQAAAAV2YWx1ZQAAAAEIBQAAAANwbXQAAAAHYXNzZXRJZAQAAAALcG10QXNzZXRTdHIJAAJYAAAAAQUAAAAKcG10QXNzZXRJZAQAAAAMc2hhcmVBc3NldElkCQACWQAAAAEJAAGRAAAAAgUAAAANYXNzZXRDZmdBcnJheQUAAAASSWR4Q2ZnU2hhcmVBc3NldElkBAAAABZkZWNpbWFsc011bHRCb3RoQXNzZXRzCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAANYXNzZXRDZmdBcnJheQUAAAAcSWR4Q2ZnRGVjaW1hbHNNdWx0Qm90aEFzc2V0cwQAAAARZGVjaW1hbHNNdWx0UHJpY2UJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAA1hc3NldENmZ0FycmF5BQAAABdJZHhDZmdEZWNpbWFsc011bHRQcmljZQQAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIJAAGRAAAAAgUAAAANYXNzZXRDZmdBcnJheQUAAAAXSWR4Q2ZnSW50ZXJuYWxCYXNlQXNzZXQEAAAAEnRvcFVwTGFzdEhlaWdodEtFWQkBAAAAEmtleVRvcFVwTGFzdEhlaWdodAAAAAIFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAPdG9wVXBMYXN0SGVpZ2h0CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAEnRvcFVwTGFzdEhlaWdodEtFWQAAAAAAAAAAAAQAAAAGY2hlY2tzCQAETAAAAAIJAQAAABBtdXN0UHJveHlBZGRyZXNzAAAAAgUAAAABaQUAAAAMYmFzZUFzc2V0U3RyCQAETAAAAAIDCQEAAAACIT0AAAACBQAAAA90b3BVcExhc3RIZWlnaHQFAAAABmhlaWdodAYJAAACAAAAAQIAAAAjb25seSBvbmUgdG9wVXAgcGVyIGJsb2NrIGlzIGFsbG93ZWQJAARMAAAAAgMJAABmAAAAAgUAAAAFZGVsdGEAAAAAAAAAAAAGCQAAAgAAAAECAAAAHm9ubHkgcG9zaXRpdmUgZGVsdGEgaXMgYWxsb3dlZAUAAAADbmlsAwkAAAAAAAACBQAAAAZjaGVja3MFAAAABmNoZWNrcwMJAQAAAAIhPQAAAAIFAAAADGJhc2VBc3NldFN0cgUAAAALcG10QXNzZXRTdHIJAAACAAAAAQIAAAA+YXR0YWNoZWQgcGF5bWVudCdzIGFzc2V0IGlkIGlzIE5PVCBtYXRjaGVkIHBhc3NlZCBiYXNlQXNzZXRTdHIDCQAAZgAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEJAAACAAAAAQIAAAAgb25seSBvbmUgcGF5bWVudCBjYW4gYmUgYXR0YWNoZWQEAAAABXByaWNlCAkBAAAACWNhbGNQcmljZQAAAAYFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAAApwbXRBc3NldElkBQAAAAVkZWx0YQUAAAAMc2hhcmVBc3NldElkBQAAABZkZWNpbWFsc011bHRCb3RoQXNzZXRzBQAAABFkZWNpbWFsc011bHRQcmljZQAAAAJfMQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAADGtleVByaWNlTGFzdAAAAAEFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAAAVwcmljZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAD2tleVByaWNlSGlzdG9yeQAAAAMFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAAAZoZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wBQAAAAVwcmljZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAASdG9wVXBMYXN0SGVpZ2h0S0VZBQAAAAZoZWlnaHQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAprZXlCYWxhbmNlAAAAAQUAAAALcG10QXNzZXRTdHIJAABkAAAAAgkBAAAADWJhbGFuY2VPclplcm8AAAABBQAAAAtwbXRBc3NldFN0cgUAAAAFZGVsdGEFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAUY3VycmVudFN5c1BhcmFtc1JFU1QAAAABAAAADGJhc2VBc3NldFN0cgQAAAANc3lzU3RhdGVUdXBsZQkBAAAAG3ByaXZhdGVDdXJyZW50U3lzUGFyYW1zUkVTVAAAAAEFAAAADGJhc2VBc3NldFN0cgQAAAAFcHJpY2UICAUAAAANc3lzU3RhdGVUdXBsZQAAAAJfMQAAAAV2YWx1ZQQAAAARZGVjaW1hbHNNdWx0UHJpY2UICAUAAAANc3lzU3RhdGVUdXBsZQAAAAJfMgAAAAV2YWx1ZQQAAAAQYmFzZUFzc2V0QmFsYW5jZQgIBQAAAA1zeXNTdGF0ZVR1cGxlAAAAAl8zAAAABXZhbHVlBAAAABV0b3RhbExvY2tlZEJhc2VBbW91bnQICAUAAAANc3lzU3RhdGVUdXBsZQAAAAJfNAAAAAV2YWx1ZQQAAAAfYmFzZUFzc2V0QmFsYW5jZUNvbnNpZGVyaW5nTG9jawgIBQAAAA1zeXNTdGF0ZVR1cGxlAAAAAl81AAAABXZhbHVlBAAAAA1zaGFyZUVtaXNzaW9uCAgFAAAADXN5c1N0YXRlVHVwbGUAAAACXzYAAAAFdmFsdWUEAAAACHJlc3REYXRhCQAEuQAAAAIJAARMAAAAAgIAAAAZc3RhcnRDdXJyZW50U3lzUGFyYW1zUkVTVAkABEwAAAACCQABpAAAAAEFAAAABXByaWNlCQAETAAAAAIJAAGkAAAAAQUAAAARZGVjaW1hbHNNdWx0UHJpY2UJAARMAAAAAgkAAaQAAAABBQAAABBiYXNlQXNzZXRCYWxhbmNlCQAETAAAAAIJAAGkAAAAAQUAAAAVdG90YWxMb2NrZWRCYXNlQW1vdW50CQAETAAAAAIJAAGkAAAAAQUAAAAfYmFzZUFzc2V0QmFsYW5jZUNvbnNpZGVyaW5nTG9jawkABEwAAAACCQABpAAAAAEFAAAADXNoYXJlRW1pc3Npb24JAARMAAAAAgIAAAAXZW5kQ3VycmVudFN5c1BhcmFtc1JFU1QFAAAAA25pbAUAAAADU0VQCQAAAgAAAAEFAAAACHJlc3REYXRhAAAAAWkBAAAACnNldE1hbmFnZXIAAAABAAAAF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BAAAAAtjaGVja0NhbGxlcgkBAAAAC211c3RNYW5hZ2VyAAAAAQUAAAABaQMJAAAAAAAAAgUAAAALY2hlY2tDYWxsZXIFAAAAC2NoZWNrQ2FsbGVyBAAAABVjaGVja01hbmFnZXJQdWJsaWNLZXkJAAJZAAAAAQUAAAAXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkDCQAAAAAAAAIFAAAAFWNoZWNrTWFuYWdlclB1YmxpY0tleQUAAAAVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAAAAAFAAAAF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAA5jb25maXJtTWFuYWdlcgAAAAAEAAAAAnBtCQEAAAAdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQAAAAABAAAAAVoYXNQTQMJAQAAAAlpc0RlZmluZWQAAAABBQAAAAJwbQYJAAACAAAAAQIAAAASbm8gcGVuZGluZyBtYW5hZ2VyAwkAAAAAAAACBQAAAAVoYXNQTQUAAAAFaGFzUE0EAAAAB2NoZWNrUE0DCQAAAAAAAAIIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQkBAAAABXZhbHVlAAAAAQUAAAACcG0GCQAAAgAAAAECAAAAG3lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAAAAAAAAgUAAAAHY2hlY2tQTQUAAAAHY2hlY2tQTQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAATa2V5TWFuYWdlclB1YmxpY0tleQAAAAAJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQUAAAACcG0JAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAAAAAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAABAAAAA90YXJnZXRQdWJsaWNLZXkEAAAAByRtYXRjaDAJAQAAABZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAAAAAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAACcGsFAAAAByRtYXRjaDAFAAAAAnBrAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0CAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5CQAAAgAAAAECAAAAC01hdGNoIGVycm9yCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAAPdGFyZ2V0UHVibGljS2V5OiIJ+Q==", "chainId": 84, "height": 2135272, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9WgyJ9kYPrLnwcfnuHMWqGJ83DAv3oDm3bg4mXifZxm1 Next: AmbdhwFckrBqxHR5pqY6f5bFMUUa3VhsCmhT3t1XrG88 Diff:
OldNewDifferences
1111 func e (d) = valueOrErrorMessage(getBoolean(this, d), ("No data for this.key=" + d))
1212
1313
14-func f () = makeString(["%s", "managerPublicKey"], a)
14+func f (d) = valueOrErrorMessage(getBoolean(this, d), ("No data for this.key=" + d))
1515
1616
17-func g () = makeString(["%s", "pendingManagerPublicKey"], a)
17+func g () = makeString(["%s", "managerPublicKey"], a)
1818
1919
20-func h (i,j,k,l) = throw(((((((i + ": baseAssetStr=") + j) + " userAddressStr=") + k) + " getTxIdStr=") + l))
20+func h () = makeString(["%s", "pendingManagerPublicKey"], a)
2121
2222
23-func m () = makeString(["%s", "assetsStoreContract"], a)
23+func i (j,k,l,m) = throw(((((((j + ": baseAssetStr=") + k) + " userAddressStr=") + l) + " getTxIdStr=") + m))
2424
2525
26-func n (j) = ("%s%s%s__config__asset__" + j)
26+func n () = makeString(["%s", "assetsStoreContract"], a)
2727
2828
29-func o (p) = makeString(["%s%s", "proxyAddress", p], a)
29+func o (k) = ("%s%s%s__config__asset__" + k)
3030
3131
32-func q (p) = makeString(["%s%s", "balance", p], a)
32+func p (q) = makeString(["%s%s", "proxyAddress", q], a)
3333
3434
35-func r () = "%s__nextInternalAssetId"
35+func r (q) = makeString(["%s%s", "balance", q], a)
3636
3737
38-func s (t) = ("%s%s%d__price__last__" + t)
38+func s () = "%s__nextInternalAssetId"
3939
4040
41-func u (t,v) = makeString(["%s%s%s%d%s__topup__last__height", t, v], a)
41+func t (u) = ("%s%s%d__price__last__" + u)
4242
4343
44-func w (t,x,y) = makeString(["%s%s%d%d%d__price__history", t, toString(x), toString(y)], a)
44+func v (u,w) = makeString(["%s%s%s%d%s__topup__last__height", u, w], a)
4545
4646
47-func z (t) = ("%s%s%d__total__locked__" + t)
47+func x (u,y,z) = makeString(["%s%s%d%d%d__price__history", u, toString(y), toString(z)], a)
4848
4949
50-func A (B,k) = makeString(["%s%s%d%s__total__locked", B, k], a)
50+func A (u) = ("%s%s%d__total__locked__" + u)
5151
5252
53-func C (D) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(D))
53+func B (C,l) = makeString(["%s%s%d%s__total__locked", C, l], a)
5454
5555
56-func E (j) = ("%s%s%s__mappings__baseAsset2internalId__" + j)
56+func D (E) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(E))
5757
5858
59-func F (G) = ("%s%s%s__mappings__share2baseAssetId__" + G)
59+func F (k) = ("%s%s%s__mappings__baseAsset2internalId__" + k)
6060
6161
62-func H (j) = ("%s%s%s__mappings__baseAsset2shareId__" + j)
62+func G (H) = ("%s%s%s__mappings__share2baseAssetId__" + H)
6363
6464
65-func I (B) = ("%s%s%d__shutdown__put__" + B)
65+func I (k) = ("%s%s%s__mappings__baseAsset2shareId__" + k)
6666
6767
68-func J (B) = ("%s%s%d__shutdown__manager__" + B)
68+func J (C) = ("%s%s%d__shutdown__put__" + C)
6969
7070
71-func K () = addressFromStringValue(value(getString(m())))
71+func K (C) = ("%s%s%d__shutdown__manager__" + C)
7272
7373
74-let L = 1
75-
76-let M = 2
77-
78-let N = 3
79-
80-let O = 4
81-
82-let P = 5
83-
84-func Q (G,B,R,S,T) = makeString(["%s%d%d%d%d", G, B, toString(R), toString(S), toString(T)], a)
74+func L () = addressFromStringValue(value(getString(n())))
8575
8676
87-let U = 1
77+let M = 1
8878
89-let V = 2
79+let N = 2
9080
91-func W (X,Y) = makeString(["%d%d", toString(X), toString(Y)], a)
81+let O = 3
82+
83+let P = 4
84+
85+let Q = 5
86+
87+func R (H,C,S,T,U) = makeString(["%s%d%d%d%d", H, C, toString(S), toString(T), toString(U)], a)
9288
9389
94-func Z (d) = {
95- let aa = split(valueOrElse(getString(this, d), W(0, 0)), a)
96-[-1, parseIntValue(aa[U]), parseIntValue(aa[V])]
90+let V = 1
91+
92+let W = 2
93+
94+func X (Y,Z) = makeString(["%d%d", toString(Y), toString(Z)], a)
95+
96+
97+func aa (d) = {
98+ let ab = split(valueOrElse(getString(this, d), X(0, 0)), a)
99+[-1, parseIntValue(ab[V]), parseIntValue(ab[W])]
97100 }
98101
99102
100-func ab (ac,B,ad,ae) = makeString(["%s%d%s%s", ac, B, ad, ae], a)
103+func ac (ad,C,ae,af) = makeString(["%s%d%s%s", ad, C, ae, af], a)
101104
102105
103-let af = 1
106+let ag = 1
104107
105-let ag = 2
108+let ah = 2
106109
107-let ah = 3
110+let ai = 3
108111
109-let ai = 4
112+let aj = 4
110113
111-let aj = 5
114+let ak = 5
112115
113-let ak = 6
116+let al = 6
114117
115-let al = 7
118+let am = 7
116119
117-let am = 8
120+let an = 8
118121
119-func an (ao,ap,aq,ar,as,at,au,av) = makeString(["%s%d%d%d%d%d%d%d", ao, ap, aq, ar, as, at, au, av], a)
122+func ao (ap,aq,ar,as,at,au,av,aw) = makeString(["%s%d%d%d%d%d%d%d", ap, aq, ar, as, at, au, av, aw], a)
120123
121124
122-func aw (ao,ap,aq,ar,as,at,au,av) = an(ao, toString(ap), toString(aq), toString(ar), toString(as), toString(at), toString(au), toString(av))
125+func ax (ap,aq,ar,as,at,au,av,aw) = ao(ap, toString(aq), toString(ar), toString(as), toString(at), toString(au), toString(av), toString(aw))
123126
124127
125-func ax (ay,az,aA) = an(az, ay[ag], ay[ah], ay[ai], ay[aj], ay[ak], ay[al], toString(aA))
128+func ay (az,aA,aB) = ao(aA, az[ah], az[ai], az[aj], az[ak], az[al], az[am], toString(aB))
126129
127130
128-func aB (j) = {
129- let d = n(j)
131+func aC (k) = {
132+ let d = o(k)
130133 split(c(d), a)
131134 }
132135
133136
134-func aC (d,X,Y) = {
135- let aD = Z(d)
136- StringEntry(d, W((aD[U] + X), (aD[V] + Y)))
137+func aD (d,Y,Z) = {
138+ let aE = aa(d)
139+ StringEntry(d, X((aE[V] + Y), (aE[W] + Z)))
137140 }
138141
139142
140-func aE (d,X,Y) = {
141- let aD = Z(d)
142- StringEntry(d, W((aD[U] - X), (aD[V] - Y)))
143+func aF (d,Y,Z) = {
144+ let aE = aa(d)
145+ StringEntry(d, X((aE[V] - Y), (aE[W] - Z)))
143146 }
144147
145148
146-func aF () = {
147- let aG = getString(f())
148- if ($isInstanceOf(aG, "String"))
149+func aG () = {
150+ let aH = getString(g())
151+ if ($isInstanceOf(aH, "String"))
149152 then {
150- let aH = aG
151- fromBase58String(aH)
153+ let aI = aH
154+ fromBase58String(aI)
152155 }
153- else if ($isInstanceOf(aG, "Unit"))
156+ else if ($isInstanceOf(aH, "Unit"))
154157 then unit
155158 else throw("Match error")
156159 }
157160
158161
159-func aI () = {
160- let aG = getString(g())
161- if ($isInstanceOf(aG, "String"))
162+func aJ () = {
163+ let aH = getString(h())
164+ if ($isInstanceOf(aH, "String"))
162165 then {
163- let aH = aG
164- fromBase58String(aH)
166+ let aI = aH
167+ fromBase58String(aI)
165168 }
166- else if ($isInstanceOf(aG, "Unit"))
169+ else if ($isInstanceOf(aH, "Unit"))
167170 then unit
168171 else throw("Match error")
169172 }
170173
171174
172-func aJ (p) = valueOrElse(getInteger(q(p)), 0)
175+func aK (q) = valueOrElse(getInteger(r(q)), 0)
173176
174177
175-func aK (B,aL,aM,aN,R,S) = {
176- let aa = Z(z(B))
177- let aO = aa[V]
178- let aP = aJ(toBase58String(aL))
179- let aQ = (aP + aM)
180- if ((0 > aQ))
181- then throw(((("baseAssetBalanceConsideringLock < 0: baseAssetBalance=" + toString(aP)) + " baseAssetBalanceConsideringLock=") + toString(aQ)))
178+func aL (C,aM,aN,aO,S,T) = {
179+ let ab = aa(A(C))
180+ let aP = ab[W]
181+ let aQ = aK(toBase58String(aM))
182+ let aR = (aQ + aN)
183+ if ((0 > aR))
184+ then throw(((("baseAssetBalanceConsideringLock < 0: baseAssetBalance=" + toString(aQ)) + " baseAssetBalanceConsideringLock=") + toString(aR)))
182185 else {
183- let aR = value(assetInfo(aN)).quantity
184- let aq = if ((aR == 0))
185- then (1 * S)
186- else fraction(aQ, S, aR)
187- $Tuple5(aq, aP, aO, aQ, aR)
186+ let aS = value(assetInfo(aO)).quantity
187+ let ar = if ((aS == 0))
188+ then (1 * T)
189+ else fraction(aR, T, aS)
190+ $Tuple5(ar, aQ, aP, aR, aS)
188191 }
189192 }
190193
191194
192-func aS (B,aL,aN,R,S) = {
193- let aa = Z(z(B))
194- let aO = aa[V]
195- let aP = aJ(toBase58String(aL))
196- let aQ = aP
197- let aR = value(assetInfo(aN)).quantity
198- let aq = value(getInteger(s(B)))
199- $Tuple5(aq, aP, aO, aQ, aR)
195+func aT (C,aM,aO,S,T) = {
196+ let ab = aa(A(C))
197+ let aP = ab[W]
198+ let aQ = aK(toBase58String(aM))
199+ let aR = aQ
200+ let aS = value(assetInfo(aO)).quantity
201+ let ar = value(getInteger(t(C)))
202+ $Tuple5(ar, aQ, aP, aR, aS)
200203 }
201204
202205
203-func aT (j) = {
204- let aL = fromBase58String(j)
205- let aU = aB(j)
206- let G = aU[L]
207- let aN = fromBase58String(G)
208- let R = parseIntValue(aU[N])
209- let S = parseIntValue(aU[O])
210- let B = aU[M]
211- let aV = aS(B, aL, aN, R, S)
212- let aW = {
213- let aG = getInteger(u(B, getStringValue(o(j))))
214- if ($isInstanceOf(aG, "Int"))
206+func aU (k) = {
207+ let aM = fromBase58String(k)
208+ let aV = aC(k)
209+ let H = aV[M]
210+ let aO = fromBase58String(H)
211+ let S = parseIntValue(aV[O])
212+ let T = parseIntValue(aV[P])
213+ let C = aV[N]
214+ let aW = aT(C, aM, aO, S, T)
215+ let aX = {
216+ let aH = getInteger(v(C, getStringValue(p(k))))
217+ if ($isInstanceOf(aH, "Int"))
215218 then {
216- let x = aG
217- value(x)
219+ let y = aH
220+ value(y)
218221 }
219- else if ($isInstanceOf(aG, "Unit"))
220- then getIntegerValue(u(B, toString(addressFromPublicKey(fromBase58String(getStringValue(f()))))))
222+ else if ($isInstanceOf(aH, "Unit"))
223+ then getIntegerValue(v(C, toString(addressFromPublicKey(fromBase58String(getStringValue(g()))))))
221224 else throw("undefined behaviour in privateCurrentSysParamsREST match")
222225 }
223- $Tuple8(IntegerEntry("price", aV._1), IntegerEntry("decimalsMultPrice", S), IntegerEntry("baseAssetBalance", aV._2), IntegerEntry("totalLockedBaseAmount", aV._3), IntegerEntry("baseAssetBalanceConsideringLock", aV._4), IntegerEntry("shareEmission", aV._5), IntegerEntry("baseAssetDecimals", value(assetInfo(aL)).decimals), IntegerEntry("lastTopUpTimestamp", value(blockInfoByHeight(aW)).timestamp))
226+ $Tuple8(IntegerEntry("price", aW._1), IntegerEntry("decimalsMultPrice", T), IntegerEntry("baseAssetBalance", aW._2), IntegerEntry("totalLockedBaseAmount", aW._3), IntegerEntry("baseAssetBalanceConsideringLock", aW._4), IntegerEntry("shareEmission", aW._5), IntegerEntry("baseAssetDecimals", value(assetInfo(aM)).decimals), IntegerEntry("lastTopUpTimestamp", value(blockInfoByHeight(aX)).timestamp))
224227 }
225228
226229
227-func aX (aY) = {
228- let aZ = throw("permission denied")
229- let aG = aF()
230- if ($isInstanceOf(aG, "ByteVector"))
230+func aY (aZ) = {
231+ let ba = throw("permission denied")
232+ let aH = aG()
233+ if ($isInstanceOf(aH, "ByteVector"))
231234 then {
232- let ba = aG
233- if ((aY.callerPublicKey == ba))
235+ let bb = aH
236+ if ((aZ.callerPublicKey == bb))
234237 then true
235- else aZ
238+ else ba
236239 }
237- else if ($isInstanceOf(aG, "Unit"))
238- then if ((aY.caller == this))
240+ else if ($isInstanceOf(aH, "Unit"))
241+ then if ((aZ.caller == this))
239242 then true
240- else aZ
243+ else ba
241244 else throw("Match error")
242245 }
243246
244247
245-func bb (aY,p) = {
246- let bc = (toString(aY.caller) == valueOrElse(getString(o(p)), b))
247- if (bc)
248+func bc (aZ,q) = {
249+ let bd = (toString(aZ.caller) == valueOrElse(getString(p(q)), b))
250+ if (bd)
248251 then true
249252 else {
250- let bd = aX(aY)
251- if ((bd == bd))
253+ let be = aY(aZ)
254+ if ((be == be))
252255 then true
253256 else throw("Strict value is not equal to itself.")
254257 }
255258 }
256259
257260
258-@Callable(aY)
259-func constructor (K) = {
260- let bd = aX(aY)
261- if ((bd == bd))
262- then [StringEntry(m(), K)]
261+@Callable(aZ)
262+func constructor (L) = {
263+ let be = aY(aZ)
264+ if ((be == be))
265+ then [StringEntry(n(), L)]
263266 else throw("Strict value is not equal to itself.")
264267 }
265268
266269
267270
268-@Callable(aY)
269-func adminRegisterAsset (j,be,bf,bg,bh,bi,bj) = {
270- let aL = fromBase58String(j)
271- let bk = value(assetInfo(aL)).decimals
272- let bl = aX(aY)
273- if ((bl == bl))
274- then if ((toString(addressFromStringValue(bi)) != bi))
271+@Callable(aZ)
272+func adminRegisterAsset (k,bf,bg,bh,bi,bj,bk) = {
273+ let aM = fromBase58String(k)
274+ let bl = value(assetInfo(aM)).decimals
275+ let bm = aY(aZ)
276+ if ((bm == bm))
277+ then if ((toString(addressFromStringValue(bj)) != bj))
275278 then throw("invalid shutdownManagerAddress")
276- else if ((0 > bh))
277- then throw(("invalid getDelayinBlocks=" + toString(bh)))
279+ else if ((0 > bi))
280+ then throw(("invalid getDelayinBlocks=" + toString(bi)))
278281 else {
279- let bm = Issue(be, bf, 1, bk, true)
280- let aN = calculateAssetId(bm)
281- let G = toBase58String(aN)
282- let S = ((100 * 1000) * 1000)
283- let R = pow(10, 0, bk, 0, 0, DOWN)
284- let bn = (1 * S)
285- let bo = valueOrElse(getInteger(this, r()), 0)
286- let B = toString(bo)
287- let bp = invoke(K(), "createOrUpdate", [G, bg, false], nil)
288- if ((bp == bp))
282+ let bn = Issue(bf, bg, 1, bl, true)
283+ let aO = calculateAssetId(bn)
284+ let H = toBase58String(aO)
285+ let T = ((100 * 1000) * 1000)
286+ let S = pow(10, 0, bl, 0, 0, DOWN)
287+ let bo = (1 * T)
288+ let bp = valueOrElse(getInteger(this, s()), 0)
289+ let C = toString(bp)
290+ let bq = invoke(L(), "createOrUpdate", [H, bh, false], nil)
291+ if ((bq == bq))
289292 then {
290- let bq = invoke(K(), "addLabel", [G, "DEFI"], nil)
291- if ((bq == bq))
292- then [StringEntry(n(j), Q(G, B, R, S, bh)), StringEntry(C(bo), j), StringEntry(E(j), B), StringEntry(F(G), j), StringEntry(H(j), G), BooleanEntry(I(B), false), StringEntry(J(B), bi), IntegerEntry(r(), (bo + 1)), IntegerEntry(s(B), bn), IntegerEntry(w(B, height, lastBlock.timestamp), bn), bm, Burn(aN, 1), StringEntry(o(j), bj)]
293+ let br = invoke(L(), "addLabel", [H, "DEFI"], nil)
294+ if ((br == br))
295+ then [StringEntry(o(k), R(H, C, S, T, bi)), StringEntry(D(bp), k), StringEntry(F(k), C), StringEntry(G(H), k), StringEntry(I(k), H), BooleanEntry(J(C), false), StringEntry(K(C), bj), IntegerEntry(s(), (bp + 1)), IntegerEntry(t(C), bo), IntegerEntry(x(C, height, lastBlock.timestamp), bo), bn, Burn(aO, 1), StringEntry(p(k), bk)]
293296 else throw("Strict value is not equal to itself.")
294297 }
295298 else throw("Strict value is not equal to itself.")
299302
300303
301304
302-@Callable(aY)
303-func shutdownPut (br) = {
304- let bs = toString(br)
305- let bt = c(C(br))
306- let bi = c(J(bs))
307- if ((1 > size(bt)))
305+@Callable(aZ)
306+func shutdownPut (bs) = {
307+ let bt = toString(bs)
308+ let bu = c(D(bs))
309+ let bj = c(K(bt))
310+ if ((1 > size(bu)))
308311 then throw("invalid internalBaseAssetId")
309- else if ((toString(aY.caller) != bi))
312+ else if ((toString(aZ.caller) != bj))
310313 then throw("access denied")
311- else [BooleanEntry(I(toString(br)), true)]
314+ else [BooleanEntry(J(toString(bs)), true)]
312315 }
313316
314317
315318
316-@Callable(aY)
319+@Callable(aZ)
317320 func put () = {
318- let bu = value(aY.payments[0])
319- let aL = value(bu.assetId)
320- let j = toBase58String(aL)
321- let k = toString(aY.caller)
322- let aU = aB(j)
323- let G = aU[L]
324- let aN = fromBase58String(G)
325- let R = parseIntValue(aU[N])
326- let S = parseIntValue(aU[O])
327- let B = aU[M]
328- let bv = e(I(B))
329- if (bv)
321+ let bv = value(aZ.payments[0])
322+ let aM = value(bv.assetId)
323+ let k = toBase58String(aM)
324+ let l = toString(aZ.caller)
325+ let aV = aC(k)
326+ let H = aV[M]
327+ let aO = fromBase58String(H)
328+ let S = parseIntValue(aV[O])
329+ let T = parseIntValue(aV[P])
330+ let C = aV[N]
331+ let bw = e(J(C))
332+ if (bw)
330333 then throw("put operation is blocked")
331334 else {
332- let bw = (aJ(j) + bu.amount)
333- let aq = aS(B, aL, aN, R, S)._1
334- let X = fraction(bu.amount, S, aq, CEILING)
335-[Reissue(aN, X, true), ScriptTransfer(aY.caller, X, aN), StringEntry(ab("P", B, k, toBase58String(aY.transactionId)), aw("FINISHED", bu.amount, aq, X, height, lastBlock.timestamp, height, lastBlock.timestamp)), ScriptTransfer(addressFromStringValue(value(getString(o(j)))), bu.amount, aL), IntegerEntry(q(j), bw)]
335+ let bx = (aK(k) + bv.amount)
336+ let ar = aT(C, aM, aO, S, T)._1
337+ let Y = fraction(bv.amount, T, ar, CEILING)
338+[Reissue(aO, Y, true), ScriptTransfer(aZ.caller, Y, aO), StringEntry(ac("P", C, l, toBase58String(aZ.transactionId)), ax("FINISHED", bv.amount, ar, Y, height, lastBlock.timestamp, height, lastBlock.timestamp)), ScriptTransfer(addressFromStringValue(value(getString(p(k)))), bv.amount, aM), IntegerEntry(r(k), bx)]
336339 }
337340 }
338341
339342
340343
341-@Callable(aY)
344+@Callable(aZ)
342345 func submitGetRequest () = {
343- let bu = value(aY.payments[0])
344- let aN = value(bu.assetId)
345- let G = toBase58String(aN)
346- let bx = toBase58String(aY.callerPublicKey)
347- let ad = aY.caller
348- let k = toString(ad)
349- let X = bu.amount
350- let j = c(F(G))
351- let aL = fromBase58String(j)
352- let aU = aB(j)
353- let R = parseIntValue(aU[N])
354- let S = parseIntValue(aU[O])
355- let by = parseIntValue(aU[P])
356- let B = aU[M]
357- let aq = aS(B, aL, aN, R, S)._1
358- let Y = fraction(X, aq, S)
359- let bz = ab("G", B, k, toBase58String(aY.transactionId))
360- let bA = aw("PENDING", X, aq, Y, height, lastBlock.timestamp, (height + by), 0)
361-[Burn(aN, X), StringEntry(bz, bA), aC(z(B), X, Y), aC(A(B, k), X, Y), IntegerEntry(q(j), (aJ(j) - Y))]
346+ let bv = value(aZ.payments[0])
347+ let aO = value(bv.assetId)
348+ let H = toBase58String(aO)
349+ let by = toBase58String(aZ.callerPublicKey)
350+ let ae = aZ.caller
351+ let l = toString(ae)
352+ let Y = bv.amount
353+ let k = c(G(H))
354+ let aM = fromBase58String(k)
355+ let aV = aC(k)
356+ let S = parseIntValue(aV[O])
357+ let T = parseIntValue(aV[P])
358+ let bz = parseIntValue(aV[Q])
359+ let C = aV[N]
360+ let ar = aT(C, aM, aO, S, T)._1
361+ let Z = fraction(Y, ar, T)
362+ let bA = ac("G", C, l, toBase58String(aZ.transactionId))
363+ let bB = ax("PENDING", Y, ar, Z, height, lastBlock.timestamp, (height + bz), 0)
364+[Burn(aO, Y), StringEntry(bA, bB), aD(A(C), Y, Z), aD(B(C, l), Y, Z), IntegerEntry(r(k), (aK(k) - Z))]
362365 }
363366
364367
365368
366-@Callable(aY)
367-func executeGetRequest (j,k,l) = {
368- let ad = addressFromStringValue(k)
369- let bB = aB(j)
370- let aN = fromBase58String(bB[L])
371- let aL = fromBase58String(j)
372- let B = bB[M]
373- let bz = ab("G", B, k, l)
374- let bC = split(c(bz), a)
375- let ao = bC[af]
376- let au = parseIntValue(bC[al])
377- let bD = parseIntValue(bC[ag])
378- let bE = parseIntValue(bC[ai])
379- if ((ao != "PENDING"))
380- then h("Status is not PENDING", j, k, l)
381- else if ((au > height))
382- then h(((("EndHeight[" + toString(au)) + "] > ") + toString(height)), j, k, l)
383- else [ScriptTransfer(ad, bE, aL), StringEntry(bz, ax(bC, "FINISHED", lastBlock.timestamp)), aE(z(B), bD, bE), aE(A(B, k), bD, bE)]
369+@Callable(aZ)
370+func executeGetRequest (k,l,m) = {
371+ let ae = addressFromStringValue(l)
372+ let bC = aC(k)
373+ let aO = fromBase58String(bC[M])
374+ let aM = fromBase58String(k)
375+ let C = bC[N]
376+ let bA = ac("G", C, l, m)
377+ let bD = split(c(bA), a)
378+ let ap = bD[ag]
379+ let av = parseIntValue(bD[am])
380+ let bE = parseIntValue(bD[ah])
381+ let bF = parseIntValue(bD[aj])
382+ if ((ap != "PENDING"))
383+ then i("Status is not PENDING", k, l, m)
384+ else if ((av > height))
385+ then i(((("EndHeight[" + toString(av)) + "] > ") + toString(height)), k, l, m)
386+ else [ScriptTransfer(ae, bF, aM), StringEntry(bA, ay(bD, "FINISHED", lastBlock.timestamp)), aF(A(C), bE, bF), aF(B(C, l), bE, bF)]
384387 }
385388
386389
387390
388-@Callable(aY)
389-func topUpBalance (j,bF) = {
390- let bB = aB(j)
391- let bu = value(aY.payments[0])
392- let bG = value(bu.assetId)
393- let bH = toBase58String(bG)
394- let aN = fromBase58String(bB[L])
395- let R = parseIntValue(bB[N])
396- let S = parseIntValue(bB[O])
397- let B = bB[M]
398- let bI = u(B, toString(aY.caller))
399- let aW = valueOrElse(getInteger(this, bI), 0)
400- let bJ = [bb(aY, j), if ((aW != height))
391+@Callable(aZ)
392+func topUpBalance (k,bG) = {
393+ let bC = aC(k)
394+ let bv = value(aZ.payments[0])
395+ let bH = value(bv.assetId)
396+ let bI = toBase58String(bH)
397+ let aO = fromBase58String(bC[M])
398+ let S = parseIntValue(bC[O])
399+ let T = parseIntValue(bC[P])
400+ let C = bC[N]
401+ let bJ = v(C, toString(aZ.caller))
402+ let aX = valueOrElse(getInteger(this, bJ), 0)
403+ let bK = [bc(aZ, k), if ((aX != height))
401404 then true
402- else throw("only one topUp per block is allowed"), if ((bF > 0))
405+ else throw("only one topUp per block is allowed"), if ((bG > 0))
403406 then true
404407 else throw("only positive delta is allowed")]
405- if ((bJ == bJ))
406- then if ((j != bH))
408+ if ((bK == bK))
409+ then if ((k != bI))
407410 then throw("attached payment's asset id is NOT matched passed baseAssetStr")
408- else if ((size(aY.payments) > 1))
411+ else if ((size(aZ.payments) > 1))
409412 then throw("only one payment can be attached")
410413 else {
411- let aq = aK(B, bG, bF, aN, R, S)._1
412-[IntegerEntry(s(B), aq), IntegerEntry(w(B, height, lastBlock.timestamp), aq), IntegerEntry(bI, height), IntegerEntry(q(bH), (aJ(bH) + bF))]
414+ let ar = aL(C, bH, bG, aO, S, T)._1
415+[IntegerEntry(t(C), ar), IntegerEntry(x(C, height, lastBlock.timestamp), ar), IntegerEntry(bJ, height), IntegerEntry(r(bI), (aK(bI) + bG))]
413416 }
414417 else throw("Strict value is not equal to itself.")
415418 }
416419
417420
418421
419-@Callable(aY)
420-func currentSysParamsREST (j) = {
421- let bK = aT(j)
422- let aq = bK._1.value
423- let S = bK._2.value
424- let aP = bK._3.value
425- let aO = bK._4.value
426- let aQ = bK._5.value
427- let aR = bK._6.value
428- let bL = makeString(["startCurrentSysParamsREST", toString(aq), toString(S), toString(aP), toString(aO), toString(aQ), toString(aR), "endCurrentSysParamsREST"], a)
429- throw(bL)
422+@Callable(aZ)
423+func currentSysParamsREST (k) = {
424+ let bL = aU(k)
425+ let ar = bL._1.value
426+ let T = bL._2.value
427+ let aQ = bL._3.value
428+ let aP = bL._4.value
429+ let aR = bL._5.value
430+ let aS = bL._6.value
431+ let bM = makeString(["startCurrentSysParamsREST", toString(ar), toString(T), toString(aQ), toString(aP), toString(aR), toString(aS), "endCurrentSysParamsREST"], a)
432+ throw(bM)
430433 }
431434
432435
433436
434-@Callable(aY)
435-func setManager (bM) = {
436- let bd = aX(aY)
437- if ((bd == bd))
437+@Callable(aZ)
438+func setManager (bN) = {
439+ let be = aY(aZ)
440+ if ((be == be))
438441 then {
439- let bN = fromBase58String(bM)
440- if ((bN == bN))
441- then [StringEntry(g(), bM)]
442+ let bO = fromBase58String(bN)
443+ if ((bO == bO))
444+ then [StringEntry(h(), bN)]
442445 else throw("Strict value is not equal to itself.")
443446 }
444447 else throw("Strict value is not equal to itself.")
446449
447450
448451
449-@Callable(aY)
452+@Callable(aZ)
450453 func confirmManager () = {
451- let bO = aI()
452- let bP = if (isDefined(bO))
454+ let bP = aJ()
455+ let bQ = if (isDefined(bP))
453456 then true
454457 else throw("no pending manager")
455- if ((bP == bP))
458+ if ((bQ == bQ))
456459 then {
457- let bQ = if ((aY.callerPublicKey == value(bO)))
460+ let bR = if ((aZ.callerPublicKey == value(bP)))
458461 then true
459462 else throw("you are not pending manager")
460- if ((bQ == bQ))
461- then [StringEntry(f(), toBase58String(value(bO))), DeleteEntry(g())]
463+ if ((bR == bR))
464+ then [StringEntry(g(), toBase58String(value(bP))), DeleteEntry(h())]
462465 else throw("Strict value is not equal to itself.")
463466 }
464467 else throw("Strict value is not equal to itself.")
465468 }
466469
467470
468-@Verifier(bR)
469-func bS () = {
470- let bT = {
471- let aG = aF()
472- if ($isInstanceOf(aG, "ByteVector"))
471+@Verifier(bS)
472+func bT () = {
473+ let bU = {
474+ let aH = aG()
475+ if ($isInstanceOf(aH, "ByteVector"))
473476 then {
474- let ba = aG
475- ba
477+ let bb = aH
478+ bb
476479 }
477- else if ($isInstanceOf(aG, "Unit"))
478- then bR.senderPublicKey
480+ else if ($isInstanceOf(aH, "Unit"))
481+ then bS.senderPublicKey
479482 else throw("Match error")
480483 }
481- sigVerify(bR.bodyBytes, bR.proofs[0], bT)
484+ sigVerify(bS.bodyBytes, bS.proofs[0], bU)
482485 }
483486
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = ""
77
88 func c (d) = valueOrErrorMessage(getString(this, d), ("No data for this.key=" + d))
99
1010
1111 func e (d) = valueOrErrorMessage(getBoolean(this, d), ("No data for this.key=" + d))
1212
1313
14-func f () = makeString(["%s", "managerPublicKey"], a)
14+func f (d) = valueOrErrorMessage(getBoolean(this, d), ("No data for this.key=" + d))
1515
1616
17-func g () = makeString(["%s", "pendingManagerPublicKey"], a)
17+func g () = makeString(["%s", "managerPublicKey"], a)
1818
1919
20-func h (i,j,k,l) = throw(((((((i + ": baseAssetStr=") + j) + " userAddressStr=") + k) + " getTxIdStr=") + l))
20+func h () = makeString(["%s", "pendingManagerPublicKey"], a)
2121
2222
23-func m () = makeString(["%s", "assetsStoreContract"], a)
23+func i (j,k,l,m) = throw(((((((j + ": baseAssetStr=") + k) + " userAddressStr=") + l) + " getTxIdStr=") + m))
2424
2525
26-func n (j) = ("%s%s%s__config__asset__" + j)
26+func n () = makeString(["%s", "assetsStoreContract"], a)
2727
2828
29-func o (p) = makeString(["%s%s", "proxyAddress", p], a)
29+func o (k) = ("%s%s%s__config__asset__" + k)
3030
3131
32-func q (p) = makeString(["%s%s", "balance", p], a)
32+func p (q) = makeString(["%s%s", "proxyAddress", q], a)
3333
3434
35-func r () = "%s__nextInternalAssetId"
35+func r (q) = makeString(["%s%s", "balance", q], a)
3636
3737
38-func s (t) = ("%s%s%d__price__last__" + t)
38+func s () = "%s__nextInternalAssetId"
3939
4040
41-func u (t,v) = makeString(["%s%s%s%d%s__topup__last__height", t, v], a)
41+func t (u) = ("%s%s%d__price__last__" + u)
4242
4343
44-func w (t,x,y) = makeString(["%s%s%d%d%d__price__history", t, toString(x), toString(y)], a)
44+func v (u,w) = makeString(["%s%s%s%d%s__topup__last__height", u, w], a)
4545
4646
47-func z (t) = ("%s%s%d__total__locked__" + t)
47+func x (u,y,z) = makeString(["%s%s%d%d%d__price__history", u, toString(y), toString(z)], a)
4848
4949
50-func A (B,k) = makeString(["%s%s%d%s__total__locked", B, k], a)
50+func A (u) = ("%s%s%d__total__locked__" + u)
5151
5252
53-func C (D) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(D))
53+func B (C,l) = makeString(["%s%s%d%s__total__locked", C, l], a)
5454
5555
56-func E (j) = ("%s%s%s__mappings__baseAsset2internalId__" + j)
56+func D (E) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(E))
5757
5858
59-func F (G) = ("%s%s%s__mappings__share2baseAssetId__" + G)
59+func F (k) = ("%s%s%s__mappings__baseAsset2internalId__" + k)
6060
6161
62-func H (j) = ("%s%s%s__mappings__baseAsset2shareId__" + j)
62+func G (H) = ("%s%s%s__mappings__share2baseAssetId__" + H)
6363
6464
65-func I (B) = ("%s%s%d__shutdown__put__" + B)
65+func I (k) = ("%s%s%s__mappings__baseAsset2shareId__" + k)
6666
6767
68-func J (B) = ("%s%s%d__shutdown__manager__" + B)
68+func J (C) = ("%s%s%d__shutdown__put__" + C)
6969
7070
71-func K () = addressFromStringValue(value(getString(m())))
71+func K (C) = ("%s%s%d__shutdown__manager__" + C)
7272
7373
74-let L = 1
75-
76-let M = 2
77-
78-let N = 3
79-
80-let O = 4
81-
82-let P = 5
83-
84-func Q (G,B,R,S,T) = makeString(["%s%d%d%d%d", G, B, toString(R), toString(S), toString(T)], a)
74+func L () = addressFromStringValue(value(getString(n())))
8575
8676
87-let U = 1
77+let M = 1
8878
89-let V = 2
79+let N = 2
9080
91-func W (X,Y) = makeString(["%d%d", toString(X), toString(Y)], a)
81+let O = 3
82+
83+let P = 4
84+
85+let Q = 5
86+
87+func R (H,C,S,T,U) = makeString(["%s%d%d%d%d", H, C, toString(S), toString(T), toString(U)], a)
9288
9389
94-func Z (d) = {
95- let aa = split(valueOrElse(getString(this, d), W(0, 0)), a)
96-[-1, parseIntValue(aa[U]), parseIntValue(aa[V])]
90+let V = 1
91+
92+let W = 2
93+
94+func X (Y,Z) = makeString(["%d%d", toString(Y), toString(Z)], a)
95+
96+
97+func aa (d) = {
98+ let ab = split(valueOrElse(getString(this, d), X(0, 0)), a)
99+[-1, parseIntValue(ab[V]), parseIntValue(ab[W])]
97100 }
98101
99102
100-func ab (ac,B,ad,ae) = makeString(["%s%d%s%s", ac, B, ad, ae], a)
103+func ac (ad,C,ae,af) = makeString(["%s%d%s%s", ad, C, ae, af], a)
101104
102105
103-let af = 1
106+let ag = 1
104107
105-let ag = 2
108+let ah = 2
106109
107-let ah = 3
110+let ai = 3
108111
109-let ai = 4
112+let aj = 4
110113
111-let aj = 5
114+let ak = 5
112115
113-let ak = 6
116+let al = 6
114117
115-let al = 7
118+let am = 7
116119
117-let am = 8
120+let an = 8
118121
119-func an (ao,ap,aq,ar,as,at,au,av) = makeString(["%s%d%d%d%d%d%d%d", ao, ap, aq, ar, as, at, au, av], a)
122+func ao (ap,aq,ar,as,at,au,av,aw) = makeString(["%s%d%d%d%d%d%d%d", ap, aq, ar, as, at, au, av, aw], a)
120123
121124
122-func aw (ao,ap,aq,ar,as,at,au,av) = an(ao, toString(ap), toString(aq), toString(ar), toString(as), toString(at), toString(au), toString(av))
125+func ax (ap,aq,ar,as,at,au,av,aw) = ao(ap, toString(aq), toString(ar), toString(as), toString(at), toString(au), toString(av), toString(aw))
123126
124127
125-func ax (ay,az,aA) = an(az, ay[ag], ay[ah], ay[ai], ay[aj], ay[ak], ay[al], toString(aA))
128+func ay (az,aA,aB) = ao(aA, az[ah], az[ai], az[aj], az[ak], az[al], az[am], toString(aB))
126129
127130
128-func aB (j) = {
129- let d = n(j)
131+func aC (k) = {
132+ let d = o(k)
130133 split(c(d), a)
131134 }
132135
133136
134-func aC (d,X,Y) = {
135- let aD = Z(d)
136- StringEntry(d, W((aD[U] + X), (aD[V] + Y)))
137+func aD (d,Y,Z) = {
138+ let aE = aa(d)
139+ StringEntry(d, X((aE[V] + Y), (aE[W] + Z)))
137140 }
138141
139142
140-func aE (d,X,Y) = {
141- let aD = Z(d)
142- StringEntry(d, W((aD[U] - X), (aD[V] - Y)))
143+func aF (d,Y,Z) = {
144+ let aE = aa(d)
145+ StringEntry(d, X((aE[V] - Y), (aE[W] - Z)))
143146 }
144147
145148
146-func aF () = {
147- let aG = getString(f())
148- if ($isInstanceOf(aG, "String"))
149+func aG () = {
150+ let aH = getString(g())
151+ if ($isInstanceOf(aH, "String"))
149152 then {
150- let aH = aG
151- fromBase58String(aH)
153+ let aI = aH
154+ fromBase58String(aI)
152155 }
153- else if ($isInstanceOf(aG, "Unit"))
156+ else if ($isInstanceOf(aH, "Unit"))
154157 then unit
155158 else throw("Match error")
156159 }
157160
158161
159-func aI () = {
160- let aG = getString(g())
161- if ($isInstanceOf(aG, "String"))
162+func aJ () = {
163+ let aH = getString(h())
164+ if ($isInstanceOf(aH, "String"))
162165 then {
163- let aH = aG
164- fromBase58String(aH)
166+ let aI = aH
167+ fromBase58String(aI)
165168 }
166- else if ($isInstanceOf(aG, "Unit"))
169+ else if ($isInstanceOf(aH, "Unit"))
167170 then unit
168171 else throw("Match error")
169172 }
170173
171174
172-func aJ (p) = valueOrElse(getInteger(q(p)), 0)
175+func aK (q) = valueOrElse(getInteger(r(q)), 0)
173176
174177
175-func aK (B,aL,aM,aN,R,S) = {
176- let aa = Z(z(B))
177- let aO = aa[V]
178- let aP = aJ(toBase58String(aL))
179- let aQ = (aP + aM)
180- if ((0 > aQ))
181- then throw(((("baseAssetBalanceConsideringLock < 0: baseAssetBalance=" + toString(aP)) + " baseAssetBalanceConsideringLock=") + toString(aQ)))
178+func aL (C,aM,aN,aO,S,T) = {
179+ let ab = aa(A(C))
180+ let aP = ab[W]
181+ let aQ = aK(toBase58String(aM))
182+ let aR = (aQ + aN)
183+ if ((0 > aR))
184+ then throw(((("baseAssetBalanceConsideringLock < 0: baseAssetBalance=" + toString(aQ)) + " baseAssetBalanceConsideringLock=") + toString(aR)))
182185 else {
183- let aR = value(assetInfo(aN)).quantity
184- let aq = if ((aR == 0))
185- then (1 * S)
186- else fraction(aQ, S, aR)
187- $Tuple5(aq, aP, aO, aQ, aR)
186+ let aS = value(assetInfo(aO)).quantity
187+ let ar = if ((aS == 0))
188+ then (1 * T)
189+ else fraction(aR, T, aS)
190+ $Tuple5(ar, aQ, aP, aR, aS)
188191 }
189192 }
190193
191194
192-func aS (B,aL,aN,R,S) = {
193- let aa = Z(z(B))
194- let aO = aa[V]
195- let aP = aJ(toBase58String(aL))
196- let aQ = aP
197- let aR = value(assetInfo(aN)).quantity
198- let aq = value(getInteger(s(B)))
199- $Tuple5(aq, aP, aO, aQ, aR)
195+func aT (C,aM,aO,S,T) = {
196+ let ab = aa(A(C))
197+ let aP = ab[W]
198+ let aQ = aK(toBase58String(aM))
199+ let aR = aQ
200+ let aS = value(assetInfo(aO)).quantity
201+ let ar = value(getInteger(t(C)))
202+ $Tuple5(ar, aQ, aP, aR, aS)
200203 }
201204
202205
203-func aT (j) = {
204- let aL = fromBase58String(j)
205- let aU = aB(j)
206- let G = aU[L]
207- let aN = fromBase58String(G)
208- let R = parseIntValue(aU[N])
209- let S = parseIntValue(aU[O])
210- let B = aU[M]
211- let aV = aS(B, aL, aN, R, S)
212- let aW = {
213- let aG = getInteger(u(B, getStringValue(o(j))))
214- if ($isInstanceOf(aG, "Int"))
206+func aU (k) = {
207+ let aM = fromBase58String(k)
208+ let aV = aC(k)
209+ let H = aV[M]
210+ let aO = fromBase58String(H)
211+ let S = parseIntValue(aV[O])
212+ let T = parseIntValue(aV[P])
213+ let C = aV[N]
214+ let aW = aT(C, aM, aO, S, T)
215+ let aX = {
216+ let aH = getInteger(v(C, getStringValue(p(k))))
217+ if ($isInstanceOf(aH, "Int"))
215218 then {
216- let x = aG
217- value(x)
219+ let y = aH
220+ value(y)
218221 }
219- else if ($isInstanceOf(aG, "Unit"))
220- then getIntegerValue(u(B, toString(addressFromPublicKey(fromBase58String(getStringValue(f()))))))
222+ else if ($isInstanceOf(aH, "Unit"))
223+ then getIntegerValue(v(C, toString(addressFromPublicKey(fromBase58String(getStringValue(g()))))))
221224 else throw("undefined behaviour in privateCurrentSysParamsREST match")
222225 }
223- $Tuple8(IntegerEntry("price", aV._1), IntegerEntry("decimalsMultPrice", S), IntegerEntry("baseAssetBalance", aV._2), IntegerEntry("totalLockedBaseAmount", aV._3), IntegerEntry("baseAssetBalanceConsideringLock", aV._4), IntegerEntry("shareEmission", aV._5), IntegerEntry("baseAssetDecimals", value(assetInfo(aL)).decimals), IntegerEntry("lastTopUpTimestamp", value(blockInfoByHeight(aW)).timestamp))
226+ $Tuple8(IntegerEntry("price", aW._1), IntegerEntry("decimalsMultPrice", T), IntegerEntry("baseAssetBalance", aW._2), IntegerEntry("totalLockedBaseAmount", aW._3), IntegerEntry("baseAssetBalanceConsideringLock", aW._4), IntegerEntry("shareEmission", aW._5), IntegerEntry("baseAssetDecimals", value(assetInfo(aM)).decimals), IntegerEntry("lastTopUpTimestamp", value(blockInfoByHeight(aX)).timestamp))
224227 }
225228
226229
227-func aX (aY) = {
228- let aZ = throw("permission denied")
229- let aG = aF()
230- if ($isInstanceOf(aG, "ByteVector"))
230+func aY (aZ) = {
231+ let ba = throw("permission denied")
232+ let aH = aG()
233+ if ($isInstanceOf(aH, "ByteVector"))
231234 then {
232- let ba = aG
233- if ((aY.callerPublicKey == ba))
235+ let bb = aH
236+ if ((aZ.callerPublicKey == bb))
234237 then true
235- else aZ
238+ else ba
236239 }
237- else if ($isInstanceOf(aG, "Unit"))
238- then if ((aY.caller == this))
240+ else if ($isInstanceOf(aH, "Unit"))
241+ then if ((aZ.caller == this))
239242 then true
240- else aZ
243+ else ba
241244 else throw("Match error")
242245 }
243246
244247
245-func bb (aY,p) = {
246- let bc = (toString(aY.caller) == valueOrElse(getString(o(p)), b))
247- if (bc)
248+func bc (aZ,q) = {
249+ let bd = (toString(aZ.caller) == valueOrElse(getString(p(q)), b))
250+ if (bd)
248251 then true
249252 else {
250- let bd = aX(aY)
251- if ((bd == bd))
253+ let be = aY(aZ)
254+ if ((be == be))
252255 then true
253256 else throw("Strict value is not equal to itself.")
254257 }
255258 }
256259
257260
258-@Callable(aY)
259-func constructor (K) = {
260- let bd = aX(aY)
261- if ((bd == bd))
262- then [StringEntry(m(), K)]
261+@Callable(aZ)
262+func constructor (L) = {
263+ let be = aY(aZ)
264+ if ((be == be))
265+ then [StringEntry(n(), L)]
263266 else throw("Strict value is not equal to itself.")
264267 }
265268
266269
267270
268-@Callable(aY)
269-func adminRegisterAsset (j,be,bf,bg,bh,bi,bj) = {
270- let aL = fromBase58String(j)
271- let bk = value(assetInfo(aL)).decimals
272- let bl = aX(aY)
273- if ((bl == bl))
274- then if ((toString(addressFromStringValue(bi)) != bi))
271+@Callable(aZ)
272+func adminRegisterAsset (k,bf,bg,bh,bi,bj,bk) = {
273+ let aM = fromBase58String(k)
274+ let bl = value(assetInfo(aM)).decimals
275+ let bm = aY(aZ)
276+ if ((bm == bm))
277+ then if ((toString(addressFromStringValue(bj)) != bj))
275278 then throw("invalid shutdownManagerAddress")
276- else if ((0 > bh))
277- then throw(("invalid getDelayinBlocks=" + toString(bh)))
279+ else if ((0 > bi))
280+ then throw(("invalid getDelayinBlocks=" + toString(bi)))
278281 else {
279- let bm = Issue(be, bf, 1, bk, true)
280- let aN = calculateAssetId(bm)
281- let G = toBase58String(aN)
282- let S = ((100 * 1000) * 1000)
283- let R = pow(10, 0, bk, 0, 0, DOWN)
284- let bn = (1 * S)
285- let bo = valueOrElse(getInteger(this, r()), 0)
286- let B = toString(bo)
287- let bp = invoke(K(), "createOrUpdate", [G, bg, false], nil)
288- if ((bp == bp))
282+ let bn = Issue(bf, bg, 1, bl, true)
283+ let aO = calculateAssetId(bn)
284+ let H = toBase58String(aO)
285+ let T = ((100 * 1000) * 1000)
286+ let S = pow(10, 0, bl, 0, 0, DOWN)
287+ let bo = (1 * T)
288+ let bp = valueOrElse(getInteger(this, s()), 0)
289+ let C = toString(bp)
290+ let bq = invoke(L(), "createOrUpdate", [H, bh, false], nil)
291+ if ((bq == bq))
289292 then {
290- let bq = invoke(K(), "addLabel", [G, "DEFI"], nil)
291- if ((bq == bq))
292- then [StringEntry(n(j), Q(G, B, R, S, bh)), StringEntry(C(bo), j), StringEntry(E(j), B), StringEntry(F(G), j), StringEntry(H(j), G), BooleanEntry(I(B), false), StringEntry(J(B), bi), IntegerEntry(r(), (bo + 1)), IntegerEntry(s(B), bn), IntegerEntry(w(B, height, lastBlock.timestamp), bn), bm, Burn(aN, 1), StringEntry(o(j), bj)]
293+ let br = invoke(L(), "addLabel", [H, "DEFI"], nil)
294+ if ((br == br))
295+ then [StringEntry(o(k), R(H, C, S, T, bi)), StringEntry(D(bp), k), StringEntry(F(k), C), StringEntry(G(H), k), StringEntry(I(k), H), BooleanEntry(J(C), false), StringEntry(K(C), bj), IntegerEntry(s(), (bp + 1)), IntegerEntry(t(C), bo), IntegerEntry(x(C, height, lastBlock.timestamp), bo), bn, Burn(aO, 1), StringEntry(p(k), bk)]
293296 else throw("Strict value is not equal to itself.")
294297 }
295298 else throw("Strict value is not equal to itself.")
296299 }
297300 else throw("Strict value is not equal to itself.")
298301 }
299302
300303
301304
302-@Callable(aY)
303-func shutdownPut (br) = {
304- let bs = toString(br)
305- let bt = c(C(br))
306- let bi = c(J(bs))
307- if ((1 > size(bt)))
305+@Callable(aZ)
306+func shutdownPut (bs) = {
307+ let bt = toString(bs)
308+ let bu = c(D(bs))
309+ let bj = c(K(bt))
310+ if ((1 > size(bu)))
308311 then throw("invalid internalBaseAssetId")
309- else if ((toString(aY.caller) != bi))
312+ else if ((toString(aZ.caller) != bj))
310313 then throw("access denied")
311- else [BooleanEntry(I(toString(br)), true)]
314+ else [BooleanEntry(J(toString(bs)), true)]
312315 }
313316
314317
315318
316-@Callable(aY)
319+@Callable(aZ)
317320 func put () = {
318- let bu = value(aY.payments[0])
319- let aL = value(bu.assetId)
320- let j = toBase58String(aL)
321- let k = toString(aY.caller)
322- let aU = aB(j)
323- let G = aU[L]
324- let aN = fromBase58String(G)
325- let R = parseIntValue(aU[N])
326- let S = parseIntValue(aU[O])
327- let B = aU[M]
328- let bv = e(I(B))
329- if (bv)
321+ let bv = value(aZ.payments[0])
322+ let aM = value(bv.assetId)
323+ let k = toBase58String(aM)
324+ let l = toString(aZ.caller)
325+ let aV = aC(k)
326+ let H = aV[M]
327+ let aO = fromBase58String(H)
328+ let S = parseIntValue(aV[O])
329+ let T = parseIntValue(aV[P])
330+ let C = aV[N]
331+ let bw = e(J(C))
332+ if (bw)
330333 then throw("put operation is blocked")
331334 else {
332- let bw = (aJ(j) + bu.amount)
333- let aq = aS(B, aL, aN, R, S)._1
334- let X = fraction(bu.amount, S, aq, CEILING)
335-[Reissue(aN, X, true), ScriptTransfer(aY.caller, X, aN), StringEntry(ab("P", B, k, toBase58String(aY.transactionId)), aw("FINISHED", bu.amount, aq, X, height, lastBlock.timestamp, height, lastBlock.timestamp)), ScriptTransfer(addressFromStringValue(value(getString(o(j)))), bu.amount, aL), IntegerEntry(q(j), bw)]
335+ let bx = (aK(k) + bv.amount)
336+ let ar = aT(C, aM, aO, S, T)._1
337+ let Y = fraction(bv.amount, T, ar, CEILING)
338+[Reissue(aO, Y, true), ScriptTransfer(aZ.caller, Y, aO), StringEntry(ac("P", C, l, toBase58String(aZ.transactionId)), ax("FINISHED", bv.amount, ar, Y, height, lastBlock.timestamp, height, lastBlock.timestamp)), ScriptTransfer(addressFromStringValue(value(getString(p(k)))), bv.amount, aM), IntegerEntry(r(k), bx)]
336339 }
337340 }
338341
339342
340343
341-@Callable(aY)
344+@Callable(aZ)
342345 func submitGetRequest () = {
343- let bu = value(aY.payments[0])
344- let aN = value(bu.assetId)
345- let G = toBase58String(aN)
346- let bx = toBase58String(aY.callerPublicKey)
347- let ad = aY.caller
348- let k = toString(ad)
349- let X = bu.amount
350- let j = c(F(G))
351- let aL = fromBase58String(j)
352- let aU = aB(j)
353- let R = parseIntValue(aU[N])
354- let S = parseIntValue(aU[O])
355- let by = parseIntValue(aU[P])
356- let B = aU[M]
357- let aq = aS(B, aL, aN, R, S)._1
358- let Y = fraction(X, aq, S)
359- let bz = ab("G", B, k, toBase58String(aY.transactionId))
360- let bA = aw("PENDING", X, aq, Y, height, lastBlock.timestamp, (height + by), 0)
361-[Burn(aN, X), StringEntry(bz, bA), aC(z(B), X, Y), aC(A(B, k), X, Y), IntegerEntry(q(j), (aJ(j) - Y))]
346+ let bv = value(aZ.payments[0])
347+ let aO = value(bv.assetId)
348+ let H = toBase58String(aO)
349+ let by = toBase58String(aZ.callerPublicKey)
350+ let ae = aZ.caller
351+ let l = toString(ae)
352+ let Y = bv.amount
353+ let k = c(G(H))
354+ let aM = fromBase58String(k)
355+ let aV = aC(k)
356+ let S = parseIntValue(aV[O])
357+ let T = parseIntValue(aV[P])
358+ let bz = parseIntValue(aV[Q])
359+ let C = aV[N]
360+ let ar = aT(C, aM, aO, S, T)._1
361+ let Z = fraction(Y, ar, T)
362+ let bA = ac("G", C, l, toBase58String(aZ.transactionId))
363+ let bB = ax("PENDING", Y, ar, Z, height, lastBlock.timestamp, (height + bz), 0)
364+[Burn(aO, Y), StringEntry(bA, bB), aD(A(C), Y, Z), aD(B(C, l), Y, Z), IntegerEntry(r(k), (aK(k) - Z))]
362365 }
363366
364367
365368
366-@Callable(aY)
367-func executeGetRequest (j,k,l) = {
368- let ad = addressFromStringValue(k)
369- let bB = aB(j)
370- let aN = fromBase58String(bB[L])
371- let aL = fromBase58String(j)
372- let B = bB[M]
373- let bz = ab("G", B, k, l)
374- let bC = split(c(bz), a)
375- let ao = bC[af]
376- let au = parseIntValue(bC[al])
377- let bD = parseIntValue(bC[ag])
378- let bE = parseIntValue(bC[ai])
379- if ((ao != "PENDING"))
380- then h("Status is not PENDING", j, k, l)
381- else if ((au > height))
382- then h(((("EndHeight[" + toString(au)) + "] > ") + toString(height)), j, k, l)
383- else [ScriptTransfer(ad, bE, aL), StringEntry(bz, ax(bC, "FINISHED", lastBlock.timestamp)), aE(z(B), bD, bE), aE(A(B, k), bD, bE)]
369+@Callable(aZ)
370+func executeGetRequest (k,l,m) = {
371+ let ae = addressFromStringValue(l)
372+ let bC = aC(k)
373+ let aO = fromBase58String(bC[M])
374+ let aM = fromBase58String(k)
375+ let C = bC[N]
376+ let bA = ac("G", C, l, m)
377+ let bD = split(c(bA), a)
378+ let ap = bD[ag]
379+ let av = parseIntValue(bD[am])
380+ let bE = parseIntValue(bD[ah])
381+ let bF = parseIntValue(bD[aj])
382+ if ((ap != "PENDING"))
383+ then i("Status is not PENDING", k, l, m)
384+ else if ((av > height))
385+ then i(((("EndHeight[" + toString(av)) + "] > ") + toString(height)), k, l, m)
386+ else [ScriptTransfer(ae, bF, aM), StringEntry(bA, ay(bD, "FINISHED", lastBlock.timestamp)), aF(A(C), bE, bF), aF(B(C, l), bE, bF)]
384387 }
385388
386389
387390
388-@Callable(aY)
389-func topUpBalance (j,bF) = {
390- let bB = aB(j)
391- let bu = value(aY.payments[0])
392- let bG = value(bu.assetId)
393- let bH = toBase58String(bG)
394- let aN = fromBase58String(bB[L])
395- let R = parseIntValue(bB[N])
396- let S = parseIntValue(bB[O])
397- let B = bB[M]
398- let bI = u(B, toString(aY.caller))
399- let aW = valueOrElse(getInteger(this, bI), 0)
400- let bJ = [bb(aY, j), if ((aW != height))
391+@Callable(aZ)
392+func topUpBalance (k,bG) = {
393+ let bC = aC(k)
394+ let bv = value(aZ.payments[0])
395+ let bH = value(bv.assetId)
396+ let bI = toBase58String(bH)
397+ let aO = fromBase58String(bC[M])
398+ let S = parseIntValue(bC[O])
399+ let T = parseIntValue(bC[P])
400+ let C = bC[N]
401+ let bJ = v(C, toString(aZ.caller))
402+ let aX = valueOrElse(getInteger(this, bJ), 0)
403+ let bK = [bc(aZ, k), if ((aX != height))
401404 then true
402- else throw("only one topUp per block is allowed"), if ((bF > 0))
405+ else throw("only one topUp per block is allowed"), if ((bG > 0))
403406 then true
404407 else throw("only positive delta is allowed")]
405- if ((bJ == bJ))
406- then if ((j != bH))
408+ if ((bK == bK))
409+ then if ((k != bI))
407410 then throw("attached payment's asset id is NOT matched passed baseAssetStr")
408- else if ((size(aY.payments) > 1))
411+ else if ((size(aZ.payments) > 1))
409412 then throw("only one payment can be attached")
410413 else {
411- let aq = aK(B, bG, bF, aN, R, S)._1
412-[IntegerEntry(s(B), aq), IntegerEntry(w(B, height, lastBlock.timestamp), aq), IntegerEntry(bI, height), IntegerEntry(q(bH), (aJ(bH) + bF))]
414+ let ar = aL(C, bH, bG, aO, S, T)._1
415+[IntegerEntry(t(C), ar), IntegerEntry(x(C, height, lastBlock.timestamp), ar), IntegerEntry(bJ, height), IntegerEntry(r(bI), (aK(bI) + bG))]
413416 }
414417 else throw("Strict value is not equal to itself.")
415418 }
416419
417420
418421
419-@Callable(aY)
420-func currentSysParamsREST (j) = {
421- let bK = aT(j)
422- let aq = bK._1.value
423- let S = bK._2.value
424- let aP = bK._3.value
425- let aO = bK._4.value
426- let aQ = bK._5.value
427- let aR = bK._6.value
428- let bL = makeString(["startCurrentSysParamsREST", toString(aq), toString(S), toString(aP), toString(aO), toString(aQ), toString(aR), "endCurrentSysParamsREST"], a)
429- throw(bL)
422+@Callable(aZ)
423+func currentSysParamsREST (k) = {
424+ let bL = aU(k)
425+ let ar = bL._1.value
426+ let T = bL._2.value
427+ let aQ = bL._3.value
428+ let aP = bL._4.value
429+ let aR = bL._5.value
430+ let aS = bL._6.value
431+ let bM = makeString(["startCurrentSysParamsREST", toString(ar), toString(T), toString(aQ), toString(aP), toString(aR), toString(aS), "endCurrentSysParamsREST"], a)
432+ throw(bM)
430433 }
431434
432435
433436
434-@Callable(aY)
435-func setManager (bM) = {
436- let bd = aX(aY)
437- if ((bd == bd))
437+@Callable(aZ)
438+func setManager (bN) = {
439+ let be = aY(aZ)
440+ if ((be == be))
438441 then {
439- let bN = fromBase58String(bM)
440- if ((bN == bN))
441- then [StringEntry(g(), bM)]
442+ let bO = fromBase58String(bN)
443+ if ((bO == bO))
444+ then [StringEntry(h(), bN)]
442445 else throw("Strict value is not equal to itself.")
443446 }
444447 else throw("Strict value is not equal to itself.")
445448 }
446449
447450
448451
449-@Callable(aY)
452+@Callable(aZ)
450453 func confirmManager () = {
451- let bO = aI()
452- let bP = if (isDefined(bO))
454+ let bP = aJ()
455+ let bQ = if (isDefined(bP))
453456 then true
454457 else throw("no pending manager")
455- if ((bP == bP))
458+ if ((bQ == bQ))
456459 then {
457- let bQ = if ((aY.callerPublicKey == value(bO)))
460+ let bR = if ((aZ.callerPublicKey == value(bP)))
458461 then true
459462 else throw("you are not pending manager")
460- if ((bQ == bQ))
461- then [StringEntry(f(), toBase58String(value(bO))), DeleteEntry(g())]
463+ if ((bR == bR))
464+ then [StringEntry(g(), toBase58String(value(bP))), DeleteEntry(h())]
462465 else throw("Strict value is not equal to itself.")
463466 }
464467 else throw("Strict value is not equal to itself.")
465468 }
466469
467470
468-@Verifier(bR)
469-func bS () = {
470- let bT = {
471- let aG = aF()
472- if ($isInstanceOf(aG, "ByteVector"))
471+@Verifier(bS)
472+func bT () = {
473+ let bU = {
474+ let aH = aG()
475+ if ($isInstanceOf(aH, "ByteVector"))
473476 then {
474- let ba = aG
475- ba
477+ let bb = aH
478+ bb
476479 }
477- else if ($isInstanceOf(aG, "Unit"))
478- then bR.senderPublicKey
480+ else if ($isInstanceOf(aH, "Unit"))
481+ then bS.senderPublicKey
479482 else throw("Match error")
480483 }
481- sigVerify(bR.bodyBytes, bR.proofs[0], bT)
484+ sigVerify(bS.bodyBytes, bS.proofs[0], bU)
482485 }
483486

github/deemru/w8io/169f3d6 
219.46 ms