tx · Ct8W11t2G1ttQsodNs5mHhYVhHNptaAmvS9NpgtE5rCK

3N5yarEiTQccnnuerogYT3BxM5Zc5bRgDZy:  -0.03100000 Waves

2022.11.21 13:53 [2326779] smart account 3N5yarEiTQccnnuerogYT3BxM5Zc5bRgDZy > SELF 0.00000000 Waves

{ "type": 13, "id": "Ct8W11t2G1ttQsodNs5mHhYVhHNptaAmvS9NpgtE5rCK", "fee": 3100000, "feeAssetId": null, "timestamp": 1669027994735, "version": 2, "chainId": 84, "sender": "3N5yarEiTQccnnuerogYT3BxM5Zc5bRgDZy", "senderPublicKey": "FK9j3YFWVChXKESTn33fMZz1JseCNMMqHhfB7smxJo4e", "proofs": [ "4n49kb9DK2TnNncpgdrtGiYwqU6EGmMEmYvKJVnzF8wocq4CKt8XL9miJyBvF642tnDT834XJ6BfC9zhFnCnbLt7" ], "script": "base64:BgIvCAISBQoDAQgIEgASABIDCgEBEgASABIAEgMKAQgSAwoBCBIECgIIARIDCgEBEgBpAAlzZXBhcmF0b3ICAl9fAANTRVACAl9fAAVNVUxUNgDAhD0ABU1VTFQ4AIDC1y8ABk1VTFRYNgkAtgIBBQVNVUxUNgAGTVVMVFg4CQC2AgEFBU1VTFQ4AAdNVUxUWDE4CQC2AgEAgICQu7rWrfANAApXQVZFU0lEU1RSAgVXQVZFUwAHV0FWRVNJRAkA2QQBBQpXQVZFU0lEU1RSAAlEQVlNSUxMSVMAgLiZKQANREVGQVVMVFBFUklPRAkAaAIAoAsADgAZSWR4Q29udHJvbENmZ05ldXRyaW5vRGFwcAABABhJZHhDb250cm9sQ2ZnQXVjdGlvbkRhcHAAAgAUSWR4Q29udHJvbENmZ1JwZERhcHAAAwAVSWR4Q29udHJvbENmZ01hdGhEYXBwAAQAHElkeENvbnRyb2xDZmdMaXF1aWRhdGlvbkRhcHAABQAVSWR4Q29udHJvbENmZ1Jlc3REYXBwAAYAHUlkeENvbnRyb2xDZmdOb2RlUmVnaXN0cnlEYXBwAAcAHElkeENvbnRyb2xDZmdOc2J0U3Rha2luZ0RhcHAACAAZSWR4Q29udHJvbENmZ01lZGlhdG9yRGFwcAAJABxJZHhDb250cm9sQ2ZnU3VyZlN0YWtpbmdEYXBwAAoAIElkeENvbnRyb2xDZmdHbnNidENvbnRyb2xsZXJEYXBwAAsAF0lkeENvbnRyb2xDZmdSZXN0VjJEYXBwAAwAG0lkeENvbnRyb2xDZmdHb3Zlcm5hbmNlRGFwcAANAQ9nZXRTdHJpbmdPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQCsAgIJAKwCAgkArAICCQCsAgICCm1hbmRhdG9yeSAJAKUIAQUHYWRkcmVzcwIBLgUDa2V5Ag8gaXMgbm90IGRlZmluZWQBEWtleUNvbnRyb2xBZGRyZXNzAAIcJXMlc19fY29uZmlnX19jb250cm9sQWRkcmVzcwENa2V5Q29udHJvbENmZwACESVzX19jb250cm9sQ29uZmlnARVrZXlHbnNidEZyb21TdXJmQ29lZmYAAh0lcyVzX19jZmdfX2duc2J0RnJvbVN1cmZDb2VmZgEUcmVhZENvbnRyb2xDZmdPckZhaWwBB2NvbnRyb2wJALwJAgkBD2dldFN0cmluZ09yRmFpbAIFB2NvbnRyb2wJAQ1rZXlDb250cm9sQ2ZnAAUDU0VQARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCCmNvbnRyb2xDZmcDaWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQpjb250cm9sQ2ZnBQNpZHgJAKwCAgItQ29udHJvbCBjZmcgZG9lc24ndCBjb250YWluIGFkZHJlc3MgYXQgaW5kZXggCQCkAwEFA2lkeAAPY29udHJvbENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJARFrZXlDb250cm9sQWRkcmVzcwACIzNONE5TN2Q0Sm85YTZGMTRMaUZVS0tZVmRVa2tmMmVQNFp4AApjb250cm9sQ2ZnCQEUcmVhZENvbnRyb2xDZmdPckZhaWwBBQ9jb250cm9sQ29udHJhY3QADG1hdGhDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCmNvbnRyb2xDZmcFFUlkeENvbnRyb2xDZmdNYXRoRGFwcAAQbmV1dHJpbm9Db250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCmNvbnRyb2xDZmcFGUlkeENvbnRyb2xDZmdOZXV0cmlub0RhcHAAD2F1Y3Rpb25Db250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCmNvbnRyb2xDZmcFGElkeENvbnRyb2xDZmdBdWN0aW9uRGFwcAALZ292Q29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQpjb250cm9sQ2ZnBRtJZHhDb250cm9sQ2ZnR292ZXJuYW5jZURhcHAAEmduc2J0RnJvbVN1cmZDb2VmZgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEVa2V5R25zYnRGcm9tU3VyZkNvZWZmAACsAgEMa2V5Qm9uZEFzc2V0AAINYm9uZF9hc3NldF9pZAEZa2V5QXVjdGlvbkNvbnRyYWN0QWRkcmVzcwACEGF1Y3Rpb25fY29udHJhY3QBEGtleU1pbkxvY2tBbW91bnQAAhElc19fbWluTG9ja0Ftb3VudAEQa2V5U3Rha2VkQXNzZXRJZAACESVzX19zdGFrZWRBc3NldElkARZrZXlMb2NrUGFyYW1Vc2VyQW1vdW50AQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgtwYXJhbUJ5VXNlcgkAzAgCCQClCAEFC3VzZXJBZGRyZXNzCQDMCAICBmFtb3VudAUDbmlsBQlzZXBhcmF0b3IBFmtleUxvY2tQYXJhbVN0YXJ0QmxvY2sBC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICC3BhcmFtQnlVc2VyCQDMCAIJAKUIAQULdXNlckFkZHJlc3MJAMwIAgIFc3RhcnQFA25pbAUJc2VwYXJhdG9yASZrZXlMb2NrUGFyYW1Wb3RpbmdQb3dlckVmZmVjdGl2ZUhlaWdodAELdXNlckFkZHJlc3MJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgILcGFyYW1CeVVzZXIJAMwIAgkApQgBBQt1c2VyQWRkcmVzcwkAzAgCAhF2cEVmZmVjdGl2ZUhlaWdodAUDbmlsBQlzZXBhcmF0b3IBEGtleUhpc3RvcnlSZWNvcmQDBHR5cGULdXNlckFkZHJlc3MEdHhJZAkAuQkCCQDMCAICCCVzJXMlcyVzCQDMCAICB2hpc3RvcnkJAMwIAgUEdHlwZQkAzAgCCQClCAEFC3VzZXJBZGRyZXNzCQDMCAIJANgEAQUEdHhJZAUDbmlsBQlzZXBhcmF0b3IBF2tleUxvY2tQYXJhbVRvdGFsQW1vdW50AAkAuQkCCQDMCAICBCVzJXMJAMwIAgIFc3RhdHMJAMwIAgIRYWN0aXZlVG90YWxMb2NrZWQFA25pbAUJc2VwYXJhdG9yARJrZXlTdGF0c0xvY2tzQ291bnQACQC5CQIJAMwIAgIEJXMlcwkAzAgCAgVzdGF0cwkAzAgCAgpsb2Nrc0NvdW50BQNuaWwFCXNlcGFyYXRvcgESa2V5U3RhdHNVc2Vyc0NvdW50AAkAuQkCCQDMCAICBCVzJXMJAMwIAgIFc3RhdHMJAMwIAgIQYWN0aXZlVXNlcnNDb3VudAUDbmlsBQlzZXBhcmF0b3IBF2tleVN0YXRzRGVwb3NpdEFtdEJ5RGF5AQl0aW1lc3RhbXAJALkJAgkAzAgCAgYlcyVzJWQJAMwIAgIFc3RhdHMJAMwIAgIPZGVwb3NpdEFtdEJ5RGF5CQDMCAIJAKQDAQUJdGltZXN0YW1wBQNuaWwFCXNlcGFyYXRvcgEYa2V5U3RhdHNEZXBvc2l0QW10VG90YWxzAAkAuQkCCQDMCAICBCVzJXMJAMwIAgIFc3RhdHMJAMwIAgIQZGVwb3NpdEFtdFRvdGFscwUDbmlsBQlzZXBhcmF0b3IBGGtleVN1cHBvcnRlZFJld2FyZEFzc2V0cwACFXN1cHBvcnRlZFJld2FyZEFzc2V0cwERa2V5RGVwb3NpdE51bUxhc3QACQC5CQIJAMwIAgIEJXMlcwkAzAgCAgNkZXAJAMwIAgIHbGFzdE51bQUDbmlsBQlzZXBhcmF0b3IBG2tleVVzZXJSZXdhcmRGcm9tRGVwb3NpdE51bQELdXNlckFkZHJlc3MJALkJAgkAzAgCAgQlcyVzCQDMCAICEXVzZXJSd2RGcm9tRGVwTnVtCQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwFCXNlcGFyYXRvcgEVa2V5UmV3YXJkUGVyTnNidFN1bUF0AgpkZXBvc2l0TnVtA3RrbgkAuQkCCQDMCAICBCVzJWQJAMwIAgIVcndkUGVyTnNidFN1bUJ5RGVwTnVtCQDMCAIJAKQDAQUKZGVwb3NpdE51bQkAzAgCBQN0a24FA25pbAUJc2VwYXJhdG9yAQlrZXlSZXdhcmQCC3VzZXJBZGRyZXNzA3RrbgkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgNyd2QJAMwIAgULdXNlckFkZHJlc3MJAMwIAgUDdGtuBQNuaWwFCXNlcGFyYXRvcgEKa2V5Q2xhaW1lZAILdXNlckFkZHJlc3MDdGtuCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICA2NsbQkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCBQN0a24FA25pbAUJc2VwYXJhdG9yARdrZXlOb3REaXN0cmlidXRlZFJld2FyZAEDdGtuCQC5CQIJAMwIAgIEJXMlcwkAzAgCAg5ub3REaXN0cmlidXRlZAkAzAgCBQN0a24FA25pbAUJc2VwYXJhdG9yARNrZXlWcFBlcmlvZER1cmF0aW9uAAkAuQkCCQDMCAICBCVzJXMJAMwIAgICdnAJAMwIAgIOcGVyaW9kRHVyYXRpb24FA25pbAUJc2VwYXJhdG9yARxrZXlMYXN0VG90YWxzUGVyaW9kUHJvY2Vzc2VkAAkAuQkCCQDMCAICBCVzJXMJAMwIAgICdnAJAMwIAgIZbGFzdFRvdGFsc1BlcmlvZFByb2Nlc3NlZAUDbmlsBQlzZXBhcmF0b3IBGmtleUxhc3RVc2VyUGVyaW9kUHJvY2Vzc2VkAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgJ2cAkAzAgCAhdsYXN0VXNlclBlcmlvZFByb2Nlc3NlZAkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQlzZXBhcmF0b3IBDmtleVRvdGFsTWF0dXJlAAkAuQkCCQDMCAICBCVzJXMJAMwIAgICdnAJAMwIAgILdG90YWxNYXR1cmUFA25pbAUJc2VwYXJhdG9yAQxrZXlUb3RhbFRlZW4ACQC5CQIJAMwIAgIEJXMlcwkAzAgCAgJ2cAkAzAgCAgl0b3RhbFRlZW4FA25pbAUJc2VwYXJhdG9yAQtrZXlUb3RhbEtpZAAJALkJAgkAzAgCAgQlcyVzCQDMCAICAnZwCQDMCAICCHRvdGFsS2lkBQNuaWwFCXNlcGFyYXRvcgENa2V5VXNlck1hdHVyZQELdXNlckFkZHJlc3MJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgICdnAJAMwIAgIKdXNlck1hdHVyZQkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQlzZXBhcmF0b3IBC2tleVVzZXJUZWVuAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgJ2cAkAzAgCAgh1c2VyVGVlbgkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQlzZXBhcmF0b3IBCmtleVVzZXJLaWQBC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICAnZwCQDMCAICB3VzZXJLaWQJAMwIAgULdXNlckFkZHJlc3MFA25pbAUJc2VwYXJhdG9yAQV0b1gxOAIHb3JpZ1ZhbAhvcmlnTXVsdAkAvAIDCQC2AgEFB29yaWdWYWwFB01VTFRYMTgFCG9yaWdNdWx0AQxnZXRJbnRPclplcm8BA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkAAAEMZ2V0SW50T3JFbHNlAgNrZXkKZGVmYXVsdFZhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkFCmRlZmF1bHRWYWwBDGdldEludE9yRmFpbAEDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwUDa2V5CQCsAgIJAKwCAgIPTWFuZGF0b3J5IHRoaXMuBQNrZXkCDyBpcyBub3QgZGVmaW5lZAEMZ2V0U3RyT3JFbHNlAgNrZXkKZGVmYXVsdFZhbAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQNrZXkFCmRlZmF1bHRWYWwBD3RvQWRkcmVzc09yRmFpbAEKYWRkcmVzc1N0cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFCmFkZHJlc3NTdHIJAKwCAgIhY291bGRuJ3QgcGFyc2UgcGFzc2VkIGFkZHJlc3NTdHI9BQphZGRyZXNzU3RyAQt0b0Fzc2V0VmVjdAEIYXNzZXRTdHIDCQAAAgUIYXNzZXRTdHIFCldBVkVTSURTVFIFBHVuaXQJANkEAQUIYXNzZXRTdHIBBWFzSW50AQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAgNJbnQEBnZhbEludAUHJG1hdGNoMAUGdmFsSW50CQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50ARJhc1N3YXBQYXJhbXNTVFJVQ1QBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIjKEludCwgSW50LCBJbnQsIEludCwgSW50LCBJbnQsIEludCkEBnN0cnVjdAUHJG1hdGNoMAUGc3RydWN0CQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50ARNmb3JtYXRIaXN0b3J5UmVjb3JkBAlvbGRBbW91bnQIb2xkU3RhcnQJbmV3QW1vdW50CG5ld1N0YXJ0CQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQgFCWxhc3RCbG9jawZoZWlnaHQJAMwIAgkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQCkAwEFCW9sZEFtb3VudAkAzAgCCQCkAwEFCG9sZFN0YXJ0CQDMCAIJAKQDAQUJbmV3QW1vdW50CQDMCAIJAKQDAQUIbmV3U3RhcnQFA25pbAUJc2VwYXJhdG9yARhmb3JtYXRDbGFpbUhpc3RvcnlSZWNvcmQCBHVzZXIOY2xhaW1lZFJld2FyZHMJALkJAgkAzAgCAgglcyVkJWQlcwkAzAgCBQR1c2VyCQDMCAIJAKQDAQgFCWxhc3RCbG9jawZoZWlnaHQJAMwIAgkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCBQ5jbGFpbWVkUmV3YXJkcwUDbmlsBQlzZXBhcmF0b3IBEkhpc3RvcnlSZWNvcmRFbnRyeQcEdHlwZQt1c2VyQWRkcmVzcwR0eElkCW9sZEFtb3VudAhvbGRTdGFydAluZXdBbW91bnQIbmV3U3RhcnQJAQtTdHJpbmdFbnRyeQIJARBrZXlIaXN0b3J5UmVjb3JkAwUEdHlwZQULdXNlckFkZHJlc3MFBHR4SWQJARNmb3JtYXRIaXN0b3J5UmVjb3JkBAUJb2xkQW1vdW50BQhvbGRTdGFydAUJbmV3QW1vdW50BQhuZXdTdGFydAERQ2xhaW1IaXN0b3J5RW50cnkDC3VzZXJBZGRyZXNzBHR4SWQOY2xhaW1lZFJld2FyZHMJAQtTdHJpbmdFbnRyeQIJARBrZXlIaXN0b3J5UmVjb3JkAwIFY2xhaW0FC3VzZXJBZGRyZXNzBQR0eElkCQEYZm9ybWF0Q2xhaW1IaXN0b3J5UmVjb3JkAgkApQgBBQt1c2VyQWRkcmVzcwUOY2xhaW1lZFJld2FyZHMBC1N0YXRzUmVzdWx0Aw50b3RhbExvY2tlZEluYwxsb2NrQ291bnRJbmMNdXNlcnNDb3VudEluYwQKbG9ja3NDb3VudAkBDGdldEludE9yWmVybwEJARJrZXlTdGF0c0xvY2tzQ291bnQABAp1c2Vyc0NvdW50CQEMZ2V0SW50T3JaZXJvAQkBEmtleVN0YXRzVXNlcnNDb3VudAAEC3RvdGFsQW1vdW50CQEMZ2V0SW50T3JaZXJvAQkBF2tleUxvY2tQYXJhbVRvdGFsQW1vdW50AAQOdG90YWxBbW91bnROZXcJAGQCBQt0b3RhbEFtb3VudAUOdG90YWxMb2NrZWRJbmMJAJUKAwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmtleVN0YXRzTG9ja3NDb3VudAAJAGQCBQpsb2Nrc0NvdW50BQxsb2NrQ291bnRJbmMJAMwIAgkBDEludGVnZXJFbnRyeQIJARJrZXlTdGF0c1VzZXJzQ291bnQACQBkAgUKdXNlcnNDb3VudAUNdXNlcnNDb3VudEluYwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBF2tleUxvY2tQYXJhbVRvdGFsQW1vdW50AAUOdG90YWxBbW91bnROZXcFA25pbAULdG90YWxBbW91bnQFDnRvdGFsQW1vdW50TmV3AQ9Mb2NrUGFyYW1zRW50cnkDC3VzZXJBZGRyZXNzBmFtb3VudBp2b3RpbmdQb3dlckVmZmVjdGl2ZUhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleUxvY2tQYXJhbVVzZXJBbW91bnQBBQt1c2VyQWRkcmVzcwUGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5TG9ja1BhcmFtU3RhcnRCbG9jawEFC3VzZXJBZGRyZXNzBRp2b3RpbmdQb3dlckVmZmVjdGl2ZUhlaWdodAUDbmlsAQ9nZXRQYXJhbXNPckZhaWwACQCUCgIJANkEAQkBD2dldFN0cmluZ09yRmFpbAIFBHRoaXMJARBrZXlTdGFrZWRBc3NldElkAAkBDGdldEludE9yRmFpbAEJARBrZXlNaW5Mb2NrQW1vdW50AAEMaXNBY3RpdmVVc2VyAQt1c2VyQWRkcmVzcwkAZgIJAQxnZXRJbnRPckVsc2UCCQEWa2V5TG9ja1BhcmFtVXNlckFtb3VudAEFC3VzZXJBZGRyZXNzAAAAAAETZ2V0VXNlclBhcmFtc09yVW5pdAELdXNlckFkZHJlc3MDCQEMaXNBY3RpdmVVc2VyAQULdXNlckFkZHJlc3MJAJUKAwcJAQxnZXRJbnRPckZhaWwBCQEWa2V5TG9ja1BhcmFtVXNlckFtb3VudAEFC3VzZXJBZGRyZXNzCQEMZ2V0SW50T3JGYWlsAQkBFmtleUxvY2tQYXJhbVN0YXJ0QmxvY2sBBQt1c2VyQWRkcmVzcwUEdW5pdAETZ2V0VXNlclBhcmFtc09yRmFpbAELdXNlckFkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkBE2dldFVzZXJQYXJhbXNPclVuaXQBBQt1c2VyQWRkcmVzcwkArAICCQCsAgICBVVzZXIgCQClCAEFC3VzZXJBZGRyZXNzAg8gaXMgbm90IGRlZmluZWQAEnN1cHBvcnRlZEFzc2V0c1N0cgkBDGdldFN0ck9yRWxzZQIJARhrZXlTdXBwb3J0ZWRSZXdhcmRBc3NldHMAAgAAE3N1cHBvcnRlZEFzc2V0c0xpc3QJALUJAgUSc3VwcG9ydGVkQXNzZXRzU3RyAgFfAQpjYWxjUmV3YXJkBQt1c2VyQWRkcmVzcwdhc3NldElkDXN0YWtlZEFtb3VudFgOZGVwb3NpdE51bVVzZXIOZGVwb3NpdE51bUxhc3QEF3Jld2FyZFBlck5zYnRTdW1MYXN0S0VZCQEVa2V5UmV3YXJkUGVyTnNidFN1bUF0AgUOZGVwb3NpdE51bUxhc3QFB2Fzc2V0SWQECnN1bUxhc3RYMTgJAKcDAQkBDGdldFN0ck9yRWxzZQIJARVrZXlSZXdhcmRQZXJOc2J0U3VtQXQCBQ5kZXBvc2l0TnVtTGFzdAUHYXNzZXRJZAIBMAQKc3VtVXNlclgxOAkApwMBCQEMZ2V0U3RyT3JFbHNlAgkBFWtleVJld2FyZFBlck5zYnRTdW1BdAIFDmRlcG9zaXROdW1Vc2VyBQdhc3NldElkAgEwBBFyZXdhcmREeW5hbWljUGFydAkAoAMBCQC8AgMJALgCAgUKc3VtTGFzdFgxOAUKc3VtVXNlclgxOAUNc3Rha2VkQW1vdW50WAUHTVVMVFgxOAQTcmV3YXJkQ2FjaGVkUGFydEtFWQkBCWtleVJld2FyZAIFC3VzZXJBZGRyZXNzBQdhc3NldElkBBByZXdhcmRDYWNoZWRQYXJ0CQEMZ2V0SW50T3JFbHNlAgUTcmV3YXJkQ2FjaGVkUGFydEtFWQAACQCWCgQJAGQCBRByZXdhcmRDYWNoZWRQYXJ0BRFyZXdhcmREeW5hbWljUGFydAUQcmV3YXJkQ2FjaGVkUGFydAURcmV3YXJkRHluYW1pY1BhcnQFE3Jld2FyZENhY2hlZFBhcnRLRVkBDHRvU3RhcnRPZkRheQEJdGltZXN0YW1wCQBoAgkAaQIFCXRpbWVzdGFtcAUJREFZTUlMTElTBQlEQVlNSUxMSVMBE2ZpbmRFbGVtZW50UG9zaXRpb24DA3NyYwdlbGVtZW50A3NlcAQMZWxlbWVudFN0YXJ0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJALMJAgUDc3JjBQdlbGVtZW50CQCsAgIJAKwCAgkArAICAhZ0aGVyZSBpcyBubyBzdWJzdHJpbmcgBQdlbGVtZW50AgQgaW4gBQNzcmMDCQAAAgUMZWxlbWVudFN0YXJ0AAAAAAQEbGVmdAkArwICBQNzcmMFDGVsZW1lbnRTdGFydAkAZQIJAJADAQkAtQkCBQRsZWZ0BQNzZXAAAQATRGVwb3NpdFRvdGFsc1BSRUZJWAIkJWQlZCVkJWQlZCVkJWQlZCVkJWQlZCVkJWQlZCVkJWQlZCVkARN1cGRhdGVEZXBvc2l0VG90YWxzAwdjdXJyVmFsC2lkeFRvVXBkYXRlCGRlbHRhQW10BAdjdXJyQXJyCQC1CQIFB2N1cnJWYWwFA1NFUAoBDnVwZERlcFRvdEJ5SWR4AQNpZHgDCQECIT0CBQNpZHgFC2lkeFRvVXBkYXRlCQCRAwIFB2N1cnJBcnIFA2lkeAkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB2N1cnJBcnIFA2lkeAUIZGVsdGFBbXQJALkJAgkAzAgCBRNEZXBvc2l0VG90YWxzUFJFRklYCQDMCAIJAQ51cGREZXBUb3RCeUlkeAEAAQkAzAgCCQEOdXBkRGVwVG90QnlJZHgBAAIJAMwIAgkBDnVwZERlcFRvdEJ5SWR4AQADCQDMCAIJAQ51cGREZXBUb3RCeUlkeAEABAkAzAgCCQEOdXBkRGVwVG90QnlJZHgBAAUJAMwIAgkBDnVwZERlcFRvdEJ5SWR4AQAGCQDMCAIJAQ51cGREZXBUb3RCeUlkeAEABwkAzAgCCQEOdXBkRGVwVG90QnlJZHgBAAgJAMwIAgkBDnVwZERlcFRvdEJ5SWR4AQAJCQDMCAIJAQ51cGREZXBUb3RCeUlkeAEACgkAzAgCCQEOdXBkRGVwVG90QnlJZHgBAAsJAMwIAgkBDnVwZERlcFRvdEJ5SWR4AQAMCQDMCAIJAQ51cGREZXBUb3RCeUlkeAEADQkAzAgCCQEOdXBkRGVwVG90QnlJZHgBAA4JAMwIAgkBDnVwZERlcFRvdEJ5SWR4AQAPCQDMCAIJAQ51cGREZXBUb3RCeUlkeAEAEAkAzAgCCQEOdXBkRGVwVG90QnlJZHgBABEJAMwIAgkBDnVwZERlcFRvdEJ5SWR4AQASBQNuaWwFA1NFUAEVRGVwb3NpdHNUb3RhbHNFbnRyaWVzAg1kZXBvc2l0QW1vdW50CmFzc2V0SWRTdHIECnN0YXJ0T2ZEYXkJAQx0b1N0YXJ0T2ZEYXkBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQIYnlEYXlLRVkJARdrZXlTdGF0c0RlcG9zaXRBbXRCeURheQEFCnN0YXJ0T2ZEYXkECXRvdGFsc0tFWQkBGGtleVN0YXRzRGVwb3NpdEFtdFRvdGFscwAECHBvc2l0aW9uCQETZmluZEVsZW1lbnRQb3NpdGlvbgMFEnN1cHBvcnRlZEFzc2V0c1N0cgUKYXNzZXRJZFN0cgIBXwQLZGVmYXVsdERBVEEJAKwCAgUTRGVwb3NpdFRvdGFsc1BSRUZJWAI2X18wX18wX18wX18wX18wX18wX18wX18wX18wX18wX18wX18wX18wX18wX18wX18wX18wX18wBA5jdXJyVG90YWxzREFUQQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQl0b3RhbHNLRVkFC2RlZmF1bHREQVRBBA1uZXdUb3RhbHNEQVRBCQETdXBkYXRlRGVwb3NpdFRvdGFscwMFDmN1cnJUb3RhbHNEQVRBCQBkAgUIcG9zaXRpb24AAQUNZGVwb3NpdEFtb3VudAkAzAgCCQELU3RyaW5nRW50cnkCBQl0b3RhbHNLRVkFDW5ld1RvdGFsc0RBVEEJAMwIAgkBC1N0cmluZ0VudHJ5AgUIYnlEYXlLRVkFDW5ld1RvdGFsc0RBVEEFA25pbAENUmV3YXJkRW50cmllcwMJaXNOZXdVc2VyC3VzZXJBZGRyZXNzDHN0YWtlZEFtb3VudAQNc3Rha2VkQW1vdW50WAkAtgIBBQxzdGFrZWRBbW91bnQEG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQkBG2tleVVzZXJSZXdhcmRGcm9tRGVwb3NpdE51bQEFC3VzZXJBZGRyZXNzBA5kZXBvc2l0TnVtVXNlcgkBDGdldEludE9yRWxzZQIFG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQD///////////8BBA5kZXBvc2l0TnVtTGFzdAkBDGdldEludE9yRWxzZQIJARFrZXlEZXBvc2l0TnVtTGFzdAAA////////////AQoBG2ZvckVhY2hBc3NldENhY2hlVXNlclJld2FyZAIFYWNjdW0FYXNzZXQEDSR0MDEyMTA0MTIyMzkJAQpjYWxjUmV3YXJkBQULdXNlckFkZHJlc3MFBWFzc2V0BQ1zdGFrZWRBbW91bnRYBQ5kZXBvc2l0TnVtVXNlcgUOZGVwb3NpdE51bUxhc3QEC3Jld2FyZFRvdGFsCAUNJHQwMTIxMDQxMjIzOQJfMQQGY2FjaGVkCAUNJHQwMTIxMDQxMjIzOQJfMgQHZHluYW1pYwgFDSR0MDEyMTA0MTIyMzkCXzMEE3Jld2FyZENhY2hlZFBhcnRLRVkIBQ0kdDAxMjEwNDEyMjM5Al80CQDNCAIFBWFjY3VtCQEMSW50ZWdlckVudHJ5AgUTcmV3YXJkQ2FjaGVkUGFydEtFWQULcmV3YXJkVG90YWwDAwkAAAIFDmRlcG9zaXROdW1MYXN0AP///////////wEJAAACBQ5kZXBvc2l0TnVtVXNlcgD///////////8BBwUDbmlsAwMJAAACBQ5kZXBvc2l0TnVtTGFzdAD///////////8BCQBmAgUOZGVwb3NpdE51bVVzZXIA////////////AQcJAAIBAi9pbnZhbGlkIGRlcG9zaXROdW1MYXN0IGFuZCBkZXBvc2l0TnVtVXNlciBzdGF0ZQMDCQBmAgUOZGVwb3NpdE51bUxhc3QA////////////AQkAZwIFDmRlcG9zaXROdW1Vc2VyAP///////////wEHAwUJaXNOZXdVc2VyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRt1c2VyUmV3YXJkRnJvbURlcG9zaXROdW1LRVkFDmRlcG9zaXROdW1MYXN0BQNuaWwJAM0IAgoAAiRsBRNzdXBwb3J0ZWRBc3NldHNMaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARtmb3JFYWNoQXNzZXRDYWNoZVVzZXJSZXdhcmQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDkJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkJAQxJbnRlZ2VyRW50cnkCBRt1c2VyUmV3YXJkRnJvbURlcG9zaXROdW1LRVkFDmRlcG9zaXROdW1MYXN0CQACAQkArAICCQCsAgIJAKwCAgIkdW5jb3ZlcmVkIGNvbmRpdGlvbjogZGVwb3NpdE51bUxhc3Q9CQCkAwEFDmRlcG9zaXROdW1MYXN0AhAgZGVwb3NpdE51bVVzZXI9CQCkAwEFDmRlcG9zaXROdW1Vc2VyASJJbmNyZW1lbnROb3REaXN0cmlidXRlZFJld2FyZEVudHJ5AgN0a24JYW1vdW50SW5jBBdub3REaXN0cmlidXRlZFJld2FyZEtFWQkBF2tleU5vdERpc3RyaWJ1dGVkUmV3YXJkAQUDdGtuBBRub3REaXN0cmlidXRlZFJld2FyZAkBDGdldEludE9yRWxzZQIFF25vdERpc3RyaWJ1dGVkUmV3YXJkS0VZAAAJAMwIAgkBDEludGVnZXJFbnRyeQIFF25vdERpc3RyaWJ1dGVkUmV3YXJkS0VZCQBkAgUUbm90RGlzdHJpYnV0ZWRSZXdhcmQFCWFtb3VudEluYwUDbmlsAQtzdXJmVG9HbnNidAEHc3VyZkFtdAkAaQIFB3N1cmZBbXQFEmduc2J0RnJvbVN1cmZDb2VmZgEKbWVyZ2VTdGFrZQQLdXNlckFkZHJlc3MLYW1vdW50VG9BZGQIdXNlclRlZW4HdXNlcktpZAQNJHQwMTUxNjIxNTI3MgkBC3ZhbHVlT3JFbHNlAgkBE2dldFVzZXJQYXJhbXNPclVuaXQBBQt1c2VyQWRkcmVzcwkAlQoDBgAAAAAECWlzTmV3VXNlcggFDSR0MDE1MTYyMTUyNzICXzEEDHN0YWtlZEFtb3VudAgFDSR0MDE1MTYyMTUyNzICXzIEEXZwRWZmZWN0aXZlSGVpZ2h0CAUNJHQwMTUxNjIxNTI3MgJfMwQPc3Rha2VkQW1vdW50TkVXAwUJaXNOZXdVc2VyBQthbW91bnRUb0FkZAkAZAIFC2Ftb3VudFRvQWRkBQxzdGFrZWRBbW91bnQEAlcyCQEMZ2V0SW50T3JFbHNlAgkBE2tleVZwUGVyaW9kRHVyYXRpb24ABQ1ERUZBVUxUUEVSSU9EBAZwZXJpb2QJAGkCBQZoZWlnaHQFAlcyBBR2cEVmZmVjdGl2ZVBlcmlvZE5FVwMJAGYCBQd1c2VyS2lkAAAJAGQCBQZwZXJpb2QAAgMJAGYCBQh1c2VyVGVlbgAACQBkAgUGcGVyaW9kAAEFBnBlcmlvZAkAlwoFBQlpc05ld1VzZXIFDHN0YWtlZEFtb3VudAURdnBFZmZlY3RpdmVIZWlnaHQFD3N0YWtlZEFtb3VudE5FVwkAaAIFFHZwRWZmZWN0aXZlUGVyaW9kTkVXBQJXMgEMdXBkYXRlVG90YWxzAAQGcGVyaW9kCQBpAgUGaGVpZ2h0CQEMZ2V0SW50T3JFbHNlAgkBE2tleVZwUGVyaW9kRHVyYXRpb24ABQ1ERUZBVUxUUEVSSU9EAwkAZgIFBnBlcmlvZAkBDGdldEludE9yWmVybwEJARxrZXlMYXN0VG90YWxzUGVyaW9kUHJvY2Vzc2VkAAQLdG90YWxNYXR1cmUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDmtleVRvdGFsTWF0dXJlAAkBDGdldEludE9yWmVybwEJARdrZXlMb2NrUGFyYW1Ub3RhbEFtb3VudAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ5rZXlUb3RhbE1hdHVyZQAJAGQCBQt0b3RhbE1hdHVyZQkBDGdldEludE9yWmVybwEJAQxrZXlUb3RhbFRlZW4ACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEMa2V5VG90YWxUZWVuAAkBDGdldEludE9yWmVybwEJAQtrZXlUb3RhbEtpZAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQtrZXlUb3RhbEtpZAAAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHGtleUxhc3RUb3RhbHNQZXJpb2RQcm9jZXNzZWQABQZwZXJpb2QFA25pbAUDbmlsAQdvblN0YWtlAg51c2VyQWRkcmVzc1N0cgthbW91bnRUb0FkZAMJAGYCAAAFC2Ftb3VudFRvQWRkCQACAQIaYW1vdW50VG9BZGQgc2hvdWxkIGJlID49IDAEAlcyCQEMZ2V0SW50T3JFbHNlAgkBE2tleVZwUGVyaW9kRHVyYXRpb24ABQ1ERUZBVUxUUEVSSU9EBAZwZXJpb2QJAGkCBQZoZWlnaHQFAlcyBAt0b3RhbE1hdHVyZQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEOa2V5VG90YWxNYXR1cmUACQEMZ2V0SW50T3JaZXJvAQkBF2tleUxvY2tQYXJhbVRvdGFsQW1vdW50AAQJdG90YWxUZWVuCQEMZ2V0SW50T3JaZXJvAQkBDGtleVRvdGFsVGVlbgAECHRvdGFsS2lkCQEMZ2V0SW50T3JaZXJvAQkBC2tleVRvdGFsS2lkAAQKdXNlck1hdHVyZQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQENa2V5VXNlck1hdHVyZQEFDnVzZXJBZGRyZXNzU3RyCQEMZ2V0SW50T3JaZXJvAQkBFmtleUxvY2tQYXJhbVVzZXJBbW91bnQBCQERQGV4dHJOYXRpdmUoMTA2MikBBQ51c2VyQWRkcmVzc1N0cgQIdXNlclRlZW4JAQxnZXRJbnRPclplcm8BCQELa2V5VXNlclRlZW4BBQ51c2VyQWRkcmVzc1N0cgQHdXNlcktpZAkBDGdldEludE9yWmVybwEJAQprZXlVc2VyS2lkAQUOdXNlckFkZHJlc3NTdHIEA3RtcAMJAGYCBQZwZXJpb2QJAQxnZXRJbnRPclplcm8BCQEaa2V5TGFzdFVzZXJQZXJpb2RQcm9jZXNzZWQBBQ51c2VyQWRkcmVzc1N0cgkAmQoHCQBkAgULdG90YWxNYXR1cmUFCHVzZXJUZWVuCQBkAgUJdG90YWxUZWVuCQBlAgUHdXNlcktpZAUIdXNlclRlZW4JAGUCBQh0b3RhbEtpZAUHdXNlcktpZAkAZAIFCnVzZXJNYXR1cmUFCHVzZXJUZWVuBQd1c2VyS2lkAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJARprZXlMYXN0VXNlclBlcmlvZFByb2Nlc3NlZAEFDnVzZXJBZGRyZXNzU3RyBQZwZXJpb2QFA25pbAkAmQoHBQt0b3RhbE1hdHVyZQUJdG90YWxUZWVuBQh0b3RhbEtpZAUKdXNlck1hdHVyZQUIdXNlclRlZW4FB3VzZXJLaWQFA25pbAQGdG90YWxzAwkAZgIFBnBlcmlvZAkBDGdldEludE9yWmVybwEJARxrZXlMYXN0VG90YWxzUGVyaW9kUHJvY2Vzc2VkAAkAlgoECQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOa2V5VG90YWxNYXR1cmUACQBkAggFA3RtcAJfMQgFA3RtcAJfMgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDGtleVRvdGFsVGVlbgAIBQN0bXACXzMJAMwIAgkBDEludGVnZXJFbnRyeQIJAQtrZXlUb3RhbEtpZAAAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHGtleUxhc3RUb3RhbHNQZXJpb2RQcm9jZXNzZWQABQZwZXJpb2QFA25pbAkAZAIIBQN0bXACXzEIBQN0bXACXzIIBQN0bXACXzMAAAkAlgoEBQNuaWwFC3RvdGFsTWF0dXJlBQl0b3RhbFRlZW4FCHRvdGFsS2lkBAZuZXdLaWQJAGsDBQthbW91bnRUb0FkZAkAagIFBmhlaWdodAUCVzIFAlcyBAduZXdUZWVuCQBlAgULYW1vdW50VG9BZGQFBm5ld0tpZAkAmQoHCQDOCAIJAM0IAgkAzQgCCQDNCAIIBQZ0b3RhbHMCXzEJAQxJbnRlZ2VyRW50cnkCCQENa2V5VXNlck1hdHVyZQEFDnVzZXJBZGRyZXNzU3RyCAUDdG1wAl80CQEMSW50ZWdlckVudHJ5AgkBC2tleVVzZXJUZWVuAQUOdXNlckFkZHJlc3NTdHIJAGQCCAUDdG1wAl81BQduZXdUZWVuCQEMSW50ZWdlckVudHJ5AgkBCmtleVVzZXJLaWQBBQ51c2VyQWRkcmVzc1N0cgkAZAIIBQN0bXACXzYFBm5ld0tpZAgFA3RtcAJfNwgFBnRvdGFscwJfMggFBnRvdGFscwJfMwgFBnRvdGFscwJfNAgFA3RtcAJfNAkAZAIIBQN0bXACXzUFB25ld1RlZW4JAGQCCAUDdG1wAl82BQZuZXdLaWQACklkeE5ld0RpZmYAAAALSWR4TmV3R25zYnQAAQEMdXNlckRlY3JlYXNlAgVnbnNidARkaWZmAwkAZwIFBGRpZmYFBWduc2J0CQDMCAIJAGUCBQRkaWZmBQVnbnNidAkAzAgCAAAFA25pbAkAzAgCAAAJAMwIAgkAZQIFBWduc2J0BQRkaWZmBQNuaWwBCW9uVW5zdGFrZQIOdXNlckFkZHJlc3NTdHIOYW1vdW50VG9SZW1vdmUDCQBnAgUOYW1vdW50VG9SZW1vdmUAAAkAAgECHGFtb3VudFRvUmVtb3ZlIHNob3VsZCBiZSA8IDAEAlcyCQEMZ2V0SW50T3JFbHNlAgkBE2tleVZwUGVyaW9kRHVyYXRpb24ABQ1ERUZBVUxUUEVSSU9EBAZwZXJpb2QJAGkCBQZoZWlnaHQFAlcyBAt0b3RhbE1hdHVyZQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEOa2V5VG90YWxNYXR1cmUACQEMZ2V0SW50T3JaZXJvAQkBF2tleUxvY2tQYXJhbVRvdGFsQW1vdW50AAQJdG90YWxUZWVuCQEMZ2V0SW50T3JaZXJvAQkBDGtleVRvdGFsVGVlbgAECHRvdGFsS2lkCQEMZ2V0SW50T3JaZXJvAQkBC2tleVRvdGFsS2lkAAQKdXNlck1hdHVyZQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQENa2V5VXNlck1hdHVyZQEFDnVzZXJBZGRyZXNzU3RyCQEMZ2V0SW50T3JaZXJvAQkBFmtleUxvY2tQYXJhbVVzZXJBbW91bnQBCQERQGV4dHJOYXRpdmUoMTA2MikBBQ51c2VyQWRkcmVzc1N0cgQIdXNlclRlZW4JAQxnZXRJbnRPclplcm8BCQELa2V5VXNlclRlZW4BBQ51c2VyQWRkcmVzc1N0cgQHdXNlcktpZAkBDGdldEludE9yWmVybwEJAQprZXlVc2VyS2lkAQUOdXNlckFkZHJlc3NTdHIEAnVtCQEMdXNlckRlY3JlYXNlAgUKdXNlck1hdHVyZQUOYW1vdW50VG9SZW1vdmUEAnV0CQEMdXNlckRlY3JlYXNlAgUIdXNlclRlZW4JAJEDAgUCdW0FCklkeE5ld0RpZmYEAnVrCQEMdXNlckRlY3JlYXNlAgUHdXNlcktpZAkAkQMCBQJ1dAUKSWR4TmV3RGlmZgMJAQIhPQIJAJEDAgUCdWsFCklkeE5ld0RpZmYAAAkAAgECEVNob3VsZCBub3QgaGFwcGVuBAN0bXADCQBmAgUGcGVyaW9kCQEMZ2V0SW50T3JaZXJvAQkBGmtleUxhc3RVc2VyUGVyaW9kUHJvY2Vzc2VkAQUOdXNlckFkZHJlc3NTdHIJAJkKBwkAZAIFC3RvdGFsTWF0dXJlCQCRAwIFAnV0BQtJZHhOZXdHbnNidAkAZAIFCXRvdGFsVGVlbgkAZQIJAJEDAgUCdWsFC0lkeE5ld0duc2J0CQCRAwIFAnV0BQtJZHhOZXdHbnNidAkAZQIFCHRvdGFsS2lkCQCRAwIFAnVrBQtJZHhOZXdHbnNidAkAZAIJAJEDAgUCdW0FC0lkeE5ld0duc2J0CQCRAwIFAnV0BQtJZHhOZXdHbnNidAkAkQMCBQJ1awULSWR4TmV3R25zYnQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGmtleUxhc3RVc2VyUGVyaW9kUHJvY2Vzc2VkAQUOdXNlckFkZHJlc3NTdHIFBnBlcmlvZAUDbmlsCQCZCgcFC3RvdGFsTWF0dXJlBQl0b3RhbFRlZW4FCHRvdGFsS2lkCQCRAwIFAnVtBQtJZHhOZXdHbnNidAkAkQMCBQJ1dAULSWR4TmV3R25zYnQJAJEDAgUCdWsFC0lkeE5ld0duc2J0BQNuaWwEBnRvdGFscwMJAGYCBQZwZXJpb2QJAQxnZXRJbnRPclplcm8BCQEca2V5TGFzdFRvdGFsc1BlcmlvZFByb2Nlc3NlZAAJAJYKBAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDmtleVRvdGFsTWF0dXJlAAkAZAIIBQN0bXACXzEIBQN0bXACXzIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQxrZXlUb3RhbFRlZW4ACAUDdG1wAl8zCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQELa2V5VG90YWxLaWQAAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJARxrZXlMYXN0VG90YWxzUGVyaW9kUHJvY2Vzc2VkAAUGcGVyaW9kBQNuaWwJAGQCCAUDdG1wAl8xCAUDdG1wAl8yCAUDdG1wAl8zAAAJAJYKBAUDbmlsBQt0b3RhbE1hdHVyZQUJdG90YWxUZWVuBQh0b3RhbEtpZAkAmQoHCQDOCAIJAM0IAgkAzQgCCQDNCAIIBQZ0b3RhbHMCXzEJAQxJbnRlZ2VyRW50cnkCCQENa2V5VXNlck1hdHVyZQEFDnVzZXJBZGRyZXNzU3RyCAUDdG1wAl80CQEMSW50ZWdlckVudHJ5AgkBC2tleVVzZXJUZWVuAQUOdXNlckFkZHJlc3NTdHIIBQN0bXACXzUJAQxJbnRlZ2VyRW50cnkCCQEKa2V5VXNlcktpZAEFDnVzZXJBZGRyZXNzU3RyCAUDdG1wAl82CAUDdG1wAl83CAUGdG90YWxzAl8yCAUGdG90YWxzAl8zCAUGdG90YWxzAl80CAUDdG1wAl80CAUDdG1wAl81CAUDdG1wAl82AQtjb21tb25TdGFrZQILdXNlckFkZHJlc3MBaQQNJHQwMjEwODMyMTEzNwkBD2dldFBhcmFtc09yRmFpbAAEDXN0YWtlZEFzc2V0SWQIBQ0kdDAyMTA4MzIxMTM3Al8xBA1taW5Mb2NrQW1vdW50CAUNJHQwMjEwODMyMTEzNwJfMgMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECFUludmFsaWQgcGF5bWVudHMgc2l6ZQQHcGF5bWVudAkAkQMCCAUBaQhwYXltZW50cwAABAZhbW91bnQIBQdwYXltZW50BmFtb3VudAQTaW52YWxpZEFzc2V0TWVzc2FnZQkArAICCQCsAgICD0ludmFsaWQgYXNzZXQuIAkA2AQBBQ1zdGFrZWRBc3NldElkAgwgaXMgZXhwZWN0ZWQEB2Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAggFB3BheW1lbnQHYXNzZXRJZAUTaW52YWxpZEFzc2V0TWVzc2FnZQMJAQIhPQIFB2Fzc2V0SWQFDXN0YWtlZEFzc2V0SWQJAAIBBRNpbnZhbGlkQXNzZXRNZXNzYWdlBA51c2VyQWRkcmVzc1N0cgkApQgBBQt1c2VyQWRkcmVzcwQBcgkBB29uU3Rha2UCBQ51c2VyQWRkcmVzc1N0cgUGYW1vdW50BAptZXJnZWREYXRhCQEKbWVyZ2VTdGFrZQQFC3VzZXJBZGRyZXNzBQZhbW91bnQIBQFyAl82CAUBcgJfNwQJaXNOZXdVc2VyCAUKbWVyZ2VkRGF0YQJfMQQMc3Rha2VkQW1vdW50CAUKbWVyZ2VkRGF0YQJfMgQRdnBFZmZlY3RpdmVIZWlnaHQIBQptZXJnZWREYXRhAl8zBA9zdGFrZWRBbW91bnRORVcIBQptZXJnZWREYXRhAl80BBR2cEVmZmVjdGl2ZUhlaWdodE5FVwgFCm1lcmdlZERhdGECXzUDCQBmAgUNbWluTG9ja0Ftb3VudAUPc3Rha2VkQW1vdW50TkVXCQACAQkArAICAhNNaW4gbG9jayBhbW91bnQgaXMgCQCkAwEFDW1pbkxvY2tBbW91bnQEDSR0MDIxOTkxMjIwOTMJAQtTdGF0c1Jlc3VsdAMFBmFtb3VudAABAwUJaXNOZXdVc2VyAAEAAAQMc3RhdHNFbnRyaWVzCAUNJHQwMjE5OTEyMjA5MwJfMQQLdG90YWxTdGFrZWQIBQ0kdDAyMTk5MTIyMDkzAl8yBA50b3RhbFN0YWtlZE5ldwgFDSR0MDIxOTkxMjIwOTMCXzMJAM4IAgkAzggCCQDOCAIJAM4IAgkAzAgCCQESSGlzdG9yeVJlY29yZEVudHJ5BwIFc3Rha2UFC3VzZXJBZGRyZXNzCAUBaQ10cmFuc2FjdGlvbklkBQxzdGFrZWRBbW91bnQFEXZwRWZmZWN0aXZlSGVpZ2h0BQ9zdGFrZWRBbW91bnRORVcFFHZwRWZmZWN0aXZlSGVpZ2h0TkVXBQNuaWwJAQ1SZXdhcmRFbnRyaWVzAwUJaXNOZXdVc2VyBQ51c2VyQWRkcmVzc1N0cgUMc3Rha2VkQW1vdW50CQEPTG9ja1BhcmFtc0VudHJ5AwULdXNlckFkZHJlc3MFD3N0YWtlZEFtb3VudE5FVwUUdnBFZmZlY3RpdmVIZWlnaHRORVcFDHN0YXRzRW50cmllcwgFAXICXzEBC2NvbW1vbkNsYWltAgt1c2VyQWRkcmVzcwFpBA51c2VyQWRkcmVzc1N0cgkApQgBBQt1c2VyQWRkcmVzcwMJAGYCCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhlwYXltZW50cyBhcmUgbm90IGFjY2VwdGVkBA0kdDAyMjYwMDIyNzA1CQELdmFsdWVPckVsc2UCCQETZ2V0VXNlclBhcmFtc09yVW5pdAEFC3VzZXJBZGRyZXNzCQCVCgMGAAAAAAQJaXNOZXdVc2VyCAUNJHQwMjI2MDAyMjcwNQJfMQQMc3Rha2VkQW1vdW50CAUNJHQwMjI2MDAyMjcwNQJfMgQMc3Rha2luZ1N0YXJ0CAUNJHQwMjI2MDAyMjcwNQJfMwQNc3Rha2VkQW1vdW50WAkAtgIBBQxzdGFrZWRBbW91bnQEG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQkBG2tleVVzZXJSZXdhcmRGcm9tRGVwb3NpdE51bQEFDnVzZXJBZGRyZXNzU3RyBA5kZXBvc2l0TnVtVXNlcgkBDGdldEludE9yRWxzZQIFG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQD///////////8BBA5kZXBvc2l0TnVtTGFzdAkBDGdldEludE9yRWxzZQIJARFrZXlEZXBvc2l0TnVtTGFzdAAA////////////AQoBH2ZvckVhY2hBc3NldENhbGNVbmNsYWltZWRSZXdhcmQCBWFjY3VtBWFzc2V0BA0kdDAyMzA3NjIzMjE0CQEKY2FsY1Jld2FyZAUFDnVzZXJBZGRyZXNzU3RyBQVhc3NldAUNc3Rha2VkQW1vdW50WAUOZGVwb3NpdE51bVVzZXIFDmRlcG9zaXROdW1MYXN0BAtyZXdhcmRUb3RhbAgFDSR0MDIzMDc2MjMyMTQCXzEEBmNhY2hlZAgFDSR0MDIzMDc2MjMyMTQCXzIEB2R5bmFtaWMIBQ0kdDAyMzA3NjIzMjE0Al8zBBNyZXdhcmRDYWNoZWRQYXJ0S0VZCAUNJHQwMjMwNzYyMzIxNAJfNAQKY2xhaW1lZEtFWQkBCmtleUNsYWltZWQCBQ51c2VyQWRkcmVzc1N0cgUFYXNzZXQEDSR0MDIzMjc0MjMzMTEFBWFjY3VtBARkYXRhCAUNJHQwMjMyNzQyMzMxMQJfMQQRY2xhaW1lZEFtdEJ5QXNzZXQIBQ0kdDAyMzI3NDIzMzExAl8yBAduZXdQYXJ0CQC5CQIJAMwIAgUFYXNzZXQJAMwIAgkApAMBBQtyZXdhcmRUb3RhbAUDbmlsAgE6BBRjbGFpbWVkQW10QnlBc3NldE5ldwkAuQkCCQDMCAIFEWNsYWltZWRBbXRCeUFzc2V0CQDMCAIFB25ld1BhcnQFA25pbAIBXwMJAGcCAAAFC3Jld2FyZFRvdGFsCQCUCgIFBGRhdGEFFGNsYWltZWRBbXRCeUFzc2V0TmV3CQCUCgIJAM0IAgkAzQgCCQDNCAIFBGRhdGEJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQtyZXdhcmRUb3RhbAkBC3RvQXNzZXRWZWN0AQUFYXNzZXQJAQxJbnRlZ2VyRW50cnkCBQpjbGFpbWVkS0VZCQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQpjbGFpbWVkS0VZAAAFC3Jld2FyZFRvdGFsCQEMSW50ZWdlckVudHJ5AgUTcmV3YXJkQ2FjaGVkUGFydEtFWQAABRRjbGFpbWVkQW10QnlBc3NldE5ldwQNJHQwMjM3NzEyMzg4NAoAAiRsBRNzdXBwb3J0ZWRBc3NldHNMaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQNuaWwCAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEfZm9yRWFjaEFzc2V0Q2FsY1VuY2xhaW1lZFJld2FyZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgOQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQQJdHJhbnNmZXJzCAUNJHQwMjM3NzEyMzg4NAJfMQQXY2xhaW1lZEFtdEJ5QXNzZXRSZXN1bHQIBQ0kdDAyMzc3MTIzODg0Al8yAwkAZwIAAAkAkAMBBQl0cmFuc2ZlcnMJAJQKAgUDbmlsAAAJAJQKAgkAzQgCCQDNCAIFCXRyYW5zZmVycwkBDEludGVnZXJFbnRyeQIFG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQUOZGVwb3NpdE51bUxhc3QJARFDbGFpbUhpc3RvcnlFbnRyeQMFC3VzZXJBZGRyZXNzCAUBaQ10cmFuc2FjdGlvbklkCQCwAgIFF2NsYWltZWRBbXRCeUFzc2V0UmVzdWx0AAEJAJADAQUJdHJhbnNmZXJzDAFpAQtjb25zdHJ1Y3RvcgMNbWluTG9ja0Ftb3VudBVzdXBwb3J0ZWRSZXdhcmRBc3NldHMNc3Rha2VkQXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEVBlcm1pc3Npb24gZGVuaWVkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEQa2V5TWluTG9ja0Ftb3VudAAFDW1pbkxvY2tBbW91bnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBGGtleVN1cHBvcnRlZFJld2FyZEFzc2V0cwAFFXN1cHBvcnRlZFJld2FyZEFzc2V0cwkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5U3Rha2VkQXNzZXRJZAAFDXN0YWtlZEFzc2V0SWQFA25pbAFpAQVzdGFrZQAJAQtjb21tb25TdGFrZQIIBQFpBmNhbGxlcgUBaQFpARNzdGFrZUJ5T3JpZ2luQ2FsbGVyAAkBC2NvbW1vblN0YWtlAggFAWkMb3JpZ2luQ2FsbGVyBQFpAWkBB3Vuc3Rha2UBBmFtb3VudAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECI3Vuc3Rha2UgZG9lc24ndCByZXF1aXJlIGFueSBwYXltZW50BAt1c2VyQWRkcmVzcwgFAWkGY2FsbGVyBA51c2VyQWRkcmVzc1N0cgkApQgBBQt1c2VyQWRkcmVzcwQNJHQwMjQ4MTgyNDg3MgkBD2dldFBhcmFtc09yRmFpbAAEDXN0YWtlZEFzc2V0SWQIBQ0kdDAyNDgxODI0ODcyAl8xBA1taW5Mb2NrQW1vdW50CAUNJHQwMjQ4MTgyNDg3MgJfMgQNJHQwMjQ4NzUyNDk1OQkBE2dldFVzZXJQYXJhbXNPckZhaWwBBQt1c2VyQWRkcmVzcwQJaXNOZXdVc2VyCAUNJHQwMjQ4NzUyNDk1OQJfMQQMc3Rha2VkQW1vdW50CAUNJHQwMjQ4NzUyNDk1OQJfMgQRdnBFZmZlY3RpdmVIZWlnaHQIBQ0kdDAyNDg3NTI0OTU5Al8zBBBzd2FwUGFyYW1zU1RSVUNUCQESYXNTd2FwUGFyYW1zU1RSVUNUAQkA/QcEBRBuZXV0cmlub0NvbnRyYWN0Ahtzd2FwUGFyYW1zQnlVc2VyU1lTUkVBRE9OTFkJAMwIAgUOdXNlckFkZHJlc3NTdHIJAMwIAgAABQNuaWwFA25pbAQUc3dhcExpbWl0U3BlbnRJblVzZG4IBRBzd2FwUGFyYW1zU1RSVUNUAl8yBA5ibGNrczJMbXRSZXNldAgFEHN3YXBQYXJhbXNTVFJVQ1QCXzMDCQBmAgUUc3dhcExpbWl0U3BlbnRJblVzZG4AAAkAAgEJAKwCAgkArAICAi1Zb3UgaGF2ZSBhbHJlYWR5IG1hZGUgYSBzd2FwIG9wZXJhdGlvbi4gV2FpdCAJAKQDAQkAZAIFBmhlaWdodAUOYmxja3MyTG10UmVzZXQCEiBoZWlnaHQgdG8gdW5zdGFrZQMJAGcCAAAFDHN0YWtlZEFtb3VudAkAAgECEk5vdGhpbmcgdG8gdW5zdGFrZQMJAGYCBQZhbW91bnQFDHN0YWtlZEFtb3VudAkAAgEJAKwCAgkArAICCQCsAgICClJlcXVlc3RlZCAJAKQDAQUGYW1vdW50AhIsIGJ1dCBzdGFrZWQgb25seSAJAKQDAQUMc3Rha2VkQW1vdW50BA9zdGFrZWRBbW91bnRORVcJAGUCBQxzdGFrZWRBbW91bnQFBmFtb3VudAQNJHQwMjU1OTcyNTc1NQkBC1N0YXRzUmVzdWx0AwkBAS0BBQZhbW91bnQDCQAAAgUGYW1vdW50BQxzdGFrZWRBbW91bnQA////////////AQAAAwkAAAIFBmFtb3VudAUMc3Rha2VkQW1vdW50AP///////////wEAAAQMc3RhdHNFbnRyaWVzCAUNJHQwMjU1OTcyNTc1NQJfMQQLdG90YWxTdGFrZWQIBQ0kdDAyNTU5NzI1NzU1Al8yBA50b3RhbFN0YWtlZE5ldwgFDSR0MDI1NTk3MjU3NTUCXzMJAM4IAgkAzggCCQDOCAIJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQt1c2VyQWRkcmVzcwUGYW1vdW50BQ1zdGFrZWRBc3NldElkCQDMCAIJARJIaXN0b3J5UmVjb3JkRW50cnkHAgd1bnN0YWtlBQt1c2VyQWRkcmVzcwgFAWkNdHJhbnNhY3Rpb25JZAUMc3Rha2VkQW1vdW50BRF2cEVmZmVjdGl2ZUhlaWdodAUPc3Rha2VkQW1vdW50TkVXBRF2cEVmZmVjdGl2ZUhlaWdodAUDbmlsCQENUmV3YXJkRW50cmllcwMHBQ51c2VyQWRkcmVzc1N0cgUMc3Rha2VkQW1vdW50CQEPTG9ja1BhcmFtc0VudHJ5AwULdXNlckFkZHJlc3MFD3N0YWtlZEFtb3VudE5FVwURdnBFZmZlY3RpdmVIZWlnaHQFDHN0YXRzRW50cmllcwgJAQlvblVuc3Rha2UCBQ51c2VyQWRkcmVzc1N0cgUGYW1vdW50Al8xAWkBB2RlcG9zaXQAAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIfZXhhY3QgMSBwYXltZW50IGlzIGFsbG93ZWQgb25seQQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEBmFtb3VudAgFA3BtdAZhbW91bnQECnBtdEFzc2V0SWQJAQt2YWx1ZU9yRWxzZQIIBQNwbXQHYXNzZXRJZAUHV0FWRVNJRAQNcG10QXNzZXRJZFN0cgkA2AQBBQpwbXRBc3NldElkBAhwbXRNdWx0WAMJAAACBQpwbXRBc3NldElkBQdXQVZFU0lEBQZNVUxUWDgFBk1VTFRYNgQHYW1vdW50WAkAtgIBBQZhbW91bnQEC3RvdGFsU3Rha2VkCQEMZ2V0SW50T3JFbHNlAgkBF2tleUxvY2tQYXJhbVRvdGFsQW1vdW50AAAABAx0b3RhbFN0YWtlZFgJALYCAQULdG90YWxTdGFrZWQDCQBmAgAABQt0b3RhbFN0YWtlZAkAAgECG1RPRE86IGNhc2UgaXMgbm90IHN1cHBvcnRlZAMJAAACBQt0b3RhbFN0YWtlZAAACQEiSW5jcmVtZW50Tm90RGlzdHJpYnV0ZWRSZXdhcmRFbnRyeQIFDXBtdEFzc2V0SWRTdHIFBmFtb3VudAQQcmV3YXJkUGVyTnNidFgxOAkAvAIDBQdhbW91bnRYBQdNVUxUWDE4BQx0b3RhbFN0YWtlZFgEEWRlcG9zaXROdW1MYXN0S0VZCQERa2V5RGVwb3NpdE51bUxhc3QABA5kZXBvc2l0TnVtTGFzdAkBDGdldEludE9yRWxzZQIFEWRlcG9zaXROdW1MYXN0S0VZAP///////////wEEDWRlcG9zaXROdW1OZXcJAGQCBQ5kZXBvc2l0TnVtTGFzdAABAwkBASEBCQEIY29udGFpbnMCBRJzdXBwb3J0ZWRBc3NldHNTdHIFDXBtdEFzc2V0SWRTdHIJAAIBCQCsAgIJAKwCAgUSc3VwcG9ydGVkQXNzZXRzU3RyAhEgZG9lc24ndCBjb250YWluIAUNcG10QXNzZXRJZFN0cgoBF3JlZnJlc2hSZXdhcmRQZXJOc2J0U1VNAgVhY2N1bQluZXh0QXNzZXQEFnJld2FyZFBlck5zYnRTdW1OZXdLRVkJARVrZXlSZXdhcmRQZXJOc2J0U3VtQXQCBQ1kZXBvc2l0TnVtTmV3BQluZXh0QXNzZXQECnN1bUxhc3RTdHIJAQxnZXRTdHJPckVsc2UCCQEVa2V5UmV3YXJkUGVyTnNidFN1bUF0AgUOZGVwb3NpdE51bUxhc3QFCW5leHRBc3NldAIBMAkAzQgCBQVhY2N1bQMJAAACBQluZXh0QXNzZXQFDXBtdEFzc2V0SWRTdHIJAQtTdHJpbmdFbnRyeQIFFnJld2FyZFBlck5zYnRTdW1OZXdLRVkJAKYDAQkAtwICCQCnAwEFCnN1bUxhc3RTdHIFEHJld2FyZFBlck5zYnRYMTgJAQtTdHJpbmdFbnRyeQIFFnJld2FyZFBlck5zYnRTdW1OZXdLRVkFCnN1bUxhc3RTdHIJAM4IAgkAzggCCQDNCAIKAAIkbAUTc3VwcG9ydGVkQXNzZXRzTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEXcmVmcmVzaFJld2FyZFBlck5zYnRTVU0CBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDkJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkJAQxJbnRlZ2VyRW50cnkCBRFkZXBvc2l0TnVtTGFzdEtFWQUNZGVwb3NpdE51bU5ldwkBFURlcG9zaXRzVG90YWxzRW50cmllcwIFBmFtb3VudAUNcG10QXNzZXRJZFN0cgkBDHVwZGF0ZVRvdGFscwABaQEMY2xhaW1SZXdhcmRzAAkBC2NvbW1vbkNsYWltAggFAWkGY2FsbGVyBQFpAWkBGmNsYWltUmV3YXJkc0J5T3JpZ2luQ2FsbGVyAAkBC2NvbW1vbkNsYWltAggFAWkMb3JpZ2luQ2FsbGVyBQFpAWkBGHVuY2xhaW1lZFJld2FyZHNSRUFET05MWQEOdXNlckFkZHJlc3NTdHIKARZmb3JFYWNoQXNzZXRaZXJvUmV3YXJkAgVhY2N1bQVhc3NldAkArAICCQCsAgIFBWFjY3VtCQC5CQIJAMwIAgUFYXNzZXQJAMwIAgIBMAkAzAgCAgEwBQNuaWwCAToCAV8EEnVuY2xhaW1lZFJld2FyZFN0cgMJAAACBQ51c2VyQWRkcmVzc1N0cgIACgACJGwFE3N1cHBvcnRlZEFzc2V0c0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwAgAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBFmZvckVhY2hBc3NldFplcm9SZXdhcmQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDkJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkEC3VzZXJBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBBQ51c2VyQWRkcmVzc1N0cgQNJHQwMjg0NzcyODU4MgkBC3ZhbHVlT3JFbHNlAgkBE2dldFVzZXJQYXJhbXNPclVuaXQBBQt1c2VyQWRkcmVzcwkAlQoDBgAAAAAECWlzTmV3VXNlcggFDSR0MDI4NDc3Mjg1ODICXzEEDHN0YWtlZEFtb3VudAgFDSR0MDI4NDc3Mjg1ODICXzIEDHN0YWtpbmdTdGFydAgFDSR0MDI4NDc3Mjg1ODICXzMEDXN0YWtlZEFtb3VudFgJALYCAQUMc3Rha2VkQW1vdW50BBt1c2VyUmV3YXJkRnJvbURlcG9zaXROdW1LRVkJARtrZXlVc2VyUmV3YXJkRnJvbURlcG9zaXROdW0BBQ51c2VyQWRkcmVzc1N0cgQOZGVwb3NpdE51bVVzZXIJAQxnZXRJbnRPckVsc2UCBRt1c2VyUmV3YXJkRnJvbURlcG9zaXROdW1LRVkA////////////AQQOZGVwb3NpdE51bUxhc3QJAQxnZXRJbnRPckVsc2UCCQERa2V5RGVwb3NpdE51bUxhc3QAAP///////////wEKAR9mb3JFYWNoQXNzZXRDYWxjVW5jbGFpbWVkUmV3YXJkAgVhY2N1bQVhc3NldAQNJHQwMjg5MjgyOTA2NgkBCmNhbGNSZXdhcmQFBQ51c2VyQWRkcmVzc1N0cgUFYXNzZXQFDXN0YWtlZEFtb3VudFgFDmRlcG9zaXROdW1Vc2VyBQ5kZXBvc2l0TnVtTGFzdAQLcmV3YXJkVG90YWwIBQ0kdDAyODkyODI5MDY2Al8xBAZjYWNoZWQIBQ0kdDAyODkyODI5MDY2Al8yBAdkeW5hbWljCAUNJHQwMjg5MjgyOTA2NgJfMwQTcmV3YXJkQ2FjaGVkUGFydEtFWQgFDSR0MDI4OTI4MjkwNjYCXzQEB2NsYWltZWQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBCmtleUNsYWltZWQCBQ51c2VyQWRkcmVzc1N0cgUFYXNzZXQAAAkArAICCQCsAgIFBWFjY3VtCQC5CQIJAMwIAgUFYXNzZXQJAMwIAgkApAMBBQtyZXdhcmRUb3RhbAkAzAgCCQCkAwEFB2NsYWltZWQFA25pbAIBOgIBXwoAAiRsBRNzdXBwb3J0ZWRBc3NldHNMaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAIACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAR9mb3JFYWNoQXNzZXRDYWxjVW5jbGFpbWVkUmV3YXJkAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA5CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJCQCUCgIFA25pbAkAswICBRJ1bmNsYWltZWRSZXdhcmRTdHIAAQFpARF1cGRhdGVWb3RpbmdQb3dlcgEOdXNlckFkZHJlc3NTdHIDCQEBIQEJAQlpc0RlZmluZWQBCQCmCAEFDnVzZXJBZGRyZXNzU3RyCQACAQIUSW52YWxpZCB1c2VyIGFkZHJlc3MEAXIJAQdvblN0YWtlAgUOdXNlckFkZHJlc3NTdHIAAAkAlAoCCAUBcgJfMQkAzAgCCQELc3VyZlRvR25zYnQBCAUBcgJfMgkAzAgCCQELc3VyZlRvR25zYnQBCAUBcgJfMwkAzAgCCQELc3VyZlRvR25zYnQBCAUBcgJfNAkAzAgCCQELc3VyZlRvR25zYnQBCAUBcgJfNQkAzAgCCQELc3VyZlRvR25zYnQBCAUBcgJfNgkAzAgCCQELc3VyZlRvR25zYnQBCAUBcgJfNwUDbmlsAWkBFnN1cmZTdGFraW5nU1lTUkVBRE9OTFkCFXVzZXJBZGRyZXNzU3RyT3JFbXB0eQhzdXJmRGlmZgQJc3VyZlRvdGFsCQEMZ2V0SW50T3JFbHNlAgkBF2tleUxvY2tQYXJhbVRvdGFsQW1vdW50AAAABBJnbnNidEZyb21TdXJmVG90YWwJAQtzdXJmVG9HbnNidAEFCXN1cmZUb3RhbAQBcgMJAGcCBQhzdXJmRGlmZgAACQEHb25TdGFrZQIFFXVzZXJBZGRyZXNzU3RyT3JFbXB0eQUIc3VyZkRpZmYJAQlvblVuc3Rha2UCBRV1c2VyQWRkcmVzc1N0ck9yRW1wdHkFCHN1cmZEaWZmAwkAAAIFFXVzZXJBZGRyZXNzU3RyT3JFbXB0eQIACQCUCgIFA25pbAkAzAgCAAAJAMwIAgUJc3VyZlRvdGFsCQDMCAIAAAkAzAgCBRJnbnNidEZyb21TdXJmVG90YWwJAMwIAgUGaGVpZ2h0CQDMCAIFBmhlaWdodAkAzAgCCQELc3VyZlRvR25zYnQBCAUBcgJfMgkAzAgCCQELc3VyZlRvR25zYnQBCAUBcgJfMwkAzAgCCQELc3VyZlRvR25zYnQBCAUBcgJfNAkAzAgCCQELc3VyZlRvR25zYnQBCAUBcgJfNQkAzAgCCQELc3VyZlRvR25zYnQBCAUBcgJfNgkAzAgCCQELc3VyZlRvR25zYnQBCAUBcgJfNwUDbmlsBAt1c2VyQWRkcmVzcwkBD3RvQWRkcmVzc09yRmFpbAEFFXVzZXJBZGRyZXNzU3RyT3JFbXB0eQQKbWVyZ2VkRGF0YQkBCm1lcmdlU3Rha2UEBQt1c2VyQWRkcmVzcwUIc3VyZkRpZmYIBQFyAl82CAUBcgJfNwQMc3Rha2VkQW1vdW50CAUKbWVyZ2VkRGF0YQJfMgQRdnBFZmZlY3RpdmVIZWlnaHQIBQptZXJnZWREYXRhAl8zBA9zdGFrZWRBbW91bnRORVcIBQptZXJnZWREYXRhAl80BBR2cEVmZmVjdGl2ZUhlaWdodE5FVwgFCm1lcmdlZERhdGECXzUECHN1cmZVc2VyBQxzdGFrZWRBbW91bnQEEWduc2J0RnJvbVN1cmZVc2VyCQELc3VyZlRvR25zYnQBBQhzdXJmVXNlcgkAlAoCBQNuaWwJAMwIAgUIc3VyZlVzZXIJAMwIAgUJc3VyZlRvdGFsCQDMCAIFEWduc2J0RnJvbVN1cmZVc2VyCQDMCAIFEmduc2J0RnJvbVN1cmZUb3RhbAkAzAgCBRF2cEVmZmVjdGl2ZUhlaWdodAkAzAgCBRR2cEVmZmVjdGl2ZUhlaWdodE5FVwkAzAgCCQELc3VyZlRvR25zYnQBCAUBcgJfMgkAzAgCCQELc3VyZlRvR25zYnQBCAUBcgJfMwkAzAgCCQELc3VyZlRvR25zYnQBCAUBcgJfNAkAzAgCCQELc3VyZlRvR25zYnQBCAUBcgJfNQkAzAgCCQELc3VyZlRvR25zYnQBCAUBcgJfNgkAzAgCCQELc3VyZlRvR25zYnQBCAUBcgJfNwUDbmlsAWkBGGduc2J0RnJvbVN1cmZTWVNSRUFET05MWQEHc3VyZkFtdAkAlAoCBQNuaWwJAQtzdXJmVG9HbnNidAEFB3N1cmZBbXQBaQERY29uZmlnU1lTUkVBRE9OTFkABAptaW5Mb2NrQW10CQERQGV4dHJOYXRpdmUoMTA1NSkBCQEQa2V5TWluTG9ja0Ftb3VudAAEIHN1cmZWb3RpbmdQb3dlclJlc3RyaWN0aXZlUGVyaW9kBQ1ERUZBVUxUUEVSSU9EBBticlRvU3RhcnRTdXJmVHJhbnNmb3JtYXRpb24AsJhGCQCUCgIFA25pbAkAzAgCBQptaW5Mb2NrQW10CQDMCAIJAGgCBRJnbnNidEZyb21TdXJmQ29lZmYFBU1VTFQ2CQDMCAIFIHN1cmZWb3RpbmdQb3dlclJlc3RyaWN0aXZlUGVyaW9kCQDMCAIFG2JyVG9TdGFydFN1cmZUcmFuc2Zvcm1hdGlvbgUDbmlsAJG7t6A=", "height": 2326779, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8jMpDxhfGn11M1m7QqTccXb6n7P8EDQju6YCe2kjdH2J Next: BPc8E4DJmBDdKqE58NFoQaajKT35tKuEqz8aBYMFufUR Diff:
OldNewDifferences
2121
2222 let j = 86400000
2323
24-let k = 1
24+let k = (1440 * 14)
2525
26-let l = 2
26+let l = 1
2727
28-let m = 3
28+let m = 2
2929
30-let n = 4
30+let n = 3
3131
32-let o = 5
32+let o = 4
3333
34-let p = 6
34+let p = 5
3535
36-let q = 7
36+let q = 6
3737
38-let r = 8
38+let r = 7
3939
40-let s = 9
40+let s = 8
4141
42-let t = 10
42+let t = 9
4343
44-let u = 11
44+let u = 10
4545
46-func v (w,x) = valueOrErrorMessage(getString(w, x), (((("mandatory " + toString(w)) + ".") + x) + " is not defined"))
46+let v = 11
47+
48+let w = 12
49+
50+let x = 13
51+
52+func y (z,A) = valueOrErrorMessage(getString(z, A), (((("mandatory " + toString(z)) + ".") + A) + " is not defined"))
4753
4854
49-func y () = "%s%s__config__controlAddress"
55+func B () = "%s%s__config__controlAddress"
5056
5157
52-func z () = "%s__controlConfig"
58+func C () = "%s__controlConfig"
5359
5460
55-func A () = "%s%s__cfg__gnsbtFromSurfCoeff"
61+func D () = "%s%s__cfg__gnsbtFromSurfCoeff"
5662
5763
58-func B (C) = split_4C(v(C, z()), b)
64+func E (F) = split_4C(y(F, C()), b)
5965
6066
61-func D (E,F) = valueOrErrorMessage(addressFromString(E[F]), ("Control cfg doesn't contain address at index " + toString(F)))
67+func G (H,I) = valueOrErrorMessage(addressFromString(H[I]), ("Control cfg doesn't contain address at index " + toString(I)))
6268
6369
64-let G = addressFromStringValue(valueOrElse(getString(this, y()), "3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx"))
70+let J = addressFromStringValue(valueOrElse(getString(this, B()), "3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx"))
6571
66-let E = B(G)
72+let H = E(J)
6773
68-let H = D(E, n)
74+let K = G(H, o)
6975
70-let I = D(E, k)
76+let L = G(H, l)
7177
72-let J = D(E, l)
78+let M = G(H, m)
7379
74-let K = valueOrElse(getInteger(this, A()), 300)
80+let N = G(H, x)
7581
76-func L () = "bond_asset_id"
82+let O = valueOrElse(getInteger(this, D()), 300)
83+
84+func P () = "bond_asset_id"
7785
7886
79-func M () = "auction_contract"
87+func Q () = "auction_contract"
8088
8189
82-func N () = "%s__minLockAmount"
90+func R () = "%s__minLockAmount"
8391
8492
85-func O () = "%s__stakedAssetId"
93+func S () = "%s__stakedAssetId"
8694
8795
88-func P (Q) = makeString(["%s%s%s", "paramByUser", toString(Q), "amount"], a)
96+func T (U) = makeString(["%s%s%s", "paramByUser", toString(U), "amount"], a)
8997
9098
91-func R (Q) = makeString(["%s%s%s", "paramByUser", toString(Q), "start"], a)
99+func V (U) = makeString(["%s%s%s", "paramByUser", toString(U), "start"], a)
92100
93101
94-func S (Q) = makeString(["%s%s%s", "paramByUser", toString(Q), "vpEffectiveHeight"], a)
102+func W (U) = makeString(["%s%s%s", "paramByUser", toString(U), "vpEffectiveHeight"], a)
95103
96104
97-func T (U,Q,V) = makeString(["%s%s%s%s", "history", U, toString(Q), toBase58String(V)], a)
105+func X (Y,U,Z) = makeString(["%s%s%s%s", "history", Y, toString(U), toBase58String(Z)], a)
98106
99107
100-func W () = makeString(["%s%s", "stats", "activeTotalLocked"], a)
108+func aa () = makeString(["%s%s", "stats", "activeTotalLocked"], a)
101109
102110
103-func X () = makeString(["%s%s", "stats", "locksCount"], a)
111+func ab () = makeString(["%s%s", "stats", "locksCount"], a)
104112
105113
106-func Y () = makeString(["%s%s", "stats", "activeUsersCount"], a)
114+func ac () = makeString(["%s%s", "stats", "activeUsersCount"], a)
107115
108116
109-func Z (aa) = makeString(["%s%s%d", "stats", "depositAmtByDay", toString(aa)], a)
117+func ad (ae) = makeString(["%s%s%d", "stats", "depositAmtByDay", toString(ae)], a)
110118
111119
112-func ab () = makeString(["%s%s%d", "stats", "depositAmtTotals"], a)
120+func af () = makeString(["%s%s", "stats", "depositAmtTotals"], a)
113121
114122
115-func ac () = "%s__nextPeriod"
123+func ag () = "supportedRewardAssets"
116124
117125
118-func ad () = "supportedRewardAssets"
126+func ah () = makeString(["%s%s", "dep", "lastNum"], a)
119127
120128
121-func ae () = makeString(["%s%s%s", "dep", "lastNum"], a)
129+func ai (U) = makeString(["%s%s", "userRwdFromDepNum", U], a)
122130
123131
124-func af (Q) = makeString(["%s%s%s", "userRwdFromDepNum", Q], a)
132+func aj (ak,al) = makeString(["%s%d", "rwdPerNsbtSumByDepNum", toString(ak), al], a)
125133
126134
127-func ag (ah,ai) = makeString(["%s%d", "rwdPerNsbtSumByDepNum", toString(ah), ai], a)
135+func am (U,al) = makeString(["%s%s%s", "rwd", U, al], a)
128136
129137
130-func aj (Q,ai) = makeString(["%s%s%s", "rwd", Q, ai], a)
138+func an (U,al) = makeString(["%s%s%s", "clm", U, al], a)
131139
132140
133-func ak (Q,ai) = makeString(["%s%s%s", "clm", Q, ai], a)
141+func ao (al) = makeString(["%s%s", "notDistributed", al], a)
134142
135143
136-func al (ai) = makeString(["%s%s", "notDistributed", ai], a)
144+func ap () = makeString(["%s%s", "vp", "periodDuration"], a)
137145
138146
139-func am (an,ao) = fraction(toBigInt(an), g, ao)
147+func aq () = makeString(["%s%s", "vp", "lastTotalsPeriodProcessed"], a)
140148
141149
142-func ap (x) = valueOrElse(getInteger(this, x), 0)
150+func ar (U) = makeString(["%s%s%s", "vp", "lastUserPeriodProcessed", U], a)
143151
144152
145-func aq (x,ar) = valueOrElse(getInteger(this, x), ar)
153+func as () = makeString(["%s%s", "vp", "totalMature"], a)
146154
147155
148-func as (x) = valueOrErrorMessage(getInteger(this, x), (("Mandatory this." + x) + " is not defined"))
156+func at () = makeString(["%s%s", "vp", "totalTeen"], a)
149157
150158
151-func at (x,ar) = valueOrElse(getString(this, x), ar)
159+func au () = makeString(["%s%s", "vp", "totalKid"], a)
152160
153161
154-func au (av) = valueOrErrorMessage(addressFromString(av), ("couldn't parse passed addressStr=" + av))
162+func av (U) = makeString(["%s%s%s", "vp", "userMature", U], a)
155163
156164
157-func aw (ax) = if ((ax == h))
158- then unit
159- else fromBase58String(ax)
165+func aw (U) = makeString(["%s%s%s", "vp", "userTeen", U], a)
160166
161167
162-func ay (az) = {
163- let aA = az
164- if ($isInstanceOf(aA, "Int"))
168+func ax (U) = makeString(["%s%s%s", "vp", "userKid", U], a)
169+
170+
171+func ay (az,aA) = fraction(toBigInt(az), g, aA)
172+
173+
174+func aB (A) = valueOrElse(getInteger(this, A), 0)
175+
176+
177+func aC (A,aD) = valueOrElse(getInteger(this, A), aD)
178+
179+
180+func aE (A) = valueOrErrorMessage(getInteger(this, A), (("Mandatory this." + A) + " is not defined"))
181+
182+
183+func aF (A,aD) = valueOrElse(getString(this, A), aD)
184+
185+
186+func aG (aH) = valueOrErrorMessage(addressFromString(aH), ("couldn't parse passed addressStr=" + aH))
187+
188+
189+func aI (aJ) = if ((aJ == h))
190+ then unit
191+ else fromBase58String(aJ)
192+
193+
194+func aK (aL) = {
195+ let aM = aL
196+ if ($isInstanceOf(aM, "Int"))
165197 then {
166- let aB = aA
167- aB
198+ let aN = aM
199+ aN
168200 }
169201 else throw("fail to cast into Int")
170202 }
171203
172204
173-func aC (aD) = {
174- let aA = aD
175- if ($isInstanceOf(aA, "(Int, Int, Int, Int, Int, Int, Int)"))
205+func aO (aP) = {
206+ let aM = aP
207+ if ($isInstanceOf(aM, "(Int, Int, Int, Int, Int, Int, Int)"))
176208 then {
177- let aE = aA
178- aE
209+ let aQ = aM
210+ aQ
179211 }
180212 else throw("fail to cast into Int")
181213 }
182214
183215
184-func aF (aG,aH,aI,aJ) = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aG), toString(aH), toString(aI), toString(aJ)], a)
216+func aR (aS,aT,aU,aV) = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aS), toString(aT), toString(aU), toString(aV)], a)
185217
186218
187-func aK (aL,aM) = makeString(["%s%d%d%s", aL, toString(lastBlock.height), toString(lastBlock.timestamp), aM], a)
219+func aW (aX,aY) = makeString(["%s%d%d%s", aX, toString(lastBlock.height), toString(lastBlock.timestamp), aY], a)
188220
189221
190-func aN (U,Q,V,aG,aH,aI,aJ) = StringEntry(T(U, Q, V), aF(aG, aH, aI, aJ))
222+func aZ (Y,U,Z,aS,aT,aU,aV) = StringEntry(X(Y, U, Z), aR(aS, aT, aU, aV))
191223
192224
193-func aO (Q,V,aM) = StringEntry(T("claim", Q, V), aK(toString(Q), aM))
225+func ba (U,Z,aY) = StringEntry(X("claim", U, Z), aW(toString(U), aY))
194226
195227
196-func aP (aQ,aR,aS) = {
197- let aT = ap(X())
198- let aU = ap(Y())
199- let aV = ap(W())
200- let aW = (aV + aQ)
201- $Tuple3([IntegerEntry(X(), (aT + aR)), IntegerEntry(Y(), (aU + aS)), IntegerEntry(W(), aW)], aV, aW)
228+func bb (bc,bd,be) = {
229+ let bf = aB(ab())
230+ let bg = aB(ac())
231+ let bh = aB(aa())
232+ let bi = (bh + bc)
233+ $Tuple3([IntegerEntry(ab(), (bf + bd)), IntegerEntry(ac(), (bg + be)), IntegerEntry(aa(), bi)], bh, bi)
202234 }
203235
204236
205-func aX (Q,aY,aZ) = [IntegerEntry(P(Q), aY), IntegerEntry(R(Q), aZ)]
237+func bj (U,bk,bl) = [IntegerEntry(T(U), bk), IntegerEntry(V(U), bl)]
206238
207239
208-func ba () = $Tuple2(fromBase58String(v(this, O())), as(N()))
240+func bm () = $Tuple2(fromBase58String(y(this, S())), aE(R()))
209241
210242
211-func bb (Q) = (aq(P(Q), 0) > 0)
243+func bn (U) = (aC(T(U), 0) > 0)
212244
213245
214-func bc (Q) = if (bb(Q))
215- then $Tuple3(false, as(P(Q)), as(R(Q)))
246+func bo (U) = if (bn(U))
247+ then $Tuple3(false, aE(T(U)), aE(V(U)))
216248 else unit
217249
218250
219-func bd (Q) = valueOrErrorMessage(bc(Q), (("User " + toString(Q)) + " is not defined"))
251+func bp (U) = valueOrErrorMessage(bo(U), (("User " + toString(U)) + " is not defined"))
220252
221253
222-let be = at(ad(), "")
254+let bq = aF(ag(), "")
223255
224-let bf = split(be, "_")
256+let br = split(bq, "_")
225257
226-func bg (Q,bh,bi,bj,bk) = {
227- let bl = ag(bk, bh)
228- let bm = parseBigIntValue(at(ag(bk, bh), "0"))
229- let bn = parseBigIntValue(at(ag(bj, bh), "0"))
230- let bo = toInt(fraction((bm - bn), bi, g))
231- let bp = aj(Q, bh)
232- let bq = aq(bp, 0)
233- $Tuple4((bq + bo), bq, bo, bp)
258+func bs (U,bt,bu,bv,bw) = {
259+ let bx = aj(bw, bt)
260+ let by = parseBigIntValue(aF(aj(bw, bt), "0"))
261+ let bz = parseBigIntValue(aF(aj(bv, bt), "0"))
262+ let bA = toInt(fraction((by - bz), bu, g))
263+ let bB = am(U, bt)
264+ let bC = aC(bB, 0)
265+ $Tuple4((bC + bA), bC, bA, bB)
234266 }
235267
236268
237-func br (aa) = ((aa / j) * j)
269+func bD (ae) = ((ae / j) * j)
238270
239271
240-func bs (bt,bu,bv) = {
241- let bw = valueOrErrorMessage(indexOf(bt, bu), ((("there is no substring " + bu) + " in ") + bt))
242- if ((bw == 0))
272+func bE (bF,bG,bH) = {
273+ let bI = valueOrErrorMessage(indexOf(bF, bG), ((("there is no substring " + bG) + " in ") + bF))
274+ if ((bI == 0))
243275 then 0
244276 else {
245- let bx = take(bt, bw)
246- (size(split(bx, bv)) - 1)
277+ let bJ = take(bF, bI)
278+ (size(split(bJ, bH)) - 1)
247279 }
248280 }
249281
250282
251-let by = "%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d"
283+let bK = "%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d"
252284
253-func bz (bA,bB,bC) = {
254- let bD = split(bA, b)
255- func bE (F) = if ((F != bB))
256- then bD[F]
257- else toString((parseIntValue(bD[F]) + bC))
285+func bL (bM,bN,bO) = {
286+ let bP = split(bM, b)
287+ func bQ (I) = if ((I != bN))
288+ then bP[I]
289+ else toString((parseIntValue(bP[I]) + bO))
258290
259- makeString([by, bE(1), bE(2), bE(3), bE(4), bE(5), bE(6), bE(7), bE(8), bE(9), bE(10), bE(11), bE(12), bE(13), bE(14), bE(15), bE(16), bE(17), bE(18)], b)
291+ makeString([bK, bQ(1), bQ(2), bQ(3), bQ(4), bQ(5), bQ(6), bQ(7), bQ(8), bQ(9), bQ(10), bQ(11), bQ(12), bQ(13), bQ(14), bQ(15), bQ(16), bQ(17), bQ(18)], b)
260292 }
261293
262294
263-func bF (bG,bH) = {
264- let bI = br(lastBlock.timestamp)
265- let bJ = Z(bI)
266- let bK = ab()
267- let bL = bs(be, bH, "_")
268- let bM = (by + "__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0")
269- let bN = valueOrElse(getString(this, bK), bM)
270- let bO = bz(bN, (bL + 1), bG)
271-[StringEntry(bK, bO), StringEntry(bJ, bO)]
295+func bR (bS,bT) = {
296+ let bU = bD(lastBlock.timestamp)
297+ let bV = ad(bU)
298+ let bW = af()
299+ let bX = bE(bq, bT, "_")
300+ let bY = (bK + "__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0")
301+ let bZ = valueOrElse(getString(this, bW), bY)
302+ let ca = bL(bZ, (bX + 1), bS)
303+[StringEntry(bW, ca), StringEntry(bV, ca)]
272304 }
273305
274306
275-func bP (bQ,Q,bR) = {
276- let bi = toBigInt(bR)
277- let bS = af(Q)
278- let bj = aq(bS, -1)
279- let bk = aq(ae(), -1)
280- func bT (bU,bV) = {
281- let bW = bg(Q, bV, bi, bj, bk)
282- let bX = bW._1
283- let bY = bW._2
284- let bZ = bW._3
285- let bp = bW._4
286- (bU :+ IntegerEntry(bp, bX))
307+func cb (cc,U,cd) = {
308+ let bu = toBigInt(cd)
309+ let ce = ai(U)
310+ let bv = aC(ce, -1)
311+ let bw = aC(ah(), -1)
312+ func cf (cg,ch) = {
313+ let ci = bs(U, ch, bu, bv, bw)
314+ let cj = ci._1
315+ let ck = ci._2
316+ let cl = ci._3
317+ let bB = ci._4
318+ (cg :+ IntegerEntry(bB, cj))
287319 }
288320
289- if (if ((bk == -1))
290- then (bj == -1)
321+ if (if ((bw == -1))
322+ then (bv == -1)
291323 else false)
292324 then nil
293- else if (if ((bk == -1))
294- then (bj > -1)
325+ else if (if ((bw == -1))
326+ then (bv > -1)
295327 else false)
296328 then throw("invalid depositNumLast and depositNumUser state")
297- else if (if ((bk > -1))
298- then (bj >= -1)
329+ else if (if ((bw > -1))
330+ then (bv >= -1)
299331 else false)
300- then if (bQ)
301- then [IntegerEntry(bS, bk)]
332+ then if (cc)
333+ then [IntegerEntry(ce, bw)]
302334 else ({
303- let ca = bf
304- let cb = size(ca)
305- let cc = nil
306- func cd (ce,cf) = if ((cf >= cb))
307- then ce
308- else bT(ce, ca[cf])
335+ let cm = br
336+ let cn = size(cm)
337+ let co = nil
338+ func cp (cq,cr) = if ((cr >= cn))
339+ then cq
340+ else cf(cq, cm[cr])
309341
310- func cg (ce,cf) = if ((cf >= cb))
311- then ce
342+ func cs (cq,cr) = if ((cr >= cn))
343+ then cq
312344 else throw("List size exceeds 9")
313345
314- cg(cd(cd(cd(cd(cd(cd(cd(cd(cd(cc, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
315- } :+ IntegerEntry(bS, bk))
316- else throw(((("uncovered condition: depositNumLast=" + toString(bk)) + " depositNumUser=") + toString(bj)))
346+ cs(cp(cp(cp(cp(cp(cp(cp(cp(cp(co, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
347+ } :+ IntegerEntry(ce, bw))
348+ else throw(((("uncovered condition: depositNumLast=" + toString(bw)) + " depositNumUser=") + toString(bv)))
317349 }
318350
319351
320-func ch (ai,ci) = {
321- let cj = al(ai)
322- let ck = aq(cj, 0)
323-[IntegerEntry(cj, (ck + ci))]
352+func ct (al,cu) = {
353+ let cv = ao(al)
354+ let cw = aC(cv, 0)
355+[IntegerEntry(cv, (cw + cu))]
324356 }
325357
326358
327-func cl (cm) = (cm / K)
359+func cx (cy) = (cy / O)
328360
329361
330-func cn (co,cp,cq,cr) = {
331- let cs = (cp - height)
332- if ((0 >= cs))
333- then (height + co)
334- else {
335- let ct = (co - cs)
336- let cu = if ((cr != 0))
337- then fraction(cq, d, cr)
338- else cp
339- ((co + height) - fraction(ct, cu, d))
340- }
362+func cz (U,cA,cB,cC) = {
363+ let cD = valueOrElse(bo(U), $Tuple3(true, 0, 0))
364+ let cc = cD._1
365+ let cd = cD._2
366+ let cE = cD._3
367+ let cF = if (cc)
368+ then cA
369+ else (cA + cd)
370+ let cG = aC(ap(), k)
371+ let cH = (height / cG)
372+ let cI = if ((cC > 0))
373+ then (cH + 2)
374+ else if ((cB > 0))
375+ then (cH + 1)
376+ else cH
377+ $Tuple5(cc, cd, cE, cF, (cI * cG))
341378 }
342379
343380
344-func cv (Q,cw) = {
345- let cx = valueOrElse(bc(Q), $Tuple3(true, 0, 0))
346- let bQ = cx._1
347- let bR = cx._2
348- let cp = cx._3
349- let cy = if (bQ)
350- then cw
351- else (cw + bR)
352- let co = (1440 * 14)
353- let cz = if (bQ)
354- then (co + height)
355- else cn(co, cp, bR, cy)
356- $Tuple5(bQ, bR, cp, cy, cz)
381+func cJ () = {
382+ let cH = (height / aC(ap(), k))
383+ if ((cH > aB(aq())))
384+ then {
385+ let cK = valueOrElse(getInteger(as()), aB(aa()))
386+[IntegerEntry(as(), (cK + aB(at()))), IntegerEntry(at(), aB(au())), IntegerEntry(au(), 0), IntegerEntry(aq(), cH)]
387+ }
388+ else nil
357389 }
358390
359391
360-func cA (Q,cB) = {
361- let cC = ba()
362- let cD = cC._1
363- let cE = cC._2
364- if ((size(cB.payments) != 1))
392+func cL (cM,cA) = if ((0 > cA))
393+ then throw("amountToAdd should be >= 0")
394+ else {
395+ let cG = aC(ap(), k)
396+ let cH = (height / cG)
397+ let cK = valueOrElse(getInteger(as()), aB(aa()))
398+ let cN = aB(at())
399+ let cO = aB(au())
400+ let cP = valueOrElse(getInteger(av(cM)), aB(T(addressFromStringValue(cM))))
401+ let cB = aB(aw(cM))
402+ let cC = aB(ax(cM))
403+ let cQ = if ((cH > aB(ar(cM))))
404+ then $Tuple7((cK + cB), (cN + (cC - cB)), (cO - cC), (cP + cB), cC, 0, [IntegerEntry(ar(cM), cH)])
405+ else $Tuple7(cK, cN, cO, cP, cB, cC, nil)
406+ let cR = if ((cH > aB(aq())))
407+ then $Tuple4([IntegerEntry(as(), (cQ._1 + cQ._2)), IntegerEntry(at(), cQ._3), IntegerEntry(au(), 0), IntegerEntry(aq(), cH)], (cQ._1 + cQ._2), cQ._3, 0)
408+ else $Tuple4(nil, cK, cN, cO)
409+ let cS = fraction(cA, (height % cG), cG)
410+ let cT = (cA - cS)
411+ $Tuple7(((((cR._1 :+ IntegerEntry(av(cM), cQ._4)) :+ IntegerEntry(aw(cM), (cQ._5 + cT))) :+ IntegerEntry(ax(cM), (cQ._6 + cS))) ++ cQ._7), cR._2, cR._3, cR._4, cQ._4, (cQ._5 + cT), (cQ._6 + cS))
412+ }
413+
414+
415+let cU = 0
416+
417+let cV = 1
418+
419+func cW (cX,cY) = if ((cY >= cX))
420+ then [(cY - cX), 0]
421+ else [0, (cX - cY)]
422+
423+
424+func cZ (cM,da) = if ((da >= 0))
425+ then throw("amountToRemove should be < 0")
426+ else {
427+ let cG = aC(ap(), k)
428+ let cH = (height / cG)
429+ let cK = valueOrElse(getInteger(as()), aB(aa()))
430+ let cN = aB(at())
431+ let cO = aB(au())
432+ let cP = valueOrElse(getInteger(av(cM)), aB(T(addressFromStringValue(cM))))
433+ let cB = aB(aw(cM))
434+ let cC = aB(ax(cM))
435+ let db = cW(cP, da)
436+ let dc = cW(cB, db[cU])
437+ let dd = cW(cC, dc[cU])
438+ if ((dd[cU] != 0))
439+ then throw("Should not happen")
440+ else {
441+ let cQ = if ((cH > aB(ar(cM))))
442+ then $Tuple7((cK + dc[cV]), (cN + (dd[cV] - dc[cV])), (cO - dd[cV]), (db[cV] + dc[cV]), dd[cV], 0, [IntegerEntry(ar(cM), cH)])
443+ else $Tuple7(cK, cN, cO, db[cV], dc[cV], dd[cV], nil)
444+ let cR = if ((cH > aB(aq())))
445+ then $Tuple4([IntegerEntry(as(), (cQ._1 + cQ._2)), IntegerEntry(at(), cQ._3), IntegerEntry(au(), 0), IntegerEntry(aq(), cH)], (cQ._1 + cQ._2), cQ._3, 0)
446+ else $Tuple4(nil, cK, cN, cO)
447+ $Tuple7(((((cR._1 :+ IntegerEntry(av(cM), cQ._4)) :+ IntegerEntry(aw(cM), cQ._5)) :+ IntegerEntry(ax(cM), cQ._6)) ++ cQ._7), cR._2, cR._3, cR._4, cQ._4, cQ._5, cQ._6)
448+ }
449+ }
450+
451+
452+func de (U,df) = {
453+ let dg = bm()
454+ let dh = dg._1
455+ let di = dg._2
456+ if ((size(df.payments) != 1))
365457 then throw("Invalid payments size")
366458 else {
367- let cF = cB.payments[0]
368- let aY = cF.amount
369- let cG = (("Invalid asset. " + toBase58String(cD)) + " is expected")
370- let bh = valueOrErrorMessage(cF.assetId, cG)
371- if ((bh != cD))
372- then throw(cG)
459+ let dj = df.payments[0]
460+ let bk = dj.amount
461+ let dk = (("Invalid asset. " + toBase58String(dh)) + " is expected")
462+ let bt = valueOrErrorMessage(dj.assetId, dk)
463+ if ((bt != dh))
464+ then throw(dk)
373465 else {
374- let cH = toString(Q)
375- let cI = cv(Q, aY)
376- let bQ = cI._1
377- let bR = cI._2
378- let cp = cI._3
379- let cy = cI._4
380- let cz = cI._5
381- if ((cE > cy))
382- then throw(("Min lock amount is " + toString(cE)))
466+ let cM = toString(U)
467+ let dl = cL(cM, bk)
468+ let dm = cz(U, bk, dl._6, dl._7)
469+ let cc = dm._1
470+ let cd = dm._2
471+ let cE = dm._3
472+ let cF = dm._4
473+ let dn = dm._5
474+ if ((di > cF))
475+ then throw(("Min lock amount is " + toString(di)))
383476 else {
384- let cJ = aP(aY, 1, if (bQ)
477+ let do = bb(bk, 1, if (cc)
385478 then 1
386479 else 0)
387- let cK = cJ._1
388- let cL = cJ._2
389- let cM = cJ._3
390- ((([aN("stake", Q, cB.transactionId, bR, cp, cy, cz)] ++ bP(bQ, cH, bR)) ++ aX(Q, cy, cz)) ++ cK)
480+ let dp = do._1
481+ let dq = do._2
482+ let dr = do._3
483+ (((([aZ("stake", U, df.transactionId, cd, cE, cF, dn)] ++ cb(cc, cM, cd)) ++ bj(U, cF, dn)) ++ dp) ++ dl._1)
391484 }
392485 }
393486 }
394487 }
395488
396489
397-func cN (Q,cB) = {
398- let cH = toString(Q)
399- if ((size(cB.payments) > 0))
490+func ds (U,df) = {
491+ let cM = toString(U)
492+ if ((size(df.payments) > 0))
400493 then throw("payments are not accepted")
401494 else {
402- let cO = valueOrElse(bc(Q), $Tuple3(true, 0, 0))
403- let bQ = cO._1
404- let bR = cO._2
405- let cP = cO._3
406- let bi = toBigInt(bR)
407- let bS = af(cH)
408- let bj = aq(bS, -1)
409- let bk = aq(ae(), -1)
410- func cQ (bU,bV) = {
411- let cR = bg(cH, bV, bi, bj, bk)
412- let bX = cR._1
413- let bY = cR._2
414- let bZ = cR._3
415- let bp = cR._4
416- let cS = ak(cH, bV)
417- let cT = bU
418- let cU = cT._1
419- let cV = cT._2
420- let cW = makeString([bV, toString(bX)], ":")
421- let cX = makeString([cV, cW], "_")
422- if ((0 >= bX))
423- then $Tuple2(cU, cX)
424- else $Tuple2((((cU :+ ScriptTransfer(Q, bX, aw(bV))) :+ IntegerEntry(cS, (valueOrElse(getInteger(cS), 0) + bX))) :+ IntegerEntry(bp, 0)), cX)
495+ let dt = valueOrElse(bo(U), $Tuple3(true, 0, 0))
496+ let cc = dt._1
497+ let cd = dt._2
498+ let du = dt._3
499+ let bu = toBigInt(cd)
500+ let ce = ai(cM)
501+ let bv = aC(ce, -1)
502+ let bw = aC(ah(), -1)
503+ func dv (cg,ch) = {
504+ let dw = bs(cM, ch, bu, bv, bw)
505+ let cj = dw._1
506+ let ck = dw._2
507+ let cl = dw._3
508+ let bB = dw._4
509+ let dx = an(cM, ch)
510+ let dy = cg
511+ let dz = dy._1
512+ let dA = dy._2
513+ let dB = makeString([ch, toString(cj)], ":")
514+ let dC = makeString([dA, dB], "_")
515+ if ((0 >= cj))
516+ then $Tuple2(dz, dC)
517+ else $Tuple2((((dz :+ ScriptTransfer(U, cj, aI(ch))) :+ IntegerEntry(dx, (valueOrElse(getInteger(dx), 0) + cj))) :+ IntegerEntry(bB, 0)), dC)
425518 }
426519
427- let cY = {
428- let ca = bf
429- let cb = size(ca)
430- let cc = $Tuple2(nil, "")
431- func cd (ce,cf) = if ((cf >= cb))
432- then ce
433- else cQ(ce, ca[cf])
520+ let dD = {
521+ let cm = br
522+ let cn = size(cm)
523+ let co = $Tuple2(nil, "")
524+ func cp (cq,cr) = if ((cr >= cn))
525+ then cq
526+ else dv(cq, cm[cr])
434527
435- func cg (ce,cf) = if ((cf >= cb))
436- then ce
528+ func cs (cq,cr) = if ((cr >= cn))
529+ then cq
437530 else throw("List size exceeds 9")
438531
439- cg(cd(cd(cd(cd(cd(cd(cd(cd(cd(cc, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
532+ cs(cp(cp(cp(cp(cp(cp(cp(cp(cp(co, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
440533 }
441- let cZ = cY._1
442- let da = cY._2
443- if ((0 >= size(cZ)))
534+ let dE = dD._1
535+ let dF = dD._2
536+ if ((0 >= size(dE)))
444537 then $Tuple2(nil, 0)
445- else $Tuple2(((cZ :+ IntegerEntry(bS, bk)) :+ aO(Q, cB.transactionId, drop(da, 1))), size(cZ))
538+ else $Tuple2(((dE :+ IntegerEntry(ce, bw)) :+ ba(U, df.transactionId, drop(dF, 1))), size(dE))
446539 }
447540 }
448541
449542
450-@Callable(cB)
451-func constructor (cE,db,cD) = if ((cB.caller != this))
543+@Callable(df)
544+func constructor (di,dG,dh) = if ((df.caller != this))
452545 then throw("Permission denied")
453- else [IntegerEntry(N(), cE), StringEntry(ad(), db), StringEntry(O(), cD)]
546+ else [IntegerEntry(R(), di), StringEntry(ag(), dG), StringEntry(S(), dh)]
454547
455548
456549
457-@Callable(cB)
458-func stake () = cA(cB.caller, cB)
550+@Callable(df)
551+func stake () = de(df.caller, df)
459552
460553
461554
462-@Callable(cB)
463-func stakeByOriginCaller () = cA(cB.originCaller, cB)
555+@Callable(df)
556+func stakeByOriginCaller () = de(df.originCaller, df)
464557
465558
466559
467-@Callable(cB)
468-func unstake (aY) = if ((size(cB.payments) != 0))
560+@Callable(df)
561+func unstake (bk) = if ((size(df.payments) != 0))
469562 then throw("unstake doesn't require any payment")
470563 else {
471- let Q = cB.caller
472- let cH = toString(Q)
473- let dc = ba()
474- let cD = dc._1
475- let cE = dc._2
476- let dd = bd(Q)
477- let bQ = dd._1
478- let bR = dd._2
479- let cp = dd._3
480- let de = aC(reentrantInvoke(I, "swapParamsByUserSYSREADONLY", [cH, 0], nil))
481- let df = de._2
482- let dg = de._3
483- if ((df > 0))
484- then throw((("You have already made a swap operation. Wait " + toString((height + dg))) + " height to unstake"))
485- else if ((0 >= bR))
564+ let U = df.caller
565+ let cM = toString(U)
566+ let dH = bm()
567+ let dh = dH._1
568+ let di = dH._2
569+ let dI = bp(U)
570+ let cc = dI._1
571+ let cd = dI._2
572+ let cE = dI._3
573+ let dJ = aO(reentrantInvoke(L, "swapParamsByUserSYSREADONLY", [cM, 0], nil))
574+ let dK = dJ._2
575+ let dL = dJ._3
576+ if ((dK > 0))
577+ then throw((("You have already made a swap operation. Wait " + toString((height + dL))) + " height to unstake"))
578+ else if ((0 >= cd))
486579 then throw("Nothing to unstake")
487- else if ((aY > bR))
488- then throw(((("Requested " + toString(aY)) + ", but staked only ") + toString(bR)))
580+ else if ((bk > cd))
581+ then throw(((("Requested " + toString(bk)) + ", but staked only ") + toString(cd)))
489582 else {
490- let cy = (bR - aY)
491- let dh = aP(-(aY), if ((aY == bR))
583+ let cF = (cd - bk)
584+ let dM = bb(-(bk), if ((bk == cd))
492585 then -1
493- else 0, if ((aY == bR))
586+ else 0, if ((bk == cd))
494587 then -1
495588 else 0)
496- let cK = dh._1
497- let cL = dh._2
498- let cM = dh._3
499- ((([ScriptTransfer(Q, aY, cD), aN("unstake", Q, cB.transactionId, bR, cp, cy, cp)] ++ bP(false, cH, bR)) ++ aX(Q, cy, cp)) ++ cK)
589+ let dp = dM._1
590+ let dq = dM._2
591+ let dr = dM._3
592+ (((([ScriptTransfer(U, bk, dh), aZ("unstake", U, df.transactionId, cd, cE, cF, cE)] ++ cb(false, cM, cd)) ++ bj(U, cF, cE)) ++ dp) ++ cZ(cM, bk)._1)
500593 }
501594 }
502595
503596
504597
505-@Callable(cB)
506-func deposit () = if ((size(cB.payments) != 1))
598+@Callable(df)
599+func deposit () = if ((size(df.payments) != 1))
507600 then throw("exact 1 payment is allowed only")
508601 else {
509- let di = cB.payments[0]
510- let aY = di.amount
511- let dj = valueOrElse(di.assetId, i)
512- let dk = toBase58String(dj)
513- let dl = if ((dj == i))
602+ let dN = df.payments[0]
603+ let bk = dN.amount
604+ let dO = valueOrElse(dN.assetId, i)
605+ let dP = toBase58String(dO)
606+ let dQ = if ((dO == i))
514607 then f
515608 else e
516- let dm = toBigInt(aY)
517- let cL = aq(W(), 0)
518- let dn = toBigInt(cL)
519- if ((0 > cL))
609+ let dR = toBigInt(bk)
610+ let dq = aC(aa(), 0)
611+ let dS = toBigInt(dq)
612+ if ((0 > dq))
520613 then throw("TODO: case is not supported")
521- else if ((cL == 0))
522- then ch(dk, aY)
614+ else if ((dq == 0))
615+ then ct(dP, bk)
523616 else {
524- let do = fraction(dm, g, dn)
525- let dp = ae()
526- let bk = aq(dp, -1)
527- let dq = (bk + 1)
528- if (!(contains(be, dk)))
529- then throw(((be + " doesn't contain ") + dk))
617+ let dT = fraction(dR, g, dS)
618+ let dU = ah()
619+ let bw = aC(dU, -1)
620+ let dV = (bw + 1)
621+ if (!(contains(bq, dP)))
622+ then throw(((bq + " doesn't contain ") + dP))
530623 else {
531- func dr (bU,ds) = {
532- let dt = ag(dq, ds)
533- let du = at(ag(bk, ds), "0")
534- (bU :+ (if ((ds == dk))
535- then StringEntry(dt, toString((parseBigIntValue(du) + do)))
536- else StringEntry(dt, du)))
624+ func dW (cg,dX) = {
625+ let dY = aj(dV, dX)
626+ let dZ = aF(aj(bw, dX), "0")
627+ (cg :+ (if ((dX == dP))
628+ then StringEntry(dY, toString((parseBigIntValue(dZ) + dT)))
629+ else StringEntry(dY, dZ)))
537630 }
538631
539- (({
540- let ca = bf
541- let cb = size(ca)
542- let cc = nil
543- func cd (ce,cf) = if ((cf >= cb))
544- then ce
545- else dr(ce, ca[cf])
632+ ((({
633+ let cm = br
634+ let cn = size(cm)
635+ let co = nil
636+ func cp (cq,cr) = if ((cr >= cn))
637+ then cq
638+ else dW(cq, cm[cr])
546639
547- func cg (ce,cf) = if ((cf >= cb))
548- then ce
640+ func cs (cq,cr) = if ((cr >= cn))
641+ then cq
549642 else throw("List size exceeds 9")
550643
551- cg(cd(cd(cd(cd(cd(cd(cd(cd(cd(cc, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
552- } :+ IntegerEntry(dp, dq)) ++ bF(aY, dk))
644+ cs(cp(cp(cp(cp(cp(cp(cp(cp(cp(co, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
645+ } :+ IntegerEntry(dU, dV)) ++ bR(bk, dP)) ++ cJ())
553646 }
554647 }
555648 }
556649
557650
558651
559-@Callable(cB)
560-func claimRewards () = cN(cB.caller, cB)
652+@Callable(df)
653+func claimRewards () = ds(df.caller, df)
561654
562655
563656
564-@Callable(cB)
565-func claimRewardsByOriginCaller () = cN(cB.originCaller, cB)
657+@Callable(df)
658+func claimRewardsByOriginCaller () = ds(df.originCaller, df)
566659
567660
568661
569-@Callable(cB)
570-func unclaimedRewardsREADONLY (cH) = {
571- func dv (bU,bV) = ((bU + makeString([bV, "0", "0"], ":")) + "_")
662+@Callable(df)
663+func unclaimedRewardsREADONLY (cM) = {
664+ func ea (cg,ch) = ((cg + makeString([ch, "0", "0"], ":")) + "_")
572665
573- let dw = if ((cH == ""))
666+ let eb = if ((cM == ""))
574667 then {
575- let ca = bf
576- let cb = size(ca)
577- let cc = ""
578- func cd (ce,cf) = if ((cf >= cb))
579- then ce
580- else dv(ce, ca[cf])
668+ let cm = br
669+ let cn = size(cm)
670+ let co = ""
671+ func cp (cq,cr) = if ((cr >= cn))
672+ then cq
673+ else ea(cq, cm[cr])
581674
582- func cg (ce,cf) = if ((cf >= cb))
583- then ce
675+ func cs (cq,cr) = if ((cr >= cn))
676+ then cq
584677 else throw("List size exceeds 9")
585678
586- cg(cd(cd(cd(cd(cd(cd(cd(cd(cd(cc, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
679+ cs(cp(cp(cp(cp(cp(cp(cp(cp(cp(co, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
587680 }
588681 else {
589- let Q = addressFromStringValue(cH)
590- let dx = valueOrElse(bc(Q), $Tuple3(true, 0, 0))
591- let bQ = dx._1
592- let bR = dx._2
593- let cP = dx._3
594- let bi = toBigInt(bR)
595- let bS = af(cH)
596- let bj = aq(bS, -1)
597- let bk = aq(ae(), -1)
598- func cQ (bU,bV) = {
599- let dy = bg(cH, bV, bi, bj, bk)
600- let bX = dy._1
601- let bY = dy._2
602- let bZ = dy._3
603- let bp = dy._4
604- let dz = valueOrElse(getInteger(ak(cH, bV)), 0)
605- ((bU + makeString([bV, toString(bX), toString(dz)], ":")) + "_")
682+ let U = addressFromStringValue(cM)
683+ let ec = valueOrElse(bo(U), $Tuple3(true, 0, 0))
684+ let cc = ec._1
685+ let cd = ec._2
686+ let du = ec._3
687+ let bu = toBigInt(cd)
688+ let ce = ai(cM)
689+ let bv = aC(ce, -1)
690+ let bw = aC(ah(), -1)
691+ func dv (cg,ch) = {
692+ let ed = bs(cM, ch, bu, bv, bw)
693+ let cj = ed._1
694+ let ck = ed._2
695+ let cl = ed._3
696+ let bB = ed._4
697+ let ee = valueOrElse(getInteger(an(cM, ch)), 0)
698+ ((cg + makeString([ch, toString(cj), toString(ee)], ":")) + "_")
606699 }
607700
608- let ca = bf
609- let cb = size(ca)
610- let cc = ""
611- func cd (ce,cf) = if ((cf >= cb))
612- then ce
613- else cQ(ce, ca[cf])
701+ let cm = br
702+ let cn = size(cm)
703+ let co = ""
704+ func cp (cq,cr) = if ((cr >= cn))
705+ then cq
706+ else dv(cq, cm[cr])
614707
615- func cg (ce,cf) = if ((cf >= cb))
616- then ce
708+ func cs (cq,cr) = if ((cr >= cn))
709+ then cq
617710 else throw("List size exceeds 9")
618711
619- cg(cd(cd(cd(cd(cd(cd(cd(cd(cd(cc, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
712+ cs(cp(cp(cp(cp(cp(cp(cp(cp(cp(co, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
620713 }
621- $Tuple2(nil, dropRight(dw, 1))
714+ $Tuple2(nil, dropRight(eb, 1))
622715 }
623716
624717
625718
626-@Callable(cB)
627-func surfStakingSYSREADONLY (dA,dB) = {
628- let dC = aq(W(), 0)
629- let dD = cl(dC)
630- if ((dA == ""))
631- then $Tuple2(nil, [0, dC, 0, dD, 0, height, height])
719+@Callable(df)
720+func updateVotingPower (cM) = if (!(isDefined(addressFromString(cM))))
721+ then throw("Invalid user address")
722+ else {
723+ let dl = cL(cM, 0)
724+ $Tuple2(dl._1, [cx(dl._2), cx(dl._3), cx(dl._4), cx(dl._5), cx(dl._6), cx(dl._7)])
725+ }
726+
727+
728+
729+@Callable(df)
730+func surfStakingSYSREADONLY (ef,eg) = {
731+ let eh = aC(aa(), 0)
732+ let ei = cx(eh)
733+ let dl = if ((eg >= 0))
734+ then cL(ef, eg)
735+ else cZ(ef, eg)
736+ if ((ef == ""))
737+ then $Tuple2(nil, [0, eh, 0, ei, height, height, cx(dl._2), cx(dl._3), cx(dl._4), cx(dl._5), cx(dl._6), cx(dl._7)])
632738 else {
633- let Q = au(dA)
634- let cI = cv(Q, dB)
635- let bQ = cI._1
636- let bR = cI._2
637- let cp = cI._3
638- let cy = cI._4
639- let cz = cI._5
640- let dE = bR
641- let dF = cl(dE)
642- $Tuple2(nil, [dE, dC, dF, dD, cp, cz])
739+ let U = aG(ef)
740+ let dm = cz(U, eg, dl._6, dl._7)
741+ let cd = dm._2
742+ let cE = dm._3
743+ let cF = dm._4
744+ let dn = dm._5
745+ let ej = cd
746+ let ek = cx(ej)
747+ $Tuple2(nil, [ej, eh, ek, ei, cE, dn, cx(dl._2), cx(dl._3), cx(dl._4), cx(dl._5), cx(dl._6), cx(dl._7)])
643748 }
644749 }
645750
646751
647752
648-@Callable(cB)
649-func gnsbtFromSurfSYSREADONLY (cm) = $Tuple2(nil, cl(cm))
753+@Callable(df)
754+func gnsbtFromSurfSYSREADONLY (cy) = $Tuple2(nil, cx(cy))
650755
651756
652757
653-@Callable(cB)
758+@Callable(df)
654759 func configSYSREADONLY () = {
655- let dG = getIntegerValue(N())
656- let dH = (1440 * 14)
657- let dI = 1150000
658- $Tuple2(nil, [dG, (K * c), dH, dI])
760+ let el = getIntegerValue(R())
761+ let em = k
762+ let en = 1150000
763+ $Tuple2(nil, [el, (O * c), em, en])
659764 }
660765
661766
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = "__"
77
88 let c = 1000000
99
1010 let d = 100000000
1111
1212 let e = toBigInt(c)
1313
1414 let f = toBigInt(d)
1515
1616 let g = toBigInt(1000000000000000000)
1717
1818 let h = "WAVES"
1919
2020 let i = fromBase58String(h)
2121
2222 let j = 86400000
2323
24-let k = 1
24+let k = (1440 * 14)
2525
26-let l = 2
26+let l = 1
2727
28-let m = 3
28+let m = 2
2929
30-let n = 4
30+let n = 3
3131
32-let o = 5
32+let o = 4
3333
34-let p = 6
34+let p = 5
3535
36-let q = 7
36+let q = 6
3737
38-let r = 8
38+let r = 7
3939
40-let s = 9
40+let s = 8
4141
42-let t = 10
42+let t = 9
4343
44-let u = 11
44+let u = 10
4545
46-func v (w,x) = valueOrErrorMessage(getString(w, x), (((("mandatory " + toString(w)) + ".") + x) + " is not defined"))
46+let v = 11
47+
48+let w = 12
49+
50+let x = 13
51+
52+func y (z,A) = valueOrErrorMessage(getString(z, A), (((("mandatory " + toString(z)) + ".") + A) + " is not defined"))
4753
4854
49-func y () = "%s%s__config__controlAddress"
55+func B () = "%s%s__config__controlAddress"
5056
5157
52-func z () = "%s__controlConfig"
58+func C () = "%s__controlConfig"
5359
5460
55-func A () = "%s%s__cfg__gnsbtFromSurfCoeff"
61+func D () = "%s%s__cfg__gnsbtFromSurfCoeff"
5662
5763
58-func B (C) = split_4C(v(C, z()), b)
64+func E (F) = split_4C(y(F, C()), b)
5965
6066
61-func D (E,F) = valueOrErrorMessage(addressFromString(E[F]), ("Control cfg doesn't contain address at index " + toString(F)))
67+func G (H,I) = valueOrErrorMessage(addressFromString(H[I]), ("Control cfg doesn't contain address at index " + toString(I)))
6268
6369
64-let G = addressFromStringValue(valueOrElse(getString(this, y()), "3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx"))
70+let J = addressFromStringValue(valueOrElse(getString(this, B()), "3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx"))
6571
66-let E = B(G)
72+let H = E(J)
6773
68-let H = D(E, n)
74+let K = G(H, o)
6975
70-let I = D(E, k)
76+let L = G(H, l)
7177
72-let J = D(E, l)
78+let M = G(H, m)
7379
74-let K = valueOrElse(getInteger(this, A()), 300)
80+let N = G(H, x)
7581
76-func L () = "bond_asset_id"
82+let O = valueOrElse(getInteger(this, D()), 300)
83+
84+func P () = "bond_asset_id"
7785
7886
79-func M () = "auction_contract"
87+func Q () = "auction_contract"
8088
8189
82-func N () = "%s__minLockAmount"
90+func R () = "%s__minLockAmount"
8391
8492
85-func O () = "%s__stakedAssetId"
93+func S () = "%s__stakedAssetId"
8694
8795
88-func P (Q) = makeString(["%s%s%s", "paramByUser", toString(Q), "amount"], a)
96+func T (U) = makeString(["%s%s%s", "paramByUser", toString(U), "amount"], a)
8997
9098
91-func R (Q) = makeString(["%s%s%s", "paramByUser", toString(Q), "start"], a)
99+func V (U) = makeString(["%s%s%s", "paramByUser", toString(U), "start"], a)
92100
93101
94-func S (Q) = makeString(["%s%s%s", "paramByUser", toString(Q), "vpEffectiveHeight"], a)
102+func W (U) = makeString(["%s%s%s", "paramByUser", toString(U), "vpEffectiveHeight"], a)
95103
96104
97-func T (U,Q,V) = makeString(["%s%s%s%s", "history", U, toString(Q), toBase58String(V)], a)
105+func X (Y,U,Z) = makeString(["%s%s%s%s", "history", Y, toString(U), toBase58String(Z)], a)
98106
99107
100-func W () = makeString(["%s%s", "stats", "activeTotalLocked"], a)
108+func aa () = makeString(["%s%s", "stats", "activeTotalLocked"], a)
101109
102110
103-func X () = makeString(["%s%s", "stats", "locksCount"], a)
111+func ab () = makeString(["%s%s", "stats", "locksCount"], a)
104112
105113
106-func Y () = makeString(["%s%s", "stats", "activeUsersCount"], a)
114+func ac () = makeString(["%s%s", "stats", "activeUsersCount"], a)
107115
108116
109-func Z (aa) = makeString(["%s%s%d", "stats", "depositAmtByDay", toString(aa)], a)
117+func ad (ae) = makeString(["%s%s%d", "stats", "depositAmtByDay", toString(ae)], a)
110118
111119
112-func ab () = makeString(["%s%s%d", "stats", "depositAmtTotals"], a)
120+func af () = makeString(["%s%s", "stats", "depositAmtTotals"], a)
113121
114122
115-func ac () = "%s__nextPeriod"
123+func ag () = "supportedRewardAssets"
116124
117125
118-func ad () = "supportedRewardAssets"
126+func ah () = makeString(["%s%s", "dep", "lastNum"], a)
119127
120128
121-func ae () = makeString(["%s%s%s", "dep", "lastNum"], a)
129+func ai (U) = makeString(["%s%s", "userRwdFromDepNum", U], a)
122130
123131
124-func af (Q) = makeString(["%s%s%s", "userRwdFromDepNum", Q], a)
132+func aj (ak,al) = makeString(["%s%d", "rwdPerNsbtSumByDepNum", toString(ak), al], a)
125133
126134
127-func ag (ah,ai) = makeString(["%s%d", "rwdPerNsbtSumByDepNum", toString(ah), ai], a)
135+func am (U,al) = makeString(["%s%s%s", "rwd", U, al], a)
128136
129137
130-func aj (Q,ai) = makeString(["%s%s%s", "rwd", Q, ai], a)
138+func an (U,al) = makeString(["%s%s%s", "clm", U, al], a)
131139
132140
133-func ak (Q,ai) = makeString(["%s%s%s", "clm", Q, ai], a)
141+func ao (al) = makeString(["%s%s", "notDistributed", al], a)
134142
135143
136-func al (ai) = makeString(["%s%s", "notDistributed", ai], a)
144+func ap () = makeString(["%s%s", "vp", "periodDuration"], a)
137145
138146
139-func am (an,ao) = fraction(toBigInt(an), g, ao)
147+func aq () = makeString(["%s%s", "vp", "lastTotalsPeriodProcessed"], a)
140148
141149
142-func ap (x) = valueOrElse(getInteger(this, x), 0)
150+func ar (U) = makeString(["%s%s%s", "vp", "lastUserPeriodProcessed", U], a)
143151
144152
145-func aq (x,ar) = valueOrElse(getInteger(this, x), ar)
153+func as () = makeString(["%s%s", "vp", "totalMature"], a)
146154
147155
148-func as (x) = valueOrErrorMessage(getInteger(this, x), (("Mandatory this." + x) + " is not defined"))
156+func at () = makeString(["%s%s", "vp", "totalTeen"], a)
149157
150158
151-func at (x,ar) = valueOrElse(getString(this, x), ar)
159+func au () = makeString(["%s%s", "vp", "totalKid"], a)
152160
153161
154-func au (av) = valueOrErrorMessage(addressFromString(av), ("couldn't parse passed addressStr=" + av))
162+func av (U) = makeString(["%s%s%s", "vp", "userMature", U], a)
155163
156164
157-func aw (ax) = if ((ax == h))
158- then unit
159- else fromBase58String(ax)
165+func aw (U) = makeString(["%s%s%s", "vp", "userTeen", U], a)
160166
161167
162-func ay (az) = {
163- let aA = az
164- if ($isInstanceOf(aA, "Int"))
168+func ax (U) = makeString(["%s%s%s", "vp", "userKid", U], a)
169+
170+
171+func ay (az,aA) = fraction(toBigInt(az), g, aA)
172+
173+
174+func aB (A) = valueOrElse(getInteger(this, A), 0)
175+
176+
177+func aC (A,aD) = valueOrElse(getInteger(this, A), aD)
178+
179+
180+func aE (A) = valueOrErrorMessage(getInteger(this, A), (("Mandatory this." + A) + " is not defined"))
181+
182+
183+func aF (A,aD) = valueOrElse(getString(this, A), aD)
184+
185+
186+func aG (aH) = valueOrErrorMessage(addressFromString(aH), ("couldn't parse passed addressStr=" + aH))
187+
188+
189+func aI (aJ) = if ((aJ == h))
190+ then unit
191+ else fromBase58String(aJ)
192+
193+
194+func aK (aL) = {
195+ let aM = aL
196+ if ($isInstanceOf(aM, "Int"))
165197 then {
166- let aB = aA
167- aB
198+ let aN = aM
199+ aN
168200 }
169201 else throw("fail to cast into Int")
170202 }
171203
172204
173-func aC (aD) = {
174- let aA = aD
175- if ($isInstanceOf(aA, "(Int, Int, Int, Int, Int, Int, Int)"))
205+func aO (aP) = {
206+ let aM = aP
207+ if ($isInstanceOf(aM, "(Int, Int, Int, Int, Int, Int, Int)"))
176208 then {
177- let aE = aA
178- aE
209+ let aQ = aM
210+ aQ
179211 }
180212 else throw("fail to cast into Int")
181213 }
182214
183215
184-func aF (aG,aH,aI,aJ) = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aG), toString(aH), toString(aI), toString(aJ)], a)
216+func aR (aS,aT,aU,aV) = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aS), toString(aT), toString(aU), toString(aV)], a)
185217
186218
187-func aK (aL,aM) = makeString(["%s%d%d%s", aL, toString(lastBlock.height), toString(lastBlock.timestamp), aM], a)
219+func aW (aX,aY) = makeString(["%s%d%d%s", aX, toString(lastBlock.height), toString(lastBlock.timestamp), aY], a)
188220
189221
190-func aN (U,Q,V,aG,aH,aI,aJ) = StringEntry(T(U, Q, V), aF(aG, aH, aI, aJ))
222+func aZ (Y,U,Z,aS,aT,aU,aV) = StringEntry(X(Y, U, Z), aR(aS, aT, aU, aV))
191223
192224
193-func aO (Q,V,aM) = StringEntry(T("claim", Q, V), aK(toString(Q), aM))
225+func ba (U,Z,aY) = StringEntry(X("claim", U, Z), aW(toString(U), aY))
194226
195227
196-func aP (aQ,aR,aS) = {
197- let aT = ap(X())
198- let aU = ap(Y())
199- let aV = ap(W())
200- let aW = (aV + aQ)
201- $Tuple3([IntegerEntry(X(), (aT + aR)), IntegerEntry(Y(), (aU + aS)), IntegerEntry(W(), aW)], aV, aW)
228+func bb (bc,bd,be) = {
229+ let bf = aB(ab())
230+ let bg = aB(ac())
231+ let bh = aB(aa())
232+ let bi = (bh + bc)
233+ $Tuple3([IntegerEntry(ab(), (bf + bd)), IntegerEntry(ac(), (bg + be)), IntegerEntry(aa(), bi)], bh, bi)
202234 }
203235
204236
205-func aX (Q,aY,aZ) = [IntegerEntry(P(Q), aY), IntegerEntry(R(Q), aZ)]
237+func bj (U,bk,bl) = [IntegerEntry(T(U), bk), IntegerEntry(V(U), bl)]
206238
207239
208-func ba () = $Tuple2(fromBase58String(v(this, O())), as(N()))
240+func bm () = $Tuple2(fromBase58String(y(this, S())), aE(R()))
209241
210242
211-func bb (Q) = (aq(P(Q), 0) > 0)
243+func bn (U) = (aC(T(U), 0) > 0)
212244
213245
214-func bc (Q) = if (bb(Q))
215- then $Tuple3(false, as(P(Q)), as(R(Q)))
246+func bo (U) = if (bn(U))
247+ then $Tuple3(false, aE(T(U)), aE(V(U)))
216248 else unit
217249
218250
219-func bd (Q) = valueOrErrorMessage(bc(Q), (("User " + toString(Q)) + " is not defined"))
251+func bp (U) = valueOrErrorMessage(bo(U), (("User " + toString(U)) + " is not defined"))
220252
221253
222-let be = at(ad(), "")
254+let bq = aF(ag(), "")
223255
224-let bf = split(be, "_")
256+let br = split(bq, "_")
225257
226-func bg (Q,bh,bi,bj,bk) = {
227- let bl = ag(bk, bh)
228- let bm = parseBigIntValue(at(ag(bk, bh), "0"))
229- let bn = parseBigIntValue(at(ag(bj, bh), "0"))
230- let bo = toInt(fraction((bm - bn), bi, g))
231- let bp = aj(Q, bh)
232- let bq = aq(bp, 0)
233- $Tuple4((bq + bo), bq, bo, bp)
258+func bs (U,bt,bu,bv,bw) = {
259+ let bx = aj(bw, bt)
260+ let by = parseBigIntValue(aF(aj(bw, bt), "0"))
261+ let bz = parseBigIntValue(aF(aj(bv, bt), "0"))
262+ let bA = toInt(fraction((by - bz), bu, g))
263+ let bB = am(U, bt)
264+ let bC = aC(bB, 0)
265+ $Tuple4((bC + bA), bC, bA, bB)
234266 }
235267
236268
237-func br (aa) = ((aa / j) * j)
269+func bD (ae) = ((ae / j) * j)
238270
239271
240-func bs (bt,bu,bv) = {
241- let bw = valueOrErrorMessage(indexOf(bt, bu), ((("there is no substring " + bu) + " in ") + bt))
242- if ((bw == 0))
272+func bE (bF,bG,bH) = {
273+ let bI = valueOrErrorMessage(indexOf(bF, bG), ((("there is no substring " + bG) + " in ") + bF))
274+ if ((bI == 0))
243275 then 0
244276 else {
245- let bx = take(bt, bw)
246- (size(split(bx, bv)) - 1)
277+ let bJ = take(bF, bI)
278+ (size(split(bJ, bH)) - 1)
247279 }
248280 }
249281
250282
251-let by = "%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d"
283+let bK = "%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d"
252284
253-func bz (bA,bB,bC) = {
254- let bD = split(bA, b)
255- func bE (F) = if ((F != bB))
256- then bD[F]
257- else toString((parseIntValue(bD[F]) + bC))
285+func bL (bM,bN,bO) = {
286+ let bP = split(bM, b)
287+ func bQ (I) = if ((I != bN))
288+ then bP[I]
289+ else toString((parseIntValue(bP[I]) + bO))
258290
259- makeString([by, bE(1), bE(2), bE(3), bE(4), bE(5), bE(6), bE(7), bE(8), bE(9), bE(10), bE(11), bE(12), bE(13), bE(14), bE(15), bE(16), bE(17), bE(18)], b)
291+ makeString([bK, bQ(1), bQ(2), bQ(3), bQ(4), bQ(5), bQ(6), bQ(7), bQ(8), bQ(9), bQ(10), bQ(11), bQ(12), bQ(13), bQ(14), bQ(15), bQ(16), bQ(17), bQ(18)], b)
260292 }
261293
262294
263-func bF (bG,bH) = {
264- let bI = br(lastBlock.timestamp)
265- let bJ = Z(bI)
266- let bK = ab()
267- let bL = bs(be, bH, "_")
268- let bM = (by + "__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0")
269- let bN = valueOrElse(getString(this, bK), bM)
270- let bO = bz(bN, (bL + 1), bG)
271-[StringEntry(bK, bO), StringEntry(bJ, bO)]
295+func bR (bS,bT) = {
296+ let bU = bD(lastBlock.timestamp)
297+ let bV = ad(bU)
298+ let bW = af()
299+ let bX = bE(bq, bT, "_")
300+ let bY = (bK + "__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0")
301+ let bZ = valueOrElse(getString(this, bW), bY)
302+ let ca = bL(bZ, (bX + 1), bS)
303+[StringEntry(bW, ca), StringEntry(bV, ca)]
272304 }
273305
274306
275-func bP (bQ,Q,bR) = {
276- let bi = toBigInt(bR)
277- let bS = af(Q)
278- let bj = aq(bS, -1)
279- let bk = aq(ae(), -1)
280- func bT (bU,bV) = {
281- let bW = bg(Q, bV, bi, bj, bk)
282- let bX = bW._1
283- let bY = bW._2
284- let bZ = bW._3
285- let bp = bW._4
286- (bU :+ IntegerEntry(bp, bX))
307+func cb (cc,U,cd) = {
308+ let bu = toBigInt(cd)
309+ let ce = ai(U)
310+ let bv = aC(ce, -1)
311+ let bw = aC(ah(), -1)
312+ func cf (cg,ch) = {
313+ let ci = bs(U, ch, bu, bv, bw)
314+ let cj = ci._1
315+ let ck = ci._2
316+ let cl = ci._3
317+ let bB = ci._4
318+ (cg :+ IntegerEntry(bB, cj))
287319 }
288320
289- if (if ((bk == -1))
290- then (bj == -1)
321+ if (if ((bw == -1))
322+ then (bv == -1)
291323 else false)
292324 then nil
293- else if (if ((bk == -1))
294- then (bj > -1)
325+ else if (if ((bw == -1))
326+ then (bv > -1)
295327 else false)
296328 then throw("invalid depositNumLast and depositNumUser state")
297- else if (if ((bk > -1))
298- then (bj >= -1)
329+ else if (if ((bw > -1))
330+ then (bv >= -1)
299331 else false)
300- then if (bQ)
301- then [IntegerEntry(bS, bk)]
332+ then if (cc)
333+ then [IntegerEntry(ce, bw)]
302334 else ({
303- let ca = bf
304- let cb = size(ca)
305- let cc = nil
306- func cd (ce,cf) = if ((cf >= cb))
307- then ce
308- else bT(ce, ca[cf])
335+ let cm = br
336+ let cn = size(cm)
337+ let co = nil
338+ func cp (cq,cr) = if ((cr >= cn))
339+ then cq
340+ else cf(cq, cm[cr])
309341
310- func cg (ce,cf) = if ((cf >= cb))
311- then ce
342+ func cs (cq,cr) = if ((cr >= cn))
343+ then cq
312344 else throw("List size exceeds 9")
313345
314- cg(cd(cd(cd(cd(cd(cd(cd(cd(cd(cc, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
315- } :+ IntegerEntry(bS, bk))
316- else throw(((("uncovered condition: depositNumLast=" + toString(bk)) + " depositNumUser=") + toString(bj)))
346+ cs(cp(cp(cp(cp(cp(cp(cp(cp(cp(co, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
347+ } :+ IntegerEntry(ce, bw))
348+ else throw(((("uncovered condition: depositNumLast=" + toString(bw)) + " depositNumUser=") + toString(bv)))
317349 }
318350
319351
320-func ch (ai,ci) = {
321- let cj = al(ai)
322- let ck = aq(cj, 0)
323-[IntegerEntry(cj, (ck + ci))]
352+func ct (al,cu) = {
353+ let cv = ao(al)
354+ let cw = aC(cv, 0)
355+[IntegerEntry(cv, (cw + cu))]
324356 }
325357
326358
327-func cl (cm) = (cm / K)
359+func cx (cy) = (cy / O)
328360
329361
330-func cn (co,cp,cq,cr) = {
331- let cs = (cp - height)
332- if ((0 >= cs))
333- then (height + co)
334- else {
335- let ct = (co - cs)
336- let cu = if ((cr != 0))
337- then fraction(cq, d, cr)
338- else cp
339- ((co + height) - fraction(ct, cu, d))
340- }
362+func cz (U,cA,cB,cC) = {
363+ let cD = valueOrElse(bo(U), $Tuple3(true, 0, 0))
364+ let cc = cD._1
365+ let cd = cD._2
366+ let cE = cD._3
367+ let cF = if (cc)
368+ then cA
369+ else (cA + cd)
370+ let cG = aC(ap(), k)
371+ let cH = (height / cG)
372+ let cI = if ((cC > 0))
373+ then (cH + 2)
374+ else if ((cB > 0))
375+ then (cH + 1)
376+ else cH
377+ $Tuple5(cc, cd, cE, cF, (cI * cG))
341378 }
342379
343380
344-func cv (Q,cw) = {
345- let cx = valueOrElse(bc(Q), $Tuple3(true, 0, 0))
346- let bQ = cx._1
347- let bR = cx._2
348- let cp = cx._3
349- let cy = if (bQ)
350- then cw
351- else (cw + bR)
352- let co = (1440 * 14)
353- let cz = if (bQ)
354- then (co + height)
355- else cn(co, cp, bR, cy)
356- $Tuple5(bQ, bR, cp, cy, cz)
381+func cJ () = {
382+ let cH = (height / aC(ap(), k))
383+ if ((cH > aB(aq())))
384+ then {
385+ let cK = valueOrElse(getInteger(as()), aB(aa()))
386+[IntegerEntry(as(), (cK + aB(at()))), IntegerEntry(at(), aB(au())), IntegerEntry(au(), 0), IntegerEntry(aq(), cH)]
387+ }
388+ else nil
357389 }
358390
359391
360-func cA (Q,cB) = {
361- let cC = ba()
362- let cD = cC._1
363- let cE = cC._2
364- if ((size(cB.payments) != 1))
392+func cL (cM,cA) = if ((0 > cA))
393+ then throw("amountToAdd should be >= 0")
394+ else {
395+ let cG = aC(ap(), k)
396+ let cH = (height / cG)
397+ let cK = valueOrElse(getInteger(as()), aB(aa()))
398+ let cN = aB(at())
399+ let cO = aB(au())
400+ let cP = valueOrElse(getInteger(av(cM)), aB(T(addressFromStringValue(cM))))
401+ let cB = aB(aw(cM))
402+ let cC = aB(ax(cM))
403+ let cQ = if ((cH > aB(ar(cM))))
404+ then $Tuple7((cK + cB), (cN + (cC - cB)), (cO - cC), (cP + cB), cC, 0, [IntegerEntry(ar(cM), cH)])
405+ else $Tuple7(cK, cN, cO, cP, cB, cC, nil)
406+ let cR = if ((cH > aB(aq())))
407+ then $Tuple4([IntegerEntry(as(), (cQ._1 + cQ._2)), IntegerEntry(at(), cQ._3), IntegerEntry(au(), 0), IntegerEntry(aq(), cH)], (cQ._1 + cQ._2), cQ._3, 0)
408+ else $Tuple4(nil, cK, cN, cO)
409+ let cS = fraction(cA, (height % cG), cG)
410+ let cT = (cA - cS)
411+ $Tuple7(((((cR._1 :+ IntegerEntry(av(cM), cQ._4)) :+ IntegerEntry(aw(cM), (cQ._5 + cT))) :+ IntegerEntry(ax(cM), (cQ._6 + cS))) ++ cQ._7), cR._2, cR._3, cR._4, cQ._4, (cQ._5 + cT), (cQ._6 + cS))
412+ }
413+
414+
415+let cU = 0
416+
417+let cV = 1
418+
419+func cW (cX,cY) = if ((cY >= cX))
420+ then [(cY - cX), 0]
421+ else [0, (cX - cY)]
422+
423+
424+func cZ (cM,da) = if ((da >= 0))
425+ then throw("amountToRemove should be < 0")
426+ else {
427+ let cG = aC(ap(), k)
428+ let cH = (height / cG)
429+ let cK = valueOrElse(getInteger(as()), aB(aa()))
430+ let cN = aB(at())
431+ let cO = aB(au())
432+ let cP = valueOrElse(getInteger(av(cM)), aB(T(addressFromStringValue(cM))))
433+ let cB = aB(aw(cM))
434+ let cC = aB(ax(cM))
435+ let db = cW(cP, da)
436+ let dc = cW(cB, db[cU])
437+ let dd = cW(cC, dc[cU])
438+ if ((dd[cU] != 0))
439+ then throw("Should not happen")
440+ else {
441+ let cQ = if ((cH > aB(ar(cM))))
442+ then $Tuple7((cK + dc[cV]), (cN + (dd[cV] - dc[cV])), (cO - dd[cV]), (db[cV] + dc[cV]), dd[cV], 0, [IntegerEntry(ar(cM), cH)])
443+ else $Tuple7(cK, cN, cO, db[cV], dc[cV], dd[cV], nil)
444+ let cR = if ((cH > aB(aq())))
445+ then $Tuple4([IntegerEntry(as(), (cQ._1 + cQ._2)), IntegerEntry(at(), cQ._3), IntegerEntry(au(), 0), IntegerEntry(aq(), cH)], (cQ._1 + cQ._2), cQ._3, 0)
446+ else $Tuple4(nil, cK, cN, cO)
447+ $Tuple7(((((cR._1 :+ IntegerEntry(av(cM), cQ._4)) :+ IntegerEntry(aw(cM), cQ._5)) :+ IntegerEntry(ax(cM), cQ._6)) ++ cQ._7), cR._2, cR._3, cR._4, cQ._4, cQ._5, cQ._6)
448+ }
449+ }
450+
451+
452+func de (U,df) = {
453+ let dg = bm()
454+ let dh = dg._1
455+ let di = dg._2
456+ if ((size(df.payments) != 1))
365457 then throw("Invalid payments size")
366458 else {
367- let cF = cB.payments[0]
368- let aY = cF.amount
369- let cG = (("Invalid asset. " + toBase58String(cD)) + " is expected")
370- let bh = valueOrErrorMessage(cF.assetId, cG)
371- if ((bh != cD))
372- then throw(cG)
459+ let dj = df.payments[0]
460+ let bk = dj.amount
461+ let dk = (("Invalid asset. " + toBase58String(dh)) + " is expected")
462+ let bt = valueOrErrorMessage(dj.assetId, dk)
463+ if ((bt != dh))
464+ then throw(dk)
373465 else {
374- let cH = toString(Q)
375- let cI = cv(Q, aY)
376- let bQ = cI._1
377- let bR = cI._2
378- let cp = cI._3
379- let cy = cI._4
380- let cz = cI._5
381- if ((cE > cy))
382- then throw(("Min lock amount is " + toString(cE)))
466+ let cM = toString(U)
467+ let dl = cL(cM, bk)
468+ let dm = cz(U, bk, dl._6, dl._7)
469+ let cc = dm._1
470+ let cd = dm._2
471+ let cE = dm._3
472+ let cF = dm._4
473+ let dn = dm._5
474+ if ((di > cF))
475+ then throw(("Min lock amount is " + toString(di)))
383476 else {
384- let cJ = aP(aY, 1, if (bQ)
477+ let do = bb(bk, 1, if (cc)
385478 then 1
386479 else 0)
387- let cK = cJ._1
388- let cL = cJ._2
389- let cM = cJ._3
390- ((([aN("stake", Q, cB.transactionId, bR, cp, cy, cz)] ++ bP(bQ, cH, bR)) ++ aX(Q, cy, cz)) ++ cK)
480+ let dp = do._1
481+ let dq = do._2
482+ let dr = do._3
483+ (((([aZ("stake", U, df.transactionId, cd, cE, cF, dn)] ++ cb(cc, cM, cd)) ++ bj(U, cF, dn)) ++ dp) ++ dl._1)
391484 }
392485 }
393486 }
394487 }
395488
396489
397-func cN (Q,cB) = {
398- let cH = toString(Q)
399- if ((size(cB.payments) > 0))
490+func ds (U,df) = {
491+ let cM = toString(U)
492+ if ((size(df.payments) > 0))
400493 then throw("payments are not accepted")
401494 else {
402- let cO = valueOrElse(bc(Q), $Tuple3(true, 0, 0))
403- let bQ = cO._1
404- let bR = cO._2
405- let cP = cO._3
406- let bi = toBigInt(bR)
407- let bS = af(cH)
408- let bj = aq(bS, -1)
409- let bk = aq(ae(), -1)
410- func cQ (bU,bV) = {
411- let cR = bg(cH, bV, bi, bj, bk)
412- let bX = cR._1
413- let bY = cR._2
414- let bZ = cR._3
415- let bp = cR._4
416- let cS = ak(cH, bV)
417- let cT = bU
418- let cU = cT._1
419- let cV = cT._2
420- let cW = makeString([bV, toString(bX)], ":")
421- let cX = makeString([cV, cW], "_")
422- if ((0 >= bX))
423- then $Tuple2(cU, cX)
424- else $Tuple2((((cU :+ ScriptTransfer(Q, bX, aw(bV))) :+ IntegerEntry(cS, (valueOrElse(getInteger(cS), 0) + bX))) :+ IntegerEntry(bp, 0)), cX)
495+ let dt = valueOrElse(bo(U), $Tuple3(true, 0, 0))
496+ let cc = dt._1
497+ let cd = dt._2
498+ let du = dt._3
499+ let bu = toBigInt(cd)
500+ let ce = ai(cM)
501+ let bv = aC(ce, -1)
502+ let bw = aC(ah(), -1)
503+ func dv (cg,ch) = {
504+ let dw = bs(cM, ch, bu, bv, bw)
505+ let cj = dw._1
506+ let ck = dw._2
507+ let cl = dw._3
508+ let bB = dw._4
509+ let dx = an(cM, ch)
510+ let dy = cg
511+ let dz = dy._1
512+ let dA = dy._2
513+ let dB = makeString([ch, toString(cj)], ":")
514+ let dC = makeString([dA, dB], "_")
515+ if ((0 >= cj))
516+ then $Tuple2(dz, dC)
517+ else $Tuple2((((dz :+ ScriptTransfer(U, cj, aI(ch))) :+ IntegerEntry(dx, (valueOrElse(getInteger(dx), 0) + cj))) :+ IntegerEntry(bB, 0)), dC)
425518 }
426519
427- let cY = {
428- let ca = bf
429- let cb = size(ca)
430- let cc = $Tuple2(nil, "")
431- func cd (ce,cf) = if ((cf >= cb))
432- then ce
433- else cQ(ce, ca[cf])
520+ let dD = {
521+ let cm = br
522+ let cn = size(cm)
523+ let co = $Tuple2(nil, "")
524+ func cp (cq,cr) = if ((cr >= cn))
525+ then cq
526+ else dv(cq, cm[cr])
434527
435- func cg (ce,cf) = if ((cf >= cb))
436- then ce
528+ func cs (cq,cr) = if ((cr >= cn))
529+ then cq
437530 else throw("List size exceeds 9")
438531
439- cg(cd(cd(cd(cd(cd(cd(cd(cd(cd(cc, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
532+ cs(cp(cp(cp(cp(cp(cp(cp(cp(cp(co, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
440533 }
441- let cZ = cY._1
442- let da = cY._2
443- if ((0 >= size(cZ)))
534+ let dE = dD._1
535+ let dF = dD._2
536+ if ((0 >= size(dE)))
444537 then $Tuple2(nil, 0)
445- else $Tuple2(((cZ :+ IntegerEntry(bS, bk)) :+ aO(Q, cB.transactionId, drop(da, 1))), size(cZ))
538+ else $Tuple2(((dE :+ IntegerEntry(ce, bw)) :+ ba(U, df.transactionId, drop(dF, 1))), size(dE))
446539 }
447540 }
448541
449542
450-@Callable(cB)
451-func constructor (cE,db,cD) = if ((cB.caller != this))
543+@Callable(df)
544+func constructor (di,dG,dh) = if ((df.caller != this))
452545 then throw("Permission denied")
453- else [IntegerEntry(N(), cE), StringEntry(ad(), db), StringEntry(O(), cD)]
546+ else [IntegerEntry(R(), di), StringEntry(ag(), dG), StringEntry(S(), dh)]
454547
455548
456549
457-@Callable(cB)
458-func stake () = cA(cB.caller, cB)
550+@Callable(df)
551+func stake () = de(df.caller, df)
459552
460553
461554
462-@Callable(cB)
463-func stakeByOriginCaller () = cA(cB.originCaller, cB)
555+@Callable(df)
556+func stakeByOriginCaller () = de(df.originCaller, df)
464557
465558
466559
467-@Callable(cB)
468-func unstake (aY) = if ((size(cB.payments) != 0))
560+@Callable(df)
561+func unstake (bk) = if ((size(df.payments) != 0))
469562 then throw("unstake doesn't require any payment")
470563 else {
471- let Q = cB.caller
472- let cH = toString(Q)
473- let dc = ba()
474- let cD = dc._1
475- let cE = dc._2
476- let dd = bd(Q)
477- let bQ = dd._1
478- let bR = dd._2
479- let cp = dd._3
480- let de = aC(reentrantInvoke(I, "swapParamsByUserSYSREADONLY", [cH, 0], nil))
481- let df = de._2
482- let dg = de._3
483- if ((df > 0))
484- then throw((("You have already made a swap operation. Wait " + toString((height + dg))) + " height to unstake"))
485- else if ((0 >= bR))
564+ let U = df.caller
565+ let cM = toString(U)
566+ let dH = bm()
567+ let dh = dH._1
568+ let di = dH._2
569+ let dI = bp(U)
570+ let cc = dI._1
571+ let cd = dI._2
572+ let cE = dI._3
573+ let dJ = aO(reentrantInvoke(L, "swapParamsByUserSYSREADONLY", [cM, 0], nil))
574+ let dK = dJ._2
575+ let dL = dJ._3
576+ if ((dK > 0))
577+ then throw((("You have already made a swap operation. Wait " + toString((height + dL))) + " height to unstake"))
578+ else if ((0 >= cd))
486579 then throw("Nothing to unstake")
487- else if ((aY > bR))
488- then throw(((("Requested " + toString(aY)) + ", but staked only ") + toString(bR)))
580+ else if ((bk > cd))
581+ then throw(((("Requested " + toString(bk)) + ", but staked only ") + toString(cd)))
489582 else {
490- let cy = (bR - aY)
491- let dh = aP(-(aY), if ((aY == bR))
583+ let cF = (cd - bk)
584+ let dM = bb(-(bk), if ((bk == cd))
492585 then -1
493- else 0, if ((aY == bR))
586+ else 0, if ((bk == cd))
494587 then -1
495588 else 0)
496- let cK = dh._1
497- let cL = dh._2
498- let cM = dh._3
499- ((([ScriptTransfer(Q, aY, cD), aN("unstake", Q, cB.transactionId, bR, cp, cy, cp)] ++ bP(false, cH, bR)) ++ aX(Q, cy, cp)) ++ cK)
589+ let dp = dM._1
590+ let dq = dM._2
591+ let dr = dM._3
592+ (((([ScriptTransfer(U, bk, dh), aZ("unstake", U, df.transactionId, cd, cE, cF, cE)] ++ cb(false, cM, cd)) ++ bj(U, cF, cE)) ++ dp) ++ cZ(cM, bk)._1)
500593 }
501594 }
502595
503596
504597
505-@Callable(cB)
506-func deposit () = if ((size(cB.payments) != 1))
598+@Callable(df)
599+func deposit () = if ((size(df.payments) != 1))
507600 then throw("exact 1 payment is allowed only")
508601 else {
509- let di = cB.payments[0]
510- let aY = di.amount
511- let dj = valueOrElse(di.assetId, i)
512- let dk = toBase58String(dj)
513- let dl = if ((dj == i))
602+ let dN = df.payments[0]
603+ let bk = dN.amount
604+ let dO = valueOrElse(dN.assetId, i)
605+ let dP = toBase58String(dO)
606+ let dQ = if ((dO == i))
514607 then f
515608 else e
516- let dm = toBigInt(aY)
517- let cL = aq(W(), 0)
518- let dn = toBigInt(cL)
519- if ((0 > cL))
609+ let dR = toBigInt(bk)
610+ let dq = aC(aa(), 0)
611+ let dS = toBigInt(dq)
612+ if ((0 > dq))
520613 then throw("TODO: case is not supported")
521- else if ((cL == 0))
522- then ch(dk, aY)
614+ else if ((dq == 0))
615+ then ct(dP, bk)
523616 else {
524- let do = fraction(dm, g, dn)
525- let dp = ae()
526- let bk = aq(dp, -1)
527- let dq = (bk + 1)
528- if (!(contains(be, dk)))
529- then throw(((be + " doesn't contain ") + dk))
617+ let dT = fraction(dR, g, dS)
618+ let dU = ah()
619+ let bw = aC(dU, -1)
620+ let dV = (bw + 1)
621+ if (!(contains(bq, dP)))
622+ then throw(((bq + " doesn't contain ") + dP))
530623 else {
531- func dr (bU,ds) = {
532- let dt = ag(dq, ds)
533- let du = at(ag(bk, ds), "0")
534- (bU :+ (if ((ds == dk))
535- then StringEntry(dt, toString((parseBigIntValue(du) + do)))
536- else StringEntry(dt, du)))
624+ func dW (cg,dX) = {
625+ let dY = aj(dV, dX)
626+ let dZ = aF(aj(bw, dX), "0")
627+ (cg :+ (if ((dX == dP))
628+ then StringEntry(dY, toString((parseBigIntValue(dZ) + dT)))
629+ else StringEntry(dY, dZ)))
537630 }
538631
539- (({
540- let ca = bf
541- let cb = size(ca)
542- let cc = nil
543- func cd (ce,cf) = if ((cf >= cb))
544- then ce
545- else dr(ce, ca[cf])
632+ ((({
633+ let cm = br
634+ let cn = size(cm)
635+ let co = nil
636+ func cp (cq,cr) = if ((cr >= cn))
637+ then cq
638+ else dW(cq, cm[cr])
546639
547- func cg (ce,cf) = if ((cf >= cb))
548- then ce
640+ func cs (cq,cr) = if ((cr >= cn))
641+ then cq
549642 else throw("List size exceeds 9")
550643
551- cg(cd(cd(cd(cd(cd(cd(cd(cd(cd(cc, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
552- } :+ IntegerEntry(dp, dq)) ++ bF(aY, dk))
644+ cs(cp(cp(cp(cp(cp(cp(cp(cp(cp(co, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
645+ } :+ IntegerEntry(dU, dV)) ++ bR(bk, dP)) ++ cJ())
553646 }
554647 }
555648 }
556649
557650
558651
559-@Callable(cB)
560-func claimRewards () = cN(cB.caller, cB)
652+@Callable(df)
653+func claimRewards () = ds(df.caller, df)
561654
562655
563656
564-@Callable(cB)
565-func claimRewardsByOriginCaller () = cN(cB.originCaller, cB)
657+@Callable(df)
658+func claimRewardsByOriginCaller () = ds(df.originCaller, df)
566659
567660
568661
569-@Callable(cB)
570-func unclaimedRewardsREADONLY (cH) = {
571- func dv (bU,bV) = ((bU + makeString([bV, "0", "0"], ":")) + "_")
662+@Callable(df)
663+func unclaimedRewardsREADONLY (cM) = {
664+ func ea (cg,ch) = ((cg + makeString([ch, "0", "0"], ":")) + "_")
572665
573- let dw = if ((cH == ""))
666+ let eb = if ((cM == ""))
574667 then {
575- let ca = bf
576- let cb = size(ca)
577- let cc = ""
578- func cd (ce,cf) = if ((cf >= cb))
579- then ce
580- else dv(ce, ca[cf])
668+ let cm = br
669+ let cn = size(cm)
670+ let co = ""
671+ func cp (cq,cr) = if ((cr >= cn))
672+ then cq
673+ else ea(cq, cm[cr])
581674
582- func cg (ce,cf) = if ((cf >= cb))
583- then ce
675+ func cs (cq,cr) = if ((cr >= cn))
676+ then cq
584677 else throw("List size exceeds 9")
585678
586- cg(cd(cd(cd(cd(cd(cd(cd(cd(cd(cc, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
679+ cs(cp(cp(cp(cp(cp(cp(cp(cp(cp(co, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
587680 }
588681 else {
589- let Q = addressFromStringValue(cH)
590- let dx = valueOrElse(bc(Q), $Tuple3(true, 0, 0))
591- let bQ = dx._1
592- let bR = dx._2
593- let cP = dx._3
594- let bi = toBigInt(bR)
595- let bS = af(cH)
596- let bj = aq(bS, -1)
597- let bk = aq(ae(), -1)
598- func cQ (bU,bV) = {
599- let dy = bg(cH, bV, bi, bj, bk)
600- let bX = dy._1
601- let bY = dy._2
602- let bZ = dy._3
603- let bp = dy._4
604- let dz = valueOrElse(getInteger(ak(cH, bV)), 0)
605- ((bU + makeString([bV, toString(bX), toString(dz)], ":")) + "_")
682+ let U = addressFromStringValue(cM)
683+ let ec = valueOrElse(bo(U), $Tuple3(true, 0, 0))
684+ let cc = ec._1
685+ let cd = ec._2
686+ let du = ec._3
687+ let bu = toBigInt(cd)
688+ let ce = ai(cM)
689+ let bv = aC(ce, -1)
690+ let bw = aC(ah(), -1)
691+ func dv (cg,ch) = {
692+ let ed = bs(cM, ch, bu, bv, bw)
693+ let cj = ed._1
694+ let ck = ed._2
695+ let cl = ed._3
696+ let bB = ed._4
697+ let ee = valueOrElse(getInteger(an(cM, ch)), 0)
698+ ((cg + makeString([ch, toString(cj), toString(ee)], ":")) + "_")
606699 }
607700
608- let ca = bf
609- let cb = size(ca)
610- let cc = ""
611- func cd (ce,cf) = if ((cf >= cb))
612- then ce
613- else cQ(ce, ca[cf])
701+ let cm = br
702+ let cn = size(cm)
703+ let co = ""
704+ func cp (cq,cr) = if ((cr >= cn))
705+ then cq
706+ else dv(cq, cm[cr])
614707
615- func cg (ce,cf) = if ((cf >= cb))
616- then ce
708+ func cs (cq,cr) = if ((cr >= cn))
709+ then cq
617710 else throw("List size exceeds 9")
618711
619- cg(cd(cd(cd(cd(cd(cd(cd(cd(cd(cc, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
712+ cs(cp(cp(cp(cp(cp(cp(cp(cp(cp(co, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9)
620713 }
621- $Tuple2(nil, dropRight(dw, 1))
714+ $Tuple2(nil, dropRight(eb, 1))
622715 }
623716
624717
625718
626-@Callable(cB)
627-func surfStakingSYSREADONLY (dA,dB) = {
628- let dC = aq(W(), 0)
629- let dD = cl(dC)
630- if ((dA == ""))
631- then $Tuple2(nil, [0, dC, 0, dD, 0, height, height])
719+@Callable(df)
720+func updateVotingPower (cM) = if (!(isDefined(addressFromString(cM))))
721+ then throw("Invalid user address")
722+ else {
723+ let dl = cL(cM, 0)
724+ $Tuple2(dl._1, [cx(dl._2), cx(dl._3), cx(dl._4), cx(dl._5), cx(dl._6), cx(dl._7)])
725+ }
726+
727+
728+
729+@Callable(df)
730+func surfStakingSYSREADONLY (ef,eg) = {
731+ let eh = aC(aa(), 0)
732+ let ei = cx(eh)
733+ let dl = if ((eg >= 0))
734+ then cL(ef, eg)
735+ else cZ(ef, eg)
736+ if ((ef == ""))
737+ then $Tuple2(nil, [0, eh, 0, ei, height, height, cx(dl._2), cx(dl._3), cx(dl._4), cx(dl._5), cx(dl._6), cx(dl._7)])
632738 else {
633- let Q = au(dA)
634- let cI = cv(Q, dB)
635- let bQ = cI._1
636- let bR = cI._2
637- let cp = cI._3
638- let cy = cI._4
639- let cz = cI._5
640- let dE = bR
641- let dF = cl(dE)
642- $Tuple2(nil, [dE, dC, dF, dD, cp, cz])
739+ let U = aG(ef)
740+ let dm = cz(U, eg, dl._6, dl._7)
741+ let cd = dm._2
742+ let cE = dm._3
743+ let cF = dm._4
744+ let dn = dm._5
745+ let ej = cd
746+ let ek = cx(ej)
747+ $Tuple2(nil, [ej, eh, ek, ei, cE, dn, cx(dl._2), cx(dl._3), cx(dl._4), cx(dl._5), cx(dl._6), cx(dl._7)])
643748 }
644749 }
645750
646751
647752
648-@Callable(cB)
649-func gnsbtFromSurfSYSREADONLY (cm) = $Tuple2(nil, cl(cm))
753+@Callable(df)
754+func gnsbtFromSurfSYSREADONLY (cy) = $Tuple2(nil, cx(cy))
650755
651756
652757
653-@Callable(cB)
758+@Callable(df)
654759 func configSYSREADONLY () = {
655- let dG = getIntegerValue(N())
656- let dH = (1440 * 14)
657- let dI = 1150000
658- $Tuple2(nil, [dG, (K * c), dH, dI])
760+ let el = getIntegerValue(R())
761+ let em = k
762+ let en = 1150000
763+ $Tuple2(nil, [el, (O * c), em, en])
659764 }
660765
661766

github/deemru/w8io/169f3d6 
266.19 ms