tx · 6ST3R7oAds1sqwyPD7hgcnwuz3VwoQXYE2fdK8tegr8p

3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz:  -0.02400000 Waves

2023.03.24 14:59 [2504060] smart account 3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz > SELF 0.00000000 Waves

{ "type": 13, "id": "6ST3R7oAds1sqwyPD7hgcnwuz3VwoQXYE2fdK8tegr8p", "fee": 2400000, "feeAssetId": null, "timestamp": 1679659199365, "version": 2, "chainId": 84, "sender": "3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz", "senderPublicKey": "D28XoueZWsMfm8Y5pa6C5ZFuYoWgre2Wm8tzJANJgMnq", "proofs": [ "4vC2chHZ1rMgovp4xNh7JrcxP3LjVLDDqiZxvkTW4feWWEc9DAAsJGwezPgkuDxWHr5kzgYgrNMqTZZpewWAo211" ], "script": "base64:BgK+IAgCEgMKAQgSAwoBCBIDCgEIEgASABIDCgEIEgQKAggBEgYKBAIBAgISAwoBCBIDCgEIEgUKAwgIBBIGCgQBGAgYEgQKAhgIEgQKAggIEgQKAggIEgMKAQgSBAoCCAgiBlNDQUxFOCIFTVVMVDMiBU1VTFQ4IgdTQ0FMRTE4IgZNVUxUMTgiA1NFUCIOUE9PTFdFSUdIVE1VTFQiCnplcm9CaWdJbnQiCW9uZUJpZ0ludCIHd3JhcEVyciIDbXNnIgh0aHJvd0VyciIJYXNBbnlMaXN0IgN2YWwiByRtYXRjaDAiCnZhbEFueUx5c3QiBWFzSW50IgZ2YWxJbnQiCGFzU3RyaW5nIgZ2YWxTdHIiDGFzQnl0ZVZlY3RvciIGdmFsQmluIg9nZXRTdHJpbmdPckZhaWwiB2FkZHJlc3MiA2tleSIYZ2V0U3RyaW5nQnlBZGRyZXNzT3JGYWlsIgxnZXRJbnRPclplcm8iD2dldEludE9yRGVmYXVsdCIKZGVmYXVsdFZhbCIMZ2V0SW50T3JGYWlsIhlnZXRCaWdJbnRGcm9tU3RyaW5nT3JaZXJvIhxnZXRCaWdJbnRGcm9tU3RyaW5nT3JEZWZhdWx0IgFzIgV0b1gxOCIHb3JpZ1ZhbCINb3JpZ1NjYWxlTXVsdCIHZnJvbVgxOCIPcmVzdWx0U2NhbGVNdWx0IhFrZXlGYWN0b3J5QWRkcmVzcyIZa2V5Vm90aW5nRW1pc3Npb25Db250cmFjdCIYSWR4RmFjdG9yeUNmZ1N0YWtpbmdEYXBwIhlJZHhGYWN0b3J5Q2ZnQm9vc3RpbmdEYXBwIhRJZHhGYWN0b3J5Q2ZnSWRvRGFwcCIVSWR4RmFjdG9yeUNmZ1RlYW1EYXBwIhlJZHhGYWN0b3J5Q2ZnRW1pc3Npb25EYXBwIhVJZHhGYWN0b3J5Q2ZnUmVzdERhcHAiGUlkeEZhY3RvcnlDZmdTbGlwcGFnZURhcHAiDWtleUZhY3RvcnlDZmciE2tleU1hbmFnZXJQdWJsaWNLZXkiGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5IhZrZXlTdGFibGVQb29sQWRkb25BZGRyIgxrZXlBZGRvbkFkZHIiGmtleUZhY3RvcnlMcDJBc3NldHNNYXBwaW5nIgpscEFzc2V0U3RyIhBrZXlGYWN0b3J5THBMaXN0IiZrZXlGYWN0b3J5THBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcyIUa2V5RmFjdG9yeVBvb2xXZWlnaHQiD2NvbnRyYWN0QWRkcmVzcyIKcmVhZExwTGlzdCIHZmFjdG9yeSIUcmVhZEZhY3RvcnlDZmdPckZhaWwiGGdldEJvb3N0aW5nQWRkcmVzc09yRmFpbCIKZmFjdG9yeUNmZyIYZ2V0RW1pc3Npb25BZGRyZXNzT3JGYWlsIhdnZXRTdGFraW5nQWRkcmVzc09yRmFpbCIea2V5RW1pc3Npb25SYXRlUGVyQmxvY2tDdXJyZW50IiFrZXlFbWlzc2lvblJhdGVQZXJCbG9ja01heEN1cnJlbnQiFWtleUVtaXNzaW9uU3RhcnRCbG9jayIba2V5RW1pc3Npb25EdXJhdGlvbkluQmxvY2tzIhNrZXlFbWlzc2lvbkVuZEJsb2NrIg9rZXlTdGFrZWRCeVVzZXIiDnVzZXJBZGRyZXNzU3RyIgxscEFzc2V0SWRTdHIiDmtleVN0YWtlZFRvdGFsIhBrZXlDbGFpbWVkQnlVc2VyIhlrZXlDbGFpbWVkQnlVc2VyTWluUmV3YXJkIhtrZXlDbGFpbWVkQnlVc2VyQm9vc3RSZXdhcmQiD2tleUNsYWltZWRUb3RhbCIKcmVhZFN0YWtlZCIVa2V5TGFzdFRvdGFsTHBCYWxhbmNlIglscEFzc2V0SWQiFGtleUxhc3RVc2VyTHBCYWxhbmNlIgt1c2VyQWRkcmVzcyIZa2V5VG90YWxMcEJhbGFuY2VJbnRlZ3JhbCIYa2V5VXNlckxwQmFsYW5jZUludGVncmFsIiZrZXlUb3RhbExwQmFsYW5jZUludGVncmFsTGFzdFVwZEhlaWdodCIla2V5VXNlckxwQmFsYW5jZUludGVncmFsTGFzdFVwZEhlaWdodCISa2V5V3hQZXJMcEludGVncmFsIh9rZXlXeFBlckxwSW50ZWdyYWxMYXN0VXBkSGVpZ2h0IhBrZXlXeFRvQ2xhaW1Vc2VyIiNrZXlXeFBlckxwSW50ZWdyYWxVc2VyTGFzdFVwZEhlaWdodCIKa2V5V3hQZXJMcCINa2V5V3hQZXJMcFgxOCIaa2V5V3hQZXJMcEludGVncmFsVXNlckxhc3QiGWtleU9wZXJhdGlvbkhpc3RvcnlSZWNvcmQiBHR5cGUiBnR4SWQ1OCITZm9ybWF0SGlzdG9yeVJlY29yZCIGYW1vdW50IhVPcGVyYXRpb25IaXN0b3J5RW50cnkiBHR4SWQiDmZhY3RvcnlBZGRyZXNzIg9mYWN0b3J5Q29udHJhY3QiEGVtaXNzaW9uQ29udHJhY3QiEGJvb3N0aW5nQ29udHJhY3QiCmJvb3N0Q29lZmYiAUAiFmxwU3Rha2luZ1Bvb2xzQ29udHJhY3QiC2tleU5leHRVc2VyIhBnZXRVc2Vyc0xpc3ROYW1lIgtrZXlMaXN0SGVhZCIIbGlzdE5hbWUiC2tleUxpc3RTaXplIgtrZXlMaXN0UHJldiICaWQiC2tleUxpc3ROZXh0Igxjb250YWluc05vZGUiCmhlYWRPclVuaXQiCnByZXZPclVuaXQiCm5leHRPclVuaXQiEWluc2VydE5vZGVBY3Rpb25zIghsaXN0U2l6ZSIJY2hlY2tOb2RlIhFkZWxldGVOb2RlQWN0aW9ucyIbY2FsY1d4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0IgxzdGFrZWRCeVVzZXIiJnd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0VXBkSGVpZ2h0T3JaZXJvIhJ3eFBlckxwSW50ZWdyYWxOZXciGnd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0S0VZIhRyZWZyZXNoUG9vbElOVEVHUkFMUyIOcG9vbEFkZHJlc3NTdHIiDWxwRGVsdGFBbW91bnQiDnN0YWtlZFRvdGFsS0VZIgtzdGFrZWRUb3RhbCISbm9uWmVyb1N0YWtlZFRvdGFsIgpwb29sV2VpZ2h0IhJlbWlzc2lvblN0YXJ0QmxvY2siFHd4RW1pc3Npb25QZXJCbG9ja1gzIhhwb29sV3hFbWlzc2lvblBlckJsb2NrWDMiEnd4UGVyTHBJbnRlZ3JhbEtFWSIfd3hQZXJMcEludGVncmFsTGFzdFVwZEhlaWdodEtFWSIKd3hQZXJMcEtFWSIcd3hQZXJMcEludGVncmFsTGFzdFVwZEhlaWdodCIPd3hQZXJMcEludGVncmFsIg93eFBlckxwT3JaZXJvWDMiAmRoIgl3eFBlckxwWDMiDnN0YWtlZFRvdGFsTmV3IhVub25aZXJvU3Rha2VkVG90YWxOZXciDHd4UGVyTHBYM05ldyIfd3hQZXJMcEludGVncmFsTGFzdFVwZEhlaWdodE5ldyIFZGVidWciEHJlZnJlc2hJTlRFR1JBTFMiDSR0MDE0NzYyMTQ4ODQiEXBvb2xJbnRlZ3JhbFNUQVRFIglwb29sREVCVUciD3N0YWtlZEJ5VXNlcktFWSIQd3hUb0NsYWltVXNlcktFWSIjd3hQZXJMcEludGVncmFsVXNlckxhc3RVcGRIZWlnaHRLRVkiDXd4VG9DbGFpbVVzZXIiF3d4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0IgZNVUxUMTEiEHd4VG9DbGFpbVVzZXJOZXciGnd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0TmV3IiN3eFBlckxwSW50ZWdyYWxVc2VyTGFzdFVwZEhlaWdodE5ldyIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCIdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQiFXBlcm1pc3Npb25EZW5pZWRFcnJvciIIbXVzdFRoaXMiAWkiC211c3RNYW5hZ2VyIgJwayIMc3Rha2VBY3Rpb25zIgtwb29sQWRkcmVzcyIRcmVmcmVzaFN0YWtlZFZvdGUiDSR0MDE4MTAwMTgyMTciDWludGVncmFsU1RBVEUiC2xpc3RBY3Rpb25zIg51bnN0YWtlQWN0aW9ucyIXbHBBc3NldFJlY2lwaWVudEFkZHJlc3MiFmNsYWltZWRCeVVzZXJNaW5SZXdhcmQiEGF2YWlsYWJsZVRvQ2xhaW0iFXRocm93SWZOb3RoaW5nVG9DbGFpbSIBciIRZmFjdG9yeUFkZHJlc3NTdHIiC2NoZWNrQ2FsbGVyIhZ2b3RpbmdFbWlzc2lvbkNvbnRyYWN0IgVjaGVrcyIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiFWNoZWNrTWFuYWdlclB1YmxpY0tleSICcG0iBWhhc1BNIgdjaGVja1BNIgNwbXQiCXBvb2xBZGRvbiIJY2FsbGVyU3RyIgZyZXN1bHQiEGNsYWltZWRCeVVzZXJLRVkiD2NsYWltZWRUb3RhbEtFWSIZY2xhaW1lZEJ5VXNlck1pblJld2FyZEtFWSIbY2xhaW1lZEJ5VXNlckJvb3N0UmV3YXJkS0VZIg1jbGFpbWVkQnlVc2VyIhhjbGFpbWVkQnlVc2VyQm9vc3RSZXdhcmQiDGNsYWltZWRUb3RhbCINJHQwMjYxNzkyNjI5MSISd3hBbW91bnRCb29zdFRvdGFsIg1taW5SZXdhcmRQYXJ0Ig9ib29zdFJld2FyZFBhcnQiC3RvdGFsUmV3YXJkIgl3eEFzc2V0SWQiCWVtaXRCb29zdCISY2xhaW1lZEJ5VXNlclZhbHVlIh5jbGFpbWVkQnlVc2VyTWluUmV3YXJkUGx1c1BhcnQiK2NsYWltZWRCeVVzZXJCb29zdFJld2FyZFBsdXNCb29zdFJld2FyZFBhcnQiIGNsYWltZWRUb3RhbFBsdXNBdmFpbGFibGVUb0NsYWltIgtjdXJyZW50SXRlciIKbHBBc3NldElkcyIGcmVzQWNjIgRpbmZvIgl1bmNsYWltZWQiB2NsYWltZWQiEXVzZXJWb3RlRmluYWxpemVkIgNyZXMiA2ludiISd3hFbWlzc2lvblBlckJsb2NrIgxwYXNzZWRCbG9ja3MiDnBvb2xXeEVtaXNzaW9uIgx1c2VyV3hSZXdhcmQiDSR0MDMwMzM5MzA0NTEiDmJvb3N0SW52UmVzdWx0Igpib29zdERlYnVnIgp1c2VyT3JVbml0IgckbWF0Y2gxIgRoZWFkIg5uZXh0VXNlck9yVW5pdCIIbmV4dFVzZXIiDSR0MDMzMDcyMzMxODIiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleWUAAWEACAABYgDoBwABYwCAwtcvAAFkABIAAWUJALYCAQCAgJC7utat8A0AAWYCAl9fAAFnBQFjAAFoCQC2AgEAAAABaQkAtgIBAAEBAWoBAWsJALkJAgkAzAgCAg1zdGFraW5nLnJpZGU6CQDMCAIJAKUIAQUEdGhpcwkAzAgCBQFrBQNuaWwCASABAWwBAWsJAAIBCQEBagEFAWsBAW0BAW4EAW8FAW4DCQABAgUBbwIJTGlzdFtBbnldBAFwBQFvBQFwCQACAQIbZmFpbCB0byBjYXN0IGludG8gTGlzdFtBbnldAQFxAQFuBAFvBQFuAwkAAQIFAW8CA0ludAQBcgUBbwUBcgkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEBcwEBbgQBbwUBbgMJAAECBQFvAgZTdHJpbmcEAXQFAW8FAXQJAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBAXUBAW4EAW8FAW4DCQABAgUBbwIKQnl0ZVZlY3RvcgQBdgUBbwUBdgkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEBdwIBeAF5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUBeAUBeQkArAICCQCsAgICD21hbmRhdG9yeSB0aGlzLgUBeQIPIGlzIG5vdCBkZWZpbmVkAQF6AgF4AXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQF4BQF5CQCsAgIJAKwCAgkArAICCQCsAgICCm1hbmRhdG9yeSAJAKUIAQUBeAIBLgUBeQIPIGlzIG5vdCBkZWZpbmVkAQFBAgF4AXkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUBeAUBeQAAAQFCAwF4AXkBQwkBC3ZhbHVlT3JFbHNlAgkAmggCBQF4BQF5BQFDAQFEAgF4AXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQF4BQF5CQCsAgIJAKwCAgIPbWFuZGF0b3J5IHRoaXMuBQF5Ag8gaXMgbm90IGRlZmluZWQBAUUCAXgBeQkBBXZhbHVlAQkAqAMBCQELdmFsdWVPckVsc2UCCQCdCAIFAXgFAXkCATABAUYDAXgBeQFDBAFvCQCdCAIFAXgFAXkDCQABAgUBbwIGU3RyaW5nBAFHBQFvCQEFdmFsdWUBCQCoAwEFAUcDCQABAgUBbwIEVW5pdAUBQwkAAgECC01hdGNoIGVycm9yAQFIAgFJAUoJALwCAwkAtgIBBQFJBQFlCQC2AgEFAUoBAUsCAW4BTAkAoAMBCQC8AgMFAW4JALYCAQUBTAUBZQEBTQACHCVzJXNfX2NvbmZpZ19fZmFjdG9yeUFkZHJlc3MBAU4AAholc19fdm90aW5nRW1pc3Npb25Db250cmFjdAABTwABAAFQAAIAAVEAAwABUgAEAAFTAAUAAVQABgABVQAHAQFWAAIRJXNfX2ZhY3RvcnlDb25maWcBAVcAAhQlc19fbWFuYWdlclB1YmxpY0tleQEBWAACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEBWQACFyVzX19zdGFibGVQb29sQWRkb25BZGRyAQFaAAINJXNfX2FkZG9uQWRkcgECYWEBAmFiCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAmFiCQDMCAICHm1hcHBpbmdzX19scEFzc2V0MlBvb2xDb250cmFjdAUDbmlsBQFmAQJhYwACECVzX19scFRva2Vuc0xpc3QBAmFkAQJhYgkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQJhYgkAzAgCAh5tYXBwaW5nc19fbHBBc3NldDJQb29sQ29udHJhY3QFA25pbAUBZgECYWUBAmFmCQC5CQIJAMwIAgIEJXMlcwkAzAgCAgpwb29sV2VpZ2h0CQDMCAIFAmFmBQNuaWwFAWYBAmFnAQJhaAkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFAmFoCQECYWMAAgAFAWYBAmFpAQJhaAkAtQkCCQEBegIFAmFoCQEBVgAFAWYBAmFqAQJhawkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJhawUBUAECYWwBAmFrCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmFrBQFTAQJhbQECYWsJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYWsFAU8BAmFuAAIbJXMlc19fcmF0ZVBlckJsb2NrX19jdXJyZW50AQJhbwACHiVzJXNfX3JhdGVQZXJCbG9ja01heF9fY3VycmVudAECYXAAAholcyVzX19lbWlzc2lvbl9fc3RhcnRCbG9jawECYXEAAhglcyVzX19lbWlzc2lvbl9fZHVyYXRpb24BAmFyAAIYJXMlc19fZW1pc3Npb25fX2VuZEJsb2NrAQJhcwICYXQCYXUJALkJAgkAzAgCAg4lcyVzJXNfX3N0YWtlZAkAzAgCBQJhdAkAzAgCBQJhdQUDbmlsBQFmAQJhdgECYXUJAKwCAgIXJXMlcyVzX19zdGFrZWRfX3RvdGFsX18FAmF1AQJhdwICYXUCYXQJALkJAgkAzAgCAg8lcyVzJXNfX2NsYWltZWQJAMwIAgUCYXQJAMwIAgUCYXUFA25pbAUBZgECYXgCAmF1AmF0CQC5CQIJAMwIAgIYJXMlcyVzX19jbGFpbWVkTWluUmV3YXJkCQDMCAIFAmF0CQDMCAIFAmF1BQNuaWwFAWYBAmF5AgJhdQJhdAkAuQkCCQDMCAICGiVzJXMlc19fY2xhaW1lZEJvb3N0UmV3YXJkCQDMCAIFAmF0CQDMCAIFAmF1BQNuaWwFAWYBAmF6AQJhdQkAuQkCCQDMCAICFiVzJXMlc19fY2xhaW1lZF9fdG90YWwJAMwIAgUCYXUFA25pbAUBZgECYUEBAXkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUBeQAAAQJhQgECYUMJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUCYUMJAMwIAgIFdG90YWwJAMwIAgIDYmFsBQNuaWwFAWYBAmFEAgJhQwJhRQkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQJhQwkAzAgCBQJhRQkAzAgCAgNiYWwFA25pbAUBZgECYUYBAmFDCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAmFDCQDMCAICBXRvdGFsCQDMCAICBmJhbElOVAUDbmlsBQFmAQJhRwICYUMCYUUJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUCYUMJAMwIAgUCYUUJAMwIAgIGYmFsSU5UBQNuaWwFAWYBAmFIAQJhQwkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQJhQwkAzAgCAgV0b3RhbAkAzAgCAgdsYXN0VXBkBQNuaWwFAWYBAmFJAgJhQwJhRQkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQJhQwkAzAgCBQJhRQkAzAgCAgdsYXN0VXBkBQNuaWwFAWYBAmFKAQJhQwkAuQkCCQDMCAICCCVzJXMlcyVzCQDMCAIFAmFDCQDMCAICBmNvbW1vbgkAzAgCAgVscEludAUDbmlsBQFmAQJhSwECYUMJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCBQJhQwkAzAgCAgZjb21tb24JAMwIAgIGbHBJbnRIBQNuaWwFAWYBAmFMAgJhQwJhRQkAuQkCCQDMCAICCCVzJXMlcyVzCQDMCAIFAmFDCQDMCAIFAmFFCQDMCAICBWxwSW50BQNuaWwFAWYBAmFNAgJhQwJhRQkAuQkCCQDMCAICCCVzJXMlcyVzCQDMCAIFAmFDCQDMCAIFAmFFCQDMCAICBmxwSW50SAUDbmlsBQFmAQJhTgECYUMJALkJAgkAzAgCAgIlcwkAzAgCBQJhQwkAzAgCAgd3eFBlckxwBQNuaWwFAWYBAmFPAQJhQwkAuQkCCQDMCAICAiVzCQDMCAIFAmFDCQDMCAICCnd4UGVyTHBYMTgFA25pbAUBZgECYVACAmFDAmFFCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgUCYUMJAMwIAgUCYUUJAMwIAgIFdUludEwFA25pbAUBZgECYVEDAmFSAmFFAmFTCQC5CQIJAMwIAgIRJXMlcyVzJXNfX2hpc3RvcnkJAMwIAgUCYVIJAMwIAgUCYUUJAMwIAgUCYVMFA25pbAUBZgECYVQEAmFFAmFDAmFSAmFVCQC5CQIJAMwIAgIMJXMlcyVzJWQlZCVkCQDMCAIFAmFFCQDMCAIFAmFDCQDMCAIFAmFSCQDMCAIJAKQDAQUGaGVpZ2h0CQDMCAIJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkApAMBBQJhVQUDbmlsBQFmAQJhVgUCYVICYUUCYUMCYVUCYVcJAQtTdHJpbmdFbnRyeQIJAQJhUQMFAmFSBQJhRQkA2AQBBQJhVwkBAmFUBAUCYUUFAmFDBQJhUgUCYVUAAmFYCQEBdwIFBHRoaXMJAQFNAAACYVkJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmFYAAJhawkBAmFpAQUCYVkAAmFaCQECYWwBBQJhawACYmEJAQJhagEFAmFrAAJiYgoAAmJjCQD8BwQFAmFaAhVnZXRCb29zdENvZWZmUkVBRE9OTFkFA25pbAUDbmlsAwkAAQIFAmJjAgNJbnQFAmJjCQACAQkArAICCQADAQUCYmMCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAACYmQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkAuQkCCQDMCAICAiVzCQDMCAICFmxwU3Rha2luZ1Bvb2xzQ29udHJhY3QFA25pbAUBZgkBAWoBAi5scF9zdGFraW5nX3Bvb2xzIGNvbnRyYWN0IGFkZHJlc3MgaXMgdW5kZWZpbmVkCQEBagECKWludmFsaWQgbHBfc3Rha2luZ19wb29scyBjb250cmFjdCBhZGRyZXNzAQJiZQECYUMJALkJAgkAzAgCAgQlcyVzCQDMCAIFAmFDCQDMCAICCG5leHRVc2VyBQNuaWwFAWYBAmJmAQJhQwkAuQkCCQDMCAICBXVzZXJzCQDMCAIFAmFDBQNuaWwFAWYBAmJnAQJiaAkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQJiaAkAzAgCAgRoZWFkBQNuaWwFAWYBAmJpAQJiaAkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQJiaAkAzAgCAgRzaXplBQNuaWwFAWYBAmJqAgJiaAJiawkAuQkCCQDMCAICCCVzJXMlcyVzCQDMCAIFAmJoCQDMCAIFAmJrCQDMCAICBHByZXYFA25pbAUBZgECYmwCAmJoAmJrCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgUCYmgJAMwIAgUCYmsJAMwIAgIEbmV4dAUDbmlsBQFmAQJibQICYmgCYmsEAmJuCQCdCAIFBHRoaXMJAQJiZwEFAmJoBAJibwkAnQgCBQR0aGlzCQECYmoCBQJiaAUCYmsEAmJwCQCdCAIFBHRoaXMJAQJibAIFAmJoBQJiawMDCQAAAgUCYmsJAQt2YWx1ZU9yRWxzZQIFAmJuAgAGCQECIT0CBQJibwUEdW5pdAYJAQIhPQIFAmJwBQR1bml0AQJicQICYmgCYmsEAmJuCQCdCAIFBHRoaXMJAQJiZwEFAmJoBAJicgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYmkBBQJiaAAABAJicwMJAQEhAQkBAmJtAgUCYmgFAmJrBgkAAgECC05vZGUgZXhpc3RzAwkAAAIFAmJzBQJicwkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJiaQEFAmJoCQBkAgUCYnIAAQUDbmlsAwkBAiE9AgUCYm4FBHVuaXQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmJsAgUCYmgFAmJrCQEFdmFsdWUBBQJibgkAzAgCCQELU3RyaW5nRW50cnkCCQECYmoCBQJiaAkBBXZhbHVlAQUCYm4FAmJrBQNuaWwFA25pbAkAzAgCCQELU3RyaW5nRW50cnkCCQECYmcBBQJiaAUCYmsFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECYnQCAmJoAmJrBAJibgkAnQgCBQR0aGlzCQECYmcBBQJiaAQCYnIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmJpAQUCYmgAAAQCYm8JAJ0IAgUEdGhpcwkBAmJqAgUCYmgFAmJrBAJicAkAnQgCBQR0aGlzCQECYmwCBQJiaAUCYmsJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmJpAQUCYmgJAGUCBQJicgABBQNuaWwDAwkBAiE9AgUCYm8FBHVuaXQJAQIhPQIFAmJwBQR1bml0BwkAzAgCCQELU3RyaW5nRW50cnkCCQECYmwCBQJiaAkBBXZhbHVlAQUCYm8JAQV2YWx1ZQEFAmJwCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJiagIFAmJoCQEFdmFsdWUBBQJicAkBBXZhbHVlAQUCYm8JAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmJqAgUCYmgFAmJrCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJibAIFAmJoBQJiawUDbmlsAwkBAiE9AgUCYnAFBHVuaXQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmJnAQUCYmgJAQV2YWx1ZQEFAmJwCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJibAIFAmJoBQJiawkAzAgCCQELRGVsZXRlRW50cnkBCQECYmoCBQJiaAkBBXZhbHVlAQUCYnAFA25pbAMJAQIhPQIFAmJvBQR1bml0CQDMCAIJAQtEZWxldGVFbnRyeQEJAQJiagIFAmJoBQJiawkAzAgCCQELRGVsZXRlRW50cnkBCQECYmwCBQJiaAkBBXZhbHVlAQUCYm8FA25pbAMJAAACBQJiawkBC3ZhbHVlT3JFbHNlAgUCYm4CAAkAzAgCCQELRGVsZXRlRW50cnkBCQECYmcBBQJiaAUDbmlsCQACAQkArAICCQCsAgIJAKwCAgIOaW52YWxpZCBub2RlOiAFAmJoAgEuBQJiawECYnUEAmJ2AmJ3AmJ4AmJ5AwMJAAACBQJidwUBaAkAvwICBQJidgUBaAcFAWgDCQAAAgUCYnYFAWgFAmJ4AwMJAL8CAgUCYncFAWgJAL8CAgUCYnYFAWgHCQEFdmFsdWUBCQCoAwEJAQF3AgUEdGhpcwUCYnkJAAIBAi1jYWxjV3hQZXJMcEludGVncmFsVXNlckxhc3Q6IHVuZXhwZWN0ZWQgc3RhdGUBAmJ6AwJhdQJiQQJiQgQCYkMJAQJhdgEFAmF1BAJiRAkAtgIBCQECYUEBBQJiQwQCYkUDCQAAAgUCYkQFAWgFAWkFAmJEBAJiRgkBEUBleHRyTmF0aXZlKDEwNTApAgUCYVkJAQJhZQEFAmJBBAJiRwkBAUQCBQJhWgkBAmFwAAQCYkgJAGgCCQEBRAIFAmFaCQECYW4ABQFiBAJiSQkAawMFAmJIBQJiRgkAaAIFAWcFAmJiBAJiSgkBAmFKAQUCYXUEAmJLCQECYUsBBQJhdQQCYkwJAQJhTgEFAmF1BAJiTQkBAUIDBQR0aGlzBQJiSwUCYkcEAmJOCQEBRQIFBHRoaXMFAmJKBAJiTwAABAJiUAkAlgMBCQDMCAIJAGUCBQZoZWlnaHQFAmJNCQDMCAIAAAUDbmlsBAJiUQMJAQIhPQIFAmJPAAAJALYCAQUCYk8JALwCAwkAtgIBBQJiSQkAtgIBBQFjBQJiRQQCYlIJALcCAgUCYkQJALYCAQUCYkIEAmJTAwkAAAIFAmJSBQFoBQFpBQJiUgQCYngJALcCAgUCYk4JALkCAgUCYlEJALYCAQUCYlAEAmJUCQC6AgIJALYCAQUCYkkFAmJTBAJiVQUGaGVpZ2h0BAJiVgkAuQkCCQDMCAIJAKYDAQUCYngJAMwIAgkApAMBBQJiUAkAzAgCCQCmAwEFAmJRCQDMCAIJAKYDAQUCYkQJAMwIAgkApAMBBQJiSQkAzAgCCQCkAwEFAmJICQDMCAIJAKQDAQUCYkYFA25pbAICOjoJAJUKAwUCYngJAMwIAgkBC1N0cmluZ0VudHJ5AgUCYkoJAKYDAQUCYngJAMwIAgkBDEludGVnZXJFbnRyeQIFAmJLBQJiVQkAzAgCCQELU3RyaW5nRW50cnkCBQJiTAkApgMBBQJiVAUDbmlsBQJiVgECYlcEAmF1AmF0AmJBAmJCBAJiWAkBAmJ6AwUCYXUFAmJBBQJiQgQCYngIBQJiWAJfMQQCYlkIBQJiWAJfMgQCYloIBQJiWAJfMwQCY2EJAQJhcwIFAmF0BQJhdQQCYnYJAQJhQQEFAmNhBAJjYgkBAmFMAgUCYXUFAmF0BAJjYwkBAmFNAgUCYXUFAmF0BAJieQkBAmFQAgUCYXUFAmF0BAJjZAkBAUUCBQR0aGlzBQJjYgQCYncJAQFBAgUEdGhpcwUCY2MEAmNlCQECYnUECQC2AgEFAmJ2CQC2AgEFAmJ3BQJieAUCYnkEAmNmCQBoAgUBYwUBYgQCY2cJAJgDAQkAzAgCCQC3AgIFAmNkCQC8AgMJALgCAgUCYngFAmNlCQC2AgEFAmJ2CQC2AgEFAmNmCQDMCAIFAWgFA25pbAQCY2gFAmJ4BAJjaQUGaGVpZ2h0BAJiVgkAuQkCCQDMCAIJAKYDAQUCY2QJAMwIAgkApgMBBQJjZQkAzAgCCQCkAwEFAmJ2CQDMCAIFAmJaCQDMCAIJAKQDAQUGaGVpZ2h0BQNuaWwCAjo6CQCVCgMFAmNnCQDOCAIFAmJZCQDMCAIJAQtTdHJpbmdFbnRyeQIFAmNiCQCmAwEFAmNnCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjYwUCY2kJAMwIAgkBC1N0cmluZ0VudHJ5AgUCYnkJAKYDAQUCY2gFA25pbAUCYlYBAmNqAAQBbwkAoggBCQEBVwADCQABAgUBbwIGU3RyaW5nBAFHBQFvCQDZBAEFAUcDCQABAgUBbwIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJjawAEAW8JAKIIAQkBAVgAAwkAAQIFAW8CBlN0cmluZwQBRwUBbwkA2QQBBQFHAwkAAQIFAW8CBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgACY2wJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAECY20BAmNuAwkAAAIIBQJjbgZjYWxsZXIFBHRoaXMGBQJjbAECY28BAmNuBAFvCQECY2oAAwkAAQIFAW8CCkJ5dGVWZWN0b3IEAmNwBQFvAwkAAAIIBQJjbg9jYWxsZXJQdWJsaWNLZXkFAmNwBgUCY2wDCQABAgUBbwIEVW5pdAMJAAACCAUCY24GY2FsbGVyBQR0aGlzBgUCY2wJAAIBAgtNYXRjaCBlcnJvcgECY3EFAmNuAmFDAmNyAmFFAmFVBAJhdAkApQgBBQJhRQQCYXUJANgEAQUCYUMEAmJBCQClCAEFAmNyBAJjYQkBAmFzAgUCYXQFAmF1BAJiQwkBAmF2AQUCYXUEAmJ2CQECYUEBBQJjYQQCY3MDCQAAAgUCYnYAAAkA/AcEBQJiYQISb25TdGFrZWRWb3RlVXBkYXRlCQDMCAIFAmF1CQDMCAIFAmF0CQDMCAIGBQNuaWwFA25pbAUEdW5pdAMJAAACBQJjcwUCY3MEAmJECQECYUEBBQJiQwQCY3QJAQJiVwQFAmF1BQJhdAUCYkEFAmFVBAJjZwgFAmN0Al8xBAJjdQgFAmN0Al8yBAJiVggFAmN0Al8zBAJiaAkBAmJmAQUCYXUEAmN2AwkBAmJtAgUCYmgFAmF0BQNuaWwJAQJicQIFAmJoBQJhdAkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFAmNhCQBkAgUCYnYFAmFVCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJiQwkAZAIFAmJEBQJhVQkAzAgCCQECYVYFAgVzdGFrZQUCYXQFAmF1BQJhVQgFAmNuDXRyYW5zYWN0aW9uSWQFA25pbAUCY3UFAmN2CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJjdwYCY24CYUMCY3ICYUUCY3gCYVUEAmF0CQClCAEFAmFFBAJhdQkA2AQBBQJhQwQCYkEJAKUIAQUCY3IEAmNhCQECYXMCBQJhdAUCYXUEAmJDCQECYXYBBQJhdQQCYnYJAQJhQQEFAmNhBAJiRAkBAmFBAQUCYkMEAmN1CAkBAmJXBAUCYXUFAmF0BQJiQQkBAS0BBQJhVQJfMgQCYmgJAQJiZgEFAmF1BAJjdgMDCQECYm0CBQJiaAUCYXQJAAACBQJhVQUCYnYHCQECYnQCBQJiaAUCYXQFA25pbAQCY3MDCQAAAgUCYVUFAmJ2CQD8BwQFAmJhAhJvblN0YWtlZFZvdGVVcGRhdGUJAMwIAgUCYXUJAMwIAgUCYXQJAMwIAgcFA25pbAUDbmlsBQR1bml0AwkAAAIFAmNzBQJjcwQCY3kJAQFFAgUEdGhpcwkBAmF4AgUCYXUFAmF0BAJjZwgJAQJiVwQFAmF1BQJhdAUCYkEAAAJfMQQCY3oJALgCAgUCY2cFAmN5BAJjQQYEAmNCAwkAvwICBQJjegUBaAkA/AcEBQR0aGlzAg9jbGFpbVd4SU5URVJOQUwJAMwIAgUCYXUJAMwIAgUCYXQJAMwIAgUCY0EFA25pbAUDbmlsBQR1bml0AwkAAAIFAmNCBQJjQgMJAGYCBQJhVQUCYnYJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICDnBhc3NlZCBhbW91bnQ9CQCkAwEFAmFVAhsgaXMgZ3JlYXRlciB0aGFuIGF2YWlsYWJsZT0JAKQDAQUCYnYCDC4gbHBBc3NldElkPQUCYXUCEi4gc3Rha2VkQnlVc2VyS0VZPQUCY2EJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjYQkAZQIFAmJ2BQJhVQkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYkMJAGUCBQJiRAUCYVUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY3gFAmFVBQJhQwkAzAgCCQECYVYFAgd1bnN0YWtlBQJhdAUCYXUFAmFVCAUCY24NdHJhbnNhY3Rpb25JZAUDbmlsBQJjdQUCY3YJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4RAmNuAQtjb25zdHJ1Y3RvcgECY0MEAmNECQECY28BBQJjbgMJAAACBQJjRAUCY0QJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAU0ABQJjQwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNuAQ1jb25zdHJ1Y3RvclYyAQJjRQQCY0YJAMwIAgkBAmNvAQUCY24JAMwIAgMJAQIhPQIJAKYIAQUCY0UFBHVuaXQGAihpbnZhbGlkIHZvdGluZyBlbWlzc2lvbiBjb250cmFjdCBhZGRyZXNzBQNuaWwDCQAAAgUCY0YFAmNGCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFOAAUCY0UFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjbgEKc2V0TWFuYWdlcgECY0cEAmNECQECY28BBQJjbgMJAAACBQJjRAUCY0QEAmNICQDZBAEFAmNHAwkAAAIFAmNIBQJjSAkAzAgCCQELU3RyaW5nRW50cnkCCQEBWAAFAmNHBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY24BDmNvbmZpcm1NYW5hZ2VyAAQCY0kJAQJjawAEAmNKAwkBCWlzRGVmaW5lZAEFAmNJBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJjSgUCY0oEAmNLAwkAAAIIBQJjbg9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmNJBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJjSwUCY0sJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVcACQDYBAEJAQV2YWx1ZQEFAmNJCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFYAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNuAQVzdGFrZQADCQECIT0CCQCQAwEIBQJjbghwYXltZW50cwABCQACAQI0aW52YWxpZCBwYXltZW50IC0gZXhhY3Qgb25lIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQCY0wJAJEDAggFAmNuCHBheW1lbnRzAAAEAmFDCQEFdmFsdWUBCAUCY0wHYXNzZXRJZAQCYXUJANgEAQUCYUMEAmFVCAUCY0wGYW1vdW50BAJiQQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmFZCQECYWEBBQJhdQkArAICAhV1bnN1cHBvcnRlZCBscCBhc3NldCAFAmF1BAJjcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYkEEAmFFAwkAAAIIBQJjbgZjYWxsZXIFAmNyCAUCY24Mb3JpZ2luQ2FsbGVyCAUCY24GY2FsbGVyCQECY3EFBQJjbgUCYUMFAmNyBQJhRQUCYVUCY24BCHN0YWtlRm9yAQJhdAMJAQIhPQIJAJADAQgFAmNuCHBheW1lbnRzAAEJAAIBAjRpbnZhbGlkIHBheW1lbnQgLSBleGFjdCBvbmUgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBAJjTAkAkQMCCAUCY24IcGF5bWVudHMAAAQCYUMJAQV2YWx1ZQEIBQJjTAdhc3NldElkBAJhdQkA2AQBBQJhQwQCYVUIBQJjTAZhbW91bnQEAmJBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYVkJAQJhYQEFAmF1CQCsAgICFXVuc3VwcG9ydGVkIGxwIGFzc2V0IAUCYXUEAmNyCQERQGV4dHJOYXRpdmUoMTA2MikBBQJiQQQCYUUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQJhdAkBAWoBAhRpbnZhbGlkIHVzZXIgYWRkcmVzcwkBAmNxBQUCY24FAmFDBQJjcgUCYUUFAmFVAmNuAQd1bnN0YWtlAgJhdQJhVQQCYUMJANkEAQUCYXUEAmJBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYVkJAQJhYQEFAmF1CQCsAgICFXVuc3VwcG9ydGVkIGxwIGFzc2V0IAUCYXUEAmNyCQERQGV4dHJOYXRpdmUoMTA2MikBBQJiQQQCY00JAQt2YWx1ZU9yRWxzZQIJAJ0IAgUCY3IJAQFaAAUCYkEEAmNOCQClCAEIBQJjbgZjYWxsZXIEAmFFAwMJAAACBQJjTgUCYkEGCQAAAgUCY04FAmNNCAUCY24Mb3JpZ2luQ2FsbGVyCAUCY24GY2FsbGVyBAJjeAgFAmNuBmNhbGxlcgkBAmN3BgUCY24FAmFDBQJjcgUCYUUFAmN4BQJhVQJjbgEPdW5zdGFrZUlOVEVSTkFMBAJhQwJhVQJhRQJjeAQCYXUJANgEAQUCYUMEAmNyCQERQGV4dHJOYXRpdmUoMTA2MikBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYVkJAQJhYQEFAmF1CQCsAgICFXVuc3VwcG9ydGVkIGxwIGFzc2V0IAUCYXUEAmNEAwkAAAIIBQJjbgZjYWxsZXIFAmNyBgUCY2wDCQAAAgUCY0QFAmNECQECY3cGBQJjbgUCYUMFAmNyCQEHQWRkcmVzcwEFAmFFCQEHQWRkcmVzcwEFAmN4BQJhVQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjbgEHY2xhaW1XeAECYXUEAmF0CQClCAEIBQJjbgZjYWxsZXIEAmNBBgQCY08JAPwHBAUEdGhpcwIPY2xhaW1XeElOVEVSTkFMCQDMCAIFAmF1CQDMCAIFAmF0CQDMCAIFAmNBBQNuaWwFA25pbAkAlAoCBQNuaWwFAmNPAmNuARFjbGFpbVd4RG9Ob3RUaHJvdwECYXUEAmF0CQClCAEIBQJjbgZjYWxsZXIEAmNBBwQCY08JAPwHBAUEdGhpcwIPY2xhaW1XeElOVEVSTkFMCQDMCAIFAmF1CQDMCAIFAmF0CQDMCAIFAmNBBQNuaWwFA25pbAkAlAoCBQNuaWwFAmNPAmNuAQ9jbGFpbVd4SU5URVJOQUwDAmF1AmF0AmNBBAJjRAkBAmNtAQUCY24DCQAAAgUCY0QFAmNEBAJhRQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFAmF0AiVjbGFpbVd4SU5URVJOQUw6IGludmFsaWQgdXNlciBhZGRyZXNzBAJiQQkBAXoCBQJhWQkBAmFkAQUCYXUEAmNQCQECYXcCBQJhdQUCYXQEAmNRCQECYXoBBQJhdQQCY1IJAQJheAIFAmF1BQJhdAQCY1MJAQJheQIFAmF1BQJhdAQCY1QJAQFFAgUEdGhpcwUCY1AEAmN5CQEBRQIFBHRoaXMFAmNSBAJjVQkBAUUCBQR0aGlzBQJjUwQCY1YJAQFFAgUEdGhpcwUCY1EEAmNXCQECYlcEBQJhdQUCYXQFAmJBAAAEAmNnCAUCY1cCXzEEAmN1CAUCY1cCXzIEAmJWCAUCY1cCXzMEAmN6CQCYAwEJAMwIAgkAuAICBQJjZwUCY3kJAMwIAgUBaAUDbmlsAwkAwAICBQFoBQJjegMFAmNBCQACAQIQbm90aGluZyB0byBjbGFpbQkAlAoCBQNuaWwAAAQCY1gJAJYDAQkAzAgCCQEBcQEJAJEDAgkBAW0BCQD8BwQFAmJhAgxjbGFpbVd4Qm9vc3QJAMwIAgUCYXUJAMwIAgUCYXQFA25pbAUDbmlsAAAJAMwIAgAABQNuaWwEAmNZBQJjegQCY1oJAJkDAQkAzAgCCQC5AgIFAmNZCQC2AgEJAGUCBQJiYgABCQDMCAIJALYCAQUCY1gFA25pbAQCZGEJALcCAgUCY1kFAmNaBAJkYgkBAXUBCQCRAwIJAQFtAQkA/AcEBQJhWgIEZW1pdAkAzAgCCQCgAwEFAmNZBQNuaWwFA25pbAAABAJkYwkBAW0BCQD8BwQFAmFaAgRlbWl0CQDMCAIJAKADAQUCY1oFA25pbAUDbmlsAwkAAAIFAmRjBQJkYwQCZGQJALcCAgkAtwICBQJjVAUCY1kFAmNaBAJkZQkAtwICBQJjeQUCY1kEAmRmCQC3AgIFAmNVBQJjWgQCZGcJALcCAgUCY1YFAmN6CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUCY1AJAKYDAQUCZGQJAMwIAgkBC1N0cmluZ0VudHJ5AgUCY1IJAKYDAQUCZGUJAMwIAgkBC1N0cmluZ0VudHJ5AgUCY1MJAKYDAQUCZGYJAMwIAgkBC1N0cmluZ0VudHJ5AgUCY1EJAKYDAQUCZGcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUUJAKADAQUCY1kFAmRiCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFFCQCgAwEFAmNaBQJkYgkAzAgCCQECYVYFAgVjbGFpbQUCYXQFAmF1CQCgAwEFAmN6CAUCY24NdHJhbnNhY3Rpb25JZAUDbmlsCQCgAwEFAmRhCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNuARtjbGFpbVd4QnVsa0ludGVybmFsUkVBRE9OTFkEAmRoAmRpAmF0AmRqAwkAAAIFAmRoCQCQAwEFAmRpCQCUCgIFA25pbAUCZGoEAmFDCQCRAwIFAmRpBQJkaAQCZGsJALUJAgoAAmJjCQD8BwQFBHRoaXMCD2NsYWltV3hSRUFET05MWQkAzAgCBQJhQwkAzAgCBQJhdAUDbmlsBQNuaWwDCQABAgUCYmMCBlN0cmluZwUCYmMJAAIBCQCsAgIJAAMBBQJiYwIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nBQFmBAJkbAkAkQMCBQJkawADBAJkbQkAkQMCBQJkawAEBAJkbgoAAmJjCQD8BwQFAmJhAhxnZXRVc2VyVm90ZUZpbmFsaXplZFJFQURPTkxZCQDMCAIFAmFDCQDMCAIFAmF0BQNuaWwFA25pbAMJAAECBQJiYwIDSW50BQJiYwkAAgEJAKwCAgkAAwEFAmJjAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEAmRvCQDNCAIFAmRqCQC5CQIJAMwIAgIGJWQlZCVkCQDMCAIFAmRsCQDMCAIFAmRtCQDMCAIJAKQDAQUCZG4FA25pbAUBZgQCZHAKAAJiYwkA/AcEBQR0aGlzAhtjbGFpbVd4QnVsa0ludGVybmFsUkVBRE9OTFkJAMwIAgkAZAIFAmRoAAEJAMwIAgUCZGkJAMwIAgUCYXQJAMwIAgUCZG8FA25pbAUDbmlsAwkAAQIFAmJjAglMaXN0W0FueV0FAmJjCQACAQkArAICCQADAQUCYmMCHiBjb3VsZG4ndCBiZSBjYXN0IHRvIExpc3RbQW55XQMJAAACBQJkcAUCZHAJAJQKAgUDbmlsBQJkcAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjbgETY2xhaW1XeEJ1bGtSRUFET05MWQICZGkCYXQEAmRvCQD8BwQFBHRoaXMCG2NsYWltV3hCdWxrSW50ZXJuYWxSRUFET05MWQkAzAgCAAAJAMwIAgUCZGkJAMwIAgUCYXQJAMwIAgUDbmlsBQNuaWwFA25pbAkAlAoCBQNuaWwFAmRvAmNuAQ9jbGFpbVd4UkVBRE9OTFkCAmF1AmF0BAJjYQkBAmFzAgUCYXQFAmF1BAJiQwkBAmF2AQUCYXUEAmNQCQECYXcCBQJhdQUCYXQEAmNSCQECYXgCBQJhdQUCYXQEAmJ2CQECYUEBBQJjYQQCYkQJAQJhQQEFAmJDBAJjVAkBAUUCBQR0aGlzBQJjUAQCY3kJAQFFAgUEdGhpcwUCY1IEAmJBCQEBegIFAmFZCQECYWQBBQJhdQQCYkYJARFAZXh0ck5hdGl2ZSgxMDUwKQIFAmFZCQECYWUBBQJiQQQCZHEJAQFEAgUCYVoJAQJhbgAEAmJHCQEBRAIFAmFaCQECYXAABAJkcgMJAGYCBQJiRwUGaGVpZ2h0AAAJAGUCBQZoZWlnaHQFAmJHBAJkcwkAawMJAGgCBQJkcQUCZHIFAmJGBQFnBAJkdAkAawMFAmRzBQJidgUCYkQEAmR1CQECYlcEBQJhdQUCYXQFAmJBAAAEAmNnCAUCZHUCXzEEAmN1CAUCZHUCXzIEAmJWCAUCZHUCXzMEAmN6CQCYAwEJAMwIAgkAuAICBQJjZwUCY3kJAMwIAgUBaAUDbmlsBAJkdgkBAW0BCQD8BwQFAmJhAhRjbGFpbVd4Qm9vc3RSRUFET05MWQkAzAgCBQJhdQkAzAgCBQJhdAUDbmlsBQNuaWwEAmNYCQCWAwEJAMwIAgkBAXEBCQCRAwIFAmR2AAAJAMwIAgAABQNuaWwEAmR3CQEBcwEJAJEDAgUCZHYAAQQCY1kFAmN6BAJjWgkAmQMBCQDMCAIJALkCAgUCY1kJALYCAQkAZQIFAmJiAAEJAMwIAgkAtgIBBQJjWAUDbmlsBAJkYQkAtwICBQJjWQUCY1oJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJXMlcyVkJWQlZCVkJXMJAMwIAgUCYXUJAMwIAgUCYXQJAMwIAgkApgMBBQJkYQkAzAgCCQCmAwEFAmNUCQDMCAIJAKYDAQUCY1kJAMwIAgkApgMBBQJjWgkAzAgCAgRzb29uBQNuaWwFAWYCY24BFHN0YWtlZEJ5VXNlclJFQURPTkxZAgJhdQJhdAQCYnYJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBAmFzAgUCYXQFAmF1AAAJAJQKAgUDbmlsBQJidgJjbgESdXNlcnNMaXN0VHJhdmVyc2FsAQJhQwQCY0QDCQAAAgkA2AQBCAgFAmNuBmNhbGxlcgVieXRlcwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEBTgACAAYJAQJjbwEFAmNuAwkAAAIFAmNEBQJjRAQCYmgJAQJiZgEFAmFDBAJkeAkAoggBCQECYmUBBQJhQwQCYm4JAKIIAQkBAmJnAQUCYmgEAW8FAmR4AwkAAQIFAW8CBFVuaXQEAmR5BQJibgMJAAECBQJkeQIEVW5pdAkAlAoCBQNuaWwHAwkAAQIFAmR5AgZTdHJpbmcEAmR6BQJkeQkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJiZQEFAmFDBQJkegUDbmlsBgkAAgECC01hdGNoIGVycm9yAwkAAQIFAW8CBlN0cmluZwQCYUUFAW8EAmN5CQEBRQIFBHRoaXMJAQJheAIFAmFDBQJhRQQCY3IJAQF6AgUCYVkJAQJhZAEFAmFDBAJjZwgJAQJiVwQFAmFDBQJhRQUCY3IAAAJfMQQCY3oJALgCAgUCY2cFAmN5BAJjQQYEAmNCAwkAvwICBQJjegUBaAkA/AcEBQR0aGlzAg9jbGFpbVd4SU5URVJOQUwJAMwIAgUCYUMJAMwIAgUCYUUJAMwIAgUCY0EFA25pbAUDbmlsBQR1bml0AwkAAAIFAmNCBQJjQgQCZEEJAKIIAQkBAmJsAgUCYmgFAmFFBAJkeQUCZEEDCQABAgUCZHkCBFVuaXQJAJQKAgkAzAgCCQELRGVsZXRlRW50cnkBCQECYmUBBQJhQwUDbmlsBwMJAAECBQJkeQIGU3RyaW5nBAJkQgUCZHkJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYmUBBQJhQwUCZEIFA25pbAYJAAIBAgtNYXRjaCBlcnJvcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECC01hdGNoIGVycm9yCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNuAQ5vbk1vZGlmeVdlaWdodAICYXUCYkEDCQECIT0CCAUCY24GY2FsbGVyBQJhWQkAAgECEnBlcm1pc3Npb25zIGRlbmllZAQCZEMJAQJiegMFAmF1BQJiQQAABAJieAgFAmRDAl8xBAJiWQgFAmRDAl8yBAJiWggFAmRDAl8zBQJiWQECZEQBAmRFAAQCZEYEAW8JAQJjagADCQABAgUBbwIKQnl0ZVZlY3RvcgQCY3AFAW8FAmNwAwkAAQIFAW8CBFVuaXQIBQJkRA9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgkA9AMDCAUCZEQJYm9keUJ5dGVzCQCRAwIIBQJkRAZwcm9vZnMAAAUCZEaUUm90", "height": 2504060, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Ha2VyedYJfJzftgbk1YUW5XuRHJBwvYvitGFNbYHdHH4 Next: EbsRBQWZa8sJRpSdEuAtvhhzAdcEMshah6YSyeDUYVwo Diff:
OldNewDifferences
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
6-let b = 100000000
6+let b = 1000
77
8-let c = 18
8+let c = 100000000
99
10-let d = toBigInt(1000000000000000000)
10+let d = 18
1111
12-let e = "__"
12+let e = toBigInt(1000000000000000000)
1313
14-let f = b
14+let f = "__"
1515
16-let g = toBigInt(0)
16+let g = c
1717
18-let h = toBigInt(1)
18+let h = toBigInt(0)
1919
20-func i (j) = makeString(["staking.ride:", toString(this), j], " ")
20+let i = toBigInt(1)
21+
22+func j (k) = makeString(["staking.ride:", toString(this), k], " ")
2123
2224
23-func k (j) = throw(i(j))
25+func l (k) = throw(j(k))
2426
2527
26-func l (m) = {
27- let n = m
28- if ($isInstanceOf(n, "List[Any]"))
28+func m (n) = {
29+ let o = n
30+ if ($isInstanceOf(o, "List[Any]"))
2931 then {
30- let o = n
31- o
32+ let p = o
33+ p
3234 }
3335 else throw("fail to cast into List[Any]")
3436 }
3537
3638
37-func p (m) = {
38- let n = m
39- if ($isInstanceOf(n, "Int"))
39+func q (n) = {
40+ let o = n
41+ if ($isInstanceOf(o, "Int"))
4042 then {
41- let q = n
42- q
43+ let r = o
44+ r
4345 }
4446 else throw("fail to cast into Int")
4547 }
4648
4749
48-func r (m) = {
49- let n = m
50- if ($isInstanceOf(n, "String"))
50+func s (n) = {
51+ let o = n
52+ if ($isInstanceOf(o, "String"))
5153 then {
52- let s = n
53- s
54+ let t = o
55+ t
5456 }
5557 else throw("fail to cast into Int")
5658 }
5759
5860
59-func t (m) = {
60- let n = m
61- if ($isInstanceOf(n, "ByteVector"))
61+func u (n) = {
62+ let o = n
63+ if ($isInstanceOf(o, "ByteVector"))
6264 then {
63- let u = n
64- u
65+ let v = o
66+ v
6567 }
6668 else throw("fail to cast into Int")
6769 }
6870
6971
70-func v (w,x) = valueOrErrorMessage(getString(w, x), (("mandatory this." + x) + " is not defined"))
72+func w (x,y) = valueOrErrorMessage(getString(x, y), (("mandatory this." + y) + " is not defined"))
7173
7274
73-func y (w,x) = valueOrErrorMessage(getString(w, x), (((("mandatory " + toString(w)) + ".") + x) + " is not defined"))
75+func z (x,y) = valueOrErrorMessage(getString(x, y), (((("mandatory " + toString(x)) + ".") + y) + " is not defined"))
7476
7577
76-func z (w,x) = valueOrElse(getInteger(w, x), 0)
78+func A (x,y) = valueOrElse(getInteger(x, y), 0)
7779
7880
79-func A (w,x,B) = valueOrElse(getInteger(w, x), B)
81+func B (x,y,C) = valueOrElse(getInteger(x, y), C)
8082
8183
82-func C (w,x) = valueOrErrorMessage(getInteger(w, x), (("mandatory this." + x) + " is not defined"))
84+func D (x,y) = valueOrErrorMessage(getInteger(x, y), (("mandatory this." + y) + " is not defined"))
8385
8486
85-func D (w,x) = value(parseBigInt(valueOrElse(getString(w, x), "0")))
87+func E (x,y) = value(parseBigInt(valueOrElse(getString(x, y), "0")))
8688
8789
88-func E (w,x,B) = {
89- let n = getString(w, x)
90- if ($isInstanceOf(n, "String"))
90+func F (x,y,C) = {
91+ let o = getString(x, y)
92+ if ($isInstanceOf(o, "String"))
9193 then {
92- let F = n
93- value(parseBigInt(F))
94+ let G = o
95+ value(parseBigInt(G))
9496 }
95- else if ($isInstanceOf(n, "Unit"))
96- then B
97+ else if ($isInstanceOf(o, "Unit"))
98+ then C
9799 else throw("Match error")
98100 }
99101
100102
101-func G (H,I) = fraction(toBigInt(H), d, toBigInt(I))
103+func H (I,J) = fraction(toBigInt(I), e, toBigInt(J))
102104
103105
104-func J (m,K) = toInt(fraction(m, toBigInt(K), d))
106+func K (n,L) = toInt(fraction(n, toBigInt(L), e))
105107
106108
107-func L () = "%s%s__config__factoryAddress"
109+func M () = "%s%s__config__factoryAddress"
108110
109111
110-func M () = "%s__votingEmissionContract"
112+func N () = "%s__votingEmissionContract"
111113
112114
113-let N = 1
115+let O = 1
114116
115-let O = 2
117+let P = 2
116118
117-let P = 3
119+let Q = 3
118120
119-let Q = 4
121+let R = 4
120122
121-let R = 5
123+let S = 5
122124
123-let S = 6
125+let T = 6
124126
125-let T = 7
127+let U = 7
126128
127-func U () = "%s__factoryConfig"
129+func V () = "%s__factoryConfig"
128130
129131
130-func V () = "%s__managerPublicKey"
132+func W () = "%s__managerPublicKey"
131133
132134
133-func W () = "%s__pendingManagerPublicKey"
135+func X () = "%s__pendingManagerPublicKey"
134136
135137
136-func X () = "%s__stablePoolAddonAddr"
138+func Y () = "%s__stablePoolAddonAddr"
137139
138140
139-func Y () = "%s__addonAddr"
141+func Z () = "%s__addonAddr"
140142
141143
142-func Z (aa) = makeString(["%s%s%s", aa, "mappings__lpAsset2PoolContract"], e)
144+func aa (ab) = makeString(["%s%s%s", ab, "mappings__lpAsset2PoolContract"], f)
143145
144146
145-func ab () = "%s__lpTokensList"
147+func ac () = "%s__lpTokensList"
146148
147149
148-func ac (aa) = makeString(["%s%s%s", aa, "mappings__lpAsset2PoolContract"], e)
150+func ad (ab) = makeString(["%s%s%s", ab, "mappings__lpAsset2PoolContract"], f)
149151
150152
151-func ad (ae) = makeString(["%s%s", "poolWeight", ae], e)
153+func ae (af) = makeString(["%s%s", "poolWeight", af], f)
152154
153155
154-func af (ag) = split(valueOrElse(getString(ag, ab()), ""), e)
156+func ag (ah) = split(valueOrElse(getString(ah, ac()), ""), f)
155157
156158
157-func ah (ag) = split(y(ag, U()), e)
159+func ai (ah) = split(z(ah, V()), f)
158160
159161
160-func ai (aj) = addressFromStringValue(aj[O])
162+func aj (ak) = addressFromStringValue(ak[P])
161163
162164
163-func ak (aj) = addressFromStringValue(aj[R])
165+func al (ak) = addressFromStringValue(ak[S])
164166
165167
166-func al (aj) = addressFromStringValue(aj[N])
168+func am (ak) = addressFromStringValue(ak[O])
167169
168170
169-func am () = "%s%s__ratePerBlock__current"
171+func an () = "%s%s__ratePerBlock__current"
170172
171173
172-func an () = "%s%s__ratePerBlockMax__current"
174+func ao () = "%s%s__ratePerBlockMax__current"
173175
174176
175-func ao () = "%s%s__emission__startBlock"
177+func ap () = "%s%s__emission__startBlock"
176178
177179
178-func ap () = "%s%s__emission__duration"
180+func aq () = "%s%s__emission__duration"
179181
180182
181-func aq () = "%s%s__emission__endBlock"
183+func ar () = "%s%s__emission__endBlock"
182184
183185
184-func ar (as,at) = makeString(["%s%s%s__staked", as, at], e)
186+func as (at,au) = makeString(["%s%s%s__staked", at, au], f)
185187
186188
187-func au (at) = ("%s%s%s__staked__total__" + at)
189+func av (au) = ("%s%s%s__staked__total__" + au)
188190
189191
190-func av (at,as) = makeString(["%s%s%s__claimed", as, at], e)
192+func aw (au,at) = makeString(["%s%s%s__claimed", at, au], f)
191193
192194
193-func aw (at,as) = makeString(["%s%s%s__claimedMinReward", as, at], e)
195+func ax (au,at) = makeString(["%s%s%s__claimedMinReward", at, au], f)
194196
195197
196-func ax (at,as) = makeString(["%s%s%s__claimedBoostReward", as, at], e)
198+func ay (au,at) = makeString(["%s%s%s__claimedBoostReward", at, au], f)
197199
198200
199-func ay (at) = makeString(["%s%s%s__claimed__total", at], e)
201+func az (au) = makeString(["%s%s%s__claimed__total", au], f)
200202
201203
202-func az (x) = valueOrElse(getInteger(this, x), 0)
204+func aA (y) = valueOrElse(getInteger(this, y), 0)
203205
204206
205-func aA (aB) = makeString(["%s%s%s", aB, "total", "bal"], e)
207+func aB (aC) = makeString(["%s%s%s", aC, "total", "bal"], f)
206208
207209
208-func aC (aB,aD) = makeString(["%s%s%s", aB, aD, "bal"], e)
210+func aD (aC,aE) = makeString(["%s%s%s", aC, aE, "bal"], f)
209211
210212
211-func aE (aB) = makeString(["%s%s%s", aB, "total", "balINT"], e)
213+func aF (aC) = makeString(["%s%s%s", aC, "total", "balINT"], f)
212214
213215
214-func aF (aB,aD) = makeString(["%s%s%s", aB, aD, "balINT"], e)
216+func aG (aC,aE) = makeString(["%s%s%s", aC, aE, "balINT"], f)
215217
216218
217-func aG (aB) = makeString(["%s%s%s", aB, "total", "lastUpd"], e)
219+func aH (aC) = makeString(["%s%s%s", aC, "total", "lastUpd"], f)
218220
219221
220-func aH (aB,aD) = makeString(["%s%s%s", aB, aD, "lastUpd"], e)
222+func aI (aC,aE) = makeString(["%s%s%s", aC, aE, "lastUpd"], f)
221223
222224
223-func aI (aB) = makeString(["%s%s%s%s", aB, "common", "lpInt"], e)
225+func aJ (aC) = makeString(["%s%s%s%s", aC, "common", "lpInt"], f)
224226
225227
226-func aJ (aB) = makeString(["%s%s%s%s", aB, "common", "lpIntH"], e)
228+func aK (aC) = makeString(["%s%s%s%s", aC, "common", "lpIntH"], f)
227229
228230
229-func aK (aB,aD) = makeString(["%s%s%s%s", aB, aD, "lpInt"], e)
231+func aL (aC,aE) = makeString(["%s%s%s%s", aC, aE, "lpInt"], f)
230232
231233
232-func aL (aB,aD) = makeString(["%s%s%s%s", aB, aD, "lpIntH"], e)
234+func aM (aC,aE) = makeString(["%s%s%s%s", aC, aE, "lpIntH"], f)
233235
234236
235-func aM (aB) = makeString(["%s", aB, "wxPerLp"], e)
237+func aN (aC) = makeString(["%s", aC, "wxPerLp"], f)
236238
237239
238-func aN (aB) = makeString(["%s", aB, "wxPerLpX18"], e)
240+func aO (aC) = makeString(["%s", aC, "wxPerLpX18"], f)
239241
240242
241-func aO (aB,aD) = makeString(["%s%s%s%s", aB, aD, "uIntL"], e)
243+func aP (aC,aE) = makeString(["%s%s%s%s", aC, aE, "uIntL"], f)
242244
243245
244-func aP (aQ,aD,aR) = makeString(["%s%s%s%s__history", aQ, aD, aR], e)
246+func aQ (aR,aE,aS) = makeString(["%s%s%s%s__history", aR, aE, aS], f)
245247
246248
247-func aS (aD,aB,aQ,aT) = makeString(["%s%s%s%d%d%d", aD, aB, aQ, toString(height), toString(lastBlock.timestamp), toString(aT)], e)
249+func aT (aE,aC,aR,aU) = makeString(["%s%s%s%d%d%d", aE, aC, aR, toString(height), toString(lastBlock.timestamp), toString(aU)], f)
248250
249251
250-func aU (aQ,aD,aB,aT,aV) = StringEntry(aP(aQ, aD, toBase58String(aV)), aS(aD, aB, aQ, aT))
252+func aV (aR,aE,aC,aU,aW) = StringEntry(aQ(aR, aE, toBase58String(aW)), aT(aE, aC, aR, aU))
251253
252254
253-let aW = v(this, L())
255+let aX = w(this, M())
254256
255-let aX = addressFromStringValue(aW)
257+let aY = addressFromStringValue(aX)
256258
257-let aj = ah(aX)
259+let ak = ai(aY)
258260
259-let aY = ak(aj)
261+let aZ = al(ak)
260262
261-let aZ = ai(aj)
263+let ba = aj(ak)
262264
263-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"))
265+let bb = {
266+ let bc = invoke(aZ, "getBoostCoeffREADONLY", nil, nil)
267+ if ($isInstanceOf(bc, "Int"))
268+ then bc
269+ else throw(($getType(bc) + " couldn't be cast to Int"))
270+ }
264271
265-func bb (aB) = makeString(["%s%s", aB, "nextUser"], e)
272+let bd = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], f)), j("lp_staking_pools contract address is undefined"))), j("invalid lp_staking_pools contract address"))
273+
274+func be (aC) = makeString(["%s%s", aC, "nextUser"], f)
266275
267276
268-func bc (aB) = makeString(["users", aB], e)
277+func bf (aC) = makeString(["users", aC], f)
269278
270279
271-func bd (be) = makeString(["%s%s%s", be, "head"], e)
280+func bg (bh) = makeString(["%s%s%s", bh, "head"], f)
272281
273282
274-func bf (be) = makeString(["%s%s%s", be, "size"], e)
283+func bi (bh) = makeString(["%s%s%s", bh, "size"], f)
275284
276285
277-func bg (be,bh) = makeString(["%s%s%s%s", be, bh, "prev"], e)
286+func bj (bh,bk) = makeString(["%s%s%s%s", bh, bk, "prev"], f)
278287
279288
280-func bi (be,bh) = makeString(["%s%s%s%s", be, bh, "next"], e)
289+func bl (bh,bk) = makeString(["%s%s%s%s", bh, bk, "next"], f)
281290
282291
283-func bj (be,bh) = {
284- let bk = getString(this, bd(be))
285- let bl = getString(this, bg(be, bh))
286- let bm = getString(this, bi(be, bh))
287- if (if ((bh == valueOrElse(bk, "")))
292+func bm (bh,bk) = {
293+ let bn = getString(this, bg(bh))
294+ let bo = getString(this, bj(bh, bk))
295+ let bp = getString(this, bl(bh, bk))
296+ if (if ((bk == valueOrElse(bn, "")))
288297 then true
289- else (bl != unit))
298+ else (bo != unit))
290299 then true
291- else (bm != unit)
300+ else (bp != unit)
292301 }
293302
294303
295-func bn (be,bh) = {
296- let bk = getString(this, bd(be))
297- let bo = valueOrElse(getInteger(this, bf(be)), 0)
298- let bp = if (!(bj(be, bh)))
304+func bq (bh,bk) = {
305+ let bn = getString(this, bg(bh))
306+ let br = valueOrElse(getInteger(this, bi(bh)), 0)
307+ let bs = if (!(bm(bh, bk)))
299308 then true
300309 else throw("Node exists")
301- if ((bp == bp))
302- then (([IntegerEntry(bf(be), (bo + 1))] ++ (if ((bk != unit))
303- then [StringEntry(bi(be, bh), value(bk)), StringEntry(bg(be, value(bk)), bh)]
304- else nil)) ++ [StringEntry(bd(be), bh)])
310+ if ((bs == bs))
311+ then (([IntegerEntry(bi(bh), (br + 1))] ++ (if ((bn != unit))
312+ then [StringEntry(bl(bh, bk), value(bn)), StringEntry(bj(bh, value(bn)), bk)]
313+ else nil)) ++ [StringEntry(bg(bh), bk)])
305314 else throw("Strict value is not equal to itself.")
306315 }
307316
308317
309-func bq (be,bh) = {
310- let bk = getString(this, bd(be))
311- let bo = valueOrElse(getInteger(this, bf(be)), 0)
312- let bl = getString(this, bg(be, bh))
313- let bm = getString(this, bi(be, bh))
314- ([IntegerEntry(bf(be), (bo - 1))] ++ (if (if ((bl != unit))
315- then (bm != unit)
318+func bt (bh,bk) = {
319+ let bn = getString(this, bg(bh))
320+ let br = valueOrElse(getInteger(this, bi(bh)), 0)
321+ let bo = getString(this, bj(bh, bk))
322+ let bp = getString(this, bl(bh, bk))
323+ ([IntegerEntry(bi(bh), (br - 1))] ++ (if (if ((bo != unit))
324+ then (bp != unit)
316325 else false)
317- then [StringEntry(bi(be, value(bl)), value(bm)), StringEntry(bg(be, value(bm)), value(bl)), DeleteEntry(bg(be, bh)), DeleteEntry(bi(be, bh))]
318- else if ((bm != unit))
319- then [StringEntry(bd(be), value(bm)), DeleteEntry(bi(be, bh)), DeleteEntry(bg(be, value(bm)))]
320- else if ((bl != unit))
321- then [DeleteEntry(bg(be, bh)), DeleteEntry(bi(be, value(bl)))]
322- else if ((bh == valueOrElse(bk, "")))
323- then [DeleteEntry(bd(be))]
324- else throw(((("invalid node: " + be) + ".") + bh))))
326+ then [StringEntry(bl(bh, value(bo)), value(bp)), StringEntry(bj(bh, value(bp)), value(bo)), DeleteEntry(bj(bh, bk)), DeleteEntry(bl(bh, bk))]
327+ else if ((bp != unit))
328+ then [StringEntry(bg(bh), value(bp)), DeleteEntry(bl(bh, bk)), DeleteEntry(bj(bh, value(bp)))]
329+ else if ((bo != unit))
330+ then [DeleteEntry(bj(bh, bk)), DeleteEntry(bl(bh, value(bo)))]
331+ else if ((bk == valueOrElse(bn, "")))
332+ then [DeleteEntry(bg(bh))]
333+ else throw(((("invalid node: " + bh) + ".") + bk))))
325334 }
326335
327336
328-func br (bs,bt,bu,bv) = if (if ((bt == g))
329- then (bs > g)
337+func bu (bv,bw,bx,by) = if (if ((bw == h))
338+ then (bv > h)
330339 else false)
331- then g
332- else if ((bs == g))
333- then bu
334- else if (if ((bt > g))
335- then (bs > g)
340+ then h
341+ else if ((bv == h))
342+ then bx
343+ else if (if ((bw > h))
344+ then (bv > h)
336345 else false)
337- then value(parseBigInt(v(this, bv)))
346+ then value(parseBigInt(w(this, by)))
338347 else throw("calcWxPerLpIntegralUserLast: unexpected state")
339348
340349
341-func bw (at,bx,by) = {
342- let bz = au(at)
343- let bA = toBigInt(az(bz))
344- let bB = if ((bA == g))
345- then h
346- else bA
347- let bC = getIntegerValue(aX, ad(bx))
348- let bD = C(aY, ao())
349- let bE = 1000
350- let bF = (C(aY, am()) * bE)
351- let bG = fraction(bF, bC, (f * 3))
352- let bH = aI(at)
353- let bI = aJ(at)
354- let bJ = aM(at)
355- let bK = A(this, bI, bD)
356- let bL = D(this, bH)
357- let bM = 0
358- let bN = max([(height - bK), 0])
359- let bO = if ((bM != 0))
360- then toBigInt(bM)
361- else fraction(toBigInt(bG), toBigInt(b), bB)
362- let bP = (bA + toBigInt(by))
363- let bQ = if ((bP == g))
364- then h
365- else bP
366- let bu = (bL + (bO * toBigInt(bN)))
367- let bR = (toBigInt(bG) / bQ)
368- let bS = height
369- let bT = makeString([toString(bu), toString(bN), toString(bO), toString(bA), toString(bG), toString(bF), toString(bC)], "::")
370- $Tuple3(bu, [StringEntry(bH, toString(bu)), IntegerEntry(bI, bS), StringEntry(bJ, toString(bR))], bT)
350+func bz (au,bA,bB) = {
351+ let bC = av(au)
352+ let bD = toBigInt(aA(bC))
353+ let bE = if ((bD == h))
354+ then i
355+ else bD
356+ let bF = getIntegerValue(aY, ae(bA))
357+ let bG = D(aZ, ap())
358+ let bH = (D(aZ, an()) * b)
359+ let bI = fraction(bH, bF, (g * bb))
360+ let bJ = aJ(au)
361+ let bK = aK(au)
362+ let bL = aN(au)
363+ let bM = B(this, bK, bG)
364+ let bN = E(this, bJ)
365+ let bO = 0
366+ let bP = max([(height - bM), 0])
367+ let bQ = if ((bO != 0))
368+ then toBigInt(bO)
369+ else fraction(toBigInt(bI), toBigInt(c), bE)
370+ let bR = (bD + toBigInt(bB))
371+ let bS = if ((bR == h))
372+ then i
373+ else bR
374+ let bx = (bN + (bQ * toBigInt(bP)))
375+ let bT = (toBigInt(bI) / bS)
376+ let bU = height
377+ let bV = makeString([toString(bx), toString(bP), toString(bQ), toString(bD), toString(bI), toString(bH), toString(bF)], "::")
378+ $Tuple3(bx, [StringEntry(bJ, toString(bx)), IntegerEntry(bK, bU), StringEntry(bL, toString(bT))], bV)
371379 }
372380
373381
374-func bU (at,as,bx,by) = {
375- let bV = bw(at, bx, by)
376- let bu = bV._1
377- let bW = bV._2
378- let bX = bV._3
379- let bE = 1000
380- let bY = ar(as, at)
381- let bs = az(bY)
382- let bZ = aK(at, as)
383- let ca = aL(at, as)
384- let bv = aO(at, as)
385- let cb = D(this, bZ)
386- let bt = z(this, ca)
387- let cc = br(toBigInt(bs), toBigInt(bt), bu, bv)
388- let cd = (b * bE)
389- let ce = max([(cb + fraction((bu - cc), toBigInt(bs), toBigInt(cd))), g])
390- let cf = bu
391- let cg = height
392- let bT = makeString([toString(cb), toString(cc), toString(bs), bX, toString(height)], "::")
393- $Tuple3(ce, (bW ++ [StringEntry(bZ, toString(ce)), IntegerEntry(ca, cg), StringEntry(bv, toString(cf))]), bT)
382+func bW (au,at,bA,bB) = {
383+ let bX = bz(au, bA, bB)
384+ let bx = bX._1
385+ let bY = bX._2
386+ let bZ = bX._3
387+ let ca = as(at, au)
388+ let bv = aA(ca)
389+ let cb = aL(au, at)
390+ let cc = aM(au, at)
391+ let by = aP(au, at)
392+ let cd = E(this, cb)
393+ let bw = A(this, cc)
394+ let ce = bu(toBigInt(bv), toBigInt(bw), bx, by)
395+ let cf = (c * b)
396+ let cg = max([(cd + fraction((bx - ce), toBigInt(bv), toBigInt(cf))), h])
397+ let ch = bx
398+ let ci = height
399+ let bV = makeString([toString(cd), toString(ce), toString(bv), bZ, toString(height)], "::")
400+ $Tuple3(cg, (bY ++ [StringEntry(cb, toString(cg)), IntegerEntry(cc, ci), StringEntry(by, toString(ch))]), bV)
394401 }
395402
396403
397-func ch () = {
398- let n = getString(V())
399- if ($isInstanceOf(n, "String"))
404+func cj () = {
405+ let o = getString(W())
406+ if ($isInstanceOf(o, "String"))
400407 then {
401- let F = n
402- fromBase58String(F)
408+ let G = o
409+ fromBase58String(G)
403410 }
404- else if ($isInstanceOf(n, "Unit"))
411+ else if ($isInstanceOf(o, "Unit"))
405412 then unit
406413 else throw("Match error")
407414 }
408415
409416
410-func ci () = {
411- let n = getString(W())
412- if ($isInstanceOf(n, "String"))
417+func ck () = {
418+ let o = getString(X())
419+ if ($isInstanceOf(o, "String"))
413420 then {
414- let F = n
415- fromBase58String(F)
421+ let G = o
422+ fromBase58String(G)
416423 }
417- else if ($isInstanceOf(n, "Unit"))
424+ else if ($isInstanceOf(o, "Unit"))
418425 then unit
419426 else throw("Match error")
420427 }
421428
422429
423-let cj = throw("Permission denied")
430+let cl = throw("Permission denied")
424431
425-func ck (cl) = if ((cl.caller == this))
432+func cm (cn) = if ((cn.caller == this))
426433 then true
427- else cj
434+ else cl
428435
429436
430-func cm (cl) = {
431- let n = ch()
432- if ($isInstanceOf(n, "ByteVector"))
437+func co (cn) = {
438+ let o = cj()
439+ if ($isInstanceOf(o, "ByteVector"))
433440 then {
434- let cn = n
435- if ((cl.callerPublicKey == cn))
441+ let cp = o
442+ if ((cn.callerPublicKey == cp))
436443 then true
437- else cj
444+ else cl
438445 }
439- else if ($isInstanceOf(n, "Unit"))
440- then if ((cl.caller == this))
446+ else if ($isInstanceOf(o, "Unit"))
447+ then if ((cn.caller == this))
441448 then true
442- else cj
449+ else cl
443450 else throw("Match error")
444451 }
445452
446453
447-func co (cl,aB,cp,aD,aT) = {
448- let as = toString(aD)
449- let at = toBase58String(aB)
450- let bx = toString(cp)
451- let bY = ar(as, at)
452- let bz = au(at)
453- let bs = az(bY)
454- let cq = if ((bs == 0))
455- then invoke(aZ, "onStakedVoteUpdate", [at, as, true], nil)
454+func cq (cn,aC,cr,aE,aU) = {
455+ let at = toString(aE)
456+ let au = toBase58String(aC)
457+ let bA = toString(cr)
458+ let ca = as(at, au)
459+ let bC = av(au)
460+ let bv = aA(ca)
461+ let cs = if ((bv == 0))
462+ then invoke(ba, "onStakedVoteUpdate", [au, at, true], nil)
456463 else unit
457- if ((cq == cq))
464+ if ((cs == cs))
458465 then {
459- let bA = az(bz)
460- let cr = bU(at, as, bx, aT)
461- let ce = cr._1
462- let cs = cr._2
463- let bT = cr._3
464- let be = bc(at)
465- let ct = if (bj(be, as))
466+ let bD = aA(bC)
467+ let ct = bW(au, at, bA, aU)
468+ let cg = ct._1
469+ let cu = ct._2
470+ let bV = ct._3
471+ let bh = bf(au)
472+ let cv = if (bm(bh, at))
466473 then nil
467- else bn(be, as)
468- (([IntegerEntry(bY, (bs + aT)), IntegerEntry(bz, (bA + aT)), aU("stake", as, at, aT, cl.transactionId)] ++ cs) ++ ct)
474+ else bq(bh, at)
475+ (([IntegerEntry(ca, (bv + aU)), IntegerEntry(bC, (bD + aU)), aV("stake", at, au, aU, cn.transactionId)] ++ cu) ++ cv)
469476 }
470477 else throw("Strict value is not equal to itself.")
471478 }
472479
473480
474-func cu (cl,aB,cp,aD,cv,aT) = {
475- let as = toString(aD)
476- let at = toBase58String(aB)
477- let bx = toString(cp)
478- let bY = ar(as, at)
479- let bz = au(at)
480- let bs = az(bY)
481- let bA = az(bz)
482- let cs = bU(at, as, bx, -(aT))._2
483- let be = bc(at)
484- let ct = if (if (bj(be, as))
485- then (aT == bs)
481+func cw (cn,aC,cr,aE,cx,aU) = {
482+ let at = toString(aE)
483+ let au = toBase58String(aC)
484+ let bA = toString(cr)
485+ let ca = as(at, au)
486+ let bC = av(au)
487+ let bv = aA(ca)
488+ let bD = aA(bC)
489+ let cu = bW(au, at, bA, -(aU))._2
490+ let bh = bf(au)
491+ let cv = if (if (bm(bh, at))
492+ then (aU == bv)
486493 else false)
487- then bq(be, as)
494+ then bt(bh, at)
488495 else nil
489- let cq = if ((aT == bs))
490- then invoke(aZ, "onStakedVoteUpdate", [at, as, false], nil)
496+ let cs = if ((aU == bv))
497+ then invoke(ba, "onStakedVoteUpdate", [au, at, false], nil)
491498 else unit
492- if ((cq == cq))
499+ if ((cs == cs))
493500 then {
494- let cw = D(this, aw(at, as))
495- let ce = bU(at, as, bx, 0)._1
496- let cx = (ce - cw)
497- let cy = true
498- let cz = if ((cx > g))
499- then invoke(this, "claimWxINTERNAL", [at, as, cy], nil)
501+ let cy = E(this, ax(au, at))
502+ let cg = bW(au, at, bA, 0)._1
503+ let cz = (cg - cy)
504+ let cA = true
505+ let cB = if ((cz > h))
506+ then invoke(this, "claimWxINTERNAL", [au, at, cA], nil)
500507 else unit
501- if ((cz == cz))
502- then if ((aT > bs))
503- then throw(((((((("passed amount=" + toString(aT)) + " is greater than available=") + toString(bs)) + ". lpAssetId=") + at) + ". stakedByUserKEY=") + bY))
504- else (([IntegerEntry(bY, (bs - aT)), IntegerEntry(bz, (bA - aT)), ScriptTransfer(cv, aT, aB), aU("unstake", as, at, aT, cl.transactionId)] ++ cs) ++ ct)
508+ if ((cB == cB))
509+ then if ((aU > bv))
510+ then throw(((((((("passed amount=" + toString(aU)) + " is greater than available=") + toString(bv)) + ". lpAssetId=") + au) + ". stakedByUserKEY=") + ca))
511+ else (([IntegerEntry(ca, (bv - aU)), IntegerEntry(bC, (bD - aU)), ScriptTransfer(cx, aU, aC), aV("unstake", at, au, aU, cn.transactionId)] ++ cu) ++ cv)
505512 else throw("Strict value is not equal to itself.")
506513 }
507514 else throw("Strict value is not equal to itself.")
508515 }
509516
510517
511-@Callable(cl)
512-func constructor (cA) = {
513- let cB = cm(cl)
514- if ((cB == cB))
515- then [StringEntry(L(), cA)]
516- else throw("Strict value is not equal to itself.")
517- }
518-
519-
520-
521-@Callable(cl)
522-func constructorV2 (cC) = {
523- let cD = [cm(cl), if ((addressFromString(cC) != unit))
524- then true
525- else "invalid voting emission contract address"]
518+@Callable(cn)
519+func constructor (cC) = {
520+ let cD = co(cn)
526521 if ((cD == cD))
527522 then [StringEntry(M(), cC)]
528523 else throw("Strict value is not equal to itself.")
530525
531526
532527
533-@Callable(cl)
534-func setManager (cE) = {
535- let cB = cm(cl)
536- if ((cB == cB))
528+@Callable(cn)
529+func constructorV2 (cE) = {
530+ let cF = [co(cn), if ((addressFromString(cE) != unit))
531+ then true
532+ else "invalid voting emission contract address"]
533+ if ((cF == cF))
534+ then [StringEntry(N(), cE)]
535+ else throw("Strict value is not equal to itself.")
536+ }
537+
538+
539+
540+@Callable(cn)
541+func setManager (cG) = {
542+ let cD = co(cn)
543+ if ((cD == cD))
537544 then {
538- let cF = fromBase58String(cE)
539- if ((cF == cF))
540- then [StringEntry(W(), cE)]
545+ let cH = fromBase58String(cG)
546+ if ((cH == cH))
547+ then [StringEntry(X(), cG)]
541548 else throw("Strict value is not equal to itself.")
542549 }
543550 else throw("Strict value is not equal to itself.")
545552
546553
547554
548-@Callable(cl)
555+@Callable(cn)
549556 func confirmManager () = {
550- let cG = ci()
551- let cH = if (isDefined(cG))
557+ let cI = ck()
558+ let cJ = if (isDefined(cI))
552559 then true
553560 else throw("No pending manager")
554- if ((cH == cH))
561+ if ((cJ == cJ))
555562 then {
556- let cI = if ((cl.callerPublicKey == value(cG)))
563+ let cK = if ((cn.callerPublicKey == value(cI)))
557564 then true
558565 else throw("You are not pending manager")
559- if ((cI == cI))
560- then [StringEntry(V(), toBase58String(value(cG))), DeleteEntry(W())]
566+ if ((cK == cK))
567+ then [StringEntry(W(), toBase58String(value(cI))), DeleteEntry(X())]
561568 else throw("Strict value is not equal to itself.")
562569 }
563570 else throw("Strict value is not equal to itself.")
565572
566573
567574
568-@Callable(cl)
569-func stake () = if ((size(cl.payments) != 1))
575+@Callable(cn)
576+func stake () = if ((size(cn.payments) != 1))
570577 then throw("invalid payment - exact one payment must be attached")
571578 else {
572- let cJ = cl.payments[0]
573- let aB = value(cJ.assetId)
574- let at = toBase58String(aB)
575- let aT = cJ.amount
576- let bx = valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at))
577- let cp = addressFromStringValue(bx)
578- let aD = if ((cl.caller == cp))
579- then cl.originCaller
580- else cl.caller
581- co(cl, aB, cp, aD, aT)
579+ let cL = cn.payments[0]
580+ let aC = value(cL.assetId)
581+ let au = toBase58String(aC)
582+ let aU = cL.amount
583+ let bA = valueOrErrorMessage(getString(aY, aa(au)), ("unsupported lp asset " + au))
584+ let cr = addressFromStringValue(bA)
585+ let aE = if ((cn.caller == cr))
586+ then cn.originCaller
587+ else cn.caller
588+ cq(cn, aC, cr, aE, aU)
582589 }
583590
584591
585592
586-@Callable(cl)
587-func stakeFor (as) = if ((size(cl.payments) != 1))
593+@Callable(cn)
594+func stakeFor (at) = if ((size(cn.payments) != 1))
588595 then throw("invalid payment - exact one payment must be attached")
589596 else {
590- let cJ = cl.payments[0]
591- let aB = value(cJ.assetId)
592- let at = toBase58String(aB)
593- let aT = cJ.amount
594- let bx = valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at))
595- let cp = addressFromStringValue(bx)
596- let aD = valueOrErrorMessage(addressFromString(as), i("invalid user address"))
597- co(cl, aB, cp, aD, aT)
597+ let cL = cn.payments[0]
598+ let aC = value(cL.assetId)
599+ let au = toBase58String(aC)
600+ let aU = cL.amount
601+ let bA = valueOrErrorMessage(getString(aY, aa(au)), ("unsupported lp asset " + au))
602+ let cr = addressFromStringValue(bA)
603+ let aE = valueOrErrorMessage(addressFromString(at), j("invalid user address"))
604+ cq(cn, aC, cr, aE, aU)
598605 }
599606
600607
601608
602-@Callable(cl)
603-func unstake (at,aT) = {
604- let aB = fromBase58String(at)
605- let bx = valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at))
606- let cp = addressFromStringValue(bx)
607- let cK = valueOrElse(getString(cp, Y()), bx)
608- let cL = toString(cl.caller)
609- let aD = if (if ((cL == bx))
609+@Callable(cn)
610+func unstake (au,aU) = {
611+ let aC = fromBase58String(au)
612+ let bA = valueOrErrorMessage(getString(aY, aa(au)), ("unsupported lp asset " + au))
613+ let cr = addressFromStringValue(bA)
614+ let cM = valueOrElse(getString(cr, Z()), bA)
615+ let cN = toString(cn.caller)
616+ let aE = if (if ((cN == bA))
610617 then true
611- else (cL == cK))
612- then cl.originCaller
613- else cl.caller
614- let cv = cl.caller
615- cu(cl, aB, cp, aD, cv, aT)
618+ else (cN == cM))
619+ then cn.originCaller
620+ else cn.caller
621+ let cx = cn.caller
622+ cw(cn, aC, cr, aE, cx, aU)
616623 }
617624
618625
619626
620-@Callable(cl)
621-func unstakeINTERNAL (aB,aT,aD,cv) = {
622- let at = toBase58String(aB)
623- let cp = addressFromStringValue(valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at)))
624- let cB = if ((cl.caller == cp))
627+@Callable(cn)
628+func unstakeINTERNAL (aC,aU,aE,cx) = {
629+ let au = toBase58String(aC)
630+ let cr = addressFromStringValue(valueOrErrorMessage(getString(aY, aa(au)), ("unsupported lp asset " + au)))
631+ let cD = if ((cn.caller == cr))
625632 then true
626- else cj
627- if ((cB == cB))
628- then cu(cl, aB, cp, Address(aD), Address(cv), aT)
633+ else cl
634+ if ((cD == cD))
635+ then cw(cn, aC, cr, Address(aE), Address(cx), aU)
629636 else throw("Strict value is not equal to itself.")
630637 }
631638
632639
633640
634-@Callable(cl)
635-func claimWx (at) = {
636- let as = toString(cl.caller)
637- let cy = true
638- let cM = invoke(this, "claimWxINTERNAL", [at, as, cy], nil)
639- $Tuple2(nil, cM)
641+@Callable(cn)
642+func claimWx (au) = {
643+ let at = toString(cn.caller)
644+ let cA = true
645+ let cO = invoke(this, "claimWxINTERNAL", [au, at, cA], nil)
646+ $Tuple2(nil, cO)
640647 }
641648
642649
643650
644-@Callable(cl)
645-func claimWxDoNotThrow (at) = {
646- let as = toString(cl.caller)
647- let cy = false
648- let cM = invoke(this, "claimWxINTERNAL", [at, as, cy], nil)
649- $Tuple2(nil, cM)
651+@Callable(cn)
652+func claimWxDoNotThrow (au) = {
653+ let at = toString(cn.caller)
654+ let cA = false
655+ let cO = invoke(this, "claimWxINTERNAL", [au, at, cA], nil)
656+ $Tuple2(nil, cO)
650657 }
651658
652659
653660
654-@Callable(cl)
655-func claimWxINTERNAL (at,as,cy) = {
656- let cB = ck(cl)
657- if ((cB == cB))
661+@Callable(cn)
662+func claimWxINTERNAL (au,at,cA) = {
663+ let cD = cm(cn)
664+ if ((cD == cD))
658665 then {
659- let aD = valueOrErrorMessage(addressFromString(as), "claimWxINTERNAL: invalid user address")
660- let bx = y(aX, ac(at))
661- let cN = av(at, as)
662- let cO = ay(at)
663- let cP = aw(at, as)
664- let cQ = ax(at, as)
665- let cR = D(this, cN)
666- let cw = D(this, cP)
667- let cS = D(this, cQ)
668- let cT = D(this, cO)
669- let cU = bU(at, as, bx, 0)
670- let ce = cU._1
671- let cs = cU._2
672- let bT = cU._3
673- let cx = max([(ce - cw), g])
674- if ((g >= cx))
675- then if (cy)
666+ let aE = valueOrErrorMessage(addressFromString(at), "claimWxINTERNAL: invalid user address")
667+ let bA = z(aY, ad(au))
668+ let cP = aw(au, at)
669+ let cQ = az(au)
670+ let cR = ax(au, at)
671+ let cS = ay(au, at)
672+ let cT = E(this, cP)
673+ let cy = E(this, cR)
674+ let cU = E(this, cS)
675+ let cV = E(this, cQ)
676+ let cW = bW(au, at, bA, 0)
677+ let cg = cW._1
678+ let cu = cW._2
679+ let bV = cW._3
680+ let cz = max([(cg - cy), h])
681+ if ((h >= cz))
682+ then if (cA)
676683 then throw("nothing to claim")
677684 else $Tuple2(nil, 0)
678685 else {
679- let cV = max([p(l(invoke(aZ, "claimWxBoost", [at, as], nil))[0]), 0])
680- let cW = cx
681- let cX = min([(cW * toBigInt(2)), toBigInt(cV)])
682- let cY = (cW + cX)
683- let cZ = t(l(invoke(aY, "emit", [toInt(cW)], nil))[0])
684- let da = l(invoke(aY, "emit", [toInt(cX)], nil))
685- if ((da == da))
686+ let cX = max([q(m(invoke(ba, "claimWxBoost", [au, at], nil))[0]), 0])
687+ let cY = cz
688+ let cZ = min([(cY * toBigInt((bb - 1))), toBigInt(cX)])
689+ let da = (cY + cZ)
690+ let db = u(m(invoke(aZ, "emit", [toInt(cY)], nil))[0])
691+ let dc = m(invoke(aZ, "emit", [toInt(cZ)], nil))
692+ if ((dc == dc))
686693 then {
687- let db = ((cR + cW) + cX)
688- let dc = (cw + cW)
689- let dd = (cS + cX)
690- let de = (cT + cx)
691- $Tuple2([StringEntry(cN, toString(db)), StringEntry(cP, toString(dc)), StringEntry(cQ, toString(dd)), StringEntry(cO, toString(de)), ScriptTransfer(aD, toInt(cW), cZ), ScriptTransfer(aD, toInt(cX), cZ), aU("claim", as, at, toInt(cx), cl.transactionId)], toInt(cY))
694+ let dd = ((cT + cY) + cZ)
695+ let de = (cy + cY)
696+ let df = (cU + cZ)
697+ let dg = (cV + cz)
698+ $Tuple2([StringEntry(cP, toString(dd)), StringEntry(cR, toString(de)), StringEntry(cS, toString(df)), StringEntry(cQ, toString(dg)), ScriptTransfer(aE, toInt(cY), db), ScriptTransfer(aE, toInt(cZ), db), aV("claim", at, au, toInt(cz), cn.transactionId)], toInt(da))
692699 }
693700 else throw("Strict value is not equal to itself.")
694701 }
698705
699706
700707
701-@Callable(cl)
702-func claimWxBulkInternalREADONLY (df,dg,as,dh) = if ((df == size(dg)))
703- then $Tuple2(nil, dh)
708+@Callable(cn)
709+func claimWxBulkInternalREADONLY (dh,di,at,dj) = if ((dh == size(di)))
710+ then $Tuple2(nil, dj)
704711 else {
705- let aB = dg[df]
706- let di = split({
707- let dj = invoke(this, "claimWxREADONLY", [aB, as], nil)
708- if ($isInstanceOf(dj, "String"))
709- then dj
710- else throw(($getType(dj) + " couldn't be cast to String"))
711- }, e)
712- let dk = di[3]
713- let dl = di[4]
714- let dm = (dh :+ makeString(["%d%d", dk, dl], e))
712+ let aC = di[dh]
713+ let dk = split({
714+ let bc = invoke(this, "claimWxREADONLY", [aC, at], nil)
715+ if ($isInstanceOf(bc, "String"))
716+ then bc
717+ else throw(($getType(bc) + " couldn't be cast to String"))
718+ }, f)
719+ let dl = dk[3]
720+ let dm = dk[4]
715721 let dn = {
716- let dj = invoke(this, "claimWxBulkInternalREADONLY", [(df + 1), dg, as, dm], nil)
717- if ($isInstanceOf(dj, "List[Any]"))
718- then dj
719- else throw(($getType(dj) + " couldn't be cast to List[Any]"))
722+ let bc = invoke(ba, "getUserVoteFinalizedREADONLY", [aC, at], nil)
723+ if ($isInstanceOf(bc, "Int"))
724+ then bc
725+ else throw(($getType(bc) + " couldn't be cast to Int"))
720726 }
721- if ((dn == dn))
722- then $Tuple2(nil, dn)
727+ let do = (dj :+ makeString(["%d%d%d", dl, dm, toString(dn)], f))
728+ let dp = {
729+ let bc = invoke(this, "claimWxBulkInternalREADONLY", [(dh + 1), di, at, do], nil)
730+ if ($isInstanceOf(bc, "List[Any]"))
731+ then bc
732+ else throw(($getType(bc) + " couldn't be cast to List[Any]"))
733+ }
734+ if ((dp == dp))
735+ then $Tuple2(nil, dp)
723736 else throw("Strict value is not equal to itself.")
724737 }
725738
726739
727740
728-@Callable(cl)
729-func claimWxBulkREADONLY (dg,as) = {
730- let dm = invoke(this, "claimWxBulkInternalREADONLY", [0, dg, as, nil], nil)
731- $Tuple2(nil, dm)
741+@Callable(cn)
742+func claimWxBulkREADONLY (di,at) = {
743+ let do = invoke(this, "claimWxBulkInternalREADONLY", [0, di, at, nil], nil)
744+ $Tuple2(nil, do)
732745 }
733746
734747
735748
736-@Callable(cl)
737-func claimWxREADONLY (at,as) = {
738- let bY = ar(as, at)
739- let bz = au(at)
740- let cN = av(at, as)
741- let cP = aw(at, as)
742- let bs = az(bY)
743- let bA = az(bz)
744- let cR = D(this, cN)
745- let cw = D(this, cP)
746- let bx = y(aX, ac(at))
747- let bC = getIntegerValue(aX, ad(bx))
748- let do = C(aY, am())
749- let bD = C(aY, ao())
750- let dp = if ((bD > height))
749+@Callable(cn)
750+func claimWxREADONLY (au,at) = {
751+ let ca = as(at, au)
752+ let bC = av(au)
753+ let cP = aw(au, at)
754+ let cR = ax(au, at)
755+ let bv = aA(ca)
756+ let bD = aA(bC)
757+ let cT = E(this, cP)
758+ let cy = E(this, cR)
759+ let bA = z(aY, ad(au))
760+ let bF = getIntegerValue(aY, ae(bA))
761+ let dq = D(aZ, an())
762+ let bG = D(aZ, ap())
763+ let dr = if ((bG > height))
751764 then 0
752- else (height - bD)
753- let dq = fraction((do * dp), bC, f)
754- let dr = fraction(dq, bs, bA)
755- let ds = bU(at, as, bx, 0)
756- let ce = ds._1
757- let cs = ds._2
758- let bT = ds._3
759- let cx = max([(ce - cw), g])
760- let dt = l(invoke(aZ, "claimWxBoostREADONLY", [at, as], nil))
761- let cV = max([p(dt[0]), 0])
762- let du = r(dt[1])
763- let cW = cx
764- let cX = min([(cW * toBigInt(2)), toBigInt(cV)])
765- let cY = (cW + cX)
766- $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", at, as, toString(cY), toString(cR), toString(cW), toString(cX), "soon"], e))
765+ else (height - bG)
766+ let ds = fraction((dq * dr), bF, g)
767+ let dt = fraction(ds, bv, bD)
768+ let du = bW(au, at, bA, 0)
769+ let cg = du._1
770+ let cu = du._2
771+ let bV = du._3
772+ let cz = max([(cg - cy), h])
773+ let dv = m(invoke(ba, "claimWxBoostREADONLY", [au, at], nil))
774+ let cX = max([q(dv[0]), 0])
775+ let dw = s(dv[1])
776+ let cY = cz
777+ let cZ = min([(cY * toBigInt((bb - 1))), toBigInt(cX)])
778+ let da = (cY + cZ)
779+ $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", au, at, toString(da), toString(cT), toString(cY), toString(cZ), "soon"], f))
767780 }
768781
769782
770783
771-@Callable(cl)
772-func stakedByUserREADONLY (at,as) = {
773- let bs = valueOrElse(getInteger(ar(as, at)), 0)
774- $Tuple2(nil, bs)
784+@Callable(cn)
785+func stakedByUserREADONLY (au,at) = {
786+ let bv = valueOrElse(getInteger(as(at, au)), 0)
787+ $Tuple2(nil, bv)
775788 }
776789
777790
778791
779-@Callable(cl)
780-func usersListTraversal (aB) = {
781- let cB = if ((toBase58String(cl.caller.bytes) == valueOrElse(getString(this, M()), "")))
792+@Callable(cn)
793+func usersListTraversal (aC) = {
794+ let cD = if ((toBase58String(cn.caller.bytes) == valueOrElse(getString(this, N()), "")))
782795 then true
783- else cm(cl)
784- if ((cB == cB))
796+ else co(cn)
797+ if ((cD == cD))
785798 then {
786- let be = bc(aB)
787- let dv = getString(bb(aB))
788- let bk = getString(bd(be))
789- let n = dv
790- if ($isInstanceOf(n, "Unit"))
799+ let bh = bf(aC)
800+ let dx = getString(be(aC))
801+ let bn = getString(bg(bh))
802+ let o = dx
803+ if ($isInstanceOf(o, "Unit"))
791804 then {
792- let dw = bk
793- if ($isInstanceOf(dw, "Unit"))
805+ let dy = bn
806+ if ($isInstanceOf(dy, "Unit"))
794807 then $Tuple2(nil, false)
795- else if ($isInstanceOf(dw, "String"))
808+ else if ($isInstanceOf(dy, "String"))
796809 then {
797- let dx = dw
798- $Tuple2([StringEntry(bb(aB), dx)], true)
810+ let dz = dy
811+ $Tuple2([StringEntry(be(aC), dz)], true)
799812 }
800813 else throw("Match error")
801814 }
802- else if ($isInstanceOf(n, "String"))
815+ else if ($isInstanceOf(o, "String"))
803816 then {
804- let aD = n
805- let cw = D(this, aw(aB, aD))
806- let cp = y(aX, ac(aB))
807- let ce = bU(aB, aD, cp, 0)._1
808- let cx = (ce - cw)
809- let cy = true
810- let cz = if ((cx > g))
811- then invoke(this, "claimWxINTERNAL", [aB, aD, cy], nil)
817+ let aE = o
818+ let cy = E(this, ax(aC, aE))
819+ let cr = z(aY, ad(aC))
820+ let cg = bW(aC, aE, cr, 0)._1
821+ let cz = (cg - cy)
822+ let cA = true
823+ let cB = if ((cz > h))
824+ then invoke(this, "claimWxINTERNAL", [aC, aE, cA], nil)
812825 else unit
813- if ((cz == cz))
826+ if ((cB == cB))
814827 then {
815- let dy = getString(bi(be, aD))
816- let dw = dy
817- if ($isInstanceOf(dw, "Unit"))
818- then $Tuple2([DeleteEntry(bb(aB))], false)
819- else if ($isInstanceOf(dw, "String"))
828+ let dA = getString(bl(bh, aE))
829+ let dy = dA
830+ if ($isInstanceOf(dy, "Unit"))
831+ then $Tuple2([DeleteEntry(be(aC))], false)
832+ else if ($isInstanceOf(dy, "String"))
820833 then {
821- let dz = dw
822- $Tuple2([StringEntry(bb(aB), dz)], true)
834+ let dB = dy
835+ $Tuple2([StringEntry(be(aC), dB)], true)
823836 }
824837 else throw("Match error")
825838 }
832845
833846
834847
835-@Callable(cl)
836-func onModifyWeight (at,bx) = if ((cl.caller != aX))
848+@Callable(cn)
849+func onModifyWeight (au,bA) = if ((cn.caller != aY))
837850 then throw("permissions denied")
838851 else {
839- let dA = bw(at, bx, 0)
840- let bu = dA._1
841- let bW = dA._2
842- let bX = dA._3
843- bW
852+ let dC = bz(au, bA, 0)
853+ let bx = dC._1
854+ let bY = dC._2
855+ let bZ = dC._3
856+ bY
844857 }
845858
846859
847-@Verifier(dB)
848-func dC () = {
849- let dD = {
850- let n = ch()
851- if ($isInstanceOf(n, "ByteVector"))
860+@Verifier(dD)
861+func dE () = {
862+ let dF = {
863+ let o = cj()
864+ if ($isInstanceOf(o, "ByteVector"))
852865 then {
853- let cn = n
854- cn
866+ let cp = o
867+ cp
855868 }
856- else if ($isInstanceOf(n, "Unit"))
857- then dB.senderPublicKey
869+ else if ($isInstanceOf(o, "Unit"))
870+ then dD.senderPublicKey
858871 else throw("Match error")
859872 }
860- sigVerify(dB.bodyBytes, dB.proofs[0], dD)
873+ sigVerify(dD.bodyBytes, dD.proofs[0], dF)
861874 }
862875
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
6-let b = 100000000
6+let b = 1000
77
8-let c = 18
8+let c = 100000000
99
10-let d = toBigInt(1000000000000000000)
10+let d = 18
1111
12-let e = "__"
12+let e = toBigInt(1000000000000000000)
1313
14-let f = b
14+let f = "__"
1515
16-let g = toBigInt(0)
16+let g = c
1717
18-let h = toBigInt(1)
18+let h = toBigInt(0)
1919
20-func i (j) = makeString(["staking.ride:", toString(this), j], " ")
20+let i = toBigInt(1)
21+
22+func j (k) = makeString(["staking.ride:", toString(this), k], " ")
2123
2224
23-func k (j) = throw(i(j))
25+func l (k) = throw(j(k))
2426
2527
26-func l (m) = {
27- let n = m
28- if ($isInstanceOf(n, "List[Any]"))
28+func m (n) = {
29+ let o = n
30+ if ($isInstanceOf(o, "List[Any]"))
2931 then {
30- let o = n
31- o
32+ let p = o
33+ p
3234 }
3335 else throw("fail to cast into List[Any]")
3436 }
3537
3638
37-func p (m) = {
38- let n = m
39- if ($isInstanceOf(n, "Int"))
39+func q (n) = {
40+ let o = n
41+ if ($isInstanceOf(o, "Int"))
4042 then {
41- let q = n
42- q
43+ let r = o
44+ r
4345 }
4446 else throw("fail to cast into Int")
4547 }
4648
4749
48-func r (m) = {
49- let n = m
50- if ($isInstanceOf(n, "String"))
50+func s (n) = {
51+ let o = n
52+ if ($isInstanceOf(o, "String"))
5153 then {
52- let s = n
53- s
54+ let t = o
55+ t
5456 }
5557 else throw("fail to cast into Int")
5658 }
5759
5860
59-func t (m) = {
60- let n = m
61- if ($isInstanceOf(n, "ByteVector"))
61+func u (n) = {
62+ let o = n
63+ if ($isInstanceOf(o, "ByteVector"))
6264 then {
63- let u = n
64- u
65+ let v = o
66+ v
6567 }
6668 else throw("fail to cast into Int")
6769 }
6870
6971
70-func v (w,x) = valueOrErrorMessage(getString(w, x), (("mandatory this." + x) + " is not defined"))
72+func w (x,y) = valueOrErrorMessage(getString(x, y), (("mandatory this." + y) + " is not defined"))
7173
7274
73-func y (w,x) = valueOrErrorMessage(getString(w, x), (((("mandatory " + toString(w)) + ".") + x) + " is not defined"))
75+func z (x,y) = valueOrErrorMessage(getString(x, y), (((("mandatory " + toString(x)) + ".") + y) + " is not defined"))
7476
7577
76-func z (w,x) = valueOrElse(getInteger(w, x), 0)
78+func A (x,y) = valueOrElse(getInteger(x, y), 0)
7779
7880
79-func A (w,x,B) = valueOrElse(getInteger(w, x), B)
81+func B (x,y,C) = valueOrElse(getInteger(x, y), C)
8082
8183
82-func C (w,x) = valueOrErrorMessage(getInteger(w, x), (("mandatory this." + x) + " is not defined"))
84+func D (x,y) = valueOrErrorMessage(getInteger(x, y), (("mandatory this." + y) + " is not defined"))
8385
8486
85-func D (w,x) = value(parseBigInt(valueOrElse(getString(w, x), "0")))
87+func E (x,y) = value(parseBigInt(valueOrElse(getString(x, y), "0")))
8688
8789
88-func E (w,x,B) = {
89- let n = getString(w, x)
90- if ($isInstanceOf(n, "String"))
90+func F (x,y,C) = {
91+ let o = getString(x, y)
92+ if ($isInstanceOf(o, "String"))
9193 then {
92- let F = n
93- value(parseBigInt(F))
94+ let G = o
95+ value(parseBigInt(G))
9496 }
95- else if ($isInstanceOf(n, "Unit"))
96- then B
97+ else if ($isInstanceOf(o, "Unit"))
98+ then C
9799 else throw("Match error")
98100 }
99101
100102
101-func G (H,I) = fraction(toBigInt(H), d, toBigInt(I))
103+func H (I,J) = fraction(toBigInt(I), e, toBigInt(J))
102104
103105
104-func J (m,K) = toInt(fraction(m, toBigInt(K), d))
106+func K (n,L) = toInt(fraction(n, toBigInt(L), e))
105107
106108
107-func L () = "%s%s__config__factoryAddress"
109+func M () = "%s%s__config__factoryAddress"
108110
109111
110-func M () = "%s__votingEmissionContract"
112+func N () = "%s__votingEmissionContract"
111113
112114
113-let N = 1
115+let O = 1
114116
115-let O = 2
117+let P = 2
116118
117-let P = 3
119+let Q = 3
118120
119-let Q = 4
121+let R = 4
120122
121-let R = 5
123+let S = 5
122124
123-let S = 6
125+let T = 6
124126
125-let T = 7
127+let U = 7
126128
127-func U () = "%s__factoryConfig"
129+func V () = "%s__factoryConfig"
128130
129131
130-func V () = "%s__managerPublicKey"
132+func W () = "%s__managerPublicKey"
131133
132134
133-func W () = "%s__pendingManagerPublicKey"
135+func X () = "%s__pendingManagerPublicKey"
134136
135137
136-func X () = "%s__stablePoolAddonAddr"
138+func Y () = "%s__stablePoolAddonAddr"
137139
138140
139-func Y () = "%s__addonAddr"
141+func Z () = "%s__addonAddr"
140142
141143
142-func Z (aa) = makeString(["%s%s%s", aa, "mappings__lpAsset2PoolContract"], e)
144+func aa (ab) = makeString(["%s%s%s", ab, "mappings__lpAsset2PoolContract"], f)
143145
144146
145-func ab () = "%s__lpTokensList"
147+func ac () = "%s__lpTokensList"
146148
147149
148-func ac (aa) = makeString(["%s%s%s", aa, "mappings__lpAsset2PoolContract"], e)
150+func ad (ab) = makeString(["%s%s%s", ab, "mappings__lpAsset2PoolContract"], f)
149151
150152
151-func ad (ae) = makeString(["%s%s", "poolWeight", ae], e)
153+func ae (af) = makeString(["%s%s", "poolWeight", af], f)
152154
153155
154-func af (ag) = split(valueOrElse(getString(ag, ab()), ""), e)
156+func ag (ah) = split(valueOrElse(getString(ah, ac()), ""), f)
155157
156158
157-func ah (ag) = split(y(ag, U()), e)
159+func ai (ah) = split(z(ah, V()), f)
158160
159161
160-func ai (aj) = addressFromStringValue(aj[O])
162+func aj (ak) = addressFromStringValue(ak[P])
161163
162164
163-func ak (aj) = addressFromStringValue(aj[R])
165+func al (ak) = addressFromStringValue(ak[S])
164166
165167
166-func al (aj) = addressFromStringValue(aj[N])
168+func am (ak) = addressFromStringValue(ak[O])
167169
168170
169-func am () = "%s%s__ratePerBlock__current"
171+func an () = "%s%s__ratePerBlock__current"
170172
171173
172-func an () = "%s%s__ratePerBlockMax__current"
174+func ao () = "%s%s__ratePerBlockMax__current"
173175
174176
175-func ao () = "%s%s__emission__startBlock"
177+func ap () = "%s%s__emission__startBlock"
176178
177179
178-func ap () = "%s%s__emission__duration"
180+func aq () = "%s%s__emission__duration"
179181
180182
181-func aq () = "%s%s__emission__endBlock"
183+func ar () = "%s%s__emission__endBlock"
182184
183185
184-func ar (as,at) = makeString(["%s%s%s__staked", as, at], e)
186+func as (at,au) = makeString(["%s%s%s__staked", at, au], f)
185187
186188
187-func au (at) = ("%s%s%s__staked__total__" + at)
189+func av (au) = ("%s%s%s__staked__total__" + au)
188190
189191
190-func av (at,as) = makeString(["%s%s%s__claimed", as, at], e)
192+func aw (au,at) = makeString(["%s%s%s__claimed", at, au], f)
191193
192194
193-func aw (at,as) = makeString(["%s%s%s__claimedMinReward", as, at], e)
195+func ax (au,at) = makeString(["%s%s%s__claimedMinReward", at, au], f)
194196
195197
196-func ax (at,as) = makeString(["%s%s%s__claimedBoostReward", as, at], e)
198+func ay (au,at) = makeString(["%s%s%s__claimedBoostReward", at, au], f)
197199
198200
199-func ay (at) = makeString(["%s%s%s__claimed__total", at], e)
201+func az (au) = makeString(["%s%s%s__claimed__total", au], f)
200202
201203
202-func az (x) = valueOrElse(getInteger(this, x), 0)
204+func aA (y) = valueOrElse(getInteger(this, y), 0)
203205
204206
205-func aA (aB) = makeString(["%s%s%s", aB, "total", "bal"], e)
207+func aB (aC) = makeString(["%s%s%s", aC, "total", "bal"], f)
206208
207209
208-func aC (aB,aD) = makeString(["%s%s%s", aB, aD, "bal"], e)
210+func aD (aC,aE) = makeString(["%s%s%s", aC, aE, "bal"], f)
209211
210212
211-func aE (aB) = makeString(["%s%s%s", aB, "total", "balINT"], e)
213+func aF (aC) = makeString(["%s%s%s", aC, "total", "balINT"], f)
212214
213215
214-func aF (aB,aD) = makeString(["%s%s%s", aB, aD, "balINT"], e)
216+func aG (aC,aE) = makeString(["%s%s%s", aC, aE, "balINT"], f)
215217
216218
217-func aG (aB) = makeString(["%s%s%s", aB, "total", "lastUpd"], e)
219+func aH (aC) = makeString(["%s%s%s", aC, "total", "lastUpd"], f)
218220
219221
220-func aH (aB,aD) = makeString(["%s%s%s", aB, aD, "lastUpd"], e)
222+func aI (aC,aE) = makeString(["%s%s%s", aC, aE, "lastUpd"], f)
221223
222224
223-func aI (aB) = makeString(["%s%s%s%s", aB, "common", "lpInt"], e)
225+func aJ (aC) = makeString(["%s%s%s%s", aC, "common", "lpInt"], f)
224226
225227
226-func aJ (aB) = makeString(["%s%s%s%s", aB, "common", "lpIntH"], e)
228+func aK (aC) = makeString(["%s%s%s%s", aC, "common", "lpIntH"], f)
227229
228230
229-func aK (aB,aD) = makeString(["%s%s%s%s", aB, aD, "lpInt"], e)
231+func aL (aC,aE) = makeString(["%s%s%s%s", aC, aE, "lpInt"], f)
230232
231233
232-func aL (aB,aD) = makeString(["%s%s%s%s", aB, aD, "lpIntH"], e)
234+func aM (aC,aE) = makeString(["%s%s%s%s", aC, aE, "lpIntH"], f)
233235
234236
235-func aM (aB) = makeString(["%s", aB, "wxPerLp"], e)
237+func aN (aC) = makeString(["%s", aC, "wxPerLp"], f)
236238
237239
238-func aN (aB) = makeString(["%s", aB, "wxPerLpX18"], e)
240+func aO (aC) = makeString(["%s", aC, "wxPerLpX18"], f)
239241
240242
241-func aO (aB,aD) = makeString(["%s%s%s%s", aB, aD, "uIntL"], e)
243+func aP (aC,aE) = makeString(["%s%s%s%s", aC, aE, "uIntL"], f)
242244
243245
244-func aP (aQ,aD,aR) = makeString(["%s%s%s%s__history", aQ, aD, aR], e)
246+func aQ (aR,aE,aS) = makeString(["%s%s%s%s__history", aR, aE, aS], f)
245247
246248
247-func aS (aD,aB,aQ,aT) = makeString(["%s%s%s%d%d%d", aD, aB, aQ, toString(height), toString(lastBlock.timestamp), toString(aT)], e)
249+func aT (aE,aC,aR,aU) = makeString(["%s%s%s%d%d%d", aE, aC, aR, toString(height), toString(lastBlock.timestamp), toString(aU)], f)
248250
249251
250-func aU (aQ,aD,aB,aT,aV) = StringEntry(aP(aQ, aD, toBase58String(aV)), aS(aD, aB, aQ, aT))
252+func aV (aR,aE,aC,aU,aW) = StringEntry(aQ(aR, aE, toBase58String(aW)), aT(aE, aC, aR, aU))
251253
252254
253-let aW = v(this, L())
255+let aX = w(this, M())
254256
255-let aX = addressFromStringValue(aW)
257+let aY = addressFromStringValue(aX)
256258
257-let aj = ah(aX)
259+let ak = ai(aY)
258260
259-let aY = ak(aj)
261+let aZ = al(ak)
260262
261-let aZ = ai(aj)
263+let ba = aj(ak)
262264
263-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"))
265+let bb = {
266+ let bc = invoke(aZ, "getBoostCoeffREADONLY", nil, nil)
267+ if ($isInstanceOf(bc, "Int"))
268+ then bc
269+ else throw(($getType(bc) + " couldn't be cast to Int"))
270+ }
264271
265-func bb (aB) = makeString(["%s%s", aB, "nextUser"], e)
272+let bd = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], f)), j("lp_staking_pools contract address is undefined"))), j("invalid lp_staking_pools contract address"))
273+
274+func be (aC) = makeString(["%s%s", aC, "nextUser"], f)
266275
267276
268-func bc (aB) = makeString(["users", aB], e)
277+func bf (aC) = makeString(["users", aC], f)
269278
270279
271-func bd (be) = makeString(["%s%s%s", be, "head"], e)
280+func bg (bh) = makeString(["%s%s%s", bh, "head"], f)
272281
273282
274-func bf (be) = makeString(["%s%s%s", be, "size"], e)
283+func bi (bh) = makeString(["%s%s%s", bh, "size"], f)
275284
276285
277-func bg (be,bh) = makeString(["%s%s%s%s", be, bh, "prev"], e)
286+func bj (bh,bk) = makeString(["%s%s%s%s", bh, bk, "prev"], f)
278287
279288
280-func bi (be,bh) = makeString(["%s%s%s%s", be, bh, "next"], e)
289+func bl (bh,bk) = makeString(["%s%s%s%s", bh, bk, "next"], f)
281290
282291
283-func bj (be,bh) = {
284- let bk = getString(this, bd(be))
285- let bl = getString(this, bg(be, bh))
286- let bm = getString(this, bi(be, bh))
287- if (if ((bh == valueOrElse(bk, "")))
292+func bm (bh,bk) = {
293+ let bn = getString(this, bg(bh))
294+ let bo = getString(this, bj(bh, bk))
295+ let bp = getString(this, bl(bh, bk))
296+ if (if ((bk == valueOrElse(bn, "")))
288297 then true
289- else (bl != unit))
298+ else (bo != unit))
290299 then true
291- else (bm != unit)
300+ else (bp != unit)
292301 }
293302
294303
295-func bn (be,bh) = {
296- let bk = getString(this, bd(be))
297- let bo = valueOrElse(getInteger(this, bf(be)), 0)
298- let bp = if (!(bj(be, bh)))
304+func bq (bh,bk) = {
305+ let bn = getString(this, bg(bh))
306+ let br = valueOrElse(getInteger(this, bi(bh)), 0)
307+ let bs = if (!(bm(bh, bk)))
299308 then true
300309 else throw("Node exists")
301- if ((bp == bp))
302- then (([IntegerEntry(bf(be), (bo + 1))] ++ (if ((bk != unit))
303- then [StringEntry(bi(be, bh), value(bk)), StringEntry(bg(be, value(bk)), bh)]
304- else nil)) ++ [StringEntry(bd(be), bh)])
310+ if ((bs == bs))
311+ then (([IntegerEntry(bi(bh), (br + 1))] ++ (if ((bn != unit))
312+ then [StringEntry(bl(bh, bk), value(bn)), StringEntry(bj(bh, value(bn)), bk)]
313+ else nil)) ++ [StringEntry(bg(bh), bk)])
305314 else throw("Strict value is not equal to itself.")
306315 }
307316
308317
309-func bq (be,bh) = {
310- let bk = getString(this, bd(be))
311- let bo = valueOrElse(getInteger(this, bf(be)), 0)
312- let bl = getString(this, bg(be, bh))
313- let bm = getString(this, bi(be, bh))
314- ([IntegerEntry(bf(be), (bo - 1))] ++ (if (if ((bl != unit))
315- then (bm != unit)
318+func bt (bh,bk) = {
319+ let bn = getString(this, bg(bh))
320+ let br = valueOrElse(getInteger(this, bi(bh)), 0)
321+ let bo = getString(this, bj(bh, bk))
322+ let bp = getString(this, bl(bh, bk))
323+ ([IntegerEntry(bi(bh), (br - 1))] ++ (if (if ((bo != unit))
324+ then (bp != unit)
316325 else false)
317- then [StringEntry(bi(be, value(bl)), value(bm)), StringEntry(bg(be, value(bm)), value(bl)), DeleteEntry(bg(be, bh)), DeleteEntry(bi(be, bh))]
318- else if ((bm != unit))
319- then [StringEntry(bd(be), value(bm)), DeleteEntry(bi(be, bh)), DeleteEntry(bg(be, value(bm)))]
320- else if ((bl != unit))
321- then [DeleteEntry(bg(be, bh)), DeleteEntry(bi(be, value(bl)))]
322- else if ((bh == valueOrElse(bk, "")))
323- then [DeleteEntry(bd(be))]
324- else throw(((("invalid node: " + be) + ".") + bh))))
326+ then [StringEntry(bl(bh, value(bo)), value(bp)), StringEntry(bj(bh, value(bp)), value(bo)), DeleteEntry(bj(bh, bk)), DeleteEntry(bl(bh, bk))]
327+ else if ((bp != unit))
328+ then [StringEntry(bg(bh), value(bp)), DeleteEntry(bl(bh, bk)), DeleteEntry(bj(bh, value(bp)))]
329+ else if ((bo != unit))
330+ then [DeleteEntry(bj(bh, bk)), DeleteEntry(bl(bh, value(bo)))]
331+ else if ((bk == valueOrElse(bn, "")))
332+ then [DeleteEntry(bg(bh))]
333+ else throw(((("invalid node: " + bh) + ".") + bk))))
325334 }
326335
327336
328-func br (bs,bt,bu,bv) = if (if ((bt == g))
329- then (bs > g)
337+func bu (bv,bw,bx,by) = if (if ((bw == h))
338+ then (bv > h)
330339 else false)
331- then g
332- else if ((bs == g))
333- then bu
334- else if (if ((bt > g))
335- then (bs > g)
340+ then h
341+ else if ((bv == h))
342+ then bx
343+ else if (if ((bw > h))
344+ then (bv > h)
336345 else false)
337- then value(parseBigInt(v(this, bv)))
346+ then value(parseBigInt(w(this, by)))
338347 else throw("calcWxPerLpIntegralUserLast: unexpected state")
339348
340349
341-func bw (at,bx,by) = {
342- let bz = au(at)
343- let bA = toBigInt(az(bz))
344- let bB = if ((bA == g))
345- then h
346- else bA
347- let bC = getIntegerValue(aX, ad(bx))
348- let bD = C(aY, ao())
349- let bE = 1000
350- let bF = (C(aY, am()) * bE)
351- let bG = fraction(bF, bC, (f * 3))
352- let bH = aI(at)
353- let bI = aJ(at)
354- let bJ = aM(at)
355- let bK = A(this, bI, bD)
356- let bL = D(this, bH)
357- let bM = 0
358- let bN = max([(height - bK), 0])
359- let bO = if ((bM != 0))
360- then toBigInt(bM)
361- else fraction(toBigInt(bG), toBigInt(b), bB)
362- let bP = (bA + toBigInt(by))
363- let bQ = if ((bP == g))
364- then h
365- else bP
366- let bu = (bL + (bO * toBigInt(bN)))
367- let bR = (toBigInt(bG) / bQ)
368- let bS = height
369- let bT = makeString([toString(bu), toString(bN), toString(bO), toString(bA), toString(bG), toString(bF), toString(bC)], "::")
370- $Tuple3(bu, [StringEntry(bH, toString(bu)), IntegerEntry(bI, bS), StringEntry(bJ, toString(bR))], bT)
350+func bz (au,bA,bB) = {
351+ let bC = av(au)
352+ let bD = toBigInt(aA(bC))
353+ let bE = if ((bD == h))
354+ then i
355+ else bD
356+ let bF = getIntegerValue(aY, ae(bA))
357+ let bG = D(aZ, ap())
358+ let bH = (D(aZ, an()) * b)
359+ let bI = fraction(bH, bF, (g * bb))
360+ let bJ = aJ(au)
361+ let bK = aK(au)
362+ let bL = aN(au)
363+ let bM = B(this, bK, bG)
364+ let bN = E(this, bJ)
365+ let bO = 0
366+ let bP = max([(height - bM), 0])
367+ let bQ = if ((bO != 0))
368+ then toBigInt(bO)
369+ else fraction(toBigInt(bI), toBigInt(c), bE)
370+ let bR = (bD + toBigInt(bB))
371+ let bS = if ((bR == h))
372+ then i
373+ else bR
374+ let bx = (bN + (bQ * toBigInt(bP)))
375+ let bT = (toBigInt(bI) / bS)
376+ let bU = height
377+ let bV = makeString([toString(bx), toString(bP), toString(bQ), toString(bD), toString(bI), toString(bH), toString(bF)], "::")
378+ $Tuple3(bx, [StringEntry(bJ, toString(bx)), IntegerEntry(bK, bU), StringEntry(bL, toString(bT))], bV)
371379 }
372380
373381
374-func bU (at,as,bx,by) = {
375- let bV = bw(at, bx, by)
376- let bu = bV._1
377- let bW = bV._2
378- let bX = bV._3
379- let bE = 1000
380- let bY = ar(as, at)
381- let bs = az(bY)
382- let bZ = aK(at, as)
383- let ca = aL(at, as)
384- let bv = aO(at, as)
385- let cb = D(this, bZ)
386- let bt = z(this, ca)
387- let cc = br(toBigInt(bs), toBigInt(bt), bu, bv)
388- let cd = (b * bE)
389- let ce = max([(cb + fraction((bu - cc), toBigInt(bs), toBigInt(cd))), g])
390- let cf = bu
391- let cg = height
392- let bT = makeString([toString(cb), toString(cc), toString(bs), bX, toString(height)], "::")
393- $Tuple3(ce, (bW ++ [StringEntry(bZ, toString(ce)), IntegerEntry(ca, cg), StringEntry(bv, toString(cf))]), bT)
382+func bW (au,at,bA,bB) = {
383+ let bX = bz(au, bA, bB)
384+ let bx = bX._1
385+ let bY = bX._2
386+ let bZ = bX._3
387+ let ca = as(at, au)
388+ let bv = aA(ca)
389+ let cb = aL(au, at)
390+ let cc = aM(au, at)
391+ let by = aP(au, at)
392+ let cd = E(this, cb)
393+ let bw = A(this, cc)
394+ let ce = bu(toBigInt(bv), toBigInt(bw), bx, by)
395+ let cf = (c * b)
396+ let cg = max([(cd + fraction((bx - ce), toBigInt(bv), toBigInt(cf))), h])
397+ let ch = bx
398+ let ci = height
399+ let bV = makeString([toString(cd), toString(ce), toString(bv), bZ, toString(height)], "::")
400+ $Tuple3(cg, (bY ++ [StringEntry(cb, toString(cg)), IntegerEntry(cc, ci), StringEntry(by, toString(ch))]), bV)
394401 }
395402
396403
397-func ch () = {
398- let n = getString(V())
399- if ($isInstanceOf(n, "String"))
404+func cj () = {
405+ let o = getString(W())
406+ if ($isInstanceOf(o, "String"))
400407 then {
401- let F = n
402- fromBase58String(F)
408+ let G = o
409+ fromBase58String(G)
403410 }
404- else if ($isInstanceOf(n, "Unit"))
411+ else if ($isInstanceOf(o, "Unit"))
405412 then unit
406413 else throw("Match error")
407414 }
408415
409416
410-func ci () = {
411- let n = getString(W())
412- if ($isInstanceOf(n, "String"))
417+func ck () = {
418+ let o = getString(X())
419+ if ($isInstanceOf(o, "String"))
413420 then {
414- let F = n
415- fromBase58String(F)
421+ let G = o
422+ fromBase58String(G)
416423 }
417- else if ($isInstanceOf(n, "Unit"))
424+ else if ($isInstanceOf(o, "Unit"))
418425 then unit
419426 else throw("Match error")
420427 }
421428
422429
423-let cj = throw("Permission denied")
430+let cl = throw("Permission denied")
424431
425-func ck (cl) = if ((cl.caller == this))
432+func cm (cn) = if ((cn.caller == this))
426433 then true
427- else cj
434+ else cl
428435
429436
430-func cm (cl) = {
431- let n = ch()
432- if ($isInstanceOf(n, "ByteVector"))
437+func co (cn) = {
438+ let o = cj()
439+ if ($isInstanceOf(o, "ByteVector"))
433440 then {
434- let cn = n
435- if ((cl.callerPublicKey == cn))
441+ let cp = o
442+ if ((cn.callerPublicKey == cp))
436443 then true
437- else cj
444+ else cl
438445 }
439- else if ($isInstanceOf(n, "Unit"))
440- then if ((cl.caller == this))
446+ else if ($isInstanceOf(o, "Unit"))
447+ then if ((cn.caller == this))
441448 then true
442- else cj
449+ else cl
443450 else throw("Match error")
444451 }
445452
446453
447-func co (cl,aB,cp,aD,aT) = {
448- let as = toString(aD)
449- let at = toBase58String(aB)
450- let bx = toString(cp)
451- let bY = ar(as, at)
452- let bz = au(at)
453- let bs = az(bY)
454- let cq = if ((bs == 0))
455- then invoke(aZ, "onStakedVoteUpdate", [at, as, true], nil)
454+func cq (cn,aC,cr,aE,aU) = {
455+ let at = toString(aE)
456+ let au = toBase58String(aC)
457+ let bA = toString(cr)
458+ let ca = as(at, au)
459+ let bC = av(au)
460+ let bv = aA(ca)
461+ let cs = if ((bv == 0))
462+ then invoke(ba, "onStakedVoteUpdate", [au, at, true], nil)
456463 else unit
457- if ((cq == cq))
464+ if ((cs == cs))
458465 then {
459- let bA = az(bz)
460- let cr = bU(at, as, bx, aT)
461- let ce = cr._1
462- let cs = cr._2
463- let bT = cr._3
464- let be = bc(at)
465- let ct = if (bj(be, as))
466+ let bD = aA(bC)
467+ let ct = bW(au, at, bA, aU)
468+ let cg = ct._1
469+ let cu = ct._2
470+ let bV = ct._3
471+ let bh = bf(au)
472+ let cv = if (bm(bh, at))
466473 then nil
467- else bn(be, as)
468- (([IntegerEntry(bY, (bs + aT)), IntegerEntry(bz, (bA + aT)), aU("stake", as, at, aT, cl.transactionId)] ++ cs) ++ ct)
474+ else bq(bh, at)
475+ (([IntegerEntry(ca, (bv + aU)), IntegerEntry(bC, (bD + aU)), aV("stake", at, au, aU, cn.transactionId)] ++ cu) ++ cv)
469476 }
470477 else throw("Strict value is not equal to itself.")
471478 }
472479
473480
474-func cu (cl,aB,cp,aD,cv,aT) = {
475- let as = toString(aD)
476- let at = toBase58String(aB)
477- let bx = toString(cp)
478- let bY = ar(as, at)
479- let bz = au(at)
480- let bs = az(bY)
481- let bA = az(bz)
482- let cs = bU(at, as, bx, -(aT))._2
483- let be = bc(at)
484- let ct = if (if (bj(be, as))
485- then (aT == bs)
481+func cw (cn,aC,cr,aE,cx,aU) = {
482+ let at = toString(aE)
483+ let au = toBase58String(aC)
484+ let bA = toString(cr)
485+ let ca = as(at, au)
486+ let bC = av(au)
487+ let bv = aA(ca)
488+ let bD = aA(bC)
489+ let cu = bW(au, at, bA, -(aU))._2
490+ let bh = bf(au)
491+ let cv = if (if (bm(bh, at))
492+ then (aU == bv)
486493 else false)
487- then bq(be, as)
494+ then bt(bh, at)
488495 else nil
489- let cq = if ((aT == bs))
490- then invoke(aZ, "onStakedVoteUpdate", [at, as, false], nil)
496+ let cs = if ((aU == bv))
497+ then invoke(ba, "onStakedVoteUpdate", [au, at, false], nil)
491498 else unit
492- if ((cq == cq))
499+ if ((cs == cs))
493500 then {
494- let cw = D(this, aw(at, as))
495- let ce = bU(at, as, bx, 0)._1
496- let cx = (ce - cw)
497- let cy = true
498- let cz = if ((cx > g))
499- then invoke(this, "claimWxINTERNAL", [at, as, cy], nil)
501+ let cy = E(this, ax(au, at))
502+ let cg = bW(au, at, bA, 0)._1
503+ let cz = (cg - cy)
504+ let cA = true
505+ let cB = if ((cz > h))
506+ then invoke(this, "claimWxINTERNAL", [au, at, cA], nil)
500507 else unit
501- if ((cz == cz))
502- then if ((aT > bs))
503- then throw(((((((("passed amount=" + toString(aT)) + " is greater than available=") + toString(bs)) + ". lpAssetId=") + at) + ". stakedByUserKEY=") + bY))
504- else (([IntegerEntry(bY, (bs - aT)), IntegerEntry(bz, (bA - aT)), ScriptTransfer(cv, aT, aB), aU("unstake", as, at, aT, cl.transactionId)] ++ cs) ++ ct)
508+ if ((cB == cB))
509+ then if ((aU > bv))
510+ then throw(((((((("passed amount=" + toString(aU)) + " is greater than available=") + toString(bv)) + ". lpAssetId=") + au) + ". stakedByUserKEY=") + ca))
511+ else (([IntegerEntry(ca, (bv - aU)), IntegerEntry(bC, (bD - aU)), ScriptTransfer(cx, aU, aC), aV("unstake", at, au, aU, cn.transactionId)] ++ cu) ++ cv)
505512 else throw("Strict value is not equal to itself.")
506513 }
507514 else throw("Strict value is not equal to itself.")
508515 }
509516
510517
511-@Callable(cl)
512-func constructor (cA) = {
513- let cB = cm(cl)
514- if ((cB == cB))
515- then [StringEntry(L(), cA)]
516- else throw("Strict value is not equal to itself.")
517- }
518-
519-
520-
521-@Callable(cl)
522-func constructorV2 (cC) = {
523- let cD = [cm(cl), if ((addressFromString(cC) != unit))
524- then true
525- else "invalid voting emission contract address"]
518+@Callable(cn)
519+func constructor (cC) = {
520+ let cD = co(cn)
526521 if ((cD == cD))
527522 then [StringEntry(M(), cC)]
528523 else throw("Strict value is not equal to itself.")
529524 }
530525
531526
532527
533-@Callable(cl)
534-func setManager (cE) = {
535- let cB = cm(cl)
536- if ((cB == cB))
528+@Callable(cn)
529+func constructorV2 (cE) = {
530+ let cF = [co(cn), if ((addressFromString(cE) != unit))
531+ then true
532+ else "invalid voting emission contract address"]
533+ if ((cF == cF))
534+ then [StringEntry(N(), cE)]
535+ else throw("Strict value is not equal to itself.")
536+ }
537+
538+
539+
540+@Callable(cn)
541+func setManager (cG) = {
542+ let cD = co(cn)
543+ if ((cD == cD))
537544 then {
538- let cF = fromBase58String(cE)
539- if ((cF == cF))
540- then [StringEntry(W(), cE)]
545+ let cH = fromBase58String(cG)
546+ if ((cH == cH))
547+ then [StringEntry(X(), cG)]
541548 else throw("Strict value is not equal to itself.")
542549 }
543550 else throw("Strict value is not equal to itself.")
544551 }
545552
546553
547554
548-@Callable(cl)
555+@Callable(cn)
549556 func confirmManager () = {
550- let cG = ci()
551- let cH = if (isDefined(cG))
557+ let cI = ck()
558+ let cJ = if (isDefined(cI))
552559 then true
553560 else throw("No pending manager")
554- if ((cH == cH))
561+ if ((cJ == cJ))
555562 then {
556- let cI = if ((cl.callerPublicKey == value(cG)))
563+ let cK = if ((cn.callerPublicKey == value(cI)))
557564 then true
558565 else throw("You are not pending manager")
559- if ((cI == cI))
560- then [StringEntry(V(), toBase58String(value(cG))), DeleteEntry(W())]
566+ if ((cK == cK))
567+ then [StringEntry(W(), toBase58String(value(cI))), DeleteEntry(X())]
561568 else throw("Strict value is not equal to itself.")
562569 }
563570 else throw("Strict value is not equal to itself.")
564571 }
565572
566573
567574
568-@Callable(cl)
569-func stake () = if ((size(cl.payments) != 1))
575+@Callable(cn)
576+func stake () = if ((size(cn.payments) != 1))
570577 then throw("invalid payment - exact one payment must be attached")
571578 else {
572- let cJ = cl.payments[0]
573- let aB = value(cJ.assetId)
574- let at = toBase58String(aB)
575- let aT = cJ.amount
576- let bx = valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at))
577- let cp = addressFromStringValue(bx)
578- let aD = if ((cl.caller == cp))
579- then cl.originCaller
580- else cl.caller
581- co(cl, aB, cp, aD, aT)
579+ let cL = cn.payments[0]
580+ let aC = value(cL.assetId)
581+ let au = toBase58String(aC)
582+ let aU = cL.amount
583+ let bA = valueOrErrorMessage(getString(aY, aa(au)), ("unsupported lp asset " + au))
584+ let cr = addressFromStringValue(bA)
585+ let aE = if ((cn.caller == cr))
586+ then cn.originCaller
587+ else cn.caller
588+ cq(cn, aC, cr, aE, aU)
582589 }
583590
584591
585592
586-@Callable(cl)
587-func stakeFor (as) = if ((size(cl.payments) != 1))
593+@Callable(cn)
594+func stakeFor (at) = if ((size(cn.payments) != 1))
588595 then throw("invalid payment - exact one payment must be attached")
589596 else {
590- let cJ = cl.payments[0]
591- let aB = value(cJ.assetId)
592- let at = toBase58String(aB)
593- let aT = cJ.amount
594- let bx = valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at))
595- let cp = addressFromStringValue(bx)
596- let aD = valueOrErrorMessage(addressFromString(as), i("invalid user address"))
597- co(cl, aB, cp, aD, aT)
597+ let cL = cn.payments[0]
598+ let aC = value(cL.assetId)
599+ let au = toBase58String(aC)
600+ let aU = cL.amount
601+ let bA = valueOrErrorMessage(getString(aY, aa(au)), ("unsupported lp asset " + au))
602+ let cr = addressFromStringValue(bA)
603+ let aE = valueOrErrorMessage(addressFromString(at), j("invalid user address"))
604+ cq(cn, aC, cr, aE, aU)
598605 }
599606
600607
601608
602-@Callable(cl)
603-func unstake (at,aT) = {
604- let aB = fromBase58String(at)
605- let bx = valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at))
606- let cp = addressFromStringValue(bx)
607- let cK = valueOrElse(getString(cp, Y()), bx)
608- let cL = toString(cl.caller)
609- let aD = if (if ((cL == bx))
609+@Callable(cn)
610+func unstake (au,aU) = {
611+ let aC = fromBase58String(au)
612+ let bA = valueOrErrorMessage(getString(aY, aa(au)), ("unsupported lp asset " + au))
613+ let cr = addressFromStringValue(bA)
614+ let cM = valueOrElse(getString(cr, Z()), bA)
615+ let cN = toString(cn.caller)
616+ let aE = if (if ((cN == bA))
610617 then true
611- else (cL == cK))
612- then cl.originCaller
613- else cl.caller
614- let cv = cl.caller
615- cu(cl, aB, cp, aD, cv, aT)
618+ else (cN == cM))
619+ then cn.originCaller
620+ else cn.caller
621+ let cx = cn.caller
622+ cw(cn, aC, cr, aE, cx, aU)
616623 }
617624
618625
619626
620-@Callable(cl)
621-func unstakeINTERNAL (aB,aT,aD,cv) = {
622- let at = toBase58String(aB)
623- let cp = addressFromStringValue(valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at)))
624- let cB = if ((cl.caller == cp))
627+@Callable(cn)
628+func unstakeINTERNAL (aC,aU,aE,cx) = {
629+ let au = toBase58String(aC)
630+ let cr = addressFromStringValue(valueOrErrorMessage(getString(aY, aa(au)), ("unsupported lp asset " + au)))
631+ let cD = if ((cn.caller == cr))
625632 then true
626- else cj
627- if ((cB == cB))
628- then cu(cl, aB, cp, Address(aD), Address(cv), aT)
633+ else cl
634+ if ((cD == cD))
635+ then cw(cn, aC, cr, Address(aE), Address(cx), aU)
629636 else throw("Strict value is not equal to itself.")
630637 }
631638
632639
633640
634-@Callable(cl)
635-func claimWx (at) = {
636- let as = toString(cl.caller)
637- let cy = true
638- let cM = invoke(this, "claimWxINTERNAL", [at, as, cy], nil)
639- $Tuple2(nil, cM)
641+@Callable(cn)
642+func claimWx (au) = {
643+ let at = toString(cn.caller)
644+ let cA = true
645+ let cO = invoke(this, "claimWxINTERNAL", [au, at, cA], nil)
646+ $Tuple2(nil, cO)
640647 }
641648
642649
643650
644-@Callable(cl)
645-func claimWxDoNotThrow (at) = {
646- let as = toString(cl.caller)
647- let cy = false
648- let cM = invoke(this, "claimWxINTERNAL", [at, as, cy], nil)
649- $Tuple2(nil, cM)
651+@Callable(cn)
652+func claimWxDoNotThrow (au) = {
653+ let at = toString(cn.caller)
654+ let cA = false
655+ let cO = invoke(this, "claimWxINTERNAL", [au, at, cA], nil)
656+ $Tuple2(nil, cO)
650657 }
651658
652659
653660
654-@Callable(cl)
655-func claimWxINTERNAL (at,as,cy) = {
656- let cB = ck(cl)
657- if ((cB == cB))
661+@Callable(cn)
662+func claimWxINTERNAL (au,at,cA) = {
663+ let cD = cm(cn)
664+ if ((cD == cD))
658665 then {
659- let aD = valueOrErrorMessage(addressFromString(as), "claimWxINTERNAL: invalid user address")
660- let bx = y(aX, ac(at))
661- let cN = av(at, as)
662- let cO = ay(at)
663- let cP = aw(at, as)
664- let cQ = ax(at, as)
665- let cR = D(this, cN)
666- let cw = D(this, cP)
667- let cS = D(this, cQ)
668- let cT = D(this, cO)
669- let cU = bU(at, as, bx, 0)
670- let ce = cU._1
671- let cs = cU._2
672- let bT = cU._3
673- let cx = max([(ce - cw), g])
674- if ((g >= cx))
675- then if (cy)
666+ let aE = valueOrErrorMessage(addressFromString(at), "claimWxINTERNAL: invalid user address")
667+ let bA = z(aY, ad(au))
668+ let cP = aw(au, at)
669+ let cQ = az(au)
670+ let cR = ax(au, at)
671+ let cS = ay(au, at)
672+ let cT = E(this, cP)
673+ let cy = E(this, cR)
674+ let cU = E(this, cS)
675+ let cV = E(this, cQ)
676+ let cW = bW(au, at, bA, 0)
677+ let cg = cW._1
678+ let cu = cW._2
679+ let bV = cW._3
680+ let cz = max([(cg - cy), h])
681+ if ((h >= cz))
682+ then if (cA)
676683 then throw("nothing to claim")
677684 else $Tuple2(nil, 0)
678685 else {
679- let cV = max([p(l(invoke(aZ, "claimWxBoost", [at, as], nil))[0]), 0])
680- let cW = cx
681- let cX = min([(cW * toBigInt(2)), toBigInt(cV)])
682- let cY = (cW + cX)
683- let cZ = t(l(invoke(aY, "emit", [toInt(cW)], nil))[0])
684- let da = l(invoke(aY, "emit", [toInt(cX)], nil))
685- if ((da == da))
686+ let cX = max([q(m(invoke(ba, "claimWxBoost", [au, at], nil))[0]), 0])
687+ let cY = cz
688+ let cZ = min([(cY * toBigInt((bb - 1))), toBigInt(cX)])
689+ let da = (cY + cZ)
690+ let db = u(m(invoke(aZ, "emit", [toInt(cY)], nil))[0])
691+ let dc = m(invoke(aZ, "emit", [toInt(cZ)], nil))
692+ if ((dc == dc))
686693 then {
687- let db = ((cR + cW) + cX)
688- let dc = (cw + cW)
689- let dd = (cS + cX)
690- let de = (cT + cx)
691- $Tuple2([StringEntry(cN, toString(db)), StringEntry(cP, toString(dc)), StringEntry(cQ, toString(dd)), StringEntry(cO, toString(de)), ScriptTransfer(aD, toInt(cW), cZ), ScriptTransfer(aD, toInt(cX), cZ), aU("claim", as, at, toInt(cx), cl.transactionId)], toInt(cY))
694+ let dd = ((cT + cY) + cZ)
695+ let de = (cy + cY)
696+ let df = (cU + cZ)
697+ let dg = (cV + cz)
698+ $Tuple2([StringEntry(cP, toString(dd)), StringEntry(cR, toString(de)), StringEntry(cS, toString(df)), StringEntry(cQ, toString(dg)), ScriptTransfer(aE, toInt(cY), db), ScriptTransfer(aE, toInt(cZ), db), aV("claim", at, au, toInt(cz), cn.transactionId)], toInt(da))
692699 }
693700 else throw("Strict value is not equal to itself.")
694701 }
695702 }
696703 else throw("Strict value is not equal to itself.")
697704 }
698705
699706
700707
701-@Callable(cl)
702-func claimWxBulkInternalREADONLY (df,dg,as,dh) = if ((df == size(dg)))
703- then $Tuple2(nil, dh)
708+@Callable(cn)
709+func claimWxBulkInternalREADONLY (dh,di,at,dj) = if ((dh == size(di)))
710+ then $Tuple2(nil, dj)
704711 else {
705- let aB = dg[df]
706- let di = split({
707- let dj = invoke(this, "claimWxREADONLY", [aB, as], nil)
708- if ($isInstanceOf(dj, "String"))
709- then dj
710- else throw(($getType(dj) + " couldn't be cast to String"))
711- }, e)
712- let dk = di[3]
713- let dl = di[4]
714- let dm = (dh :+ makeString(["%d%d", dk, dl], e))
712+ let aC = di[dh]
713+ let dk = split({
714+ let bc = invoke(this, "claimWxREADONLY", [aC, at], nil)
715+ if ($isInstanceOf(bc, "String"))
716+ then bc
717+ else throw(($getType(bc) + " couldn't be cast to String"))
718+ }, f)
719+ let dl = dk[3]
720+ let dm = dk[4]
715721 let dn = {
716- let dj = invoke(this, "claimWxBulkInternalREADONLY", [(df + 1), dg, as, dm], nil)
717- if ($isInstanceOf(dj, "List[Any]"))
718- then dj
719- else throw(($getType(dj) + " couldn't be cast to List[Any]"))
722+ let bc = invoke(ba, "getUserVoteFinalizedREADONLY", [aC, at], nil)
723+ if ($isInstanceOf(bc, "Int"))
724+ then bc
725+ else throw(($getType(bc) + " couldn't be cast to Int"))
720726 }
721- if ((dn == dn))
722- then $Tuple2(nil, dn)
727+ let do = (dj :+ makeString(["%d%d%d", dl, dm, toString(dn)], f))
728+ let dp = {
729+ let bc = invoke(this, "claimWxBulkInternalREADONLY", [(dh + 1), di, at, do], nil)
730+ if ($isInstanceOf(bc, "List[Any]"))
731+ then bc
732+ else throw(($getType(bc) + " couldn't be cast to List[Any]"))
733+ }
734+ if ((dp == dp))
735+ then $Tuple2(nil, dp)
723736 else throw("Strict value is not equal to itself.")
724737 }
725738
726739
727740
728-@Callable(cl)
729-func claimWxBulkREADONLY (dg,as) = {
730- let dm = invoke(this, "claimWxBulkInternalREADONLY", [0, dg, as, nil], nil)
731- $Tuple2(nil, dm)
741+@Callable(cn)
742+func claimWxBulkREADONLY (di,at) = {
743+ let do = invoke(this, "claimWxBulkInternalREADONLY", [0, di, at, nil], nil)
744+ $Tuple2(nil, do)
732745 }
733746
734747
735748
736-@Callable(cl)
737-func claimWxREADONLY (at,as) = {
738- let bY = ar(as, at)
739- let bz = au(at)
740- let cN = av(at, as)
741- let cP = aw(at, as)
742- let bs = az(bY)
743- let bA = az(bz)
744- let cR = D(this, cN)
745- let cw = D(this, cP)
746- let bx = y(aX, ac(at))
747- let bC = getIntegerValue(aX, ad(bx))
748- let do = C(aY, am())
749- let bD = C(aY, ao())
750- let dp = if ((bD > height))
749+@Callable(cn)
750+func claimWxREADONLY (au,at) = {
751+ let ca = as(at, au)
752+ let bC = av(au)
753+ let cP = aw(au, at)
754+ let cR = ax(au, at)
755+ let bv = aA(ca)
756+ let bD = aA(bC)
757+ let cT = E(this, cP)
758+ let cy = E(this, cR)
759+ let bA = z(aY, ad(au))
760+ let bF = getIntegerValue(aY, ae(bA))
761+ let dq = D(aZ, an())
762+ let bG = D(aZ, ap())
763+ let dr = if ((bG > height))
751764 then 0
752- else (height - bD)
753- let dq = fraction((do * dp), bC, f)
754- let dr = fraction(dq, bs, bA)
755- let ds = bU(at, as, bx, 0)
756- let ce = ds._1
757- let cs = ds._2
758- let bT = ds._3
759- let cx = max([(ce - cw), g])
760- let dt = l(invoke(aZ, "claimWxBoostREADONLY", [at, as], nil))
761- let cV = max([p(dt[0]), 0])
762- let du = r(dt[1])
763- let cW = cx
764- let cX = min([(cW * toBigInt(2)), toBigInt(cV)])
765- let cY = (cW + cX)
766- $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", at, as, toString(cY), toString(cR), toString(cW), toString(cX), "soon"], e))
765+ else (height - bG)
766+ let ds = fraction((dq * dr), bF, g)
767+ let dt = fraction(ds, bv, bD)
768+ let du = bW(au, at, bA, 0)
769+ let cg = du._1
770+ let cu = du._2
771+ let bV = du._3
772+ let cz = max([(cg - cy), h])
773+ let dv = m(invoke(ba, "claimWxBoostREADONLY", [au, at], nil))
774+ let cX = max([q(dv[0]), 0])
775+ let dw = s(dv[1])
776+ let cY = cz
777+ let cZ = min([(cY * toBigInt((bb - 1))), toBigInt(cX)])
778+ let da = (cY + cZ)
779+ $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", au, at, toString(da), toString(cT), toString(cY), toString(cZ), "soon"], f))
767780 }
768781
769782
770783
771-@Callable(cl)
772-func stakedByUserREADONLY (at,as) = {
773- let bs = valueOrElse(getInteger(ar(as, at)), 0)
774- $Tuple2(nil, bs)
784+@Callable(cn)
785+func stakedByUserREADONLY (au,at) = {
786+ let bv = valueOrElse(getInteger(as(at, au)), 0)
787+ $Tuple2(nil, bv)
775788 }
776789
777790
778791
779-@Callable(cl)
780-func usersListTraversal (aB) = {
781- let cB = if ((toBase58String(cl.caller.bytes) == valueOrElse(getString(this, M()), "")))
792+@Callable(cn)
793+func usersListTraversal (aC) = {
794+ let cD = if ((toBase58String(cn.caller.bytes) == valueOrElse(getString(this, N()), "")))
782795 then true
783- else cm(cl)
784- if ((cB == cB))
796+ else co(cn)
797+ if ((cD == cD))
785798 then {
786- let be = bc(aB)
787- let dv = getString(bb(aB))
788- let bk = getString(bd(be))
789- let n = dv
790- if ($isInstanceOf(n, "Unit"))
799+ let bh = bf(aC)
800+ let dx = getString(be(aC))
801+ let bn = getString(bg(bh))
802+ let o = dx
803+ if ($isInstanceOf(o, "Unit"))
791804 then {
792- let dw = bk
793- if ($isInstanceOf(dw, "Unit"))
805+ let dy = bn
806+ if ($isInstanceOf(dy, "Unit"))
794807 then $Tuple2(nil, false)
795- else if ($isInstanceOf(dw, "String"))
808+ else if ($isInstanceOf(dy, "String"))
796809 then {
797- let dx = dw
798- $Tuple2([StringEntry(bb(aB), dx)], true)
810+ let dz = dy
811+ $Tuple2([StringEntry(be(aC), dz)], true)
799812 }
800813 else throw("Match error")
801814 }
802- else if ($isInstanceOf(n, "String"))
815+ else if ($isInstanceOf(o, "String"))
803816 then {
804- let aD = n
805- let cw = D(this, aw(aB, aD))
806- let cp = y(aX, ac(aB))
807- let ce = bU(aB, aD, cp, 0)._1
808- let cx = (ce - cw)
809- let cy = true
810- let cz = if ((cx > g))
811- then invoke(this, "claimWxINTERNAL", [aB, aD, cy], nil)
817+ let aE = o
818+ let cy = E(this, ax(aC, aE))
819+ let cr = z(aY, ad(aC))
820+ let cg = bW(aC, aE, cr, 0)._1
821+ let cz = (cg - cy)
822+ let cA = true
823+ let cB = if ((cz > h))
824+ then invoke(this, "claimWxINTERNAL", [aC, aE, cA], nil)
812825 else unit
813- if ((cz == cz))
826+ if ((cB == cB))
814827 then {
815- let dy = getString(bi(be, aD))
816- let dw = dy
817- if ($isInstanceOf(dw, "Unit"))
818- then $Tuple2([DeleteEntry(bb(aB))], false)
819- else if ($isInstanceOf(dw, "String"))
828+ let dA = getString(bl(bh, aE))
829+ let dy = dA
830+ if ($isInstanceOf(dy, "Unit"))
831+ then $Tuple2([DeleteEntry(be(aC))], false)
832+ else if ($isInstanceOf(dy, "String"))
820833 then {
821- let dz = dw
822- $Tuple2([StringEntry(bb(aB), dz)], true)
834+ let dB = dy
835+ $Tuple2([StringEntry(be(aC), dB)], true)
823836 }
824837 else throw("Match error")
825838 }
826839 else throw("Strict value is not equal to itself.")
827840 }
828841 else throw("Match error")
829842 }
830843 else throw("Strict value is not equal to itself.")
831844 }
832845
833846
834847
835-@Callable(cl)
836-func onModifyWeight (at,bx) = if ((cl.caller != aX))
848+@Callable(cn)
849+func onModifyWeight (au,bA) = if ((cn.caller != aY))
837850 then throw("permissions denied")
838851 else {
839- let dA = bw(at, bx, 0)
840- let bu = dA._1
841- let bW = dA._2
842- let bX = dA._3
843- bW
852+ let dC = bz(au, bA, 0)
853+ let bx = dC._1
854+ let bY = dC._2
855+ let bZ = dC._3
856+ bY
844857 }
845858
846859
847-@Verifier(dB)
848-func dC () = {
849- let dD = {
850- let n = ch()
851- if ($isInstanceOf(n, "ByteVector"))
860+@Verifier(dD)
861+func dE () = {
862+ let dF = {
863+ let o = cj()
864+ if ($isInstanceOf(o, "ByteVector"))
852865 then {
853- let cn = n
854- cn
866+ let cp = o
867+ cp
855868 }
856- else if ($isInstanceOf(n, "Unit"))
857- then dB.senderPublicKey
869+ else if ($isInstanceOf(o, "Unit"))
870+ then dD.senderPublicKey
858871 else throw("Match error")
859872 }
860- sigVerify(dB.bodyBytes, dB.proofs[0], dD)
873+ sigVerify(dD.bodyBytes, dD.proofs[0], dF)
861874 }
862875

github/deemru/w8io/169f3d6 
418.89 ms