tx · 37j5GHYvnciKjeiEYLjeAJ3Pkf7TD5LQjEGmea7NEx3c
3MxZ7YNAqigXR5jrgvpb48Uc6B29ouDzQyN: -0.03700000 Waves
2023.06.24 13:14 [2636562] smart account 3MxZ7YNAqigXR5jrgvpb48Uc6B29ouDzQyN > SELF 0.00000000 Waves
{
"type": 13,
"id": "37j5GHYvnciKjeiEYLjeAJ3Pkf7TD5LQjEGmea7NEx3c",
"fee": 3700000,
"feeAssetId": null,
"timestamp": 1687601680146,
"version": 2,
"chainId": 84,
"sender": "3MxZ7YNAqigXR5jrgvpb48Uc6B29ouDzQyN",
"senderPublicKey": "HHCdafdi3D2htEYJw8cBoNYC8w76euLWKYENK4kanmGM",
"proofs": [
"PNmMSkZ3sE7Turzau4otcqftdvkK4JoN1UmVZgWYjujoFu7nn6zoEowMGrVHZu8mVjcunSec5XzZMpfLMis3ihb"
],
"script": "base64:BgJBCAISBQoDAQEEEgUKAwgIARIAEgMKAQESABIAEgASAwoBARIDCgEBEgMKAQESABIAEgASAwoBCBIDCgEIEgMKAQhlAA1rX3RvdGFsU3VwcGx5Ag1rX3RvdGFsU3VwcGx5AA9rX3Jld2FyZEJhbGFuY2UCD2tfcmV3YXJkQmFsYW5jZQAPa19sb2NrZWRCYWxhbmNlAg9rX2xvY2tlZEJhbGFuY2UADWtfZnJlZUJhbGFuY2UCDWtfZnJlZUJhbGFuY2UAD2tfZXhjZXNzQmFsYW5jZQIPa19leGNlc3NCYWxhbmNlAAxrX3ZhdWx0QXNzZXQCDGtfdmF1bHRBc3NldAAUa192YXVsdEFzc2V0RGVjaW1hbHMCFGtfdmF1bHRBc3NldERlY2ltYWxzABRrX21heFNwb3RVdGlsaXphdGlvbgIUa19tYXhTcG90VXRpbGl6YXRpb24AE2tfd2l0aGRyYXdQZXJQZXJpb2QCE2tfd2l0aGRyYXdQZXJQZXJpb2QAE2tfd2l0aGRyYXdVbmxpbWl0ZWQCE2tfd2l0aGRyYXdVbmxpbWl0ZWQABmtfcmF0ZQIGa19yYXRlABBrX2xhc3RVcGRhdGVUaW1lAhBrX2xhc3RVcGRhdGVUaW1lABZrX3Jld2FyZFBlclRva2VuU3RvcmVkAhZrX3Jld2FyZFBlclRva2VuU3RvcmVkAAxrX3Jld2FyZFJhdGUCDGtfcmV3YXJkUmF0ZQAOa19wZXJpb2RGaW5pc2gCDmtfcGVyaW9kRmluaXNoABRrX3VzZXJSZXdhcmRQZXJUb2tlbgIUa191c2VyUmV3YXJkUGVyVG9rZW4ADGtfdXNlclJld2FyZAIMa191c2VyUmV3YXJkAAlrX2JhbGFuY2UCCWtfYmFsYW5jZQAOa19hdmVyYWdlX3JhdGUCDmtfYXZlcmFnZV9yYXRlABBrX3dpdGhkcmF3X2xpbWl0AhBrX3dpdGhkcmF3X2xpbWl0ABRrX2xhc3Rfd2l0aGRyYXdfZGF0ZQIUa19sYXN0X3dpdGhkcmF3X2RhdGUAFGtfd2l0aGRyYXdfaW5fcGVyaW9kAhRrX3dpdGhkcmF3X2luX3BlcmlvZAANa19pbml0aWFsaXplZAINa19pbml0aWFsaXplZAAUa19jb29yZGluYXRvckFkZHJlc3MCFGtfY29vcmRpbmF0b3JBZGRyZXNzAAVrX2FtbQIFa19hbW0AEmtfZ292ZXJuYW5jZV9hc3NldAILa19nb3ZfYXNzZXQADWtfcXVvdGVfYXNzZXQCDWtfcXVvdGVfYXNzZXQAD2tfYWRtaW5fYWRkcmVzcwIPa19hZG1pbl9hZGRyZXNzABFrX21hbmFnZXJfYWRkcmVzcwIRa19tYW5hZ2VyX2FkZHJlc3MADmtfc3BvdF9hZGRyZXNzAg5rX3Nwb3RfYWRkcmVzcwAUa19jb2xsYXRlcmFsX2FkZHJlc3MCFGtfY29sbGF0ZXJhbF9hZGRyZXNzAQ50b0NvbXBvc2l0ZUtleQIEX2tleQhfYWRkcmVzcwkArAICCQCsAgIFBF9rZXkCAV8FCF9hZGRyZXNzAQtjb29yZGluYXRvcgAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUUa19jb29yZGluYXRvckFkZHJlc3MCE0Nvb3JkaW5hdG9yIG5vdCBzZXQCG0Nvb3JkaW5hdG9yIGFkZHJlc3MgaW52YWxpZAEMYWRtaW5BZGRyZXNzAAkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgkBC2Nvb3JkaW5hdG9yAAUPa19hZG1pbl9hZGRyZXNzAhVBZG1pbiBhZGRyZXNzIG5vdCBzZXQBC2lzV2hpdGVsaXN0AQhfYWRkcmVzcwkBC3ZhbHVlT3JFbHNlAgkAmwgCCQELY29vcmRpbmF0b3IACQEOdG9Db21wb3NpdGVLZXkCBQVrX2FtbQUIX2FkZHJlc3MHAQtzcG90QWRkcmVzcwAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgkBC2Nvb3JkaW5hdG9yAAUOa19zcG90X2FkZHJlc3MCFFNwb3QgYWRkcmVzcyBub3Qgc2V0AhRTcG90IGFkZHJlc3MgaW52YWxpZAEPZ292ZXJuYW5jZUFzc2V0AAkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgkBC2Nvb3JkaW5hdG9yAAUSa19nb3Zlcm5hbmNlX2Fzc2V0AhhHb3Zlcm5hbmNlIGFzc2V0IG5vdCBzZXQBCnF1b3RlQXNzZXQACQDZBAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFDWtfcXVvdGVfYXNzZXQBDXZhdWx0QXNzZXRTdHIACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUMa192YXVsdEFzc2V0AhNWYXVsdCBhc3NldCBub3Qgc2V0AQp2YXVsdEFzc2V0AAQLX2Fzc2V0SWRTdHIJAQ12YXVsdEFzc2V0U3RyAAMJAAACBQtfYXNzZXRJZFN0cgIFV0FWRVMFBHVuaXQJANkEAQULX2Fzc2V0SWRTdHIBEnZhdWx0QXNzZXREZWNpbWFscwAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzBRRrX3ZhdWx0QXNzZXREZWNpbWFscwIcVmF1bHQgYXNzZXQgZGVjaW1hbHMgbm90IHNldAEObWFuYWdlckFkZHJlc3MACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIJAQtjb29yZGluYXRvcgAFEWtfbWFuYWdlcl9hZGRyZXNzAhdNYW5hZ2VyIGFkZHJlc3Mgbm90IHNldAIXTWFuYWdlciBhZGRyZXNzIGludmFsaWQADERFQ0lNQUxfVU5JVAkAaAIAAQkAaAIJAGgCCQBoAgkAaAIJAGgCCQBoAgkAaAIACgAKAAoACgAKAAoACgAKAAhEVVJBVElPTgkAaAIJAGgCCQBoAgAHADwAPAAYAApOT19BRERSRVNTAgAACU5PX1NUQUtFUgAAARFhc3NldEZyb21EZWNpbWFscwEHX2Ftb3VudAQNYXNzZXREZWNpbWFscwkBEnZhdWx0QXNzZXREZWNpbWFscwADCQAAAgUNYXNzZXREZWNpbWFscwAGCQBpAgUHX2Ftb3VudABkAwkAAAIFDWFzc2V0RGVjaW1hbHMACAUHX2Ftb3VudAkAAgECFkludmFsaWQgYXNzZXQgZGVjaW1hbHMBD2Fzc2V0VG9EZWNpbWFscwEHX2Ftb3VudAQNYXNzZXREZWNpbWFscwkBEnZhdWx0QXNzZXREZWNpbWFscwADCQAAAgUNYXNzZXREZWNpbWFscwAGCQBoAgUHX2Ftb3VudABkAwkAAAIFDWFzc2V0RGVjaW1hbHMACAUHX2Ftb3VudAkAAgECFkludmFsaWQgYXNzZXQgZGVjaW1hbHMBBGRpdmQCAl94Al95CQBuBAUCX3gFDERFQ0lNQUxfVU5JVAUCX3kFCEhBTEZFVkVOAQRtdWxkAgJfeAJfeQkAbgQFAl94BQJfeQUMREVDSU1BTF9VTklUBQhIQUxGRVZFTgEDYWJzAQJfeAMJAGYCBQJfeAAABQJfeAkBAS0BBQJfeAEEbWludgICX3gCX3kDCQBmAgUCX3gFAl95BQJfeQUCX3gAD1dJVEhEUkFXX1BFUklPRAkAaAIAgKMFAOgHABNXSVRIRFJBV19QRVJfUEVSSU9ECQEEZGl2ZAIJAGgCAAEFDERFQ0lNQUxfVU5JVAkAaAIABAUMREVDSU1BTF9VTklUAQNpbnQBAWsJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzBQFrCQCsAgICDW5vIHZhbHVlIGZvciAFAWsBBGludDABAWsJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUBawAAAQRpbnQxAQFrCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAWsFDERFQ0lNQUxfVU5JVAEFaW50T3ICAWsDdmFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAWsFA3ZhbAELdG90YWxTdXBwbHkACQEEaW50MAEFDWtfdG90YWxTdXBwbHkBBHJhdGUACQEEaW50MQEFBmtfcmF0ZQEJYmFsYW5jZU9mAQdfc3Rha2VyCQEEaW50MAEJAQ50b0NvbXBvc2l0ZUtleQIFCWtfYmFsYW5jZQUHX3N0YWtlcgELYXZlcmFnZVJhdGUBB19zdGFrZXIJAQRpbnQwAQkBDnRvQ29tcG9zaXRlS2V5AgUOa19hdmVyYWdlX3JhdGUFB19zdGFrZXIBDXdpdGhkcmF3TGltaXQBB19zdGFrZXIJAQRpbnQwAQkBDnRvQ29tcG9zaXRlS2V5AgUQa193aXRoZHJhd19saW1pdAUHX3N0YWtlcgERd2l0aGRyYXduSW5QZXJpb2QBB19zdGFrZXIJAQRpbnQwAQkBDnRvQ29tcG9zaXRlS2V5AgUUa193aXRoZHJhd19pbl9wZXJpb2QFB19zdGFrZXIBEWxhc3RXaXRoZHJhd25EYXRlAQdfc3Rha2VyCQEEaW50MAEJAQ50b0NvbXBvc2l0ZUtleQIFFGtfbGFzdF93aXRoZHJhd19kYXRlBQdfc3Rha2VyAQtmcmVlQmFsYW5jZQAJAQRpbnQwAQUNa19mcmVlQmFsYW5jZQENbG9ja2VkQmFsYW5jZQAJAQRpbnQwAQUPa19sb2NrZWRCYWxhbmNlAQ1leGNlc3NCYWxhbmNlAAkBBGludDABBQ9rX2V4Y2Vzc0JhbGFuY2UBFHJld2FyZFBlclRva2VuU3RvcmVkAAkBBGludDABBRZrX3Jld2FyZFBlclRva2VuU3RvcmVkAQ5sYXN0VXBkYXRlVGltZQAJAQRpbnQwAQUQa19sYXN0VXBkYXRlVGltZQEKcmV3YXJkUmF0ZQAJAQRpbnQwAQUMa19yZXdhcmRSYXRlAQxwZXJpb2RGaW5pc2gACQEEaW50MAEFDmtfcGVyaW9kRmluaXNoAQ1yZXdhcmRCYWxhbmNlAAkBBGludDABBQ9rX3Jld2FyZEJhbGFuY2UBB3Jld2FyZHMBB19zdGFrZXIJAQRpbnQwAQkBDnRvQ29tcG9zaXRlS2V5AgUMa191c2VyUmV3YXJkBQdfc3Rha2VyARZ1c2VyUmV3YXJkUGVyVG9rZW5QYWlkAQdfc3Rha2VyCQEEaW50MAEJAQ50b0NvbXBvc2l0ZUtleQIFFGtfdXNlclJld2FyZFBlclRva2VuBQdfc3Rha2VyARJtYXhTcG90VXRpbGl6YXRpb24ACQEEaW50MAEFFGtfbWF4U3BvdFV0aWxpemF0aW9uARF3aXRoZHJhd1BlclBlcmlvZAAJAQVpbnRPcgIFE2tfd2l0aGRyYXdQZXJQZXJpb2QFE1dJVEhEUkFXX1BFUl9QRVJJT0QBEXdpdGhkcmF3VW5saW1pdGVkAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBRNrX3dpdGhkcmF3VW5saW1pdGVkBwELaW5pdGlhbGl6ZWQACQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFDWtfaW5pdGlhbGl6ZWQHARBjdXJyZW50VGltZXN0YW1wAAgFCWxhc3RCbG9jawl0aW1lc3RhbXABE2N1cnJlbnRUaW1lc3RhbXBTZWMACQBpAgkBEGN1cnJlbnRUaW1lc3RhbXAAAOgHARRnZXRXaXRoZHJhd0xpbWl0TGVmdAEHX3N0YWtlcgQLY3VycmVudERhdGUJARBjdXJyZW50VGltZXN0YW1wAAQQbGFzdFdpdGhkcmF3RGF0ZQkBEWxhc3RXaXRoZHJhd25EYXRlAQUHX3N0YWtlcgQLJHQwNjU5OTcxMDYDCQBmAgkAZQIFC2N1cnJlbnREYXRlBRBsYXN0V2l0aGRyYXdEYXRlBQ9XSVRIRFJBV19QRVJJT0QJAJUKAwULY3VycmVudERhdGUJAQ13aXRoZHJhd0xpbWl0AQUHX3N0YWtlcgAABBJfd2l0aGRyYXduSW5QZXJpb2QJARF3aXRoZHJhd25JblBlcmlvZAEFB19zdGFrZXIDCQERd2l0aGRyYXdVbmxpbWl0ZWQACQCVCgMFEGxhc3RXaXRoZHJhd0RhdGUJAQ13aXRoZHJhd0xpbWl0AQUHX3N0YWtlcgUSX3dpdGhkcmF3bkluUGVyaW9kCQCVCgMFEGxhc3RXaXRoZHJhd0RhdGUJAGUCCQENd2l0aGRyYXdMaW1pdAEFB19zdGFrZXIFEl93aXRoZHJhd25JblBlcmlvZAUSX3dpdGhkcmF3bkluUGVyaW9kBBRuZXdMYXN0V2l0aGRyYXduRGF0ZQgFCyR0MDY1OTk3MTA2Al8xBBF3aXRoZHJhd0xpbWl0TGVmdAgFCyR0MDY1OTk3MTA2Al8yBBhhbHJlYWR5V2l0aGRyYXduSW5QZXJpb2QIBQskdDA2NTk5NzEwNgJfMwkAlQoDBRRuZXdMYXN0V2l0aGRyYXduRGF0ZQURd2l0aGRyYXdMaW1pdExlZnQFGGFscmVhZHlXaXRoZHJhd25JblBlcmlvZAEOY29tcHV0ZU5ld1JhdGUBE19hbW91bnRPZlF1b3RlQXNzZXQEB25ld1JhdGUDCQBmAgkBC3RvdGFsU3VwcGx5AAAACQEEZGl2ZAIJAGQCCQELZnJlZUJhbGFuY2UABRNfYW1vdW50T2ZRdW90ZUFzc2V0CQELdG90YWxTdXBwbHkABQxERUNJTUFMX1VOSVQFB25ld1JhdGUBGGxhc3RUaW1lUmV3YXJkQXBwbGljYWJsZQAJAQRtaW52AgkBE2N1cnJlbnRUaW1lc3RhbXBTZWMACQEMcGVyaW9kRmluaXNoAAEOcmV3YXJkUGVyVG9rZW4BDV9iYWxhbmNlRGVsdGEDCQAAAgkAZAIJAQt0b3RhbFN1cHBseQAFDV9iYWxhbmNlRGVsdGEAAAkBFHJld2FyZFBlclRva2VuU3RvcmVkAAQMdGltZUludGVydmFsCQBlAgkBGGxhc3RUaW1lUmV3YXJkQXBwbGljYWJsZQAJAQ5sYXN0VXBkYXRlVGltZQAEEmFjdHVhbFRpbWVJbnRlcnZhbAMJAGYCAAAFDHRpbWVJbnRlcnZhbAAABQx0aW1lSW50ZXJ2YWwEBGRpZmYJAQRkaXZkAgkAaAIJAQpyZXdhcmRSYXRlAAUSYWN0dWFsVGltZUludGVydmFsCQBkAgkBC3RvdGFsU3VwcGx5AAUNX2JhbGFuY2VEZWx0YQkAZAIJARRyZXdhcmRQZXJUb2tlblN0b3JlZAAFBGRpZmYBBmVhcm5lZAIHX3N0YWtlcg1fYmFsYW5jZURlbHRhBAtyZXdhcmREZWx0YQkAZQIJAQ5yZXdhcmRQZXJUb2tlbgEFDV9iYWxhbmNlRGVsdGEJARZ1c2VyUmV3YXJkUGVyVG9rZW5QYWlkAQUHX3N0YWtlcgkAZAIJAQRtdWxkAgkAZAIJAQliYWxhbmNlT2YBBQdfc3Rha2VyBQ1fYmFsYW5jZURlbHRhBQtyZXdhcmREZWx0YQkBB3Jld2FyZHMBBQdfc3Rha2VyAQx1cGRhdGVSZXdhcmQCB19zdGFrZXINX2JhbGFuY2VEZWx0YQQXbmV3UmV3YXJkUGVyVG9rZW5TdG9yZWQJAQ5yZXdhcmRQZXJUb2tlbgEFDV9iYWxhbmNlRGVsdGEEEW5ld0xhc3RVcGRhdGVUaW1lCQETY3VycmVudFRpbWVzdGFtcFNlYwAECyR0MDgzMjg4NTIwAwkBAiE9AgUHX3N0YWtlcgIACQCUCgIJAQZlYXJuZWQCBQdfc3Rha2VyBQ1fYmFsYW5jZURlbHRhBRduZXdSZXdhcmRQZXJUb2tlblN0b3JlZAkAlAoCAAAAAAQMc3Rha2VyRWFybmVkCAULJHQwODMyODg1MjACXzEEGHN0YWtlclJld2FyZFBlclRva2VuUGFpZAgFCyR0MDgzMjg4NTIwAl8yCQCWCgQFF25ld1Jld2FyZFBlclRva2VuU3RvcmVkBRFuZXdMYXN0VXBkYXRlVGltZQUMc3Rha2VyRWFybmVkBRhzdGFrZXJSZXdhcmRQZXJUb2tlblBhaWQBEXVwZGF0ZVVzZXJCYWxhbmNlAgVfdXNlcgdfY2hhbmdlAwkAZwIJAGQCCQEJYmFsYW5jZU9mAQUFX3VzZXIFB19jaGFuZ2UAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUJa19iYWxhbmNlBQVfdXNlcgkAZAIJAQliYWxhbmNlT2YBBQVfdXNlcgUHX2NoYW5nZQUDbmlsCQACAQkArAICCQCsAgIJAKwCAgItVmF1bHQ6IGNhbiBub3QgdXBkYXRlIHVzZXIgYmFsYW5jZS4gQmFsYW5jZTogCQCkAwEJAQliYWxhbmNlT2YBBQVfdXNlcgIJIGNoYW5nZTogCQCkAwEFB19jaGFuZ2UBFHNldFVzZXJXaXRoZHJhd0xpbWl0AgVfdXNlcgVfcmF0ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUQa193aXRoZHJhd19saW1pdAUFX3VzZXIFBV9yYXRlBQNuaWwBEnNldFVzZXJBdmVyYWdlUmF0ZQIFX3VzZXIFX3JhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFDmtfYXZlcmFnZV9yYXRlBQVfdXNlcgUFX3JhdGUFA25pbAERdXBkYXRlRnJlZUJhbGFuY2UBB19jaGFuZ2UEB2JhbGFuY2UJAQtmcmVlQmFsYW5jZQADCQBnAgkAZAIFB2JhbGFuY2UFB19jaGFuZ2UAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUNa19mcmVlQmFsYW5jZQkAZAIFB2JhbGFuY2UFB19jaGFuZ2UFA25pbAkAAgEJAKwCAgkArAICCQCsAgICLVZhdWx0OiBjYW4gbm90IHVwZGF0ZSBmcmVlIGJhbGFuY2UuIEJhbGFuY2U6IAkApAMBBQdiYWxhbmNlAgkgY2hhbmdlOiAJAKQDAQUHX2NoYW5nZQETdXBkYXRlTG9ja2VkQmFsYW5jZQEHX2NoYW5nZQQHYmFsYW5jZQkBDWxvY2tlZEJhbGFuY2UAAwkAZwIJAGQCBQdiYWxhbmNlBQdfY2hhbmdlAAAJAMwIAgkBDEludGVnZXJFbnRyeQIFD2tfbG9ja2VkQmFsYW5jZQkAZAIFB2JhbGFuY2UFB19jaGFuZ2UFA25pbAkAAgEJAKwCAgkArAICCQCsAgICL1ZhdWx0OiBjYW4gbm90IHVwZGF0ZSBsb2NrZWQgYmFsYW5jZS4gQmFsYW5jZTogCQCkAwEFB2JhbGFuY2UCCSBjaGFuZ2U6IAkApAMBBQdfY2hhbmdlARN1cGRhdGVFeGNlc3NCYWxhbmNlAQdfY2hhbmdlBAxuZXdJbWJhbGFuY2UJAGQCCQENZXhjZXNzQmFsYW5jZQAFB19jaGFuZ2UED3V0aWxpemF0aW9uUmF0ZQkBBGRpdmQCCQEDYWJzAQUMbmV3SW1iYWxhbmNlCQELZnJlZUJhbGFuY2UAAwkAZgIJARJtYXhTcG90VXRpbGl6YXRpb24ABQ91dGlsaXphdGlvblJhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIFD2tfZXhjZXNzQmFsYW5jZQUMbmV3SW1iYWxhbmNlBQNuaWwJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICL1ZhdWx0OiBjYW4gbm90IHVwZGF0ZSBleGNlc3MgYmFsYW5jZS4gQmFsYW5jZTogCQCkAwEJAQ1leGNlc3NCYWxhbmNlAAIJIGNoYW5nZTogCQCkAwEFB19jaGFuZ2UCEyB1dGlsaXphdGlvbiByYXRlOiAJAKQDAQUPdXRpbGl6YXRpb25SYXRlAhcgbWF4IHV0aWxpemF0aW9uIHJhdGU6IAkApAMBCQESbWF4U3BvdFV0aWxpemF0aW9uAAERdXBkYXRlVG90YWxTdXBwbHkBB19jaGFuZ2UJAMwIAgkBDEludGVnZXJFbnRyeQIFDWtfdG90YWxTdXBwbHkJAGQCCQELdG90YWxTdXBwbHkABQdfY2hhbmdlBQNuaWwBCnVwZGF0ZVJhdGUBBV9yYXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQZrX3JhdGUFBV9yYXRlBQNuaWwBFXNldFVzZXJXaXRoZHJhd1BhcmFtcwMFX3VzZXIRX2xhc3RXaXRoZHJhd0RhdGUKX3dpdGhkcmF3bgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUUa19sYXN0X3dpdGhkcmF3X2RhdGUFBV91c2VyBRFfbGFzdFdpdGhkcmF3RGF0ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUUa193aXRoZHJhd19pbl9wZXJpb2QFBV91c2VyBQpfd2l0aGRyYXduBQNuaWwBE3VwZGF0ZVJld2FyZEJhbGFuY2UBBl9kZWx0YQkAzAgCCQEMSW50ZWdlckVudHJ5AgUPa19yZXdhcmRCYWxhbmNlCQBkAgkBDXJld2FyZEJhbGFuY2UABQZfZGVsdGEFA25pbAEQdXBkYXRlUmV3YXJkUmF0ZQELX3Jld2FyZFJhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIFDGtfcmV3YXJkUmF0ZQULX3Jld2FyZFJhdGUFA25pbAEKdXBkYXRlVGltZQIPX2xhc3RVcGRhdGVUaW1lDV9wZXJpb2RGaW5pc2gJAMwIAgkBDEludGVnZXJFbnRyeQIFEGtfbGFzdFVwZGF0ZVRpbWUFD19sYXN0VXBkYXRlVGltZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUOa19wZXJpb2RGaW5pc2gFDV9wZXJpb2RGaW5pc2gFA25pbAEadXBkYXRlUmV3YXJkUGVyVG9rZW5TdG9yZWQBFV9yZXdhcmRQZXJUb2tlblN0b3JlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUWa19yZXdhcmRQZXJUb2tlblN0b3JlZAUVX3Jld2FyZFBlclRva2VuU3RvcmVkBQNuaWwBEXVwZGF0ZVVzZXJSZXdhcmRzAwdfc3Rha2VyB19yZXdhcmQTX3VzZXJSZXdhcmRQZXJUb2tlbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUMa191c2VyUmV3YXJkBQdfc3Rha2VyBQdfcmV3YXJkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBRRrX3VzZXJSZXdhcmRQZXJUb2tlbgUHX3N0YWtlcgUTX3VzZXJSZXdhcmRQZXJUb2tlbgUDbmlsEAFpAQ5jaGFuZ2VTZXR0aW5ncwMTX21heFNwb3RVdGlsaXphdGlvbhJfd2l0aGRyYXdQZXJQZXJpb2QSX3dpdGhkcmF3VW5saW1pdGVkAwMDAwkBASEBCQELaW5pdGlhbGl6ZWQABgkBAiE9AggFAWkGY2FsbGVyCQEMYWRtaW5BZGRyZXNzAAYDCQBmAgAABRNfbWF4U3BvdFV0aWxpemF0aW9uBgkAZgIFE19tYXhTcG90VXRpbGl6YXRpb24FDERFQ0lNQUxfVU5JVAYDCQBmAgAABRJfd2l0aGRyYXdQZXJQZXJpb2QGCQBmAgUSX3dpdGhkcmF3UGVyUGVyaW9kBQxERUNJTUFMX1VOSVQJAAIBAh1JbnZhbGlkIGNoYW5nZVNldHRpbmdzIHBhcmFtcwkAzAgCCQEMSW50ZWdlckVudHJ5AgUUa19tYXhTcG90VXRpbGl6YXRpb24FE19tYXhTcG90VXRpbGl6YXRpb24JAMwIAgkBDEludGVnZXJFbnRyeQIFE2tfd2l0aGRyYXdQZXJQZXJpb2QFEl93aXRoZHJhd1BlclBlcmlvZAkAzAgCCQEMQm9vbGVhbkVudHJ5AgUTa193aXRoZHJhd1VubGltaXRlZAUSX3dpdGhkcmF3VW5saW1pdGVkBQNuaWwBaQEKaW5pdGlhbGl6ZQMMX2Nvb3JkaW5hdG9yC192YXVsdEFzc2V0E19tYXhTcG90VXRpbGl6YXRpb24DAwMDCQELaW5pdGlhbGl6ZWQABgkBAiE9AggFAWkGY2FsbGVyBQR0aGlzBgkAZgIAAAUTX21heFNwb3RVdGlsaXphdGlvbgYJAGYCBRNfbWF4U3BvdFV0aWxpemF0aW9uBQxERUNJTUFMX1VOSVQJAAIBAhRVbmFibGUgdG8gaW5pdGlhbGl6ZQQNYXNzZXREZWNpbWFscwMJAAACBQtfdmF1bHRBc3NldAIFV0FWRVMACAQEaW5mbwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQULX3ZhdWx0QXNzZXQJAKwCAgISSW52YWxpZCB0b2tlbiBpZDogBQtfdmF1bHRBc3NldAgFBGluZm8IZGVjaW1hbHMJAMwIAgkBC1N0cmluZ0VudHJ5AgUUa19jb29yZGluYXRvckFkZHJlc3MJAKUIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFDF9jb29yZGluYXRvcgIbSW52YWxpZCBjb29yZGluYXRvciBhZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIFDGtfdmF1bHRBc3NldAULX3ZhdWx0QXNzZXQJAMwIAgkBDEludGVnZXJFbnRyeQIFFGtfdmF1bHRBc3NldERlY2ltYWxzBQ1hc3NldERlY2ltYWxzCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRRrX21heFNwb3RVdGlsaXphdGlvbgUTX21heFNwb3RVdGlsaXphdGlvbgkAzAgCCQEMQm9vbGVhbkVudHJ5AgUNa19pbml0aWFsaXplZAYFA25pbAFpAQVzdGFrZQAEB19zdGFrZXIJAKUIAQgFAWkGY2FsbGVyBAdfYW1vdW50CQEPYXNzZXRUb0RlY2ltYWxzAQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQDAwMJAQIhPQIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAkBCnZhdWx0QXNzZXQABgkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABBgkBASEBCQELaW5pdGlhbGl6ZWQACQACAQIVSW52YWxpZCBjYWxsIHRvIHN0YWtlBA0kdDAxMzY5MDEzOTE5CQEMdXBkYXRlUmV3YXJkAgUHX3N0YWtlcgAABBduZXdSZXdhcmRQZXJUb2tlblN0b3JlZAgFDSR0MDEzNjkwMTM5MTkCXzEEEW5ld0xhc3RVcGRhdGVUaW1lCAUNJHQwMTM2OTAxMzkxOQJfMgQMc3Rha2VyRWFybmVkCAUNJHQwMTM2OTAxMzkxOQJfMwQYc3Rha2VyUmV3YXJkUGVyVG9rZW5QYWlkCAUNJHQwMTM2OTAxMzkxOQJfNAQLY3VycmVudFJhdGUJAQRyYXRlAAQPcHJldkF2ZXJhZ2VSYXRlCQELYXZlcmFnZVJhdGUBBQdfc3Rha2VyBAd2QW1vdW50CQEEZGl2ZAIFB19hbW91bnQFC2N1cnJlbnRSYXRlBA5uZXdBdmVyYWdlUmF0ZQkBBGRpdmQCCQBkAgkBBG11bGQCBQd2QW1vdW50BQtjdXJyZW50UmF0ZQkBBG11bGQCCQEJYmFsYW5jZU9mAQUHX3N0YWtlcgUPcHJldkF2ZXJhZ2VSYXRlCQBkAgUHdkFtb3VudAkBCWJhbGFuY2VPZgEFB19zdGFrZXIED25ld1RvdGFsQmFsYW5jZQkAZAIFB3ZBbW91bnQJAQliYWxhbmNlT2YBBQdfc3Rha2VyBBBuZXdXaXRoZHJhd0xpbWl0CQEEbXVsZAIFD25ld1RvdGFsQmFsYW5jZQkBEXdpdGhkcmF3UGVyUGVyaW9kAAQFc3Rha2UJAPwHBAkBDm1hbmFnZXJBZGRyZXNzAAIHZGVwb3NpdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKdmF1bHRBc3NldAAJARFhc3NldEZyb21EZWNpbWFscwEFB19hbW91bnQFA25pbAMJAAACBQVzdGFrZQUFc3Rha2UEBm5vdGlmeQMJAGYCCQESbWF4U3BvdFV0aWxpemF0aW9uAAAACQD8BwQJAQtzcG90QWRkcmVzcwACGG5vdGlmeVZhdWx0QmFsYW5jZUNoYW5nZQkAzAgCCQENdmF1bHRBc3NldFN0cgAJAMwIAgUHX2Ftb3VudAUDbmlsBQNuaWwFA25pbAMJAAACBQZub3RpZnkFBm5vdGlmeQkAzggCCQDOCAIJAM4IAgkAzggCCQDOCAIJAM4IAgkAzggCCQERdXBkYXRlVXNlclJld2FyZHMDBQdfc3Rha2VyBQxzdGFrZXJFYXJuZWQFGHN0YWtlclJld2FyZFBlclRva2VuUGFpZAkBGnVwZGF0ZVJld2FyZFBlclRva2VuU3RvcmVkAQUXbmV3UmV3YXJkUGVyVG9rZW5TdG9yZWQJAQp1cGRhdGVUaW1lAgURbmV3TGFzdFVwZGF0ZVRpbWUJAQxwZXJpb2RGaW5pc2gACQERdXBkYXRlRnJlZUJhbGFuY2UBBQdfYW1vdW50CQERdXBkYXRlVXNlckJhbGFuY2UCBQdfc3Rha2VyBQd2QW1vdW50CQESc2V0VXNlckF2ZXJhZ2VSYXRlAgUHX3N0YWtlcgUObmV3QXZlcmFnZVJhdGUJARRzZXRVc2VyV2l0aGRyYXdMaW1pdAIFB19zdGFrZXIFEG5ld1dpdGhkcmF3TGltaXQJARF1cGRhdGVUb3RhbFN1cHBseQEFB3ZBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEHdW5TdGFrZQEHX2Ftb3VudAQHX3N0YWtlcgkApQgBCAUBaQZjYWxsZXIEEmFtb3VudE9mUXVvdGVBc3NldAkBD2Fzc2V0VG9EZWNpbWFscwEFB19hbW91bnQDAwMJAQIhPQIIBQFpCHBheW1lbnRzBQNuaWwGCQBnAgAABRJhbW91bnRPZlF1b3RlQXNzZXQGCQEBIQEJAQtpbml0aWFsaXplZAAJAAIBAhdJbnZhbGlkIGNhbGwgdG8gdW5TdGFrZQQNJHQwMTU1MDkxNTcyNQkBDHVwZGF0ZVJld2FyZAIFB19zdGFrZXIAAAQXbmV3UmV3YXJkUGVyVG9rZW5TdG9yZWQIBQ0kdDAxNTUwOTE1NzI1Al8xBBFuZXdMYXN0VXBkYXRlVGltZQgFDSR0MDE1NTA5MTU3MjUCXzIEDHN0YWtlckVhcm5lZAgFDSR0MDE1NTA5MTU3MjUCXzMEGHN0YWtlclJld2FyZFBlclRva2VuUGFpZAgFDSR0MDE1NTA5MTU3MjUCXzQEDSR0MDE1NzMyMTU4OTkJARRnZXRXaXRoZHJhd0xpbWl0TGVmdAEFB19zdGFrZXIEFG5ld0xhc3RXaXRoZHJhd25EYXRlCAUNJHQwMTU3MzIxNTg5OQJfMQQRd2l0aGRyYXdMaW1pdExlZnQIBQ0kdDAxNTczMjE1ODk5Al8yBBhhbHJlYWR5V2l0aGRyYXduSW5QZXJpb2QIBQ0kdDAxNTczMjE1ODk5Al8zBAd2QW1vdW50CQEEZGl2ZAIFEmFtb3VudE9mUXVvdGVBc3NldAkBBHJhdGUAAwkAZgIFB3ZBbW91bnQFEXdpdGhkcmF3TGltaXRMZWZ0CQACAQIsSW52YWxpZCBjYWxsIHRvIHVuU3Rha2U6IHdpdGhkcmF3IG92ZXIgbGltaXQEFG5ld1dpdGhkcmF3bkluUGVyaW9kCQBkAgUYYWxyZWFkeVdpdGhkcmF3bkluUGVyaW9kBQd2QW1vdW50AwkAZgIFEmFtb3VudE9mUXVvdGVBc3NldAkBC2ZyZWVCYWxhbmNlAAkAAgECKEludmFsaWQgY2FsbCB0byB1blN0YWtlOiBiYWxhbmNlIHRvbyBsb3cEB3Vuc3Rha2UJAPwHBAkBDm1hbmFnZXJBZGRyZXNzAAIId2l0aGRyYXcJAMwIAgkBDXZhdWx0QXNzZXRTdHIACQDMCAIJARFhc3NldEZyb21EZWNpbWFscwEFEmFtb3VudE9mUXVvdGVBc3NldAUDbmlsBQNuaWwDCQAAAgUHdW5zdGFrZQUHdW5zdGFrZQQGbm90aWZ5AwkAZgIJARJtYXhTcG90VXRpbGl6YXRpb24AAAAJAPwHBAkBC3Nwb3RBZGRyZXNzAAIYbm90aWZ5VmF1bHRCYWxhbmNlQ2hhbmdlCQDMCAIJAQ12YXVsdEFzc2V0U3RyAAkAzAgCCQEBLQEFEmFtb3VudE9mUXVvdGVBc3NldAUDbmlsBQNuaWwFA25pbAMJAAACBQZub3RpZnkFBm5vdGlmeQkAzggCCQDOCAIJAM4IAgkAzggCCQDOCAIJAM4IAgkAzggCCQERdXBkYXRlVXNlclJld2FyZHMDBQdfc3Rha2VyBQxzdGFrZXJFYXJuZWQFGHN0YWtlclJld2FyZFBlclRva2VuUGFpZAkBGnVwZGF0ZVJld2FyZFBlclRva2VuU3RvcmVkAQUXbmV3UmV3YXJkUGVyVG9rZW5TdG9yZWQJAQp1cGRhdGVUaW1lAgURbmV3TGFzdFVwZGF0ZVRpbWUJAQxwZXJpb2RGaW5pc2gACQERdXBkYXRlRnJlZUJhbGFuY2UBCQEBLQEFEmFtb3VudE9mUXVvdGVBc3NldAkBEXVwZGF0ZVVzZXJCYWxhbmNlAgUHX3N0YWtlcgkBAS0BBQd2QW1vdW50CQERdXBkYXRlVG90YWxTdXBwbHkBCQEBLQEFB3ZBbW91bnQJARVzZXRVc2VyV2l0aGRyYXdQYXJhbXMDBQdfc3Rha2VyBRRuZXdMYXN0V2l0aGRyYXduRGF0ZQUUbmV3V2l0aGRyYXduSW5QZXJpb2QJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQERYXNzZXRGcm9tRGVjaW1hbHMBBRJhbW91bnRPZlF1b3RlQXNzZXQJAQp2YXVsdEFzc2V0AAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBD3dpdGhkcmF3UmV3YXJkcwAEB19zdGFrZXIJAKUIAQgFAWkGY2FsbGVyBA0kdDAxNzUwOTE3NjU0CQEMdXBkYXRlUmV3YXJkAgUHX3N0YWtlcgAABBduZXdSZXdhcmRQZXJUb2tlblN0b3JlZAgFDSR0MDE3NTA5MTc2NTQCXzEEEW5ld0xhc3RVcGRhdGVUaW1lCAUNJHQwMTc1MDkxNzY1NAJfMgQMc3Rha2VyRWFybmVkCAUNJHQwMTc1MDkxNzY1NAJfMwQYc3Rha2VyUmV3YXJkUGVyVG9rZW5QYWlkCAUNJHQwMTc1MDkxNzY1NAJfNAMDCQBnAgAABQxzdGFrZXJFYXJuZWQGCQEBIQEJAQtpbml0aWFsaXplZAAJAAIBAhBObyByZXdhcmQ6IFZhdWx0CQDOCAIJAM4IAgkAzggCCQDOCAIJARF1cGRhdGVVc2VyUmV3YXJkcwMFB19zdGFrZXIAAAUYc3Rha2VyUmV3YXJkUGVyVG9rZW5QYWlkCQEadXBkYXRlUmV3YXJkUGVyVG9rZW5TdG9yZWQBBRduZXdSZXdhcmRQZXJUb2tlblN0b3JlZAkBCnVwZGF0ZVRpbWUCBRFuZXdMYXN0VXBkYXRlVGltZQkBDHBlcmlvZEZpbmlzaAAJARN1cGRhdGVSZXdhcmRCYWxhbmNlAQkBAS0BBQxzdGFrZXJFYXJuZWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQxzdGFrZXJFYXJuZWQJAQ9nb3Zlcm5hbmNlQXNzZXQABQNuaWwBaQEHYWRkRnJlZQAEB19hbW91bnQJAQ9hc3NldFRvRGVjaW1hbHMBCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAMDAwMJAQIhPQIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAkBCnZhdWx0QXNzZXQABgkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABBgkBASEBCQELaW5pdGlhbGl6ZWQABgkBASEBAwMJAQtpc1doaXRlbGlzdAEJAKUIAQgFAWkGY2FsbGVyBgkAAAIIBQFpBmNhbGxlcgkBC3Nwb3RBZGRyZXNzAAYJAAACCAUBaQZjYWxsZXIJAQxhZG1pbkFkZHJlc3MACQACAQIWSW52YWxpZCBhZGRGcmVlIHBhcmFtcwQHbmV3UmF0ZQkBDmNvbXB1dGVOZXdSYXRlAQUHX2Ftb3VudAQFc3Rha2UJAPwHBAkBDm1hbmFnZXJBZGRyZXNzAAIHZGVwb3NpdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKdmF1bHRBc3NldAAJARFhc3NldEZyb21EZWNpbWFscwEFB19hbW91bnQFA25pbAMJAAACBQVzdGFrZQUFc3Rha2UJAM4IAgkBEXVwZGF0ZUZyZWVCYWxhbmNlAQUHX2Ftb3VudAkBCnVwZGF0ZVJhdGUBBQduZXdSYXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCWFkZExvY2tlZAAEB19hbW91bnQJAQ9hc3NldFRvRGVjaW1hbHMBCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAMDAwMJAQIhPQIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAkBCnZhdWx0QXNzZXQABgkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABBgkBASEBCQELaW5pdGlhbGl6ZWQABgkBASEBAwkBC2lzV2hpdGVsaXN0AQkApQgBCAUBaQZjYWxsZXIGCQAAAggFAWkGY2FsbGVyCQEMYWRtaW5BZGRyZXNzAAkAAgECGEludmFsaWQgYWRkTG9ja2VkIHBhcmFtcwQHdW5zdGFrZQkA/AcECQEObWFuYWdlckFkZHJlc3MAAgdkZXBvc2l0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQp2YXVsdEFzc2V0AAkBEWFzc2V0RnJvbURlY2ltYWxzAQUHX2Ftb3VudAUDbmlsAwkAAAIFB3Vuc3Rha2UFB3Vuc3Rha2UJARN1cGRhdGVMb2NrZWRCYWxhbmNlAQUHX2Ftb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARVleGNoYW5nZUZyZWVBbmRMb2NrZWQBB19hbW91bnQDAwkBASEBCQELaW5pdGlhbGl6ZWQABgMJAQEhAQkBC2lzV2hpdGVsaXN0AQkApQgBCAUBaQZjYWxsZXIJAQIhPQIIBQFpBmNhbGxlcgkBDGFkbWluQWRkcmVzcwAHCQACAQIkSW52YWxpZCBleGNoYW5nZUZyZWVBbmRMb2NrZWQgcGFyYW1zBBJhbW91bnRPZlF1b3RlQXNzZXQJAQ9hc3NldFRvRGVjaW1hbHMBBQdfYW1vdW50BAduZXdSYXRlCQEOY29tcHV0ZU5ld1JhdGUBCQEBLQEFEmFtb3VudE9mUXVvdGVBc3NldAkAzggCCQDOCAIJARN1cGRhdGVMb2NrZWRCYWxhbmNlAQUSYW1vdW50T2ZRdW90ZUFzc2V0CQERdXBkYXRlRnJlZUJhbGFuY2UBCQEBLQEFEmFtb3VudE9mUXVvdGVBc3NldAkBCnVwZGF0ZVJhdGUBBQduZXdSYXRlAWkBDndpdGhkcmF3TG9ja2VkAQdfYW1vdW50AwMDCQEBIQEJAQtpbml0aWFsaXplZAAGCQBnAgAABQdfYW1vdW50BgkBASEBCQELaXNXaGl0ZWxpc3QBCQClCAEIBQFpBmNhbGxlcgkAAgECHUludmFsaWQgd2l0aGRyYXdMb2NrZWQgcGFyYW1zBBJhbW91bnRPZlF1b3RlQXNzZXQJAQ9hc3NldFRvRGVjaW1hbHMBBQdfYW1vdW50BAd1bnN0YWtlCQD8BwQJAQ5tYW5hZ2VyQWRkcmVzcwACCHdpdGhkcmF3CQDMCAIJAQ12YXVsdEFzc2V0U3RyAAkAzAgCCQERYXNzZXRGcm9tRGVjaW1hbHMBBRJhbW91bnRPZlF1b3RlQXNzZXQFA25pbAUDbmlsAwkAAAIFB3Vuc3Rha2UFB3Vuc3Rha2UJAM4IAgkBE3VwZGF0ZUxvY2tlZEJhbGFuY2UBCQEBLQEFEmFtb3VudE9mUXVvdGVBc3NldAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJARFhc3NldEZyb21EZWNpbWFscwEFEmFtb3VudE9mUXVvdGVBc3NldAkBCnZhdWx0QXNzZXQABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEGYm9ycm93AQdfYW1vdW50AwMDCQEBIQEJAQtpbml0aWFsaXplZAAGCQBnAgAABQdfYW1vdW50BgkBASEBCQAAAggFAWkGY2FsbGVyCQELc3BvdEFkZHJlc3MACQACAQIVSW52YWxpZCBib3Jyb3cgcGFyYW1zBBJhbW91bnRPZlF1b3RlQXNzZXQJAQ9hc3NldFRvRGVjaW1hbHMBBQdfYW1vdW50BAd1bnN0YWtlCQD8BwQJAQ5tYW5hZ2VyQWRkcmVzcwACCHdpdGhkcmF3CQDMCAIJAQ12YXVsdEFzc2V0U3RyAAkAzAgCCQERYXNzZXRGcm9tRGVjaW1hbHMBBRJhbW91bnRPZlF1b3RlQXNzZXQFA25pbAUDbmlsAwkAAAIFB3Vuc3Rha2UFB3Vuc3Rha2UJAM4IAgkBE3VwZGF0ZUV4Y2Vzc0JhbGFuY2UBCQEBLQEFEmFtb3VudE9mUXVvdGVBc3NldAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJARFhc3NldEZyb21EZWNpbWFscwEFEmFtb3VudE9mUXVvdGVBc3NldAkBCnZhdWx0QXNzZXQABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEFcmVwYXkABAdfYW1vdW50CQEPYXNzZXRUb0RlY2ltYWxzAQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQDAwMDCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQJAQp2YXVsdEFzc2V0AAYJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQYJAQEhAQkBC2luaXRpYWxpemVkAAYJAQEhAQMJAAACCAUBaQZjYWxsZXIJAQtzcG90QWRkcmVzcwAGCQAAAggFAWkGY2FsbGVyCQEMYWRtaW5BZGRyZXNzAAkAAgECFEludmFsaWQgcmVwYXkgcGFyYW1zBAd1bnN0YWtlCQD8BwQJAQ5tYW5hZ2VyQWRkcmVzcwACB2RlcG9zaXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnZhdWx0QXNzZXQACQERYXNzZXRGcm9tRGVjaW1hbHMBBQdfYW1vdW50BQNuaWwDCQAAAgUHdW5zdGFrZQUHdW5zdGFrZQkBE3VwZGF0ZUV4Y2Vzc0JhbGFuY2UBBQdfYW1vdW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCmFkZFJld2FyZHMAAwMDCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQJAQ9nb3Zlcm5hbmNlQXNzZXQABgkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABBgkBASEBCQELaW5pdGlhbGl6ZWQACQACAQIZSW52YWxpZCBhZGRSZXdhcmRzIHBhcmFtcwQHX3Jld2FyZAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEF25ld1Jld2FyZFBlclRva2VuU3RvcmVkCAkBDHVwZGF0ZVJld2FyZAIFCk5PX0FERFJFU1MFCU5PX1NUQUtFUgJfMQQJdGltZXN0YW1wCQETY3VycmVudFRpbWVzdGFtcFNlYwAEDW5ld1Jld2FyZFJhdGUDCQBmAgUJdGltZXN0YW1wCQEMcGVyaW9kRmluaXNoAAkAaQIFB19yZXdhcmQFCERVUkFUSU9OBA1yZW1haW5pbmdUaW1lCQBlAgkBDHBlcmlvZEZpbmlzaAAFCXRpbWVzdGFtcAQIbGVmdG92ZXIJAGgCCQEKcmV3YXJkUmF0ZQAFDXJlbWFpbmluZ1RpbWUJAGkCCQBkAgUHX3Jld2FyZAUIbGVmdG92ZXIFCERVUkFUSU9OCQDOCAIJAM4IAgkAzggCCQEQdXBkYXRlUmV3YXJkUmF0ZQEFDW5ld1Jld2FyZFJhdGUJARp1cGRhdGVSZXdhcmRQZXJUb2tlblN0b3JlZAEFF25ld1Jld2FyZFBlclRva2VuU3RvcmVkCQETdXBkYXRlUmV3YXJkQmFsYW5jZQEFB19yZXdhcmQJAQp1cGRhdGVUaW1lAgUJdGltZXN0YW1wCQBkAgUJdGltZXN0YW1wBQhEVVJBVElPTgFpAQphY2tSZXdhcmRzAAQKcHJvZml0UmVzcAkA/AcECQEObWFuYWdlckFkZHJlc3MAAgtjbGFpbVByb2ZpdAkAzAgCCQENdmF1bHRBc3NldFN0cgAFA25pbAUDbmlsAwkAAAIFCnByb2ZpdFJlc3AFCnByb2ZpdFJlc3AEBnByb2ZpdAQHJG1hdGNoMAUKcHJvZml0UmVzcAMJAAECBQckbWF0Y2gwAgNJbnQEAXAFByRtYXRjaDAJAQ9hc3NldFRvRGVjaW1hbHMBBQFwCQACAQIcSW52YWxpZCBjbGFpbVByb2ZpdCByZXNwb25zZQQGcmVzdWx0AwkAZgIFBnByb2ZpdAAABAduZXdSYXRlCQEOY29tcHV0ZU5ld1JhdGUBBQZwcm9maXQEBXN0YWtlCQD8BwQJAQ5tYW5hZ2VyQWRkcmVzcwACB2RlcG9zaXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnZhdWx0QXNzZXQACQERYXNzZXRGcm9tRGVjaW1hbHMBBQZwcm9maXQFA25pbAMJAAACBQVzdGFrZQUFc3Rha2UJAM4IAgkBEXVwZGF0ZUZyZWVCYWxhbmNlAQUGcHJvZml0CQEKdXBkYXRlUmF0ZQEFB25ld1JhdGUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAMJAAACBQZyZXN1bHQFBnJlc3VsdAUGcmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBC3ZpZXdfcmV3YXJkAQdfc3Rha2VyBAdiYWxhbmNlCQEJYmFsYW5jZU9mAQUHX3N0YWtlcgQPZGVwb3NpdGVkQW1vdW50CQEEbXVsZAIJAQthdmVyYWdlUmF0ZQEFB19zdGFrZXIFB2JhbGFuY2UEDWN1cnJlbnRBbW91bnQJAQRtdWxkAgkBBHJhdGUABQdiYWxhbmNlBAtlYXJuZWRRdW90ZQkAZQIFDWN1cnJlbnRBbW91bnQFD2RlcG9zaXRlZEFtb3VudAkAAgEJAKQDAQULZWFybmVkUXVvdGUBaQESdmlld19zdGFraW5nUmV3YXJkAQdfc3Rha2VyBAxzdGFrZXJFYXJuZWQICQEMdXBkYXRlUmV3YXJkAgUHX3N0YWtlcgAAAl8zCQACAQkApAMBCQERYXNzZXRGcm9tRGVjaW1hbHMBBQxzdGFrZXJFYXJuZWQBaQESdmlld193aXRoZHJhd0xpbWl0AQdfc3Rha2VyBBF3aXRoZHJhd0xpbWl0TGVmdAgJARRnZXRXaXRoZHJhd0xpbWl0TGVmdAEFB19zdGFrZXICXzIEDGxpbWl0SW5Bc3NldAkBEWFzc2V0RnJvbURlY2ltYWxzAQkBBG11bGQCBRF3aXRoZHJhd0xpbWl0TGVmdAkBBHJhdGUACQACAQkApAMBBQxsaW1pdEluQXNzZXQBAnR4AQZ2ZXJpZnkABA5jb29yZGluYXRvclN0cgkAnQgCBQR0aGlzBRRrX2Nvb3JkaW5hdG9yQWRkcmVzcwMJAQlpc0RlZmluZWQBBQ5jb29yZGluYXRvclN0cgQFYWRtaW4JAJ0IAgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQUOY29vcmRpbmF0b3JTdHIFD2tfYWRtaW5fYWRkcmVzcwMJAQlpc0RlZmluZWQBBQVhZG1pbgkBC3ZhbHVlT3JFbHNlAgkAmwgCCQERQGV4dHJOYXRpdmUoMTA2MikBCQEFdmFsdWUBBQVhZG1pbgkArAICCQCsAgIJAKwCAgIHc3RhdHVzXwkApQgBBQR0aGlzAgFfCQDYBAEIBQJ0eAJpZAcJAAIBAi51bmFibGUgdG8gdmVyaWZ5OiBhZG1pbiBub3Qgc2V0IGluIGNvb3JkaW5hdG9yCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5Luc9Gw==",
"height": 2636562,
"applicationStatus": "succeeded",
"spentComplexity": 0
}
View: original | compacted
Prev: 5JLXz32PHBWVcFX4VkgRzYo1PPEm3P5fFUYyu75sxJJb
Next: none
Diff:
Old | New | | Differences |
---|
19 | 19 | | |
---|
20 | 20 | | let i = "k_withdrawPerPeriod" |
---|
21 | 21 | | |
---|
22 | | - | let j = "k_rate" |
---|
| 22 | + | let j = "k_withdrawUnlimited" |
---|
23 | 23 | | |
---|
24 | | - | let k = "k_lastUpdateTime" |
---|
| 24 | + | let k = "k_rate" |
---|
25 | 25 | | |
---|
26 | | - | let l = "k_rewardPerTokenStored" |
---|
| 26 | + | let l = "k_lastUpdateTime" |
---|
27 | 27 | | |
---|
28 | | - | let m = "k_rewardRate" |
---|
| 28 | + | let m = "k_rewardPerTokenStored" |
---|
29 | 29 | | |
---|
30 | | - | let n = "k_periodFinish" |
---|
| 30 | + | let n = "k_rewardRate" |
---|
31 | 31 | | |
---|
32 | | - | let o = "k_userRewardPerToken" |
---|
| 32 | + | let o = "k_periodFinish" |
---|
33 | 33 | | |
---|
34 | | - | let p = "k_userReward" |
---|
| 34 | + | let p = "k_userRewardPerToken" |
---|
35 | 35 | | |
---|
36 | | - | let q = "k_balance" |
---|
| 36 | + | let q = "k_userReward" |
---|
37 | 37 | | |
---|
38 | | - | let r = "k_average_rate" |
---|
| 38 | + | let r = "k_balance" |
---|
39 | 39 | | |
---|
40 | | - | let s = "k_withdraw_limit" |
---|
| 40 | + | let s = "k_average_rate" |
---|
41 | 41 | | |
---|
42 | | - | let t = "k_last_withdraw_date" |
---|
| 42 | + | let t = "k_withdraw_limit" |
---|
43 | 43 | | |
---|
44 | | - | let u = "k_withdraw_in_period" |
---|
| 44 | + | let u = "k_last_withdraw_date" |
---|
45 | 45 | | |
---|
46 | | - | let v = "k_initialized" |
---|
| 46 | + | let v = "k_withdraw_in_period" |
---|
47 | 47 | | |
---|
48 | | - | let w = "k_coordinatorAddress" |
---|
| 48 | + | let w = "k_initialized" |
---|
49 | 49 | | |
---|
50 | | - | let x = "k_amm" |
---|
| 50 | + | let x = "k_coordinatorAddress" |
---|
51 | 51 | | |
---|
52 | | - | let y = "k_gov_asset" |
---|
| 52 | + | let y = "k_amm" |
---|
53 | 53 | | |
---|
54 | | - | let z = "k_quote_asset" |
---|
| 54 | + | let z = "k_gov_asset" |
---|
55 | 55 | | |
---|
56 | | - | let A = "k_admin_address" |
---|
| 56 | + | let A = "k_quote_asset" |
---|
57 | 57 | | |
---|
58 | | - | let B = "k_manager_address" |
---|
| 58 | + | let B = "k_admin_address" |
---|
59 | 59 | | |
---|
60 | | - | let C = "k_spot_address" |
---|
| 60 | + | let C = "k_manager_address" |
---|
61 | 61 | | |
---|
62 | | - | let D = "k_collateral_address" |
---|
| 62 | + | let D = "k_spot_address" |
---|
63 | 63 | | |
---|
64 | | - | func E (F,G) = ((F + "_") + G) |
---|
| 64 | + | let E = "k_collateral_address" |
---|
| 65 | + | |
---|
| 66 | + | func F (G,H) = ((G + "_") + H) |
---|
65 | 67 | | |
---|
66 | 68 | | |
---|
67 | | - | func H () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, w), "Coordinator not set")), "Coordinator address invalid") |
---|
| 69 | + | func I () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, x), "Coordinator not set")), "Coordinator address invalid") |
---|
68 | 70 | | |
---|
69 | 71 | | |
---|
70 | | - | func I () = addressFromString(valueOrErrorMessage(getString(H(), A), "Admin address not set")) |
---|
| 72 | + | func J () = addressFromString(valueOrErrorMessage(getString(I(), B), "Admin address not set")) |
---|
71 | 73 | | |
---|
72 | 74 | | |
---|
73 | | - | func J (G) = valueOrElse(getBoolean(H(), E(x, G)), false) |
---|
| 75 | + | func K (H) = valueOrElse(getBoolean(I(), F(y, H)), false) |
---|
74 | 76 | | |
---|
75 | 77 | | |
---|
76 | | - | func K () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(H(), C), "Spot address not set")), "Spot address invalid") |
---|
| 78 | + | func L () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(I(), D), "Spot address not set")), "Spot address invalid") |
---|
77 | 79 | | |
---|
78 | 80 | | |
---|
79 | | - | func L () = fromBase58String(valueOrErrorMessage(getString(H(), y), "Governance asset not set")) |
---|
| 81 | + | func M () = fromBase58String(valueOrErrorMessage(getString(I(), z), "Governance asset not set")) |
---|
80 | 82 | | |
---|
81 | 83 | | |
---|
82 | | - | func M () = fromBase58String(getStringValue(H(), z)) |
---|
| 84 | + | func N () = fromBase58String(getStringValue(I(), A)) |
---|
83 | 85 | | |
---|
84 | 86 | | |
---|
85 | | - | func N () = valueOrErrorMessage(getString(this, f), "Vault asset not set") |
---|
| 87 | + | func O () = valueOrErrorMessage(getString(this, f), "Vault asset not set") |
---|
86 | 88 | | |
---|
87 | 89 | | |
---|
88 | | - | func O () = { |
---|
89 | | - | let P = N() |
---|
90 | | - | if ((P == "WAVES")) |
---|
| 90 | + | func P () = { |
---|
| 91 | + | let Q = O() |
---|
| 92 | + | if ((Q == "WAVES")) |
---|
91 | 93 | | then unit |
---|
92 | | - | else fromBase58String(P) |
---|
| 94 | + | else fromBase58String(Q) |
---|
93 | 95 | | } |
---|
94 | 96 | | |
---|
95 | 97 | | |
---|
96 | | - | func Q () = valueOrErrorMessage(getInteger(this, g), "Vault asset decimals not set") |
---|
| 98 | + | func R () = valueOrErrorMessage(getInteger(this, g), "Vault asset decimals not set") |
---|
97 | 99 | | |
---|
98 | 100 | | |
---|
99 | | - | func R () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(H(), B), "Manager address not set")), "Manager address invalid") |
---|
| 101 | + | func S () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(I(), C), "Manager address not set")), "Manager address invalid") |
---|
100 | 102 | | |
---|
101 | 103 | | |
---|
102 | | - | let S = (1 * (((((((10 * 10) * 10) * 10) * 10) * 10) * 10) * 10)) |
---|
| 104 | + | let T = (1 * (((((((10 * 10) * 10) * 10) * 10) * 10) * 10) * 10)) |
---|
103 | 105 | | |
---|
104 | | - | let T = (((7 * 60) * 60) * 24) |
---|
| 106 | + | let U = (((7 * 60) * 60) * 24) |
---|
105 | 107 | | |
---|
106 | | - | let U = "" |
---|
| 108 | + | let V = "" |
---|
107 | 109 | | |
---|
108 | | - | let V = 0 |
---|
| 110 | + | let W = 0 |
---|
109 | 111 | | |
---|
110 | | - | func W (X) = { |
---|
111 | | - | let Y = Q() |
---|
112 | | - | if ((Y == 6)) |
---|
113 | | - | then (X / 100) |
---|
114 | | - | else if ((Y == 8)) |
---|
115 | | - | then X |
---|
| 112 | + | func X (Y) = { |
---|
| 113 | + | let Z = R() |
---|
| 114 | + | if ((Z == 6)) |
---|
| 115 | + | then (Y / 100) |
---|
| 116 | + | else if ((Z == 8)) |
---|
| 117 | + | then Y |
---|
116 | 118 | | else throw("Invalid asset decimals") |
---|
117 | 119 | | } |
---|
118 | 120 | | |
---|
119 | 121 | | |
---|
120 | | - | func Z (X) = { |
---|
121 | | - | let Y = Q() |
---|
122 | | - | if ((Y == 6)) |
---|
123 | | - | then (X * 100) |
---|
124 | | - | else if ((Y == 8)) |
---|
125 | | - | then X |
---|
| 122 | + | func aa (Y) = { |
---|
| 123 | + | let Z = R() |
---|
| 124 | + | if ((Z == 6)) |
---|
| 125 | + | then (Y * 100) |
---|
| 126 | + | else if ((Z == 8)) |
---|
| 127 | + | then Y |
---|
126 | 128 | | else throw("Invalid asset decimals") |
---|
127 | 129 | | } |
---|
128 | 130 | | |
---|
129 | 131 | | |
---|
130 | | - | func aa (ab,ac) = fraction(ab, S, ac, HALFEVEN) |
---|
| 132 | + | func ab (ac,ad) = fraction(ac, T, ad, HALFEVEN) |
---|
131 | 133 | | |
---|
132 | 134 | | |
---|
133 | | - | func ad (ab,ac) = fraction(ab, ac, S, HALFEVEN) |
---|
| 135 | + | func ae (ac,ad) = fraction(ac, ad, T, HALFEVEN) |
---|
134 | 136 | | |
---|
135 | 137 | | |
---|
136 | | - | func ae (ab) = if ((ab > 0)) |
---|
137 | | - | then ab |
---|
138 | | - | else -(ab) |
---|
| 138 | + | func af (ac) = if ((ac > 0)) |
---|
| 139 | + | then ac |
---|
| 140 | + | else -(ac) |
---|
139 | 141 | | |
---|
140 | 142 | | |
---|
141 | | - | func af (ab,ac) = if ((ab > ac)) |
---|
142 | | - | then ac |
---|
143 | | - | else ab |
---|
| 143 | + | func ag (ac,ad) = if ((ac > ad)) |
---|
| 144 | + | then ad |
---|
| 145 | + | else ac |
---|
144 | 146 | | |
---|
145 | 147 | | |
---|
146 | | - | let ag = (86400 * 1000) |
---|
| 148 | + | let ah = (86400 * 1000) |
---|
147 | 149 | | |
---|
148 | | - | let ah = aa((1 * S), (4 * S)) |
---|
| 150 | + | let ai = ab((1 * T), (4 * T)) |
---|
149 | 151 | | |
---|
150 | | - | func ai (aj) = valueOrErrorMessage(getInteger(this, aj), ("no value for " + aj)) |
---|
| 152 | + | func aj (ak) = valueOrErrorMessage(getInteger(this, ak), ("no value for " + ak)) |
---|
151 | 153 | | |
---|
152 | 154 | | |
---|
153 | | - | func ak (aj) = valueOrElse(getInteger(this, aj), 0) |
---|
| 155 | + | func al (ak) = valueOrElse(getInteger(this, ak), 0) |
---|
154 | 156 | | |
---|
155 | 157 | | |
---|
156 | | - | func al (aj) = valueOrElse(getInteger(this, aj), S) |
---|
| 158 | + | func am (ak) = valueOrElse(getInteger(this, ak), T) |
---|
157 | 159 | | |
---|
158 | 160 | | |
---|
159 | | - | func am (aj,an) = valueOrElse(getInteger(this, aj), an) |
---|
| 161 | + | func an (ak,ao) = valueOrElse(getInteger(this, ak), ao) |
---|
160 | 162 | | |
---|
161 | 163 | | |
---|
162 | | - | func ao () = ak(a) |
---|
| 164 | + | func ap () = al(a) |
---|
163 | 165 | | |
---|
164 | 166 | | |
---|
165 | | - | func ap () = al(j) |
---|
| 167 | + | func aq () = am(k) |
---|
166 | 168 | | |
---|
167 | 169 | | |
---|
168 | | - | func aq (ar) = ak(E(q, ar)) |
---|
| 170 | + | func ar (as) = al(F(r, as)) |
---|
169 | 171 | | |
---|
170 | 172 | | |
---|
171 | | - | func as (ar) = ak(E(r, ar)) |
---|
| 173 | + | func at (as) = al(F(s, as)) |
---|
172 | 174 | | |
---|
173 | 175 | | |
---|
174 | | - | func at (ar) = ak(E(s, ar)) |
---|
| 176 | + | func au (as) = al(F(t, as)) |
---|
175 | 177 | | |
---|
176 | 178 | | |
---|
177 | | - | func au (ar) = ak(E(u, ar)) |
---|
| 179 | + | func av (as) = al(F(v, as)) |
---|
178 | 180 | | |
---|
179 | 181 | | |
---|
180 | | - | func av (ar) = ak(E(t, ar)) |
---|
| 182 | + | func aw (as) = al(F(u, as)) |
---|
181 | 183 | | |
---|
182 | 184 | | |
---|
183 | | - | func aw () = ak(d) |
---|
| 185 | + | func ax () = al(d) |
---|
184 | 186 | | |
---|
185 | 187 | | |
---|
186 | | - | func ax () = ak(c) |
---|
| 188 | + | func ay () = al(c) |
---|
187 | 189 | | |
---|
188 | 190 | | |
---|
189 | | - | func ay () = ak(e) |
---|
| 191 | + | func az () = al(e) |
---|
190 | 192 | | |
---|
191 | 193 | | |
---|
192 | | - | func az () = ak(l) |
---|
| 194 | + | func aA () = al(m) |
---|
193 | 195 | | |
---|
194 | 196 | | |
---|
195 | | - | func aA () = ak(k) |
---|
| 197 | + | func aB () = al(l) |
---|
196 | 198 | | |
---|
197 | 199 | | |
---|
198 | | - | func aB () = ak(m) |
---|
| 200 | + | func aC () = al(n) |
---|
199 | 201 | | |
---|
200 | 202 | | |
---|
201 | | - | func aC () = ak(n) |
---|
| 203 | + | func aD () = al(o) |
---|
202 | 204 | | |
---|
203 | 205 | | |
---|
204 | | - | func aD () = ak(b) |
---|
| 206 | + | func aE () = al(b) |
---|
205 | 207 | | |
---|
206 | 208 | | |
---|
207 | | - | func aE (ar) = ak(E(p, ar)) |
---|
| 209 | + | func aF (as) = al(F(q, as)) |
---|
208 | 210 | | |
---|
209 | 211 | | |
---|
210 | | - | func aF (ar) = ak(E(o, ar)) |
---|
| 212 | + | func aG (as) = al(F(p, as)) |
---|
211 | 213 | | |
---|
212 | 214 | | |
---|
213 | | - | func aG () = ak(h) |
---|
| 215 | + | func aH () = al(h) |
---|
214 | 216 | | |
---|
215 | 217 | | |
---|
216 | | - | func aH () = am(i, ah) |
---|
| 218 | + | func aI () = an(i, ai) |
---|
217 | 219 | | |
---|
218 | 220 | | |
---|
219 | | - | func aI () = valueOrElse(getBoolean(this, v), false) |
---|
| 221 | + | func aJ () = valueOrElse(getBoolean(this, j), false) |
---|
220 | 222 | | |
---|
221 | 223 | | |
---|
222 | | - | func aJ () = lastBlock.timestamp |
---|
| 224 | + | func aK () = valueOrElse(getBoolean(this, w), false) |
---|
223 | 225 | | |
---|
224 | 226 | | |
---|
225 | | - | func aK () = (aJ() / 1000) |
---|
| 227 | + | func aL () = lastBlock.timestamp |
---|
226 | 228 | | |
---|
227 | 229 | | |
---|
228 | | - | func aL (ar) = { |
---|
229 | | - | let aM = aJ() |
---|
230 | | - | let aN = av(ar) |
---|
231 | | - | let aO = if (((aM - aN) > ag)) |
---|
232 | | - | then $Tuple3(aM, at(ar), 0) |
---|
233 | | - | else $Tuple3(aN, (at(ar) - au(ar)), au(ar)) |
---|
234 | | - | let aP = aO._1 |
---|
235 | | - | let aQ = aO._2 |
---|
236 | | - | let aR = aO._3 |
---|
237 | | - | $Tuple3(aP, aQ, aR) |
---|
| 230 | + | func aM () = (aL() / 1000) |
---|
| 231 | + | |
---|
| 232 | + | |
---|
| 233 | + | func aN (as) = { |
---|
| 234 | + | let aO = aL() |
---|
| 235 | + | let aP = aw(as) |
---|
| 236 | + | let aQ = if (((aO - aP) > ah)) |
---|
| 237 | + | then $Tuple3(aO, au(as), 0) |
---|
| 238 | + | else { |
---|
| 239 | + | let aR = av(as) |
---|
| 240 | + | if (aJ()) |
---|
| 241 | + | then $Tuple3(aP, au(as), aR) |
---|
| 242 | + | else $Tuple3(aP, (au(as) - aR), aR) |
---|
| 243 | + | } |
---|
| 244 | + | let aS = aQ._1 |
---|
| 245 | + | let aT = aQ._2 |
---|
| 246 | + | let aU = aQ._3 |
---|
| 247 | + | $Tuple3(aS, aT, aU) |
---|
238 | 248 | | } |
---|
239 | 249 | | |
---|
240 | 250 | | |
---|
241 | | - | func aS (aT) = { |
---|
242 | | - | let aU = if ((ao() > 0)) |
---|
243 | | - | then aa((aw() + aT), ao()) |
---|
244 | | - | else S |
---|
245 | | - | aU |
---|
| 251 | + | func aV (aW) = { |
---|
| 252 | + | let aX = if ((ap() > 0)) |
---|
| 253 | + | then ab((ax() + aW), ap()) |
---|
| 254 | + | else T |
---|
| 255 | + | aX |
---|
246 | 256 | | } |
---|
247 | 257 | | |
---|
248 | 258 | | |
---|
249 | | - | func aV () = af(aK(), aC()) |
---|
| 259 | + | func aY () = ag(aM(), aD()) |
---|
250 | 260 | | |
---|
251 | 261 | | |
---|
252 | | - | func aW (aX) = if (((ao() + aX) == 0)) |
---|
253 | | - | then az() |
---|
| 262 | + | func aZ (ba) = if (((ap() + ba) == 0)) |
---|
| 263 | + | then aA() |
---|
254 | 264 | | else { |
---|
255 | | - | let aY = (aV() - aA()) |
---|
256 | | - | let aZ = if ((0 > aY)) |
---|
| 265 | + | let bb = (aY() - aB()) |
---|
| 266 | + | let bc = if ((0 > bb)) |
---|
257 | 267 | | then 0 |
---|
258 | | - | else aY |
---|
259 | | - | let ba = aa((aB() * aZ), (ao() + aX)) |
---|
260 | | - | (az() + ba) |
---|
| 268 | + | else bb |
---|
| 269 | + | let bd = ab((aC() * bc), (ap() + ba)) |
---|
| 270 | + | (aA() + bd) |
---|
261 | 271 | | } |
---|
262 | 272 | | |
---|
263 | 273 | | |
---|
264 | | - | func bb (ar,aX) = { |
---|
265 | | - | let bc = (aW(aX) - aF(ar)) |
---|
266 | | - | (ad((aq(ar) + aX), bc) + aE(ar)) |
---|
| 274 | + | func be (as,ba) = { |
---|
| 275 | + | let bf = (aZ(ba) - aG(as)) |
---|
| 276 | + | (ae((ar(as) + ba), bf) + aF(as)) |
---|
267 | 277 | | } |
---|
268 | 278 | | |
---|
269 | 279 | | |
---|
270 | | - | func bd (ar,aX) = { |
---|
271 | | - | let be = aW(aX) |
---|
272 | | - | let bf = aK() |
---|
273 | | - | let bg = if ((ar != "")) |
---|
274 | | - | then $Tuple2(bb(ar, aX), be) |
---|
| 280 | + | func bg (as,ba) = { |
---|
| 281 | + | let bh = aZ(ba) |
---|
| 282 | + | let bi = aM() |
---|
| 283 | + | let bj = if ((as != "")) |
---|
| 284 | + | then $Tuple2(be(as, ba), bh) |
---|
275 | 285 | | else $Tuple2(0, 0) |
---|
276 | | - | let bh = bg._1 |
---|
277 | | - | let bi = bg._2 |
---|
278 | | - | $Tuple4(be, bf, bh, bi) |
---|
| 286 | + | let bk = bj._1 |
---|
| 287 | + | let bl = bj._2 |
---|
| 288 | + | $Tuple4(bh, bi, bk, bl) |
---|
279 | 289 | | } |
---|
280 | 290 | | |
---|
281 | 291 | | |
---|
282 | | - | func bj (bk,bl) = if (((aq(bk) + bl) >= 0)) |
---|
283 | | - | then [IntegerEntry(E(q, bk), (aq(bk) + bl))] |
---|
284 | | - | else throw(((("Vault: can not update user balance. Balance: " + toString(aq(bk))) + " change: ") + toString(bl))) |
---|
| 292 | + | func bm (bn,bo) = if (((ar(bn) + bo) >= 0)) |
---|
| 293 | + | then [IntegerEntry(F(r, bn), (ar(bn) + bo))] |
---|
| 294 | + | else throw(((("Vault: can not update user balance. Balance: " + toString(ar(bn))) + " change: ") + toString(bo))) |
---|
285 | 295 | | |
---|
286 | 296 | | |
---|
287 | | - | func bm (bk,bn) = [IntegerEntry(E(s, bk), bn)] |
---|
| 297 | + | func bp (bn,bq) = [IntegerEntry(F(t, bn), bq)] |
---|
288 | 298 | | |
---|
289 | 299 | | |
---|
290 | | - | func bo (bk,bn) = [IntegerEntry(E(r, bk), bn)] |
---|
| 300 | + | func br (bn,bq) = [IntegerEntry(F(s, bn), bq)] |
---|
291 | 301 | | |
---|
292 | 302 | | |
---|
293 | | - | func bp (bl) = { |
---|
294 | | - | let bq = aw() |
---|
295 | | - | if (((bq + bl) >= 0)) |
---|
296 | | - | then [IntegerEntry(d, (bq + bl))] |
---|
297 | | - | else throw(((("Vault: can not update free balance. Balance: " + toString(bq)) + " change: ") + toString(bl))) |
---|
| 303 | + | func bs (bo) = { |
---|
| 304 | + | let bt = ax() |
---|
| 305 | + | if (((bt + bo) >= 0)) |
---|
| 306 | + | then [IntegerEntry(d, (bt + bo))] |
---|
| 307 | + | else throw(((("Vault: can not update free balance. Balance: " + toString(bt)) + " change: ") + toString(bo))) |
---|
298 | 308 | | } |
---|
299 | 309 | | |
---|
300 | 310 | | |
---|
301 | | - | func br (bl) = { |
---|
302 | | - | let bq = ax() |
---|
303 | | - | if (((bq + bl) >= 0)) |
---|
304 | | - | then [IntegerEntry(c, (bq + bl))] |
---|
305 | | - | else throw(((("Vault: can not update locked balance. Balance: " + toString(bq)) + " change: ") + toString(bl))) |
---|
| 311 | + | func bu (bo) = { |
---|
| 312 | + | let bt = ay() |
---|
| 313 | + | if (((bt + bo) >= 0)) |
---|
| 314 | + | then [IntegerEntry(c, (bt + bo))] |
---|
| 315 | + | else throw(((("Vault: can not update locked balance. Balance: " + toString(bt)) + " change: ") + toString(bo))) |
---|
306 | 316 | | } |
---|
307 | 317 | | |
---|
308 | 318 | | |
---|
309 | | - | func bs (bl) = { |
---|
310 | | - | let bt = (ay() + bl) |
---|
311 | | - | let bu = aa(ae(bt), aw()) |
---|
312 | | - | if ((aG() > bu)) |
---|
313 | | - | then [IntegerEntry(e, bt)] |
---|
314 | | - | else throw(((((((("Vault: can not update excess balance. Balance: " + toString(ay())) + " change: ") + toString(bl)) + " utilization rate: ") + toString(bu)) + " max utilization rate: ") + toString(aG()))) |
---|
| 319 | + | func bv (bo) = { |
---|
| 320 | + | let bw = (az() + bo) |
---|
| 321 | + | let bx = ab(af(bw), ax()) |
---|
| 322 | + | if ((aH() > bx)) |
---|
| 323 | + | then [IntegerEntry(e, bw)] |
---|
| 324 | + | else throw(((((((("Vault: can not update excess balance. Balance: " + toString(az())) + " change: ") + toString(bo)) + " utilization rate: ") + toString(bx)) + " max utilization rate: ") + toString(aH()))) |
---|
315 | 325 | | } |
---|
316 | 326 | | |
---|
317 | 327 | | |
---|
318 | | - | func bv (bl) = [IntegerEntry(a, (ao() + bl))] |
---|
| 328 | + | func by (bo) = [IntegerEntry(a, (ap() + bo))] |
---|
319 | 329 | | |
---|
320 | 330 | | |
---|
321 | | - | func bw (bn) = [IntegerEntry(j, bn)] |
---|
| 331 | + | func bz (bq) = [IntegerEntry(k, bq)] |
---|
322 | 332 | | |
---|
323 | 333 | | |
---|
324 | | - | func bx (bk,by,bz) = [IntegerEntry(E(t, bk), by), IntegerEntry(E(u, bk), bz)] |
---|
| 334 | + | func bA (bn,bB,bC) = [IntegerEntry(F(u, bn), bB), IntegerEntry(F(v, bn), bC)] |
---|
325 | 335 | | |
---|
326 | 336 | | |
---|
327 | | - | func bA (bB) = [IntegerEntry(b, (aD() + bB))] |
---|
| 337 | + | func bD (bE) = [IntegerEntry(b, (aE() + bE))] |
---|
328 | 338 | | |
---|
329 | 339 | | |
---|
330 | | - | func bC (bD) = [IntegerEntry(m, bD)] |
---|
| 340 | + | func bF (bG) = [IntegerEntry(n, bG)] |
---|
331 | 341 | | |
---|
332 | 342 | | |
---|
333 | | - | func bE (bF,bG) = [IntegerEntry(k, bF), IntegerEntry(n, bG)] |
---|
| 343 | + | func bH (bI,bJ) = [IntegerEntry(l, bI), IntegerEntry(o, bJ)] |
---|
334 | 344 | | |
---|
335 | 345 | | |
---|
336 | | - | func bH (bI) = [IntegerEntry(l, bI)] |
---|
| 346 | + | func bK (bL) = [IntegerEntry(m, bL)] |
---|
337 | 347 | | |
---|
338 | 348 | | |
---|
339 | | - | func bJ (ar,bK,bL) = [IntegerEntry(E(p, ar), bK), IntegerEntry(E(o, ar), bL)] |
---|
| 349 | + | func bM (as,bN,bO) = [IntegerEntry(F(q, as), bN), IntegerEntry(F(p, as), bO)] |
---|
340 | 350 | | |
---|
341 | 351 | | |
---|
342 | | - | @Callable(bM) |
---|
343 | | - | func changeSettings (bN,bO) = if (if (if (if (!(aI())) |
---|
| 352 | + | @Callable(bP) |
---|
| 353 | + | func changeSettings (bQ,bR,bS) = if (if (if (if (!(aK())) |
---|
344 | 354 | | then true |
---|
345 | | - | else (bM.caller != I())) |
---|
| 355 | + | else (bP.caller != J())) |
---|
346 | 356 | | then true |
---|
347 | | - | else if ((0 > bN)) |
---|
| 357 | + | else if ((0 > bQ)) |
---|
348 | 358 | | then true |
---|
349 | | - | else (bN > S)) |
---|
| 359 | + | else (bQ > T)) |
---|
350 | 360 | | then true |
---|
351 | | - | else if ((0 > bO)) |
---|
| 361 | + | else if ((0 > bR)) |
---|
352 | 362 | | then true |
---|
353 | | - | else (bO > S)) |
---|
| 363 | + | else (bR > T)) |
---|
354 | 364 | | then throw("Invalid changeSettings params") |
---|
355 | | - | else [IntegerEntry(h, bN), IntegerEntry(i, bO)] |
---|
| 365 | + | else [IntegerEntry(h, bQ), IntegerEntry(i, bR), BooleanEntry(j, bS)] |
---|
356 | 366 | | |
---|
357 | 367 | | |
---|
358 | 368 | | |
---|
359 | | - | @Callable(bM) |
---|
360 | | - | func initialize (bP,bQ,bN) = if (if (if (if (aI()) |
---|
| 369 | + | @Callable(bP) |
---|
| 370 | + | func initialize (bT,bU,bQ) = if (if (if (if (aK()) |
---|
361 | 371 | | then true |
---|
362 | | - | else (bM.caller != this)) |
---|
| 372 | + | else (bP.caller != this)) |
---|
363 | 373 | | then true |
---|
364 | | - | else (0 > bN)) |
---|
| 374 | + | else (0 > bQ)) |
---|
365 | 375 | | then true |
---|
366 | | - | else (bN > S)) |
---|
| 376 | + | else (bQ > T)) |
---|
367 | 377 | | then throw("Unable to initialize") |
---|
368 | 378 | | else { |
---|
369 | | - | let Y = if ((bQ == "WAVES")) |
---|
| 379 | + | let Z = if ((bU == "WAVES")) |
---|
370 | 380 | | then 8 |
---|
371 | 381 | | else { |
---|
372 | | - | let bR = valueOrErrorMessage(assetInfo(fromBase58String(bQ)), ("Invalid token id: " + bQ)) |
---|
373 | | - | bR.decimals |
---|
| 382 | + | let bV = valueOrErrorMessage(assetInfo(fromBase58String(bU)), ("Invalid token id: " + bU)) |
---|
| 383 | + | bV.decimals |
---|
374 | 384 | | } |
---|
375 | | - | [StringEntry(w, toString(valueOrErrorMessage(addressFromString(bP), "Invalid coordinator address"))), StringEntry(f, bQ), IntegerEntry(g, Y), IntegerEntry(h, bN), BooleanEntry(v, true)] |
---|
| 385 | + | [StringEntry(x, toString(valueOrErrorMessage(addressFromString(bT), "Invalid coordinator address"))), StringEntry(f, bU), IntegerEntry(g, Z), IntegerEntry(h, bQ), BooleanEntry(w, true)] |
---|
376 | 386 | | } |
---|
377 | 387 | | |
---|
378 | 388 | | |
---|
379 | 389 | | |
---|
380 | | - | @Callable(bM) |
---|
| 390 | + | @Callable(bP) |
---|
381 | 391 | | func stake () = { |
---|
382 | | - | let ar = toString(bM.caller) |
---|
383 | | - | let X = Z(bM.payments[0].amount) |
---|
384 | | - | if (if (if ((bM.payments[0].assetId != O())) |
---|
| 392 | + | let as = toString(bP.caller) |
---|
| 393 | + | let Y = aa(bP.payments[0].amount) |
---|
| 394 | + | if (if (if ((bP.payments[0].assetId != P())) |
---|
385 | 395 | | then true |
---|
386 | | - | else (size(bM.payments) != 1)) |
---|
| 396 | + | else (size(bP.payments) != 1)) |
---|
387 | 397 | | then true |
---|
388 | | - | else !(aI())) |
---|
| 398 | + | else !(aK())) |
---|
389 | 399 | | then throw("Invalid call to stake") |
---|
390 | 400 | | else { |
---|
391 | | - | let bS = bd(ar, 0) |
---|
392 | | - | let be = bS._1 |
---|
393 | | - | let bf = bS._2 |
---|
394 | | - | let bh = bS._3 |
---|
395 | | - | let bi = bS._4 |
---|
396 | | - | let bT = ap() |
---|
397 | | - | let bU = as(ar) |
---|
398 | | - | let bV = aa(X, bT) |
---|
399 | | - | let bW = aa((ad(bV, bT) + ad(aq(ar), bU)), (bV + aq(ar))) |
---|
400 | | - | let bX = (bV + aq(ar)) |
---|
401 | | - | let bY = ad(bX, aH()) |
---|
402 | | - | let bZ = invoke(R(), "deposit", nil, [AttachedPayment(O(), W(X))]) |
---|
403 | | - | if ((bZ == bZ)) |
---|
| 401 | + | let bW = bg(as, 0) |
---|
| 402 | + | let bh = bW._1 |
---|
| 403 | + | let bi = bW._2 |
---|
| 404 | + | let bk = bW._3 |
---|
| 405 | + | let bl = bW._4 |
---|
| 406 | + | let bX = aq() |
---|
| 407 | + | let bY = at(as) |
---|
| 408 | + | let bZ = ab(Y, bX) |
---|
| 409 | + | let ca = ab((ae(bZ, bX) + ae(ar(as), bY)), (bZ + ar(as))) |
---|
| 410 | + | let cb = (bZ + ar(as)) |
---|
| 411 | + | let cc = ae(cb, aI()) |
---|
| 412 | + | let cd = invoke(S(), "deposit", nil, [AttachedPayment(P(), X(Y))]) |
---|
| 413 | + | if ((cd == cd)) |
---|
404 | 414 | | then { |
---|
405 | | - | let ca = if ((aG() > 0)) |
---|
406 | | - | then invoke(K(), "notifyVaultBalanceChange", [N(), X], nil) |
---|
| 415 | + | let ce = if ((aH() > 0)) |
---|
| 416 | + | then invoke(L(), "notifyVaultBalanceChange", [O(), Y], nil) |
---|
407 | 417 | | else nil |
---|
408 | | - | if ((ca == ca)) |
---|
409 | | - | then (((((((bJ(ar, bh, bi) ++ bH(be)) ++ bE(bf, aC())) ++ bp(X)) ++ bj(ar, bV)) ++ bo(ar, bW)) ++ bm(ar, bY)) ++ bv(bV)) |
---|
| 418 | + | if ((ce == ce)) |
---|
| 419 | + | then (((((((bM(as, bk, bl) ++ bK(bh)) ++ bH(bi, aD())) ++ bs(Y)) ++ bm(as, bZ)) ++ br(as, ca)) ++ bp(as, cc)) ++ by(bZ)) |
---|
410 | 420 | | else throw("Strict value is not equal to itself.") |
---|
411 | 421 | | } |
---|
412 | 422 | | else throw("Strict value is not equal to itself.") |
---|
|
415 | 425 | | |
---|
416 | 426 | | |
---|
417 | 427 | | |
---|
418 | | - | @Callable(bM) |
---|
419 | | - | func unStake (X) = { |
---|
420 | | - | let ar = toString(bM.caller) |
---|
421 | | - | let cb = Z(X) |
---|
422 | | - | if (if (if ((bM.payments != nil)) |
---|
| 428 | + | @Callable(bP) |
---|
| 429 | + | func unStake (Y) = { |
---|
| 430 | + | let as = toString(bP.caller) |
---|
| 431 | + | let cf = aa(Y) |
---|
| 432 | + | if (if (if ((bP.payments != nil)) |
---|
423 | 433 | | then true |
---|
424 | | - | else (0 >= cb)) |
---|
| 434 | + | else (0 >= cf)) |
---|
425 | 435 | | then true |
---|
426 | | - | else !(aI())) |
---|
| 436 | + | else !(aK())) |
---|
427 | 437 | | then throw("Invalid call to unStake") |
---|
428 | 438 | | else { |
---|
429 | | - | let cc = bd(ar, 0) |
---|
430 | | - | let be = cc._1 |
---|
431 | | - | let bf = cc._2 |
---|
432 | | - | let bh = cc._3 |
---|
433 | | - | let bi = cc._4 |
---|
434 | | - | let cd = aL(ar) |
---|
435 | | - | let aP = cd._1 |
---|
436 | | - | let aQ = cd._2 |
---|
437 | | - | let aR = cd._3 |
---|
438 | | - | let bV = aa(cb, ap()) |
---|
439 | | - | if ((bV > aQ)) |
---|
| 439 | + | let cg = bg(as, 0) |
---|
| 440 | + | let bh = cg._1 |
---|
| 441 | + | let bi = cg._2 |
---|
| 442 | + | let bk = cg._3 |
---|
| 443 | + | let bl = cg._4 |
---|
| 444 | + | let ch = aN(as) |
---|
| 445 | + | let aS = ch._1 |
---|
| 446 | + | let aT = ch._2 |
---|
| 447 | + | let aU = ch._3 |
---|
| 448 | + | let bZ = ab(cf, aq()) |
---|
| 449 | + | if ((bZ > aT)) |
---|
440 | 450 | | then throw("Invalid call to unStake: withdraw over limit") |
---|
441 | 451 | | else { |
---|
442 | | - | let ce = (aR + bV) |
---|
443 | | - | if ((cb > aw())) |
---|
| 452 | + | let ci = (aU + bZ) |
---|
| 453 | + | if ((cf > ax())) |
---|
444 | 454 | | then throw("Invalid call to unStake: balance too low") |
---|
445 | 455 | | else { |
---|
446 | | - | let cf = invoke(R(), "withdraw", [N(), W(cb)], nil) |
---|
447 | | - | if ((cf == cf)) |
---|
| 456 | + | let cj = invoke(S(), "withdraw", [O(), X(cf)], nil) |
---|
| 457 | + | if ((cj == cj)) |
---|
448 | 458 | | then { |
---|
449 | | - | let ca = if ((aG() > 0)) |
---|
450 | | - | then invoke(K(), "notifyVaultBalanceChange", [N(), -(cb)], nil) |
---|
| 459 | + | let ce = if ((aH() > 0)) |
---|
| 460 | + | then invoke(L(), "notifyVaultBalanceChange", [O(), -(cf)], nil) |
---|
451 | 461 | | else nil |
---|
452 | | - | if ((ca == ca)) |
---|
453 | | - | then (((((((bJ(ar, bh, bi) ++ bH(be)) ++ bE(bf, aC())) ++ bp(-(cb))) ++ bj(ar, -(bV))) ++ bv(-(bV))) ++ bx(ar, aP, ce)) ++ [ScriptTransfer(bM.caller, W(cb), O())]) |
---|
| 462 | + | if ((ce == ce)) |
---|
| 463 | + | then (((((((bM(as, bk, bl) ++ bK(bh)) ++ bH(bi, aD())) ++ bs(-(cf))) ++ bm(as, -(bZ))) ++ by(-(bZ))) ++ bA(as, aS, ci)) ++ [ScriptTransfer(bP.caller, X(cf), P())]) |
---|
454 | 464 | | else throw("Strict value is not equal to itself.") |
---|
455 | 465 | | } |
---|
456 | 466 | | else throw("Strict value is not equal to itself.") |
---|
|
461 | 471 | | |
---|
462 | 472 | | |
---|
463 | 473 | | |
---|
464 | | - | @Callable(bM) |
---|
| 474 | + | @Callable(bP) |
---|
465 | 475 | | func withdrawRewards () = { |
---|
466 | | - | let ar = toString(bM.caller) |
---|
467 | | - | let cg = bd(ar, 0) |
---|
468 | | - | let be = cg._1 |
---|
469 | | - | let bf = cg._2 |
---|
470 | | - | let bh = cg._3 |
---|
471 | | - | let bi = cg._4 |
---|
472 | | - | if (if ((0 >= bh)) |
---|
| 476 | + | let as = toString(bP.caller) |
---|
| 477 | + | let ck = bg(as, 0) |
---|
| 478 | + | let bh = ck._1 |
---|
| 479 | + | let bi = ck._2 |
---|
| 480 | + | let bk = ck._3 |
---|
| 481 | + | let bl = ck._4 |
---|
| 482 | + | if (if ((0 >= bk)) |
---|
473 | 483 | | then true |
---|
474 | | - | else !(aI())) |
---|
| 484 | + | else !(aK())) |
---|
475 | 485 | | then throw("No reward: Vault") |
---|
476 | | - | else ((((bJ(ar, 0, bi) ++ bH(be)) ++ bE(bf, aC())) ++ bA(-(bh))) ++ [ScriptTransfer(bM.caller, bh, L())]) |
---|
| 486 | + | else ((((bM(as, 0, bl) ++ bK(bh)) ++ bH(bi, aD())) ++ bD(-(bk))) ++ [ScriptTransfer(bP.caller, bk, M())]) |
---|
477 | 487 | | } |
---|
478 | 488 | | |
---|
479 | 489 | | |
---|
480 | 490 | | |
---|
481 | | - | @Callable(bM) |
---|
| 491 | + | @Callable(bP) |
---|
482 | 492 | | func addFree () = { |
---|
483 | | - | let X = Z(bM.payments[0].amount) |
---|
484 | | - | if (if (if (if ((bM.payments[0].assetId != O())) |
---|
| 493 | + | let Y = aa(bP.payments[0].amount) |
---|
| 494 | + | if (if (if (if ((bP.payments[0].assetId != P())) |
---|
485 | 495 | | then true |
---|
486 | | - | else (size(bM.payments) != 1)) |
---|
| 496 | + | else (size(bP.payments) != 1)) |
---|
487 | 497 | | then true |
---|
488 | | - | else !(aI())) |
---|
| 498 | + | else !(aK())) |
---|
489 | 499 | | then true |
---|
490 | | - | else !(if (if (J(toString(bM.caller))) |
---|
| 500 | + | else !(if (if (K(toString(bP.caller))) |
---|
491 | 501 | | then true |
---|
492 | | - | else (bM.caller == K())) |
---|
| 502 | + | else (bP.caller == L())) |
---|
493 | 503 | | then true |
---|
494 | | - | else (bM.caller == I()))) |
---|
| 504 | + | else (bP.caller == J()))) |
---|
495 | 505 | | then throw("Invalid addFree params") |
---|
496 | 506 | | else { |
---|
497 | | - | let aU = aS(X) |
---|
498 | | - | let bZ = invoke(R(), "deposit", nil, [AttachedPayment(O(), W(X))]) |
---|
499 | | - | if ((bZ == bZ)) |
---|
500 | | - | then (bp(X) ++ bw(aU)) |
---|
| 507 | + | let aX = aV(Y) |
---|
| 508 | + | let cd = invoke(S(), "deposit", nil, [AttachedPayment(P(), X(Y))]) |
---|
| 509 | + | if ((cd == cd)) |
---|
| 510 | + | then (bs(Y) ++ bz(aX)) |
---|
501 | 511 | | else throw("Strict value is not equal to itself.") |
---|
502 | 512 | | } |
---|
503 | 513 | | } |
---|
504 | 514 | | |
---|
505 | 515 | | |
---|
506 | 516 | | |
---|
507 | | - | @Callable(bM) |
---|
| 517 | + | @Callable(bP) |
---|
508 | 518 | | func addLocked () = { |
---|
509 | | - | let X = Z(bM.payments[0].amount) |
---|
510 | | - | if (if (if (if ((bM.payments[0].assetId != O())) |
---|
| 519 | + | let Y = aa(bP.payments[0].amount) |
---|
| 520 | + | if (if (if (if ((bP.payments[0].assetId != P())) |
---|
511 | 521 | | then true |
---|
512 | | - | else (size(bM.payments) != 1)) |
---|
| 522 | + | else (size(bP.payments) != 1)) |
---|
513 | 523 | | then true |
---|
514 | | - | else !(aI())) |
---|
| 524 | + | else !(aK())) |
---|
515 | 525 | | then true |
---|
516 | | - | else !(if (J(toString(bM.caller))) |
---|
| 526 | + | else !(if (K(toString(bP.caller))) |
---|
517 | 527 | | then true |
---|
518 | | - | else (bM.caller == I()))) |
---|
| 528 | + | else (bP.caller == J()))) |
---|
519 | 529 | | then throw("Invalid addLocked params") |
---|
520 | 530 | | else { |
---|
521 | | - | let cf = invoke(R(), "deposit", nil, [AttachedPayment(O(), W(X))]) |
---|
522 | | - | if ((cf == cf)) |
---|
523 | | - | then br(X) |
---|
| 531 | + | let cj = invoke(S(), "deposit", nil, [AttachedPayment(P(), X(Y))]) |
---|
| 532 | + | if ((cj == cj)) |
---|
| 533 | + | then bu(Y) |
---|
524 | 534 | | else throw("Strict value is not equal to itself.") |
---|
525 | 535 | | } |
---|
526 | 536 | | } |
---|
527 | 537 | | |
---|
528 | 538 | | |
---|
529 | 539 | | |
---|
530 | | - | @Callable(bM) |
---|
531 | | - | func exchangeFreeAndLocked (X) = if (if (!(aI())) |
---|
| 540 | + | @Callable(bP) |
---|
| 541 | + | func exchangeFreeAndLocked (Y) = if (if (!(aK())) |
---|
532 | 542 | | then true |
---|
533 | | - | else if (!(J(toString(bM.caller)))) |
---|
534 | | - | then (bM.caller != I()) |
---|
| 543 | + | else if (!(K(toString(bP.caller)))) |
---|
| 544 | + | then (bP.caller != J()) |
---|
535 | 545 | | else false) |
---|
536 | 546 | | then throw("Invalid exchangeFreeAndLocked params") |
---|
537 | 547 | | else { |
---|
538 | | - | let cb = Z(X) |
---|
539 | | - | let aU = aS(-(cb)) |
---|
540 | | - | ((br(cb) ++ bp(-(cb))) ++ bw(aU)) |
---|
| 548 | + | let cf = aa(Y) |
---|
| 549 | + | let aX = aV(-(cf)) |
---|
| 550 | + | ((bu(cf) ++ bs(-(cf))) ++ bz(aX)) |
---|
541 | 551 | | } |
---|
542 | 552 | | |
---|
543 | 553 | | |
---|
544 | 554 | | |
---|
545 | | - | @Callable(bM) |
---|
546 | | - | func withdrawLocked (X) = if (if (if (!(aI())) |
---|
| 555 | + | @Callable(bP) |
---|
| 556 | + | func withdrawLocked (Y) = if (if (if (!(aK())) |
---|
547 | 557 | | then true |
---|
548 | | - | else (0 >= X)) |
---|
| 558 | + | else (0 >= Y)) |
---|
549 | 559 | | then true |
---|
550 | | - | else !(J(toString(bM.caller)))) |
---|
| 560 | + | else !(K(toString(bP.caller)))) |
---|
551 | 561 | | then throw("Invalid withdrawLocked params") |
---|
552 | 562 | | else { |
---|
553 | | - | let cb = Z(X) |
---|
554 | | - | let cf = invoke(R(), "withdraw", [N(), W(cb)], nil) |
---|
555 | | - | if ((cf == cf)) |
---|
556 | | - | then (br(-(cb)) ++ [ScriptTransfer(bM.caller, W(cb), O())]) |
---|
| 563 | + | let cf = aa(Y) |
---|
| 564 | + | let cj = invoke(S(), "withdraw", [O(), X(cf)], nil) |
---|
| 565 | + | if ((cj == cj)) |
---|
| 566 | + | then (bu(-(cf)) ++ [ScriptTransfer(bP.caller, X(cf), P())]) |
---|
557 | 567 | | else throw("Strict value is not equal to itself.") |
---|
558 | 568 | | } |
---|
559 | 569 | | |
---|
560 | 570 | | |
---|
561 | 571 | | |
---|
562 | | - | @Callable(bM) |
---|
563 | | - | func borrow (X) = if (if (if (!(aI())) |
---|
| 572 | + | @Callable(bP) |
---|
| 573 | + | func borrow (Y) = if (if (if (!(aK())) |
---|
564 | 574 | | then true |
---|
565 | | - | else (0 >= X)) |
---|
| 575 | + | else (0 >= Y)) |
---|
566 | 576 | | then true |
---|
567 | | - | else !((bM.caller == K()))) |
---|
| 577 | + | else !((bP.caller == L()))) |
---|
568 | 578 | | then throw("Invalid borrow params") |
---|
569 | 579 | | else { |
---|
570 | | - | let cb = Z(X) |
---|
571 | | - | let cf = invoke(R(), "withdraw", [N(), W(cb)], nil) |
---|
572 | | - | if ((cf == cf)) |
---|
573 | | - | then (bs(-(cb)) ++ [ScriptTransfer(bM.caller, W(cb), O())]) |
---|
| 580 | + | let cf = aa(Y) |
---|
| 581 | + | let cj = invoke(S(), "withdraw", [O(), X(cf)], nil) |
---|
| 582 | + | if ((cj == cj)) |
---|
| 583 | + | then (bv(-(cf)) ++ [ScriptTransfer(bP.caller, X(cf), P())]) |
---|
574 | 584 | | else throw("Strict value is not equal to itself.") |
---|
575 | 585 | | } |
---|
576 | 586 | | |
---|
577 | 587 | | |
---|
578 | 588 | | |
---|
579 | | - | @Callable(bM) |
---|
| 589 | + | @Callable(bP) |
---|
580 | 590 | | func repay () = { |
---|
581 | | - | let X = Z(bM.payments[0].amount) |
---|
582 | | - | if (if (if (if ((bM.payments[0].assetId != O())) |
---|
| 591 | + | let Y = aa(bP.payments[0].amount) |
---|
| 592 | + | if (if (if (if ((bP.payments[0].assetId != P())) |
---|
583 | 593 | | then true |
---|
584 | | - | else (size(bM.payments) != 1)) |
---|
| 594 | + | else (size(bP.payments) != 1)) |
---|
585 | 595 | | then true |
---|
586 | | - | else !(aI())) |
---|
| 596 | + | else !(aK())) |
---|
587 | 597 | | then true |
---|
588 | | - | else !(if ((bM.caller == K())) |
---|
| 598 | + | else !(if ((bP.caller == L())) |
---|
589 | 599 | | then true |
---|
590 | | - | else (bM.caller == I()))) |
---|
| 600 | + | else (bP.caller == J()))) |
---|
591 | 601 | | then throw("Invalid repay params") |
---|
592 | 602 | | else { |
---|
593 | | - | let cf = invoke(R(), "deposit", nil, [AttachedPayment(O(), W(X))]) |
---|
594 | | - | if ((cf == cf)) |
---|
595 | | - | then bs(X) |
---|
| 603 | + | let cj = invoke(S(), "deposit", nil, [AttachedPayment(P(), X(Y))]) |
---|
| 604 | + | if ((cj == cj)) |
---|
| 605 | + | then bv(Y) |
---|
596 | 606 | | else throw("Strict value is not equal to itself.") |
---|
597 | 607 | | } |
---|
598 | 608 | | } |
---|
599 | 609 | | |
---|
600 | 610 | | |
---|
601 | 611 | | |
---|
602 | | - | @Callable(bM) |
---|
603 | | - | func addRewards () = if (if (if ((bM.payments[0].assetId != L())) |
---|
| 612 | + | @Callable(bP) |
---|
| 613 | + | func addRewards () = if (if (if ((bP.payments[0].assetId != M())) |
---|
604 | 614 | | then true |
---|
605 | | - | else (size(bM.payments) != 1)) |
---|
| 615 | + | else (size(bP.payments) != 1)) |
---|
606 | 616 | | then true |
---|
607 | | - | else !(aI())) |
---|
| 617 | + | else !(aK())) |
---|
608 | 618 | | then throw("Invalid addRewards params") |
---|
609 | 619 | | else { |
---|
610 | | - | let bK = bM.payments[0].amount |
---|
611 | | - | let be = bd(U, V)._1 |
---|
612 | | - | let ch = aK() |
---|
613 | | - | let ci = if ((ch > aC())) |
---|
614 | | - | then (bK / T) |
---|
| 620 | + | let bN = bP.payments[0].amount |
---|
| 621 | + | let bh = bg(V, W)._1 |
---|
| 622 | + | let cl = aM() |
---|
| 623 | + | let cm = if ((cl > aD())) |
---|
| 624 | + | then (bN / U) |
---|
615 | 625 | | else { |
---|
616 | | - | let cj = (aC() - ch) |
---|
617 | | - | let ck = (aB() * cj) |
---|
618 | | - | ((bK + ck) / T) |
---|
| 626 | + | let cn = (aD() - cl) |
---|
| 627 | + | let co = (aC() * cn) |
---|
| 628 | + | ((bN + co) / U) |
---|
619 | 629 | | } |
---|
620 | | - | (((bC(ci) ++ bH(be)) ++ bA(bK)) ++ bE(ch, (ch + T))) |
---|
| 630 | + | (((bF(cm) ++ bK(bh)) ++ bD(bN)) ++ bH(cl, (cl + U))) |
---|
621 | 631 | | } |
---|
622 | 632 | | |
---|
623 | 633 | | |
---|
624 | 634 | | |
---|
625 | | - | @Callable(bM) |
---|
| 635 | + | @Callable(bP) |
---|
626 | 636 | | func ackRewards () = { |
---|
627 | | - | let cl = invoke(R(), "claimProfit", [N()], nil) |
---|
628 | | - | if ((cl == cl)) |
---|
| 637 | + | let cp = invoke(S(), "claimProfit", [O()], nil) |
---|
| 638 | + | if ((cp == cp)) |
---|
629 | 639 | | then { |
---|
630 | | - | let cm = { |
---|
631 | | - | let cn = cl |
---|
632 | | - | if ($isInstanceOf(cn, "Int")) |
---|
| 640 | + | let cq = { |
---|
| 641 | + | let cr = cp |
---|
| 642 | + | if ($isInstanceOf(cr, "Int")) |
---|
633 | 643 | | then { |
---|
634 | | - | let co = cn |
---|
635 | | - | Z(co) |
---|
| 644 | + | let cs = cr |
---|
| 645 | + | aa(cs) |
---|
636 | 646 | | } |
---|
637 | 647 | | else throw("Invalid claimProfit response") |
---|
638 | 648 | | } |
---|
639 | | - | let cp = if ((cm > 0)) |
---|
| 649 | + | let ct = if ((cq > 0)) |
---|
640 | 650 | | then { |
---|
641 | | - | let aU = aS(cm) |
---|
642 | | - | let bZ = invoke(R(), "deposit", nil, [AttachedPayment(O(), W(cm))]) |
---|
643 | | - | if ((bZ == bZ)) |
---|
644 | | - | then (bp(cm) ++ bw(aU)) |
---|
| 651 | + | let aX = aV(cq) |
---|
| 652 | + | let cd = invoke(S(), "deposit", nil, [AttachedPayment(P(), X(cq))]) |
---|
| 653 | + | if ((cd == cd)) |
---|
| 654 | + | then (bs(cq) ++ bz(aX)) |
---|
645 | 655 | | else throw("Strict value is not equal to itself.") |
---|
646 | 656 | | } |
---|
647 | 657 | | else nil |
---|
648 | | - | if ((cp == cp)) |
---|
649 | | - | then cp |
---|
| 658 | + | if ((ct == ct)) |
---|
| 659 | + | then ct |
---|
650 | 660 | | else throw("Strict value is not equal to itself.") |
---|
651 | 661 | | } |
---|
652 | 662 | | else throw("Strict value is not equal to itself.") |
---|
|
654 | 664 | | |
---|
655 | 665 | | |
---|
656 | 666 | | |
---|
657 | | - | @Callable(bM) |
---|
658 | | - | func view_reward (ar) = { |
---|
659 | | - | let bq = aq(ar) |
---|
660 | | - | let cq = ad(as(ar), bq) |
---|
661 | | - | let cr = ad(ap(), bq) |
---|
662 | | - | let cs = (cr - cq) |
---|
663 | | - | throw(toString(cs)) |
---|
| 667 | + | @Callable(bP) |
---|
| 668 | + | func view_reward (as) = { |
---|
| 669 | + | let bt = ar(as) |
---|
| 670 | + | let cu = ae(at(as), bt) |
---|
| 671 | + | let cv = ae(aq(), bt) |
---|
| 672 | + | let cw = (cv - cu) |
---|
| 673 | + | throw(toString(cw)) |
---|
664 | 674 | | } |
---|
665 | 675 | | |
---|
666 | 676 | | |
---|
667 | 677 | | |
---|
668 | | - | @Callable(bM) |
---|
669 | | - | func view_stakingReward (ar) = { |
---|
670 | | - | let bh = bd(ar, 0)._3 |
---|
671 | | - | throw(toString(W(bh))) |
---|
| 678 | + | @Callable(bP) |
---|
| 679 | + | func view_stakingReward (as) = { |
---|
| 680 | + | let bk = bg(as, 0)._3 |
---|
| 681 | + | throw(toString(X(bk))) |
---|
672 | 682 | | } |
---|
673 | 683 | | |
---|
674 | 684 | | |
---|
675 | 685 | | |
---|
676 | | - | @Callable(bM) |
---|
677 | | - | func view_withdrawLimit (ar) = { |
---|
678 | | - | let aQ = aL(ar)._2 |
---|
679 | | - | let ct = W(ad(aQ, ap())) |
---|
680 | | - | throw(toString(ct)) |
---|
| 686 | + | @Callable(bP) |
---|
| 687 | + | func view_withdrawLimit (as) = { |
---|
| 688 | + | let aT = aN(as)._2 |
---|
| 689 | + | let cx = X(ae(aT, aq())) |
---|
| 690 | + | throw(toString(cx)) |
---|
681 | 691 | | } |
---|
682 | 692 | | |
---|
683 | 693 | | |
---|
684 | | - | @Verifier(cu) |
---|
685 | | - | func cv () = { |
---|
686 | | - | let cw = getString(this, w) |
---|
687 | | - | if (isDefined(cw)) |
---|
| 694 | + | @Verifier(cy) |
---|
| 695 | + | func cz () = { |
---|
| 696 | + | let cA = getString(this, x) |
---|
| 697 | + | if (isDefined(cA)) |
---|
688 | 698 | | then { |
---|
689 | | - | let cx = getString(addressFromStringValue(value(cw)), A) |
---|
690 | | - | if (isDefined(cx)) |
---|
691 | | - | then valueOrElse(getBoolean(addressFromStringValue(value(cx)), ((("status_" + toString(this)) + "_") + toBase58String(cu.id))), false) |
---|
| 699 | + | let cB = getString(addressFromStringValue(value(cA)), B) |
---|
| 700 | + | if (isDefined(cB)) |
---|
| 701 | + | then valueOrElse(getBoolean(addressFromStringValue(value(cB)), ((("status_" + toString(this)) + "_") + toBase58String(cy.id))), false) |
---|
692 | 702 | | else throw("unable to verify: admin not set in coordinator") |
---|
693 | 703 | | } |
---|
694 | | - | else sigVerify(cu.bodyBytes, cu.proofs[0], cu.senderPublicKey) |
---|
| 704 | + | else sigVerify(cy.bodyBytes, cy.proofs[0], cy.senderPublicKey) |
---|
695 | 705 | | } |
---|
696 | 706 | | |
---|
Full:
Old | New | | Differences |
---|
1 | 1 | | {-# STDLIB_VERSION 6 #-} |
---|
2 | 2 | | {-# SCRIPT_TYPE ACCOUNT #-} |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
4 | 4 | | let a = "k_totalSupply" |
---|
5 | 5 | | |
---|
6 | 6 | | let b = "k_rewardBalance" |
---|
7 | 7 | | |
---|
8 | 8 | | let c = "k_lockedBalance" |
---|
9 | 9 | | |
---|
10 | 10 | | let d = "k_freeBalance" |
---|
11 | 11 | | |
---|
12 | 12 | | let e = "k_excessBalance" |
---|
13 | 13 | | |
---|
14 | 14 | | let f = "k_vaultAsset" |
---|
15 | 15 | | |
---|
16 | 16 | | let g = "k_vaultAssetDecimals" |
---|
17 | 17 | | |
---|
18 | 18 | | let h = "k_maxSpotUtilization" |
---|
19 | 19 | | |
---|
20 | 20 | | let i = "k_withdrawPerPeriod" |
---|
21 | 21 | | |
---|
22 | | - | let j = "k_rate" |
---|
| 22 | + | let j = "k_withdrawUnlimited" |
---|
23 | 23 | | |
---|
24 | | - | let k = "k_lastUpdateTime" |
---|
| 24 | + | let k = "k_rate" |
---|
25 | 25 | | |
---|
26 | | - | let l = "k_rewardPerTokenStored" |
---|
| 26 | + | let l = "k_lastUpdateTime" |
---|
27 | 27 | | |
---|
28 | | - | let m = "k_rewardRate" |
---|
| 28 | + | let m = "k_rewardPerTokenStored" |
---|
29 | 29 | | |
---|
30 | | - | let n = "k_periodFinish" |
---|
| 30 | + | let n = "k_rewardRate" |
---|
31 | 31 | | |
---|
32 | | - | let o = "k_userRewardPerToken" |
---|
| 32 | + | let o = "k_periodFinish" |
---|
33 | 33 | | |
---|
34 | | - | let p = "k_userReward" |
---|
| 34 | + | let p = "k_userRewardPerToken" |
---|
35 | 35 | | |
---|
36 | | - | let q = "k_balance" |
---|
| 36 | + | let q = "k_userReward" |
---|
37 | 37 | | |
---|
38 | | - | let r = "k_average_rate" |
---|
| 38 | + | let r = "k_balance" |
---|
39 | 39 | | |
---|
40 | | - | let s = "k_withdraw_limit" |
---|
| 40 | + | let s = "k_average_rate" |
---|
41 | 41 | | |
---|
42 | | - | let t = "k_last_withdraw_date" |
---|
| 42 | + | let t = "k_withdraw_limit" |
---|
43 | 43 | | |
---|
44 | | - | let u = "k_withdraw_in_period" |
---|
| 44 | + | let u = "k_last_withdraw_date" |
---|
45 | 45 | | |
---|
46 | | - | let v = "k_initialized" |
---|
| 46 | + | let v = "k_withdraw_in_period" |
---|
47 | 47 | | |
---|
48 | | - | let w = "k_coordinatorAddress" |
---|
| 48 | + | let w = "k_initialized" |
---|
49 | 49 | | |
---|
50 | | - | let x = "k_amm" |
---|
| 50 | + | let x = "k_coordinatorAddress" |
---|
51 | 51 | | |
---|
52 | | - | let y = "k_gov_asset" |
---|
| 52 | + | let y = "k_amm" |
---|
53 | 53 | | |
---|
54 | | - | let z = "k_quote_asset" |
---|
| 54 | + | let z = "k_gov_asset" |
---|
55 | 55 | | |
---|
56 | | - | let A = "k_admin_address" |
---|
| 56 | + | let A = "k_quote_asset" |
---|
57 | 57 | | |
---|
58 | | - | let B = "k_manager_address" |
---|
| 58 | + | let B = "k_admin_address" |
---|
59 | 59 | | |
---|
60 | | - | let C = "k_spot_address" |
---|
| 60 | + | let C = "k_manager_address" |
---|
61 | 61 | | |
---|
62 | | - | let D = "k_collateral_address" |
---|
| 62 | + | let D = "k_spot_address" |
---|
63 | 63 | | |
---|
64 | | - | func E (F,G) = ((F + "_") + G) |
---|
| 64 | + | let E = "k_collateral_address" |
---|
| 65 | + | |
---|
| 66 | + | func F (G,H) = ((G + "_") + H) |
---|
65 | 67 | | |
---|
66 | 68 | | |
---|
67 | | - | func H () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, w), "Coordinator not set")), "Coordinator address invalid") |
---|
| 69 | + | func I () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, x), "Coordinator not set")), "Coordinator address invalid") |
---|
68 | 70 | | |
---|
69 | 71 | | |
---|
70 | | - | func I () = addressFromString(valueOrErrorMessage(getString(H(), A), "Admin address not set")) |
---|
| 72 | + | func J () = addressFromString(valueOrErrorMessage(getString(I(), B), "Admin address not set")) |
---|
71 | 73 | | |
---|
72 | 74 | | |
---|
73 | | - | func J (G) = valueOrElse(getBoolean(H(), E(x, G)), false) |
---|
| 75 | + | func K (H) = valueOrElse(getBoolean(I(), F(y, H)), false) |
---|
74 | 76 | | |
---|
75 | 77 | | |
---|
76 | | - | func K () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(H(), C), "Spot address not set")), "Spot address invalid") |
---|
| 78 | + | func L () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(I(), D), "Spot address not set")), "Spot address invalid") |
---|
77 | 79 | | |
---|
78 | 80 | | |
---|
79 | | - | func L () = fromBase58String(valueOrErrorMessage(getString(H(), y), "Governance asset not set")) |
---|
| 81 | + | func M () = fromBase58String(valueOrErrorMessage(getString(I(), z), "Governance asset not set")) |
---|
80 | 82 | | |
---|
81 | 83 | | |
---|
82 | | - | func M () = fromBase58String(getStringValue(H(), z)) |
---|
| 84 | + | func N () = fromBase58String(getStringValue(I(), A)) |
---|
83 | 85 | | |
---|
84 | 86 | | |
---|
85 | | - | func N () = valueOrErrorMessage(getString(this, f), "Vault asset not set") |
---|
| 87 | + | func O () = valueOrErrorMessage(getString(this, f), "Vault asset not set") |
---|
86 | 88 | | |
---|
87 | 89 | | |
---|
88 | | - | func O () = { |
---|
89 | | - | let P = N() |
---|
90 | | - | if ((P == "WAVES")) |
---|
| 90 | + | func P () = { |
---|
| 91 | + | let Q = O() |
---|
| 92 | + | if ((Q == "WAVES")) |
---|
91 | 93 | | then unit |
---|
92 | | - | else fromBase58String(P) |
---|
| 94 | + | else fromBase58String(Q) |
---|
93 | 95 | | } |
---|
94 | 96 | | |
---|
95 | 97 | | |
---|
96 | | - | func Q () = valueOrErrorMessage(getInteger(this, g), "Vault asset decimals not set") |
---|
| 98 | + | func R () = valueOrErrorMessage(getInteger(this, g), "Vault asset decimals not set") |
---|
97 | 99 | | |
---|
98 | 100 | | |
---|
99 | | - | func R () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(H(), B), "Manager address not set")), "Manager address invalid") |
---|
| 101 | + | func S () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(I(), C), "Manager address not set")), "Manager address invalid") |
---|
100 | 102 | | |
---|
101 | 103 | | |
---|
102 | | - | let S = (1 * (((((((10 * 10) * 10) * 10) * 10) * 10) * 10) * 10)) |
---|
| 104 | + | let T = (1 * (((((((10 * 10) * 10) * 10) * 10) * 10) * 10) * 10)) |
---|
103 | 105 | | |
---|
104 | | - | let T = (((7 * 60) * 60) * 24) |
---|
| 106 | + | let U = (((7 * 60) * 60) * 24) |
---|
105 | 107 | | |
---|
106 | | - | let U = "" |
---|
| 108 | + | let V = "" |
---|
107 | 109 | | |
---|
108 | | - | let V = 0 |
---|
| 110 | + | let W = 0 |
---|
109 | 111 | | |
---|
110 | | - | func W (X) = { |
---|
111 | | - | let Y = Q() |
---|
112 | | - | if ((Y == 6)) |
---|
113 | | - | then (X / 100) |
---|
114 | | - | else if ((Y == 8)) |
---|
115 | | - | then X |
---|
| 112 | + | func X (Y) = { |
---|
| 113 | + | let Z = R() |
---|
| 114 | + | if ((Z == 6)) |
---|
| 115 | + | then (Y / 100) |
---|
| 116 | + | else if ((Z == 8)) |
---|
| 117 | + | then Y |
---|
116 | 118 | | else throw("Invalid asset decimals") |
---|
117 | 119 | | } |
---|
118 | 120 | | |
---|
119 | 121 | | |
---|
120 | | - | func Z (X) = { |
---|
121 | | - | let Y = Q() |
---|
122 | | - | if ((Y == 6)) |
---|
123 | | - | then (X * 100) |
---|
124 | | - | else if ((Y == 8)) |
---|
125 | | - | then X |
---|
| 122 | + | func aa (Y) = { |
---|
| 123 | + | let Z = R() |
---|
| 124 | + | if ((Z == 6)) |
---|
| 125 | + | then (Y * 100) |
---|
| 126 | + | else if ((Z == 8)) |
---|
| 127 | + | then Y |
---|
126 | 128 | | else throw("Invalid asset decimals") |
---|
127 | 129 | | } |
---|
128 | 130 | | |
---|
129 | 131 | | |
---|
130 | | - | func aa (ab,ac) = fraction(ab, S, ac, HALFEVEN) |
---|
| 132 | + | func ab (ac,ad) = fraction(ac, T, ad, HALFEVEN) |
---|
131 | 133 | | |
---|
132 | 134 | | |
---|
133 | | - | func ad (ab,ac) = fraction(ab, ac, S, HALFEVEN) |
---|
| 135 | + | func ae (ac,ad) = fraction(ac, ad, T, HALFEVEN) |
---|
134 | 136 | | |
---|
135 | 137 | | |
---|
136 | | - | func ae (ab) = if ((ab > 0)) |
---|
137 | | - | then ab |
---|
138 | | - | else -(ab) |
---|
| 138 | + | func af (ac) = if ((ac > 0)) |
---|
| 139 | + | then ac |
---|
| 140 | + | else -(ac) |
---|
139 | 141 | | |
---|
140 | 142 | | |
---|
141 | | - | func af (ab,ac) = if ((ab > ac)) |
---|
142 | | - | then ac |
---|
143 | | - | else ab |
---|
| 143 | + | func ag (ac,ad) = if ((ac > ad)) |
---|
| 144 | + | then ad |
---|
| 145 | + | else ac |
---|
144 | 146 | | |
---|
145 | 147 | | |
---|
146 | | - | let ag = (86400 * 1000) |
---|
| 148 | + | let ah = (86400 * 1000) |
---|
147 | 149 | | |
---|
148 | | - | let ah = aa((1 * S), (4 * S)) |
---|
| 150 | + | let ai = ab((1 * T), (4 * T)) |
---|
149 | 151 | | |
---|
150 | | - | func ai (aj) = valueOrErrorMessage(getInteger(this, aj), ("no value for " + aj)) |
---|
| 152 | + | func aj (ak) = valueOrErrorMessage(getInteger(this, ak), ("no value for " + ak)) |
---|
151 | 153 | | |
---|
152 | 154 | | |
---|
153 | | - | func ak (aj) = valueOrElse(getInteger(this, aj), 0) |
---|
| 155 | + | func al (ak) = valueOrElse(getInteger(this, ak), 0) |
---|
154 | 156 | | |
---|
155 | 157 | | |
---|
156 | | - | func al (aj) = valueOrElse(getInteger(this, aj), S) |
---|
| 158 | + | func am (ak) = valueOrElse(getInteger(this, ak), T) |
---|
157 | 159 | | |
---|
158 | 160 | | |
---|
159 | | - | func am (aj,an) = valueOrElse(getInteger(this, aj), an) |
---|
| 161 | + | func an (ak,ao) = valueOrElse(getInteger(this, ak), ao) |
---|
160 | 162 | | |
---|
161 | 163 | | |
---|
162 | | - | func ao () = ak(a) |
---|
| 164 | + | func ap () = al(a) |
---|
163 | 165 | | |
---|
164 | 166 | | |
---|
165 | | - | func ap () = al(j) |
---|
| 167 | + | func aq () = am(k) |
---|
166 | 168 | | |
---|
167 | 169 | | |
---|
168 | | - | func aq (ar) = ak(E(q, ar)) |
---|
| 170 | + | func ar (as) = al(F(r, as)) |
---|
169 | 171 | | |
---|
170 | 172 | | |
---|
171 | | - | func as (ar) = ak(E(r, ar)) |
---|
| 173 | + | func at (as) = al(F(s, as)) |
---|
172 | 174 | | |
---|
173 | 175 | | |
---|
174 | | - | func at (ar) = ak(E(s, ar)) |
---|
| 176 | + | func au (as) = al(F(t, as)) |
---|
175 | 177 | | |
---|
176 | 178 | | |
---|
177 | | - | func au (ar) = ak(E(u, ar)) |
---|
| 179 | + | func av (as) = al(F(v, as)) |
---|
178 | 180 | | |
---|
179 | 181 | | |
---|
180 | | - | func av (ar) = ak(E(t, ar)) |
---|
| 182 | + | func aw (as) = al(F(u, as)) |
---|
181 | 183 | | |
---|
182 | 184 | | |
---|
183 | | - | func aw () = ak(d) |
---|
| 185 | + | func ax () = al(d) |
---|
184 | 186 | | |
---|
185 | 187 | | |
---|
186 | | - | func ax () = ak(c) |
---|
| 188 | + | func ay () = al(c) |
---|
187 | 189 | | |
---|
188 | 190 | | |
---|
189 | | - | func ay () = ak(e) |
---|
| 191 | + | func az () = al(e) |
---|
190 | 192 | | |
---|
191 | 193 | | |
---|
192 | | - | func az () = ak(l) |
---|
| 194 | + | func aA () = al(m) |
---|
193 | 195 | | |
---|
194 | 196 | | |
---|
195 | | - | func aA () = ak(k) |
---|
| 197 | + | func aB () = al(l) |
---|
196 | 198 | | |
---|
197 | 199 | | |
---|
198 | | - | func aB () = ak(m) |
---|
| 200 | + | func aC () = al(n) |
---|
199 | 201 | | |
---|
200 | 202 | | |
---|
201 | | - | func aC () = ak(n) |
---|
| 203 | + | func aD () = al(o) |
---|
202 | 204 | | |
---|
203 | 205 | | |
---|
204 | | - | func aD () = ak(b) |
---|
| 206 | + | func aE () = al(b) |
---|
205 | 207 | | |
---|
206 | 208 | | |
---|
207 | | - | func aE (ar) = ak(E(p, ar)) |
---|
| 209 | + | func aF (as) = al(F(q, as)) |
---|
208 | 210 | | |
---|
209 | 211 | | |
---|
210 | | - | func aF (ar) = ak(E(o, ar)) |
---|
| 212 | + | func aG (as) = al(F(p, as)) |
---|
211 | 213 | | |
---|
212 | 214 | | |
---|
213 | | - | func aG () = ak(h) |
---|
| 215 | + | func aH () = al(h) |
---|
214 | 216 | | |
---|
215 | 217 | | |
---|
216 | | - | func aH () = am(i, ah) |
---|
| 218 | + | func aI () = an(i, ai) |
---|
217 | 219 | | |
---|
218 | 220 | | |
---|
219 | | - | func aI () = valueOrElse(getBoolean(this, v), false) |
---|
| 221 | + | func aJ () = valueOrElse(getBoolean(this, j), false) |
---|
220 | 222 | | |
---|
221 | 223 | | |
---|
222 | | - | func aJ () = lastBlock.timestamp |
---|
| 224 | + | func aK () = valueOrElse(getBoolean(this, w), false) |
---|
223 | 225 | | |
---|
224 | 226 | | |
---|
225 | | - | func aK () = (aJ() / 1000) |
---|
| 227 | + | func aL () = lastBlock.timestamp |
---|
226 | 228 | | |
---|
227 | 229 | | |
---|
228 | | - | func aL (ar) = { |
---|
229 | | - | let aM = aJ() |
---|
230 | | - | let aN = av(ar) |
---|
231 | | - | let aO = if (((aM - aN) > ag)) |
---|
232 | | - | then $Tuple3(aM, at(ar), 0) |
---|
233 | | - | else $Tuple3(aN, (at(ar) - au(ar)), au(ar)) |
---|
234 | | - | let aP = aO._1 |
---|
235 | | - | let aQ = aO._2 |
---|
236 | | - | let aR = aO._3 |
---|
237 | | - | $Tuple3(aP, aQ, aR) |
---|
| 230 | + | func aM () = (aL() / 1000) |
---|
| 231 | + | |
---|
| 232 | + | |
---|
| 233 | + | func aN (as) = { |
---|
| 234 | + | let aO = aL() |
---|
| 235 | + | let aP = aw(as) |
---|
| 236 | + | let aQ = if (((aO - aP) > ah)) |
---|
| 237 | + | then $Tuple3(aO, au(as), 0) |
---|
| 238 | + | else { |
---|
| 239 | + | let aR = av(as) |
---|
| 240 | + | if (aJ()) |
---|
| 241 | + | then $Tuple3(aP, au(as), aR) |
---|
| 242 | + | else $Tuple3(aP, (au(as) - aR), aR) |
---|
| 243 | + | } |
---|
| 244 | + | let aS = aQ._1 |
---|
| 245 | + | let aT = aQ._2 |
---|
| 246 | + | let aU = aQ._3 |
---|
| 247 | + | $Tuple3(aS, aT, aU) |
---|
238 | 248 | | } |
---|
239 | 249 | | |
---|
240 | 250 | | |
---|
241 | | - | func aS (aT) = { |
---|
242 | | - | let aU = if ((ao() > 0)) |
---|
243 | | - | then aa((aw() + aT), ao()) |
---|
244 | | - | else S |
---|
245 | | - | aU |
---|
| 251 | + | func aV (aW) = { |
---|
| 252 | + | let aX = if ((ap() > 0)) |
---|
| 253 | + | then ab((ax() + aW), ap()) |
---|
| 254 | + | else T |
---|
| 255 | + | aX |
---|
246 | 256 | | } |
---|
247 | 257 | | |
---|
248 | 258 | | |
---|
249 | | - | func aV () = af(aK(), aC()) |
---|
| 259 | + | func aY () = ag(aM(), aD()) |
---|
250 | 260 | | |
---|
251 | 261 | | |
---|
252 | | - | func aW (aX) = if (((ao() + aX) == 0)) |
---|
253 | | - | then az() |
---|
| 262 | + | func aZ (ba) = if (((ap() + ba) == 0)) |
---|
| 263 | + | then aA() |
---|
254 | 264 | | else { |
---|
255 | | - | let aY = (aV() - aA()) |
---|
256 | | - | let aZ = if ((0 > aY)) |
---|
| 265 | + | let bb = (aY() - aB()) |
---|
| 266 | + | let bc = if ((0 > bb)) |
---|
257 | 267 | | then 0 |
---|
258 | | - | else aY |
---|
259 | | - | let ba = aa((aB() * aZ), (ao() + aX)) |
---|
260 | | - | (az() + ba) |
---|
| 268 | + | else bb |
---|
| 269 | + | let bd = ab((aC() * bc), (ap() + ba)) |
---|
| 270 | + | (aA() + bd) |
---|
261 | 271 | | } |
---|
262 | 272 | | |
---|
263 | 273 | | |
---|
264 | | - | func bb (ar,aX) = { |
---|
265 | | - | let bc = (aW(aX) - aF(ar)) |
---|
266 | | - | (ad((aq(ar) + aX), bc) + aE(ar)) |
---|
| 274 | + | func be (as,ba) = { |
---|
| 275 | + | let bf = (aZ(ba) - aG(as)) |
---|
| 276 | + | (ae((ar(as) + ba), bf) + aF(as)) |
---|
267 | 277 | | } |
---|
268 | 278 | | |
---|
269 | 279 | | |
---|
270 | | - | func bd (ar,aX) = { |
---|
271 | | - | let be = aW(aX) |
---|
272 | | - | let bf = aK() |
---|
273 | | - | let bg = if ((ar != "")) |
---|
274 | | - | then $Tuple2(bb(ar, aX), be) |
---|
| 280 | + | func bg (as,ba) = { |
---|
| 281 | + | let bh = aZ(ba) |
---|
| 282 | + | let bi = aM() |
---|
| 283 | + | let bj = if ((as != "")) |
---|
| 284 | + | then $Tuple2(be(as, ba), bh) |
---|
275 | 285 | | else $Tuple2(0, 0) |
---|
276 | | - | let bh = bg._1 |
---|
277 | | - | let bi = bg._2 |
---|
278 | | - | $Tuple4(be, bf, bh, bi) |
---|
| 286 | + | let bk = bj._1 |
---|
| 287 | + | let bl = bj._2 |
---|
| 288 | + | $Tuple4(bh, bi, bk, bl) |
---|
279 | 289 | | } |
---|
280 | 290 | | |
---|
281 | 291 | | |
---|
282 | | - | func bj (bk,bl) = if (((aq(bk) + bl) >= 0)) |
---|
283 | | - | then [IntegerEntry(E(q, bk), (aq(bk) + bl))] |
---|
284 | | - | else throw(((("Vault: can not update user balance. Balance: " + toString(aq(bk))) + " change: ") + toString(bl))) |
---|
| 292 | + | func bm (bn,bo) = if (((ar(bn) + bo) >= 0)) |
---|
| 293 | + | then [IntegerEntry(F(r, bn), (ar(bn) + bo))] |
---|
| 294 | + | else throw(((("Vault: can not update user balance. Balance: " + toString(ar(bn))) + " change: ") + toString(bo))) |
---|
285 | 295 | | |
---|
286 | 296 | | |
---|
287 | | - | func bm (bk,bn) = [IntegerEntry(E(s, bk), bn)] |
---|
| 297 | + | func bp (bn,bq) = [IntegerEntry(F(t, bn), bq)] |
---|
288 | 298 | | |
---|
289 | 299 | | |
---|
290 | | - | func bo (bk,bn) = [IntegerEntry(E(r, bk), bn)] |
---|
| 300 | + | func br (bn,bq) = [IntegerEntry(F(s, bn), bq)] |
---|
291 | 301 | | |
---|
292 | 302 | | |
---|
293 | | - | func bp (bl) = { |
---|
294 | | - | let bq = aw() |
---|
295 | | - | if (((bq + bl) >= 0)) |
---|
296 | | - | then [IntegerEntry(d, (bq + bl))] |
---|
297 | | - | else throw(((("Vault: can not update free balance. Balance: " + toString(bq)) + " change: ") + toString(bl))) |
---|
| 303 | + | func bs (bo) = { |
---|
| 304 | + | let bt = ax() |
---|
| 305 | + | if (((bt + bo) >= 0)) |
---|
| 306 | + | then [IntegerEntry(d, (bt + bo))] |
---|
| 307 | + | else throw(((("Vault: can not update free balance. Balance: " + toString(bt)) + " change: ") + toString(bo))) |
---|
298 | 308 | | } |
---|
299 | 309 | | |
---|
300 | 310 | | |
---|
301 | | - | func br (bl) = { |
---|
302 | | - | let bq = ax() |
---|
303 | | - | if (((bq + bl) >= 0)) |
---|
304 | | - | then [IntegerEntry(c, (bq + bl))] |
---|
305 | | - | else throw(((("Vault: can not update locked balance. Balance: " + toString(bq)) + " change: ") + toString(bl))) |
---|
| 311 | + | func bu (bo) = { |
---|
| 312 | + | let bt = ay() |
---|
| 313 | + | if (((bt + bo) >= 0)) |
---|
| 314 | + | then [IntegerEntry(c, (bt + bo))] |
---|
| 315 | + | else throw(((("Vault: can not update locked balance. Balance: " + toString(bt)) + " change: ") + toString(bo))) |
---|
306 | 316 | | } |
---|
307 | 317 | | |
---|
308 | 318 | | |
---|
309 | | - | func bs (bl) = { |
---|
310 | | - | let bt = (ay() + bl) |
---|
311 | | - | let bu = aa(ae(bt), aw()) |
---|
312 | | - | if ((aG() > bu)) |
---|
313 | | - | then [IntegerEntry(e, bt)] |
---|
314 | | - | else throw(((((((("Vault: can not update excess balance. Balance: " + toString(ay())) + " change: ") + toString(bl)) + " utilization rate: ") + toString(bu)) + " max utilization rate: ") + toString(aG()))) |
---|
| 319 | + | func bv (bo) = { |
---|
| 320 | + | let bw = (az() + bo) |
---|
| 321 | + | let bx = ab(af(bw), ax()) |
---|
| 322 | + | if ((aH() > bx)) |
---|
| 323 | + | then [IntegerEntry(e, bw)] |
---|
| 324 | + | else throw(((((((("Vault: can not update excess balance. Balance: " + toString(az())) + " change: ") + toString(bo)) + " utilization rate: ") + toString(bx)) + " max utilization rate: ") + toString(aH()))) |
---|
315 | 325 | | } |
---|
316 | 326 | | |
---|
317 | 327 | | |
---|
318 | | - | func bv (bl) = [IntegerEntry(a, (ao() + bl))] |
---|
| 328 | + | func by (bo) = [IntegerEntry(a, (ap() + bo))] |
---|
319 | 329 | | |
---|
320 | 330 | | |
---|
321 | | - | func bw (bn) = [IntegerEntry(j, bn)] |
---|
| 331 | + | func bz (bq) = [IntegerEntry(k, bq)] |
---|
322 | 332 | | |
---|
323 | 333 | | |
---|
324 | | - | func bx (bk,by,bz) = [IntegerEntry(E(t, bk), by), IntegerEntry(E(u, bk), bz)] |
---|
| 334 | + | func bA (bn,bB,bC) = [IntegerEntry(F(u, bn), bB), IntegerEntry(F(v, bn), bC)] |
---|
325 | 335 | | |
---|
326 | 336 | | |
---|
327 | | - | func bA (bB) = [IntegerEntry(b, (aD() + bB))] |
---|
| 337 | + | func bD (bE) = [IntegerEntry(b, (aE() + bE))] |
---|
328 | 338 | | |
---|
329 | 339 | | |
---|
330 | | - | func bC (bD) = [IntegerEntry(m, bD)] |
---|
| 340 | + | func bF (bG) = [IntegerEntry(n, bG)] |
---|
331 | 341 | | |
---|
332 | 342 | | |
---|
333 | | - | func bE (bF,bG) = [IntegerEntry(k, bF), IntegerEntry(n, bG)] |
---|
| 343 | + | func bH (bI,bJ) = [IntegerEntry(l, bI), IntegerEntry(o, bJ)] |
---|
334 | 344 | | |
---|
335 | 345 | | |
---|
336 | | - | func bH (bI) = [IntegerEntry(l, bI)] |
---|
| 346 | + | func bK (bL) = [IntegerEntry(m, bL)] |
---|
337 | 347 | | |
---|
338 | 348 | | |
---|
339 | | - | func bJ (ar,bK,bL) = [IntegerEntry(E(p, ar), bK), IntegerEntry(E(o, ar), bL)] |
---|
| 349 | + | func bM (as,bN,bO) = [IntegerEntry(F(q, as), bN), IntegerEntry(F(p, as), bO)] |
---|
340 | 350 | | |
---|
341 | 351 | | |
---|
342 | | - | @Callable(bM) |
---|
343 | | - | func changeSettings (bN,bO) = if (if (if (if (!(aI())) |
---|
| 352 | + | @Callable(bP) |
---|
| 353 | + | func changeSettings (bQ,bR,bS) = if (if (if (if (!(aK())) |
---|
344 | 354 | | then true |
---|
345 | | - | else (bM.caller != I())) |
---|
| 355 | + | else (bP.caller != J())) |
---|
346 | 356 | | then true |
---|
347 | | - | else if ((0 > bN)) |
---|
| 357 | + | else if ((0 > bQ)) |
---|
348 | 358 | | then true |
---|
349 | | - | else (bN > S)) |
---|
| 359 | + | else (bQ > T)) |
---|
350 | 360 | | then true |
---|
351 | | - | else if ((0 > bO)) |
---|
| 361 | + | else if ((0 > bR)) |
---|
352 | 362 | | then true |
---|
353 | | - | else (bO > S)) |
---|
| 363 | + | else (bR > T)) |
---|
354 | 364 | | then throw("Invalid changeSettings params") |
---|
355 | | - | else [IntegerEntry(h, bN), IntegerEntry(i, bO)] |
---|
| 365 | + | else [IntegerEntry(h, bQ), IntegerEntry(i, bR), BooleanEntry(j, bS)] |
---|
356 | 366 | | |
---|
357 | 367 | | |
---|
358 | 368 | | |
---|
359 | | - | @Callable(bM) |
---|
360 | | - | func initialize (bP,bQ,bN) = if (if (if (if (aI()) |
---|
| 369 | + | @Callable(bP) |
---|
| 370 | + | func initialize (bT,bU,bQ) = if (if (if (if (aK()) |
---|
361 | 371 | | then true |
---|
362 | | - | else (bM.caller != this)) |
---|
| 372 | + | else (bP.caller != this)) |
---|
363 | 373 | | then true |
---|
364 | | - | else (0 > bN)) |
---|
| 374 | + | else (0 > bQ)) |
---|
365 | 375 | | then true |
---|
366 | | - | else (bN > S)) |
---|
| 376 | + | else (bQ > T)) |
---|
367 | 377 | | then throw("Unable to initialize") |
---|
368 | 378 | | else { |
---|
369 | | - | let Y = if ((bQ == "WAVES")) |
---|
| 379 | + | let Z = if ((bU == "WAVES")) |
---|
370 | 380 | | then 8 |
---|
371 | 381 | | else { |
---|
372 | | - | let bR = valueOrErrorMessage(assetInfo(fromBase58String(bQ)), ("Invalid token id: " + bQ)) |
---|
373 | | - | bR.decimals |
---|
| 382 | + | let bV = valueOrErrorMessage(assetInfo(fromBase58String(bU)), ("Invalid token id: " + bU)) |
---|
| 383 | + | bV.decimals |
---|
374 | 384 | | } |
---|
375 | | - | [StringEntry(w, toString(valueOrErrorMessage(addressFromString(bP), "Invalid coordinator address"))), StringEntry(f, bQ), IntegerEntry(g, Y), IntegerEntry(h, bN), BooleanEntry(v, true)] |
---|
| 385 | + | [StringEntry(x, toString(valueOrErrorMessage(addressFromString(bT), "Invalid coordinator address"))), StringEntry(f, bU), IntegerEntry(g, Z), IntegerEntry(h, bQ), BooleanEntry(w, true)] |
---|
376 | 386 | | } |
---|
377 | 387 | | |
---|
378 | 388 | | |
---|
379 | 389 | | |
---|
380 | | - | @Callable(bM) |
---|
| 390 | + | @Callable(bP) |
---|
381 | 391 | | func stake () = { |
---|
382 | | - | let ar = toString(bM.caller) |
---|
383 | | - | let X = Z(bM.payments[0].amount) |
---|
384 | | - | if (if (if ((bM.payments[0].assetId != O())) |
---|
| 392 | + | let as = toString(bP.caller) |
---|
| 393 | + | let Y = aa(bP.payments[0].amount) |
---|
| 394 | + | if (if (if ((bP.payments[0].assetId != P())) |
---|
385 | 395 | | then true |
---|
386 | | - | else (size(bM.payments) != 1)) |
---|
| 396 | + | else (size(bP.payments) != 1)) |
---|
387 | 397 | | then true |
---|
388 | | - | else !(aI())) |
---|
| 398 | + | else !(aK())) |
---|
389 | 399 | | then throw("Invalid call to stake") |
---|
390 | 400 | | else { |
---|
391 | | - | let bS = bd(ar, 0) |
---|
392 | | - | let be = bS._1 |
---|
393 | | - | let bf = bS._2 |
---|
394 | | - | let bh = bS._3 |
---|
395 | | - | let bi = bS._4 |
---|
396 | | - | let bT = ap() |
---|
397 | | - | let bU = as(ar) |
---|
398 | | - | let bV = aa(X, bT) |
---|
399 | | - | let bW = aa((ad(bV, bT) + ad(aq(ar), bU)), (bV + aq(ar))) |
---|
400 | | - | let bX = (bV + aq(ar)) |
---|
401 | | - | let bY = ad(bX, aH()) |
---|
402 | | - | let bZ = invoke(R(), "deposit", nil, [AttachedPayment(O(), W(X))]) |
---|
403 | | - | if ((bZ == bZ)) |
---|
| 401 | + | let bW = bg(as, 0) |
---|
| 402 | + | let bh = bW._1 |
---|
| 403 | + | let bi = bW._2 |
---|
| 404 | + | let bk = bW._3 |
---|
| 405 | + | let bl = bW._4 |
---|
| 406 | + | let bX = aq() |
---|
| 407 | + | let bY = at(as) |
---|
| 408 | + | let bZ = ab(Y, bX) |
---|
| 409 | + | let ca = ab((ae(bZ, bX) + ae(ar(as), bY)), (bZ + ar(as))) |
---|
| 410 | + | let cb = (bZ + ar(as)) |
---|
| 411 | + | let cc = ae(cb, aI()) |
---|
| 412 | + | let cd = invoke(S(), "deposit", nil, [AttachedPayment(P(), X(Y))]) |
---|
| 413 | + | if ((cd == cd)) |
---|
404 | 414 | | then { |
---|
405 | | - | let ca = if ((aG() > 0)) |
---|
406 | | - | then invoke(K(), "notifyVaultBalanceChange", [N(), X], nil) |
---|
| 415 | + | let ce = if ((aH() > 0)) |
---|
| 416 | + | then invoke(L(), "notifyVaultBalanceChange", [O(), Y], nil) |
---|
407 | 417 | | else nil |
---|
408 | | - | if ((ca == ca)) |
---|
409 | | - | then (((((((bJ(ar, bh, bi) ++ bH(be)) ++ bE(bf, aC())) ++ bp(X)) ++ bj(ar, bV)) ++ bo(ar, bW)) ++ bm(ar, bY)) ++ bv(bV)) |
---|
| 418 | + | if ((ce == ce)) |
---|
| 419 | + | then (((((((bM(as, bk, bl) ++ bK(bh)) ++ bH(bi, aD())) ++ bs(Y)) ++ bm(as, bZ)) ++ br(as, ca)) ++ bp(as, cc)) ++ by(bZ)) |
---|
410 | 420 | | else throw("Strict value is not equal to itself.") |
---|
411 | 421 | | } |
---|
412 | 422 | | else throw("Strict value is not equal to itself.") |
---|
413 | 423 | | } |
---|
414 | 424 | | } |
---|
415 | 425 | | |
---|
416 | 426 | | |
---|
417 | 427 | | |
---|
418 | | - | @Callable(bM) |
---|
419 | | - | func unStake (X) = { |
---|
420 | | - | let ar = toString(bM.caller) |
---|
421 | | - | let cb = Z(X) |
---|
422 | | - | if (if (if ((bM.payments != nil)) |
---|
| 428 | + | @Callable(bP) |
---|
| 429 | + | func unStake (Y) = { |
---|
| 430 | + | let as = toString(bP.caller) |
---|
| 431 | + | let cf = aa(Y) |
---|
| 432 | + | if (if (if ((bP.payments != nil)) |
---|
423 | 433 | | then true |
---|
424 | | - | else (0 >= cb)) |
---|
| 434 | + | else (0 >= cf)) |
---|
425 | 435 | | then true |
---|
426 | | - | else !(aI())) |
---|
| 436 | + | else !(aK())) |
---|
427 | 437 | | then throw("Invalid call to unStake") |
---|
428 | 438 | | else { |
---|
429 | | - | let cc = bd(ar, 0) |
---|
430 | | - | let be = cc._1 |
---|
431 | | - | let bf = cc._2 |
---|
432 | | - | let bh = cc._3 |
---|
433 | | - | let bi = cc._4 |
---|
434 | | - | let cd = aL(ar) |
---|
435 | | - | let aP = cd._1 |
---|
436 | | - | let aQ = cd._2 |
---|
437 | | - | let aR = cd._3 |
---|
438 | | - | let bV = aa(cb, ap()) |
---|
439 | | - | if ((bV > aQ)) |
---|
| 439 | + | let cg = bg(as, 0) |
---|
| 440 | + | let bh = cg._1 |
---|
| 441 | + | let bi = cg._2 |
---|
| 442 | + | let bk = cg._3 |
---|
| 443 | + | let bl = cg._4 |
---|
| 444 | + | let ch = aN(as) |
---|
| 445 | + | let aS = ch._1 |
---|
| 446 | + | let aT = ch._2 |
---|
| 447 | + | let aU = ch._3 |
---|
| 448 | + | let bZ = ab(cf, aq()) |
---|
| 449 | + | if ((bZ > aT)) |
---|
440 | 450 | | then throw("Invalid call to unStake: withdraw over limit") |
---|
441 | 451 | | else { |
---|
442 | | - | let ce = (aR + bV) |
---|
443 | | - | if ((cb > aw())) |
---|
| 452 | + | let ci = (aU + bZ) |
---|
| 453 | + | if ((cf > ax())) |
---|
444 | 454 | | then throw("Invalid call to unStake: balance too low") |
---|
445 | 455 | | else { |
---|
446 | | - | let cf = invoke(R(), "withdraw", [N(), W(cb)], nil) |
---|
447 | | - | if ((cf == cf)) |
---|
| 456 | + | let cj = invoke(S(), "withdraw", [O(), X(cf)], nil) |
---|
| 457 | + | if ((cj == cj)) |
---|
448 | 458 | | then { |
---|
449 | | - | let ca = if ((aG() > 0)) |
---|
450 | | - | then invoke(K(), "notifyVaultBalanceChange", [N(), -(cb)], nil) |
---|
| 459 | + | let ce = if ((aH() > 0)) |
---|
| 460 | + | then invoke(L(), "notifyVaultBalanceChange", [O(), -(cf)], nil) |
---|
451 | 461 | | else nil |
---|
452 | | - | if ((ca == ca)) |
---|
453 | | - | then (((((((bJ(ar, bh, bi) ++ bH(be)) ++ bE(bf, aC())) ++ bp(-(cb))) ++ bj(ar, -(bV))) ++ bv(-(bV))) ++ bx(ar, aP, ce)) ++ [ScriptTransfer(bM.caller, W(cb), O())]) |
---|
| 462 | + | if ((ce == ce)) |
---|
| 463 | + | then (((((((bM(as, bk, bl) ++ bK(bh)) ++ bH(bi, aD())) ++ bs(-(cf))) ++ bm(as, -(bZ))) ++ by(-(bZ))) ++ bA(as, aS, ci)) ++ [ScriptTransfer(bP.caller, X(cf), P())]) |
---|
454 | 464 | | else throw("Strict value is not equal to itself.") |
---|
455 | 465 | | } |
---|
456 | 466 | | else throw("Strict value is not equal to itself.") |
---|
457 | 467 | | } |
---|
458 | 468 | | } |
---|
459 | 469 | | } |
---|
460 | 470 | | } |
---|
461 | 471 | | |
---|
462 | 472 | | |
---|
463 | 473 | | |
---|
464 | | - | @Callable(bM) |
---|
| 474 | + | @Callable(bP) |
---|
465 | 475 | | func withdrawRewards () = { |
---|
466 | | - | let ar = toString(bM.caller) |
---|
467 | | - | let cg = bd(ar, 0) |
---|
468 | | - | let be = cg._1 |
---|
469 | | - | let bf = cg._2 |
---|
470 | | - | let bh = cg._3 |
---|
471 | | - | let bi = cg._4 |
---|
472 | | - | if (if ((0 >= bh)) |
---|
| 476 | + | let as = toString(bP.caller) |
---|
| 477 | + | let ck = bg(as, 0) |
---|
| 478 | + | let bh = ck._1 |
---|
| 479 | + | let bi = ck._2 |
---|
| 480 | + | let bk = ck._3 |
---|
| 481 | + | let bl = ck._4 |
---|
| 482 | + | if (if ((0 >= bk)) |
---|
473 | 483 | | then true |
---|
474 | | - | else !(aI())) |
---|
| 484 | + | else !(aK())) |
---|
475 | 485 | | then throw("No reward: Vault") |
---|
476 | | - | else ((((bJ(ar, 0, bi) ++ bH(be)) ++ bE(bf, aC())) ++ bA(-(bh))) ++ [ScriptTransfer(bM.caller, bh, L())]) |
---|
| 486 | + | else ((((bM(as, 0, bl) ++ bK(bh)) ++ bH(bi, aD())) ++ bD(-(bk))) ++ [ScriptTransfer(bP.caller, bk, M())]) |
---|
477 | 487 | | } |
---|
478 | 488 | | |
---|
479 | 489 | | |
---|
480 | 490 | | |
---|
481 | | - | @Callable(bM) |
---|
| 491 | + | @Callable(bP) |
---|
482 | 492 | | func addFree () = { |
---|
483 | | - | let X = Z(bM.payments[0].amount) |
---|
484 | | - | if (if (if (if ((bM.payments[0].assetId != O())) |
---|
| 493 | + | let Y = aa(bP.payments[0].amount) |
---|
| 494 | + | if (if (if (if ((bP.payments[0].assetId != P())) |
---|
485 | 495 | | then true |
---|
486 | | - | else (size(bM.payments) != 1)) |
---|
| 496 | + | else (size(bP.payments) != 1)) |
---|
487 | 497 | | then true |
---|
488 | | - | else !(aI())) |
---|
| 498 | + | else !(aK())) |
---|
489 | 499 | | then true |
---|
490 | | - | else !(if (if (J(toString(bM.caller))) |
---|
| 500 | + | else !(if (if (K(toString(bP.caller))) |
---|
491 | 501 | | then true |
---|
492 | | - | else (bM.caller == K())) |
---|
| 502 | + | else (bP.caller == L())) |
---|
493 | 503 | | then true |
---|
494 | | - | else (bM.caller == I()))) |
---|
| 504 | + | else (bP.caller == J()))) |
---|
495 | 505 | | then throw("Invalid addFree params") |
---|
496 | 506 | | else { |
---|
497 | | - | let aU = aS(X) |
---|
498 | | - | let bZ = invoke(R(), "deposit", nil, [AttachedPayment(O(), W(X))]) |
---|
499 | | - | if ((bZ == bZ)) |
---|
500 | | - | then (bp(X) ++ bw(aU)) |
---|
| 507 | + | let aX = aV(Y) |
---|
| 508 | + | let cd = invoke(S(), "deposit", nil, [AttachedPayment(P(), X(Y))]) |
---|
| 509 | + | if ((cd == cd)) |
---|
| 510 | + | then (bs(Y) ++ bz(aX)) |
---|
501 | 511 | | else throw("Strict value is not equal to itself.") |
---|
502 | 512 | | } |
---|
503 | 513 | | } |
---|
504 | 514 | | |
---|
505 | 515 | | |
---|
506 | 516 | | |
---|
507 | | - | @Callable(bM) |
---|
| 517 | + | @Callable(bP) |
---|
508 | 518 | | func addLocked () = { |
---|
509 | | - | let X = Z(bM.payments[0].amount) |
---|
510 | | - | if (if (if (if ((bM.payments[0].assetId != O())) |
---|
| 519 | + | let Y = aa(bP.payments[0].amount) |
---|
| 520 | + | if (if (if (if ((bP.payments[0].assetId != P())) |
---|
511 | 521 | | then true |
---|
512 | | - | else (size(bM.payments) != 1)) |
---|
| 522 | + | else (size(bP.payments) != 1)) |
---|
513 | 523 | | then true |
---|
514 | | - | else !(aI())) |
---|
| 524 | + | else !(aK())) |
---|
515 | 525 | | then true |
---|
516 | | - | else !(if (J(toString(bM.caller))) |
---|
| 526 | + | else !(if (K(toString(bP.caller))) |
---|
517 | 527 | | then true |
---|
518 | | - | else (bM.caller == I()))) |
---|
| 528 | + | else (bP.caller == J()))) |
---|
519 | 529 | | then throw("Invalid addLocked params") |
---|
520 | 530 | | else { |
---|
521 | | - | let cf = invoke(R(), "deposit", nil, [AttachedPayment(O(), W(X))]) |
---|
522 | | - | if ((cf == cf)) |
---|
523 | | - | then br(X) |
---|
| 531 | + | let cj = invoke(S(), "deposit", nil, [AttachedPayment(P(), X(Y))]) |
---|
| 532 | + | if ((cj == cj)) |
---|
| 533 | + | then bu(Y) |
---|
524 | 534 | | else throw("Strict value is not equal to itself.") |
---|
525 | 535 | | } |
---|
526 | 536 | | } |
---|
527 | 537 | | |
---|
528 | 538 | | |
---|
529 | 539 | | |
---|
530 | | - | @Callable(bM) |
---|
531 | | - | func exchangeFreeAndLocked (X) = if (if (!(aI())) |
---|
| 540 | + | @Callable(bP) |
---|
| 541 | + | func exchangeFreeAndLocked (Y) = if (if (!(aK())) |
---|
532 | 542 | | then true |
---|
533 | | - | else if (!(J(toString(bM.caller)))) |
---|
534 | | - | then (bM.caller != I()) |
---|
| 543 | + | else if (!(K(toString(bP.caller)))) |
---|
| 544 | + | then (bP.caller != J()) |
---|
535 | 545 | | else false) |
---|
536 | 546 | | then throw("Invalid exchangeFreeAndLocked params") |
---|
537 | 547 | | else { |
---|
538 | | - | let cb = Z(X) |
---|
539 | | - | let aU = aS(-(cb)) |
---|
540 | | - | ((br(cb) ++ bp(-(cb))) ++ bw(aU)) |
---|
| 548 | + | let cf = aa(Y) |
---|
| 549 | + | let aX = aV(-(cf)) |
---|
| 550 | + | ((bu(cf) ++ bs(-(cf))) ++ bz(aX)) |
---|
541 | 551 | | } |
---|
542 | 552 | | |
---|
543 | 553 | | |
---|
544 | 554 | | |
---|
545 | | - | @Callable(bM) |
---|
546 | | - | func withdrawLocked (X) = if (if (if (!(aI())) |
---|
| 555 | + | @Callable(bP) |
---|
| 556 | + | func withdrawLocked (Y) = if (if (if (!(aK())) |
---|
547 | 557 | | then true |
---|
548 | | - | else (0 >= X)) |
---|
| 558 | + | else (0 >= Y)) |
---|
549 | 559 | | then true |
---|
550 | | - | else !(J(toString(bM.caller)))) |
---|
| 560 | + | else !(K(toString(bP.caller)))) |
---|
551 | 561 | | then throw("Invalid withdrawLocked params") |
---|
552 | 562 | | else { |
---|
553 | | - | let cb = Z(X) |
---|
554 | | - | let cf = invoke(R(), "withdraw", [N(), W(cb)], nil) |
---|
555 | | - | if ((cf == cf)) |
---|
556 | | - | then (br(-(cb)) ++ [ScriptTransfer(bM.caller, W(cb), O())]) |
---|
| 563 | + | let cf = aa(Y) |
---|
| 564 | + | let cj = invoke(S(), "withdraw", [O(), X(cf)], nil) |
---|
| 565 | + | if ((cj == cj)) |
---|
| 566 | + | then (bu(-(cf)) ++ [ScriptTransfer(bP.caller, X(cf), P())]) |
---|
557 | 567 | | else throw("Strict value is not equal to itself.") |
---|
558 | 568 | | } |
---|
559 | 569 | | |
---|
560 | 570 | | |
---|
561 | 571 | | |
---|
562 | | - | @Callable(bM) |
---|
563 | | - | func borrow (X) = if (if (if (!(aI())) |
---|
| 572 | + | @Callable(bP) |
---|
| 573 | + | func borrow (Y) = if (if (if (!(aK())) |
---|
564 | 574 | | then true |
---|
565 | | - | else (0 >= X)) |
---|
| 575 | + | else (0 >= Y)) |
---|
566 | 576 | | then true |
---|
567 | | - | else !((bM.caller == K()))) |
---|
| 577 | + | else !((bP.caller == L()))) |
---|
568 | 578 | | then throw("Invalid borrow params") |
---|
569 | 579 | | else { |
---|
570 | | - | let cb = Z(X) |
---|
571 | | - | let cf = invoke(R(), "withdraw", [N(), W(cb)], nil) |
---|
572 | | - | if ((cf == cf)) |
---|
573 | | - | then (bs(-(cb)) ++ [ScriptTransfer(bM.caller, W(cb), O())]) |
---|
| 580 | + | let cf = aa(Y) |
---|
| 581 | + | let cj = invoke(S(), "withdraw", [O(), X(cf)], nil) |
---|
| 582 | + | if ((cj == cj)) |
---|
| 583 | + | then (bv(-(cf)) ++ [ScriptTransfer(bP.caller, X(cf), P())]) |
---|
574 | 584 | | else throw("Strict value is not equal to itself.") |
---|
575 | 585 | | } |
---|
576 | 586 | | |
---|
577 | 587 | | |
---|
578 | 588 | | |
---|
579 | | - | @Callable(bM) |
---|
| 589 | + | @Callable(bP) |
---|
580 | 590 | | func repay () = { |
---|
581 | | - | let X = Z(bM.payments[0].amount) |
---|
582 | | - | if (if (if (if ((bM.payments[0].assetId != O())) |
---|
| 591 | + | let Y = aa(bP.payments[0].amount) |
---|
| 592 | + | if (if (if (if ((bP.payments[0].assetId != P())) |
---|
583 | 593 | | then true |
---|
584 | | - | else (size(bM.payments) != 1)) |
---|
| 594 | + | else (size(bP.payments) != 1)) |
---|
585 | 595 | | then true |
---|
586 | | - | else !(aI())) |
---|
| 596 | + | else !(aK())) |
---|
587 | 597 | | then true |
---|
588 | | - | else !(if ((bM.caller == K())) |
---|
| 598 | + | else !(if ((bP.caller == L())) |
---|
589 | 599 | | then true |
---|
590 | | - | else (bM.caller == I()))) |
---|
| 600 | + | else (bP.caller == J()))) |
---|
591 | 601 | | then throw("Invalid repay params") |
---|
592 | 602 | | else { |
---|
593 | | - | let cf = invoke(R(), "deposit", nil, [AttachedPayment(O(), W(X))]) |
---|
594 | | - | if ((cf == cf)) |
---|
595 | | - | then bs(X) |
---|
| 603 | + | let cj = invoke(S(), "deposit", nil, [AttachedPayment(P(), X(Y))]) |
---|
| 604 | + | if ((cj == cj)) |
---|
| 605 | + | then bv(Y) |
---|
596 | 606 | | else throw("Strict value is not equal to itself.") |
---|
597 | 607 | | } |
---|
598 | 608 | | } |
---|
599 | 609 | | |
---|
600 | 610 | | |
---|
601 | 611 | | |
---|
602 | | - | @Callable(bM) |
---|
603 | | - | func addRewards () = if (if (if ((bM.payments[0].assetId != L())) |
---|
| 612 | + | @Callable(bP) |
---|
| 613 | + | func addRewards () = if (if (if ((bP.payments[0].assetId != M())) |
---|
604 | 614 | | then true |
---|
605 | | - | else (size(bM.payments) != 1)) |
---|
| 615 | + | else (size(bP.payments) != 1)) |
---|
606 | 616 | | then true |
---|
607 | | - | else !(aI())) |
---|
| 617 | + | else !(aK())) |
---|
608 | 618 | | then throw("Invalid addRewards params") |
---|
609 | 619 | | else { |
---|
610 | | - | let bK = bM.payments[0].amount |
---|
611 | | - | let be = bd(U, V)._1 |
---|
612 | | - | let ch = aK() |
---|
613 | | - | let ci = if ((ch > aC())) |
---|
614 | | - | then (bK / T) |
---|
| 620 | + | let bN = bP.payments[0].amount |
---|
| 621 | + | let bh = bg(V, W)._1 |
---|
| 622 | + | let cl = aM() |
---|
| 623 | + | let cm = if ((cl > aD())) |
---|
| 624 | + | then (bN / U) |
---|
615 | 625 | | else { |
---|
616 | | - | let cj = (aC() - ch) |
---|
617 | | - | let ck = (aB() * cj) |
---|
618 | | - | ((bK + ck) / T) |
---|
| 626 | + | let cn = (aD() - cl) |
---|
| 627 | + | let co = (aC() * cn) |
---|
| 628 | + | ((bN + co) / U) |
---|
619 | 629 | | } |
---|
620 | | - | (((bC(ci) ++ bH(be)) ++ bA(bK)) ++ bE(ch, (ch + T))) |
---|
| 630 | + | (((bF(cm) ++ bK(bh)) ++ bD(bN)) ++ bH(cl, (cl + U))) |
---|
621 | 631 | | } |
---|
622 | 632 | | |
---|
623 | 633 | | |
---|
624 | 634 | | |
---|
625 | | - | @Callable(bM) |
---|
| 635 | + | @Callable(bP) |
---|
626 | 636 | | func ackRewards () = { |
---|
627 | | - | let cl = invoke(R(), "claimProfit", [N()], nil) |
---|
628 | | - | if ((cl == cl)) |
---|
| 637 | + | let cp = invoke(S(), "claimProfit", [O()], nil) |
---|
| 638 | + | if ((cp == cp)) |
---|
629 | 639 | | then { |
---|
630 | | - | let cm = { |
---|
631 | | - | let cn = cl |
---|
632 | | - | if ($isInstanceOf(cn, "Int")) |
---|
| 640 | + | let cq = { |
---|
| 641 | + | let cr = cp |
---|
| 642 | + | if ($isInstanceOf(cr, "Int")) |
---|
633 | 643 | | then { |
---|
634 | | - | let co = cn |
---|
635 | | - | Z(co) |
---|
| 644 | + | let cs = cr |
---|
| 645 | + | aa(cs) |
---|
636 | 646 | | } |
---|
637 | 647 | | else throw("Invalid claimProfit response") |
---|
638 | 648 | | } |
---|
639 | | - | let cp = if ((cm > 0)) |
---|
| 649 | + | let ct = if ((cq > 0)) |
---|
640 | 650 | | then { |
---|
641 | | - | let aU = aS(cm) |
---|
642 | | - | let bZ = invoke(R(), "deposit", nil, [AttachedPayment(O(), W(cm))]) |
---|
643 | | - | if ((bZ == bZ)) |
---|
644 | | - | then (bp(cm) ++ bw(aU)) |
---|
| 651 | + | let aX = aV(cq) |
---|
| 652 | + | let cd = invoke(S(), "deposit", nil, [AttachedPayment(P(), X(cq))]) |
---|
| 653 | + | if ((cd == cd)) |
---|
| 654 | + | then (bs(cq) ++ bz(aX)) |
---|
645 | 655 | | else throw("Strict value is not equal to itself.") |
---|
646 | 656 | | } |
---|
647 | 657 | | else nil |
---|
648 | | - | if ((cp == cp)) |
---|
649 | | - | then cp |
---|
| 658 | + | if ((ct == ct)) |
---|
| 659 | + | then ct |
---|
650 | 660 | | else throw("Strict value is not equal to itself.") |
---|
651 | 661 | | } |
---|
652 | 662 | | else throw("Strict value is not equal to itself.") |
---|
653 | 663 | | } |
---|
654 | 664 | | |
---|
655 | 665 | | |
---|
656 | 666 | | |
---|
657 | | - | @Callable(bM) |
---|
658 | | - | func view_reward (ar) = { |
---|
659 | | - | let bq = aq(ar) |
---|
660 | | - | let cq = ad(as(ar), bq) |
---|
661 | | - | let cr = ad(ap(), bq) |
---|
662 | | - | let cs = (cr - cq) |
---|
663 | | - | throw(toString(cs)) |
---|
| 667 | + | @Callable(bP) |
---|
| 668 | + | func view_reward (as) = { |
---|
| 669 | + | let bt = ar(as) |
---|
| 670 | + | let cu = ae(at(as), bt) |
---|
| 671 | + | let cv = ae(aq(), bt) |
---|
| 672 | + | let cw = (cv - cu) |
---|
| 673 | + | throw(toString(cw)) |
---|
664 | 674 | | } |
---|
665 | 675 | | |
---|
666 | 676 | | |
---|
667 | 677 | | |
---|
668 | | - | @Callable(bM) |
---|
669 | | - | func view_stakingReward (ar) = { |
---|
670 | | - | let bh = bd(ar, 0)._3 |
---|
671 | | - | throw(toString(W(bh))) |
---|
| 678 | + | @Callable(bP) |
---|
| 679 | + | func view_stakingReward (as) = { |
---|
| 680 | + | let bk = bg(as, 0)._3 |
---|
| 681 | + | throw(toString(X(bk))) |
---|
672 | 682 | | } |
---|
673 | 683 | | |
---|
674 | 684 | | |
---|
675 | 685 | | |
---|
676 | | - | @Callable(bM) |
---|
677 | | - | func view_withdrawLimit (ar) = { |
---|
678 | | - | let aQ = aL(ar)._2 |
---|
679 | | - | let ct = W(ad(aQ, ap())) |
---|
680 | | - | throw(toString(ct)) |
---|
| 686 | + | @Callable(bP) |
---|
| 687 | + | func view_withdrawLimit (as) = { |
---|
| 688 | + | let aT = aN(as)._2 |
---|
| 689 | + | let cx = X(ae(aT, aq())) |
---|
| 690 | + | throw(toString(cx)) |
---|
681 | 691 | | } |
---|
682 | 692 | | |
---|
683 | 693 | | |
---|
684 | | - | @Verifier(cu) |
---|
685 | | - | func cv () = { |
---|
686 | | - | let cw = getString(this, w) |
---|
687 | | - | if (isDefined(cw)) |
---|
| 694 | + | @Verifier(cy) |
---|
| 695 | + | func cz () = { |
---|
| 696 | + | let cA = getString(this, x) |
---|
| 697 | + | if (isDefined(cA)) |
---|
688 | 698 | | then { |
---|
689 | | - | let cx = getString(addressFromStringValue(value(cw)), A) |
---|
690 | | - | if (isDefined(cx)) |
---|
691 | | - | then valueOrElse(getBoolean(addressFromStringValue(value(cx)), ((("status_" + toString(this)) + "_") + toBase58String(cu.id))), false) |
---|
| 699 | + | let cB = getString(addressFromStringValue(value(cA)), B) |
---|
| 700 | + | if (isDefined(cB)) |
---|
| 701 | + | then valueOrElse(getBoolean(addressFromStringValue(value(cB)), ((("status_" + toString(this)) + "_") + toBase58String(cy.id))), false) |
---|
692 | 702 | | else throw("unable to verify: admin not set in coordinator") |
---|
693 | 703 | | } |
---|
694 | | - | else sigVerify(cu.bodyBytes, cu.proofs[0], cu.senderPublicKey) |
---|
| 704 | + | else sigVerify(cy.bodyBytes, cy.proofs[0], cy.senderPublicKey) |
---|
695 | 705 | | } |
---|
696 | 706 | | |
---|