tx · e8eP4mbhtjPhYtC9DJqEuHahczoCURWkQAkFvpxvftv 3N7UuYar6264P58FBhVWKPQAh4Yua2hgngv: -0.01700000 Waves 2024.11.22 16:54 [3382760] smart account 3N7UuYar6264P58FBhVWKPQAh4Yua2hgngv > SELF 0.00000000 Waves
{ "type": 13, "id": "e8eP4mbhtjPhYtC9DJqEuHahczoCURWkQAkFvpxvftv", "fee": 1700000, "feeAssetId": null, "timestamp": 1732283685382, "version": 2, "chainId": 84, "sender": "3N7UuYar6264P58FBhVWKPQAh4Yua2hgngv", "senderPublicKey": "2fNSk5gmWbXBDTkSYSKd66xSgVvAYzrJnP9YSAFNvTwC", "proofs": [ "2ahybNdDdSfiSTEkffbucuESCtqPj25q4mabScfGbpeCEyyjjLJ7ahvoDDfXCCnSmToueWDAL6SjiGP7ceR3dxk8" ], "script": "base64:BgIbCAISAwoBGBIDCgEIEgMKAQgSAwoBCBIDCgEIcAADU0VQAgJfXwAFY2hhaW4JAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEAC3VzZHRBc3NldElkBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwASCE2nqyCAM/TtG7yo7ui5O8yYLdC136B5ao1CP5qA//uQMJAAACAQFUBQckbWF0Y2gwASBVsdifcoeC7+XjW42sBatl3ppDoS8WuwXzGreHpfHFGAkAAgECDVVua25vd24gY2hhaW4AFmRlZmF1bHRSZXN0MkFkZHJlc3NTdHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDACIzNQRndZdGE4YmlFejMxenBlRmU1REpLOHdFNXRyU3BRVkY4AwkAAAIBAVQFByRtYXRjaDACIzNON1V1WWFyNjI2NFA1OEZCaFZXS1BRQWg0WXVhMmhnbmd2CQACAQINVW5rbm93biBjaGFpbgAVb2xkU3Rha2luZ0NvbnRyYWN0U3RyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAiMzUExuY1h0UzFVODNENmNRYkZEM0g4ckJIUExnenhTRktaMQMJAAACAQFUBQckbWF0Y2gwAiMzTkRDeUJHNXE4NUp1YVJpaWdVZUV0YWlueWpDUVQzWHBabQkAAgECDVVua25vd24gY2hhaW4BD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAABBJZHhDZmdBY3JlczJEYXBwAAEADUlkeENmZ1dsZ0RhcHAAAgAUSWR4Q2ZnUHV6emxlUG9vbERhcHAABAAUSWR4Q2ZnSW52ZXN0RnVuZERhcHAABQEKa2V5UmVzdENmZwACDiVzX19yZXN0Q29uZmlnAQ9rZXlSZXN0MkFkZHJlc3MAAg0lc19fcmVzdDJBZGRyARFyZWFkUmVzdENmZ09yRmFpbAEEcmVzdAkAvAkCCQEPZ2V0U3RyaW5nT3JGYWlsAgUEcmVzdAkBCmtleVJlc3RDZmcABQNTRVABGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIIcmVzdDJDZmcDaWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQhyZXN0MkNmZwUDaWR4CQCsAgICKlJlc3QgY2ZnIGRvZXNuJ3QgY29udGFpbiBhZGRyZXNzIGF0IGluZGV4IAkApAMBBQNpZHgADXJlc3QyQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBD2tleVJlc3QyQWRkcmVzcwAFFmRlZmF1bHRSZXN0MkFkZHJlc3NTdHIACHJlc3QyQ2ZnCQERcmVhZFJlc3RDZmdPckZhaWwBBQ1yZXN0MkNvbnRyYWN0AA5hY3JlczJDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCHJlc3QyQ2ZnBRBJZHhDZmdBY3JlczJEYXBwAAt3bGdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCHJlc3QyQ2ZnBQ1JZHhDZmdXbGdEYXBwABJwdXp6bGVQb29sQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQhyZXN0MkNmZwUUSWR4Q2ZnUHV6emxlUG9vbERhcHAAEmludmVzdEZ1bmRDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCHJlc3QyQ2ZnBRRJZHhDZmdJbnZlc3RGdW5kRGFwcAATb2xkQWNyZXNDb250cmFjdEtleQIQb2xkQWNyZXNDb250cmFjdAEVa2V5TGFzdFdlZWtUeElkQnlVc2VyAQRhZGRyCQCsAgICE2xhc3RXZWVrVHhJZEJ5VXNlcl8FBGFkZHIBFGtleUN1cldlZWtUeElkQnlVc2VyAQRhZGRyCQCsAgICEmN1cldlZWtUeElkQnlVc2VyXwUEYWRkcgANd2xnQXNzZXRJZEtleQILd2xnX2Fzc2V0SWQACndsZ0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCBQt3bGdDb250cmFjdAUNd2xnQXNzZXRJZEtleQIYV0xHT0xEIGlzIG5vdCBpc3N1ZWQgeWV0AA9hY3Jlc0Fzc2V0SWRLZXkCDGFjcmVzQXNzZXRJZAAMYWNyZXNBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJwIAgUOYWNyZXMyQ29udHJhY3QFD2FjcmVzQXNzZXRJZEtleQIXQUNSRVMgaXMgbm90IGlzc3VlZCB5ZXQBFGtleVN0YWtlZER1Y2tCeU93bmVyAQlvd25lckFkZHIJAKwCAgISc3Rha2VkRHVja0J5T3duZXJfBQlvd25lckFkZHIBFmtleUFkZHJlc3NUb0N1c3RvbU5hbWUBBGFkZHIJAKwCAgIYYWNjb3VudEN1c3RvbU5hbWVCeUFkZHJfBQRhZGRyAQ9rZXlBZGRyZXNzUmVmQnkBBGFkZHIJAKwCAgIJYWNjUmVmQnlfBQRhZGRyARNrZXlBZGRyZXNzUmVmZXJyYWxzAQRhZGRyCQCsAgICDWFjY1JlZmVycmFsc18FBGFkZHIBDGFzVHVwbGU0SW50cwEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIUKEludCwgSW50LCBJbnQsIEludCkEAXQFByRtYXRjaDAFAXQJAAIBAiZmYWlsIHRvIGNhc3QgaW50byAoSW50LCBJbnQsIEludCwgSW50KQEMYXNUdXBsZTNJbnRzAQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAg8oSW50LCBJbnQsIEludCkEAXQFByRtYXRjaDAFAXQJAAIBAiFmYWlsIHRvIGNhc3QgaW50byAoSW50LCBJbnQsIEludCkBDGFzVHVwbGUySW50cwEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIKKEludCwgSW50KQQBdAUHJG1hdGNoMAUBdAkAAgECHGZhaWwgdG8gY2FzdCBpbnRvIChJbnQsIEludCkAA002XwDAhD0AA004XwCAwtcvAApURUFNX1NIQVJFAMCaDAAOQUNUSVZJVFlfU0hBUkUAoI0GAAxQTEFZRVJfU0hBUkUAgLUYAAtZRUFSX01JTExJUwCAhuvHdQAGREFZX01TAIC4mSkACkRBWV9CTE9DS1MAoAsAC1dFRUtfQkxPQ0tTAOBOAAdJU1NVRTEwAICU69wDAA9QTEFZRVJTMTBfU0hBUkUAgOowABFNQVJLRVRJTkcxMF9TSEFSRQCgjQYADFRFQU0xMF9TSEFSRQCgjQYAEU5FV19TVEFLSU5HX1NUQVJUAIDzuMKxMgAKdGVhbUFkcktleQIIdGVhbUFkZHIADmxhc3RUZWFtVGltS2V5AhRsYXN0Q2xhaW1lZFRpbWVfdGVhbQAOdGVhbUFtdExlZnRLZXkCDnRlYW1BbW91bnRMZWZ0ABRsYXN0QWN0aXZpdGllc1RpbUtleQIabGFzdENsYWltZWRUaW1lX2FjdGl2aXRpZXMADWFjdEFtdExlZnRLZXkCFGFjdGl2aXRpZXNBbW91bnRMZWZ0ABFzdGFrZXJzQW10TGVmdEtleQIRc3Rha2Vyc0Ftb3VudExlZnQBFmtleUxhc3RDbGFpbVRpbWVCeVVzZXIBBGFkZHIJAKwCAgIUbGFzdENsYWltZWRUaW1lVXNlcl8FBGFkZHIBDWRpc3RyQnlQZXJpb2QCDGlzc3VlZEFtb3VudAZwZXJpb2QJAGsDBQxpc3N1ZWRBbW91bnQJAGgCBQxQTEFZRVJfU0hBUkUJAGQCBQZwZXJpb2QAAQkAaAIABgUDTTZfABF3bGdJc3N1ZTEwVGltZUtleQIPd2xnX2lzc3VlMTBUaW1lAA53bGdJc3N1ZVRpbUtleQINd2xnX2lzc3VlVGltZQAPd2xnSXNzdWVkQW10S2V5AhB3bGdfaXNzdWVkQW1vdW50AA56Yklzc3VlZEFtdEtleQISemJpbGxfaXNzdWVkQW1vdW50ARdrZXlBY3Jlc1N0YWtlZEFtdEJ5VXNlcgEEYWRkcgkArAICAhhhY3Jlc1N0YWtlZEFtb3VudEJ5VXNlcl8FBGFkZHIAEmFjcmVzU3Rha2RUb3RhbEtleQIWYWNyZXNTdGFrZWRBbW91bnRUb3RhbAAUdG90YWxGYXJtaW5nUG93ZXJLZXkCEXRvdGFsRmFybWluZ1Bvd2VyAAlkYXBwMlJlc3QAAAAMZGFwcDJTdGFraW5nAAEACGRhcHAyV2xnAAIAC2RhcHAyUHV6emxlAAMAD2RhcHAySW52ZXN0RnVuZAAEAApsZXZlbEFjcmVzCQDMCAIAAAkAzAgCAAoJAMwIAgAUCQDMCAIAKAkAzAgCAFAJAMwIAgCWAQkAzAgCAPoBCQDMCAIAkAMJAMwIAgC8BQkAzAgCAOgHBQNuaWwBD2dldExldmVsQnlBY3JlcwEFYWNyZXMEA2FjcgkAaQIJAGQCBQVhY3JlcwD/wdcvBQNNOF8KAQdjaGVja2VyAgNhY2MEaXRlbQMJAGcCBQRpdGVtBQNhY3IFA2FjYwkAZAIFA2FjYwABCgACJGwFCmxldmVsQWNyZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2NoZWNrZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoBFmdldEZhcm1pbmdQb3dlckJ5QWNyZXMBBWFjcmVzCQBoAgkAaAIFBWFjcmVzABQJAGQCCQEPZ2V0TGV2ZWxCeUFjcmVzAQUFYWNyZXMABAEQZ2V0RmFybWluZ1Bvd2VycwISdXNlckFkZHJTdHJPckVtcHR5DmFjcmVzMkNvbnRyYWN0BAd0b3RhbEZQCQELdmFsdWVPckVsc2UCCQCaCAIFDmFjcmVzMkNvbnRyYWN0BRR0b3RhbEZhcm1pbmdQb3dlcktleQAABAl1c2VyQWNyZXMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUOYWNyZXMyQ29udHJhY3QJARdrZXlBY3Jlc1N0YWtlZEFtdEJ5VXNlcgEFEnVzZXJBZGRyU3RyT3JFbXB0eQAABAZ1c2VyRlAJARZnZXRGYXJtaW5nUG93ZXJCeUFjcmVzAQUJdXNlckFjcmVzCQDMCAIFB3RvdGFsRlAJAMwIAgUGdXNlckZQBQNuaWwBCmtleVVzZXJCZXQBBGFkZHIJAKwCAgIIdXNlckJldF8FBGFkZHIBEmtleVVzZXJXZWVrVGlja2V0cwIEYWRkcgR3ZWVrCQCsAgIJAKwCAgkArAICAhB1c2VyV2Vla1RpY2tldHNfBQRhZGRyAgFfCQCkAwEFBHdlZWsBE2tleVRvdGFsV2Vla1RpY2tldHMBBHdlZWsJAKwCAgIRdG90YWxXZWVrVGlja2V0c18JAKQDAQUEd2VlawEKd2lubmluZ0JldAEDZGF5CQBqAgkAsQkBCQEFdmFsdWUBCAkBBXZhbHVlAQkA7QcBCQBoAgUDZGF5BQpEQVlfQkxPQ0tTA3ZyZgAEAAppZHhUb3RhbEZQAAAACWlkeFVzZXJGUAABAAtpeFdsZ0Ftb3VudAAAAAhpeFdsZ1dsZwABAAppeFdsZ1ByaWNlAAIACml4V2xnRnVuZHMAAwANaXhXbGdBY3Rpdml0eQAEAAtpeFdsZ0FjcmVzMgAFAA5peFdsZ0FyYml0cmFnZQAGAAlpeFdsZ1Bvb2wABwAOaXhXbGdJc3N1ZVRpbWUACAAUaXhXbGdMYXN0VGVhbUFjdFRpbWUACQAOaXhXbGdUZWFtVG90YWwACgAPaXhXbGdUZWFtQW1MZWZ0AAsAE2l4V2xnVGVhbUFtQXZhaWxOb3cADAAPaXhXbGdUZWFtV2xnb2xkAA0ADWl4V2xnQWN0VG90YWwADgAOaXhXbGdBY3RBbUxlZnQADwASaXhXbGdBY3RBbUF2YWlsTm93ABAADml4V2xnQWN0V2xnb2xkABEADml4V2xnQ3VyUGVyaW9kABIAEGl4V2xnQW1MZWZ0VG90YWwAEwAaaXhXbGdDdXJQZXJpb2REaXN0cmlidXRpb24AFAARaXhXbGdMYXN0VXNlclRpbWUAFQAVaXhXbGdJbnZlc3RGdW5kQW1vdW50ABYAE2l4V2xnVXNlckFtQXZhaWxOb3cAFwAQaXhXbGdFZmZVc2VyVGltZQAYABJpeFdsZ0lzc3VlMTBBbW91bnQAGQAbaXhXbGdNYXJrZXRpbmdJc3N1ZTEwQW1vdW50ABoAFml4V2xnVGVhbUlzc3VlMTBBbW91bnQAGwAPaXhXbGdVc2VyMTBwYXJ0ABwAEGl4V2xnSXNzdWUxMFRpbWUAHQAWaXhXbGdUb3RhbEZhcm1pbmdQb3dlcgAeABVpeFdsZ0FjcmVzU3Rha2VkVG90YWwAHwEMZ2V0V2xnU3RhdHMyBAt1c2VyQWRkck9wdAljb250cmFjdHMGdXNkdElkFXVzZHRCYWxhbmNlQ29ycmVjdGlvbgQMaXNzdWVkQW1vdW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBQ93bGdJc3N1ZWRBbXRLZXkCGFdMR09MRCBpcyBub3QgaXNzdWVkIHlldAQHcmVzdFVzZAkA8AcCCQCRAwIFCWNvbnRyYWN0cwUJZGFwcDJSZXN0BQZ1c2R0SWQEBndsZ1VzZAkAZQIJAPAHAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBQZ1c2R0SWQFFXVzZHRCYWxhbmNlQ29ycmVjdGlvbgQJcHV6emxlVXNkCQDwBwIJAJEDAgUJY29udHJhY3RzBQtkYXBwMlB1enpsZQUGdXNkdElkBAlhY3JlczJVc2QJAPAHAgkAkQMCBQljb250cmFjdHMFDGRhcHAyU3Rha2luZwUGdXNkdElkBBFpbnZlc3RGbmRDb250cmFjdAkAkQMCBQljb250cmFjdHMFD2RhcHAySW52ZXN0RnVuZAQPaW52ZXN0RnVuZFRvdGFsCQBkAgkA8AcCBRFpbnZlc3RGbmRDb250cmFjdAUGdXNkdElkCQELdmFsdWVPckVsc2UCCQCaCAIFEWludmVzdEZuZENvbnRyYWN0BQ56Yklzc3VlZEFtdEtleQAABA10b3RhbEZ1bmRzVXNkCQBkAgkAZAIFCWFjcmVzMlVzZAUGd2xnVXNkBQ9pbnZlc3RGdW5kVG90YWwEBXdsZ0lkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJwIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnAgt3bGdfYXNzZXRJZAITTm90IGluaXRpYWxpemVkIHlldAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQJaXNzdWVUaW1lCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBQ53bGdJc3N1ZVRpbUtleQIPTm90IGluaXRpYWxpemVkBAZ3bGdXbGcJAPAHAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBQV3bGdJZAQJdGVhbVRvdGFsCQBrAwUMaXNzdWVkQW1vdW50BQpURUFNX1NIQVJFBQNNNl8EDnRlYW1BbW91bnRMZWZ0CQELdmFsdWVPckVsc2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQhkYXBwMldsZwUOdGVhbUFtdExlZnRLZXkFCXRlYW1Ub3RhbAQMbGFzdFRlYW1UaW1lCQELdmFsdWVPckVsc2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQhkYXBwMldsZwUObGFzdFRlYW1UaW1LZXkFCWlzc3VlVGltZQQIdGVhbUFkZHIJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQV2YWx1ZQEJAJ0IAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBQp0ZWFtQWRyS2V5BBZ0ZWFtQW1vdW50QXZhaWxhYmxlTm93CQCXAwEJAMwIAgkAawMFCXRlYW1Ub3RhbAkAZQIFA25vdwUMbGFzdFRlYW1UaW1lCQBoAgADBQtZRUFSX01JTExJUwkAzAgCBQ50ZWFtQW1vdW50TGVmdAUDbmlsBAp0ZWFtV2xnb2xkCQDwBwIFCHRlYW1BZGRyBQV3bGdJZAQIYWN0VG90YWwJAGsDBQxpc3N1ZWRBbW91bnQFDkFDVElWSVRZX1NIQVJFBQNNNl8EDWFjdEFtb3VudExlZnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBQ1hY3RBbXRMZWZ0S2V5BQhhY3RUb3RhbAQSbGFzdEFjdGl2aXRpZXNUaW1lCQELdmFsdWVPckVsc2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQhkYXBwMldsZwUUbGFzdEFjdGl2aXRpZXNUaW1LZXkFCWlzc3VlVGltZQQVYWN0QW1vdW50QXZhaWxhYmxlTm93CQCXAwEJAMwIAgkAawMFCGFjdFRvdGFsCQBlAgUDbm93BRJsYXN0QWN0aXZpdGllc1RpbWUJAGgCAAMFC1lFQVJfTUlMTElTCQDMCAIFDWFjdEFtb3VudExlZnQFA25pbAQJYWN0V2xnb2xkCQDwBwIJAJEDAgUJY29udHJhY3RzBQlkYXBwMlJlc3QFBXdsZ0lkBAxsYXN0VXNlclRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnCQEWa2V5TGFzdENsYWltVGltZUJ5VXNlcgEFC3VzZXJBZGRyT3B0BQlpc3N1ZVRpbWUEDmxhc3RVc2VyUGVyaW9kCQBpAgkAZQIFDGxhc3RVc2VyVGltZQUJaXNzdWVUaW1lBQtZRUFSX01JTExJUwQKbm93TGltaXRlZAkAlwMBCQDMCAIFA25vdwkAzAgCCQBkAgUJaXNzdWVUaW1lCQBoAgADBQtZRUFSX01JTExJUwUDbmlsBAljdXJQZXJpb2QJAJcDAQkAzAgCCQBpAgkAZQIFA25vdwUJaXNzdWVUaW1lBQtZRUFSX01JTExJUwkAzAgCAAIFA25pbAQDZWZmCQEQZ2V0RmFybWluZ1Bvd2VycwIFC3VzZXJBZGRyT3B0CQCRAwIFCWNvbnRyYWN0cwUMZGFwcDJTdGFraW5nBBVjdXJQZXJpb2REaXN0cmlidXRpb24JAQ1kaXN0ckJ5UGVyaW9kAgUMaXNzdWVkQW1vdW50BQljdXJQZXJpb2QEDXByZXZQZXJpb2RFbmQJAGQCBQlpc3N1ZVRpbWUJAGgCBQtZRUFSX01JTExJUwUJY3VyUGVyaW9kBBFwcmV2UHJldlBlcmlvZEVuZAkAZAIFCWlzc3VlVGltZQkAaAIFC1lFQVJfTUlMTElTCQBlAgUJY3VyUGVyaW9kAAEEAmEwCQBrAwUVY3VyUGVyaW9kRGlzdHJpYnV0aW9uCQBlAgUKbm93TGltaXRlZAUMbGFzdFVzZXJUaW1lBQtZRUFSX01JTExJUwQNdXNlckF2YWlsYWJsZQMJAAACBQ5sYXN0VXNlclBlcmlvZAUJY3VyUGVyaW9kBQJhMAMJAAACBQ5sYXN0VXNlclBlcmlvZAkAZQIFCWN1clBlcmlvZAABBAJhMQkAawMJAQ1kaXN0ckJ5UGVyaW9kAgUMaXNzdWVkQW1vdW50CQBlAgUJY3VyUGVyaW9kAAEJAGUCBQ1wcmV2UGVyaW9kRW5kBQxsYXN0VXNlclRpbWUFC1lFQVJfTUlMTElTCQBkAgUCYTEFAmEwBAJhMgkAawMJAQ1kaXN0ckJ5UGVyaW9kAgUMaXNzdWVkQW1vdW50CQBlAgUJY3VyUGVyaW9kAAIJAGUCBRFwcmV2UHJldlBlcmlvZEVuZAUMbGFzdFVzZXJUaW1lBQtZRUFSX01JTExJUwQCYTEJAQ1kaXN0ckJ5UGVyaW9kAgUMaXNzdWVkQW1vdW50CQBlAgUJY3VyUGVyaW9kAAEJAGQCCQBkAgUCYTIFAmExBQJhMAQPYW1vdW50TGVmdFRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQhkYXBwMldsZwURc3Rha2Vyc0FtdExlZnRLZXkAAAQKdXNlckFtb3VudAMJAQIhPQIJAJEDAgUDZWZmBQppZHhUb3RhbEZQAAAJAGsDBQ11c2VyQXZhaWxhYmxlCQCRAwIFA2VmZgUJaWR4VXNlckZQCQCRAwIFA2VmZgUKaWR4VG90YWxGUAAABA9sYXN0SXNzdWUxMFRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgkAkQMCBQljb250cmFjdHMFCGRhcHAyV2xnBRF3bGdJc3N1ZTEwVGltZUtleQURTkVXX1NUQUtJTkdfU1RBUlQEDWlzc3VlMTBBbW91bnQJAGsDBQdJU1NVRTEwCQCWAwEJAMwIAgkAZQIFA25vdwUPbGFzdElzc3VlMTBUaW1lCQDMCAIAAAUDbmlsBQZEQVlfTVMEFm1hcmtldGluZ0lzc3VlMTBBbW91bnQJAGsDBQ1pc3N1ZTEwQW1vdW50BRFNQVJLRVRJTkcxMF9TSEFSRQUDTTZfBBF0ZWFtSXNzdWUxMEFtb3VudAkAawMFDWlzc3VlMTBBbW91bnQFDFRFQU0xMF9TSEFSRQUDTTZfBA51c2VyMTBJbnRlcnZhbAkAlgMBCQDMCAIJAGUCBQNub3cJAJYDAQkAzAgCBRFORVdfU1RBS0lOR19TVEFSVAkAzAgCBQxsYXN0VXNlclRpbWUFA25pbAkAzAgCAAAFA25pbAQKdXNlcjEwcGFydAMJAQIhPQIJAJEDAgUDZWZmBQppZHhUb3RhbEZQAAAJAGsDCQBrAwkAawMFB0lTU1VFMTAFDnVzZXIxMEludGVydmFsBQZEQVlfTVMJAJEDAgUDZWZmBQlpZHhVc2VyRlAJAJEDAgUDZWZmBQppZHhUb3RhbEZQBQ9QTEFZRVJTMTBfU0hBUkUFA002XwAABA5uZXdJc3N1ZTEwVGltZQkAlgMBCQDMCAIFEU5FV19TVEFLSU5HX1NUQVJUCQDMCAIFA25vdwUDbmlsBBBhY3Jlc1N0YWtlZFRvdGFsCQELdmFsdWVPckVsc2UCCQCaCAIJAJEDAgUJY29udHJhY3RzBQxkYXBwMlN0YWtpbmcFEmFjcmVzU3Rha2RUb3RhbEtleQAACQDMCAIFDGlzc3VlZEFtb3VudAkAzAgCBQZ3bGdXbGcJAMwIAgkAawMFDXRvdGFsRnVuZHNVc2QFA004XwUMaXNzdWVkQW1vdW50CQDMCAIFDXRvdGFsRnVuZHNVc2QJAMwIAgUHcmVzdFVzZAkAzAgCBQlhY3JlczJVc2QJAMwIAgUGd2xnVXNkCQDMCAIFCXB1enpsZVVzZAkAzAgCBQlpc3N1ZVRpbWUJAMwIAgUMbGFzdFRlYW1UaW1lCQDMCAIFCXRlYW1Ub3RhbAkAzAgCBQ50ZWFtQW1vdW50TGVmdAkAzAgCBRZ0ZWFtQW1vdW50QXZhaWxhYmxlTm93CQDMCAIFCnRlYW1XbGdvbGQJAMwIAgUIYWN0VG90YWwJAMwIAgUNYWN0QW1vdW50TGVmdAkAzAgCBRVhY3RBbW91bnRBdmFpbGFibGVOb3cJAMwIAgUJYWN0V2xnb2xkCQDMCAIFCWN1clBlcmlvZAkAzAgCBQ9hbW91bnRMZWZ0VG90YWwJAMwIAgUVY3VyUGVyaW9kRGlzdHJpYnV0aW9uCQDMCAIFDGxhc3RVc2VyVGltZQkAzAgCBQ9pbnZlc3RGdW5kVG90YWwJAMwIAgUKdXNlckFtb3VudAkAzAgCBQpub3dMaW1pdGVkCQDMCAIFDWlzc3VlMTBBbW91bnQJAMwIAgUWbWFya2V0aW5nSXNzdWUxMEFtb3VudAkAzAgCBRF0ZWFtSXNzdWUxMEFtb3VudAkAzAgCBQp1c2VyMTBwYXJ0CQDMCAIFDm5ld0lzc3VlMTBUaW1lCQDMCAIJAJEDAgUDZWZmBQppZHhUb3RhbEZQCQDMCAIFEGFjcmVzU3Rha2VkVG90YWwFA25pbAEOd2FsbGV0SW50ZXJuYWwBDnVzZXJBZGRyZXNzT3B0BARhZGRyCQCmCAEFDnVzZXJBZGRyZXNzT3B0BAdiYWxhbmNlAwkBCWlzRGVmaW5lZAEFBGFkZHIJAO8HAQkBBXZhbHVlAQUEYWRkcgkBDkJhbGFuY2VEZXRhaWxzBAAAAAAAAAAABAt1c2R0QmFsYW5jZQMJAQlpc0RlZmluZWQBBQRhZGRyCQDwBwIJAQV2YWx1ZQEFBGFkZHIFC3VzZHRBc3NldElkAAAEDXdsZ29sZEJhbGFuY2UDCQEJaXNEZWZpbmVkAQUEYWRkcgkA8AcCCQEFdmFsdWUBBQRhZGRyBQp3bGdBc3NldElkAAAECmN1c3RvbU5hbWUJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUOYWNyZXMyQ29udHJhY3QJARZrZXlBZGRyZXNzVG9DdXN0b21OYW1lAQUOdXNlckFkZHJlc3NPcHQFDnVzZXJBZGRyZXNzT3B0BAhyZWZCeUtleQkBD2tleUFkZHJlc3NSZWZCeQEFDnVzZXJBZGRyZXNzT3B0BAVyZWZCeQkAnQgCBQ5hY3JlczJDb250cmFjdAUIcmVmQnlLZXkEBHJlZnMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUOYWNyZXMyQ29udHJhY3QJARNrZXlBZGRyZXNzUmVmZXJyYWxzAQUOdXNlckFkZHJlc3NPcHQCAAQIbGFzdFR4SWQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUOYWNyZXMyQ29udHJhY3QJARVrZXlMYXN0V2Vla1R4SWRCeVVzZXIBBQ51c2VyQWRkcmVzc09wdAIABAdjdXJUeElkCQELdmFsdWVPckVsc2UCCQCdCAIFDmFjcmVzMkNvbnRyYWN0CQEUa2V5Q3VyV2Vla1R4SWRCeVVzZXIBBQ51c2VyQWRkcmVzc09wdAIABAxhY3Jlc0JhbGFuY2UDCQEJaXNEZWZpbmVkAQUEYWRkcgkA8AcCCQEFdmFsdWUBBQRhZGRyBQxhY3Jlc0Fzc2V0SWQAAAQLc3Rha2VkQWNyZXMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUOYWNyZXMyQ29udHJhY3QJARdrZXlBY3Jlc1N0YWtlZEFtdEJ5VXNlcgEFDnVzZXJBZGRyZXNzT3B0AAAEA2x2bAkBD2dldExldmVsQnlBY3JlcwEFC3N0YWtlZEFjcmVzBAJmcAkBEGdldEZhcm1pbmdQb3dlcnMCBQ51c2VyQWRkcmVzc09wdAUOYWNyZXMyQ29udHJhY3QEDmFjcmVzVG9OZXh0THZsAwkAZwIFA2x2bAkAkAMBBQpsZXZlbEFjcmVzAAAJAGUCCQBkAgkAaAIJAJEDAgUKbGV2ZWxBY3JlcwUDbHZsBQNNOF8AAQULc3Rha2VkQWNyZXMJAMwIAgkArAICAhIlcyVzX19jdXN0b21OYW1lX18FCmN1c3RvbU5hbWUJAMwIAgkArAICAhIlcyVzX19yZWZlcnJlZEJ5X18JAQt2YWx1ZU9yRWxzZQIFBXJlZkJ5AgAJAMwIAgkArAICAhElcyVzX19yZWZlcnJhbHNfXwUEcmVmcwkAzAgCCQCsAgICFCVzJXNfX2xhc3RXZWVrVHhJZF9fBQhsYXN0VHhJZAkAzAgCCQCsAgICEyVzJXNfX2N1cldlZWtUeElkX18FCGxhc3RUeElkCQDMCAIJAKwCAgIUJXMlZF9fd2F2ZXNCYWxhbmNlX18JAKQDAQgFB2JhbGFuY2UJYXZhaWxhYmxlCQDMCAIJAKwCAgITJXMlZF9fdXNkdEJhbGFuY2VfXwkApAMBBQt1c2R0QmFsYW5jZQkAzAgCCQCsAgICFSVzJWRfX3dsZ29sZEJhbGFuY2VfXwkApAMBBQ13bGdvbGRCYWxhbmNlCQDMCAIJAKwCAgIUJXMlZF9fYWNyZXNCYWxhbmNlX18JAKQDAQUMYWNyZXNCYWxhbmNlCQDMCAIJAKwCAgITJXMlZF9fc3Rha2VkQWNyZXNfXwkApAMBBQtzdGFrZWRBY3JlcwkAzAgCCQCsAgICEiVzJWRfX2N1cnJlbnRMdmxfXwkApAMBBQNsdmwJAMwIAgkArAICAhYlcyVkX19hY3Jlc1RvTmV4dEx2bF9fCQCkAwEFDmFjcmVzVG9OZXh0THZsCQDMCAIJAKwCAgIYJXMlZF9fdXNlckZhcm1pbmdQb3dlcl9fCQCkAwEJAJEDAgUCZnAFCWlkeFVzZXJGUAkAzAgCCQCsAgICGSVzJWRfX3RvdGFsRmFybWluZ1Bvd2VyX18JAKQDAQkAkQMCBQJmcAUKaWR4VG90YWxGUAUDbmlsBQFpAQ1jb25zdHJ1Y3RvclYxAQljb250cmFjdHMDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQKAQpkZXNjcmlwdG9yAgNhY2MLaWdub3JlZEl0ZW0JAKwCAgUDYWNjAgIlcwQFZGVzY3IKAAIkbAUJY29udHJhY3RzCgACJHMJAJADAQUCJGwKAAUkYWNjMAIACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpkZXNjcmlwdG9yAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQprZXlSZXN0Q2ZnAAkAuQkCCQDMCAIFBWRlc2NyBQljb250cmFjdHMFA1NFUAkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5UmVzdDJBZGRyZXNzAAkApQgBBQR0aGlzBQNuaWwBaQESd2FsbGV0SW5mb1JFQURPTkxZAQ51c2VyQWRkcmVzc09wdAkAlAoCBQNuaWwJAQ53YWxsZXRJbnRlcm5hbAEFDnVzZXJBZGRyZXNzT3B0AWkBFmNvbnZlcnNpb25JbmZvUkVBRE9OTFkBDnVzZXJBZGRyZXNzT3B0BA9vbGRBY3Jlc0FkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFDmFjcmVzMkNvbnRyYWN0BRNvbGRBY3Jlc0NvbnRyYWN0S2V5BAskdDA0Njg5NDgxMQkBDGFzVHVwbGUySW50cwEJAPwHBAUPb2xkQWNyZXNBZGRyZXNzAhd1bnN0YWtlQWxsQWNyZXNSRUFET05MWQkAzAgCBQ51c2VyQWRkcmVzc09wdAUDbmlsBQNuaWwEDXVuc3Rha2VkQWNyZXMIBQskdDA0Njg5NDgxMQJfMQQMY2xhaW1lZEFjcmVzCAULJHQwNDY4OTQ4MTECXzIECyR0MDQ4MTQ0OTYzCQEMYXNUdXBsZTRJbnRzAQkA/AcEBQ5hY3JlczJDb250cmFjdAIUdW5zdGFrZUxhbmRzUkVBRE9OTFkJAMwIAgUOdXNlckFkZHJlc3NPcHQFA25pbAUDbmlsBA9hY3Jlc0Zyb21QaWVjZXMIBQskdDA0ODE0NDk2MwJfMQQMYWNyZXNGcm9tUmVzCAULJHQwNDgxNDQ5NjMCXzIEDGFjcmVzRnJvbU1hdAgFCyR0MDQ4MTQ0OTYzAl8zBA1hY3Jlc0Zyb21Qcm9kCAULJHQwNDgxNDQ5NjMCXzQEEW9sZFN0YWtpbmdBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBBRVvbGRTdGFraW5nQ29udHJhY3RTdHIEC2R1Y2tBc3NldElkCQELdmFsdWVPckVsc2UCCQCdCAIFEW9sZFN0YWtpbmdBZGRyZXNzCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQ51c2VyQWRkcmVzc09wdAIABAskdDA1MTQxNTM2MwMJAQIhPQIFC2R1Y2tBc3NldElkAgAJAQxhc1R1cGxlM0ludHMBCQD8BwQFEW9sZFN0YWtpbmdBZGRyZXNzAhN1bnN0YWtlRHVja1JFQURPTkxZCQDMCAIFC2R1Y2tBc3NldElkCQDMCAIFDnVzZXJBZGRyZXNzT3B0BQNuaWwFA25pbAkAlQoDAAAAAAAABBBhY3Jlc0Zyb21EdWNrUmVzCAULJHQwNTE0MTUzNjMCXzEEEGFjcmVzRnJvbUR1Y2tNYXQIBQskdDA1MTQxNTM2MwJfMgQRYWNyZXNGcm9tRHVja1Byb2QIBQskdDA1MTQxNTM2MwJfMwkAlAoCBQNuaWwJAMwIAgkArAICAhUlcyVkX191bnN0YWtlZEFjcmVzX18JAKQDAQUNdW5zdGFrZWRBY3JlcwkAzAgCCQCsAgICFCVzJWRfX2NsYWltZWRBY3Jlc19fCQCkAwEFDGNsYWltZWRBY3JlcwkAzAgCCQCsAgICFyVzJWRfX2FjcmVzRnJvbVBpZWNlc19fCQCkAwEFD2FjcmVzRnJvbVBpZWNlcwkAzAgCCQCsAgICFCVzJWRfX2FjcmVzRnJvbVJlc19fCQCkAwEFDGFjcmVzRnJvbVJlcwkAzAgCCQCsAgICFCVzJWRfX2FjcmVzRnJvbU1hdF9fCQCkAwEFDGFjcmVzRnJvbU1hdAkAzAgCCQCsAgICFSVzJWRfX2FjcmVzRnJvbVByb2RfXwkApAMBBQ1hY3Jlc0Zyb21Qcm9kCQDMCAIJAKwCAgIYJXMlZF9fYWNyZXNGcm9tRHVja1Jlc19fCQCkAwEFEGFjcmVzRnJvbUR1Y2tSZXMJAMwIAgkArAICAhglcyVkX19hY3Jlc0Zyb21EdWNrTWF0X18JAKQDAQUQYWNyZXNGcm9tRHVja01hdAkAzAgCCQCsAgICGSVzJWRfX2FjcmVzRnJvbUR1Y2tQcm9kX18JAKQDAQURYWNyZXNGcm9tRHVja1Byb2QFA25pbAFpARB3bGdTdGF0c1JFQURPTkxZAQt1c2VyQWRkck9wdAQIY3VyU3RhdHMJAQxnZXRXbGdTdGF0czIEBQt1c2VyQWRkck9wdAkAzAgCBQ1yZXN0MkNvbnRyYWN0CQDMCAIFDmFjcmVzMkNvbnRyYWN0CQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFEnB1enpsZVBvb2xDb250cmFjdAkAzAgCBRJpbnZlc3RGdW5kQ29udHJhY3QFA25pbAULdXNkdEFzc2V0SWQAAAkAlAoCBQNuaWwJAMwIAgkArAICAhElcyVkX193bGdBbW91bnRfXwkApAMBCQCRAwIFCGN1clN0YXRzBQtpeFdsZ0Ftb3VudAkAzAgCCQCsAgICDiVzJWRfX3dsZ1dsZ19fCQCkAwEJAJEDAgUIY3VyU3RhdHMFCGl4V2xnV2xnCQDMCAIJAKwCAgIQJXMlZF9fd2xnUHJpY2VfXwkApAMBCQCRAwIFCGN1clN0YXRzBQppeFdsZ1ByaWNlCQDMCAIJAKwCAgIRJXMlZF9fdXNkdEZ1bmRzX18JAKQDAQkAkQMCBQhjdXJTdGF0cwUKaXhXbGdGdW5kcwkAzAgCCQCsAgICFCVzJWRfX3VzZHRBY3Rpdml0eV9fCQCkAwEJAJEDAgUIY3VyU3RhdHMFDWl4V2xnQWN0aXZpdHkJAMwIAgkArAICAhMlcyVkX191c2R0U3Rha2luZ19fCQCkAwEJAJEDAgUIY3VyU3RhdHMFC2l4V2xnQWNyZXMyCQDMCAIJAKwCAgIVJXMlZF9fdXNkdEFyYml0cmFnZV9fCQCkAwEJAJEDAgUIY3VyU3RhdHMFDml4V2xnQXJiaXRyYWdlCQDMCAIJAKwCAgIQJXMlZF9fdXNkdFBvb2xfXwkApAMBCQCRAwIFCGN1clN0YXRzBQlpeFdsZ1Bvb2wJAMwIAgkArAICAhQlcyVkX193bGdJc3N1ZVRpbWVfXwkApAMBCQCRAwIFCGN1clN0YXRzBQ5peFdsZ0lzc3VlVGltZQkAzAgCCQCsAgICGiVzJWRfX3dsZ0xhc3RUZWFtQWN0VGltZV9fCQCkAwEJAJEDAgUIY3VyU3RhdHMFFGl4V2xnTGFzdFRlYW1BY3RUaW1lCQDMCAIJAKwCAgIUJXMlZF9fd2xnVGVhbVRvdGFsX18JAKQDAQkAkQMCBQhjdXJTdGF0cwUOaXhXbGdUZWFtVG90YWwJAMwIAgkArAICAhUlcyVkX193bGdUZWFtQW1MZWZ0X18JAKQDAQkAkQMCBQhjdXJTdGF0cwUPaXhXbGdUZWFtQW1MZWZ0CQDMCAIJAKwCAgIZJXMlZF9fd2xnVGVhbUFtQXZhaWxOb3dfXwkApAMBCQCRAwIFCGN1clN0YXRzBRNpeFdsZ1RlYW1BbUF2YWlsTm93CQDMCAIJAKwCAgIVJXMlZF9fd2xnVGVhbVdsZ29sZF9fCQCkAwEJAJEDAgUIY3VyU3RhdHMFD2l4V2xnVGVhbVdsZ29sZAkAzAgCCQCsAgICEyVzJWRfX3dsZ0FjdFRvdGFsX18JAKQDAQkAkQMCBQhjdXJTdGF0cwUNaXhXbGdBY3RUb3RhbAkAzAgCCQCsAgICFCVzJWRfX3dsZ0FjdEFtTGVmdF9fCQCkAwEJAJEDAgUIY3VyU3RhdHMFDml4V2xnQWN0QW1MZWZ0CQDMCAIJAKwCAgIYJXMlZF9fd2xnQWN0QW1BdmFpbE5vd19fCQCkAwEJAJEDAgUIY3VyU3RhdHMFEml4V2xnQWN0QW1BdmFpbE5vdwkAzAgCCQCsAgICFCVzJWRfX3dsZ0FjdFdsZ29sZF9fCQCkAwEJAJEDAgUIY3VyU3RhdHMFDml4V2xnQWN0V2xnb2xkCQDMCAIJAKwCAgIUJXMlZF9fd2xnQ3VyUGVyaW9kX18JAKQDAQkAkQMCBQhjdXJTdGF0cwUOaXhXbGdDdXJQZXJpb2QJAMwIAgkArAICAhYlcyVkX193bGdBbUxlZnRUb3RhbF9fCQCkAwEJAJEDAgUIY3VyU3RhdHMFEGl4V2xnQW1MZWZ0VG90YWwJAMwIAgkArAICAiAlcyVkX193bGdDdXJQZXJpb2REaXN0cmlidXRpb25fXwkApAMBCQCRAwIFCGN1clN0YXRzBRppeFdsZ0N1clBlcmlvZERpc3RyaWJ1dGlvbgkAzAgCCQCsAgICFyVzJWRfX3dsZ0xhc3RVc2VyVGltZV9fCQCkAwEJAJEDAgUIY3VyU3RhdHMFEWl4V2xnTGFzdFVzZXJUaW1lCQDMCAIJAKwCAgIaJXMlZF9fd2xnSW52ZXN0RnVuZFRvdGFsX18JAKQDAQkAkQMCBQhjdXJTdGF0cwUVaXhXbGdJbnZlc3RGdW5kQW1vdW50CQDMCAIJAKwCAgIZJXMlZF9fd2xnVXNlckFtQXZhaWxOb3dfXwkApAMBCQCRAwIFCGN1clN0YXRzBRNpeFdsZ1VzZXJBbUF2YWlsTm93CQDMCAIJAKwCAgIWJXMlZF9fd2xnRWZmVXNlclRpbWVfXwkApAMBCQCRAwIFCGN1clN0YXRzBRBpeFdsZ0VmZlVzZXJUaW1lCQDMCAIJAKwCAgIaJXMlZF9fd2xnSXNzdWUxMEF2YWlsTm93X18JAKQDAQkAkQMCBQhjdXJTdGF0cwUSaXhXbGdJc3N1ZTEwQW1vdW50CQDMCAIJAKwCAgIjJXMlZF9fd2xnTWFya2V0aW5nSXNzdWUxMEF2YWlsTm93X18JAKQDAQkAkQMCBQhjdXJTdGF0cwUbaXhXbGdNYXJrZXRpbmdJc3N1ZTEwQW1vdW50CQDMCAIJAKwCAgIeJXMlZF9fd2xnVGVhbUlzc3VlMTBBdmFpbE5vd19fCQCkAwEJAJEDAgUIY3VyU3RhdHMFFml4V2xnVGVhbUlzc3VlMTBBbW91bnQJAMwIAgkArAICAh4lcyVkX193bGdVc2VySXNzdWUxMEF2YWlsTm93X18JAKQDAQkAkQMCBQhjdXJTdGF0cwUPaXhXbGdVc2VyMTBwYXJ0CQDMCAIJAKwCAgIaJXMlZF9fd2xnTGFzdElzc3VlMTBUaW1lX18JAKQDAQkAkQMCBQhjdXJTdGF0cwUQaXhXbGdJc3N1ZTEwVGltZQkAzAgCCQCsAgICHCVzJWRfX3dsZ1RvdGFsRmFybWluZ1Bvd2VyX18JAKQDAQkAkQMCBQhjdXJTdGF0cwUWaXhXbGdUb3RhbEZhcm1pbmdQb3dlcgkAzAgCCQCsAgICGyVzJWRfX3dsZ0FjcmVzU3Rha2VkVG90YWxfXwkApAMBCQCRAwIFCGN1clN0YXRzBRVpeFdsZ0FjcmVzU3Rha2VkVG90YWwFA25pbAFpARRsb3R0ZXJ5U3RhdHNSRUFET05MWQELdXNlckFkZHJPcHQEBXRvZGF5CQBpAgUGaGVpZ2h0BQpEQVlfQkxPQ0tTBAR3ZWVrCQBpAgUGaGVpZ2h0BQtXRUVLX0JMT0NLUwQIbGFzdFdlZWsJAGUCBQR3ZWVrAAEEDmN1cldlZWtUaWNrZXRzCQELdmFsdWVPckVsc2UCCQCaCAIFC3dsZ0NvbnRyYWN0CQESa2V5VXNlcldlZWtUaWNrZXRzAgULdXNlckFkZHJPcHQFBHdlZWsAAAQPbGFzdFdlZWtUaWNrZXRzCQELdmFsdWVPckVsc2UCCQCaCAIFC3dsZ0NvbnRyYWN0CQESa2V5VXNlcldlZWtUaWNrZXRzAgULdXNlckFkZHJPcHQFCGxhc3RXZWVrAAAEE2N1cldlZWtUb3RhbFRpY2tldHMJAQt2YWx1ZU9yRWxzZQIJAJoIAgULd2xnQ29udHJhY3QJARNrZXlUb3RhbFdlZWtUaWNrZXRzAQUEd2VlawAABBRsYXN0V2Vla1RvdGFsVGlja2V0cwkBC3ZhbHVlT3JFbHNlAgkAmggCBQt3bGdDb250cmFjdAkBE2tleVRvdGFsV2Vla1RpY2tldHMBBQhsYXN0V2VlawAABAh1c2Vyc0JldAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQt3bGdDb250cmFjdAkBCmtleVVzZXJCZXQBBQt1c2VyQWRkck9wdAIACQCUCgIFA25pbAkAzAgCCQCsAgIJAKwCAgkArAICAhYlcyVkJWRfX3RvdGFsVGlja2V0c19fCQCkAwEFFGxhc3RXZWVrVG90YWxUaWNrZXRzBQNTRVAJAKQDAQUTY3VyV2Vla1RvdGFsVGlja2V0cwkAzAgCCQCsAgIJAKwCAgkArAICAhUlcyVkJWRfX3VzZXJUaWNrZXRzX18JAKQDAQUPbGFzdFdlZWtUaWNrZXRzBQNTRVAJAKQDAQUOY3VyV2Vla1RpY2tldHMJAMwIAgkArAICAhUlcyVkX19ibG9ja2NoYWluRGF5X18JAKQDAQUFdG9kYXkJAMwIAgkArAICAhglcyVkX19ibG9ja2NoYWluTWludXRlX18JAKQDAQkAagIFBmhlaWdodAUKREFZX0JMT0NLUwkAzAgCCQCsAgICFyVzJWRfX3dpbm5pbmdCZXRUb2RheV9fCQCkAwEJAQp3aW5uaW5nQmV0AQUFdG9kYXkJAMwIAgkArAICAhAlcyVzX191c2Vyc0JldF9fBQh1c2Vyc0JldAUDbmlsAELjFRg=", "height": 3382760, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4Xuev4osTbDLAUXdFMuN5RQfS23r7dn2e9A13ooB2HW3 Next: AvCjaHJGtztMiGkai6bR623nehv9xKK7F26ns1zJCoWa Diff:
Old | New | Differences | |
---|---|---|---|
69 | 69 | ||
70 | 70 | let z = "oldAcresContract" | |
71 | 71 | ||
72 | - | func A (B) = (" | |
72 | + | func A (B) = ("lastWeekTxIdByUser_" + B) | |
73 | 73 | ||
74 | 74 | ||
75 | - | let C = "wlg_assetId" | |
76 | - | ||
77 | - | let D = valueOrErrorMessage(getBinary(w, C), "WLGOLD is not issued yet") | |
78 | - | ||
79 | - | let E = "acresAssetId" | |
80 | - | ||
81 | - | let F = valueOrErrorMessage(getBinary(v, E), "ACRES is not issued yet") | |
82 | - | ||
83 | - | func G (H) = ("stakedDuckByOwner_" + H) | |
75 | + | func C (B) = ("curWeekTxIdByUser_" + B) | |
84 | 76 | ||
85 | 77 | ||
86 | - | func I (B) = ("accountCustomNameByAddr_" + B) | |
78 | + | let D = "wlg_assetId" | |
79 | + | ||
80 | + | let E = valueOrErrorMessage(getBinary(w, D), "WLGOLD is not issued yet") | |
81 | + | ||
82 | + | let F = "acresAssetId" | |
83 | + | ||
84 | + | let G = valueOrErrorMessage(getBinary(v, F), "ACRES is not issued yet") | |
85 | + | ||
86 | + | func H (I) = ("stakedDuckByOwner_" + I) | |
87 | 87 | ||
88 | 88 | ||
89 | - | func J (B) = (" | |
89 | + | func J (B) = ("accountCustomNameByAddr_" + B) | |
90 | 90 | ||
91 | 91 | ||
92 | - | func K (B) = (" | |
92 | + | func K (B) = ("accRefBy_" + B) | |
93 | 93 | ||
94 | 94 | ||
95 | - | func L (M) = { | |
96 | - | let d = M | |
95 | + | func L (B) = ("accReferrals_" + B) | |
96 | + | ||
97 | + | ||
98 | + | func M (N) = { | |
99 | + | let d = N | |
97 | 100 | if ($isInstanceOf(d, "(Int, Int, Int, Int)")) | |
98 | 101 | then { | |
99 | - | let | |
100 | - | | |
102 | + | let O = d | |
103 | + | O | |
101 | 104 | } | |
102 | 105 | else throw("fail to cast into (Int, Int, Int, Int)") | |
103 | 106 | } | |
104 | 107 | ||
105 | 108 | ||
106 | - | func | |
107 | - | let d = | |
109 | + | func P (N) = { | |
110 | + | let d = N | |
108 | 111 | if ($isInstanceOf(d, "(Int, Int, Int)")) | |
109 | 112 | then { | |
110 | - | let | |
111 | - | | |
113 | + | let O = d | |
114 | + | O | |
112 | 115 | } | |
113 | 116 | else throw("fail to cast into (Int, Int, Int)") | |
114 | 117 | } | |
115 | 118 | ||
116 | 119 | ||
117 | - | func | |
118 | - | let d = | |
120 | + | func Q (N) = { | |
121 | + | let d = N | |
119 | 122 | if ($isInstanceOf(d, "(Int, Int)")) | |
120 | 123 | then { | |
121 | - | let | |
122 | - | | |
124 | + | let O = d | |
125 | + | O | |
123 | 126 | } | |
124 | 127 | else throw("fail to cast into (Int, Int)") | |
125 | 128 | } | |
126 | 129 | ||
127 | 130 | ||
128 | - | let | |
131 | + | let R = 1000000 | |
129 | 132 | ||
130 | - | let | |
133 | + | let S = 100000000 | |
131 | 134 | ||
132 | - | let | |
135 | + | let T = 200000 | |
133 | 136 | ||
134 | - | let | |
137 | + | let U = 100000 | |
135 | 138 | ||
136 | - | let | |
139 | + | let V = 400000 | |
137 | 140 | ||
138 | - | let | |
141 | + | let W = 31557600000 | |
139 | 142 | ||
140 | - | let | |
143 | + | let X = 86400000 | |
141 | 144 | ||
142 | - | let | |
145 | + | let Y = 1440 | |
143 | 146 | ||
144 | - | let | |
147 | + | let Z = 10080 | |
145 | 148 | ||
146 | - | let | |
149 | + | let aa = 1000000000 | |
147 | 150 | ||
148 | - | let | |
151 | + | let ab = 800000 | |
149 | 152 | ||
150 | - | let | |
153 | + | let ac = 100000 | |
151 | 154 | ||
152 | - | let | |
155 | + | let ad = 100000 | |
153 | 156 | ||
154 | - | let | |
157 | + | let ae = 1731279600000 | |
155 | 158 | ||
156 | - | let | |
159 | + | let af = "teamAddr" | |
157 | 160 | ||
158 | - | let | |
161 | + | let ag = "lastClaimedTime_team" | |
159 | 162 | ||
160 | - | let | |
163 | + | let ah = "teamAmountLeft" | |
161 | 164 | ||
162 | - | let | |
165 | + | let ai = "lastClaimedTime_activities" | |
163 | 166 | ||
164 | - | let | |
167 | + | let aj = "activitiesAmountLeft" | |
165 | 168 | ||
166 | - | func aj (B) = ("lastClaimedTimeUser_" + B) | |
169 | + | let ak = "stakersAmountLeft" | |
170 | + | ||
171 | + | func al (B) = ("lastClaimedTimeUser_" + B) | |
167 | 172 | ||
168 | 173 | ||
169 | - | func | |
174 | + | func am (an,ao) = fraction(an, (V * (ao + 1)), (6 * R)) | |
170 | 175 | ||
171 | 176 | ||
172 | - | let | |
177 | + | let ap = "wlg_issue10Time" | |
173 | 178 | ||
174 | - | let | |
179 | + | let aq = "wlg_issueTime" | |
175 | 180 | ||
176 | - | let | |
181 | + | let ar = "wlg_issuedAmount" | |
177 | 182 | ||
178 | - | let | |
183 | + | let as = "zbill_issuedAmount" | |
179 | 184 | ||
180 | - | func | |
185 | + | func at (B) = ("acresStakedAmountByUser_" + B) | |
181 | 186 | ||
182 | 187 | ||
183 | - | let | |
188 | + | let au = "acresStakedAmountTotal" | |
184 | 189 | ||
185 | - | let | |
190 | + | let av = "totalFarmingPower" | |
186 | 191 | ||
187 | - | let | |
192 | + | let aw = 0 | |
188 | 193 | ||
189 | - | let | |
194 | + | let ax = 1 | |
190 | 195 | ||
191 | - | let | |
196 | + | let ay = 2 | |
192 | 197 | ||
193 | - | let | |
198 | + | let az = 3 | |
194 | 199 | ||
195 | - | let | |
200 | + | let aA = 4 | |
196 | 201 | ||
197 | - | let | |
202 | + | let aB = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000] | |
198 | 203 | ||
199 | - | func | |
200 | - | let | |
201 | - | func | |
202 | - | then | |
203 | - | else ( | |
204 | + | func aC (aD) = { | |
205 | + | let aE = ((aD + 99999999) / S) | |
206 | + | func aF (aG,aH) = if ((aH >= aE)) | |
207 | + | then aG | |
208 | + | else (aG + 1) | |
204 | 209 | ||
205 | - | let | |
206 | - | let | |
207 | - | let | |
208 | - | func | |
209 | - | then | |
210 | - | else | |
210 | + | let aI = aB | |
211 | + | let aJ = size(aI) | |
212 | + | let aK = 0 | |
213 | + | func aL (aM,aN) = if ((aN >= aJ)) | |
214 | + | then aM | |
215 | + | else aF(aM, aI[aN]) | |
211 | 216 | ||
212 | - | func | |
213 | - | then | |
217 | + | func aO (aM,aN) = if ((aN >= aJ)) | |
218 | + | then aM | |
214 | 219 | else throw("List size exceeds 10") | |
215 | 220 | ||
216 | - | | |
221 | + | aO(aL(aL(aL(aL(aL(aL(aL(aL(aL(aL(aK, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
217 | 222 | } | |
218 | 223 | ||
219 | 224 | ||
220 | - | func | |
225 | + | func aP (aD) = ((aD * 20) * (aC(aD) + 4)) | |
221 | 226 | ||
222 | 227 | ||
223 | - | func | |
224 | - | let | |
225 | - | let | |
226 | - | let | |
227 | - | [ | |
228 | + | func aQ (aR,v) = { | |
229 | + | let aS = valueOrElse(getInteger(v, av), 0) | |
230 | + | let aT = valueOrElse(getInteger(v, at(aR)), 0) | |
231 | + | let aU = aP(aT) | |
232 | + | [aS, aU] | |
228 | 233 | } | |
229 | 234 | ||
230 | 235 | ||
231 | - | func | |
236 | + | func aV (B) = ("userBet_" + B) | |
232 | 237 | ||
233 | 238 | ||
234 | - | func | |
239 | + | func aW (B,aX) = ((("userWeekTickets_" + B) + "_") + toString(aX)) | |
235 | 240 | ||
236 | 241 | ||
237 | - | let aV = "totalTickets" | |
238 | - | ||
239 | - | func aW (aX) = (toInt(value(value(blockInfoByHeight((aX * X))).vrf)) % 4) | |
242 | + | func aY (aX) = ("totalWeekTickets_" + toString(aX)) | |
240 | 243 | ||
241 | 244 | ||
242 | - | ||
245 | + | func aZ (ba) = (toInt(value(value(blockInfoByHeight((ba * Y))).vrf)) % 4) | |
243 | 246 | ||
244 | - | let aZ = 1 | |
245 | 247 | ||
246 | - | let | |
248 | + | let bb = 0 | |
247 | 249 | ||
248 | - | let | |
250 | + | let bc = 1 | |
249 | 251 | ||
250 | - | let | |
252 | + | let bd = 0 | |
251 | 253 | ||
252 | - | let | |
254 | + | let be = 1 | |
253 | 255 | ||
254 | - | let | |
256 | + | let bf = 2 | |
255 | 257 | ||
256 | - | let | |
258 | + | let bg = 3 | |
257 | 259 | ||
258 | - | let | |
260 | + | let bh = 4 | |
259 | 261 | ||
260 | - | let | |
262 | + | let bi = 5 | |
261 | 263 | ||
262 | - | let | |
264 | + | let bj = 6 | |
263 | 265 | ||
264 | - | let | |
266 | + | let bk = 7 | |
265 | 267 | ||
266 | - | let | |
268 | + | let bl = 8 | |
267 | 269 | ||
268 | - | let | |
270 | + | let bm = 9 | |
269 | 271 | ||
270 | - | let | |
272 | + | let bn = 10 | |
271 | 273 | ||
272 | - | let | |
274 | + | let bo = 11 | |
273 | 275 | ||
274 | - | let | |
276 | + | let bp = 12 | |
275 | 277 | ||
276 | - | let | |
278 | + | let bq = 13 | |
277 | 279 | ||
278 | - | let | |
280 | + | let br = 14 | |
279 | 281 | ||
280 | - | let | |
282 | + | let bs = 15 | |
281 | 283 | ||
282 | - | let | |
284 | + | let bt = 16 | |
283 | 285 | ||
284 | - | let | |
286 | + | let bu = 17 | |
285 | 287 | ||
286 | - | let | |
288 | + | let bv = 18 | |
287 | 289 | ||
288 | - | let | |
290 | + | let bw = 19 | |
289 | 291 | ||
290 | - | let | |
292 | + | let bx = 20 | |
291 | 293 | ||
292 | - | let | |
294 | + | let by = 21 | |
293 | 295 | ||
294 | - | let | |
296 | + | let bz = 22 | |
295 | 297 | ||
296 | - | let | |
298 | + | let bA = 23 | |
297 | 299 | ||
298 | - | let | |
300 | + | let bB = 24 | |
299 | 301 | ||
300 | - | let | |
302 | + | let bC = 25 | |
301 | 303 | ||
302 | - | let | |
304 | + | let bD = 26 | |
303 | 305 | ||
304 | - | let | |
306 | + | let bE = 27 | |
305 | 307 | ||
306 | - | let | |
308 | + | let bF = 28 | |
307 | 309 | ||
308 | - | let | |
310 | + | let bG = 29 | |
309 | 311 | ||
310 | - | func bG (bH,bI,bJ,bK) = { | |
311 | - | let al = valueOrErrorMessage(getInteger(bI[aw], ap), "WLGOLD is not issued yet") | |
312 | - | let bL = assetBalance(bI[au], bJ) | |
313 | - | let bM = (assetBalance(bI[aw], bJ) - bK) | |
314 | - | let bN = assetBalance(bI[ax], bJ) | |
315 | - | let bO = assetBalance(bI[av], bJ) | |
316 | - | let bP = bI[ay] | |
317 | - | let bQ = (assetBalance(bP, bJ) + valueOrElse(getInteger(bP, aq), 0)) | |
318 | - | let bR = ((bO + bM) + bQ) | |
319 | - | let bS = valueOrErrorMessage(getBinary(bI[aw], "wlg_assetId"), "Not initialized yet") | |
320 | - | let bT = lastBlock.timestamp | |
321 | - | let bU = valueOrErrorMessage(getInteger(bI[aw], ao), "Not initialized") | |
322 | - | let bV = assetBalance(bI[aw], bS) | |
323 | - | let bW = fraction(al, S, Q) | |
324 | - | let bX = valueOrElse(getInteger(bI[aw], af), bW) | |
325 | - | let bY = valueOrElse(getInteger(bI[aw], ae), bU) | |
326 | - | let bZ = addressFromStringValue(value(getString(bI[aw], ad))) | |
327 | - | let ca = min([fraction(bW, (bT - bY), (3 * V)), bX]) | |
328 | - | let cb = assetBalance(bZ, bS) | |
329 | - | let cc = fraction(al, T, Q) | |
330 | - | let cd = valueOrElse(getInteger(bI[aw], ah), cc) | |
331 | - | let ce = valueOrElse(getInteger(bI[aw], ag), bU) | |
332 | - | let cf = min([fraction(cc, (bT - ce), (3 * V)), cd]) | |
333 | - | let cg = assetBalance(bI[au], bS) | |
334 | - | let ch = valueOrElse(getInteger(bI[aw], aj(bH)), bU) | |
335 | - | let ci = ((ch - bU) / V) | |
336 | - | let cj = min([bT, (bU + (3 * V))]) | |
337 | - | let ck = min([((bT - bU) / V), 2]) | |
338 | - | let cl = aO(bH, bI[av]) | |
339 | - | let cm = ak(al, ck) | |
340 | - | let cn = (bU + (V * ck)) | |
341 | - | let co = (bU + (V * (ck - 1))) | |
342 | - | let cp = fraction(cm, (cj - ch), V) | |
343 | - | let cq = if ((ci == ck)) | |
344 | - | then cp | |
345 | - | else if ((ci == (ck - 1))) | |
312 | + | let bH = 30 | |
313 | + | ||
314 | + | let bI = 31 | |
315 | + | ||
316 | + | func bJ (bK,bL,bM,bN) = { | |
317 | + | let an = valueOrErrorMessage(getInteger(bL[ay], ar), "WLGOLD is not issued yet") | |
318 | + | let bO = assetBalance(bL[aw], bM) | |
319 | + | let bP = (assetBalance(bL[ay], bM) - bN) | |
320 | + | let bQ = assetBalance(bL[az], bM) | |
321 | + | let bR = assetBalance(bL[ax], bM) | |
322 | + | let bS = bL[aA] | |
323 | + | let bT = (assetBalance(bS, bM) + valueOrElse(getInteger(bS, as), 0)) | |
324 | + | let bU = ((bR + bP) + bT) | |
325 | + | let bV = valueOrErrorMessage(getBinary(bL[ay], "wlg_assetId"), "Not initialized yet") | |
326 | + | let bW = lastBlock.timestamp | |
327 | + | let bX = valueOrErrorMessage(getInteger(bL[ay], aq), "Not initialized") | |
328 | + | let bY = assetBalance(bL[ay], bV) | |
329 | + | let bZ = fraction(an, T, R) | |
330 | + | let ca = valueOrElse(getInteger(bL[ay], ah), bZ) | |
331 | + | let cb = valueOrElse(getInteger(bL[ay], ag), bX) | |
332 | + | let cc = addressFromStringValue(value(getString(bL[ay], af))) | |
333 | + | let cd = min([fraction(bZ, (bW - cb), (3 * W)), ca]) | |
334 | + | let ce = assetBalance(cc, bV) | |
335 | + | let cf = fraction(an, U, R) | |
336 | + | let cg = valueOrElse(getInteger(bL[ay], aj), cf) | |
337 | + | let ch = valueOrElse(getInteger(bL[ay], ai), bX) | |
338 | + | let ci = min([fraction(cf, (bW - ch), (3 * W)), cg]) | |
339 | + | let cj = assetBalance(bL[aw], bV) | |
340 | + | let ck = valueOrElse(getInteger(bL[ay], al(bK)), bX) | |
341 | + | let cl = ((ck - bX) / W) | |
342 | + | let cm = min([bW, (bX + (3 * W))]) | |
343 | + | let cn = min([((bW - bX) / W), 2]) | |
344 | + | let co = aQ(bK, bL[ax]) | |
345 | + | let cp = am(an, cn) | |
346 | + | let cq = (bX + (W * cn)) | |
347 | + | let cr = (bX + (W * (cn - 1))) | |
348 | + | let cs = fraction(cp, (cm - ck), W) | |
349 | + | let ct = if ((cl == cn)) | |
350 | + | then cs | |
351 | + | else if ((cl == (cn - 1))) | |
346 | 352 | then { | |
347 | - | let | |
348 | - | ( | |
353 | + | let cu = fraction(am(an, (cn - 1)), (cq - ck), W) | |
354 | + | (cu + cs) | |
349 | 355 | } | |
350 | 356 | else { | |
351 | - | let | |
352 | - | let | |
353 | - | (( | |
357 | + | let cv = fraction(am(an, (cn - 2)), (cr - ck), W) | |
358 | + | let cu = am(an, (cn - 1)) | |
359 | + | ((cv + cu) + cs) | |
354 | 360 | } | |
355 | - | let | |
356 | - | let | |
357 | - | then fraction( | |
361 | + | let cw = valueOrElse(getInteger(bL[ay], ak), 0) | |
362 | + | let cx = if ((co[bb] != 0)) | |
363 | + | then fraction(ct, co[bc], co[bb]) | |
358 | 364 | else 0 | |
359 | - | let | |
360 | - | let | |
361 | - | let | |
362 | - | let | |
363 | - | let | |
364 | - | let | |
365 | - | then fraction(fraction(fraction( | |
365 | + | let cy = valueOrElse(getInteger(bL[ay], ap), ae) | |
366 | + | let cz = fraction(aa, max([(bW - cy), 0]), X) | |
367 | + | let cA = fraction(cz, ac, R) | |
368 | + | let cB = fraction(cz, ad, R) | |
369 | + | let cC = max([(bW - max([ae, ck])), 0]) | |
370 | + | let cD = if ((co[bb] != 0)) | |
371 | + | then fraction(fraction(fraction(aa, cC, X), co[bc], co[bb]), ab, R) | |
366 | 372 | else 0 | |
367 | - | let | |
368 | - | let | |
369 | - | [ | |
373 | + | let cE = max([ae, bW]) | |
374 | + | let cF = valueOrElse(getInteger(bL[ax], au), 0) | |
375 | + | [an, bY, fraction(bU, S, an), bU, bO, bR, bP, bQ, bX, cb, bZ, ca, cd, ce, cf, cg, ci, cj, cn, cw, cp, ck, bT, cx, cm, cz, cA, cB, cD, cE, co[bb], cF] | |
370 | 376 | } | |
371 | 377 | ||
372 | 378 | ||
373 | - | func | |
374 | - | let B = addressFromString( | |
375 | - | let | |
379 | + | func cG (cH) = { | |
380 | + | let B = addressFromString(cH) | |
381 | + | let cI = if (isDefined(B)) | |
376 | 382 | then wavesBalance(value(B)) | |
377 | 383 | else BalanceDetails(0, 0, 0, 0) | |
378 | - | let | |
384 | + | let cJ = if (isDefined(B)) | |
379 | 385 | then assetBalance(value(B), c) | |
380 | 386 | else 0 | |
381 | - | let | |
382 | - | then assetBalance(value(B), | |
387 | + | let cK = if (isDefined(B)) | |
388 | + | then assetBalance(value(B), E) | |
383 | 389 | else 0 | |
384 | - | let cI = valueOrElse(getString(v, I(cE)), cE) | |
385 | - | let cJ = J(cE) | |
386 | - | let cK = getString(v, cJ) | |
387 | - | let cL = valueOrElse(getString(v, K(cE)), "") | |
388 | - | let cM = valueOrElse(getString(v, A(cE)), "") | |
389 | - | let cN = if (isDefined(B)) | |
390 | - | then assetBalance(value(B), F) | |
390 | + | let cL = valueOrElse(getString(v, J(cH)), cH) | |
391 | + | let cM = K(cH) | |
392 | + | let cN = getString(v, cM) | |
393 | + | let cO = valueOrElse(getString(v, L(cH)), "") | |
394 | + | let cP = valueOrElse(getString(v, A(cH)), "") | |
395 | + | let cQ = valueOrElse(getString(v, C(cH)), "") | |
396 | + | let cR = if (isDefined(B)) | |
397 | + | then assetBalance(value(B), G) | |
391 | 398 | else 0 | |
392 | - | let | |
393 | - | let | |
394 | - | let | |
395 | - | let | |
399 | + | let cS = valueOrElse(getInteger(v, at(cH)), 0) | |
400 | + | let cT = aC(cS) | |
401 | + | let cU = aQ(cH, v) | |
402 | + | let cV = if ((cT >= size(aB))) | |
396 | 403 | then 0 | |
397 | - | else ((( | |
398 | - | [("%s%s__customName__" + | |
404 | + | else (((aB[cT] * S) + 1) - cS) | |
405 | + | [("%s%s__customName__" + cL), ("%s%s__referredBy__" + valueOrElse(cN, "")), ("%s%s__referrals__" + cO), ("%s%s__lastWeekTxId__" + cP), ("%s%s__curWeekTxId__" + cP), ("%s%d__wavesBalance__" + toString(cI.available)), ("%s%d__usdtBalance__" + toString(cJ)), ("%s%d__wlgoldBalance__" + toString(cK)), ("%s%d__acresBalance__" + toString(cR)), ("%s%d__stakedAcres__" + toString(cS)), ("%s%d__currentLvl__" + toString(cT)), ("%s%d__acresToNextLvl__" + toString(cV)), ("%s%d__userFarmingPower__" + toString(cU[bc])), ("%s%d__totalFarmingPower__" + toString(cU[bb]))] | |
399 | 406 | } | |
400 | 407 | ||
401 | 408 | ||
402 | - | @Callable( | |
403 | - | func constructorV1 ( | |
409 | + | @Callable(cW) | |
410 | + | func constructorV1 (bL) = if ((cW.caller != this)) | |
404 | 411 | then throw("permissions denied") | |
405 | 412 | else { | |
406 | - | func | |
413 | + | func cX (aG,cY) = (aG + "%s") | |
407 | 414 | ||
408 | - | let | |
409 | - | let | |
410 | - | let | |
411 | - | let | |
412 | - | func | |
413 | - | then | |
414 | - | else | |
415 | + | let cZ = { | |
416 | + | let aI = bL | |
417 | + | let aJ = size(aI) | |
418 | + | let aK = "" | |
419 | + | func aL (aM,aN) = if ((aN >= aJ)) | |
420 | + | then aM | |
421 | + | else cX(aM, aI[aN]) | |
415 | 422 | ||
416 | - | func | |
417 | - | then | |
423 | + | func aO (aM,aN) = if ((aN >= aJ)) | |
424 | + | then aM | |
418 | 425 | else throw("List size exceeds 10") | |
419 | 426 | ||
420 | - | | |
427 | + | aO(aL(aL(aL(aL(aL(aL(aL(aL(aL(aL(aK, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
421 | 428 | } | |
422 | - | [StringEntry(n(), makeString( | |
429 | + | [StringEntry(n(), makeString(cZ :: bL, a)), StringEntry(o(), toString(this))] | |
423 | 430 | } | |
424 | 431 | ||
425 | 432 | ||
426 | 433 | ||
427 | - | @Callable( | |
428 | - | func walletInfoREADONLY ( | |
434 | + | @Callable(cW) | |
435 | + | func walletInfoREADONLY (cH) = $Tuple2(nil, cG(cH)) | |
429 | 436 | ||
430 | 437 | ||
431 | 438 | ||
432 | - | @Callable( | |
433 | - | func conversionInfoREADONLY ( | |
434 | - | let | |
435 | - | let | |
436 | - | let | |
437 | - | let | |
438 | - | let | |
439 | - | let | |
440 | - | let | |
441 | - | let | |
442 | - | let | |
443 | - | let | |
444 | - | let | |
445 | - | let | |
446 | - | then | |
439 | + | @Callable(cW) | |
440 | + | func conversionInfoREADONLY (cH) = { | |
441 | + | let da = addressFromStringValue(getStringValue(v, z)) | |
442 | + | let db = Q(invoke(da, "unstakeAllAcresREADONLY", [cH], nil)) | |
443 | + | let dc = db._1 | |
444 | + | let dd = db._2 | |
445 | + | let de = M(invoke(v, "unstakeLandsREADONLY", [cH], nil)) | |
446 | + | let df = de._1 | |
447 | + | let dg = de._2 | |
448 | + | let dh = de._3 | |
449 | + | let di = de._4 | |
450 | + | let dj = addressFromStringValue(f) | |
451 | + | let dk = valueOrElse(getString(dj, H(cH)), "") | |
452 | + | let dl = if ((dk != "")) | |
453 | + | then P(invoke(dj, "unstakeDuckREADONLY", [dk, cH], nil)) | |
447 | 454 | else $Tuple3(0, 0, 0) | |
448 | - | let | |
449 | - | let | |
450 | - | let | |
451 | - | $Tuple2(nil, [("%s%d__unstakedAcres__" + toString( | |
455 | + | let dm = dl._1 | |
456 | + | let dn = dl._2 | |
457 | + | let do = dl._3 | |
458 | + | $Tuple2(nil, [("%s%d__unstakedAcres__" + toString(dc)), ("%s%d__claimedAcres__" + toString(dd)), ("%s%d__acresFromPieces__" + toString(df)), ("%s%d__acresFromRes__" + toString(dg)), ("%s%d__acresFromMat__" + toString(dh)), ("%s%d__acresFromProd__" + toString(di)), ("%s%d__acresFromDuckRes__" + toString(dm)), ("%s%d__acresFromDuckMat__" + toString(dn)), ("%s%d__acresFromDuckProd__" + toString(do))]) | |
452 | 459 | } | |
453 | 460 | ||
454 | 461 | ||
455 | 462 | ||
456 | - | @Callable( | |
457 | - | func wlgStatsREADONLY ( | |
458 | - | let | |
459 | - | $Tuple2(nil, [("%s%d__wlgAmount__" + toString( | |
463 | + | @Callable(cW) | |
464 | + | func wlgStatsREADONLY (bK) = { | |
465 | + | let dp = bJ(bK, [u, v, w, x, y], c, 0) | |
466 | + | $Tuple2(nil, [("%s%d__wlgAmount__" + toString(dp[bd])), ("%s%d__wlgWlg__" + toString(dp[be])), ("%s%d__wlgPrice__" + toString(dp[bf])), ("%s%d__usdtFunds__" + toString(dp[bg])), ("%s%d__usdtActivity__" + toString(dp[bh])), ("%s%d__usdtStaking__" + toString(dp[bi])), ("%s%d__usdtArbitrage__" + toString(dp[bj])), ("%s%d__usdtPool__" + toString(dp[bk])), ("%s%d__wlgIssueTime__" + toString(dp[bl])), ("%s%d__wlgLastTeamActTime__" + toString(dp[bm])), ("%s%d__wlgTeamTotal__" + toString(dp[bn])), ("%s%d__wlgTeamAmLeft__" + toString(dp[bo])), ("%s%d__wlgTeamAmAvailNow__" + toString(dp[bp])), ("%s%d__wlgTeamWlgold__" + toString(dp[bq])), ("%s%d__wlgActTotal__" + toString(dp[br])), ("%s%d__wlgActAmLeft__" + toString(dp[bs])), ("%s%d__wlgActAmAvailNow__" + toString(dp[bt])), ("%s%d__wlgActWlgold__" + toString(dp[bu])), ("%s%d__wlgCurPeriod__" + toString(dp[bv])), ("%s%d__wlgAmLeftTotal__" + toString(dp[bw])), ("%s%d__wlgCurPeriodDistribution__" + toString(dp[bx])), ("%s%d__wlgLastUserTime__" + toString(dp[by])), ("%s%d__wlgInvestFundTotal__" + toString(dp[bz])), ("%s%d__wlgUserAmAvailNow__" + toString(dp[bA])), ("%s%d__wlgEffUserTime__" + toString(dp[bB])), ("%s%d__wlgIssue10AvailNow__" + toString(dp[bC])), ("%s%d__wlgMarketingIssue10AvailNow__" + toString(dp[bD])), ("%s%d__wlgTeamIssue10AvailNow__" + toString(dp[bE])), ("%s%d__wlgUserIssue10AvailNow__" + toString(dp[bF])), ("%s%d__wlgLastIssue10Time__" + toString(dp[bG])), ("%s%d__wlgTotalFarmingPower__" + toString(dp[bH])), ("%s%d__wlgAcresStakedTotal__" + toString(dp[bI]))]) | |
460 | 467 | } | |
461 | 468 | ||
462 | 469 | ||
463 | 470 | ||
464 | - | @Callable(cS) | |
465 | - | func lotteryStatsREADONLY (bH) = { | |
466 | - | let dm = (height / X) | |
467 | - | let dn = valueOrElse(getString(w, aT(bH)), "") | |
468 | - | $Tuple2(nil, [("%s%d__totalTickets__" + toString(valueOrElse(getInteger(w, aV), 0))), ("%s%d__userTickets__" + toString(valueOrElse(getInteger(w, aU(bH)), 0))), ("%s%d__blockchainDay__" + toString(dm)), ("%s%d__blockchainMinute__" + toString((height % X))), ("%s%d__winningBetToday__" + toString(aW(dm))), ("%s%s__usersBet__" + dn)]) | |
471 | + | @Callable(cW) | |
472 | + | func lotteryStatsREADONLY (bK) = { | |
473 | + | let dq = (height / Y) | |
474 | + | let aX = (height / Z) | |
475 | + | let dr = (aX - 1) | |
476 | + | let ds = valueOrElse(getInteger(w, aW(bK, aX)), 0) | |
477 | + | let dt = valueOrElse(getInteger(w, aW(bK, dr)), 0) | |
478 | + | let du = valueOrElse(getInteger(w, aY(aX)), 0) | |
479 | + | let dv = valueOrElse(getInteger(w, aY(dr)), 0) | |
480 | + | let dw = valueOrElse(getString(w, aV(bK)), "") | |
481 | + | $Tuple2(nil, [((("%s%d%d__totalTickets__" + toString(dv)) + a) + toString(du)), ((("%s%d%d__userTickets__" + toString(dt)) + a) + toString(ds)), ("%s%d__blockchainDay__" + toString(dq)), ("%s%d__blockchainMinute__" + toString((height % Y))), ("%s%d__winningBetToday__" + toString(aZ(dq))), ("%s%s__usersBet__" + dw)]) | |
469 | 482 | } | |
470 | 483 | ||
471 | 484 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = "__" | |
5 | 5 | ||
6 | 6 | let b = take(drop(this.bytes, 1), 1) | |
7 | 7 | ||
8 | 8 | let c = { | |
9 | 9 | let d = b | |
10 | 10 | if ((base58'2W' == d)) | |
11 | 11 | then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi' | |
12 | 12 | else if ((base58'2T' == d)) | |
13 | 13 | then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63' | |
14 | 14 | else throw("Unknown chain") | |
15 | 15 | } | |
16 | 16 | ||
17 | 17 | let e = { | |
18 | 18 | let d = b | |
19 | 19 | if ((base58'2W' == d)) | |
20 | 20 | then "3PFwYta8biEz31zpeFe5DJK8wE5trSpQVF8" | |
21 | 21 | else if ((base58'2T' == d)) | |
22 | 22 | then "3N7UuYar6264P58FBhVWKPQAh4Yua2hgngv" | |
23 | 23 | else throw("Unknown chain") | |
24 | 24 | } | |
25 | 25 | ||
26 | 26 | let f = { | |
27 | 27 | let d = b | |
28 | 28 | if ((base58'2W' == d)) | |
29 | 29 | then "3PLncXtS1U83D6cQbFD3H8rBHPLgzxSFKZ1" | |
30 | 30 | else if ((base58'2T' == d)) | |
31 | 31 | then "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm" | |
32 | 32 | else throw("Unknown chain") | |
33 | 33 | } | |
34 | 34 | ||
35 | 35 | func g (h,i) = valueOrErrorMessage(getString(h, i), makeString(["mandatory ", toString(h), ".", i, " is not defined"], "")) | |
36 | 36 | ||
37 | 37 | ||
38 | 38 | let j = 1 | |
39 | 39 | ||
40 | 40 | let k = 2 | |
41 | 41 | ||
42 | 42 | let l = 4 | |
43 | 43 | ||
44 | 44 | let m = 5 | |
45 | 45 | ||
46 | 46 | func n () = "%s__restConfig" | |
47 | 47 | ||
48 | 48 | ||
49 | 49 | func o () = "%s__rest2Addr" | |
50 | 50 | ||
51 | 51 | ||
52 | 52 | func p (q) = split_4C(g(q, n()), a) | |
53 | 53 | ||
54 | 54 | ||
55 | 55 | func r (s,t) = valueOrErrorMessage(addressFromString(s[t]), ("Rest cfg doesn't contain address at index " + toString(t))) | |
56 | 56 | ||
57 | 57 | ||
58 | 58 | let u = addressFromStringValue(valueOrElse(getString(this, o()), e)) | |
59 | 59 | ||
60 | 60 | let s = p(u) | |
61 | 61 | ||
62 | 62 | let v = r(s, j) | |
63 | 63 | ||
64 | 64 | let w = r(s, k) | |
65 | 65 | ||
66 | 66 | let x = r(s, l) | |
67 | 67 | ||
68 | 68 | let y = r(s, m) | |
69 | 69 | ||
70 | 70 | let z = "oldAcresContract" | |
71 | 71 | ||
72 | - | func A (B) = (" | |
72 | + | func A (B) = ("lastWeekTxIdByUser_" + B) | |
73 | 73 | ||
74 | 74 | ||
75 | - | let C = "wlg_assetId" | |
76 | - | ||
77 | - | let D = valueOrErrorMessage(getBinary(w, C), "WLGOLD is not issued yet") | |
78 | - | ||
79 | - | let E = "acresAssetId" | |
80 | - | ||
81 | - | let F = valueOrErrorMessage(getBinary(v, E), "ACRES is not issued yet") | |
82 | - | ||
83 | - | func G (H) = ("stakedDuckByOwner_" + H) | |
75 | + | func C (B) = ("curWeekTxIdByUser_" + B) | |
84 | 76 | ||
85 | 77 | ||
86 | - | func I (B) = ("accountCustomNameByAddr_" + B) | |
78 | + | let D = "wlg_assetId" | |
79 | + | ||
80 | + | let E = valueOrErrorMessage(getBinary(w, D), "WLGOLD is not issued yet") | |
81 | + | ||
82 | + | let F = "acresAssetId" | |
83 | + | ||
84 | + | let G = valueOrErrorMessage(getBinary(v, F), "ACRES is not issued yet") | |
85 | + | ||
86 | + | func H (I) = ("stakedDuckByOwner_" + I) | |
87 | 87 | ||
88 | 88 | ||
89 | - | func J (B) = (" | |
89 | + | func J (B) = ("accountCustomNameByAddr_" + B) | |
90 | 90 | ||
91 | 91 | ||
92 | - | func K (B) = (" | |
92 | + | func K (B) = ("accRefBy_" + B) | |
93 | 93 | ||
94 | 94 | ||
95 | - | func L (M) = { | |
96 | - | let d = M | |
95 | + | func L (B) = ("accReferrals_" + B) | |
96 | + | ||
97 | + | ||
98 | + | func M (N) = { | |
99 | + | let d = N | |
97 | 100 | if ($isInstanceOf(d, "(Int, Int, Int, Int)")) | |
98 | 101 | then { | |
99 | - | let | |
100 | - | | |
102 | + | let O = d | |
103 | + | O | |
101 | 104 | } | |
102 | 105 | else throw("fail to cast into (Int, Int, Int, Int)") | |
103 | 106 | } | |
104 | 107 | ||
105 | 108 | ||
106 | - | func | |
107 | - | let d = | |
109 | + | func P (N) = { | |
110 | + | let d = N | |
108 | 111 | if ($isInstanceOf(d, "(Int, Int, Int)")) | |
109 | 112 | then { | |
110 | - | let | |
111 | - | | |
113 | + | let O = d | |
114 | + | O | |
112 | 115 | } | |
113 | 116 | else throw("fail to cast into (Int, Int, Int)") | |
114 | 117 | } | |
115 | 118 | ||
116 | 119 | ||
117 | - | func | |
118 | - | let d = | |
120 | + | func Q (N) = { | |
121 | + | let d = N | |
119 | 122 | if ($isInstanceOf(d, "(Int, Int)")) | |
120 | 123 | then { | |
121 | - | let | |
122 | - | | |
124 | + | let O = d | |
125 | + | O | |
123 | 126 | } | |
124 | 127 | else throw("fail to cast into (Int, Int)") | |
125 | 128 | } | |
126 | 129 | ||
127 | 130 | ||
128 | - | let | |
131 | + | let R = 1000000 | |
129 | 132 | ||
130 | - | let | |
133 | + | let S = 100000000 | |
131 | 134 | ||
132 | - | let | |
135 | + | let T = 200000 | |
133 | 136 | ||
134 | - | let | |
137 | + | let U = 100000 | |
135 | 138 | ||
136 | - | let | |
139 | + | let V = 400000 | |
137 | 140 | ||
138 | - | let | |
141 | + | let W = 31557600000 | |
139 | 142 | ||
140 | - | let | |
143 | + | let X = 86400000 | |
141 | 144 | ||
142 | - | let | |
145 | + | let Y = 1440 | |
143 | 146 | ||
144 | - | let | |
147 | + | let Z = 10080 | |
145 | 148 | ||
146 | - | let | |
149 | + | let aa = 1000000000 | |
147 | 150 | ||
148 | - | let | |
151 | + | let ab = 800000 | |
149 | 152 | ||
150 | - | let | |
153 | + | let ac = 100000 | |
151 | 154 | ||
152 | - | let | |
155 | + | let ad = 100000 | |
153 | 156 | ||
154 | - | let | |
157 | + | let ae = 1731279600000 | |
155 | 158 | ||
156 | - | let | |
159 | + | let af = "teamAddr" | |
157 | 160 | ||
158 | - | let | |
161 | + | let ag = "lastClaimedTime_team" | |
159 | 162 | ||
160 | - | let | |
163 | + | let ah = "teamAmountLeft" | |
161 | 164 | ||
162 | - | let | |
165 | + | let ai = "lastClaimedTime_activities" | |
163 | 166 | ||
164 | - | let | |
167 | + | let aj = "activitiesAmountLeft" | |
165 | 168 | ||
166 | - | func aj (B) = ("lastClaimedTimeUser_" + B) | |
169 | + | let ak = "stakersAmountLeft" | |
170 | + | ||
171 | + | func al (B) = ("lastClaimedTimeUser_" + B) | |
167 | 172 | ||
168 | 173 | ||
169 | - | func | |
174 | + | func am (an,ao) = fraction(an, (V * (ao + 1)), (6 * R)) | |
170 | 175 | ||
171 | 176 | ||
172 | - | let | |
177 | + | let ap = "wlg_issue10Time" | |
173 | 178 | ||
174 | - | let | |
179 | + | let aq = "wlg_issueTime" | |
175 | 180 | ||
176 | - | let | |
181 | + | let ar = "wlg_issuedAmount" | |
177 | 182 | ||
178 | - | let | |
183 | + | let as = "zbill_issuedAmount" | |
179 | 184 | ||
180 | - | func | |
185 | + | func at (B) = ("acresStakedAmountByUser_" + B) | |
181 | 186 | ||
182 | 187 | ||
183 | - | let | |
188 | + | let au = "acresStakedAmountTotal" | |
184 | 189 | ||
185 | - | let | |
190 | + | let av = "totalFarmingPower" | |
186 | 191 | ||
187 | - | let | |
192 | + | let aw = 0 | |
188 | 193 | ||
189 | - | let | |
194 | + | let ax = 1 | |
190 | 195 | ||
191 | - | let | |
196 | + | let ay = 2 | |
192 | 197 | ||
193 | - | let | |
198 | + | let az = 3 | |
194 | 199 | ||
195 | - | let | |
200 | + | let aA = 4 | |
196 | 201 | ||
197 | - | let | |
202 | + | let aB = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000] | |
198 | 203 | ||
199 | - | func | |
200 | - | let | |
201 | - | func | |
202 | - | then | |
203 | - | else ( | |
204 | + | func aC (aD) = { | |
205 | + | let aE = ((aD + 99999999) / S) | |
206 | + | func aF (aG,aH) = if ((aH >= aE)) | |
207 | + | then aG | |
208 | + | else (aG + 1) | |
204 | 209 | ||
205 | - | let | |
206 | - | let | |
207 | - | let | |
208 | - | func | |
209 | - | then | |
210 | - | else | |
210 | + | let aI = aB | |
211 | + | let aJ = size(aI) | |
212 | + | let aK = 0 | |
213 | + | func aL (aM,aN) = if ((aN >= aJ)) | |
214 | + | then aM | |
215 | + | else aF(aM, aI[aN]) | |
211 | 216 | ||
212 | - | func | |
213 | - | then | |
217 | + | func aO (aM,aN) = if ((aN >= aJ)) | |
218 | + | then aM | |
214 | 219 | else throw("List size exceeds 10") | |
215 | 220 | ||
216 | - | | |
221 | + | aO(aL(aL(aL(aL(aL(aL(aL(aL(aL(aL(aK, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
217 | 222 | } | |
218 | 223 | ||
219 | 224 | ||
220 | - | func | |
225 | + | func aP (aD) = ((aD * 20) * (aC(aD) + 4)) | |
221 | 226 | ||
222 | 227 | ||
223 | - | func | |
224 | - | let | |
225 | - | let | |
226 | - | let | |
227 | - | [ | |
228 | + | func aQ (aR,v) = { | |
229 | + | let aS = valueOrElse(getInteger(v, av), 0) | |
230 | + | let aT = valueOrElse(getInteger(v, at(aR)), 0) | |
231 | + | let aU = aP(aT) | |
232 | + | [aS, aU] | |
228 | 233 | } | |
229 | 234 | ||
230 | 235 | ||
231 | - | func | |
236 | + | func aV (B) = ("userBet_" + B) | |
232 | 237 | ||
233 | 238 | ||
234 | - | func | |
239 | + | func aW (B,aX) = ((("userWeekTickets_" + B) + "_") + toString(aX)) | |
235 | 240 | ||
236 | 241 | ||
237 | - | let aV = "totalTickets" | |
238 | - | ||
239 | - | func aW (aX) = (toInt(value(value(blockInfoByHeight((aX * X))).vrf)) % 4) | |
242 | + | func aY (aX) = ("totalWeekTickets_" + toString(aX)) | |
240 | 243 | ||
241 | 244 | ||
242 | - | ||
245 | + | func aZ (ba) = (toInt(value(value(blockInfoByHeight((ba * Y))).vrf)) % 4) | |
243 | 246 | ||
244 | - | let aZ = 1 | |
245 | 247 | ||
246 | - | let | |
248 | + | let bb = 0 | |
247 | 249 | ||
248 | - | let | |
250 | + | let bc = 1 | |
249 | 251 | ||
250 | - | let | |
252 | + | let bd = 0 | |
251 | 253 | ||
252 | - | let | |
254 | + | let be = 1 | |
253 | 255 | ||
254 | - | let | |
256 | + | let bf = 2 | |
255 | 257 | ||
256 | - | let | |
258 | + | let bg = 3 | |
257 | 259 | ||
258 | - | let | |
260 | + | let bh = 4 | |
259 | 261 | ||
260 | - | let | |
262 | + | let bi = 5 | |
261 | 263 | ||
262 | - | let | |
264 | + | let bj = 6 | |
263 | 265 | ||
264 | - | let | |
266 | + | let bk = 7 | |
265 | 267 | ||
266 | - | let | |
268 | + | let bl = 8 | |
267 | 269 | ||
268 | - | let | |
270 | + | let bm = 9 | |
269 | 271 | ||
270 | - | let | |
272 | + | let bn = 10 | |
271 | 273 | ||
272 | - | let | |
274 | + | let bo = 11 | |
273 | 275 | ||
274 | - | let | |
276 | + | let bp = 12 | |
275 | 277 | ||
276 | - | let | |
278 | + | let bq = 13 | |
277 | 279 | ||
278 | - | let | |
280 | + | let br = 14 | |
279 | 281 | ||
280 | - | let | |
282 | + | let bs = 15 | |
281 | 283 | ||
282 | - | let | |
284 | + | let bt = 16 | |
283 | 285 | ||
284 | - | let | |
286 | + | let bu = 17 | |
285 | 287 | ||
286 | - | let | |
288 | + | let bv = 18 | |
287 | 289 | ||
288 | - | let | |
290 | + | let bw = 19 | |
289 | 291 | ||
290 | - | let | |
292 | + | let bx = 20 | |
291 | 293 | ||
292 | - | let | |
294 | + | let by = 21 | |
293 | 295 | ||
294 | - | let | |
296 | + | let bz = 22 | |
295 | 297 | ||
296 | - | let | |
298 | + | let bA = 23 | |
297 | 299 | ||
298 | - | let | |
300 | + | let bB = 24 | |
299 | 301 | ||
300 | - | let | |
302 | + | let bC = 25 | |
301 | 303 | ||
302 | - | let | |
304 | + | let bD = 26 | |
303 | 305 | ||
304 | - | let | |
306 | + | let bE = 27 | |
305 | 307 | ||
306 | - | let | |
308 | + | let bF = 28 | |
307 | 309 | ||
308 | - | let | |
310 | + | let bG = 29 | |
309 | 311 | ||
310 | - | func bG (bH,bI,bJ,bK) = { | |
311 | - | let al = valueOrErrorMessage(getInteger(bI[aw], ap), "WLGOLD is not issued yet") | |
312 | - | let bL = assetBalance(bI[au], bJ) | |
313 | - | let bM = (assetBalance(bI[aw], bJ) - bK) | |
314 | - | let bN = assetBalance(bI[ax], bJ) | |
315 | - | let bO = assetBalance(bI[av], bJ) | |
316 | - | let bP = bI[ay] | |
317 | - | let bQ = (assetBalance(bP, bJ) + valueOrElse(getInteger(bP, aq), 0)) | |
318 | - | let bR = ((bO + bM) + bQ) | |
319 | - | let bS = valueOrErrorMessage(getBinary(bI[aw], "wlg_assetId"), "Not initialized yet") | |
320 | - | let bT = lastBlock.timestamp | |
321 | - | let bU = valueOrErrorMessage(getInteger(bI[aw], ao), "Not initialized") | |
322 | - | let bV = assetBalance(bI[aw], bS) | |
323 | - | let bW = fraction(al, S, Q) | |
324 | - | let bX = valueOrElse(getInteger(bI[aw], af), bW) | |
325 | - | let bY = valueOrElse(getInteger(bI[aw], ae), bU) | |
326 | - | let bZ = addressFromStringValue(value(getString(bI[aw], ad))) | |
327 | - | let ca = min([fraction(bW, (bT - bY), (3 * V)), bX]) | |
328 | - | let cb = assetBalance(bZ, bS) | |
329 | - | let cc = fraction(al, T, Q) | |
330 | - | let cd = valueOrElse(getInteger(bI[aw], ah), cc) | |
331 | - | let ce = valueOrElse(getInteger(bI[aw], ag), bU) | |
332 | - | let cf = min([fraction(cc, (bT - ce), (3 * V)), cd]) | |
333 | - | let cg = assetBalance(bI[au], bS) | |
334 | - | let ch = valueOrElse(getInteger(bI[aw], aj(bH)), bU) | |
335 | - | let ci = ((ch - bU) / V) | |
336 | - | let cj = min([bT, (bU + (3 * V))]) | |
337 | - | let ck = min([((bT - bU) / V), 2]) | |
338 | - | let cl = aO(bH, bI[av]) | |
339 | - | let cm = ak(al, ck) | |
340 | - | let cn = (bU + (V * ck)) | |
341 | - | let co = (bU + (V * (ck - 1))) | |
342 | - | let cp = fraction(cm, (cj - ch), V) | |
343 | - | let cq = if ((ci == ck)) | |
344 | - | then cp | |
345 | - | else if ((ci == (ck - 1))) | |
312 | + | let bH = 30 | |
313 | + | ||
314 | + | let bI = 31 | |
315 | + | ||
316 | + | func bJ (bK,bL,bM,bN) = { | |
317 | + | let an = valueOrErrorMessage(getInteger(bL[ay], ar), "WLGOLD is not issued yet") | |
318 | + | let bO = assetBalance(bL[aw], bM) | |
319 | + | let bP = (assetBalance(bL[ay], bM) - bN) | |
320 | + | let bQ = assetBalance(bL[az], bM) | |
321 | + | let bR = assetBalance(bL[ax], bM) | |
322 | + | let bS = bL[aA] | |
323 | + | let bT = (assetBalance(bS, bM) + valueOrElse(getInteger(bS, as), 0)) | |
324 | + | let bU = ((bR + bP) + bT) | |
325 | + | let bV = valueOrErrorMessage(getBinary(bL[ay], "wlg_assetId"), "Not initialized yet") | |
326 | + | let bW = lastBlock.timestamp | |
327 | + | let bX = valueOrErrorMessage(getInteger(bL[ay], aq), "Not initialized") | |
328 | + | let bY = assetBalance(bL[ay], bV) | |
329 | + | let bZ = fraction(an, T, R) | |
330 | + | let ca = valueOrElse(getInteger(bL[ay], ah), bZ) | |
331 | + | let cb = valueOrElse(getInteger(bL[ay], ag), bX) | |
332 | + | let cc = addressFromStringValue(value(getString(bL[ay], af))) | |
333 | + | let cd = min([fraction(bZ, (bW - cb), (3 * W)), ca]) | |
334 | + | let ce = assetBalance(cc, bV) | |
335 | + | let cf = fraction(an, U, R) | |
336 | + | let cg = valueOrElse(getInteger(bL[ay], aj), cf) | |
337 | + | let ch = valueOrElse(getInteger(bL[ay], ai), bX) | |
338 | + | let ci = min([fraction(cf, (bW - ch), (3 * W)), cg]) | |
339 | + | let cj = assetBalance(bL[aw], bV) | |
340 | + | let ck = valueOrElse(getInteger(bL[ay], al(bK)), bX) | |
341 | + | let cl = ((ck - bX) / W) | |
342 | + | let cm = min([bW, (bX + (3 * W))]) | |
343 | + | let cn = min([((bW - bX) / W), 2]) | |
344 | + | let co = aQ(bK, bL[ax]) | |
345 | + | let cp = am(an, cn) | |
346 | + | let cq = (bX + (W * cn)) | |
347 | + | let cr = (bX + (W * (cn - 1))) | |
348 | + | let cs = fraction(cp, (cm - ck), W) | |
349 | + | let ct = if ((cl == cn)) | |
350 | + | then cs | |
351 | + | else if ((cl == (cn - 1))) | |
346 | 352 | then { | |
347 | - | let | |
348 | - | ( | |
353 | + | let cu = fraction(am(an, (cn - 1)), (cq - ck), W) | |
354 | + | (cu + cs) | |
349 | 355 | } | |
350 | 356 | else { | |
351 | - | let | |
352 | - | let | |
353 | - | (( | |
357 | + | let cv = fraction(am(an, (cn - 2)), (cr - ck), W) | |
358 | + | let cu = am(an, (cn - 1)) | |
359 | + | ((cv + cu) + cs) | |
354 | 360 | } | |
355 | - | let | |
356 | - | let | |
357 | - | then fraction( | |
361 | + | let cw = valueOrElse(getInteger(bL[ay], ak), 0) | |
362 | + | let cx = if ((co[bb] != 0)) | |
363 | + | then fraction(ct, co[bc], co[bb]) | |
358 | 364 | else 0 | |
359 | - | let | |
360 | - | let | |
361 | - | let | |
362 | - | let | |
363 | - | let | |
364 | - | let | |
365 | - | then fraction(fraction(fraction( | |
365 | + | let cy = valueOrElse(getInteger(bL[ay], ap), ae) | |
366 | + | let cz = fraction(aa, max([(bW - cy), 0]), X) | |
367 | + | let cA = fraction(cz, ac, R) | |
368 | + | let cB = fraction(cz, ad, R) | |
369 | + | let cC = max([(bW - max([ae, ck])), 0]) | |
370 | + | let cD = if ((co[bb] != 0)) | |
371 | + | then fraction(fraction(fraction(aa, cC, X), co[bc], co[bb]), ab, R) | |
366 | 372 | else 0 | |
367 | - | let | |
368 | - | let | |
369 | - | [ | |
373 | + | let cE = max([ae, bW]) | |
374 | + | let cF = valueOrElse(getInteger(bL[ax], au), 0) | |
375 | + | [an, bY, fraction(bU, S, an), bU, bO, bR, bP, bQ, bX, cb, bZ, ca, cd, ce, cf, cg, ci, cj, cn, cw, cp, ck, bT, cx, cm, cz, cA, cB, cD, cE, co[bb], cF] | |
370 | 376 | } | |
371 | 377 | ||
372 | 378 | ||
373 | - | func | |
374 | - | let B = addressFromString( | |
375 | - | let | |
379 | + | func cG (cH) = { | |
380 | + | let B = addressFromString(cH) | |
381 | + | let cI = if (isDefined(B)) | |
376 | 382 | then wavesBalance(value(B)) | |
377 | 383 | else BalanceDetails(0, 0, 0, 0) | |
378 | - | let | |
384 | + | let cJ = if (isDefined(B)) | |
379 | 385 | then assetBalance(value(B), c) | |
380 | 386 | else 0 | |
381 | - | let | |
382 | - | then assetBalance(value(B), | |
387 | + | let cK = if (isDefined(B)) | |
388 | + | then assetBalance(value(B), E) | |
383 | 389 | else 0 | |
384 | - | let cI = valueOrElse(getString(v, I(cE)), cE) | |
385 | - | let cJ = J(cE) | |
386 | - | let cK = getString(v, cJ) | |
387 | - | let cL = valueOrElse(getString(v, K(cE)), "") | |
388 | - | let cM = valueOrElse(getString(v, A(cE)), "") | |
389 | - | let cN = if (isDefined(B)) | |
390 | - | then assetBalance(value(B), F) | |
390 | + | let cL = valueOrElse(getString(v, J(cH)), cH) | |
391 | + | let cM = K(cH) | |
392 | + | let cN = getString(v, cM) | |
393 | + | let cO = valueOrElse(getString(v, L(cH)), "") | |
394 | + | let cP = valueOrElse(getString(v, A(cH)), "") | |
395 | + | let cQ = valueOrElse(getString(v, C(cH)), "") | |
396 | + | let cR = if (isDefined(B)) | |
397 | + | then assetBalance(value(B), G) | |
391 | 398 | else 0 | |
392 | - | let | |
393 | - | let | |
394 | - | let | |
395 | - | let | |
399 | + | let cS = valueOrElse(getInteger(v, at(cH)), 0) | |
400 | + | let cT = aC(cS) | |
401 | + | let cU = aQ(cH, v) | |
402 | + | let cV = if ((cT >= size(aB))) | |
396 | 403 | then 0 | |
397 | - | else ((( | |
398 | - | [("%s%s__customName__" + | |
404 | + | else (((aB[cT] * S) + 1) - cS) | |
405 | + | [("%s%s__customName__" + cL), ("%s%s__referredBy__" + valueOrElse(cN, "")), ("%s%s__referrals__" + cO), ("%s%s__lastWeekTxId__" + cP), ("%s%s__curWeekTxId__" + cP), ("%s%d__wavesBalance__" + toString(cI.available)), ("%s%d__usdtBalance__" + toString(cJ)), ("%s%d__wlgoldBalance__" + toString(cK)), ("%s%d__acresBalance__" + toString(cR)), ("%s%d__stakedAcres__" + toString(cS)), ("%s%d__currentLvl__" + toString(cT)), ("%s%d__acresToNextLvl__" + toString(cV)), ("%s%d__userFarmingPower__" + toString(cU[bc])), ("%s%d__totalFarmingPower__" + toString(cU[bb]))] | |
399 | 406 | } | |
400 | 407 | ||
401 | 408 | ||
402 | - | @Callable( | |
403 | - | func constructorV1 ( | |
409 | + | @Callable(cW) | |
410 | + | func constructorV1 (bL) = if ((cW.caller != this)) | |
404 | 411 | then throw("permissions denied") | |
405 | 412 | else { | |
406 | - | func | |
413 | + | func cX (aG,cY) = (aG + "%s") | |
407 | 414 | ||
408 | - | let | |
409 | - | let | |
410 | - | let | |
411 | - | let | |
412 | - | func | |
413 | - | then | |
414 | - | else | |
415 | + | let cZ = { | |
416 | + | let aI = bL | |
417 | + | let aJ = size(aI) | |
418 | + | let aK = "" | |
419 | + | func aL (aM,aN) = if ((aN >= aJ)) | |
420 | + | then aM | |
421 | + | else cX(aM, aI[aN]) | |
415 | 422 | ||
416 | - | func | |
417 | - | then | |
423 | + | func aO (aM,aN) = if ((aN >= aJ)) | |
424 | + | then aM | |
418 | 425 | else throw("List size exceeds 10") | |
419 | 426 | ||
420 | - | | |
427 | + | aO(aL(aL(aL(aL(aL(aL(aL(aL(aL(aL(aK, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
421 | 428 | } | |
422 | - | [StringEntry(n(), makeString( | |
429 | + | [StringEntry(n(), makeString(cZ :: bL, a)), StringEntry(o(), toString(this))] | |
423 | 430 | } | |
424 | 431 | ||
425 | 432 | ||
426 | 433 | ||
427 | - | @Callable( | |
428 | - | func walletInfoREADONLY ( | |
434 | + | @Callable(cW) | |
435 | + | func walletInfoREADONLY (cH) = $Tuple2(nil, cG(cH)) | |
429 | 436 | ||
430 | 437 | ||
431 | 438 | ||
432 | - | @Callable( | |
433 | - | func conversionInfoREADONLY ( | |
434 | - | let | |
435 | - | let | |
436 | - | let | |
437 | - | let | |
438 | - | let | |
439 | - | let | |
440 | - | let | |
441 | - | let | |
442 | - | let | |
443 | - | let | |
444 | - | let | |
445 | - | let | |
446 | - | then | |
439 | + | @Callable(cW) | |
440 | + | func conversionInfoREADONLY (cH) = { | |
441 | + | let da = addressFromStringValue(getStringValue(v, z)) | |
442 | + | let db = Q(invoke(da, "unstakeAllAcresREADONLY", [cH], nil)) | |
443 | + | let dc = db._1 | |
444 | + | let dd = db._2 | |
445 | + | let de = M(invoke(v, "unstakeLandsREADONLY", [cH], nil)) | |
446 | + | let df = de._1 | |
447 | + | let dg = de._2 | |
448 | + | let dh = de._3 | |
449 | + | let di = de._4 | |
450 | + | let dj = addressFromStringValue(f) | |
451 | + | let dk = valueOrElse(getString(dj, H(cH)), "") | |
452 | + | let dl = if ((dk != "")) | |
453 | + | then P(invoke(dj, "unstakeDuckREADONLY", [dk, cH], nil)) | |
447 | 454 | else $Tuple3(0, 0, 0) | |
448 | - | let | |
449 | - | let | |
450 | - | let | |
451 | - | $Tuple2(nil, [("%s%d__unstakedAcres__" + toString( | |
455 | + | let dm = dl._1 | |
456 | + | let dn = dl._2 | |
457 | + | let do = dl._3 | |
458 | + | $Tuple2(nil, [("%s%d__unstakedAcres__" + toString(dc)), ("%s%d__claimedAcres__" + toString(dd)), ("%s%d__acresFromPieces__" + toString(df)), ("%s%d__acresFromRes__" + toString(dg)), ("%s%d__acresFromMat__" + toString(dh)), ("%s%d__acresFromProd__" + toString(di)), ("%s%d__acresFromDuckRes__" + toString(dm)), ("%s%d__acresFromDuckMat__" + toString(dn)), ("%s%d__acresFromDuckProd__" + toString(do))]) | |
452 | 459 | } | |
453 | 460 | ||
454 | 461 | ||
455 | 462 | ||
456 | - | @Callable( | |
457 | - | func wlgStatsREADONLY ( | |
458 | - | let | |
459 | - | $Tuple2(nil, [("%s%d__wlgAmount__" + toString( | |
463 | + | @Callable(cW) | |
464 | + | func wlgStatsREADONLY (bK) = { | |
465 | + | let dp = bJ(bK, [u, v, w, x, y], c, 0) | |
466 | + | $Tuple2(nil, [("%s%d__wlgAmount__" + toString(dp[bd])), ("%s%d__wlgWlg__" + toString(dp[be])), ("%s%d__wlgPrice__" + toString(dp[bf])), ("%s%d__usdtFunds__" + toString(dp[bg])), ("%s%d__usdtActivity__" + toString(dp[bh])), ("%s%d__usdtStaking__" + toString(dp[bi])), ("%s%d__usdtArbitrage__" + toString(dp[bj])), ("%s%d__usdtPool__" + toString(dp[bk])), ("%s%d__wlgIssueTime__" + toString(dp[bl])), ("%s%d__wlgLastTeamActTime__" + toString(dp[bm])), ("%s%d__wlgTeamTotal__" + toString(dp[bn])), ("%s%d__wlgTeamAmLeft__" + toString(dp[bo])), ("%s%d__wlgTeamAmAvailNow__" + toString(dp[bp])), ("%s%d__wlgTeamWlgold__" + toString(dp[bq])), ("%s%d__wlgActTotal__" + toString(dp[br])), ("%s%d__wlgActAmLeft__" + toString(dp[bs])), ("%s%d__wlgActAmAvailNow__" + toString(dp[bt])), ("%s%d__wlgActWlgold__" + toString(dp[bu])), ("%s%d__wlgCurPeriod__" + toString(dp[bv])), ("%s%d__wlgAmLeftTotal__" + toString(dp[bw])), ("%s%d__wlgCurPeriodDistribution__" + toString(dp[bx])), ("%s%d__wlgLastUserTime__" + toString(dp[by])), ("%s%d__wlgInvestFundTotal__" + toString(dp[bz])), ("%s%d__wlgUserAmAvailNow__" + toString(dp[bA])), ("%s%d__wlgEffUserTime__" + toString(dp[bB])), ("%s%d__wlgIssue10AvailNow__" + toString(dp[bC])), ("%s%d__wlgMarketingIssue10AvailNow__" + toString(dp[bD])), ("%s%d__wlgTeamIssue10AvailNow__" + toString(dp[bE])), ("%s%d__wlgUserIssue10AvailNow__" + toString(dp[bF])), ("%s%d__wlgLastIssue10Time__" + toString(dp[bG])), ("%s%d__wlgTotalFarmingPower__" + toString(dp[bH])), ("%s%d__wlgAcresStakedTotal__" + toString(dp[bI]))]) | |
460 | 467 | } | |
461 | 468 | ||
462 | 469 | ||
463 | 470 | ||
464 | - | @Callable(cS) | |
465 | - | func lotteryStatsREADONLY (bH) = { | |
466 | - | let dm = (height / X) | |
467 | - | let dn = valueOrElse(getString(w, aT(bH)), "") | |
468 | - | $Tuple2(nil, [("%s%d__totalTickets__" + toString(valueOrElse(getInteger(w, aV), 0))), ("%s%d__userTickets__" + toString(valueOrElse(getInteger(w, aU(bH)), 0))), ("%s%d__blockchainDay__" + toString(dm)), ("%s%d__blockchainMinute__" + toString((height % X))), ("%s%d__winningBetToday__" + toString(aW(dm))), ("%s%s__usersBet__" + dn)]) | |
471 | + | @Callable(cW) | |
472 | + | func lotteryStatsREADONLY (bK) = { | |
473 | + | let dq = (height / Y) | |
474 | + | let aX = (height / Z) | |
475 | + | let dr = (aX - 1) | |
476 | + | let ds = valueOrElse(getInteger(w, aW(bK, aX)), 0) | |
477 | + | let dt = valueOrElse(getInteger(w, aW(bK, dr)), 0) | |
478 | + | let du = valueOrElse(getInteger(w, aY(aX)), 0) | |
479 | + | let dv = valueOrElse(getInteger(w, aY(dr)), 0) | |
480 | + | let dw = valueOrElse(getString(w, aV(bK)), "") | |
481 | + | $Tuple2(nil, [((("%s%d%d__totalTickets__" + toString(dv)) + a) + toString(du)), ((("%s%d%d__userTickets__" + toString(dt)) + a) + toString(ds)), ("%s%d__blockchainDay__" + toString(dq)), ("%s%d__blockchainMinute__" + toString((height % Y))), ("%s%d__winningBetToday__" + toString(aZ(dq))), ("%s%s__usersBet__" + dw)]) | |
469 | 482 | } | |
470 | 483 | ||
471 | 484 |
github/deemru/w8io/169f3d6 344.25 ms ◑![]()