tx · E8S5fXFiSViA45mZ83AqCwxbLrnJLmwac9ihyZQpZS18

3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA:  -0.04100000 Waves

2023.05.02 09:53 [2559809] smart account 3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA > SELF 0.00000000 Waves

{ "type": 13, "id": "E8S5fXFiSViA45mZ83AqCwxbLrnJLmwac9ihyZQpZS18", "fee": 4100000, "feeAssetId": null, "timestamp": 1683010366926, "version": 2, "chainId": 84, "sender": "3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA", "senderPublicKey": "35yd3qw1gxKDxKwGAykHN9fANbXNWwseaUwbWDj24o3x", "proofs": [ "6w1kUWtNC3hdzrdBHyFvXXApdG7fdMtttJ9kVj78Wh59TiGiSuQrrPcLu9fQJxX9ZL4PLvCE8Nn9GWGfEbGhbjF" ], "script": "base64:BgK+LAgCEgUKAwEEARIHCgUBBAEIARIDCgEIEgMKAQgSABIECgIBBBIECgIBBBIDCgEBEgASBAoCCAESABIECgIIARIECgIIARIECgIBARIDCgEBEgUKAwEBARIFCgMBCAESBAoCAQgSBAoCAQgSBAoCCAgSABIDCgEIEgUKAwEBARIECgIIARIECgIBARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAIgR0ZXN0IgZzY2FsZTgiDHNjYWxlOEJpZ0ludCIHc2NhbGUxOCIKemVyb0JpZ0ludCIEYmlnMCIEYmlnMSIEYmlnMiIEYmlnMyIEYmlnNCIKc2xpcHBhZ2U0RCILd2F2ZXNTdHJpbmciBUFtdWx0IgVEY29udiIDU0VQIgVFTVBUWSIKUG9vbEFjdGl2ZSIKUG9vbFB1dERpcyIOUG9vbE1hdGNoZXJEaXMiDFBvb2xTaHV0ZG93biIOaWR4UG9vbEFkZHJlc3MiCWlkeFBvb2xTdCIJaWR4TFBBc0lkIglpZHhBbUFzSWQiCWlkeFByQXNJZCILaWR4QW10QXNEY20iDWlkeFByaWNlQXNEY20iC2lkeElBbXRBc0lkIg1pZHhJUHJpY2VBc0lkIg9pZHhGYWN0U3Rha0NudHIiEmlkeEZhY3RvcnlSZXN0Q250ciIQaWR4RmFjdFNsaXBwQ250ciIRaWR4RmFjdEd3eFJld0NudHIiCmZlZURlZmF1bHQiAnQxIgdvcmlnVmFsIg1vcmlnU2NhbGVNdWx0Igh0MUJpZ0ludCICZjEiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igxmcm9tWDE4Um91bmQiBXJvdW5kIgJ0MiICZjIiAnRzIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIBdCIDcGF1IgJ1YSIEdHhJZCIDZ2F1IgJhYSICcGEiA2FtcCINa2V5QW1wSGlzdG9yeSIMaGVpZ2h0QmxvY2tzIhRrZXlDaGFuZ2VBbXBMYXN0Q2FsbCIGa2V5RmVlIgNmZWUiBmtleURMcCIVa2V5RExwUmVmcmVzaGVkSGVpZ2h0IhJrZXlETHBSZWZyZXNoRGVsYXkiFmRMcFJlZnJlc2hEZWxheURlZmF1bHQiD2RMcFJlZnJlc2hEZWxheSIEZmNmZyIEbXRwayICcGMiBmlBbXRBcyIFaVByQXMiA21iYSIFYkFTdHIiA2FwcyIca2V5QWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaCIWa2V5RmVlQ29sbGVjdG9yQWRkcmVzcyIWa2V5U2tpcE9yZGVyVmFsaWRhdGlvbiILcG9vbEFkZHJlc3MiD3Rocm93T3JkZXJFcnJvciIKb3JkZXJWYWxpZCIOb3JkZXJWYWxpZEluZm8iC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiBHN0cmYiBGFkZHIiA2tleSIEaW50ZiIIdGhyb3dFcnIiA21zZyIGZm10RXJyIgNmY2EiBWluRmVlIgFAIgZvdXRGZWUiAUEiA2lncyICbXAiE2ZlZUNvbGxlY3RvckFkZHJlc3MiA2dwYyIFYW10QXMiB3ByaWNlQXMiCGlQcmljZUFzIgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciD3BhcnNlUG9vbENvbmZpZyIKcG9vbENvbmZpZyIQcG9vbENvbmZpZ1BhcnNlZCILJHQwODE4MTg0MTAiDmNmZ1Bvb2xBZGRyZXNzIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIhJjZmdJbkFtb3VudEFzc2VkSWQiEWNmZ0luUHJpY2VBc3NldElkIgNnZmMiDWZhY3RvcnlDb25maWciD3N0YWtpbmdDb250cmFjdCIPc2xpcGFnZUNvbnRyYWN0Igtnd3hDb250cmFjdCIMcmVzdENvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiCnNsaXBCeVVzZXIiDHNsaXBwYWdlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIgxzbGlwYWdlQW1BbXQiDHNsaXBhZ2VQckFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIgRjcGJpIghwckFtdFgxOCIIYW1BbXRYMTgiBWNwYmlyIgN2YWQiAkExIgJBMiIIc2xpcHBhZ2UiBGRpZmYiBHBhc3MiAnZkIgJEMSICRDAiBHNscGciBGZhaWwiA3BjcCIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10IgthbXRBc0FtdFgxOCIKcHJBc0FtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiCGFtdEFzRGNtIgdwckFzRGNtIghwcmljZVgxOCIIbHBBbXRYMTgiDWxwUHJJbkFtQXNYMTgiDWxwUHJJblByQXNYMTgiD2NhbGN1bGF0ZVByaWNlcyIBcCIHdGFrZUZlZSIGYW1vdW50IglmZWVBbW91bnQiBGdldEQiAnhwIgN4cDAiA3hwMSIBcyIBYSIDYW5uIgt4cDBfeHAxX25fbiIFYW5uX3MiBWFubl8xIgljYWxjRE5leHQiAWQiAmRkIgNkZGQiAmRwIgRjYWxjIgNhY2MiAWkiBWROZXh0IghkRGlmZlJhdyIFZERpZmYiA2FyciINJHQwMTI5MTUxMjk2MyICJGwiAiRzIgUkYWNjMCIFJGYwXzEiAiRhIgIkaSIFJGYwXzIiBWZvdW5kIgNlZ28iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiC3VzZXJBZGRyZXNzIgRscElkIgRhbUlkIgRwcklkIgVhbURjbSIFcHJEY20iA3N0cyIHbHBFbWlzcyIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4IgpscEVtaXNzWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiA2VwbyIHaW5BbUFtdCIGaW5BbUlkIgdpblByQW10IgZpblBySWQiBmlzRXZhbCIGZW1pdExwIgppc09uZUFzc2V0IhB2YWxpZGF0ZVNsaXBwYWdlIgZwbXRBbXQiBXBtdElkIgdhbUlkU3RyIgdwcklkU3RyIglpbkFtSWRTdHIiCWluUHJJZFN0ciIGYW10RGNtIghwcmljZURjbSIEbHBFbSIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIBciIGY2hlY2tEIgtzbGlwcGFnZVgxOCIPc2xpcHBhZ2VSZWFsWDE4Ig1scEVtaXNzaW9uWDE4IgpwclZpYUFtWDE4IgphbVZpYVByWDE4IgxleHBlY3RlZEFtdHMiEWV4cEFtdEFzc2V0QW10WDE4IhNleHBQcmljZUFzc2V0QW10WDE4IgljYWxjTHBBbXQiDmNhbGNBbUFzc2V0UG10Ig5jYWxjUHJBc3NldFBtdCIMc2xpcHBhZ2VDYWxjIgllbWl0THBBbXQiBmFtRGlmZiIGcHJEaWZmIg0kdDAyMDgwMjIxMTQ3Igp3cml0ZUFtQW10Igp3cml0ZVByQW10Igtjb21tb25TdGF0ZSIFZ2V0WUQiAUQiAW4iAXgiCmFQcmVjaXNpb24iAWMiAWIiA2N1ciINJHQwMjIzNDIyMjM2MiIBeSIFeU5leHQiBXlEaWZmIg0kdDAyMjY2OTIyNzE2IgdjYWxjRExwIg1hbW91bnRCYWxhbmNlIgxwcmljZUJhbGFuY2UiCmxwRW1pc3Npb24iCnVwZGF0ZWRETHAiDmNhbGNDdXJyZW50RExwIhBhbW91bnRBc3NldERlbHRhIg9wcmljZUFzc2V0RGVsdGEiFGxwQXNzZXRFbWlzc2lvbkRlbHRhIhJhbW91bnRBc3NldEJhbGFuY2UiEXByaWNlQXNzZXRCYWxhbmNlIg9scEFzc2V0RW1pc3Npb24iCmN1cnJlbnRETHAiEnJlZnJlc2hETHBJbnRlcm5hbCIXYW1vdW50QXNzZXRCYWxhbmNlRGVsdGEiFnByaWNlQXNzZXRCYWxhbmNlRGVsdGEiB2FjdGlvbnMiEnZhbGlkYXRlVXBkYXRlZERMcCIGb2xkRExwIht2YWxpZGF0ZU1hdGNoZXJPcmRlckFsbG93ZWQiBW9yZGVyIhFhbW91bnRBc3NldEFtb3VudCIQcHJpY2VBc3NldEFtb3VudCINJHQwMjQ5MTQyNTEyNiIDZExwIg0kdDAyNTQ2ODI1NTY4Ig11bnVzZWRBY3Rpb25zIgZkTHBOZXciDGlzT3JkZXJWYWxpZCIEaW5mbyICY2ciA3BtdCICY3AiBmNhbGxlciIHYW1Bc1BtdCIHcHJBc1BtdCINY2FsY1B1dE9uZVRrbiIJcG10QW10UmF3Igt3aXRoVGFrZUZlZSINY2hlY2hFbWlzc2lvbiINJHQwMjgyMjQyODY4NiIMYW1CYWxhbmNlT2xkIgxwckJhbGFuY2VPbGQiDSR0MDI4NjkyMjg4NjgiC2FtQW1vdW50UmF3IgtwckFtb3VudFJhdyINJHQwMjg4NzIyOTEyNiIIYW1BbW91bnQiCHByQW1vdW50IgxhbUJhbGFuY2VOZXciDHByQmFsYW5jZU5ldyIIbHBBbW91bnQiDnBvb2xQcm9wb3J0aW9uIg9hbW91bnRBc3NldFBhcnQiDnByaWNlQXNzZXRQYXJ0IglscEFtdEJvdGgiBWJvbnVzIhNnZXRPbmVUa25WMkludGVybmFsIgpvdXRBc3NldElkIgxtaW5PdXRBbW91bnQiCHBheW1lbnRzIgxvcmlnaW5DYWxsZXIiDXRyYW5zYWN0aW9uSWQiCmFtRGVjaW1hbHMiCnByRGVjaW1hbHMiCnBvb2xTdGF0dXMiDSR0MDMxMjM4MzEzNDkiCHRvdGFsR2V0Igt0b3RhbEFtb3VudCINJHQwMzE1MzkzMTg0NiIFb3V0QW0iBW91dFByIghjdXJQclgxOCIFY3VyUHIiEW91dEFzc2V0SWRPcldhdmVzIhBzZW5kRmVlVG9NYXRjaGVyIgRidXJuIg0kdDAzMjYzMTMyOTgxIhBmZWVBbW91bnRGb3JDYWxjIhBvdXRJbkFtb3VudEFzc2V0Ig0kdDAzMjk4NDMzMDkyIhFyZWZyZXNoRExwQWN0aW9ucyIRaXNVcGRhdGVkRExwVmFsaWQiAW0iByRtYXRjaDAiAnBtIgJwZCIJaXNNYW5hZ2VyIgJwayICbW0iBGdldFkiCWlzUmV2ZXJzZSITcG9vbEFtb3VudEluQmFsYW5jZSINJHQwMzQ1MzkzNDU1OSINJHQwMzQ4OTAzNDkzNyITc2tpcE9yZGVyVmFsaWRhdGlvbiINY2xlYW5BbW91bnRJbiINZmVlUG9vbEFtb3VudCINJHQwMzUyODkzNTcxMyIIYXNzZXRPdXQiAmR5Igt0b3RhbEdldFJhdyIFbmV3WHAiBG5ld0QiDGFtb3VudE91dE1pbiIJYWRkcmVzc1RvIgtzd2FwQ29udGFjdCIGY2hlY2tzIgdhc3NldEluIg0kdDAzNzE0OTM3NTQzIghjaGVja01pbiIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiAmNtIgNocG0iA2NwbSIEc2xpcCIJYXV0b1N0YWtlIgdmYWN0Q2ZnIgtzdGFraW5nQ250ciIIc2xpcENudHIiCmFtQXNzZXRQbXQiCnByQXNzZXRQbXQiAWUiCWxwQXNzZXRJZCICZWwiBmxlZ2FjeSICc2EiAnNwIghscFRybnNmciICc3MiDSR0MDQyMTYyNDIzMDQiBWNoZWNrIhRscEFzc2V0RW1pc3Npb25BZnRlciIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiDWlzUHV0RGlzYWJsZWQiDSR0MDQzOTQ1NDQxMDMiB2VzdGltTFAiDSR0MDQ0OTg4NDUzMzciFHBheW1lbnRJbkFtb3VudEFzc2V0Ig0kdDA0NTM0MDQ1NDQ4IgdtYXhTbHBnIgZlc3RQdXQiDSR0MDQ2NDc4NDY1NDMiCW91dEFtdEFtdCINJHQwNDc3MTY0Nzc5OCINaXNHZXREaXNhYmxlZCINJHQwNDg0MTY0ODU3MSIYbGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ih1jaGVja0xhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCINJHQwNDkwOTU0OTE1OSIQZExwVXBkYXRlQWN0aW9ucyINbHBBc3NldEFtb3VudCIFaW5kZXgiBG5ld1kiDSR0MDUwMTY5NTAyMjQiDSR0MDUwNTk5NTA3MTQiDnN1bU9mR2V0QXNzZXRzIhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0IhRidXJuTFBBc3NldE9uRmFjdG9yeSINJHQwNTE4ODA1MTk2MSINY2hlY2tQYXltZW50cyIKZmFjdG9yeUNmZyIHc3Rha2luZyIKdW5zdGFrZUludiIBdiIFYnVybkEiDSR0MDUyOTg4NTMwNjkiDXVuc3Rha2VBbW91bnQiFW5vTGVzc1RoZW5BbW91bnRBc3NldCIDcmVzIgxjaGVja0Ftb3VudHMiDSR0MDU0MzIwNTQ0MDEiF2xwQXNzZXRSZWNpcGllbnRBZGRyZXNzIg0kdDA1NTQyMzU1NjExIhBw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AQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICJG9yZGVyIHZhbGlkYXRpb24gZmFpbGVkOiBvcmRlclZhbGlkPQkApQMBBQJhSwICICgFAmFMAgEpAg0gc2VuZGVyVmFsaWQ9CQClAwEFAmFNAg4gbWF0Y2hlclZhbGlkPQkApQMBBQJhTgECYU8CAmFQAmFRCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYVAFAmFRCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFQCQDMCAICAS4JAMwIAgUCYVEJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAECYVICAmFQAmFRCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYVAFAmFRCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFQCQDMCAICAS4JAMwIAgUCYVEJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAECYVMBAmFUCQACAQkAuQkCCQDMCAICD2xwX3N0YWJsZS5yaWRlOgkAzAgCBQJhVAUDbmlsAgEgAQJhVQECYVQJALkJAgkAzAgCAg9scF9zdGFibGUucmlkZToJAMwIAgUCYVQFA25pbAIBIAACYVYJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhTwIFBHRoaXMJAQFaAAACYVcKAAJhWAkA/AcEBQJhVgIQZ2V0SW5GZWVSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFYAgNJbnQFAmFYCQACAQkArAICCQADAQUCYVgCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAACYVkKAAJhWAkA/AcEBQJhVgIRZ2V0T3V0RmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhWAIDSW50BQJhWAkAAgEJAKwCAgkAAwEFAmFYAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQAAmFaCQECYU8CBQR0aGlzCQECYW0AAQJiYQAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYVYJAQJhRQAHAQJiYgAJANkEAQkBAmFPAgUCYVYJAQJheQAAAmJjCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYU8CBQJhVgkBAmFHAAECYmQABAJiZQkBAmFPAgUEdGhpcwkBAmFrAAQCYmYJAQJhTwIFBHRoaXMJAQJhbAAEAmJnCQECYVICBQJhVgkBAmFDAQUCYmYEAmFBCQECYVICBQJhVgkBAmFDAQUCYmUJALUJAgkBAmFPAgUCYVYJAQJhegIJAKQDAQUCYUEJAKQDAQUCYmcFAW8BAmJoAQJiaQMJAAACBQJiaQUBbAUEdW5pdAkA2QQBBQJiaQECYmoBAmJpAwkAAAIFAmJpBQR1bml0BQFsCQDYBAEJAQV2YWx1ZQEFAmJpAQJiawECYmwJAJsKCQkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJibAUBdQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJsBQF2CQDZBAEJAJEDAgUCYmwFAXcJAQJiaAEJAJEDAgUCYmwFAXgJAQJiaAEJAJEDAgUCYmwFAXkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJibAUBegkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJsBQFBCQDZBAEJAJEDAgUCYmwFAUIJANkEAQkAkQMCBQJibAUBQwACYm0JAQJiawEJAQJiZAAAAmJuBQJibQACYm8IBQJibgJfMQACYnAIBQJibgJfMgACYnEIBQJibgJfMwACYnIIBQJibgJfNAACYnMIBQJibgJfNQACYnQIBQJibgJfNgACYnUIBQJibgJfNwACYnYIBQJibgJfOAACYncIBQJibgJfOQECYngACQC1CQIJAQJhTwIFAmFWCQECYXgABQFvAAJieQkBAmJ4AAACYnoJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJ5BQFEAiBJbnZhbGlkIHN0YWtpbmcgY29udHJhY3QgYWRkcmVzcwACYkEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJ5BQFGAiBJbnZhbGlkIHNsaXBhZ2UgY29udHJhY3QgYWRkcmVzcwACYkIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJ5BQFHAhxJbnZhbGlkIGd3eCBjb250cmFjdCBhZGRyZXNzAAJiQwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYnkFAUUCHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MBAmJECgJiRQJiRgJiRwJiSAJiSQJiSgJiSwJiTAJiTQJiTgkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYkUJAMwIAgkApAMBBQJiRgkAzAgCCQCkAwEFAmJHCQDMCAIJAKQDAQUCYkgJAMwIAgkApAMBBQJiSQkAzAgCCQCkAwEFAmJKCQDMCAIJAKQDAQUCYksJAMwIAgkApAMBBQJiTAkAzAgCCQCkAwEFAmJNCQDMCAIJAKQDAQUCYk4FA25pbAUBbwECYk8GAmJQAmJRAmJSAmJIAmJLAmJMCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYlAJAMwIAgkApAMBBQJiUQkAzAgCCQCkAwEFAmJSCQDMCAIJAKQDAQUCYkgJAMwIAgkApAMBBQJiSwkAzAgCCQCkAwEFAmJMBQNuaWwFAW8BAmJTAQJiVAMJAAACBQJiVAIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYlQBAmJVAgJiVgJiVwkAvAIDBQJiVgUBZAUCYlcBAmJYAwJiVgJiVwFRCQC9AgQFAmJWBQFkBQJiVwUBUQECYlkDAmJaAmNhAmNiBAJjYwkAvAIDCQC4AgIFAmJaBQJjYQUBYwUCY2EEAmNkCQC/AgIJALgCAgUCY2IJAQFYAQUCY2MFAWUDCQEBIQEFAmNkCQACAQkArAICAgpCaWcgc2xwZzogCQCmAwEFAmNjCQCUCgIFAmNkCQCZAwEJAMwIAgUCYloJAMwIAgUCY2EFA25pbAECY2UDAmNmAmNnAmNoBAJjYwkAvAIDBQJjZwUBYwUCY2YEAmNpCQC/AgIFAmNoBQJjYwMDBQJjaQYJAL8CAgUCY2cFAmNmCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApgMBBQJjZwIBIAkApgMBBQJjZgIBIAkApgMBBQJjYwIBIAkApgMBBQJjaAUCY2kBAmNqBAJjawJjbAJjbQJjbgQCY28JAQFJAgUCY20FAmNrBAJjcAkBAUkCBQJjbgUCY2wJAQJiVQIFAmNwBQJjbwECY3EDAmNtAmNuAmNyBAJjcwUCYnQEAmN0BQJidQQCY3UJAQJjagQFAmNzBQJjdAUCY20FAmNuBAJiVwkBAUkCBQJjbQUCY3MEAmJWCQEBSQIFAmNuBQJjdAQCY3YJAQFJAgUCY3IFAWIEAmN3CQECYlUCBQJiVwUCY3YEAmN4CQECYlUCBQJiVgUCY3YJAMwIAgUCY3UJAMwIAgUCY3cJAMwIAgUCY3gFA25pbAECY3kDAmNtAmNuAmNyBAJjegkBAmNxAwUCY20FAmNuBQJjcgkAzAgCCQEBTQIJAJEDAgUCY3oAAAUBYgkAzAgCCQEBTQIJAJEDAgUCY3oAAQUBYgkAzAgCCQEBTQIJAJEDAgUCY3oAAgUBYgUDbmlsAQJjQQICY0ICYXIEAmNDAwkAAAIFAmFyAAAAAAkAawMFAmNCBQJhcgUBYgkAlAoCCQBlAgUCY0IFAmNDBQJjQwECY0QBAmNFBAJjRgkAkQMCBQJjRQAABAJjRwkAkQMCBQJjRQABBAJjSAkAtwICBQJjRgUCY0cDCQAAAgUCY0gFAWYFAWYEAmNJCQENcGFyc2VJbnRWYWx1ZQEFAmFaBAJjSgkAaAIFAmNJAAIEAmN6CQC8AgMFAmNGBQJjRwUBZwQCY0sJALwCAwUCY3oFAWoFAWcEAmNMCQC8AgMJALYCAQUCY0oFAmNIBQFnBAJjTQkAtgIBCQBlAgUCY0oAAQoBAmNOAQJjTwQCY1AJALwCAwUCY08FAmNPBQFnBAJjUQkAvAIDBQJjUAUCY08FAWcEAmNSCQC8AgMFAmNRBQFnBQJjSwkAvAIDCQC3AgIFAmNMCQC8AgMFAmNSBQFoBQFnBQJjTwkAtwICCQC8AgMFAmNNBQJjTwUBZwkAvAIDBQFpBQJjUgUBZwoBAmNTAgJjVAJjVQMIBQJjVAJfMgUCY1QEAmNPCAUCY1QCXzEEAmNWCQECY04BBQJjTwQCY1cJALgCAgUCY1YJAQV2YWx1ZQEFAmNPBAJjWAMJAL8CAgUBZgUCY1cJAL4CAQUCY1cFAmNXAwkAwAICBQFnBQJjWAkAlAoCBQJjVgYJAJQKAgUCY1YHBAJjWQkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgkAzAgCAA8JAMwIAgAQBQNuaWwEAmNaCgACZGEFAmNZCgACZGIJAJADAQUCZGEKAAJkYwkAlAoCBQJjSAcKAQJkZAICZGUCZGYDCQBnAgUCZGYFAmRiBQJkZQkBAmNTAgUCZGUJAJEDAgUCZGEFAmRmCgECZGcCAmRlAmRmAwkAZwIFAmRmBQJkYgUCZGUJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNwkBAmRnAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgUCZGMAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEEAmNPCAUCY1oCXzEEAmRoCAUCY1oCXzIDBQJkaAUCY08JAAIBCQCsAgICGUQgY2FsY3VsYXRpb24gZXJyb3IsIEQgPSAJAKYDAQUCY08BAmRpBAJkagJkawJkbAJkbQQCZG4FAmJxBAJkbwkA2AQBCQEFdmFsdWUBBQJicgQCZHAJANgEAQkBBXZhbHVlAQUCYnMEAmRxBQJidAQCZHIFAmJ1BAJkcwkApAMBBQJicAQCZHQICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCZG4CC1dyb25nIExQIGlkCHF1YW50aXR5AwkBAiE9AgkA2AQBBQJkbgUCZGsJAAIBAg9Xcm9uZyBwbXQgYXNzZXQEAmR1CQECYlMBBQJkbwQCZHYJAQFJAgUCZHUFAmRxBAJkdwkBAmJTAQUCZHAEAmR4CQEBSQIFAmR3BQJkcgQCZHkJAQJiVQIFAmR4BQJkdgQCZHoJAQFNAgUCZHkFAWIEAmRBCQEBSQIFAmRsBQFiBAJkQgkBAUkCBQJkdAUBYgQCZEMJALwCAwUCZHYFAmRBBQJkQgQCZEQJALwCAwUCZHgFAmRBBQJkQgQCZEUJAQFQAwUCZEMFAmRxBQVGTE9PUgQCZEYJAQFQAwUCZEQFAmRyBQVGTE9PUgQCZEcDCQAAAgUCZGoCAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmRtBQJkRQMJAAACBQJkbwIFV0FWRVMFBHVuaXQJANkEAQUCZG8JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCZG0FAmRGAwkAAAIFAmRwAgVXQVZFUwUEdW5pdAkA2QQBBQJkcAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWoCCQClCAEFAmRtBQJkagkBAmJPBgUCZEUFAmRGBQJkbAUCZHoFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYwAFAmR6CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkegUDbmlsCQCcCgoFAmRFBQJkRgUCZG8FAmRwBQJkdQUCZHcFAmR0BQJkeQUCZHMFAmRHAQJkSA0CZGoCY2ICZEkCZEoCZEsCZEwCZG0CZE0CZE4CZE8CZFACZFECZFIEAmRuBQJicQQCZFMJANgEAQkBBXZhbHVlAQUCYnIEAmRUCQDYBAEJAQV2YWx1ZQEFAmJzBAJkVQUCYnYEAmRWBQJidwQCZFcFAmJ0BAJkWAUCYnUEAmRzCQCkAwEFAmJwBAJkWQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJkbgIIV3IgbHAgYXMIcXVhbnRpdHkEAmR1AwUCZE0JAQJiUwEFAmRTAwMFAmRPCQAAAgUCZFIFAmRTBwkAZQIJAQJiUwEFAmRTBQJkUQMFAmRPCQECYlMBBQJkUwkAZQIJAQJiUwEFAmRTBQJkSQQCZHcDBQJkTQkBAmJTAQUCZFQDAwUCZE8JAAACBQJkUgUCZFQHCQBlAgkBAmJTAQUCZFQFAmRRAwUCZE8JAQJiUwEFAmRUCQBlAgkBAmJTAQUCZFQFAmRLBAJkWgkBAUkCBQJkSQUCZFcEAmVhCQEBSQIFAmRLBQJkWAQCZWIJAQJiVQIFAmVhBQJkWgQCZHYJAQFJAgUCZHUFAmRXBAJkeAkBAUkCBQJkdwUCZFgEAmNnCQECY0QBCQDMCAIFAmR2CQDMCAIFAmR4BQNuaWwEAmVjAwkAAAIFAmRZAAAEAmNmCQECY0QBCQDMCAIJALcCAgUCZHYFAmRaCQDMCAIJALcCAgUCZHgFAmVhBQNuaWwEAmVkAwkAvwICBQJjZgUCY2cGCQACAQIcRDEgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiBEMAMJAAACBQJlZAUCZWQEAmR5BQFlBAJlZQUBZQQCY3YFAmNmCQCXCgUJAQFNAgUCY3YFAWIJAQFNAgUCZFoFAmRXCQEBTQIFAmVhBQJkWAkBAmJVAgkAtwICBQJkeAUCZWEJALcCAgUCZHYFAmRaBQJlZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQCZHkJAQJiVQIFAmR4BQJkdgQCZWYJALwCAwkBAVgBCQC4AgIFAmR5BQJlYgUBZAUCZHkEAmVlCQEBSQIFAmNiBQFiAwMDBQJkUAkBAiE9AgUCZHkFAWUHCQC/AgIFAmVmBQJlZQcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCZWYCAyA+IAkApgMBBQJlZQQCZWcJAQFJAgUCZFkFAWIEAmVoCQC9AgQFAmRaCQECYlgDBQJkeAUCZHYFB0NFSUxJTkcFAWQFB0NFSUxJTkcEAmVpCQC9AgQFAmVhBQFkCQECYlgDBQJkeAUCZHYFBUZMT09SBQdDRUlMSU5HBAJlagMJAL8CAgUCZWgFAmVhCQCUCgIFAmVpBQJlYQkAlAoCBQJkWgUCZWgEAmVrCAUCZWoCXzEEAmVsCAUCZWoCXzIEAmNmCQECY0QBCQDMCAIJALcCAgUCZHYFAmVrCQDMCAIJALcCAgUCZHgFAmVsBQNuaWwEAmVkAwkAvwICBQJjZgUCY2cGCQACAQIcRDEgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiBEMAMJAAACBQJlZAUCZWQEAmN2CQC8AgMFAmVnCQC4AgIFAmNmBQJjZwUCY2cJAJcKBQkBAVADBQJjdgUBYgUFRkxPT1IJAQFQAwUCZWsFAmRXBQdDRUlMSU5HCQEBUAMFAmVsBQJkWAUHQ0VJTElORwUCZHkFAmVlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAJlbQgFAmVjAl8xBAJlbggFAmVjAl8yBAJlbwgFAmVjAl8zBAJkegkBAU0CCAUCZWMCXzQFAWIEAmVwCQEBTQIIBQJlYwJfNQUBYgMJAGcCAAAFAmVtCQACAQIHTFAgPD0gMAQCZXEDCQEBIQEFAmROAAAFAmVtBAJlcgkAZQIFAmRJBQJlbgQCZXMJAGUCBQJkSwUCZW8EAmV0AwMFAmRPCQAAAgUCZFIFAmRTBwkAlAoCBQJkUQAAAwMFAmRPCQAAAgUCZFIFAmRUBwkAlAoCAAAFAmRRCQCUCgIFAmVuBQJlbwQCZXUIBQJldAJfMQQCZXYIBQJldAJfMgQCZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYwAFAmR6CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkegkAzAgCCQELU3RyaW5nRW50cnkCCQECYWcCBQJkbQUCZGoJAQJiRAoFAmV1BQJldgUCZXEFAmR6BQJjYgUCZXAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmVyBQJlcwUDbmlsCQCfCg0FAmVtBQJlcQUCZHoFAmR1BQJkdwUCZFkFAmRuBQJkcwUCZXcFAmVyBQJlcwUCZEoFAmRMAQJleAMCY0UCY1UCZXkEAmV6BQFoBAJlQQkAkQMCBQJjRQMJAAACBQJjVQAAAAEAAAQCZUIJAKcDAQUBbQQCY0kJALkCAgkApwMBBQJhWgUCZUIEAmNIBQJlQQQCY0oJALkCAgUCY0kFAmV6BAJlQwkAugICCQC5AgIJALkCAgkAugICCQC5AgIFAmV5BQJleQkAuQICBQJlQQUCZXoFAmV5BQJlQgkAuQICBQJjSgUCZXoEAmVECQC4AgIJALcCAgUCY0gJALoCAgkAuQICBQJleQUCZUIFAmNKBQJleQoBAmNTAgJjVAJlRQQCZUYFAmNUBAJlRwgFAmVGAl8xBAJkaAgFAmVGAl8yAwkBAiE9AgUCZGgFBHVuaXQFAmNUBAJlSAkAugICCQC3AgIJALkCAgUCZUcFAmVHBQJlQwkAtwICCQC5AgIFAWgFAmVHBQJlRAQCZUkJAQFZAQkAuAICBQJlSAkBBXZhbHVlAQUCZUcDCQDAAgIFAWcFAmVJCQCUCgIFAmVIBQJlRQkAlAoCBQJlSAUEdW5pdAQCY1kJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZUoKAAJkYQUCY1kKAAJkYgkAkAMBBQJkYQoAAmRjCQCUCgIFAmV5BQR1bml0CgECZGQCAmRlAmRmAwkAZwIFAmRmBQJkYgUCZGUJAQJjUwIFAmRlCQCRAwIFAmRhBQJkZgoBAmRnAgJkZQJkZgMJAGcCBQJkZgUCZGIFAmRlCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJkZwIJAQJkZAIJAQJkZAIJAQJkZAIJAQJkZAIJAQJkZAIJAQJkZAIJAQJkZAIJAQJkZAIJAQJkZAIJAQJkZAIJAQJkZAIJAQJkZAIJAQJkZAIJAQJkZAIJAQJkZAIFAmRjAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmVHCAUCZUoCXzEEAmRoCAUCZUoCXzIDCQECIT0CBQJkaAUEdW5pdAUCZUcJAAIBCQCsAgICGVkgY2FsY3VsYXRpb24gZXJyb3IsIFkgPSAJAKYDAQUCZUcBAmVLAwJlTAJlTQJlTgQCZU8JALwCAwkBAmNEAQkAzAgCCQEBTAIFAmVMCQC2AgEFAmJ0CQDMCAIJAQFMAgUCZU0JALYCAQUCYnUFA25pbAUBZAUCZU4DCQAAAgUCZU4FAWYFAWYFAmVPAQJlUAMCZVECZVICZVMEAmVUCQC4AgIJALYCAQkBAmJTAQkBAmJqAQUCYnIFAmVRBAJlVQkAuAICCQC2AgEJAQJiUwEJAQJiagEFAmJzBQJlUgQCZVYJALgCAgkAtgIBCAkBBXZhbHVlAQkA7AcBBQJicQhxdWFudGl0eQUCZVMEAmVXCQECZUsDBQJlVAUCZVUFAmVWBQJlVwECZVgDAmVZAmVaAmVTBAJlVAkAZAIJAQJiUwEJAQJiagEFAmJyBQJlWQQCZVUJAGQCCQECYlMBCQECYmoBBQJicwUCZVoEAmVWCQBkAggJAQV2YWx1ZQEJAOwHAQUCYnEIcXVhbnRpdHkFAmVTBAJlTwkBAmVLAwkAtgIBBQJlVAkAtgIBBQJlVQkAtgIBBQJlVgQCZmEJAMwIAgkBDEludGVnZXJFbnRyeQIFAmF0BQZoZWlnaHQJAMwIAgkBC1N0cmluZ0VudHJ5AgUCYXMJAKYDAQUCZU8FA25pbAkAlAoCBQJmYQUCZU8BAmZiAgJmYwJlTwMJAMACAgUCZU8FAmZjBgkBAmFTAQIidXBkYXRlZCBETHAgbG93ZXIgdGhhbiBjdXJyZW50IERMcAECZmQBAmZlBAJlVAkBAmJTAQkBAmJqAQUCYnIEAmVVCQECYlMBCQECYmoBBQJicwQCZmYIBQJmZQZhbW91bnQEAmZnCQBuBAgFAmZlBmFtb3VudAgFAmZlBXByaWNlBQFiBQVGTE9PUgQCZmgDCQAAAggFAmZlCW9yZGVyVHlwZQUDQnV5CQCUCgIFAmZmCQEBLQEFAmZnCQCUCgIJAQEtAQUCZmYFAmZnBAJlWQgFAmZoAl8xBAJlWggFAmZoAl8yAwMDCQECYmEABgkAAAIFAmJwBQFzBgkAAAIFAmJwBQF0CQACAQINQWRtaW4gYmxvY2tlZAMDCQECIT0CCAgFAmZlCWFzc2V0UGFpcgthbW91bnRBc3NldAUCYnIGCQECIT0CCAgFAmZlCWFzc2V0UGFpcgpwcmljZUFzc2V0BQJicwkAAgECCVdyIGFzc2V0cwQCZmkJAKcDAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQJhcwIBMAQCZmoJAQJlWAMFAmVZBQJlWgAABAJmawgFAmZqAl8xBAJmbAgFAmZqAl8yBAJmbQkAwAICBQJmbAUCZmkEAmZuCQC5CQIJAMwIAgIEZExwPQkAzAgCCQCmAwEFAmZpCQDMCAICCCBkTHBOZXc9CQDMCAIJAKYDAQUCZmwJAMwIAgIUIGFtb3VudEFzc2V0QmFsYW5jZT0JAMwIAgkApAMBBQJlVAkAzAgCAhMgcHJpY2VBc3NldEJhbGFuY2U9CQDMCAIJAKQDAQUCZVUJAMwIAgIZIGFtb3VudEFzc2V0QmFsYW5jZURlbHRhPQkAzAgCCQCkAwEFAmVZCQDMCAICGCBwcmljZUFzc2V0QmFsYW5jZURlbHRhPQkAzAgCCQCkAwEFAmVaCQDMCAICCCBoZWlnaHQ9CQDMCAIJAKQDAQUGaGVpZ2h0BQNuaWwCAAkAlAoCBQJmbQUCZm4BAmZvAQJjVQMJAQIhPQIJAJADAQgFAmNVCHBheW1lbnRzAAEJAAIBAgoxIHBtbnQgZXhwBAJmcAkBBXZhbHVlAQkAkQMCCAUCY1UIcGF5bWVudHMAAAQCZGsJAQV2YWx1ZQEIBQJmcAdhc3NldElkBAJkUQgFAmZwBmFtb3VudAQCZWMJAQJkaQQJANgEAQgFAmNVDXRyYW5zYWN0aW9uSWQJANgEAQUCZGsFAmRRCAUCY1UGY2FsbGVyBAJkRQgFAmVjAl8xBAJkRggFAmVjAl8yBAJkcwkBDXBhcnNlSW50VmFsdWUBCAUCZWMCXzkEAmRHCAUCZWMDXzEwAwMJAQJiYQAGCQAAAgUCZHMFAXQJAAIBCQCsAgICD0FkbWluIGJsb2NrZWQ6IAkApAMBBQJkcwkAlwoFBQJkRQUCZEYFAmRRBQJkawUCZEcBAmZxCgJmcgJhaQJmcwJmdAJjYgJkTgJkTwJkUAJkUQJkUgQCZWMJAQJkSA0FAmFpBQJjYggJAQV2YWx1ZQEFAmZzBmFtb3VudAgJAQV2YWx1ZQEFAmZzB2Fzc2V0SWQICQEFdmFsdWUBBQJmdAZhbW91bnQICQEFdmFsdWUBBQJmdAdhc3NldElkBQJmcgkAAAIFAmFpAgAFAmROBQJkTwUCZFAFAmRRBQJkUgQCZHMJAQ1wYXJzZUludFZhbHVlAQgFAmVjAl84AwMDCQECYmEABgkAAAIFAmRzBQFyBgkAAAIFAmRzBQF0CQACAQkArAICAghCbG9ja2VkOgkApAMBBQJkcwUCZWMBAmZ1BQJmdgJkawJkbQJhaQJmdwQCZG8JANgEAQkBBXZhbHVlAQUCYnIEAmRwCQDYBAEJAQV2YWx1ZQEFAmJzBAJkbgUCYnEEAmRXBQJidAQCZFgFAmJ1BAJlVgkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmRuAhBpbnZhbGlkIGxwIGFzc2V0CHF1YW50aXR5BAJmeAMJAL8CAgUCZVYFAWYGCQACAQIiaW5pdGlhbCBkZXBvc2l0IHJlcXVpcmVzIGFsbCBjb2lucwMJAAACBQJmeAUCZngEAmR1CQECYlMBBQJkbwQCZHcJAQJiUwEFAmRwBAJmeQMJAAACBQJhaQIACQCUCgIFAmR1BQJkdwMJAAACBQJkawUCZG8DCQBmAgUCZnYFAmR1CQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCCQBlAgUCZHUFAmZ2BQJkdwMJAAACBQJkawUCZHADCQBmAgUCZnYFAmR3CQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCBQJkdQkAZQIFAmR3BQJmdgkAAgECEHdyb25nIHBtdEFzc2V0SWQEAmZ6CAUCZnkCXzEEAmZBCAUCZnkCXzIEAmZCAwkAAAIFAmRrBQJkbwkAlAoCBQJmdgAAAwkAAAIFAmRrBQJkcAkAlAoCAAAFAmZ2CQACAQIPaW52YWxpZCBwYXltZW50BAJmQwgFAmZCAl8xBAJmRAgFAmZCAl8yBAJmRQMFAmZ3CQCVCgMICQECY0ECBQJmQwUCYVcCXzEICQECY0ECBQJmRAUCYVcCXzEICQECY0ECBQJmdgUCYVcCXzIJAJUKAwUCZkMFAmZEAAAEAmZGCAUCZkUCXzEEAmZHCAUCZkUCXzIEAmNDCAUCZkUCXzMEAmZICQBkAgUCZnoFAmZGBAJmSQkAZAIFAmZBBQJmRwQCY2cJAQJjRAEJAMwIAgkBAUkCBQJmegUCYnQJAMwIAgkBAUkCBQJmQQUCYnUFA25pbAQCY2YJAQJjRAEJAMwIAgkBAUkCBQJmSAUCYnQJAMwIAgkBAUkCBQJmSQUCYnUFA25pbAQCZWQDCQC/AgIFAmNmBQJjZwYJAQV0aHJvdwADCQAAAgUCZWQFAmVkBAJmSgkAvQIEBQJlVgkAuAICBQJjZgUCY2cFAmNnBQVGTE9PUgQCZHoJAQFNAgkBAmJVAgkBAUkCBQJmSQUCZFgJAQFJAgUCZkgFAmRXBQFiBAJldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFjAAUCZHoJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhZAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmR6CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZwIFAmRtBQJhaQkBAmJECgUCZkMFAmZECQCgAwEFAmZKBQJkegAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEAmZLCQBrAwUCZkEFAWIFAmZ6BAJmTAkAawMFAmZ2BQFiCQBkAgUCZksFAWIEAmZNCQBlAgUCZnYFAmZMBAJmTgkAvAIDBQJlVgkAtgIBBQJmTQkAtgIBBQJmQQQCZk8JAKADAQkAvAIDCQC4AgIFAmZKBQJmTgUBYwUCZk4JAJYKBAkAoAMBBQJmSgUCZXcFAmNDBQJmTwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZlAGAmZRAmZSAmZTAmZyAmZUAmZVBAJkbgkA2AQBCQEFdmFsdWUBBQJicQQCZG8JANgEAQkBBXZhbHVlAQUCYnIEAmRwCQDYBAEJAQV2YWx1ZQEFAmJzBAJmVgUCYnQEAmZXBQJidQQCZlgFAmJwBAJkbQMJAAACBQJmcgUCYkMFAmZUBQJmcgQCZnAJAQV2YWx1ZQEJAJEDAgUCZlMAAAQCZGsJAQV2YWx1ZQEIBQJmcAdhc3NldElkBAJkUQgFAmZwBmFtb3VudAQCZVcJAQJlUAMFAWYFAWYFAWYDCQAAAgUCZVcFAmVXBAJkagkA2AQBBQJmVQMJAQIhPQIFAmRuCQDYBAEFAmRrCQACAQIIV3JvbmcgTFAEAmR1CQECYlMBBQJkbwQCZHcJAQJiUwEFAmRwBAJmWQoAAmFYCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZlEJAMwIAgUCZFEFA25pbAUDbmlsAwkAAQIFAmFYAgooSW50LCBJbnQpBQJhWAkAAgEJAKwCAgkAAwEFAmFYAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpAwkAAAIFAmZZBQJmWQQCY0MIBQJmWQJfMgQCZloIBQJmWQJfMQQCZ2EDAwkAZgIFAmZSAAAJAGYCBQJmUgUCZloHCQECYVMBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZSBQNuaWwCAAUCZloEAmdiAwkAAAIFAmZRBQJkbwkAlgoEBQJnYQAACQBlAgkAZQIFAmR1BQJnYQUCY0MFAmR3AwkAAAIFAmZRBQJkcAkAlgoEAAAFAmdhBQJkdQkAZQIJAGUCBQJkdwUCZ2EFAmNDCQACAQIUaW52YWxpZCBvdXQgYXNzZXQgaWQEAmdjCAUCZ2ICXzEEAmdkCAUCZ2ICXzIEAmZICAUCZ2ICXzMEAmZJCAUCZ2ICXzQEAmdlCQECYlUCCQEBSQIFAmZJBQJmVwkBAUkCBQJmSAUCZlYEAmdmCQEBTQIFAmdlBQFiBAJnZwMJAAACBQJmUQIFV0FWRVMFBHVuaXQJANkEAQUCZlEEAmdoAwkAZgIFAmNDAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYmMFAmNDBQJnZwUDbmlsBQNuaWwEAmRHCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCZG0FAmdhBQJnZwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWoCCQClCAEFAmRtBQJkagkBAmJPBgUCZ2MFAmdkBQJkUQUCZ2YFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYwAFAmdmCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJnZgUDbmlsBQJnaAMJAAACBQJkRwUCZEcEAmdpCQD8BwQFAmFWAgRidXJuCQDMCAIFAmRRBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRrBQJkUQUDbmlsAwkAAAIFAmdpBQJnaQQCZ2oEAmdrAwkAAAIFBHRoaXMFAmJjAAAFAmNDBAJnbAMJAAACCQECYmgBBQJmUQUCYnIGBwMFAmdsCQCUCgIJAQEtAQkAZAIFAmZaBQJnawAACQCUCgIAAAkBAS0BCQBkAgUCZloFAmdrBAJlWQgFAmdqAl8xBAJlWggFAmdqAl8yBAJnbQkBAmVYAwUCZVkFAmVaAAAEAmduCAUCZ20CXzEEAmVPCAUCZ20CXzIEAmdvCQECZmICBQJlVwUCZU8DCQAAAgUCZ28FAmdvCQCUCgIJAM4IAgUCZEcFAmduBQJnYQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZ3AABAJncQkAoggBCQECYWEAAwkAAQIFAmdxAgZTdHJpbmcEAmNIBQJncQkA2QQBBQJjSAMJAAECBQJncQIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJncgAEAmdxCQCiCAEJAQJhYgADCQABAgUCZ3ECBlN0cmluZwQCY0gFAmdxCQDZBAEFAmNIAwkAAQIFAmdxAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAAmdzCQACAQIRUGVybWlzc2lvbiBkZW5pZWQBAmd0AQJjVQQCZ3EJAQJncAADCQABAgUCZ3ECCkJ5dGVWZWN0b3IEAmd1BQJncQkAAAIIBQJjVQ9jYWxsZXJQdWJsaWNLZXkFAmd1AwkAAQIFAmdxAgRVbml0CQAAAggFAmNVBmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJndgECY1UEAmdxCQECZ3AAAwkAAQIFAmdxAgpCeXRlVmVjdG9yBAJndQUCZ3EDCQAAAggFAmNVD2NhbGxlclB1YmxpY0tleQUCZ3UGBQJncwMJAAECBQJncQIEVW5pdAMJAAACCAUCY1UGY2FsbGVyBQR0aGlzBgUCZ3MJAAIBAgtNYXRjaCBlcnJvcgECZ3cDAmd4AmV5Amd5BAJibAkBAmJkAAQCZG8JAJEDAgUCYmwFAXgEAmRwCQCRAwIFAmJsBQF5BAJlegUBaAQCZUIJAKcDAQUBbQQCY0kJALkCAgkApwMBBQJhWgUCZUIEAmNFAwkAAAIFAmd4BwkAzAgCCQC3AgIJALYCAQkBAmJTAQUCZG8FAmd5CQDMCAIJALYCAQkBAmJTAQUCZHAFA25pbAkAzAgCCQC3AgIJALYCAQkBAmJTAQUCZHAFAmd5CQDMCAIJALYCAQkBAmJTAQUCZG8FA25pbAQCZUEJAJEDAgUCY0UAAAQCY0gFAmVBBAJjSgkAuQICBQJjSQUCZXoEAmVDCQC6AgIJALkCAgkAuQICCQC6AgIJALkCAgUCZXkFAmV5CQC5AgIFAmVBBQJlegUCZXkFAmVCCQC5AgIFAmNKBQJlegQCZUQJALgCAgkAtwICBQJjSAkAugICCQC5AgIFAmV5BQJlQgUCY0oFAmV5CgECY1MCAmNUAmVFBAJnegUCY1QEAmVHCAUCZ3oCXzEEAmRoCAUCZ3oCXzIDCQECIT0CBQJkaAUEdW5pdAUCY1QEAmVICQC6AgIJALcCAgkAuQICBQJlRwUCZUcFAmVDCQC3AgIJALkCAgUBaAUCZUcFAmVEBAJlSQkBAVkBCQC4AgIFAmVICQEFdmFsdWUBBQJlRwMJAMACAgUBZwUCZUkJAJQKAgUCZUgFAmVFCQCUCgIFAmVIBQR1bml0BAJjWQkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJnQQoAAmRhBQJjWQoAAmRiCQCQAwEFAmRhCgACZGMJAJQKAgUCZXkFBHVuaXQKAQJkZAICZGUCZGYDCQBnAgUCZGYFAmRiBQJkZQkBAmNTAgUCZGUJAJEDAgUCZGEFAmRmCgECZGcCAmRlAmRmAwkAZwIFAmRmBQJkYgUCZGUJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmRnAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgkBAmRkAgUCZGMAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZUcIBQJnQQJfMQQCZGgIBQJnQQJfMgMJAQIhPQIFAmRoBQR1bml0BQJlRwkAAgEJAKwCAgIZWSBjYWxjdWxhdGlvbiBlcnJvciwgWSA9IAkApgMBBQJlRwECZ0IACQELdmFsdWVPckVsc2UCCQCbCAIFAmFWCQECYUgBCQClCAEFBHRoaXMHHQJjVQEhY2FsY3VsYXRlQW1vdW50T3V0Rm9yU3dhcFJFQURPTkxZAwJnQwJneAJnRAQCZ0UDCQAAAgUCZ3gHBAJnRgkBAmFPAgUEdGhpcwkBAmFsAAQCZ3kJALcCAgkAtgIBCQECYlMBCQECYU8CBQR0aGlzCQECYWsACQC2AgEFAmdDCQCUCgIFAmdGBQJneQQCZ0YJAQJhTwIFBHRoaXMJAQJhawAEAmd5CQC3AgIJALYCAQkBAmJTAQkBAmFPAgUEdGhpcwkBAmFsAAkAtgIBBQJnQwkAlAoCBQJnRgUCZ3kEAmdGCAUCZ0UCXzEEAmd5CAUCZ0UCXzIEAmJsCQECYmQABAJkbwkAkQMCBQJibAUBeAQCZHAJAJEDAgUCYmwFAXkEAmNFCQDMCAIJALYCAQkBAmJTAQUCZG8JAMwIAgkAtgIBCQECYlMBBQJkcAUDbmlsBAJleQkBAmNEAQUCY0UEAmVHCQECZ3cDBQJneAUCZXkJALYCAQUCZ0MEAmdHCQC4AgIJALgCAgkAtgIBCQECYlMBBQJnRgUCZUcJALYCAQABBAJnSAkAlgMBCQDMCAIAAAkAzAgCCQCgAwEFAmdHBQNuaWwEAmdJAwkAAAIFAmd4BwkAzAgCCQC3AgIJALcCAgkAtgIBCQECYlMBBQJkbwkAtgIBBQJnQwkAtgIBBQJnRAkAzAgCCQC4AgIJALYCAQkBAmJTAQUCZHAFAmdHBQNuaWwJAMwIAgkAuAICCQC2AgEJAQJiUwEFAmRvBQJnRwkAzAgCCQC3AgIJALcCAgkAtgIBCQECYlMBBQJkcAkAtgIBBQJnQwkAtgIBBQJnRAUDbmlsBAJnSgkBAmNEAQUCZ0kEAmVkAwkAwAICBQJnSgUCZXkGCQACAQkAuQkCCQDMCAICFG5ldyBEIGlzIGZld2VyIGVycm9yCQDMCAIJAKYDAQUCZXkJAMwIAgkApgMBBQJnSgUDbmlsAgJfXwMJAAACBQJlZAUCZWQJAJQKAgUDbmlsBQJnSAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjVQEmY2FsY3VsYXRlQW1vdW50T3V0Rm9yU3dhcEFuZFNlbmRUb2tlbnMFAmdDAmd4AmdLAmdMAmdEBAJnTQoAAmFYCQD8BwQFAmFWAhdnZXRTd2FwQ29udHJhY3RSRUFET05MWQUDbmlsBQNuaWwDCQABAgUCYVgCBlN0cmluZwUCYVgJAAIBCQCsAgIJAAMBBQJhWAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nBAJnTgkAzAgCAwkAZwIICQEFdmFsdWUBCQCRAwIIBQJjVQhwYXltZW50cwAABmFtb3VudAUCZ0MGCQECYVMBAgxXcm9uZyBhbW91bnQJAMwIAgMJAAACCAUCY1UGY2FsbGVyCQERQGV4dHJOYXRpdmUoMTA2MikBBQJnTQYJAQJhUwECEVBlcm1pc3Npb24gZGVuaWVkBQNuaWwDCQAAAgUCZ04FAmdOBAJmcAkBBXZhbHVlAQkAkQMCCAUCY1UIcGF5bWVudHMAAAQCZ08JAQJiagEIBQJmcAdhc3NldElkBAJnUAMJAAACBQJneAcEAmdGCQECYU8CBQR0aGlzCQECYWwABAJneQkAZQIJAQJiUwEFAmdPCAkBBXZhbHVlAQkAkQMCCAUCY1UIcGF5bWVudHMAAAZhbW91bnQJAJQKAgUCZ0YFAmd5BAJnRgkBAmFPAgUEdGhpcwkBAmFrAAQCZ3kJAGUCCQECYlMBBQJnTwgJAQV2YWx1ZQEJAJEDAggFAmNVCHBheW1lbnRzAAAGYW1vdW50CQCUCgIFAmdGBQJneQQCZ0YIBQJnUAJfMQQCZ3kIBQJnUAJfMgQCYmwJAQJiZAAEAmRvCQCRAwIFAmJsBQF4BAJkcAkAkQMCBQJibAUBeQQCY0UDCQAAAgUCZ3gHCQDMCAIJALgCAgkAtgIBCQECYlMBBQJkbwkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCY1UIcGF5bWVudHMAAAZhbW91bnQJAMwIAgkAtgIBCQECYlMBBQJkcAUDbmlsCQDMCAIJALYCAQkBAmJTAQUCZG8JAMwIAgkAuAICCQC2AgEJAQJiUwEFAmRwCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJjVQhwYXltZW50cwAABmFtb3VudAUDbmlsBAJleQkBAmNEAQUCY0UEAmVHCQECZ3cDBQJneAUCZXkJALYCAQAABAJnRwkAuAICCQC4AgIJALYCAQkBAmJTAQUCZ0YFAmVHCQC2AgEAAQQCZ0gJAJYDAQkAzAgCAAAJAMwIAgkAoAMBBQJnRwUDbmlsBAJnUQMJAGcCBQJnSAUCZ0sGCQACAQIsRXhjaGFuZ2UgcmVzdWx0IGlzIGZld2VyIGNvaW5zIHRoYW4gZXhwZWN0ZWQDCQAAAgUCZ1EFAmdRBAJnSQMJAAACBQJneAcJAMwIAgkAtwICCQC2AgEJAQJiUwEFAmRvCQC2AgEFAmdECQDMCAIJALgCAgkAtgIBCQECYlMBBQJkcAUCZ0cFA25pbAkAzAgCCQC4AgIJALYCAQkBAmJTAQUCZG8FAmdHCQDMCAIJALcCAgkAtgIBCQECYlMBBQJkcAkAtgIBBQJnRAUDbmlsBAJnSgkBAmNEAQUCZ0kEAmVkAwkAwAICBQJnSgUCZXkGCQACAQIUbmV3IEQgaXMgZmV3ZXIgZXJyb3IDCQAAAgUCZWQFAmVkCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCZ0wFAmdICQECYmgBBQJnRgUDbmlsBQJnSAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjVQELY29uc3RydWN0b3IBAVoEAmVDCQECZ3YBBQJjVQMJAAACBQJlQwUCZUMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVoABQFaBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1UBCnNldE1hbmFnZXIBAmdSBAJlQwkBAmd2AQUCY1UDCQAAAgUCZUMFAmVDBAJnUwkA2QQBBQJnUgMJAAACBQJnUwUCZ1MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFiAAUCZ1IFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjVQEOY29uZmlybU1hbmFnZXIABAJjegkBAmdyAAQCZ1QDCQEJaXNEZWZpbmVkAQUCY3oGCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmdUBQJnVAQCZ1UDCQAAAggFAmNVD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCY3oGCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmdVBQJnVQkAzAgCCQELU3RyaW5nRW50cnkCCQECYWEACQDYBAEJAQV2YWx1ZQEFAmN6CQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhYgAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjVQEDcHV0AgJnVgJnVwQCZ1gJAQJieAAEAmdZCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJnWAUBRAIKV3Igc3QgYWRkcgQCZ1oJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmdYBQFGAgpXciBzbCBhZGRyAwkAZgIAAAUCZ1YJAAIBAg5Xcm9uZyBzbGlwcGFnZQMJAQIhPQIJAJADAQgFAmNVCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmhhCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJjVQhwYXltZW50cwAABmFtb3VudAQCaGIJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmNVCHBheW1lbnRzAAEGYW1vdW50BAJlVAkAuAICCQC2AgEJAQJiUwEJAQJiagEFAmJyBQJoYQMJAAACBQJlVAUCZVQEAmVVCQC4AgIJALYCAQkBAmJTAQkBAmJqAQUCYnMFAmhiAwkAAAIFAmVVBQJlVQQCZVYJALYCAQgJAQV2YWx1ZQEJAOwHAQUCYnEIcXVhbnRpdHkDCQAAAgUCZVYFAmVWBAJlVwkBAmVQAwUCaGEFAmhiCQC2AgEAAAMJAAACBQJlVwUCZVcEAmhjCQECZnEKCQClCAEIBQJjVQZjYWxsZXIJANgEAQgFAmNVDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCY1UIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCY1UIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmNVCHBheW1lbnRzAAEFAmdWBgcGAAACAAQCZXEIBQJoYwJfMgQCaGQIBQJoYwJfNwQCZEcIBQJoYwJfOQQCZXIIBQJoYwNfMTAEAmVzCAUCaGMDXzExBAJkbwgFAmhjA18xMgQCZHAIBQJoYwNfMTMEAmVjCQD8BwQFAmFWAgRlbWl0CQDMCAIFAmVxBQNuaWwFA25pbAMJAAACBQJlYwUCZWMEAmhlBAJncQUCZWMDCQABAgUCZ3ECB0FkZHJlc3MEAmhmBQJncQkA/AcEBQJoZgIEZW1pdAkAzAgCBQJlcQUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCaGUFAmhlBAJoZwMJAGYCBQJlcgAACQD8BwQFAmdaAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZG8FAmVyBQNuaWwFA25pbAMJAAACBQJoZwUCaGcEAmhoAwkAZgIFAmVzAAAJAPwHBAUCZ1oCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkcAUCZXMFA25pbAUDbmlsAwkAAAIFAmhoBQJoaAQCaGkDBQJnVwQCaGoJAPwHBAUCZ1kCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmhkBQJlcQUDbmlsAwkAAAIFAmhqBQJoagUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJjVQZjYWxsZXIFAmVxBQJoZAUDbmlsBAJoawkBAmVYAwAAAAAAAAQCZ24IBQJoawJfMQQCZU8IBQJoawJfMgQCaGwDCQDAAgIFAmVPBQJlVwYJAQJhUwEJALkJAgkAzAgCAiJ1cGRhdGVkIERMcCBsb3dlciB0aGFuIGN1cnJlbnQgRExwCQDMCAIJAKYDAQUCZVQJAMwIAgkApgMBBQJlVQkAzAgCCQCmAwEFAmVWCQDMCAIJAKYDAQUCZVcJAMwIAgkApgMBBQJlTwkAzAgCCQCkAwEFAmVyCQDMCAIJAKQDAQUCZXMFA25pbAIBIAMJAAACBQJobAUCaGwEAmhtCAkBBXZhbHVlAQkA7AcBBQJicQhxdWFudGl0eQMJAAACBQJobQUCaG0JAM4IAgkAzggCBQJkRwUCaGkFAmduCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNVAQtwdXRPbmVUa25WMgICZlICZ1cEAmhuCgACYVgJAPwHBAUCYVYCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhWAIHQm9vbGVhbgUCYVgJAAIBCQCsAgIJAAMBBQJhWAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCaG8DAwMJAQJiYQAGCQAAAgUCYnAFAXIGCQAAAgUCYnAFAXQGBQJobgQCZ04JAMwIAgMDCQEBIQEFAmhvBgkBAmd0AQUCY1UGCQECYVMBAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJjVQhwYXltZW50cwABBgkBAmFTAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ04FAmdOBAJkbwkA2AQBCQEFdmFsdWUBBQJicgQCZHAJANgEAQkBBXZhbHVlAQUCYnMEAmRuBQJicQQCZlYFAmJ0BAJmVwUCYnUEAmRtAwkAAAIIBQJjVQZjYWxsZXIFBHRoaXMIBQJjVQxvcmlnaW5DYWxsZXIIBQJjVQZjYWxsZXIEAmZwCQEFdmFsdWUBCQCRAwIIBQJjVQhwYXltZW50cwAABAJkawkA2AQBCQEFdmFsdWUBCAUCZnAHYXNzZXRJZAQCZFEIBQJmcAZhbW91bnQEAmVXAwkAAAIIBQJmcAdhc3NldElkBQJicgkBAmVQAwkAtgIBBQJkUQkAtgIBAAAJALYCAQAACQECZVADCQC2AgEAAAkAtgIBBQJkUQkAtgIBAAADCQAAAgUCZVcFAmVXBAJocAkBAmZ1BQUCZFEFAmRrCQClCAEFAmRtCQDYBAEIBQJjVQ10cmFuc2FjdGlvbklkBgMJAAACBQJocAUCaHAEAmNDCAUCaHACXzMEAmRHCAUCaHACXzIEAmhxCAUCaHACXzEEAmVxAwMJAGYCBQJmUgAACQBmAgUCZlIFAmhxBwkBAmFTAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmUgUDbmlsAgAFAmhxBAJoYwkA/AcEBQJhVgIEZW1pdAkAzAgCBQJlcQUDbmlsBQNuaWwDCQAAAgUCaGMFAmhjBAJoZQQCZ3EFAmhjAwkAAQIFAmdxAgdBZGRyZXNzBAJoZgUCZ3EJAPwHBAUCaGYCBGVtaXQJAMwIAgUCZXEFA25pbAUDbmlsBQR1bml0AwkAAAIFAmhlBQJoZQQCaGkDBQJnVwQCaGoJAPwHBAUCYnoCCHN0YWtlRm9yCQDMCAIJAKUIAQgFAmNVBmNhbGxlcgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkbgUCZXEFA25pbAMJAAACBQJoagUCaGoFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCY1UGY2FsbGVyBQJlcQUCZG4FA25pbAQCZ2gDCQBmAgUCY0MAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJiYwUCY0MJANkEAQUCZGsFA25pbAUDbmlsBAJocgMJAAACBQR0aGlzBQJiYwkAlAoCAAAAAAQCaHMDCQAAAggFAmZwB2Fzc2V0SWQFAmJyBgcDBQJocwkAlAoCCQEBLQEFAmNDAAAJAJQKAgAACQEBLQEFAmNDBAJlWQgFAmhyAl8xBAJlWggFAmhyAl8yBAJodAkBAmVYAwUCZVkFAmVaAAAEAmduCAUCaHQCXzEEAmVPCAUCaHQCXzIEAmdvCQECZmICBQJlVwUCZU8DCQAAAgUCZ28FAmdvCQCUCgIJAM4IAgkAzggCCQDOCAIFAmRHBQJoaQUCZ2gFAmduBQJlcQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjVQEKcHV0Rm9yRnJlZQECaHUDCQBmAgAABQJodQkAAgECCldyb25nIHNscGcDCQECIT0CCQCQAwEIBQJjVQhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAJodgkBAmZxCgkApQgBCAUCY1UGY2FsbGVyCQDYBAEIBQJjVQ10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAmNVCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAmNVCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQJjVQhwYXltZW50cwABBQJodQcHBgAAAgAEAmRHCAUCaHYCXzkEAmhhCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJjVQhwYXltZW50cwAABmFtb3VudAQCaGIJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmNVCHBheW1lbnRzAAEGYW1vdW50BAJlVwkBAmVQAwUCaGEFAmhiCQC2AgEAAAMJAAACBQJlVwUCZVcEAmh3CQECZVgDAAAAAAAABAJnbggFAmh3Al8xBAJlTwgFAmh3Al8yBAJnbwkBAmZiAgUCZVcFAmVPAwkAAAIFAmdvBQJnbwkAzggCBQJkRwUCZ24JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1UBA2dldAAEAmVXCQECZVADCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVXBQJlVwQCZWMJAQJmbwEFAmNVBAJoeAgFAmVjAl8xBAJkRggFAmVjAl8yBAJkUQgFAmVjAl8zBAJkawgFAmVjAl80BAJkRwgFAmVjAl81BAJlRAkA/AcEBQJhVgIEYnVybgkAzAgCBQJkUQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkawUCZFEFA25pbAMJAAACBQJlRAUCZUQEAmh5CQECZVgDCQEBLQEFAmh4CQEBLQEFAmRGAAAEAmduCAUCaHkCXzEEAmVPCAUCaHkCXzIEAmdvCQECZmICBQJlVwUCZU8DCQAAAgUCZ28FAmdvCQDOCAIFAmRHBQJnbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjVQELZ2V0T25lVGtuVjICAmZRAmZSBAJobgoAAmFYCQD8BwQFAmFWAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVgCB0Jvb2xlYW4FAmFYCQACAQkArAICCQADAQUCYVgCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmh6AwMJAQJiYQAGCQAAAgUCYnAFAXQGBQJobgQCZ04JAMwIAgMDCQEBIQEFAmh6BgkBAmd0AQUCY1UGCQECYVMBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJjVQhwYXltZW50cwABBgkBAmFTAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ04FAmdOBAJoQQkBAmZQBgUCZlEFAmZSCAUCY1UIcGF5bWVudHMIBQJjVQZjYWxsZXIIBQJjVQxvcmlnaW5DYWxsZXIIBQJjVQ10cmFuc2FjdGlvbklkBAJkRwgFAmhBAl8xBAJnYQgFAmhBAl8yCQCUCgIFAmRHBQJnYQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjVQEKcmVmcmVzaERMcAAEAmhCCQELdmFsdWVPckVsc2UCCQCfCAEFAmF0AAAEAmhDAwkAZwIJAGUCBQZoZWlnaHQFAmhCBQJhdwUEdW5pdAkBAmFTAQkAuQkCCQDMCAIJAKQDAQUCYXcJAMwIAgIv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JFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjVQENdW5zdGFrZUFuZEdldAECY0IEAmhQAwkBAiE9AgkAkAMBCAUCY1UIcGF5bWVudHMAAAkAAgECDU5vIHBtbnRzIGV4cGQGAwkAAAIFAmhQBQJoUAQCaFEJAQJieAAEAmhkBQJicQQCaFIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmhRBQFEAgpXciBzdCBhZGRyBAJlVwkBAmVQAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlVwUCZVcEAmhTCQD8BwQFAmhSAgd1bnN0YWtlCQDMCAIJANgEAQUCaGQJAMwIAgUCY0IFA25pbAUDbmlsAwkAAAIFAmhTBQJoUwQCZWMJAQJkaQQJANgEAQgFAmNVDXRyYW5zYWN0aW9uSWQJANgEAQUCaGQFAmNCCAUCY1UGY2FsbGVyBAJkRQgFAmVjAl8xBAJkRggFAmVjAl8yBAJkcwkBDXBhcnNlSW50VmFsdWUBCAUCZWMCXzkEAmRHCAUCZWMDXzEwBAJoVAMDCQECYmEABgkAAAIFAmRzBQF0CQACAQkArAICAglCbG9ja2VkOiAJAKQDAQUCZHMGAwkAAAIFAmhUBQJoVAQCaFUJAPwHBAUCYVYCBGJ1cm4JAMwIAgUCY0IFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCaGQFAmNCBQNuaWwDCQAAAgUCaFUFAmhVBAJoVgkBAmVYAwkBAS0BBQJkRQkBAS0BBQJkRgAABAJnbggFAmhWAl8xBAJlTwgFAmhWAl8yBAJnbwkBAmZiAgUCZVcFAmVPAwkAAAIFAmdvBQJnbwkAzggCBQJkRwUCZ24JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1UBE3Vuc3Rha2VBbmRHZXROb0xlc3MDAmhXAmhYAmhNBAJoegMJAQJiYQAGCQAAAgUCYnAFAXQEAmdOCQDMCAIDCQEBIQEFAmh6BgkAAgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmNVCHBheW1lbnRzAAAGCQACAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ04FAmdOBAJlVwkBAmVQAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlVwUCZVcEAmhTCQD8BwQFAmJ6Agd1bnN0YWtlCQDMCAIJANgEAQUCYnEJAMwIAgUCaFcFA25pbAUDbmlsAwkAAAIFAmhTBQJoUwQCaFkJAQJkaQQJANgEAQgFAmNVDXRyYW5zYWN0aW9uSWQJANgEAQUCYnEFAmhXCAUCY1UGY2FsbGVyBAJkRQgFAmhZAl8xBAJkRggFAmhZAl8yBAJkRwgFAmhZA18xMAQCaFoJAMwIAgMJAGcCBQJkRQUCaFgGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaFgFA25pbAIACQDMCAIDCQBnAgUCZEYFAmhNBgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaE0FA25pbAIABQNuaWwDCQAAAgUCaFoFAmhaBAJoTgkA/AcEBQJhVgIEYnVybgkAzAgCBQJoVwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJicQUCaFcFA25pbAMJAAACBQJoTgUCaE4EAmlhCQECZVgDCQEBLQEFAmRFCQEBLQEFAmRGAAAEAmduCAUCaWECXzEEAmVPCAUCaWECXzIEAmdvCQECZmICBQJlVwUCZU8DCQAAAgUCZ28FAmdvCQDOCAIFAmRHBQJnbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjVQEVdW5zdGFrZUFuZEdldE9uZVRrblYyAwJoVwJmUQJmUgQCaG4KAAJhWAkA/AcEBQJhVgIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFYAgdCb29sZWFuBQJhWAkAAgEJAKwCAgkAAwEFAmFYAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJoegMDCQECYmEABgkAAAIFAmJwBQF0BgUCaG4EAmdOCQDMCAIDAwkBASEBBQJoegYJAQJndAEFAmNVBgkBAmFTAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCY1UIcGF5bWVudHMAAAYJAQJhUwECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmdOBQJnTgQCaFEJAQJieAAEAmhkBQJicQQCaFIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmhRBQFEAgpXciBzdCBhZGRyBAJkbQgFAmNVBmNhbGxlcgQCaWIFBHRoaXMEAmhTCQD8BwQFAmhSAg91bnN0YWtlSU5URVJOQUwJAMwIAgUCaGQJAMwIAgUCaFcJAMwIAggFAmRtBWJ5dGVzCQDMCAIIBQJpYgVieXRlcwUDbmlsBQNuaWwDCQAAAgUCaFMFAmhTBAJpYwkBAmZQBgUCZlEFAmZSCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJoZAUCaFcFA25pbAgFAmNVBmNhbGxlcggFAmNVDG9yaWdpbkNhbGxlcggFAmNVDXRyYW5zYWN0aW9uSWQEAmRHCAUCaWMCXzEEAmdhCAUCaWMCXzIJAJQKAgUCZEcFAmdhCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNVARxwdXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJpZAJpZQQCaWYJAQJmdQUFAmlkBQJpZQIAAgAGBAJmSggFAmlmAl8xBAJkRwgFAmlmAl8yBAJjQwgFAmlmAl8zBAJmTwgFAmlmAl80CQCUCgIFA25pbAkAlQoDBQJmSgUCY0MFAmZPAmNVASFwdXRPbmVUa25WMldpdGhvdXRUYWtlRmVlUkVBRE9OTFkCAmlkAmllBAJpZwkBAmZ1BQUCaWQFAmllAgACAAcEAmZKCAUCaWcCXzEEAmRHCAUCaWcCXzIEAmNDCAUCaWcCXzMEAmZPCAUCaWcCXzQJAJQKAgUDbmlsCQCVCgMFAmZKBQJjQwUCZk8CY1UBCGFjdGl2YXRlAgJpaAJpaQMJAQIhPQIJAKUIAQgFAmNVBmNhbGxlcgkApQgBBQJhVgkAAgECBmRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhawAFAmloCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhbAAFAmlpBQNuaWwCB3N1Y2Nlc3MCY1UBHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBAmJkAAJjVQEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQECYlQJAJQKAgUDbmlsCQECYlMBBQJiVAJjVQEZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQMCY20CY24CY3IEAmlqCQECY3EDBQJjbQUCY24FAmNyCQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUCaWoAAAkAzAgCCQCmAwEJAJEDAgUCaWoAAQkAzAgCCQCmAwEJAJEDAgUCaWoAAgUDbmlsAmNVARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFOAmlrCQCUCgIFA25pbAkBAU0CCQCnAwEFAU4FAmlrAmNVARR0b1gxOFdyYXBwZXJSRUFET05MWQIBSgFLCQCUCgIFA25pbAkApgMBCQEBSQIFAUoFAUsCY1UBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICYlYCYlcJAJQKAgUDbmlsCQCmAwEJAQJiVQIJAKcDAQUCYlYJAKcDAQUCYlcCY1UBI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJkagJjYgJkSQJkSgJkSwJkTAJpbAJkTQJkTgkAlAoCBQNuaWwJAQJkSA0FAmRqBQJjYgUCZEkFAmRKBQJkSwUCZEwFAmlsBQJkTQUCZE4GBwAAAgACY1UBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJkagJpbQJkbAJpbAQCZWMJAQJkaQQFAmRqBQJpbQUCZGwJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmlsCQCUCgIFA25pbAkAnAoKCAUCZWMCXzEIBQJlYwJfMggFAmVjAl8zCAUCZWMCXzQIBQJlYwJfNQgFAmVjAl82CAUCZWMCXzcJAKYDAQgFAmVjAl84CAUCZWMCXzkIBQJlYwNfMTACY1UBCWNoYW5nZUFtcAAEAmluCQD8BwQFAmFWAhpnZXRDaGFuZ2VBbXBDb25maWdSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsBAJpbwQCZ3EFAmluAwkAAQIFAmdxAglMaXN0W0FueV0EAmlwBQJncQkAlQoDCgACYVgJAJEDAgUCaXAAAAMJAAECBQJhWAIDSW50BQJhWAkAAgEJAKwCAgkAAwEFAmFYAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQKAAJhWAkAkQMCBQJpcAABAwkAAQIFAmFYAgNJbnQFAmFYCQACAQkArAICCQADAQUCYVgCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAoAAmFYCQCRAwIFAmlwAAIDCQABAgUCYVgCA0ludAUCYVgJAAIBCQCsAgIJAAMBBQJhWAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50CQECYVMBAhJpbnZhbGlkIGVudHJ5IHR5cGUEAmlxCAUCaW8CXzEEAmlyCAUCaW8CXzIEAmlzCAUCaW8CXzMEAml0CQENcGFyc2VJbnRWYWx1ZQEJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAQJhbQAEAml1CQBkAgUCaXQFAmlyBAJpdgMJAGYCAAAFAmlyAwkAZgIFAmlzBQJpdQUCaXMFAml1AwkAZgIFAml1BQJpcwUCaXMFAml1BAJpdwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQECYXAAAAAEAml4CQBkAgUCaXcFAmlxBAJnTgkAzAgCAwkAZgIFBmhlaWdodAUCaXgGCQECYVMBAhd0cnkgYWdhaW4gaW4gZmV3IGJsb2NrcwkAzAgCAwkBAiE9AgUCaXQFAml2BgkBAmFTAQIWYWxyZWFkeSByZWFjaGVkIHRhcmdldAUDbmlsAwkAAAIFAmdOBQJnTgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFwAAUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhbQAJAKQDAQUCaXYJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFuAQUGaGVpZ2h0CQCkAwEFAml2BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAml5AQJpegAEAmlBBAJncQkBAmdwAAMJAAECBQJncQIKQnl0ZVZlY3RvcgQCZ3UFAmdxBQJndQMJAAECBQJncQIEVW5pdAgFAml5D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJncQUCaXkDCQABAgUCZ3ECBU9yZGVyBAJmZQUCZ3EEAmlCCQECYmIABAJpQwMJAQJnQgAJAJQKAgYCAAkBAmZkAQUCZmUEAmFLCAUCaUMCXzEEAmFMCAUCaUMCXzIEAmFNCQD0AwMIBQJmZQlib2R5Qnl0ZXMJAJEDAggFAmZlBnByb29mcwAACAUCZmUPc2VuZGVyUHVibGljS2V5BAJhTgkA9AMDCAUCZmUJYm9keUJ5dGVzCQCRAwIIBQJmZQZwcm9vZnMAAQUCaUIDAwMFAmFLBQJhTQcFAmFOBwYJAQJhSgQFAmFLBQJhTAUCYU0FAmFOAwkAAQIFAmdxAhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCY0gFAmdxAwkA9AMDCAUCaXkJYm9keUJ5dGVzCQCRAwIIBQJpeQZwcm9vZnMAAAUCaUEGBAJpRAkA9gMBCQEFdmFsdWUBCAUCY0gGc2NyaXB0BAJpRQkA2wQBCQEFdmFsdWUBCQCdCAIFAmFWCQECYUYABAJpRgkA8QcBBQR0aGlzAwkAAAIFAmlFBQJpRAkBAiE9AgUCaUYFAmlEBwkA9AMDCAUCaXkJYm9keUJ5dGVzCQCRAwIIBQJpeQZwcm9vZnMAAAUCaUHn27q2", "height": 2559809, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BAQ5R5WWHG5zPXCgib15HoFnCu9GthriJKnwcfJASQ2d Next: sxkKb7zA4AB6yoiDxD8hw9swQkgcE2zBfv8iJWuMC6q Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = 100000000
4+let a = true
55
6-let b = toBigInt(100000000)
6+let b = 100000000
77
8-let c = toBigInt(1000000000000000000)
8+let c = toBigInt(100000000)
99
10-let d = toBigInt(0)
10+let d = toBigInt(1000000000000000000)
1111
1212 let e = toBigInt(0)
1313
14-let f = toBigInt(1)
14+let f = toBigInt(0)
1515
16-let g = toBigInt(2)
16+let g = toBigInt(1)
1717
18-let h = toBigInt(3)
18+let h = toBigInt(2)
1919
20-let i = toBigInt(4)
20+let i = toBigInt(3)
2121
22-let j = toBigInt((a - ((a * 1) / a)))
22+let j = toBigInt(4)
2323
24-let k = "WAVES"
24+let k = toBigInt((b - ((b * 1) / b)))
2525
26-let l = "100"
26+let l = "WAVES"
2727
28-let m = "1"
28+let m = "100"
2929
30-let n = "__"
30+let n = "1"
3131
32-let o = ""
32+let o = "__"
3333
34-let p = 1
34+let p = ""
3535
36-let q = 2
36+let q = 1
3737
38-let r = 3
38+let r = 2
3939
40-let s = 4
40+let s = 3
4141
42-let t = 1
42+let t = 4
4343
44-let u = 2
44+let u = 1
4545
46-let v = 3
46+let v = 2
4747
48-let w = 4
48+let w = 3
4949
50-let x = 5
50+let x = 4
5151
52-let y = 6
52+let y = 5
5353
54-let z = 7
54+let z = 6
5555
56-let A = 8
56+let A = 7
5757
58-let B = 9
58+let B = 8
5959
60-let C = 1
60+let C = 9
6161
62-let D = 6
62+let D = 1
6363
64-let E = 7
64+let E = 6
6565
66-let F = 10
66+let F = 7
6767
68-let G = fraction(10, a, 10000)
68+let G = 10
6969
70-func H (I,J) = fraction(toBigInt(I), c, toBigInt(J))
70+let H = fraction(10, b, 10000)
71+
72+func I (J,K) = fraction(toBigInt(J), d, toBigInt(K))
7173
7274
73-func K (I,J) = fraction(I, c, J)
75+func L (J,K) = fraction(J, d, K)
7476
7577
76-func L (M,N) = toInt(fraction(M, toBigInt(N), c))
78+func M (N,O) = toInt(fraction(N, toBigInt(O), d))
7779
7880
79-func O (M,N,P) = toInt(fraction(M, toBigInt(N), c, P))
81+func P (N,O,Q) = toInt(fraction(N, toBigInt(O), d, Q))
8082
8183
82-func Q (I,J) = fraction(I, c, toBigInt(J))
84+func R (J,K) = fraction(J, d, toBigInt(K))
8385
8486
85-func R (M,N) = fraction(M, toBigInt(N), c)
87+func S (N,O) = fraction(N, toBigInt(O), d)
8688
8789
88-func S (T,U,V) = fraction(T, U, V)
90+func T (U,V,W) = fraction(U, V, W)
8991
9092
91-func W (M) = if ((d > M))
92- then -(M)
93- else M
93+func X (N) = if ((e > N))
94+ then -(N)
95+ else N
9496
9597
96-func X (M) = if ((d > M))
97- then -(M)
98- else M
98+func Y (N) = if ((e > N))
99+ then -(N)
100+ else N
99101
100102
101-func Y () = "%s__factoryContract"
103+func Z () = "%s__factoryContract"
102104
103105
104-func Z () = "%s__managerPublicKey"
106+func aa () = "%s__managerPublicKey"
105107
106108
107-func aa () = "%s__pendingManagerPublicKey"
109+func ab () = "%s__pendingManagerPublicKey"
108110
109111
110-func ab () = "%s%s__price__last"
112+func ac () = "%s%s__price__last"
111113
112114
113-func ac (ad,ae) = makeString(["%s%s%d%d__price__history", toString(ad), toString(ae)], n)
115+func ad (ae,af) = makeString(["%s%s%d%d__price__history", toString(ae), toString(af)], o)
114116
115117
116-func af (ag,ah) = ((("%s%s%s__P__" + ag) + "__") + ah)
118+func ag (ah,ai) = ((("%s%s%s__P__" + ah) + "__") + ai)
117119
118120
119-func ai (ag,ah) = ((("%s%s%s__G__" + ag) + "__") + ah)
121+func aj (ah,ai) = ((("%s%s%s__G__" + ah) + "__") + ai)
120122
121123
122-func aj () = "%s__amountAsset"
124+func ak () = "%s__amountAsset"
123125
124126
125-func ak () = "%s__priceAsset"
127+func al () = "%s__priceAsset"
126128
127129
128-func al () = "%s__amp"
130+func am () = "%s__amp"
129131
130132
131-func am (an) = ("%s%d__amp__" + toString(an))
132-
133-
134-func ao () = "%s__addonAddr"
133+func an (ao) = ("%s%d__amp__" + toString(ao))
135134
136135
137136 func ap () = "%s__changeAmpLastCall"
139138
140139 let aq = "%s__fee"
141140
142-let ar = valueOrElse(getInteger(this, aq), G)
141+let ar = valueOrElse(getInteger(this, aq), H)
143142
144-let as = makeString(["%s", "dLp"], n)
143+let as = makeString(["%s", "dLp"], o)
145144
146-let at = makeString(["%s", "dLpRefreshedHeight"], n)
145+let at = makeString(["%s", "dLpRefreshedHeight"], o)
147146
148-let au = makeString(["%s", "refreshDLpDelay"], n)
147+let au = makeString(["%s", "refreshDLpDelay"], o)
149148
150149 let av = 30
151150
190189 func aU (aT) = makeString(["lp_stable.ride:", aT], " ")
191190
192191
193-let aV = addressFromStringValue(aO(this, Y()))
192+let aV = addressFromStringValue(aO(this, Z()))
194193
195194 let aW = {
196195 let aX = invoke(aV, "getInFeeREADONLY", [toString(this)], nil)
206205 else throw(($getType(aX) + " couldn't be cast to Int"))
207206 }
208207
209-let aZ = aO(this, al())
208+let aZ = aO(this, am())
210209
211210 func ba () = valueOrElse(getBoolean(aV, aE()), false)
212211
217216 let bc = addressFromStringValue(aO(aV, aG()))
218217
219218 func bd () = {
220- let be = aO(this, aj())
221- let bf = aO(this, ak())
219+ let be = aO(this, ak())
220+ let bf = aO(this, al())
222221 let bg = aR(aV, aC(bf))
223222 let aA = aR(aV, aC(be))
224- split(aO(aV, az(toString(aA), toString(bg))), n)
223+ split(aO(aV, az(toString(aA), toString(bg))), o)
225224 }
226225
227226
228-func bh (bi) = if ((bi == k))
227+func bh (bi) = if ((bi == l))
229228 then unit
230229 else fromBase58String(bi)
231230
232231
233232 func bj (bi) = if ((bi == unit))
234- then k
233+ then l
235234 else toBase58String(value(bi))
236235
237236
238-func bk (bl) = $Tuple9(addressFromStringValue(bl[t]), parseIntValue(bl[u]), fromBase58String(bl[v]), bh(bl[w]), bh(bl[x]), parseIntValue(bl[y]), parseIntValue(bl[z]), fromBase58String(bl[A]), fromBase58String(bl[B]))
237+func bk (bl) = $Tuple9(addressFromStringValue(bl[u]), parseIntValue(bl[v]), fromBase58String(bl[w]), bh(bl[x]), bh(bl[y]), parseIntValue(bl[z]), parseIntValue(bl[A]), fromBase58String(bl[B]), fromBase58String(bl[C]))
239238
240239
241240 let bm = bk(bd())
260259
261260 let bw = bn._9
262261
263-func bx () = split(aO(aV, ax()), n)
262+func bx () = split(aO(aV, ax()), o)
264263
265264
266265 let by = bx()
267266
268-let bz = valueOrErrorMessage(addressFromString(by[C]), "Invalid staking contract address")
267+let bz = valueOrErrorMessage(addressFromString(by[D]), "Invalid staking contract address")
269268
270-let bA = valueOrErrorMessage(addressFromString(by[E]), "Invalid slipage contract address")
269+let bA = valueOrErrorMessage(addressFromString(by[F]), "Invalid slipage contract address")
271270
272-let bB = valueOrErrorMessage(addressFromString(by[F]), "Invalid gwx contract address")
271+let bB = valueOrErrorMessage(addressFromString(by[G]), "Invalid gwx contract address")
273272
274-let bC = valueOrErrorMessage(addressFromString(by[D]), "Invalid gwx contract address")
273+let bC = valueOrErrorMessage(addressFromString(by[E]), "Invalid gwx contract address")
275274
276-func bD (bE,bF,bG,bH,bI,bJ,bK,bL,bM,bN) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bE), toString(bF), toString(bG), toString(bH), toString(bI), toString(bJ), toString(bK), toString(bL), toString(bM), toString(bN)], n)
275+func bD (bE,bF,bG,bH,bI,bJ,bK,bL,bM,bN) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bE), toString(bF), toString(bG), toString(bH), toString(bI), toString(bJ), toString(bK), toString(bL), toString(bM), toString(bN)], o)
277276
278277
279-func bO (bP,bQ,bR,bH,bK,bL) = makeString(["%d%d%d%d%d%d", toString(bP), toString(bQ), toString(bR), toString(bH), toString(bK), toString(bL)], n)
278+func bO (bP,bQ,bR,bH,bK,bL) = makeString(["%d%d%d%d%d%d", toString(bP), toString(bQ), toString(bR), toString(bH), toString(bK), toString(bL)], o)
280279
281280
282281 func bS (bT) = if ((bT == "WAVES"))
284283 else assetBalance(this, fromBase58String(bT))
285284
286285
287-func bU (bV,bW) = fraction(bV, c, bW)
286+func bU (bV,bW) = fraction(bV, d, bW)
288287
289288
290-func bX (bV,bW,P) = fraction(bV, c, bW, P)
289+func bX (bV,bW,Q) = fraction(bV, d, bW, Q)
291290
292291
293292 func bY (bZ,ca,cb) = {
294- let cc = fraction((bZ - ca), b, ca)
295- let cd = ((cb - W(cc)) > d)
293+ let cc = fraction((bZ - ca), c, ca)
294+ let cd = ((cb - X(cc)) > e)
296295 if (!(cd))
297296 then throw(("Big slpg: " + toString(cc)))
298297 else $Tuple2(cd, min([bZ, ca]))
300299
301300
302301 func ce (cf,cg,ch) = {
303- let cc = fraction(cg, b, cf)
302+ let cc = fraction(cg, c, cf)
304303 let ci = (ch > cc)
305304 if (if (ci)
306305 then true
311310
312311
313312 func cj (ck,cl,cm,cn) = {
314- let co = H(cm, ck)
315- let cp = H(cn, cl)
313+ let co = I(cm, ck)
314+ let cp = I(cn, cl)
316315 bU(cp, co)
317316 }
318317
321320 let cs = bt
322321 let ct = bu
323322 let cu = cj(cs, ct, cm, cn)
324- let bW = H(cm, cs)
325- let bV = H(cn, ct)
326- let cv = H(cr, a)
323+ let bW = I(cm, cs)
324+ let bV = I(cn, ct)
325+ let cv = I(cr, b)
327326 let cw = bU(bW, cv)
328327 let cx = bU(bV, cv)
329328 [cu, cw, cx]
332331
333332 func cy (cm,cn,cr) = {
334333 let cz = cq(cm, cn, cr)
335-[L(cz[0], a), L(cz[1], a), L(cz[2], a)]
334+[M(cz[0], b), M(cz[1], b), M(cz[2], b)]
336335 }
337336
338337
339338 func cA (cB,ar) = {
340339 let cC = if ((ar == 0))
341340 then 0
342- else fraction(cB, ar, a)
341+ else fraction(cB, ar, b)
343342 $Tuple2((cB - cC), cC)
344343 }
345344
348347 let cF = cE[0]
349348 let cG = cE[1]
350349 let cH = (cF + cG)
351- if ((cH == e))
352- then e
350+ if ((cH == f))
351+ then f
353352 else {
354353 let cI = parseIntValue(aZ)
355354 let cJ = (cI * 2)
356- let cz = fraction(cF, cG, f)
357- let cK = fraction(cz, i, f)
358- let cL = fraction(toBigInt(cJ), cH, f)
355+ let cz = fraction(cF, cG, g)
356+ let cK = fraction(cz, j, g)
357+ let cL = fraction(toBigInt(cJ), cH, g)
359358 let cM = toBigInt((cJ - 1))
360359 func cN (cO) = {
361- let cP = fraction(cO, cO, f)
362- let cQ = fraction(cP, cO, f)
363- let cR = fraction(cQ, f, cK)
364- fraction((cL + fraction(cR, g, f)), cO, (fraction(cM, cO, f) + fraction(h, cR, f)))
360+ let cP = fraction(cO, cO, g)
361+ let cQ = fraction(cP, cO, g)
362+ let cR = fraction(cQ, g, cK)
363+ fraction((cL + fraction(cR, h, g)), cO, (fraction(cM, cO, g) + fraction(i, cR, g)))
365364 }
366365
367366 func cS (cT,cU) = if (cT._2)
370369 let cO = cT._1
371370 let cV = cN(cO)
372371 let cW = (cV - value(cO))
373- let cX = if ((e > cW))
372+ let cX = if ((f > cW))
374373 then -(cW)
375374 else cW
376- if ((f >= cX))
375+ if ((g >= cX))
377376 then $Tuple2(cV, true)
378377 else $Tuple2(cV, false)
379378 }
414413 then throw("Wrong pmt asset")
415414 else {
416415 let du = bS(do)
417- let dv = H(du, dq)
416+ let dv = I(du, dq)
418417 let dw = bS(dp)
419- let dx = H(dw, dr)
418+ let dx = I(dw, dr)
420419 let dy = bU(dx, dv)
421- let dz = L(dy, a)
422- let dA = H(dl, a)
423- let dB = H(dt, a)
420+ let dz = M(dy, b)
421+ let dA = I(dl, b)
422+ let dB = I(dt, b)
424423 let dC = fraction(dv, dA, dB)
425424 let dD = fraction(dx, dA, dB)
426- let dE = O(dC, dq, FLOOR)
427- let dF = O(dD, dr, FLOOR)
425+ let dE = P(dC, dq, FLOOR)
426+ let dF = P(dD, dr, FLOOR)
428427 let dG = if ((dj == ""))
429428 then nil
430429 else [ScriptTransfer(dm, dE, if ((do == "WAVES"))
431430 then unit
432431 else fromBase58String(do)), ScriptTransfer(dm, dF, if ((dp == "WAVES"))
433432 then unit
434- else fromBase58String(dp)), StringEntry(ai(toString(dm), dj), bO(dE, dF, dl, dz, height, lastBlock.timestamp)), IntegerEntry(ab(), dz), IntegerEntry(ac(height, lastBlock.timestamp), dz)]
433+ else fromBase58String(dp)), StringEntry(aj(toString(dm), dj), bO(dE, dF, dl, dz, height, lastBlock.timestamp)), IntegerEntry(ac(), dz), IntegerEntry(ad(height, lastBlock.timestamp), dz)]
435434 $Tuple10(dE, dF, do, dp, du, dw, dt, dy, ds, dG)
436435 }
437436 }
465464 else if (dO)
466465 then bS(dT)
467466 else (bS(dT) - dK)
468- let dZ = H(dI, dW)
469- let ea = H(dK, dX)
467+ let dZ = I(dI, dW)
468+ let ea = I(dK, dX)
470469 let eb = bU(ea, dZ)
471- let dv = H(du, dW)
472- let dx = H(dw, dX)
470+ let dv = I(du, dW)
471+ let dx = I(dw, dX)
473472 let cg = cD([dv, dx])
474473 let ec = if ((dY == 0))
475474 then {
479478 else throw("D1 should be greater than D0")
480479 if ((ed == ed))
481480 then {
482- let dy = d
483- let ee = d
481+ let dy = e
482+ let ee = e
484483 let cv = cf
485- $Tuple5(L(cv, a), L(dZ, dW), L(ea, dX), bU((dx + ea), (dv + dZ)), ee)
484+ $Tuple5(M(cv, b), M(dZ, dW), M(ea, dX), bU((dx + ea), (dv + dZ)), ee)
486485 }
487486 else throw("Strict value is not equal to itself.")
488487 }
489488 else {
490489 let dy = bU(dx, dv)
491- let ef = fraction(W((dy - eb)), c, dy)
492- let ee = H(cb, a)
490+ let ef = fraction(X((dy - eb)), d, dy)
491+ let ee = I(cb, b)
493492 if (if (if (dP)
494- then (dy != d)
493+ then (dy != e)
495494 else false)
496495 then (ef > ee)
497496 else false)
498497 then throw(((("Price slippage " + toString(ef)) + " > ") + toString(ee)))
499498 else {
500- let eg = H(dY, a)
501- let eh = fraction(dZ, bX(dx, dv, CEILING), c, CEILING)
502- let ei = fraction(ea, c, bX(dx, dv, FLOOR), CEILING)
499+ let eg = I(dY, b)
500+ let eh = fraction(dZ, bX(dx, dv, CEILING), d, CEILING)
501+ let ei = fraction(ea, d, bX(dx, dv, FLOOR), CEILING)
503502 let ej = if ((eh > ea))
504503 then $Tuple2(ei, ea)
505504 else $Tuple2(dZ, eh)
512511 if ((ed == ed))
513512 then {
514513 let cv = fraction(eg, (cf - cg), cg)
515- $Tuple5(O(cv, a, FLOOR), O(ek, dW, CEILING), O(el, dX, CEILING), dy, ee)
514+ $Tuple5(P(cv, b, FLOOR), P(ek, dW, CEILING), P(el, dX, CEILING), dy, ee)
516515 }
517516 else throw("Strict value is not equal to itself.")
518517 }
520519 let em = ec._1
521520 let en = ec._2
522521 let eo = ec._3
523- let dz = L(ec._4, a)
524- let ep = L(ec._5, a)
522+ let dz = M(ec._4, b)
523+ let ep = M(ec._5, b)
525524 if ((0 >= em))
526525 then throw("LP <= 0")
527526 else {
541540 else $Tuple2(en, eo)
542541 let eu = et._1
543542 let ev = et._2
544- let ew = [IntegerEntry(ab(), dz), IntegerEntry(ac(height, lastBlock.timestamp), dz), StringEntry(af(dm, dj), bD(eu, ev, eq, dz, cb, ep, height, lastBlock.timestamp, er, es))]
543+ let ew = [IntegerEntry(ac(), dz), IntegerEntry(ad(height, lastBlock.timestamp), dz), StringEntry(ag(dm, dj), bD(eu, ev, eq, dz, cb, ep, height, lastBlock.timestamp, er, es))]
545544 $Tuple13(em, eq, dz, du, dw, dY, dn, ds, ew, er, es, dJ, dL)
546545 }
547546 }
548547
549548
550549 func ex (cE,cU,ey) = {
551- let ez = g
550+ let ez = h
552551 let eA = cE[if ((cU == 0))
553552 then 1
554553 else 0]
555- let eB = parseBigIntValue(l)
554+ let eB = parseBigIntValue(m)
556555 let cI = (parseBigIntValue(aZ) * eB)
557556 let cH = eA
558557 let cJ = (cI * ez)
565564 if ((dh != unit))
566565 then cT
567566 else {
568- let eH = (((eG * eG) + eC) / ((g * eG) + eD))
569- let eI = X((eH - value(eG)))
570- if ((f >= eI))
567+ let eH = (((eG * eG) + eC) / ((h * eG) + eD))
568+ let eI = Y((eH - value(eG)))
569+ if ((g >= eI))
571570 then $Tuple2(eH, eE)
572571 else $Tuple2(eH, unit)
573572 }
597596
598597
599598 func eK (eL,eM,eN) = {
600- let eO = fraction(cD([K(eL, toBigInt(bt)), K(eM, toBigInt(bu))]), c, eN)
601- if ((eN == e))
602- then e
599+ let eO = fraction(cD([L(eL, toBigInt(bt)), L(eM, toBigInt(bu))]), d, eN)
600+ if ((eN == f))
601+ then f
603602 else eO
604603 }
605604
632631 let eT = bS(bj(br))
633632 let eU = bS(bj(bs))
634633 let ff = fe.amount
635- let fg = fraction(fe.amount, fe.price, a, FLOOR)
634+ let fg = fraction(fe.amount, fe.price, b, FLOOR)
636635 let fh = if ((fe.orderType == Buy))
637636 then $Tuple2(ff, -(fg))
638637 else $Tuple2(-(ff), fg)
640639 let eZ = fh._2
641640 if (if (if (ba())
642641 then true
643- else (bp == r))
642+ else (bp == s))
644643 then true
645- else (bp == s))
644+ else (bp == t))
646645 then throw("Admin blocked")
647646 else if (if ((fe.assetPair.amountAsset != br))
648647 then true
673672 let dG = ec._10
674673 if (if (ba())
675674 then true
676- else (ds == s))
675+ else (ds == t))
677676 then throw(("Admin blocked: " + toString(ds)))
678677 else $Tuple5(dE, dF, dQ, dk, dG)
679678 }
680679
681680
682-func fq (fr,ah,fs,ft,cb,dN,dO,dP,dQ,dR) = {
683- let ec = dH(ah, cb, value(fs).amount, value(fs).assetId, value(ft).amount, value(ft).assetId, fr, (ah == ""), dN, dO, dP, dQ, dR)
681+func fq (fr,ai,fs,ft,cb,dN,dO,dP,dQ,dR) = {
682+ let ec = dH(ai, cb, value(fs).amount, value(fs).assetId, value(ft).amount, value(ft).assetId, fr, (ai == ""), dN, dO, dP, dQ, dR)
684683 let ds = parseIntValue(ec._8)
685684 if (if (if (ba())
686685 then true
687- else (ds == q))
686+ else (ds == r))
688687 then true
689- else (ds == s))
688+ else (ds == t))
690689 then throw(("Blocked:" + toString(ds)))
691690 else ec
692691 }
693692
694693
695-func fu (fv,dk,dm,ah,fw) = {
694+func fu (fv,dk,dm,ai,fw) = {
696695 let do = toBase58String(value(br))
697696 let dp = toBase58String(value(bs))
698697 let dn = bq
699698 let dW = bt
700699 let dX = bu
701700 let eV = toBigInt(valueOrErrorMessage(assetInfo(dn), "invalid lp asset").quantity)
702- let fx = if ((eV > e))
701+ let fx = if ((eV > f))
703702 then true
704703 else throw("initial deposit requires all coins")
705704 if ((fx == fx))
706705 then {
707706 let du = bS(do)
708707 let dw = bS(dp)
709- let fy = if ((ah == ""))
708+ let fy = if ((ai == ""))
710709 then $Tuple2(du, dw)
711710 else if ((dk == do))
712711 then if ((fv > du))
734733 let cC = fE._3
735734 let fH = (fz + fF)
736735 let fI = (fA + fG)
737- let cg = cD([H(fz, bt), H(fA, bu)])
738- let cf = cD([H(fH, bt), H(fI, bu)])
736+ let cg = cD([I(fz, bt), I(fA, bu)])
737+ let cf = cD([I(fH, bt), I(fI, bu)])
739738 let ed = if ((cf > cg))
740739 then true
741740 else throw()
742741 if ((ed == ed))
743742 then {
744743 let fJ = fraction(eV, (cf - cg), cg, FLOOR)
745- let dz = L(bU(H(fI, dX), H(fH, dW)), a)
746- let ew = [IntegerEntry(ab(), dz), IntegerEntry(ac(height, lastBlock.timestamp), dz), StringEntry(af(dm, ah), bD(fC, fD, toInt(fJ), dz, 0, 0, height, lastBlock.timestamp, 0, 0))]
747- let fK = fraction(fA, a, fz)
748- let fL = fraction(fv, a, (fK + a))
744+ let dz = M(bU(I(fI, dX), I(fH, dW)), b)
745+ let ew = [IntegerEntry(ac(), dz), IntegerEntry(ad(height, lastBlock.timestamp), dz), StringEntry(ag(dm, ai), bD(fC, fD, toInt(fJ), dz, 0, 0, height, lastBlock.timestamp, 0, 0))]
746+ let fK = fraction(fA, b, fz)
747+ let fL = fraction(fv, b, (fK + b))
749748 let fM = (fv - fL)
750749 let fN = fraction(eV, toBigInt(fM), toBigInt(fA))
751- let fO = toInt(fraction((fJ - fN), b, fN))
750+ let fO = toInt(fraction((fJ - fN), c, fN))
752751 $Tuple4(toInt(fJ), ew, cC, fO)
753752 }
754753 else throw("Strict value is not equal to itself.")
770769 let fp = value(fS[0])
771770 let dk = value(fp.assetId)
772771 let dQ = fp.amount
773- let eW = eP(e, e, e)
772+ let eW = eP(f, f, f)
774773 if ((eW == eW))
775774 then {
776775 let dj = toBase58String(fU)
803802 let gd = gb._2
804803 let fH = gb._3
805804 let fI = gb._4
806- let ge = bU(H(fI, fW), H(fH, fV))
807- let gf = L(ge, a)
805+ let ge = bU(I(fI, fW), I(fH, fV))
806+ let gf = M(ge, b)
808807 let gg = if ((fQ == "WAVES"))
809808 then unit
810809 else fromBase58String(fQ)
811810 let gh = if ((cC > 0))
812811 then [ScriptTransfer(bc, cC, gg)]
813812 else nil
814- let dG = ([ScriptTransfer(dm, ga, gg), StringEntry(ai(toString(dm), dj), bO(gc, gd, dQ, gf, height, lastBlock.timestamp)), IntegerEntry(ab(), gf), IntegerEntry(ac(height, lastBlock.timestamp), gf)] ++ gh)
813+ let dG = ([ScriptTransfer(dm, ga, gg), StringEntry(aj(toString(dm), dj), bO(gc, gd, dQ, gf, height, lastBlock.timestamp)), IntegerEntry(ac(), gf), IntegerEntry(ad(height, lastBlock.timestamp), gf)] ++ gh)
815814 if ((dG == dG))
816815 then {
817816 let gi = invoke(aV, "burn", [dQ], [AttachedPayment(dk, dQ)])
850849
851850
852851 func gp () = {
853- let gq = getString(Z())
852+ let gq = getString(aa())
854853 if ($isInstanceOf(gq, "String"))
855854 then {
856855 let cH = gq
863862
864863
865864 func gr () = {
866- let gq = getString(aa())
865+ let gq = getString(ab())
867866 if ($isInstanceOf(gq, "String"))
868867 then {
869868 let cH = gq
909908
910909 func gw (gx,ey,gy) = {
911910 let bl = bd()
912- let do = bl[w]
913- let dp = bl[x]
914- let ez = g
915- let eB = parseBigIntValue(l)
911+ let do = bl[x]
912+ let dp = bl[y]
913+ let ez = h
914+ let eB = parseBigIntValue(m)
916915 let cI = (parseBigIntValue(aZ) * eB)
917916 let cE = if ((gx == false))
918917 then [(toBigInt(bS(do)) + gy), toBigInt(bS(dp))]
929928 if ((dh != unit))
930929 then cT
931930 else {
932- let eH = (((eG * eG) + eC) / ((g * eG) + eD))
933- let eI = X((eH - value(eG)))
934- if ((f >= eI))
931+ let eH = (((eG * eG) + eC) / ((h * eG) + eD))
932+ let eI = Y((eH - value(eG)))
933+ if ((g >= eI))
935934 then $Tuple2(eH, eE)
936935 else $Tuple2(eH, unit)
937936 }
967966 func calculateAmountOutForSwapREADONLY (gC,gx,gD) = {
968967 let gE = if ((gx == false))
969968 then {
970- let gF = aO(this, ak())
971- let gy = (toBigInt(bS(aO(this, aj()))) + toBigInt(gC))
969+ let gF = aO(this, al())
970+ let gy = (toBigInt(bS(aO(this, ak()))) + toBigInt(gC))
972971 $Tuple2(gF, gy)
973972 }
974973 else {
975- let gF = aO(this, aj())
976- let gy = (toBigInt(bS(aO(this, ak()))) + toBigInt(gC))
974+ let gF = aO(this, ak())
975+ let gy = (toBigInt(bS(aO(this, al()))) + toBigInt(gC))
977976 $Tuple2(gF, gy)
978977 }
979978 let gF = gE._1
980979 let gy = gE._2
981980 let bl = bd()
982- let do = bl[w]
983- let dp = bl[x]
981+ let do = bl[x]
982+ let dp = bl[y]
984983 let cE = [toBigInt(bS(do)), toBigInt(bS(dp))]
985984 let ey = cD(cE)
986985 let eG = gw(gx, ey, toBigInt(gC))
10191018 let gO = bj(fp.assetId)
10201019 let gP = if ((gx == false))
10211020 then {
1022- let gF = aO(this, ak())
1021+ let gF = aO(this, al())
10231022 let gy = (bS(gO) - value(cU.payments[0]).amount)
10241023 $Tuple2(gF, gy)
10251024 }
10261025 else {
1027- let gF = aO(this, aj())
1026+ let gF = aO(this, ak())
10281027 let gy = (bS(gO) - value(cU.payments[0]).amount)
10291028 $Tuple2(gF, gy)
10301029 }
10311030 let gF = gP._1
10321031 let gy = gP._2
10331032 let bl = bd()
1034- let do = bl[w]
1035- let dp = bl[x]
1033+ let do = bl[x]
1034+ let dp = bl[y]
10361035 let cE = if ((gx == false))
10371036 then [(toBigInt(bS(do)) - toBigInt(value(cU.payments[0]).amount)), toBigInt(bS(dp))]
10381037 else [toBigInt(bS(do)), (toBigInt(bS(dp)) - toBigInt(value(cU.payments[0]).amount))]
10641063
10651064
10661065 @Callable(cU)
1067-func constructor (Y) = {
1066+func constructor (Z) = {
10681067 let eC = gv(cU)
10691068 if ((eC == eC))
1070- then [StringEntry(Y(), Y)]
1069+ then [StringEntry(Z(), Z)]
10711070 else throw("Strict value is not equal to itself.")
10721071 }
10731072
10801079 then {
10811080 let gS = fromBase58String(gR)
10821081 if ((gS == gS))
1083- then [StringEntry(aa(), gR)]
1082+ then [StringEntry(ab(), gR)]
10841083 else throw("Strict value is not equal to itself.")
10851084 }
10861085 else throw("Strict value is not equal to itself.")
11001099 then true
11011100 else throw("You are not pending manager")
11021101 if ((gU == gU))
1103- then [StringEntry(Z(), toBase58String(value(cz))), DeleteEntry(aa())]
1102+ then [StringEntry(aa(), toBase58String(value(cz))), DeleteEntry(ab())]
11041103 else throw("Strict value is not equal to itself.")
11051104 }
11061105 else throw("Strict value is not equal to itself.")
11111110 @Callable(cU)
11121111 func put (gV,gW) = {
11131112 let gX = bx()
1114- let gY = valueOrErrorMessage(addressFromString(gX[C]), "Wr st addr")
1115- let gZ = valueOrErrorMessage(addressFromString(gX[E]), "Wr sl addr")
1113+ let gY = valueOrErrorMessage(addressFromString(gX[D]), "Wr st addr")
1114+ let gZ = valueOrErrorMessage(addressFromString(gX[F]), "Wr sl addr")
11161115 if ((0 > gV))
11171116 then throw("Wrong slippage")
11181117 else if ((size(cU.payments) != 2))
12171216 }
12181217 let ho = if (if (if (ba())
12191218 then true
1220- else (bp == q))
1219+ else (bp == r))
12211220 then true
1222- else (bp == s))
1221+ else (bp == t))
12231222 then true
12241223 else hn
12251224 let gN = [if (if (!(ho))
13811380 }
13821381 let hz = if (if (ba())
13831382 then true
1384- else (bp == s))
1383+ else (bp == t))
13851384 then true
13861385 else hn
13871386 let gN = [if (if (!(hz))
14411440 else throw("invalid out asset id")
14421441 let hH = ex(cE, hG, cf)
14431442 let gG = (cE[hG] - hH)
1444- let gH = max([0, toInt((gG - f))])
1443+ let gH = max([0, toInt((gG - g))])
14451444 let hI = cA(gH, aY)
14461445 let fZ = hI._1
14471446 let cC = hI._2
14731472 then if ((fZ == 0))
14741473 then 0
14751474 else throw("bonus calculation error")
1476- else fraction((fZ - hK), a, hK)
1475+ else fraction((fZ - hK), b, hK)
14771476 $Tuple2(nil, $Tuple3(fZ, cC, fO))
14781477 }
14791478
15231522 then {
15241523 let hQ = bx()
15251524 let hd = bq
1526- let hR = valueOrErrorMessage(addressFromString(hQ[C]), "Wr st addr")
1525+ let hR = valueOrErrorMessage(addressFromString(hQ[D]), "Wr st addr")
15271526 let eW = eP(toBigInt(0), toBigInt(0), toBigInt(0))
15281527 if ((eW == eW))
15291528 then {
15371536 let dG = ec._10
15381537 let hT = if (if (ba())
15391538 then true
1540- else (ds == s))
1539+ else (ds == t))
15411540 then throw(("Blocked: " + toString(ds)))
15421541 else true
15431542 if ((hT == hT))
15701569 func unstakeAndGetNoLess (hW,hX,hM) = {
15711570 let hz = if (ba())
15721571 then true
1573- else (bp == s)
1572+ else (bp == t)
15741573 let gN = [if (!(hz))
15751574 then true
15761575 else throw("get operation is blocked by admin"), if ((size(cU.payments) == 0))
16291628 }
16301629 let hz = if (if (ba())
16311630 then true
1632- else (bp == s))
1631+ else (bp == t))
16331632 then true
16341633 else hn
16351634 let gN = [if (if (!(hz))
16431642 then {
16441643 let hQ = bx()
16451644 let hd = bq
1646- let hR = valueOrErrorMessage(addressFromString(hQ[C]), "Wr st addr")
1645+ let hR = valueOrErrorMessage(addressFromString(hQ[D]), "Wr st addr")
16471646 let dm = cU.caller
16481647 let ib = this
16491648 let hS = invoke(hR, "unstakeINTERNAL", [hd, hW, dm.bytes, ib.bytes], nil)
16881687 @Callable(cU)
16891688 func activate (ih,ii) = if ((toString(cU.caller) != toString(aV)))
16901689 then throw("denied")
1691- else $Tuple2([StringEntry(aj(), ih), StringEntry(ak(), ii)], "success")
1692-
1693-
1694-
1695-@Callable(cU)
1696-func setS (ij,hT) = if ((toString(cU.caller) != aO(this, ao())))
1697- then gs
1698- else [StringEntry(ij, hT)]
1699-
1700-
1701-
1702-@Callable(cU)
1703-func setI (ij,hT) = if ((toString(cU.caller) != aO(this, ao())))
1704- then gs
1705- else [IntegerEntry(ij, hT)]
1690+ else $Tuple2([StringEntry(ak(), ih), StringEntry(al(), ii)], "success")
17061691
17071692
17081693
17181703
17191704 @Callable(cU)
17201705 func calcPricesWrapperREADONLY (cm,cn,cr) = {
1721- let ik = cq(cm, cn, cr)
1722- $Tuple2(nil, [toString(ik[0]), toString(ik[1]), toString(ik[2])])
1706+ let ij = cq(cm, cn, cr)
1707+ $Tuple2(nil, [toString(ij[0]), toString(ij[1]), toString(ij[2])])
17231708 }
17241709
17251710
17261711
17271712 @Callable(cU)
1728-func fromX18WrapperREADONLY (M,il) = $Tuple2(nil, L(parseBigIntValue(M), il))
1713+func fromX18WrapperREADONLY (N,ik) = $Tuple2(nil, M(parseBigIntValue(N), ik))
17291714
17301715
17311716
17321717 @Callable(cU)
1733-func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
1718+func toX18WrapperREADONLY (J,K) = $Tuple2(nil, toString(I(J, K)))
17341719
17351720
17361721
17401725
17411726
17421727 @Callable(cU)
1743-func estimatePutOperationWrapperREADONLY (dj,cb,dI,dJ,dK,dL,im,dM,dN) = $Tuple2(nil, dH(dj, cb, dI, dJ, dK, dL, im, dM, dN, true, false, 0, ""))
1728+func estimatePutOperationWrapperREADONLY (dj,cb,dI,dJ,dK,dL,il,dM,dN) = $Tuple2(nil, dH(dj, cb, dI, dJ, dK, dL, il, dM, dN, true, false, 0, ""))
17441729
17451730
17461731
17471732 @Callable(cU)
1748-func estimateGetOperationWrapperREADONLY (dj,in,dl,im) = {
1749- let ec = di(dj, in, dl, addressFromStringValue(im))
1733+func estimateGetOperationWrapperREADONLY (dj,im,dl,il) = {
1734+ let ec = di(dj, im, dl, addressFromStringValue(il))
17501735 $Tuple2(nil, $Tuple10(ec._1, ec._2, ec._3, ec._4, ec._5, ec._6, ec._7, toString(ec._8), ec._9, ec._10))
17511736 }
17521737
17541739
17551740 @Callable(cU)
17561741 func changeAmp () = {
1757- let io = invoke(aV, "getChangeAmpConfigREADONLY", [toString(this)], nil)
1758- let ip = {
1759- let gq = io
1742+ let in = invoke(aV, "getChangeAmpConfigREADONLY", [toString(this)], nil)
1743+ let io = {
1744+ let gq = in
17601745 if ($isInstanceOf(gq, "List[Any]"))
17611746 then {
1762- let iq = gq
1747+ let ip = gq
17631748 $Tuple3({
1764- let aX = iq[0]
1749+ let aX = ip[0]
17651750 if ($isInstanceOf(aX, "Int"))
17661751 then aX
17671752 else throw(($getType(aX) + " couldn't be cast to Int"))
17681753 }, {
1769- let aX = iq[1]
1754+ let aX = ip[1]
17701755 if ($isInstanceOf(aX, "Int"))
17711756 then aX
17721757 else throw(($getType(aX) + " couldn't be cast to Int"))
17731758 }, {
1774- let aX = iq[2]
1759+ let aX = ip[2]
17751760 if ($isInstanceOf(aX, "Int"))
17761761 then aX
17771762 else throw(($getType(aX) + " couldn't be cast to Int"))
17791764 }
17801765 else aS("invalid entry type")
17811766 }
1782- let ir = ip._1
1783- let is = ip._2
1784- let it = ip._3
1785- let iu = parseIntValue(getStringValue(al()))
1786- let iv = (iu + is)
1787- let iw = if ((0 > is))
1788- then if ((it > iv))
1789- then it
1790- else iv
1791- else if ((iv > it))
1792- then it
1793- else iv
1794- let ix = valueOrElse(getInteger(ap()), 0)
1795- let iy = (ix + ir)
1796- let gN = [if ((height > iy))
1767+ let iq = io._1
1768+ let ir = io._2
1769+ let is = io._3
1770+ let it = parseIntValue(getStringValue(am()))
1771+ let iu = (it + ir)
1772+ let iv = if ((0 > ir))
1773+ then if ((is > iu))
1774+ then is
1775+ else iu
1776+ else if ((iu > is))
1777+ then is
1778+ else iu
1779+ let iw = valueOrElse(getInteger(ap()), 0)
1780+ let ix = (iw + iq)
1781+ let gN = [if ((height > ix))
17971782 then true
1798- else aS("try again in few blocks"), if ((iu != iw))
1783+ else aS("try again in few blocks"), if ((it != iv))
17991784 then true
18001785 else aS("already reached target")]
18011786 if ((gN == gN))
1802- then [IntegerEntry(ap(), height), StringEntry(al(), toString(iw)), StringEntry(am(height), toString(iw))]
1787+ then [IntegerEntry(ap(), height), StringEntry(am(), toString(iv)), StringEntry(an(height), toString(iv))]
18031788 else throw("Strict value is not equal to itself.")
18041789 }
18051790
18061791
1807-@Verifier(iz)
1808-func iA () = {
1809- let iB = {
1792+@Verifier(iy)
1793+func iz () = {
1794+ let iA = {
18101795 let gq = gp()
18111796 if ($isInstanceOf(gq, "ByteVector"))
18121797 then {
18141799 gu
18151800 }
18161801 else if ($isInstanceOf(gq, "Unit"))
1817- then iz.senderPublicKey
1802+ then iy.senderPublicKey
18181803 else throw("Match error")
18191804 }
1820- let gq = iz
1805+ let gq = iy
18211806 if ($isInstanceOf(gq, "Order"))
18221807 then {
18231808 let fe = gq
1824- let iC = bb()
1825- let iD = if (gB())
1809+ let iB = bb()
1810+ let iC = if (gB())
18261811 then $Tuple2(true, "")
18271812 else fd(fe)
1828- let aK = iD._1
1829- let aL = iD._2
1813+ let aK = iC._1
1814+ let aL = iC._2
18301815 let aM = sigVerify(fe.bodyBytes, fe.proofs[0], fe.senderPublicKey)
1831- let aN = sigVerify(fe.bodyBytes, fe.proofs[1], iC)
1816+ let aN = sigVerify(fe.bodyBytes, fe.proofs[1], iB)
18321817 if (if (if (aK)
18331818 then aM
18341819 else false)
18401825 else if ($isInstanceOf(gq, "SetScriptTransaction"))
18411826 then {
18421827 let cH = gq
1843- if (sigVerify(iz.bodyBytes, iz.proofs[0], iB))
1828+ if (sigVerify(iy.bodyBytes, iy.proofs[0], iA))
18441829 then true
18451830 else {
1846- let iE = blake2b256(value(cH.script))
1847- let iF = fromBase64String(value(getString(aV, aF())))
1848- let iG = scriptHash(this)
1849- if ((iF == iE))
1850- then (iG != iE)
1831+ let iD = blake2b256(value(cH.script))
1832+ let iE = fromBase64String(value(getString(aV, aF())))
1833+ let iF = scriptHash(this)
1834+ if ((iE == iD))
1835+ then (iF != iD)
18511836 else false
18521837 }
18531838 }
1854- else sigVerify(iz.bodyBytes, iz.proofs[0], iB)
1839+ else sigVerify(iy.bodyBytes, iy.proofs[0], iA)
18551840 }
18561841
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = 100000000
4+let a = true
55
6-let b = toBigInt(100000000)
6+let b = 100000000
77
8-let c = toBigInt(1000000000000000000)
8+let c = toBigInt(100000000)
99
10-let d = toBigInt(0)
10+let d = toBigInt(1000000000000000000)
1111
1212 let e = toBigInt(0)
1313
14-let f = toBigInt(1)
14+let f = toBigInt(0)
1515
16-let g = toBigInt(2)
16+let g = toBigInt(1)
1717
18-let h = toBigInt(3)
18+let h = toBigInt(2)
1919
20-let i = toBigInt(4)
20+let i = toBigInt(3)
2121
22-let j = toBigInt((a - ((a * 1) / a)))
22+let j = toBigInt(4)
2323
24-let k = "WAVES"
24+let k = toBigInt((b - ((b * 1) / b)))
2525
26-let l = "100"
26+let l = "WAVES"
2727
28-let m = "1"
28+let m = "100"
2929
30-let n = "__"
30+let n = "1"
3131
32-let o = ""
32+let o = "__"
3333
34-let p = 1
34+let p = ""
3535
36-let q = 2
36+let q = 1
3737
38-let r = 3
38+let r = 2
3939
40-let s = 4
40+let s = 3
4141
42-let t = 1
42+let t = 4
4343
44-let u = 2
44+let u = 1
4545
46-let v = 3
46+let v = 2
4747
48-let w = 4
48+let w = 3
4949
50-let x = 5
50+let x = 4
5151
52-let y = 6
52+let y = 5
5353
54-let z = 7
54+let z = 6
5555
56-let A = 8
56+let A = 7
5757
58-let B = 9
58+let B = 8
5959
60-let C = 1
60+let C = 9
6161
62-let D = 6
62+let D = 1
6363
64-let E = 7
64+let E = 6
6565
66-let F = 10
66+let F = 7
6767
68-let G = fraction(10, a, 10000)
68+let G = 10
6969
70-func H (I,J) = fraction(toBigInt(I), c, toBigInt(J))
70+let H = fraction(10, b, 10000)
71+
72+func I (J,K) = fraction(toBigInt(J), d, toBigInt(K))
7173
7274
73-func K (I,J) = fraction(I, c, J)
75+func L (J,K) = fraction(J, d, K)
7476
7577
76-func L (M,N) = toInt(fraction(M, toBigInt(N), c))
78+func M (N,O) = toInt(fraction(N, toBigInt(O), d))
7779
7880
79-func O (M,N,P) = toInt(fraction(M, toBigInt(N), c, P))
81+func P (N,O,Q) = toInt(fraction(N, toBigInt(O), d, Q))
8082
8183
82-func Q (I,J) = fraction(I, c, toBigInt(J))
84+func R (J,K) = fraction(J, d, toBigInt(K))
8385
8486
85-func R (M,N) = fraction(M, toBigInt(N), c)
87+func S (N,O) = fraction(N, toBigInt(O), d)
8688
8789
88-func S (T,U,V) = fraction(T, U, V)
90+func T (U,V,W) = fraction(U, V, W)
8991
9092
91-func W (M) = if ((d > M))
92- then -(M)
93- else M
93+func X (N) = if ((e > N))
94+ then -(N)
95+ else N
9496
9597
96-func X (M) = if ((d > M))
97- then -(M)
98- else M
98+func Y (N) = if ((e > N))
99+ then -(N)
100+ else N
99101
100102
101-func Y () = "%s__factoryContract"
103+func Z () = "%s__factoryContract"
102104
103105
104-func Z () = "%s__managerPublicKey"
106+func aa () = "%s__managerPublicKey"
105107
106108
107-func aa () = "%s__pendingManagerPublicKey"
109+func ab () = "%s__pendingManagerPublicKey"
108110
109111
110-func ab () = "%s%s__price__last"
112+func ac () = "%s%s__price__last"
111113
112114
113-func ac (ad,ae) = makeString(["%s%s%d%d__price__history", toString(ad), toString(ae)], n)
115+func ad (ae,af) = makeString(["%s%s%d%d__price__history", toString(ae), toString(af)], o)
114116
115117
116-func af (ag,ah) = ((("%s%s%s__P__" + ag) + "__") + ah)
118+func ag (ah,ai) = ((("%s%s%s__P__" + ah) + "__") + ai)
117119
118120
119-func ai (ag,ah) = ((("%s%s%s__G__" + ag) + "__") + ah)
121+func aj (ah,ai) = ((("%s%s%s__G__" + ah) + "__") + ai)
120122
121123
122-func aj () = "%s__amountAsset"
124+func ak () = "%s__amountAsset"
123125
124126
125-func ak () = "%s__priceAsset"
127+func al () = "%s__priceAsset"
126128
127129
128-func al () = "%s__amp"
130+func am () = "%s__amp"
129131
130132
131-func am (an) = ("%s%d__amp__" + toString(an))
132-
133-
134-func ao () = "%s__addonAddr"
133+func an (ao) = ("%s%d__amp__" + toString(ao))
135134
136135
137136 func ap () = "%s__changeAmpLastCall"
138137
139138
140139 let aq = "%s__fee"
141140
142-let ar = valueOrElse(getInteger(this, aq), G)
141+let ar = valueOrElse(getInteger(this, aq), H)
143142
144-let as = makeString(["%s", "dLp"], n)
143+let as = makeString(["%s", "dLp"], o)
145144
146-let at = makeString(["%s", "dLpRefreshedHeight"], n)
145+let at = makeString(["%s", "dLpRefreshedHeight"], o)
147146
148-let au = makeString(["%s", "refreshDLpDelay"], n)
147+let au = makeString(["%s", "refreshDLpDelay"], o)
149148
150149 let av = 30
151150
152151 let aw = valueOrElse(getInteger(this, au), av)
153152
154153 func ax () = "%s__factoryConfig"
155154
156155
157156 func ay () = "%s%s__matcher__publicKey"
158157
159158
160159 func az (aA,aB) = (((("%d%d%s__" + aA) + "__") + aB) + "__config")
161160
162161
163162 func aC (aD) = ("%s%s%s__mappings__baseAsset2internalId__" + aD)
164163
165164
166165 func aE () = "%s__shutdown"
167166
168167
169168 func aF () = "%s__allowedLpStableScriptHash"
170169
171170
172171 func aG () = "%s__feeCollectorAddress"
173172
174173
175174 func aH (aI) = ("%s%s__skipOrderValidation__" + aI)
176175
177176
178177 func aJ (aK,aL,aM,aN) = throw((((((((("order validation failed: orderValid=" + toString(aK)) + " (") + aL) + ")") + " senderValid=") + toString(aM)) + " matcherValid=") + toString(aN)))
179178
180179
181180 func aO (aP,aQ) = valueOrErrorMessage(getString(aP, aQ), makeString(["mandatory ", toString(aP), ".", aQ, " not defined"], ""))
182181
183182
184183 func aR (aP,aQ) = valueOrErrorMessage(getInteger(aP, aQ), makeString(["mandatory ", toString(aP), ".", aQ, " not defined"], ""))
185184
186185
187186 func aS (aT) = throw(makeString(["lp_stable.ride:", aT], " "))
188187
189188
190189 func aU (aT) = makeString(["lp_stable.ride:", aT], " ")
191190
192191
193-let aV = addressFromStringValue(aO(this, Y()))
192+let aV = addressFromStringValue(aO(this, Z()))
194193
195194 let aW = {
196195 let aX = invoke(aV, "getInFeeREADONLY", [toString(this)], nil)
197196 if ($isInstanceOf(aX, "Int"))
198197 then aX
199198 else throw(($getType(aX) + " couldn't be cast to Int"))
200199 }
201200
202201 let aY = {
203202 let aX = invoke(aV, "getOutFeeREADONLY", [toString(this)], nil)
204203 if ($isInstanceOf(aX, "Int"))
205204 then aX
206205 else throw(($getType(aX) + " couldn't be cast to Int"))
207206 }
208207
209-let aZ = aO(this, al())
208+let aZ = aO(this, am())
210209
211210 func ba () = valueOrElse(getBoolean(aV, aE()), false)
212211
213212
214213 func bb () = fromBase58String(aO(aV, ay()))
215214
216215
217216 let bc = addressFromStringValue(aO(aV, aG()))
218217
219218 func bd () = {
220- let be = aO(this, aj())
221- let bf = aO(this, ak())
219+ let be = aO(this, ak())
220+ let bf = aO(this, al())
222221 let bg = aR(aV, aC(bf))
223222 let aA = aR(aV, aC(be))
224- split(aO(aV, az(toString(aA), toString(bg))), n)
223+ split(aO(aV, az(toString(aA), toString(bg))), o)
225224 }
226225
227226
228-func bh (bi) = if ((bi == k))
227+func bh (bi) = if ((bi == l))
229228 then unit
230229 else fromBase58String(bi)
231230
232231
233232 func bj (bi) = if ((bi == unit))
234- then k
233+ then l
235234 else toBase58String(value(bi))
236235
237236
238-func bk (bl) = $Tuple9(addressFromStringValue(bl[t]), parseIntValue(bl[u]), fromBase58String(bl[v]), bh(bl[w]), bh(bl[x]), parseIntValue(bl[y]), parseIntValue(bl[z]), fromBase58String(bl[A]), fromBase58String(bl[B]))
237+func bk (bl) = $Tuple9(addressFromStringValue(bl[u]), parseIntValue(bl[v]), fromBase58String(bl[w]), bh(bl[x]), bh(bl[y]), parseIntValue(bl[z]), parseIntValue(bl[A]), fromBase58String(bl[B]), fromBase58String(bl[C]))
239238
240239
241240 let bm = bk(bd())
242241
243242 let bn = bm
244243
245244 let bo = bn._1
246245
247246 let bp = bn._2
248247
249248 let bq = bn._3
250249
251250 let br = bn._4
252251
253252 let bs = bn._5
254253
255254 let bt = bn._6
256255
257256 let bu = bn._7
258257
259258 let bv = bn._8
260259
261260 let bw = bn._9
262261
263-func bx () = split(aO(aV, ax()), n)
262+func bx () = split(aO(aV, ax()), o)
264263
265264
266265 let by = bx()
267266
268-let bz = valueOrErrorMessage(addressFromString(by[C]), "Invalid staking contract address")
267+let bz = valueOrErrorMessage(addressFromString(by[D]), "Invalid staking contract address")
269268
270-let bA = valueOrErrorMessage(addressFromString(by[E]), "Invalid slipage contract address")
269+let bA = valueOrErrorMessage(addressFromString(by[F]), "Invalid slipage contract address")
271270
272-let bB = valueOrErrorMessage(addressFromString(by[F]), "Invalid gwx contract address")
271+let bB = valueOrErrorMessage(addressFromString(by[G]), "Invalid gwx contract address")
273272
274-let bC = valueOrErrorMessage(addressFromString(by[D]), "Invalid gwx contract address")
273+let bC = valueOrErrorMessage(addressFromString(by[E]), "Invalid gwx contract address")
275274
276-func bD (bE,bF,bG,bH,bI,bJ,bK,bL,bM,bN) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bE), toString(bF), toString(bG), toString(bH), toString(bI), toString(bJ), toString(bK), toString(bL), toString(bM), toString(bN)], n)
275+func bD (bE,bF,bG,bH,bI,bJ,bK,bL,bM,bN) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bE), toString(bF), toString(bG), toString(bH), toString(bI), toString(bJ), toString(bK), toString(bL), toString(bM), toString(bN)], o)
277276
278277
279-func bO (bP,bQ,bR,bH,bK,bL) = makeString(["%d%d%d%d%d%d", toString(bP), toString(bQ), toString(bR), toString(bH), toString(bK), toString(bL)], n)
278+func bO (bP,bQ,bR,bH,bK,bL) = makeString(["%d%d%d%d%d%d", toString(bP), toString(bQ), toString(bR), toString(bH), toString(bK), toString(bL)], o)
280279
281280
282281 func bS (bT) = if ((bT == "WAVES"))
283282 then wavesBalance(this).available
284283 else assetBalance(this, fromBase58String(bT))
285284
286285
287-func bU (bV,bW) = fraction(bV, c, bW)
286+func bU (bV,bW) = fraction(bV, d, bW)
288287
289288
290-func bX (bV,bW,P) = fraction(bV, c, bW, P)
289+func bX (bV,bW,Q) = fraction(bV, d, bW, Q)
291290
292291
293292 func bY (bZ,ca,cb) = {
294- let cc = fraction((bZ - ca), b, ca)
295- let cd = ((cb - W(cc)) > d)
293+ let cc = fraction((bZ - ca), c, ca)
294+ let cd = ((cb - X(cc)) > e)
296295 if (!(cd))
297296 then throw(("Big slpg: " + toString(cc)))
298297 else $Tuple2(cd, min([bZ, ca]))
299298 }
300299
301300
302301 func ce (cf,cg,ch) = {
303- let cc = fraction(cg, b, cf)
302+ let cc = fraction(cg, c, cf)
304303 let ci = (ch > cc)
305304 if (if (ci)
306305 then true
307306 else (cg > cf))
308307 then throw(((((((toString(cg) + " ") + toString(cf)) + " ") + toString(cc)) + " ") + toString(ch)))
309308 else ci
310309 }
311310
312311
313312 func cj (ck,cl,cm,cn) = {
314- let co = H(cm, ck)
315- let cp = H(cn, cl)
313+ let co = I(cm, ck)
314+ let cp = I(cn, cl)
316315 bU(cp, co)
317316 }
318317
319318
320319 func cq (cm,cn,cr) = {
321320 let cs = bt
322321 let ct = bu
323322 let cu = cj(cs, ct, cm, cn)
324- let bW = H(cm, cs)
325- let bV = H(cn, ct)
326- let cv = H(cr, a)
323+ let bW = I(cm, cs)
324+ let bV = I(cn, ct)
325+ let cv = I(cr, b)
327326 let cw = bU(bW, cv)
328327 let cx = bU(bV, cv)
329328 [cu, cw, cx]
330329 }
331330
332331
333332 func cy (cm,cn,cr) = {
334333 let cz = cq(cm, cn, cr)
335-[L(cz[0], a), L(cz[1], a), L(cz[2], a)]
334+[M(cz[0], b), M(cz[1], b), M(cz[2], b)]
336335 }
337336
338337
339338 func cA (cB,ar) = {
340339 let cC = if ((ar == 0))
341340 then 0
342- else fraction(cB, ar, a)
341+ else fraction(cB, ar, b)
343342 $Tuple2((cB - cC), cC)
344343 }
345344
346345
347346 func cD (cE) = {
348347 let cF = cE[0]
349348 let cG = cE[1]
350349 let cH = (cF + cG)
351- if ((cH == e))
352- then e
350+ if ((cH == f))
351+ then f
353352 else {
354353 let cI = parseIntValue(aZ)
355354 let cJ = (cI * 2)
356- let cz = fraction(cF, cG, f)
357- let cK = fraction(cz, i, f)
358- let cL = fraction(toBigInt(cJ), cH, f)
355+ let cz = fraction(cF, cG, g)
356+ let cK = fraction(cz, j, g)
357+ let cL = fraction(toBigInt(cJ), cH, g)
359358 let cM = toBigInt((cJ - 1))
360359 func cN (cO) = {
361- let cP = fraction(cO, cO, f)
362- let cQ = fraction(cP, cO, f)
363- let cR = fraction(cQ, f, cK)
364- fraction((cL + fraction(cR, g, f)), cO, (fraction(cM, cO, f) + fraction(h, cR, f)))
360+ let cP = fraction(cO, cO, g)
361+ let cQ = fraction(cP, cO, g)
362+ let cR = fraction(cQ, g, cK)
363+ fraction((cL + fraction(cR, h, g)), cO, (fraction(cM, cO, g) + fraction(i, cR, g)))
365364 }
366365
367366 func cS (cT,cU) = if (cT._2)
368367 then cT
369368 else {
370369 let cO = cT._1
371370 let cV = cN(cO)
372371 let cW = (cV - value(cO))
373- let cX = if ((e > cW))
372+ let cX = if ((f > cW))
374373 then -(cW)
375374 else cW
376- if ((f >= cX))
375+ if ((g >= cX))
377376 then $Tuple2(cV, true)
378377 else $Tuple2(cV, false)
379378 }
380379
381380 let cY = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
382381 let cZ = {
383382 let da = cY
384383 let db = size(da)
385384 let dc = $Tuple2(cH, false)
386385 func dd (de,df) = if ((df >= db))
387386 then de
388387 else cS(de, da[df])
389388
390389 func dg (de,df) = if ((df >= db))
391390 then de
392391 else throw("List size exceeds 17")
393392
394393 dg(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17)
395394 }
396395 let cO = cZ._1
397396 let dh = cZ._2
398397 if (dh)
399398 then cO
400399 else throw(("D calculation error, D = " + toString(cO)))
401400 }
402401 }
403402
404403
405404 func di (dj,dk,dl,dm) = {
406405 let dn = bq
407406 let do = toBase58String(value(br))
408407 let dp = toBase58String(value(bs))
409408 let dq = bt
410409 let dr = bu
411410 let ds = toString(bp)
412411 let dt = valueOrErrorMessage(assetInfo(dn), "Wrong LP id").quantity
413412 if ((toBase58String(dn) != dk))
414413 then throw("Wrong pmt asset")
415414 else {
416415 let du = bS(do)
417- let dv = H(du, dq)
416+ let dv = I(du, dq)
418417 let dw = bS(dp)
419- let dx = H(dw, dr)
418+ let dx = I(dw, dr)
420419 let dy = bU(dx, dv)
421- let dz = L(dy, a)
422- let dA = H(dl, a)
423- let dB = H(dt, a)
420+ let dz = M(dy, b)
421+ let dA = I(dl, b)
422+ let dB = I(dt, b)
424423 let dC = fraction(dv, dA, dB)
425424 let dD = fraction(dx, dA, dB)
426- let dE = O(dC, dq, FLOOR)
427- let dF = O(dD, dr, FLOOR)
425+ let dE = P(dC, dq, FLOOR)
426+ let dF = P(dD, dr, FLOOR)
428427 let dG = if ((dj == ""))
429428 then nil
430429 else [ScriptTransfer(dm, dE, if ((do == "WAVES"))
431430 then unit
432431 else fromBase58String(do)), ScriptTransfer(dm, dF, if ((dp == "WAVES"))
433432 then unit
434- else fromBase58String(dp)), StringEntry(ai(toString(dm), dj), bO(dE, dF, dl, dz, height, lastBlock.timestamp)), IntegerEntry(ab(), dz), IntegerEntry(ac(height, lastBlock.timestamp), dz)]
433+ else fromBase58String(dp)), StringEntry(aj(toString(dm), dj), bO(dE, dF, dl, dz, height, lastBlock.timestamp)), IntegerEntry(ac(), dz), IntegerEntry(ad(height, lastBlock.timestamp), dz)]
435434 $Tuple10(dE, dF, do, dp, du, dw, dt, dy, ds, dG)
436435 }
437436 }
438437
439438
440439 func dH (dj,cb,dI,dJ,dK,dL,dm,dM,dN,dO,dP,dQ,dR) = {
441440 let dn = bq
442441 let dS = toBase58String(value(br))
443442 let dT = toBase58String(value(bs))
444443 let dU = bv
445444 let dV = bw
446445 let dW = bt
447446 let dX = bu
448447 let ds = toString(bp)
449448 let dY = valueOrErrorMessage(assetInfo(dn), "Wr lp as").quantity
450449 let du = if (dM)
451450 then bS(dS)
452451 else if (if (dO)
453452 then (dR == dS)
454453 else false)
455454 then (bS(dS) - dQ)
456455 else if (dO)
457456 then bS(dS)
458457 else (bS(dS) - dI)
459458 let dw = if (dM)
460459 then bS(dT)
461460 else if (if (dO)
462461 then (dR == dT)
463462 else false)
464463 then (bS(dT) - dQ)
465464 else if (dO)
466465 then bS(dT)
467466 else (bS(dT) - dK)
468- let dZ = H(dI, dW)
469- let ea = H(dK, dX)
467+ let dZ = I(dI, dW)
468+ let ea = I(dK, dX)
470469 let eb = bU(ea, dZ)
471- let dv = H(du, dW)
472- let dx = H(dw, dX)
470+ let dv = I(du, dW)
471+ let dx = I(dw, dX)
473472 let cg = cD([dv, dx])
474473 let ec = if ((dY == 0))
475474 then {
476475 let cf = cD([(dv + dZ), (dx + ea)])
477476 let ed = if ((cf > cg))
478477 then true
479478 else throw("D1 should be greater than D0")
480479 if ((ed == ed))
481480 then {
482- let dy = d
483- let ee = d
481+ let dy = e
482+ let ee = e
484483 let cv = cf
485- $Tuple5(L(cv, a), L(dZ, dW), L(ea, dX), bU((dx + ea), (dv + dZ)), ee)
484+ $Tuple5(M(cv, b), M(dZ, dW), M(ea, dX), bU((dx + ea), (dv + dZ)), ee)
486485 }
487486 else throw("Strict value is not equal to itself.")
488487 }
489488 else {
490489 let dy = bU(dx, dv)
491- let ef = fraction(W((dy - eb)), c, dy)
492- let ee = H(cb, a)
490+ let ef = fraction(X((dy - eb)), d, dy)
491+ let ee = I(cb, b)
493492 if (if (if (dP)
494- then (dy != d)
493+ then (dy != e)
495494 else false)
496495 then (ef > ee)
497496 else false)
498497 then throw(((("Price slippage " + toString(ef)) + " > ") + toString(ee)))
499498 else {
500- let eg = H(dY, a)
501- let eh = fraction(dZ, bX(dx, dv, CEILING), c, CEILING)
502- let ei = fraction(ea, c, bX(dx, dv, FLOOR), CEILING)
499+ let eg = I(dY, b)
500+ let eh = fraction(dZ, bX(dx, dv, CEILING), d, CEILING)
501+ let ei = fraction(ea, d, bX(dx, dv, FLOOR), CEILING)
503502 let ej = if ((eh > ea))
504503 then $Tuple2(ei, ea)
505504 else $Tuple2(dZ, eh)
506505 let ek = ej._1
507506 let el = ej._2
508507 let cf = cD([(dv + ek), (dx + el)])
509508 let ed = if ((cf > cg))
510509 then true
511510 else throw("D1 should be greater than D0")
512511 if ((ed == ed))
513512 then {
514513 let cv = fraction(eg, (cf - cg), cg)
515- $Tuple5(O(cv, a, FLOOR), O(ek, dW, CEILING), O(el, dX, CEILING), dy, ee)
514+ $Tuple5(P(cv, b, FLOOR), P(ek, dW, CEILING), P(el, dX, CEILING), dy, ee)
516515 }
517516 else throw("Strict value is not equal to itself.")
518517 }
519518 }
520519 let em = ec._1
521520 let en = ec._2
522521 let eo = ec._3
523- let dz = L(ec._4, a)
524- let ep = L(ec._5, a)
522+ let dz = M(ec._4, b)
523+ let ep = M(ec._5, b)
525524 if ((0 >= em))
526525 then throw("LP <= 0")
527526 else {
528527 let eq = if (!(dN))
529528 then 0
530529 else em
531530 let er = (dI - en)
532531 let es = (dK - eo)
533532 let et = if (if (dO)
534533 then (dR == dS)
535534 else false)
536535 then $Tuple2(dQ, 0)
537536 else if (if (dO)
538537 then (dR == dT)
539538 else false)
540539 then $Tuple2(0, dQ)
541540 else $Tuple2(en, eo)
542541 let eu = et._1
543542 let ev = et._2
544- let ew = [IntegerEntry(ab(), dz), IntegerEntry(ac(height, lastBlock.timestamp), dz), StringEntry(af(dm, dj), bD(eu, ev, eq, dz, cb, ep, height, lastBlock.timestamp, er, es))]
543+ let ew = [IntegerEntry(ac(), dz), IntegerEntry(ad(height, lastBlock.timestamp), dz), StringEntry(ag(dm, dj), bD(eu, ev, eq, dz, cb, ep, height, lastBlock.timestamp, er, es))]
545544 $Tuple13(em, eq, dz, du, dw, dY, dn, ds, ew, er, es, dJ, dL)
546545 }
547546 }
548547
549548
550549 func ex (cE,cU,ey) = {
551- let ez = g
550+ let ez = h
552551 let eA = cE[if ((cU == 0))
553552 then 1
554553 else 0]
555- let eB = parseBigIntValue(l)
554+ let eB = parseBigIntValue(m)
556555 let cI = (parseBigIntValue(aZ) * eB)
557556 let cH = eA
558557 let cJ = (cI * ez)
559558 let eC = (((((ey * ey) / (eA * ez)) * ey) * eB) / (cJ * ez))
560559 let eD = ((cH + ((ey * eB) / cJ)) - ey)
561560 func cS (cT,eE) = {
562561 let eF = cT
563562 let eG = eF._1
564563 let dh = eF._2
565564 if ((dh != unit))
566565 then cT
567566 else {
568- let eH = (((eG * eG) + eC) / ((g * eG) + eD))
569- let eI = X((eH - value(eG)))
570- if ((f >= eI))
567+ let eH = (((eG * eG) + eC) / ((h * eG) + eD))
568+ let eI = Y((eH - value(eG)))
569+ if ((g >= eI))
571570 then $Tuple2(eH, eE)
572571 else $Tuple2(eH, unit)
573572 }
574573 }
575574
576575 let cY = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
577576 let eJ = {
578577 let da = cY
579578 let db = size(da)
580579 let dc = $Tuple2(ey, unit)
581580 func dd (de,df) = if ((df >= db))
582581 then de
583582 else cS(de, da[df])
584583
585584 func dg (de,df) = if ((df >= db))
586585 then de
587586 else throw("List size exceeds 15")
588587
589588 dg(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
590589 }
591590 let eG = eJ._1
592591 let dh = eJ._2
593592 if ((dh != unit))
594593 then eG
595594 else throw(("Y calculation error, Y = " + toString(eG)))
596595 }
597596
598597
599598 func eK (eL,eM,eN) = {
600- let eO = fraction(cD([K(eL, toBigInt(bt)), K(eM, toBigInt(bu))]), c, eN)
601- if ((eN == e))
602- then e
599+ let eO = fraction(cD([L(eL, toBigInt(bt)), L(eM, toBigInt(bu))]), d, eN)
600+ if ((eN == f))
601+ then f
603602 else eO
604603 }
605604
606605
607606 func eP (eQ,eR,eS) = {
608607 let eT = (toBigInt(bS(bj(br))) - eQ)
609608 let eU = (toBigInt(bS(bj(bs))) - eR)
610609 let eV = (toBigInt(value(assetInfo(bq)).quantity) - eS)
611610 let eW = eK(eT, eU, eV)
612611 eW
613612 }
614613
615614
616615 func eX (eY,eZ,eS) = {
617616 let eT = (bS(bj(br)) + eY)
618617 let eU = (bS(bj(bs)) + eZ)
619618 let eV = (value(assetInfo(bq)).quantity + eS)
620619 let eO = eK(toBigInt(eT), toBigInt(eU), toBigInt(eV))
621620 let fa = [IntegerEntry(at, height), StringEntry(as, toString(eO))]
622621 $Tuple2(fa, eO)
623622 }
624623
625624
626625 func fb (fc,eO) = if ((eO >= fc))
627626 then true
628627 else aS("updated DLp lower than current DLp")
629628
630629
631630 func fd (fe) = {
632631 let eT = bS(bj(br))
633632 let eU = bS(bj(bs))
634633 let ff = fe.amount
635- let fg = fraction(fe.amount, fe.price, a, FLOOR)
634+ let fg = fraction(fe.amount, fe.price, b, FLOOR)
636635 let fh = if ((fe.orderType == Buy))
637636 then $Tuple2(ff, -(fg))
638637 else $Tuple2(-(ff), fg)
639638 let eY = fh._1
640639 let eZ = fh._2
641640 if (if (if (ba())
642641 then true
643- else (bp == r))
642+ else (bp == s))
644643 then true
645- else (bp == s))
644+ else (bp == t))
646645 then throw("Admin blocked")
647646 else if (if ((fe.assetPair.amountAsset != br))
648647 then true
649648 else (fe.assetPair.priceAsset != bs))
650649 then throw("Wr assets")
651650 else {
652651 let fi = parseBigIntValue(valueOrElse(getString(this, as), "0"))
653652 let fj = eX(eY, eZ, 0)
654653 let fk = fj._1
655654 let fl = fj._2
656655 let fm = (fl >= fi)
657656 let fn = makeString(["dLp=", toString(fi), " dLpNew=", toString(fl), " amountAssetBalance=", toString(eT), " priceAssetBalance=", toString(eU), " amountAssetBalanceDelta=", toString(eY), " priceAssetBalanceDelta=", toString(eZ), " height=", toString(height)], "")
658657 $Tuple2(fm, fn)
659658 }
660659 }
661660
662661
663662 func fo (cU) = if ((size(cU.payments) != 1))
664663 then throw("1 pmnt exp")
665664 else {
666665 let fp = value(cU.payments[0])
667666 let dk = value(fp.assetId)
668667 let dQ = fp.amount
669668 let ec = di(toBase58String(cU.transactionId), toBase58String(dk), dQ, cU.caller)
670669 let dE = ec._1
671670 let dF = ec._2
672671 let ds = parseIntValue(ec._9)
673672 let dG = ec._10
674673 if (if (ba())
675674 then true
676- else (ds == s))
675+ else (ds == t))
677676 then throw(("Admin blocked: " + toString(ds)))
678677 else $Tuple5(dE, dF, dQ, dk, dG)
679678 }
680679
681680
682-func fq (fr,ah,fs,ft,cb,dN,dO,dP,dQ,dR) = {
683- let ec = dH(ah, cb, value(fs).amount, value(fs).assetId, value(ft).amount, value(ft).assetId, fr, (ah == ""), dN, dO, dP, dQ, dR)
681+func fq (fr,ai,fs,ft,cb,dN,dO,dP,dQ,dR) = {
682+ let ec = dH(ai, cb, value(fs).amount, value(fs).assetId, value(ft).amount, value(ft).assetId, fr, (ai == ""), dN, dO, dP, dQ, dR)
684683 let ds = parseIntValue(ec._8)
685684 if (if (if (ba())
686685 then true
687- else (ds == q))
686+ else (ds == r))
688687 then true
689- else (ds == s))
688+ else (ds == t))
690689 then throw(("Blocked:" + toString(ds)))
691690 else ec
692691 }
693692
694693
695-func fu (fv,dk,dm,ah,fw) = {
694+func fu (fv,dk,dm,ai,fw) = {
696695 let do = toBase58String(value(br))
697696 let dp = toBase58String(value(bs))
698697 let dn = bq
699698 let dW = bt
700699 let dX = bu
701700 let eV = toBigInt(valueOrErrorMessage(assetInfo(dn), "invalid lp asset").quantity)
702- let fx = if ((eV > e))
701+ let fx = if ((eV > f))
703702 then true
704703 else throw("initial deposit requires all coins")
705704 if ((fx == fx))
706705 then {
707706 let du = bS(do)
708707 let dw = bS(dp)
709- let fy = if ((ah == ""))
708+ let fy = if ((ai == ""))
710709 then $Tuple2(du, dw)
711710 else if ((dk == do))
712711 then if ((fv > du))
713712 then throw("invalid payment amount")
714713 else $Tuple2((du - fv), dw)
715714 else if ((dk == dp))
716715 then if ((fv > dw))
717716 then throw("invalid payment amount")
718717 else $Tuple2(du, (dw - fv))
719718 else throw("wrong pmtAssetId")
720719 let fz = fy._1
721720 let fA = fy._2
722721 let fB = if ((dk == do))
723722 then $Tuple2(fv, 0)
724723 else if ((dk == dp))
725724 then $Tuple2(0, fv)
726725 else throw("invalid payment")
727726 let fC = fB._1
728727 let fD = fB._2
729728 let fE = if (fw)
730729 then $Tuple3(cA(fC, aW)._1, cA(fD, aW)._1, cA(fv, aW)._2)
731730 else $Tuple3(fC, fD, 0)
732731 let fF = fE._1
733732 let fG = fE._2
734733 let cC = fE._3
735734 let fH = (fz + fF)
736735 let fI = (fA + fG)
737- let cg = cD([H(fz, bt), H(fA, bu)])
738- let cf = cD([H(fH, bt), H(fI, bu)])
736+ let cg = cD([I(fz, bt), I(fA, bu)])
737+ let cf = cD([I(fH, bt), I(fI, bu)])
739738 let ed = if ((cf > cg))
740739 then true
741740 else throw()
742741 if ((ed == ed))
743742 then {
744743 let fJ = fraction(eV, (cf - cg), cg, FLOOR)
745- let dz = L(bU(H(fI, dX), H(fH, dW)), a)
746- let ew = [IntegerEntry(ab(), dz), IntegerEntry(ac(height, lastBlock.timestamp), dz), StringEntry(af(dm, ah), bD(fC, fD, toInt(fJ), dz, 0, 0, height, lastBlock.timestamp, 0, 0))]
747- let fK = fraction(fA, a, fz)
748- let fL = fraction(fv, a, (fK + a))
744+ let dz = M(bU(I(fI, dX), I(fH, dW)), b)
745+ let ew = [IntegerEntry(ac(), dz), IntegerEntry(ad(height, lastBlock.timestamp), dz), StringEntry(ag(dm, ai), bD(fC, fD, toInt(fJ), dz, 0, 0, height, lastBlock.timestamp, 0, 0))]
746+ let fK = fraction(fA, b, fz)
747+ let fL = fraction(fv, b, (fK + b))
749748 let fM = (fv - fL)
750749 let fN = fraction(eV, toBigInt(fM), toBigInt(fA))
751- let fO = toInt(fraction((fJ - fN), b, fN))
750+ let fO = toInt(fraction((fJ - fN), c, fN))
752751 $Tuple4(toInt(fJ), ew, cC, fO)
753752 }
754753 else throw("Strict value is not equal to itself.")
755754 }
756755 else throw("Strict value is not equal to itself.")
757756 }
758757
759758
760759 func fP (fQ,fR,fS,fr,fT,fU) = {
761760 let dn = toBase58String(value(bq))
762761 let do = toBase58String(value(br))
763762 let dp = toBase58String(value(bs))
764763 let fV = bt
765764 let fW = bu
766765 let fX = bp
767766 let dm = if ((fr == bC))
768767 then fT
769768 else fr
770769 let fp = value(fS[0])
771770 let dk = value(fp.assetId)
772771 let dQ = fp.amount
773- let eW = eP(e, e, e)
772+ let eW = eP(f, f, f)
774773 if ((eW == eW))
775774 then {
776775 let dj = toBase58String(fU)
777776 if ((dn != toBase58String(dk)))
778777 then throw("Wrong LP")
779778 else {
780779 let du = bS(do)
781780 let dw = bS(dp)
782781 let fY = {
783782 let aX = invoke(this, "getOneTknV2READONLY", [fQ, dQ], nil)
784783 if ($isInstanceOf(aX, "(Int, Int)"))
785784 then aX
786785 else throw(($getType(aX) + " couldn't be cast to (Int, Int)"))
787786 }
788787 if ((fY == fY))
789788 then {
790789 let cC = fY._2
791790 let fZ = fY._1
792791 let ga = if (if ((fR > 0))
793792 then (fR > fZ)
794793 else false)
795794 then aS(makeString(["amount to receive is less than ", toString(fR)], ""))
796795 else fZ
797796 let gb = if ((fQ == do))
798797 then $Tuple4(ga, 0, ((du - ga) - cC), dw)
799798 else if ((fQ == dp))
800799 then $Tuple4(0, ga, du, ((dw - ga) - cC))
801800 else throw("invalid out asset id")
802801 let gc = gb._1
803802 let gd = gb._2
804803 let fH = gb._3
805804 let fI = gb._4
806- let ge = bU(H(fI, fW), H(fH, fV))
807- let gf = L(ge, a)
805+ let ge = bU(I(fI, fW), I(fH, fV))
806+ let gf = M(ge, b)
808807 let gg = if ((fQ == "WAVES"))
809808 then unit
810809 else fromBase58String(fQ)
811810 let gh = if ((cC > 0))
812811 then [ScriptTransfer(bc, cC, gg)]
813812 else nil
814- let dG = ([ScriptTransfer(dm, ga, gg), StringEntry(ai(toString(dm), dj), bO(gc, gd, dQ, gf, height, lastBlock.timestamp)), IntegerEntry(ab(), gf), IntegerEntry(ac(height, lastBlock.timestamp), gf)] ++ gh)
813+ let dG = ([ScriptTransfer(dm, ga, gg), StringEntry(aj(toString(dm), dj), bO(gc, gd, dQ, gf, height, lastBlock.timestamp)), IntegerEntry(ac(), gf), IntegerEntry(ad(height, lastBlock.timestamp), gf)] ++ gh)
815814 if ((dG == dG))
816815 then {
817816 let gi = invoke(aV, "burn", [dQ], [AttachedPayment(dk, dQ)])
818817 if ((gi == gi))
819818 then {
820819 let gj = {
821820 let gk = if ((this == bc))
822821 then 0
823822 else cC
824823 let gl = if ((bh(fQ) == br))
825824 then true
826825 else false
827826 if (gl)
828827 then $Tuple2(-((fZ + gk)), 0)
829828 else $Tuple2(0, -((fZ + gk)))
830829 }
831830 let eY = gj._1
832831 let eZ = gj._2
833832 let gm = eX(eY, eZ, 0)
834833 let gn = gm._1
835834 let eO = gm._2
836835 let go = fb(eW, eO)
837836 if ((go == go))
838837 then $Tuple2((dG ++ gn), ga)
839838 else throw("Strict value is not equal to itself.")
840839 }
841840 else throw("Strict value is not equal to itself.")
842841 }
843842 else throw("Strict value is not equal to itself.")
844843 }
845844 else throw("Strict value is not equal to itself.")
846845 }
847846 }
848847 else throw("Strict value is not equal to itself.")
849848 }
850849
851850
852851 func gp () = {
853- let gq = getString(Z())
852+ let gq = getString(aa())
854853 if ($isInstanceOf(gq, "String"))
855854 then {
856855 let cH = gq
857856 fromBase58String(cH)
858857 }
859858 else if ($isInstanceOf(gq, "Unit"))
860859 then unit
861860 else throw("Match error")
862861 }
863862
864863
865864 func gr () = {
866- let gq = getString(aa())
865+ let gq = getString(ab())
867866 if ($isInstanceOf(gq, "String"))
868867 then {
869868 let cH = gq
870869 fromBase58String(cH)
871870 }
872871 else if ($isInstanceOf(gq, "Unit"))
873872 then unit
874873 else throw("Match error")
875874 }
876875
877876
878877 let gs = throw("Permission denied")
879878
880879 func gt (cU) = {
881880 let gq = gp()
882881 if ($isInstanceOf(gq, "ByteVector"))
883882 then {
884883 let gu = gq
885884 (cU.callerPublicKey == gu)
886885 }
887886 else if ($isInstanceOf(gq, "Unit"))
888887 then (cU.caller == this)
889888 else throw("Match error")
890889 }
891890
892891
893892 func gv (cU) = {
894893 let gq = gp()
895894 if ($isInstanceOf(gq, "ByteVector"))
896895 then {
897896 let gu = gq
898897 if ((cU.callerPublicKey == gu))
899898 then true
900899 else gs
901900 }
902901 else if ($isInstanceOf(gq, "Unit"))
903902 then if ((cU.caller == this))
904903 then true
905904 else gs
906905 else throw("Match error")
907906 }
908907
909908
910909 func gw (gx,ey,gy) = {
911910 let bl = bd()
912- let do = bl[w]
913- let dp = bl[x]
914- let ez = g
915- let eB = parseBigIntValue(l)
911+ let do = bl[x]
912+ let dp = bl[y]
913+ let ez = h
914+ let eB = parseBigIntValue(m)
916915 let cI = (parseBigIntValue(aZ) * eB)
917916 let cE = if ((gx == false))
918917 then [(toBigInt(bS(do)) + gy), toBigInt(bS(dp))]
919918 else [(toBigInt(bS(dp)) + gy), toBigInt(bS(do))]
920919 let eA = cE[0]
921920 let cH = eA
922921 let cJ = (cI * ez)
923922 let eC = (((((ey * ey) / (eA * ez)) * ey) * eB) / (cJ * ez))
924923 let eD = ((cH + ((ey * eB) / cJ)) - ey)
925924 func cS (cT,eE) = {
926925 let gz = cT
927926 let eG = gz._1
928927 let dh = gz._2
929928 if ((dh != unit))
930929 then cT
931930 else {
932- let eH = (((eG * eG) + eC) / ((g * eG) + eD))
933- let eI = X((eH - value(eG)))
934- if ((f >= eI))
931+ let eH = (((eG * eG) + eC) / ((h * eG) + eD))
932+ let eI = Y((eH - value(eG)))
933+ if ((g >= eI))
935934 then $Tuple2(eH, eE)
936935 else $Tuple2(eH, unit)
937936 }
938937 }
939938
940939 let cY = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
941940 let gA = {
942941 let da = cY
943942 let db = size(da)
944943 let dc = $Tuple2(ey, unit)
945944 func dd (de,df) = if ((df >= db))
946945 then de
947946 else cS(de, da[df])
948947
949948 func dg (de,df) = if ((df >= db))
950949 then de
951950 else throw("List size exceeds 15")
952951
953952 dg(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dd(dc, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
954953 }
955954 let eG = gA._1
956955 let dh = gA._2
957956 if ((dh != unit))
958957 then eG
959958 else throw(("Y calculation error, Y = " + toString(eG)))
960959 }
961960
962961
963962 func gB () = valueOrElse(getBoolean(aV, aH(toString(this))), false)
964963
965964
966965 @Callable(cU)
967966 func calculateAmountOutForSwapREADONLY (gC,gx,gD) = {
968967 let gE = if ((gx == false))
969968 then {
970- let gF = aO(this, ak())
971- let gy = (toBigInt(bS(aO(this, aj()))) + toBigInt(gC))
969+ let gF = aO(this, al())
970+ let gy = (toBigInt(bS(aO(this, ak()))) + toBigInt(gC))
972971 $Tuple2(gF, gy)
973972 }
974973 else {
975- let gF = aO(this, aj())
976- let gy = (toBigInt(bS(aO(this, ak()))) + toBigInt(gC))
974+ let gF = aO(this, ak())
975+ let gy = (toBigInt(bS(aO(this, al()))) + toBigInt(gC))
977976 $Tuple2(gF, gy)
978977 }
979978 let gF = gE._1
980979 let gy = gE._2
981980 let bl = bd()
982- let do = bl[w]
983- let dp = bl[x]
981+ let do = bl[x]
982+ let dp = bl[y]
984983 let cE = [toBigInt(bS(do)), toBigInt(bS(dp))]
985984 let ey = cD(cE)
986985 let eG = gw(gx, ey, toBigInt(gC))
987986 let gG = ((toBigInt(bS(gF)) - eG) - toBigInt(1))
988987 let gH = max([0, toInt(gG)])
989988 let gI = if ((gx == false))
990989 then [((toBigInt(bS(do)) + toBigInt(gC)) + toBigInt(gD)), (toBigInt(bS(dp)) - gG)]
991990 else [(toBigInt(bS(do)) - gG), ((toBigInt(bS(dp)) + toBigInt(gC)) + toBigInt(gD))]
992991 let gJ = cD(gI)
993992 let ed = if ((gJ >= ey))
994993 then true
995994 else throw(makeString(["new D is fewer error", toString(ey), toString(gJ)], "__"))
996995 if ((ed == ed))
997996 then $Tuple2(nil, gH)
998997 else throw("Strict value is not equal to itself.")
999998 }
1000999
10011000
10021001
10031002 @Callable(cU)
10041003 func calculateAmountOutForSwapAndSendTokens (gC,gx,gK,gL,gD) = {
10051004 let gM = {
10061005 let aX = invoke(aV, "getSwapContractREADONLY", nil, nil)
10071006 if ($isInstanceOf(aX, "String"))
10081007 then aX
10091008 else throw(($getType(aX) + " couldn't be cast to String"))
10101009 }
10111010 let gN = [if ((value(cU.payments[0]).amount >= gC))
10121011 then true
10131012 else aS("Wrong amount"), if ((cU.caller == addressFromStringValue(gM)))
10141013 then true
10151014 else aS("Permission denied")]
10161015 if ((gN == gN))
10171016 then {
10181017 let fp = value(cU.payments[0])
10191018 let gO = bj(fp.assetId)
10201019 let gP = if ((gx == false))
10211020 then {
1022- let gF = aO(this, ak())
1021+ let gF = aO(this, al())
10231022 let gy = (bS(gO) - value(cU.payments[0]).amount)
10241023 $Tuple2(gF, gy)
10251024 }
10261025 else {
1027- let gF = aO(this, aj())
1026+ let gF = aO(this, ak())
10281027 let gy = (bS(gO) - value(cU.payments[0]).amount)
10291028 $Tuple2(gF, gy)
10301029 }
10311030 let gF = gP._1
10321031 let gy = gP._2
10331032 let bl = bd()
1034- let do = bl[w]
1035- let dp = bl[x]
1033+ let do = bl[x]
1034+ let dp = bl[y]
10361035 let cE = if ((gx == false))
10371036 then [(toBigInt(bS(do)) - toBigInt(value(cU.payments[0]).amount)), toBigInt(bS(dp))]
10381037 else [toBigInt(bS(do)), (toBigInt(bS(dp)) - toBigInt(value(cU.payments[0]).amount))]
10391038 let ey = cD(cE)
10401039 let eG = gw(gx, ey, toBigInt(0))
10411040 let gG = ((toBigInt(bS(gF)) - eG) - toBigInt(1))
10421041 let gH = max([0, toInt(gG)])
10431042 let gQ = if ((gH >= gK))
10441043 then true
10451044 else throw("Exchange result is fewer coins than expected")
10461045 if ((gQ == gQ))
10471046 then {
10481047 let gI = if ((gx == false))
10491048 then [(toBigInt(bS(do)) + toBigInt(gD)), (toBigInt(bS(dp)) - gG)]
10501049 else [(toBigInt(bS(do)) - gG), (toBigInt(bS(dp)) + toBigInt(gD))]
10511050 let gJ = cD(gI)
10521051 let ed = if ((gJ >= ey))
10531052 then true
10541053 else throw("new D is fewer error")
10551054 if ((ed == ed))
10561055 then $Tuple2([ScriptTransfer(addressFromStringValue(gL), gH, bh(gF))], gH)
10571056 else throw("Strict value is not equal to itself.")
10581057 }
10591058 else throw("Strict value is not equal to itself.")
10601059 }
10611060 else throw("Strict value is not equal to itself.")
10621061 }
10631062
10641063
10651064
10661065 @Callable(cU)
1067-func constructor (Y) = {
1066+func constructor (Z) = {
10681067 let eC = gv(cU)
10691068 if ((eC == eC))
1070- then [StringEntry(Y(), Y)]
1069+ then [StringEntry(Z(), Z)]
10711070 else throw("Strict value is not equal to itself.")
10721071 }
10731072
10741073
10751074
10761075 @Callable(cU)
10771076 func setManager (gR) = {
10781077 let eC = gv(cU)
10791078 if ((eC == eC))
10801079 then {
10811080 let gS = fromBase58String(gR)
10821081 if ((gS == gS))
1083- then [StringEntry(aa(), gR)]
1082+ then [StringEntry(ab(), gR)]
10841083 else throw("Strict value is not equal to itself.")
10851084 }
10861085 else throw("Strict value is not equal to itself.")
10871086 }
10881087
10891088
10901089
10911090 @Callable(cU)
10921091 func confirmManager () = {
10931092 let cz = gr()
10941093 let gT = if (isDefined(cz))
10951094 then true
10961095 else throw("No pending manager")
10971096 if ((gT == gT))
10981097 then {
10991098 let gU = if ((cU.callerPublicKey == value(cz)))
11001099 then true
11011100 else throw("You are not pending manager")
11021101 if ((gU == gU))
1103- then [StringEntry(Z(), toBase58String(value(cz))), DeleteEntry(aa())]
1102+ then [StringEntry(aa(), toBase58String(value(cz))), DeleteEntry(ab())]
11041103 else throw("Strict value is not equal to itself.")
11051104 }
11061105 else throw("Strict value is not equal to itself.")
11071106 }
11081107
11091108
11101109
11111110 @Callable(cU)
11121111 func put (gV,gW) = {
11131112 let gX = bx()
1114- let gY = valueOrErrorMessage(addressFromString(gX[C]), "Wr st addr")
1115- let gZ = valueOrErrorMessage(addressFromString(gX[E]), "Wr sl addr")
1113+ let gY = valueOrErrorMessage(addressFromString(gX[D]), "Wr st addr")
1114+ let gZ = valueOrErrorMessage(addressFromString(gX[F]), "Wr sl addr")
11161115 if ((0 > gV))
11171116 then throw("Wrong slippage")
11181117 else if ((size(cU.payments) != 2))
11191118 then throw("2 pmnts expd")
11201119 else {
11211120 let ha = toBigInt(value(cU.payments[0]).amount)
11221121 let hb = toBigInt(value(cU.payments[1]).amount)
11231122 let eT = (toBigInt(bS(bj(br))) - ha)
11241123 if ((eT == eT))
11251124 then {
11261125 let eU = (toBigInt(bS(bj(bs))) - hb)
11271126 if ((eU == eU))
11281127 then {
11291128 let eV = toBigInt(value(assetInfo(bq)).quantity)
11301129 if ((eV == eV))
11311130 then {
11321131 let eW = eP(ha, hb, toBigInt(0))
11331132 if ((eW == eW))
11341133 then {
11351134 let hc = fq(toString(cU.caller), toBase58String(cU.transactionId), AttachedPayment(value(cU.payments[0]).assetId, value(cU.payments[0]).amount), cU.payments[1], gV, true, false, true, 0, "")
11361135 let eq = hc._2
11371136 let hd = hc._7
11381137 let dG = hc._9
11391138 let er = hc._10
11401139 let es = hc._11
11411140 let do = hc._12
11421141 let dp = hc._13
11431142 let ec = invoke(aV, "emit", [eq], nil)
11441143 if ((ec == ec))
11451144 then {
11461145 let he = {
11471146 let gq = ec
11481147 if ($isInstanceOf(gq, "Address"))
11491148 then {
11501149 let hf = gq
11511150 invoke(hf, "emit", [eq], nil)
11521151 }
11531152 else unit
11541153 }
11551154 if ((he == he))
11561155 then {
11571156 let hg = if ((er > 0))
11581157 then invoke(gZ, "put", nil, [AttachedPayment(do, er)])
11591158 else nil
11601159 if ((hg == hg))
11611160 then {
11621161 let hh = if ((es > 0))
11631162 then invoke(gZ, "put", nil, [AttachedPayment(dp, es)])
11641163 else nil
11651164 if ((hh == hh))
11661165 then {
11671166 let hi = if (gW)
11681167 then {
11691168 let hj = invoke(gY, "stake", nil, [AttachedPayment(hd, eq)])
11701169 if ((hj == hj))
11711170 then nil
11721171 else throw("Strict value is not equal to itself.")
11731172 }
11741173 else [ScriptTransfer(cU.caller, eq, hd)]
11751174 let hk = eX(0, 0, 0)
11761175 let gn = hk._1
11771176 let eO = hk._2
11781177 let hl = if ((eO >= eW))
11791178 then true
11801179 else aS(makeString(["updated DLp lower than current DLp", toString(eT), toString(eU), toString(eV), toString(eW), toString(eO), toString(er), toString(es)], " "))
11811180 if ((hl == hl))
11821181 then {
11831182 let hm = value(assetInfo(bq)).quantity
11841183 if ((hm == hm))
11851184 then ((dG ++ hi) ++ gn)
11861185 else throw("Strict value is not equal to itself.")
11871186 }
11881187 else throw("Strict value is not equal to itself.")
11891188 }
11901189 else throw("Strict value is not equal to itself.")
11911190 }
11921191 else throw("Strict value is not equal to itself.")
11931192 }
11941193 else throw("Strict value is not equal to itself.")
11951194 }
11961195 else throw("Strict value is not equal to itself.")
11971196 }
11981197 else throw("Strict value is not equal to itself.")
11991198 }
12001199 else throw("Strict value is not equal to itself.")
12011200 }
12021201 else throw("Strict value is not equal to itself.")
12031202 }
12041203 else throw("Strict value is not equal to itself.")
12051204 }
12061205 }
12071206
12081207
12091208
12101209 @Callable(cU)
12111210 func putOneTknV2 (fR,gW) = {
12121211 let hn = {
12131212 let aX = invoke(aV, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
12141213 if ($isInstanceOf(aX, "Boolean"))
12151214 then aX
12161215 else throw(($getType(aX) + " couldn't be cast to Boolean"))
12171216 }
12181217 let ho = if (if (if (ba())
12191218 then true
1220- else (bp == q))
1219+ else (bp == r))
12211220 then true
1222- else (bp == s))
1221+ else (bp == t))
12231222 then true
12241223 else hn
12251224 let gN = [if (if (!(ho))
12261225 then true
12271226 else gt(cU))
12281227 then true
12291228 else aS("put operation is blocked by admin"), if ((size(cU.payments) == 1))
12301229 then true
12311230 else aS("exactly 1 payment are expected")]
12321231 if ((gN == gN))
12331232 then {
12341233 let do = toBase58String(value(br))
12351234 let dp = toBase58String(value(bs))
12361235 let dn = bq
12371236 let fV = bt
12381237 let fW = bu
12391238 let dm = if ((cU.caller == this))
12401239 then cU.originCaller
12411240 else cU.caller
12421241 let fp = value(cU.payments[0])
12431242 let dk = toBase58String(value(fp.assetId))
12441243 let dQ = fp.amount
12451244 let eW = if ((fp.assetId == br))
12461245 then eP(toBigInt(dQ), toBigInt(0), toBigInt(0))
12471246 else eP(toBigInt(0), toBigInt(dQ), toBigInt(0))
12481247 if ((eW == eW))
12491248 then {
12501249 let hp = fu(dQ, dk, toString(dm), toBase58String(cU.transactionId), true)
12511250 if ((hp == hp))
12521251 then {
12531252 let cC = hp._3
12541253 let dG = hp._2
12551254 let hq = hp._1
12561255 let eq = if (if ((fR > 0))
12571256 then (fR > hq)
12581257 else false)
12591258 then aS(makeString(["amount to receive is less than ", toString(fR)], ""))
12601259 else hq
12611260 let hc = invoke(aV, "emit", [eq], nil)
12621261 if ((hc == hc))
12631262 then {
12641263 let he = {
12651264 let gq = hc
12661265 if ($isInstanceOf(gq, "Address"))
12671266 then {
12681267 let hf = gq
12691268 invoke(hf, "emit", [eq], nil)
12701269 }
12711270 else unit
12721271 }
12731272 if ((he == he))
12741273 then {
12751274 let hi = if (gW)
12761275 then {
12771276 let hj = invoke(bz, "stakeFor", [toString(cU.caller)], [AttachedPayment(dn, eq)])
12781277 if ((hj == hj))
12791278 then nil
12801279 else throw("Strict value is not equal to itself.")
12811280 }
12821281 else [ScriptTransfer(cU.caller, eq, dn)]
12831282 let gh = if ((cC > 0))
12841283 then [ScriptTransfer(bc, cC, fromBase58String(dk))]
12851284 else nil
12861285 let hr = if ((this == bc))
12871286 then $Tuple2(0, 0)
12881287 else {
12891288 let hs = if ((fp.assetId == br))
12901289 then true
12911290 else false
12921291 if (hs)
12931292 then $Tuple2(-(cC), 0)
12941293 else $Tuple2(0, -(cC))
12951294 }
12961295 let eY = hr._1
12971296 let eZ = hr._2
12981297 let ht = eX(eY, eZ, 0)
12991298 let gn = ht._1
13001299 let eO = ht._2
13011300 let go = fb(eW, eO)
13021301 if ((go == go))
13031302 then $Tuple2((((dG ++ hi) ++ gh) ++ gn), eq)
13041303 else throw("Strict value is not equal to itself.")
13051304 }
13061305 else throw("Strict value is not equal to itself.")
13071306 }
13081307 else throw("Strict value is not equal to itself.")
13091308 }
13101309 else throw("Strict value is not equal to itself.")
13111310 }
13121311 else throw("Strict value is not equal to itself.")
13131312 }
13141313 else throw("Strict value is not equal to itself.")
13151314 }
13161315
13171316
13181317
13191318 @Callable(cU)
13201319 func putForFree (hu) = if ((0 > hu))
13211320 then throw("Wrong slpg")
13221321 else if ((size(cU.payments) != 2))
13231322 then throw("2 pmnts expd")
13241323 else {
13251324 let hv = fq(toString(cU.caller), toBase58String(cU.transactionId), AttachedPayment(value(cU.payments[0]).assetId, value(cU.payments[0]).amount), cU.payments[1], hu, false, false, true, 0, "")
13261325 let dG = hv._9
13271326 let ha = toBigInt(value(cU.payments[0]).amount)
13281327 let hb = toBigInt(value(cU.payments[1]).amount)
13291328 let eW = eP(ha, hb, toBigInt(0))
13301329 if ((eW == eW))
13311330 then {
13321331 let hw = eX(0, 0, 0)
13331332 let gn = hw._1
13341333 let eO = hw._2
13351334 let go = fb(eW, eO)
13361335 if ((go == go))
13371336 then (dG ++ gn)
13381337 else throw("Strict value is not equal to itself.")
13391338 }
13401339 else throw("Strict value is not equal to itself.")
13411340 }
13421341
13431342
13441343
13451344 @Callable(cU)
13461345 func get () = {
13471346 let eW = eP(toBigInt(0), toBigInt(0), toBigInt(0))
13481347 if ((eW == eW))
13491348 then {
13501349 let ec = fo(cU)
13511350 let hx = ec._1
13521351 let dF = ec._2
13531352 let dQ = ec._3
13541353 let dk = ec._4
13551354 let dG = ec._5
13561355 let eD = invoke(aV, "burn", [dQ], [AttachedPayment(dk, dQ)])
13571356 if ((eD == eD))
13581357 then {
13591358 let hy = eX(-(hx), -(dF), 0)
13601359 let gn = hy._1
13611360 let eO = hy._2
13621361 let go = fb(eW, eO)
13631362 if ((go == go))
13641363 then (dG ++ gn)
13651364 else throw("Strict value is not equal to itself.")
13661365 }
13671366 else throw("Strict value is not equal to itself.")
13681367 }
13691368 else throw("Strict value is not equal to itself.")
13701369 }
13711370
13721371
13731372
13741373 @Callable(cU)
13751374 func getOneTknV2 (fQ,fR) = {
13761375 let hn = {
13771376 let aX = invoke(aV, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
13781377 if ($isInstanceOf(aX, "Boolean"))
13791378 then aX
13801379 else throw(($getType(aX) + " couldn't be cast to Boolean"))
13811380 }
13821381 let hz = if (if (ba())
13831382 then true
1384- else (bp == s))
1383+ else (bp == t))
13851384 then true
13861385 else hn
13871386 let gN = [if (if (!(hz))
13881387 then true
13891388 else gt(cU))
13901389 then true
13911390 else aS("get operation is blocked by admin"), if ((size(cU.payments) == 1))
13921391 then true
13931392 else aS("exactly 1 payment are expected")]
13941393 if ((gN == gN))
13951394 then {
13961395 let hA = fP(fQ, fR, cU.payments, cU.caller, cU.originCaller, cU.transactionId)
13971396 let dG = hA._1
13981397 let ga = hA._2
13991398 $Tuple2(dG, ga)
14001399 }
14011400 else throw("Strict value is not equal to itself.")
14021401 }
14031402
14041403
14051404
14061405 @Callable(cU)
14071406 func refreshDLp () = {
14081407 let hB = valueOrElse(getInteger(at), 0)
14091408 let hC = if (((height - hB) >= aw))
14101409 then unit
14111410 else aS(makeString([toString(aw), " blocks have not passed since the previous call"], ""))
14121411 if ((hC == hC))
14131412 then {
14141413 let fi = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, as), "0")), aU("invalid dLp"))
14151414 let hD = eX(0, 0, 0)
14161415 let hE = hD._1
14171416 let eO = hD._2
14181417 let fa = if ((fi != eO))
14191418 then hE
14201419 else aS("nothing to refresh")
14211420 $Tuple2(fa, toString(eO))
14221421 }
14231422 else throw("Strict value is not equal to itself.")
14241423 }
14251424
14261425
14271426
14281427 @Callable(cU)
14291428 func getOneTknV2READONLY (fQ,hF) = {
14301429 let do = toBase58String(value(br))
14311430 let dp = toBase58String(value(bs))
14321431 let dn = toBase58String(value(bq))
14331432 let cE = [toBigInt(bS(do)), toBigInt(bS(dp))]
14341433 let eN = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(dn)), "invalid lp asset").quantity)
14351434 let cg = cD(cE)
14361435 let cf = (cg - fraction(toBigInt(hF), cg, eN))
14371436 let hG = if ((fQ == do))
14381437 then 0
14391438 else if ((fQ == dp))
14401439 then 1
14411440 else throw("invalid out asset id")
14421441 let hH = ex(cE, hG, cf)
14431442 let gG = (cE[hG] - hH)
1444- let gH = max([0, toInt((gG - f))])
1443+ let gH = max([0, toInt((gG - g))])
14451444 let hI = cA(gH, aY)
14461445 let fZ = hI._1
14471446 let cC = hI._2
14481447 $Tuple2(nil, $Tuple2(fZ, cC))
14491448 }
14501449
14511450
14521451
14531452 @Callable(cU)
14541453 func getOneTknV2WithBonusREADONLY (fQ,hF) = {
14551454 let do = toBase58String(value(br))
14561455 let dp = toBase58String(value(bs))
14571456 let dn = toBase58String(value(bq))
14581457 let du = bS(do)
14591458 let dw = bS(dp)
14601459 let hJ = {
14611460 let aX = invoke(this, "getOneTknV2READONLY", [fQ, hF], nil)
14621461 if ($isInstanceOf(aX, "(Int, Int)"))
14631462 then aX
14641463 else throw(($getType(aX) + " couldn't be cast to (Int, Int)"))
14651464 }
14661465 let fZ = hJ._1
14671466 let cC = hJ._2
14681467 let ec = di("", dn, hF, this)
14691468 let dE = ec._1
14701469 let dF = ec._2
14711470 let hK = (dE + dF)
14721471 let fO = if ((hK == 0))
14731472 then if ((fZ == 0))
14741473 then 0
14751474 else throw("bonus calculation error")
1476- else fraction((fZ - hK), a, hK)
1475+ else fraction((fZ - hK), b, hK)
14771476 $Tuple2(nil, $Tuple3(fZ, cC, fO))
14781477 }
14791478
14801479
14811480
14821481 @Callable(cU)
14831482 func getNoLess (hL,hM) = {
14841483 let ec = fo(cU)
14851484 let dE = ec._1
14861485 let dF = ec._2
14871486 let dQ = ec._3
14881487 let dk = ec._4
14891488 let dG = ec._5
14901489 if ((hL > dE))
14911490 then throw(((("Failed: " + toString(dE)) + " < ") + toString(hL)))
14921491 else if ((hM > dF))
14931492 then throw(((("Failed: " + toString(dF)) + " < ") + toString(hM)))
14941493 else {
14951494 let eW = eP(toBigInt(0), toBigInt(0), toBigInt(0))
14961495 if ((eW == eW))
14971496 then {
14981497 let hN = invoke(aV, "burn", [dQ], [AttachedPayment(dk, dQ)])
14991498 if ((hN == hN))
15001499 then {
15011500 let hO = eX(-(dE), -(dF), 0)
15021501 let gn = hO._1
15031502 let eO = hO._2
15041503 let go = fb(eW, eO)
15051504 if ((go == go))
15061505 then (dG ++ gn)
15071506 else throw("Strict value is not equal to itself.")
15081507 }
15091508 else throw("Strict value is not equal to itself.")
15101509 }
15111510 else throw("Strict value is not equal to itself.")
15121511 }
15131512 }
15141513
15151514
15161515
15171516 @Callable(cU)
15181517 func unstakeAndGet (cB) = {
15191518 let hP = if ((size(cU.payments) != 0))
15201519 then throw("No pmnts expd")
15211520 else true
15221521 if ((hP == hP))
15231522 then {
15241523 let hQ = bx()
15251524 let hd = bq
1526- let hR = valueOrErrorMessage(addressFromString(hQ[C]), "Wr st addr")
1525+ let hR = valueOrErrorMessage(addressFromString(hQ[D]), "Wr st addr")
15271526 let eW = eP(toBigInt(0), toBigInt(0), toBigInt(0))
15281527 if ((eW == eW))
15291528 then {
15301529 let hS = invoke(hR, "unstake", [toBase58String(hd), cB], nil)
15311530 if ((hS == hS))
15321531 then {
15331532 let ec = di(toBase58String(cU.transactionId), toBase58String(hd), cB, cU.caller)
15341533 let dE = ec._1
15351534 let dF = ec._2
15361535 let ds = parseIntValue(ec._9)
15371536 let dG = ec._10
15381537 let hT = if (if (ba())
15391538 then true
1540- else (ds == s))
1539+ else (ds == t))
15411540 then throw(("Blocked: " + toString(ds)))
15421541 else true
15431542 if ((hT == hT))
15441543 then {
15451544 let hU = invoke(aV, "burn", [cB], [AttachedPayment(hd, cB)])
15461545 if ((hU == hU))
15471546 then {
15481547 let hV = eX(-(dE), -(dF), 0)
15491548 let gn = hV._1
15501549 let eO = hV._2
15511550 let go = fb(eW, eO)
15521551 if ((go == go))
15531552 then (dG ++ gn)
15541553 else throw("Strict value is not equal to itself.")
15551554 }
15561555 else throw("Strict value is not equal to itself.")
15571556 }
15581557 else throw("Strict value is not equal to itself.")
15591558 }
15601559 else throw("Strict value is not equal to itself.")
15611560 }
15621561 else throw("Strict value is not equal to itself.")
15631562 }
15641563 else throw("Strict value is not equal to itself.")
15651564 }
15661565
15671566
15681567
15691568 @Callable(cU)
15701569 func unstakeAndGetNoLess (hW,hX,hM) = {
15711570 let hz = if (ba())
15721571 then true
1573- else (bp == s)
1572+ else (bp == t)
15741573 let gN = [if (!(hz))
15751574 then true
15761575 else throw("get operation is blocked by admin"), if ((size(cU.payments) == 0))
15771576 then true
15781577 else throw("no payments are expected")]
15791578 if ((gN == gN))
15801579 then {
15811580 let eW = eP(toBigInt(0), toBigInt(0), toBigInt(0))
15821581 if ((eW == eW))
15831582 then {
15841583 let hS = invoke(bz, "unstake", [toBase58String(bq), hW], nil)
15851584 if ((hS == hS))
15861585 then {
15871586 let hY = di(toBase58String(cU.transactionId), toBase58String(bq), hW, cU.caller)
15881587 let dE = hY._1
15891588 let dF = hY._2
15901589 let dG = hY._10
15911590 let hZ = [if ((dE >= hX))
15921591 then true
15931592 else throw(makeString(["amount asset amount to receive is less than ", toString(hX)], "")), if ((dF >= hM))
15941593 then true
15951594 else throw(makeString(["price asset amount to receive is less than ", toString(hM)], ""))]
15961595 if ((hZ == hZ))
15971596 then {
15981597 let hN = invoke(aV, "burn", [hW], [AttachedPayment(bq, hW)])
15991598 if ((hN == hN))
16001599 then {
16011600 let ia = eX(-(dE), -(dF), 0)
16021601 let gn = ia._1
16031602 let eO = ia._2
16041603 let go = fb(eW, eO)
16051604 if ((go == go))
16061605 then (dG ++ gn)
16071606 else throw("Strict value is not equal to itself.")
16081607 }
16091608 else throw("Strict value is not equal to itself.")
16101609 }
16111610 else throw("Strict value is not equal to itself.")
16121611 }
16131612 else throw("Strict value is not equal to itself.")
16141613 }
16151614 else throw("Strict value is not equal to itself.")
16161615 }
16171616 else throw("Strict value is not equal to itself.")
16181617 }
16191618
16201619
16211620
16221621 @Callable(cU)
16231622 func unstakeAndGetOneTknV2 (hW,fQ,fR) = {
16241623 let hn = {
16251624 let aX = invoke(aV, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
16261625 if ($isInstanceOf(aX, "Boolean"))
16271626 then aX
16281627 else throw(($getType(aX) + " couldn't be cast to Boolean"))
16291628 }
16301629 let hz = if (if (ba())
16311630 then true
1632- else (bp == s))
1631+ else (bp == t))
16331632 then true
16341633 else hn
16351634 let gN = [if (if (!(hz))
16361635 then true
16371636 else gt(cU))
16381637 then true
16391638 else aS("get operation is blocked by admin"), if ((size(cU.payments) == 0))
16401639 then true
16411640 else aS("no payments are expected")]
16421641 if ((gN == gN))
16431642 then {
16441643 let hQ = bx()
16451644 let hd = bq
1646- let hR = valueOrErrorMessage(addressFromString(hQ[C]), "Wr st addr")
1645+ let hR = valueOrErrorMessage(addressFromString(hQ[D]), "Wr st addr")
16471646 let dm = cU.caller
16481647 let ib = this
16491648 let hS = invoke(hR, "unstakeINTERNAL", [hd, hW, dm.bytes, ib.bytes], nil)
16501649 if ((hS == hS))
16511650 then {
16521651 let ic = fP(fQ, fR, [AttachedPayment(hd, hW)], cU.caller, cU.originCaller, cU.transactionId)
16531652 let dG = ic._1
16541653 let ga = ic._2
16551654 $Tuple2(dG, ga)
16561655 }
16571656 else throw("Strict value is not equal to itself.")
16581657 }
16591658 else throw("Strict value is not equal to itself.")
16601659 }
16611660
16621661
16631662
16641663 @Callable(cU)
16651664 func putOneTknV2WithBonusREADONLY (id,ie) = {
16661665 let if = fu(id, ie, "", "", true)
16671666 let fJ = if._1
16681667 let dG = if._2
16691668 let cC = if._3
16701669 let fO = if._4
16711670 $Tuple2(nil, $Tuple3(fJ, cC, fO))
16721671 }
16731672
16741673
16751674
16761675 @Callable(cU)
16771676 func putOneTknV2WithoutTakeFeeREADONLY (id,ie) = {
16781677 let ig = fu(id, ie, "", "", false)
16791678 let fJ = ig._1
16801679 let dG = ig._2
16811680 let cC = ig._3
16821681 let fO = ig._4
16831682 $Tuple2(nil, $Tuple3(fJ, cC, fO))
16841683 }
16851684
16861685
16871686
16881687 @Callable(cU)
16891688 func activate (ih,ii) = if ((toString(cU.caller) != toString(aV)))
16901689 then throw("denied")
1691- else $Tuple2([StringEntry(aj(), ih), StringEntry(ak(), ii)], "success")
1692-
1693-
1694-
1695-@Callable(cU)
1696-func setS (ij,hT) = if ((toString(cU.caller) != aO(this, ao())))
1697- then gs
1698- else [StringEntry(ij, hT)]
1699-
1700-
1701-
1702-@Callable(cU)
1703-func setI (ij,hT) = if ((toString(cU.caller) != aO(this, ao())))
1704- then gs
1705- else [IntegerEntry(ij, hT)]
1690+ else $Tuple2([StringEntry(ak(), ih), StringEntry(al(), ii)], "success")
17061691
17071692
17081693
17091694 @Callable(cU)
17101695 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, bd())
17111696
17121697
17131698
17141699 @Callable(cU)
17151700 func getAccBalanceWrapperREADONLY (bT) = $Tuple2(nil, bS(bT))
17161701
17171702
17181703
17191704 @Callable(cU)
17201705 func calcPricesWrapperREADONLY (cm,cn,cr) = {
1721- let ik = cq(cm, cn, cr)
1722- $Tuple2(nil, [toString(ik[0]), toString(ik[1]), toString(ik[2])])
1706+ let ij = cq(cm, cn, cr)
1707+ $Tuple2(nil, [toString(ij[0]), toString(ij[1]), toString(ij[2])])
17231708 }
17241709
17251710
17261711
17271712 @Callable(cU)
1728-func fromX18WrapperREADONLY (M,il) = $Tuple2(nil, L(parseBigIntValue(M), il))
1713+func fromX18WrapperREADONLY (N,ik) = $Tuple2(nil, M(parseBigIntValue(N), ik))
17291714
17301715
17311716
17321717 @Callable(cU)
1733-func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
1718+func toX18WrapperREADONLY (J,K) = $Tuple2(nil, toString(I(J, K)))
17341719
17351720
17361721
17371722 @Callable(cU)
17381723 func calcPriceBigIntWrapperREADONLY (bV,bW) = $Tuple2(nil, toString(bU(parseBigIntValue(bV), parseBigIntValue(bW))))
17391724
17401725
17411726
17421727 @Callable(cU)
1743-func estimatePutOperationWrapperREADONLY (dj,cb,dI,dJ,dK,dL,im,dM,dN) = $Tuple2(nil, dH(dj, cb, dI, dJ, dK, dL, im, dM, dN, true, false, 0, ""))
1728+func estimatePutOperationWrapperREADONLY (dj,cb,dI,dJ,dK,dL,il,dM,dN) = $Tuple2(nil, dH(dj, cb, dI, dJ, dK, dL, il, dM, dN, true, false, 0, ""))
17441729
17451730
17461731
17471732 @Callable(cU)
1748-func estimateGetOperationWrapperREADONLY (dj,in,dl,im) = {
1749- let ec = di(dj, in, dl, addressFromStringValue(im))
1733+func estimateGetOperationWrapperREADONLY (dj,im,dl,il) = {
1734+ let ec = di(dj, im, dl, addressFromStringValue(il))
17501735 $Tuple2(nil, $Tuple10(ec._1, ec._2, ec._3, ec._4, ec._5, ec._6, ec._7, toString(ec._8), ec._9, ec._10))
17511736 }
17521737
17531738
17541739
17551740 @Callable(cU)
17561741 func changeAmp () = {
1757- let io = invoke(aV, "getChangeAmpConfigREADONLY", [toString(this)], nil)
1758- let ip = {
1759- let gq = io
1742+ let in = invoke(aV, "getChangeAmpConfigREADONLY", [toString(this)], nil)
1743+ let io = {
1744+ let gq = in
17601745 if ($isInstanceOf(gq, "List[Any]"))
17611746 then {
1762- let iq = gq
1747+ let ip = gq
17631748 $Tuple3({
1764- let aX = iq[0]
1749+ let aX = ip[0]
17651750 if ($isInstanceOf(aX, "Int"))
17661751 then aX
17671752 else throw(($getType(aX) + " couldn't be cast to Int"))
17681753 }, {
1769- let aX = iq[1]
1754+ let aX = ip[1]
17701755 if ($isInstanceOf(aX, "Int"))
17711756 then aX
17721757 else throw(($getType(aX) + " couldn't be cast to Int"))
17731758 }, {
1774- let aX = iq[2]
1759+ let aX = ip[2]
17751760 if ($isInstanceOf(aX, "Int"))
17761761 then aX
17771762 else throw(($getType(aX) + " couldn't be cast to Int"))
17781763 })
17791764 }
17801765 else aS("invalid entry type")
17811766 }
1782- let ir = ip._1
1783- let is = ip._2
1784- let it = ip._3
1785- let iu = parseIntValue(getStringValue(al()))
1786- let iv = (iu + is)
1787- let iw = if ((0 > is))
1788- then if ((it > iv))
1789- then it
1790- else iv
1791- else if ((iv > it))
1792- then it
1793- else iv
1794- let ix = valueOrElse(getInteger(ap()), 0)
1795- let iy = (ix + ir)
1796- let gN = [if ((height > iy))
1767+ let iq = io._1
1768+ let ir = io._2
1769+ let is = io._3
1770+ let it = parseIntValue(getStringValue(am()))
1771+ let iu = (it + ir)
1772+ let iv = if ((0 > ir))
1773+ then if ((is > iu))
1774+ then is
1775+ else iu
1776+ else if ((iu > is))
1777+ then is
1778+ else iu
1779+ let iw = valueOrElse(getInteger(ap()), 0)
1780+ let ix = (iw + iq)
1781+ let gN = [if ((height > ix))
17971782 then true
1798- else aS("try again in few blocks"), if ((iu != iw))
1783+ else aS("try again in few blocks"), if ((it != iv))
17991784 then true
18001785 else aS("already reached target")]
18011786 if ((gN == gN))
1802- then [IntegerEntry(ap(), height), StringEntry(al(), toString(iw)), StringEntry(am(height), toString(iw))]
1787+ then [IntegerEntry(ap(), height), StringEntry(am(), toString(iv)), StringEntry(an(height), toString(iv))]
18031788 else throw("Strict value is not equal to itself.")
18041789 }
18051790
18061791
1807-@Verifier(iz)
1808-func iA () = {
1809- let iB = {
1792+@Verifier(iy)
1793+func iz () = {
1794+ let iA = {
18101795 let gq = gp()
18111796 if ($isInstanceOf(gq, "ByteVector"))
18121797 then {
18131798 let gu = gq
18141799 gu
18151800 }
18161801 else if ($isInstanceOf(gq, "Unit"))
1817- then iz.senderPublicKey
1802+ then iy.senderPublicKey
18181803 else throw("Match error")
18191804 }
1820- let gq = iz
1805+ let gq = iy
18211806 if ($isInstanceOf(gq, "Order"))
18221807 then {
18231808 let fe = gq
1824- let iC = bb()
1825- let iD = if (gB())
1809+ let iB = bb()
1810+ let iC = if (gB())
18261811 then $Tuple2(true, "")
18271812 else fd(fe)
1828- let aK = iD._1
1829- let aL = iD._2
1813+ let aK = iC._1
1814+ let aL = iC._2
18301815 let aM = sigVerify(fe.bodyBytes, fe.proofs[0], fe.senderPublicKey)
1831- let aN = sigVerify(fe.bodyBytes, fe.proofs[1], iC)
1816+ let aN = sigVerify(fe.bodyBytes, fe.proofs[1], iB)
18321817 if (if (if (aK)
18331818 then aM
18341819 else false)
18351820 then aN
18361821 else false)
18371822 then true
18381823 else aJ(aK, aL, aM, aN)
18391824 }
18401825 else if ($isInstanceOf(gq, "SetScriptTransaction"))
18411826 then {
18421827 let cH = gq
1843- if (sigVerify(iz.bodyBytes, iz.proofs[0], iB))
1828+ if (sigVerify(iy.bodyBytes, iy.proofs[0], iA))
18441829 then true
18451830 else {
1846- let iE = blake2b256(value(cH.script))
1847- let iF = fromBase64String(value(getString(aV, aF())))
1848- let iG = scriptHash(this)
1849- if ((iF == iE))
1850- then (iG != iE)
1831+ let iD = blake2b256(value(cH.script))
1832+ let iE = fromBase64String(value(getString(aV, aF())))
1833+ let iF = scriptHash(this)
1834+ if ((iE == iD))
1835+ then (iF != iD)
18511836 else false
18521837 }
18531838 }
1854- else sigVerify(iz.bodyBytes, iz.proofs[0], iB)
1839+ else sigVerify(iy.bodyBytes, iy.proofs[0], iA)
18551840 }
18561841

github/deemru/w8io/169f3d6 
322.66 ms