tx · DUCw5Wmd24KLRNN3AM4egAPQoZWog4iGYZk7UvSUYAPw

3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz:  -0.02200000 Waves

2023.01.11 17:13 [2400400] smart account 3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz > SELF 0.00000000 Waves

{ "type": 13, "id": "DUCw5Wmd24KLRNN3AM4egAPQoZWog4iGYZk7UvSUYAPw", "fee": 2200000, "feeAssetId": null, "timestamp": 1673446430627, "version": 1, "sender": "3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz", "senderPublicKey": "D28XoueZWsMfm8Y5pa6C5ZFuYoWgre2Wm8tzJANJgMnq", "proofs": [ "3UcSdLdu7f1s1RC3osQywDx5pX4Sjm1yTyJtYfA7BLdGRjtk2nyiqzU9K4RdnWYEKe84eD22NXUE2GADUWcZtkVG" ], "script": "base64:BgKrHwgCEgMKAQgSAwoBCBIDCgEIEgASABIECgIIARIDCgEIEgQKAggIEgYKBAEYCBgSBAoCGAgSBAoCCAgSBAoCCAgSAwoBCBIECgIICCIGU0NBTEU4IgVNVUxUOCIHU0NBTEUxOCIGTVVMVDE4IgNTRVAiDlBPT0xXRUlHSFRNVUxUIgp6ZXJvQmlnSW50IglvbmVCaWdJbnQiB3dyYXBFcnIiA21zZyIIdGhyb3dFcnIiCWFzQW55TGlzdCIDdmFsIgckbWF0Y2gwIgp2YWxBbnlMeXN0IgVhc0ludCIGdmFsSW50Ighhc1N0cmluZyIGdmFsU3RyIgxhc0J5dGVWZWN0b3IiBnZhbEJpbiIPZ2V0U3RyaW5nT3JGYWlsIgdhZGRyZXNzIgNrZXkiGGdldFN0cmluZ0J5QWRkcmVzc09yRmFpbCIMZ2V0SW50T3JaZXJvIg9nZXRJbnRPckRlZmF1bHQiCmRlZmF1bHRWYWwiDGdldEludE9yRmFpbCIZZ2V0QmlnSW50RnJvbVN0cmluZ09yWmVybyIcZ2V0QmlnSW50RnJvbVN0cmluZ09yRGVmYXVsdCIBcyIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiB2Zyb21YMTgiD3Jlc3VsdFNjYWxlTXVsdCIRa2V5RmFjdG9yeUFkZHJlc3MiGWtleVZvdGluZ0VtaXNzaW9uQ29udHJhY3QiGElkeEZhY3RvcnlDZmdTdGFraW5nRGFwcCIZSWR4RmFjdG9yeUNmZ0Jvb3N0aW5nRGFwcCIUSWR4RmFjdG9yeUNmZ0lkb0RhcHAiFUlkeEZhY3RvcnlDZmdUZWFtRGFwcCIZSWR4RmFjdG9yeUNmZ0VtaXNzaW9uRGFwcCIVSWR4RmFjdG9yeUNmZ1Jlc3REYXBwIhlJZHhGYWN0b3J5Q2ZnU2xpcHBhZ2VEYXBwIg1rZXlGYWN0b3J5Q2ZnIhNrZXlNYW5hZ2VyUHVibGljS2V5IhprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleSIWa2V5U3RhYmxlUG9vbEFkZG9uQWRkciIMa2V5QWRkb25BZGRyIhprZXlGYWN0b3J5THAyQXNzZXRzTWFwcGluZyIKbHBBc3NldFN0ciIQa2V5RmFjdG9yeUxwTGlzdCIma2V5RmFjdG9yeUxwQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MiFGtleUZhY3RvcnlQb29sV2VpZ2h0Ig9jb250cmFjdEFkZHJlc3MiCnJlYWRMcExpc3QiB2ZhY3RvcnkiFHJlYWRGYWN0b3J5Q2ZnT3JGYWlsIhhnZXRCb29zdGluZ0FkZHJlc3NPckZhaWwiCmZhY3RvcnlDZmciGGdldEVtaXNzaW9uQWRkcmVzc09yRmFpbCIXZ2V0U3Rha2luZ0FkZHJlc3NPckZhaWwiHmtleUVtaXNzaW9uUmF0ZVBlckJsb2NrQ3VycmVudCIha2V5RW1pc3Npb25SYXRlUGVyQmxvY2tNYXhDdXJyZW50IhVrZXlFbWlzc2lvblN0YXJ0QmxvY2siG2tleUVtaXNzaW9uRHVyYXRpb25JbkJsb2NrcyITa2V5RW1pc3Npb25FbmRCbG9jayIPa2V5U3Rha2VkQnlVc2VyIg51c2VyQWRkcmVzc1N0ciIMbHBBc3NldElkU3RyIg5rZXlTdGFrZWRUb3RhbCIQa2V5Q2xhaW1lZEJ5VXNlciIZa2V5Q2xhaW1lZEJ5VXNlck1pblJld2FyZCIba2V5Q2xhaW1lZEJ5VXNlckJvb3N0UmV3YXJkIg9rZXlDbGFpbWVkVG90YWwiCnJlYWRTdGFrZWQiFWtleUxhc3RUb3RhbExwQmFsYW5jZSIJbHBBc3NldElkIhRrZXlMYXN0VXNlckxwQmFsYW5jZSILdXNlckFkZHJlc3MiGWtleVRvdGFsTHBCYWxhbmNlSW50ZWdyYWwiGGtleVVzZXJMcEJhbGFuY2VJbnRlZ3JhbCIma2V5VG90YWxMcEJhbGFuY2VJbnRlZ3JhbExhc3RVcGRIZWlnaHQiJWtleVVzZXJMcEJhbGFuY2VJbnRlZ3JhbExhc3RVcGRIZWlnaHQiEmtleVd4UGVyTHBJbnRlZ3JhbCIfa2V5V3hQZXJMcEludGVncmFsTGFzdFVwZEhlaWdodCIQa2V5V3hUb0NsYWltVXNlciIja2V5V3hQZXJMcEludGVncmFsVXNlckxhc3RVcGRIZWlnaHQiCmtleVd4UGVyTHAiDWtleVd4UGVyTHBYMTgiGmtleVd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0IhlrZXlPcGVyYXRpb25IaXN0b3J5UmVjb3JkIgR0eXBlIgZ0eElkNTgiE2Zvcm1hdEhpc3RvcnlSZWNvcmQiBmFtb3VudCIVT3BlcmF0aW9uSGlzdG9yeUVudHJ5IgR0eElkIg5mYWN0b3J5QWRkcmVzcyIPZmFjdG9yeUNvbnRyYWN0IhBlbWlzc2lvbkNvbnRyYWN0IhBib29zdGluZ0NvbnRyYWN0IhZscFN0YWtpbmdQb29sc0NvbnRyYWN0IgtrZXlOZXh0VXNlciIQZ2V0VXNlcnNMaXN0TmFtZSILa2V5TGlzdEhlYWQiCGxpc3ROYW1lIgtrZXlMaXN0U2l6ZSILa2V5TGlzdFByZXYiAmlkIgtrZXlMaXN0TmV4dCIMY29udGFpbnNOb2RlIgpoZWFkT3JVbml0IgpwcmV2T3JVbml0IgpuZXh0T3JVbml0IhFpbnNlcnROb2RlQWN0aW9ucyIIbGlzdFNpemUiCWNoZWNrTm9kZSIRZGVsZXRlTm9kZUFjdGlvbnMiG2NhbGNXeFBlckxwSW50ZWdyYWxVc2VyTGFzdCIMc3Rha2VkQnlVc2VyIiZ3eFBlckxwSW50ZWdyYWxVc2VyTGFzdFVwZEhlaWdodE9yWmVybyISd3hQZXJMcEludGVncmFsTmV3Ihp3eFBlckxwSW50ZWdyYWxVc2VyTGFzdEtFWSIUcmVmcmVzaFBvb2xJTlRFR1JBTFMiDnBvb2xBZGRyZXNzU3RyIg1scERlbHRhQW1vdW50Ig5zdGFrZWRUb3RhbEtFWSILc3Rha2VkVG90YWwiEm5vblplcm9TdGFrZWRUb3RhbCIKcG9vbFdlaWdodCISZW1pc3Npb25TdGFydEJsb2NrIgVNVUxUMyIUd3hFbWlzc2lvblBlckJsb2NrWDMiGHBvb2xXeEVtaXNzaW9uUGVyQmxvY2tYMyISd3hQZXJMcEludGVncmFsS0VZIh93eFBlckxwSW50ZWdyYWxMYXN0VXBkSGVpZ2h0S0VZIgp3eFBlckxwS0VZIhx3eFBlckxwSW50ZWdyYWxMYXN0VXBkSGVpZ2h0Ig93eFBlckxwSW50ZWdyYWwiD3d4UGVyTHBPclplcm9YMyICZGgiCXd4UGVyTHBYMyIOc3Rha2VkVG90YWxOZXciFW5vblplcm9TdGFrZWRUb3RhbE5ldyIMd3hQZXJMcFgzTmV3Ih93eFBlckxwSW50ZWdyYWxMYXN0VXBkSGVpZ2h0TmV3IgVkZWJ1ZyIQcmVmcmVzaElOVEVHUkFMUyINJHQwMTQ3NTAxNDg3MiIRcG9vbEludGVncmFsU1RBVEUiCXBvb2xERUJVRyIPc3Rha2VkQnlVc2VyS0VZIhB3eFRvQ2xhaW1Vc2VyS0VZIiN3eFBlckxwSW50ZWdyYWxVc2VyTGFzdFVwZEhlaWdodEtFWSINd3hUb0NsYWltVXNlciIXd3hQZXJMcEludGVncmFsVXNlckxhc3QiBk1VTFQxMSIQd3hUb0NsYWltVXNlck5ldyIad3hQZXJMcEludGVncmFsVXNlckxhc3ROZXciI3d4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0VXBkSGVpZ2h0TmV3IhZtYW5hZ2VyUHVibGljS2V5T3JVbml0Ih1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdCIVcGVybWlzc2lvbkRlbmllZEVycm9yIghtdXN0VGhpcyIBaSILbXVzdE1hbmFnZXIiAnBrIhFmYWN0b3J5QWRkcmVzc1N0ciILY2hlY2tDYWxsZXIiFnZvdGluZ0VtaXNzaW9uQ29udHJhY3QiBWNoZWtzIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSIVY2hlY2tNYW5hZ2VyUHVibGljS2V5IgJwbSIFaGFzUE0iB2NoZWNrUE0iA3BtdCIJY2FsbGVyU3RyIg0kdDAxOTMwODE5NDI1Ig1pbnRlZ3JhbFNUQVRFIgtsaXN0QWN0aW9ucyIJcG9vbEFkZG9uIg1jbGFpbWVkQnlVc2VyIgtwb29sQWRkcmVzcyIQYXZhaWxhYmxlVG9DbGFpbSIBciIGcmVzdWx0IhBjbGFpbWVkQnlVc2VyS0VZIg9jbGFpbWVkVG90YWxLRVkiGWNsYWltZWRCeVVzZXJNaW5SZXdhcmRLRVkiG2NsYWltZWRCeVVzZXJCb29zdFJld2FyZEtFWSIWY2xhaW1lZEJ5VXNlck1pblJld2FyZCIYY2xhaW1lZEJ5VXNlckJvb3N0UmV3YXJkIgxjbGFpbWVkVG90YWwiDSR0MDIzMzE3MjM0MjkiEnd4QW1vdW50Qm9vc3RUb3RhbCINbWluUmV3YXJkUGFydCIPYm9vc3RSZXdhcmRQYXJ0Igt0b3RhbFJld2FyZCIJd3hBc3NldElkIgllbWl0Qm9vc3QiEmNsYWltZWRCeVVzZXJWYWx1ZSIeY2xhaW1lZEJ5VXNlck1pblJld2FyZFBsdXNQYXJ0IitjbGFpbWVkQnlVc2VyQm9vc3RSZXdhcmRQbHVzQm9vc3RSZXdhcmRQYXJ0IiBjbGFpbWVkVG90YWxQbHVzQXZhaWxhYmxlVG9DbGFpbSILY3VycmVudEl0ZXIiCmxwQXNzZXRJZHMiBnJlc0FjYyIEaW5mbyIBQCIJdW5jbGFpbWVkIgdjbGFpbWVkIgNyZXMiA2ludiISd3hFbWlzc2lvblBlckJsb2NrIgxwYXNzZWRCbG9ja3MiDnBvb2xXeEVtaXNzaW9uIgx1c2VyV3hSZXdhcmQiDSR0MDI2OTgyMjcwOTQiDmJvb3N0SW52UmVzdWx0Igpib29zdERlYnVnIgp1c2VyT3JVbml0IgckbWF0Y2gxIgRoZWFkIg5uZXh0VXNlck9yVW5pdCIIbmV4dFVzZXIiDSR0MDI5NjAyMjk3MTIiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleWEAAWEACAABYgCAwtcvAAFjABIAAWQJALYCAQCAgJC7utat8A0AAWUCAl9fAAFmBQFiAAFnCQC2AgEAAAABaAkAtgIBAAEBAWkBAWoJALkJAgkAzAgCAg1zdGFraW5nLnJpZGU6CQDMCAIJAKUIAQUEdGhpcwkAzAgCBQFqBQNuaWwCASABAWsBAWoJAAIBCQEBaQEFAWoBAWwBAW0EAW4FAW0DCQABAgUBbgIJTGlzdFtBbnldBAFvBQFuBQFvCQACAQIbZmFpbCB0byBjYXN0IGludG8gTGlzdFtBbnldAQFwAQFtBAFuBQFtAwkAAQIFAW4CA0ludAQBcQUBbgUBcQkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEBcgEBbQQBbgUBbQMJAAECBQFuAgZTdHJpbmcEAXMFAW4FAXMJAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBAXQBAW0EAW4FAW0DCQABAgUBbgIKQnl0ZVZlY3RvcgQBdQUBbgUBdQkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEBdgIBdwF4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUBdwUBeAkArAICCQCsAgICD21hbmRhdG9yeSB0aGlzLgUBeAIPIGlzIG5vdCBkZWZpbmVkAQF5AgF3AXgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQF3BQF4CQCsAgIJAKwCAgkArAICCQCsAgICCm1hbmRhdG9yeSAJAKUIAQUBdwIBLgUBeAIPIGlzIG5vdCBkZWZpbmVkAQF6AgF3AXgJAQt2YWx1ZU9yRWxzZQIJAJoIAgUBdwUBeAAAAQFBAwF3AXgBQgkBC3ZhbHVlT3JFbHNlAgkAmggCBQF3BQF4BQFCAQFDAgF3AXgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQF3BQF4CQCsAgIJAKwCAgIPbWFuZGF0b3J5IHRoaXMuBQF4Ag8gaXMgbm90IGRlZmluZWQBAUQCAXcBeAkBBXZhbHVlAQkAqAMBCQELdmFsdWVPckVsc2UCCQCdCAIFAXcFAXgCATABAUUDAXcBeAFCBAFuCQCdCAIFAXcFAXgDCQABAgUBbgIGU3RyaW5nBAFGBQFuCQEFdmFsdWUBCQCoAwEFAUYDCQABAgUBbgIEVW5pdAUBQgkAAgECC01hdGNoIGVycm9yAQFHAgFIAUkJALwCAwkAtgIBBQFIBQFkCQC2AgEFAUkBAUoCAW0BSwkAoAMBCQC8AgMFAW0JALYCAQUBSwUBZAEBTAACHCVzJXNfX2NvbmZpZ19fZmFjdG9yeUFkZHJlc3MBAU0AAholc19fdm90aW5nRW1pc3Npb25Db250cmFjdAABTgABAAFPAAIAAVAAAwABUQAEAAFSAAUAAVMABgABVAAHAQFVAAIRJXNfX2ZhY3RvcnlDb25maWcBAVYAAhQlc19fbWFuYWdlclB1YmxpY0tleQEBVwACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEBWAACFyVzX19zdGFibGVQb29sQWRkb25BZGRyAQFZAAINJXNfX2FkZG9uQWRkcgEBWgECYWEJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUCYWEJAMwIAgIebWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0BQNuaWwFAWUBAmFiAAIQJXNfX2xwVG9rZW5zTGlzdAECYWMBAmFhCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAmFhCQDMCAICHm1hcHBpbmdzX19scEFzc2V0MlBvb2xDb250cmFjdAUDbmlsBQFlAQJhZAECYWUJALkJAgkAzAgCAgQlcyVzCQDMCAICCnBvb2xXZWlnaHQJAMwIAgUCYWUFA25pbAUBZQECYWYBAmFnCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUCYWcJAQJhYgACAAUBZQECYWgBAmFnCQC1CQIJAQF5AgUCYWcJAQFVAAUBZQECYWkBAmFqCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmFqBQFPAQJhawECYWoJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYWoFAVIBAmFsAQJhagkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJhagUBTgECYW0AAhslcyVzX19yYXRlUGVyQmxvY2tfX2N1cnJlbnQBAmFuAAIeJXMlc19fcmF0ZVBlckJsb2NrTWF4X19jdXJyZW50AQJhbwACGiVzJXNfX2VtaXNzaW9uX19zdGFydEJsb2NrAQJhcAACGCVzJXNfX2VtaXNzaW9uX19kdXJhdGlvbgECYXEAAhglcyVzX19lbWlzc2lvbl9fZW5kQmxvY2sBAmFyAgJhcwJhdAkAuQkCCQDMCAICDiVzJXMlc19fc3Rha2VkCQDMCAIFAmFzCQDMCAIFAmF0BQNuaWwFAWUBAmF1AQJhdAkArAICAhclcyVzJXNfX3N0YWtlZF9fdG90YWxfXwUCYXQBAmF2AgJhdAJhcwkAuQkCCQDMCAICDyVzJXMlc19fY2xhaW1lZAkAzAgCBQJhcwkAzAgCBQJhdAUDbmlsBQFlAQJhdwICYXQCYXMJALkJAgkAzAgCAhglcyVzJXNfX2NsYWltZWRNaW5SZXdhcmQJAMwIAgUCYXMJAMwIAgUCYXQFA25pbAUBZQECYXgCAmF0AmFzCQC5CQIJAMwIAgIaJXMlcyVzX19jbGFpbWVkQm9vc3RSZXdhcmQJAMwIAgUCYXMJAMwIAgUCYXQFA25pbAUBZQECYXkBAmF0CQC5CQIJAMwIAgIWJXMlcyVzX19jbGFpbWVkX190b3RhbAkAzAgCBQJhdAUDbmlsBQFlAQJhegEBeAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQF4AAABAmFBAQJhQgkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQJhQgkAzAgCAgV0b3RhbAkAzAgCAgNiYWwFA25pbAUBZQECYUMCAmFCAmFECQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAmFCCQDMCAIFAmFECQDMCAICA2JhbAUDbmlsBQFlAQJhRQECYUIJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUCYUIJAMwIAgIFdG90YWwJAMwIAgIGYmFsSU5UBQNuaWwFAWUBAmFGAgJhQgJhRAkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQJhQgkAzAgCBQJhRAkAzAgCAgZiYWxJTlQFA25pbAUBZQECYUcBAmFCCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAmFCCQDMCAICBXRvdGFsCQDMCAICB2xhc3RVcGQFA25pbAUBZQECYUgCAmFCAmFECQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAmFCCQDMCAIFAmFECQDMCAICB2xhc3RVcGQFA25pbAUBZQECYUkBAmFCCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgUCYUIJAMwIAgIGY29tbW9uCQDMCAICBWxwSW50BQNuaWwFAWUBAmFKAQJhQgkAuQkCCQDMCAICCCVzJXMlcyVzCQDMCAIFAmFCCQDMCAICBmNvbW1vbgkAzAgCAgZscEludEgFA25pbAUBZQECYUsCAmFCAmFECQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgUCYUIJAMwIAgUCYUQJAMwIAgIFbHBJbnQFA25pbAUBZQECYUwCAmFCAmFECQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgUCYUIJAMwIAgUCYUQJAMwIAgIGbHBJbnRIBQNuaWwFAWUBAmFNAQJhQgkAuQkCCQDMCAICAiVzCQDMCAIFAmFCCQDMCAICB3d4UGVyTHAFA25pbAUBZQECYU4BAmFCCQC5CQIJAMwIAgICJXMJAMwIAgUCYUIJAMwIAgIKd3hQZXJMcFgxOAUDbmlsBQFlAQJhTwICYUICYUQJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCBQJhQgkAzAgCBQJhRAkAzAgCAgV1SW50TAUDbmlsBQFlAQJhUAMCYVECYUQCYVIJALkJAgkAzAgCAhElcyVzJXMlc19faGlzdG9yeQkAzAgCBQJhUQkAzAgCBQJhRAkAzAgCBQJhUgUDbmlsBQFlAQJhUwQCYUQCYUICYVECYVQJALkJAgkAzAgCAgwlcyVzJXMlZCVkJWQJAMwIAgUCYUQJAMwIAgUCYUIJAMwIAgUCYVEJAMwIAgkApAMBBQZoZWlnaHQJAMwIAgkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQCkAwEFAmFUBQNuaWwFAWUBAmFVBQJhUQJhRAJhQgJhVAJhVgkBC1N0cmluZ0VudHJ5AgkBAmFQAwUCYVEFAmFECQDYBAEFAmFWCQECYVMEBQJhRAUCYUIFAmFRBQJhVAACYVcJAQF2AgUEdGhpcwkBAUwAAAJhWAkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYVcAAmFqCQECYWgBBQJhWAACYVkJAQJhawEFAmFqAAJhWgkBAmFpAQUCYWoAAmJhCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJALkJAgkAzAgCAgIlcwkAzAgCAhZscFN0YWtpbmdQb29sc0NvbnRyYWN0BQNuaWwFAWUJAQFpAQIubHBfc3Rha2luZ19wb29scyBjb250cmFjdCBhZGRyZXNzIGlzIHVuZGVmaW5lZAkBAWkBAilpbnZhbGlkIGxwX3N0YWtpbmdfcG9vbHMgY29udHJhY3QgYWRkcmVzcwECYmIBAmFCCQC5CQIJAMwIAgIEJXMlcwkAzAgCBQJhQgkAzAgCAghuZXh0VXNlcgUDbmlsBQFlAQJiYwECYUIJALkJAgkAzAgCAgV1c2VycwkAzAgCBQJhQgUDbmlsBQFlAQJiZAECYmUJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUCYmUJAMwIAgIEaGVhZAUDbmlsBQFlAQJiZgECYmUJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUCYmUJAMwIAgIEc2l6ZQUDbmlsBQFlAQJiZwICYmUCYmgJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCBQJiZQkAzAgCBQJiaAkAzAgCAgRwcmV2BQNuaWwFAWUBAmJpAgJiZQJiaAkAuQkCCQDMCAICCCVzJXMlcyVzCQDMCAIFAmJlCQDMCAIFAmJoCQDMCAICBG5leHQFA25pbAUBZQECYmoCAmJlAmJoBAJiawkAnQgCBQR0aGlzCQECYmQBBQJiZQQCYmwJAJ0IAgUEdGhpcwkBAmJnAgUCYmUFAmJoBAJibQkAnQgCBQR0aGlzCQECYmkCBQJiZQUCYmgDAwkAAAIFAmJoCQELdmFsdWVPckVsc2UCBQJiawIABgkBAiE9AgUCYmwFBHVuaXQGCQECIT0CBQJibQUEdW5pdAECYm4CAmJlAmJoBAJiawkAnQgCBQR0aGlzCQECYmQBBQJiZQQCYm8JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmJmAQUCYmUAAAQCYnADCQEBIQEJAQJiagIFAmJlBQJiaAYJAAIBAgtOb2RlIGV4aXN0cwMJAAACBQJicAUCYnAJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYmYBBQJiZQkAZAIFAmJvAAEFA25pbAMJAQIhPQIFAmJrBQR1bml0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJiaQIFAmJlBQJiaAkBBXZhbHVlAQUCYmsJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmJnAgUCYmUJAQV2YWx1ZQEFAmJrBQJiaAUDbmlsBQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmJkAQUCYmUFAmJoBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmJxAgJiZQJiaAQCYmsJAJ0IAgUEdGhpcwkBAmJkAQUCYmUEAmJvCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJiZgEFAmJlAAAEAmJsCQCdCAIFBHRoaXMJAQJiZwIFAmJlBQJiaAQCYm0JAJ0IAgUEdGhpcwkBAmJpAgUCYmUFAmJoCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJiZgEFAmJlCQBlAgUCYm8AAQUDbmlsAwMJAQIhPQIFAmJsBQR1bml0CQECIT0CBQJibQUEdW5pdAcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmJpAgUCYmUJAQV2YWx1ZQEFAmJsCQEFdmFsdWUBBQJibQkAzAgCCQELU3RyaW5nRW50cnkCCQECYmcCBQJiZQkBBXZhbHVlAQUCYm0JAQV2YWx1ZQEFAmJsCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJiZwIFAmJlBQJiaAkAzAgCCQELRGVsZXRlRW50cnkBCQECYmkCBQJiZQUCYmgFA25pbAMJAQIhPQIFAmJtBQR1bml0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJiZAEFAmJlCQEFdmFsdWUBBQJibQkAzAgCCQELRGVsZXRlRW50cnkBCQECYmkCBQJiZQUCYmgJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmJnAgUCYmUJAQV2YWx1ZQEFAmJtBQNuaWwDCQECIT0CBQJibAUEdW5pdAkAzAgCCQELRGVsZXRlRW50cnkBCQECYmcCBQJiZQUCYmgJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmJpAgUCYmUJAQV2YWx1ZQEFAmJsBQNuaWwDCQAAAgUCYmgJAQt2YWx1ZU9yRWxzZQIFAmJrAgAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmJkAQUCYmUFA25pbAkAAgEJAKwCAgkArAICCQCsAgICDmludmFsaWQgbm9kZTogBQJiZQIBLgUCYmgBAmJyBAJicwJidAJidQJidgMDCQAAAgUCYnQFAWcJAL8CAgUCYnMFAWcHBQFnAwkAAAIFAmJzBQFnBQJidQMDCQC/AgIFAmJ0BQFnCQC/AgIFAmJzBQFnBwkBBXZhbHVlAQkAqAMBCQEBdgIFBHRoaXMFAmJ2CQACAQItY2FsY1d4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0OiB1bmV4cGVjdGVkIHN0YXRlAQJidwMCYXQCYngCYnkEAmJ6CQECYXUBBQJhdAQCYkEJALYCAQkBAmF6AQUCYnoEAmJCAwkAAAIFAmJBBQFnBQFoBQJiQQQCYkMJARFAZXh0ck5hdGl2ZSgxMDUwKQIFAmFYCQECYWQBBQJieAQCYkQJAQFDAgUCYVkJAQJhbwAEAmJFAOgHBAJiRgkAaAIJAQFDAgUCYVkJAQJhbQAFAmJFBAJiRwkAawMFAmJGBQJiQwkAaAIFAWYAAwQCYkgJAQJhSQEFAmF0BAJiSQkBAmFKAQUCYXQEAmJKCQECYU0BBQJhdAQCYksJAQFBAwUEdGhpcwUCYkkFAmJEBAJiTAkBAUQCBQR0aGlzBQJiSAQCYk0AAAQCYk4JAJYDAQkAzAgCCQBlAgUGaGVpZ2h0BQJiSwkAzAgCAAAFA25pbAQCYk8DCQECIT0CBQJiTQAACQC2AgEFAmJNCQC8AgMJALYCAQUCYkcJALYCAQUBYgUCYkIEAmJQCQC3AgIFAmJBCQC2AgEFAmJ5BAJiUQMJAAACBQJiUAUBZwUBaAUCYlAEAmJ1CQC3AgIFAmJMCQC5AgIFAmJPCQC2AgEFAmJOBAJiUgkAugICCQC2AgEFAmJHBQJiUQQCYlMFBmhlaWdodAQCYlQJALkJAgkAzAgCCQCmAwEFAmJ1CQDMCAIJAKQDAQUCYk4JAMwIAgkApgMBBQJiTwkAzAgCCQCmAwEFAmJBCQDMCAIJAKQDAQUCYkcJAMwIAgkApAMBBQJiRgkAzAgCCQCkAwEFAmJDBQNuaWwCAjo6CQCVCgMFAmJ1CQDMCAIJAQtTdHJpbmdFbnRyeQIFAmJICQCmAwEFAmJ1CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJiSQUCYlMJAMwIAgkBC1N0cmluZ0VudHJ5AgUCYkoJAKYDAQUCYlIFA25pbAUCYlQBAmJVBAJhdAJhcwJieAJieQQCYlYJAQJidwMFAmF0BQJieAUCYnkEAmJ1CAUCYlYCXzEEAmJXCAUCYlYCXzIEAmJYCAUCYlYCXzMEAmJFAOgHBAJiWQkBAmFyAgUCYXMFAmF0BAJicwkBAmF6AQUCYlkEAmJaCQECYUsCBQJhdAUCYXMEAmNhCQECYUwCBQJhdAUCYXMEAmJ2CQECYU8CBQJhdAUCYXMEAmNiCQEBRAIFBHRoaXMFAmJaBAJidAkBAXoCBQR0aGlzBQJjYQQCY2MJAQJicgQJALYCAQUCYnMJALYCAQUCYnQFAmJ1BQJidgQCY2QJAGgCBQFiBQJiRQQCY2UJAJgDAQkAzAgCCQC3AgIFAmNiCQC8AgMJALgCAgUCYnUFAmNjCQC2AgEFAmJzCQC2AgEFAmNkCQDMCAIFAWcFA25pbAQCY2YFAmJ1BAJjZwUGaGVpZ2h0BAJiVAkAuQkCCQDMCAIJAKYDAQUCY2IJAMwIAgkApgMBBQJjYwkAzAgCCQCkAwEFAmJzCQDMCAIFAmJYCQDMCAIJAKQDAQUGaGVpZ2h0BQNuaWwCAjo6CQCVCgMFAmNlCQDOCAIFAmJXCQDMCAIJAQtTdHJpbmdFbnRyeQIFAmJaCQCmAwEFAmNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjYQUCY2cJAMwIAgkBC1N0cmluZ0VudHJ5AgUCYnYJAKYDAQUCY2YFA25pbAUCYlQBAmNoAAQBbgkAoggBCQEBVgADCQABAgUBbgIGU3RyaW5nBAFGBQFuCQDZBAEFAUYDCQABAgUBbgIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJjaQAEAW4JAKIIAQkBAVcAAwkAAQIFAW4CBlN0cmluZwQBRgUBbgkA2QQBBQFGAwkAAQIFAW4CBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgACY2oJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAECY2sBAmNsAwkAAAIIBQJjbAZjYWxsZXIFBHRoaXMGBQJjagECY20BAmNsBAFuCQECY2gAAwkAAQIFAW4CCkJ5dGVWZWN0b3IEAmNuBQFuAwkAAAIIBQJjbA9jYWxsZXJQdWJsaWNLZXkFAmNuBgUCY2oDCQABAgUBbgIEVW5pdAMJAAACCAUCY2wGY2FsbGVyBQR0aGlzBgUCY2oJAAIBAgtNYXRjaCBlcnJvcg4CY2wBC2NvbnN0cnVjdG9yAQJjbwQCY3AJAQJjbQEFAmNsAwkAAAIFAmNwBQJjcAkAzAgCCQELU3RyaW5nRW50cnkCCQEBTAAFAmNvBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY2wBDWNvbnN0cnVjdG9yVjIBAmNxBAJjcgkAzAgCCQECY20BBQJjbAkAzAgCAwkBAiE9AgkApggBBQJjcQUEdW5pdAYCKGludmFsaWQgdm90aW5nIGVtaXNzaW9uIGNvbnRyYWN0IGFkZHJlc3MFA25pbAMJAAACBQJjcgUCY3IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAU0ABQJjcQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNsAQpzZXRNYW5hZ2VyAQJjcwQCY3AJAQJjbQEFAmNsAwkAAAIFAmNwBQJjcAQCY3QJANkEAQUCY3MDCQAAAgUCY3QFAmN0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFXAAUCY3MFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjbAEOY29uZmlybU1hbmFnZXIABAJjdQkBAmNpAAQCY3YDCQEJaXNEZWZpbmVkAQUCY3UGCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmN2BQJjdgQCY3cDCQAAAggFAmNsD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCY3UGCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmN3BQJjdwkAzAgCCQELU3RyaW5nRW50cnkCCQEBVgAJANgEAQkBBXZhbHVlAQUCY3UJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVcABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY2wBBXN0YWtlAAMJAQIhPQIJAJADAQgFAmNsCHBheW1lbnRzAAEJAAIBAjRpbnZhbGlkIHBheW1lbnQgLSBleGFjdCBvbmUgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBAJjeAkAkQMCCAUCY2wIcGF5bWVudHMAAAQCYUIJAQV2YWx1ZQEIBQJjeAdhc3NldElkBAJhdAkA2AQBBQJhQgQCYVQIBQJjeAZhbW91bnQEAmJ4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYVgJAQFaAQUCYXQJAKwCAgIVdW5zdXBwb3J0ZWQgbHAgYXNzZXQgBQJhdAQCY3kJAKUIAQgFAmNsBmNhbGxlcgQCYXMDCQAAAgUCY3kFAmJ4CQClCAEIBQJjbAxvcmlnaW5DYWxsZXIFAmN5BAJiWQkBAmFyAgUCYXMFAmF0BAJiegkBAmF1AQUCYXQEAmJzCQECYXoBBQJiWQQCYkEJAQJhegEFAmJ6BAJjegkBAmJVBAUCYXQFAmFzBQJieAUCYVQEAmNlCAUCY3oCXzEEAmNBCAUCY3oCXzIEAmJUCAUCY3oCXzMEAmJlCQECYmMBBQJhdAQCY0IDCQECYmoCBQJiZQUCYXMFA25pbAkBAmJuAgUCYmUFAmFzCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYlkJAGQCBQJicwUCYVQJAMwIAgkBDEludGVnZXJFbnRyeQIFAmJ6CQBkAgUCYkEFAmFUCQDMCAIJAQJhVQUCBXN0YWtlBQJhcwUCYXQFAmFUCAUCY2wNdHJhbnNhY3Rpb25JZAUDbmlsBQJjQQUCY0ICY2wBB3Vuc3Rha2UCAmF0AmFUBAJhQgkA2QQBBQJhdAQCYngJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJhWAkBAVoBBQJhdAkArAICAhV1bnN1cHBvcnRlZCBscCBhc3NldCAFAmF0BAJjQwkBC3ZhbHVlT3JFbHNlAgkAnQgCCQERQGV4dHJOYXRpdmUoMTA2MikBBQJieAkBAVkABQJieAQCY3kJAKUIAQgFAmNsBmNhbGxlcgQCYXMDAwMJAAACBQJjeQUCYngJAQIhPQIIBQJjbAxvcmlnaW5DYWxsZXIFAmJhBwYJAAACBQJjeQUCY0MJAKUIAQgFAmNsDG9yaWdpbkNhbGxlcgUCY3kEAmJZCQECYXICBQJhcwUCYXQEAmJ6CQECYXUBBQJhdAQCYnMJAQJhegEFAmJZBAJiQQkBAmF6AQUCYnoEAmNBCAkBAmJVBAUCYXQFAmFzBQJieAkBAS0BBQJhVAJfMgQCYmUJAQJiYwEFAmF0BAJjQgMDCQECYmoCBQJiZQUCYXMJAAACBQJhVAUCYnMHCQECYnECBQJiZQUCYXMFA25pbAQCY0QJAQFEAgUEdGhpcwkBAmF2AgUCYXQFAmFzBAJjRQkBAXkCBQJhWAkBAmFjAQUCYXQEAmNlCAkBAmJVBAUCYXQFAmFzBQJjRQAAAl8xBAJjRgkAuAICBQJjZQUCY0QEAmNHAwkAvwICBQJjRgUBZwkA/AcEBQR0aGlzAg9jbGFpbVd4SU5URVJOQUwJAMwIAgUCYXQJAMwIAgUCYXMFA25pbAUDbmlsBQR1bml0AwkAAAIFAmNHBQJjRwMJAGYCBQJhVAUCYnMJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICDnBhc3NlZCBhbW91bnQ9CQCkAwEFAmFUAhsgaXMgZ3JlYXRlciB0aGFuIGF2YWlsYWJsZT0JAKQDAQUCYnMCDC4gbHBBc3NldElkPQUCYXQCEi4gc3Rha2VkQnlVc2VyS0VZPQUCYlkJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJiWQkAZQIFAmJzBQJhVAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYnoJAGUCBQJiQQUCYVQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmNsBmNhbGxlcgUCYVQFAmFCCQDMCAIJAQJhVQUCB3Vuc3Rha2UFAmFzBQJhdAUCYVQIBQJjbA10cmFuc2FjdGlvbklkBQNuaWwFAmNBBQJjQgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjbAEHY2xhaW1XeAECYXQEAmFzCQClCAEIBQJjbAZjYWxsZXIEAmNICQD8BwQFBHRoaXMCD2NsYWltV3hJTlRFUk5BTAkAzAgCBQJhdAkAzAgCBQJhcwUDbmlsBQNuaWwJAJQKAgUDbmlsBQJjSAJjbAEPY2xhaW1XeElOVEVSTkFMAgJhdAJhcwQCY3AJAQJjawEFAmNsAwkAAAIFAmNwBQJjcAQCYUQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQJhcwIlY2xhaW1XeElOVEVSTkFMOiBpbnZhbGlkIHVzZXIgYWRkcmVzcwQCYngJAQF5AgUCYVgJAQJhYwEFAmF0BAJjSQkBAmF2AgUCYXQFAmFzBAJjSgkBAmF5AQUCYXQEAmNLCQECYXcCBQJhdAUCYXMEAmNMCQECYXgCBQJhdAUCYXMEAmNECQEBRAIFBHRoaXMFAmNJBAJjTQkBAUQCBQR0aGlzBQJjSwQCY04JAQFEAgUEdGhpcwUCY0wEAmNPCQEBRAIFBHRoaXMFAmNKBAJjUAkBAmJVBAUCYXQFAmFzBQJieAAABAJjZQgFAmNQAl8xBAJjQQgFAmNQAl8yBAJiVAgFAmNQAl8zBAJjRgkAmAMBCQDMCAIJALgCAgUCY2UFAmNECQDMCAIFAWcFA25pbAMJAMACAgUBZwUCY0YJAAIBAhBub3RoaW5nIHRvIGNsYWltBAJjUQkAlgMBCQDMCAIJAQFwAQkAkQMCCQEBbAEJAPwHBAUCYVoCDGNsYWltV3hCb29zdAkAzAgCBQJhdAkAzAgCBQJhcwUDbmlsBQNuaWwAAAkAzAgCAAAFA25pbAQCY1IFAmNGBAJjUwkAmQMBCQDMCAIJALkCAgUCY1IJALYCAQACCQDMCAIJALYCAQUCY1EFA25pbAQCY1QJALcCAgUCY1IFAmNTBAJjVQkBAXQBCQCRAwIJAQFsAQkA/AcEBQJhWQIEZW1pdAkAzAgCCQCgAwEFAmNSBQNuaWwFA25pbAAABAJjVgkBAWwBCQD8BwQFAmFZAgRlbWl0CQDMCAIJAKADAQUCY1MFA25pbAUDbmlsAwkAAAIFAmNWBQJjVgQCY1cJALcCAgUCY0QFAmNGBAJjWAkAtwICBQJjTQUCY1IEAmNZCQC3AgIFAmNNBQJjUgQCY1oJALcCAgUCY00FAmNSCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUCY0kJAKYDAQUCY1cJAMwIAgkBC1N0cmluZ0VudHJ5AgUCY0sJAKYDAQUCY1gJAMwIAgkBC1N0cmluZ0VudHJ5AgUCY0wJAKYDAQUCY1kJAMwIAgkBC1N0cmluZ0VudHJ5AgUCY0oJAKYDAQUCY1oJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUQJAKADAQUCY1IFAmNVCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFECQCgAwEFAmNTBQJjVQkAzAgCCQECYVUFAgVjbGFpbQUCYXMFAmF0CQCgAwEFAmNGCAUCY2wNdHJhbnNhY3Rpb25JZAUDbmlsCQCgAwEFAmNUCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNsARtjbGFpbVd4QnVsa0ludGVybmFsUkVBRE9OTFkEAmRhAmRiAmFzAmRjAwkAAAIFAmRhCQCQAwEFAmRiCQCUCgIFA25pbAUCZGMEAmFCCQCRAwIFAmRiBQJkYQQCZGQJALUJAgoAAmRlCQD8BwQFBHRoaXMCD2NsYWltV3hSRUFET05MWQkAzAgCBQJhQgkAzAgCBQJhcwUDbmlsBQNuaWwDCQABAgUCZGUCBlN0cmluZwUCZGUJAAIBCQCsAgIJAAMBBQJkZQIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nBQFlBAJkZgkAkQMCBQJkZAADBAJkZwkAkQMCBQJkZAAEBAJkaAkAzQgCBQJkYwkAuQkCCQDMCAICBCVkJWQJAMwIAgUCZGYJAMwIAgUCZGcFA25pbAUBZQQCZGkKAAJkZQkA/AcEBQR0aGlzAhtjbGFpbVd4QnVsa0ludGVybmFsUkVBRE9OTFkJAMwIAgkAZAIFAmRhAAEJAMwIAgUCZGIJAMwIAgUCYXMJAMwIAgUCZGgFA25pbAUDbmlsAwkAAQIFAmRlAglMaXN0W0FueV0FAmRlCQACAQkArAICCQADAQUCZGUCHiBjb3VsZG4ndCBiZSBjYXN0IHRvIExpc3RbQW55XQMJAAACBQJkaQUCZGkJAJQKAgUDbmlsBQJkaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjbAETY2xhaW1XeEJ1bGtSRUFET05MWQICZGICYXMEAmRoCQD8BwQFBHRoaXMCG2NsYWltV3hCdWxrSW50ZXJuYWxSRUFET05MWQkAzAgCAAAJAMwIAgUCZGIJAMwIAgUCYXMJAMwIAgUDbmlsBQNuaWwFA25pbAkAlAoCBQNuaWwFAmRoAmNsAQ9jbGFpbVd4UkVBRE9OTFkCAmF0AmFzBAJiWQkBAmFyAgUCYXMFAmF0BAJiegkBAmF1AQUCYXQEAmNJCQECYXYCBQJhdAUCYXMEAmJzCQECYXoBBQJiWQQCYkEJAQJhegEFAmJ6BAJjRAkBAUQCBQR0aGlzBQJjSQQCYngJAQF5AgUCYVgJAQJhYwEFAmF0BAJiQwkBEUBleHRyTmF0aXZlKDEwNTApAgUCYVgJAQJhZAEFAmJ4BAJkagkBAUMCBQJhWQkBAmFtAAQCYkQJAQFDAgUCYVkJAQJhbwAEAmRrAwkAZgIFAmJEBQZoZWlnaHQAAAkAZQIFBmhlaWdodAUCYkQEAmRsCQBrAwkAaAIFAmRqBQJkawUCYkMFAWYEAmRtCQBrAwUCZGwFAmJzBQJiQQQCZG4JAQJiVQQFAmF0BQJhcwUCYngAAAQCY2UIBQJkbgJfMQQCY0EIBQJkbgJfMgQCYlQIBQJkbgJfMwQCY0YJAJgDAQkAzAgCCQC4AgIFAmNlBQJjRAkAzAgCBQFnBQNuaWwEAmRvCQEBbAEJAPwHBAUCYVoCFGNsYWltV3hCb29zdFJFQURPTkxZCQDMCAIFAmF0CQDMCAIFAmFzBQNuaWwFA25pbAQCY1EJAJYDAQkAzAgCCQEBcAEJAJEDAgUCZG8AAAkAzAgCAAAFA25pbAQCZHAJAQFyAQkAkQMCBQJkbwABBAJjUgUCY0YEAmNTCQCZAwEJAMwIAgkAuQICBQJjUgkAtgIBAAIJAMwIAgkAtgIBBQJjUQUDbmlsBAJjVAkAtwICBQJjUgUCY1MJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJXMlcyVkJWQlZCVkJXMJAMwIAgUCYXQJAMwIAgUCYXMJAMwIAgkApgMBBQJjVAkAzAgCCQCmAwEFAmNECQDMCAIJAKYDAQUCY1IJAMwIAgkApgMBBQJjUwkAzAgCAgRzb29uBQNuaWwFAWUCY2wBFHN0YWtlZEJ5VXNlclJFQURPTkxZAgJhdAJhcwQCYnMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBAmFyAgUCYXMFAmF0AAAJAJQKAgUDbmlsBQJicwJjbAESdXNlcnNMaXN0VHJhdmVyc2FsAQJhQgQCY3ADCQAAAgkA2AQBCAgFAmNsBmNhbGxlcgVieXRlcwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEBTQACAAYJAQJjbQEFAmNsAwkAAAIFAmNwBQJjcAQCYmUJAQJiYwEFAmFCBAJkcQkAoggBCQECYmIBBQJhQgQCYmsJAKIIAQkBAmJkAQUCYmUEAW4FAmRxAwkAAQIFAW4CBFVuaXQEAmRyBQJiawMJAAECBQJkcgIEVW5pdAkAlAoCBQNuaWwHAwkAAQIFAmRyAgZTdHJpbmcEAmRzBQJkcgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJiYgEFAmFCBQJkcwUDbmlsBgkAAgECC01hdGNoIGVycm9yAwkAAQIFAW4CBlN0cmluZwQCYUQFAW4EAmNECQEBRAIFBHRoaXMJAQJhdgIFAmFCBQJhRAQCY0UJAQF5AgUCYVgJAQJhYwEFAmFCBAJjZQgJAQJiVQQFAmFCBQJhRAUCY0UAAAJfMQQCY0YJALgCAgUCY2UFAmNEBAJjRwMJAL8CAgUCY0YFAWcJAPwHBAUEdGhpcwIPY2xhaW1XeElOVEVSTkFMCQDMCAIFAmFCCQDMCAIFAmFEBQNuaWwFA25pbAUEdW5pdAMJAAACBQJjRwUCY0cEAmR0CQCiCAEJAQJiaQIFAmJlBQJhRAQCZHIFAmR0AwkAAQIFAmRyAgRVbml0CQCUCgIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmJiAQUCYUIFA25pbAcDCQABAgUCZHICBlN0cmluZwQCZHUFAmRyCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmJiAQUCYUIFAmR1BQNuaWwGCQACAQILTWF0Y2ggZXJyb3IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAgtNYXRjaCBlcnJvcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjbAEOb25Nb2RpZnlXZWlnaHQCAmF0AmJ4AwkBAiE9AggFAmNsBmNhbGxlcgUCYVgJAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQEAmR2CQECYncDBQJhdAUCYngAAAQCYnUIBQJkdgJfMQQCYlcIBQJkdgJfMgQCYlgIBQJkdgJfMwUCYlcBAmR3AQJkeAAEAmR5BAFuCQECY2gAAwkAAQIFAW4CCkJ5dGVWZWN0b3IEAmNuBQFuBQJjbgMJAAECBQFuAgRVbml0CAUCZHcPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAmR3CWJvZHlCeXRlcwkAkQMCCAUCZHcGcHJvb2ZzAAAFAmR5PYBpPA==", "chainId": 84, "height": 2400400, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 58LniHVX6FCStpjmcHjGv5WQttBsKwDJvHqDL4TmVuAq Next: 3s5i5VQ7FQoQWcBz3K5KM7jB35NAPaTcYBK6WnEgSoMY Diff:
OldNewDifferences
1717
1818 let h = toBigInt(1)
1919
20-func i (j) = throw(makeString(["staking.ride:", toString(this), j], " "))
20+func i (j) = makeString(["staking.ride:", toString(this), j], " ")
2121
2222
2323 func k (j) = throw(i(j))
537537 let bx = valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at))
538538 let cC = valueOrElse(getString(addressFromStringValue(bx), Y()), bx)
539539 let cy = toString(cl.caller)
540- let cD = ba
541- if ((cD == cD))
542- then {
543- let as = if (if (if ((cy == bx))
544- then (cl.originCaller != ba)
545- else false)
546- then true
547- else (cy == cC))
548- then toString(cl.originCaller)
549- else cy
550- if ((as == as))
551- then {
552- let bY = ar(as, at)
553- let bz = au(at)
554- let bs = az(bY)
555- let bA = az(bz)
556- let cA = bU(at, as, bx, -(aT))._2
557- let be = bc(at)
558- let cB = if (if (bj(be, as))
559- then (aT == bs)
560- else false)
561- then bq(be, as)
562- else nil
563- let cE = D(this, av(at, as))
564- let cF = y(aX, ac(at))
565- let ce = bU(at, as, cF, 0)._1
566- let cG = (ce - cE)
567- let cH = if ((cG > g))
568- then invoke(this, "claimWxINTERNAL", [at, as], nil)
569- else unit
570- if ((cH == cH))
571- then if ((aT > bs))
572- then throw(((((((("passed amount=" + toString(aT)) + " is greater than available=") + toString(bs)) + ". lpAssetId=") + at) + ". stakedByUserKEY=") + bY))
573- else (([IntegerEntry(bY, (bs - aT)), IntegerEntry(bz, (bA - aT)), ScriptTransfer(cl.caller, aT, aB), aU("unstake", as, at, aT, cl.transactionId)] ++ cA) ++ cB)
574- else throw("Strict value is not equal to itself.")
575- }
576- else throw("Strict value is not equal to itself.")
577- }
540+ let as = if (if (if ((cy == bx))
541+ then (cl.originCaller != ba)
542+ else false)
543+ then true
544+ else (cy == cC))
545+ then toString(cl.originCaller)
546+ else cy
547+ let bY = ar(as, at)
548+ let bz = au(at)
549+ let bs = az(bY)
550+ let bA = az(bz)
551+ let cA = bU(at, as, bx, -(aT))._2
552+ let be = bc(at)
553+ let cB = if (if (bj(be, as))
554+ then (aT == bs)
555+ else false)
556+ then bq(be, as)
557+ else nil
558+ let cD = D(this, av(at, as))
559+ let cE = y(aX, ac(at))
560+ let ce = bU(at, as, cE, 0)._1
561+ let cF = (ce - cD)
562+ let cG = if ((cF > g))
563+ then invoke(this, "claimWxINTERNAL", [at, as], nil)
564+ else unit
565+ if ((cG == cG))
566+ then if ((aT > bs))
567+ then throw(((((((("passed amount=" + toString(aT)) + " is greater than available=") + toString(bs)) + ". lpAssetId=") + at) + ". stakedByUserKEY=") + bY))
568+ else (([IntegerEntry(bY, (bs - aT)), IntegerEntry(bz, (bA - aT)), ScriptTransfer(cl.caller, aT, aB), aU("unstake", as, at, aT, cl.transactionId)] ++ cA) ++ cB)
578569 else throw("Strict value is not equal to itself.")
579570 }
580571
583574 @Callable(cl)
584575 func claimWx (at) = {
585576 let as = toString(cl.caller)
586- let cI = invoke(this, "claimWxINTERNAL", [at, as], nil)
587- $Tuple2(nil, cI)
577+ let cH = invoke(this, "claimWxINTERNAL", [at, as], nil)
578+ $Tuple2(nil, cH)
588579 }
589580
590581
596587 then {
597588 let aD = valueOrErrorMessage(addressFromString(as), "claimWxINTERNAL: invalid user address")
598589 let bx = y(aX, ac(at))
599- let cJ = av(at, as)
600- let cK = ay(at)
601- let cL = aw(at, as)
602- let cM = ax(at, as)
603- let cE = D(this, cJ)
590+ let cI = av(at, as)
591+ let cJ = ay(at)
592+ let cK = aw(at, as)
593+ let cL = ax(at, as)
594+ let cD = D(this, cI)
595+ let cM = D(this, cK)
604596 let cN = D(this, cL)
605- let cO = D(this, cM)
606- let cP = D(this, cK)
607- let cQ = bU(at, as, bx, 0)
608- let ce = cQ._1
609- let cA = cQ._2
610- let bT = cQ._3
611- let cG = max([(ce - cE), g])
612- if ((g >= cG))
597+ let cO = D(this, cJ)
598+ let cP = bU(at, as, bx, 0)
599+ let ce = cP._1
600+ let cA = cP._2
601+ let bT = cP._3
602+ let cF = max([(ce - cD), g])
603+ if ((g >= cF))
613604 then throw("nothing to claim")
614605 else {
615- let cR = max([p(l(invoke(aZ, "claimWxBoost", [at, as], nil))[0]), 0])
616- let cS = cG
617- let cT = min([(cS * toBigInt(2)), toBigInt(cR)])
618- let cU = (cS + cT)
619- let cV = t(l(invoke(aY, "emit", [toInt(cS)], nil))[0])
620- let cW = l(invoke(aY, "emit", [toInt(cT)], nil))
621- if ((cW == cW))
606+ let cQ = max([p(l(invoke(aZ, "claimWxBoost", [at, as], nil))[0]), 0])
607+ let cR = cF
608+ let cS = min([(cR * toBigInt(2)), toBigInt(cQ)])
609+ let cT = (cR + cS)
610+ let cU = t(l(invoke(aY, "emit", [toInt(cR)], nil))[0])
611+ let cV = l(invoke(aY, "emit", [toInt(cS)], nil))
612+ if ((cV == cV))
622613 then {
623- let cX = (cE + cG)
624- let cY = (cN + cS)
625- let cZ = (cN + cS)
626- let da = (cN + cS)
627- $Tuple2([StringEntry(cJ, toString(cX)), StringEntry(cL, toString(cY)), StringEntry(cM, toString(cZ)), StringEntry(cK, toString(da)), ScriptTransfer(aD, toInt(cS), cV), ScriptTransfer(aD, toInt(cT), cV), aU("claim", as, at, toInt(cG), cl.transactionId)], toInt(cU))
614+ let cW = (cD + cF)
615+ let cX = (cM + cR)
616+ let cY = (cM + cR)
617+ let cZ = (cM + cR)
618+ $Tuple2([StringEntry(cI, toString(cW)), StringEntry(cK, toString(cX)), StringEntry(cL, toString(cY)), StringEntry(cJ, toString(cZ)), ScriptTransfer(aD, toInt(cR), cU), ScriptTransfer(aD, toInt(cS), cU), aU("claim", as, at, toInt(cF), cl.transactionId)], toInt(cT))
628619 }
629620 else throw("Strict value is not equal to itself.")
630621 }
635626
636627
637628 @Callable(cl)
638-func claimWxBulkInternalREADONLY (db,dc,as,dd) = if ((db == size(dc)))
639- then $Tuple2(nil, dd)
629+func claimWxBulkInternalREADONLY (da,db,as,dc) = if ((da == size(db)))
630+ then $Tuple2(nil, dc)
640631 else {
641- let aB = dc[db]
642- let de = split({
643- let df = invoke(this, "claimWxREADONLY", [aB, as], nil)
644- if ($isInstanceOf(df, "String"))
645- then df
646- else throw(($getType(df) + " couldn't be cast to String"))
632+ let aB = db[da]
633+ let dd = split({
634+ let de = invoke(this, "claimWxREADONLY", [aB, as], nil)
635+ if ($isInstanceOf(de, "String"))
636+ then de
637+ else throw(($getType(de) + " couldn't be cast to String"))
647638 }, e)
648- let dg = de[3]
649- let dh = de[4]
650- let di = (dd :+ makeString(["%d%d", dg, dh], e))
651- let dj = {
652- let df = invoke(this, "claimWxBulkInternalREADONLY", [(db + 1), dc, as, di], nil)
653- if ($isInstanceOf(df, "List[Any]"))
654- then df
655- else throw(($getType(df) + " couldn't be cast to List[Any]"))
639+ let df = dd[3]
640+ let dg = dd[4]
641+ let dh = (dc :+ makeString(["%d%d", df, dg], e))
642+ let di = {
643+ let de = invoke(this, "claimWxBulkInternalREADONLY", [(da + 1), db, as, dh], nil)
644+ if ($isInstanceOf(de, "List[Any]"))
645+ then de
646+ else throw(($getType(de) + " couldn't be cast to List[Any]"))
656647 }
657- if ((dj == dj))
658- then $Tuple2(nil, dj)
648+ if ((di == di))
649+ then $Tuple2(nil, di)
659650 else throw("Strict value is not equal to itself.")
660651 }
661652
662653
663654
664655 @Callable(cl)
665-func claimWxBulkREADONLY (dc,as) = {
666- let di = invoke(this, "claimWxBulkInternalREADONLY", [0, dc, as, nil], nil)
667- $Tuple2(nil, di)
656+func claimWxBulkREADONLY (db,as) = {
657+ let dh = invoke(this, "claimWxBulkInternalREADONLY", [0, db, as, nil], nil)
658+ $Tuple2(nil, dh)
668659 }
669660
670661
673664 func claimWxREADONLY (at,as) = {
674665 let bY = ar(as, at)
675666 let bz = au(at)
676- let cJ = av(at, as)
667+ let cI = av(at, as)
677668 let bs = az(bY)
678669 let bA = az(bz)
679- let cE = D(this, cJ)
670+ let cD = D(this, cI)
680671 let bx = y(aX, ac(at))
681672 let bC = getIntegerValue(aX, ad(bx))
682- let dk = C(aY, am())
673+ let dj = C(aY, am())
683674 let bD = C(aY, ao())
684- let dl = if ((bD > height))
675+ let dk = if ((bD > height))
685676 then 0
686677 else (height - bD)
687- let dm = fraction((dk * dl), bC, f)
688- let dn = fraction(dm, bs, bA)
689- let do = bU(at, as, bx, 0)
690- let ce = do._1
691- let cA = do._2
692- let bT = do._3
693- let cG = max([(ce - cE), g])
694- let dp = l(invoke(aZ, "claimWxBoostREADONLY", [at, as], nil))
695- let cR = max([p(dp[0]), 0])
696- let dq = r(dp[1])
697- let cS = cG
698- let cT = min([(cS * toBigInt(2)), toBigInt(cR)])
699- let cU = (cS + cT)
700- $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", at, as, toString(cU), toString(cE), toString(cS), toString(cT), "soon"], e))
678+ let dl = fraction((dj * dk), bC, f)
679+ let dm = fraction(dl, bs, bA)
680+ let dn = bU(at, as, bx, 0)
681+ let ce = dn._1
682+ let cA = dn._2
683+ let bT = dn._3
684+ let cF = max([(ce - cD), g])
685+ let do = l(invoke(aZ, "claimWxBoostREADONLY", [at, as], nil))
686+ let cQ = max([p(do[0]), 0])
687+ let dp = r(do[1])
688+ let cR = cF
689+ let cS = min([(cR * toBigInt(2)), toBigInt(cQ)])
690+ let cT = (cR + cS)
691+ $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", at, as, toString(cT), toString(cD), toString(cR), toString(cS), "soon"], e))
701692 }
702693
703694
718709 if ((cp == cp))
719710 then {
720711 let be = bc(aB)
721- let dr = getString(bb(aB))
712+ let dq = getString(bb(aB))
722713 let bk = getString(bd(be))
723- let n = dr
714+ let n = dq
724715 if ($isInstanceOf(n, "Unit"))
725716 then {
726- let ds = bk
727- if ($isInstanceOf(ds, "Unit"))
717+ let dr = bk
718+ if ($isInstanceOf(dr, "Unit"))
728719 then $Tuple2(nil, false)
729- else if ($isInstanceOf(ds, "String"))
720+ else if ($isInstanceOf(dr, "String"))
730721 then {
731- let dt = ds
732- $Tuple2([StringEntry(bb(aB), dt)], true)
722+ let ds = dr
723+ $Tuple2([StringEntry(bb(aB), ds)], true)
733724 }
734725 else throw("Match error")
735726 }
736727 else if ($isInstanceOf(n, "String"))
737728 then {
738729 let aD = n
739- let cE = D(this, av(aB, aD))
740- let cF = y(aX, ac(aB))
741- let ce = bU(aB, aD, cF, 0)._1
742- let cG = (ce - cE)
743- let cH = if ((cG > g))
730+ let cD = D(this, av(aB, aD))
731+ let cE = y(aX, ac(aB))
732+ let ce = bU(aB, aD, cE, 0)._1
733+ let cF = (ce - cD)
734+ let cG = if ((cF > g))
744735 then invoke(this, "claimWxINTERNAL", [aB, aD], nil)
745736 else unit
746- if ((cH == cH))
737+ if ((cG == cG))
747738 then {
748- let du = getString(bi(be, aD))
749- let ds = du
750- if ($isInstanceOf(ds, "Unit"))
739+ let dt = getString(bi(be, aD))
740+ let dr = dt
741+ if ($isInstanceOf(dr, "Unit"))
751742 then $Tuple2([DeleteEntry(bb(aB))], false)
752- else if ($isInstanceOf(ds, "String"))
743+ else if ($isInstanceOf(dr, "String"))
753744 then {
754- let dv = ds
755- $Tuple2([StringEntry(bb(aB), dv)], true)
745+ let du = dr
746+ $Tuple2([StringEntry(bb(aB), du)], true)
756747 }
757748 else throw("Match error")
758749 }
769760 func onModifyWeight (at,bx) = if ((cl.caller != aX))
770761 then throw("permissions denied")
771762 else {
772- let dw = bw(at, bx, 0)
773- let bu = dw._1
774- let bW = dw._2
775- let bX = dw._3
763+ let dv = bw(at, bx, 0)
764+ let bu = dv._1
765+ let bW = dv._2
766+ let bX = dv._3
776767 bW
777768 }
778769
779770
780-
781-@Callable(cl)
782-func test () = if (true)
783- then throw(valueOrElse(getString(this, "%s__lpStakingPoolsContract"), "nothing"))
784- else nil
785-
786-
787-@Verifier(dx)
788-func dy () = {
789- let dz = {
771+@Verifier(dw)
772+func dx () = {
773+ let dy = {
790774 let n = ch()
791775 if ($isInstanceOf(n, "ByteVector"))
792776 then {
794778 cn
795779 }
796780 else if ($isInstanceOf(n, "Unit"))
797- then dx.senderPublicKey
781+ then dw.senderPublicKey
798782 else throw("Match error")
799783 }
800- sigVerify(dx.bodyBytes, dx.proofs[0], dz)
784+ sigVerify(dw.bodyBytes, dw.proofs[0], dy)
801785 }
802786
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = 18
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = "__"
1313
1414 let f = b
1515
1616 let g = toBigInt(0)
1717
1818 let h = toBigInt(1)
1919
20-func i (j) = throw(makeString(["staking.ride:", toString(this), j], " "))
20+func i (j) = makeString(["staking.ride:", toString(this), j], " ")
2121
2222
2323 func k (j) = throw(i(j))
2424
2525
2626 func l (m) = {
2727 let n = m
2828 if ($isInstanceOf(n, "List[Any]"))
2929 then {
3030 let o = n
3131 o
3232 }
3333 else throw("fail to cast into List[Any]")
3434 }
3535
3636
3737 func p (m) = {
3838 let n = m
3939 if ($isInstanceOf(n, "Int"))
4040 then {
4141 let q = n
4242 q
4343 }
4444 else throw("fail to cast into Int")
4545 }
4646
4747
4848 func r (m) = {
4949 let n = m
5050 if ($isInstanceOf(n, "String"))
5151 then {
5252 let s = n
5353 s
5454 }
5555 else throw("fail to cast into Int")
5656 }
5757
5858
5959 func t (m) = {
6060 let n = m
6161 if ($isInstanceOf(n, "ByteVector"))
6262 then {
6363 let u = n
6464 u
6565 }
6666 else throw("fail to cast into Int")
6767 }
6868
6969
7070 func v (w,x) = valueOrErrorMessage(getString(w, x), (("mandatory this." + x) + " is not defined"))
7171
7272
7373 func y (w,x) = valueOrErrorMessage(getString(w, x), (((("mandatory " + toString(w)) + ".") + x) + " is not defined"))
7474
7575
7676 func z (w,x) = valueOrElse(getInteger(w, x), 0)
7777
7878
7979 func A (w,x,B) = valueOrElse(getInteger(w, x), B)
8080
8181
8282 func C (w,x) = valueOrErrorMessage(getInteger(w, x), (("mandatory this." + x) + " is not defined"))
8383
8484
8585 func D (w,x) = value(parseBigInt(valueOrElse(getString(w, x), "0")))
8686
8787
8888 func E (w,x,B) = {
8989 let n = getString(w, x)
9090 if ($isInstanceOf(n, "String"))
9191 then {
9292 let F = n
9393 value(parseBigInt(F))
9494 }
9595 else if ($isInstanceOf(n, "Unit"))
9696 then B
9797 else throw("Match error")
9898 }
9999
100100
101101 func G (H,I) = fraction(toBigInt(H), d, toBigInt(I))
102102
103103
104104 func J (m,K) = toInt(fraction(m, toBigInt(K), d))
105105
106106
107107 func L () = "%s%s__config__factoryAddress"
108108
109109
110110 func M () = "%s__votingEmissionContract"
111111
112112
113113 let N = 1
114114
115115 let O = 2
116116
117117 let P = 3
118118
119119 let Q = 4
120120
121121 let R = 5
122122
123123 let S = 6
124124
125125 let T = 7
126126
127127 func U () = "%s__factoryConfig"
128128
129129
130130 func V () = "%s__managerPublicKey"
131131
132132
133133 func W () = "%s__pendingManagerPublicKey"
134134
135135
136136 func X () = "%s__stablePoolAddonAddr"
137137
138138
139139 func Y () = "%s__addonAddr"
140140
141141
142142 func Z (aa) = makeString(["%s%s%s", aa, "mappings__lpAsset2PoolContract"], e)
143143
144144
145145 func ab () = "%s__lpTokensList"
146146
147147
148148 func ac (aa) = makeString(["%s%s%s", aa, "mappings__lpAsset2PoolContract"], e)
149149
150150
151151 func ad (ae) = makeString(["%s%s", "poolWeight", ae], e)
152152
153153
154154 func af (ag) = split(valueOrElse(getString(ag, ab()), ""), e)
155155
156156
157157 func ah (ag) = split(y(ag, U()), e)
158158
159159
160160 func ai (aj) = addressFromStringValue(aj[O])
161161
162162
163163 func ak (aj) = addressFromStringValue(aj[R])
164164
165165
166166 func al (aj) = addressFromStringValue(aj[N])
167167
168168
169169 func am () = "%s%s__ratePerBlock__current"
170170
171171
172172 func an () = "%s%s__ratePerBlockMax__current"
173173
174174
175175 func ao () = "%s%s__emission__startBlock"
176176
177177
178178 func ap () = "%s%s__emission__duration"
179179
180180
181181 func aq () = "%s%s__emission__endBlock"
182182
183183
184184 func ar (as,at) = makeString(["%s%s%s__staked", as, at], e)
185185
186186
187187 func au (at) = ("%s%s%s__staked__total__" + at)
188188
189189
190190 func av (at,as) = makeString(["%s%s%s__claimed", as, at], e)
191191
192192
193193 func aw (at,as) = makeString(["%s%s%s__claimedMinReward", as, at], e)
194194
195195
196196 func ax (at,as) = makeString(["%s%s%s__claimedBoostReward", as, at], e)
197197
198198
199199 func ay (at) = makeString(["%s%s%s__claimed__total", at], e)
200200
201201
202202 func az (x) = valueOrElse(getInteger(this, x), 0)
203203
204204
205205 func aA (aB) = makeString(["%s%s%s", aB, "total", "bal"], e)
206206
207207
208208 func aC (aB,aD) = makeString(["%s%s%s", aB, aD, "bal"], e)
209209
210210
211211 func aE (aB) = makeString(["%s%s%s", aB, "total", "balINT"], e)
212212
213213
214214 func aF (aB,aD) = makeString(["%s%s%s", aB, aD, "balINT"], e)
215215
216216
217217 func aG (aB) = makeString(["%s%s%s", aB, "total", "lastUpd"], e)
218218
219219
220220 func aH (aB,aD) = makeString(["%s%s%s", aB, aD, "lastUpd"], e)
221221
222222
223223 func aI (aB) = makeString(["%s%s%s%s", aB, "common", "lpInt"], e)
224224
225225
226226 func aJ (aB) = makeString(["%s%s%s%s", aB, "common", "lpIntH"], e)
227227
228228
229229 func aK (aB,aD) = makeString(["%s%s%s%s", aB, aD, "lpInt"], e)
230230
231231
232232 func aL (aB,aD) = makeString(["%s%s%s%s", aB, aD, "lpIntH"], e)
233233
234234
235235 func aM (aB) = makeString(["%s", aB, "wxPerLp"], e)
236236
237237
238238 func aN (aB) = makeString(["%s", aB, "wxPerLpX18"], e)
239239
240240
241241 func aO (aB,aD) = makeString(["%s%s%s%s", aB, aD, "uIntL"], e)
242242
243243
244244 func aP (aQ,aD,aR) = makeString(["%s%s%s%s__history", aQ, aD, aR], e)
245245
246246
247247 func aS (aD,aB,aQ,aT) = makeString(["%s%s%s%d%d%d", aD, aB, aQ, toString(height), toString(lastBlock.timestamp), toString(aT)], e)
248248
249249
250250 func aU (aQ,aD,aB,aT,aV) = StringEntry(aP(aQ, aD, toBase58String(aV)), aS(aD, aB, aQ, aT))
251251
252252
253253 let aW = v(this, L())
254254
255255 let aX = addressFromStringValue(aW)
256256
257257 let aj = ah(aX)
258258
259259 let aY = ak(aj)
260260
261261 let aZ = ai(aj)
262262
263263 let ba = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], e)), i("lp_staking_pools contract address is undefined"))), i("invalid lp_staking_pools contract address"))
264264
265265 func bb (aB) = makeString(["%s%s", aB, "nextUser"], e)
266266
267267
268268 func bc (aB) = makeString(["users", aB], e)
269269
270270
271271 func bd (be) = makeString(["%s%s%s", be, "head"], e)
272272
273273
274274 func bf (be) = makeString(["%s%s%s", be, "size"], e)
275275
276276
277277 func bg (be,bh) = makeString(["%s%s%s%s", be, bh, "prev"], e)
278278
279279
280280 func bi (be,bh) = makeString(["%s%s%s%s", be, bh, "next"], e)
281281
282282
283283 func bj (be,bh) = {
284284 let bk = getString(this, bd(be))
285285 let bl = getString(this, bg(be, bh))
286286 let bm = getString(this, bi(be, bh))
287287 if (if ((bh == valueOrElse(bk, "")))
288288 then true
289289 else (bl != unit))
290290 then true
291291 else (bm != unit)
292292 }
293293
294294
295295 func bn (be,bh) = {
296296 let bk = getString(this, bd(be))
297297 let bo = valueOrElse(getInteger(this, bf(be)), 0)
298298 let bp = if (!(bj(be, bh)))
299299 then true
300300 else throw("Node exists")
301301 if ((bp == bp))
302302 then (([IntegerEntry(bf(be), (bo + 1))] ++ (if ((bk != unit))
303303 then [StringEntry(bi(be, bh), value(bk)), StringEntry(bg(be, value(bk)), bh)]
304304 else nil)) ++ [StringEntry(bd(be), bh)])
305305 else throw("Strict value is not equal to itself.")
306306 }
307307
308308
309309 func bq (be,bh) = {
310310 let bk = getString(this, bd(be))
311311 let bo = valueOrElse(getInteger(this, bf(be)), 0)
312312 let bl = getString(this, bg(be, bh))
313313 let bm = getString(this, bi(be, bh))
314314 ([IntegerEntry(bf(be), (bo - 1))] ++ (if (if ((bl != unit))
315315 then (bm != unit)
316316 else false)
317317 then [StringEntry(bi(be, value(bl)), value(bm)), StringEntry(bg(be, value(bm)), value(bl)), DeleteEntry(bg(be, bh)), DeleteEntry(bi(be, bh))]
318318 else if ((bm != unit))
319319 then [StringEntry(bd(be), value(bm)), DeleteEntry(bi(be, bh)), DeleteEntry(bg(be, value(bm)))]
320320 else if ((bl != unit))
321321 then [DeleteEntry(bg(be, bh)), DeleteEntry(bi(be, value(bl)))]
322322 else if ((bh == valueOrElse(bk, "")))
323323 then [DeleteEntry(bd(be))]
324324 else throw(((("invalid node: " + be) + ".") + bh))))
325325 }
326326
327327
328328 func br (bs,bt,bu,bv) = if (if ((bt == g))
329329 then (bs > g)
330330 else false)
331331 then g
332332 else if ((bs == g))
333333 then bu
334334 else if (if ((bt > g))
335335 then (bs > g)
336336 else false)
337337 then value(parseBigInt(v(this, bv)))
338338 else throw("calcWxPerLpIntegralUserLast: unexpected state")
339339
340340
341341 func bw (at,bx,by) = {
342342 let bz = au(at)
343343 let bA = toBigInt(az(bz))
344344 let bB = if ((bA == g))
345345 then h
346346 else bA
347347 let bC = getIntegerValue(aX, ad(bx))
348348 let bD = C(aY, ao())
349349 let bE = 1000
350350 let bF = (C(aY, am()) * bE)
351351 let bG = fraction(bF, bC, (f * 3))
352352 let bH = aI(at)
353353 let bI = aJ(at)
354354 let bJ = aM(at)
355355 let bK = A(this, bI, bD)
356356 let bL = D(this, bH)
357357 let bM = 0
358358 let bN = max([(height - bK), 0])
359359 let bO = if ((bM != 0))
360360 then toBigInt(bM)
361361 else fraction(toBigInt(bG), toBigInt(b), bB)
362362 let bP = (bA + toBigInt(by))
363363 let bQ = if ((bP == g))
364364 then h
365365 else bP
366366 let bu = (bL + (bO * toBigInt(bN)))
367367 let bR = (toBigInt(bG) / bQ)
368368 let bS = height
369369 let bT = makeString([toString(bu), toString(bN), toString(bO), toString(bA), toString(bG), toString(bF), toString(bC)], "::")
370370 $Tuple3(bu, [StringEntry(bH, toString(bu)), IntegerEntry(bI, bS), StringEntry(bJ, toString(bR))], bT)
371371 }
372372
373373
374374 func bU (at,as,bx,by) = {
375375 let bV = bw(at, bx, by)
376376 let bu = bV._1
377377 let bW = bV._2
378378 let bX = bV._3
379379 let bE = 1000
380380 let bY = ar(as, at)
381381 let bs = az(bY)
382382 let bZ = aK(at, as)
383383 let ca = aL(at, as)
384384 let bv = aO(at, as)
385385 let cb = D(this, bZ)
386386 let bt = z(this, ca)
387387 let cc = br(toBigInt(bs), toBigInt(bt), bu, bv)
388388 let cd = (b * bE)
389389 let ce = max([(cb + fraction((bu - cc), toBigInt(bs), toBigInt(cd))), g])
390390 let cf = bu
391391 let cg = height
392392 let bT = makeString([toString(cb), toString(cc), toString(bs), bX, toString(height)], "::")
393393 $Tuple3(ce, (bW ++ [StringEntry(bZ, toString(ce)), IntegerEntry(ca, cg), StringEntry(bv, toString(cf))]), bT)
394394 }
395395
396396
397397 func ch () = {
398398 let n = getString(V())
399399 if ($isInstanceOf(n, "String"))
400400 then {
401401 let F = n
402402 fromBase58String(F)
403403 }
404404 else if ($isInstanceOf(n, "Unit"))
405405 then unit
406406 else throw("Match error")
407407 }
408408
409409
410410 func ci () = {
411411 let n = getString(W())
412412 if ($isInstanceOf(n, "String"))
413413 then {
414414 let F = n
415415 fromBase58String(F)
416416 }
417417 else if ($isInstanceOf(n, "Unit"))
418418 then unit
419419 else throw("Match error")
420420 }
421421
422422
423423 let cj = throw("Permission denied")
424424
425425 func ck (cl) = if ((cl.caller == this))
426426 then true
427427 else cj
428428
429429
430430 func cm (cl) = {
431431 let n = ch()
432432 if ($isInstanceOf(n, "ByteVector"))
433433 then {
434434 let cn = n
435435 if ((cl.callerPublicKey == cn))
436436 then true
437437 else cj
438438 }
439439 else if ($isInstanceOf(n, "Unit"))
440440 then if ((cl.caller == this))
441441 then true
442442 else cj
443443 else throw("Match error")
444444 }
445445
446446
447447 @Callable(cl)
448448 func constructor (co) = {
449449 let cp = cm(cl)
450450 if ((cp == cp))
451451 then [StringEntry(L(), co)]
452452 else throw("Strict value is not equal to itself.")
453453 }
454454
455455
456456
457457 @Callable(cl)
458458 func constructorV2 (cq) = {
459459 let cr = [cm(cl), if ((addressFromString(cq) != unit))
460460 then true
461461 else "invalid voting emission contract address"]
462462 if ((cr == cr))
463463 then [StringEntry(M(), cq)]
464464 else throw("Strict value is not equal to itself.")
465465 }
466466
467467
468468
469469 @Callable(cl)
470470 func setManager (cs) = {
471471 let cp = cm(cl)
472472 if ((cp == cp))
473473 then {
474474 let ct = fromBase58String(cs)
475475 if ((ct == ct))
476476 then [StringEntry(W(), cs)]
477477 else throw("Strict value is not equal to itself.")
478478 }
479479 else throw("Strict value is not equal to itself.")
480480 }
481481
482482
483483
484484 @Callable(cl)
485485 func confirmManager () = {
486486 let cu = ci()
487487 let cv = if (isDefined(cu))
488488 then true
489489 else throw("No pending manager")
490490 if ((cv == cv))
491491 then {
492492 let cw = if ((cl.callerPublicKey == value(cu)))
493493 then true
494494 else throw("You are not pending manager")
495495 if ((cw == cw))
496496 then [StringEntry(V(), toBase58String(value(cu))), DeleteEntry(W())]
497497 else throw("Strict value is not equal to itself.")
498498 }
499499 else throw("Strict value is not equal to itself.")
500500 }
501501
502502
503503
504504 @Callable(cl)
505505 func stake () = if ((size(cl.payments) != 1))
506506 then throw("invalid payment - exact one payment must be attached")
507507 else {
508508 let cx = cl.payments[0]
509509 let aB = value(cx.assetId)
510510 let at = toBase58String(aB)
511511 let aT = cx.amount
512512 let bx = valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at))
513513 let cy = toString(cl.caller)
514514 let as = if ((cy == bx))
515515 then toString(cl.originCaller)
516516 else cy
517517 let bY = ar(as, at)
518518 let bz = au(at)
519519 let bs = az(bY)
520520 let bA = az(bz)
521521 let cz = bU(at, as, bx, aT)
522522 let ce = cz._1
523523 let cA = cz._2
524524 let bT = cz._3
525525 let be = bc(at)
526526 let cB = if (bj(be, as))
527527 then nil
528528 else bn(be, as)
529529 (([IntegerEntry(bY, (bs + aT)), IntegerEntry(bz, (bA + aT)), aU("stake", as, at, aT, cl.transactionId)] ++ cA) ++ cB)
530530 }
531531
532532
533533
534534 @Callable(cl)
535535 func unstake (at,aT) = {
536536 let aB = fromBase58String(at)
537537 let bx = valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at))
538538 let cC = valueOrElse(getString(addressFromStringValue(bx), Y()), bx)
539539 let cy = toString(cl.caller)
540- let cD = ba
541- if ((cD == cD))
542- then {
543- let as = if (if (if ((cy == bx))
544- then (cl.originCaller != ba)
545- else false)
546- then true
547- else (cy == cC))
548- then toString(cl.originCaller)
549- else cy
550- if ((as == as))
551- then {
552- let bY = ar(as, at)
553- let bz = au(at)
554- let bs = az(bY)
555- let bA = az(bz)
556- let cA = bU(at, as, bx, -(aT))._2
557- let be = bc(at)
558- let cB = if (if (bj(be, as))
559- then (aT == bs)
560- else false)
561- then bq(be, as)
562- else nil
563- let cE = D(this, av(at, as))
564- let cF = y(aX, ac(at))
565- let ce = bU(at, as, cF, 0)._1
566- let cG = (ce - cE)
567- let cH = if ((cG > g))
568- then invoke(this, "claimWxINTERNAL", [at, as], nil)
569- else unit
570- if ((cH == cH))
571- then if ((aT > bs))
572- then throw(((((((("passed amount=" + toString(aT)) + " is greater than available=") + toString(bs)) + ". lpAssetId=") + at) + ". stakedByUserKEY=") + bY))
573- else (([IntegerEntry(bY, (bs - aT)), IntegerEntry(bz, (bA - aT)), ScriptTransfer(cl.caller, aT, aB), aU("unstake", as, at, aT, cl.transactionId)] ++ cA) ++ cB)
574- else throw("Strict value is not equal to itself.")
575- }
576- else throw("Strict value is not equal to itself.")
577- }
540+ let as = if (if (if ((cy == bx))
541+ then (cl.originCaller != ba)
542+ else false)
543+ then true
544+ else (cy == cC))
545+ then toString(cl.originCaller)
546+ else cy
547+ let bY = ar(as, at)
548+ let bz = au(at)
549+ let bs = az(bY)
550+ let bA = az(bz)
551+ let cA = bU(at, as, bx, -(aT))._2
552+ let be = bc(at)
553+ let cB = if (if (bj(be, as))
554+ then (aT == bs)
555+ else false)
556+ then bq(be, as)
557+ else nil
558+ let cD = D(this, av(at, as))
559+ let cE = y(aX, ac(at))
560+ let ce = bU(at, as, cE, 0)._1
561+ let cF = (ce - cD)
562+ let cG = if ((cF > g))
563+ then invoke(this, "claimWxINTERNAL", [at, as], nil)
564+ else unit
565+ if ((cG == cG))
566+ then if ((aT > bs))
567+ then throw(((((((("passed amount=" + toString(aT)) + " is greater than available=") + toString(bs)) + ". lpAssetId=") + at) + ". stakedByUserKEY=") + bY))
568+ else (([IntegerEntry(bY, (bs - aT)), IntegerEntry(bz, (bA - aT)), ScriptTransfer(cl.caller, aT, aB), aU("unstake", as, at, aT, cl.transactionId)] ++ cA) ++ cB)
578569 else throw("Strict value is not equal to itself.")
579570 }
580571
581572
582573
583574 @Callable(cl)
584575 func claimWx (at) = {
585576 let as = toString(cl.caller)
586- let cI = invoke(this, "claimWxINTERNAL", [at, as], nil)
587- $Tuple2(nil, cI)
577+ let cH = invoke(this, "claimWxINTERNAL", [at, as], nil)
578+ $Tuple2(nil, cH)
588579 }
589580
590581
591582
592583 @Callable(cl)
593584 func claimWxINTERNAL (at,as) = {
594585 let cp = ck(cl)
595586 if ((cp == cp))
596587 then {
597588 let aD = valueOrErrorMessage(addressFromString(as), "claimWxINTERNAL: invalid user address")
598589 let bx = y(aX, ac(at))
599- let cJ = av(at, as)
600- let cK = ay(at)
601- let cL = aw(at, as)
602- let cM = ax(at, as)
603- let cE = D(this, cJ)
590+ let cI = av(at, as)
591+ let cJ = ay(at)
592+ let cK = aw(at, as)
593+ let cL = ax(at, as)
594+ let cD = D(this, cI)
595+ let cM = D(this, cK)
604596 let cN = D(this, cL)
605- let cO = D(this, cM)
606- let cP = D(this, cK)
607- let cQ = bU(at, as, bx, 0)
608- let ce = cQ._1
609- let cA = cQ._2
610- let bT = cQ._3
611- let cG = max([(ce - cE), g])
612- if ((g >= cG))
597+ let cO = D(this, cJ)
598+ let cP = bU(at, as, bx, 0)
599+ let ce = cP._1
600+ let cA = cP._2
601+ let bT = cP._3
602+ let cF = max([(ce - cD), g])
603+ if ((g >= cF))
613604 then throw("nothing to claim")
614605 else {
615- let cR = max([p(l(invoke(aZ, "claimWxBoost", [at, as], nil))[0]), 0])
616- let cS = cG
617- let cT = min([(cS * toBigInt(2)), toBigInt(cR)])
618- let cU = (cS + cT)
619- let cV = t(l(invoke(aY, "emit", [toInt(cS)], nil))[0])
620- let cW = l(invoke(aY, "emit", [toInt(cT)], nil))
621- if ((cW == cW))
606+ let cQ = max([p(l(invoke(aZ, "claimWxBoost", [at, as], nil))[0]), 0])
607+ let cR = cF
608+ let cS = min([(cR * toBigInt(2)), toBigInt(cQ)])
609+ let cT = (cR + cS)
610+ let cU = t(l(invoke(aY, "emit", [toInt(cR)], nil))[0])
611+ let cV = l(invoke(aY, "emit", [toInt(cS)], nil))
612+ if ((cV == cV))
622613 then {
623- let cX = (cE + cG)
624- let cY = (cN + cS)
625- let cZ = (cN + cS)
626- let da = (cN + cS)
627- $Tuple2([StringEntry(cJ, toString(cX)), StringEntry(cL, toString(cY)), StringEntry(cM, toString(cZ)), StringEntry(cK, toString(da)), ScriptTransfer(aD, toInt(cS), cV), ScriptTransfer(aD, toInt(cT), cV), aU("claim", as, at, toInt(cG), cl.transactionId)], toInt(cU))
614+ let cW = (cD + cF)
615+ let cX = (cM + cR)
616+ let cY = (cM + cR)
617+ let cZ = (cM + cR)
618+ $Tuple2([StringEntry(cI, toString(cW)), StringEntry(cK, toString(cX)), StringEntry(cL, toString(cY)), StringEntry(cJ, toString(cZ)), ScriptTransfer(aD, toInt(cR), cU), ScriptTransfer(aD, toInt(cS), cU), aU("claim", as, at, toInt(cF), cl.transactionId)], toInt(cT))
628619 }
629620 else throw("Strict value is not equal to itself.")
630621 }
631622 }
632623 else throw("Strict value is not equal to itself.")
633624 }
634625
635626
636627
637628 @Callable(cl)
638-func claimWxBulkInternalREADONLY (db,dc,as,dd) = if ((db == size(dc)))
639- then $Tuple2(nil, dd)
629+func claimWxBulkInternalREADONLY (da,db,as,dc) = if ((da == size(db)))
630+ then $Tuple2(nil, dc)
640631 else {
641- let aB = dc[db]
642- let de = split({
643- let df = invoke(this, "claimWxREADONLY", [aB, as], nil)
644- if ($isInstanceOf(df, "String"))
645- then df
646- else throw(($getType(df) + " couldn't be cast to String"))
632+ let aB = db[da]
633+ let dd = split({
634+ let de = invoke(this, "claimWxREADONLY", [aB, as], nil)
635+ if ($isInstanceOf(de, "String"))
636+ then de
637+ else throw(($getType(de) + " couldn't be cast to String"))
647638 }, e)
648- let dg = de[3]
649- let dh = de[4]
650- let di = (dd :+ makeString(["%d%d", dg, dh], e))
651- let dj = {
652- let df = invoke(this, "claimWxBulkInternalREADONLY", [(db + 1), dc, as, di], nil)
653- if ($isInstanceOf(df, "List[Any]"))
654- then df
655- else throw(($getType(df) + " couldn't be cast to List[Any]"))
639+ let df = dd[3]
640+ let dg = dd[4]
641+ let dh = (dc :+ makeString(["%d%d", df, dg], e))
642+ let di = {
643+ let de = invoke(this, "claimWxBulkInternalREADONLY", [(da + 1), db, as, dh], nil)
644+ if ($isInstanceOf(de, "List[Any]"))
645+ then de
646+ else throw(($getType(de) + " couldn't be cast to List[Any]"))
656647 }
657- if ((dj == dj))
658- then $Tuple2(nil, dj)
648+ if ((di == di))
649+ then $Tuple2(nil, di)
659650 else throw("Strict value is not equal to itself.")
660651 }
661652
662653
663654
664655 @Callable(cl)
665-func claimWxBulkREADONLY (dc,as) = {
666- let di = invoke(this, "claimWxBulkInternalREADONLY", [0, dc, as, nil], nil)
667- $Tuple2(nil, di)
656+func claimWxBulkREADONLY (db,as) = {
657+ let dh = invoke(this, "claimWxBulkInternalREADONLY", [0, db, as, nil], nil)
658+ $Tuple2(nil, dh)
668659 }
669660
670661
671662
672663 @Callable(cl)
673664 func claimWxREADONLY (at,as) = {
674665 let bY = ar(as, at)
675666 let bz = au(at)
676- let cJ = av(at, as)
667+ let cI = av(at, as)
677668 let bs = az(bY)
678669 let bA = az(bz)
679- let cE = D(this, cJ)
670+ let cD = D(this, cI)
680671 let bx = y(aX, ac(at))
681672 let bC = getIntegerValue(aX, ad(bx))
682- let dk = C(aY, am())
673+ let dj = C(aY, am())
683674 let bD = C(aY, ao())
684- let dl = if ((bD > height))
675+ let dk = if ((bD > height))
685676 then 0
686677 else (height - bD)
687- let dm = fraction((dk * dl), bC, f)
688- let dn = fraction(dm, bs, bA)
689- let do = bU(at, as, bx, 0)
690- let ce = do._1
691- let cA = do._2
692- let bT = do._3
693- let cG = max([(ce - cE), g])
694- let dp = l(invoke(aZ, "claimWxBoostREADONLY", [at, as], nil))
695- let cR = max([p(dp[0]), 0])
696- let dq = r(dp[1])
697- let cS = cG
698- let cT = min([(cS * toBigInt(2)), toBigInt(cR)])
699- let cU = (cS + cT)
700- $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", at, as, toString(cU), toString(cE), toString(cS), toString(cT), "soon"], e))
678+ let dl = fraction((dj * dk), bC, f)
679+ let dm = fraction(dl, bs, bA)
680+ let dn = bU(at, as, bx, 0)
681+ let ce = dn._1
682+ let cA = dn._2
683+ let bT = dn._3
684+ let cF = max([(ce - cD), g])
685+ let do = l(invoke(aZ, "claimWxBoostREADONLY", [at, as], nil))
686+ let cQ = max([p(do[0]), 0])
687+ let dp = r(do[1])
688+ let cR = cF
689+ let cS = min([(cR * toBigInt(2)), toBigInt(cQ)])
690+ let cT = (cR + cS)
691+ $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", at, as, toString(cT), toString(cD), toString(cR), toString(cS), "soon"], e))
701692 }
702693
703694
704695
705696 @Callable(cl)
706697 func stakedByUserREADONLY (at,as) = {
707698 let bs = valueOrElse(getInteger(ar(as, at)), 0)
708699 $Tuple2(nil, bs)
709700 }
710701
711702
712703
713704 @Callable(cl)
714705 func usersListTraversal (aB) = {
715706 let cp = if ((toBase58String(cl.caller.bytes) == valueOrElse(getString(this, M()), "")))
716707 then true
717708 else cm(cl)
718709 if ((cp == cp))
719710 then {
720711 let be = bc(aB)
721- let dr = getString(bb(aB))
712+ let dq = getString(bb(aB))
722713 let bk = getString(bd(be))
723- let n = dr
714+ let n = dq
724715 if ($isInstanceOf(n, "Unit"))
725716 then {
726- let ds = bk
727- if ($isInstanceOf(ds, "Unit"))
717+ let dr = bk
718+ if ($isInstanceOf(dr, "Unit"))
728719 then $Tuple2(nil, false)
729- else if ($isInstanceOf(ds, "String"))
720+ else if ($isInstanceOf(dr, "String"))
730721 then {
731- let dt = ds
732- $Tuple2([StringEntry(bb(aB), dt)], true)
722+ let ds = dr
723+ $Tuple2([StringEntry(bb(aB), ds)], true)
733724 }
734725 else throw("Match error")
735726 }
736727 else if ($isInstanceOf(n, "String"))
737728 then {
738729 let aD = n
739- let cE = D(this, av(aB, aD))
740- let cF = y(aX, ac(aB))
741- let ce = bU(aB, aD, cF, 0)._1
742- let cG = (ce - cE)
743- let cH = if ((cG > g))
730+ let cD = D(this, av(aB, aD))
731+ let cE = y(aX, ac(aB))
732+ let ce = bU(aB, aD, cE, 0)._1
733+ let cF = (ce - cD)
734+ let cG = if ((cF > g))
744735 then invoke(this, "claimWxINTERNAL", [aB, aD], nil)
745736 else unit
746- if ((cH == cH))
737+ if ((cG == cG))
747738 then {
748- let du = getString(bi(be, aD))
749- let ds = du
750- if ($isInstanceOf(ds, "Unit"))
739+ let dt = getString(bi(be, aD))
740+ let dr = dt
741+ if ($isInstanceOf(dr, "Unit"))
751742 then $Tuple2([DeleteEntry(bb(aB))], false)
752- else if ($isInstanceOf(ds, "String"))
743+ else if ($isInstanceOf(dr, "String"))
753744 then {
754- let dv = ds
755- $Tuple2([StringEntry(bb(aB), dv)], true)
745+ let du = dr
746+ $Tuple2([StringEntry(bb(aB), du)], true)
756747 }
757748 else throw("Match error")
758749 }
759750 else throw("Strict value is not equal to itself.")
760751 }
761752 else throw("Match error")
762753 }
763754 else throw("Strict value is not equal to itself.")
764755 }
765756
766757
767758
768759 @Callable(cl)
769760 func onModifyWeight (at,bx) = if ((cl.caller != aX))
770761 then throw("permissions denied")
771762 else {
772- let dw = bw(at, bx, 0)
773- let bu = dw._1
774- let bW = dw._2
775- let bX = dw._3
763+ let dv = bw(at, bx, 0)
764+ let bu = dv._1
765+ let bW = dv._2
766+ let bX = dv._3
776767 bW
777768 }
778769
779770
780-
781-@Callable(cl)
782-func test () = if (true)
783- then throw(valueOrElse(getString(this, "%s__lpStakingPoolsContract"), "nothing"))
784- else nil
785-
786-
787-@Verifier(dx)
788-func dy () = {
789- let dz = {
771+@Verifier(dw)
772+func dx () = {
773+ let dy = {
790774 let n = ch()
791775 if ($isInstanceOf(n, "ByteVector"))
792776 then {
793777 let cn = n
794778 cn
795779 }
796780 else if ($isInstanceOf(n, "Unit"))
797- then dx.senderPublicKey
781+ then dw.senderPublicKey
798782 else throw("Match error")
799783 }
800- sigVerify(dx.bodyBytes, dx.proofs[0], dz)
784+ sigVerify(dw.bodyBytes, dw.proofs[0], dy)
801785 }
802786

github/deemru/w8io/fabc49c 
113.29 ms