tx · GgdA4nbzgWhvPVVmSunf1jiurz9kbnwxhcS5h9RDcg3r

3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT:  -0.02600000 Waves

2022.08.15 13:51 [2185486] smart account 3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT > SELF 0.00000000 Waves

{ "type": 13, "id": "GgdA4nbzgWhvPVVmSunf1jiurz9kbnwxhcS5h9RDcg3r", "fee": 2600000, "feeAssetId": null, "timestamp": 1660560751672, "version": 1, "sender": "3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT", "senderPublicKey": "D1BL65meykxFZTCuq7jq9HSGLLnWvQamQPUNrguW5w39", "proofs": [ "4xo9BiGKVxFL7q2EgDVBhh3xfm3EbCYQD22cGaocamjJKq4NUcZZzxpg24rhH1bkJN8bGMYb1tScxno3i1AYRyV1" ], "script": "base64:BgKQIAgCEgMKAQgSAwoBCBIAEgQKAgEEEgcKBQEBAQEEEgMKAQESABIHCgUBAQEIARIECgIBARIDCgEBEgQKAggIEgQKAggIEgQKAggBEgASAwoBCBIFCgMBAQESBAoCCAESBAoCAQESBAoCCAgSCwoJCAEBAgECCAQEEgYKBAgIAQgiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igh0aG91c2FuZCIKemVyb0JpZ0ludCIJb25lQmlnSW50IgpzbGlwcGFnZTREIgVBbXVsdCIFRGNvbnYiA1NFUCIFRU1QVFkiClBvb2xBY3RpdmUiClBvb2xQdXREaXMiDlBvb2xNYXRjaGVyRGlzIgxQb29sU2h1dGRvd24iDmlkeFBvb2xBZGRyZXNzIglpZHhQb29sU3QiCWlkeExQQXNJZCIJaWR4QW1Bc0lkIglpZHhQckFzSWQiC2lkeEFtdEFzRGNtIg1pZHhQcmljZUFzRGNtIgtpZHhJQW10QXNJZCINaWR4SVByaWNlQXNJZCIPaWR4RmFjdFN0YWtDbnRyIhBpZHhGYWN0U2xpcHBDbnRyIhFpZHhGYWN0R3d4UmV3Q250ciISZmVlUGVybWlsbGVEZWZhdWx0IgV0b1gxOCIHb3JpZ1ZhbCINb3JpZ1NjYWxlTXVsdCIHZnJvbVgxOCIDdmFsIg9yZXN1bHRTY2FsZU11bHQiAnRzIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIhFrZXlGYWN0b3J5Q29udGFjdCITa2V5TWFuYWdlclB1YmxpY0tleSIaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiDGtleVByaWNlTGFzdCIPa2V5UHJpY2VIaXN0b3J5IgFoIgF0IhJrZXlQdXRBY3Rpb25CeVVzZXIiAnVhIgR0eElkIhJrZXlHZXRBY3Rpb25CeVVzZXIiDmtleUFtb3VudEFzc2V0Ig1rZXlQcmljZUFzc2V0Ig9rZXlBbXBsaWZpY2F0b3IiD2tleUFkZG9uQWRkcmVzcyIOa2V5RmVlUGVybWlsbGUiC2ZlZVBlcm1pbGxlIgRmY2ZnIgRtdHBrIgJwYyIGaUFtdEFzIgVpUHJBcyIDbWJhIgViQVN0ciIDYXBzIgh0aHJvd0VyciIDbXNnIg90aHJvd09yZGVyRXJyb3IiA29yViIGc2VuZHJWIgZtYXRjaFYiA3N0ciIHJG1hdGNoMCIGdmFsU3RyIg9nZXRTdHJpbmdPckZhaWwiBGFkZHIiA2tleSIMZ2V0SW50T3JGYWlsIg9mYWN0b3J5Q29udHJhY3QiDGFtcGxpZmljYXRvciIQaXNHbG9iYWxTaHV0ZG93biITZ2V0TWF0Y2hlclB1Yk9yRmFpbCIObWF0Y2hlckFkZHJlc3MiDWdldFBvb2xDb25maWciBWFtdEFzIgdwcmljZUFzIghpUHJpY2VBcyIQZ2V0RmFjdG9yeUNvbmZpZyIRZGF0YVB1dEFjdGlvbkluZm8iDWluQW10QXNzZXRBbXQiD2luUHJpY2VBc3NldEFtdCIIb3V0THBBbXQiBXByaWNlIgpzbGlwQnlVc2VyIgxzbGlwcGFnZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCIMc2xpcGFnZUFtQW10IgxzbGlwYWdlUHJBbXQiEWRhdGFHZXRBY3Rpb25JbmZvIg5vdXRBbXRBc3NldEFtdCIQb3V0UHJpY2VBc3NldEFtdCIHaW5McEFtdCINZ2V0QWNjQmFsYW5jZSIHYXNzZXRJZCIPY2FsY1ByaWNlQmlnSW50IghwckFtdFgxOCIIYW1BbXRYMTgiD3ZhbGlkYXRlQWJzRGlmZiIKZXN0aW1hdGVMUCIFb3V0THAiCHNsaXBwYWdlIgRkaWZmIgRwYXNzIgl2YWxpZGF0ZUQiAkQxIgJEMCIEZmFpbCIQcHJpdmF0ZUNhbGNQcmljZSIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10IgthbXRBc0FtdFgxOCIKcHJBc0FtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiA2NmZyIIYW10QXNEY20iB3ByQXNEY20iCHByaWNlWDE4IghscEFtdFgxOCINbHBQckluQW1Bc1gxOCINbHBQckluUHJBc1gxOCIPY2FsY3VsYXRlUHJpY2VzIgFwIhRlc3RpbWF0ZUdldE9wZXJhdGlvbiIGdHhJZDU4Ig5wYXltZW50QXNzZXRJZCIPcGF5bWVudExwQW1vdW50Igt1c2VyQWRkcmVzcyIJbHBBc3NldElkIghhbW91bnRJZCIHcHJpY2VJZCIOYW1vdW50RGVjaW1hbHMiDXByaWNlRGVjaW1hbHMiA3N0cyIKbHBFbWlzc2lvbiIPdmFsaWRhdGlvbkJsb2NrIghkZWNpbWFscyINYW1vdW50QmFsYW5jZSIQYW1vdW50QmFsYW5jZVgxOCIMcHJpY2VCYWxhbmNlIg9wcmljZUJhbGFuY2VYMTgiD2N1cnJlbnRQcmljZVgxOCIIY3VyUHJpY2UiEnBheW1lbnRMcEFtb3VudFgxOCINbHBFbWlzc2lvblgxOCISb3V0QW1vdW50QW1vdW50WDE4IhFvdXRQcmljZUFtb3VudFgxOCIPb3V0QW1vdW50QW1vdW50Ig5vdXRQcmljZUFtb3VudCIFc3RhdGUiFGVzdGltYXRlUHV0T3BlcmF0aW9uIhFzbGlwcGFnZVRvbGVyYW5jZSITaW5BbW91bnRBc3NldEFtb3VudCIPaW5BbW91bnRBc3NldElkIhJpblByaWNlQXNzZXRBbW91bnQiDmluUHJpY2VBc3NldElkIgppc0V2YWx1YXRlIgZlbWl0THAiCmlzT25lQXNzZXQiDXBheW1lbnRBbW91bnQiCXBheW1lbnRJZCILYW1vdW50SWRTdHIiCnByaWNlSWRTdHIiDWluQW1vdW50SWRTdHIiDGluUHJpY2VJZFN0ciIWaW5BbW91bnRBc3NldEFtb3VudFgxOCIVaW5QcmljZUFzc2V0QW1vdW50WDE4Igx1c2VyUHJpY2VYMTgiAXIiC3NsaXBwYWdlWDE4IgtscEFtb3VudFgxOCIPc2xpcHBhZ2VSZWFsWDE4IhB2YWxpZGF0ZVNsaXBwYWdlIgpwclZpYUFtWDE4IgphbVZpYVByWDE4Ig9leHBlY3RlZEFtb3VudHMiHGV4cGVjdGVkQW1vdW50QXNzZXRBbW91bnRYMTgiG2V4cGVjdGVkUHJpY2VBc3NldEFtb3VudFgxOCIRY2FsY3VsYXRlTHBBbW91bnQiG2NhbGN1bGF0ZUFtb3VudEFzc2V0UGF5bWVudCIaY2FsY3VsYXRlUHJpY2VBc3NldFBheW1lbnQiDGN1cnJlbnRQcmljZSIRc2xpcHBhZ2VDYWxjdWxhdGUiEWNoZWNrQ2FsY0xwQW1vdW50IgxlbWl0THBBbW91bnQiCmFtb3VudERpZmYiCXByaWNlRGlmZiINJHQwMTYyMjExNjQ4MCIKd3JpdGVBbUFtdCIKd3JpdGVQckFtdCILY29tbW9uU3RhdGUiG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZCIFb3JkZXIiB2FtdEFzSWQiBnByQXNJZCIPYWNjQW10QXNCYWxhbmNlIg5hY2NQckFzQmFsYW5jZSIKb3JBbXRBc3NldCIKb3JBbXRBc1N0ciIJb3JQckFzc2V0IglvclByQXNTdHIiCm9yZGVyUHJpY2UiDmNhc3RPcmRlclByaWNlIhFpc09yZGVyUHJpY2VWYWxpZCIJY29tbW9uR2V0IgFpIg1jaGVja1BheW1lbnRzIgdwYXltZW50Igljb21tb25QdXQiBmNhbGxlciISYW1vdW50QXNzZXRQYXltZW50IhFwcmljZUFzc2V0UGF5bWVudCIHdGFrZUZlZSIGYW1vdW50IgNmZWUiFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiAXMiHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0IgJwZCILbXVzdE1hbmFnZXIiAnBrIgtjaGVja0NhbGxlciIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiFWNoZWNrTWFuYWdlclB1YmxpY0tleSICcG0iBWhhc1BNIgdjaGVja1BNIglhdXRvU3Rha2UiB2ZhY3RDZmciD3N0YWtpbmdDb250cmFjdCIQc2xpcHBhZ2VDb250cmFjdCINc2xpcHBhZ2VDaGVjayINcGF5bWVudHNDaGVjayILZXN0aW1hdGVQdXQiAmVsIgZsZWdhY3kiAnNhIgJzcCIJbHBUcmFzZmVyIgJzcyIPYW1vdW50QXNzZXRQYXJ0Ig5wcmljZUFzc2V0UGFydCIRZ3d4UmV3YXJkQ29udHJhY3QiB3Bvb2xDZmciBWFkZG9uIhBwYXltZW50QW1vdW50UmF3Ig0kdDAyNTY0OTI1NzA4IglmZWVBbW91bnQiDSR0MDI1OTcyMjY0MjciEGFtb3VudEJhbGFuY2VOb3ciD3ByaWNlQmFsYW5jZU5vdyIMdmlydFN3YXBJbkFtIg12aXJ0U3dhcE91dFByIgx2aXJ0U3dhcEluUHIiDXZpcnRTd2FwT3V0QW0iBkQwdnNEMSIJbHBDYWxjUmVzIgFlIhBzZW5kRmVlVG9NYXRjaGVyIgttYXhzbGlwcGFnZSIJb3V0QW10QW10IgFiIgpleGNoUmVzdWx0Igdub3RVc2VkIglvdXRBbW91bnQiCm91dEFzc2V0SWQiCmVzdGltQW1BbXQiCmVzdGltUHJBbXQiDSR0MDMxNTY2MzIwMzQiCHRvdGFsR2V0IghmaW5hbFJlcyINJHQwMzI3MDMzMjgxMSIFb3V0QW0iBW91dFByIg50b3RhbEFtb3VudFJhdyINJHQwMzI4NTEzMjkwNiILdG90YWxBbW91bnQiEW91dEFzc2V0SWRPcldhdmVzIghjdXJQclgxOCIFY3VyUHIiBGJ1cm4iEm5vTGVzc1RoZW5BbXRBc3NldCIUbm9MZXNzVGhlblByaWNlQXNzZXQiFGNoZWNrT3V0QW1vdW50QW1vdW50IhNjaGVja091dFByaWNlQW1vdW50IhRidXJuTFBBc3NldE9uRmFjdG9yeSIKZmFjdG9yeUNmZyIHc3Rha2luZyIKdW5zdGFrZUludiIBdiIFYnVybkEiCGFtdEFzU3RyIgdwckFzU3RyIgFrIgJwciIMcmVzU2NhbGVNdWx0IgZpbkFtSWQiBmluUHJJZCIHdXNyQWRkciILcGF5bWVudEFzSWQiAnR4IgZ2ZXJpZnkiB210Y2hQdWIiBXNuZHJWIgVtdGNoViIPdGFyZ2V0UHVibGljS2V5IgckbWF0Y2gxUQABYQCAwtcvAAFiCQC2AgEAgMLXLwABYwkAtgIBAICAkLu61q3wDQABZADoBwABZQkAtgIBAAAAAWYJALYCAQABAAFnCQC2AgEJAGUCBQFhCQBpAgkAaAIFAWEAAQUBYQABaAIDMTAwAAFpAgExAAFqAgJfXwABawIAAAFsAAEAAW0AAgABbgADAAFvAAQAAXAAAQABcQACAAFyAAMAAXMABAABdAAFAAF1AAYAAXYABwABdwAIAAF4AAkAAXkAAQABegAHAAFBAAoAAUIAAAEBQwIBRAFFCQC8AgMJALYCAQUBRAUBYwkAtgIBBQFFAQFGAgFHAUgJAKADAQkAvAIDBQFHCQC2AgEFAUgFAWMBAUkDAUoBSwFMCQBrAwUBSgUBSwUBTAEBTQEBRwMJAL8CAgUBZQUBRwkAvgIBBQFHBQFHAQFOAAITJXNfX2ZhY3RvcnlDb250cmFjdAEBTwACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFQAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQFRAAIRJXMlc19fcHJpY2VfX2xhc3QBAVICAVMBVAkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAVMJAMwIAgkApAMBBQFUBQNuaWwFAWoBAVUCAVYBVwkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAVYCAl9fBQFXAQFYAgFWAVcJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQFWAgJfXwUBVwEBWQACDyVzX19hbW91bnRBc3NldAEBWgACDiVzX19wcmljZUFzc2V0AQJhYQACByVzX19hbXABAmFiAAINJXNfX2FkZG9uQWRkcgACYWMCDyVzX19mZWVQZXJtaWxsZQACYWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWMFAUIBAmFlAAIRJXNfX2ZhY3RvcnlDb25maWcBAmFmAAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhZwICYWgCYWkJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmFoAgJfXwUCYWkCCF9fY29uZmlnAQJhagECYWsJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYWsBAmFsAAIMJXNfX3NodXRkb3duAQJhbQECYW4JAAIBCQC5CQIJAMwIAgIPbHBfc3RhYmxlLnJpZGU6CQDMCAIFAmFuBQNuaWwCASABAmFvAwJhcAJhcQJhcgkBAmFtAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICEUZhaWxlZDogb3JkVmFsaWQ9CQClAwEFAmFwAgsgc25kclZhbGlkPQkApQMBBQJhcQIMIG10Y2hyVmFsaWQ9CQClAwEFAmFyAQJhcwEBRwQCYXQFAUcDCQABAgUCYXQCBlN0cmluZwQCYXUFAmF0BQJhdQkBAmFtAQITZmFpbCBjYXN0IHRvIFN0cmluZwECYXYCAmF3AmF4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYXcFAmF4CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmF3CQDMCAICAS4JAMwIAgUCYXgJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAECYXkCAmF3AmF4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYXcFAmF4CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmF3CQDMCAICAS4JAMwIAgUCYXgJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAACYXoJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhdgIFBHRoaXMJAQFOAAACYUEJAQJhdgIFBHRoaXMJAQJhYQABAmFCAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJhegkBAmFsAAcBAmFDAAkA2QQBCQECYXYCBQJhegkBAmFmAAACYUQJAKcIAQkBAmFDAAECYUUABAJhRgkBAmF2AgUEdGhpcwkBAVkABAJhRwkBAmF2AgUEdGhpcwkBAVoABAJhSAkBAmF5AgUCYXoJAQJhagEFAmFHBAJhaAkBAmF5AgUCYXoJAQJhagEFAmFGCQC1CQIJAQJhdgIFAmF6CQECYWcCCQCkAwEFAmFoCQCkAwEFAmFIBQFqAQJhSQAJALUJAgkBAmF2AgUCYXoJAQJhZQAFAWoBAmFKCgJhSwJhTAJhTQJhTgJhTwJhUAJhUQJhUgJhUwJhVAkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYUsJAMwIAgkApAMBBQJhTAkAzAgCCQCkAwEFAmFNCQDMCAIJAKQDAQUCYU4JAMwIAgkApAMBBQJhTwkAzAgCCQCkAwEFAmFQCQDMCAIJAKQDAQUCYVEJAMwIAgkApAMBBQJhUgkAzAgCCQCkAwEFAmFTCQDMCAIJAKQDAQUCYVQFA25pbAUBagECYVUGAmFWAmFXAmFYAmFOAmFRAmFSCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYVYJAMwIAgkApAMBBQJhVwkAzAgCCQCkAwEFAmFYCQDMCAIJAKQDAQUCYU4JAMwIAgkApAMBBQJhUQkAzAgCCQCkAwEFAmFSBQNuaWwFAWoBAmFZAQJhWgMJAAACBQJhWgIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYVoBAmJhAgJiYgJiYwkAvAIDBQJiYgUBYwUCYmMBAmJkAwJiZQJiZgJiZwQCYmgJALwCAwkAuAICBQJiZQUCYmYFAWIFAmJmBAJiaQkAvwICCQC4AgIFAmJnCQEBTQEFAmJoBQFlAwkBASEBBQJiaQkBAmFtAQkArAICAg5CaWcgc2xpcHBhZ2U6IAkApgMBBQJiaAkAlAoCBQJiaQkAmQMBCQDMCAIFAmJlCQDMCAIFAmJmBQNuaWwBAmJqAwJiawJibAJiZwQCYmgJALwCAwUCYmwFAWIFAmJrBAJibQkAvwICBQJiZwUCYmgDAwUCYm0GCQC/AgIFAmJsBQJiawkBAmFtAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApgMBBQJibAIBIAkApgMBBQJiawIBIAkApgMBBQJiaAIBIAkApgMBBQJiZwUCYm0BAmJuBAJibwJicAJicQJicgQCYnMJAQFDAgUCYnEFAmJvBAJidAkBAUMCBQJicgUCYnAJAQJiYQIFAmJ0BQJicwECYnUDAmJxAmJyAmJ2BAJidwkBAmFFAAQCYngJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJidwUBdQQCYnkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJidwUBdgQCYnoJAQJibgQFAmJ4BQJieQUCYnEFAmJyBAJiYwkBAUMCBQJicQUCYngEAmJiCQEBQwIFAmJyBQJieQQCYkEJAQFDAgUCYnYFAWEEAmJCCQECYmECBQJiYwUCYkEEAmJDCQECYmECBQJiYgUCYkEJAMwIAgUCYnoJAMwIAgUCYkIJAMwIAgUCYkMFA25pbAECYkQDAmJxAmJyAmJ2BAJiRQkBAmJ1AwUCYnEFAmJyBQJidgkAzAgCCQEBRgIJAJEDAgUCYkUAAAUBYQkAzAgCCQEBRgIJAJEDAgUCYkUAAQUBYQkAzAgCCQEBRgIJAJEDAgUCYkUAAgUBYQUDbmlsAQJiRgQCYkcCYkgCYkkCYkoEAmJ3CQECYUUABAJiSwkAkQMCBQJidwUBcgQCYkwJAJEDAgUCYncFAXMEAmJNCQCRAwIFAmJ3BQF0BAJiTgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJ3BQF1BAJiTwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJ3BQF2BAJiUAkAkQMCBQJidwUBcQQCYlEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJiSwILV3JvbmcgTFAgaWQIcXVhbnRpdHkEAmJSAwkAAAIFAmJLBQJiSAYJAQJhbQECE1dyb25nIHBheW1lbnQgYXNzZXQDCQAAAgUCYlIFAmJSBAJiUwMJAGcCBQJiTgUCYk8FAmJOBQJiTwMJAAACBQJiUwUCYlMEAmJUCQECYVkBBQJiTAQCYlUJAQFDAgUCYlQFAmJTBAJiVgkBAmFZAQUCYk0EAmJXCQEBQwIFAmJWBQJiUwQCYlgJAQJiYQIFAmJXBQJiVQQCYlkJAQFGAgUCYlgFAWEEAmJaCQEBQwIFAmJJBQFhBAJjYQkBAUMCBQJiUQUBYQQCY2IJALwCAwUCYlUFAmJaBQJjYQQCY2MJALwCAwUCYlcFAmJaBQJjYQQCY2QJAQFGAgUCY2IFAmJTBAJjZQkBAUYCBQJjYwUCYlMEAmNmAwkAAAIFAmJHAgAFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJiSgUCY2QDCQAAAgUCYkwCBVdBVkVTBQR1bml0CQDZBAEFAmJMCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJKBQJjZQMJAAACBQJiTQIFV0FWRVMFBHVuaXQJANkEAQUCYk0JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVgCCQClCAEFAmJKBQJiRwkBAmFVBgUCY2QFAmNlBQJiSQUCYlkFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFRAAUCYlkJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFSAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCYlkFA25pbAkAnAoKBQJjZAUCY2UFAmJMBQJiTQUCYlQFAmJWBQJiUQUCYlgFAmJQBQJjZgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECY2cMAmJHAmNoAmNpAmNqAmNrAmNsAmJKAmNtAmNuAmNvAmNwAmNxBAJidwkBAmFFAAQCYksJANkEAQkAkQMCBQJidwUBcgQCY3IJAJEDAgUCYncFAXMEAmNzCQCRAwIFAmJ3BQF0BAJjdAkAkQMCBQJidwUBdwQCY3UJAJEDAgUCYncFAXgEAmJOCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYncFAXUEAmJPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYncFAXYEAmJQCQCRAwIFAmJ3BQFxBAJiUQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiSwIOV3JvbmcgbHAgYXNzZXQIcXVhbnRpdHkEAmJUAwUCY20JAQJhWQEFAmNyAwMFAmNvCQAAAgUCY3EFAmNyBwkAZQIJAQJhWQEFAmNyBQJjcAMFAmNvCQECYVkBBQJjcgkAZQIJAQJhWQEFAmNyBQJjaQQCYlYDBQJjbQkBAmFZAQUCY3MDAwUCY28JAAACBQJjcQUCY3MHCQBlAgkBAmFZAQUCY3MFAmNwAwUCY28JAQJhWQEFAmNzCQBlAgkBAmFZAQUCY3MFAmNrBAJiUwMJAGcCBQJiTgUCYk8FAmJOBQJiTwMJAAACBQJiUwUCYlMEAmN2CQEBQwIFAmNpBQJiUwQCY3cJAQFDAgUCY2sFAmJTBAJjeAkBAmJhAgUCY3cFAmN2BAJiVQkBAUMCBQJiVAUCYlMEAmJXCQEBQwIFAmJWBQJiUwQCY3kDCQAAAgUCYlEAAAQCYlgFAWUEAmN6BQFlBAJjQQkAdgYJALkCAgUCY3YFAmN3AAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEBRgIFAmNBBQFhCQEBRgIFAmN2BQJiUwkBAUYCBQJjdwUCYlMJAQJiYQIJALcCAgUCYlcFAmN3CQC3AgIFAmJVBQJjdgUCY3oEAmJYCQECYmECBQJiVwUCYlUEAmNCCQC8AgMJAQFNAQkAuAICBQJiWAUCY3gFAWMFAmJYBAJjegkBAUMCBQJjaAUBYQQCY0MDCQAAAgMJAQIhPQIFAmJYBQFlCQC/AgIFAmNCBQJjegcGBgkBAmFtAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmNCAgMgPiAJAKYDAQUCY3oDCQAAAgUCY0MFAmNDBAJjYQkBAUMCBQJiUQUBYQQCY0QJALwCAwUCY3YFAmJYBQFjBAJjRQkAvAIDBQJjdwUBYwUCYlgEAmNGAwkAvwICBQJjRAUCY3cJAJQKAgUCY0UFAmN2CQCUCgIFAmN2BQJjRAQCY0cIBQJjRgJfMQQCY0gIBQJjRgJfMgQCY0EJALwCAwUCY2EFAmNIBQJiVwkAlwoFCQEBRgIFAmNBBQFhCQEBRgIFAmNHBQJiUwkBAUYCBQJjSAUCYlMFAmJYBQJjegkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQCY0kIBQJjeQJfMQQCY0oIBQJjeQJfMgQCY0sIBQJjeQJfMwQCY0wJAQFGAggFAmN5Al80BQFhBAJjTQkBAUYCCAUCY3kCXzUFAWEEAmNOAwkAZgIFAmNJAAAGCQECYW0BAgdMUCA8PSAwAwkAAAIFAmNOBQJjTgQCY08DCQEBIQEFAmNuAAAFAmNJBAJjUAkAZQIFAmNpBQJjSgQCY1EJAGUCBQJjawUCY0sEAmNSAwMFAmNvCQAAAgUCY3EFAmNyBwkAlAoCBQJjcAAAAwMFAmNvCQAAAgUCY3EFAmNzBwkAlAoCAAAFAmNwCQCUCgIFAmNKBQJjSwQCY1MIBQJjUgJfMQQCY1QIBQJjUgJfMgQCY1UJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFRAAUCY0wJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFSAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY0wJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVUCBQJiSgUCYkcJAQJhSgoFAmNTBQJjVAUCY08FAmNMBQJjaAUCY00FBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNQBQJjUQUDbmlsCQCfCg0FAmNJBQJjTwUCY0wFAmJUBQJiVgUCYlEFAmJLBQJiUAUCY1UFAmNQBQJjUQUCY2oFAmNsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJjVgECY1cEAmJ3CQECYUUABAJjWAkAkQMCBQJidwUBcwQCY1kJAJEDAgUCYncFAXQEAmJQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYncFAXEEAmJ4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYncFAXUEAmJ5CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYncFAXYEAmNaCQECYVkBBQJjWAQCZGEJAQJhWQEFAmNZBAJiWAMJAAACCAUCY1cJb3JkZXJUeXBlBQNCdXkJAQJibgQFAmJ4BQJieQkAZAIFAmNaCAUCY1cGYW1vdW50BQJkYQkBAmJuBAUCYngFAmJ5CQBlAgUCY1oIBQJjVwZhbW91bnQFAmRhBAJiWQkBAUYCBQJiWAUBYQMDAwkBAmFCAAYJAAACBQJiUAUBbgYJAAACBQJiUAUBbwkBAmFtAQINQWRtaW4gYmxvY2tlZAQCZGIICAUCY1cJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BAJkYwMJAAACBQJkYgUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUCZGIEAmRkCAgFAmNXCWFzc2V0UGFpcgpwcmljZUFzc2V0BAJkZQMJAAACBQJkZAUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUCZGQDAwkBAiE9AgUCZGMFAmNYBgkBAiE9AgUCZGUFAmNZCQECYW0BAglXciBhc3NldHMEAmRmCAUCY1cFcHJpY2UEAmJPCQBrAwUBYQUCYnkFAmJ4BAJkZwkBAUkDBQJkZgUBYQUCYk8EAmRoAwkAAAIIBQJjVwlvcmRlclR5cGUFA0J1eQkAZwIFAmJZBQJkZwkAZwIFAmRnBQJiWQYBAmRpAQJkagQCZGsDCQAAAgkAkAMBCAUCZGoIcGF5bWVudHMAAQYJAQJhbQECEjEgcGF5bWVudCBleHBlY3RlZAMJAAACBQJkawUCZGsEAmRsCQEFdmFsdWUBCQCRAwIIBQJkaghwYXltZW50cwAABAJiSAkBBXZhbHVlAQgFAmRsB2Fzc2V0SWQEAmNwCAUCZGwGYW1vdW50BAJjeQkBAmJGBAkA2AQBCAUCZGoNdHJhbnNhY3Rpb25JZAkA2AQBBQJiSAUCY3AIBQJkagZjYWxsZXIEAmNkCAUCY3kCXzEEAmNlCAUCY3kCXzIEAmJQCQENcGFyc2VJbnRWYWx1ZQEIBQJjeQJfOQQCY2YIBQJjeQNfMTADAwkBAmFCAAYJAAACBQJiUAUBbwkBAmFtAQkArAICAg9BZG1pbiBibG9ja2VkOiAJAKQDAQUCYlAJAJcKBQUCY2QFAmNlBQJjcAUCYkgFAmNmCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJkbQkCZG4BVwJkbwJkcAJiZwJjbgJjbwJjcAJjcQQCY3kJAQJjZwwFAVcFAmJnCAkBBXZhbHVlAQUCZG8GYW1vdW50CAkBBXZhbHVlAQUCZG8HYXNzZXRJZAgJAQV2YWx1ZQEFAmRwBmFtb3VudAgJAQV2YWx1ZQEFAmRwB2Fzc2V0SWQFAmRuBwUCY24FAmNvBQJjcAUCY3EEAmJQCQENcGFyc2VJbnRWYWx1ZQEIBQJjeQJfOAMDAwkBAmFCAAYJAAACBQJiUAUBbQYJAAACBQJiUAUBbwkBAmFtAQkArAICAghCbG9ja2VkOgkApAMBBQJiUAUCY3kBAmRxAQJkcgQCZHMJAGsDBQJkcgUCYWQFAWQJAJQKAgkAZQIFAmRyBQJkcwUCZHMBAmR0AAQCYXQJAKIIAQkBAU8AAwkAAQIFAmF0AgZTdHJpbmcEAmR1BQJhdAkA2QQBBQJkdQMJAAECBQJhdAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJkdgAEAmF0CQCiCAEJAQFQAAMJAAECBQJhdAIGU3RyaW5nBAJkdQUCYXQJANkEAQUCZHUDCQABAgUCYXQCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgACZHcJAQJhbQECEVBlcm1pc3Npb24gZGVuaWVkAQJkeAECZGoEAmF0CQECZHQAAwkAAQIFAmF0AgpCeXRlVmVjdG9yBAJkeQUCYXQDCQAAAggFAmRqD2NhbGxlclB1YmxpY0tleQUCZHkGBQJkdwMJAAECBQJhdAIEVW5pdAMJAAACCAUCZGoGY2FsbGVyBQR0aGlzBgUCZHcJAAIBAgtNYXRjaCBlcnJvchUCZGoBC2NvbnN0cnVjdG9yAQJhegQCZHoJAQJkeAEFAmRqAwkAAAIFAmR6BQJkegkAzAgCCQELU3RyaW5nRW50cnkCCQEBTgAFAmF6BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGoBCnNldE1hbmFnZXIBAmRBBAJkegkBAmR4AQUCZGoDCQAAAgUCZHoFAmR6BAJkQgkA2QQBBQJkQQMJAAACBQJkQgUCZEIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVAABQJkQQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRqAQ5jb25maXJtTWFuYWdlcgAEAmRDCQECZHYABAJkRAMJAQlpc0RlZmluZWQBBQJkQwYJAQJhbQECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJkRAUCZEQEAmRFAwkAAAIIBQJkag9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmRDBgkBAmFtAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmRFBQJkRQkAzAgCCQELU3RyaW5nRW50cnkCCQEBTwAJANgEAQkBBXZhbHVlAQUCZEMJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVAABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGoBA3B1dAICYmcCZEYEAmRHCQECYUkABAJkSAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZEcFAXkCFldyb25nIHN0YWtpbmcgY29udHJhY3QEAmRJCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJkRwUBegIXV3JvZ24gc2xpcHBhZ2UgY29udHJhY3QEAmRKAwkAZwIFAmJnAAAGCQECYW0BAg53cm9uZyBzbGlwcGFnZQMJAAACBQJkSgUCZEoEAmRLAwkAAAIJAJADAQgFAmRqCHBheW1lbnRzAAIGCQECYW0BAhMyIHBheW1lbnRzIGV4cGVjdGVkAwkAAAIFAmRLBQJkSwQCZEwJAQJkbQkJAKUIAQgFAmRqBmNhbGxlcgkA2AQBCAUCZGoNdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQJkaghwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQJkaghwYXltZW50cwAABmFtb3VudAkAkQMCCAUCZGoIcGF5bWVudHMAAQUCYmcGBwAAAgAEAmNPCAUCZEwCXzIEAmJLCAUCZEwCXzcEAmNmCAUCZEwCXzkEAmNQCAUCZEwDXzEwBAJjUQgFAmRMA18xMQQCYkwIBQJkTANfMTIEAmJNCAUCZEwDXzEzBAJjeQkA/AcEBQJhegIEZW1pdAkAzAgCBQJjTwUDbmlsBQNuaWwDCQAAAgUCY3kFAmN5BAJkTQQCYXQFAmN5AwkAAQIFAmF0AgdBZGRyZXNzBAJkTgUCYXQJAPwHBAUCZE4CBGVtaXQJAMwIAgUCY08FA25pbAUDbmlsBQR1bml0AwkAAAIFAmRNBQJkTQQCZE8DCQBmAgUCY1AAAAkA/AcEBQJkSQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJMBQJjUAUDbmlsBQNuaWwDCQAAAgUCZE8FAmRPBAJkUAMJAGYCBQJjUQAACQD8BwQFAmRJAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYk0FAmNRBQNuaWwFA25pbAMJAAACBQJkUAUCZFAEAmRRAwUCZEYEAmRSCQD8BwQFAmRIAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiSwUCY08FA25pbAMJAAACBQJkUgUCZFIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZGoGY2FsbGVyBQJjTwUCYksFA25pbAkAzggCBQJjZgUCZFEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGoBCXB1dE9uZVRrbgUCZFMCZFQCYmYCYmcCZEYEAmJ3CQECYUkABAJkSAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYncFAXkCFldyb25nIHN0YWtpbmcgY29udHJhY3QEAmRJCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJidwUBegIXV3Jvbmcgc2xpcHBhZ2UgY29udHJhY3QEAmRVCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJidwUBQQIZV3JvbmcgZ3d4IHJld2FyZCBjb250cmFjdAQCZFYJAQJhRQAEAmJMCQCRAwIFAmRWBQFzBAJiTQkAkQMCBQJkVgUBdAQCYk4JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkVgUBdQQCYk8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkVgUBdgQCZFcJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBAmFiAAIABAJiSgMJAAACBQJkVwkApQgBCAUCZGoGY2FsbGVyCAUCZGoMb3JpZ2luQ2FsbGVyCAUCZGoGY2FsbGVyAwMDAwkAZwIAAAUCYmcGCQBnAgAABQJkUwYJAGcCAAAFAmRUBgkAZwIAAAUCYmYJAQJhbQECDFdyb25nIHBhcmFtcwMJAQIhPQIJAJADAQgFAmRqCHBheW1lbnRzAAEJAQJhbQECEjEgcGF5bWVudCBleHBlY3RlZAQCZGwJAQV2YWx1ZQEJAJEDAggFAmRqCHBheW1lbnRzAAAEAmJICQDYBAEJAQV2YWx1ZQEIBQJkbAdhc3NldElkBAJkWAgFAmRsBmFtb3VudAQCZFkJAQJkcQEFAmRYBAJjcAgFAmRZAl8xBAJkWggFAmRZAl8yAwMDCQBmAgUCZFMFAmNwBgkAZgIFAmRUBQJjcAYJAGYCAICt4gQFAmNwCQECYW0BAhR3cm9uZyBwYXltZW50IGFtb3VudAQCYlQJAQJhWQEFAmJMBAJiVgkBAmFZAQUCYk0EAmVhAwkAAAIFAmJIBQJiTAkAmAoGCQBlAgUCYlQFAmNwBQJiVgkAZQIFAmNwBQJkUwUCZFQAAAAAAwkAAAIFAmJIBQJiTQkAmAoGBQJiVAkAZQIFAmJWBQJjcAAAAAAJAGUCBQJjcAUCZFQFAmRTCQECYW0BAhR3cm9uZyBwYXltZW50QXNzZXRJZAQCZWIIBQJlYQJfMQQCZWMIBQJlYQJfMgQCZWQIBQJlYQJfMwQCZWUIBQJlYQJfNAQCZWYIBQJlYQJfNQQCZWcIBQJlYQJfNgQCYmwJAPwHBAUCZFUCBWNhbGNECQDMCAIJAKQDAQUCZWIJAMwIAgkApAMBBQJlYwkAzAgCBQJhQQkAzAgCBQFoCQDMCAIFAWkFA25pbAUDbmlsBAJiawkA/AcEBQJkVQIFY2FsY0QJAMwIAgkApgMBCQC2AgEJAGUCCQBkAgUCZWIFAmVkBQJlZwkAzAgCCQCmAwEJALYCAQkAZQIJAGQCBQJlYwUCZWYFAmVlCQDMCAIFAmFBCQDMCAIFAWgJAMwIAgUBaQUDbmlsBQNuaWwEAmVoCQECYmoDCQCnAwEJAQJhcwEFAmJrCQCnAwEJAQJhcwEFAmJsBQFnAwkAAAIFAmVoBQJlaAQCZEwJAQJkbQkJAKUIAQgFAmRqBmNhbGxlcgkA2AQBCAUCZGoNdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUCYkwFAmRTCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQJiTQUCZFQFAmJnBgYFAmNwBQJiSAQCYmUIBQJkTAJfMgQCYksIBQJkTAJfNwQCY2YIBQJkTAJfOQQCY1AIBQJkTANfMTAEAmNRCAUCZEwDXzExBAJlaQkBAmJkAwkAtgIBBQJiZQkAtgIBBQJiZgkAtgIBBQJiZwQCY08JAKADAQgFAmVpAl8yBAJlagkA/AcEBQJhegIEZW1pdAkAzAgCBQJjTwUDbmlsBQNuaWwDCQAAAgUCZWoFAmVqBAJkTQQCYXQFAmVqAwkAAQIFAmF0AgdBZGRyZXNzBAJkTgUCYXQJAPwHBAUCZE4CBGVtaXQJAMwIAgUCY08FA25pbAUDbmlsBQR1bml0AwkAAAIFAmRNBQJkTQQCZE8DCQBmAgUCY1AAAAkA/AcEBQJkSQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUCYkwFAmNQBQNuaWwFA25pbAMJAAACBQJkTwUCZE8EAmRQAwkAZgIFAmNRAAAJAPwHBAUCZEkCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJNBQJjUQUDbmlsBQNuaWwDCQAAAgUCZFAFAmRQBAJkUQMFAmRGBAJkUgkA/AcEBQJkSAIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYksFAmNPBQNuaWwDCQAAAgUCZFIFAmRSBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRqBmNhbGxlcgUCY08FAmJLBQNuaWwEAmVrAwkAZgIFAmRaAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUQFAmRaCQDZBAEFAmJIBQNuaWwFA25pbAkAzggCCQDOCAIFAmNmBQJkUQUCZWsJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGoBCnB1dEZvckZyZWUBAmVsAwkAZgIAAAUCZWwJAQJhbQECDndyb25nIHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUCZGoIcGF5bWVudHMAAgkBAmFtAQITMiBwYXltZW50cyBleHBlY3RlZAQCZEwJAQJkbQkJAKUIAQgFAmRqBmNhbGxlcgkA2AQBCAUCZGoNdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQJkaghwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQJkaghwYXltZW50cwAABmFtb3VudAkAkQMCCAUCZGoIcGF5bWVudHMAAQUCZWwHBwAAAgAIBQJkTAJfOQJkagEDZ2V0AAQCY3kJAQJkaQEFAmRqBAJlbQgFAmN5Al8xBAJjZQgFAmN5Al8yBAJjcAgFAmN5Al8zBAJiSAgFAmN5Al80BAJjZggFAmN5Al81BAJlbgkA/AcEBQJhegIEYnVybgkAzAgCBQJjcAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiSAUCY3AFA25pbAMJAAACBQJlbgUCZW4FAmNmCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRqAQlnZXRPbmVUa24FAmVvAmVwAmVxAmVyAmJnAwkBAiE9AgkAkAMBCAUCZGoIcGF5bWVudHMAAQkBAmFtAQISMSBwYXltZW50IGV4cGVjdGVkBAJidwkBAmFFAAQCYksJAJEDAgUCYncFAXIEAmJMCQCRAwIFAmJ3BQFzBAJiTQkAkQMCBQJidwUBdAQCYk4JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJidwUBdQQCYk8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJidwUBdgQCYlAJAJEDAgUCYncFAXEEAmRHCQECYUkABAJkVQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZEcFAUECH1dyb25nIGd3eFJld2FyZENvbnRyYWN0IGFkZHJlc3MEAmRsCQEFdmFsdWUBCQCRAwIIBQJkaghwYXltZW50cwAABAJkVwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQECYWIAAgAEAmJKAwkAAAIFAmRXCQClCAEIBQJkagZjYWxsZXIIBQJkagxvcmlnaW5DYWxsZXIIBQJkagZjYWxsZXIEAmJHCQDYBAEIBQJkag10cmFuc2FjdGlvbklkBAJiSAkBBXZhbHVlAQgFAmRsB2Fzc2V0SWQEAmNwCAUCZGwGYW1vdW50AwkAZgIAgJTr3AMFAmNwCQECYW0BAhFNaW4gcGF5bWVudCAxMCBMUAMDAwkAZgIAAAUCYmcGCQBmAgAABQJlbwYJAGYCAAAFAmVxCQECYW0BAgxXcm9uZyBwYXJhbXMDCQECIT0CBQJiSwkA2AQBBQJiSAkBAmFtAQIIV3JvbmcgTFAEAmN5CQECYkYECQDYBAEIBQJkag10cmFuc2FjdGlvbklkCQDYBAEFAmJIBQJjcAgFAmRqBmNhbGxlcgQCZXMIBQJjeQJfMQQCZXQIBQJjeQJfMgQCYlQJAQJhWQEFAmJMBAJiVgkBAmFZAQUCYk0EAmV1AwkAAAIFAmVyBQJiTAkAmQoHCQBlAgUCYlQFAmVzCQBlAgUCYlYFAmV0BQJlbwUCZXQAAAAACQBkAgUCZXMFAmVvAwkAAAIFAmVyBQJiTQkAmQoHCQBlAgUCYlQFAmVzCQBlAgUCYlYFAmV0AAAAAAUCZW8FAmVzCQBkAgUCZXQFAmVvCQECYW0BAhB3cm9uZyBvdXRBc3NldElkBAJlYggFAmV1Al8xBAJlYwgFAmV1Al8yBAJlZAgFAmV1Al8zBAJlZQgFAmV1Al80BAJlZggFAmV1Al81BAJlZwgFAmV1Al82BAJldggFAmV1Al83AwMJAGYCAAAFAmVkBgkAZgIAAAUCZWYJAQJhbQECCldyb25nIGNhbGMEAmJsCQD8BwQFAmRVAgVjYWxjRAkAzAgCCQCkAwEFAmViCQDMCAIJAKQDAQUCZWMJAMwIAgUCYUEJAMwIAgUBaAkAzAgCBQFpBQNuaWwFA25pbAQCYmsJAPwHBAUCZFUCBWNhbGNECQDMCAIJAKQDAQkAZAIJAGUCBQJlYgUCZWQFAmVnCQDMCAIJAKQDAQkAZQIJAGQCBQJlYwUCZWUFAmVmCQDMCAIFAmFBCQDMCAIFAWgJAMwIAgUBaQUDbmlsBQNuaWwEAmVoCQECYmoDCQCnAwEJAQJhcwEFAmJrCQCnAwEJAQJhcwEFAmJsBQFnAwkAAAIFAmVoBQJlaAQCZXcJAQJiZAMJALYCAQUCZXYJALYCAQUCZXEJALYCAQUCYmcDCQAAAgUCZXcFAmV3BAJleAMJAAACBQJlcgUCYkwJAJQKAgkAoAMBCAUCZXcCXzIAAAkAlAoCAAAJAKADAQgFAmV3Al8yBAJleQgFAmV4Al8xBAJleggFAmV4Al8yBAJlQQkAZAIFAmV5BQJlegQCZUIJAQJkcQEFAmVBBAJlQwgFAmVCAl8xBAJkWggFAmVCAl8yBAJlRAMJAAACBQJlcgIFV0FWRVMFBHVuaXQJANkEAQUCZXIEAmVrAwkAZgIFAmRaAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUQFAmRaBQJlRAUDbmlsBQNuaWwEAmJTAwkAZwIFAmJOBQJiTwUCYk4FAmJPAwkAAAIFAmJTBQJiUwQCZUUJAQJiYQIJAQFDAgUCYlYFAmJTCQEBQwIFAmJUBQJiUwQCZUYJAQFGAgUCZUUFAWEEAmNmCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJKBQJlQwUCZUQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVgCCQClCAEFAmJKBQJiRwkBAmFVBgUCZXkFAmV6BQJjcAUCZUYFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFRAAUCZUYJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFSAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZUYFA25pbAMJAAACBQJjZgUCY2YEAmVHCQD8BwQFAmF6AgRidXJuCQDMCAIFAmNwBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJIBQJjcAUDbmlsAwkAAAIFAmVHBQJlRwkAzggCBQJjZgUCZWsJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGoBCWdldE5vTGVzcwICZUgCZUkEAmN5CQECZGkBBQJkagQCY2QIBQJjeQJfMQQCY2UIBQJjeQJfMgQCY3AIBQJjeQJfMwQCYkgIBQJjeQJfNAQCY2YIBQJjeQJfNQQCZUoDCQBnAgUCY2QFAmVIBgkBAmFtAQkArAICCQCsAgIJAKwCAgIJRmFpbGVkOiAgCQCkAwEFAmNkAgMgPCAJAKQDAQUCZUgDCQAAAgUCZUoFAmVKBAJlSwMJAGcCBQJjZQUCZUkGCQECYW0BCQCsAgIJAKwCAgkArAICAghGYWlsZWQ6IAkApAMBBQJjZQIDIDwgCQCkAwEFAmVJAwkAAAIFAmVLBQJlSwQCZUwJAPwHBAUCYXoCBGJ1cm4JAMwIAgUCY3AFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYkgFAmNwBQNuaWwDCQAAAgUCZUwFAmVMBQJjZgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkagENdW5zdGFrZUFuZEdldAECZHIEAmRrAwkBAiE9AgkAkAMBCAUCZGoIcGF5bWVudHMAAAkBAmFtAQIUbm8gcGF5bWVudHMgZXhwZWN0ZWQGAwkAAAIFAmRrBQJkawQCYncJAQJhRQAEAmVNCQECYUkABAJiSwkA2QQBCQCRAwIFAmJ3BQFyBAJlTgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZU0FAXkCBXdyb25nBAJlTwkA/AcEBQJlTgIHdW5zdGFrZQkAzAgCCQDYBAEFAmJLCQDMCAIFAmRyBQNuaWwFA25pbAMJAAACBQJlTwUCZU8EAmN5CQECYkYECQDYBAEIBQJkag10cmFuc2FjdGlvbklkCQDYBAEFAmJLBQJkcggFAmRqBmNhbGxlcgQCYlAJAQ1wYXJzZUludFZhbHVlAQgFAmN5Al85BAJjZggFAmN5A18xMAQCZVADAwkBAmFCAAYJAAACBQJiUAUBbwkBAmFtAQkArAICAglCbG9ja2VkOiAJAKQDAQUCYlAGAwkAAAIFAmVQBQJlUAQCZVEJAPwHBAUCYXoCBGJ1cm4JAMwIAgUCZHIFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYksFAmRyBQNuaWwDCQAAAgUCZVEFAmVRBQJjZgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkagEIYWN0aXZhdGUCAmVSAmVTAwkBAiE9AgkApQgBCAUCZGoGY2FsbGVyCQClCAEFAmF6CQECYW0BAgZkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQEBWQAFAmVSCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFaAAUCZVMFA25pbAIHc3VjY2VzcwJkagEEc2V0UwICZVQCZVADCQECIT0CCQClCAEIBQJkagZjYWxsZXIJAQJhdgIFBHRoaXMJAQJhYgAFAmR3CQDMCAIJAQtTdHJpbmdFbnRyeQIFAmVUBQJlUAUDbmlsAmRqAQRzZXRJAgJlVAJlUAMJAQIhPQIJAKUIAQgFAmRqBmNhbGxlcgkBAmF2AgUEdGhpcwkBAmFiAAUCZHcJAMwIAgkBDEludGVnZXJFbnRyeQIFAmVUBQJlUAUDbmlsAmRqARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJhRQACZGoBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmFaCQCUCgIFA25pbAkBAmFZAQUCYVoCZGoBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmJxAmJyAmJ2BAJlVQkBAmJ1AwUCYnEFAmJyBQJidgkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmVVAAAJAMwIAgkApgMBCQCRAwIFAmVVAAEJAMwIAgkApgMBCQCRAwIFAmVVAAIFA25pbAJkagEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIBRwJlVgkAlAoCBQNuaWwJAQFGAgkApwMBBQFHBQJlVgJkagEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUQBRQkAlAoCBQNuaWwJAKYDAQkBAUMCBQFEBQFFAmRqAR5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkCAmJiAmJjCQCUCgIFA25pbAkApgMBCQECYmECCQCnAwEFAmJiCQCnAwEFAmJjAmRqASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkCYkcCYmcCY2kCZVcCY2sCZVgCZVkCY20CY24JAJQKAgUDbmlsCQECY2cMBQJiRwUCYmcFAmNpBQJlVwUCY2sFAmVYBQJlWQUCY20FAmNuBwAAAgACZGoBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJiRwJlWgJiSQJlWQQCY3kJAQJiRgQFAmJHBQJlWgUCYkkJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmVZCQCUCgIFA25pbAkAnAoKCAUCY3kCXzEIBQJjeQJfMggFAmN5Al8zCAUCY3kCXzQIBQJjeQJfNQgFAmN5Al82CAUCY3kCXzcJAKYDAQgFAmN5Al84CAUCY3kCXzkIBQJjeQNfMTABAmZhAQJmYgAEAmF0BQJmYQMJAAECBQJhdAIFT3JkZXIEAmNXBQJhdAQCZmMJAQJhQwAEAmFwCQECY1YBBQJjVwQCZmQJAPQDAwgFAmNXCWJvZHlCeXRlcwkAkQMCCAUCY1cGcHJvb2ZzAAAIBQJjVw9zZW5kZXJQdWJsaWNLZXkEAmZlCQD0AwMIBQJjVwlib2R5Qnl0ZXMJAJEDAggFAmNXBnByb29mcwABBQJmYwMDAwUCYXAFAmZkBwUCZmUHBgkBAmFvAwUCYXAFAmZkBQJmZQQCZmYEAmZnCQECZHQAAwkAAQIFAmZnAgpCeXRlVmVjdG9yBAJkeQUCZmcFAmR5AwkAAQIFAmZnAgRVbml0CAUCZmEPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAmZhCWJvZHlCeXRlcwkAkQMCCAUCZmEGcHJvb2ZzAAAFAmZmHaQeuA==", "chainId": 84, "height": 2185486, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8W3cKt3YsQttckkW9fcT1FfTgFJVYQGK3RrJE6gB7Sk4 Next: GJzhzkuGMUW9p3i8tYJg9ZWHDr45jnPYRLfobBZvR8uu Diff:
OldNewDifferences
1-{-# STDLIB_VERSION 5 #-}
1+{-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
77
88 let c = toBigInt(1000000000000000000)
99
10-let d = toBigInt(0)
10+let d = 1000
1111
12-let e = toBigInt(1)
12+let e = toBigInt(0)
1313
14-let f = toBigInt((a - ((a * 1) / a)))
14+let f = toBigInt(1)
1515
16-let g = "100"
16+let g = toBigInt((a - ((a * 1) / a)))
1717
18-let h = "1"
18+let h = "100"
1919
20-let i = "__"
20+let i = "1"
2121
22-let j = ""
22+let j = "__"
2323
24-let k = 1
24+let k = ""
2525
26-let l = 2
26+let l = 1
2727
28-let m = 3
28+let m = 2
2929
30-let n = 4
30+let n = 3
3131
32-let o = 1
32+let o = 4
3333
34-let p = 2
34+let p = 1
3535
36-let q = 3
36+let q = 2
3737
38-let r = 4
38+let r = 3
3939
40-let s = 5
40+let s = 4
4141
42-let t = 6
42+let t = 5
4343
44-let u = 7
44+let u = 6
4545
46-let v = 8
46+let v = 7
4747
48-let w = 9
48+let w = 8
4949
50-let x = 1
50+let x = 9
5151
52-let y = 7
52+let y = 1
5353
54-let z = 10
54+let z = 7
5555
56-let A = "%s__delay"
56+let A = 10
5757
58-func B (C,D) = fraction(toBigInt(C), c, toBigInt(D))
58+let B = 0
59+
60+func C (D,E) = fraction(toBigInt(D), c, toBigInt(E))
5961
6062
61-func E (F,G) = toInt(fraction(F, toBigInt(G), c))
63+func F (G,H) = toInt(fraction(G, toBigInt(H), c))
6264
6365
64-func H (I,J,K) = fraction(I, J, K)
66+func I (J,K,L) = fraction(J, K, L)
6567
6668
67-func L (F) = if ((d > F))
68- then -(F)
69- else F
69+func M (G) = if ((e > G))
70+ then -(G)
71+ else G
7072
7173
72-func M () = "%s__factoryContract"
74+func N () = "%s__factoryContract"
7375
7476
75-func N () = "%s__managerPublicKey"
77+func O () = "%s__managerPublicKey"
7678
7779
78-func O () = "%s__pendingManagerPublicKey"
80+func P () = "%s__pendingManagerPublicKey"
7981
8082
81-func P () = "%s%s__price__last"
83+func Q () = "%s%s__price__last"
8284
8385
84-func Q (R,S) = makeString(["%s%s%d%d__price__history", toString(R), toString(S)], i)
86+func R (S,T) = makeString(["%s%s%d%d__price__history", toString(S), toString(T)], j)
8587
8688
87-func T (U,V) = ((("%s%s%s__P__" + U) + "__") + V)
89+func U (V,W) = ((("%s%s%s__P__" + V) + "__") + W)
8890
8991
90-func W (U,V) = ((("%s%s%s__G__" + U) + "__") + V)
92+func X (V,W) = ((("%s%s%s__G__" + V) + "__") + W)
9193
9294
93-func X () = "%s__amountAsset"
95+func Y () = "%s__amountAsset"
9496
9597
96-func Y () = "%s__priceAsset"
98+func Z () = "%s__priceAsset"
9799
98100
99-func Z () = "%s__amp"
101+func aa () = "%s__amp"
100102
101103
102-func aa () = "%s__addonAddr"
104+func ab () = "%s__addonAddr"
103105
104106
105-func ab (ac) = makeString(["%s%s__lastGetOneTknCall", ac], i)
107+let ac = "%s__feePermille"
106108
107-
108-func ad (ac) = makeString(["%s%s__lastPutOneTknCall", ac], i)
109-
109+let ad = valueOrElse(getInteger(this, ac), B)
110110
111111 func ae () = "%s__factoryConfig"
112112
123123 func al () = "%s__shutdown"
124124
125125
126-func am (an,ao,ap) = throw(((((("Failed: ordValid=" + toString(an)) + " sndrValid=") + toString(ao)) + " mtchrValid=") + toString(ap)))
126+func am (an) = throw(makeString(["lp_stable.ride:", an], " "))
127127
128128
129-func aq (F) = {
130- let ar = F
131- if ($isInstanceOf(ar, "String"))
129+func ao (ap,aq,ar) = am(((((("Failed: ordValid=" + toString(ap)) + " sndrValid=") + toString(aq)) + " mtchrValid=") + toString(ar)))
130+
131+
132+func as (G) = {
133+ let at = G
134+ if ($isInstanceOf(at, "String"))
132135 then {
133- let as = ar
134- as
136+ let au = at
137+ au
135138 }
136- else throw("fail cast to String")
139+ else am("fail cast to String")
137140 }
138141
139142
140-func at (au,av) = valueOrErrorMessage(getString(au, av), makeString(["mandatory ", toString(au), ".", av, " not defined"], ""))
143+func av (aw,ax) = valueOrErrorMessage(getString(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
141144
142145
143-func aw (au,av) = valueOrErrorMessage(getInteger(au, av), makeString(["mandatory ", toString(au), ".", av, " not defined"], ""))
146+func ay (aw,ax) = valueOrErrorMessage(getInteger(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
144147
145148
146-let ax = addressFromStringValue(at(this, M()))
149+let az = addressFromStringValue(av(this, N()))
147150
148-let ay = at(this, Z())
151+let aA = av(this, aa())
149152
150-func az () = valueOrElse(getBoolean(ax, al()), false)
153+func aB () = valueOrElse(getBoolean(az, al()), false)
151154
152155
153-func aA () = fromBase58String(at(ax, af()))
156+func aC () = fromBase58String(av(az, af()))
154157
155158
156-func aB () = {
157- let aC = at(this, X())
158- let aD = at(this, Y())
159- let aE = aw(ax, aj(aD))
160- let ah = aw(ax, aj(aC))
161- split(at(ax, ag(toString(ah), toString(aE))), i)
159+let aD = addressFromPublicKey(aC())
160+
161+func aE () = {
162+ let aF = av(this, Y())
163+ let aG = av(this, Z())
164+ let aH = ay(az, aj(aG))
165+ let ah = ay(az, aj(aF))
166+ split(av(az, ag(toString(ah), toString(aH))), j)
162167 }
163168
164169
165-func aF () = split(at(ax, ae()), i)
170+func aI () = split(av(az, ae()), j)
166171
167172
168-func aG (aH,aI,aJ,aK,aL,aM,aN,aO,aP,aQ) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aH), toString(aI), toString(aJ), toString(aK), toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ)], i)
173+func aJ (aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aK), toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT)], j)
169174
170175
171-func aR (aS,aT,aU,aK,aN,aO) = makeString(["%d%d%d%d%d%d", toString(aS), toString(aT), toString(aU), toString(aK), toString(aN), toString(aO)], i)
176+func aU (aV,aW,aX,aN,aQ,aR) = makeString(["%d%d%d%d%d%d", toString(aV), toString(aW), toString(aX), toString(aN), toString(aQ), toString(aR)], j)
172177
173178
174-func aV (aW) = if ((aW == "WAVES"))
179+func aY (aZ) = if ((aZ == "WAVES"))
175180 then wavesBalance(this).available
176- else assetBalance(this, fromBase58String(aW))
181+ else assetBalance(this, fromBase58String(aZ))
177182
178183
179-func aX (aY,aZ) = fraction(aY, c, aZ)
184+func ba (bb,bc) = fraction(bb, c, bc)
180185
181186
182-func ba (bb,bc,bd) = {
183- let be = fraction((bb - bc), b, bc)
184- let bf = ((bd - L(be)) > d)
185- if (!(bf))
186- then throw(("Big slpg: " + toString(be)))
187- else $Tuple2(bf, min([bb, bc]))
187+func bd (be,bf,bg) = {
188+ let bh = fraction((be - bf), b, bf)
189+ let bi = ((bg - M(bh)) > e)
190+ if (!(bi))
191+ then am(("Big slippage: " + toString(bh)))
192+ else $Tuple2(bi, min([be, bf]))
188193 }
189194
190195
191-func bg (bh,bi,bj) = {
192- let be = fraction(bi, b, bh)
193- let bk = (bj > be)
194- if (if (bk)
196+func bj (bk,bl,bg) = {
197+ let bh = fraction(bl, b, bk)
198+ let bm = (bg > bh)
199+ if (if (bm)
195200 then true
196- else (bi > bh))
197- then throw(((((((toString(bi) + " ") + toString(bh)) + " ") + toString(be)) + " ") + toString(bj)))
198- else bk
201+ else (bl > bk))
202+ then am(((((((toString(bl) + " ") + toString(bk)) + " ") + toString(bh)) + " ") + toString(bg)))
203+ else bm
199204 }
200205
201206
202-func bl (bm,bn,bo,bp) = {
203- let bq = B(bo, bm)
204- let br = B(bp, bn)
205- aX(br, bq)
207+func bn (bo,bp,bq,br) = {
208+ let bs = C(bq, bo)
209+ let bt = C(br, bp)
210+ ba(bt, bs)
206211 }
207212
208213
209-func bs (bo,bp,bt) = {
210- let bu = aB()
211- let bv = parseIntValue(bu[t])
212- let bw = parseIntValue(bu[u])
213- let bx = bl(bv, bw, bo, bp)
214- let aZ = B(bo, bv)
215- let aY = B(bp, bw)
216- let by = B(bt, a)
217- let bz = aX(aZ, by)
218- let bA = aX(aY, by)
219-[bx, bz, bA]
214+func bu (bq,br,bv) = {
215+ let bw = aE()
216+ let bx = parseIntValue(bw[u])
217+ let by = parseIntValue(bw[v])
218+ let bz = bn(bx, by, bq, br)
219+ let bc = C(bq, bx)
220+ let bb = C(br, by)
221+ let bA = C(bv, a)
222+ let bB = ba(bc, bA)
223+ let bC = ba(bb, bA)
224+[bz, bB, bC]
220225 }
221226
222227
223-func bB (bo,bp,bt) = {
224- let bC = bs(bo, bp, bt)
225-[E(bC[0], a), E(bC[1], a), E(bC[2], a)]
228+func bD (bq,br,bv) = {
229+ let bE = bu(bq, br, bv)
230+[F(bE[0], a), F(bE[1], a), F(bE[2], a)]
226231 }
227232
228233
229-func bD (bE,bF,bG,bH) = {
230- let bu = aB()
231- let bI = bu[q]
232- let bJ = bu[r]
233- let bK = bu[s]
234- let bL = parseIntValue(bu[t])
235- let bM = parseIntValue(bu[u])
236- let bN = bu[p]
237- let bO = valueOrErrorMessage(assetInfo(fromBase58String(bI)), "Wrong LP id").quantity
238- if ((bI != bF))
239- then throw("Wrong pmt asset")
240- else {
241- let bP = aV(bJ)
242- let bQ = B(bP, bL)
243- let bR = aV(bK)
244- let bS = B(bR, bM)
245- let bT = aX(bS, bQ)
246- let bU = E(bT, a)
247- let bV = B(bG, a)
248- let bW = B(bO, a)
249- let bX = fraction(bQ, bV, bW)
250- let bY = fraction(bS, bV, bW)
251- let bZ = E(bX, bL)
252- let ca = E(bY, bM)
253- let cb = if ((bE == ""))
254- then nil
255- else [ScriptTransfer(bH, bZ, if ((bJ == "WAVES"))
256- then unit
257- else fromBase58String(bJ)), ScriptTransfer(bH, ca, if ((bK == "WAVES"))
258- then unit
259- else fromBase58String(bK)), StringEntry(W(toString(bH), bE), aR(bZ, ca, bG, bU, height, lastBlock.timestamp)), IntegerEntry(P(), bU), IntegerEntry(Q(height, lastBlock.timestamp), bU)]
260- $Tuple10(bZ, ca, bJ, bK, bP, bR, bO, bT, bN, cb)
234+func bF (bG,bH,bI,bJ) = {
235+ let bw = aE()
236+ let bK = bw[r]
237+ let bL = bw[s]
238+ let bM = bw[t]
239+ let bN = parseIntValue(bw[u])
240+ let bO = parseIntValue(bw[v])
241+ let bP = bw[q]
242+ let bQ = valueOrErrorMessage(assetInfo(fromBase58String(bK)), "Wrong LP id").quantity
243+ let bR = if ((bK == bH))
244+ then true
245+ else am("Wrong payment asset")
246+ if ((bR == bR))
247+ then {
248+ let bS = if ((bN >= bO))
249+ then bN
250+ else bO
251+ if ((bS == bS))
252+ then {
253+ let bT = aY(bL)
254+ let bU = C(bT, bS)
255+ let bV = aY(bM)
256+ let bW = C(bV, bS)
257+ let bX = ba(bW, bU)
258+ let bY = F(bX, a)
259+ let bZ = C(bI, a)
260+ let ca = C(bQ, a)
261+ let cb = fraction(bU, bZ, ca)
262+ let cc = fraction(bW, bZ, ca)
263+ let cd = F(cb, bS)
264+ let ce = F(cc, bS)
265+ let cf = if ((bG == ""))
266+ then nil
267+ else [ScriptTransfer(bJ, cd, if ((bL == "WAVES"))
268+ then unit
269+ else fromBase58String(bL)), ScriptTransfer(bJ, ce, if ((bM == "WAVES"))
270+ then unit
271+ else fromBase58String(bM)), StringEntry(X(toString(bJ), bG), aU(cd, ce, bI, bY, height, lastBlock.timestamp)), IntegerEntry(Q(), bY), IntegerEntry(R(height, lastBlock.timestamp), bY)]
272+ $Tuple10(cd, ce, bL, bM, bT, bV, bQ, bX, bP, cf)
273+ }
274+ else throw("Strict value is not equal to itself.")
261275 }
276+ else throw("Strict value is not equal to itself.")
262277 }
263278
264279
265-func cc (bE,bd,cd,ce,cf,cg,bH,ch,ci,cj,ck,cl) = {
266- let bu = aB()
267- let bI = fromBase58String(bu[q])
268- let cm = bu[r]
269- let cn = bu[s]
270- let co = bu[v]
271- let cp = bu[w]
272- let cq = parseIntValue(bu[t])
273- let cr = parseIntValue(bu[u])
274- let bN = bu[p]
275- let cs = valueOrErrorMessage(assetInfo(bI), "Wr lp as").quantity
276- let bP = if (ch)
277- then aV(cm)
278- else if (if (cj)
279- then (cl == cm)
280+func cg (bG,ch,ci,cj,ck,cl,bJ,cm,cn,co,cp,cq) = {
281+ let bw = aE()
282+ let bK = fromBase58String(bw[r])
283+ let cr = bw[s]
284+ let cs = bw[t]
285+ let ct = bw[w]
286+ let cu = bw[x]
287+ let bN = parseIntValue(bw[u])
288+ let bO = parseIntValue(bw[v])
289+ let bP = bw[q]
290+ let bQ = valueOrErrorMessage(assetInfo(bK), "Wrong lp asset").quantity
291+ let bT = if (cm)
292+ then aY(cr)
293+ else if (if (co)
294+ then (cq == cr)
280295 else false)
281- then (aV(cm) - ck)
282- else if (cj)
283- then aV(cm)
284- else (aV(cm) - cd)
285- let bR = if (ch)
286- then aV(cn)
287- else if (if (cj)
288- then (cl == cn)
296+ then (aY(cr) - cp)
297+ else if (co)
298+ then aY(cr)
299+ else (aY(cr) - ci)
300+ let bV = if (cm)
301+ then aY(cs)
302+ else if (if (co)
303+ then (cq == cs)
289304 else false)
290- then (aV(cn) - ck)
291- else if (cj)
292- then aV(cn)
293- else (aV(cn) - cf)
294- let ct = B(cd, cq)
295- let cu = B(cf, cr)
296- let cv = aX(cu, ct)
297- let bQ = B(bP, cq)
298- let bS = B(bR, cr)
299- let cw = if ((cs == 0))
305+ then (aY(cs) - cp)
306+ else if (co)
307+ then aY(cs)
308+ else (aY(cs) - ck)
309+ let bS = if ((bN >= bO))
310+ then bN
311+ else bO
312+ if ((bS == bS))
300313 then {
301- let bT = d
302- let cx = d
303- let by = pow((ct * cu), 0, toBigInt(5), 1, 0, DOWN)
304- $Tuple5(E(by, a), E(ct, cq), E(cu, cr), aX((bS + cu), (bQ + ct)), cx)
314+ let cv = C(ci, bS)
315+ let cw = C(ck, bS)
316+ let cx = ba(cw, cv)
317+ let bU = C(bT, bS)
318+ let bW = C(bV, bS)
319+ let cy = if ((bQ == 0))
320+ then {
321+ let bX = e
322+ let cz = e
323+ let cA = pow((cv * cw), 0, toBigInt(5), 1, 0, DOWN)
324+ $Tuple5(F(cA, a), F(cv, bS), F(cw, bS), ba((bW + cw), (bU + cv)), cz)
325+ }
326+ else {
327+ let bX = ba(bW, bU)
328+ let cB = fraction(M((bX - cx)), c, bX)
329+ let cz = C(ch, a)
330+ let cC = if (((if ((bX != e))
331+ then (cB > cz)
332+ else false) == true))
333+ then true
334+ else am(((("Price slippage " + toString(cB)) + " > ") + toString(cz)))
335+ if ((cC == cC))
336+ then {
337+ let ca = C(bQ, a)
338+ let cD = fraction(cv, bX, c)
339+ let cE = fraction(cw, c, bX)
340+ let cF = if ((cD > cw))
341+ then $Tuple2(cE, cv)
342+ else $Tuple2(cv, cD)
343+ let cG = cF._1
344+ let cH = cF._2
345+ let cA = fraction(ca, cH, bW)
346+ $Tuple5(F(cA, a), F(cG, bS), F(cH, bS), bX, cz)
347+ }
348+ else throw("Strict value is not equal to itself.")
349+ }
350+ let cI = cy._1
351+ let cJ = cy._2
352+ let cK = cy._3
353+ let cL = F(cy._4, a)
354+ let cM = F(cy._5, a)
355+ let cN = if ((cI > 0))
356+ then true
357+ else am("LP <= 0")
358+ if ((cN == cN))
359+ then {
360+ let cO = if (!(cn))
361+ then 0
362+ else cI
363+ let cP = (ci - cJ)
364+ let cQ = (ck - cK)
365+ let cR = if (if (co)
366+ then (cq == cr)
367+ else false)
368+ then $Tuple2(cp, 0)
369+ else if (if (co)
370+ then (cq == cs)
371+ else false)
372+ then $Tuple2(0, cp)
373+ else $Tuple2(cJ, cK)
374+ let cS = cR._1
375+ let cT = cR._2
376+ let cU = [IntegerEntry(Q(), cL), IntegerEntry(R(height, lastBlock.timestamp), cL), StringEntry(U(bJ, bG), aJ(cS, cT, cO, cL, ch, cM, height, lastBlock.timestamp, cP, cQ))]
377+ $Tuple13(cI, cO, cL, bT, bV, bQ, bK, bP, cU, cP, cQ, cj, cl)
378+ }
379+ else throw("Strict value is not equal to itself.")
305380 }
306- else {
307- let bT = aX(bS, bQ)
308- let cy = fraction(L((bT - cv)), c, bT)
309- let cx = B(bd, a)
310- if (if ((bT != d))
311- then (cy > cx)
312- else false)
313- then throw(((("Price slippage " + toString(cy)) + " > ") + toString(cx)))
314- else {
315- let cz = B(cs, a)
316- let cA = fraction(ct, bT, c)
317- let cB = fraction(cu, c, bT)
318- let cC = if ((cA > cu))
319- then $Tuple2(cB, cu)
320- else $Tuple2(ct, cA)
321- let cD = cC._1
322- let cE = cC._2
323- let by = fraction(cz, cE, bS)
324- $Tuple5(E(by, a), E(cD, cq), E(cE, cr), bT, cx)
325- }
326- }
327- let cF = cw._1
328- let cG = cw._2
329- let cH = cw._3
330- let bU = E(cw._4, a)
331- let cI = E(cw._5, a)
332- if ((0 >= cF))
333- then throw("LP <= 0")
334- else {
335- let cJ = if (!(ci))
336- then 0
337- else cF
338- let cK = (cd - cG)
339- let cL = (cf - cH)
340- let cM = if (if (cj)
341- then (cl == cm)
342- else false)
343- then $Tuple2(ck, 0)
344- else if (if (cj)
345- then (cl == cn)
346- else false)
347- then $Tuple2(0, ck)
348- else $Tuple2(cG, cH)
349- let cN = cM._1
350- let cO = cM._2
351- let cP = [IntegerEntry(P(), bU), IntegerEntry(Q(height, lastBlock.timestamp), bU), StringEntry(T(bH, bE), aG(cN, cO, cJ, bU, bd, cI, height, lastBlock.timestamp, cK, cL))]
352- $Tuple13(cF, cJ, bU, bP, bR, cs, bI, bN, cP, cK, cL, ce, cg)
353- }
381+ else throw("Strict value is not equal to itself.")
354382 }
355383
356384
357-func cQ (cR) = {
358- let bu = aB()
359- let cS = bu[r]
360- let cT = bu[s]
361- let bN = parseIntValue(bu[p])
362- let bv = parseIntValue(bu[t])
363- let bw = parseIntValue(bu[u])
364- let cU = aV(cS)
365- let cV = aV(cT)
366- let bT = if ((cR.orderType == Buy))
367- then bl(bv, bw, (cU + cR.amount), cV)
368- else bl(bv, bw, (cU - cR.amount), cV)
369- let bU = E(bT, a)
370- if (if (if (az())
385+func cV (cW) = {
386+ let bw = aE()
387+ let cX = bw[s]
388+ let cY = bw[t]
389+ let bP = parseIntValue(bw[q])
390+ let bx = parseIntValue(bw[u])
391+ let by = parseIntValue(bw[v])
392+ let cZ = aY(cX)
393+ let da = aY(cY)
394+ let bX = if ((cW.orderType == Buy))
395+ then bn(bx, by, (cZ + cW.amount), da)
396+ else bn(bx, by, (cZ - cW.amount), da)
397+ let bY = F(bX, a)
398+ if (if (if (aB())
371399 then true
372- else (bN == m))
400+ else (bP == n))
373401 then true
374- else (bN == n))
375- then throw("Admin blocked")
402+ else (bP == o))
403+ then am("Admin blocked")
376404 else {
377- let cW = cR.assetPair.amountAsset
378- let cX = if ((cW == unit))
405+ let db = cW.assetPair.amountAsset
406+ let dc = if ((db == unit))
379407 then "WAVES"
380- else toBase58String(value(cW))
381- let cY = cR.assetPair.priceAsset
382- let cZ = if ((cY == unit))
408+ else toBase58String(value(db))
409+ let dd = cW.assetPair.priceAsset
410+ let de = if ((dd == unit))
383411 then "WAVES"
384- else toBase58String(value(cY))
385- if (if ((cX != cS))
412+ else toBase58String(value(dd))
413+ if (if ((dc != cX))
386414 then true
387- else (cZ != cT))
388- then throw("Wr assets")
415+ else (de != cY))
416+ then am("Wr assets")
389417 else {
390- let da = cR.price
391- let cr = fraction(a, bw, bv)
392- let db = H(da, a, cr)
393- let dc = if ((cR.orderType == Buy))
394- then (bU >= db)
395- else (db >= bU)
418+ let df = cW.price
419+ let bO = fraction(a, by, bx)
420+ let dg = I(df, a, bO)
421+ let dh = if ((cW.orderType == Buy))
422+ then (bY >= dg)
423+ else (dg >= bY)
396424 true
397425 }
398426 }
399427 }
400428
401429
402-func dd (de) = if ((size(de.payments) != 1))
403- then throw("1 pmnt exp")
404- else {
405- let df = value(de.payments[0])
406- let bF = value(df.assetId)
407- let ck = df.amount
408- let cw = bD(toBase58String(de.transactionId), toBase58String(bF), ck, de.caller)
409- let bZ = cw._1
410- let ca = cw._2
411- let bN = parseIntValue(cw._9)
412- let cb = cw._10
413- if (if (az())
414- then true
415- else (bN == n))
416- then throw(("Admin blocked: " + toString(bN)))
417- else $Tuple5(bZ, ca, ck, bF, cb)
418- }
419-
420-
421-func dg (ac,V,dh,di,bd,ci,cj,ck,cl) = {
422- let cw = cc(V, bd, value(dh).amount, value(dh).assetId, value(di).amount, value(di).assetId, ac, false, ci, cj, ck, cl)
423- let bN = parseIntValue(cw._8)
424- if (if (if (az())
430+func di (dj) = {
431+ let dk = if ((size(dj.payments) == 1))
425432 then true
426- else (bN == l))
427- then true
428- else (bN == n))
429- then throw(("Blocked:" + toString(bN)))
430- else cw
433+ else am("1 payment expected")
434+ if ((dk == dk))
435+ then {
436+ let dl = value(dj.payments[0])
437+ let bH = value(dl.assetId)
438+ let cp = dl.amount
439+ let cy = bF(toBase58String(dj.transactionId), toBase58String(bH), cp, dj.caller)
440+ let cd = cy._1
441+ let ce = cy._2
442+ let bP = parseIntValue(cy._9)
443+ let cf = cy._10
444+ if (if (aB())
445+ then true
446+ else (bP == o))
447+ then am(("Admin blocked: " + toString(bP)))
448+ else $Tuple5(cd, ce, cp, bH, cf)
449+ }
450+ else throw("Strict value is not equal to itself.")
431451 }
432452
433453
434-func dj () = {
435- let ar = getString(N())
436- if ($isInstanceOf(ar, "String"))
454+func dm (dn,W,do,dp,bg,cn,co,cp,cq) = {
455+ let cy = cg(W, bg, value(do).amount, value(do).assetId, value(dp).amount, value(dp).assetId, dn, false, cn, co, cp, cq)
456+ let bP = parseIntValue(cy._8)
457+ if (if (if (aB())
458+ then true
459+ else (bP == m))
460+ then true
461+ else (bP == o))
462+ then am(("Blocked:" + toString(bP)))
463+ else cy
464+ }
465+
466+
467+func dq (dr) = {
468+ let ds = fraction(dr, ad, d)
469+ $Tuple2((dr - ds), ds)
470+ }
471+
472+
473+func dt () = {
474+ let at = getString(O())
475+ if ($isInstanceOf(at, "String"))
437476 then {
438- let dk = ar
439- fromBase58String(dk)
477+ let du = at
478+ fromBase58String(du)
440479 }
441- else if ($isInstanceOf(ar, "Unit"))
480+ else if ($isInstanceOf(at, "Unit"))
442481 then unit
443482 else throw("Match error")
444483 }
445484
446485
447-func dl () = {
448- let ar = getString(O())
449- if ($isInstanceOf(ar, "String"))
486+func dv () = {
487+ let at = getString(P())
488+ if ($isInstanceOf(at, "String"))
450489 then {
451- let dk = ar
452- fromBase58String(dk)
490+ let du = at
491+ fromBase58String(du)
453492 }
454- else if ($isInstanceOf(ar, "Unit"))
493+ else if ($isInstanceOf(at, "Unit"))
455494 then unit
456495 else throw("Match error")
457496 }
458497
459498
460-let dm = throw("Permission denied")
499+let dw = am("Permission denied")
461500
462-func dn (de) = {
463- let ar = dj()
464- if ($isInstanceOf(ar, "ByteVector"))
501+func dx (dj) = {
502+ let at = dt()
503+ if ($isInstanceOf(at, "ByteVector"))
465504 then {
466- let do = ar
467- if ((de.callerPublicKey == do))
505+ let dy = at
506+ if ((dj.callerPublicKey == dy))
468507 then true
469- else dm
508+ else dw
470509 }
471- else if ($isInstanceOf(ar, "Unit"))
472- then if ((de.caller == this))
510+ else if ($isInstanceOf(at, "Unit"))
511+ then if ((dj.caller == this))
473512 then true
474- else dm
513+ else dw
475514 else throw("Match error")
476515 }
477516
478517
479-@Callable(de)
480-func constructor (M) = {
481- let dp = dn(de)
482- if ((dp == dp))
483- then [StringEntry(M(), M)]
518+@Callable(dj)
519+func constructor (az) = {
520+ let dz = dx(dj)
521+ if ((dz == dz))
522+ then [StringEntry(N(), az)]
484523 else throw("Strict value is not equal to itself.")
485524 }
486525
487526
488527
489-@Callable(de)
490-func setManager (dq) = {
491- let dp = dn(de)
492- if ((dp == dp))
528+@Callable(dj)
529+func setManager (dA) = {
530+ let dz = dx(dj)
531+ if ((dz == dz))
493532 then {
494- let dr = fromBase58String(dq)
495- if ((dr == dr))
496- then [StringEntry(O(), dq)]
533+ let dB = fromBase58String(dA)
534+ if ((dB == dB))
535+ then [StringEntry(P(), dA)]
497536 else throw("Strict value is not equal to itself.")
498537 }
499538 else throw("Strict value is not equal to itself.")
501540
502541
503542
504-@Callable(de)
543+@Callable(dj)
505544 func confirmManager () = {
506- let bC = dl()
507- let ds = if (isDefined(bC))
545+ let dC = dv()
546+ let dD = if (isDefined(dC))
508547 then true
509- else throw("No pending manager")
510- if ((ds == ds))
548+ else am("No pending manager")
549+ if ((dD == dD))
511550 then {
512- let dt = if ((de.callerPublicKey == value(bC)))
551+ let dE = if ((dj.callerPublicKey == value(dC)))
513552 then true
514- else throw("You are not pending manager")
515- if ((dt == dt))
516- then [StringEntry(N(), toBase58String(value(bC))), DeleteEntry(O())]
553+ else am("You are not pending manager")
554+ if ((dE == dE))
555+ then [StringEntry(O(), toBase58String(value(dC))), DeleteEntry(P())]
517556 else throw("Strict value is not equal to itself.")
518557 }
519558 else throw("Strict value is not equal to itself.")
521560
522561
523562
524-@Callable(de)
525-func put (du,dv) = {
526- let dw = aF()
527- let dx = valueOrErrorMessage(addressFromString(dw[x]), "Wr st addr")
528- let dy = valueOrErrorMessage(addressFromString(dw[y]), "Wr sl addr")
529- if ((0 > du))
530- then throw("Wrong slippage")
531- else if ((size(de.payments) != 2))
532- then throw("2 pmnts expd")
533- else {
534- let dz = dg(toString(de.caller), toBase58String(de.transactionId), AttachedPayment(value(de.payments[0]).assetId, value(de.payments[0]).amount), de.payments[1], du, true, false, 0, "")
535- let cJ = dz._2
536- let dA = dz._7
537- let cb = dz._9
538- let cK = dz._10
539- let cL = dz._11
540- let bJ = dz._12
541- let bK = dz._13
542- let cw = invoke(ax, "emit", [cJ], nil)
543- if ((cw == cw))
544- then {
545- let dB = {
546- let ar = cw
547- if ($isInstanceOf(ar, "Address"))
563+@Callable(dj)
564+func put (bg,dF) = {
565+ let dG = aI()
566+ let dH = valueOrErrorMessage(addressFromString(dG[y]), "Wrong staking contract")
567+ let dI = valueOrErrorMessage(addressFromString(dG[z]), "Wrogn slippage contract")
568+ let dJ = if ((bg >= 0))
569+ then true
570+ else am("wrong slippage")
571+ if ((dJ == dJ))
572+ then {
573+ let dK = if ((size(dj.payments) == 2))
574+ then true
575+ else am("2 payments expected")
576+ if ((dK == dK))
577+ then {
578+ let dL = dm(toString(dj.caller), toBase58String(dj.transactionId), AttachedPayment(value(dj.payments[0]).assetId, value(dj.payments[0]).amount), dj.payments[1], bg, true, false, 0, "")
579+ let cO = dL._2
580+ let bK = dL._7
581+ let cf = dL._9
582+ let cP = dL._10
583+ let cQ = dL._11
584+ let bL = dL._12
585+ let bM = dL._13
586+ let cy = invoke(az, "emit", [cO], nil)
587+ if ((cy == cy))
588+ then {
589+ let dM = {
590+ let at = cy
591+ if ($isInstanceOf(at, "Address"))
592+ then {
593+ let dN = at
594+ invoke(dN, "emit", [cO], nil)
595+ }
596+ else unit
597+ }
598+ if ((dM == dM))
548599 then {
549- let dC = ar
550- invoke(dC, "emit", [cJ], nil)
551- }
552- else unit
553- }
554- if ((dB == dB))
555- then {
556- let dD = if ((cK > 0))
557- then invoke(dy, "put", nil, [AttachedPayment(bJ, cK)])
558- else nil
559- if ((dD == dD))
560- then {
561- let dE = if ((cL > 0))
562- then invoke(dy, "put", nil, [AttachedPayment(bK, cL)])
563- else nil
564- if ((dE == dE))
565- then {
566- let dF = if (dv)
567- then {
568- let dG = invoke(dx, "stake", nil, [AttachedPayment(dA, cJ)])
569- if ((dG == dG))
570- then nil
571- else throw("Strict value is not equal to itself.")
572- }
573- else [ScriptTransfer(de.caller, cJ, dA)]
574- (cb ++ dF)
575- }
576- else throw("Strict value is not equal to itself.")
577- }
578- else throw("Strict value is not equal to itself.")
579- }
580- else throw("Strict value is not equal to itself.")
581- }
582- else throw("Strict value is not equal to itself.")
583- }
584- }
585-
586-
587-
588-@Callable(de)
589-func putOneTkn (dH,dI,dJ,bd,dv) = {
590- let bu = aF()
591- let dx = valueOrErrorMessage(addressFromString(bu[x]), "Wr st addr")
592- let dy = valueOrErrorMessage(addressFromString(bu[y]), "Wr sl addr")
593- let dK = valueOrErrorMessage(addressFromString(bu[z]), "Wr gwx addr")
594- let dL = aB()
595- let bJ = dL[r]
596- let bK = dL[s]
597- let bL = parseIntValue(dL[t])
598- let bM = parseIntValue(dL[u])
599- let dM = valueOrElse(getString(this, aa()), "")
600- let bH = if ((dM == toString(de.caller)))
601- then de.originCaller
602- else de.caller
603- let dN = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
604- let dO = reentrantInvoke(dN, "ensureCanPutOneTkn", [toString(bH)], nil)
605- if ((dO == dO))
606- then if (if (if (if ((0 >= bd))
607- then true
608- else (0 >= dH))
609- then true
610- else (0 >= dI))
611- then true
612- else (0 >= dJ))
613- then throw("Wrong params")
614- else if ((size(de.payments) != 1))
615- then throw("1 pmnt expd")
616- else {
617- let df = value(de.payments[0])
618- let bF = toBase58String(value(df.assetId))
619- let ck = df.amount
620- if (if (if ((dH > ck))
621- then true
622- else (dI > ck))
623- then true
624- else (10000000 > ck))
625- then throw("Wrong pmt amt")
626- else {
627- let bP = aV(bJ)
628- let bR = aV(bK)
629- let dP = if ((bF == bJ))
630- then $Tuple6((bP - ck), bR, (ck - dH), dI, 0, 0)
631- else if ((bF == bK))
632- then $Tuple6(bP, (bR - ck), 0, 0, (ck - dI), dH)
633- else throw("wrong pmtAssetId")
634- let dQ = dP._1
635- let dR = dP._2
636- let dS = dP._3
637- let dT = dP._4
638- let dU = dP._5
639- let dV = dP._6
640- let bi = invoke(dK, "calcD", [toString(dQ), toString(dR), ay, g, h], nil)
641- let bh = invoke(dK, "calcD", [toString(toBigInt(((dQ + dS) - dV))), toString(toBigInt(((dR + dU) - dT))), ay, g, h], nil)
642- let dW = bg(parseBigIntValue(aq(bh)), parseBigIntValue(aq(bi)), f)
643- if ((dW == dW))
644- then {
645- let dX = dg(toString(de.caller), toBase58String(de.transactionId), AttachedPayment(fromBase58String(bJ), dH), AttachedPayment(fromBase58String(bK), dI), bd, true, true, ck, bF)
646- let dY = dX._2
647- let dA = dX._7
648- let cb = dX._9
649- let cK = dX._10
650- let cL = dX._11
651- let dZ = ba(toBigInt(dY), toBigInt(dJ), toBigInt(bd))
652- let cJ = toInt(dZ._2)
653- let dz = invoke(ax, "emit", [cJ], nil)
654- if ((dz == dz))
600+ let dO = if ((cP > 0))
601+ then invoke(dI, "put", nil, [AttachedPayment(bL, cP)])
602+ else nil
603+ if ((dO == dO))
655604 then {
656- let dB = {
657- let ar = dz
658- if ($isInstanceOf(ar, "Address"))
659- then {
660- let dC = ar
661- invoke(dC, "emit", [cJ], nil)
662- }
663- else unit
664- }
665- if ((dB == dB))
605+ let dP = if ((cQ > 0))
606+ then invoke(dI, "put", nil, [AttachedPayment(bM, cQ)])
607+ else nil
608+ if ((dP == dP))
666609 then {
667- let dD = if ((cK > 0))
668- then invoke(dy, "put", nil, [AttachedPayment(fromBase58String(bJ), cK)])
669- else nil
670- if ((dD == dD))
610+ let dQ = if (dF)
671611 then {
672- let dE = if ((cL > 0))
673- then invoke(dy, "put", nil, [AttachedPayment(fromBase58String(bK), cL)])
674- else nil
675- if ((dE == dE))
676- then {
677- let dF = if (dv)
678- then {
679- let dG = invoke(dx, "stake", nil, [AttachedPayment(dA, cJ)])
680- if ((dG == dG))
681- then nil
682- else throw("Strict value is not equal to itself.")
683- }
684- else [ScriptTransfer(de.caller, cJ, dA)]
685- (cb ++ dF)
686- }
612+ let dR = invoke(dH, "stake", nil, [AttachedPayment(bK, cO)])
613+ if ((dR == dR))
614+ then nil
687615 else throw("Strict value is not equal to itself.")
688616 }
689- else throw("Strict value is not equal to itself.")
617+ else [ScriptTransfer(dj.caller, cO, bK)]
618+ (cf ++ dQ)
690619 }
691620 else throw("Strict value is not equal to itself.")
692621 }
693622 else throw("Strict value is not equal to itself.")
694623 }
695- else throw("Strict value is not equal to itself.")
696- }
697- }
698- else throw("Strict value is not equal to itself.")
699- }
700-
701-
702-
703-@Callable(de)
704-func putForFree (ea) = if ((0 > ea))
705- then throw("Wrong slpg")
706- else if ((size(de.payments) != 2))
707- then throw("2 pmnts expd")
708- else {
709- let dX = dg(toString(de.caller), toBase58String(de.transactionId), AttachedPayment(value(de.payments[0]).assetId, value(de.payments[0]).amount), de.payments[1], ea, false, false, 0, "")
710- dX._9
711- }
712-
713-
714-
715-@Callable(de)
716-func get () = {
717- let cw = dd(de)
718- let eb = cw._1
719- let ca = cw._2
720- let ck = cw._3
721- let bF = cw._4
722- let cb = cw._5
723- let ec = invoke(ax, "burn", [ck], [AttachedPayment(bF, ck)])
724- if ((ec == ec))
725- then cb
726- else throw("Strict value is not equal to itself.")
727- }
728-
729-
730-
731-@Callable(de)
732-func getOneTkn (ed,ee,ef,eg,bd) = if ((size(de.payments) != 1))
733- then throw("1 pmnt expd")
734- else {
735- let bu = aB()
736- let bI = bu[q]
737- let bJ = bu[r]
738- let bK = bu[s]
739- let bL = parseIntValue(bu[t])
740- let bM = parseIntValue(bu[u])
741- let bN = bu[p]
742- let dw = aF()
743- let dK = valueOrErrorMessage(addressFromString(dw[z]), "Wr sl addr")
744- let df = value(de.payments[0])
745- let dM = valueOrElse(getString(this, aa()), "")
746- let bH = if ((dM == toString(de.caller)))
747- then de.originCaller
748- else de.caller
749- let bE = toBase58String(de.transactionId)
750- let bF = value(df.assetId)
751- let ck = df.amount
752- let dN = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
753- let dO = reentrantInvoke(dN, "ensureCanGetOneTkn", [toString(bH)], nil)
754- if ((dO == dO))
755- then if ((1000000000 > ck))
756- then throw("Min pmt 10 LP")
757- else if (if (if ((0 > bd))
758- then true
759- else (0 > ed))
760- then true
761- else (0 > ef))
762- then throw("Wrong params")
763- else if ((bI != toBase58String(bF)))
764- then throw("Wrong LP")
765- else {
766- let cw = bD(toBase58String(de.transactionId), toBase58String(bF), ck, de.caller)
767- let eh = cw._1
768- let ei = cw._2
769- let bP = aV(bJ)
770- let bR = aV(bK)
771- let ej = if ((eg == bJ))
772- then $Tuple7((bP - eh), (bR - ei), ed, ei, 0, 0, (eh + ed))
773- else if ((eg == bK))
774- then $Tuple7((bP - eh), (bR - ei), 0, 0, ed, eh, (ei + ed))
775- else throw("wrong outAssetId")
776- let dQ = ej._1
777- let dR = ej._2
778- let dS = ej._3
779- let dT = ej._4
780- let dU = ej._5
781- let dV = ej._6
782- let ek = ej._7
783- if (if ((0 > dS))
784- then true
785- else (0 > dU))
786- then throw("Wrong calc")
787- else {
788- let bi = invoke(dK, "calcD", [toString(dQ), toString(dR), ay, g, h], nil)
789- let bh = invoke(dK, "calcD", [toString(((dQ - dS) + dV)), toString(((dR + dT) - dU)), ay, g, h], nil)
790- let dW = bg(parseBigIntValue(aq(bh)), parseBigIntValue(aq(bi)), f)
791- if ((dW == dW))
792- then {
793- let el = ba(toBigInt(ek), toBigInt(ef), toBigInt(bd))
794- if ((el == el))
795- then {
796- let em = if ((eg == bJ))
797- then $Tuple2(toInt(el._2), 0)
798- else $Tuple2(0, toInt(el._2))
799- let en = em._1
800- let eo = em._2
801- let ep = aX(B(bR, bM), B(bP, bL))
802- let eq = E(ep, a)
803- let cb = [ScriptTransfer(bH, (en + eo), if ((eg == "WAVES"))
804- then unit
805- else fromBase58String(eg)), StringEntry(W(toString(bH), bE), aR(en, eo, ck, eq, height, lastBlock.timestamp)), IntegerEntry(P(), eq), IntegerEntry(Q(height, lastBlock.timestamp), eq)]
806- if ((cb == cb))
807- then {
808- let er = invoke(ax, "burn", [ck], [AttachedPayment(bF, ck)])
809- if ((er == er))
810- then cb
811- else throw("Strict value is not equal to itself.")
812- }
813- else throw("Strict value is not equal to itself.")
814- }
815- else throw("Strict value is not equal to itself.")
816- }
817- else throw("Strict value is not equal to itself.")
818- }
819- }
820- else throw("Strict value is not equal to itself.")
821- }
822-
823-
824-
825-@Callable(de)
826-func getNoLess (es,et) = {
827- let cw = dd(de)
828- let bZ = cw._1
829- let ca = cw._2
830- let ck = cw._3
831- let bF = cw._4
832- let cb = cw._5
833- if ((es > bZ))
834- then throw(((("Failed: " + toString(bZ)) + " < ") + toString(es)))
835- else if ((et > ca))
836- then throw(((("Failed: " + toString(ca)) + " < ") + toString(et)))
837- else {
838- let eu = invoke(ax, "burn", [ck], [AttachedPayment(bF, ck)])
839- if ((eu == eu))
840- then cb
841- else throw("Strict value is not equal to itself.")
842- }
843- }
844-
845-
846-
847-@Callable(de)
848-func unstakeAndGet (ev) = {
849- let ew = if ((size(de.payments) != 0))
850- then throw("No pmnts expd")
851- else true
852- if ((ew == ew))
853- then {
854- let bu = aB()
855- let ex = aF()
856- let dA = fromBase58String(bu[q])
857- let ey = valueOrErrorMessage(addressFromString(ex[x]), "Wr st addr")
858- let ez = invoke(ey, "unstake", [toBase58String(dA), ev], nil)
859- if ((ez == ez))
860- then {
861- let cw = bD(toBase58String(de.transactionId), toBase58String(dA), ev, de.caller)
862- let bN = parseIntValue(cw._9)
863- let cb = cw._10
864- let eA = if (if (az())
865- then true
866- else (bN == n))
867- then throw(("Blocked: " + toString(bN)))
868- else true
869- if ((eA == eA))
870- then {
871- let eB = invoke(ax, "burn", [ev], [AttachedPayment(dA, ev)])
872- if ((eB == eB))
873- then cb
874624 else throw("Strict value is not equal to itself.")
875625 }
876626 else throw("Strict value is not equal to itself.")
882632
883633
884634
885-@Callable(de)
886-func activate (eC,eD) = if ((toString(de.caller) != toString(ax)))
887- then throw("denied")
888- else $Tuple2([StringEntry(X(), eC), StringEntry(Y(), eD)], "success")
889-
890-
891-
892-@Callable(de)
893-func setS (eE,eA) = if ((toString(de.caller) != at(this, aa())))
894- then dm
895- else [StringEntry(eE, eA)]
896-
897-
898-
899-@Callable(de)
900-func setI (eE,eA) = if ((toString(de.caller) != at(this, aa())))
901- then dm
902- else [IntegerEntry(eE, eA)]
903-
904-
905-
906-@Callable(de)
907-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aB())
908-
909-
910-
911-@Callable(de)
912-func getAccBalanceWrapperREADONLY (aW) = $Tuple2(nil, aV(aW))
913-
914-
915-
916-@Callable(de)
917-func calcPricesWrapperREADONLY (bo,bp,bt) = {
918- let eF = bs(bo, bp, bt)
919- $Tuple2(nil, [toString(eF[0]), toString(eF[1]), toString(eF[2])])
635+@Callable(dj)
636+func putOneTkn (dS,dT,bf,bg,dF) = {
637+ let bw = aI()
638+ let dH = valueOrErrorMessage(addressFromString(bw[y]), "Wrong staking contract")
639+ let dI = valueOrErrorMessage(addressFromString(bw[z]), "Wrong slippage contract")
640+ let dU = valueOrErrorMessage(addressFromString(bw[A]), "Wrong gwx reward contract")
641+ let dV = aE()
642+ let bL = dV[s]
643+ let bM = dV[t]
644+ let bN = parseIntValue(dV[u])
645+ let bO = parseIntValue(dV[v])
646+ let dW = valueOrElse(getString(this, ab()), "")
647+ let bJ = if ((dW == toString(dj.caller)))
648+ then dj.originCaller
649+ else dj.caller
650+ if (if (if (if ((0 >= bg))
651+ then true
652+ else (0 >= dS))
653+ then true
654+ else (0 >= dT))
655+ then true
656+ else (0 >= bf))
657+ then am("Wrong params")
658+ else if ((size(dj.payments) != 1))
659+ then am("1 payment expected")
660+ else {
661+ let dl = value(dj.payments[0])
662+ let bH = toBase58String(value(dl.assetId))
663+ let dX = dl.amount
664+ let dY = dq(dX)
665+ let cp = dY._1
666+ let dZ = dY._2
667+ if (if (if ((dS > cp))
668+ then true
669+ else (dT > cp))
670+ then true
671+ else (10000000 > cp))
672+ then am("wrong payment amount")
673+ else {
674+ let bT = aY(bL)
675+ let bV = aY(bM)
676+ let ea = if ((bH == bL))
677+ then $Tuple6((bT - cp), bV, (cp - dS), dT, 0, 0)
678+ else if ((bH == bM))
679+ then $Tuple6(bT, (bV - cp), 0, 0, (cp - dT), dS)
680+ else am("wrong paymentAssetId")
681+ let eb = ea._1
682+ let ec = ea._2
683+ let ed = ea._3
684+ let ee = ea._4
685+ let ef = ea._5
686+ let eg = ea._6
687+ let bl = invoke(dU, "calcD", [toString(eb), toString(ec), aA, h, i], nil)
688+ let bk = invoke(dU, "calcD", [toString(toBigInt(((eb + ed) - eg))), toString(toBigInt(((ec + ef) - ee))), aA, h, i], nil)
689+ let eh = bj(parseBigIntValue(as(bk)), parseBigIntValue(as(bl)), g)
690+ if ((eh == eh))
691+ then {
692+ let dL = dm(toString(dj.caller), toBase58String(dj.transactionId), AttachedPayment(fromBase58String(bL), dS), AttachedPayment(fromBase58String(bM), dT), bg, true, true, cp, bH)
693+ let be = dL._2
694+ let bK = dL._7
695+ let cf = dL._9
696+ let cP = dL._10
697+ let cQ = dL._11
698+ let ei = bd(toBigInt(be), toBigInt(bf), toBigInt(bg))
699+ let cO = toInt(ei._2)
700+ let ej = invoke(az, "emit", [cO], nil)
701+ if ((ej == ej))
702+ then {
703+ let dM = {
704+ let at = ej
705+ if ($isInstanceOf(at, "Address"))
706+ then {
707+ let dN = at
708+ invoke(dN, "emit", [cO], nil)
709+ }
710+ else unit
711+ }
712+ if ((dM == dM))
713+ then {
714+ let dO = if ((cP > 0))
715+ then invoke(dI, "put", nil, [AttachedPayment(fromBase58String(bL), cP)])
716+ else nil
717+ if ((dO == dO))
718+ then {
719+ let dP = if ((cQ > 0))
720+ then invoke(dI, "put", nil, [AttachedPayment(fromBase58String(bM), cQ)])
721+ else nil
722+ if ((dP == dP))
723+ then {
724+ let dQ = if (dF)
725+ then {
726+ let dR = invoke(dH, "stake", nil, [AttachedPayment(bK, cO)])
727+ if ((dR == dR))
728+ then nil
729+ else throw("Strict value is not equal to itself.")
730+ }
731+ else [ScriptTransfer(dj.caller, cO, bK)]
732+ let ek = if ((dZ > 0))
733+ then [ScriptTransfer(aD, dZ, fromBase58String(bH))]
734+ else nil
735+ ((cf ++ dQ) ++ ek)
736+ }
737+ else throw("Strict value is not equal to itself.")
738+ }
739+ else throw("Strict value is not equal to itself.")
740+ }
741+ else throw("Strict value is not equal to itself.")
742+ }
743+ else throw("Strict value is not equal to itself.")
744+ }
745+ else throw("Strict value is not equal to itself.")
746+ }
747+ }
920748 }
921749
922750
923751
924-@Callable(de)
925-func fromX18WrapperREADONLY (F,eG) = $Tuple2(nil, E(parseBigIntValue(F), eG))
752+@Callable(dj)
753+func putForFree (el) = if ((0 > el))
754+ then am("wrong slippage")
755+ else if ((size(dj.payments) != 2))
756+ then am("2 payments expected")
757+ else {
758+ let dL = dm(toString(dj.caller), toBase58String(dj.transactionId), AttachedPayment(value(dj.payments[0]).assetId, value(dj.payments[0]).amount), dj.payments[1], el, false, false, 0, "")
759+ dL._9
760+ }
926761
927762
928763
929-@Callable(de)
930-func toX18WrapperREADONLY (C,D) = $Tuple2(nil, toString(B(C, D)))
764+@Callable(dj)
765+func get () = {
766+ let cy = di(dj)
767+ let em = cy._1
768+ let ce = cy._2
769+ let cp = cy._3
770+ let bH = cy._4
771+ let cf = cy._5
772+ let en = invoke(az, "burn", [cp], [AttachedPayment(bH, cp)])
773+ if ((en == en))
774+ then cf
775+ else throw("Strict value is not equal to itself.")
776+ }
931777
932778
933779
934-@Callable(de)
935-func calcPriceBigIntWrapperREADONLY (aY,aZ) = $Tuple2(nil, toString(aX(parseBigIntValue(aY), parseBigIntValue(aZ))))
780+@Callable(dj)
781+func getOneTkn (eo,ep,eq,er,bg) = if ((size(dj.payments) != 1))
782+ then am("1 payment expected")
783+ else {
784+ let bw = aE()
785+ let bK = bw[r]
786+ let bL = bw[s]
787+ let bM = bw[t]
788+ let bN = parseIntValue(bw[u])
789+ let bO = parseIntValue(bw[v])
790+ let bP = bw[q]
791+ let dG = aI()
792+ let dU = valueOrErrorMessage(addressFromString(dG[A]), "Wrong gwxRewardContract address")
793+ let dl = value(dj.payments[0])
794+ let dW = valueOrElse(getString(this, ab()), "")
795+ let bJ = if ((dW == toString(dj.caller)))
796+ then dj.originCaller
797+ else dj.caller
798+ let bG = toBase58String(dj.transactionId)
799+ let bH = value(dl.assetId)
800+ let cp = dl.amount
801+ if ((1000000000 > cp))
802+ then am("Min payment 10 LP")
803+ else if (if (if ((0 > bg))
804+ then true
805+ else (0 > eo))
806+ then true
807+ else (0 > eq))
808+ then am("Wrong params")
809+ else if ((bK != toBase58String(bH)))
810+ then am("Wrong LP")
811+ else {
812+ let cy = bF(toBase58String(dj.transactionId), toBase58String(bH), cp, dj.caller)
813+ let es = cy._1
814+ let et = cy._2
815+ let bT = aY(bL)
816+ let bV = aY(bM)
817+ let eu = if ((er == bL))
818+ then $Tuple7((bT - es), (bV - et), eo, et, 0, 0, (es + eo))
819+ else if ((er == bM))
820+ then $Tuple7((bT - es), (bV - et), 0, 0, eo, es, (et + eo))
821+ else am("wrong outAssetId")
822+ let eb = eu._1
823+ let ec = eu._2
824+ let ed = eu._3
825+ let ee = eu._4
826+ let ef = eu._5
827+ let eg = eu._6
828+ let ev = eu._7
829+ if (if ((0 > ed))
830+ then true
831+ else (0 > ef))
832+ then am("Wrong calc")
833+ else {
834+ let bl = invoke(dU, "calcD", [toString(eb), toString(ec), aA, h, i], nil)
835+ let bk = invoke(dU, "calcD", [toString(((eb - ed) + eg)), toString(((ec + ee) - ef)), aA, h, i], nil)
836+ let eh = bj(parseBigIntValue(as(bk)), parseBigIntValue(as(bl)), g)
837+ if ((eh == eh))
838+ then {
839+ let ew = bd(toBigInt(ev), toBigInt(eq), toBigInt(bg))
840+ if ((ew == ew))
841+ then {
842+ let ex = if ((er == bL))
843+ then $Tuple2(toInt(ew._2), 0)
844+ else $Tuple2(0, toInt(ew._2))
845+ let ey = ex._1
846+ let ez = ex._2
847+ let eA = (ey + ez)
848+ let eB = dq(eA)
849+ let eC = eB._1
850+ let dZ = eB._2
851+ let eD = if ((er == "WAVES"))
852+ then unit
853+ else fromBase58String(er)
854+ let ek = if ((dZ > 0))
855+ then [ScriptTransfer(aD, dZ, eD)]
856+ else nil
857+ let bS = if ((bN >= bO))
858+ then bN
859+ else bO
860+ if ((bS == bS))
861+ then {
862+ let eE = ba(C(bV, bS), C(bT, bS))
863+ let eF = F(eE, a)
864+ let cf = [ScriptTransfer(bJ, eC, eD), StringEntry(X(toString(bJ), bG), aU(ey, ez, cp, eF, height, lastBlock.timestamp)), IntegerEntry(Q(), eF), IntegerEntry(R(height, lastBlock.timestamp), eF)]
865+ if ((cf == cf))
866+ then {
867+ let eG = invoke(az, "burn", [cp], [AttachedPayment(bH, cp)])
868+ if ((eG == eG))
869+ then (cf ++ ek)
870+ else throw("Strict value is not equal to itself.")
871+ }
872+ else throw("Strict value is not equal to itself.")
873+ }
874+ else throw("Strict value is not equal to itself.")
875+ }
876+ else throw("Strict value is not equal to itself.")
877+ }
878+ else throw("Strict value is not equal to itself.")
879+ }
880+ }
881+ }
936882
937883
938884
939-@Callable(de)
940-func estimatePutOperationWrapperREADONLY (bE,bd,cd,ce,cf,cg,eH,ch,ci) = $Tuple2(nil, cc(bE, bd, cd, ce, cf, cg, eH, ch, ci, false, 0, ""))
885+@Callable(dj)
886+func getNoLess (eH,eI) = {
887+ let cy = di(dj)
888+ let cd = cy._1
889+ let ce = cy._2
890+ let cp = cy._3
891+ let bH = cy._4
892+ let cf = cy._5
893+ let eJ = if ((cd >= eH))
894+ then true
895+ else am(((("Failed: " + toString(cd)) + " < ") + toString(eH)))
896+ if ((eJ == eJ))
897+ then {
898+ let eK = if ((ce >= eI))
899+ then true
900+ else am(((("Failed: " + toString(ce)) + " < ") + toString(eI)))
901+ if ((eK == eK))
902+ then {
903+ let eL = invoke(az, "burn", [cp], [AttachedPayment(bH, cp)])
904+ if ((eL == eL))
905+ then cf
906+ else throw("Strict value is not equal to itself.")
907+ }
908+ else throw("Strict value is not equal to itself.")
909+ }
910+ else throw("Strict value is not equal to itself.")
911+ }
941912
942913
943914
944-@Callable(de)
945-func estimateGetOperationWrapperREADONLY (bE,eI,bG,eH) = {
946- let cw = bD(bE, eI, bG, addressFromStringValue(eH))
947- $Tuple2(nil, $Tuple10(cw._1, cw._2, cw._3, cw._4, cw._5, cw._6, cw._7, toString(cw._8), cw._9, cw._10))
915+@Callable(dj)
916+func unstakeAndGet (dr) = {
917+ let dk = if ((size(dj.payments) != 0))
918+ then am("no payments expected")
919+ else true
920+ if ((dk == dk))
921+ then {
922+ let bw = aE()
923+ let eM = aI()
924+ let bK = fromBase58String(bw[r])
925+ let eN = valueOrErrorMessage(addressFromString(eM[y]), "wrong")
926+ let eO = invoke(eN, "unstake", [toBase58String(bK), dr], nil)
927+ if ((eO == eO))
928+ then {
929+ let cy = bF(toBase58String(dj.transactionId), toBase58String(bK), dr, dj.caller)
930+ let bP = parseIntValue(cy._9)
931+ let cf = cy._10
932+ let eP = if (if (aB())
933+ then true
934+ else (bP == o))
935+ then am(("Blocked: " + toString(bP)))
936+ else true
937+ if ((eP == eP))
938+ then {
939+ let eQ = invoke(az, "burn", [dr], [AttachedPayment(bK, dr)])
940+ if ((eQ == eQ))
941+ then cf
942+ else throw("Strict value is not equal to itself.")
943+ }
944+ else throw("Strict value is not equal to itself.")
945+ }
946+ else throw("Strict value is not equal to itself.")
947+ }
948+ else throw("Strict value is not equal to itself.")
948949 }
949950
950951
951-@Verifier(eJ)
952-func eK () = {
953- let ar = eJ
954- if ($isInstanceOf(ar, "Order"))
952+
953+@Callable(dj)
954+func activate (eR,eS) = if ((toString(dj.caller) != toString(az)))
955+ then am("denied")
956+ else $Tuple2([StringEntry(Y(), eR), StringEntry(Z(), eS)], "success")
957+
958+
959+
960+@Callable(dj)
961+func setS (eT,eP) = if ((toString(dj.caller) != av(this, ab())))
962+ then dw
963+ else [StringEntry(eT, eP)]
964+
965+
966+
967+@Callable(dj)
968+func setI (eT,eP) = if ((toString(dj.caller) != av(this, ab())))
969+ then dw
970+ else [IntegerEntry(eT, eP)]
971+
972+
973+
974+@Callable(dj)
975+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aE())
976+
977+
978+
979+@Callable(dj)
980+func getAccBalanceWrapperREADONLY (aZ) = $Tuple2(nil, aY(aZ))
981+
982+
983+
984+@Callable(dj)
985+func calcPricesWrapperREADONLY (bq,br,bv) = {
986+ let eU = bu(bq, br, bv)
987+ $Tuple2(nil, [toString(eU[0]), toString(eU[1]), toString(eU[2])])
988+ }
989+
990+
991+
992+@Callable(dj)
993+func fromX18WrapperREADONLY (G,eV) = $Tuple2(nil, F(parseBigIntValue(G), eV))
994+
995+
996+
997+@Callable(dj)
998+func toX18WrapperREADONLY (D,E) = $Tuple2(nil, toString(C(D, E)))
999+
1000+
1001+
1002+@Callable(dj)
1003+func calcPriceBigIntWrapperREADONLY (bb,bc) = $Tuple2(nil, toString(ba(parseBigIntValue(bb), parseBigIntValue(bc))))
1004+
1005+
1006+
1007+@Callable(dj)
1008+func estimatePutOperationWrapperREADONLY (bG,bg,ci,eW,ck,eX,eY,cm,cn) = $Tuple2(nil, cg(bG, bg, ci, eW, ck, eX, eY, cm, cn, false, 0, ""))
1009+
1010+
1011+
1012+@Callable(dj)
1013+func estimateGetOperationWrapperREADONLY (bG,eZ,bI,eY) = {
1014+ let cy = bF(bG, eZ, bI, addressFromStringValue(eY))
1015+ $Tuple2(nil, $Tuple10(cy._1, cy._2, cy._3, cy._4, cy._5, cy._6, cy._7, toString(cy._8), cy._9, cy._10))
1016+ }
1017+
1018+
1019+@Verifier(fa)
1020+func fb () = {
1021+ let at = fa
1022+ if ($isInstanceOf(at, "Order"))
9551023 then {
956- let cR = ar
957- let eL = aA()
958- let an = cQ(cR)
959- let eM = sigVerify(cR.bodyBytes, cR.proofs[0], cR.senderPublicKey)
960- let eN = sigVerify(cR.bodyBytes, cR.proofs[1], eL)
961- if (if (if (an)
962- then eM
1024+ let cW = at
1025+ let fc = aC()
1026+ let ap = cV(cW)
1027+ let fd = sigVerify(cW.bodyBytes, cW.proofs[0], cW.senderPublicKey)
1028+ let fe = sigVerify(cW.bodyBytes, cW.proofs[1], fc)
1029+ if (if (if (ap)
1030+ then fd
9631031 else false)
964- then eN
1032+ then fe
9651033 else false)
9661034 then true
967- else am(an, eM, eN)
1035+ else ao(ap, fd, fe)
9681036 }
9691037 else {
970- let eO = {
971- let eP = dj()
972- if ($isInstanceOf(eP, "ByteVector"))
1038+ let ff = {
1039+ let fg = dt()
1040+ if ($isInstanceOf(fg, "ByteVector"))
9731041 then {
974- let do = eP
975- do
1042+ let dy = fg
1043+ dy
9761044 }
977- else if ($isInstanceOf(eP, "Unit"))
978- then eJ.senderPublicKey
1045+ else if ($isInstanceOf(fg, "Unit"))
1046+ then fa.senderPublicKey
9791047 else throw("Match error")
9801048 }
981- sigVerify(eJ.bodyBytes, eJ.proofs[0], eO)
1049+ sigVerify(fa.bodyBytes, fa.proofs[0], ff)
9821050 }
9831051 }
9841052
Full:
OldNewDifferences
1-{-# STDLIB_VERSION 5 #-}
1+{-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
10-let d = toBigInt(0)
10+let d = 1000
1111
12-let e = toBigInt(1)
12+let e = toBigInt(0)
1313
14-let f = toBigInt((a - ((a * 1) / a)))
14+let f = toBigInt(1)
1515
16-let g = "100"
16+let g = toBigInt((a - ((a * 1) / a)))
1717
18-let h = "1"
18+let h = "100"
1919
20-let i = "__"
20+let i = "1"
2121
22-let j = ""
22+let j = "__"
2323
24-let k = 1
24+let k = ""
2525
26-let l = 2
26+let l = 1
2727
28-let m = 3
28+let m = 2
2929
30-let n = 4
30+let n = 3
3131
32-let o = 1
32+let o = 4
3333
34-let p = 2
34+let p = 1
3535
36-let q = 3
36+let q = 2
3737
38-let r = 4
38+let r = 3
3939
40-let s = 5
40+let s = 4
4141
42-let t = 6
42+let t = 5
4343
44-let u = 7
44+let u = 6
4545
46-let v = 8
46+let v = 7
4747
48-let w = 9
48+let w = 8
4949
50-let x = 1
50+let x = 9
5151
52-let y = 7
52+let y = 1
5353
54-let z = 10
54+let z = 7
5555
56-let A = "%s__delay"
56+let A = 10
5757
58-func B (C,D) = fraction(toBigInt(C), c, toBigInt(D))
58+let B = 0
59+
60+func C (D,E) = fraction(toBigInt(D), c, toBigInt(E))
5961
6062
61-func E (F,G) = toInt(fraction(F, toBigInt(G), c))
63+func F (G,H) = toInt(fraction(G, toBigInt(H), c))
6264
6365
64-func H (I,J,K) = fraction(I, J, K)
66+func I (J,K,L) = fraction(J, K, L)
6567
6668
67-func L (F) = if ((d > F))
68- then -(F)
69- else F
69+func M (G) = if ((e > G))
70+ then -(G)
71+ else G
7072
7173
72-func M () = "%s__factoryContract"
74+func N () = "%s__factoryContract"
7375
7476
75-func N () = "%s__managerPublicKey"
77+func O () = "%s__managerPublicKey"
7678
7779
78-func O () = "%s__pendingManagerPublicKey"
80+func P () = "%s__pendingManagerPublicKey"
7981
8082
81-func P () = "%s%s__price__last"
83+func Q () = "%s%s__price__last"
8284
8385
84-func Q (R,S) = makeString(["%s%s%d%d__price__history", toString(R), toString(S)], i)
86+func R (S,T) = makeString(["%s%s%d%d__price__history", toString(S), toString(T)], j)
8587
8688
87-func T (U,V) = ((("%s%s%s__P__" + U) + "__") + V)
89+func U (V,W) = ((("%s%s%s__P__" + V) + "__") + W)
8890
8991
90-func W (U,V) = ((("%s%s%s__G__" + U) + "__") + V)
92+func X (V,W) = ((("%s%s%s__G__" + V) + "__") + W)
9193
9294
93-func X () = "%s__amountAsset"
95+func Y () = "%s__amountAsset"
9496
9597
96-func Y () = "%s__priceAsset"
98+func Z () = "%s__priceAsset"
9799
98100
99-func Z () = "%s__amp"
101+func aa () = "%s__amp"
100102
101103
102-func aa () = "%s__addonAddr"
104+func ab () = "%s__addonAddr"
103105
104106
105-func ab (ac) = makeString(["%s%s__lastGetOneTknCall", ac], i)
107+let ac = "%s__feePermille"
106108
107-
108-func ad (ac) = makeString(["%s%s__lastPutOneTknCall", ac], i)
109-
109+let ad = valueOrElse(getInteger(this, ac), B)
110110
111111 func ae () = "%s__factoryConfig"
112112
113113
114114 func af () = "%s%s__matcher__publicKey"
115115
116116
117117 func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
118118
119119
120120 func aj (ak) = ("%s%s%s__mappings__baseAsset2internalId__" + ak)
121121
122122
123123 func al () = "%s__shutdown"
124124
125125
126-func am (an,ao,ap) = throw(((((("Failed: ordValid=" + toString(an)) + " sndrValid=") + toString(ao)) + " mtchrValid=") + toString(ap)))
126+func am (an) = throw(makeString(["lp_stable.ride:", an], " "))
127127
128128
129-func aq (F) = {
130- let ar = F
131- if ($isInstanceOf(ar, "String"))
129+func ao (ap,aq,ar) = am(((((("Failed: ordValid=" + toString(ap)) + " sndrValid=") + toString(aq)) + " mtchrValid=") + toString(ar)))
130+
131+
132+func as (G) = {
133+ let at = G
134+ if ($isInstanceOf(at, "String"))
132135 then {
133- let as = ar
134- as
136+ let au = at
137+ au
135138 }
136- else throw("fail cast to String")
139+ else am("fail cast to String")
137140 }
138141
139142
140-func at (au,av) = valueOrErrorMessage(getString(au, av), makeString(["mandatory ", toString(au), ".", av, " not defined"], ""))
143+func av (aw,ax) = valueOrErrorMessage(getString(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
141144
142145
143-func aw (au,av) = valueOrErrorMessage(getInteger(au, av), makeString(["mandatory ", toString(au), ".", av, " not defined"], ""))
146+func ay (aw,ax) = valueOrErrorMessage(getInteger(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
144147
145148
146-let ax = addressFromStringValue(at(this, M()))
149+let az = addressFromStringValue(av(this, N()))
147150
148-let ay = at(this, Z())
151+let aA = av(this, aa())
149152
150-func az () = valueOrElse(getBoolean(ax, al()), false)
153+func aB () = valueOrElse(getBoolean(az, al()), false)
151154
152155
153-func aA () = fromBase58String(at(ax, af()))
156+func aC () = fromBase58String(av(az, af()))
154157
155158
156-func aB () = {
157- let aC = at(this, X())
158- let aD = at(this, Y())
159- let aE = aw(ax, aj(aD))
160- let ah = aw(ax, aj(aC))
161- split(at(ax, ag(toString(ah), toString(aE))), i)
159+let aD = addressFromPublicKey(aC())
160+
161+func aE () = {
162+ let aF = av(this, Y())
163+ let aG = av(this, Z())
164+ let aH = ay(az, aj(aG))
165+ let ah = ay(az, aj(aF))
166+ split(av(az, ag(toString(ah), toString(aH))), j)
162167 }
163168
164169
165-func aF () = split(at(ax, ae()), i)
170+func aI () = split(av(az, ae()), j)
166171
167172
168-func aG (aH,aI,aJ,aK,aL,aM,aN,aO,aP,aQ) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aH), toString(aI), toString(aJ), toString(aK), toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ)], i)
173+func aJ (aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aK), toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT)], j)
169174
170175
171-func aR (aS,aT,aU,aK,aN,aO) = makeString(["%d%d%d%d%d%d", toString(aS), toString(aT), toString(aU), toString(aK), toString(aN), toString(aO)], i)
176+func aU (aV,aW,aX,aN,aQ,aR) = makeString(["%d%d%d%d%d%d", toString(aV), toString(aW), toString(aX), toString(aN), toString(aQ), toString(aR)], j)
172177
173178
174-func aV (aW) = if ((aW == "WAVES"))
179+func aY (aZ) = if ((aZ == "WAVES"))
175180 then wavesBalance(this).available
176- else assetBalance(this, fromBase58String(aW))
181+ else assetBalance(this, fromBase58String(aZ))
177182
178183
179-func aX (aY,aZ) = fraction(aY, c, aZ)
184+func ba (bb,bc) = fraction(bb, c, bc)
180185
181186
182-func ba (bb,bc,bd) = {
183- let be = fraction((bb - bc), b, bc)
184- let bf = ((bd - L(be)) > d)
185- if (!(bf))
186- then throw(("Big slpg: " + toString(be)))
187- else $Tuple2(bf, min([bb, bc]))
187+func bd (be,bf,bg) = {
188+ let bh = fraction((be - bf), b, bf)
189+ let bi = ((bg - M(bh)) > e)
190+ if (!(bi))
191+ then am(("Big slippage: " + toString(bh)))
192+ else $Tuple2(bi, min([be, bf]))
188193 }
189194
190195
191-func bg (bh,bi,bj) = {
192- let be = fraction(bi, b, bh)
193- let bk = (bj > be)
194- if (if (bk)
196+func bj (bk,bl,bg) = {
197+ let bh = fraction(bl, b, bk)
198+ let bm = (bg > bh)
199+ if (if (bm)
195200 then true
196- else (bi > bh))
197- then throw(((((((toString(bi) + " ") + toString(bh)) + " ") + toString(be)) + " ") + toString(bj)))
198- else bk
201+ else (bl > bk))
202+ then am(((((((toString(bl) + " ") + toString(bk)) + " ") + toString(bh)) + " ") + toString(bg)))
203+ else bm
199204 }
200205
201206
202-func bl (bm,bn,bo,bp) = {
203- let bq = B(bo, bm)
204- let br = B(bp, bn)
205- aX(br, bq)
207+func bn (bo,bp,bq,br) = {
208+ let bs = C(bq, bo)
209+ let bt = C(br, bp)
210+ ba(bt, bs)
206211 }
207212
208213
209-func bs (bo,bp,bt) = {
210- let bu = aB()
211- let bv = parseIntValue(bu[t])
212- let bw = parseIntValue(bu[u])
213- let bx = bl(bv, bw, bo, bp)
214- let aZ = B(bo, bv)
215- let aY = B(bp, bw)
216- let by = B(bt, a)
217- let bz = aX(aZ, by)
218- let bA = aX(aY, by)
219-[bx, bz, bA]
214+func bu (bq,br,bv) = {
215+ let bw = aE()
216+ let bx = parseIntValue(bw[u])
217+ let by = parseIntValue(bw[v])
218+ let bz = bn(bx, by, bq, br)
219+ let bc = C(bq, bx)
220+ let bb = C(br, by)
221+ let bA = C(bv, a)
222+ let bB = ba(bc, bA)
223+ let bC = ba(bb, bA)
224+[bz, bB, bC]
220225 }
221226
222227
223-func bB (bo,bp,bt) = {
224- let bC = bs(bo, bp, bt)
225-[E(bC[0], a), E(bC[1], a), E(bC[2], a)]
228+func bD (bq,br,bv) = {
229+ let bE = bu(bq, br, bv)
230+[F(bE[0], a), F(bE[1], a), F(bE[2], a)]
226231 }
227232
228233
229-func bD (bE,bF,bG,bH) = {
230- let bu = aB()
231- let bI = bu[q]
232- let bJ = bu[r]
233- let bK = bu[s]
234- let bL = parseIntValue(bu[t])
235- let bM = parseIntValue(bu[u])
236- let bN = bu[p]
237- let bO = valueOrErrorMessage(assetInfo(fromBase58String(bI)), "Wrong LP id").quantity
238- if ((bI != bF))
239- then throw("Wrong pmt asset")
240- else {
241- let bP = aV(bJ)
242- let bQ = B(bP, bL)
243- let bR = aV(bK)
244- let bS = B(bR, bM)
245- let bT = aX(bS, bQ)
246- let bU = E(bT, a)
247- let bV = B(bG, a)
248- let bW = B(bO, a)
249- let bX = fraction(bQ, bV, bW)
250- let bY = fraction(bS, bV, bW)
251- let bZ = E(bX, bL)
252- let ca = E(bY, bM)
253- let cb = if ((bE == ""))
254- then nil
255- else [ScriptTransfer(bH, bZ, if ((bJ == "WAVES"))
256- then unit
257- else fromBase58String(bJ)), ScriptTransfer(bH, ca, if ((bK == "WAVES"))
258- then unit
259- else fromBase58String(bK)), StringEntry(W(toString(bH), bE), aR(bZ, ca, bG, bU, height, lastBlock.timestamp)), IntegerEntry(P(), bU), IntegerEntry(Q(height, lastBlock.timestamp), bU)]
260- $Tuple10(bZ, ca, bJ, bK, bP, bR, bO, bT, bN, cb)
234+func bF (bG,bH,bI,bJ) = {
235+ let bw = aE()
236+ let bK = bw[r]
237+ let bL = bw[s]
238+ let bM = bw[t]
239+ let bN = parseIntValue(bw[u])
240+ let bO = parseIntValue(bw[v])
241+ let bP = bw[q]
242+ let bQ = valueOrErrorMessage(assetInfo(fromBase58String(bK)), "Wrong LP id").quantity
243+ let bR = if ((bK == bH))
244+ then true
245+ else am("Wrong payment asset")
246+ if ((bR == bR))
247+ then {
248+ let bS = if ((bN >= bO))
249+ then bN
250+ else bO
251+ if ((bS == bS))
252+ then {
253+ let bT = aY(bL)
254+ let bU = C(bT, bS)
255+ let bV = aY(bM)
256+ let bW = C(bV, bS)
257+ let bX = ba(bW, bU)
258+ let bY = F(bX, a)
259+ let bZ = C(bI, a)
260+ let ca = C(bQ, a)
261+ let cb = fraction(bU, bZ, ca)
262+ let cc = fraction(bW, bZ, ca)
263+ let cd = F(cb, bS)
264+ let ce = F(cc, bS)
265+ let cf = if ((bG == ""))
266+ then nil
267+ else [ScriptTransfer(bJ, cd, if ((bL == "WAVES"))
268+ then unit
269+ else fromBase58String(bL)), ScriptTransfer(bJ, ce, if ((bM == "WAVES"))
270+ then unit
271+ else fromBase58String(bM)), StringEntry(X(toString(bJ), bG), aU(cd, ce, bI, bY, height, lastBlock.timestamp)), IntegerEntry(Q(), bY), IntegerEntry(R(height, lastBlock.timestamp), bY)]
272+ $Tuple10(cd, ce, bL, bM, bT, bV, bQ, bX, bP, cf)
273+ }
274+ else throw("Strict value is not equal to itself.")
261275 }
276+ else throw("Strict value is not equal to itself.")
262277 }
263278
264279
265-func cc (bE,bd,cd,ce,cf,cg,bH,ch,ci,cj,ck,cl) = {
266- let bu = aB()
267- let bI = fromBase58String(bu[q])
268- let cm = bu[r]
269- let cn = bu[s]
270- let co = bu[v]
271- let cp = bu[w]
272- let cq = parseIntValue(bu[t])
273- let cr = parseIntValue(bu[u])
274- let bN = bu[p]
275- let cs = valueOrErrorMessage(assetInfo(bI), "Wr lp as").quantity
276- let bP = if (ch)
277- then aV(cm)
278- else if (if (cj)
279- then (cl == cm)
280+func cg (bG,ch,ci,cj,ck,cl,bJ,cm,cn,co,cp,cq) = {
281+ let bw = aE()
282+ let bK = fromBase58String(bw[r])
283+ let cr = bw[s]
284+ let cs = bw[t]
285+ let ct = bw[w]
286+ let cu = bw[x]
287+ let bN = parseIntValue(bw[u])
288+ let bO = parseIntValue(bw[v])
289+ let bP = bw[q]
290+ let bQ = valueOrErrorMessage(assetInfo(bK), "Wrong lp asset").quantity
291+ let bT = if (cm)
292+ then aY(cr)
293+ else if (if (co)
294+ then (cq == cr)
280295 else false)
281- then (aV(cm) - ck)
282- else if (cj)
283- then aV(cm)
284- else (aV(cm) - cd)
285- let bR = if (ch)
286- then aV(cn)
287- else if (if (cj)
288- then (cl == cn)
296+ then (aY(cr) - cp)
297+ else if (co)
298+ then aY(cr)
299+ else (aY(cr) - ci)
300+ let bV = if (cm)
301+ then aY(cs)
302+ else if (if (co)
303+ then (cq == cs)
289304 else false)
290- then (aV(cn) - ck)
291- else if (cj)
292- then aV(cn)
293- else (aV(cn) - cf)
294- let ct = B(cd, cq)
295- let cu = B(cf, cr)
296- let cv = aX(cu, ct)
297- let bQ = B(bP, cq)
298- let bS = B(bR, cr)
299- let cw = if ((cs == 0))
305+ then (aY(cs) - cp)
306+ else if (co)
307+ then aY(cs)
308+ else (aY(cs) - ck)
309+ let bS = if ((bN >= bO))
310+ then bN
311+ else bO
312+ if ((bS == bS))
300313 then {
301- let bT = d
302- let cx = d
303- let by = pow((ct * cu), 0, toBigInt(5), 1, 0, DOWN)
304- $Tuple5(E(by, a), E(ct, cq), E(cu, cr), aX((bS + cu), (bQ + ct)), cx)
314+ let cv = C(ci, bS)
315+ let cw = C(ck, bS)
316+ let cx = ba(cw, cv)
317+ let bU = C(bT, bS)
318+ let bW = C(bV, bS)
319+ let cy = if ((bQ == 0))
320+ then {
321+ let bX = e
322+ let cz = e
323+ let cA = pow((cv * cw), 0, toBigInt(5), 1, 0, DOWN)
324+ $Tuple5(F(cA, a), F(cv, bS), F(cw, bS), ba((bW + cw), (bU + cv)), cz)
325+ }
326+ else {
327+ let bX = ba(bW, bU)
328+ let cB = fraction(M((bX - cx)), c, bX)
329+ let cz = C(ch, a)
330+ let cC = if (((if ((bX != e))
331+ then (cB > cz)
332+ else false) == true))
333+ then true
334+ else am(((("Price slippage " + toString(cB)) + " > ") + toString(cz)))
335+ if ((cC == cC))
336+ then {
337+ let ca = C(bQ, a)
338+ let cD = fraction(cv, bX, c)
339+ let cE = fraction(cw, c, bX)
340+ let cF = if ((cD > cw))
341+ then $Tuple2(cE, cv)
342+ else $Tuple2(cv, cD)
343+ let cG = cF._1
344+ let cH = cF._2
345+ let cA = fraction(ca, cH, bW)
346+ $Tuple5(F(cA, a), F(cG, bS), F(cH, bS), bX, cz)
347+ }
348+ else throw("Strict value is not equal to itself.")
349+ }
350+ let cI = cy._1
351+ let cJ = cy._2
352+ let cK = cy._3
353+ let cL = F(cy._4, a)
354+ let cM = F(cy._5, a)
355+ let cN = if ((cI > 0))
356+ then true
357+ else am("LP <= 0")
358+ if ((cN == cN))
359+ then {
360+ let cO = if (!(cn))
361+ then 0
362+ else cI
363+ let cP = (ci - cJ)
364+ let cQ = (ck - cK)
365+ let cR = if (if (co)
366+ then (cq == cr)
367+ else false)
368+ then $Tuple2(cp, 0)
369+ else if (if (co)
370+ then (cq == cs)
371+ else false)
372+ then $Tuple2(0, cp)
373+ else $Tuple2(cJ, cK)
374+ let cS = cR._1
375+ let cT = cR._2
376+ let cU = [IntegerEntry(Q(), cL), IntegerEntry(R(height, lastBlock.timestamp), cL), StringEntry(U(bJ, bG), aJ(cS, cT, cO, cL, ch, cM, height, lastBlock.timestamp, cP, cQ))]
377+ $Tuple13(cI, cO, cL, bT, bV, bQ, bK, bP, cU, cP, cQ, cj, cl)
378+ }
379+ else throw("Strict value is not equal to itself.")
305380 }
306- else {
307- let bT = aX(bS, bQ)
308- let cy = fraction(L((bT - cv)), c, bT)
309- let cx = B(bd, a)
310- if (if ((bT != d))
311- then (cy > cx)
312- else false)
313- then throw(((("Price slippage " + toString(cy)) + " > ") + toString(cx)))
314- else {
315- let cz = B(cs, a)
316- let cA = fraction(ct, bT, c)
317- let cB = fraction(cu, c, bT)
318- let cC = if ((cA > cu))
319- then $Tuple2(cB, cu)
320- else $Tuple2(ct, cA)
321- let cD = cC._1
322- let cE = cC._2
323- let by = fraction(cz, cE, bS)
324- $Tuple5(E(by, a), E(cD, cq), E(cE, cr), bT, cx)
325- }
326- }
327- let cF = cw._1
328- let cG = cw._2
329- let cH = cw._3
330- let bU = E(cw._4, a)
331- let cI = E(cw._5, a)
332- if ((0 >= cF))
333- then throw("LP <= 0")
334- else {
335- let cJ = if (!(ci))
336- then 0
337- else cF
338- let cK = (cd - cG)
339- let cL = (cf - cH)
340- let cM = if (if (cj)
341- then (cl == cm)
342- else false)
343- then $Tuple2(ck, 0)
344- else if (if (cj)
345- then (cl == cn)
346- else false)
347- then $Tuple2(0, ck)
348- else $Tuple2(cG, cH)
349- let cN = cM._1
350- let cO = cM._2
351- let cP = [IntegerEntry(P(), bU), IntegerEntry(Q(height, lastBlock.timestamp), bU), StringEntry(T(bH, bE), aG(cN, cO, cJ, bU, bd, cI, height, lastBlock.timestamp, cK, cL))]
352- $Tuple13(cF, cJ, bU, bP, bR, cs, bI, bN, cP, cK, cL, ce, cg)
353- }
381+ else throw("Strict value is not equal to itself.")
354382 }
355383
356384
357-func cQ (cR) = {
358- let bu = aB()
359- let cS = bu[r]
360- let cT = bu[s]
361- let bN = parseIntValue(bu[p])
362- let bv = parseIntValue(bu[t])
363- let bw = parseIntValue(bu[u])
364- let cU = aV(cS)
365- let cV = aV(cT)
366- let bT = if ((cR.orderType == Buy))
367- then bl(bv, bw, (cU + cR.amount), cV)
368- else bl(bv, bw, (cU - cR.amount), cV)
369- let bU = E(bT, a)
370- if (if (if (az())
385+func cV (cW) = {
386+ let bw = aE()
387+ let cX = bw[s]
388+ let cY = bw[t]
389+ let bP = parseIntValue(bw[q])
390+ let bx = parseIntValue(bw[u])
391+ let by = parseIntValue(bw[v])
392+ let cZ = aY(cX)
393+ let da = aY(cY)
394+ let bX = if ((cW.orderType == Buy))
395+ then bn(bx, by, (cZ + cW.amount), da)
396+ else bn(bx, by, (cZ - cW.amount), da)
397+ let bY = F(bX, a)
398+ if (if (if (aB())
371399 then true
372- else (bN == m))
400+ else (bP == n))
373401 then true
374- else (bN == n))
375- then throw("Admin blocked")
402+ else (bP == o))
403+ then am("Admin blocked")
376404 else {
377- let cW = cR.assetPair.amountAsset
378- let cX = if ((cW == unit))
405+ let db = cW.assetPair.amountAsset
406+ let dc = if ((db == unit))
379407 then "WAVES"
380- else toBase58String(value(cW))
381- let cY = cR.assetPair.priceAsset
382- let cZ = if ((cY == unit))
408+ else toBase58String(value(db))
409+ let dd = cW.assetPair.priceAsset
410+ let de = if ((dd == unit))
383411 then "WAVES"
384- else toBase58String(value(cY))
385- if (if ((cX != cS))
412+ else toBase58String(value(dd))
413+ if (if ((dc != cX))
386414 then true
387- else (cZ != cT))
388- then throw("Wr assets")
415+ else (de != cY))
416+ then am("Wr assets")
389417 else {
390- let da = cR.price
391- let cr = fraction(a, bw, bv)
392- let db = H(da, a, cr)
393- let dc = if ((cR.orderType == Buy))
394- then (bU >= db)
395- else (db >= bU)
418+ let df = cW.price
419+ let bO = fraction(a, by, bx)
420+ let dg = I(df, a, bO)
421+ let dh = if ((cW.orderType == Buy))
422+ then (bY >= dg)
423+ else (dg >= bY)
396424 true
397425 }
398426 }
399427 }
400428
401429
402-func dd (de) = if ((size(de.payments) != 1))
403- then throw("1 pmnt exp")
404- else {
405- let df = value(de.payments[0])
406- let bF = value(df.assetId)
407- let ck = df.amount
408- let cw = bD(toBase58String(de.transactionId), toBase58String(bF), ck, de.caller)
409- let bZ = cw._1
410- let ca = cw._2
411- let bN = parseIntValue(cw._9)
412- let cb = cw._10
413- if (if (az())
414- then true
415- else (bN == n))
416- then throw(("Admin blocked: " + toString(bN)))
417- else $Tuple5(bZ, ca, ck, bF, cb)
418- }
419-
420-
421-func dg (ac,V,dh,di,bd,ci,cj,ck,cl) = {
422- let cw = cc(V, bd, value(dh).amount, value(dh).assetId, value(di).amount, value(di).assetId, ac, false, ci, cj, ck, cl)
423- let bN = parseIntValue(cw._8)
424- if (if (if (az())
430+func di (dj) = {
431+ let dk = if ((size(dj.payments) == 1))
425432 then true
426- else (bN == l))
427- then true
428- else (bN == n))
429- then throw(("Blocked:" + toString(bN)))
430- else cw
433+ else am("1 payment expected")
434+ if ((dk == dk))
435+ then {
436+ let dl = value(dj.payments[0])
437+ let bH = value(dl.assetId)
438+ let cp = dl.amount
439+ let cy = bF(toBase58String(dj.transactionId), toBase58String(bH), cp, dj.caller)
440+ let cd = cy._1
441+ let ce = cy._2
442+ let bP = parseIntValue(cy._9)
443+ let cf = cy._10
444+ if (if (aB())
445+ then true
446+ else (bP == o))
447+ then am(("Admin blocked: " + toString(bP)))
448+ else $Tuple5(cd, ce, cp, bH, cf)
449+ }
450+ else throw("Strict value is not equal to itself.")
431451 }
432452
433453
434-func dj () = {
435- let ar = getString(N())
436- if ($isInstanceOf(ar, "String"))
454+func dm (dn,W,do,dp,bg,cn,co,cp,cq) = {
455+ let cy = cg(W, bg, value(do).amount, value(do).assetId, value(dp).amount, value(dp).assetId, dn, false, cn, co, cp, cq)
456+ let bP = parseIntValue(cy._8)
457+ if (if (if (aB())
458+ then true
459+ else (bP == m))
460+ then true
461+ else (bP == o))
462+ then am(("Blocked:" + toString(bP)))
463+ else cy
464+ }
465+
466+
467+func dq (dr) = {
468+ let ds = fraction(dr, ad, d)
469+ $Tuple2((dr - ds), ds)
470+ }
471+
472+
473+func dt () = {
474+ let at = getString(O())
475+ if ($isInstanceOf(at, "String"))
437476 then {
438- let dk = ar
439- fromBase58String(dk)
477+ let du = at
478+ fromBase58String(du)
440479 }
441- else if ($isInstanceOf(ar, "Unit"))
480+ else if ($isInstanceOf(at, "Unit"))
442481 then unit
443482 else throw("Match error")
444483 }
445484
446485
447-func dl () = {
448- let ar = getString(O())
449- if ($isInstanceOf(ar, "String"))
486+func dv () = {
487+ let at = getString(P())
488+ if ($isInstanceOf(at, "String"))
450489 then {
451- let dk = ar
452- fromBase58String(dk)
490+ let du = at
491+ fromBase58String(du)
453492 }
454- else if ($isInstanceOf(ar, "Unit"))
493+ else if ($isInstanceOf(at, "Unit"))
455494 then unit
456495 else throw("Match error")
457496 }
458497
459498
460-let dm = throw("Permission denied")
499+let dw = am("Permission denied")
461500
462-func dn (de) = {
463- let ar = dj()
464- if ($isInstanceOf(ar, "ByteVector"))
501+func dx (dj) = {
502+ let at = dt()
503+ if ($isInstanceOf(at, "ByteVector"))
465504 then {
466- let do = ar
467- if ((de.callerPublicKey == do))
505+ let dy = at
506+ if ((dj.callerPublicKey == dy))
468507 then true
469- else dm
508+ else dw
470509 }
471- else if ($isInstanceOf(ar, "Unit"))
472- then if ((de.caller == this))
510+ else if ($isInstanceOf(at, "Unit"))
511+ then if ((dj.caller == this))
473512 then true
474- else dm
513+ else dw
475514 else throw("Match error")
476515 }
477516
478517
479-@Callable(de)
480-func constructor (M) = {
481- let dp = dn(de)
482- if ((dp == dp))
483- then [StringEntry(M(), M)]
518+@Callable(dj)
519+func constructor (az) = {
520+ let dz = dx(dj)
521+ if ((dz == dz))
522+ then [StringEntry(N(), az)]
484523 else throw("Strict value is not equal to itself.")
485524 }
486525
487526
488527
489-@Callable(de)
490-func setManager (dq) = {
491- let dp = dn(de)
492- if ((dp == dp))
528+@Callable(dj)
529+func setManager (dA) = {
530+ let dz = dx(dj)
531+ if ((dz == dz))
493532 then {
494- let dr = fromBase58String(dq)
495- if ((dr == dr))
496- then [StringEntry(O(), dq)]
533+ let dB = fromBase58String(dA)
534+ if ((dB == dB))
535+ then [StringEntry(P(), dA)]
497536 else throw("Strict value is not equal to itself.")
498537 }
499538 else throw("Strict value is not equal to itself.")
500539 }
501540
502541
503542
504-@Callable(de)
543+@Callable(dj)
505544 func confirmManager () = {
506- let bC = dl()
507- let ds = if (isDefined(bC))
545+ let dC = dv()
546+ let dD = if (isDefined(dC))
508547 then true
509- else throw("No pending manager")
510- if ((ds == ds))
548+ else am("No pending manager")
549+ if ((dD == dD))
511550 then {
512- let dt = if ((de.callerPublicKey == value(bC)))
551+ let dE = if ((dj.callerPublicKey == value(dC)))
513552 then true
514- else throw("You are not pending manager")
515- if ((dt == dt))
516- then [StringEntry(N(), toBase58String(value(bC))), DeleteEntry(O())]
553+ else am("You are not pending manager")
554+ if ((dE == dE))
555+ then [StringEntry(O(), toBase58String(value(dC))), DeleteEntry(P())]
517556 else throw("Strict value is not equal to itself.")
518557 }
519558 else throw("Strict value is not equal to itself.")
520559 }
521560
522561
523562
524-@Callable(de)
525-func put (du,dv) = {
526- let dw = aF()
527- let dx = valueOrErrorMessage(addressFromString(dw[x]), "Wr st addr")
528- let dy = valueOrErrorMessage(addressFromString(dw[y]), "Wr sl addr")
529- if ((0 > du))
530- then throw("Wrong slippage")
531- else if ((size(de.payments) != 2))
532- then throw("2 pmnts expd")
533- else {
534- let dz = dg(toString(de.caller), toBase58String(de.transactionId), AttachedPayment(value(de.payments[0]).assetId, value(de.payments[0]).amount), de.payments[1], du, true, false, 0, "")
535- let cJ = dz._2
536- let dA = dz._7
537- let cb = dz._9
538- let cK = dz._10
539- let cL = dz._11
540- let bJ = dz._12
541- let bK = dz._13
542- let cw = invoke(ax, "emit", [cJ], nil)
543- if ((cw == cw))
544- then {
545- let dB = {
546- let ar = cw
547- if ($isInstanceOf(ar, "Address"))
563+@Callable(dj)
564+func put (bg,dF) = {
565+ let dG = aI()
566+ let dH = valueOrErrorMessage(addressFromString(dG[y]), "Wrong staking contract")
567+ let dI = valueOrErrorMessage(addressFromString(dG[z]), "Wrogn slippage contract")
568+ let dJ = if ((bg >= 0))
569+ then true
570+ else am("wrong slippage")
571+ if ((dJ == dJ))
572+ then {
573+ let dK = if ((size(dj.payments) == 2))
574+ then true
575+ else am("2 payments expected")
576+ if ((dK == dK))
577+ then {
578+ let dL = dm(toString(dj.caller), toBase58String(dj.transactionId), AttachedPayment(value(dj.payments[0]).assetId, value(dj.payments[0]).amount), dj.payments[1], bg, true, false, 0, "")
579+ let cO = dL._2
580+ let bK = dL._7
581+ let cf = dL._9
582+ let cP = dL._10
583+ let cQ = dL._11
584+ let bL = dL._12
585+ let bM = dL._13
586+ let cy = invoke(az, "emit", [cO], nil)
587+ if ((cy == cy))
588+ then {
589+ let dM = {
590+ let at = cy
591+ if ($isInstanceOf(at, "Address"))
592+ then {
593+ let dN = at
594+ invoke(dN, "emit", [cO], nil)
595+ }
596+ else unit
597+ }
598+ if ((dM == dM))
548599 then {
549- let dC = ar
550- invoke(dC, "emit", [cJ], nil)
551- }
552- else unit
553- }
554- if ((dB == dB))
555- then {
556- let dD = if ((cK > 0))
557- then invoke(dy, "put", nil, [AttachedPayment(bJ, cK)])
558- else nil
559- if ((dD == dD))
560- then {
561- let dE = if ((cL > 0))
562- then invoke(dy, "put", nil, [AttachedPayment(bK, cL)])
563- else nil
564- if ((dE == dE))
565- then {
566- let dF = if (dv)
567- then {
568- let dG = invoke(dx, "stake", nil, [AttachedPayment(dA, cJ)])
569- if ((dG == dG))
570- then nil
571- else throw("Strict value is not equal to itself.")
572- }
573- else [ScriptTransfer(de.caller, cJ, dA)]
574- (cb ++ dF)
575- }
576- else throw("Strict value is not equal to itself.")
577- }
578- else throw("Strict value is not equal to itself.")
579- }
580- else throw("Strict value is not equal to itself.")
581- }
582- else throw("Strict value is not equal to itself.")
583- }
584- }
585-
586-
587-
588-@Callable(de)
589-func putOneTkn (dH,dI,dJ,bd,dv) = {
590- let bu = aF()
591- let dx = valueOrErrorMessage(addressFromString(bu[x]), "Wr st addr")
592- let dy = valueOrErrorMessage(addressFromString(bu[y]), "Wr sl addr")
593- let dK = valueOrErrorMessage(addressFromString(bu[z]), "Wr gwx addr")
594- let dL = aB()
595- let bJ = dL[r]
596- let bK = dL[s]
597- let bL = parseIntValue(dL[t])
598- let bM = parseIntValue(dL[u])
599- let dM = valueOrElse(getString(this, aa()), "")
600- let bH = if ((dM == toString(de.caller)))
601- then de.originCaller
602- else de.caller
603- let dN = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
604- let dO = reentrantInvoke(dN, "ensureCanPutOneTkn", [toString(bH)], nil)
605- if ((dO == dO))
606- then if (if (if (if ((0 >= bd))
607- then true
608- else (0 >= dH))
609- then true
610- else (0 >= dI))
611- then true
612- else (0 >= dJ))
613- then throw("Wrong params")
614- else if ((size(de.payments) != 1))
615- then throw("1 pmnt expd")
616- else {
617- let df = value(de.payments[0])
618- let bF = toBase58String(value(df.assetId))
619- let ck = df.amount
620- if (if (if ((dH > ck))
621- then true
622- else (dI > ck))
623- then true
624- else (10000000 > ck))
625- then throw("Wrong pmt amt")
626- else {
627- let bP = aV(bJ)
628- let bR = aV(bK)
629- let dP = if ((bF == bJ))
630- then $Tuple6((bP - ck), bR, (ck - dH), dI, 0, 0)
631- else if ((bF == bK))
632- then $Tuple6(bP, (bR - ck), 0, 0, (ck - dI), dH)
633- else throw("wrong pmtAssetId")
634- let dQ = dP._1
635- let dR = dP._2
636- let dS = dP._3
637- let dT = dP._4
638- let dU = dP._5
639- let dV = dP._6
640- let bi = invoke(dK, "calcD", [toString(dQ), toString(dR), ay, g, h], nil)
641- let bh = invoke(dK, "calcD", [toString(toBigInt(((dQ + dS) - dV))), toString(toBigInt(((dR + dU) - dT))), ay, g, h], nil)
642- let dW = bg(parseBigIntValue(aq(bh)), parseBigIntValue(aq(bi)), f)
643- if ((dW == dW))
644- then {
645- let dX = dg(toString(de.caller), toBase58String(de.transactionId), AttachedPayment(fromBase58String(bJ), dH), AttachedPayment(fromBase58String(bK), dI), bd, true, true, ck, bF)
646- let dY = dX._2
647- let dA = dX._7
648- let cb = dX._9
649- let cK = dX._10
650- let cL = dX._11
651- let dZ = ba(toBigInt(dY), toBigInt(dJ), toBigInt(bd))
652- let cJ = toInt(dZ._2)
653- let dz = invoke(ax, "emit", [cJ], nil)
654- if ((dz == dz))
600+ let dO = if ((cP > 0))
601+ then invoke(dI, "put", nil, [AttachedPayment(bL, cP)])
602+ else nil
603+ if ((dO == dO))
655604 then {
656- let dB = {
657- let ar = dz
658- if ($isInstanceOf(ar, "Address"))
659- then {
660- let dC = ar
661- invoke(dC, "emit", [cJ], nil)
662- }
663- else unit
664- }
665- if ((dB == dB))
605+ let dP = if ((cQ > 0))
606+ then invoke(dI, "put", nil, [AttachedPayment(bM, cQ)])
607+ else nil
608+ if ((dP == dP))
666609 then {
667- let dD = if ((cK > 0))
668- then invoke(dy, "put", nil, [AttachedPayment(fromBase58String(bJ), cK)])
669- else nil
670- if ((dD == dD))
610+ let dQ = if (dF)
671611 then {
672- let dE = if ((cL > 0))
673- then invoke(dy, "put", nil, [AttachedPayment(fromBase58String(bK), cL)])
674- else nil
675- if ((dE == dE))
676- then {
677- let dF = if (dv)
678- then {
679- let dG = invoke(dx, "stake", nil, [AttachedPayment(dA, cJ)])
680- if ((dG == dG))
681- then nil
682- else throw("Strict value is not equal to itself.")
683- }
684- else [ScriptTransfer(de.caller, cJ, dA)]
685- (cb ++ dF)
686- }
612+ let dR = invoke(dH, "stake", nil, [AttachedPayment(bK, cO)])
613+ if ((dR == dR))
614+ then nil
687615 else throw("Strict value is not equal to itself.")
688616 }
689- else throw("Strict value is not equal to itself.")
617+ else [ScriptTransfer(dj.caller, cO, bK)]
618+ (cf ++ dQ)
690619 }
691620 else throw("Strict value is not equal to itself.")
692621 }
693622 else throw("Strict value is not equal to itself.")
694623 }
695- else throw("Strict value is not equal to itself.")
696- }
697- }
698- else throw("Strict value is not equal to itself.")
699- }
700-
701-
702-
703-@Callable(de)
704-func putForFree (ea) = if ((0 > ea))
705- then throw("Wrong slpg")
706- else if ((size(de.payments) != 2))
707- then throw("2 pmnts expd")
708- else {
709- let dX = dg(toString(de.caller), toBase58String(de.transactionId), AttachedPayment(value(de.payments[0]).assetId, value(de.payments[0]).amount), de.payments[1], ea, false, false, 0, "")
710- dX._9
711- }
712-
713-
714-
715-@Callable(de)
716-func get () = {
717- let cw = dd(de)
718- let eb = cw._1
719- let ca = cw._2
720- let ck = cw._3
721- let bF = cw._4
722- let cb = cw._5
723- let ec = invoke(ax, "burn", [ck], [AttachedPayment(bF, ck)])
724- if ((ec == ec))
725- then cb
726- else throw("Strict value is not equal to itself.")
727- }
728-
729-
730-
731-@Callable(de)
732-func getOneTkn (ed,ee,ef,eg,bd) = if ((size(de.payments) != 1))
733- then throw("1 pmnt expd")
734- else {
735- let bu = aB()
736- let bI = bu[q]
737- let bJ = bu[r]
738- let bK = bu[s]
739- let bL = parseIntValue(bu[t])
740- let bM = parseIntValue(bu[u])
741- let bN = bu[p]
742- let dw = aF()
743- let dK = valueOrErrorMessage(addressFromString(dw[z]), "Wr sl addr")
744- let df = value(de.payments[0])
745- let dM = valueOrElse(getString(this, aa()), "")
746- let bH = if ((dM == toString(de.caller)))
747- then de.originCaller
748- else de.caller
749- let bE = toBase58String(de.transactionId)
750- let bF = value(df.assetId)
751- let ck = df.amount
752- let dN = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
753- let dO = reentrantInvoke(dN, "ensureCanGetOneTkn", [toString(bH)], nil)
754- if ((dO == dO))
755- then if ((1000000000 > ck))
756- then throw("Min pmt 10 LP")
757- else if (if (if ((0 > bd))
758- then true
759- else (0 > ed))
760- then true
761- else (0 > ef))
762- then throw("Wrong params")
763- else if ((bI != toBase58String(bF)))
764- then throw("Wrong LP")
765- else {
766- let cw = bD(toBase58String(de.transactionId), toBase58String(bF), ck, de.caller)
767- let eh = cw._1
768- let ei = cw._2
769- let bP = aV(bJ)
770- let bR = aV(bK)
771- let ej = if ((eg == bJ))
772- then $Tuple7((bP - eh), (bR - ei), ed, ei, 0, 0, (eh + ed))
773- else if ((eg == bK))
774- then $Tuple7((bP - eh), (bR - ei), 0, 0, ed, eh, (ei + ed))
775- else throw("wrong outAssetId")
776- let dQ = ej._1
777- let dR = ej._2
778- let dS = ej._3
779- let dT = ej._4
780- let dU = ej._5
781- let dV = ej._6
782- let ek = ej._7
783- if (if ((0 > dS))
784- then true
785- else (0 > dU))
786- then throw("Wrong calc")
787- else {
788- let bi = invoke(dK, "calcD", [toString(dQ), toString(dR), ay, g, h], nil)
789- let bh = invoke(dK, "calcD", [toString(((dQ - dS) + dV)), toString(((dR + dT) - dU)), ay, g, h], nil)
790- let dW = bg(parseBigIntValue(aq(bh)), parseBigIntValue(aq(bi)), f)
791- if ((dW == dW))
792- then {
793- let el = ba(toBigInt(ek), toBigInt(ef), toBigInt(bd))
794- if ((el == el))
795- then {
796- let em = if ((eg == bJ))
797- then $Tuple2(toInt(el._2), 0)
798- else $Tuple2(0, toInt(el._2))
799- let en = em._1
800- let eo = em._2
801- let ep = aX(B(bR, bM), B(bP, bL))
802- let eq = E(ep, a)
803- let cb = [ScriptTransfer(bH, (en + eo), if ((eg == "WAVES"))
804- then unit
805- else fromBase58String(eg)), StringEntry(W(toString(bH), bE), aR(en, eo, ck, eq, height, lastBlock.timestamp)), IntegerEntry(P(), eq), IntegerEntry(Q(height, lastBlock.timestamp), eq)]
806- if ((cb == cb))
807- then {
808- let er = invoke(ax, "burn", [ck], [AttachedPayment(bF, ck)])
809- if ((er == er))
810- then cb
811- else throw("Strict value is not equal to itself.")
812- }
813- else throw("Strict value is not equal to itself.")
814- }
815- else throw("Strict value is not equal to itself.")
816- }
817- else throw("Strict value is not equal to itself.")
818- }
819- }
820- else throw("Strict value is not equal to itself.")
821- }
822-
823-
824-
825-@Callable(de)
826-func getNoLess (es,et) = {
827- let cw = dd(de)
828- let bZ = cw._1
829- let ca = cw._2
830- let ck = cw._3
831- let bF = cw._4
832- let cb = cw._5
833- if ((es > bZ))
834- then throw(((("Failed: " + toString(bZ)) + " < ") + toString(es)))
835- else if ((et > ca))
836- then throw(((("Failed: " + toString(ca)) + " < ") + toString(et)))
837- else {
838- let eu = invoke(ax, "burn", [ck], [AttachedPayment(bF, ck)])
839- if ((eu == eu))
840- then cb
841- else throw("Strict value is not equal to itself.")
842- }
843- }
844-
845-
846-
847-@Callable(de)
848-func unstakeAndGet (ev) = {
849- let ew = if ((size(de.payments) != 0))
850- then throw("No pmnts expd")
851- else true
852- if ((ew == ew))
853- then {
854- let bu = aB()
855- let ex = aF()
856- let dA = fromBase58String(bu[q])
857- let ey = valueOrErrorMessage(addressFromString(ex[x]), "Wr st addr")
858- let ez = invoke(ey, "unstake", [toBase58String(dA), ev], nil)
859- if ((ez == ez))
860- then {
861- let cw = bD(toBase58String(de.transactionId), toBase58String(dA), ev, de.caller)
862- let bN = parseIntValue(cw._9)
863- let cb = cw._10
864- let eA = if (if (az())
865- then true
866- else (bN == n))
867- then throw(("Blocked: " + toString(bN)))
868- else true
869- if ((eA == eA))
870- then {
871- let eB = invoke(ax, "burn", [ev], [AttachedPayment(dA, ev)])
872- if ((eB == eB))
873- then cb
874624 else throw("Strict value is not equal to itself.")
875625 }
876626 else throw("Strict value is not equal to itself.")
877627 }
878628 else throw("Strict value is not equal to itself.")
879629 }
880630 else throw("Strict value is not equal to itself.")
881631 }
882632
883633
884634
885-@Callable(de)
886-func activate (eC,eD) = if ((toString(de.caller) != toString(ax)))
887- then throw("denied")
888- else $Tuple2([StringEntry(X(), eC), StringEntry(Y(), eD)], "success")
889-
890-
891-
892-@Callable(de)
893-func setS (eE,eA) = if ((toString(de.caller) != at(this, aa())))
894- then dm
895- else [StringEntry(eE, eA)]
896-
897-
898-
899-@Callable(de)
900-func setI (eE,eA) = if ((toString(de.caller) != at(this, aa())))
901- then dm
902- else [IntegerEntry(eE, eA)]
903-
904-
905-
906-@Callable(de)
907-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aB())
908-
909-
910-
911-@Callable(de)
912-func getAccBalanceWrapperREADONLY (aW) = $Tuple2(nil, aV(aW))
913-
914-
915-
916-@Callable(de)
917-func calcPricesWrapperREADONLY (bo,bp,bt) = {
918- let eF = bs(bo, bp, bt)
919- $Tuple2(nil, [toString(eF[0]), toString(eF[1]), toString(eF[2])])
635+@Callable(dj)
636+func putOneTkn (dS,dT,bf,bg,dF) = {
637+ let bw = aI()
638+ let dH = valueOrErrorMessage(addressFromString(bw[y]), "Wrong staking contract")
639+ let dI = valueOrErrorMessage(addressFromString(bw[z]), "Wrong slippage contract")
640+ let dU = valueOrErrorMessage(addressFromString(bw[A]), "Wrong gwx reward contract")
641+ let dV = aE()
642+ let bL = dV[s]
643+ let bM = dV[t]
644+ let bN = parseIntValue(dV[u])
645+ let bO = parseIntValue(dV[v])
646+ let dW = valueOrElse(getString(this, ab()), "")
647+ let bJ = if ((dW == toString(dj.caller)))
648+ then dj.originCaller
649+ else dj.caller
650+ if (if (if (if ((0 >= bg))
651+ then true
652+ else (0 >= dS))
653+ then true
654+ else (0 >= dT))
655+ then true
656+ else (0 >= bf))
657+ then am("Wrong params")
658+ else if ((size(dj.payments) != 1))
659+ then am("1 payment expected")
660+ else {
661+ let dl = value(dj.payments[0])
662+ let bH = toBase58String(value(dl.assetId))
663+ let dX = dl.amount
664+ let dY = dq(dX)
665+ let cp = dY._1
666+ let dZ = dY._2
667+ if (if (if ((dS > cp))
668+ then true
669+ else (dT > cp))
670+ then true
671+ else (10000000 > cp))
672+ then am("wrong payment amount")
673+ else {
674+ let bT = aY(bL)
675+ let bV = aY(bM)
676+ let ea = if ((bH == bL))
677+ then $Tuple6((bT - cp), bV, (cp - dS), dT, 0, 0)
678+ else if ((bH == bM))
679+ then $Tuple6(bT, (bV - cp), 0, 0, (cp - dT), dS)
680+ else am("wrong paymentAssetId")
681+ let eb = ea._1
682+ let ec = ea._2
683+ let ed = ea._3
684+ let ee = ea._4
685+ let ef = ea._5
686+ let eg = ea._6
687+ let bl = invoke(dU, "calcD", [toString(eb), toString(ec), aA, h, i], nil)
688+ let bk = invoke(dU, "calcD", [toString(toBigInt(((eb + ed) - eg))), toString(toBigInt(((ec + ef) - ee))), aA, h, i], nil)
689+ let eh = bj(parseBigIntValue(as(bk)), parseBigIntValue(as(bl)), g)
690+ if ((eh == eh))
691+ then {
692+ let dL = dm(toString(dj.caller), toBase58String(dj.transactionId), AttachedPayment(fromBase58String(bL), dS), AttachedPayment(fromBase58String(bM), dT), bg, true, true, cp, bH)
693+ let be = dL._2
694+ let bK = dL._7
695+ let cf = dL._9
696+ let cP = dL._10
697+ let cQ = dL._11
698+ let ei = bd(toBigInt(be), toBigInt(bf), toBigInt(bg))
699+ let cO = toInt(ei._2)
700+ let ej = invoke(az, "emit", [cO], nil)
701+ if ((ej == ej))
702+ then {
703+ let dM = {
704+ let at = ej
705+ if ($isInstanceOf(at, "Address"))
706+ then {
707+ let dN = at
708+ invoke(dN, "emit", [cO], nil)
709+ }
710+ else unit
711+ }
712+ if ((dM == dM))
713+ then {
714+ let dO = if ((cP > 0))
715+ then invoke(dI, "put", nil, [AttachedPayment(fromBase58String(bL), cP)])
716+ else nil
717+ if ((dO == dO))
718+ then {
719+ let dP = if ((cQ > 0))
720+ then invoke(dI, "put", nil, [AttachedPayment(fromBase58String(bM), cQ)])
721+ else nil
722+ if ((dP == dP))
723+ then {
724+ let dQ = if (dF)
725+ then {
726+ let dR = invoke(dH, "stake", nil, [AttachedPayment(bK, cO)])
727+ if ((dR == dR))
728+ then nil
729+ else throw("Strict value is not equal to itself.")
730+ }
731+ else [ScriptTransfer(dj.caller, cO, bK)]
732+ let ek = if ((dZ > 0))
733+ then [ScriptTransfer(aD, dZ, fromBase58String(bH))]
734+ else nil
735+ ((cf ++ dQ) ++ ek)
736+ }
737+ else throw("Strict value is not equal to itself.")
738+ }
739+ else throw("Strict value is not equal to itself.")
740+ }
741+ else throw("Strict value is not equal to itself.")
742+ }
743+ else throw("Strict value is not equal to itself.")
744+ }
745+ else throw("Strict value is not equal to itself.")
746+ }
747+ }
920748 }
921749
922750
923751
924-@Callable(de)
925-func fromX18WrapperREADONLY (F,eG) = $Tuple2(nil, E(parseBigIntValue(F), eG))
752+@Callable(dj)
753+func putForFree (el) = if ((0 > el))
754+ then am("wrong slippage")
755+ else if ((size(dj.payments) != 2))
756+ then am("2 payments expected")
757+ else {
758+ let dL = dm(toString(dj.caller), toBase58String(dj.transactionId), AttachedPayment(value(dj.payments[0]).assetId, value(dj.payments[0]).amount), dj.payments[1], el, false, false, 0, "")
759+ dL._9
760+ }
926761
927762
928763
929-@Callable(de)
930-func toX18WrapperREADONLY (C,D) = $Tuple2(nil, toString(B(C, D)))
764+@Callable(dj)
765+func get () = {
766+ let cy = di(dj)
767+ let em = cy._1
768+ let ce = cy._2
769+ let cp = cy._3
770+ let bH = cy._4
771+ let cf = cy._5
772+ let en = invoke(az, "burn", [cp], [AttachedPayment(bH, cp)])
773+ if ((en == en))
774+ then cf
775+ else throw("Strict value is not equal to itself.")
776+ }
931777
932778
933779
934-@Callable(de)
935-func calcPriceBigIntWrapperREADONLY (aY,aZ) = $Tuple2(nil, toString(aX(parseBigIntValue(aY), parseBigIntValue(aZ))))
780+@Callable(dj)
781+func getOneTkn (eo,ep,eq,er,bg) = if ((size(dj.payments) != 1))
782+ then am("1 payment expected")
783+ else {
784+ let bw = aE()
785+ let bK = bw[r]
786+ let bL = bw[s]
787+ let bM = bw[t]
788+ let bN = parseIntValue(bw[u])
789+ let bO = parseIntValue(bw[v])
790+ let bP = bw[q]
791+ let dG = aI()
792+ let dU = valueOrErrorMessage(addressFromString(dG[A]), "Wrong gwxRewardContract address")
793+ let dl = value(dj.payments[0])
794+ let dW = valueOrElse(getString(this, ab()), "")
795+ let bJ = if ((dW == toString(dj.caller)))
796+ then dj.originCaller
797+ else dj.caller
798+ let bG = toBase58String(dj.transactionId)
799+ let bH = value(dl.assetId)
800+ let cp = dl.amount
801+ if ((1000000000 > cp))
802+ then am("Min payment 10 LP")
803+ else if (if (if ((0 > bg))
804+ then true
805+ else (0 > eo))
806+ then true
807+ else (0 > eq))
808+ then am("Wrong params")
809+ else if ((bK != toBase58String(bH)))
810+ then am("Wrong LP")
811+ else {
812+ let cy = bF(toBase58String(dj.transactionId), toBase58String(bH), cp, dj.caller)
813+ let es = cy._1
814+ let et = cy._2
815+ let bT = aY(bL)
816+ let bV = aY(bM)
817+ let eu = if ((er == bL))
818+ then $Tuple7((bT - es), (bV - et), eo, et, 0, 0, (es + eo))
819+ else if ((er == bM))
820+ then $Tuple7((bT - es), (bV - et), 0, 0, eo, es, (et + eo))
821+ else am("wrong outAssetId")
822+ let eb = eu._1
823+ let ec = eu._2
824+ let ed = eu._3
825+ let ee = eu._4
826+ let ef = eu._5
827+ let eg = eu._6
828+ let ev = eu._7
829+ if (if ((0 > ed))
830+ then true
831+ else (0 > ef))
832+ then am("Wrong calc")
833+ else {
834+ let bl = invoke(dU, "calcD", [toString(eb), toString(ec), aA, h, i], nil)
835+ let bk = invoke(dU, "calcD", [toString(((eb - ed) + eg)), toString(((ec + ee) - ef)), aA, h, i], nil)
836+ let eh = bj(parseBigIntValue(as(bk)), parseBigIntValue(as(bl)), g)
837+ if ((eh == eh))
838+ then {
839+ let ew = bd(toBigInt(ev), toBigInt(eq), toBigInt(bg))
840+ if ((ew == ew))
841+ then {
842+ let ex = if ((er == bL))
843+ then $Tuple2(toInt(ew._2), 0)
844+ else $Tuple2(0, toInt(ew._2))
845+ let ey = ex._1
846+ let ez = ex._2
847+ let eA = (ey + ez)
848+ let eB = dq(eA)
849+ let eC = eB._1
850+ let dZ = eB._2
851+ let eD = if ((er == "WAVES"))
852+ then unit
853+ else fromBase58String(er)
854+ let ek = if ((dZ > 0))
855+ then [ScriptTransfer(aD, dZ, eD)]
856+ else nil
857+ let bS = if ((bN >= bO))
858+ then bN
859+ else bO
860+ if ((bS == bS))
861+ then {
862+ let eE = ba(C(bV, bS), C(bT, bS))
863+ let eF = F(eE, a)
864+ let cf = [ScriptTransfer(bJ, eC, eD), StringEntry(X(toString(bJ), bG), aU(ey, ez, cp, eF, height, lastBlock.timestamp)), IntegerEntry(Q(), eF), IntegerEntry(R(height, lastBlock.timestamp), eF)]
865+ if ((cf == cf))
866+ then {
867+ let eG = invoke(az, "burn", [cp], [AttachedPayment(bH, cp)])
868+ if ((eG == eG))
869+ then (cf ++ ek)
870+ else throw("Strict value is not equal to itself.")
871+ }
872+ else throw("Strict value is not equal to itself.")
873+ }
874+ else throw("Strict value is not equal to itself.")
875+ }
876+ else throw("Strict value is not equal to itself.")
877+ }
878+ else throw("Strict value is not equal to itself.")
879+ }
880+ }
881+ }
936882
937883
938884
939-@Callable(de)
940-func estimatePutOperationWrapperREADONLY (bE,bd,cd,ce,cf,cg,eH,ch,ci) = $Tuple2(nil, cc(bE, bd, cd, ce, cf, cg, eH, ch, ci, false, 0, ""))
885+@Callable(dj)
886+func getNoLess (eH,eI) = {
887+ let cy = di(dj)
888+ let cd = cy._1
889+ let ce = cy._2
890+ let cp = cy._3
891+ let bH = cy._4
892+ let cf = cy._5
893+ let eJ = if ((cd >= eH))
894+ then true
895+ else am(((("Failed: " + toString(cd)) + " < ") + toString(eH)))
896+ if ((eJ == eJ))
897+ then {
898+ let eK = if ((ce >= eI))
899+ then true
900+ else am(((("Failed: " + toString(ce)) + " < ") + toString(eI)))
901+ if ((eK == eK))
902+ then {
903+ let eL = invoke(az, "burn", [cp], [AttachedPayment(bH, cp)])
904+ if ((eL == eL))
905+ then cf
906+ else throw("Strict value is not equal to itself.")
907+ }
908+ else throw("Strict value is not equal to itself.")
909+ }
910+ else throw("Strict value is not equal to itself.")
911+ }
941912
942913
943914
944-@Callable(de)
945-func estimateGetOperationWrapperREADONLY (bE,eI,bG,eH) = {
946- let cw = bD(bE, eI, bG, addressFromStringValue(eH))
947- $Tuple2(nil, $Tuple10(cw._1, cw._2, cw._3, cw._4, cw._5, cw._6, cw._7, toString(cw._8), cw._9, cw._10))
915+@Callable(dj)
916+func unstakeAndGet (dr) = {
917+ let dk = if ((size(dj.payments) != 0))
918+ then am("no payments expected")
919+ else true
920+ if ((dk == dk))
921+ then {
922+ let bw = aE()
923+ let eM = aI()
924+ let bK = fromBase58String(bw[r])
925+ let eN = valueOrErrorMessage(addressFromString(eM[y]), "wrong")
926+ let eO = invoke(eN, "unstake", [toBase58String(bK), dr], nil)
927+ if ((eO == eO))
928+ then {
929+ let cy = bF(toBase58String(dj.transactionId), toBase58String(bK), dr, dj.caller)
930+ let bP = parseIntValue(cy._9)
931+ let cf = cy._10
932+ let eP = if (if (aB())
933+ then true
934+ else (bP == o))
935+ then am(("Blocked: " + toString(bP)))
936+ else true
937+ if ((eP == eP))
938+ then {
939+ let eQ = invoke(az, "burn", [dr], [AttachedPayment(bK, dr)])
940+ if ((eQ == eQ))
941+ then cf
942+ else throw("Strict value is not equal to itself.")
943+ }
944+ else throw("Strict value is not equal to itself.")
945+ }
946+ else throw("Strict value is not equal to itself.")
947+ }
948+ else throw("Strict value is not equal to itself.")
948949 }
949950
950951
951-@Verifier(eJ)
952-func eK () = {
953- let ar = eJ
954- if ($isInstanceOf(ar, "Order"))
952+
953+@Callable(dj)
954+func activate (eR,eS) = if ((toString(dj.caller) != toString(az)))
955+ then am("denied")
956+ else $Tuple2([StringEntry(Y(), eR), StringEntry(Z(), eS)], "success")
957+
958+
959+
960+@Callable(dj)
961+func setS (eT,eP) = if ((toString(dj.caller) != av(this, ab())))
962+ then dw
963+ else [StringEntry(eT, eP)]
964+
965+
966+
967+@Callable(dj)
968+func setI (eT,eP) = if ((toString(dj.caller) != av(this, ab())))
969+ then dw
970+ else [IntegerEntry(eT, eP)]
971+
972+
973+
974+@Callable(dj)
975+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aE())
976+
977+
978+
979+@Callable(dj)
980+func getAccBalanceWrapperREADONLY (aZ) = $Tuple2(nil, aY(aZ))
981+
982+
983+
984+@Callable(dj)
985+func calcPricesWrapperREADONLY (bq,br,bv) = {
986+ let eU = bu(bq, br, bv)
987+ $Tuple2(nil, [toString(eU[0]), toString(eU[1]), toString(eU[2])])
988+ }
989+
990+
991+
992+@Callable(dj)
993+func fromX18WrapperREADONLY (G,eV) = $Tuple2(nil, F(parseBigIntValue(G), eV))
994+
995+
996+
997+@Callable(dj)
998+func toX18WrapperREADONLY (D,E) = $Tuple2(nil, toString(C(D, E)))
999+
1000+
1001+
1002+@Callable(dj)
1003+func calcPriceBigIntWrapperREADONLY (bb,bc) = $Tuple2(nil, toString(ba(parseBigIntValue(bb), parseBigIntValue(bc))))
1004+
1005+
1006+
1007+@Callable(dj)
1008+func estimatePutOperationWrapperREADONLY (bG,bg,ci,eW,ck,eX,eY,cm,cn) = $Tuple2(nil, cg(bG, bg, ci, eW, ck, eX, eY, cm, cn, false, 0, ""))
1009+
1010+
1011+
1012+@Callable(dj)
1013+func estimateGetOperationWrapperREADONLY (bG,eZ,bI,eY) = {
1014+ let cy = bF(bG, eZ, bI, addressFromStringValue(eY))
1015+ $Tuple2(nil, $Tuple10(cy._1, cy._2, cy._3, cy._4, cy._5, cy._6, cy._7, toString(cy._8), cy._9, cy._10))
1016+ }
1017+
1018+
1019+@Verifier(fa)
1020+func fb () = {
1021+ let at = fa
1022+ if ($isInstanceOf(at, "Order"))
9551023 then {
956- let cR = ar
957- let eL = aA()
958- let an = cQ(cR)
959- let eM = sigVerify(cR.bodyBytes, cR.proofs[0], cR.senderPublicKey)
960- let eN = sigVerify(cR.bodyBytes, cR.proofs[1], eL)
961- if (if (if (an)
962- then eM
1024+ let cW = at
1025+ let fc = aC()
1026+ let ap = cV(cW)
1027+ let fd = sigVerify(cW.bodyBytes, cW.proofs[0], cW.senderPublicKey)
1028+ let fe = sigVerify(cW.bodyBytes, cW.proofs[1], fc)
1029+ if (if (if (ap)
1030+ then fd
9631031 else false)
964- then eN
1032+ then fe
9651033 else false)
9661034 then true
967- else am(an, eM, eN)
1035+ else ao(ap, fd, fe)
9681036 }
9691037 else {
970- let eO = {
971- let eP = dj()
972- if ($isInstanceOf(eP, "ByteVector"))
1038+ let ff = {
1039+ let fg = dt()
1040+ if ($isInstanceOf(fg, "ByteVector"))
9731041 then {
974- let do = eP
975- do
1042+ let dy = fg
1043+ dy
9761044 }
977- else if ($isInstanceOf(eP, "Unit"))
978- then eJ.senderPublicKey
1045+ else if ($isInstanceOf(fg, "Unit"))
1046+ then fa.senderPublicKey
9791047 else throw("Match error")
9801048 }
981- sigVerify(eJ.bodyBytes, eJ.proofs[0], eO)
1049+ sigVerify(fa.bodyBytes, fa.proofs[0], ff)
9821050 }
9831051 }
9841052

github/deemru/w8io/c3f4982 
186.52 ms