tx · 8pucsi8J2FqpyARCJcRdmV9N36JjNBZcJBLpx3UMeMJZ 3Mp5kisFrqESzrXxAMEPk2k69zpeF41czEE: -0.02300000 Waves 2022.08.10 13:37 [2178229] smart account 3Mp5kisFrqESzrXxAMEPk2k69zpeF41czEE > SELF 0.00000000 Waves
{ "type": 13, "id": "8pucsi8J2FqpyARCJcRdmV9N36JjNBZcJBLpx3UMeMJZ", "fee": 2300000, "feeAssetId": null, "timestamp": 1660127889629, "version": 1, "sender": "3Mp5kisFrqESzrXxAMEPk2k69zpeF41czEE", "senderPublicKey": "G349Uq3FTox7dRNLeAfAQeoACvwZ9iEnVSaHcEYn6j8J", "proofs": [ "2QuqXQkgQpCUhVL56kccj3g7tP5SD8DKzE4747zLsxTFQrWjQGpPbqfESKt3jKoQcz2kcj8jdwK1Zcdx1NvEE5N1" ], "script": "base64:BgJJCAISBAoCCAESABIDCgEBEgASABIAEgMKAQgSAwoBCBIDCgEIEgUKAwEBARIFCgMBAQESABIDCgEIEgcKBQgICAgIEgMKAQgSAFUAA1NFUAICX18ACVVTRVJERVBUSAAaAAVTQ0FMRQDoBwAFTVVMVDgAgMLXLwAKemVyb0JpZ0ludAkAtgIBAAAAFHByb2Nlc3NpbmdTdGFnZVRvdGFsAAAAFXByb2Nlc3NpbmdTdGFnZVNoYXJlcwABAQ5nZXROdW1iZXJCeUtleQEDa2V5CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQAAAQ9nZXROdW1iZXJPckZhaWwBA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMFA2tleQkArAICCQCsAgICD21hbmRhdG9yeSB0aGlzLgUDa2V5Ag8gaXMgbm90IGRlZmluZWQBDmdldFN0cmluZ0J5S2V5AQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUDa2V5AgABD2dldFN0cmluZ09yRmFpbAEDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUDa2V5CQCsAgIJAKwCAgIPbWFuZGF0b3J5IHRoaXMuBQNrZXkCDyBpcyBub3QgZGVmaW5lZAEDYWJzAQN2YWwDCQC/AgIFCnplcm9CaWdJbnQFA3ZhbAkAvgIBBQN2YWwFA3ZhbAALa2V5TWF4RGVwdGgCDCVzX19tYXhEZXB0aAAPbWF4RGVwdGhEZWZhdWx0AB4ACG1heERlcHRoCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFC2tleU1heERlcHRoBQ9tYXhEZXB0aERlZmF1bHQAFGtleU1heERlcHRoTWlncmF0aW9uAhUlc19fbWF4RGVwdGhNaWdyYXRpb24AGG1heERlcHRoTWlncmF0aW9uRGVmYXVsdAADABFtYXhEZXB0aE1pZ3JhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRRrZXlNYXhEZXB0aE1pZ3JhdGlvbgUYbWF4RGVwdGhNaWdyYXRpb25EZWZhdWx0AAtrZXlNaWdyYXRlZAIIbWlncmF0ZWQACG1pZ3JhdGVkCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFC2tleU1pZ3JhdGVkBwAda2V5TmV4dFByb2Nlc3NlZFVzZXJNaWdyYXRpb24CGm5leHRQcm9jZXNzZWRVc2VyTWlncmF0aW9uARFrZXlGYWN0b3J5QWRkcmVzcwACHCVzJXNfX2NvbmZpZ19fZmFjdG9yeUFkZHJlc3MAEWZhY3RvcnlBZGRyZXNzU3RyCQEPZ2V0U3RyaW5nT3JGYWlsAQkBEWtleUZhY3RvcnlBZGRyZXNzAAAPZmFjdG9yeUNvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBBRFmYWN0b3J5QWRkcmVzc1N0cgESa2V5RW1pc3Npb25BZGRyZXNzAAIdJXMlc19fY29uZmlnX19lbWlzc2lvbkFkZHJlc3MBE2tleU51bVRvVXNlck1hcHBpbmcBA251bQkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgdtYXBwaW5nCQDMCAICCG51bTJ1c2VyCQDMCAIJAKQDAQUDbnVtBQNuaWwFA1NFUAAWa2V5UmVmZXJyYWxQcm9ncmFtTmFtZQkAuQkCCQDMCAICBCVzJXMJAMwIAgIIcmVmZXJyYWwJAMwIAgILcHJvZ3JhbU5hbWUFA25pbAUDU0VQABpyZWZlcnJhbFByb2dyYW1OYW1lRGVmYXVsdAIGd3hsb2NrABNyZWZlcnJhbFByb2dyYW1OYW1lCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFFmtleVJlZmVycmFsUHJvZ3JhbU5hbWUFGnJlZmVycmFsUHJvZ3JhbU5hbWVEZWZhdWx0ABdrZXlSZWZlcnJhbE1pbkdXeEFtb3VudAkAuQkCCQDMCAICBCVzJXMJAMwIAgIIcmVmZXJyYWwJAMwIAgIMbWluR1d4QW1vdW50BQNuaWwFA1NFUAAbcmVmZXJyYWxNaW5HV3hBbW91bnREZWZhdWx0CQBoAgD0AwUFTVVMVDgAFHJlZmVycmFsTWluR1d4QW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFF2tleVJlZmVycmFsTWluR1d4QW1vdW50BRtyZWZlcnJhbE1pbkdXeEFtb3VudERlZmF1bHQAGWtleVJlZmVycmVyUmV3YXJkUGVybWlsbGUJALkJAgkAzAgCAgQlcyVzCQDMCAICCHJlZmVycmFsCQDMCAICFnJlZmVycmVyUmV3YXJkUGVybWlsbGUFA25pbAUDU0VQAB1yZWZlcnJlclJld2FyZFBlcm1pbGxlRGVmYXVsdAAyABZyZWZlcnJlclJld2FyZFBlcm1pbGxlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFGWtleVJlZmVycmVyUmV3YXJkUGVybWlsbGUFHXJlZmVycmVyUmV3YXJkUGVybWlsbGVEZWZhdWx0ABlrZXlSZWZlcnJhbFJld2FyZFBlcm1pbGxlCQC5CQIJAMwIAgIEJXMlcwkAzAgCAghyZWZlcnJhbAkAzAgCAhZyZWZlcnJhbFJld2FyZFBlcm1pbGxlBQNuaWwFA1NFUAAdcmVmZXJyYWxSZXdhcmRQZXJtaWxsZURlZmF1bHQAMgAWcmVmZXJyYWxSZXdhcmRQZXJtaWxsZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRlrZXlSZWZlcnJhbFJld2FyZFBlcm1pbGxlBR1yZWZlcnJhbFJld2FyZFBlcm1pbGxlRGVmYXVsdAELa2V5UmVmZXJyZXIBD3JlZmVycmFsQWRkcmVzcwkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAghyZWZlcnJlcgkAzAgCBRNyZWZlcnJhbFByb2dyYW1OYW1lCQDMCAIFD3JlZmVycmFsQWRkcmVzcwUDbmlsBQNTRVABFGtleVVuY2xhaW1lZFJlZmVycmFsAgtwcm9ncmFtTmFtZQ5jbGFpbWVyQWRkcmVzcwkAuQkCCQDMCAICCCVzJXMlcyVzCQDMCAICEXVuY2xhaW1lZFJlZmVycmFsCQDMCAIFC3Byb2dyYW1OYW1lCQDMCAIFDmNsYWltZXJBZGRyZXNzBQNuaWwFA1NFUAASZW1pc3Npb25BZGRyZXNzU3RyCQEPZ2V0U3RyaW5nT3JGYWlsAQkBEmtleUVtaXNzaW9uQWRkcmVzcwAAEGVtaXNzaW9uQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEFEmVtaXNzaW9uQWRkcmVzc1N0cgANSWR4Q2ZnQXNzZXRJZAABABZJZHhDZmdQYWNlbWFrZXJBZGRyZXNzAAIAFklkeENmZ0Jvb3N0aW5nQ29udHJhY3QAAwAOSWR4Q2ZnTWF4RGVwdGgABAEJa2V5Q29uZmlnAAIKJXNfX2NvbmZpZwEVcmVhZENvbmZpZ0FycmF5T3JGYWlsAAkAtQkCCQEPZ2V0U3RyaW5nT3JGYWlsAQkBCWtleUNvbmZpZwAFA1NFUAEMZm9ybWF0Q29uZmlnBAx3eEFzc2V0SWRTdHIabWF0Y2hlclBhY2VtYWtlckFkZHJlc3NTdHIaYm9vc3RpbmdDb250cmFjdEFkZHJlc3NTdHIIbWF4RGVwdGgJALkJAgkAzAgCAgglcyVzJXMlZAkAzAgCBQx3eEFzc2V0SWRTdHIJAMwIAgUabWF0Y2hlclBhY2VtYWtlckFkZHJlc3NTdHIJAMwIAgUaYm9vc3RpbmdDb250cmFjdEFkZHJlc3NTdHIJAMwIAgkApAMBBQhtYXhEZXB0aAUDbmlsBQNTRVABFmJvb3N0aW5nQ29udHJhY3RPckZhaWwABAhjZmdBcnJheQkBFXJlYWRDb25maWdBcnJheU9yRmFpbAAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFCGNmZ0FycmF5BRZJZHhDZmdCb29zdGluZ0NvbnRyYWN0Aihib29zdGluZyBjb250cmFjdCBhZGRyZXNzIGlzIG5vdCBkZWZpbmVkAR9rZXlHd3hSZXdhcmRFbWlzc2lvblN0YXJ0SGVpZ2h0AAIoJXMlc19fZ3d4UmV3YXJkRW1pc3Npb25QYXJ0X19zdGFydEhlaWdodAENa2V5VXNlcnNDb3VudAACDyVzX19uZXh0VXNlck51bQEWa2V5UmF0ZVBlckJsb2NrQ3VycmVudAACGyVzJXNfX3JhdGVQZXJCbG9ja19fY3VycmVudAEUa2V5UG9vbFdlaWdodFZpcnR1YWwAAiAlcyVzX19wb29sV2VpZ2h0X19HV1h2aXJ0dWFsUE9PTAEUa2V5TmV4dFByb2Nlc3NlZFVzZXIAAhUlc19fbmV4dFByb2Nlc3NlZFVzZXIBD2tleUxhdGVzdFBlcmlvZAACECVzX19sYXRlc3RQZXJpb2QBDWtleU5leHRQZXJpb2QAAg4lc19fbmV4dFBlcmlvZAESa2V5UHJvY2Vzc2luZ1N0YWdlAAITJXNfX3Byb2Nlc3NpbmdTdGFnZQEWa2V5TmV4dFByb2Nlc3NlZFBlcmlvZAACFyVzX19uZXh0UHJvY2Vzc2VkUGVyaW9kARBrZXlVc2VyVW5jbGFpbWVkAQl1c2VySW5kZXgJALkJAgkAzAgCAgQlcyVkCQDMCAICDXVzZXJVbmNsYWltZWQJAMwIAgkApAMBBQl1c2VySW5kZXgFA25pbAUDU0VQARtrZXlOZXh0VW5sYWltZWRQZXJpb2RPZlVzZXIBCXVzZXJJbmRleAkAuQkCCQDMCAICFyVzJWRfX25leHRDbGFpbWVkUGVyaW9kCQDMCAIJAKQDAQUJdXNlckluZGV4BQNuaWwFA1NFUAEca2V5TGFzdFByb2Nlc3NlZFBlcmlvZE9mVXNlcgEJdXNlckluZGV4CQC5CQIJAMwIAgIZJXMlZF9fbGFzdFByb2Nlc3NlZFBlcmlvZAkAzAgCCQCkAwEFCXVzZXJJbmRleAUDbmlsBQNTRVABEmtleUhlaWdodEZvclBlcmlvZAEGcGVyaW9kCQC5CQIJAMwIAgIaJXMlZF9fc3RhcnRIZWlnaHRGb3JQZXJpb2QJAMwIAgkApAMBBQZwZXJpb2QFA25pbAUDU0VQAR1rZXlBdXhFbWlzc2lvblJld2FyZEZvclBlcmlvZAEGcGVyaW9kCQC5CQIJAMwIAgIXJXMlZF9fYXV4RW1pc3Npb25SZXdhcmQJAMwIAgkApAMBBQZwZXJpb2QFA25pbAUDU0VQARdrZXlUb3RhbEFtb3VudEZvclBlcmlvZAEGcGVyaW9kCQC5CQIJAMwIAgIaJXMlZF9fdG90YWxBbW91bnRGb3JQZXJpb2QJAMwIAgkApAMBBQZwZXJpb2QFA25pbAUDU0VQARFrZXlMYXN0UGF5b3V0SW5mbwACEiVzX19sYXN0UGF5b3V0SW5mbwEQUGVyaW9kUGF5b3V0SW5mbwMGcGVyaW9kDW1hdGNoZXJSZXdhcmQOZW1pc3Npb25SZXdhcmQJALkJAgkAzAgCAgYlZCVkJWQJAMwIAgkApAMBBQZwZXJpb2QJAMwIAgkApAMBBQ1tYXRjaGVyUmV3YXJkCQDMCAIJAKQDAQUOZW1pc3Npb25SZXdhcmQFA25pbAUDU0VQARRrZXlQYXlvdXRIaXN0b3J5SW5mbwEGcGVyaW9kCQC5CQIJAMwIAgIYJXMlcyVkX19wYXlvdXRzX19oaXN0b3J5CQDMCAIJAKQDAQUGcGVyaW9kBQNuaWwFA1NFUAEXa2V5VG90YWxXZWlnaHRGb3JQZXJpb2QBBnBlcmlvZAkAuQkCCQDMCAICGiVzJWRfX3RvdGFsV2VpZ2h0Rm9yUGVyaW9kCQDMCAIJAKQDAQUGcGVyaW9kBQNuaWwFA1NFUAEWa2V5VXNlcktWYWx1ZUZvclBlcmlvZAIGcGVyaW9kCXVzZXJJbmRleAkAuQkCCQDMCAICFyVzJWQlcyVkX19wYXJhbUJ5UGVyaW9kCQDMCAIJAKQDAQUJdXNlckluZGV4CQDMCAICAWsJAMwIAgkApAMBBQZwZXJpb2QFA25pbAUDU0VQARZrZXlVc2VyQlZhbHVlRm9yUGVyaW9kAgZwZXJpb2QJdXNlckluZGV4CQC5CQIJAMwIAgIXJXMlZCVzJWRfX3BhcmFtQnlQZXJpb2QJAMwIAgkApAMBBQl1c2VySW5kZXgJAMwIAgIBYgkAzAgCCQCkAwEFBnBlcmlvZAUDbmlsBQNTRVABFmtleVVzZXJXZWlnaHRGb3JQZXJpb2QCBnBlcmlvZAl1c2VySW5kZXgJALkJAgkAzAgCAhclcyVkJXMlZF9fcGFyYW1CeVBlcmlvZAkAzAgCCQCkAwEFCXVzZXJJbmRleAkAzAgCAgZ3ZWlnaHQJAMwIAgkApAMBBQZwZXJpb2QFA25pbAUDU0VQARtrZXlSZWZlcnJhbHNDb250cmFjdEFkZHJlc3MACQC5CQIJAMwIAgIEJXMlcwkAzAgCAgZjb25maWcJAMwIAgIYcmVmZXJyYWxzQ29udHJhY3RBZGRyZXNzBQNuaWwFA1NFUAAecmVmZXJyYWxzQ29udHJhY3RBZGRyZXNzT3JGYWlsCQERQGV4dHJOYXRpdmUoMTA2MikBCQEPZ2V0U3RyaW5nT3JGYWlsAQkBG2tleVJlZmVycmFsc0NvbnRyYWN0QWRkcmVzcwABDEhpc3RvcnlFbnRyeQQEdHlwZQR1c2VyBmFtb3VudAFpBApoaXN0b3J5S0VZCQC5CQIJAMwIAgIRJXMlcyVzJXNfX2hpc3RvcnkJAMwIAgUEdHlwZQkAzAgCBQR1c2VyCQDMCAIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAUDbmlsBQNTRVAEC2hpc3RvcnlEQVRBCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQgFCWxhc3RCbG9jawZoZWlnaHQJAMwIAgkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQCkAwEFBmFtb3VudAUDbmlsBQNTRVAJAQtTdHJpbmdFbnRyeQIFCmhpc3RvcnlLRVkFC2hpc3RvcnlEQVRBARNrZXlNYW5hZ2VyUHVibGljS2V5AAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5ARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAQHJG1hdGNoMAkAoggBCQETa2V5TWFuYWdlclB1YmxpY0tleQADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAR1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdAAEByRtYXRjaDAJAKIIAQkBGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJANkEAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBC211c3RNYW5hZ2VyAQFpBAJwZAkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAckbWF0Y2gwCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDADCQAAAggFAWkPY2FsbGVyUHVibGljS2V5BQJwawYFAnBkAwkAAQIFByRtYXRjaDACBFVuaXQDCQAAAggFAWkGY2FsbGVyBQR0aGlzBgUCcGQJAAIBAgtNYXRjaCBlcnJvcgEOY2FsY1VzZXJXZWlnaHQEF2Jvb3N0aW5nQ29udHJhY3RBZGRyZXNzD2hlaWdodEZvclBlcmlvZAZwZXJpb2QJdXNlckluZGV4BAVrTGFzdAkBHGtleUxhc3RQcm9jZXNzZWRQZXJpb2RPZlVzZXIBBQl1c2VySW5kZXgEBGtLZXkJARZrZXlVc2VyS1ZhbHVlRm9yUGVyaW9kAgUGcGVyaW9kBQl1c2VySW5kZXgEBGtSYXcJAJoIAgUXYm9vc3RpbmdDb250cmFjdEFkZHJlc3MFBGtLZXkEC2tVc2VyV2VpZ2h0CQEWa2V5VXNlcldlaWdodEZvclBlcmlvZAIFBnBlcmlvZAUJdXNlckluZGV4AwkBCWlzRGVmaW5lZAEFBGtSYXcEAWsJAQV2YWx1ZQEFBGtSYXcEAWIJAQV2YWx1ZQEJAJoIAgUXYm9vc3RpbmdDb250cmFjdEFkZHJlc3MJARZrZXlVc2VyQlZhbHVlRm9yUGVyaW9kAgUGcGVyaW9kBQl1c2VySW5kZXgEAXcJAGQCCQBoAgUBawUPaGVpZ2h0Rm9yUGVyaW9kBQFiAwkAZgIFAXcAAAkAlAoCCQBpAgUBdwUFU0NBTEUJAMwIAgkBDEludGVnZXJFbnRyeQIFBWtMYXN0BQZwZXJpb2QJAMwIAgkBDEludGVnZXJFbnRyeQIFC2tVc2VyV2VpZ2h0BQF3BQNuaWwJAJQKAgAABQNuaWwEAXAJAJoIAgUEdGhpcwUFa0xhc3QDAwkBCWlzRGVmaW5lZAEFAXAJAGcCBQZwZXJpb2QJAQV2YWx1ZQEFAXAHBAJwdgkBBXZhbHVlAQUBcAQBawkBBXZhbHVlAQkAmggCBRdib29zdGluZ0NvbnRyYWN0QWRkcmVzcwkBFmtleVVzZXJLVmFsdWVGb3JQZXJpb2QCBQJwdgUJdXNlckluZGV4BAFiCQEFdmFsdWUBCQCaCAIFF2Jvb3N0aW5nQ29udHJhY3RBZGRyZXNzCQEWa2V5VXNlckJWYWx1ZUZvclBlcmlvZAIFAnB2BQl1c2VySW5kZXgEAXcJAGQCCQBoAgUBawUPaGVpZ2h0Rm9yUGVyaW9kBQFiAwkAZgIFAXcAAAkAlAoCCQBpAgUBdwUFU0NBTEUJAMwIAgkBDEludGVnZXJFbnRyeQIFC2tVc2VyV2VpZ2h0BQF3BQNuaWwJAJQKAgAABQNuaWwJAJQKAgAABQNuaWwBFmNhbGNVc2VyV2VpZ2h0Rm9yQ2xhaW0EF2Jvb3N0aW5nQ29udHJhY3RBZGRyZXNzD2hlaWdodEZvclBlcmlvZAZwZXJpb2QJdXNlckluZGV4BAtrVXNlcldlaWdodAkBFmtleVVzZXJXZWlnaHRGb3JQZXJpb2QCBQZwZXJpb2QFCXVzZXJJbmRleAQQdXNlcldlaWdodE9yVW5pdAkAnwgBBQtrVXNlcldlaWdodAQHJG1hdGNoMAUQdXNlcldlaWdodE9yVW5pdAMJAAECBQckbWF0Y2gwAgRVbml0AAADCQABAgUHJG1hdGNoMAIDSW50BAF3BQckbWF0Y2gwCQBpAgUBdwUFU0NBTEUJAAIBAgtNYXRjaCBlcnJvcgEVZ2V0VXNlckluZGV4QnlBZGRyZXNzAhpib29zdGluZ0NvbnRyYWN0QWRkcmVzc1N0cgt1c2VyQWRkcmVzcwQDa2V5CQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICB21hcHBpbmcJAMwIAgIIdXNlcjJudW0JAMwIAgULdXNlckFkZHJlc3MFA25pbAUDU0VQCQENcGFyc2VJbnRWYWx1ZQEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCCQEHQWRkcmVzcwEJANkEAQUaYm9vc3RpbmdDb250cmFjdEFkZHJlc3NTdHIFA2tleQkArAICCQCsAgIJAKwCAgINVXNlciBhZGRyZXNzIAULdXNlckFkZHJlc3MCLSBpcyBub3QgZm91bmQgaW4gYm9vc3RpbmcgY29udHJhY3QgZGF0YSwga2V5PQUDa2V5AQpuZXh0UGVyaW9kAAkBDmdldE51bWJlckJ5S2V5AQkBDWtleU5leHRQZXJpb2QAARFjb21tb25DbGFpbVJld2FyZAELdXNlckFkZHJlc3MECGNmZ0FycmF5CQEVcmVhZENvbmZpZ0FycmF5T3JGYWlsAAQHdXNlcklkeAkBFWdldFVzZXJJbmRleEJ5QWRkcmVzcwIJAJEDAgUIY2ZnQXJyYXkFFklkeENmZ0Jvb3N0aW5nQ29udHJhY3QFC3VzZXJBZGRyZXNzBBN1c2VyVW5jbGFpbWVkT3B0aW9uCQCfCAEJARBrZXlVc2VyVW5jbGFpbWVkAQUHdXNlcklkeAQHJG1hdGNoMAUTdXNlclVuY2xhaW1lZE9wdGlvbgMJAAECBQckbWF0Y2gwAgRVbml0CQCUCgIAAAUDbmlsAwkAAQIFByRtYXRjaDACA0ludAQBdQUHJG1hdGNoMAkAlAoCBQF1CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEQa2V5VXNlclVuY2xhaW1lZAEFB3VzZXJJZHgAAAUDbmlsCQACAQILTWF0Y2ggZXJyb3IQAWkBFnVwZGF0ZVJlZmVycmFsQWN0aXZpdHkCC3VzZXJBZGRyZXNzDmdXeEFtb3VudFN0YXJ0BAhyZWZlcnJlcgkAnQgCBR5yZWZlcnJhbHNDb250cmFjdEFkZHJlc3NPckZhaWwJAQtrZXlSZWZlcnJlcgEFC3VzZXJBZGRyZXNzBBFhY3RpdmVSZWZlcnJhbEludgMJAAACBQhyZWZlcnJlcgUEdW5pdAUEdW5pdAkA/AcEBR5yZWZlcnJhbHNDb250cmFjdEFkZHJlc3NPckZhaWwCFnVwZGF0ZVJlZmVycmFsQWN0aXZpdHkJAMwIAgUTcmVmZXJyYWxQcm9ncmFtTmFtZQkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCCQBnAgUOZ1d4QW1vdW50U3RhcnQFFHJlZmVycmFsTWluR1d4QW1vdW50BQNuaWwFA25pbAMJAAACBRFhY3RpdmVSZWZlcnJhbEludgURYWN0aXZlUmVmZXJyYWxJbnYJAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDmZpbmFsaXplSGVscGVyAAQPcHJvY2Vzc2luZ1N0YWdlCQELdmFsdWVPckVsc2UCCQCfCAEJARJrZXlQcm9jZXNzaW5nU3RhZ2UABRRwcm9jZXNzaW5nU3RhZ2VUb3RhbAQNY3VycmVudFBlcmlvZAkBDmdldE51bWJlckJ5S2V5AQkBFmtleU5leHRQcm9jZXNzZWRQZXJpb2QABAtjdXJyZW50VXNlcgkBDmdldE51bWJlckJ5S2V5AQkBFGtleU5leHRQcm9jZXNzZWRVc2VyAAQMbGF0ZXN0UGVyaW9kCQEOZ2V0TnVtYmVyQnlLZXkBCQEPa2V5TGF0ZXN0UGVyaW9kAAQKdXNlcnNDb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCCQEWYm9vc3RpbmdDb250cmFjdE9yRmFpbAAJAQ1rZXlVc2Vyc0NvdW50AAAABA50b3RhbFdlaWdodEtleQkBF2tleVRvdGFsV2VpZ2h0Rm9yUGVyaW9kAQUNY3VycmVudFBlcmlvZAQLdG90YWxXZWlnaHQJAQ5nZXROdW1iZXJCeUtleQEJARdrZXlUb3RhbFdlaWdodEZvclBlcmlvZAEFDWN1cnJlbnRQZXJpb2QED2hlaWdodEZvclBlcmlvZAkBDmdldE51bWJlckJ5S2V5AQkBEmtleUhlaWdodEZvclBlcmlvZAEFDWN1cnJlbnRQZXJpb2QDCQBmAgUNY3VycmVudFBlcmlvZAUMbGF0ZXN0UGVyaW9kCQCUCgIFA25pbAcDCQAAAgUPcHJvY2Vzc2luZ1N0YWdlBRRwcm9jZXNzaW5nU3RhZ2VUb3RhbAQNJHQwMTIzODcxMjUwMwkBDmNhbGNVc2VyV2VpZ2h0BAkBFmJvb3N0aW5nQ29udHJhY3RPckZhaWwABQ9oZWlnaHRGb3JQZXJpb2QFDWN1cnJlbnRQZXJpb2QFC2N1cnJlbnRVc2VyBAp1c2VyV2VpZ2h0CAUNJHQwMTIzODcxMjUwMwJfMQQLdXNlckFjdGlvbnMIBQ0kdDAxMjM4NzEyNTAzAl8yBA50b3RhbFdlaWdodE5ldwkAZAIFC3RvdGFsV2VpZ2h0BQp1c2VyV2VpZ2h0BBFwcm9jZXNzaW5nQWN0aW9ucwMJAGYCCQBlAgUKdXNlcnNDb3VudAABBQtjdXJyZW50VXNlcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFGtleU5leHRQcm9jZXNzZWRVc2VyAAkAZAIFC2N1cnJlbnRVc2VyAAEFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmtleVByb2Nlc3NpbmdTdGFnZQAFFXByb2Nlc3NpbmdTdGFnZVNoYXJlcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFGtleU5leHRQcm9jZXNzZWRVc2VyAAAABQNuaWwJAJQKAgkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFDnRvdGFsV2VpZ2h0S2V5BQ50b3RhbFdlaWdodE5ldwUDbmlsBRFwcm9jZXNzaW5nQWN0aW9ucwULdXNlckFjdGlvbnMGAwkAAAIFD3Byb2Nlc3NpbmdTdGFnZQUVcHJvY2Vzc2luZ1N0YWdlU2hhcmVzBAp1c2VyV2VpZ2h0CQEWY2FsY1VzZXJXZWlnaHRGb3JDbGFpbQQJARZib29zdGluZ0NvbnRyYWN0T3JGYWlsAAUPaGVpZ2h0Rm9yUGVyaW9kBQ1jdXJyZW50UGVyaW9kBQtjdXJyZW50VXNlcgQadXNlckFtb3VudE1hdGNoZXJGb3JQZXJpb2QJAGsDCQEOZ2V0TnVtYmVyQnlLZXkBCQEXa2V5VG90YWxBbW91bnRGb3JQZXJpb2QBBQ1jdXJyZW50UGVyaW9kBQp1c2VyV2VpZ2h0BQt0b3RhbFdlaWdodAQbdXNlckFtb3VudEVtaXNzaW9uRm9yUGVyaW9kCQBrAwkBDmdldE51bWJlckJ5S2V5AQkBHWtleUF1eEVtaXNzaW9uUmV3YXJkRm9yUGVyaW9kAQUNY3VycmVudFBlcmlvZAUKdXNlcldlaWdodAULdG90YWxXZWlnaHQED3VzZXJUb3RhbEFtb3VudAkAZAIFG3VzZXJBbW91bnRFbWlzc2lvbkZvclBlcmlvZAUadXNlckFtb3VudE1hdGNoZXJGb3JQZXJpb2QEE3VzZXJVbmNsYWltZWRPcHRpb24JAJ8IAQkBEGtleVVzZXJVbmNsYWltZWQBBQtjdXJyZW50VXNlcgQLdXNlckFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDUzKQIJARZib29zdGluZ0NvbnRyYWN0T3JGYWlsAAkBE2tleU51bVRvVXNlck1hcHBpbmcBBQtjdXJyZW50VXNlcgQIcmVmZXJyZXIJAJ0IAgUecmVmZXJyYWxzQ29udHJhY3RBZGRyZXNzT3JGYWlsCQELa2V5UmVmZXJyZXIBBQt1c2VyQWRkcmVzcwQRYWN0aXZlUmVmZXJyYWxJbnYDCQAAAgUIcmVmZXJyZXIFBHVuaXQFBHVuaXQJAPwHBAUecmVmZXJyYWxzQ29udHJhY3RBZGRyZXNzT3JGYWlsAhZ1cGRhdGVSZWZlcnJhbEFjdGl2aXR5CQDMCAIFE3JlZmVycmFsUHJvZ3JhbU5hbWUJAMwIAgULdXNlckFkZHJlc3MJAMwIAgkAZwIFCnVzZXJXZWlnaHQFFHJlZmVycmFsTWluR1d4QW1vdW50BQNuaWwFA25pbAMJAAACBRFhY3RpdmVSZWZlcnJhbEludgURYWN0aXZlUmVmZXJyYWxJbnYEC3JlZmVycmFsSW52AwMJAAACBQhyZWZlcnJlcgUEdW5pdAYJAGYCBRRyZWZlcnJhbE1pbkdXeEFtb3VudAUKdXNlcldlaWdodAUEdW5pdAQOcmVmZXJyZXJSZXdhcmQJAGsDBQ91c2VyVG90YWxBbW91bnQFFnJlZmVycmVyUmV3YXJkUGVybWlsbGUFBVNDQUxFBA5yZWZlcnJhbFJld2FyZAkAawMFD3VzZXJUb3RhbEFtb3VudAUWcmVmZXJyYWxSZXdhcmRQZXJtaWxsZQUFU0NBTEUJAPwHBAUecmVmZXJyYWxzQ29udHJhY3RBZGRyZXNzT3JGYWlsAgxpbmNVbmNsYWltZWQJAMwIAgUTcmVmZXJyYWxQcm9ncmFtTmFtZQkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCBQ5yZWZlcnJlclJld2FyZAkAzAgCBQ5yZWZlcnJhbFJld2FyZAUDbmlsBQNuaWwDCQAAAgULcmVmZXJyYWxJbnYFC3JlZmVycmFsSW52BBB1bmNsYWltZWRBY3Rpb25zAwMFCG1pZ3JhdGVkBgkBAiE9AgUTdXNlclVuY2xhaW1lZE9wdGlvbgUEdW5pdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEGtleVVzZXJVbmNsYWltZWQBBQtjdXJyZW50VXNlcgkAZAIJAQt2YWx1ZU9yRWxzZQIFE3VzZXJVbmNsYWltZWRPcHRpb24AAAUPdXNlclRvdGFsQW1vdW50BQNuaWwFA25pbAQRcHJvY2Vzc2luZ0FjdGlvbnMDCQBmAgkAZQIFCnVzZXJzQ291bnQAAQULY3VycmVudFVzZXIJAMwIAgkBDEludGVnZXJFbnRyeQIJARRrZXlOZXh0UHJvY2Vzc2VkVXNlcgAJAGQCBQtjdXJyZW50VXNlcgABBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlOZXh0UHJvY2Vzc2VkUGVyaW9kAAkAZAIFDWN1cnJlbnRQZXJpb2QAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFGtleU5leHRQcm9jZXNzZWRVc2VyAAAACQDMCAIJAQtEZWxldGVFbnRyeQEJARJrZXlQcm9jZXNzaW5nU3RhZ2UABQNuaWwJAJQKAgkAzggCBRB1bmNsYWltZWRBY3Rpb25zBRFwcm9jZXNzaW5nQWN0aW9ucwYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAhhpbnZhbGlkIHByb2Nlc3Npbmcgc3RhZ2UBaQEPZmluYWxpemVXcmFwcGVyAQdjb3VudGVyBAZyZXN1bHQKAAFACQD8BwQFBHRoaXMCDmZpbmFsaXplSGVscGVyBQNuaWwFA25pbAMJAAECBQFAAgdCb29sZWFuBQFACQACAQkArAICCQADAQkA/AcEBQR0aGlzAg5maW5hbGl6ZUhlbHBlcgUDbmlsBQNuaWwCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4DCQAAAgUGcmVzdWx0BQZyZXN1bHQDCQEBIQEFBnJlc3VsdAMJAAACBQdjb3VudGVyBQhtYXhEZXB0aAkAAgECEk5vdGhpbmcgdG8gcHJvY2VzcwkAlAoCBQNuaWwFBHVuaXQDCQBmAgUHY291bnRlcgAACQCUCgIFA25pbAkA/AcEBQR0aGlzAg9maW5hbGl6ZVdyYXBwZXIJAMwIAgkAZQIFB2NvdW50ZXIAAQUDbmlsBQNuaWwJAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBHXByb2Nlc3NQZW5kaW5nUGVyaW9kc0FuZFVzZXJzAAkAlAoCBQNuaWwJAPwHBAUEdGhpcwIPZmluYWxpemVXcmFwcGVyCQDMCAIFCG1heERlcHRoBQNuaWwFA25pbAFpAQdkZXBvc2l0AAQIY2ZnQXJyYXkJARVyZWFkQ29uZmlnQXJyYXlPckZhaWwAAwkBAiE9AggFAWkGY2FsbGVyCQEHQWRkcmVzcwEJANkEAQkAkQMCBQhjZmdBcnJheQUWSWR4Q2ZnUGFjZW1ha2VyQWRkcmVzcwkAAgECFFdyb25nIGNhbGxlciBhZGRyZXNzBAdhc3NldElkCQEFdmFsdWUBCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQDCQECIT0CBQdhc3NldElkCQDZBAEJAJEDAgUIY2ZnQXJyYXkFDUlkeENmZ0Fzc2V0SWQJAAIBAhNXcm9uZyBwYXltZW50IGFzc2V0BAZwZXJpb2QJAQpuZXh0UGVyaW9kAAQGZGVsdGFICQBlAgUGaGVpZ2h0CQEPZ2V0TnVtYmVyT3JGYWlsAQkBH2tleUd3eFJld2FyZEVtaXNzaW9uU3RhcnRIZWlnaHQABAxlbWlzc2lvblJhdGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBRBlbWlzc2lvbkNvbnRyYWN0CQEWa2V5UmF0ZVBlckJsb2NrQ3VycmVudAAJAKwCAgkArAICAhxtYW5kYXRvcnkgZW1pc3Npb25fY29udHJhY3QuCQEWa2V5UmF0ZVBlckJsb2NrQ3VycmVudAACDyBpcyBub3QgZGVmaW5lZAQGd2VpZ2h0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUPZmFjdG9yeUNvbnRyYWN0CQEUa2V5UG9vbFdlaWdodFZpcnR1YWwACQCsAgIJAKwCAgIbbWFuZGF0b3J5IGZhY3RvcnlfY29udHJhY3QuCQEUa2V5UG9vbFdlaWdodFZpcnR1YWwAAg8gaXMgbm90IGRlZmluZWQECWF1eEFtb3VudAkAawMJAGgCBQZkZWx0YUgFBndlaWdodAUMZW1pc3Npb25SYXRlBQVNVUxUOAQCZW0JAPwHBAUQZW1pc3Npb25Db250cmFjdAIEZW1pdAkAzAgCBQlhdXhBbW91bnQFA25pbAUDbmlsAwkAAAIFAmVtBQJlbQQLbWF0Y2hlclBhcnQICQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BApwYXlvdXRJbmZvCQEQUGVyaW9kUGF5b3V0SW5mbwMFBnBlcmlvZAULbWF0Y2hlclBhcnQFCWF1eEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBD2tleUxhdGVzdFBlcmlvZAAFBnBlcmlvZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmtleUhlaWdodEZvclBlcmlvZAEFBnBlcmlvZAUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEda2V5QXV4RW1pc3Npb25SZXdhcmRGb3JQZXJpb2QBBQZwZXJpb2QFCWF1eEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBH2tleUd3eFJld2FyZEVtaXNzaW9uU3RhcnRIZWlnaHQABQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJARdrZXlUb3RhbEFtb3VudEZvclBlcmlvZAEFBnBlcmlvZAULbWF0Y2hlclBhcnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlOZXh0UGVyaW9kAAkAZAIFBnBlcmlvZAABCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYXN0UGF5b3V0SW5mbwAFCnBheW91dEluZm8JAMwIAgkBC1N0cmluZ0VudHJ5AgkBFGtleVBheW91dEhpc3RvcnlJbmZvAQUGcGVyaW9kBQpwYXlvdXRJbmZvBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQELY2xhaW1SZXdhcmQABAhjZmdBcnJheQkBFXJlYWRDb25maWdBcnJheU9yRmFpbAAEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyBA0kdDAxNzkxNzE3OTY3CQERY29tbW9uQ2xhaW1SZXdhcmQBBQdhZGRyZXNzBAZhbW91bnQIBQ0kdDAxNzkxNzE3OTY3Al8xBAdhY3Rpb25zCAUNJHQwMTc5MTcxNzk2NwJfMgQLY2hlY2tBbW91bnQDCQBmAgUGYW1vdW50AAAGCQACAQIQTm90aGluZyB0byBjbGFpbQMJAAACBQtjaGVja0Ftb3VudAULY2hlY2tBbW91bnQEEmFtb3VudEZyb21FbWlzc2lvbgAABA9jbGFpbWVkUmVmZXJyYWwKAAFACQD8BwQFHnJlZmVycmFsc0NvbnRyYWN0QWRkcmVzc09yRmFpbAIFY2xhaW0JAMwIAgUTcmVmZXJyYWxQcm9ncmFtTmFtZQUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQkA/AcEBR5yZWZlcnJhbHNDb250cmFjdEFkZHJlc3NPckZhaWwCBWNsYWltCQDMCAIFE3JlZmVycmFsUHJvZ3JhbU5hbWUFA25pbAUDbmlsAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEC3RvdGFsQW1vdW50CQBkAgUGYW1vdW50BQ9jbGFpbWVkUmVmZXJyYWwJAJQKAgkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgULdG90YWxBbW91bnQJANkEAQkAkQMCBQhjZmdBcnJheQUNSWR4Q2ZnQXNzZXRJZAkAzAgCCQEMSGlzdG9yeUVudHJ5BAIFY2xhaW0FB2FkZHJlc3MFBmFtb3VudAUBaQUDbmlsBQdhY3Rpb25zCQDMCAIFC3RvdGFsQW1vdW50CQDMCAIFEmFtb3VudEZyb21FbWlzc2lvbgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBE2NsYWltUmV3YXJkUkVBRE9OTFkBB2FkZHJlc3MEDSR0MDE4NTQwMTg1OTAJARFjb21tb25DbGFpbVJld2FyZAEFB2FkZHJlc3MEBmFtb3VudAgFDSR0MDE4NTQwMTg1OTACXzEEB2FjdGlvbnMIBQ0kdDAxODU0MDE4NTkwAl8yBBFyZWZlcnJhbFVuY2xhaW1lZAkBC3ZhbHVlT3JFbHNlAgkAmggCBR5yZWZlcnJhbHNDb250cmFjdEFkZHJlc3NPckZhaWwJARRrZXlVbmNsYWltZWRSZWZlcnJhbAIFE3JlZmVycmFsUHJvZ3JhbU5hbWUFB2FkZHJlc3MAAAQLdG90YWxBbW91bnQJAGQCBQZhbW91bnQFEXJlZmVycmFsVW5jbGFpbWVkCQCUCgIFA25pbAULdG90YWxBbW91bnQBaQEdbGF0ZXN0RmluYWxpemVkUGVyaW9kUkVBRE9OTFkBB2FkZHJlc3MJAJQKAgUDbmlsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQ9rZXlMYXRlc3RQZXJpb2QAAP///////////wEBaQEhbGF0ZXN0RmluYWxpemVkUGVyaW9kSW5mb1JFQURPTkxZAQdhZGRyZXNzCQCUCgIFA25pbAkBDmdldFN0cmluZ0J5S2V5AQkBEWtleUxhc3RQYXlvdXRJbmZvAAFpARVjYWxjR3d4UGFyYW1zUkVBRE9OTFkDDmd3eEFtb3VudFN0YXJ0D2xvY2tTdGFydEhlaWdodBJsb2NrRHVyYXRpb25CbG9ja3MEDWxvY2tFbmRIZWlnaHQJAGQCBQ9sb2NrU3RhcnRIZWlnaHQFEmxvY2tEdXJhdGlvbkJsb2NrcwQMc2NhbGU4UGFyYW1LCQEBLQEJAGsDBQ5nd3hBbW91bnRTdGFydAUFU0NBTEUFEmxvY2tEdXJhdGlvbkJsb2NrcwQMc2NhbGU4UGFyYW1CCQBoAgkAawMFDmd3eEFtb3VudFN0YXJ0BQVTQ0FMRQUSbG9ja0R1cmF0aW9uQmxvY2tzBQ1sb2NrRW5kSGVpZ2h0CQCUCgIFA25pbAkAzAgCBQxzY2FsZThQYXJhbUsJAMwIAgUMc2NhbGU4UGFyYW1CCQDMCAIJAQpuZXh0UGVyaW9kAAUDbmlsAWkBGmNhbGNHd3hBbW91bnRTdGFydFJFQURPTkxZAwx3eExvY2tBbW91bnQMbG9ja0R1cmF0aW9uD21heExvY2tEdXJhdGlvbgQHY29lZmZYOAkAawMFDGxvY2tEdXJhdGlvbgUFTVVMVDgFD21heExvY2tEdXJhdGlvbgQOZ1d4QW1vdW50U3RhcnQJAGsDBQx3eExvY2tBbW91bnQFB2NvZWZmWDgFBU1VTFQ4CQCUCgIFA25pbAkAzAgCBQ5nV3hBbW91bnRTdGFydAUDbmlsAWkBFW9uRW1pc3Npb25Gb3JHd3hTdGFydAADCQECIT0CCAUBaQZjYWxsZXIFD2ZhY3RvcnlDb250cmFjdAkAAgECEnBlcm1pc3Npb25zIGRlbmllZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBH2tleUd3eFJld2FyZEVtaXNzaW9uU3RhcnRIZWlnaHQABQZoZWlnaHQFA25pbAFpASNsYXRlc3RQZXJpb2RFbWlzc2lvblJld2FyZHNSRUFET05MWQEHYWRkcmVzcwQGcGVyaW9kCQEKbmV4dFBlcmlvZAAJAJQKAgUDbmlsCQDMCAIJAQ5nZXROdW1iZXJCeUtleQEJAR1rZXlBdXhFbWlzc2lvblJld2FyZEZvclBlcmlvZAEFBnBlcmlvZAUDbmlsAWkBBWNhbGNEBQt4MUJpZ0ludFN0cgt4MkJpZ0ludFN0cgxhbXBCaWdJbnRTdHITYVByZWNpc2lvbkJpZ0ludFN0chh0YXJnZXRQcmVjaXNpb25CaWdJbnRTdHIEBm5Db2lucwkAtgIBAAIECmFQcmVjaXNpb24JAKcDAQUTYVByZWNpc2lvbkJpZ0ludFN0cgQPdGFyZ2V0UHJlY2lzaW9uCQCnAwEFGHRhcmdldFByZWNpc2lvbkJpZ0ludFN0cgQCeDEJAKcDAQULeDFCaWdJbnRTdHIEAngyCQCnAwEFC3gyQmlnSW50U3RyBANhbXAJALkCAgkApwMBBQxhbXBCaWdJbnRTdHIFCmFQcmVjaXNpb24EAXMJALcCAgUCeDEFAngyAwkAAAIFAXMFCnplcm9CaWdJbnQJAJQKAgUDbmlsCQCmAwEFCnplcm9CaWdJbnQEA2FubgkAuQICBQNhbXAFBm5Db2lucwQDYXJyCQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwUDbmlsCgEEY2FsYwIDYWNjA2N1cgQNJHQwMjEyMTMyMTQwMgUDYWNjBAFkCAUNJHQwMjEyMTMyMTQwMgJfMQQFZFByZXYIBQ0kdDAyMTIxMzIxNDAyAl8yBAJkcAkAugICCQC5AgIJALkCAgUBZAUBZAUBZAkAuQICCQC5AgIJALkCAgUCeDEFAngyBQZuQ29pbnMFBm5Db2lucwQFZE5leHQJALoCAgkAuQICCQC3AgIJALoCAgkAuQICBQNhbm4FAXMFCmFQcmVjaXNpb24JALkCAgUCZHAFBm5Db2lucwUBZAkAtwICCQC6AgIJALkCAgkAuAICBQNhbm4FCmFQcmVjaXNpb24FAWQFCmFQcmVjaXNpb24JALkCAgkAtwICBQZuQ29pbnMJALYCAQABBQJkcAkAlAoCBQVkTmV4dAUBZAQNJHQwMjE2MTUyMTY2NQoAAiRsBQNhcnIKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFAXMFBHVuaXQKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBGNhbGMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDcJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwQFZE5leHQIBQ0kdDAyMTYxNTIxNjY1Al8xBAVkUHJldggFDSR0MDIxNjE1MjE2NjUCXzIEBWREaWZmCQEDYWJzAQkAuAICBQVkTmV4dAkBBXZhbHVlAQUFZFByZXYDCQDAAgIFD3RhcmdldFByZWNpc2lvbgUFZERpZmYJAJQKAgUDbmlsCQCmAwEFBWROZXh0CQACAQkArAICAh1EIGNhbGN1bGF0aW9uIGVycm9yLCBkRGlmZiA9IAkApgMBBQVkRGlmZgFpAQpzZXRNYW5hZ2VyARdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBBVjaGVja01hbmFnZXJQdWJsaWNLZXkJANkEAQUXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkDCQAAAgUVY2hlY2tNYW5hZ2VyUHVibGljS2V5BRVjaGVja01hbmFnZXJQdWJsaWNLZXkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAUXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5jb25maXJtTWFuYWdlcgAEAnBtCQEdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQABAVoYXNQTQMJAQlpc0RlZmluZWQBBQJwbQYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUFaGFzUE0FBWhhc1BNBAdjaGVja1BNAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCcG0GCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFB2NoZWNrUE0FB2NoZWNrUE0JAMwIAgkBC1N0cmluZ0VudHJ5AgkBE2tleU1hbmFnZXJQdWJsaWNLZXkACQDYBAEJAQV2YWx1ZQEFAnBtCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAED3RhcmdldFB1YmxpY0tleQQHJG1hdGNoMAkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwBQJwawMJAAECBQckbWF0Y2gwAgRVbml0CAUCdHgPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFD3RhcmdldFB1YmxpY0tlean3feg=", "chainId": 84, "height": 2178229, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HrX9jd4WXY1LyPWsfqpRnh69JduaogDsoYDzDF1Ewnrj Next: 8WkzGvaixETERnvaADLmZ6YTPLw1VeqmuXCeqivPcDjZ Diff:
Old | New | Differences | |
---|---|---|---|
305 | 305 | func bq () = h(ao()) | |
306 | 306 | ||
307 | 307 | ||
308 | - | func br (bs,aw,aM,bt,bu,bv) = { | |
309 | - | let bw = invoke(this, "claimNextBatch", [bs, aw, aM, bt, bu, bv], nil) | |
310 | - | if ((bw == bw)) | |
311 | - | then { | |
312 | - | let aU = bw | |
313 | - | if ($isInstanceOf(aU, "(Int, Int, Int)")) | |
314 | - | then { | |
315 | - | let bx = aU | |
316 | - | bx | |
317 | - | } | |
318 | - | else throw("Incorrect invoke result") | |
319 | - | } | |
320 | - | else throw("Strict value is not equal to itself.") | |
321 | - | } | |
322 | - | ||
323 | - | ||
324 | - | func by (bs,bz,bA,bt,bB,bC) = { | |
325 | - | let bb = Address(bs) | |
326 | - | let bD = h(aq()) | |
327 | - | let bE = h(aE(bz)) | |
328 | - | let bc = h(av(bz)) | |
329 | - | let bF = bm(bb, bc, bz, bA) | |
330 | - | let bG = fraction(h(ay(bz)), bF, bE) | |
331 | - | let bH = fraction(h(ax(bz)), bF, bE) | |
332 | - | if (if ((0 >= bt)) | |
333 | - | then true | |
334 | - | else ((bz + 1) >= bD)) | |
335 | - | then $Tuple3((bz + 1), (bB + bG), (bC + bH)) | |
336 | - | else br(bs, (bz + 1), bA, (bt - 1), (bB + bG), (bC + bH)) | |
337 | - | } | |
338 | - | ||
339 | - | ||
340 | - | func bI (bp) = { | |
308 | + | func br (bp) = { | |
341 | 309 | let ah = ab() | |
342 | - | let | |
343 | - | let | |
344 | - | let aU = | |
310 | + | let bs = bo(ah[Y], bp) | |
311 | + | let bt = getInteger(ar(bs)) | |
312 | + | let aU = bt | |
345 | 313 | if ($isInstanceOf(aU, "Unit")) | |
346 | - | then if (v) | |
347 | - | then $Tuple2(0, nil) | |
348 | - | else { | |
349 | - | let bz = h(at(bJ)) | |
350 | - | let bL = h(aq()) | |
351 | - | if ((bz >= bL)) | |
352 | - | then $Tuple2(0, nil) | |
353 | - | else { | |
354 | - | let bs = fromBase58String(ah[Y]) | |
355 | - | let bM = by(bs, bz, bJ, b, 0, 0) | |
356 | - | let aw = bM._1 | |
357 | - | let bN = bM._2 | |
358 | - | let bO = bM._3 | |
359 | - | let aN = (bN + bO) | |
360 | - | let bP = [IntegerEntry(at(bJ), aw)] | |
361 | - | $Tuple2(aN, bP) | |
362 | - | } | |
363 | - | } | |
314 | + | then $Tuple2(0, nil) | |
364 | 315 | else if ($isInstanceOf(aU, "Int")) | |
365 | 316 | then { | |
366 | - | let | |
367 | - | $Tuple2( | |
317 | + | let bu = aU | |
318 | + | $Tuple2(bu, [IntegerEntry(ar(bs), 0)]) | |
368 | 319 | } | |
369 | 320 | else throw("Match error") | |
370 | 321 | } | |
371 | 322 | ||
372 | 323 | ||
373 | 324 | @Callable(aO) | |
374 | - | func updateReferralActivity (bp, | |
375 | - | let | |
376 | - | let | |
325 | + | func updateReferralActivity (bp,bv) = { | |
326 | + | let bw = getString(aJ, P(bp)) | |
327 | + | let bx = if ((bw == unit)) | |
377 | 328 | then unit | |
378 | - | else invoke(aJ, "updateReferralActivity", [F, bp, ( | |
379 | - | if (( | |
329 | + | else invoke(aJ, "updateReferralActivity", [F, bp, (bv >= I)], nil) | |
330 | + | if ((bx == bx)) | |
380 | 331 | then $Tuple2(nil, unit) | |
381 | 332 | else throw("Strict value is not equal to itself.") | |
382 | 333 | } | |
385 | 336 | ||
386 | 337 | @Callable(aO) | |
387 | 338 | func finalizeHelper () = { | |
388 | - | let | |
339 | + | let by = valueOrElse(getInteger(ap()), f) | |
389 | 340 | let bz = h(aq()) | |
390 | 341 | let bA = h(am()) | |
391 | - | let | |
392 | - | let | |
393 | - | let | |
342 | + | let bB = h(an()) | |
343 | + | let bC = valueOrElse(getInteger(ag(), aj()), 0) | |
344 | + | let bD = aE(bz) | |
394 | 345 | let bE = h(aE(bz)) | |
395 | 346 | let bc = h(av(bz)) | |
396 | - | if ((bz > | |
347 | + | if ((bz > bB)) | |
397 | 348 | then $Tuple2(nil, false) | |
398 | - | else if (( | |
349 | + | else if ((by == f)) | |
399 | 350 | then { | |
400 | - | let | |
401 | - | let | |
402 | - | let | |
403 | - | let | |
404 | - | let | |
351 | + | let bF = ba(ag(), bc, bz, bA) | |
352 | + | let bG = bF._1 | |
353 | + | let bH = bF._2 | |
354 | + | let bI = (bE + bG) | |
355 | + | let bJ = if (((bC - 1) > bA)) | |
405 | 356 | then [IntegerEntry(am(), (bA + 1))] | |
406 | 357 | else [IntegerEntry(ap(), g), IntegerEntry(am(), 0)] | |
407 | - | $Tuple2((([IntegerEntry( | |
358 | + | $Tuple2((([IntegerEntry(bD, bI)] ++ bJ) ++ bH), true) | |
408 | 359 | } | |
409 | - | else if (( | |
360 | + | else if ((by == g)) | |
410 | 361 | then { | |
411 | - | let | |
412 | - | let | |
413 | - | let | |
414 | - | let | |
415 | - | let | |
362 | + | let bG = bm(ag(), bc, bz, bA) | |
363 | + | let bK = fraction(h(ay(bz)), bG, bE) | |
364 | + | let bL = fraction(h(ax(bz)), bG, bE) | |
365 | + | let bM = (bL + bK) | |
366 | + | let bt = getInteger(ar(bA)) | |
416 | 367 | let bp = getStringValue(ag(), B(bA)) | |
417 | - | let | |
418 | - | let | |
368 | + | let bw = getString(aJ, P(bp)) | |
369 | + | let bx = if ((bw == unit)) | |
419 | 370 | then unit | |
420 | - | else invoke(aJ, "updateReferralActivity", [F, bp, ( | |
421 | - | if (( | |
371 | + | else invoke(aJ, "updateReferralActivity", [F, bp, (bG >= I)], nil) | |
372 | + | if ((bx == bx)) | |
422 | 373 | then { | |
423 | - | let | |
374 | + | let bN = if (if ((bw == unit)) | |
424 | 375 | then true | |
425 | - | else (I > | |
376 | + | else (I > bG)) | |
426 | 377 | then unit | |
427 | 378 | else { | |
428 | - | let | |
429 | - | let | |
430 | - | invoke(aJ, "incUnclaimed", [F, bp, | |
379 | + | let bO = fraction(bM, L, c) | |
380 | + | let bP = fraction(bM, O, c) | |
381 | + | invoke(aJ, "incUnclaimed", [F, bp, bO, bP], nil) | |
431 | 382 | } | |
432 | - | if (( | |
383 | + | if ((bN == bN)) | |
433 | 384 | then { | |
434 | - | let | |
385 | + | let bQ = if (if (v) | |
435 | 386 | then true | |
436 | - | else ( | |
437 | - | then [IntegerEntry(ar(bA), (valueOrElse( | |
387 | + | else (bt != unit)) | |
388 | + | then [IntegerEntry(ar(bA), (valueOrElse(bt, 0) + bM))] | |
438 | 389 | else nil | |
439 | - | let | |
390 | + | let bJ = if (((bC - 1) > bA)) | |
440 | 391 | then [IntegerEntry(am(), (bA + 1))] | |
441 | 392 | else [IntegerEntry(aq(), (bz + 1)), IntegerEntry(am(), 0), DeleteEntry(ap())] | |
442 | - | $Tuple2(( | |
393 | + | $Tuple2((bQ ++ bJ), true) | |
443 | 394 | } | |
444 | 395 | else throw("Strict value is not equal to itself.") | |
445 | 396 | } | |
451 | 402 | ||
452 | 403 | ||
453 | 404 | @Callable(aO) | |
454 | - | func finalizeWrapper ( | |
455 | - | let | |
456 | - | let | |
457 | - | if ($isInstanceOf( | |
458 | - | then | |
405 | + | func finalizeWrapper (bR) = { | |
406 | + | let bS = { | |
407 | + | let bT = invoke(this, "finalizeHelper", nil, nil) | |
408 | + | if ($isInstanceOf(bT, "Boolean")) | |
409 | + | then bT | |
459 | 410 | else throw(($getType(invoke(this, "finalizeHelper", nil, nil)) + " couldn't be cast to Boolean")) | |
460 | 411 | } | |
461 | - | if (( | |
462 | - | then if (!( | |
463 | - | then if (( | |
412 | + | if ((bS == bS)) | |
413 | + | then if (!(bS)) | |
414 | + | then if ((bR == q)) | |
464 | 415 | then throw("Nothing to process") | |
465 | 416 | else $Tuple2(nil, unit) | |
466 | - | else if (( | |
467 | - | then $Tuple2(nil, invoke(this, "finalizeWrapper", [( | |
417 | + | else if ((bR > 0)) | |
418 | + | then $Tuple2(nil, invoke(this, "finalizeWrapper", [(bR - 1)], nil)) | |
468 | 419 | else $Tuple2(nil, unit) | |
469 | 420 | else throw("Strict value is not equal to itself.") | |
470 | 421 | } | |
477 | 428 | ||
478 | 429 | ||
479 | 430 | @Callable(aO) | |
480 | - | func migrateHelper () = { | |
481 | - | let bA = h(w) | |
482 | - | let bV = valueOrElse(getInteger(ag(), aj()), 0) | |
483 | - | if (v) | |
484 | - | then $Tuple2(nil, false) | |
485 | - | else { | |
486 | - | let bp = getStringValue(ag(), B(bA)) | |
487 | - | let ci = bI(bp) | |
488 | - | let cj = ci._1 | |
489 | - | let bP = ci._2 | |
490 | - | let ca = if (((bV - 1) > bA)) | |
491 | - | then [IntegerEntry(w, (bA + 1))] | |
492 | - | else [DeleteEntry(w), BooleanEntry(u, true)] | |
493 | - | $Tuple2(([IntegerEntry(ar(bA), cj)] ++ ca), true) | |
494 | - | } | |
495 | - | } | |
496 | - | ||
497 | - | ||
498 | - | ||
499 | - | @Callable(aO) | |
500 | - | func migrateWrapper (cg) = { | |
501 | - | let bw = { | |
502 | - | let ch = invoke(this, "migrateHelper", nil, nil) | |
503 | - | if ($isInstanceOf(ch, "Boolean")) | |
504 | - | then ch | |
505 | - | else throw(($getType(invoke(this, "migrateHelper", nil, nil)) + " couldn't be cast to Boolean")) | |
506 | - | } | |
507 | - | if ((bw == bw)) | |
508 | - | then if (!(bw)) | |
509 | - | then if ((cg == t)) | |
510 | - | then throw("Migration is over") | |
511 | - | else $Tuple2(nil, unit) | |
512 | - | else if ((cg > 0)) | |
513 | - | then $Tuple2(nil, invoke(this, "migrateWrapper", [(cg - 1)], nil)) | |
514 | - | else $Tuple2(nil, unit) | |
515 | - | else throw("Strict value is not equal to itself.") | |
516 | - | } | |
517 | - | ||
518 | - | ||
519 | - | ||
520 | - | @Callable(aO) | |
521 | - | func migrate () = $Tuple2(nil, invoke(this, "migrateWrapper", [t], nil)) | |
522 | - | ||
523 | - | ||
524 | - | ||
525 | - | @Callable(aO) | |
526 | 431 | func deposit () = { | |
527 | 432 | let ah = ab() | |
528 | 433 | if ((aO.caller != Address(fromBase58String(ah[X])))) | |
529 | 434 | then throw("Wrong caller address") | |
530 | 435 | else { | |
531 | - | let | |
532 | - | if (( | |
436 | + | let bU = value(value(aO.payments[0]).assetId) | |
437 | + | if ((bU != fromBase58String(ah[W]))) | |
533 | 438 | then throw("Wrong payment asset") | |
534 | 439 | else { | |
535 | 440 | let aw = bq() | |
536 | - | let | |
537 | - | let | |
538 | - | let | |
539 | - | let | |
540 | - | let | |
541 | - | if (( | |
441 | + | let bV = (height - j(ai())) | |
442 | + | let bW = valueOrErrorMessage(getInteger(V, ak()), (("mandatory emission_contract." + ak()) + " is not defined")) | |
443 | + | let bX = valueOrErrorMessage(getInteger(z, al()), (("mandatory factory_contract." + al()) + " is not defined")) | |
444 | + | let bY = fraction((bV * bX), bW, d) | |
445 | + | let bZ = invoke(V, "emit", [bY], nil) | |
446 | + | if ((bZ == bZ)) | |
542 | 447 | then { | |
543 | - | let | |
544 | - | let | |
545 | - | [IntegerEntry(an(), aw), IntegerEntry(av(aw), height), IntegerEntry(ax(aw), | |
448 | + | let ca = value(aO.payments[0]).amount | |
449 | + | let cb = aA(aw, ca, bY) | |
450 | + | [IntegerEntry(an(), aw), IntegerEntry(av(aw), height), IntegerEntry(ax(aw), bY), IntegerEntry(ai(), height), IntegerEntry(ay(aw), ca), IntegerEntry(ao(), (aw + 1)), StringEntry(az(), cb), StringEntry(aD(aw), cb)] | |
546 | 451 | } | |
547 | 452 | else throw("Strict value is not equal to itself.") | |
548 | 453 | } | |
552 | 457 | ||
553 | 458 | ||
554 | 459 | @Callable(aO) | |
555 | - | func claimNextBatch (bs,bz,bA,bt,bu,bv) = if ((aO.caller != this)) | |
556 | - | then throw("Should be called by this script only") | |
557 | - | else { | |
558 | - | let cs = by(bs, bz, bA, bt, bu, bv) | |
559 | - | $Tuple2(nil, cs) | |
560 | - | } | |
561 | - | ||
562 | - | ||
563 | - | ||
564 | - | @Callable(aO) | |
565 | 460 | func claimReward () = { | |
566 | 461 | let ah = ab() | |
567 | - | let | |
568 | - | let | |
569 | - | let aN = | |
570 | - | let | |
571 | - | let | |
462 | + | let cc = toString(aO.caller) | |
463 | + | let cd = br(cc) | |
464 | + | let aN = cd._1 | |
465 | + | let ce = cd._2 | |
466 | + | let cf = if ((aN > 0)) | |
572 | 467 | then true | |
573 | 468 | else throw("Nothing to claim") | |
574 | - | if (( | |
469 | + | if ((cf == cf)) | |
575 | 470 | then { | |
576 | - | let | |
577 | - | let | |
578 | - | let | |
579 | - | if ($isInstanceOf( | |
580 | - | then | |
471 | + | let cg = 0 | |
472 | + | let ch = { | |
473 | + | let bT = invoke(aJ, "claim", [F], nil) | |
474 | + | if ($isInstanceOf(bT, "Int")) | |
475 | + | then bT | |
581 | 476 | else throw(($getType(invoke(aJ, "claim", [F], nil)) + " couldn't be cast to Int")) | |
582 | 477 | } | |
583 | - | let | |
584 | - | $Tuple2(([ScriptTransfer(aO.caller, | |
478 | + | let ci = (aN + ch) | |
479 | + | $Tuple2(([ScriptTransfer(aO.caller, ci, fromBase58String(ah[W])), aK("claim", cc, aN, aO)] ++ ce), [ci, cg]) | |
585 | 480 | } | |
586 | 481 | else throw("Strict value is not equal to itself.") | |
587 | 482 | } | |
589 | 484 | ||
590 | 485 | ||
591 | 486 | @Callable(aO) | |
592 | - | func claimRewardREADONLY ( | |
593 | - | let | |
594 | - | let aN = | |
595 | - | let | |
596 | - | let | |
597 | - | let | |
598 | - | $Tuple2(nil, | |
487 | + | func claimRewardREADONLY (cc) = { | |
488 | + | let cj = br(cc) | |
489 | + | let aN = cj._1 | |
490 | + | let ce = cj._2 | |
491 | + | let ck = valueOrElse(getInteger(aJ, R(F, cc)), 0) | |
492 | + | let ci = (aN + ck) | |
493 | + | $Tuple2(nil, ci) | |
599 | 494 | } | |
600 | 495 | ||
601 | 496 | ||
602 | 497 | ||
603 | 498 | @Callable(aO) | |
604 | - | func latestFinalizedPeriodREADONLY ( | |
499 | + | func latestFinalizedPeriodREADONLY (cc) = $Tuple2(nil, valueOrElse(getInteger(this, an()), -1)) | |
605 | 500 | ||
606 | 501 | ||
607 | 502 | ||
608 | 503 | @Callable(aO) | |
609 | - | func latestFinalizedPeriodInfoREADONLY ( | |
504 | + | func latestFinalizedPeriodInfoREADONLY (cc) = $Tuple2(nil, k(az())) | |
610 | 505 | ||
611 | 506 | ||
612 | 507 | ||
613 | 508 | @Callable(aO) | |
614 | - | func calcGwxParamsREADONLY ( | |
615 | - | let | |
616 | - | let | |
617 | - | let | |
618 | - | $Tuple2(nil, [ | |
509 | + | func calcGwxParamsREADONLY (cl,cm,cn) = { | |
510 | + | let co = (cm + cn) | |
511 | + | let cp = -(fraction(cl, c, cn)) | |
512 | + | let cq = (fraction(cl, c, cn) * co) | |
513 | + | $Tuple2(nil, [cp, cq, bq()]) | |
619 | 514 | } | |
620 | 515 | ||
621 | 516 | ||
622 | 517 | ||
623 | 518 | @Callable(aO) | |
624 | - | func calcGwxAmountStartREADONLY ( | |
625 | - | let | |
626 | - | let | |
627 | - | $Tuple2(nil, [ | |
519 | + | func calcGwxAmountStartREADONLY (cr,cs,ct) = { | |
520 | + | let cu = fraction(cs, d, ct) | |
521 | + | let bv = fraction(cr, cu, d) | |
522 | + | $Tuple2(nil, [bv]) | |
628 | 523 | } | |
629 | - | ||
630 | - | ||
631 | - | ||
632 | - | @Callable(aO) | |
633 | - | func constructor (ad,ae,af,q) = if ((this != aO.caller)) | |
634 | - | then throw("not authorized") | |
635 | - | else [StringEntry(aa(), ac(ad, ae, af, q))] | |
636 | - | ||
637 | - | ||
638 | - | ||
639 | - | @Callable(aO) | |
640 | - | func constructorV2 (cK) = if ((this != aO.caller)) | |
641 | - | then throw("not authorized") | |
642 | - | else [StringEntry(x(), cK)] | |
643 | - | ||
644 | - | ||
645 | - | ||
646 | - | @Callable(aO) | |
647 | - | func constructorV3 (cL) = if ((this != aO.caller)) | |
648 | - | then throw("not authorized") | |
649 | - | else { | |
650 | - | let cM = if (isDefined(getInteger(this, an()))) | |
651 | - | then nil | |
652 | - | else [IntegerEntry(an(), -1)] | |
653 | - | (cM :+ StringEntry(A(), cL)) | |
654 | - | } | |
655 | 524 | ||
656 | 525 | ||
657 | 526 | ||
663 | 532 | ||
664 | 533 | ||
665 | 534 | @Callable(aO) | |
666 | - | func latestPeriodEmissionRewardsREADONLY ( | |
535 | + | func latestPeriodEmissionRewardsREADONLY (cc) = { | |
667 | 536 | let aw = bq() | |
668 | 537 | $Tuple2(nil, [h(ax(aw))]) | |
669 | 538 | } | |
671 | 540 | ||
672 | 541 | ||
673 | 542 | @Callable(aO) | |
674 | - | func calcD ( | |
675 | - | let | |
676 | - | let | |
677 | - | let | |
678 | - | let | |
679 | - | let | |
680 | - | let | |
681 | - | let aV = ( | |
543 | + | func calcD (cv,cw,cx,cy,cz) = { | |
544 | + | let cA = toBigInt(2) | |
545 | + | let cB = parseBigIntValue(cy) | |
546 | + | let cC = parseBigIntValue(cz) | |
547 | + | let cD = parseBigIntValue(cv) | |
548 | + | let cE = parseBigIntValue(cw) | |
549 | + | let cF = (parseBigIntValue(cx) * cB) | |
550 | + | let aV = (cD + cE) | |
682 | 551 | if ((aV == e)) | |
683 | 552 | then $Tuple2(nil, toString(e)) | |
684 | 553 | else { | |
685 | - | let | |
686 | - | let | |
687 | - | func | |
688 | - | let | |
689 | - | let | |
690 | - | let | |
691 | - | let | |
692 | - | let | |
693 | - | $Tuple2( | |
554 | + | let cG = (cF * cA) | |
555 | + | let cH = [1, 2, 3, 4, 5, 6, 7] | |
556 | + | func cI (cJ,cK) = { | |
557 | + | let cL = cJ | |
558 | + | let cM = cL._1 | |
559 | + | let cN = cL._2 | |
560 | + | let cO = (((cM * cM) * cM) / (((cD * cE) * cA) * cA)) | |
561 | + | let cP = (((((cG * aV) / cB) + (cO * cA)) * cM) / ((((cG - cB) * cM) / cB) + ((cA + toBigInt(1)) * cO))) | |
562 | + | $Tuple2(cP, cM) | |
694 | 563 | } | |
695 | 564 | ||
696 | - | let | |
697 | - | let | |
698 | - | let | |
699 | - | let | |
700 | - | func | |
701 | - | then | |
702 | - | else | |
565 | + | let cQ = { | |
566 | + | let cR = cH | |
567 | + | let cS = size(cR) | |
568 | + | let cT = $Tuple2(aV, unit) | |
569 | + | func cU (cV,cW) = if ((cW >= cS)) | |
570 | + | then cV | |
571 | + | else cI(cV, cR[cW]) | |
703 | 572 | ||
704 | - | func | |
705 | - | then | |
573 | + | func cX (cV,cW) = if ((cW >= cS)) | |
574 | + | then cV | |
706 | 575 | else throw("List size exceeds 7") | |
707 | 576 | ||
708 | - | | |
577 | + | cX(cU(cU(cU(cU(cU(cU(cU(cT, 0), 1), 2), 3), 4), 5), 6), 7) | |
709 | 578 | } | |
710 | - | let | |
711 | - | let | |
712 | - | let | |
713 | - | if (( | |
714 | - | then $Tuple2(nil, toString( | |
715 | - | else throw(("D calculation error, dDiff = " + toString( | |
579 | + | let cP = cQ._1 | |
580 | + | let cN = cQ._2 | |
581 | + | let cY = m((cP - value(cN))) | |
582 | + | if ((cC >= cY)) | |
583 | + | then $Tuple2(nil, toString(cP)) | |
584 | + | else throw(("D calculation error, dDiff = " + toString(cY))) | |
716 | 585 | } | |
717 | 586 | } | |
718 | 587 | ||
719 | 588 | ||
720 | 589 | ||
721 | 590 | @Callable(aO) | |
722 | - | func setManager ( | |
723 | - | let | |
724 | - | if (( | |
591 | + | func setManager (cZ) = { | |
592 | + | let da = aX(aO) | |
593 | + | if ((da == da)) | |
725 | 594 | then { | |
726 | - | let | |
727 | - | if (( | |
728 | - | then [StringEntry(aS(), | |
595 | + | let db = fromBase58String(cZ) | |
596 | + | if ((db == db)) | |
597 | + | then [StringEntry(aS(), cZ)] | |
729 | 598 | else throw("Strict value is not equal to itself.") | |
730 | 599 | } | |
731 | 600 | else throw("Strict value is not equal to itself.") | |
735 | 604 | ||
736 | 605 | @Callable(aO) | |
737 | 606 | func confirmManager () = { | |
738 | - | let | |
739 | - | let | |
607 | + | let dc = aW() | |
608 | + | let dd = if (isDefined(dc)) | |
740 | 609 | then true | |
741 | 610 | else throw("No pending manager") | |
742 | - | if (( | |
611 | + | if ((dd == dd)) | |
743 | 612 | then { | |
744 | - | let | |
613 | + | let de = if ((aO.callerPublicKey == value(dc))) | |
745 | 614 | then true | |
746 | 615 | else throw("You are not pending manager") | |
747 | - | if (( | |
748 | - | then [StringEntry(aR(), toBase58String(value( | |
616 | + | if ((de == de)) | |
617 | + | then [StringEntry(aR(), toBase58String(value(dc))), DeleteEntry(aS())] | |
749 | 618 | else throw("Strict value is not equal to itself.") | |
750 | 619 | } | |
751 | 620 | else throw("Strict value is not equal to itself.") | |
752 | 621 | } | |
753 | 622 | ||
754 | 623 | ||
755 | - | @Verifier( | |
756 | - | func | |
757 | - | let | |
624 | + | @Verifier(df) | |
625 | + | func dg () = { | |
626 | + | let dh = { | |
758 | 627 | let aU = aT() | |
759 | 628 | if ($isInstanceOf(aU, "ByteVector")) | |
760 | 629 | then { | |
762 | 631 | aZ | |
763 | 632 | } | |
764 | 633 | else if ($isInstanceOf(aU, "Unit")) | |
765 | - | then | |
634 | + | then df.senderPublicKey | |
766 | 635 | else throw("Match error") | |
767 | 636 | } | |
768 | - | sigVerify( | |
637 | + | sigVerify(df.bodyBytes, df.proofs[0], dh) | |
769 | 638 | } | |
770 | 639 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = "__" | |
5 | 5 | ||
6 | 6 | let b = 26 | |
7 | 7 | ||
8 | 8 | let c = 1000 | |
9 | 9 | ||
10 | 10 | let d = 100000000 | |
11 | 11 | ||
12 | 12 | let e = toBigInt(0) | |
13 | 13 | ||
14 | 14 | let f = 0 | |
15 | 15 | ||
16 | 16 | let g = 1 | |
17 | 17 | ||
18 | 18 | func h (i) = valueOrElse(getInteger(this, i), 0) | |
19 | 19 | ||
20 | 20 | ||
21 | 21 | func j (i) = valueOrErrorMessage(getInteger(this, i), (("mandatory this." + i) + " is not defined")) | |
22 | 22 | ||
23 | 23 | ||
24 | 24 | func k (i) = valueOrElse(getString(this, i), "") | |
25 | 25 | ||
26 | 26 | ||
27 | 27 | func l (i) = valueOrErrorMessage(getString(this, i), (("mandatory this." + i) + " is not defined")) | |
28 | 28 | ||
29 | 29 | ||
30 | 30 | func m (n) = if ((e > n)) | |
31 | 31 | then -(n) | |
32 | 32 | else n | |
33 | 33 | ||
34 | 34 | ||
35 | 35 | let o = "%s__maxDepth" | |
36 | 36 | ||
37 | 37 | let p = 30 | |
38 | 38 | ||
39 | 39 | let q = valueOrElse(getInteger(this, o), p) | |
40 | 40 | ||
41 | 41 | let r = "%s__maxDepthMigration" | |
42 | 42 | ||
43 | 43 | let s = 3 | |
44 | 44 | ||
45 | 45 | let t = valueOrElse(getInteger(this, r), s) | |
46 | 46 | ||
47 | 47 | let u = "migrated" | |
48 | 48 | ||
49 | 49 | let v = valueOrElse(getBoolean(this, u), false) | |
50 | 50 | ||
51 | 51 | let w = "nextProcessedUserMigration" | |
52 | 52 | ||
53 | 53 | func x () = "%s%s__config__factoryAddress" | |
54 | 54 | ||
55 | 55 | ||
56 | 56 | let y = l(x()) | |
57 | 57 | ||
58 | 58 | let z = addressFromStringValue(y) | |
59 | 59 | ||
60 | 60 | func A () = "%s%s__config__emissionAddress" | |
61 | 61 | ||
62 | 62 | ||
63 | 63 | func B (C) = makeString(["%s%s%s", "mapping", "num2user", toString(C)], a) | |
64 | 64 | ||
65 | 65 | ||
66 | 66 | let D = makeString(["%s%s", "referral", "programName"], a) | |
67 | 67 | ||
68 | 68 | let E = "wxlock" | |
69 | 69 | ||
70 | 70 | let F = valueOrElse(getString(this, D), E) | |
71 | 71 | ||
72 | 72 | let G = makeString(["%s%s", "referral", "minGWxAmount"], a) | |
73 | 73 | ||
74 | 74 | let H = (500 * d) | |
75 | 75 | ||
76 | 76 | let I = valueOrElse(getInteger(this, G), H) | |
77 | 77 | ||
78 | 78 | let J = makeString(["%s%s", "referral", "referrerRewardPermille"], a) | |
79 | 79 | ||
80 | 80 | let K = 50 | |
81 | 81 | ||
82 | 82 | let L = valueOrElse(getInteger(this, J), K) | |
83 | 83 | ||
84 | 84 | let M = makeString(["%s%s", "referral", "referralRewardPermille"], a) | |
85 | 85 | ||
86 | 86 | let N = 50 | |
87 | 87 | ||
88 | 88 | let O = valueOrElse(getInteger(this, M), N) | |
89 | 89 | ||
90 | 90 | func P (Q) = makeString(["%s%s%s", "referrer", F, Q], a) | |
91 | 91 | ||
92 | 92 | ||
93 | 93 | func R (S,T) = makeString(["%s%s%s%s", "unclaimedReferral", S, T], a) | |
94 | 94 | ||
95 | 95 | ||
96 | 96 | let U = l(A()) | |
97 | 97 | ||
98 | 98 | let V = addressFromStringValue(U) | |
99 | 99 | ||
100 | 100 | let W = 1 | |
101 | 101 | ||
102 | 102 | let X = 2 | |
103 | 103 | ||
104 | 104 | let Y = 3 | |
105 | 105 | ||
106 | 106 | let Z = 4 | |
107 | 107 | ||
108 | 108 | func aa () = "%s__config" | |
109 | 109 | ||
110 | 110 | ||
111 | 111 | func ab () = split(l(aa()), a) | |
112 | 112 | ||
113 | 113 | ||
114 | 114 | func ac (ad,ae,af,q) = makeString(["%s%s%s%d", ad, ae, af, toString(q)], a) | |
115 | 115 | ||
116 | 116 | ||
117 | 117 | func ag () = { | |
118 | 118 | let ah = ab() | |
119 | 119 | valueOrErrorMessage(addressFromString(ah[Y]), "boosting contract address is not defined") | |
120 | 120 | } | |
121 | 121 | ||
122 | 122 | ||
123 | 123 | func ai () = "%s%s__gwxRewardEmissionPart__startHeight" | |
124 | 124 | ||
125 | 125 | ||
126 | 126 | func aj () = "%s__nextUserNum" | |
127 | 127 | ||
128 | 128 | ||
129 | 129 | func ak () = "%s%s__ratePerBlock__current" | |
130 | 130 | ||
131 | 131 | ||
132 | 132 | func al () = "%s%s__poolWeight__GWXvirtualPOOL" | |
133 | 133 | ||
134 | 134 | ||
135 | 135 | func am () = "%s__nextProcessedUser" | |
136 | 136 | ||
137 | 137 | ||
138 | 138 | func an () = "%s__latestPeriod" | |
139 | 139 | ||
140 | 140 | ||
141 | 141 | func ao () = "%s__nextPeriod" | |
142 | 142 | ||
143 | 143 | ||
144 | 144 | func ap () = "%s__processingStage" | |
145 | 145 | ||
146 | 146 | ||
147 | 147 | func aq () = "%s__nextProcessedPeriod" | |
148 | 148 | ||
149 | 149 | ||
150 | 150 | func ar (as) = makeString(["%s%d", "userUnclaimed", toString(as)], a) | |
151 | 151 | ||
152 | 152 | ||
153 | 153 | func at (as) = makeString(["%s%d__nextClaimedPeriod", toString(as)], a) | |
154 | 154 | ||
155 | 155 | ||
156 | 156 | func au (as) = makeString(["%s%d__lastProcessedPeriod", toString(as)], a) | |
157 | 157 | ||
158 | 158 | ||
159 | 159 | func av (aw) = makeString(["%s%d__startHeightForPeriod", toString(aw)], a) | |
160 | 160 | ||
161 | 161 | ||
162 | 162 | func ax (aw) = makeString(["%s%d__auxEmissionReward", toString(aw)], a) | |
163 | 163 | ||
164 | 164 | ||
165 | 165 | func ay (aw) = makeString(["%s%d__totalAmountForPeriod", toString(aw)], a) | |
166 | 166 | ||
167 | 167 | ||
168 | 168 | func az () = "%s__lastPayoutInfo" | |
169 | 169 | ||
170 | 170 | ||
171 | 171 | func aA (aw,aB,aC) = makeString(["%d%d%d", toString(aw), toString(aB), toString(aC)], a) | |
172 | 172 | ||
173 | 173 | ||
174 | 174 | func aD (aw) = makeString(["%s%s%d__payouts__history", toString(aw)], a) | |
175 | 175 | ||
176 | 176 | ||
177 | 177 | func aE (aw) = makeString(["%s%d__totalWeightForPeriod", toString(aw)], a) | |
178 | 178 | ||
179 | 179 | ||
180 | 180 | func aF (aw,as) = makeString(["%s%d%s%d__paramByPeriod", toString(as), "k", toString(aw)], a) | |
181 | 181 | ||
182 | 182 | ||
183 | 183 | func aG (aw,as) = makeString(["%s%d%s%d__paramByPeriod", toString(as), "b", toString(aw)], a) | |
184 | 184 | ||
185 | 185 | ||
186 | 186 | func aH (aw,as) = makeString(["%s%d%s%d__paramByPeriod", toString(as), "weight", toString(aw)], a) | |
187 | 187 | ||
188 | 188 | ||
189 | 189 | func aI () = makeString(["%s%s", "config", "referralsContractAddress"], a) | |
190 | 190 | ||
191 | 191 | ||
192 | 192 | let aJ = addressFromStringValue(l(aI())) | |
193 | 193 | ||
194 | 194 | func aK (aL,aM,aN,aO) = { | |
195 | 195 | let aP = makeString(["%s%s%s%s__history", aL, aM, toBase58String(aO.transactionId)], a) | |
196 | 196 | let aQ = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aN)], a) | |
197 | 197 | StringEntry(aP, aQ) | |
198 | 198 | } | |
199 | 199 | ||
200 | 200 | ||
201 | 201 | func aR () = "%s__managerPublicKey" | |
202 | 202 | ||
203 | 203 | ||
204 | 204 | func aS () = "%s__pendingManagerPublicKey" | |
205 | 205 | ||
206 | 206 | ||
207 | 207 | func aT () = { | |
208 | 208 | let aU = getString(aR()) | |
209 | 209 | if ($isInstanceOf(aU, "String")) | |
210 | 210 | then { | |
211 | 211 | let aV = aU | |
212 | 212 | fromBase58String(aV) | |
213 | 213 | } | |
214 | 214 | else if ($isInstanceOf(aU, "Unit")) | |
215 | 215 | then unit | |
216 | 216 | else throw("Match error") | |
217 | 217 | } | |
218 | 218 | ||
219 | 219 | ||
220 | 220 | func aW () = { | |
221 | 221 | let aU = getString(aS()) | |
222 | 222 | if ($isInstanceOf(aU, "String")) | |
223 | 223 | then { | |
224 | 224 | let aV = aU | |
225 | 225 | fromBase58String(aV) | |
226 | 226 | } | |
227 | 227 | else if ($isInstanceOf(aU, "Unit")) | |
228 | 228 | then unit | |
229 | 229 | else throw("Match error") | |
230 | 230 | } | |
231 | 231 | ||
232 | 232 | ||
233 | 233 | func aX (aO) = { | |
234 | 234 | let aY = throw("Permission denied") | |
235 | 235 | let aU = aT() | |
236 | 236 | if ($isInstanceOf(aU, "ByteVector")) | |
237 | 237 | then { | |
238 | 238 | let aZ = aU | |
239 | 239 | if ((aO.callerPublicKey == aZ)) | |
240 | 240 | then true | |
241 | 241 | else aY | |
242 | 242 | } | |
243 | 243 | else if ($isInstanceOf(aU, "Unit")) | |
244 | 244 | then if ((aO.caller == this)) | |
245 | 245 | then true | |
246 | 246 | else aY | |
247 | 247 | else throw("Match error") | |
248 | 248 | } | |
249 | 249 | ||
250 | 250 | ||
251 | 251 | func ba (bb,bc,aw,as) = { | |
252 | 252 | let bd = au(as) | |
253 | 253 | let be = aF(aw, as) | |
254 | 254 | let bf = getInteger(bb, be) | |
255 | 255 | let bg = aH(aw, as) | |
256 | 256 | if (isDefined(bf)) | |
257 | 257 | then { | |
258 | 258 | let bh = value(bf) | |
259 | 259 | let bi = value(getInteger(bb, aG(aw, as))) | |
260 | 260 | let bj = ((bh * bc) + bi) | |
261 | 261 | if ((bj > 0)) | |
262 | 262 | then $Tuple2((bj / c), [IntegerEntry(bd, aw), IntegerEntry(bg, bj)]) | |
263 | 263 | else $Tuple2(0, nil) | |
264 | 264 | } | |
265 | 265 | else { | |
266 | 266 | let bk = getInteger(this, bd) | |
267 | 267 | if (if (isDefined(bk)) | |
268 | 268 | then (aw >= value(bk)) | |
269 | 269 | else false) | |
270 | 270 | then { | |
271 | 271 | let bl = value(bk) | |
272 | 272 | let bh = value(getInteger(bb, aF(bl, as))) | |
273 | 273 | let bi = value(getInteger(bb, aG(bl, as))) | |
274 | 274 | let bj = ((bh * bc) + bi) | |
275 | 275 | if ((bj > 0)) | |
276 | 276 | then $Tuple2((bj / c), [IntegerEntry(bg, bj)]) | |
277 | 277 | else $Tuple2(0, nil) | |
278 | 278 | } | |
279 | 279 | else $Tuple2(0, nil) | |
280 | 280 | } | |
281 | 281 | } | |
282 | 282 | ||
283 | 283 | ||
284 | 284 | func bm (bb,bc,aw,as) = { | |
285 | 285 | let bg = aH(aw, as) | |
286 | 286 | let bn = getInteger(bg) | |
287 | 287 | let aU = bn | |
288 | 288 | if ($isInstanceOf(aU, "Unit")) | |
289 | 289 | then 0 | |
290 | 290 | else if ($isInstanceOf(aU, "Int")) | |
291 | 291 | then { | |
292 | 292 | let bj = aU | |
293 | 293 | (bj / c) | |
294 | 294 | } | |
295 | 295 | else throw("Match error") | |
296 | 296 | } | |
297 | 297 | ||
298 | 298 | ||
299 | 299 | func bo (af,bp) = { | |
300 | 300 | let i = makeString(["%s%s%s", "mapping", "user2num", bp], a) | |
301 | 301 | parseIntValue(valueOrErrorMessage(getString(Address(fromBase58String(af)), i), ((("User address " + bp) + " is not found in boosting contract data, key=") + i))) | |
302 | 302 | } | |
303 | 303 | ||
304 | 304 | ||
305 | 305 | func bq () = h(ao()) | |
306 | 306 | ||
307 | 307 | ||
308 | - | func br (bs,aw,aM,bt,bu,bv) = { | |
309 | - | let bw = invoke(this, "claimNextBatch", [bs, aw, aM, bt, bu, bv], nil) | |
310 | - | if ((bw == bw)) | |
311 | - | then { | |
312 | - | let aU = bw | |
313 | - | if ($isInstanceOf(aU, "(Int, Int, Int)")) | |
314 | - | then { | |
315 | - | let bx = aU | |
316 | - | bx | |
317 | - | } | |
318 | - | else throw("Incorrect invoke result") | |
319 | - | } | |
320 | - | else throw("Strict value is not equal to itself.") | |
321 | - | } | |
322 | - | ||
323 | - | ||
324 | - | func by (bs,bz,bA,bt,bB,bC) = { | |
325 | - | let bb = Address(bs) | |
326 | - | let bD = h(aq()) | |
327 | - | let bE = h(aE(bz)) | |
328 | - | let bc = h(av(bz)) | |
329 | - | let bF = bm(bb, bc, bz, bA) | |
330 | - | let bG = fraction(h(ay(bz)), bF, bE) | |
331 | - | let bH = fraction(h(ax(bz)), bF, bE) | |
332 | - | if (if ((0 >= bt)) | |
333 | - | then true | |
334 | - | else ((bz + 1) >= bD)) | |
335 | - | then $Tuple3((bz + 1), (bB + bG), (bC + bH)) | |
336 | - | else br(bs, (bz + 1), bA, (bt - 1), (bB + bG), (bC + bH)) | |
337 | - | } | |
338 | - | ||
339 | - | ||
340 | - | func bI (bp) = { | |
308 | + | func br (bp) = { | |
341 | 309 | let ah = ab() | |
342 | - | let | |
343 | - | let | |
344 | - | let aU = | |
310 | + | let bs = bo(ah[Y], bp) | |
311 | + | let bt = getInteger(ar(bs)) | |
312 | + | let aU = bt | |
345 | 313 | if ($isInstanceOf(aU, "Unit")) | |
346 | - | then if (v) | |
347 | - | then $Tuple2(0, nil) | |
348 | - | else { | |
349 | - | let bz = h(at(bJ)) | |
350 | - | let bL = h(aq()) | |
351 | - | if ((bz >= bL)) | |
352 | - | then $Tuple2(0, nil) | |
353 | - | else { | |
354 | - | let bs = fromBase58String(ah[Y]) | |
355 | - | let bM = by(bs, bz, bJ, b, 0, 0) | |
356 | - | let aw = bM._1 | |
357 | - | let bN = bM._2 | |
358 | - | let bO = bM._3 | |
359 | - | let aN = (bN + bO) | |
360 | - | let bP = [IntegerEntry(at(bJ), aw)] | |
361 | - | $Tuple2(aN, bP) | |
362 | - | } | |
363 | - | } | |
314 | + | then $Tuple2(0, nil) | |
364 | 315 | else if ($isInstanceOf(aU, "Int")) | |
365 | 316 | then { | |
366 | - | let | |
367 | - | $Tuple2( | |
317 | + | let bu = aU | |
318 | + | $Tuple2(bu, [IntegerEntry(ar(bs), 0)]) | |
368 | 319 | } | |
369 | 320 | else throw("Match error") | |
370 | 321 | } | |
371 | 322 | ||
372 | 323 | ||
373 | 324 | @Callable(aO) | |
374 | - | func updateReferralActivity (bp, | |
375 | - | let | |
376 | - | let | |
325 | + | func updateReferralActivity (bp,bv) = { | |
326 | + | let bw = getString(aJ, P(bp)) | |
327 | + | let bx = if ((bw == unit)) | |
377 | 328 | then unit | |
378 | - | else invoke(aJ, "updateReferralActivity", [F, bp, ( | |
379 | - | if (( | |
329 | + | else invoke(aJ, "updateReferralActivity", [F, bp, (bv >= I)], nil) | |
330 | + | if ((bx == bx)) | |
380 | 331 | then $Tuple2(nil, unit) | |
381 | 332 | else throw("Strict value is not equal to itself.") | |
382 | 333 | } | |
383 | 334 | ||
384 | 335 | ||
385 | 336 | ||
386 | 337 | @Callable(aO) | |
387 | 338 | func finalizeHelper () = { | |
388 | - | let | |
339 | + | let by = valueOrElse(getInteger(ap()), f) | |
389 | 340 | let bz = h(aq()) | |
390 | 341 | let bA = h(am()) | |
391 | - | let | |
392 | - | let | |
393 | - | let | |
342 | + | let bB = h(an()) | |
343 | + | let bC = valueOrElse(getInteger(ag(), aj()), 0) | |
344 | + | let bD = aE(bz) | |
394 | 345 | let bE = h(aE(bz)) | |
395 | 346 | let bc = h(av(bz)) | |
396 | - | if ((bz > | |
347 | + | if ((bz > bB)) | |
397 | 348 | then $Tuple2(nil, false) | |
398 | - | else if (( | |
349 | + | else if ((by == f)) | |
399 | 350 | then { | |
400 | - | let | |
401 | - | let | |
402 | - | let | |
403 | - | let | |
404 | - | let | |
351 | + | let bF = ba(ag(), bc, bz, bA) | |
352 | + | let bG = bF._1 | |
353 | + | let bH = bF._2 | |
354 | + | let bI = (bE + bG) | |
355 | + | let bJ = if (((bC - 1) > bA)) | |
405 | 356 | then [IntegerEntry(am(), (bA + 1))] | |
406 | 357 | else [IntegerEntry(ap(), g), IntegerEntry(am(), 0)] | |
407 | - | $Tuple2((([IntegerEntry( | |
358 | + | $Tuple2((([IntegerEntry(bD, bI)] ++ bJ) ++ bH), true) | |
408 | 359 | } | |
409 | - | else if (( | |
360 | + | else if ((by == g)) | |
410 | 361 | then { | |
411 | - | let | |
412 | - | let | |
413 | - | let | |
414 | - | let | |
415 | - | let | |
362 | + | let bG = bm(ag(), bc, bz, bA) | |
363 | + | let bK = fraction(h(ay(bz)), bG, bE) | |
364 | + | let bL = fraction(h(ax(bz)), bG, bE) | |
365 | + | let bM = (bL + bK) | |
366 | + | let bt = getInteger(ar(bA)) | |
416 | 367 | let bp = getStringValue(ag(), B(bA)) | |
417 | - | let | |
418 | - | let | |
368 | + | let bw = getString(aJ, P(bp)) | |
369 | + | let bx = if ((bw == unit)) | |
419 | 370 | then unit | |
420 | - | else invoke(aJ, "updateReferralActivity", [F, bp, ( | |
421 | - | if (( | |
371 | + | else invoke(aJ, "updateReferralActivity", [F, bp, (bG >= I)], nil) | |
372 | + | if ((bx == bx)) | |
422 | 373 | then { | |
423 | - | let | |
374 | + | let bN = if (if ((bw == unit)) | |
424 | 375 | then true | |
425 | - | else (I > | |
376 | + | else (I > bG)) | |
426 | 377 | then unit | |
427 | 378 | else { | |
428 | - | let | |
429 | - | let | |
430 | - | invoke(aJ, "incUnclaimed", [F, bp, | |
379 | + | let bO = fraction(bM, L, c) | |
380 | + | let bP = fraction(bM, O, c) | |
381 | + | invoke(aJ, "incUnclaimed", [F, bp, bO, bP], nil) | |
431 | 382 | } | |
432 | - | if (( | |
383 | + | if ((bN == bN)) | |
433 | 384 | then { | |
434 | - | let | |
385 | + | let bQ = if (if (v) | |
435 | 386 | then true | |
436 | - | else ( | |
437 | - | then [IntegerEntry(ar(bA), (valueOrElse( | |
387 | + | else (bt != unit)) | |
388 | + | then [IntegerEntry(ar(bA), (valueOrElse(bt, 0) + bM))] | |
438 | 389 | else nil | |
439 | - | let | |
390 | + | let bJ = if (((bC - 1) > bA)) | |
440 | 391 | then [IntegerEntry(am(), (bA + 1))] | |
441 | 392 | else [IntegerEntry(aq(), (bz + 1)), IntegerEntry(am(), 0), DeleteEntry(ap())] | |
442 | - | $Tuple2(( | |
393 | + | $Tuple2((bQ ++ bJ), true) | |
443 | 394 | } | |
444 | 395 | else throw("Strict value is not equal to itself.") | |
445 | 396 | } | |
446 | 397 | else throw("Strict value is not equal to itself.") | |
447 | 398 | } | |
448 | 399 | else throw("invalid processing stage") | |
449 | 400 | } | |
450 | 401 | ||
451 | 402 | ||
452 | 403 | ||
453 | 404 | @Callable(aO) | |
454 | - | func finalizeWrapper ( | |
455 | - | let | |
456 | - | let | |
457 | - | if ($isInstanceOf( | |
458 | - | then | |
405 | + | func finalizeWrapper (bR) = { | |
406 | + | let bS = { | |
407 | + | let bT = invoke(this, "finalizeHelper", nil, nil) | |
408 | + | if ($isInstanceOf(bT, "Boolean")) | |
409 | + | then bT | |
459 | 410 | else throw(($getType(invoke(this, "finalizeHelper", nil, nil)) + " couldn't be cast to Boolean")) | |
460 | 411 | } | |
461 | - | if (( | |
462 | - | then if (!( | |
463 | - | then if (( | |
412 | + | if ((bS == bS)) | |
413 | + | then if (!(bS)) | |
414 | + | then if ((bR == q)) | |
464 | 415 | then throw("Nothing to process") | |
465 | 416 | else $Tuple2(nil, unit) | |
466 | - | else if (( | |
467 | - | then $Tuple2(nil, invoke(this, "finalizeWrapper", [( | |
417 | + | else if ((bR > 0)) | |
418 | + | then $Tuple2(nil, invoke(this, "finalizeWrapper", [(bR - 1)], nil)) | |
468 | 419 | else $Tuple2(nil, unit) | |
469 | 420 | else throw("Strict value is not equal to itself.") | |
470 | 421 | } | |
471 | 422 | ||
472 | 423 | ||
473 | 424 | ||
474 | 425 | @Callable(aO) | |
475 | 426 | func processPendingPeriodsAndUsers () = $Tuple2(nil, invoke(this, "finalizeWrapper", [q], nil)) | |
476 | 427 | ||
477 | 428 | ||
478 | 429 | ||
479 | 430 | @Callable(aO) | |
480 | - | func migrateHelper () = { | |
481 | - | let bA = h(w) | |
482 | - | let bV = valueOrElse(getInteger(ag(), aj()), 0) | |
483 | - | if (v) | |
484 | - | then $Tuple2(nil, false) | |
485 | - | else { | |
486 | - | let bp = getStringValue(ag(), B(bA)) | |
487 | - | let ci = bI(bp) | |
488 | - | let cj = ci._1 | |
489 | - | let bP = ci._2 | |
490 | - | let ca = if (((bV - 1) > bA)) | |
491 | - | then [IntegerEntry(w, (bA + 1))] | |
492 | - | else [DeleteEntry(w), BooleanEntry(u, true)] | |
493 | - | $Tuple2(([IntegerEntry(ar(bA), cj)] ++ ca), true) | |
494 | - | } | |
495 | - | } | |
496 | - | ||
497 | - | ||
498 | - | ||
499 | - | @Callable(aO) | |
500 | - | func migrateWrapper (cg) = { | |
501 | - | let bw = { | |
502 | - | let ch = invoke(this, "migrateHelper", nil, nil) | |
503 | - | if ($isInstanceOf(ch, "Boolean")) | |
504 | - | then ch | |
505 | - | else throw(($getType(invoke(this, "migrateHelper", nil, nil)) + " couldn't be cast to Boolean")) | |
506 | - | } | |
507 | - | if ((bw == bw)) | |
508 | - | then if (!(bw)) | |
509 | - | then if ((cg == t)) | |
510 | - | then throw("Migration is over") | |
511 | - | else $Tuple2(nil, unit) | |
512 | - | else if ((cg > 0)) | |
513 | - | then $Tuple2(nil, invoke(this, "migrateWrapper", [(cg - 1)], nil)) | |
514 | - | else $Tuple2(nil, unit) | |
515 | - | else throw("Strict value is not equal to itself.") | |
516 | - | } | |
517 | - | ||
518 | - | ||
519 | - | ||
520 | - | @Callable(aO) | |
521 | - | func migrate () = $Tuple2(nil, invoke(this, "migrateWrapper", [t], nil)) | |
522 | - | ||
523 | - | ||
524 | - | ||
525 | - | @Callable(aO) | |
526 | 431 | func deposit () = { | |
527 | 432 | let ah = ab() | |
528 | 433 | if ((aO.caller != Address(fromBase58String(ah[X])))) | |
529 | 434 | then throw("Wrong caller address") | |
530 | 435 | else { | |
531 | - | let | |
532 | - | if (( | |
436 | + | let bU = value(value(aO.payments[0]).assetId) | |
437 | + | if ((bU != fromBase58String(ah[W]))) | |
533 | 438 | then throw("Wrong payment asset") | |
534 | 439 | else { | |
535 | 440 | let aw = bq() | |
536 | - | let | |
537 | - | let | |
538 | - | let | |
539 | - | let | |
540 | - | let | |
541 | - | if (( | |
441 | + | let bV = (height - j(ai())) | |
442 | + | let bW = valueOrErrorMessage(getInteger(V, ak()), (("mandatory emission_contract." + ak()) + " is not defined")) | |
443 | + | let bX = valueOrErrorMessage(getInteger(z, al()), (("mandatory factory_contract." + al()) + " is not defined")) | |
444 | + | let bY = fraction((bV * bX), bW, d) | |
445 | + | let bZ = invoke(V, "emit", [bY], nil) | |
446 | + | if ((bZ == bZ)) | |
542 | 447 | then { | |
543 | - | let | |
544 | - | let | |
545 | - | [IntegerEntry(an(), aw), IntegerEntry(av(aw), height), IntegerEntry(ax(aw), | |
448 | + | let ca = value(aO.payments[0]).amount | |
449 | + | let cb = aA(aw, ca, bY) | |
450 | + | [IntegerEntry(an(), aw), IntegerEntry(av(aw), height), IntegerEntry(ax(aw), bY), IntegerEntry(ai(), height), IntegerEntry(ay(aw), ca), IntegerEntry(ao(), (aw + 1)), StringEntry(az(), cb), StringEntry(aD(aw), cb)] | |
546 | 451 | } | |
547 | 452 | else throw("Strict value is not equal to itself.") | |
548 | 453 | } | |
549 | 454 | } | |
550 | 455 | } | |
551 | 456 | ||
552 | 457 | ||
553 | 458 | ||
554 | 459 | @Callable(aO) | |
555 | - | func claimNextBatch (bs,bz,bA,bt,bu,bv) = if ((aO.caller != this)) | |
556 | - | then throw("Should be called by this script only") | |
557 | - | else { | |
558 | - | let cs = by(bs, bz, bA, bt, bu, bv) | |
559 | - | $Tuple2(nil, cs) | |
560 | - | } | |
561 | - | ||
562 | - | ||
563 | - | ||
564 | - | @Callable(aO) | |
565 | 460 | func claimReward () = { | |
566 | 461 | let ah = ab() | |
567 | - | let | |
568 | - | let | |
569 | - | let aN = | |
570 | - | let | |
571 | - | let | |
462 | + | let cc = toString(aO.caller) | |
463 | + | let cd = br(cc) | |
464 | + | let aN = cd._1 | |
465 | + | let ce = cd._2 | |
466 | + | let cf = if ((aN > 0)) | |
572 | 467 | then true | |
573 | 468 | else throw("Nothing to claim") | |
574 | - | if (( | |
469 | + | if ((cf == cf)) | |
575 | 470 | then { | |
576 | - | let | |
577 | - | let | |
578 | - | let | |
579 | - | if ($isInstanceOf( | |
580 | - | then | |
471 | + | let cg = 0 | |
472 | + | let ch = { | |
473 | + | let bT = invoke(aJ, "claim", [F], nil) | |
474 | + | if ($isInstanceOf(bT, "Int")) | |
475 | + | then bT | |
581 | 476 | else throw(($getType(invoke(aJ, "claim", [F], nil)) + " couldn't be cast to Int")) | |
582 | 477 | } | |
583 | - | let | |
584 | - | $Tuple2(([ScriptTransfer(aO.caller, | |
478 | + | let ci = (aN + ch) | |
479 | + | $Tuple2(([ScriptTransfer(aO.caller, ci, fromBase58String(ah[W])), aK("claim", cc, aN, aO)] ++ ce), [ci, cg]) | |
585 | 480 | } | |
586 | 481 | else throw("Strict value is not equal to itself.") | |
587 | 482 | } | |
588 | 483 | ||
589 | 484 | ||
590 | 485 | ||
591 | 486 | @Callable(aO) | |
592 | - | func claimRewardREADONLY ( | |
593 | - | let | |
594 | - | let aN = | |
595 | - | let | |
596 | - | let | |
597 | - | let | |
598 | - | $Tuple2(nil, | |
487 | + | func claimRewardREADONLY (cc) = { | |
488 | + | let cj = br(cc) | |
489 | + | let aN = cj._1 | |
490 | + | let ce = cj._2 | |
491 | + | let ck = valueOrElse(getInteger(aJ, R(F, cc)), 0) | |
492 | + | let ci = (aN + ck) | |
493 | + | $Tuple2(nil, ci) | |
599 | 494 | } | |
600 | 495 | ||
601 | 496 | ||
602 | 497 | ||
603 | 498 | @Callable(aO) | |
604 | - | func latestFinalizedPeriodREADONLY ( | |
499 | + | func latestFinalizedPeriodREADONLY (cc) = $Tuple2(nil, valueOrElse(getInteger(this, an()), -1)) | |
605 | 500 | ||
606 | 501 | ||
607 | 502 | ||
608 | 503 | @Callable(aO) | |
609 | - | func latestFinalizedPeriodInfoREADONLY ( | |
504 | + | func latestFinalizedPeriodInfoREADONLY (cc) = $Tuple2(nil, k(az())) | |
610 | 505 | ||
611 | 506 | ||
612 | 507 | ||
613 | 508 | @Callable(aO) | |
614 | - | func calcGwxParamsREADONLY ( | |
615 | - | let | |
616 | - | let | |
617 | - | let | |
618 | - | $Tuple2(nil, [ | |
509 | + | func calcGwxParamsREADONLY (cl,cm,cn) = { | |
510 | + | let co = (cm + cn) | |
511 | + | let cp = -(fraction(cl, c, cn)) | |
512 | + | let cq = (fraction(cl, c, cn) * co) | |
513 | + | $Tuple2(nil, [cp, cq, bq()]) | |
619 | 514 | } | |
620 | 515 | ||
621 | 516 | ||
622 | 517 | ||
623 | 518 | @Callable(aO) | |
624 | - | func calcGwxAmountStartREADONLY ( | |
625 | - | let | |
626 | - | let | |
627 | - | $Tuple2(nil, [ | |
519 | + | func calcGwxAmountStartREADONLY (cr,cs,ct) = { | |
520 | + | let cu = fraction(cs, d, ct) | |
521 | + | let bv = fraction(cr, cu, d) | |
522 | + | $Tuple2(nil, [bv]) | |
628 | 523 | } | |
629 | - | ||
630 | - | ||
631 | - | ||
632 | - | @Callable(aO) | |
633 | - | func constructor (ad,ae,af,q) = if ((this != aO.caller)) | |
634 | - | then throw("not authorized") | |
635 | - | else [StringEntry(aa(), ac(ad, ae, af, q))] | |
636 | - | ||
637 | - | ||
638 | - | ||
639 | - | @Callable(aO) | |
640 | - | func constructorV2 (cK) = if ((this != aO.caller)) | |
641 | - | then throw("not authorized") | |
642 | - | else [StringEntry(x(), cK)] | |
643 | - | ||
644 | - | ||
645 | - | ||
646 | - | @Callable(aO) | |
647 | - | func constructorV3 (cL) = if ((this != aO.caller)) | |
648 | - | then throw("not authorized") | |
649 | - | else { | |
650 | - | let cM = if (isDefined(getInteger(this, an()))) | |
651 | - | then nil | |
652 | - | else [IntegerEntry(an(), -1)] | |
653 | - | (cM :+ StringEntry(A(), cL)) | |
654 | - | } | |
655 | 524 | ||
656 | 525 | ||
657 | 526 | ||
658 | 527 | @Callable(aO) | |
659 | 528 | func onEmissionForGwxStart () = if ((aO.caller != z)) | |
660 | 529 | then throw("permissions denied") | |
661 | 530 | else [IntegerEntry(ai(), height)] | |
662 | 531 | ||
663 | 532 | ||
664 | 533 | ||
665 | 534 | @Callable(aO) | |
666 | - | func latestPeriodEmissionRewardsREADONLY ( | |
535 | + | func latestPeriodEmissionRewardsREADONLY (cc) = { | |
667 | 536 | let aw = bq() | |
668 | 537 | $Tuple2(nil, [h(ax(aw))]) | |
669 | 538 | } | |
670 | 539 | ||
671 | 540 | ||
672 | 541 | ||
673 | 542 | @Callable(aO) | |
674 | - | func calcD ( | |
675 | - | let | |
676 | - | let | |
677 | - | let | |
678 | - | let | |
679 | - | let | |
680 | - | let | |
681 | - | let aV = ( | |
543 | + | func calcD (cv,cw,cx,cy,cz) = { | |
544 | + | let cA = toBigInt(2) | |
545 | + | let cB = parseBigIntValue(cy) | |
546 | + | let cC = parseBigIntValue(cz) | |
547 | + | let cD = parseBigIntValue(cv) | |
548 | + | let cE = parseBigIntValue(cw) | |
549 | + | let cF = (parseBigIntValue(cx) * cB) | |
550 | + | let aV = (cD + cE) | |
682 | 551 | if ((aV == e)) | |
683 | 552 | then $Tuple2(nil, toString(e)) | |
684 | 553 | else { | |
685 | - | let | |
686 | - | let | |
687 | - | func | |
688 | - | let | |
689 | - | let | |
690 | - | let | |
691 | - | let | |
692 | - | let | |
693 | - | $Tuple2( | |
554 | + | let cG = (cF * cA) | |
555 | + | let cH = [1, 2, 3, 4, 5, 6, 7] | |
556 | + | func cI (cJ,cK) = { | |
557 | + | let cL = cJ | |
558 | + | let cM = cL._1 | |
559 | + | let cN = cL._2 | |
560 | + | let cO = (((cM * cM) * cM) / (((cD * cE) * cA) * cA)) | |
561 | + | let cP = (((((cG * aV) / cB) + (cO * cA)) * cM) / ((((cG - cB) * cM) / cB) + ((cA + toBigInt(1)) * cO))) | |
562 | + | $Tuple2(cP, cM) | |
694 | 563 | } | |
695 | 564 | ||
696 | - | let | |
697 | - | let | |
698 | - | let | |
699 | - | let | |
700 | - | func | |
701 | - | then | |
702 | - | else | |
565 | + | let cQ = { | |
566 | + | let cR = cH | |
567 | + | let cS = size(cR) | |
568 | + | let cT = $Tuple2(aV, unit) | |
569 | + | func cU (cV,cW) = if ((cW >= cS)) | |
570 | + | then cV | |
571 | + | else cI(cV, cR[cW]) | |
703 | 572 | ||
704 | - | func | |
705 | - | then | |
573 | + | func cX (cV,cW) = if ((cW >= cS)) | |
574 | + | then cV | |
706 | 575 | else throw("List size exceeds 7") | |
707 | 576 | ||
708 | - | | |
577 | + | cX(cU(cU(cU(cU(cU(cU(cU(cT, 0), 1), 2), 3), 4), 5), 6), 7) | |
709 | 578 | } | |
710 | - | let | |
711 | - | let | |
712 | - | let | |
713 | - | if (( | |
714 | - | then $Tuple2(nil, toString( | |
715 | - | else throw(("D calculation error, dDiff = " + toString( | |
579 | + | let cP = cQ._1 | |
580 | + | let cN = cQ._2 | |
581 | + | let cY = m((cP - value(cN))) | |
582 | + | if ((cC >= cY)) | |
583 | + | then $Tuple2(nil, toString(cP)) | |
584 | + | else throw(("D calculation error, dDiff = " + toString(cY))) | |
716 | 585 | } | |
717 | 586 | } | |
718 | 587 | ||
719 | 588 | ||
720 | 589 | ||
721 | 590 | @Callable(aO) | |
722 | - | func setManager ( | |
723 | - | let | |
724 | - | if (( | |
591 | + | func setManager (cZ) = { | |
592 | + | let da = aX(aO) | |
593 | + | if ((da == da)) | |
725 | 594 | then { | |
726 | - | let | |
727 | - | if (( | |
728 | - | then [StringEntry(aS(), | |
595 | + | let db = fromBase58String(cZ) | |
596 | + | if ((db == db)) | |
597 | + | then [StringEntry(aS(), cZ)] | |
729 | 598 | else throw("Strict value is not equal to itself.") | |
730 | 599 | } | |
731 | 600 | else throw("Strict value is not equal to itself.") | |
732 | 601 | } | |
733 | 602 | ||
734 | 603 | ||
735 | 604 | ||
736 | 605 | @Callable(aO) | |
737 | 606 | func confirmManager () = { | |
738 | - | let | |
739 | - | let | |
607 | + | let dc = aW() | |
608 | + | let dd = if (isDefined(dc)) | |
740 | 609 | then true | |
741 | 610 | else throw("No pending manager") | |
742 | - | if (( | |
611 | + | if ((dd == dd)) | |
743 | 612 | then { | |
744 | - | let | |
613 | + | let de = if ((aO.callerPublicKey == value(dc))) | |
745 | 614 | then true | |
746 | 615 | else throw("You are not pending manager") | |
747 | - | if (( | |
748 | - | then [StringEntry(aR(), toBase58String(value( | |
616 | + | if ((de == de)) | |
617 | + | then [StringEntry(aR(), toBase58String(value(dc))), DeleteEntry(aS())] | |
749 | 618 | else throw("Strict value is not equal to itself.") | |
750 | 619 | } | |
751 | 620 | else throw("Strict value is not equal to itself.") | |
752 | 621 | } | |
753 | 622 | ||
754 | 623 | ||
755 | - | @Verifier( | |
756 | - | func | |
757 | - | let | |
624 | + | @Verifier(df) | |
625 | + | func dg () = { | |
626 | + | let dh = { | |
758 | 627 | let aU = aT() | |
759 | 628 | if ($isInstanceOf(aU, "ByteVector")) | |
760 | 629 | then { | |
761 | 630 | let aZ = aU | |
762 | 631 | aZ | |
763 | 632 | } | |
764 | 633 | else if ($isInstanceOf(aU, "Unit")) | |
765 | - | then | |
634 | + | then df.senderPublicKey | |
766 | 635 | else throw("Match error") | |
767 | 636 | } | |
768 | - | sigVerify( | |
637 | + | sigVerify(df.bodyBytes, df.proofs[0], dh) | |
769 | 638 | } | |
770 | 639 |
github/deemru/w8io/c3f4982 143.58 ms ◑