tx · 8twS7zvqugChLtVgFiBJ7SQcooSJNne1f97CvNwgjexG

3MsXpzisJAwnzUr7XrEoW1BZo4U6rw4tsYK:  -0.05000000 Waves

2022.11.26 01:07 [2333203] smart account 3MsXpzisJAwnzUr7XrEoW1BZo4U6rw4tsYK > SELF 0.00000000 Waves

{ "type": 13, "id": "8twS7zvqugChLtVgFiBJ7SQcooSJNne1f97CvNwgjexG", "fee": 5000000, "feeAssetId": null, "timestamp": 1669414048830, "version": 2, "chainId": 84, "sender": "3MsXpzisJAwnzUr7XrEoW1BZo4U6rw4tsYK", "senderPublicKey": "FFdBua5rzzMkZebvsvmN7sAdU7XhFK8QNJ3hiwwxAYRA", "proofs": [ "3MGnAtMDHoAPaehjgeSHwexKyTu54ZPmfhyRf5Qx8xJvdvH6RkvaJntJ53FEbMHUsJaQq6KDEpSLd64qHqToH6Ar", "3HxTCXfDRCk6n6bCrnTjL8W6j8EM451kvjnY9UR2NnXGVyh1YENTofNsn8CfYyapz6mgy6FG5p4Fmtkx9yPC6Mgb" ], "script": "base64:BgJcCAISAwoBCBIDCgEIEgMKAQgSBAoCCAESBQoDAggBEgUKAwgBARIECgIICBIECgIIARIFCgMCCAESAwoBCBIECgIIAhIDCgEIEgMKARgSAwoBGBIECgIICBIAEgBcAAdrQWN0aXZlAgZhY3RpdmUAC2tBY3RpdmVHbG9iAhRhY3RpdmVfYWxsX2NvbnRyYWN0cwAGa0NhdXNlAg5zaHV0ZG93bl9jYXVzZQAaa1Jld2FyZFBvb2xGcmFjdGlvbkN1cnJlbnQCHV9jdXJyZW50X3Bvb2xfZnJhY3Rpb25fcmV3YXJkABtrUmV3YXJkUG9vbEZyYWN0aW9uUHJldmlvdXMCHl9wcmV2aW91c19wb29sX2ZyYWN0aW9uX3Jld2FyZAATa0hlaWdodFBvb2xGcmFjdGlvbgIaX3Bvb2xfcmV3YXJkX3VwZGF0ZV9oZWlnaHQAG2tUb3RhbFJld2FyZFBlckJsb2NrQ3VycmVudAIedG90YWxfcmV3YXJkX3Blcl9ibG9ja19jdXJyZW50ABxrVG90YWxSZXdhcmRQZXJCbG9ja1ByZXZpb3VzAh90b3RhbF9yZXdhcmRfcGVyX2Jsb2NrX3ByZXZpb3VzABNrUmV3YXJkVXBkYXRlSGVpZ2h0AhRyZXdhcmRfdXBkYXRlX2hlaWdodAAWa1VzZXJTaGFyZVRva2Vuc1N0YWtlZAIUX3NoYXJlX3Rva2Vuc19sb2NrZWQAFmtVc2VyU2hhcmVUb2tlbnNMb2NrZWQCFV9zaGFyZV90b2tlbnNfYmxvY2tlZAAaa1VzZXJTaGFyZVRva2Vuc0xvY2tlZFR5cGUCGl9zaGFyZV90b2tlbnNfYmxvY2tlZF90eXBlABxrVXNlclNoYXJlVG9rZW5zTG9ja2VkSGVpZ2h0Ahxfc2hhcmVfdG9rZW5zX2Jsb2NrZWRfaGVpZ2h0ABdrVXNlclNoYXJlVG9rZW5zVmlydHVhbAIVX3NoYXJlX3Rva2Vuc192aXJ0dWFsABZrU2hhcmVUb3RhbFNoYXJlVG9rZW5zAhpfdG90YWxfc2hhcmVfdG9rZW5zX2xvY2tlZAATa1NoYXJlVG9rZW5zVmlydHVhbAIbX3RvdGFsX3NoYXJlX3Rva2Vuc192aXJ0dWFsAAtrTG9ja1BhcmFtcwIMX2xvY2tfcGFyYW1zAA1rTG9ja1dhdmVzRmVlAg5sb2NrX3dhdmVzX2ZlZQAOa1Bvb2xCb29zdENvZWYCC19ib29zdF9jb2VmABFrRmFybUxhc3RJbnRlcmVzdAIOX2xhc3RfaW50ZXJlc3QAFWtGYXJtVXNlckxhc3RJbnRlcmVzdAIOX2xhc3RfaW50ZXJlc3QAEmtCb29zdExhc3RJbnRlcmVzdAIQX2xhc3RfaW50ZXJlc3RfYgAWa0Jvb3N0VXNlckxhc3RJbnRlcmVzdAISX2xhc3RfaW50ZXJlc3RfdV9iABRrQm9vc3RMUExhc3RJbnRlcmVzdAISX2xhc3RfaW50ZXJlc3RfbHBiABhrQm9vc3RMUFVzZXJMYXN0SW50ZXJlc3QCFF9sYXN0X2ludGVyZXN0X3VfbHBiABNrTGFzdEludGVyZXN0SGVpZ2h0AhVfbGFzdF9pbnRlcmVzdF9oZWlnaHQAB2tTV09QaWQCB1NXT1BfaWQADmtBdmFpbGFibGVTV09QAg9fYXZhaWxhYmxlX1NXT1AAEWtTd29wWWVhckVtaXNzaW9uAhJzd29wX3llYXJfZW1pc3Npb24AEGtIYXJ2ZXN0UG9vbFZvdGUCGF9oYXJ2ZXN0X3Bvb2xfdm90ZV9nU1dPUAAJa1Bvb2xWb3RlAhBfcG9vbF92b3RlX2dTV09QAA1rVXNlclBvb2xWb3RlAhBfdXNlcl92b3RlX2dTV09QAAprUG9vbFN0cnVjAgtfcG9vbF9zdHJ1YwAOa1VzZXJQb29sU3RydWMCEF91c2VyX3Bvb2xfc3RydWMAFGtIYXJ2ZXN0VXNlclBvb2xWb3RlAh1faGFydmVzdF91c2VyX3Bvb2xfdm90ZV9nU1dPUAATa0ZpcnN0SGFydmVzdEhlaWdodAIUZmlyc3RfaGFydmVzdF9oZWlnaHQADWtTaGFyZUxpbWl0RkgCHHNoYXJlX2xpbWl0X29uX2ZpcnN0X2hhcnZlc3QADWtDcG1tQ29udHJhY3QCDWNwbW1fY29udHJhY3QADWtBZG1pblB1YktleTECC2FkbWluX3B1Yl8xAA1rQWRtaW5QdWJLZXkyAgthZG1pbl9wdWJfMgANa0FkbWluUHViS2V5MwILYWRtaW5fcHViXzMAEmtBZG1pbkludm9rZVB1YktleQIQYWRtaW5faW52b2tlX3B1YgAQa01vbmV5Qm94QWRkcmVzcwIRbW9uZXlfYm94X2FkZHJlc3MADmtWb3RpbmdBZGRyZXNzAg52b3RpbmdfYWRkcmVzcwALa0dvdkFkZHJlc3MCEmdvdmVybmFuY2VfYWRkcmVzcwARa0xQRmFybWluZ0FkZHJlc3MCCmxwX2Zhcm1pbmcAFGtGYXJtaW5nVHJlYXN1cmVBZGRyAhBmYXJtaW5nX3RyZWFzdXJlAAZvcmFjbGUJAQdBZGRyZXNzAQEaAVRIE5cMwNMzzCUygLYp96dkaICr48x7S5kADnRvdGFsVm90ZVNoYXJlAIDIr6AlAAtzY2FsZVZhbHVlOACAwtcvABJsb2NrQm9vc3RDb2VmU2NhbGUA6AcAEGRlZlBvb2xCb29zdENvZWYA9AMBE2dldEJhc2U1OEZyb21PcmFjbGUBA2tleQQHJG1hdGNoMAkAnQgCBQZvcmFjbGUFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEBnN0cmluZwUHJG1hdGNoMAkA2QQBBQZzdHJpbmcEB25vdGhpbmcFByRtYXRjaDAJAAIBCQCsAgIFA2tleQIIaXMgZW1wdHkADGFkbWluUHViS2V5MQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ1rQWRtaW5QdWJLZXkxAAxhZG1pblB1YktleTIJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUNa0FkbWluUHViS2V5MgAMYWRtaW5QdWJLZXkzCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDWtBZG1pblB1YktleTMAD21vbmV5Qm94QWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFEGtNb25leUJveEFkZHJlc3MADXZvdGluZ0FkZHJlc3MJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ5rVm90aW5nQWRkcmVzcwAKZ292QWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFC2tHb3ZBZGRyZXNzABFhZG1pbkludm9rZVB1YktleQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBRJrQWRtaW5JbnZva2VQdWJLZXkAEGxwRmFybWluZ0FkZHJlc3MJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBRFrTFBGYXJtaW5nQWRkcmVzcwATZmFybWluZ1RyZWFzdXJlQWRkcgkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFFGtGYXJtaW5nVHJlYXN1cmVBZGRyAAxjcG1tQ29udHJhY3QJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ1rQ3BtbUNvbnRyYWN0AAZhY3RpdmUJARFAZXh0ck5hdGl2ZSgxMDUxKQIFBHRoaXMFB2tBY3RpdmUACmFjdGl2ZUdsb2IJAQt2YWx1ZU9yRWxzZQIJAJsIAgUGb3JhY2xlBQtrQWN0aXZlR2xvYgYABFNXT1AJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUHa1NXT1BpZAEVZ2V0SGVpZ2h0Rmlyc3RIYXJ2ZXN0AQRwb29sCQELdmFsdWVPckVsc2UCCQCaCAIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBRNrRmlyc3RIYXJ2ZXN0SGVpZ2h0AAABFGdldEZIU2hhcmVMaW1pdFRva2VuAQRwb29sCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEcG9vbAUNa1NoYXJlTGltaXRGSAkArAICAhRObyBkYXRhIG9uIHRoZSBrZXk6IAUNa1NoYXJlTGltaXRGSAESZ2V0VG90YWxTaGFyZVRva2VuAQRwb29sCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRZrU2hhcmVUb3RhbFNoYXJlVG9rZW5zCQCsAgIJAKwCAgIUTm8gZGF0YSBvbiB0aGUga2V5OiAFBHBvb2wFFmtTaGFyZVRvdGFsU2hhcmVUb2tlbnMBDGdldFBvb2xWb3RlZAEEcG9vbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ12b3RpbmdBZGRyZXNzCQCsAgIFBHBvb2wFCWtQb29sVm90ZQkBC3ZhbHVlT3JFbHNlAgkAtgkBCQCRAwIJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ12b3RpbmdBZGRyZXNzCQCsAgIFBHBvb2wFCmtQb29sU3RydWMCAAIBXwAAAAABEGdldFVzZXJQb29sVm90ZWQCBHBvb2wEdXNlcgkBC3ZhbHVlT3JFbHNlAgkAmggCBQ12b3RpbmdBZGRyZXNzCQCsAgIJAKwCAgkArAICBQR1c2VyAgFfBQRwb29sBQ1rVXNlclBvb2xWb3RlCQELdmFsdWVPckVsc2UCCQC2CQEJAJEDAgkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFDXZvdGluZ0FkZHJlc3MJAKwCAgkArAICCQCsAgIFBHVzZXICAV8FBHBvb2wFDmtVc2VyUG9vbFN0cnVjAgACAV8AAAAAAQ9nZXRTaGFyZUFzc2V0SWQBBHBvb2wJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBBXZhbHVlAQkApggBBQRwb29sAg5zaGFyZV9hc3NldF9pZAEOYWNjb3VudEJhbGFuY2UBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCaWQFByRtYXRjaDAJAPAHAgUEdGhpcwUCaWQDCQABAgUHJG1hdGNoMAIEVW5pdAQFd2F2ZXMFByRtYXRjaDAICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQACAQILTWF0Y2ggZXJyb3IBDmNhbGNTY2FsZVZhbHVlAghhc3NldElkMQhhc3NldElkMgQQYXNzZXRJZDFEZWNpbWFscwgJAQV2YWx1ZQEJAOwHAQUIYXNzZXRJZDEIZGVjaW1hbHMEEGFzc2V0SWQyRGVjaW1hbHMICQEFdmFsdWUBCQDsBwEFCGFzc2V0SWQyCGRlY2ltYWxzBAtzY2FsZURpZ2l0cwkAZAIJAGUCBRBhc3NldElkMkRlY2ltYWxzBRBhc3NldElkMURlY2ltYWxzAAgJAGwGAAoAAAULc2NhbGVEaWdpdHMAAAAABQRET1dOARF1c2VyQXZhaWxhYmxlU1dPUAIEcG9vbAR1c2VyCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFDmtBdmFpbGFibGVTV09QAAABCnJld2FyZEluZm8BBHBvb2wEGnRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUKZ292QWRkcmVzcwUba1RvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50CQCsAgIJAKwCAgkArAICAhRObyBkYXRhIG9uIHRoZSBrZXk6IAUba1RvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50AgwgYXQgYWRkcmVzcyAJAKUIAQUKZ292QWRkcmVzcwQbdG90YWxSZXdhcmRQZXJCbG9ja1ByZXZpb3VzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUKZ292QWRkcmVzcwUca1RvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwkArAICCQCsAgIJAKwCAgIUTm8gZGF0YSBvbiB0aGUga2V5OiAFHGtUb3RhbFJld2FyZFBlckJsb2NrUHJldmlvdXMCDCBhdCBhZGRyZXNzIAkApQgBBQpnb3ZBZGRyZXNzBBlyZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUKZ292QWRkcmVzcwkArAICBQRwb29sBRprUmV3YXJkUG9vbEZyYWN0aW9uQ3VycmVudAkArAICCQCsAgIJAKwCAgkArAICAhRObyBkYXRhIG9uIHRoZSBrZXk6IAUEcG9vbAUaa1Jld2FyZFBvb2xGcmFjdGlvbkN1cnJlbnQCDCBhdCBhZGRyZXNzIAkApQgBBQpnb3ZBZGRyZXNzBBJyZXdhcmRVcGRhdGVIZWlnaHQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQpnb3ZBZGRyZXNzBRNrUmV3YXJkVXBkYXRlSGVpZ2h0CQCsAgIJAKwCAgkArAICAhRObyBkYXRhIG9uIHRoZSBrZXk6IAUTa1Jld2FyZFVwZGF0ZUhlaWdodAIMIGF0IGFkZHJlc3MgCQClCAEFCmdvdkFkZHJlc3MEFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUKZ292QWRkcmVzcwkArAICBQRwb29sBRNrSGVpZ2h0UG9vbEZyYWN0aW9uBRJyZXdhcmRVcGRhdGVIZWlnaHQEGnJld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUKZ292QWRkcmVzcwkArAICBQRwb29sBRtrUmV3YXJkUG9vbEZyYWN0aW9uUHJldmlvdXMJAKwCAgkArAICCQCsAgIJAKwCAgIUTm8gZGF0YSBvbiB0aGUga2V5OiAFBHBvb2wFG2tSZXdhcmRQb29sRnJhY3Rpb25QcmV2aW91cwIMIGF0IGFkZHJlc3MgCQClCAEFCmdvdkFkZHJlc3MEEXJld2FyZFBvb2xDdXJyZW50CQBrAwUadG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQFGXJld2FyZFBvb2xGcmFjdGlvbkN1cnJlbnQFDnRvdGFsVm90ZVNoYXJlBBJyZXdhcmRQb29sUHJldmlvdXMJAGsDBRp0b3RhbFJld2FyZFBlckJsb2NrQ3VycmVudAUacmV3YXJkUG9vbEZyYWN0aW9uUHJldmlvdXMFDnRvdGFsVm90ZVNoYXJlAwMJAGYCBRFyZXdhcmRQb29sQ3VycmVudAUadG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQGCQBmAgUScmV3YXJkUG9vbFByZXZpb3VzBRt0b3RhbFJld2FyZFBlckJsb2NrUHJldmlvdXMJAAIBAmJyZXdhcmRQb29sQ3VycmVudCA+IHRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50IG9yIHJld2FyZFBvb2xQcmV2aW91cyA+IHRvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwkAlgoEBRFyZXdhcmRQb29sQ3VycmVudAUScmV3YXJkVXBkYXRlSGVpZ2h0BRJyZXdhcmRQb29sUHJldmlvdXMFFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQBE2dldExhc3RJbnRlcmVzdEluZm8BBHBvb2wEDGZhcm1JbnRlcmVzdAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAURa0Zhcm1MYXN0SW50ZXJlc3QJAKwCAgkArAICAhRObyBkYXRhIG9uIHRoZSBrZXk6IAUEcG9vbAURa0Zhcm1MYXN0SW50ZXJlc3QEDWJvb3N0SW50ZXJlc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRJrQm9vc3RMYXN0SW50ZXJlc3QAAAQPYm9vc3RMUEludGVyZXN0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUUa0Jvb3N0TFBMYXN0SW50ZXJlc3QAAAQSbGFzdEludGVyZXN0SGVpZ2h0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUTa0xhc3RJbnRlcmVzdEhlaWdodAUGaGVpZ2h0CQCWCgQFEmxhc3RJbnRlcmVzdEhlaWdodAUMZmFybUludGVyZXN0BQ1ib29zdEludGVyZXN0BQ9ib29zdExQSW50ZXJlc3QBC2NhbGNGYXJtUndkAgRwb29sDmN1clRvdGFsUmV3YXJkBA1wb29sQm9vc3RDb2VmCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUOa1Bvb2xCb29zdENvZWYFEGRlZlBvb2xCb29zdENvZWYJAGsDBQ5jdXJUb3RhbFJld2FyZAUSbG9ja0Jvb3N0Q29lZlNjYWxlCQBkAgUNcG9vbEJvb3N0Q29lZgUSbG9ja0Jvb3N0Q29lZlNjYWxlAQxjYWxjQm9vc3RSd2QCBHBvb2wOY3VyVG90YWxSZXdhcmQEDXBvb2xCb29zdENvZWYJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBQ5rUG9vbEJvb3N0Q29lZgUQZGVmUG9vbEJvb3N0Q29lZgkAawMFDmN1clRvdGFsUmV3YXJkBQ1wb29sQm9vc3RDb2VmCQBkAgUNcG9vbEJvb3N0Q29lZgUSbG9ja0Jvb3N0Q29lZlNjYWxlAQxjYWxjSW50ZXJlc3QMBHBvb2wSbGFzdEludGVyZXN0SGVpZ2h0EnJld2FyZFVwZGF0ZUhlaWdodBZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0DGZhcm1JbnRlcmVzdA1ib29zdEludGVyZXN0CXBvb2xWb3RlZA9ib29zdExwSW50ZXJlc3QVY3VycmVudFJld2FyZFBlckJsb2NrEHNoYXJlVG9rZW5Mb2NrZWQWcHJldmlvdXNSZXdhcmRQZXJCbG9jawpzY2FsZVZhbHVlAwkAAAIFEHNoYXJlVG9rZW5Mb2NrZWQAAAkAlQoDBQxmYXJtSW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QFD2Jvb3N0THBJbnRlcmVzdAQMJHQwOTkxNDExMzI3AwMDCQBmAgUScmV3YXJkVXBkYXRlSGVpZ2h0BQZoZWlnaHQJAAACBRJyZXdhcmRVcGRhdGVIZWlnaHQFFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQHBgMJAGYCBQZoZWlnaHQFEnJld2FyZFVwZGF0ZUhlaWdodAkBAiE9AgUScmV3YXJkVXBkYXRlSGVpZ2h0BRZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0BwQBcgkAaAIFFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sJAGUCBQZoZWlnaHQFEmxhc3RJbnRlcmVzdEhlaWdodAkAlgoEBQFyBQxmYXJtSW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QFD2Jvb3N0THBJbnRlcmVzdAMDAwkAZgIFBmhlaWdodAUScmV3YXJkVXBkYXRlSGVpZ2h0CQAAAgUScmV3YXJkVXBkYXRlSGVpZ2h0BRZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0BwkAZgIFEmxhc3RJbnRlcmVzdEhlaWdodAUScmV3YXJkVXBkYXRlSGVpZ2h0BwQBcgkAaAIFFWN1cnJlbnRSZXdhcmRQZXJCbG9jawkAZQIFBmhlaWdodAUSbGFzdEludGVyZXN0SGVpZ2h0CQCWCgQFAXIFDGZhcm1JbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAUPYm9vc3RMcEludGVyZXN0BAlyd2RCZnJVcGQJAGgCBRZwcmV2aW91c1Jld2FyZFBlckJsb2NrCQBlAgUScmV3YXJkVXBkYXRlSGVpZ2h0BRJsYXN0SW50ZXJlc3RIZWlnaHQEBmZCZnJVcAkAZAIFDGZhcm1JbnRlcmVzdAkAawMJAQtjYWxjRmFybVJ3ZAIFBHBvb2wFCXJ3ZEJmclVwZAUKc2NhbGVWYWx1ZQUQc2hhcmVUb2tlbkxvY2tlZAQGYkJmclVwCQBkAgUNYm9vc3RJbnRlcmVzdAMJAGYCBQlwb29sVm90ZWQAAAkAawMJAQxjYWxjQm9vc3RSd2QCBQRwb29sBQlyd2RCZnJVcGQFC3NjYWxlVmFsdWU4BQlwb29sVm90ZWQAAAQIYkxQQmZyVXAJAGQCBQ9ib29zdExwSW50ZXJlc3QDCQBmAgUJcG9vbFZvdGVkAAAJAGsDCQBrAwkBDGNhbGNCb29zdFJ3ZAIFBHBvb2wFCXJ3ZEJmclVwZAULc2NhbGVWYWx1ZTgFEHNoYXJlVG9rZW5Mb2NrZWQFC3NjYWxlVmFsdWU4BQlwb29sVm90ZWQAAAQDcndkCQBoAgUVY3VycmVudFJld2FyZFBlckJsb2NrCQBlAgUGaGVpZ2h0BRJyZXdhcmRVcGRhdGVIZWlnaHQJAJYKBAUDcndkBQZmQmZyVXAFBmJCZnJVcAUIYkxQQmZyVXAEBnJld2FyZAgFDCR0MDk5MTQxMTMyNwJfMQQOZmFybUludHJCZWZvcmUIBQwkdDA5OTE0MTEzMjcCXzIED2Jvb3N0SW50ckJlZm9yZQgFDCR0MDk5MTQxMTMyNwJfMwQRYm9vc3RMUEludHJCZWZvcmUIBQwkdDA5OTE0MTEzMjcCXzQED25ld0Zhcm1JbnRlcmVzdAkAZAIFDmZhcm1JbnRyQmVmb3JlCQBrAwkBC2NhbGNGYXJtUndkAgUEcG9vbAUGcmV3YXJkBQpzY2FsZVZhbHVlBRBzaGFyZVRva2VuTG9ja2VkBBBuZXdCb29zdEludGVyZXN0CQBkAgUPYm9vc3RJbnRyQmVmb3JlAwkAZgIFCXBvb2xWb3RlZAAACQBrAwkBDGNhbGNCb29zdFJ3ZAIFBHBvb2wFBnJld2FyZAULc2NhbGVWYWx1ZTgFCXBvb2xWb3RlZAAABBJuZXdCb29zdExQSW50ZXJlc3QJAGQCBRFib29zdExQSW50ckJlZm9yZQMJAGYCBQlwb29sVm90ZWQAAAkAawMJAGsDCQEMY2FsY0Jvb3N0UndkAgUEcG9vbAUGcmV3YXJkBQtzY2FsZVZhbHVlOAUQc2hhcmVUb2tlbkxvY2tlZAULc2NhbGVWYWx1ZTgFCXBvb2xWb3RlZAAACQCVCgMFD25ld0Zhcm1JbnRlcmVzdAUQbmV3Qm9vc3RJbnRlcmVzdAUSbmV3Qm9vc3RMUEludGVyZXN0AQljbGFpbUNhbGMCBHBvb2wEdXNlcgQKc2NhbGVWYWx1ZQkBDmNhbGNTY2FsZVZhbHVlAgUEU1dPUAkBD2dldFNoYXJlQXNzZXRJZAEFBHBvb2wECXBvb2xWb3RlZAkBDGdldFBvb2xWb3RlZAEFBHBvb2wECnVQb29sVm90ZWQJARBnZXRVc2VyUG9vbFZvdGVkAgUEcG9vbAUEdXNlcgQKc2hhcmVUb2tlbgkBEmdldFRvdGFsU2hhcmVUb2tlbgEFBHBvb2wEEXRvdGFsU2hhcmVWaXJ0dWFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUTa1NoYXJlVG9rZW5zVmlydHVhbAUKc2hhcmVUb2tlbgQNJHQwMTIyNzYxMjM3NAkBE2dldExhc3RJbnRlcmVzdEluZm8BBQRwb29sBBJsYXN0SW50ZXJlc3RIZWlnaHQIBQ0kdDAxMjI3NjEyMzc0Al8xBAxmYXJtSW50ZXJlc3QIBQ0kdDAxMjI3NjEyMzc0Al8yBA1ib29zdEludGVyZXN0CAUNJHQwMTIyNzYxMjM3NAJfMwQPYm9vc3RMUEludGVyZXN0CAUNJHQwMTIyNzYxMjM3NAJfNAQNJHQwMTIzNzkxMjQ5MwkBCnJld2FyZEluZm8BBQRwb29sBBVjdXJyZW50UmV3YXJkUGVyQmxvY2sIBQ0kdDAxMjM3OTEyNDkzAl8xBBJyZXdhcmRVcGRhdGVIZWlnaHQIBQ0kdDAxMjM3OTEyNDkzAl8yBBZwcmV2aW91c1Jld2FyZFBlckJsb2NrCAUNJHQwMTIzNzkxMjQ5MwJfMwQWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAgFDSR0MDEyMzc5MTI0OTMCXzQEDXVGYXJtSW50ZXJlc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUVa0Zhcm1Vc2VyTGFzdEludGVyZXN0BQxmYXJtSW50ZXJlc3QEDnVCb29zdEludGVyZXN0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtCb29zdFVzZXJMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QEEHVCb29zdExQSW50ZXJlc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUYa0Jvb3N0TFBVc2VyTGFzdEludGVyZXN0BQ9ib29zdExQSW50ZXJlc3QEEnVTaGFyZVRva2Vuc1N0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zU3Rha2VkAAAEEHVTaGFyZVRva2Vuc1ZpcnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUXa1VzZXJTaGFyZVRva2Vuc1ZpcnR1YWwFEnVTaGFyZVRva2Vuc1N0YWtlZAQNJHQwMTMwNjExMzQ1NAkBDGNhbGNJbnRlcmVzdAwFBHBvb2wFEmxhc3RJbnRlcmVzdEhlaWdodAUScmV3YXJkVXBkYXRlSGVpZ2h0BRZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0BQxmYXJtSW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QFCXBvb2xWb3RlZAUPYm9vc3RMUEludGVyZXN0BRVjdXJyZW50UmV3YXJkUGVyQmxvY2sFEXRvdGFsU2hhcmVWaXJ0dWFsBRZwcmV2aW91c1Jld2FyZFBlckJsb2NrBQpzY2FsZVZhbHVlBA9uZXdGYXJtSW50ZXJlc3QIBQ0kdDAxMzA2MTEzNDU0Al8xBBBuZXdCb29zdEludGVyZXN0CAUNJHQwMTMwNjExMzQ1NAJfMgQSbmV3Qm9vc3RMUEludGVyZXN0CAUNJHQwMTMwNjExMzQ1NAJfMwQMY2xhaW1GYXJtaW5nCQBrAwUQdVNoYXJlVG9rZW5zVmlydAkAZQIFD25ld0Zhcm1JbnRlcmVzdAUNdUZhcm1JbnRlcmVzdAUKc2NhbGVWYWx1ZQQQY2xhaW1Cb29zdGluZ01heAMJAAACBQp1UG9vbFZvdGVkAAAJAGkCBQxjbGFpbUZhcm1pbmcAAgkAawMFCnVQb29sVm90ZWQJAGUCBRBuZXdCb29zdEludGVyZXN0BQ51Qm9vc3RJbnRlcmVzdAULc2NhbGVWYWx1ZTgEA211bAkAvAIDCQC2AgEFEHVTaGFyZVRva2Vuc1ZpcnQJALYCAQUKdVBvb2xWb3RlZAkAtgIBAAEEDWNsYWltQm9vc3RpbmcJAKADAQkAvAIDCQC8AgMFA211bAkAtgIBCQBlAgUSbmV3Qm9vc3RMUEludGVyZXN0BRB1Qm9vc3RMUEludGVyZXN0CQC2AgEFC3NjYWxlVmFsdWU4CQC2AgEAAQkAtgIBBQtzY2FsZVZhbHVlOAQKdG9UcmVhc3VyeQkAZQIFEGNsYWltQm9vc3RpbmdNYXgFDWNsYWltQm9vc3RpbmcDCQBmAgAABQp0b1RyZWFzdXJ5CQACAQIOdG9UcmVhc3VyeSA8IDAJAJcKBQUPbmV3RmFybUludGVyZXN0BRBuZXdCb29zdEludGVyZXN0BRJuZXdCb29zdExQSW50ZXJlc3QJAGQCBQxjbGFpbUZhcm1pbmcFDWNsYWltQm9vc3RpbmcFCnRvVHJlYXN1cnkBG2F2YWlsYWJsZUNsYWltQ2FsY0FsbEJ5VXNlcgIFcG9vbHMEdXNlcgoBDWNhbGNBdmFpbGFibGUCA2FjYwRwb29sBA0kdDAxNDM2NTE0Mzk0BQNhY2MECG5ld1Bvb2xzCAUNJHQwMTQzNjUxNDM5NAJfMQQHYW1vdW50cwgFDSR0MDE0MzY1MTQzOTQCXzIEDSR0MDE0NDAzMTQ0NjIJAQljbGFpbUNhbGMCBQRwb29sBQR1c2VyBAJmaQgFDSR0MDE0NDAzMTQ0NjICXzEEAmJpCAUNJHQwMTQ0MDMxNDQ2MgJfMgQEYmxwaQgFDSR0MDE0NDAzMTQ0NjICXzMEC2NsYWltQW1vdW50CAUNJHQwMTQ0MDMxNDQ2MgJfNAQCdHQIBQ0kdDAxNDQwMzE0NDYyAl81BA1hdmFpbGFibGVGdW5kCQBkAgkBEXVzZXJBdmFpbGFibGVTV09QAgUEcG9vbAUEdXNlcgULY2xhaW1BbW91bnQJAJQKAgkAzQgCBQhuZXdQb29scwUEcG9vbAkAzQgCBQdhbW91bnRzBQ1hdmFpbGFibGVGdW5kCgACJGwFBXBvb2xzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQNuaWwFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQENY2FsY0F2YWlsYWJsZQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwBFWNhbkxvY2tJbkZpcnN0SGFydmVzdAUEcG9vbAR1c2VyFXVzZXJTaGFyZVRva2Vuc1N0YWtlZAlwbXRBbW91bnQIbG9ja1R5cGUDCQBmAgkBFWdldEhlaWdodEZpcnN0SGFydmVzdAEFBHBvb2wFBmhlaWdodAQPdG90YWxWb3RlQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFDXZvdGluZ0FkZHJlc3MJAKwCAgUEcG9vbAUQa0hhcnZlc3RQb29sVm90ZQAABA51c2VyVm90ZUFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ12b3RpbmdBZGRyZXNzCQCsAgIJAKwCAgkArAICBQR1c2VyAgFfBQRwb29sBRRrSGFydmVzdFVzZXJQb29sVm90ZQAABBFGSFNoYXJlVG9rZW5MaW1pdAkBFGdldEZIU2hhcmVMaW1pdFRva2VuAQkBEUBleHRyTmF0aXZlKDEwNjIpAQUEcG9vbAQVRkhTaGFyZVRva2VuVXNlckxpbWl0CQBlAgkAawMFEUZIU2hhcmVUb2tlbkxpbWl0BQ51c2VyVm90ZUFtb3VudAUPdG90YWxWb3RlQW1vdW50BRV1c2VyU2hhcmVUb2tlbnNTdGFrZWQDCQBmAgUIbG9ja1R5cGUAAAkAAgECMllvdSBjYW4ndCBsb2NrIHNoYXJlVG9rZW5zIHRpbGwgZmlyc3QgaGFydmVzdCBlbmQuAwkAAAIFDnVzZXJWb3RlQW1vdW50AAAAAAMJAGcCBQlwbXRBbW91bnQFFUZIU2hhcmVUb2tlblVzZXJMaW1pdAkAZQIFCXBtdEFtb3VudAUVRkhTaGFyZVRva2VuVXNlckxpbWl0AAAAAAENZ2V0TG9ja1BhcmFtcwEEdHlwZQQKbG9ja1BhcmFtcwkAtQkCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICCQCkAwEFBHR5cGUFC2tMb2NrUGFyYW1zCQCsAgICHlRoZXJlIGFyZSBubyBrZXkgZm9yIGxvY2sgdHlwZQkApAMBBQR0eXBlAgFfCQCUCgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpsb2NrUGFyYW1zAAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpsb2NrUGFyYW1zAAEBB3N1c3BlbmQBBWNhdXNlCQDMCAIJAQxCb29sZWFuRW50cnkCBQdrQWN0aXZlBwkAzAgCCQELU3RyaW5nRW50cnkCBQZrQ2F1c2UFBWNhdXNlBQNuaWwBCGlzQWN0aXZlAAMDBQZhY3RpdmUFCmFjdGl2ZUdsb2IHBQR1bml0CQACAQIfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAELaXNBZG1pbkNhbGwBAWkDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQxhZG1pblB1YktleTEJAMwIAgUMYWRtaW5QdWJLZXkyCQDMCAIFDGFkbWluUHViS2V5MwUDbmlsCAUBaQ9jYWxsZXJQdWJsaWNLZXkFBHVuaXQJAAIBAiFPbmx5IGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24BCmlzUG9vbENhbGwCAWkEcG9vbAMDCQAAAgkApQgBCAUBaQZjYWxsZXIFBHBvb2wGCQAAAggFAWkGY2FsbGVyBQxjcG1tQ29udHJhY3QFBHVuaXQJAAIBAiBPbmx5IHBvb2wgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgEKaXNTZWxmQ2FsbAEBaQMJAAACCAUBaQZjYWxsZXIFBHRoaXMFBHVuaXQJAAIBAitPbmx5IGNvbnRyYWN0IGl0c2VsZiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uARNjYWxjTG9ja1NoYXJlVG9rZW5zBAFpBmNhbGxlcgRwb29sCGxvY2tUeXBlBAxzaGFyZUFzc2V0SWQJAQ9nZXRTaGFyZUFzc2V0SWQBBQRwb29sBAR1c2VyCQClCAEFBmNhbGxlcgQKdG90YWxTaGFyZQkBEmdldFRvdGFsU2hhcmVUb2tlbgEFBHBvb2wEEXRvdGFsU2hhcmVWaXJ0dWFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUTa1NoYXJlVG9rZW5zVmlydHVhbAUKdG90YWxTaGFyZQQQdXNlclN0YWtlZEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zU3Rha2VkAAAED3VzZXJMb2NrZWRIZWlndAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRxrVXNlclNoYXJlVG9rZW5zTG9ja2VkSGVpZ2h0AAAEEHVzZXJMb2NrZWRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc0xvY2tlZAAABBF1c2VyQW1vdW50VmlydHVhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRdrVXNlclNoYXJlVG9rZW5zVmlydHVhbAUQdXNlclN0YWtlZEFtb3VudAQUdG90YWxVc2VyU2hhcmVUb2tlbnMJAGQCCQBkAgUQdXNlclN0YWtlZEFtb3VudAUQdXNlckxvY2tlZEFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEDSR0MDE3MjYzMTczMTUJAQ1nZXRMb2NrUGFyYW1zAQUIbG9ja1R5cGUECmxvY2tQZXJpb2QIBQ0kdDAxNzI2MzE3MzE1Al8xBAhsb2NrQ29lZggFDSR0MDE3MjYzMTczMTUCXzIEDGxvY2tXYXZlc0ZlZQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUNa0xvY2tXYXZlc0ZlZQMJAQIhPQIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUMc2hhcmVBc3NldElkCQACAQIbV3Jvbmcgc2hhcmV0b2tlbiBpbiBwYXltZW50AwkAZwIAAAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAAIBAiVQYXltZW50IGFtb3VudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwAwkAZgIAAAUIbG9ja1R5cGUJAAIBAhVsb2NrVHlwZSBtdXN0IGJlID49IDAEFXNoYXJlVG9rZW5zQ2hhbmdlT25GSAkBFWNhbkxvY2tJbkZpcnN0SGFydmVzdAUFBHBvb2wFBHVzZXIFEHVzZXJTdGFrZWRBbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BQhsb2NrVHlwZQMJAAACBRVzaGFyZVRva2Vuc0NoYW5nZU9uRkgFFXNoYXJlVG9rZW5zQ2hhbmdlT25GSAQNJHQwMTc3NDIxOTY3NgMJAAACBQhsb2NrVHlwZQAABBR1c2VyQW1vdW50VmlydHVhbE5ldwkAZQIJAGQCBRF1c2VyQW1vdW50VmlydHVhbAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFFXNoYXJlVG9rZW5zQ2hhbmdlT25GSAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zU3Rha2VkCQBlAgkAZAIFEHVzZXJTdGFrZWRBbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BRVzaGFyZVRva2Vuc0NoYW5nZU9uRkgJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFF2tVc2VyU2hhcmVUb2tlbnNWaXJ0dWFsBRR1c2VyQW1vdW50VmlydHVhbE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrU2hhcmVUb2tlbnNWaXJ0dWFsCQBlAgkAZAIFEXRvdGFsU2hhcmVWaXJ0dWFsCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUVc2hhcmVUb2tlbnNDaGFuZ2VPbkZICQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUVc2hhcmVUb2tlbnNDaGFuZ2VPbkZICAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFA25pbAkAZQIJAGQCBQp0b3RhbFNoYXJlCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUVc2hhcmVUb2tlbnNDaGFuZ2VPbkZIAwMJAAACBQ91c2VyTG9ja2VkSGVpZ3QAAAMDCQBmAgACCQCQAwEIBQFpCHBheW1lbnRzBgkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAQdhc3NldElkBQR1bml0BgkAZgIFDGxvY2tXYXZlc0ZlZQgJAJEDAggFAWkIcGF5bWVudHMAAQZhbW91bnQHCQACAQkArAICCQCsAgICK1lvdSBuZWVkIHRvIHBheSBhZGRpdGlvbmFsIHdhdmVzIGNvbWlzc2lvbiAJAKQDAQUMbG9ja1dhdmVzRmVlAgVXQVZFUwMJAGYCBQ91c2VyTG9ja2VkSGVpZ3QJAGQCBQZoZWlnaHQFCmxvY2tQZXJpb2QJAAIBAk9Zb3UgY2Fubm90IGxvY2sgc2hhcmV0b2tlbnMgZm9yIGEgcGVyaW9kIGxlc3MgdGhhbiB3aGF0IHlvdSBoYXZlIGFscmVhZHkgbG9ja2VkBBN1c2VyTG9ja2VkQW1vdW50TmV3CQBkAgUQdXNlckxvY2tlZEFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEEnVzZXJMb2NrZWRIZWlndE5ldwkAZAIFBmhlaWdodAUKbG9ja1BlcmlvZAQUdXNlckFtb3VudFZpcnR1YWxOZXcJAGQCCQBrAwUTdXNlckxvY2tlZEFtb3VudE5ldwUIbG9ja0NvZWYFEmxvY2tCb29zdENvZWZTY2FsZQUQdXNlclN0YWtlZEFtb3VudAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zTG9ja2VkBRN1c2VyTG9ja2VkQW1vdW50TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRxrVXNlclNoYXJlVG9rZW5zTG9ja2VkSGVpZ2h0BRJ1c2VyTG9ja2VkSGVpZ3ROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFGmtVc2VyU2hhcmVUb2tlbnNMb2NrZWRUeXBlBQhsb2NrVHlwZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUXa1VzZXJTaGFyZVRva2Vuc1ZpcnR1YWwFFHVzZXJBbW91bnRWaXJ0dWFsTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tTaGFyZVRva2Vuc1ZpcnR1YWwJAGQCCQBlAgURdG90YWxTaGFyZVZpcnR1YWwFEXVzZXJBbW91bnRWaXJ0dWFsBRR1c2VyQW1vdW50VmlydHVhbE5ldwUDbmlsCQBkAgUKdG90YWxTaGFyZQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEC2xvY2tFbnRyaWVzCAUNJHQwMTc3NDIxOTY3NgJfMQQNdG90YWxTaGFyZU5ldwgFDSR0MDE3NzQyMTk2NzYCXzIDCQBmAgkBDmFjY291bnRCYWxhbmNlAQUMc2hhcmVBc3NldElkBQ10b3RhbFNoYXJlTmV3CQACAQIwQmFsYW5jZSBvZiBzaGFyZS10b2tlbiBpcyBsb3dlciB0aGFuIHRvdGFsQW1vdW50BA0kdDAxOTgwMTE5OTAwCQEJY2xhaW1DYWxjAgUEcG9vbAUEdXNlcgQMZmFybUludGVyZXN0CAUNJHQwMTk4MDExOTkwMAJfMQQNYm9vc3RJbnRlcmVzdAgFDSR0MDE5ODAxMTk5MDACXzIED2Jvb3N0TFBpbnRlcmVzdAgFDSR0MDE5ODAxMTk5MDACXzMEC2NsYWltQW1vdW50CAUNJHQwMTk4MDExOTkwMAJfNAQKdG9UcmVhc3VyZQgFDSR0MDE5ODAxMTk5MDACXzUEEWF2YWlsYWJsZUZ1bmRzTmV3CQBkAgkBEXVzZXJBdmFpbGFibGVTV09QAgUEcG9vbAUEdXNlcgULY2xhaW1BbW91bnQEBHVwbHADCQAAAgkAnQgCCQEHQWRkcmVzcwEJANkEAQUEcG9vbAIHdmVyc2lvbgIFMy4wLjAJAPwHBAUQbHBGYXJtaW5nQWRkcmVzcwISdXBkYXRlVXNlckludGVyZXN0CQDMCAIFBHVzZXIJAMwIAgUEcG9vbAkAzAgCBRR0b3RhbFVzZXJTaGFyZVRva2VucwUDbmlsBQNuaWwAAAMJAAACBQR1cGxwBQR1cGxwCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFWtGYXJtVXNlckxhc3RJbnRlcmVzdAUMZmFybUludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrQm9vc3RVc2VyTGFzdEludGVyZXN0BQ1ib29zdEludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRhrQm9vc3RMUFVzZXJMYXN0SW50ZXJlc3QFD2Jvb3N0TFBpbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRFrRmFybUxhc3RJbnRlcmVzdAUMZmFybUludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEmtCb29zdExhc3RJbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRRrQm9vc3RMUExhc3RJbnRlcmVzdAUPYm9vc3RMUGludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tMYXN0SW50ZXJlc3RIZWlnaHQFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRZrU2hhcmVUb3RhbFNoYXJlVG9rZW5zBQ10b3RhbFNoYXJlTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBQ5rQXZhaWxhYmxlU1dPUAURYXZhaWxhYmxlRnVuZHNOZXcJAMwIAgkBB1JlaXNzdWUDBQRTV09QBQp0b1RyZWFzdXJlBgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRNmYXJtaW5nVHJlYXN1cmVBZGRyBQp0b1RyZWFzdXJlBQRTV09QBQNuaWwFC2xvY2tFbnRyaWVzCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARdjYWxjV2l0aGRyYXdTaGFyZVRva2VucwQBaQZjYWxsZXIEcG9vbBlzaGFyZVRva2Vuc1dpdGhkcmF3QW1vdW50CQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABA1zaGFyZVRva2Vuc0lkCQDZBAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQV2YWx1ZQEJAKYIAQUEcG9vbAIOc2hhcmVfYXNzZXRfaWQEBHVzZXIJAKUIAQUGY2FsbGVyBA0kdDAyMTI0NTIxMzQ0CQEJY2xhaW1DYWxjAgUEcG9vbAUEdXNlcgQMZmFybUludGVyZXN0CAUNJHQwMjEyNDUyMTM0NAJfMQQNYm9vc3RJbnRlcmVzdAgFDSR0MDIxMjQ1MjEzNDQCXzIED2Jvb3N0TFBpbnRlcmVzdAgFDSR0MDIxMjQ1MjEzNDQCXzMEC2NsYWltQW1vdW50CAUNJHQwMjEyNDUyMTM0NAJfNAQKdG9UcmVhc3VyZQgFDSR0MDIxMjQ1MjEzNDQCXzUEEHVzZXJTdGFrZWRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc1N0YWtlZAAABBB1c2VyTG9ja2VkQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNMb2NrZWQAAAQRdXNlckFtb3VudFZpcnR1YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUXa1VzZXJTaGFyZVRva2Vuc1ZpcnR1YWwFEHVzZXJTdGFrZWRBbW91bnQEE3VzZXJTdGFrZWRBbW91bnROZXcJAGUCBRB1c2VyU3Rha2VkQW1vdW50BRlzaGFyZVRva2Vuc1dpdGhkcmF3QW1vdW50BBFhdmFpbGFibGVGdW5kc05ldwkAZAIJARF1c2VyQXZhaWxhYmxlU1dPUAIFBHBvb2wFBHVzZXIFC2NsYWltQW1vdW50BBB0b3RhbFNoYXJlQW1vdW50CQESZ2V0VG90YWxTaGFyZVRva2VuAQUEcG9vbAQRdG90YWxTaGFyZVZpcnR1YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRNrU2hhcmVUb2tlbnNWaXJ0dWFsBRB0b3RhbFNoYXJlQW1vdW50BBN0b3RhbFNoYXJlQW1vdW50TmV3CQBlAgUQdG90YWxTaGFyZUFtb3VudAUZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAQUdG90YWxTaGFyZVZpcnR1YWxOZXcJAGUCBRF0b3RhbFNoYXJlVmlydHVhbAUZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAQUdXNlckFtb3VudFZpcnR1YWxOZXcJAGUCBRF1c2VyQW1vdW50VmlydHVhbAUZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAMJAGYCBRlzaGFyZVRva2Vuc1dpdGhkcmF3QW1vdW50BRB1c2VyU3Rha2VkQW1vdW50CQACAQIsV2l0aGRyYXcgYW1vdW50IG1vcmUgdGhlbiB1c2VyIGxvY2tlZCBhbW91bnQDCQBmAgkBDmFjY291bnRCYWxhbmNlAQUNc2hhcmVUb2tlbnNJZAUQdG90YWxTaGFyZUFtb3VudAkAAgECMEJhbGFuY2Ugb2Ygc2hhcmUtdG9rZW4gaXMgbG93ZXIgdGhhbiB0b3RhbEFtb3VudAQEdXBscAMJAAACCQCdCAIJAQdBZGRyZXNzAQkA2QQBBQRwb29sAgd2ZXJzaW9uAgUzLjAuMAkA/AcEBRBscEZhcm1pbmdBZGRyZXNzAhJ1cGRhdGVVc2VySW50ZXJlc3QJAMwIAgUEdXNlcgkAzAgCBQRwb29sCQDMCAIJAGQCBRB1c2VyU3Rha2VkQW1vdW50BRB1c2VyTG9ja2VkQW1vdW50BQNuaWwFA25pbAAAAwkAAAIFBHVwbHAFBHVwbHAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFWtGYXJtVXNlckxhc3RJbnRlcmVzdAUMZmFybUludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrQm9vc3RVc2VyTGFzdEludGVyZXN0BQ1ib29zdEludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRhrQm9vc3RMUFVzZXJMYXN0SW50ZXJlc3QFD2Jvb3N0TFBpbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRFrRmFybUxhc3RJbnRlcmVzdAUMZmFybUludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEmtCb29zdExhc3RJbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRRrQm9vc3RMUExhc3RJbnRlcmVzdAUPYm9vc3RMUGludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tMYXN0SW50ZXJlc3RIZWlnaHQFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc1N0YWtlZAUTdXNlclN0YWtlZEFtb3VudE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUXa1VzZXJTaGFyZVRva2Vuc1ZpcnR1YWwFFHVzZXJBbW91bnRWaXJ0dWFsTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFFmtTaGFyZVRvdGFsU2hhcmVUb2tlbnMFE3RvdGFsU2hhcmVBbW91bnROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa1NoYXJlVG9rZW5zVmlydHVhbAUUdG90YWxTaGFyZVZpcnR1YWxOZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFDmtBdmFpbGFibGVTV09QBRFhdmFpbGFibGVGdW5kc05ldwkAzAgCCQEHUmVpc3N1ZQMFBFNXT1AFCnRvVHJlYXN1cmUGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFE2Zhcm1pbmdUcmVhc3VyZUFkZHIFCnRvVHJlYXN1cmUFBFNXT1AJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBRlzaGFyZVRva2Vuc1dpdGhkcmF3QW1vdW50BQ1zaGFyZVRva2Vuc0lkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BCWNhbGNDbGFpbQMBaQRwb29sBmNhbGxlcgQNc2hhcmVUb2tlbnNJZAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1MykCCQEFdmFsdWUBCQCmCAEFBHBvb2wCDnNoYXJlX2Fzc2V0X2lkBAR1c2VyCQClCAEFBmNhbGxlcgQQc2hhcmVUb2tlbkxvY2tlZAkBEmdldFRvdGFsU2hhcmVUb2tlbgEFBHBvb2wEDSR0MDI0MDEwMjQxMDkJAQljbGFpbUNhbGMCBQRwb29sBQR1c2VyBAxmYXJtSW50ZXJlc3QIBQ0kdDAyNDAxMDI0MTA5Al8xBA1ib29zdEludGVyZXN0CAUNJHQwMjQwMTAyNDEwOQJfMgQPYm9vc3RMUGludGVyZXN0CAUNJHQwMjQwMTAyNDEwOQJfMwQLY2xhaW1BbW91bnQIBQ0kdDAyNDAxMDI0MTA5Al80BAp0b1RyZWFzdXJlCAUNJHQwMjQwMTAyNDEwOQJfNQQNYXZhaWxhYmxlRnVuZAkAZAIJARF1c2VyQXZhaWxhYmxlU1dPUAIFBHBvb2wFBHVzZXIFC2NsYWltQW1vdW50AwkAAAIFDWF2YWlsYWJsZUZ1bmQAAAkAAgECGVlvdSBoYXZlIDAgYXZhaWxhYmxlIFNXT1ADCQBmAgkBDmFjY291bnRCYWxhbmNlAQUNc2hhcmVUb2tlbnNJZAUQc2hhcmVUb2tlbkxvY2tlZAkAAgECMEJhbGFuY2Ugb2Ygc2hhcmUtdG9rZW4gaXMgbG93ZXIgdGhhbiB0b3RhbEFtb3VudAQGdVRyYW5zAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUNYXZhaWxhYmxlRnVuZAUEU1dPUAUDbmlsBQNuaWwJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRVrRmFybVVzZXJMYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa0Jvb3N0VXNlckxhc3RJbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUYa0Jvb3N0TFBVc2VyTGFzdEludGVyZXN0BQ9ib29zdExQaW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAURa0Zhcm1MYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRJrQm9vc3RMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUUa0Jvb3N0TFBMYXN0SW50ZXJlc3QFD2Jvb3N0TFBpbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrTGFzdEludGVyZXN0SGVpZ2h0BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFDmtBdmFpbGFibGVTV09QAAAJAMwIAgkBB1JlaXNzdWUDBQRTV09QCQBkAgUKdG9UcmVhc3VyZQUNYXZhaWxhYmxlRnVuZAYJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUTZmFybWluZ1RyZWFzdXJlQWRkcgUKdG9UcmVhc3VyZQUEU1dPUAUDbmlsBQZ1VHJhbnMFDWF2YWlsYWJsZUZ1bmQRAWkBBGluaXQBB2Vhcmx5TFADCQEJaXNEZWZpbmVkAQkAnQgCBQR0aGlzBQdrU1dPUGlkCQACAQIYU1dPUCBhbHJlYWR5IGluaXRpYWxpemVkBAppbml0QW1vdW50AICA6YOx3hYECVNXT1Bpc3N1ZQkAwggFAgRTV09QAhNTV09QIHByb3RvY29sIHRva2VuBQppbml0QW1vdW50AAgGBAZTV09QaWQJALgIAQUJU1dPUGlzc3VlCQDMCAIJAQxCb29sZWFuRW50cnkCBQdrQWN0aXZlBgkAzAgCCQDCCAUCBFNXT1ACE1NXT1AgcHJvdG9jb2wgdG9rZW4FCmluaXRBbW91bnQACAYJAMwIAgkBC1N0cmluZ0VudHJ5AgUHa1NXT1BpZAkA2AQBBQZTV09QaWQFA25pbAFpARRpbml0UG9vbFNoYXJlRmFybWluZwEEcG9vbAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRZrU2hhcmVUb3RhbFNoYXJlVG9rZW5zAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAURa0Zhcm1MYXN0SW50ZXJlc3QAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRJrQm9vc3RMYXN0SW50ZXJlc3QAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRRrQm9vc3RMUExhc3RJbnRlcmVzdAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tMYXN0SW50ZXJlc3RIZWlnaHQFBmhlaWdodAUDbmlsAWkBEnVwZGF0ZVBvb2xJbnRlcmVzdAEEcG9vbAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAMJAQIhPQIIBQFpBmNhbGxlcgUKZ292QWRkcmVzcwkAAgECJk9ubHkgR292ZXJuYW5jZSBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uBAR1c2VyCQClCAEJAKcIAQURYWRtaW5JbnZva2VQdWJLZXkEDSR0MDI2MjY0MjYzMzgJAQljbGFpbUNhbGMCBQRwb29sBQR1c2VyBAxmYXJtSW50ZXJlc3QIBQ0kdDAyNjI2NDI2MzM4Al8xBA1ib29zdEludGVyZXN0CAUNJHQwMjYyNjQyNjMzOAJfMgQPYm9vc3RMUGludGVyZXN0CAUNJHQwMjYyNjQyNjMzOAJfMwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRFrRmFybUxhc3RJbnRlcmVzdAUMZmFybUludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEmtCb29zdExhc3RJbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRRrQm9vc3RMUExhc3RJbnRlcmVzdAUPYm9vc3RMUGludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tMYXN0SW50ZXJlc3RIZWlnaHQFBmhlaWdodAUDbmlsAWkBD2xvY2tTaGFyZVRva2VucwIEcG9vbAhsb2NrVHlwZQkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAkBE2NhbGNMb2NrU2hhcmVUb2tlbnMEBQFpCAUBaQZjYWxsZXIFBHBvb2wFCGxvY2tUeXBlAWkBF2xvY2tTaGFyZVRva2Vuc0Zyb21Qb29sAwtjYWxsZXJCeXRlcwRwb29sCGxvY2tUeXBlCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACQELdmFsdWVPckVsc2UCCQEKaXNQb29sQ2FsbAIFAWkFBHBvb2wJARNjYWxjTG9ja1NoYXJlVG9rZW5zBAUBaQkBB0FkZHJlc3MBBQtjYWxsZXJCeXRlcwUEcG9vbAUIbG9ja1R5cGUBaQEVbG9ja1N0YWtlZFNoYXJlVG9rZW5zAwRwb29sCGxvY2tUeXBlCmxvY2tBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAEDHNoYXJlQXNzZXRJZAkBD2dldFNoYXJlQXNzZXRJZAEFBHBvb2wEBHVzZXIJAKUIAQgFAWkGY2FsbGVyBAp0b3RhbFNoYXJlCQESZ2V0VG90YWxTaGFyZVRva2VuAQUEcG9vbAQRdG90YWxTaGFyZVZpcnR1YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRNrU2hhcmVUb2tlbnNWaXJ0dWFsBQp0b3RhbFNoYXJlBBB1c2VyU3Rha2VkQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNTdGFrZWQAAAQPdXNlckxvY2tlZEhlaWd0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFHGtVc2VyU2hhcmVUb2tlbnNMb2NrZWRIZWlnaHQAAAQQdXNlckxvY2tlZEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zTG9ja2VkAAAEEXVzZXJBbW91bnRWaXJ0dWFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFF2tVc2VyU2hhcmVUb2tlbnNWaXJ0dWFsBRB1c2VyU3Rha2VkQW1vdW50BBR0b3RhbFVzZXJTaGFyZVRva2VucwkAZAIFEHVzZXJTdGFrZWRBbW91bnQFEHVzZXJMb2NrZWRBbW91bnQEDSR0MDI3ODI1Mjc4NzcJAQ1nZXRMb2NrUGFyYW1zAQUIbG9ja1R5cGUECmxvY2tQZXJpb2QIBQ0kdDAyNzgyNTI3ODc3Al8xBAhsb2NrQ29lZggFDSR0MDI3ODI1Mjc4NzcCXzIEDGxvY2tXYXZlc0ZlZQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUNa0xvY2tXYXZlc0ZlZQMJAGYCCQEVZ2V0SGVpZ2h0Rmlyc3RIYXJ2ZXN0AQUEcG9vbAUGaGVpZ2h0CQACAQIyWW91IGNhbid0IGxvY2sgc2hhcmVUb2tlbnMgdGlsbCBmaXJzdCBoYXJ2ZXN0IGVuZC4DCQBnAgAABQhsb2NrVHlwZQkAAgECFGxvY2tUeXBlIG11c3QgYmUgPiAwAwkAZgIFCmxvY2tBbW91bnQFEHVzZXJTdGFrZWRBbW91bnQJAAIBCQCsAgICGVlvdSBjYW4ndCBsb2NrIG1vcmUgdGhhbiAJAKQDAQUQdXNlclN0YWtlZEFtb3VudAMJAGYCCQEOYWNjb3VudEJhbGFuY2UBBQxzaGFyZUFzc2V0SWQFCnRvdGFsU2hhcmUJAAIBAjBCYWxhbmNlIG9mIHNoYXJlLXRva2VuIGlzIGxvd2VyIHRoYW4gdG90YWxBbW91bnQDAwkAAAIFD3VzZXJMb2NrZWRIZWlndAAAAwMJAGYCAAEJAJADAQgFAWkIcGF5bWVudHMGCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFBHVuaXQGCQBmAgUMbG9ja1dhdmVzRmVlCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAcJAAIBCQCsAgIJAKwCAgIrWW91IG5lZWQgdG8gcGF5IGFkZGl0aW9uYWwgd2F2ZXMgY29taXNzaW9uIAkApAMBBQxsb2NrV2F2ZXNGZWUCBVdBVkVTAwMJAAACBQ91c2VyTG9ja2VkSGVpZ3QAAAkAZwIAAAUKbG9ja0Ftb3VudAcJAAIBAiFsb2NrQW1vdW50IG11c3QgYmUgZ3JlYXRlciB0aGFuIDADCQBmAgAABQpsb2NrQW1vdW50CQACAQIbbG9ja0Ftb3VudCBtdXN0IGJlIHBvc2l0aXZlAwkAZgIFD3VzZXJMb2NrZWRIZWlndAkAZAIFBmhlaWdodAUKbG9ja1BlcmlvZAkAAgECT1lvdSBjYW5ub3QgbG9jayBzaGFyZXRva2VucyBmb3IgYSBwZXJpb2QgbGVzcyB0aGFuIHdoYXQgeW91IGhhdmUgYWxyZWFkeSBsb2NrZWQEE3VzZXJMb2NrZWRBbW91bnROZXcJAGQCBRB1c2VyTG9ja2VkQW1vdW50BQpsb2NrQW1vdW50BBN1c2VyU3Rha2VkQW1vdW50TmV3CQBlAgUQdXNlclN0YWtlZEFtb3VudAUKbG9ja0Ftb3VudAQSdXNlckxvY2tlZEhlaWd0TmV3CQBkAgUGaGVpZ2h0BQpsb2NrUGVyaW9kBBR1c2VyQW1vdW50VmlydHVhbE5ldwkAZAIJAGsDBRN1c2VyTG9ja2VkQW1vdW50TmV3BQhsb2NrQ29lZgUSbG9ja0Jvb3N0Q29lZlNjYWxlBRN1c2VyU3Rha2VkQW1vdW50TmV3BA0kdDAyOTE2NzI5MjY2CQEJY2xhaW1DYWxjAgUEcG9vbAUEdXNlcgQMZmFybUludGVyZXN0CAUNJHQwMjkxNjcyOTI2NgJfMQQNYm9vc3RJbnRlcmVzdAgFDSR0MDI5MTY3MjkyNjYCXzIED2Jvb3N0TFBpbnRlcmVzdAgFDSR0MDI5MTY3MjkyNjYCXzMEC2NsYWltQW1vdW50CAUNJHQwMjkxNjcyOTI2NgJfNAQKdG9UcmVhc3VyZQgFDSR0MDI5MTY3MjkyNjYCXzUEEWF2YWlsYWJsZUZ1bmRzTmV3CQBkAgkBEXVzZXJBdmFpbGFibGVTV09QAgUEcG9vbAUEdXNlcgULY2xhaW1BbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNTdGFrZWQFE3VzZXJTdGFrZWRBbW91bnROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNMb2NrZWQFE3VzZXJMb2NrZWRBbW91bnROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFHGtVc2VyU2hhcmVUb2tlbnNMb2NrZWRIZWlnaHQFEnVzZXJMb2NrZWRIZWlndE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUaa1VzZXJTaGFyZVRva2Vuc0xvY2tlZFR5cGUFCGxvY2tUeXBlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRdrVXNlclNoYXJlVG9rZW5zVmlydHVhbAUUdXNlckFtb3VudFZpcnR1YWxOZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa1NoYXJlVG9rZW5zVmlydHVhbAkAZAIJAGUCBRF0b3RhbFNoYXJlVmlydHVhbAURdXNlckFtb3VudFZpcnR1YWwFFHVzZXJBbW91bnRWaXJ0dWFsTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRVrRmFybVVzZXJMYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa0Jvb3N0VXNlckxhc3RJbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUYa0Jvb3N0TFBVc2VyTGFzdEludGVyZXN0BQ9ib29zdExQaW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAURa0Zhcm1MYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRJrQm9vc3RMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUUa0Jvb3N0TFBMYXN0SW50ZXJlc3QFD2Jvb3N0TFBpbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrTGFzdEludGVyZXN0SGVpZ2h0BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFDmtBdmFpbGFibGVTV09QBRFhdmFpbGFibGVGdW5kc05ldwkAzAgCCQEHUmVpc3N1ZQMFBFNXT1AFCnRvVHJlYXN1cmUGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFE2Zhcm1pbmdUcmVhc3VyZUFkZHIFCnRvVHJlYXN1cmUFBFNXT1AFA25pbAFpAQ51bmxvY2tVc2VyTG9jawIEcG9vbAR1c2VyCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABAxsb2NrV2F2ZXNGZWUJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFDWtMb2NrV2F2ZXNGZWUED3VzZXJMb2NrZWRIZWlndAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFHGtVc2VyU2hhcmVUb2tlbnNMb2NrZWRIZWlnaHQJAKwCAgkArAICCQCsAgIJAKwCAgIRVGhlcmUgaXMgbm8gcG9vbCAFBHBvb2wCCSBvciB1c2VyIAUEdXNlcgIJd2l0aCBsb2NrBBF0b3RhbFNoYXJlVmlydHVhbAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQRwb29sBRNrU2hhcmVUb2tlbnNWaXJ0dWFsBBB1c2VyU3Rha2VkQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNTdGFrZWQAAAQQdXNlckxvY2tlZEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zTG9ja2VkAAAEEXVzZXJBbW91bnRWaXJ0dWFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFF2tVc2VyU2hhcmVUb2tlbnNWaXJ0dWFsBRB1c2VyU3Rha2VkQW1vdW50AwkAZgIFD3VzZXJMb2NrZWRIZWlndAUGaGVpZ2h0CQACAQkArAICAiJZb3UgY2FuJ3QgdW5sb2NrIHNoYXJldG9rZW5zIHRpbGwgCQCkAwEFD3VzZXJMb2NrZWRIZWlndAQTdXNlclN0YWtlZEFtb3VudE5ldwkAZAIFEHVzZXJTdGFrZWRBbW91bnQFEHVzZXJMb2NrZWRBbW91bnQEDSR0MDMxNDk2MzE1OTUJAQljbGFpbUNhbGMCBQRwb29sBQR1c2VyBAxmYXJtSW50ZXJlc3QIBQ0kdDAzMTQ5NjMxNTk1Al8xBA1ib29zdEludGVyZXN0CAUNJHQwMzE0OTYzMTU5NQJfMgQPYm9vc3RMUGludGVyZXN0CAUNJHQwMzE0OTYzMTU5NQJfMwQLY2xhaW1BbW91bnQIBQ0kdDAzMTQ5NjMxNTk1Al80BAp0b1RyZWFzdXJlCAUNJHQwMzE0OTYzMTU5NQJfNQQRYXZhaWxhYmxlRnVuZHNOZXcJAGQCCQERdXNlckF2YWlsYWJsZVNXT1ACBQRwb29sBQR1c2VyBQtjbGFpbUFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUVa0Zhcm1Vc2VyTGFzdEludGVyZXN0BQxmYXJtSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtCb29zdFVzZXJMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFGGtCb29zdExQVXNlckxhc3RJbnRlcmVzdAUPYm9vc3RMUGludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEWtGYXJtTGFzdEludGVyZXN0BQxmYXJtSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUSa0Jvb3N0TGFzdEludGVyZXN0BQ1ib29zdEludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFFGtCb29zdExQTGFzdEludGVyZXN0BQ9ib29zdExQaW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa0xhc3RJbnRlcmVzdEhlaWdodAUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zU3Rha2VkBRN1c2VyU3Rha2VkQW1vdW50TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRdrVXNlclNoYXJlVG9rZW5zVmlydHVhbAUTdXNlclN0YWtlZEFtb3VudE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrU2hhcmVUb2tlbnNWaXJ0dWFsCQBkAgkAZQIFEXRvdGFsU2hhcmVWaXJ0dWFsBRF1c2VyQW1vdW50VmlydHVhbAUTdXNlclN0YWtlZEFtb3VudE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUOa0F2YWlsYWJsZVNXT1AFEWF2YWlsYWJsZUZ1bmRzTmV3CQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNMb2NrZWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUca1VzZXJTaGFyZVRva2Vuc0xvY2tlZEhlaWdodAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRprVXNlclNoYXJlVG9rZW5zTG9ja2VkVHlwZQkAzAgCCQEHUmVpc3N1ZQMFBFNXT1AFCnRvVHJlYXN1cmUGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFE2Zhcm1pbmdUcmVhc3VyZUFkZHIFCnRvVHJlYXN1cmUFBFNXT1AJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQxsb2NrV2F2ZXNGZWUFBHVuaXQFA25pbAFpARN3aXRoZHJhd1NoYXJlVG9rZW5zAgRwb29sGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAJARdjYWxjV2l0aGRyYXdTaGFyZVRva2VucwQFAWkIBQFpBmNhbGxlcgUEcG9vbAUZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAFpARt3aXRoZHJhd1NoYXJlVG9rZW5zRnJvbVBvb2wDC2NhbGxlckJ5dGVzBHBvb2wZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAkBC3ZhbHVlT3JFbHNlAgkBCmlzUG9vbENhbGwCBQFpBQRwb29sCQEXY2FsY1dpdGhkcmF3U2hhcmVUb2tlbnMEBQFpCQEHQWRkcmVzcwEFC2NhbGxlckJ5dGVzBQRwb29sBRlzaGFyZVRva2Vuc1dpdGhkcmF3QW1vdW50AWkBBWNsYWltAQRwb29sCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACQEJY2FsY0NsYWltAwUBaQUEcG9vbAgFAWkGY2FsbGVyAWkBDWNsYWltSW50ZXJuYWwCBHBvb2wGY2FsbGVyCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACQELdmFsdWVPckVsc2UCCQEKaXNTZWxmQ2FsbAEFAWkJAQljYWxjQ2xhaW0DBQFpBQRwb29sCQEHQWRkcmVzcwEFBmNhbGxlcgFpAQ1jbGFpbUFuZFN0YWtlAQRwb29sCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABAtjbGFpbUFtb3VudAoAAUAJAPwHBAUEdGhpcwINY2xhaW1JbnRlcm5hbAkAzAgCBQRwb29sCQDMCAIICAUBaQZjYWxsZXIFYnl0ZXMFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAMJAAACBQtjbGFpbUFtb3VudAULY2xhaW1BbW91bnQECnN0YWtlVG9Hb3YJAPwHBAUKZ292QWRkcmVzcwITbG9ja1NXT1BGcm9tRmFybWluZwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQRTV09QBQtjbGFpbUFtb3VudAUDbmlsAwkAAAIFCnN0YWtlVG9Hb3YFCnN0YWtlVG9Hb3YFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQhjbGFpbUFsbAEFcG9vbHMJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAKAQhjbGFpbUludgIKY2xhaW1Ub3RhbARwb29sBAtjbGFpbUFtb3VudAoAAUAJAPwHBAUEdGhpcwINY2xhaW1JbnRlcm5hbAkAzAgCBQRwb29sCQDMCAIICAUBaQZjYWxsZXIFYnl0ZXMFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAMJAAACBQtjbGFpbUFtb3VudAULY2xhaW1BbW91bnQJAGQCBQpjbGFpbVRvdGFsBQtjbGFpbUFtb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQKY2xhaW1Ub3RhbAoAAiRsBQVwb29scwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIY2xhaW1JbnYCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDYwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AwkAAAIFCmNsYWltVG90YWwAAAkAAgECGVlvdSBoYXZlIDAgYXZhaWxhYmxlIFNXT1AJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQpjbGFpbVRvdGFsBQRTV09QBQNuaWwBaQEQY2xhaW1BbGxBbmRTdGFrZQEFcG9vbHMJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAKAQhjbGFpbUludgIKY2xhaW1Ub3RhbARwb29sBAtjbGFpbUFtb3VudAoAAUAJAPwHBAUEdGhpcwINY2xhaW1JbnRlcm5hbAkAzAgCBQRwb29sCQDMCAIICAUBaQZjYWxsZXIFYnl0ZXMFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAMJAAACBQtjbGFpbUFtb3VudAULY2xhaW1BbW91bnQJAGQCBQpjbGFpbVRvdGFsBQtjbGFpbUFtb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQKY2xhaW1Ub3RhbAoAAiRsBQVwb29scwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIY2xhaW1JbnYCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDYwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AwkAAAIFCmNsYWltVG90YWwAAAkAAgECGVlvdSBoYXZlIDAgYXZhaWxhYmxlIFNXT1AECnN0YWtlVG9Hb3YJAPwHBAUKZ292QWRkcmVzcwITbG9ja1NXT1BGcm9tRmFybWluZwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQRTV09QBQpjbGFpbVRvdGFsBQNuaWwDCQAAAgUKc3Rha2VUb0dvdgUKc3Rha2VUb0dvdgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBF3VwZGF0ZVVzZXJCb29zdEludGVyZXN0AgRwb29sBHVzZXIJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQADCQECIT0CCAUBaQZjYWxsZXIFDXZvdGluZ0FkZHJlc3MJAAIBAiNPbmx5IHZvaXRpbmcgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgQNJHQwMzUwNzczNTE3NgkBCWNsYWltQ2FsYwIFBHBvb2wFBHVzZXIEDGZhcm1JbnRlcmVzdAgFDSR0MDM1MDc3MzUxNzYCXzEEDWJvb3N0SW50ZXJlc3QIBQ0kdDAzNTA3NzM1MTc2Al8yBA9ib29zdExQaW50ZXJlc3QIBQ0kdDAzNTA3NzM1MTc2Al8zBAtjbGFpbUFtb3VudAgFDSR0MDM1MDc3MzUxNzYCXzQECnRvVHJlYXN1cmUIBQ0kdDAzNTA3NzM1MTc2Al81BBFhdmFpbGFibGVGdW5kc05ldwkAZAIJARF1c2VyQXZhaWxhYmxlU1dPUAIFBHBvb2wFBHVzZXIFC2NsYWltQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRVrRmFybVVzZXJMYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa0Jvb3N0VXNlckxhc3RJbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUYa0Jvb3N0TFBVc2VyTGFzdEludGVyZXN0BQ9ib29zdExQaW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAURa0Zhcm1MYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRJrQm9vc3RMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUUa0Jvb3N0TFBMYXN0SW50ZXJlc3QFD2Jvb3N0TFBpbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrTGFzdEludGVyZXN0SGVpZ2h0BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFDmtBdmFpbGFibGVTV09QBRFhdmFpbGFibGVGdW5kc05ldwkAzAgCCQEHUmVpc3N1ZQMFBFNXT1AFCnRvVHJlYXN1cmUGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFE2Zhcm1pbmdUcmVhc3VyZUFkZHIFCnRvVHJlYXN1cmUFBFNXT1AFA25pbAFpAQhzaHV0ZG93bgAJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkDCQEBIQEFBmFjdGl2ZQkAAgEJAKwCAgIiREFwcCBpcyBhbHJlYWR5IHN1c3BlbmRlZC4gQ2F1c2U6IAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQZrQ2F1c2UCGnRoZSBjYXVzZSB3YXNuJ3Qgc3BlY2lmaWVkCQEHc3VzcGVuZAECD1BhdXNlZCBieSBhZG1pbgFpAQhhY3RpdmF0ZQAJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkDBQZhY3RpdmUJAAIBAhZEQXBwIGlzIGFscmVhZHkgYWN0aXZlCQDMCAIJAQxCb29sZWFuRW50cnkCBQdrQWN0aXZlBgkAzAgCCQELRGVsZXRlRW50cnkBBQZrQ2F1c2UFA25pbAECdHgBBnZlcmlmeQAEByRtYXRjaDAFAnR4BBJhZG1pblB1YktleTFTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQxhZG1pblB1YktleTEAAQAABBJhZG1pblB1YktleTJTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwABBQxhZG1pblB1YktleTIAAQAABBJhZG1pblB1YktleTNTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwACBQxhZG1pblB1YktleTMAAQAACQBnAgkAZAIJAGQCBRJhZG1pblB1YktleTFTaWduZWQFEmFkbWluUHViS2V5MlNpZ25lZAUSYWRtaW5QdWJLZXkzU2lnbmVkAAJwI92C", "height": 2333203, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: CgW8Kzru4Cuxd1d4czQtFpBfKjvcedupZSWrk92HDaWi Next: DoHc1sCR9mwjKWKa4NMcUSVMDhfN5d1xcFRqNTPSRamE Diff:
OldNewDifferences
6565
6666 let F = "_user_vote_gSWOP"
6767
68-let G = "_harvest_user_pool_vote_gSWOP"
68+let G = "_pool_struc"
6969
70-let H = "first_harvest_height"
70+let H = "_user_pool_struc"
7171
72-let I = "share_limit_on_first_harvest"
72+let I = "_harvest_user_pool_vote_gSWOP"
7373
74-let J = "cpmm_contract"
74+let J = "first_harvest_height"
7575
76-let K = "admin_pub_1"
76+let K = "share_limit_on_first_harvest"
7777
78-let L = "admin_pub_2"
78+let L = "cpmm_contract"
7979
80-let M = "admin_pub_3"
80+let M = "admin_pub_1"
8181
82-let N = "admin_invoke_pub"
82+let N = "admin_pub_2"
8383
84-let O = "money_box_address"
84+let O = "admin_pub_3"
8585
86-let P = "voting_address"
86+let P = "admin_invoke_pub"
8787
88-let Q = "governance_address"
88+let Q = "money_box_address"
8989
90-let R = "lp_farming"
90+let R = "voting_address"
9191
92-let S = "farming_treasure"
92+let S = "governance_address"
9393
94-let T = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
94+let T = "lp_farming"
9595
96-let U = 10000000000
96+let U = "farming_treasure"
9797
98-let V = 100000000
98+let V = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
9999
100-let W = 1000
100+let W = 10000000000
101101
102-let X = 500
102+let X = 100000000
103103
104-func Y (Z) = {
105- let aa = getString(T, Z)
106- if ($isInstanceOf(aa, "String"))
104+let Y = 1000
105+
106+let Z = 500
107+
108+func aa (ab) = {
109+ let ac = getString(V, ab)
110+ if ($isInstanceOf(ac, "String"))
107111 then {
108- let ab = aa
109- fromBase58String(ab)
112+ let ad = ac
113+ fromBase58String(ad)
110114 }
111115 else {
112- let ac = aa
113- throw((Z + "is empty"))
116+ let ae = ac
117+ throw((ab + "is empty"))
114118 }
115119 }
116120
117121
118-let ad = Y(K)
122+let af = aa(M)
119123
120-let ae = Y(L)
124+let ag = aa(N)
121125
122-let af = Y(M)
126+let ah = aa(O)
123127
124-let ag = Address(Y(O))
128+let ai = Address(aa(Q))
125129
126-let ah = Address(Y(P))
130+let aj = Address(aa(R))
127131
128-let ai = Address(Y(Q))
132+let ak = Address(aa(S))
129133
130-let aj = Y(N)
134+let al = aa(P)
131135
132-let ak = Address(Y(R))
136+let am = Address(aa(T))
133137
134-let al = Address(Y(S))
138+let an = Address(aa(U))
135139
136-let am = Address(Y(J))
140+let ao = Address(aa(L))
137141
138-let an = getBooleanValue(this, a)
142+let ap = getBooleanValue(this, a)
139143
140-let ao = valueOrElse(getBoolean(T, b), true)
144+let aq = valueOrElse(getBoolean(V, b), true)
141145
142-let ap = fromBase58String(getStringValue(this, A))
146+let ar = fromBase58String(getStringValue(this, A))
143147
144-func aq (ar) = valueOrElse(getInteger(Address(fromBase58String(ar)), H), 0)
148+func as (at) = valueOrElse(getInteger(Address(fromBase58String(at)), J), 0)
145149
146150
147-func as (ar) = valueOrErrorMessage(getInteger(ar, I), ("No data on the key: " + I))
151+func au (at) = valueOrErrorMessage(getInteger(at, K), ("No data on the key: " + K))
148152
149153
150-func at (ar) = valueOrErrorMessage(getInteger(this, (ar + o)), (("No data on the key: " + ar) + o))
154+func av (at) = valueOrErrorMessage(getInteger(this, (at + o)), (("No data on the key: " + at) + o))
151155
152156
153-func au (ar) = valueOrElse(getInteger(ah, (ar + E)), 0)
157+func aw (at) = valueOrElse(getInteger(aj, (at + E)), valueOrElse(parseInt(split(valueOrElse(getString(aj, (at + G)), ""), "_")[0]), 0))
154158
155159
156-func av (ar,aw) = valueOrElse(getInteger(ah, (((aw + "_") + ar) + F)), 0)
160+func ax (at,ay) = valueOrElse(getInteger(aj, (((ay + "_") + at) + F)), valueOrElse(parseInt(split(valueOrElse(getString(aj, (((ay + "_") + at) + H)), ""), "_")[0]), 0))
157161
158162
159-func ax (ar) = fromBase58String(getStringValue(value(addressFromString(ar)), "share_asset_id"))
163+func az (at) = fromBase58String(getStringValue(value(addressFromString(at)), "share_asset_id"))
160164
161165
162-func ay (az) = {
163- let aa = az
164- if ($isInstanceOf(aa, "ByteVector"))
166+func aA (aB) = {
167+ let ac = aB
168+ if ($isInstanceOf(ac, "ByteVector"))
165169 then {
166- let aA = aa
167- assetBalance(this, aA)
170+ let aC = ac
171+ assetBalance(this, aC)
168172 }
169- else if ($isInstanceOf(aa, "Unit"))
173+ else if ($isInstanceOf(ac, "Unit"))
170174 then {
171- let aB = aa
175+ let aD = ac
172176 wavesBalance(this).available
173177 }
174178 else throw("Match error")
175179 }
176180
177181
178-func aC (aD,aE) = {
179- let aF = value(assetInfo(aD)).decimals
180- let aG = value(assetInfo(aE)).decimals
181- let aH = ((aG - aF) + 8)
182- pow(10, 0, aH, 0, 0, DOWN)
182+func aE (aF,aG) = {
183+ let aH = value(assetInfo(aF)).decimals
184+ let aI = value(assetInfo(aG)).decimals
185+ let aJ = ((aI - aH) + 8)
186+ pow(10, 0, aJ, 0, 0, DOWN)
183187 }
184188
185189
186-func aI (ar,aw) = valueOrElse(getInteger(this, (((ar + "_") + aw) + B)), 0)
190+func aK (at,ay) = valueOrElse(getInteger(this, (((at + "_") + ay) + B)), 0)
187191
188192
189-func aJ (ar) = {
190- let aK = valueOrErrorMessage(getInteger(ai, g), ((("No data on the key: " + g) + " at address ") + toString(ai)))
191- let aL = valueOrErrorMessage(getInteger(ai, h), ((("No data on the key: " + h) + " at address ") + toString(ai)))
192- let aM = valueOrErrorMessage(getInteger(ai, (ar + d)), (((("No data on the key: " + ar) + d) + " at address ") + toString(ai)))
193- let aN = valueOrErrorMessage(getInteger(ai, i), ((("No data on the key: " + i) + " at address ") + toString(ai)))
194- let aO = valueOrElse(getInteger(ai, (ar + f)), aN)
195- let aP = valueOrErrorMessage(getInteger(ai, (ar + e)), (((("No data on the key: " + ar) + e) + " at address ") + toString(ai)))
196- let aQ = fraction(aK, aM, U)
197- let aR = fraction(aK, aP, U)
198- if (if ((aQ > aK))
193+func aL (at) = {
194+ let aM = valueOrErrorMessage(getInteger(ak, g), ((("No data on the key: " + g) + " at address ") + toString(ak)))
195+ let aN = valueOrErrorMessage(getInteger(ak, h), ((("No data on the key: " + h) + " at address ") + toString(ak)))
196+ let aO = valueOrErrorMessage(getInteger(ak, (at + d)), (((("No data on the key: " + at) + d) + " at address ") + toString(ak)))
197+ let aP = valueOrErrorMessage(getInteger(ak, i), ((("No data on the key: " + i) + " at address ") + toString(ak)))
198+ let aQ = valueOrElse(getInteger(ak, (at + f)), aP)
199+ let aR = valueOrErrorMessage(getInteger(ak, (at + e)), (((("No data on the key: " + at) + e) + " at address ") + toString(ak)))
200+ let aS = fraction(aM, aO, W)
201+ let aT = fraction(aM, aR, W)
202+ if (if ((aS > aM))
199203 then true
200- else (aR > aL))
204+ else (aT > aN))
201205 then throw("rewardPoolCurrent > totalRewardPerBlockCurrent or rewardPoolPrevious > totalRewardPerBlockPrevious")
202- else $Tuple4(aQ, aN, aR, aO)
206+ else $Tuple4(aS, aP, aT, aQ)
203207 }
204208
205209
206-func aS (ar) = {
207- let aT = valueOrErrorMessage(getInteger(this, (ar + t)), (("No data on the key: " + ar) + t))
208- let aU = valueOrErrorMessage(getInteger(this, (ar + v)), (("No data on the key: " + ar) + v))
209- let aV = valueOrErrorMessage(getInteger(this, (ar + x)), (("No data on the key: " + ar) + x))
210- let aW = valueOrElse(getInteger(this, (ar + z)), height)
211- $Tuple4(aW, aT, aU, aV)
210+func aU (at) = {
211+ let aV = valueOrErrorMessage(getInteger(this, (at + t)), (("No data on the key: " + at) + t))
212+ let aW = valueOrElse(getInteger(this, (at + v)), 0)
213+ let aX = valueOrElse(getInteger(this, (at + x)), 0)
214+ let aY = valueOrElse(getInteger(this, (at + z)), height)
215+ $Tuple4(aY, aV, aW, aX)
212216 }
213217
214218
215-func aX (ar,aY) = {
216- let aZ = valueOrElse(getInteger(this, (ar + s)), X)
217- fraction(aY, W, (aZ + W))
219+func aZ (at,ba) = {
220+ let bb = valueOrElse(getInteger(this, (at + s)), Z)
221+ fraction(ba, Y, (bb + Y))
218222 }
219223
220224
221-func ba (ar,aY) = {
222- let aZ = valueOrElse(getInteger(this, (ar + s)), X)
223- fraction(aY, aZ, (aZ + W))
225+func bc (at,ba) = {
226+ let bb = valueOrElse(getInteger(this, (at + s)), Z)
227+ fraction(ba, bb, (bb + Y))
224228 }
225229
226230
227-func bb (ar,aW,aN,aO,aT,aU,bc,bd,be,bf,bg,bh) = if ((bf == 0))
228- then $Tuple3(aT, aU, bd)
231+func bd (at,aY,aP,aQ,aV,aW,be,bf,bg,bh,bi,bj) = if ((bh == 0))
232+ then $Tuple3(aV, aW, bf)
229233 else {
230- let bi = if (if (if ((aN > height))
231- then (aN == aO)
234+ let bk = if (if (if ((aP > height))
235+ then (aP == aQ)
232236 else false)
233237 then true
234- else if ((height > aN))
235- then (aN != aO)
238+ else if ((height > aP))
239+ then (aP != aQ)
236240 else false)
237241 then {
238- let bj = (bg * (height - aW))
239- $Tuple4(bj, aT, aU, bd)
242+ let bl = (bi * (height - aY))
243+ $Tuple4(bl, aV, aW, bf)
240244 }
241- else if (if (if ((height > aN))
242- then (aN == aO)
245+ else if (if (if ((height > aP))
246+ then (aP == aQ)
243247 else false)
244- then (aW > aN)
248+ then (aY > aP)
245249 else false)
246250 then {
247- let bj = (be * (height - aW))
248- $Tuple4(bj, aT, aU, bd)
251+ let bl = (bg * (height - aY))
252+ $Tuple4(bl, aV, aW, bf)
249253 }
250254 else {
251- let bk = (bg * (aN - aW))
252- let bl = (aT + fraction(aX(ar, bk), bh, bf))
253- let bm = (aU + (if ((bc > 0))
254- then fraction(ba(ar, bk), V, bc)
255+ let bm = (bi * (aP - aY))
256+ let bn = (aV + fraction(aZ(at, bm), bj, bh))
257+ let bo = (aW + (if ((be > 0))
258+ then fraction(bc(at, bm), X, be)
255259 else 0))
256- let bn = (bd + (if ((bc > 0))
257- then fraction(fraction(ba(ar, bk), V, bf), V, bc)
260+ let bp = (bf + (if ((be > 0))
261+ then fraction(fraction(bc(at, bm), X, bh), X, be)
258262 else 0))
259- let bo = (be * (height - aN))
260- $Tuple4(bo, bl, bm, bn)
263+ let bq = (bg * (height - aP))
264+ $Tuple4(bq, bn, bo, bp)
261265 }
262- let bp = bi._1
263- let bq = bi._2
264- let br = bi._3
265- let bs = bi._4
266- let bt = (bq + fraction(aX(ar, bp), bh, bf))
267- let bu = (br + (if ((bc > 0))
268- then fraction(ba(ar, bp), V, bc)
266+ let br = bk._1
267+ let bs = bk._2
268+ let bt = bk._3
269+ let bu = bk._4
270+ let bv = (bs + fraction(aZ(at, br), bj, bh))
271+ let bw = (bt + (if ((be > 0))
272+ then fraction(bc(at, br), X, be)
269273 else 0))
270- let bv = (bs + (if ((bc > 0))
271- then fraction(fraction(ba(ar, bp), V, bf), V, bc)
274+ let bx = (bu + (if ((be > 0))
275+ then fraction(fraction(bc(at, br), X, bh), X, be)
272276 else 0))
273- $Tuple3(bt, bu, bv)
277+ $Tuple3(bv, bw, bx)
274278 }
275279
276280
277-func bw (ar,aw) = {
278- let bh = aC(ap, ax(ar))
279- let bc = au(ar)
280- let bx = av(ar, aw)
281- let by = at(ar)
282- let bz = valueOrElse(getInteger(this, (ar + p)), by)
283- let bA = aS(ar)
284- let aW = bA._1
285- let aT = bA._2
286- let aU = bA._3
287- let aV = bA._4
288- let bB = aJ(ar)
289- let be = bB._1
290- let aN = bB._2
291- let bg = bB._3
292- let aO = bB._4
293- let bC = valueOrElse(getInteger(this, (((ar + "_") + aw) + u)), aT)
294- let bD = valueOrElse(getInteger(this, (((ar + "_") + aw) + w)), aU)
295- let bE = valueOrElse(getInteger(this, (((ar + "_") + aw) + y)), aV)
296- let bF = valueOrElse(getInteger(this, (((ar + "_") + aw) + j)), 0)
297- let bG = valueOrElse(getInteger(this, (((ar + "_") + aw) + n)), bF)
298- let bH = bb(ar, aW, aN, aO, aT, aU, bc, aV, be, bz, bg, bh)
299- let bt = bH._1
300- let bu = bH._2
301- let bv = bH._3
302- let bI = fraction(bG, (bt - bC), bh)
303- let bJ = fraction(bx, (bu - bD), V)
304- let bK = fraction(toBigInt(bG), toBigInt(bx), toBigInt(1))
305- let bL = toInt(fraction(fraction(bK, toBigInt((bv - bE)), toBigInt(V)), toBigInt(1), toBigInt(V)))
306- let bM = (bJ - bL)
307- if ((0 > bM))
281+func by (at,ay) = {
282+ let bj = aE(ar, az(at))
283+ let be = aw(at)
284+ let bz = ax(at, ay)
285+ let bA = av(at)
286+ let bB = valueOrElse(getInteger(this, (at + p)), bA)
287+ let bC = aU(at)
288+ let aY = bC._1
289+ let aV = bC._2
290+ let aW = bC._3
291+ let aX = bC._4
292+ let bD = aL(at)
293+ let bg = bD._1
294+ let aP = bD._2
295+ let bi = bD._3
296+ let aQ = bD._4
297+ let bE = valueOrElse(getInteger(this, (((at + "_") + ay) + u)), aV)
298+ let bF = valueOrElse(getInteger(this, (((at + "_") + ay) + w)), aW)
299+ let bG = valueOrElse(getInteger(this, (((at + "_") + ay) + y)), aX)
300+ let bH = valueOrElse(getInteger(this, (((at + "_") + ay) + j)), 0)
301+ let bI = valueOrElse(getInteger(this, (((at + "_") + ay) + n)), bH)
302+ let bJ = bd(at, aY, aP, aQ, aV, aW, be, aX, bg, bB, bi, bj)
303+ let bv = bJ._1
304+ let bw = bJ._2
305+ let bx = bJ._3
306+ let bK = fraction(bI, (bv - bE), bj)
307+ let bL = if ((bz == 0))
308+ then (bK / 2)
309+ else fraction(bz, (bw - bF), X)
310+ let bM = fraction(toBigInt(bI), toBigInt(bz), toBigInt(1))
311+ let bN = toInt(fraction(fraction(bM, toBigInt((bx - bG)), toBigInt(X)), toBigInt(1), toBigInt(X)))
312+ let bO = (bL - bN)
313+ if ((0 > bO))
308314 then throw("toTreasury < 0")
309- else $Tuple5(bt, bu, bv, (bI + bL), bM)
315+ else $Tuple5(bv, bw, bx, (bK + bN), bO)
310316 }
311317
312318
313-func bN (bO,aw) = {
314- func bP (bQ,ar) = {
315- let bR = bQ
316- let bS = bR._1
317- let bT = bR._2
318- let bU = bw(ar, aw)
319- let bV = bU._1
320- let bW = bU._2
321- let bX = bU._3
322- let bY = bU._4
323- let bZ = bU._5
324- let ca = (aI(ar, aw) + bY)
325- $Tuple2((bS :+ ar), (bT :+ ca))
319+func bP (bQ,ay) = {
320+ func bR (bS,at) = {
321+ let bT = bS
322+ let bU = bT._1
323+ let bV = bT._2
324+ let bW = by(at, ay)
325+ let bX = bW._1
326+ let bY = bW._2
327+ let bZ = bW._3
328+ let ca = bW._4
329+ let cb = bW._5
330+ let cc = (aK(at, ay) + ca)
331+ $Tuple2((bU :+ at), (bV :+ cc))
326332 }
327333
328- let cb = bO
329- let cc = size(cb)
330- let cd = $Tuple2(nil, nil)
331- func ce (cf,cg) = if ((cg >= cc))
332- then cf
333- else bP(cf, cb[cg])
334+ let cd = bQ
335+ let ce = size(cd)
336+ let cf = $Tuple2(nil, nil)
337+ func cg (ch,ci) = if ((ci >= ce))
338+ then ch
339+ else bR(ch, cd[ci])
334340
335- func ch (cf,cg) = if ((cg >= cc))
336- then cf
341+ func cj (ch,ci) = if ((ci >= ce))
342+ then ch
337343 else throw("List size exceeds 60")
338344
339- ch(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(cd, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
345+ cj(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cf, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
340346 }
341347
342348
343-func ci (ar,aw,cj,ck,cl) = if ((aq(ar) > height))
349+func ck (at,ay,cl,cm,cn) = if ((as(at) > height))
344350 then {
345- let cm = valueOrElse(getInteger(ah, (ar + D)), 0)
346- let cn = valueOrElse(getInteger(ah, (((aw + "_") + ar) + G)), 0)
347- let co = as(addressFromStringValue(ar))
348- let cp = (fraction(co, cn, cm) - cj)
349- if ((cl > 0))
351+ let co = valueOrElse(getInteger(aj, (at + D)), 0)
352+ let cp = valueOrElse(getInteger(aj, (((ay + "_") + at) + I)), 0)
353+ let cq = au(addressFromStringValue(at))
354+ let cr = (fraction(cq, cp, co) - cl)
355+ if ((cn > 0))
350356 then throw("You can't lock shareTokens till first harvest end.")
351- else if ((cn == 0))
357+ else if ((cp == 0))
352358 then 0
353- else if ((ck >= cp))
354- then (ck - cp)
359+ else if ((cm >= cr))
360+ then (cm - cr)
355361 else 0
356362 }
357363 else 0
358364
359365
360-func cq (cr) = {
361- let cs = split(valueOrErrorMessage(getString(this, (toString(cr) + q)), ("There are no key for lock type" + toString(cr))), "_")
362- $Tuple2(parseIntValue(cs[0]), parseIntValue(cs[1]))
366+func cs (ct) = {
367+ let cu = split(valueOrErrorMessage(getString(this, (toString(ct) + q)), ("There are no key for lock type" + toString(ct))), "_")
368+ $Tuple2(parseIntValue(cu[0]), parseIntValue(cu[1]))
363369 }
364370
365371
366-func ct (cu) = [BooleanEntry(a, false), StringEntry(c, cu)]
372+func cv (cw) = [BooleanEntry(a, false), StringEntry(c, cw)]
367373
368374
369-func cv () = if (if (an)
370- then ao
375+func cx () = if (if (ap)
376+ then aq
371377 else false)
372378 then unit
373379 else throw("DApp is inactive at this moment")
374380
375381
376-func cw (cx) = if (containsElement([ad, ae, af], cx.callerPublicKey))
382+func cy (cz) = if (containsElement([af, ag, ah], cz.callerPublicKey))
377383 then unit
378384 else throw("Only admin can call this function")
379385
380386
381-func cy (cx,ar) = if (if ((toString(cx.caller) == ar))
387+func cA (cz,at) = if (if ((toString(cz.caller) == at))
382388 then true
383- else (cx.caller == am))
389+ else (cz.caller == ao))
384390 then unit
385391 else throw("Only pool can call this function")
386392
387393
388-func cz (cx) = if ((cx.caller == this))
394+func cB (cz) = if ((cz.caller == this))
389395 then unit
390396 else throw("Only contract itself can call this function")
391397
392398
393-func cA (cx,cB,ar,cl) = {
394- let cC = ax(ar)
395- let aw = toString(cB)
396- let cD = at(ar)
397- let bz = valueOrElse(getInteger(this, (ar + p)), cD)
398- let cE = valueOrElse(getInteger(this, (((ar + "_") + aw) + j)), 0)
399- let cF = valueOrElse(getInteger(this, (((ar + "_") + aw) + m)), 0)
400- let cG = valueOrElse(getInteger(this, (((ar + "_") + aw) + k)), 0)
401- let cH = valueOrElse(getInteger(this, (((ar + "_") + aw) + n)), cE)
402- let cI = ((cE + cG) + cx.payments[0].amount)
403- let cJ = cq(cl)
404- let cK = cJ._1
405- let cL = cJ._2
406- let cM = getIntegerValue(this, r)
407- if ((cx.payments[0].assetId != cC))
399+func cC (cz,cD,at,cn) = {
400+ let cE = az(at)
401+ let ay = toString(cD)
402+ let cF = av(at)
403+ let bB = valueOrElse(getInteger(this, (at + p)), cF)
404+ let cG = valueOrElse(getInteger(this, (((at + "_") + ay) + j)), 0)
405+ let cH = valueOrElse(getInteger(this, (((at + "_") + ay) + m)), 0)
406+ let cI = valueOrElse(getInteger(this, (((at + "_") + ay) + k)), 0)
407+ let cJ = valueOrElse(getInteger(this, (((at + "_") + ay) + n)), cG)
408+ let cK = ((cG + cI) + cz.payments[0].amount)
409+ let cL = cs(cn)
410+ let cM = cL._1
411+ let cN = cL._2
412+ let cO = getIntegerValue(this, r)
413+ if ((cz.payments[0].assetId != cE))
408414 then throw("Wrong sharetoken in payment")
409- else if ((0 >= cx.payments[0].amount))
415+ else if ((0 >= cz.payments[0].amount))
410416 then throw("Payment amount must be greater than 0")
411- else if ((0 > cl))
417+ else if ((0 > cn))
412418 then throw("lockType must be >= 0")
413419 else {
414- let cN = ci(ar, aw, cE, cx.payments[0].amount, cl)
415- if ((cN == cN))
420+ let cP = ck(at, ay, cG, cz.payments[0].amount, cn)
421+ if ((cP == cP))
416422 then {
417- let cO = if ((cl == 0))
423+ let cQ = if ((cn == 0))
418424 then {
419- let cP = ((cH + cx.payments[0].amount) - cN)
420- $Tuple2([IntegerEntry((((ar + "_") + aw) + j), ((cE + cx.payments[0].amount) - cN)), IntegerEntry((((ar + "_") + aw) + n), cP), IntegerEntry((ar + p), ((bz + cx.payments[0].amount) - cN)), ScriptTransfer(cB, cN, cx.payments[0].assetId)], ((cD + cx.payments[0].amount) - cN))
425+ let cR = ((cJ + cz.payments[0].amount) - cP)
426+ $Tuple2([IntegerEntry((((at + "_") + ay) + j), ((cG + cz.payments[0].amount) - cP)), IntegerEntry((((at + "_") + ay) + n), cR), IntegerEntry((at + p), ((bB + cz.payments[0].amount) - cP)), ScriptTransfer(cD, cP, cz.payments[0].assetId)], ((cF + cz.payments[0].amount) - cP))
421427 }
422- else if (if ((cF == 0))
423- then if (if ((2 > size(cx.payments)))
428+ else if (if ((cH == 0))
429+ then if (if ((2 > size(cz.payments)))
424430 then true
425- else (cx.payments[1].assetId != unit))
431+ else (cz.payments[1].assetId != unit))
426432 then true
427- else (cM > cx.payments[1].amount)
433+ else (cO > cz.payments[1].amount)
428434 else false)
429- then throw((("You need to pay additional waves comission " + toString(cM)) + "WAVES"))
430- else if ((cF > (height + cK)))
435+ then throw((("You need to pay additional waves comission " + toString(cO)) + "WAVES"))
436+ else if ((cH > (height + cM)))
431437 then throw("You cannot lock sharetokens for a period less than what you have already locked")
432438 else {
433- let cQ = (cG + cx.payments[0].amount)
434- let cR = (height + cK)
435- let cP = (fraction(cQ, cL, W) + cE)
436- $Tuple2([IntegerEntry((((ar + "_") + aw) + k), cQ), IntegerEntry((((ar + "_") + aw) + m), cR), IntegerEntry((((ar + "_") + aw) + l), cl), IntegerEntry((((ar + "_") + aw) + n), cP), IntegerEntry((ar + p), ((bz - cH) + cP))], (cD + cx.payments[0].amount))
439+ let cS = (cI + cz.payments[0].amount)
440+ let cT = (height + cM)
441+ let cR = (fraction(cS, cN, Y) + cG)
442+ $Tuple2([IntegerEntry((((at + "_") + ay) + k), cS), IntegerEntry((((at + "_") + ay) + m), cT), IntegerEntry((((at + "_") + ay) + l), cn), IntegerEntry((((at + "_") + ay) + n), cR), IntegerEntry((at + p), ((bB - cJ) + cR))], (cF + cz.payments[0].amount))
437443 }
438- let cS = cO._1
439- let cT = cO._2
440- if ((ay(cC) > cT))
444+ let cU = cQ._1
445+ let cV = cQ._2
446+ if ((aA(cE) > cV))
441447 then throw("Balance of share-token is lower than totalAmount")
442448 else {
443- let cU = bw(ar, aw)
444- let aT = cU._1
445- let aU = cU._2
446- let cV = cU._3
447- let bY = cU._4
448- let cW = cU._5
449- let cX = (aI(ar, aw) + bY)
450- let cY = if ((getString(Address(fromBase58String(ar)), "version") == "3.0.0"))
451- then invoke(ak, "updateUserInterest", [aw, ar, cI], nil)
449+ let cW = by(at, ay)
450+ let aV = cW._1
451+ let aW = cW._2
452+ let cX = cW._3
453+ let ca = cW._4
454+ let cY = cW._5
455+ let cZ = (aK(at, ay) + ca)
456+ let da = if ((getString(Address(fromBase58String(at)), "version") == "3.0.0"))
457+ then invoke(am, "updateUserInterest", [ay, at, cK], nil)
452458 else 0
453- if ((cY == cY))
454- then ([IntegerEntry((((ar + "_") + aw) + u), aT), IntegerEntry((((ar + "_") + aw) + w), aU), IntegerEntry((((ar + "_") + aw) + y), cV), IntegerEntry((ar + t), aT), IntegerEntry((ar + v), aU), IntegerEntry((ar + x), cV), IntegerEntry((ar + z), height), IntegerEntry((ar + o), cT), IntegerEntry((((ar + "_") + aw) + B), cX), Reissue(ap, cW, true), ScriptTransfer(al, cW, ap)] ++ cS)
459+ if ((da == da))
460+ then ([IntegerEntry((((at + "_") + ay) + u), aV), IntegerEntry((((at + "_") + ay) + w), aW), IntegerEntry((((at + "_") + ay) + y), cX), IntegerEntry((at + t), aV), IntegerEntry((at + v), aW), IntegerEntry((at + x), cX), IntegerEntry((at + z), height), IntegerEntry((at + o), cV), IntegerEntry((((at + "_") + ay) + B), cZ), Reissue(ar, cY, true), ScriptTransfer(an, cY, ar)] ++ cU)
455461 else throw("Strict value is not equal to itself.")
456462 }
457463 }
460466 }
461467
462468
463-func cZ (cx,cB,ar,da) = valueOrElse(cv(), {
464- let db = fromBase58String(getStringValue(value(addressFromString(ar)), "share_asset_id"))
465- let aw = toString(cB)
466- let dc = bw(ar, aw)
467- let aT = dc._1
468- let aU = dc._2
469- let cV = dc._3
470- let bY = dc._4
471- let cW = dc._5
472- let cE = valueOrElse(getInteger(this, (((ar + "_") + aw) + j)), 0)
473- let cG = valueOrElse(getInteger(this, (((ar + "_") + aw) + k)), 0)
474- let cH = valueOrElse(getInteger(this, (((ar + "_") + aw) + n)), cE)
475- let dd = (cE - da)
476- let cX = (aI(ar, aw) + bY)
477- let de = at(ar)
478- let bz = valueOrElse(getInteger(this, (ar + p)), de)
479- let df = (de - da)
480- let dg = (bz - da)
481- let cP = (cH - da)
482- if ((da > cE))
469+func db (cz,cD,at,dc) = valueOrElse(cx(), {
470+ let dd = fromBase58String(getStringValue(value(addressFromString(at)), "share_asset_id"))
471+ let ay = toString(cD)
472+ let de = by(at, ay)
473+ let aV = de._1
474+ let aW = de._2
475+ let cX = de._3
476+ let ca = de._4
477+ let cY = de._5
478+ let cG = valueOrElse(getInteger(this, (((at + "_") + ay) + j)), 0)
479+ let cI = valueOrElse(getInteger(this, (((at + "_") + ay) + k)), 0)
480+ let cJ = valueOrElse(getInteger(this, (((at + "_") + ay) + n)), cG)
481+ let df = (cG - dc)
482+ let cZ = (aK(at, ay) + ca)
483+ let dg = av(at)
484+ let bB = valueOrElse(getInteger(this, (at + p)), dg)
485+ let dh = (dg - dc)
486+ let di = (bB - dc)
487+ let cR = (cJ - dc)
488+ if ((dc > cG))
483489 then throw("Withdraw amount more then user locked amount")
484- else if ((ay(db) > de))
490+ else if ((aA(dd) > dg))
485491 then throw("Balance of share-token is lower than totalAmount")
486492 else {
487- let cY = if ((getString(Address(fromBase58String(ar)), "version") == "3.0.0"))
488- then invoke(ak, "updateUserInterest", [aw, ar, (cE + cG)], nil)
493+ let da = if ((getString(Address(fromBase58String(at)), "version") == "3.0.0"))
494+ then invoke(am, "updateUserInterest", [ay, at, (cG + cI)], nil)
489495 else 0
490- if ((cY == cY))
491- then [IntegerEntry((((ar + "_") + aw) + u), aT), IntegerEntry((((ar + "_") + aw) + w), aU), IntegerEntry((((ar + "_") + aw) + y), cV), IntegerEntry((ar + t), aT), IntegerEntry((ar + v), aU), IntegerEntry((ar + x), cV), IntegerEntry((ar + z), height), IntegerEntry((((ar + "_") + aw) + j), dd), IntegerEntry((((ar + "_") + aw) + n), cP), IntegerEntry((ar + o), df), IntegerEntry((ar + p), dg), IntegerEntry((((ar + "_") + aw) + B), cX), Reissue(ap, cW, true), ScriptTransfer(al, cW, ap), ScriptTransfer(cx.caller, da, db)]
496+ if ((da == da))
497+ then [IntegerEntry((((at + "_") + ay) + u), aV), IntegerEntry((((at + "_") + ay) + w), aW), IntegerEntry((((at + "_") + ay) + y), cX), IntegerEntry((at + t), aV), IntegerEntry((at + v), aW), IntegerEntry((at + x), cX), IntegerEntry((at + z), height), IntegerEntry((((at + "_") + ay) + j), df), IntegerEntry((((at + "_") + ay) + n), cR), IntegerEntry((at + o), dh), IntegerEntry((at + p), di), IntegerEntry((((at + "_") + ay) + B), cZ), Reissue(ar, cY, true), ScriptTransfer(an, cY, ar), ScriptTransfer(cz.caller, dc, dd)]
492498 else throw("Strict value is not equal to itself.")
493499 }
494500 })
495501
496502
497-func dh (cx,ar,cB) = {
498- let db = fromBase58String(getStringValue(value(addressFromString(ar)), "share_asset_id"))
499- let aw = toString(cB)
500- let bf = at(ar)
501- let di = bw(ar, aw)
502- let aT = di._1
503- let aU = di._2
504- let cV = di._3
505- let bY = di._4
506- let cW = di._5
507- let ca = (aI(ar, aw) + bY)
508- if ((ca == 0))
503+func dj (cz,at,cD) = {
504+ let dd = fromBase58String(getStringValue(value(addressFromString(at)), "share_asset_id"))
505+ let ay = toString(cD)
506+ let bh = av(at)
507+ let dk = by(at, ay)
508+ let aV = dk._1
509+ let aW = dk._2
510+ let cX = dk._3
511+ let ca = dk._4
512+ let cY = dk._5
513+ let cc = (aK(at, ay) + ca)
514+ if ((cc == 0))
509515 then throw("You have 0 available SWOP")
510- else if ((ay(db) > bf))
516+ else if ((aA(dd) > bh))
511517 then throw("Balance of share-token is lower than totalAmount")
512518 else {
513- let dj = if ((cx.caller != this))
514- then [ScriptTransfer(cx.caller, ca, ap)]
519+ let dl = if ((cz.caller != this))
520+ then [ScriptTransfer(cz.caller, cc, ar)]
515521 else nil
516- $Tuple2(([IntegerEntry((((ar + "_") + aw) + u), aT), IntegerEntry((((ar + "_") + aw) + w), aU), IntegerEntry((((ar + "_") + aw) + y), cV), IntegerEntry((ar + t), aT), IntegerEntry((ar + v), aU), IntegerEntry((ar + x), cV), IntegerEntry((ar + z), height), IntegerEntry((((ar + "_") + aw) + B), 0), Reissue(ap, (cW + ca), true), ScriptTransfer(al, cW, ap)] ++ dj), ca)
522+ $Tuple2(([IntegerEntry((((at + "_") + ay) + u), aV), IntegerEntry((((at + "_") + ay) + w), aW), IntegerEntry((((at + "_") + ay) + y), cX), IntegerEntry((at + t), aV), IntegerEntry((at + v), aW), IntegerEntry((at + x), cX), IntegerEntry((at + z), height), IntegerEntry((((at + "_") + ay) + B), 0), Reissue(ar, (cY + cc), true), ScriptTransfer(an, cY, ar)] ++ dl), cc)
517523 }
518524 }
519525
520526
521-@Callable(cx)
522-func init (dk) = if (isDefined(getString(this, A)))
527+@Callable(cz)
528+func init (dm) = if (isDefined(getString(this, A)))
523529 then throw("SWOP already initialized")
524530 else {
525- let dl = 100000000000000
526- let dm = Issue("SWOP", "SWOP protocol token", dl, 8, true)
527- let dn = calculateAssetId(dm)
528-[BooleanEntry(a, true), Issue("SWOP", "SWOP protocol token", dl, 8, true), StringEntry(A, toBase58String(dn))]
531+ let dn = 100000000000000
532+ let do = Issue("SWOP", "SWOP protocol token", dn, 8, true)
533+ let dp = calculateAssetId(do)
534+[BooleanEntry(a, true), Issue("SWOP", "SWOP protocol token", dn, 8, true), StringEntry(A, toBase58String(dp))]
529535 }
530536
531537
532538
533-@Callable(cx)
534-func initPoolShareFarming (ar) = valueOrElse(cw(cx), [IntegerEntry((ar + o), 0), IntegerEntry((ar + t), 0), IntegerEntry((ar + v), 0), IntegerEntry((ar + x), 0), IntegerEntry((ar + z), height)])
539+@Callable(cz)
540+func initPoolShareFarming (at) = valueOrElse(cy(cz), [IntegerEntry((at + o), 0), IntegerEntry((at + t), 0), IntegerEntry((at + v), 0), IntegerEntry((at + x), 0), IntegerEntry((at + z), height)])
535541
536542
537543
538-@Callable(cx)
539-func updatePoolInterest (ar) = valueOrElse(cv(), if ((cx.caller != ai))
544+@Callable(cz)
545+func updatePoolInterest (at) = valueOrElse(cx(), if ((cz.caller != ak))
540546 then throw("Only Governance can call this function")
541547 else {
542- let aw = toString(addressFromPublicKey(aj))
543- let do = bw(ar, aw)
544- let aT = do._1
545- let aU = do._2
546- let cV = do._3
547-[IntegerEntry((ar + t), aT), IntegerEntry((ar + v), aU), IntegerEntry((ar + x), cV), IntegerEntry((ar + z), height)]
548+ let ay = toString(addressFromPublicKey(al))
549+ let dq = by(at, ay)
550+ let aV = dq._1
551+ let aW = dq._2
552+ let cX = dq._3
553+[IntegerEntry((at + t), aV), IntegerEntry((at + v), aW), IntegerEntry((at + x), cX), IntegerEntry((at + z), height)]
548554 })
549555
550556
551557
552-@Callable(cx)
553-func lockShareTokens (ar,cl) = valueOrElse(cv(), cA(cx, cx.caller, ar, cl))
558+@Callable(cz)
559+func lockShareTokens (at,cn) = valueOrElse(cx(), cC(cz, cz.caller, at, cn))
554560
555561
556562
557-@Callable(cx)
558-func lockShareTokensFromPool (dp,ar,cl) = valueOrElse(cv(), valueOrElse(cy(cx, ar), cA(cx, Address(dp), ar, cl)))
563+@Callable(cz)
564+func lockShareTokensFromPool (dr,at,cn) = valueOrElse(cx(), valueOrElse(cA(cz, at), cC(cz, Address(dr), at, cn)))
559565
560566
561567
562-@Callable(cx)
563-func lockStakedShareTokens (ar,cl,dq) = valueOrElse(cv(), {
564- let cC = ax(ar)
565- let aw = toString(cx.caller)
566- let cD = at(ar)
567- let bz = valueOrElse(getInteger(this, (ar + p)), cD)
568- let cE = valueOrElse(getInteger(this, (((ar + "_") + aw) + j)), 0)
569- let cF = valueOrElse(getInteger(this, (((ar + "_") + aw) + m)), 0)
570- let cG = valueOrElse(getInteger(this, (((ar + "_") + aw) + k)), 0)
571- let cH = valueOrElse(getInteger(this, (((ar + "_") + aw) + n)), cE)
572- let cI = (cE + cG)
573- let dr = cq(cl)
574- let cK = dr._1
575- let cL = dr._2
576- let cM = getIntegerValue(this, r)
577- if ((aq(ar) > height))
568+@Callable(cz)
569+func lockStakedShareTokens (at,cn,ds) = valueOrElse(cx(), {
570+ let cE = az(at)
571+ let ay = toString(cz.caller)
572+ let cF = av(at)
573+ let bB = valueOrElse(getInteger(this, (at + p)), cF)
574+ let cG = valueOrElse(getInteger(this, (((at + "_") + ay) + j)), 0)
575+ let cH = valueOrElse(getInteger(this, (((at + "_") + ay) + m)), 0)
576+ let cI = valueOrElse(getInteger(this, (((at + "_") + ay) + k)), 0)
577+ let cJ = valueOrElse(getInteger(this, (((at + "_") + ay) + n)), cG)
578+ let cK = (cG + cI)
579+ let dt = cs(cn)
580+ let cM = dt._1
581+ let cN = dt._2
582+ let cO = getIntegerValue(this, r)
583+ if ((as(at) > height))
578584 then throw("You can't lock shareTokens till first harvest end.")
579- else if ((0 >= cl))
585+ else if ((0 >= cn))
580586 then throw("lockType must be > 0")
581- else if ((dq > cE))
582- then throw(("You can't lock more than " + toString(cE)))
583- else if ((ay(cC) > cD))
587+ else if ((ds > cG))
588+ then throw(("You can't lock more than " + toString(cG)))
589+ else if ((aA(cE) > cF))
584590 then throw("Balance of share-token is lower than totalAmount")
585- else if (if ((cF == 0))
586- then if (if ((1 > size(cx.payments)))
591+ else if (if ((cH == 0))
592+ then if (if ((1 > size(cz.payments)))
587593 then true
588- else (cx.payments[0].assetId != unit))
594+ else (cz.payments[0].assetId != unit))
589595 then true
590- else (cM > cx.payments[0].amount)
596+ else (cO > cz.payments[0].amount)
591597 else false)
592- then throw((("You need to pay additional waves comission " + toString(cM)) + "WAVES"))
593- else if (if ((cF == 0))
594- then (0 >= dq)
598+ then throw((("You need to pay additional waves comission " + toString(cO)) + "WAVES"))
599+ else if (if ((cH == 0))
600+ then (0 >= ds)
595601 else false)
596602 then throw("lockAmount must be greater than 0")
597- else if ((0 > dq))
603+ else if ((0 > ds))
598604 then throw("lockAmount must be positive")
599- else if ((cF > (height + cK)))
605+ else if ((cH > (height + cM)))
600606 then throw("You cannot lock sharetokens for a period less than what you have already locked")
601607 else {
602- let cQ = (cG + dq)
603- let dd = (cE - dq)
604- let cR = (height + cK)
605- let cP = (fraction(cQ, cL, W) + dd)
606- let ds = bw(ar, aw)
607- let aT = ds._1
608- let aU = ds._2
609- let cV = ds._3
610- let bY = ds._4
611- let cW = ds._5
612- let cX = (aI(ar, aw) + bY)
613-[IntegerEntry((((ar + "_") + aw) + j), dd), IntegerEntry((((ar + "_") + aw) + k), cQ), IntegerEntry((((ar + "_") + aw) + m), cR), IntegerEntry((((ar + "_") + aw) + l), cl), IntegerEntry((((ar + "_") + aw) + n), cP), IntegerEntry((ar + p), ((bz - cH) + cP)), IntegerEntry((((ar + "_") + aw) + u), aT), IntegerEntry((((ar + "_") + aw) + w), aU), IntegerEntry((((ar + "_") + aw) + y), cV), IntegerEntry((ar + t), aT), IntegerEntry((ar + v), aU), IntegerEntry((ar + x), cV), IntegerEntry((ar + z), height), IntegerEntry((((ar + "_") + aw) + B), cX), Reissue(ap, cW, true), ScriptTransfer(al, cW, ap)]
608+ let cS = (cI + ds)
609+ let df = (cG - ds)
610+ let cT = (height + cM)
611+ let cR = (fraction(cS, cN, Y) + df)
612+ let du = by(at, ay)
613+ let aV = du._1
614+ let aW = du._2
615+ let cX = du._3
616+ let ca = du._4
617+ let cY = du._5
618+ let cZ = (aK(at, ay) + ca)
619+[IntegerEntry((((at + "_") + ay) + j), df), IntegerEntry((((at + "_") + ay) + k), cS), IntegerEntry((((at + "_") + ay) + m), cT), IntegerEntry((((at + "_") + ay) + l), cn), IntegerEntry((((at + "_") + ay) + n), cR), IntegerEntry((at + p), ((bB - cJ) + cR)), IntegerEntry((((at + "_") + ay) + u), aV), IntegerEntry((((at + "_") + ay) + w), aW), IntegerEntry((((at + "_") + ay) + y), cX), IntegerEntry((at + t), aV), IntegerEntry((at + v), aW), IntegerEntry((at + x), cX), IntegerEntry((at + z), height), IntegerEntry((((at + "_") + ay) + B), cZ), Reissue(ar, cY, true), ScriptTransfer(an, cY, ar)]
614620 }
615621 })
616622
617623
618624
619-@Callable(cx)
620-func unlockUserLock (ar,aw) = valueOrElse(cv(), {
621- let cM = getIntegerValue(this, r)
622- let cF = valueOrErrorMessage(getInteger(this, (((ar + "_") + aw) + m)), (((("There is no pool " + ar) + " or user ") + aw) + "with lock"))
623- let bz = getIntegerValue(this, (ar + p))
624- let cE = valueOrElse(getInteger(this, (((ar + "_") + aw) + j)), 0)
625- let cG = valueOrElse(getInteger(this, (((ar + "_") + aw) + k)), 0)
626- let cH = valueOrElse(getInteger(this, (((ar + "_") + aw) + n)), cE)
627- if ((cF > height))
628- then throw(("You can't unlock sharetokens till " + toString(cF)))
625+@Callable(cz)
626+func unlockUserLock (at,ay) = valueOrElse(cx(), {
627+ let cO = getIntegerValue(this, r)
628+ let cH = valueOrErrorMessage(getInteger(this, (((at + "_") + ay) + m)), (((("There is no pool " + at) + " or user ") + ay) + "with lock"))
629+ let bB = getIntegerValue(this, (at + p))
630+ let cG = valueOrElse(getInteger(this, (((at + "_") + ay) + j)), 0)
631+ let cI = valueOrElse(getInteger(this, (((at + "_") + ay) + k)), 0)
632+ let cJ = valueOrElse(getInteger(this, (((at + "_") + ay) + n)), cG)
633+ if ((cH > height))
634+ then throw(("You can't unlock sharetokens till " + toString(cH)))
629635 else {
630- let dd = (cE + cG)
631- let dt = bw(ar, aw)
632- let aT = dt._1
633- let aU = dt._2
634- let cV = dt._3
635- let bY = dt._4
636- let cW = dt._5
637- let cX = (aI(ar, aw) + bY)
638-[IntegerEntry((((ar + "_") + aw) + u), aT), IntegerEntry((((ar + "_") + aw) + w), aU), IntegerEntry((((ar + "_") + aw) + y), cV), IntegerEntry((ar + t), aT), IntegerEntry((ar + v), aU), IntegerEntry((ar + x), cV), IntegerEntry((ar + z), height), IntegerEntry((((ar + "_") + aw) + j), dd), IntegerEntry((((ar + "_") + aw) + n), dd), IntegerEntry((ar + p), ((bz - cH) + dd)), IntegerEntry((((ar + "_") + aw) + B), cX), DeleteEntry((((ar + "_") + aw) + k)), DeleteEntry((((ar + "_") + aw) + m)), DeleteEntry((((ar + "_") + aw) + l)), Reissue(ap, cW, true), ScriptTransfer(al, cW, ap), ScriptTransfer(cx.caller, cM, unit)]
636+ let df = (cG + cI)
637+ let dv = by(at, ay)
638+ let aV = dv._1
639+ let aW = dv._2
640+ let cX = dv._3
641+ let ca = dv._4
642+ let cY = dv._5
643+ let cZ = (aK(at, ay) + ca)
644+[IntegerEntry((((at + "_") + ay) + u), aV), IntegerEntry((((at + "_") + ay) + w), aW), IntegerEntry((((at + "_") + ay) + y), cX), IntegerEntry((at + t), aV), IntegerEntry((at + v), aW), IntegerEntry((at + x), cX), IntegerEntry((at + z), height), IntegerEntry((((at + "_") + ay) + j), df), IntegerEntry((((at + "_") + ay) + n), df), IntegerEntry((at + p), ((bB - cJ) + df)), IntegerEntry((((at + "_") + ay) + B), cZ), DeleteEntry((((at + "_") + ay) + k)), DeleteEntry((((at + "_") + ay) + m)), DeleteEntry((((at + "_") + ay) + l)), Reissue(ar, cY, true), ScriptTransfer(an, cY, ar), ScriptTransfer(cz.caller, cO, unit)]
639645 }
640646 })
641647
642648
643649
644-@Callable(cx)
645-func withdrawShareTokens (ar,da) = valueOrElse(cv(), cZ(cx, cx.caller, ar, da))
650+@Callable(cz)
651+func withdrawShareTokens (at,dc) = valueOrElse(cx(), db(cz, cz.caller, at, dc))
646652
647653
648654
649-@Callable(cx)
650-func withdrawShareTokensFromPool (dp,ar,da) = valueOrElse(cv(), valueOrElse(cy(cx, ar), cZ(cx, Address(dp), ar, da)))
655+@Callable(cz)
656+func withdrawShareTokensFromPool (dr,at,dc) = valueOrElse(cx(), valueOrElse(cA(cz, at), db(cz, Address(dr), at, dc)))
651657
652658
653659
654-@Callable(cx)
655-func claim (ar) = valueOrElse(cv(), dh(cx, ar, cx.caller))
660+@Callable(cz)
661+func claim (at) = valueOrElse(cx(), dj(cz, at, cz.caller))
656662
657663
658664
659-@Callable(cx)
660-func claimInternal (ar,cB) = valueOrElse(cv(), valueOrElse(cz(cx), dh(cx, ar, Address(cB))))
665+@Callable(cz)
666+func claimInternal (at,cD) = valueOrElse(cx(), valueOrElse(cB(cz), dj(cz, at, Address(cD))))
661667
662668
663669
664-@Callable(cx)
665-func claimAndStake (ar) = valueOrElse(cv(), {
666- let bY = {
667- let du = invoke(this, "claimInternal", [ar, cx.caller.bytes], nil)
668- if ($isInstanceOf(du, "Int"))
669- then du
670- else throw(($getType(du) + " couldn't be cast to Int"))
670+@Callable(cz)
671+func claimAndStake (at) = valueOrElse(cx(), {
672+ let ca = {
673+ let dw = invoke(this, "claimInternal", [at, cz.caller.bytes], nil)
674+ if ($isInstanceOf(dw, "Int"))
675+ then dw
676+ else throw(($getType(dw) + " couldn't be cast to Int"))
671677 }
672- if ((bY == bY))
678+ if ((ca == ca))
673679 then {
674- let dv = invoke(ai, "lockSWOPFromFarming", nil, [AttachedPayment(ap, bY)])
675- if ((dv == dv))
680+ let dx = invoke(ak, "lockSWOPFromFarming", nil, [AttachedPayment(ar, ca)])
681+ if ((dx == dx))
676682 then nil
677683 else throw("Strict value is not equal to itself.")
678684 }
681687
682688
683689
684-@Callable(cx)
685-func claimAll (bO) = valueOrElse(cv(), {
686- func dw (dx,ar) = {
687- let bY = {
688- let du = invoke(this, "claimInternal", [ar, cx.caller.bytes], nil)
689- if ($isInstanceOf(du, "Int"))
690- then du
691- else throw(($getType(du) + " couldn't be cast to Int"))
690+@Callable(cz)
691+func claimAll (bQ) = valueOrElse(cx(), {
692+ func dy (dz,at) = {
693+ let ca = {
694+ let dw = invoke(this, "claimInternal", [at, cz.caller.bytes], nil)
695+ if ($isInstanceOf(dw, "Int"))
696+ then dw
697+ else throw(($getType(dw) + " couldn't be cast to Int"))
692698 }
693- if ((bY == bY))
694- then (dx + bY)
699+ if ((ca == ca))
700+ then (dz + ca)
695701 else throw("Strict value is not equal to itself.")
696702 }
697703
698- let dx = {
699- let cb = bO
700- let cc = size(cb)
701- let cd = 0
702- func ce (cf,cg) = if ((cg >= cc))
703- then cf
704- else dw(cf, cb[cg])
704+ let dz = {
705+ let cd = bQ
706+ let ce = size(cd)
707+ let cf = 0
708+ func cg (ch,ci) = if ((ci >= ce))
709+ then ch
710+ else dy(ch, cd[ci])
705711
706- func ch (cf,cg) = if ((cg >= cc))
707- then cf
712+ func cj (ch,ci) = if ((ci >= ce))
713+ then ch
708714 else throw("List size exceeds 60")
709715
710- ch(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(cd, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
716+ cj(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cf, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
711717 }
712- if ((dx == 0))
718+ if ((dz == 0))
713719 then throw("You have 0 available SWOP")
714- else [ScriptTransfer(cx.caller, dx, ap)]
720+ else [ScriptTransfer(cz.caller, dz, ar)]
715721 })
716722
717723
718724
719-@Callable(cx)
720-func claimAllAndStake (bO) = valueOrElse(cv(), {
721- func dw (dx,ar) = {
722- let bY = {
723- let du = invoke(this, "claimInternal", [ar, cx.caller.bytes], nil)
724- if ($isInstanceOf(du, "Int"))
725- then du
726- else throw(($getType(du) + " couldn't be cast to Int"))
725+@Callable(cz)
726+func claimAllAndStake (bQ) = valueOrElse(cx(), {
727+ func dy (dz,at) = {
728+ let ca = {
729+ let dw = invoke(this, "claimInternal", [at, cz.caller.bytes], nil)
730+ if ($isInstanceOf(dw, "Int"))
731+ then dw
732+ else throw(($getType(dw) + " couldn't be cast to Int"))
727733 }
728- if ((bY == bY))
729- then (dx + bY)
734+ if ((ca == ca))
735+ then (dz + ca)
730736 else throw("Strict value is not equal to itself.")
731737 }
732738
733- let dx = {
734- let cb = bO
735- let cc = size(cb)
736- let cd = 0
737- func ce (cf,cg) = if ((cg >= cc))
738- then cf
739- else dw(cf, cb[cg])
739+ let dz = {
740+ let cd = bQ
741+ let ce = size(cd)
742+ let cf = 0
743+ func cg (ch,ci) = if ((ci >= ce))
744+ then ch
745+ else dy(ch, cd[ci])
740746
741- func ch (cf,cg) = if ((cg >= cc))
742- then cf
747+ func cj (ch,ci) = if ((ci >= ce))
748+ then ch
743749 else throw("List size exceeds 60")
744750
745- ch(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(cd, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
751+ cj(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cf, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
746752 }
747- if ((dx == 0))
753+ if ((dz == 0))
748754 then throw("You have 0 available SWOP")
749755 else {
750- let dv = invoke(ai, "lockSWOPFromFarming", nil, [AttachedPayment(ap, dx)])
751- if ((dv == dv))
756+ let dx = invoke(ak, "lockSWOPFromFarming", nil, [AttachedPayment(ar, dz)])
757+ if ((dx == dx))
752758 then nil
753759 else throw("Strict value is not equal to itself.")
754760 }
756762
757763
758764
759-@Callable(cx)
760-func updateUserBoostInterest (ar,aw) = valueOrElse(cv(), if ((cx.caller != ah))
765+@Callable(cz)
766+func updateUserBoostInterest (at,ay) = valueOrElse(cx(), if ((cz.caller != aj))
761767 then throw("Only voiting can call this function")
762768 else {
763- let dy = bw(ar, aw)
764- let aT = dy._1
765- let aU = dy._2
766- let cV = dy._3
767- let bY = dy._4
768- let cW = dy._5
769- let cX = (aI(ar, aw) + bY)
770-[IntegerEntry((((ar + "_") + aw) + u), aT), IntegerEntry((((ar + "_") + aw) + w), aU), IntegerEntry((((ar + "_") + aw) + y), cV), IntegerEntry((ar + t), aT), IntegerEntry((ar + v), aU), IntegerEntry((ar + x), cV), IntegerEntry((ar + z), height), IntegerEntry((((ar + "_") + aw) + B), cX), Reissue(ap, cW, true), ScriptTransfer(al, cW, ap)]
769+ let dA = by(at, ay)
770+ let aV = dA._1
771+ let aW = dA._2
772+ let cX = dA._3
773+ let ca = dA._4
774+ let cY = dA._5
775+ let cZ = (aK(at, ay) + ca)
776+[IntegerEntry((((at + "_") + ay) + u), aV), IntegerEntry((((at + "_") + ay) + w), aW), IntegerEntry((((at + "_") + ay) + y), cX), IntegerEntry((at + t), aV), IntegerEntry((at + v), aW), IntegerEntry((at + x), cX), IntegerEntry((at + z), height), IntegerEntry((((at + "_") + ay) + B), cZ), Reissue(ar, cY, true), ScriptTransfer(an, cY, ar)]
771777 })
772778
773779
774780
775-@Callable(cx)
776-func shutdown () = valueOrElse(cw(cx), if (!(an))
781+@Callable(cz)
782+func shutdown () = valueOrElse(cy(cz), if (!(ap))
777783 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, c), "the cause wasn't specified")))
778- else ct("Paused by admin"))
784+ else cv("Paused by admin"))
779785
780786
781787
782-@Callable(cx)
783-func activate () = valueOrElse(cw(cx), if (an)
788+@Callable(cz)
789+func activate () = valueOrElse(cy(cz), if (ap)
784790 then throw("DApp is already active")
785791 else [BooleanEntry(a, true), DeleteEntry(c)])
786792
787793
788-@Verifier(dz)
789-func dA () = {
790- let aa = dz
791- let dB = if (sigVerify(dz.bodyBytes, dz.proofs[0], ad))
794+@Verifier(dB)
795+func dC () = {
796+ let ac = dB
797+ let dD = if (sigVerify(dB.bodyBytes, dB.proofs[0], af))
792798 then 1
793799 else 0
794- let dC = if (sigVerify(dz.bodyBytes, dz.proofs[1], ae))
800+ let dE = if (sigVerify(dB.bodyBytes, dB.proofs[1], ag))
795801 then 1
796802 else 0
797- let dD = if (sigVerify(dz.bodyBytes, dz.proofs[2], af))
803+ let dF = if (sigVerify(dB.bodyBytes, dB.proofs[2], ah))
798804 then 1
799805 else 0
800- (((dB + dC) + dD) >= 2)
806+ (((dD + dE) + dF) >= 2)
801807 }
802808
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "active"
55
66 let b = "active_all_contracts"
77
88 let c = "shutdown_cause"
99
1010 let d = "_current_pool_fraction_reward"
1111
1212 let e = "_previous_pool_fraction_reward"
1313
1414 let f = "_pool_reward_update_height"
1515
1616 let g = "total_reward_per_block_current"
1717
1818 let h = "total_reward_per_block_previous"
1919
2020 let i = "reward_update_height"
2121
2222 let j = "_share_tokens_locked"
2323
2424 let k = "_share_tokens_blocked"
2525
2626 let l = "_share_tokens_blocked_type"
2727
2828 let m = "_share_tokens_blocked_height"
2929
3030 let n = "_share_tokens_virtual"
3131
3232 let o = "_total_share_tokens_locked"
3333
3434 let p = "_total_share_tokens_virtual"
3535
3636 let q = "_lock_params"
3737
3838 let r = "lock_waves_fee"
3939
4040 let s = "_boost_coef"
4141
4242 let t = "_last_interest"
4343
4444 let u = "_last_interest"
4545
4646 let v = "_last_interest_b"
4747
4848 let w = "_last_interest_u_b"
4949
5050 let x = "_last_interest_lpb"
5151
5252 let y = "_last_interest_u_lpb"
5353
5454 let z = "_last_interest_height"
5555
5656 let A = "SWOP_id"
5757
5858 let B = "_available_SWOP"
5959
6060 let C = "swop_year_emission"
6161
6262 let D = "_harvest_pool_vote_gSWOP"
6363
6464 let E = "_pool_vote_gSWOP"
6565
6666 let F = "_user_vote_gSWOP"
6767
68-let G = "_harvest_user_pool_vote_gSWOP"
68+let G = "_pool_struc"
6969
70-let H = "first_harvest_height"
70+let H = "_user_pool_struc"
7171
72-let I = "share_limit_on_first_harvest"
72+let I = "_harvest_user_pool_vote_gSWOP"
7373
74-let J = "cpmm_contract"
74+let J = "first_harvest_height"
7575
76-let K = "admin_pub_1"
76+let K = "share_limit_on_first_harvest"
7777
78-let L = "admin_pub_2"
78+let L = "cpmm_contract"
7979
80-let M = "admin_pub_3"
80+let M = "admin_pub_1"
8181
82-let N = "admin_invoke_pub"
82+let N = "admin_pub_2"
8383
84-let O = "money_box_address"
84+let O = "admin_pub_3"
8585
86-let P = "voting_address"
86+let P = "admin_invoke_pub"
8787
88-let Q = "governance_address"
88+let Q = "money_box_address"
8989
90-let R = "lp_farming"
90+let R = "voting_address"
9191
92-let S = "farming_treasure"
92+let S = "governance_address"
9393
94-let T = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
94+let T = "lp_farming"
9595
96-let U = 10000000000
96+let U = "farming_treasure"
9797
98-let V = 100000000
98+let V = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
9999
100-let W = 1000
100+let W = 10000000000
101101
102-let X = 500
102+let X = 100000000
103103
104-func Y (Z) = {
105- let aa = getString(T, Z)
106- if ($isInstanceOf(aa, "String"))
104+let Y = 1000
105+
106+let Z = 500
107+
108+func aa (ab) = {
109+ let ac = getString(V, ab)
110+ if ($isInstanceOf(ac, "String"))
107111 then {
108- let ab = aa
109- fromBase58String(ab)
112+ let ad = ac
113+ fromBase58String(ad)
110114 }
111115 else {
112- let ac = aa
113- throw((Z + "is empty"))
116+ let ae = ac
117+ throw((ab + "is empty"))
114118 }
115119 }
116120
117121
118-let ad = Y(K)
122+let af = aa(M)
119123
120-let ae = Y(L)
124+let ag = aa(N)
121125
122-let af = Y(M)
126+let ah = aa(O)
123127
124-let ag = Address(Y(O))
128+let ai = Address(aa(Q))
125129
126-let ah = Address(Y(P))
130+let aj = Address(aa(R))
127131
128-let ai = Address(Y(Q))
132+let ak = Address(aa(S))
129133
130-let aj = Y(N)
134+let al = aa(P)
131135
132-let ak = Address(Y(R))
136+let am = Address(aa(T))
133137
134-let al = Address(Y(S))
138+let an = Address(aa(U))
135139
136-let am = Address(Y(J))
140+let ao = Address(aa(L))
137141
138-let an = getBooleanValue(this, a)
142+let ap = getBooleanValue(this, a)
139143
140-let ao = valueOrElse(getBoolean(T, b), true)
144+let aq = valueOrElse(getBoolean(V, b), true)
141145
142-let ap = fromBase58String(getStringValue(this, A))
146+let ar = fromBase58String(getStringValue(this, A))
143147
144-func aq (ar) = valueOrElse(getInteger(Address(fromBase58String(ar)), H), 0)
148+func as (at) = valueOrElse(getInteger(Address(fromBase58String(at)), J), 0)
145149
146150
147-func as (ar) = valueOrErrorMessage(getInteger(ar, I), ("No data on the key: " + I))
151+func au (at) = valueOrErrorMessage(getInteger(at, K), ("No data on the key: " + K))
148152
149153
150-func at (ar) = valueOrErrorMessage(getInteger(this, (ar + o)), (("No data on the key: " + ar) + o))
154+func av (at) = valueOrErrorMessage(getInteger(this, (at + o)), (("No data on the key: " + at) + o))
151155
152156
153-func au (ar) = valueOrElse(getInteger(ah, (ar + E)), 0)
157+func aw (at) = valueOrElse(getInteger(aj, (at + E)), valueOrElse(parseInt(split(valueOrElse(getString(aj, (at + G)), ""), "_")[0]), 0))
154158
155159
156-func av (ar,aw) = valueOrElse(getInteger(ah, (((aw + "_") + ar) + F)), 0)
160+func ax (at,ay) = valueOrElse(getInteger(aj, (((ay + "_") + at) + F)), valueOrElse(parseInt(split(valueOrElse(getString(aj, (((ay + "_") + at) + H)), ""), "_")[0]), 0))
157161
158162
159-func ax (ar) = fromBase58String(getStringValue(value(addressFromString(ar)), "share_asset_id"))
163+func az (at) = fromBase58String(getStringValue(value(addressFromString(at)), "share_asset_id"))
160164
161165
162-func ay (az) = {
163- let aa = az
164- if ($isInstanceOf(aa, "ByteVector"))
166+func aA (aB) = {
167+ let ac = aB
168+ if ($isInstanceOf(ac, "ByteVector"))
165169 then {
166- let aA = aa
167- assetBalance(this, aA)
170+ let aC = ac
171+ assetBalance(this, aC)
168172 }
169- else if ($isInstanceOf(aa, "Unit"))
173+ else if ($isInstanceOf(ac, "Unit"))
170174 then {
171- let aB = aa
175+ let aD = ac
172176 wavesBalance(this).available
173177 }
174178 else throw("Match error")
175179 }
176180
177181
178-func aC (aD,aE) = {
179- let aF = value(assetInfo(aD)).decimals
180- let aG = value(assetInfo(aE)).decimals
181- let aH = ((aG - aF) + 8)
182- pow(10, 0, aH, 0, 0, DOWN)
182+func aE (aF,aG) = {
183+ let aH = value(assetInfo(aF)).decimals
184+ let aI = value(assetInfo(aG)).decimals
185+ let aJ = ((aI - aH) + 8)
186+ pow(10, 0, aJ, 0, 0, DOWN)
183187 }
184188
185189
186-func aI (ar,aw) = valueOrElse(getInteger(this, (((ar + "_") + aw) + B)), 0)
190+func aK (at,ay) = valueOrElse(getInteger(this, (((at + "_") + ay) + B)), 0)
187191
188192
189-func aJ (ar) = {
190- let aK = valueOrErrorMessage(getInteger(ai, g), ((("No data on the key: " + g) + " at address ") + toString(ai)))
191- let aL = valueOrErrorMessage(getInteger(ai, h), ((("No data on the key: " + h) + " at address ") + toString(ai)))
192- let aM = valueOrErrorMessage(getInteger(ai, (ar + d)), (((("No data on the key: " + ar) + d) + " at address ") + toString(ai)))
193- let aN = valueOrErrorMessage(getInteger(ai, i), ((("No data on the key: " + i) + " at address ") + toString(ai)))
194- let aO = valueOrElse(getInteger(ai, (ar + f)), aN)
195- let aP = valueOrErrorMessage(getInteger(ai, (ar + e)), (((("No data on the key: " + ar) + e) + " at address ") + toString(ai)))
196- let aQ = fraction(aK, aM, U)
197- let aR = fraction(aK, aP, U)
198- if (if ((aQ > aK))
193+func aL (at) = {
194+ let aM = valueOrErrorMessage(getInteger(ak, g), ((("No data on the key: " + g) + " at address ") + toString(ak)))
195+ let aN = valueOrErrorMessage(getInteger(ak, h), ((("No data on the key: " + h) + " at address ") + toString(ak)))
196+ let aO = valueOrErrorMessage(getInteger(ak, (at + d)), (((("No data on the key: " + at) + d) + " at address ") + toString(ak)))
197+ let aP = valueOrErrorMessage(getInteger(ak, i), ((("No data on the key: " + i) + " at address ") + toString(ak)))
198+ let aQ = valueOrElse(getInteger(ak, (at + f)), aP)
199+ let aR = valueOrErrorMessage(getInteger(ak, (at + e)), (((("No data on the key: " + at) + e) + " at address ") + toString(ak)))
200+ let aS = fraction(aM, aO, W)
201+ let aT = fraction(aM, aR, W)
202+ if (if ((aS > aM))
199203 then true
200- else (aR > aL))
204+ else (aT > aN))
201205 then throw("rewardPoolCurrent > totalRewardPerBlockCurrent or rewardPoolPrevious > totalRewardPerBlockPrevious")
202- else $Tuple4(aQ, aN, aR, aO)
206+ else $Tuple4(aS, aP, aT, aQ)
203207 }
204208
205209
206-func aS (ar) = {
207- let aT = valueOrErrorMessage(getInteger(this, (ar + t)), (("No data on the key: " + ar) + t))
208- let aU = valueOrErrorMessage(getInteger(this, (ar + v)), (("No data on the key: " + ar) + v))
209- let aV = valueOrErrorMessage(getInteger(this, (ar + x)), (("No data on the key: " + ar) + x))
210- let aW = valueOrElse(getInteger(this, (ar + z)), height)
211- $Tuple4(aW, aT, aU, aV)
210+func aU (at) = {
211+ let aV = valueOrErrorMessage(getInteger(this, (at + t)), (("No data on the key: " + at) + t))
212+ let aW = valueOrElse(getInteger(this, (at + v)), 0)
213+ let aX = valueOrElse(getInteger(this, (at + x)), 0)
214+ let aY = valueOrElse(getInteger(this, (at + z)), height)
215+ $Tuple4(aY, aV, aW, aX)
212216 }
213217
214218
215-func aX (ar,aY) = {
216- let aZ = valueOrElse(getInteger(this, (ar + s)), X)
217- fraction(aY, W, (aZ + W))
219+func aZ (at,ba) = {
220+ let bb = valueOrElse(getInteger(this, (at + s)), Z)
221+ fraction(ba, Y, (bb + Y))
218222 }
219223
220224
221-func ba (ar,aY) = {
222- let aZ = valueOrElse(getInteger(this, (ar + s)), X)
223- fraction(aY, aZ, (aZ + W))
225+func bc (at,ba) = {
226+ let bb = valueOrElse(getInteger(this, (at + s)), Z)
227+ fraction(ba, bb, (bb + Y))
224228 }
225229
226230
227-func bb (ar,aW,aN,aO,aT,aU,bc,bd,be,bf,bg,bh) = if ((bf == 0))
228- then $Tuple3(aT, aU, bd)
231+func bd (at,aY,aP,aQ,aV,aW,be,bf,bg,bh,bi,bj) = if ((bh == 0))
232+ then $Tuple3(aV, aW, bf)
229233 else {
230- let bi = if (if (if ((aN > height))
231- then (aN == aO)
234+ let bk = if (if (if ((aP > height))
235+ then (aP == aQ)
232236 else false)
233237 then true
234- else if ((height > aN))
235- then (aN != aO)
238+ else if ((height > aP))
239+ then (aP != aQ)
236240 else false)
237241 then {
238- let bj = (bg * (height - aW))
239- $Tuple4(bj, aT, aU, bd)
242+ let bl = (bi * (height - aY))
243+ $Tuple4(bl, aV, aW, bf)
240244 }
241- else if (if (if ((height > aN))
242- then (aN == aO)
245+ else if (if (if ((height > aP))
246+ then (aP == aQ)
243247 else false)
244- then (aW > aN)
248+ then (aY > aP)
245249 else false)
246250 then {
247- let bj = (be * (height - aW))
248- $Tuple4(bj, aT, aU, bd)
251+ let bl = (bg * (height - aY))
252+ $Tuple4(bl, aV, aW, bf)
249253 }
250254 else {
251- let bk = (bg * (aN - aW))
252- let bl = (aT + fraction(aX(ar, bk), bh, bf))
253- let bm = (aU + (if ((bc > 0))
254- then fraction(ba(ar, bk), V, bc)
255+ let bm = (bi * (aP - aY))
256+ let bn = (aV + fraction(aZ(at, bm), bj, bh))
257+ let bo = (aW + (if ((be > 0))
258+ then fraction(bc(at, bm), X, be)
255259 else 0))
256- let bn = (bd + (if ((bc > 0))
257- then fraction(fraction(ba(ar, bk), V, bf), V, bc)
260+ let bp = (bf + (if ((be > 0))
261+ then fraction(fraction(bc(at, bm), X, bh), X, be)
258262 else 0))
259- let bo = (be * (height - aN))
260- $Tuple4(bo, bl, bm, bn)
263+ let bq = (bg * (height - aP))
264+ $Tuple4(bq, bn, bo, bp)
261265 }
262- let bp = bi._1
263- let bq = bi._2
264- let br = bi._3
265- let bs = bi._4
266- let bt = (bq + fraction(aX(ar, bp), bh, bf))
267- let bu = (br + (if ((bc > 0))
268- then fraction(ba(ar, bp), V, bc)
266+ let br = bk._1
267+ let bs = bk._2
268+ let bt = bk._3
269+ let bu = bk._4
270+ let bv = (bs + fraction(aZ(at, br), bj, bh))
271+ let bw = (bt + (if ((be > 0))
272+ then fraction(bc(at, br), X, be)
269273 else 0))
270- let bv = (bs + (if ((bc > 0))
271- then fraction(fraction(ba(ar, bp), V, bf), V, bc)
274+ let bx = (bu + (if ((be > 0))
275+ then fraction(fraction(bc(at, br), X, bh), X, be)
272276 else 0))
273- $Tuple3(bt, bu, bv)
277+ $Tuple3(bv, bw, bx)
274278 }
275279
276280
277-func bw (ar,aw) = {
278- let bh = aC(ap, ax(ar))
279- let bc = au(ar)
280- let bx = av(ar, aw)
281- let by = at(ar)
282- let bz = valueOrElse(getInteger(this, (ar + p)), by)
283- let bA = aS(ar)
284- let aW = bA._1
285- let aT = bA._2
286- let aU = bA._3
287- let aV = bA._4
288- let bB = aJ(ar)
289- let be = bB._1
290- let aN = bB._2
291- let bg = bB._3
292- let aO = bB._4
293- let bC = valueOrElse(getInteger(this, (((ar + "_") + aw) + u)), aT)
294- let bD = valueOrElse(getInteger(this, (((ar + "_") + aw) + w)), aU)
295- let bE = valueOrElse(getInteger(this, (((ar + "_") + aw) + y)), aV)
296- let bF = valueOrElse(getInteger(this, (((ar + "_") + aw) + j)), 0)
297- let bG = valueOrElse(getInteger(this, (((ar + "_") + aw) + n)), bF)
298- let bH = bb(ar, aW, aN, aO, aT, aU, bc, aV, be, bz, bg, bh)
299- let bt = bH._1
300- let bu = bH._2
301- let bv = bH._3
302- let bI = fraction(bG, (bt - bC), bh)
303- let bJ = fraction(bx, (bu - bD), V)
304- let bK = fraction(toBigInt(bG), toBigInt(bx), toBigInt(1))
305- let bL = toInt(fraction(fraction(bK, toBigInt((bv - bE)), toBigInt(V)), toBigInt(1), toBigInt(V)))
306- let bM = (bJ - bL)
307- if ((0 > bM))
281+func by (at,ay) = {
282+ let bj = aE(ar, az(at))
283+ let be = aw(at)
284+ let bz = ax(at, ay)
285+ let bA = av(at)
286+ let bB = valueOrElse(getInteger(this, (at + p)), bA)
287+ let bC = aU(at)
288+ let aY = bC._1
289+ let aV = bC._2
290+ let aW = bC._3
291+ let aX = bC._4
292+ let bD = aL(at)
293+ let bg = bD._1
294+ let aP = bD._2
295+ let bi = bD._3
296+ let aQ = bD._4
297+ let bE = valueOrElse(getInteger(this, (((at + "_") + ay) + u)), aV)
298+ let bF = valueOrElse(getInteger(this, (((at + "_") + ay) + w)), aW)
299+ let bG = valueOrElse(getInteger(this, (((at + "_") + ay) + y)), aX)
300+ let bH = valueOrElse(getInteger(this, (((at + "_") + ay) + j)), 0)
301+ let bI = valueOrElse(getInteger(this, (((at + "_") + ay) + n)), bH)
302+ let bJ = bd(at, aY, aP, aQ, aV, aW, be, aX, bg, bB, bi, bj)
303+ let bv = bJ._1
304+ let bw = bJ._2
305+ let bx = bJ._3
306+ let bK = fraction(bI, (bv - bE), bj)
307+ let bL = if ((bz == 0))
308+ then (bK / 2)
309+ else fraction(bz, (bw - bF), X)
310+ let bM = fraction(toBigInt(bI), toBigInt(bz), toBigInt(1))
311+ let bN = toInt(fraction(fraction(bM, toBigInt((bx - bG)), toBigInt(X)), toBigInt(1), toBigInt(X)))
312+ let bO = (bL - bN)
313+ if ((0 > bO))
308314 then throw("toTreasury < 0")
309- else $Tuple5(bt, bu, bv, (bI + bL), bM)
315+ else $Tuple5(bv, bw, bx, (bK + bN), bO)
310316 }
311317
312318
313-func bN (bO,aw) = {
314- func bP (bQ,ar) = {
315- let bR = bQ
316- let bS = bR._1
317- let bT = bR._2
318- let bU = bw(ar, aw)
319- let bV = bU._1
320- let bW = bU._2
321- let bX = bU._3
322- let bY = bU._4
323- let bZ = bU._5
324- let ca = (aI(ar, aw) + bY)
325- $Tuple2((bS :+ ar), (bT :+ ca))
319+func bP (bQ,ay) = {
320+ func bR (bS,at) = {
321+ let bT = bS
322+ let bU = bT._1
323+ let bV = bT._2
324+ let bW = by(at, ay)
325+ let bX = bW._1
326+ let bY = bW._2
327+ let bZ = bW._3
328+ let ca = bW._4
329+ let cb = bW._5
330+ let cc = (aK(at, ay) + ca)
331+ $Tuple2((bU :+ at), (bV :+ cc))
326332 }
327333
328- let cb = bO
329- let cc = size(cb)
330- let cd = $Tuple2(nil, nil)
331- func ce (cf,cg) = if ((cg >= cc))
332- then cf
333- else bP(cf, cb[cg])
334+ let cd = bQ
335+ let ce = size(cd)
336+ let cf = $Tuple2(nil, nil)
337+ func cg (ch,ci) = if ((ci >= ce))
338+ then ch
339+ else bR(ch, cd[ci])
334340
335- func ch (cf,cg) = if ((cg >= cc))
336- then cf
341+ func cj (ch,ci) = if ((ci >= ce))
342+ then ch
337343 else throw("List size exceeds 60")
338344
339- ch(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(cd, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
345+ cj(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cf, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
340346 }
341347
342348
343-func ci (ar,aw,cj,ck,cl) = if ((aq(ar) > height))
349+func ck (at,ay,cl,cm,cn) = if ((as(at) > height))
344350 then {
345- let cm = valueOrElse(getInteger(ah, (ar + D)), 0)
346- let cn = valueOrElse(getInteger(ah, (((aw + "_") + ar) + G)), 0)
347- let co = as(addressFromStringValue(ar))
348- let cp = (fraction(co, cn, cm) - cj)
349- if ((cl > 0))
351+ let co = valueOrElse(getInteger(aj, (at + D)), 0)
352+ let cp = valueOrElse(getInteger(aj, (((ay + "_") + at) + I)), 0)
353+ let cq = au(addressFromStringValue(at))
354+ let cr = (fraction(cq, cp, co) - cl)
355+ if ((cn > 0))
350356 then throw("You can't lock shareTokens till first harvest end.")
351- else if ((cn == 0))
357+ else if ((cp == 0))
352358 then 0
353- else if ((ck >= cp))
354- then (ck - cp)
359+ else if ((cm >= cr))
360+ then (cm - cr)
355361 else 0
356362 }
357363 else 0
358364
359365
360-func cq (cr) = {
361- let cs = split(valueOrErrorMessage(getString(this, (toString(cr) + q)), ("There are no key for lock type" + toString(cr))), "_")
362- $Tuple2(parseIntValue(cs[0]), parseIntValue(cs[1]))
366+func cs (ct) = {
367+ let cu = split(valueOrErrorMessage(getString(this, (toString(ct) + q)), ("There are no key for lock type" + toString(ct))), "_")
368+ $Tuple2(parseIntValue(cu[0]), parseIntValue(cu[1]))
363369 }
364370
365371
366-func ct (cu) = [BooleanEntry(a, false), StringEntry(c, cu)]
372+func cv (cw) = [BooleanEntry(a, false), StringEntry(c, cw)]
367373
368374
369-func cv () = if (if (an)
370- then ao
375+func cx () = if (if (ap)
376+ then aq
371377 else false)
372378 then unit
373379 else throw("DApp is inactive at this moment")
374380
375381
376-func cw (cx) = if (containsElement([ad, ae, af], cx.callerPublicKey))
382+func cy (cz) = if (containsElement([af, ag, ah], cz.callerPublicKey))
377383 then unit
378384 else throw("Only admin can call this function")
379385
380386
381-func cy (cx,ar) = if (if ((toString(cx.caller) == ar))
387+func cA (cz,at) = if (if ((toString(cz.caller) == at))
382388 then true
383- else (cx.caller == am))
389+ else (cz.caller == ao))
384390 then unit
385391 else throw("Only pool can call this function")
386392
387393
388-func cz (cx) = if ((cx.caller == this))
394+func cB (cz) = if ((cz.caller == this))
389395 then unit
390396 else throw("Only contract itself can call this function")
391397
392398
393-func cA (cx,cB,ar,cl) = {
394- let cC = ax(ar)
395- let aw = toString(cB)
396- let cD = at(ar)
397- let bz = valueOrElse(getInteger(this, (ar + p)), cD)
398- let cE = valueOrElse(getInteger(this, (((ar + "_") + aw) + j)), 0)
399- let cF = valueOrElse(getInteger(this, (((ar + "_") + aw) + m)), 0)
400- let cG = valueOrElse(getInteger(this, (((ar + "_") + aw) + k)), 0)
401- let cH = valueOrElse(getInteger(this, (((ar + "_") + aw) + n)), cE)
402- let cI = ((cE + cG) + cx.payments[0].amount)
403- let cJ = cq(cl)
404- let cK = cJ._1
405- let cL = cJ._2
406- let cM = getIntegerValue(this, r)
407- if ((cx.payments[0].assetId != cC))
399+func cC (cz,cD,at,cn) = {
400+ let cE = az(at)
401+ let ay = toString(cD)
402+ let cF = av(at)
403+ let bB = valueOrElse(getInteger(this, (at + p)), cF)
404+ let cG = valueOrElse(getInteger(this, (((at + "_") + ay) + j)), 0)
405+ let cH = valueOrElse(getInteger(this, (((at + "_") + ay) + m)), 0)
406+ let cI = valueOrElse(getInteger(this, (((at + "_") + ay) + k)), 0)
407+ let cJ = valueOrElse(getInteger(this, (((at + "_") + ay) + n)), cG)
408+ let cK = ((cG + cI) + cz.payments[0].amount)
409+ let cL = cs(cn)
410+ let cM = cL._1
411+ let cN = cL._2
412+ let cO = getIntegerValue(this, r)
413+ if ((cz.payments[0].assetId != cE))
408414 then throw("Wrong sharetoken in payment")
409- else if ((0 >= cx.payments[0].amount))
415+ else if ((0 >= cz.payments[0].amount))
410416 then throw("Payment amount must be greater than 0")
411- else if ((0 > cl))
417+ else if ((0 > cn))
412418 then throw("lockType must be >= 0")
413419 else {
414- let cN = ci(ar, aw, cE, cx.payments[0].amount, cl)
415- if ((cN == cN))
420+ let cP = ck(at, ay, cG, cz.payments[0].amount, cn)
421+ if ((cP == cP))
416422 then {
417- let cO = if ((cl == 0))
423+ let cQ = if ((cn == 0))
418424 then {
419- let cP = ((cH + cx.payments[0].amount) - cN)
420- $Tuple2([IntegerEntry((((ar + "_") + aw) + j), ((cE + cx.payments[0].amount) - cN)), IntegerEntry((((ar + "_") + aw) + n), cP), IntegerEntry((ar + p), ((bz + cx.payments[0].amount) - cN)), ScriptTransfer(cB, cN, cx.payments[0].assetId)], ((cD + cx.payments[0].amount) - cN))
425+ let cR = ((cJ + cz.payments[0].amount) - cP)
426+ $Tuple2([IntegerEntry((((at + "_") + ay) + j), ((cG + cz.payments[0].amount) - cP)), IntegerEntry((((at + "_") + ay) + n), cR), IntegerEntry((at + p), ((bB + cz.payments[0].amount) - cP)), ScriptTransfer(cD, cP, cz.payments[0].assetId)], ((cF + cz.payments[0].amount) - cP))
421427 }
422- else if (if ((cF == 0))
423- then if (if ((2 > size(cx.payments)))
428+ else if (if ((cH == 0))
429+ then if (if ((2 > size(cz.payments)))
424430 then true
425- else (cx.payments[1].assetId != unit))
431+ else (cz.payments[1].assetId != unit))
426432 then true
427- else (cM > cx.payments[1].amount)
433+ else (cO > cz.payments[1].amount)
428434 else false)
429- then throw((("You need to pay additional waves comission " + toString(cM)) + "WAVES"))
430- else if ((cF > (height + cK)))
435+ then throw((("You need to pay additional waves comission " + toString(cO)) + "WAVES"))
436+ else if ((cH > (height + cM)))
431437 then throw("You cannot lock sharetokens for a period less than what you have already locked")
432438 else {
433- let cQ = (cG + cx.payments[0].amount)
434- let cR = (height + cK)
435- let cP = (fraction(cQ, cL, W) + cE)
436- $Tuple2([IntegerEntry((((ar + "_") + aw) + k), cQ), IntegerEntry((((ar + "_") + aw) + m), cR), IntegerEntry((((ar + "_") + aw) + l), cl), IntegerEntry((((ar + "_") + aw) + n), cP), IntegerEntry((ar + p), ((bz - cH) + cP))], (cD + cx.payments[0].amount))
439+ let cS = (cI + cz.payments[0].amount)
440+ let cT = (height + cM)
441+ let cR = (fraction(cS, cN, Y) + cG)
442+ $Tuple2([IntegerEntry((((at + "_") + ay) + k), cS), IntegerEntry((((at + "_") + ay) + m), cT), IntegerEntry((((at + "_") + ay) + l), cn), IntegerEntry((((at + "_") + ay) + n), cR), IntegerEntry((at + p), ((bB - cJ) + cR))], (cF + cz.payments[0].amount))
437443 }
438- let cS = cO._1
439- let cT = cO._2
440- if ((ay(cC) > cT))
444+ let cU = cQ._1
445+ let cV = cQ._2
446+ if ((aA(cE) > cV))
441447 then throw("Balance of share-token is lower than totalAmount")
442448 else {
443- let cU = bw(ar, aw)
444- let aT = cU._1
445- let aU = cU._2
446- let cV = cU._3
447- let bY = cU._4
448- let cW = cU._5
449- let cX = (aI(ar, aw) + bY)
450- let cY = if ((getString(Address(fromBase58String(ar)), "version") == "3.0.0"))
451- then invoke(ak, "updateUserInterest", [aw, ar, cI], nil)
449+ let cW = by(at, ay)
450+ let aV = cW._1
451+ let aW = cW._2
452+ let cX = cW._3
453+ let ca = cW._4
454+ let cY = cW._5
455+ let cZ = (aK(at, ay) + ca)
456+ let da = if ((getString(Address(fromBase58String(at)), "version") == "3.0.0"))
457+ then invoke(am, "updateUserInterest", [ay, at, cK], nil)
452458 else 0
453- if ((cY == cY))
454- then ([IntegerEntry((((ar + "_") + aw) + u), aT), IntegerEntry((((ar + "_") + aw) + w), aU), IntegerEntry((((ar + "_") + aw) + y), cV), IntegerEntry((ar + t), aT), IntegerEntry((ar + v), aU), IntegerEntry((ar + x), cV), IntegerEntry((ar + z), height), IntegerEntry((ar + o), cT), IntegerEntry((((ar + "_") + aw) + B), cX), Reissue(ap, cW, true), ScriptTransfer(al, cW, ap)] ++ cS)
459+ if ((da == da))
460+ then ([IntegerEntry((((at + "_") + ay) + u), aV), IntegerEntry((((at + "_") + ay) + w), aW), IntegerEntry((((at + "_") + ay) + y), cX), IntegerEntry((at + t), aV), IntegerEntry((at + v), aW), IntegerEntry((at + x), cX), IntegerEntry((at + z), height), IntegerEntry((at + o), cV), IntegerEntry((((at + "_") + ay) + B), cZ), Reissue(ar, cY, true), ScriptTransfer(an, cY, ar)] ++ cU)
455461 else throw("Strict value is not equal to itself.")
456462 }
457463 }
458464 else throw("Strict value is not equal to itself.")
459465 }
460466 }
461467
462468
463-func cZ (cx,cB,ar,da) = valueOrElse(cv(), {
464- let db = fromBase58String(getStringValue(value(addressFromString(ar)), "share_asset_id"))
465- let aw = toString(cB)
466- let dc = bw(ar, aw)
467- let aT = dc._1
468- let aU = dc._2
469- let cV = dc._3
470- let bY = dc._4
471- let cW = dc._5
472- let cE = valueOrElse(getInteger(this, (((ar + "_") + aw) + j)), 0)
473- let cG = valueOrElse(getInteger(this, (((ar + "_") + aw) + k)), 0)
474- let cH = valueOrElse(getInteger(this, (((ar + "_") + aw) + n)), cE)
475- let dd = (cE - da)
476- let cX = (aI(ar, aw) + bY)
477- let de = at(ar)
478- let bz = valueOrElse(getInteger(this, (ar + p)), de)
479- let df = (de - da)
480- let dg = (bz - da)
481- let cP = (cH - da)
482- if ((da > cE))
469+func db (cz,cD,at,dc) = valueOrElse(cx(), {
470+ let dd = fromBase58String(getStringValue(value(addressFromString(at)), "share_asset_id"))
471+ let ay = toString(cD)
472+ let de = by(at, ay)
473+ let aV = de._1
474+ let aW = de._2
475+ let cX = de._3
476+ let ca = de._4
477+ let cY = de._5
478+ let cG = valueOrElse(getInteger(this, (((at + "_") + ay) + j)), 0)
479+ let cI = valueOrElse(getInteger(this, (((at + "_") + ay) + k)), 0)
480+ let cJ = valueOrElse(getInteger(this, (((at + "_") + ay) + n)), cG)
481+ let df = (cG - dc)
482+ let cZ = (aK(at, ay) + ca)
483+ let dg = av(at)
484+ let bB = valueOrElse(getInteger(this, (at + p)), dg)
485+ let dh = (dg - dc)
486+ let di = (bB - dc)
487+ let cR = (cJ - dc)
488+ if ((dc > cG))
483489 then throw("Withdraw amount more then user locked amount")
484- else if ((ay(db) > de))
490+ else if ((aA(dd) > dg))
485491 then throw("Balance of share-token is lower than totalAmount")
486492 else {
487- let cY = if ((getString(Address(fromBase58String(ar)), "version") == "3.0.0"))
488- then invoke(ak, "updateUserInterest", [aw, ar, (cE + cG)], nil)
493+ let da = if ((getString(Address(fromBase58String(at)), "version") == "3.0.0"))
494+ then invoke(am, "updateUserInterest", [ay, at, (cG + cI)], nil)
489495 else 0
490- if ((cY == cY))
491- then [IntegerEntry((((ar + "_") + aw) + u), aT), IntegerEntry((((ar + "_") + aw) + w), aU), IntegerEntry((((ar + "_") + aw) + y), cV), IntegerEntry((ar + t), aT), IntegerEntry((ar + v), aU), IntegerEntry((ar + x), cV), IntegerEntry((ar + z), height), IntegerEntry((((ar + "_") + aw) + j), dd), IntegerEntry((((ar + "_") + aw) + n), cP), IntegerEntry((ar + o), df), IntegerEntry((ar + p), dg), IntegerEntry((((ar + "_") + aw) + B), cX), Reissue(ap, cW, true), ScriptTransfer(al, cW, ap), ScriptTransfer(cx.caller, da, db)]
496+ if ((da == da))
497+ then [IntegerEntry((((at + "_") + ay) + u), aV), IntegerEntry((((at + "_") + ay) + w), aW), IntegerEntry((((at + "_") + ay) + y), cX), IntegerEntry((at + t), aV), IntegerEntry((at + v), aW), IntegerEntry((at + x), cX), IntegerEntry((at + z), height), IntegerEntry((((at + "_") + ay) + j), df), IntegerEntry((((at + "_") + ay) + n), cR), IntegerEntry((at + o), dh), IntegerEntry((at + p), di), IntegerEntry((((at + "_") + ay) + B), cZ), Reissue(ar, cY, true), ScriptTransfer(an, cY, ar), ScriptTransfer(cz.caller, dc, dd)]
492498 else throw("Strict value is not equal to itself.")
493499 }
494500 })
495501
496502
497-func dh (cx,ar,cB) = {
498- let db = fromBase58String(getStringValue(value(addressFromString(ar)), "share_asset_id"))
499- let aw = toString(cB)
500- let bf = at(ar)
501- let di = bw(ar, aw)
502- let aT = di._1
503- let aU = di._2
504- let cV = di._3
505- let bY = di._4
506- let cW = di._5
507- let ca = (aI(ar, aw) + bY)
508- if ((ca == 0))
503+func dj (cz,at,cD) = {
504+ let dd = fromBase58String(getStringValue(value(addressFromString(at)), "share_asset_id"))
505+ let ay = toString(cD)
506+ let bh = av(at)
507+ let dk = by(at, ay)
508+ let aV = dk._1
509+ let aW = dk._2
510+ let cX = dk._3
511+ let ca = dk._4
512+ let cY = dk._5
513+ let cc = (aK(at, ay) + ca)
514+ if ((cc == 0))
509515 then throw("You have 0 available SWOP")
510- else if ((ay(db) > bf))
516+ else if ((aA(dd) > bh))
511517 then throw("Balance of share-token is lower than totalAmount")
512518 else {
513- let dj = if ((cx.caller != this))
514- then [ScriptTransfer(cx.caller, ca, ap)]
519+ let dl = if ((cz.caller != this))
520+ then [ScriptTransfer(cz.caller, cc, ar)]
515521 else nil
516- $Tuple2(([IntegerEntry((((ar + "_") + aw) + u), aT), IntegerEntry((((ar + "_") + aw) + w), aU), IntegerEntry((((ar + "_") + aw) + y), cV), IntegerEntry((ar + t), aT), IntegerEntry((ar + v), aU), IntegerEntry((ar + x), cV), IntegerEntry((ar + z), height), IntegerEntry((((ar + "_") + aw) + B), 0), Reissue(ap, (cW + ca), true), ScriptTransfer(al, cW, ap)] ++ dj), ca)
522+ $Tuple2(([IntegerEntry((((at + "_") + ay) + u), aV), IntegerEntry((((at + "_") + ay) + w), aW), IntegerEntry((((at + "_") + ay) + y), cX), IntegerEntry((at + t), aV), IntegerEntry((at + v), aW), IntegerEntry((at + x), cX), IntegerEntry((at + z), height), IntegerEntry((((at + "_") + ay) + B), 0), Reissue(ar, (cY + cc), true), ScriptTransfer(an, cY, ar)] ++ dl), cc)
517523 }
518524 }
519525
520526
521-@Callable(cx)
522-func init (dk) = if (isDefined(getString(this, A)))
527+@Callable(cz)
528+func init (dm) = if (isDefined(getString(this, A)))
523529 then throw("SWOP already initialized")
524530 else {
525- let dl = 100000000000000
526- let dm = Issue("SWOP", "SWOP protocol token", dl, 8, true)
527- let dn = calculateAssetId(dm)
528-[BooleanEntry(a, true), Issue("SWOP", "SWOP protocol token", dl, 8, true), StringEntry(A, toBase58String(dn))]
531+ let dn = 100000000000000
532+ let do = Issue("SWOP", "SWOP protocol token", dn, 8, true)
533+ let dp = calculateAssetId(do)
534+[BooleanEntry(a, true), Issue("SWOP", "SWOP protocol token", dn, 8, true), StringEntry(A, toBase58String(dp))]
529535 }
530536
531537
532538
533-@Callable(cx)
534-func initPoolShareFarming (ar) = valueOrElse(cw(cx), [IntegerEntry((ar + o), 0), IntegerEntry((ar + t), 0), IntegerEntry((ar + v), 0), IntegerEntry((ar + x), 0), IntegerEntry((ar + z), height)])
539+@Callable(cz)
540+func initPoolShareFarming (at) = valueOrElse(cy(cz), [IntegerEntry((at + o), 0), IntegerEntry((at + t), 0), IntegerEntry((at + v), 0), IntegerEntry((at + x), 0), IntegerEntry((at + z), height)])
535541
536542
537543
538-@Callable(cx)
539-func updatePoolInterest (ar) = valueOrElse(cv(), if ((cx.caller != ai))
544+@Callable(cz)
545+func updatePoolInterest (at) = valueOrElse(cx(), if ((cz.caller != ak))
540546 then throw("Only Governance can call this function")
541547 else {
542- let aw = toString(addressFromPublicKey(aj))
543- let do = bw(ar, aw)
544- let aT = do._1
545- let aU = do._2
546- let cV = do._3
547-[IntegerEntry((ar + t), aT), IntegerEntry((ar + v), aU), IntegerEntry((ar + x), cV), IntegerEntry((ar + z), height)]
548+ let ay = toString(addressFromPublicKey(al))
549+ let dq = by(at, ay)
550+ let aV = dq._1
551+ let aW = dq._2
552+ let cX = dq._3
553+[IntegerEntry((at + t), aV), IntegerEntry((at + v), aW), IntegerEntry((at + x), cX), IntegerEntry((at + z), height)]
548554 })
549555
550556
551557
552-@Callable(cx)
553-func lockShareTokens (ar,cl) = valueOrElse(cv(), cA(cx, cx.caller, ar, cl))
558+@Callable(cz)
559+func lockShareTokens (at,cn) = valueOrElse(cx(), cC(cz, cz.caller, at, cn))
554560
555561
556562
557-@Callable(cx)
558-func lockShareTokensFromPool (dp,ar,cl) = valueOrElse(cv(), valueOrElse(cy(cx, ar), cA(cx, Address(dp), ar, cl)))
563+@Callable(cz)
564+func lockShareTokensFromPool (dr,at,cn) = valueOrElse(cx(), valueOrElse(cA(cz, at), cC(cz, Address(dr), at, cn)))
559565
560566
561567
562-@Callable(cx)
563-func lockStakedShareTokens (ar,cl,dq) = valueOrElse(cv(), {
564- let cC = ax(ar)
565- let aw = toString(cx.caller)
566- let cD = at(ar)
567- let bz = valueOrElse(getInteger(this, (ar + p)), cD)
568- let cE = valueOrElse(getInteger(this, (((ar + "_") + aw) + j)), 0)
569- let cF = valueOrElse(getInteger(this, (((ar + "_") + aw) + m)), 0)
570- let cG = valueOrElse(getInteger(this, (((ar + "_") + aw) + k)), 0)
571- let cH = valueOrElse(getInteger(this, (((ar + "_") + aw) + n)), cE)
572- let cI = (cE + cG)
573- let dr = cq(cl)
574- let cK = dr._1
575- let cL = dr._2
576- let cM = getIntegerValue(this, r)
577- if ((aq(ar) > height))
568+@Callable(cz)
569+func lockStakedShareTokens (at,cn,ds) = valueOrElse(cx(), {
570+ let cE = az(at)
571+ let ay = toString(cz.caller)
572+ let cF = av(at)
573+ let bB = valueOrElse(getInteger(this, (at + p)), cF)
574+ let cG = valueOrElse(getInteger(this, (((at + "_") + ay) + j)), 0)
575+ let cH = valueOrElse(getInteger(this, (((at + "_") + ay) + m)), 0)
576+ let cI = valueOrElse(getInteger(this, (((at + "_") + ay) + k)), 0)
577+ let cJ = valueOrElse(getInteger(this, (((at + "_") + ay) + n)), cG)
578+ let cK = (cG + cI)
579+ let dt = cs(cn)
580+ let cM = dt._1
581+ let cN = dt._2
582+ let cO = getIntegerValue(this, r)
583+ if ((as(at) > height))
578584 then throw("You can't lock shareTokens till first harvest end.")
579- else if ((0 >= cl))
585+ else if ((0 >= cn))
580586 then throw("lockType must be > 0")
581- else if ((dq > cE))
582- then throw(("You can't lock more than " + toString(cE)))
583- else if ((ay(cC) > cD))
587+ else if ((ds > cG))
588+ then throw(("You can't lock more than " + toString(cG)))
589+ else if ((aA(cE) > cF))
584590 then throw("Balance of share-token is lower than totalAmount")
585- else if (if ((cF == 0))
586- then if (if ((1 > size(cx.payments)))
591+ else if (if ((cH == 0))
592+ then if (if ((1 > size(cz.payments)))
587593 then true
588- else (cx.payments[0].assetId != unit))
594+ else (cz.payments[0].assetId != unit))
589595 then true
590- else (cM > cx.payments[0].amount)
596+ else (cO > cz.payments[0].amount)
591597 else false)
592- then throw((("You need to pay additional waves comission " + toString(cM)) + "WAVES"))
593- else if (if ((cF == 0))
594- then (0 >= dq)
598+ then throw((("You need to pay additional waves comission " + toString(cO)) + "WAVES"))
599+ else if (if ((cH == 0))
600+ then (0 >= ds)
595601 else false)
596602 then throw("lockAmount must be greater than 0")
597- else if ((0 > dq))
603+ else if ((0 > ds))
598604 then throw("lockAmount must be positive")
599- else if ((cF > (height + cK)))
605+ else if ((cH > (height + cM)))
600606 then throw("You cannot lock sharetokens for a period less than what you have already locked")
601607 else {
602- let cQ = (cG + dq)
603- let dd = (cE - dq)
604- let cR = (height + cK)
605- let cP = (fraction(cQ, cL, W) + dd)
606- let ds = bw(ar, aw)
607- let aT = ds._1
608- let aU = ds._2
609- let cV = ds._3
610- let bY = ds._4
611- let cW = ds._5
612- let cX = (aI(ar, aw) + bY)
613-[IntegerEntry((((ar + "_") + aw) + j), dd), IntegerEntry((((ar + "_") + aw) + k), cQ), IntegerEntry((((ar + "_") + aw) + m), cR), IntegerEntry((((ar + "_") + aw) + l), cl), IntegerEntry((((ar + "_") + aw) + n), cP), IntegerEntry((ar + p), ((bz - cH) + cP)), IntegerEntry((((ar + "_") + aw) + u), aT), IntegerEntry((((ar + "_") + aw) + w), aU), IntegerEntry((((ar + "_") + aw) + y), cV), IntegerEntry((ar + t), aT), IntegerEntry((ar + v), aU), IntegerEntry((ar + x), cV), IntegerEntry((ar + z), height), IntegerEntry((((ar + "_") + aw) + B), cX), Reissue(ap, cW, true), ScriptTransfer(al, cW, ap)]
608+ let cS = (cI + ds)
609+ let df = (cG - ds)
610+ let cT = (height + cM)
611+ let cR = (fraction(cS, cN, Y) + df)
612+ let du = by(at, ay)
613+ let aV = du._1
614+ let aW = du._2
615+ let cX = du._3
616+ let ca = du._4
617+ let cY = du._5
618+ let cZ = (aK(at, ay) + ca)
619+[IntegerEntry((((at + "_") + ay) + j), df), IntegerEntry((((at + "_") + ay) + k), cS), IntegerEntry((((at + "_") + ay) + m), cT), IntegerEntry((((at + "_") + ay) + l), cn), IntegerEntry((((at + "_") + ay) + n), cR), IntegerEntry((at + p), ((bB - cJ) + cR)), IntegerEntry((((at + "_") + ay) + u), aV), IntegerEntry((((at + "_") + ay) + w), aW), IntegerEntry((((at + "_") + ay) + y), cX), IntegerEntry((at + t), aV), IntegerEntry((at + v), aW), IntegerEntry((at + x), cX), IntegerEntry((at + z), height), IntegerEntry((((at + "_") + ay) + B), cZ), Reissue(ar, cY, true), ScriptTransfer(an, cY, ar)]
614620 }
615621 })
616622
617623
618624
619-@Callable(cx)
620-func unlockUserLock (ar,aw) = valueOrElse(cv(), {
621- let cM = getIntegerValue(this, r)
622- let cF = valueOrErrorMessage(getInteger(this, (((ar + "_") + aw) + m)), (((("There is no pool " + ar) + " or user ") + aw) + "with lock"))
623- let bz = getIntegerValue(this, (ar + p))
624- let cE = valueOrElse(getInteger(this, (((ar + "_") + aw) + j)), 0)
625- let cG = valueOrElse(getInteger(this, (((ar + "_") + aw) + k)), 0)
626- let cH = valueOrElse(getInteger(this, (((ar + "_") + aw) + n)), cE)
627- if ((cF > height))
628- then throw(("You can't unlock sharetokens till " + toString(cF)))
625+@Callable(cz)
626+func unlockUserLock (at,ay) = valueOrElse(cx(), {
627+ let cO = getIntegerValue(this, r)
628+ let cH = valueOrErrorMessage(getInteger(this, (((at + "_") + ay) + m)), (((("There is no pool " + at) + " or user ") + ay) + "with lock"))
629+ let bB = getIntegerValue(this, (at + p))
630+ let cG = valueOrElse(getInteger(this, (((at + "_") + ay) + j)), 0)
631+ let cI = valueOrElse(getInteger(this, (((at + "_") + ay) + k)), 0)
632+ let cJ = valueOrElse(getInteger(this, (((at + "_") + ay) + n)), cG)
633+ if ((cH > height))
634+ then throw(("You can't unlock sharetokens till " + toString(cH)))
629635 else {
630- let dd = (cE + cG)
631- let dt = bw(ar, aw)
632- let aT = dt._1
633- let aU = dt._2
634- let cV = dt._3
635- let bY = dt._4
636- let cW = dt._5
637- let cX = (aI(ar, aw) + bY)
638-[IntegerEntry((((ar + "_") + aw) + u), aT), IntegerEntry((((ar + "_") + aw) + w), aU), IntegerEntry((((ar + "_") + aw) + y), cV), IntegerEntry((ar + t), aT), IntegerEntry((ar + v), aU), IntegerEntry((ar + x), cV), IntegerEntry((ar + z), height), IntegerEntry((((ar + "_") + aw) + j), dd), IntegerEntry((((ar + "_") + aw) + n), dd), IntegerEntry((ar + p), ((bz - cH) + dd)), IntegerEntry((((ar + "_") + aw) + B), cX), DeleteEntry((((ar + "_") + aw) + k)), DeleteEntry((((ar + "_") + aw) + m)), DeleteEntry((((ar + "_") + aw) + l)), Reissue(ap, cW, true), ScriptTransfer(al, cW, ap), ScriptTransfer(cx.caller, cM, unit)]
636+ let df = (cG + cI)
637+ let dv = by(at, ay)
638+ let aV = dv._1
639+ let aW = dv._2
640+ let cX = dv._3
641+ let ca = dv._4
642+ let cY = dv._5
643+ let cZ = (aK(at, ay) + ca)
644+[IntegerEntry((((at + "_") + ay) + u), aV), IntegerEntry((((at + "_") + ay) + w), aW), IntegerEntry((((at + "_") + ay) + y), cX), IntegerEntry((at + t), aV), IntegerEntry((at + v), aW), IntegerEntry((at + x), cX), IntegerEntry((at + z), height), IntegerEntry((((at + "_") + ay) + j), df), IntegerEntry((((at + "_") + ay) + n), df), IntegerEntry((at + p), ((bB - cJ) + df)), IntegerEntry((((at + "_") + ay) + B), cZ), DeleteEntry((((at + "_") + ay) + k)), DeleteEntry((((at + "_") + ay) + m)), DeleteEntry((((at + "_") + ay) + l)), Reissue(ar, cY, true), ScriptTransfer(an, cY, ar), ScriptTransfer(cz.caller, cO, unit)]
639645 }
640646 })
641647
642648
643649
644-@Callable(cx)
645-func withdrawShareTokens (ar,da) = valueOrElse(cv(), cZ(cx, cx.caller, ar, da))
650+@Callable(cz)
651+func withdrawShareTokens (at,dc) = valueOrElse(cx(), db(cz, cz.caller, at, dc))
646652
647653
648654
649-@Callable(cx)
650-func withdrawShareTokensFromPool (dp,ar,da) = valueOrElse(cv(), valueOrElse(cy(cx, ar), cZ(cx, Address(dp), ar, da)))
655+@Callable(cz)
656+func withdrawShareTokensFromPool (dr,at,dc) = valueOrElse(cx(), valueOrElse(cA(cz, at), db(cz, Address(dr), at, dc)))
651657
652658
653659
654-@Callable(cx)
655-func claim (ar) = valueOrElse(cv(), dh(cx, ar, cx.caller))
660+@Callable(cz)
661+func claim (at) = valueOrElse(cx(), dj(cz, at, cz.caller))
656662
657663
658664
659-@Callable(cx)
660-func claimInternal (ar,cB) = valueOrElse(cv(), valueOrElse(cz(cx), dh(cx, ar, Address(cB))))
665+@Callable(cz)
666+func claimInternal (at,cD) = valueOrElse(cx(), valueOrElse(cB(cz), dj(cz, at, Address(cD))))
661667
662668
663669
664-@Callable(cx)
665-func claimAndStake (ar) = valueOrElse(cv(), {
666- let bY = {
667- let du = invoke(this, "claimInternal", [ar, cx.caller.bytes], nil)
668- if ($isInstanceOf(du, "Int"))
669- then du
670- else throw(($getType(du) + " couldn't be cast to Int"))
670+@Callable(cz)
671+func claimAndStake (at) = valueOrElse(cx(), {
672+ let ca = {
673+ let dw = invoke(this, "claimInternal", [at, cz.caller.bytes], nil)
674+ if ($isInstanceOf(dw, "Int"))
675+ then dw
676+ else throw(($getType(dw) + " couldn't be cast to Int"))
671677 }
672- if ((bY == bY))
678+ if ((ca == ca))
673679 then {
674- let dv = invoke(ai, "lockSWOPFromFarming", nil, [AttachedPayment(ap, bY)])
675- if ((dv == dv))
680+ let dx = invoke(ak, "lockSWOPFromFarming", nil, [AttachedPayment(ar, ca)])
681+ if ((dx == dx))
676682 then nil
677683 else throw("Strict value is not equal to itself.")
678684 }
679685 else throw("Strict value is not equal to itself.")
680686 })
681687
682688
683689
684-@Callable(cx)
685-func claimAll (bO) = valueOrElse(cv(), {
686- func dw (dx,ar) = {
687- let bY = {
688- let du = invoke(this, "claimInternal", [ar, cx.caller.bytes], nil)
689- if ($isInstanceOf(du, "Int"))
690- then du
691- else throw(($getType(du) + " couldn't be cast to Int"))
690+@Callable(cz)
691+func claimAll (bQ) = valueOrElse(cx(), {
692+ func dy (dz,at) = {
693+ let ca = {
694+ let dw = invoke(this, "claimInternal", [at, cz.caller.bytes], nil)
695+ if ($isInstanceOf(dw, "Int"))
696+ then dw
697+ else throw(($getType(dw) + " couldn't be cast to Int"))
692698 }
693- if ((bY == bY))
694- then (dx + bY)
699+ if ((ca == ca))
700+ then (dz + ca)
695701 else throw("Strict value is not equal to itself.")
696702 }
697703
698- let dx = {
699- let cb = bO
700- let cc = size(cb)
701- let cd = 0
702- func ce (cf,cg) = if ((cg >= cc))
703- then cf
704- else dw(cf, cb[cg])
704+ let dz = {
705+ let cd = bQ
706+ let ce = size(cd)
707+ let cf = 0
708+ func cg (ch,ci) = if ((ci >= ce))
709+ then ch
710+ else dy(ch, cd[ci])
705711
706- func ch (cf,cg) = if ((cg >= cc))
707- then cf
712+ func cj (ch,ci) = if ((ci >= ce))
713+ then ch
708714 else throw("List size exceeds 60")
709715
710- ch(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(cd, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
716+ cj(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cf, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
711717 }
712- if ((dx == 0))
718+ if ((dz == 0))
713719 then throw("You have 0 available SWOP")
714- else [ScriptTransfer(cx.caller, dx, ap)]
720+ else [ScriptTransfer(cz.caller, dz, ar)]
715721 })
716722
717723
718724
719-@Callable(cx)
720-func claimAllAndStake (bO) = valueOrElse(cv(), {
721- func dw (dx,ar) = {
722- let bY = {
723- let du = invoke(this, "claimInternal", [ar, cx.caller.bytes], nil)
724- if ($isInstanceOf(du, "Int"))
725- then du
726- else throw(($getType(du) + " couldn't be cast to Int"))
725+@Callable(cz)
726+func claimAllAndStake (bQ) = valueOrElse(cx(), {
727+ func dy (dz,at) = {
728+ let ca = {
729+ let dw = invoke(this, "claimInternal", [at, cz.caller.bytes], nil)
730+ if ($isInstanceOf(dw, "Int"))
731+ then dw
732+ else throw(($getType(dw) + " couldn't be cast to Int"))
727733 }
728- if ((bY == bY))
729- then (dx + bY)
734+ if ((ca == ca))
735+ then (dz + ca)
730736 else throw("Strict value is not equal to itself.")
731737 }
732738
733- let dx = {
734- let cb = bO
735- let cc = size(cb)
736- let cd = 0
737- func ce (cf,cg) = if ((cg >= cc))
738- then cf
739- else dw(cf, cb[cg])
739+ let dz = {
740+ let cd = bQ
741+ let ce = size(cd)
742+ let cf = 0
743+ func cg (ch,ci) = if ((ci >= ce))
744+ then ch
745+ else dy(ch, cd[ci])
740746
741- func ch (cf,cg) = if ((cg >= cc))
742- then cf
747+ func cj (ch,ci) = if ((ci >= ce))
748+ then ch
743749 else throw("List size exceeds 60")
744750
745- ch(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(ce(cd, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
751+ cj(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cg(cf, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
746752 }
747- if ((dx == 0))
753+ if ((dz == 0))
748754 then throw("You have 0 available SWOP")
749755 else {
750- let dv = invoke(ai, "lockSWOPFromFarming", nil, [AttachedPayment(ap, dx)])
751- if ((dv == dv))
756+ let dx = invoke(ak, "lockSWOPFromFarming", nil, [AttachedPayment(ar, dz)])
757+ if ((dx == dx))
752758 then nil
753759 else throw("Strict value is not equal to itself.")
754760 }
755761 })
756762
757763
758764
759-@Callable(cx)
760-func updateUserBoostInterest (ar,aw) = valueOrElse(cv(), if ((cx.caller != ah))
765+@Callable(cz)
766+func updateUserBoostInterest (at,ay) = valueOrElse(cx(), if ((cz.caller != aj))
761767 then throw("Only voiting can call this function")
762768 else {
763- let dy = bw(ar, aw)
764- let aT = dy._1
765- let aU = dy._2
766- let cV = dy._3
767- let bY = dy._4
768- let cW = dy._5
769- let cX = (aI(ar, aw) + bY)
770-[IntegerEntry((((ar + "_") + aw) + u), aT), IntegerEntry((((ar + "_") + aw) + w), aU), IntegerEntry((((ar + "_") + aw) + y), cV), IntegerEntry((ar + t), aT), IntegerEntry((ar + v), aU), IntegerEntry((ar + x), cV), IntegerEntry((ar + z), height), IntegerEntry((((ar + "_") + aw) + B), cX), Reissue(ap, cW, true), ScriptTransfer(al, cW, ap)]
769+ let dA = by(at, ay)
770+ let aV = dA._1
771+ let aW = dA._2
772+ let cX = dA._3
773+ let ca = dA._4
774+ let cY = dA._5
775+ let cZ = (aK(at, ay) + ca)
776+[IntegerEntry((((at + "_") + ay) + u), aV), IntegerEntry((((at + "_") + ay) + w), aW), IntegerEntry((((at + "_") + ay) + y), cX), IntegerEntry((at + t), aV), IntegerEntry((at + v), aW), IntegerEntry((at + x), cX), IntegerEntry((at + z), height), IntegerEntry((((at + "_") + ay) + B), cZ), Reissue(ar, cY, true), ScriptTransfer(an, cY, ar)]
771777 })
772778
773779
774780
775-@Callable(cx)
776-func shutdown () = valueOrElse(cw(cx), if (!(an))
781+@Callable(cz)
782+func shutdown () = valueOrElse(cy(cz), if (!(ap))
777783 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, c), "the cause wasn't specified")))
778- else ct("Paused by admin"))
784+ else cv("Paused by admin"))
779785
780786
781787
782-@Callable(cx)
783-func activate () = valueOrElse(cw(cx), if (an)
788+@Callable(cz)
789+func activate () = valueOrElse(cy(cz), if (ap)
784790 then throw("DApp is already active")
785791 else [BooleanEntry(a, true), DeleteEntry(c)])
786792
787793
788-@Verifier(dz)
789-func dA () = {
790- let aa = dz
791- let dB = if (sigVerify(dz.bodyBytes, dz.proofs[0], ad))
794+@Verifier(dB)
795+func dC () = {
796+ let ac = dB
797+ let dD = if (sigVerify(dB.bodyBytes, dB.proofs[0], af))
792798 then 1
793799 else 0
794- let dC = if (sigVerify(dz.bodyBytes, dz.proofs[1], ae))
800+ let dE = if (sigVerify(dB.bodyBytes, dB.proofs[1], ag))
795801 then 1
796802 else 0
797- let dD = if (sigVerify(dz.bodyBytes, dz.proofs[2], af))
803+ let dF = if (sigVerify(dB.bodyBytes, dB.proofs[2], ah))
798804 then 1
799805 else 0
800- (((dB + dC) + dD) >= 2)
806+ (((dD + dE) + dF) >= 2)
801807 }
802808

github/deemru/w8io/169f3d6 
423.44 ms