tx · 5KZBESpdB1ndZa6iQt8mVoZy5iBoBqyPisyM87o7n4Zx

3N8iNNRC4UfDK4aJctSvHajiZ81fzSumCeP:  -0.03800000 Waves

2023.02.09 22:38 [2442511] smart account 3N8iNNRC4UfDK4aJctSvHajiZ81fzSumCeP > SELF 0.00000000 Waves

{ "type": 13, "id": "5KZBESpdB1ndZa6iQt8mVoZy5iBoBqyPisyM87o7n4Zx", "fee": 3800000, "feeAssetId": null, "timestamp": 1675971491950, "version": 2, "chainId": 84, "sender": "3N8iNNRC4UfDK4aJctSvHajiZ81fzSumCeP", "senderPublicKey": "F7NZd812aXMUyDcj1XaB3wgMJXJfUsq3RhPhrEZ9b6ND", "proofs": [ "2TADUDVcxEBMFzXhrNpGgppfrJS3FUMdqyRMfnKMd8iENiojjLoYTo6ZmHswp1b6H9GBvDbwc6RqNFjBCbksCPrW" ], "script": "base64:BgLRLwgCEgQKAgEEEgYKBAEEAQgSAwoBCBIAEgQKAgEEEgMKAQESBAoCAQQSBAoCCAESBAoCCAESBAoCCAESBQoDAQgBEgASBAoCAQESAwoBARIFCgMBAQESBAoCCAgSABIAEgMKAQgSBQoDAQEBEgQKAgEBEgQKAggBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgASAwoBARIDCgEBEgQKAggBIgpsUGRlY2ltYWxzIgZzY2FsZTgiDHNjYWxlOEJpZ0ludCIHc2NhbGUxOCIKemVyb0JpZ0ludCIEYmlnMCIEYmlnMSIEYmlnMiILd2F2ZXNTdHJpbmciA1NFUCIKUG9vbEFjdGl2ZSIPUG9vbFB1dERpc2FibGVkIhNQb29sTWF0Y2hlckRpc2FibGVkIgxQb29sU2h1dGRvd24iDmlkeFBvb2xBZGRyZXNzIg1pZHhQb29sU3RhdHVzIhBpZHhQb29sTFBBc3NldElkIg1pZHhBbXRBc3NldElkIg9pZHhQcmljZUFzc2V0SWQiDmlkeEFtdEFzc2V0RGNtIhBpZHhQcmljZUFzc2V0RGNtIg5pZHhJQW10QXNzZXRJZCIQaWR4SVByaWNlQXNzZXRJZCINaWR4TFBBc3NldERjbSISaWR4UG9vbEFtdEFzc2V0QW10IhRpZHhQb29sUHJpY2VBc3NldEFtdCIRaWR4UG9vbExQQXNzZXRBbXQiGWlkeEZhY3RvcnlTdGFraW5nQ29udHJhY3QiGmlkeEZhY3RvcnlTbGlwcGFnZUNvbnRyYWN0IgV0b1gxOCIHb3JpZ1ZhbCINb3JpZ1NjYWxlTXVsdCILdG9YMThCaWdJbnQiB2Zyb21YMTgiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igxmcm9tWDE4Um91bmQiBXJvdW5kIgd0b1NjYWxlIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiDHN3YXBDb250cmFjdCICZmMiA21wayIEcG1wayICcGwiAnBoIgFoIgl0aW1lc3RhbXAiA3BhdSILdXNlckFkZHJlc3MiBHR4SWQiA2dhdSICYWEiAnBhIgZrZXlGZWUiCmZlZURlZmF1bHQiA2ZlZSIGa2V5S0xwIhVrZXlLTHBSZWZyZXNoZWRIZWlnaHQiEmtleUtMcFJlZnJlc2hEZWxheSIWa0xwUmVmcmVzaERlbGF5RGVmYXVsdCIPa0xwUmVmcmVzaERlbGF5IhBrZXlGYWN0b3J5Q29uZmlnIg1rZXlNYXRjaGVyUHViIilrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cyITcG9vbENvbnRyYWN0QWRkcmVzcyINa2V5UG9vbENvbmZpZyIJaUFtdEFzc2V0IgtpUHJpY2VBc3NldCIfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZCIMYmFzZUFzc2V0U3RyIhNrZXlBbGxQb29sc1NodXRkb3duIg1rZXlQb29sV2VpZ2h0Ig9jb250cmFjdEFkZHJlc3MiFmtleUFsbG93ZWRMcFNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiD3Rocm93T3JkZXJFcnJvciIKb3JkZXJWYWxpZCIOb3JkZXJWYWxpZEluZm8iC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiD2dldFN0cmluZ09yRmFpbCIHYWRkcmVzcyIDa2V5IgxnZXRJbnRPckZhaWwiCHRocm93RXJyIgNtc2ciBmZtdEVyciIPZmFjdG9yeUNvbnRyYWN0IhNmZWVDb2xsZWN0b3JBZGRyZXNzIgVpbkZlZSIBQCIGb3V0RmVlIhBpc0dsb2JhbFNodXRkb3duIhNnZXRNYXRjaGVyUHViT3JGYWlsIg1nZXRQb29sQ29uZmlnIghhbXRBc3NldCIKcHJpY2VBc3NldCIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDg0Njk4NjM1Ig5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIQZ2V0RmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyIhVzbGlwcGFnZVRvbGVyYW5jZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCISc2xpcGFnZUFtdEFzc2V0QW10IhRzbGlwYWdlUHJpY2VBc3NldEFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIg9jYWxjUHJpY2VCaWdJbnQiCHByQW10WDE4IghhbUFtdFgxOCIUY2FsY1ByaWNlQmlnSW50Um91bmQiEHByaXZhdGVDYWxjUHJpY2UiCmFtQXNzZXREY20iCnByQXNzZXREY20iBWFtQW10IgVwckFtdCIOYW10QXNzZXRBbXRYMTgiEHByaWNlQXNzZXRBbXRYMTgiCmNhbGNQcmljZXMiBWxwQW10IgNjZmciC2FtdEFzc2V0RGNtIg1wcmljZUFzc2V0RGNtIghwcmljZVgxOCIIbHBBbXRYMTgiE2xwUHJpY2VJbkFtQXNzZXRYMTgiE2xwUHJpY2VJblByQXNzZXRYMTgiD2NhbGN1bGF0ZVByaWNlcyIGcHJpY2VzIhRlc3RpbWF0ZUdldE9wZXJhdGlvbiIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCIJbHBBc3NldElkIglhbUFzc2V0SWQiCXByQXNzZXRJZCIKcG9vbFN0YXR1cyIKbHBFbWlzc2lvbiIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4Ig1scEVtaXNzaW9uWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiFGVzdGltYXRlUHV0T3BlcmF0aW9uIhFzbGlwcGFnZVRvbGVyYW5jZSIMaW5BbUFzc2V0QW10IgtpbkFtQXNzZXRJZCIMaW5QckFzc2V0QW10IgtpblByQXNzZXRJZCIKaXNFdmFsdWF0ZSIGZW1pdExwIgxhbUFzc2V0SWRTdHIiDHByQXNzZXRJZFN0ciILaUFtdEFzc2V0SWQiDWlQcmljZUFzc2V0SWQiDmluQW1Bc3NldElkU3RyIg5pblByQXNzZXRJZFN0ciIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIDcmVzIgtzbGlwcGFnZVgxOCIUc2xpcHBhZ2VUb2xlcmFuY2VYMTgiCnByVmlhQW1YMTgiCmFtVmlhUHJYMTgiDGV4cGVjdGVkQW10cyIRZXhwQW10QXNzZXRBbXRYMTgiE2V4cFByaWNlQXNzZXRBbXRYMTgiCWNhbGNMcEFtdCIOY2FsY0FtQXNzZXRQbXQiDmNhbGNQckFzc2V0UG10IgxzbGlwcGFnZUNhbGMiCWVtaXRMcEFtdCIGYW1EaWZmIgZwckRpZmYiC2NvbW1vblN0YXRlIgdjYWxjS0xwIg1hbW91bnRCYWxhbmNlIgxwcmljZUJhbGFuY2UiEGFtb3VudEJhbGFuY2VYMTgiD3ByaWNlQmFsYW5jZVgxOCIKdXBkYXRlZEtMcCIOY2FsY0N1cnJlbnRLTHAiEGFtb3VudEFzc2V0RGVsdGEiD3ByaWNlQXNzZXREZWx0YSIUbHBBc3NldEVtaXNzaW9uRGVsdGEiEmFtb3VudEFzc2V0QmFsYW5jZSIRcHJpY2VBc3NldEJhbGFuY2UiD2xwQXNzZXRFbWlzc2lvbiIKY3VycmVudEtMcCIScmVmcmVzaEtMcEludGVybmFsIhdhbW91bnRBc3NldEJhbGFuY2VEZWx0YSIWcHJpY2VBc3NldEJhbGFuY2VEZWx0YSIHYWN0aW9ucyISdmFsaWRhdGVVcGRhdGVkS0xwIgZvbGRLTHAiG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZCIFb3JkZXIiEWFtb3VudEFzc2V0QW1vdW50IhBwcmljZUFzc2V0QW1vdW50Ig0kdDAyMTU0MTIxNzUzIgNrTHAiDSR0MDIyMTkzMjIyOTMiDXVudXNlZEFjdGlvbnMiBmtMcE5ldyIMaXNPcmRlclZhbGlkIgRpbmZvIgljb21tb25HZXQiAWkiA3BtdCIGcG10QW10Igljb21tb25QdXQiCmFtQXNzZXRQbXQiCnByQXNzZXRQbXQiBmVzdFB1dCIEZW1pdCIGYW1vdW50IgdlbWl0SW52Ig1lbWl0SW52TGVnYWN5IgckbWF0Y2gwIhVsZWdhY3lGYWN0b3J5Q29udHJhY3QiB3Rha2VGZWUiCWZlZUFtb3VudCIPY2FsY1B1dE9uZVRva2VuIhBwYXltZW50QW1vdW50UmF3Ig5wYXltZW50QXNzZXRJZCIGaXNFdmFsIhBhbW91bnRCYWxhbmNlUmF3Ig9wcmljZUJhbGFuY2VSYXciFHBheW1lbnRJbkFtb3VudEFzc2V0Ig0kdDAyNTQwNjI1Njk5IhBhbW91bnRCYWxhbmNlT2xkIg9wcmljZUJhbGFuY2VPbGQiDSR0MDI1NzAzMjU4NTIiFGFtb3VudEFzc2V0QW1vdW50UmF3IhNwcmljZUFzc2V0QW1vdW50UmF3Ig0kdDAyNTk4NDI2MDQ4Ig1wYXltZW50QW1vdW50IhBhbW91bnRCYWxhbmNlTmV3Ig9wcmljZUJhbGFuY2VOZXciC3ByaWNlTmV3WDE4IghwcmljZU5ldyIOcGF5bWVudEJhbGFuY2UiFHBheW1lbnRCYWxhbmNlQmlnSW50IgxzdXBwbHlCaWdJbnQiC2NoZWNoU3VwcGx5Ig1kZXBvc2l0QmlnSW50Igtpc3N1ZUFtb3VudCILcHJpY2VPbGRYMTgiCHByaWNlT2xkIgRsb3NzIg0kdDAyNzcyOTI3ODk2IgdiYWxhbmNlIg9pc3N1ZUFtb3VudEJvdGgiD2NhbGNHZXRPbmVUb2tlbiIKb3V0QXNzZXRJZCIGY2hlY2tzIhBvdXRJbkFtb3VudEFzc2V0Ig1iYWxhbmNlQmlnSW50IhhvdXRJbkFtb3VudEFzc2V0RGVjaW1hbHMiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIgpvdXRCYWxhbmNlIhBvdXRCYWxhbmNlQmlnSW50Ig5yZWRlZW1lZEJpZ0ludCIJYW1vdW50UmF3Ig0kdDAyOTk3NDMwMDMwIgt0b3RhbEFtb3VudCINJHQwMzAwMzQzMDI2MCILb3V0QW1BbW91bnQiC291dFByQW1vdW50IgxhbUJhbGFuY2VOZXciDHByQmFsYW5jZU5ldyIYYW1vdW50Qm90aEluUGF5bWVudEFzc2V0IhZtYW5hZ2VyUHVibGljS2V5T3JVbml0IgFzIh1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdCIJaXNNYW5hZ2VyIgJwayILbXVzdE1hbmFnZXIiAnBkIg1jbGVhbkFtb3VudEluIglpc1JldmVyc2UiDSR0MDMxOTU1MzIyNjAiCGFzc2V0T3V0Igdhc3NldEluIhJwb29sQXNzZXRJbkJhbGFuY2UiE3Bvb2xBc3NldE91dEJhbGFuY2UiCWFtb3VudE91dCIEb2xkSyIEbmV3SyIGY2hlY2tLIgxhbW91bnRPdXRNaW4iCWFkZHJlc3NUbyILc3dhcENvbnRhY3QiCGNoZWNrTWluIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSILY2hlY2tDYWxsZXIiFWNoZWNrTWFuYWdlclB1YmxpY0tleSICcG0iBWhhc1BNIgdjaGVja1BNIg9zaG91bGRBdXRvU3Rha2UiBGFtSWQiBHBySWQiDHNsaXBwYWdlQUludiIMc2xpcHBhZ2VQSW52IgpscFRyYW5zZmVyIgtzbHBTdGFrZUludiINJHQwMzcxNDUzNzYwNyIRcmVmcmVzaEtMcEFjdGlvbnMiEWlzVXBkYXRlZEtMcFZhbGlkIgttYXhTbGlwcGFnZSINJHQwMzgxNjkzODIzNCIMbWluT3V0QW1vdW50IglhdXRvU3Rha2UiIGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkIg1pc1B1dERpc2FibGVkIgdwYXltZW50Ig0kdDAzOTQyMjM5NTc0IgVib251cyITZW1pdEFtb3VudEVzdGltYXRlZCIKZW1pdEFtb3VudCIIc3Rha2VJbnYiB3NlbmRGZWUiDSR0MDQwMTYwNDAzNTciDSR0MDQwMzYwNDA0NjgiDSR0MDQwNzc0NDA5MzEiDW91dEFzc2V0SWRTdHIiDWlzR2V0RGlzYWJsZWQiDSR0MDQxODE2NDE5NjkiD2Ftb3VudEVzdGltYXRlZCIHYnVybkludiINYXNzZXRUcmFuc2ZlciINJHQwNDI0Njk0MjcxNiIQZmVlQW1vdW50Rm9yQ2FsYyINJHQwNDI3MTk0MjgyNyINJHQwNDMwODQ0MzI0MCINdW5zdGFrZUFtb3VudCIKdW5zdGFrZUludiINJHQwNDQxNDU0NDI5NiINJHQwNDQ3OTE0NTAzOCINJHQwNDUwNDE0NTE0OSIJb3V0QW10QW10IhRidXJuTFBBc3NldE9uRmFjdG9yeSINJHQwNDYwOTU0NjE3NyISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCINJHQwNDcxMjY0NzIwNyINY2hlY2tQYXltZW50cyIPY2hlY2tQb29sU3RhdHVzIg0kdDA0ODMzMzQ4NDE0IhVub0xlc3NUaGVuQW1vdW50QXNzZXQiDGNoZWNrQW1vdW50cyINJHQwNDk3MDk0OTc5MCILYW10QXNzZXRTdHIiDXByaWNlQXNzZXRTdHIiGGxhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCIdY2hlY2tMYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiDSR0MDUwOTc3NTEwNDEiEGtMcFVwZGF0ZUFjdGlvbnMiCmFtdEFzc2V0SWQiDHByaWNlQXNzZXRJZCINcG9vbExQQmFsYW5jZSISYWNjQW10QXNzZXRCYWxhbmNlIhRhY2NQcmljZUFzc2V0QmFsYW5jZSIKcHJpY2VzTGlzdCIPbHBBbXRBc3NldFNoYXJlIhFscFByaWNlQXNzZXRTaGFyZSIKcG9vbFdlaWdodCIMY3VyUHJpY2VDYWxjIgxhbUJhbGFuY2VSYXciDHByQmFsYW5jZVJhdyIPYW1CYWxhbmNlUmF3WDE4Ig9wckJhbGFuY2VSYXdYMTgiEHBheW1lbnRMcEFzc2V0SWQiDHBheW1lbnRMcEFtdCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIg0kdDA1OTcwMzU5NzcyIgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2hzAAFhAAgAAWIAgMLXLwABYwkAtgIBAIDC1y8AAWQJALYCAQCAgJC7utat8A0AAWUJALYCAQAAAAFmCQC2AgEAAAABZwkAtgIBAAEAAWgJALYCAQACAAFpAgVXQVZFUwABagICX18AAWsAAQABbAACAAFtAAMAAW4ABAABbwABAAFwAAIAAXEAAwABcgAEAAFzAAUAAXQABgABdQAHAAF2AAgAAXcACQABeAAKAAF5AAEAAXoAAgABQQADAAFCAAEAAUMABwEBRAIBRQFGCQC8AgMJALYCAQUBRQUBZAkAtgIBBQFGAQFHAgFFAUYJALwCAwUBRQUBZAUBRgEBSAIBSQFKCQCgAwEJALwCAwUBSQkAtgIBBQFKBQFkAQFLAwFJAUoBTAkAoAMBCQC9AgQFAUkJALYCAQUBSgUBZAUBTAEBTQMBTgFPAVAJAGsDBQFOBQFPBQFQAQFRAQFJAwkAZgIAAAUBSQkBAS0BBQFJBQFJAQFSAQFJAwkAvwICBQFlBQFJCQC+AgEFAUkFAUkBAVMAAhAlc19fc3dhcENvbnRyYWN0AQFUAAITJXNfX2ZhY3RvcnlDb250cmFjdAEBVQACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFWAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQFXAAIRJXMlc19fcHJpY2VfX2xhc3QBAVgCAVkBWgkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAVkJAMwIAgkApAMBBQFaBQNuaWwFAWoBAmFhAgJhYgJhYwkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAmFiAgJfXwUCYWMBAmFkAgJhYgJhYwkArAICCQCsAgIJAKwCAgILJXMlcyVzX19HX18FAmFiAgJfXwUCYWMBAmFlAAIPJXNfX2Ftb3VudEFzc2V0AQJhZgACDiVzX19wcmljZUFzc2V0AAJhZwIHJXNfX2ZlZQACYWgJAGsDAAoFAWIAkE4AAmFpCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFnBQJhaAACYWoJALkJAgkAzAgCAgIlcwkAzAgCAgNrTHAFA25pbAUBagACYWsJALkJAgkAzAgCAgIlcwkAzAgCAhJrTHBSZWZyZXNoZWRIZWlnaHQFA25pbAUBagACYWwJALkJAgkAzAgCAgIlcwkAzAgCAg9yZWZyZXNoS0xwRGVsYXkFA25pbAUBagACYW0AHgACYW4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWwFAmFtAQJhbwACESVzX19mYWN0b3J5Q29uZmlnAQJhcAACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYXEBAmFyCQCsAgIJAKwCAgIIJXMlcyVzX18FAmFyAiBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAECYXMCAmF0AmF1CQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJhdAICX18FAmF1AghfX2NvbmZpZwECYXYBAmF3CQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmF3AQJheAACDCVzX19zaHV0ZG93bgECYXkBAmF6CQCsAgICEiVzJXNfX3Bvb2xXZWlnaHRfXwUCYXoBAmFBAAIXJXNfX2FsbG93ZWRMcFNjcmlwdEhhc2gAAmFCAhclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYUMEAmFEAmFFAmFGAmFHCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICJG9yZGVyIHZhbGlkYXRpb24gZmFpbGVkOiBvcmRlclZhbGlkPQkApQMBBQJhRAICICgFAmFFAgEpAg0gc2VuZGVyVmFsaWQ9CQClAwEFAmFGAg4gbWF0Y2hlclZhbGlkPQkApQMBBQJhRwECYUgCAmFJAmFKCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYUkFAmFKCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFJCQDMCAICAS4JAMwIAgUCYUoJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAECYUsCAmFJAmFKCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYUkFAmFKCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFJCQDMCAICAS4JAMwIAgUCYUoJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAECYUwBAmFNCQACAQkAuQkCCQDMCAICCGxwLnJpZGU6CQDMCAIFAmFNBQNuaWwCASABAmFOAQJhTQkAuQkCCQDMCAICCGxwLnJpZGU6CQDMCAIFAmFNBQNuaWwCASAAAmFPCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYUgCBQR0aGlzCQEBVAAAAmFQCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYUgCBQJhTwUCYUIAAmFRCgACYVIJAPwHBAUCYU8CEGdldEluRmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhUgIDSW50BQJhUgkAAgEJAKwCAgkAAwEFAmFSAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQAAmFTCgACYVIJAPwHBAUCYU8CEWdldE91dEZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVICA0ludAUCYVIJAAIBCQCsAgIJAAMBBQJhUgIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AQJhVAAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYU8JAQJheAAHAQJhVQAJANkEAQkBAmFIAgUCYU8JAQJhcAABAmFWAAQCYVcJAQJhSAIFBHRoaXMJAQJhZQAEAmFYCQECYUgCBQR0aGlzCQECYWYABAJhdQkBAmFLAgUCYU8JAQJhdgEFAmFYBAJhdAkBAmFLAgUCYU8JAQJhdgEFAmFXCQC1CQIJAQJhSAIFAmFPCQECYXMCCQCkAwEFAmF0CQCkAwEFAmF1BQFqAQJhWQECYVoDCQAAAgUCYVoFAWkFBHVuaXQJANkEAQUCYVoBAmJhAQJhWgMJAAACBQJhWgUEdW5pdAUBaQkA2AQBCQEFdmFsdWUBBQJhWgECYmIBAmJjCQCZCgcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYmMFAW8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYwUBcAkA2QQBCQCRAwIFAmJjBQFxCQECYVkBCQCRAwIFAmJjBQFyCQECYVkBCQCRAwIFAmJjBQFzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmMFAXQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYwUBdQACYmQJAQJiYgEJAQJhVgAAAmJlBQJiZAACYmYIBQJiZQJfMQACYmcIBQJiZQJfMgACYmgIBQJiZQJfMwACYmkIBQJiZQJfNAACYmoIBQJiZQJfNQACYmsIBQJiZQJfNgACYmwIBQJiZQJfNwECYm0ACQC1CQIJAQJhSAIFAmFPCQECYW8ABQFqAAJibgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmJtAAUBQgIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwACYm8JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJAQJibQAFAUMCGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MBAmJwCgJicQJicgJicwJidAJidQJidgJidwJieAJieQJiegkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYnEJAMwIAgkApAMBBQJicgkAzAgCCQCkAwEFAmJzCQDMCAIJAKQDAQUCYnQJAMwIAgkApAMBBQJidQkAzAgCCQCkAwEFAmJ2CQDMCAIJAKQDAQUCYncJAMwIAgkApAMBBQJieAkAzAgCCQCkAwEFAmJ5CQDMCAIJAKQDAQUCYnoFA25pbAUBagECYkEGAmJCAmJDAmJEAmJ0AmJ3AmJ4CQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYkIJAMwIAgkApAMBBQJiQwkAzAgCCQCkAwEFAmJECQDMCAIJAKQDAQUCYnQJAMwIAgkApAMBBQJidwkAzAgCCQCkAwEFAmJ4BQNuaWwFAWoBAmJFAQJiRgMJAAACBQJiRgIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYkYBAmJHAgJiSAJiSQkAvAIDBQJiSAUBZAUCYkkBAmJKAwJiSAJiSQFMCQC9AgQFAmJIBQFkBQJiSQUBTAECYksEAmJMAmJNAmJOAmJPBAJiUAkBAUQCBQJiTgUCYkwEAmJRCQEBRAIFAmJPBQJiTQkBAmJHAgUCYlEFAmJQAQJiUgMCYk4CYk8CYlMEAmJUCQECYVYABAJiVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJUBQF0BAJiVgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJUBQF1BAJiVwkBAmJLBAUCYlUFAmJWBQJiTgUCYk8EAmJJCQEBRAIFAmJOBQJiVQQCYkgJAQFEAgUCYk8FAmJWBAJiWAkBAUQCBQJiUwUBYgQCYlkJAQJiRwIFAmJJBQJiWAQCYloJAQJiRwIFAmJIBQJiWAkAzAgCBQJiVwkAzAgCBQJiWQkAzAgCBQJiWgUDbmlsAQJjYQMCYk4CYk8CYlMEAmNiCQECYlIDBQJiTgUCYk8FAmJTCQDMCAIJAQFIAgkAkQMCBQJjYgAABQFiCQDMCAIJAQFIAgkAkQMCBQJjYgABBQFiCQDMCAIJAQFIAgkAkQMCBQJjYgACBQFiBQNuaWwBAmNjBAJjZAJjZQJjZgJhYgQCYlQJAQJhVgAEAmNnCQCRAwIFAmJUBQFxBAJjaAkAkQMCBQJiVAUBcgQCY2kJAJEDAgUCYlQFAXMEAmJMCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlQFAXQEAmJNCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlQFAXUEAmNqCQCRAwIFAmJUBQFwBAJjawgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmNnCQCsAgIJAKwCAgIGQXNzZXQgBQJjZwIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkDCQECIT0CBQJjZwUCY2UJAAIBAhVJbnZhbGlkIGFzc2V0IHBhc3NlZC4EAmNsCQECYkUBBQJjaAQCY20JAQFEAgUCY2wFAmJMBAJjbgkBAmJFAQUCY2kEAmNvCQEBRAIFAmNuBQJiTQQCY3AJAQJiRwIFAmNvBQJjbQQCY3EJAQFIAgUCY3AFAWIEAmNyCQEBRAIFAmNmBQFiBAJjcwkBAUQCBQJjawUBYgQCY3QJALwCAwUCY20FAmNyBQJjcwQCY3UJALwCAwUCY28FAmNyBQJjcwQCY3YJAQFLAwUCY3QFAmJMBQVGTE9PUgQCY3cJAQFLAwUCY3UFAmJNBQVGTE9PUgQCY3gDCQAAAgUCY2QCAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFiBQJjdgMJAAACBQJjaAIFV0FWRVMFBHVuaXQJANkEAQUCY2gJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYWIFAmN3AwkAAAIFAmNpAgVXQVZFUwUEdW5pdAkA2QQBBQJjaQkAzAgCCQELU3RyaW5nRW50cnkCCQECYWQCCQClCAEFAmFiBQJjZAkBAmJBBgUCY3YFAmN3BQJjZgUCY3EFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCY3EJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY3EFA25pbAkAnAoKBQJjdgUCY3cFAmNoBQJjaQUCY2wFAmNuBQJjawUCY3AFAmNqBQJjeAECY3kJAmNkAmN6AmNBAmNCAmNDAmNEAmFiAmNFAmNGBAJiVAkBAmFWAAQCY2cJANkEAQkAkQMCBQJiVAUBcQQCY0cJAJEDAgUCYlQFAXIEAmNICQCRAwIFAmJUBQFzBAJjSQkAkQMCBQJiVAUBdgQCY0oJAJEDAgUCYlQFAXcEAmJVCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlQFAXQEAmJWCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlQFAXUEAmNqCQCRAwIFAmJUBQFwBAJjawgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjZwkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJjZwIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmNLCQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmNCCQDZBAECBVdBVkVTBAJjTAkA2AQBCQELdmFsdWVPckVsc2UCBQJjRAkA2QQBAgVXQVZFUwMDCQECIT0CBQJjRwUCY0sGCQECIT0CBQJjSAUCY0wJAAIBAiJJbnZhbGlkIGFtdCBvciBwcmljZSBhc3NldCBwYXNzZWQuBAJjbAMFAmNFCQECYkUBBQJjRwkAZQIJAQJiRQEFAmNHBQJjQQQCY24DBQJjRQkBAmJFAQUCY0gJAGUCCQECYkUBBQJjSAUCY0MEAmNNCQEBRAIFAmNBBQJiVQQCY04JAQFEAgUCY0MFAmJWBAJjTwkBAmJHAgUCY04FAmNNBAJjbQkBAUQCBQJjbAUCYlUEAmNvCQEBRAIFAmNuBQJiVgQCY1ADCQAAAgUCY2sAAAQCY3AFAWUEAmNRBQFlBAJiWAkAdgYJALkCAgUCY00FAmNOAAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEBSAIFAmJYBQFiCQEBSAIFAmNNBQJiVQkBAUgCBQJjTgUCYlYJAQJiRwIJALcCAgUCY28FAmNOCQC3AgIFAmNtBQJjTQUCY1EEAmNwCQECYkcCBQJjbwUCY20EAmNRCQC8AgMJAQFSAQkAuAICBQJjcAUCY08FAWQFAmNwBAJjUgkBAUQCBQJjegUBYgMDCQECIT0CBQJjcAUBZQkAvwICBQJjUQUCY1IHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmNRAh4gZXhjZWVkZWQgdGhlIHBhc3NlZCBsaW1pdCBvZiAJAKYDAQUCY1IEAmNzCQEBRAIFAmNrBQFiBAJjUwkAvQIEBQJjTQkBAmJKAwUCY28FAmNtBQdDRUlMSU5HBQFkBQdDRUlMSU5HBAJjVAkAvQIEBQJjTgUBZAkBAmJKAwUCY28FAmNtBQVGTE9PUgUHQ0VJTElORwQCY1UDCQC/AgIFAmNTBQJjTgkAlAoCBQJjVAUCY04JAJQKAgUCY00FAmNTBAJjVggFAmNVAl8xBAJjVwgFAmNVAl8yBAJiWAkAvQIEBQJjcwUCY1cFAmNvBQVGTE9PUgkAlwoFCQEBSwMFAmJYBQFiBQVGTE9PUgkBAUsDBQJjVgUCYlUFB0NFSUxJTkcJAQFLAwUCY1cFAmJWBQdDRUlMSU5HBQJjcAUCY1EEAmNYCAUCY1ACXzEEAmNZCAUCY1ACXzIEAmNaCAUCY1ACXzMEAmNxCQEBSAIIBQJjUAJfNAUBYgQCZGEJAQFIAggFAmNQAl81BQFiAwkAZwIAAAUCY1gJAAIBAjZJbnZhbGlkIGNhbGN1bGF0aW9ucy4gTFAgY2FsY3VsYXRlZCBpcyBsZXNzIHRoYW4gemVyby4EAmRiAwkBASEBBQJjRgAABQJjWAQCZGMJAGUCBQJjQQUCY1kEAmRkCQBlAgUCY0MFAmNaBAJkZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcABQJjcQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjcQkAzAgCCQELU3RyaW5nRW50cnkCCQECYWECBQJhYgUCY2QJAQJicAoFAmNZBQJjWgUCZGIFAmNxBQJjegUCZGEFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmRjBQJkZAUDbmlsCQCfCg0FAmNYBQJkYgUCY3EFAmNsBQJjbgUCY2sFAmNnBQJjagUCZGUFAmRjBQJkZAUCY0IFAmNEAQJkZgMCZGcCZGgCY2sEAmRpCQEBRwIFAmRnCQC2AgEFAmJrBAJkagkBAUcCBQJkaAkAtgIBBQJibAQCZGsJALwCAwkAdgYJALkCAgUCZGkFAmRqAAAJALYCAQAFAAEAEgUERE9XTgUBZwUCY2sDCQAAAgUCY2sFAWYFAWYFAmRrAQJkbAMCZG0CZG4CZG8EAmRwCQC4AgIJALYCAQkBAmJFAQkBAmJhAQUCYmkFAmRtBAJkcQkAuAICCQC2AgEJAQJiRQEJAQJiYQEFAmJqBQJkbgQCZHIJALgCAgkAtgIBCAkBBXZhbHVlAQkA7AcBBQJiaAhxdWFudGl0eQUCZG8EAmRzCQECZGYDBQJkcAUCZHEFAmRyBQJkcwECZHQDAmR1AmR2AmRvBAJkcAkAZAIJAQJiRQEJAQJiYQEFAmJpBQJkdQQCZHEJAGQCCQECYkUBCQECYmEBBQJiagUCZHYEAmRyCQBkAggJAQV2YWx1ZQEJAOwHAQUCYmgIcXVhbnRpdHkFAmRvBAJkawkBAmRmAwkAtgIBBQJkcAkAtgIBBQJkcQkAtgIBBQJkcgQCZHcJAMwIAgkBDEludGVnZXJFbnRyeQIFAmFrBQZoZWlnaHQJAMwIAgkBC1N0cmluZ0VudHJ5AgUCYWoJAKYDAQUCZGsFA25pbAkAlAoCBQJkdwUCZGsBAmR4AgJkeQJkawMJAMACAgUCZGsFAmR5BgkBAmFMAQkAuQkCCQDMCAICInVwZGF0ZWQgS0xwIGxvd2VyIHRoYW4gY3VycmVudCBLTHAJAMwIAgkApgMBBQJkeQkAzAgCCQCmAwEFAmRrBQNuaWwCASABAmR6AQJkQQQCZHAJAQJiRQEJAQJiYQEFAmJpBAJkcQkBAmJFAQkBAmJhAQUCYmoEAmRCCAUCZEEGYW1vdW50BAJkQwkAbgQIBQJkQQZhbW91bnQIBQJkQQVwcmljZQUBYgUFRkxPT1IEAmREAwkAAAIIBQJkQQlvcmRlclR5cGUFA0J1eQkAlAoCBQJkQgkBAS0BBQJkQwkAlAoCCQEBLQEFAmRCBQJkQwQCZHUIBQJkRAJfMQQCZHYIBQJkRAJfMgMDAwkBAmFUAAYJAAACBQJiZwUBbQYJAAACBQJiZwUBbgkAAgECHEV4Y2hhbmdlIG9wZXJhdGlvbnMgZGlzYWJsZWQDAwkBAiE9AggIBQJkQQlhc3NldFBhaXILYW1vdW50QXNzZXQFAmJpBgkBAiE9AggIBQJkQQlhc3NldFBhaXIKcHJpY2VBc3NldAUCYmoJAAIBAhNXcm9uZyBvcmRlciBhc3NldHMuBAJkRQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUCYWoCATAJAQJhTgECC2ludmFsaWQga0xwBAJkRgkBAmR0AwUCZHUFAmR2AAAEAmRHCAUCZEYCXzEEAmRICAUCZEYCXzIEAmRJCQDAAgIFAmRIBQJkRQQCZEoJALkJAgkAzAgCAgRrTHA9CQDMCAIJAKYDAQUCZEUJAMwIAgIIIGtMcE5ldz0JAMwIAgkApgMBBQJkSAkAzAgCAhQgYW1vdW50QXNzZXRCYWxhbmNlPQkAzAgCCQCkAwEFAmRwCQDMCAICEyBwcmljZUFzc2V0QmFsYW5jZT0JAMwIAgkApAMBBQJkcQkAzAgCAhkgYW1vdW50QXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUCZHUJAMwIAgIYIHByaWNlQXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUCZHYJAMwIAgIIIGhlaWdodD0JAMwIAgkApAMBBQZoZWlnaHQFA25pbAIACQCUCgIFAmRJBQJkSgECZEsBAmRMAwkBAiE9AgkAkAMBCAUCZEwIcGF5bWVudHMAAQkAAgECHWV4YWN0bHkgMSBwYXltZW50IGlzIGV4cGVjdGVkBAJkTQkBBXZhbHVlAQkAkQMCCAUCZEwIcGF5bWVudHMAAAQCY2UJAQV2YWx1ZQEIBQJkTQdhc3NldElkBAJkTggFAmRNBmFtb3VudAQCY1AJAQJjYwQJANgEAQgFAmRMDXRyYW5zYWN0aW9uSWQJANgEAQUCY2UFAmROCAUCZEwGY2FsbGVyBAJjdggFAmNQAl8xBAJjdwgFAmNQAl8yBAJjagkBDXBhcnNlSW50VmFsdWUBCAUCY1ACXzkEAmN4CAUCY1ADXzEwAwMJAQJhVAAGCQAAAgUCY2oFAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmNqCQCXCgUFAmN2BQJjdwUCZE4FAmNlBQJjeAECZE8DAmRMAmN6AmNGAwkBAiE9AgkAkAMBCAUCZEwIcGF5bWVudHMAAgkAAgECH2V4YWN0bHkgMiBwYXltZW50cyBhcmUgZXhwZWN0ZWQEAmRQCQEFdmFsdWUBCQCRAwIIBQJkTAhwYXltZW50cwAABAJkUQkBBXZhbHVlAQkAkQMCCAUCZEwIcGF5bWVudHMAAQQCZFIJAQJjeQkJANgEAQgFAmRMDXRyYW5zYWN0aW9uSWQFAmN6CAUCZFAGYW1vdW50CAUCZFAHYXNzZXRJZAgFAmRRBmFtb3VudAgFAmRRB2Fzc2V0SWQJAKUIAQgFAmRMBmNhbGxlcgcFAmNGBAJjagkBDXBhcnNlSW50VmFsdWUBCAUCZFICXzgDAwMJAQJhVAAGCQAAAgUCY2oFAWwGCQAAAgUCY2oFAW4JAAIBCQCsAgICLFB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmNqBQJkUgECZFMBAmRUBAJkVQkA/AcEBQJhTwIEZW1pdAkAzAgCBQJkVAUDbmlsBQNuaWwDCQAAAgUCZFUFAmRVBAJkVgQCZFcFAmRVAwkAAQIFAmRXAgdBZGRyZXNzBAJkWAUCZFcJAPwHBAUCZFgCBGVtaXQJAMwIAgUCZFQFA25pbAUDbmlsBQR1bml0AwkAAAIFAmRWBQJkVgUCZFQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmRZAgJkVAJhaQQCZFoDCQAAAgUCYWkAAAAACQBrAwUCZFQFAmFpBQFiCQCUCgIJAGUCBQJkVAUCZFoFAmRaAQJlYQQCZWICZWMCYWICYWMEAmVkCQAAAgUCYWMFBHVuaXQEAmVlCQECYkUBCQECYmEBBQJiaQQCZWYJAQJiRQEJAQJiYQEFAmJqBAJlZwMJAAACBQJlYwUCYmkGAwkAAAIFAmVjBQJiagcJAQJhTAECDWludmFsaWQgYXNzZXQEAmVoAwUCZWQJAJQKAgUCZWUFAmVmAwUCZWcJAJQKAgkAZQIFAmVlBQJlYgUCZWYJAJQKAgUCZWUJAGUCBQJlZgUCZWIEAmVpCAUCZWgCXzEEAmVqCAUCZWgCXzIEAmVrAwUCZWcJAJQKAgUCZWIAAAkAlAoCAAAFAmViBAJlbAgFAmVrAl8xBAJlbQgFAmVrAl8yBAJkQggJAQJkWQIFAmVsBQJhUQJfMQQCZEMICQECZFkCBQJlbQUCYVECXzEEAmVuCQECZFkCBQJlYgUCYVEEAmVvCAUCZW4CXzEEAmRaCAUCZW4CXzIEAmVwCQBkAgUCZWkFAmRCBAJlcQkAZAIFAmVqBQJkQwQCZXIJAQJiRwIJAQFEAgUCZXEFAmJsCQEBRAIFAmVwBQJiawQCZXMJAQFIAgUCZXIFAWIEAmV0AwUCZWcFAmVpBQJlagQCZXUJALYCAQUCZXQEAmV2CQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYmgJAKwCAgkArAICAgZhc3NldCAJANgEAQUCYmgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJldwMJAL8CAgUCZXYFAWYGCQECYUwBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmV3BQJldwQCZXgJALYCAQUCZW8EAmV5CQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmV2CQC4AgIJAQpzcXJ0QmlnSW50BAkAtwICBQFkCQC6AgIJALkCAgUCZXgFAWQFAmV1ABIAEgUERE9XTgUBZAUBZAUDbmlsBAJkZQMFAmVkBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCZXMJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZXMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAgkApQgBCQEFdmFsdWUBBQJhYgkA2AQBCQEFdmFsdWUBBQJhYwkBAmJwCgUCZWwFAmVtBQJleQUCZXMAAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAJlegkBAmJHAgkBAUQCBQJlagUCYmwJAQFEAgUCZWkFAmJrBAJlQQkBAUgCBQJlegUBYgQCZUIEAmVDAwUCZWcJAJQKAgUCZWwFAmVpCQCUCgIFAmVtBQJlagQCZFQIBQJlQwJfMQQCZUQIBQJlQwJfMgQCZUUJAKADAQkAvAIDBQJldgkAtgIBCQBpAgUCZFQAAgkAtgIBBQJlRAkAawMJAGUCBQJleQUCZUUFAWIFAmVFCQCXCgUFAmV5BQJkZQUCZFoFAmVCBQJlZwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZUYFAmVHAmVvAmVjAmFiAmFjBAJlZAkAAAIFAmFjBQR1bml0BAJiVAkBAmFWAAQCYlUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVAUBdAQCYlYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVAUBdQQCZUgJAMwIAgMJAAACBQJlYwUCYmgGCQECYUwBAhBpbnZhbGlkIGxwIGFzc2V0BQNuaWwDCQAAAgUCZUgFAmVIBAJlSQMJAAACBQJlRwUCYmkGAwkAAAIFAmVHBQJiagcJAQJhTAECDWludmFsaWQgYXNzZXQEAmVKAwUCZUkJALYCAQkBAmJFAQkBAmJhAQUCYmkJALYCAQkBAmJFAQkBAmJhAQUCYmoEAmVLAwUCZUkFAmJVBQJiVgQCZUwJAQJiRQEJAQJiYQEFAmJpBAJlTQkBAmJFAQkBAmJhAQUCYmoEAmVOAwUCZUkFAmVMBQJlTQQCZU8JALYCAQUCZU4EAmV2CQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYmgJAKwCAgkArAICAgZhc3NldCAJANgEAQUCYmgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJlUAkAtgIBBQJlbwQCZVEJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC6AgIJALkCAgUCZUoJALgCAgUBZAkAdgYJALgCAgUBZAkAugICCQC5AgIFAmVQBQFkBQJldgASBQFoAAAAEgUERE9XTgUBZAUDbmlsBAJlUgkBAmRZAgUCZVEFAmFTBAJlUwgFAmVSAl8xBAJkWggFAmVSAl8yBAJlVAMFAmVJCQCWCgQFAmVTAAAJAGUCBQJlTAUCZVEFAmVNCQCWCgQAAAUCZVMFAmVMCQBlAgUCZU0FAmVRBAJlVQgFAmVUAl8xBAJlVggFAmVUAl8yBAJlVwgFAmVUAl8zBAJlWAgFAmVUAl80BAJlcgkBAmJHAgkBAUQCBQJlWAUCYmwJAQFEAgUCZVcFAmJrBAJlcwkBAUgCBQJlcgUBYgQCZGUDBQJlZAUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZAIJAKUIAQkBBXZhbHVlAQUCYWIJANgEAQkBBXZhbHVlAQUCYWMJAQJiQQYFAmVVBQJlVgUCZW8FAmVzBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmVzBQNuaWwEAmV6CQECYkcCCQEBRAIFAmVNBQJibAkBAUQCBQJlTAUCYmsEAmVBCQEBSAIFAmV6BQFiBAJlQgQCZVkJAGgCCQCgAwEJALwCAwUCZUoFAmVQBQJldgACCQBrAwkAZQIFAmVTBQJlWQUBYgUCZVkJAJcKBQUCZVMFAmRlBQJkWgUCZUIFAmVJCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlWgAEAmRXCQCiCAEJAQFVAAMJAAECBQJkVwIGU3RyaW5nBAJmYQUCZFcJANkEAQUCZmEDCQABAgUCZFcCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZmIABAJkVwkAoggBCQEBVgADCQABAgUCZFcCBlN0cmluZwQCZmEFAmRXCQDZBAEFAmZhAwkAAQIFAmRXAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmZjAQJkTAQCZFcJAQJlWgADCQABAgUCZFcCCkJ5dGVWZWN0b3IEAmZkBQJkVwkAAAIIBQJkTA9jYWxsZXJQdWJsaWNLZXkFAmZkAwkAAQIFAmRXAgRVbml0CQAAAggFAmRMBmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJmZQECZEwEAmZmCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEAmRXCQECZVoAAwkAAQIFAmRXAgpCeXRlVmVjdG9yBAJmZAUCZFcDCQAAAggFAmRMD2NhbGxlclB1YmxpY0tleQUCZmQGBQJmZgMJAAECBQJkVwIEVW5pdAMJAAACCAUCZEwGY2FsbGVyBQR0aGlzBgUCZmYJAAIBAgtNYXRjaCBlcnJvch0CZEwBIWNhbGN1bGF0ZUFtb3VudE91dEZvclN3YXBSRUFET05MWQICZmcCZmgEAmZpAwkAAAIFAmZoBwQCZmoJAQJhSAIFBHRoaXMJAQJhZgAEAmZrCQECYUgCBQR0aGlzCQECYWUACQCUCgIFAmZqBQJmawQCZmoJAQJhSAIFBHRoaXMJAQJhZQAEAmZrCQECYUgCBQR0aGlzCQECYWYACQCUCgIFAmZqBQJmawQCZmoIBQJmaQJfMQQCZmsIBQJmaQJfMgQCZmwJAQJiRQEFAmZrBAJmbQkBAmJFAQUCZmoEAmZuCQBrAwUCZm0FAmZnCQBkAgUCZmwFAmZnBAJmbwkAuQICCQC2AgEFAmZsCQC2AgEFAmZtBAJmcAkAuQICCQC3AgIJALYCAQkBAmJFAQUCZmsJALYCAQUCZmcJALgCAgkAtgIBCQECYkUBBQJmagkAtgIBBQJmbgQCZnEDCQDAAgIFAmZwBQJmbwYJAAIBAhRuZXcgSyBpcyBmZXdlciBlcnJvcgMJAAACBQJmcQUCZnEJAJQKAgUDbmlsBQJmbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAEmY2FsY3VsYXRlQW1vdW50T3V0Rm9yU3dhcEFuZFNlbmRUb2tlbnMEAmZnAmZoAmZyAmZzBAJmdAoAAmFSCQD8BwQFAmFPAhdnZXRTd2FwQ29udHJhY3RSRUFET05MWQUDbmlsBQNuaWwDCQABAgUCYVICBlN0cmluZwUCYVIJAAIBCQCsAgIJAAMBBQJhUgIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nBAJlSAkAzAgCAwkAZwIICQEFdmFsdWUBCQCRAwIIBQJkTAhwYXltZW50cwAABmFtb3VudAUCZmcGCQECYUwBAgxXcm9uZyBhbW91bnQJAMwIAgMJAAACCAUCZEwGY2FsbGVyCQERQGV4dHJOYXRpdmUoMTA2MikBBQJmdAYJAQJhTAECEVBlcm1pc3Npb24gZGVuaWVkBQNuaWwDCQAAAgUCZUgFAmVIBAJkTQkBBXZhbHVlAQkAkQMCCAUCZEwIcGF5bWVudHMAAAQCZmsDCQAAAggFAmRNB2Fzc2V0SWQFBHVuaXQJANgEAQkAmwMBAgVXQVZFUwkA2AQBCQEFdmFsdWUBCAUCZE0HYXNzZXRJZAQCZmoDCQAAAgUCZmgHCQECYUgCBQR0aGlzCQECYWYACQECYUgCBQR0aGlzCQECYWUABAJmbAkAZQIJAQJiRQEFAmZrCAkBBXZhbHVlAQkAkQMCCAUCZEwIcGF5bWVudHMAAAZhbW91bnQEAmZtCQECYkUBBQJmagQCZm4JAGsDBQJmbQUCZmcJAGQCBQJmbAUCZmcEAmZvCQC5AgIJALYCAQUCZmwJALYCAQUCZm0EAmZwCQC5AgIJALYCAQkBAmJFAQUCZmsJALgCAgkAtgIBCQECYkUBBQJmagkAtgIBBQJmbgQCZnEDCQDAAgIFAmZwBQJmbwYJAAIBAhRuZXcgSyBpcyBmZXdlciBlcnJvcgMJAAACBQJmcQUCZnEEAmZ1AwkAZwIFAmZuBQJmcgYJAAIBAixFeGNoYW5nZSByZXN1bHQgaXMgZmV3ZXIgY29pbnMgdGhhbiBleHBlY3RlZAMJAAACBQJmdQUCZnUJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQJmcwUCZm4JAQJhWQEFAmZqBQNuaWwFAmZuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRMAQpzZXRNYW5hZ2VyAQJmdgQCZncJAQJmZQEFAmRMAwkAAAIFAmZ3BQJmdwQCZngJANkEAQUCZnYDCQAAAgUCZngFAmZ4CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFWAAUCZnYFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAEOY29uZmlybU1hbmFnZXIABAJmeQkBAmZiAAQCZnoDCQEJaXNEZWZpbmVkAQUCZnkGCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmZ6BQJmegQCZkEDCQAAAggFAmRMD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCZnkGCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmZBBQJmQQkAzAgCCQELU3RyaW5nRW50cnkCCQEBVQAJANgEAQkBBXZhbHVlAQUCZnkJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVYABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEwBA3B1dAICY3oCZkIDCQBmAgAABQJjegkAAgECIEludmFsaWQgc2xpcHBhZ2VUb2xlcmFuY2UgcGFzc2VkBAJkUgkBAmRPAwUCZEwFAmN6BgQCZGIIBQJkUgJfMgQCY2cIBQJkUgJfNwQCY3gIBQJkUgJfOQQCZGMIBQJkUgNfMTAEAmRkCAUCZFIDXzExBAJmQwgFAmRSA18xMgQCZkQIBQJkUgNfMTMEAmRQCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkTAhwYXltZW50cwAABmFtb3VudAQCZFEJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRMCHBheW1lbnRzAAEGYW1vdW50BAJkcwkBAmRsAwUCZFAFAmRRCQC2AgEAAAMJAAACBQJkcwUCZHMEAmRVCQD8BwQFAmFPAgRlbWl0CQDMCAIFAmRiBQNuaWwFA25pbAMJAAACBQJkVQUCZFUEAmRWBAJkVwUCZFUDCQABAgUCZFcCB0FkZHJlc3MEAmRYBQJkVwkA/AcEBQJkWAIEZW1pdAkAzAgCBQJkYgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZFYFAmRWBAJmRQMJAGYCBQJkYwAACQD8BwQFAmJvAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZkMFAmRjBQNuaWwFA25pbAMJAAACBQJmRQUCZkUEAmZGAwkAZgIFAmRkAAAJAPwHBAUCYm8CA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJmRAUCZGQFA25pbAUDbmlsAwkAAAIFAmZGBQJmRgQCZkcDBQJmQgQCZkgJAPwHBAUCYm4CBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNnBQJkYgUDbmlsAwkAAAIFAmZIBQJmSAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkTAZjYWxsZXIFAmRiBQJjZwUDbmlsBAJmSQkBAmR0AwAAAAAAAAMJAAACBQJmSQUCZkkEAmRrCAUCZkkCXzIEAmZKCAUCZkkCXzEEAmZLCQECZHgCBQJkcwUCZGsDCQAAAgUCZksFAmZLCQDOCAIJAM4IAgUCY3gFAmZHBQJmSgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAEKcHV0Rm9yRnJlZQECZkwDCQBmAgAABQJmTAkAAgECFEludmFsaWQgdmFsdWUgcGFzc2VkBAJkUgkBAmRPAwUCZEwFAmZMBwQCY3gIBQJkUgJfOQQCZFAJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRMCHBheW1lbnRzAAAGYW1vdW50BAJkUQkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZEwIcGF5bWVudHMAAQZhbW91bnQEAmRzCQECZGwDBQJkUAUCZFEJALYCAQAAAwkAAAIFAmRzBQJkcwQCZk0JAQJkdAMAAAAAAAAEAmZKCAUCZk0CXzEEAmRrCAUCZk0CXzIEAmZLCQECZHgCBQJkcwUCZGsDCQAAAgUCZksFAmZLCQDOCAIFAmN4BQJmSgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAEJcHV0T25lVGtuAgJmTgJmTwQCZlAKAAJhUgkA/AcEBQJhTwIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFSAgdCb29sZWFuBQJhUgkAAgEJAKwCAgkAAwEFAmFSAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJmUQMDAwkBAmFUAAYJAAACBQJiZwUBbAYJAAACBQJiZwUBbgYFAmZQBAJlSAkAzAgCAwMJAQEhAQUCZlEGCQECZmMBBQJkTAYJAQJhTAECIXB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRMCHBheW1lbnRzAAEGCQECYUwBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJlSAUCZUgEAmZSCQCRAwIIBQJkTAhwYXltZW50cwAABAJlYwgFAmZSB2Fzc2V0SWQEAmViCAUCZlIGYW1vdW50BAJkcwMJAAACBQJlYwUCYmkJAQJkbAMJALYCAQUCZWIJALYCAQAACQC2AgEAAAMJAAACBQJlYwUCYmoJAQJkbAMJALYCAQAACQC2AgEFAmViCQC2AgEAAAkBAmFMAQIecGF5bWVudCBhc3NldCBpcyBub3Qgc3VwcG9ydGVkAwkAAAIFAmRzBQJkcwQCYWIIBQJkTAZjYWxsZXIEAmFjCAUCZEwNdHJhbnNhY3Rpb25JZAQCZlMJAQJlYQQFAmViBQJlYwUCYWIFAmFjAwkAAAIFAmZTBQJmUwQCZWcIBQJmUwJfNQQCZlQIBQJmUwJfNAQCZFoIBQJmUwJfMwQCZGUIBQJmUwJfMgQCZlUIBQJmUwJfMQQCZlYDAwkAZgIFAmZOAAAJAGYCBQJmTgUCZlUHCQECYUwBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZOBQNuaWwCAAUCZlUEAmRVCQECZFMBBQJmVgMJAAACBQJkVQUCZFUEAmZHAwUCZk8EAmZXCQD8BwQFAmJuAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiaAUCZlYFA25pbAMJAAACBQJmVwUCZlcFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZEwGY2FsbGVyBQJmVgUCYmgFA25pbAQCZlgDCQBmAgUCZFoAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhUAUCZFoFAmVjBQNuaWwFA25pbAQCZlkDCQAAAgUEdGhpcwUCYVAJAJQKAgAAAAADBQJlZwkAlAoCCQEBLQEFAmRaAAAJAJQKAgAACQEBLQEFAmRaBAJkdQgFAmZZAl8xBAJkdggFAmZZAl8yBAJmWgkBAmR0AwUCZHUFAmR2AAAEAmZKCAUCZloCXzEEAmRrCAUCZloCXzIEAmRFCQEFdmFsdWUBCQCiCAEFAmFqBAJmSwkBAmR4AgUCZHMFAmRrAwkAAAIFAmZLBQJmSwkAlAoCCQDOCAIJAM4IAgkAzggCBQJkZQUCZkcFAmZYBQJmSgUCZlYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEwBEXB1dE9uZVRrblJFQURPTkxZAgJlYwJlYgQCZ2EJAQJlYQQFAmViCQECYVkBBQJlYwUEdW5pdAUEdW5pdAQCZlUIBQJnYQJfMQQCZGUIBQJnYQJfMgQCZFoIBQJnYQJfMwQCZlQIBQJnYQJfNAQCZWcIBQJnYQJfNQkAlAoCBQNuaWwJAJUKAwUCZlUFAmRaBQJmVAJkTAEJZ2V0T25lVGtuAgJnYgJmTgQCZlAKAAJhUgkA/AcEBQJhTwIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFSAgdCb29sZWFuBQJhUgkAAgEJAKwCAgkAAwEFAmFSAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJnYwMDCQECYVQABgkAAAIFAmJnBQFuBgUCZlAEAmVICQDMCAIDAwkBASEBBQJnYwYJAQJmYwEFAmRMBgkBAmFMAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZEwIcGF5bWVudHMAAQYJAQJhTAECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmVIBQJlSAQCZUcJAQJhWQEFAmdiBAJmUgkAkQMCCAUCZEwIcGF5bWVudHMAAAQCZWMIBQJmUgdhc3NldElkBAJlbwgFAmZSBmFtb3VudAQCZHMJAQJkbAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZHMFAmRzBAJhYggFAmRMBmNhbGxlcgQCYWMIBQJkTA10cmFuc2FjdGlvbklkBAJnZAkBAmVGBQUCZUcFAmVvBQJlYwUCYWIFAmFjAwkAAAIFAmdkBQJnZAQCZUkIBQJnZAJfNQQCZlQIBQJnZAJfNAQCZFoIBQJnZAJfMwQCZGUIBQJnZAJfMgQCZ2UIBQJnZAJfMQQCZFQDAwkAZgIFAmZOAAAJAGYCBQJmTgUCZ2UHCQECYUwBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZOBQNuaWwCAAUCZ2UEAmdmCQD8BwQFAmFPAgRidXJuCQDMCAIFAmVvBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmVjBQJlbwUDbmlsAwkAAAIFAmdmBQJnZgQCZ2cJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYWIFAmRUBQJlRwUDbmlsBAJmWAMJAGYCBQJkWgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFQBQJkWgUCZUcFA25pbAUDbmlsBAJnaAQCZ2kDCQAAAgUEdGhpcwUCYVAAAAUCZFoDBQJlSQkAlAoCCQEBLQEJAGQCBQJkVAUCZ2kAAAkAlAoCAAAJAQEtAQkAZAIFAmRUBQJnaQQCZHUIBQJnaAJfMQQCZHYIBQJnaAJfMgQCZ2oJAQJkdAMFAmR1BQJkdgAABAJmSggFAmdqAl8xBAJkawgFAmdqAl8yBAJmSwkBAmR4AgUCZHMFAmRrAwkAAAIFAmZLBQJmSwkAlAoCCQDOCAIJAM4IAgkAzggCBQJkZQUCZ2cFAmZYBQJmSgUCZFQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEwBEWdldE9uZVRrblJFQURPTkxZAgJlRwJlbwQCZ2sJAQJlRgUJAQJhWQEFAmVHBQJlbwUCYmgFBHVuaXQFBHVuaXQEAmdlCAUCZ2sCXzEEAmRlCAUCZ2sCXzIEAmRaCAUCZ2sCXzMEAmZUCAUCZ2sCXzQEAmVJCAUCZ2sCXzUJAJQKAgUDbmlsCQCVCgMFAmdlBQJkWgUCZlQCZEwBE3Vuc3Rha2VBbmRHZXRPbmVUa24DAmdsAmdiAmZOBAJmUAoAAmFSCQD8BwQFAmFPAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVICB0Jvb2xlYW4FAmFSCQACAQkArAICCQADAQUCYVICHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmdjAwMJAQJhVAAGCQAAAgUCYmcFAW4GBQJmUAQCZUgJAMwIAgMDCQEBIQEFAmdjBgkBAmZjAQUCZEwGCQECYUwBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkTAhwYXltZW50cwAABgkBAmFMAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZUgFAmVIBAJlRwkBAmFZAQUCZ2IEAmFiCAUCZEwGY2FsbGVyBAJhYwgFAmRMDXRyYW5zYWN0aW9uSWQEAmRzCQECZGwDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmRzBQJkcwQCZ20JAPwHBAUCYm4CB3Vuc3Rha2UJAMwIAgkA2AQBBQJiaAkAzAgCBQJnbAUDbmlsBQNuaWwDCQAAAgUCZ20FAmdtBAJnbgkBAmVGBQUCZUcFAmdsBQJiaAUCYWIFAmFjAwkAAAIFAmduBQJnbgQCZUkIBQJnbgJfNQQCZlQIBQJnbgJfNAQCZFoIBQJnbgJfMwQCZGUIBQJnbgJfMgQCZ2UIBQJnbgJfMQQCZFQDAwkAZgIFAmZOAAAJAGYCBQJmTgUCZ2UHCQECYUwBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZOBQNuaWwCAAUCZ2UEAmdmCQD8BwQFAmFPAgRidXJuCQDMCAIFAmdsBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJoBQJnbAUDbmlsAwkAAAIFAmdmBQJnZgQCZ2cJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRMBmNhbGxlcgUCZFQFAmVHBQNuaWwEAmZYAwkAZgIFAmRaAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYVAFAmRaBQJlRwUDbmlsBQNuaWwEAmdvBAJnaQMJAAACBQR0aGlzBQJhUAAABQJkWgMFAmVJCQCUCgIJAQEtAQkAZAIFAmRUBQJnaQAACQCUCgIAAAkBAS0BCQBkAgUCZFQFAmdpBAJkdQgFAmdvAl8xBAJkdggFAmdvAl8yBAJncAkBAmR0AwUCZHUFAmR2AAAEAmZKCAUCZ3ACXzEEAmRrCAUCZ3ACXzIEAmZLCQECZHgCBQJkcwUCZGsDCQAAAgUCZksFAmZLCQCUCgIJAM4IAgkAzggCCQDOCAIFAmRlBQJnZwUCZlgFAmZKBQJkVAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAEDZ2V0AAQCY1AJAQJkSwEFAmRMBAJncQgFAmNQAl8xBAJjdwgFAmNQAl8yBAJkTggFAmNQAl8zBAJjZQgFAmNQAl80BAJjeAgFAmNQAl81BAJkcwkBAmRsAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJkcwUCZHMEAmdyCQD8BwQFAmFPAgRidXJuCQDMCAIFAmROBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNlBQJkTgUDbmlsAwkAAAIFAmdyBQJncgQCZ3MJAQJkdAMJAQEtAQUCZ3EJAQEtAQUCY3cAAAQCZkoIBQJncwJfMQQCZGsIBQJncwJfMgQCZksJAQJkeAIFAmRzBQJkawMJAAACBQJmSwUCZksJAM4IAgUCY3gFAmZKCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRMAQlnZXROb0xlc3MCAmd0Amd1BAJjUAkBAmRLAQUCZEwEAmN2CAUCY1ACXzEEAmN3CAUCY1ACXzIEAmROCAUCY1ACXzMEAmNlCAUCY1ACXzQEAmN4CAUCY1ACXzUDCQBmAgUCZ3QFAmN2CQACAQkArAICCQCsAgIJAKwCAgIcbm9MZXNzVGhlbkFtdEFzc2V0IGZhaWxlZDogIAkApAMBBQJjdgIDIDwgCQCkAwEFAmd0AwkAZgIFAmd1BQJjdwkAAgEJAKwCAgkArAICCQCsAgICHW5vTGVzc1RoZW5QcmljZUFzc2V0IGZhaWxlZDogCQCkAwEFAmN3AgMgPCAJAKQDAQUCZ3UEAmRzCQECZGwDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmRzBQJkcwQCZ3IJAPwHBAUCYU8CBGJ1cm4JAMwIAgUCZE4FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY2UFAmROBQNuaWwDCQAAAgUCZ3IFAmdyBAJndgkBAmR0AwkBAS0BBQJjdgkBAS0BBQJjdwAABAJmSggFAmd2Al8xBAJkawgFAmd2Al8yBAJmSwkBAmR4AgUCZHMFAmRrAwkAAAIFAmZLBQJmSwkAzggCBQJjeAUCZkoJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEwBDXVuc3Rha2VBbmRHZXQBAmRUBAJndwMJAQIhPQIJAJADAQgFAmRMCHBheW1lbnRzAAAJAAIBAhhObyBwYXltZW50cyBhcmUgZXhwZWN0ZWQGAwkAAAIFAmd3BQJndwQCYlQJAQJhVgAEAmNnCQDZBAEJAJEDAgUCYlQFAXEEAmRzCQECZGwDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmRzBQJkcwQCZ20JAPwHBAUCYm4CB3Vuc3Rha2UJAMwIAgkA2AQBBQJjZwkAzAgCBQJkVAUDbmlsBQNuaWwDCQAAAgUCZ20FAmdtBAJjUAkBAmNjBAkA2AQBCAUCZEwNdHJhbnNhY3Rpb25JZAkA2AQBBQJjZwUCZFQIBQJkTAZjYWxsZXIEAmN2CAUCY1ACXzEEAmN3CAUCY1ACXzIEAmNqCQENcGFyc2VJbnRWYWx1ZQEIBQJjUAJfOQQCY3gIBQJjUANfMTAEAmd4AwMJAQJhVAAGCQAAAgUCY2oFAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmNqBgMJAAACBQJneAUCZ3gEAmdyCQD8BwQFAmFPAgRidXJuCQDMCAIFAmRUBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNnBQJkVAUDbmlsAwkAAAIFAmdyBQJncgQCZ3kJAQJkdAMJAQEtAQUCY3YJAQEtAQUCY3cAAAQCZkoIBQJneQJfMQQCZGsIBQJneQJfMgQCZksJAQJkeAIFAmRzBQJkawMJAAACBQJmSwUCZksJAM4IAgUCY3gFAmZKCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRMARN1bnN0YWtlQW5kR2V0Tm9MZXNzAwJnbAJnegJndQQCZ2MDCQECYVQABgkAAAIFAmJnBQFuBAJlSAkAzAgCAwkBASEBBQJnYwYJAAIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkTAhwYXltZW50cwAABgkAAgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmVIBQJlSAQCZHMJAQJkbAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZHMFAmRzBAJnbQkA/AcEBQJibgIHdW5zdGFrZQkAzAgCCQDYBAEFAmJoCQDMCAIFAmdsBQNuaWwFA25pbAMJAAACBQJnbQUCZ20EAmNQCQECY2MECQDYBAEIBQJkTA10cmFuc2FjdGlvbklkCQDYBAEFAmJoBQJnbAgFAmRMBmNhbGxlcgQCY3YIBQJjUAJfMQQCY3cIBQJjUAJfMgQCY3gIBQJjUANfMTAEAmdBCQDMCAIDCQBnAgUCY3YFAmd6BgkAAgEJALkJAgkAzAgCAixhbW91bnQgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmd6BQNuaWwCAAkAzAgCAwkAZwIFAmN3BQJndQYJAAIBCQC5CQIJAMwIAgIrcHJpY2UgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmd1BQNuaWwCAAUDbmlsAwkAAAIFAmdBBQJnQQQCZ3IJAPwHBAUCYU8CBGJ1cm4JAMwIAgUCZ2wFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYmgFAmdsBQNuaWwDCQAAAgUCZ3IFAmdyBAJnQgkBAmR0AwkBAS0BBQJjdgkBAS0BBQJjdwAABAJmSggFAmdCAl8xBAJkawgFAmdCAl8yBAJmSwkBAmR4AgUCZHMFAmRrAwkAAAIFAmZLBQJmSwkAzggCBQJjeAUCZkoJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEwBCGFjdGl2YXRlAgJnQwJnRAMJAQIhPQIJAKUIAQgFAmRMBmNhbGxlcgkApQgBBQJhTwkAAgECEnBlcm1pc3Npb25zIGRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZQAFAmdDCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZgAFAmdEBQNuaWwCB3N1Y2Nlc3MCZEwBCnJlZnJlc2hLTHAABAJnRQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQJhawAABAJnRgMJAGcCCQBlAgUGaGVpZ2h0BQJnRQUCYW4FBHVuaXQJAQJhTAEJALkJAgkAzAgCCQCkAwEFAmFuCQDMCAICLyBibG9ja3MgaGF2ZSBub3QgcGFzc2VkIHNpbmNlIHRoZSBwcmV2aW91cyBjYWxsBQNuaWwCAAMJAAACBQJnRgUCZ0YEAmRFCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQJhagIBMAkBAmFOAQILaW52YWxpZCBrTHAEAmdHCQECZHQDAAAAAAAABAJnSAgFAmdHAl8xBAJkawgFAmdHAl8yBAJkdwMJAQIhPQIFAmRFBQJkawUCZ0gJAQJhTAECEm5vdGhpbmcgdG8gcmVmcmVzaAkAlAoCBQJkdwkApgMBBQJkawkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQECYVYAAmRMARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQJiRgkAlAoCBQNuaWwJAQJiRQEFAmJGAmRMARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwJiTgJiTwJiUwQCY2IJAQJiUgMFAmJOBQJiTwUCYlMJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJjYgAACQDMCAIJAKYDAQkAkQMCBQJjYgABCQDMCAIJAKYDAQkAkQMCBQJjYgACBQNuaWwCZEwBFHRvWDE4V3JhcHBlclJFQURPTkxZAgFFAUYJAJQKAgUDbmlsCQCmAwEJAQFEAgUBRQUBRgJkTAEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIBSQFKCQCUCgIFA25pbAkBAUgCCQCnAwEFAUkFAUoCZEwBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICYkgCYkkJAJQKAgUDbmlsCQCmAwEJAQJiRwIJAKcDAQUCYkgJAKcDAQUCYkkCZEwBI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJjZAJjegJjQQJjQgJjQwJjRAJhYgJjRQJjRgkAlAoCBQNuaWwJAQJjeQkFAmNkBQJjegUCY0EFAmNCBQJjQwUCY0QFAmFiBQJjRQUCY0YCZEwBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJjZAJjZQJjZgJhYgQCY1AJAQJjYwQFAmNkBQJjZQUCY2YJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmFiCQCUCgIFA25pbAkAnAoKCAUCY1ACXzEIBQJjUAJfMggFAmNQAl8zCAUCY1ACXzQIBQJjUAJfNQgFAmNQAl82CAUCY1ACXzcJAKYDAQgFAmNQAl84CAUCY1ACXzkIBQJjUANfMTACZEwBDXN0YXRzUkVBRE9OTFkABAJiVAkBAmFWAAQCY2cJANkEAQkAkQMCBQJiVAUBcQQCZ0kJAJEDAgUCYlQFAXIEAmdKCQCRAwIFAmJUBQFzBAJjSQkAkQMCBQJiVAUBdgQCY0oJAJEDAgUCYlQFAXcEAmJVCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlQFAXQEAmJWCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlQFAXUEAmdLCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmNnCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmNnAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZ0wJAQJiRQEFAmdJBAJnTQkBAmJFAQUCZ0oEAmdOAwkAAAIFAmdLAAAJAMwIAgUBZQkAzAgCBQFlCQDMCAIFAWUFA25pbAkBAmJSAwUCZ0wFAmdNBQJnSwQCY3EAAAQCZ08JAQFIAgkAkQMCBQJnTgABBQFiBAJnUAkBAUgCCQCRAwIFAmdOAAIFAWIEAmdRCQEFdmFsdWUBCQCaCAIFAmFPCQECYXkBCQClCAEFBHRoaXMJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJnTAkAzAgCCQCkAwEFAmdNCQDMCAIJAKQDAQUCZ0sJAMwIAgkApAMBBQJjcQkAzAgCCQCkAwEFAmdPCQDMCAIJAKQDAQUCZ1AJAMwIAgkApAMBBQJnUQUDbmlsBQFqAmRMASBldmFsdWF0ZVB1dEJ5QW1vdW50QXNzZXRSRUFET05MWQECY0EEAmJUCQECYVYABAJjZwkA2QQBCQCRAwIFAmJUBQFxBAJjRwkAkQMCBQJiVAUBcgQCY2gJANkEAQUCY0cEAmNICQCRAwIFAmJUBQFzBAJjaQkA2QQBBQJjSAQCYlUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVAUBdAQCYlYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVAUBdQQCY2oJAJEDAgUCYlQFAXAEAmdLCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmNnCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmNnAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZ0wJAQJiRQEFAmNHBAJnTQkBAmJFAQUCY0gEAmJQCQEBRAIFAmdMBQJiVQQCYlEJAQFEAgUCZ00FAmJWBAJjcAMJAAACBQJnSwAABQFlCQECYkcCBQJiUQUCYlAEAmNNCQEBRAIFAmNBBQJiVQQCY04JALwCAwUCY00FAmNwBQFkBAJjQwkBAUgCBQJjTgUCYlYEAmRSCQECY3kJAgAAoMIeBQJjQQUCY2gFAmNDBQJjaQIABgcEAmNYCAUCZFICXzEEAmdSCAUCZFICXzMEAmNsCAUCZFICXzQEAmNuCAUCZFICXzUEAmNrCAUCZFICXzYJAJQKAgUDbmlsCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmNYCQDMCAIJAKQDAQkBAUgCBQJjcAUBYgkAzAgCCQCkAwEFAmNsCQDMCAIJAKQDAQUCY24JAMwIAgkApAMBBQJjawkAzAgCBQJjagkAzAgCCQCkAwEFAmNBCQDMCAIJAKQDAQUCY0MFA25pbAUBagJkTAEfZXZhbHVhdGVQdXRCeVByaWNlQXNzZXRSRUFET05MWQECY0MEAmJUCQECYVYABAJjZwkA2QQBCQCRAwIFAmJUBQFxBAJjRwkAkQMCBQJiVAUBcgQCY2gJANkEAQUCY0cEAmNICQCRAwIFAmJUBQFzBAJjaQkA2QQBBQJjSAQCYlUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVAUBdAQCYlYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVAUBdQQCY2oJAJEDAgUCYlQFAXAEAmdLCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmNnCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmNnAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZ1MJAQJiRQEFAmNHBAJnVAkBAmJFAQUCY0gEAmdVCQEBRAIFAmdTBQJiVQQCZ1YJAQFEAgUCZ1QFAmJWBAJjcAMJAAACBQJnSwAABQFlCQECYkcCBQJnVgUCZ1UEAmNOCQEBRAIFAmNDBQJiVgQCY00JALwCAwUCY04FAWQFAmNwBAJjQQkBAUgCBQJjTQUCYlUEAmRSCQECY3kJAgAAoMIeBQJjQQUCY2gFAmNDBQJjaQIABgcEAmNYCAUCZFICXzEEAmdSCAUCZFICXzMEAmNsCAUCZFICXzQEAmNuCAUCZFICXzUEAmNrCAUCZFICXzYJAJQKAgUDbmlsCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmNYCQDMCAIJAKQDAQkBAUgCBQJjcAUBYgkAzAgCCQCkAwEFAmNsCQDMCAIJAKQDAQUCY24JAMwIAgkApAMBBQJjawkAzAgCBQJjagkAzAgCCQCkAwEFAmNBCQDMCAIJAKQDAQUCY0MFA25pbAUBagJkTAETZXZhbHVhdGVHZXRSRUFET05MWQICZ1cCZ1gEAmNQCQECY2MEAgAFAmdXBQJnWAUEdGhpcwQCY3YIBQJjUAJfMQQCY3cIBQJjUAJfMgQCY2wIBQJjUAJfNQQCY24IBQJjUAJfNgQCY2sIBQJjUAJfNwQCY3EIBQJjUAJfOAQCY2oJAQ1wYXJzZUludFZhbHVlAQgFAmNQAl85CQCUCgIFA25pbAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY3YJAMwIAgkApAMBBQJjdwkAzAgCCQCkAwEFAmNsCQDMCAIJAKQDAQUCY24JAMwIAgkApAMBBQJjawkAzAgCCQCmAwEFAmNxCQDMCAIJAKQDAQUCY2oFA25pbAUBagECZ1kBAmdaAAQCaGEEAmRXCQECZVoAAwkAAQIFAmRXAgpCeXRlVmVjdG9yBAJmZAUCZFcFAmZkAwkAAQIFAmRXAgRVbml0CAUCZ1kPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEAmRXBQJnWQMJAAECBQJkVwIFT3JkZXIEAmRBBQJkVwQCaGIJAQJhVQAEAmhjCQECZHoBBQJkQQQCYUQIBQJoYwJfMQQCYUUIBQJoYwJfMgQCYUYJAPQDAwgFAmRBCWJvZHlCeXRlcwkAkQMCCAUCZEEGcHJvb2ZzAAAIBQJkQQ9zZW5kZXJQdWJsaWNLZXkEAmFHCQD0AwMIBQJkQQlib2R5Qnl0ZXMJAJEDAggFAmRBBnByb29mcwABBQJoYgMDAwUCYUQFAmFGBwUCYUcHBgkBAmFDBAUCYUQFAmFFBQJhRgUCYUcDCQABAgUCZFcCFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJmYQUCZFcDCQD0AwMIBQJnWQlib2R5Qnl0ZXMJAJEDAggFAmdZBnByb29mcwAABQJoYQYEAmhkCQD2AwEJAQV2YWx1ZQEIBQJmYQZzY3JpcHQEAmhlCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYU8JAQJhQQAEAmhmCQDxBwEFBHRoaXMDCQAAAgUCaGUFAmhkCQECIT0CBQJoZgUCaGQHCQD0AwMIBQJnWQlib2R5Qnl0ZXMJAJEDAggFAmdZBnByb29mcwAABQJoYdSzfpw=", "height": 2442511, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 23HB4bSR3CPyvw7dMasHNEejo5mZ3rdYXSh48LK82JHj Next: BERcatXxy3bs2AXEdedNGkopQmA4dAfZKSZ23YDdbfgr Diff:
OldNewDifferences
8484 else I
8585
8686
87-func S () = "%s__factoryContract"
87+func S () = "%s__swapContract"
8888
8989
90-func T () = "%s__managerPublicKey"
90+func T () = "%s__factoryContract"
9191
9292
93-func U () = "%s__pendingManagerPublicKey"
93+func U () = "%s__managerPublicKey"
9494
9595
96-func V () = "%s%s__price__last"
96+func V () = "%s__pendingManagerPublicKey"
9797
9898
99-func W (X,Y) = makeString(["%s%s%d%d__price__history", toString(X), toString(Y)], j)
99+func W () = "%s%s__price__last"
100100
101101
102-func Z (aa,ab) = ((("%s%s%s__P__" + aa) + "__") + ab)
102+func X (Y,Z) = makeString(["%s%s%d%d__price__history", toString(Y), toString(Z)], j)
103103
104104
105-func ac (aa,ab) = ((("%s%s%s__G__" + aa) + "__") + ab)
105+func aa (ab,ac) = ((("%s%s%s__P__" + ab) + "__") + ac)
106106
107107
108-func ad () = "%s__amountAsset"
108+func ad (ab,ac) = ((("%s%s%s__G__" + ab) + "__") + ac)
109109
110110
111-func ae () = "%s__priceAsset"
111+func ae () = "%s__amountAsset"
112112
113113
114-let af = "%s__fee"
115-
116-let ag = fraction(10, b, 10000)
117-
118-let ah = valueOrElse(getInteger(this, af), ag)
119-
120-let ai = makeString(["%s", "kLp"], j)
121-
122-let aj = makeString(["%s", "kLpRefreshedHeight"], j)
123-
124-let ak = makeString(["%s", "refreshKLpDelay"], j)
125-
126-let al = 30
127-
128-let am = valueOrElse(getInteger(this, ak), al)
129-
130-func an () = "%s__factoryConfig"
114+func af () = "%s__priceAsset"
131115
132116
133-func ao () = "%s%s__matcher__publicKey"
117+let ag = "%s__fee"
118+
119+let ah = fraction(10, b, 10000)
120+
121+let ai = valueOrElse(getInteger(this, ag), ah)
122+
123+let aj = makeString(["%s", "kLp"], j)
124+
125+let ak = makeString(["%s", "kLpRefreshedHeight"], j)
126+
127+let al = makeString(["%s", "refreshKLpDelay"], j)
128+
129+let am = 30
130+
131+let an = valueOrElse(getInteger(this, al), am)
132+
133+func ao () = "%s__factoryConfig"
134134
135135
136-func ap (aq) = (("%s%s%s__" + aq) + "__mappings__poolContract2LpAsset")
136+func ap () = "%s%s__matcher__publicKey"
137137
138138
139-func ar (as,at) = (((("%d%d%s__" + as) + "__") + at) + "__config")
139+func aq (ar) = (("%s%s%s__" + ar) + "__mappings__poolContract2LpAsset")
140140
141141
142-func au (av) = ("%s%s%s__mappings__baseAsset2internalId__" + av)
142+func as (at,au) = (((("%d%d%s__" + at) + "__") + au) + "__config")
143143
144144
145-func aw () = "%s__shutdown"
145+func av (aw) = ("%s%s%s__mappings__baseAsset2internalId__" + aw)
146146
147147
148-func ax (ay) = ("%s%s__poolWeight__" + ay)
148+func ax () = "%s__shutdown"
149149
150150
151-func az () = "%s__allowedLpScriptHash"
151+func ay (az) = ("%s%s__poolWeight__" + az)
152152
153153
154-let aA = "%s__feeCollectorAddress"
155-
156-func aB (aC,aD,aE,aF) = throw((((((((("order validation failed: orderValid=" + toString(aC)) + " (") + aD) + ")") + " senderValid=") + toString(aE)) + " matcherValid=") + toString(aF)))
154+func aA () = "%s__allowedLpScriptHash"
157155
158156
159-func aG (aH,aI) = valueOrErrorMessage(getString(aH, aI), makeString(["mandatory ", toString(aH), ".", aI, " is not defined"], ""))
157+let aB = "%s__feeCollectorAddress"
158+
159+func aC (aD,aE,aF,aG) = throw((((((((("order validation failed: orderValid=" + toString(aD)) + " (") + aE) + ")") + " senderValid=") + toString(aF)) + " matcherValid=") + toString(aG)))
160160
161161
162-func aJ (aH,aI) = valueOrErrorMessage(getInteger(aH, aI), makeString(["mandatory ", toString(aH), ".", aI, " is not defined"], ""))
162+func aH (aI,aJ) = valueOrErrorMessage(getString(aI, aJ), makeString(["mandatory ", toString(aI), ".", aJ, " is not defined"], ""))
163163
164164
165-func aK (aL) = throw(makeString(["lp.ride:", aL], " "))
165+func aK (aI,aJ) = valueOrErrorMessage(getInteger(aI, aJ), makeString(["mandatory ", toString(aI), ".", aJ, " is not defined"], ""))
166166
167167
168-func aM (aL) = makeString(["lp.ride:", aL], " ")
168+func aL (aM) = throw(makeString(["lp.ride:", aM], " "))
169169
170170
171-let aN = addressFromStringValue(aG(this, S()))
171+func aN (aM) = makeString(["lp.ride:", aM], " ")
172172
173-let aO = addressFromStringValue(aG(aN, aA))
174173
175-let aP = {
176- let aQ = invoke(aN, "getInFeeREADONLY", [toString(this)], nil)
177- if ($isInstanceOf(aQ, "Int"))
178- then aQ
179- else throw(($getType(aQ) + " couldn't be cast to Int"))
174+let aO = addressFromStringValue(aH(this, T()))
175+
176+let aP = addressFromStringValue(aH(aO, aB))
177+
178+let aQ = {
179+ let aR = invoke(aO, "getInFeeREADONLY", [toString(this)], nil)
180+ if ($isInstanceOf(aR, "Int"))
181+ then aR
182+ else throw(($getType(aR) + " couldn't be cast to Int"))
180183 }
181184
182-let aR = {
183- let aQ = invoke(aN, "getOutFeeREADONLY", [toString(this)], nil)
184- if ($isInstanceOf(aQ, "Int"))
185- then aQ
186- else throw(($getType(aQ) + " couldn't be cast to Int"))
185+let aS = {
186+ let aR = invoke(aO, "getOutFeeREADONLY", [toString(this)], nil)
187+ if ($isInstanceOf(aR, "Int"))
188+ then aR
189+ else throw(($getType(aR) + " couldn't be cast to Int"))
187190 }
188191
189-func aS () = valueOrElse(getBoolean(aN, aw()), false)
192+func aT () = valueOrElse(getBoolean(aO, ax()), false)
190193
191194
192-func aT () = fromBase58String(aG(aN, ao()))
195+func aU () = fromBase58String(aH(aO, ap()))
193196
194197
195-func aU () = {
196- let aV = aG(this, ad())
197- let aW = aG(this, ae())
198- let at = aJ(aN, au(aW))
199- let as = aJ(aN, au(aV))
200- split(aG(aN, ar(toString(as), toString(at))), j)
198+func aV () = {
199+ let aW = aH(this, ae())
200+ let aX = aH(this, af())
201+ let au = aK(aO, av(aX))
202+ let at = aK(aO, av(aW))
203+ split(aH(aO, as(toString(at), toString(au))), j)
201204 }
202205
203206
204-func aX (aY) = if ((aY == i))
207+func aY (aZ) = if ((aZ == i))
205208 then unit
206- else fromBase58String(aY)
209+ else fromBase58String(aZ)
207210
208211
209-func aZ (aY) = if ((aY == unit))
212+func ba (aZ) = if ((aZ == unit))
210213 then i
211- else toBase58String(value(aY))
214+ else toBase58String(value(aZ))
212215
213216
214-func ba (bb) = $Tuple7(addressFromStringValue(bb[o]), parseIntValue(bb[p]), fromBase58String(bb[q]), aX(bb[r]), aX(bb[s]), parseIntValue(bb[t]), parseIntValue(bb[u]))
217+func bb (bc) = $Tuple7(addressFromStringValue(bc[o]), parseIntValue(bc[p]), fromBase58String(bc[q]), aY(bc[r]), aY(bc[s]), parseIntValue(bc[t]), parseIntValue(bc[u]))
215218
216219
217-let bc = ba(aU())
220+let bd = bb(aV())
218221
219-let bd = bc
222+let be = bd
220223
221-let be = bd._1
224+let bf = be._1
222225
223-let bf = bd._2
226+let bg = be._2
224227
225-let bg = bd._3
228+let bh = be._3
226229
227-let bh = bd._4
230+let bi = be._4
228231
229-let bi = bd._5
232+let bj = be._5
230233
231-let bj = bd._6
234+let bk = be._6
232235
233-let bk = bd._7
236+let bl = be._7
234237
235-func bl () = split(aG(aN, an()), j)
238+func bm () = split(aH(aO, ao()), j)
236239
237240
238-let bm = valueOrErrorMessage(addressFromString(bl()[B]), "incorrect staking address")
241+let bn = valueOrErrorMessage(addressFromString(bm()[B]), "incorrect staking address")
239242
240-let bn = valueOrErrorMessage(addressFromString(bl()[C]), "incorrect staking address")
243+let bo = valueOrErrorMessage(addressFromString(bm()[C]), "incorrect staking address")
241244
242-func bo (bp,bq,br,bs,bt,bu,bv,bw,bx,by) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bp), toString(bq), toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by)], j)
245+func bp (bq,br,bs,bt,bu,bv,bw,bx,by,bz) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bq), toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by), toString(bz)], j)
243246
244247
245-func bz (bA,bB,bC,bs,bv,bw) = makeString(["%d%d%d%d%d%d", toString(bA), toString(bB), toString(bC), toString(bs), toString(bv), toString(bw)], j)
248+func bA (bB,bC,bD,bt,bw,bx) = makeString(["%d%d%d%d%d%d", toString(bB), toString(bC), toString(bD), toString(bt), toString(bw), toString(bx)], j)
246249
247250
248-func bD (bE) = if ((bE == "WAVES"))
251+func bE (bF) = if ((bF == "WAVES"))
249252 then wavesBalance(this).available
250- else assetBalance(this, fromBase58String(bE))
253+ else assetBalance(this, fromBase58String(bF))
251254
252255
253-func bF (bG,bH) = fraction(bG, d, bH)
256+func bG (bH,bI) = fraction(bH, d, bI)
254257
255258
256-func bI (bG,bH,L) = fraction(bG, d, bH, L)
259+func bJ (bH,bI,L) = fraction(bH, d, bI, L)
257260
258261
259-func bJ (bK,bL,bM,bN) = {
260- let bO = D(bM, bK)
262+func bK (bL,bM,bN,bO) = {
261263 let bP = D(bN, bL)
262- bF(bP, bO)
264+ let bQ = D(bO, bM)
265+ bG(bQ, bP)
263266 }
264267
265268
266-func bQ (bM,bN,bR) = {
267- let bS = aU()
268- let bT = parseIntValue(bS[t])
269- let bU = parseIntValue(bS[u])
270- let bV = bJ(bT, bU, bM, bN)
271- let bH = D(bM, bT)
272- let bG = D(bN, bU)
273- let bW = D(bR, b)
274- let bX = bF(bH, bW)
275- let bY = bF(bG, bW)
276-[bV, bX, bY]
269+func bR (bN,bO,bS) = {
270+ let bT = aV()
271+ let bU = parseIntValue(bT[t])
272+ let bV = parseIntValue(bT[u])
273+ let bW = bK(bU, bV, bN, bO)
274+ let bI = D(bN, bU)
275+ let bH = D(bO, bV)
276+ let bX = D(bS, b)
277+ let bY = bG(bI, bX)
278+ let bZ = bG(bH, bX)
279+[bW, bY, bZ]
277280 }
278281
279282
280-func bZ (bM,bN,bR) = {
281- let ca = bQ(bM, bN, bR)
282-[H(ca[0], b), H(ca[1], b), H(ca[2], b)]
283+func ca (bN,bO,bS) = {
284+ let cb = bR(bN, bO, bS)
285+[H(cb[0], b), H(cb[1], b), H(cb[2], b)]
283286 }
284287
285288
286-func cb (cc,cd,ce,aa) = {
287- let bS = aU()
288- let cf = bS[q]
289- let cg = bS[r]
290- let ch = bS[s]
291- let bK = parseIntValue(bS[t])
292- let bL = parseIntValue(bS[u])
293- let ci = bS[p]
294- let cj = valueOrErrorMessage(assetInfo(fromBase58String(cf)), (("Asset " + cf) + " doesn't exist")).quantity
295- if ((cf != cd))
289+func cc (cd,ce,cf,ab) = {
290+ let bT = aV()
291+ let cg = bT[q]
292+ let ch = bT[r]
293+ let ci = bT[s]
294+ let bL = parseIntValue(bT[t])
295+ let bM = parseIntValue(bT[u])
296+ let cj = bT[p]
297+ let ck = valueOrErrorMessage(assetInfo(fromBase58String(cg)), (("Asset " + cg) + " doesn't exist")).quantity
298+ if ((cg != ce))
296299 then throw("Invalid asset passed.")
297300 else {
298- let ck = bD(cg)
299- let cl = D(ck, bK)
300- let cm = bD(ch)
301- let cn = D(cm, bL)
302- let co = bF(cn, cl)
303- let cp = H(co, b)
304- let cq = D(ce, b)
305- let cr = D(cj, b)
306- let cs = fraction(cl, cq, cr)
307- let ct = fraction(cn, cq, cr)
308- let cu = K(cs, bK, FLOOR)
301+ let cl = bE(ch)
302+ let cm = D(cl, bL)
303+ let cn = bE(ci)
304+ let co = D(cn, bM)
305+ let cp = bG(co, cm)
306+ let cq = H(cp, b)
307+ let cr = D(cf, b)
308+ let cs = D(ck, b)
309+ let ct = fraction(cm, cr, cs)
310+ let cu = fraction(co, cr, cs)
309311 let cv = K(ct, bL, FLOOR)
310- let cw = if ((cc == ""))
312+ let cw = K(cu, bM, FLOOR)
313+ let cx = if ((cd == ""))
311314 then nil
312- else [ScriptTransfer(aa, cu, if ((cg == "WAVES"))
315+ else [ScriptTransfer(ab, cv, if ((ch == "WAVES"))
313316 then unit
314- else fromBase58String(cg)), ScriptTransfer(aa, cv, if ((ch == "WAVES"))
317+ else fromBase58String(ch)), ScriptTransfer(ab, cw, if ((ci == "WAVES"))
315318 then unit
316- else fromBase58String(ch)), StringEntry(ac(toString(aa), cc), bz(cu, cv, ce, cp, height, lastBlock.timestamp)), IntegerEntry(V(), cp), IntegerEntry(W(height, lastBlock.timestamp), cp)]
317- $Tuple10(cu, cv, cg, ch, ck, cm, cj, co, ci, cw)
319+ else fromBase58String(ci)), StringEntry(ad(toString(ab), cd), bA(cv, cw, cf, cq, height, lastBlock.timestamp)), IntegerEntry(W(), cq), IntegerEntry(X(height, lastBlock.timestamp), cq)]
320+ $Tuple10(cv, cw, ch, ci, cl, cn, ck, cp, cj, cx)
318321 }
319322 }
320323
321324
322-func cx (cc,cy,cz,cA,cB,cC,aa,cD,cE) = {
323- let bS = aU()
324- let cf = fromBase58String(bS[q])
325- let cF = bS[r]
326- let cG = bS[s]
327- let cH = bS[v]
328- let cI = bS[w]
329- let bT = parseIntValue(bS[t])
330- let bU = parseIntValue(bS[u])
331- let ci = bS[p]
332- let cj = valueOrErrorMessage(assetInfo(cf), (("Asset " + toBase58String(cf)) + " doesn't exist")).quantity
333- let cJ = toBase58String(valueOrElse(cA, fromBase58String("WAVES")))
334- let cK = toBase58String(valueOrElse(cC, fromBase58String("WAVES")))
335- if (if ((cF != cJ))
325+func cy (cd,cz,cA,cB,cC,cD,ab,cE,cF) = {
326+ let bT = aV()
327+ let cg = fromBase58String(bT[q])
328+ let cG = bT[r]
329+ let cH = bT[s]
330+ let cI = bT[v]
331+ let cJ = bT[w]
332+ let bU = parseIntValue(bT[t])
333+ let bV = parseIntValue(bT[u])
334+ let cj = bT[p]
335+ let ck = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
336+ let cK = toBase58String(valueOrElse(cB, fromBase58String("WAVES")))
337+ let cL = toBase58String(valueOrElse(cD, fromBase58String("WAVES")))
338+ if (if ((cG != cK))
336339 then true
337- else (cG != cK))
340+ else (cH != cL))
338341 then throw("Invalid amt or price asset passed.")
339342 else {
340- let ck = if (cD)
341- then bD(cF)
342- else (bD(cF) - cz)
343- let cm = if (cD)
344- then bD(cG)
345- else (bD(cG) - cB)
346- let cL = D(cz, bT)
347- let cM = D(cB, bU)
348- let cN = bF(cM, cL)
349- let cl = D(ck, bT)
350- let cn = D(cm, bU)
351- let cO = if ((cj == 0))
343+ let cl = if (cE)
344+ then bE(cG)
345+ else (bE(cG) - cA)
346+ let cn = if (cE)
347+ then bE(cH)
348+ else (bE(cH) - cC)
349+ let cM = D(cA, bU)
350+ let cN = D(cC, bV)
351+ let cO = bG(cN, cM)
352+ let cm = D(cl, bU)
353+ let co = D(cn, bV)
354+ let cP = if ((ck == 0))
352355 then {
353- let co = e
354- let cP = e
355- let bW = pow((cL * cM), 0, toBigInt(5), 1, 0, DOWN)
356- $Tuple5(H(bW, b), H(cL, bT), H(cM, bU), bF((cn + cM), (cl + cL)), cP)
356+ let cp = e
357+ let cQ = e
358+ let bX = pow((cM * cN), 0, toBigInt(5), 1, 0, DOWN)
359+ $Tuple5(H(bX, b), H(cM, bU), H(cN, bV), bG((co + cN), (cm + cM)), cQ)
357360 }
358361 else {
359- let co = bF(cn, cl)
360- let cP = fraction(R((co - cN)), d, co)
361- let cQ = D(cy, b)
362- if (if ((co != e))
363- then (cP > cQ)
362+ let cp = bG(co, cm)
363+ let cQ = fraction(R((cp - cO)), d, cp)
364+ let cR = D(cz, b)
365+ if (if ((cp != e))
366+ then (cQ > cR)
364367 else false)
365- then throw(((("Price slippage " + toString(cP)) + " exceeded the passed limit of ") + toString(cQ)))
368+ then throw(((("Price slippage " + toString(cQ)) + " exceeded the passed limit of ") + toString(cR)))
366369 else {
367- let cr = D(cj, b)
368- let cR = fraction(cL, bI(cn, cl, CEILING), d, CEILING)
369- let cS = fraction(cM, d, bI(cn, cl, FLOOR), CEILING)
370- let cT = if ((cR > cM))
371- then $Tuple2(cS, cM)
372- else $Tuple2(cL, cR)
373- let cU = cT._1
374- let cV = cT._2
375- let bW = fraction(cr, cV, cn, FLOOR)
376- $Tuple5(K(bW, b, FLOOR), K(cU, bT, CEILING), K(cV, bU, CEILING), co, cP)
370+ let cs = D(ck, b)
371+ let cS = fraction(cM, bJ(co, cm, CEILING), d, CEILING)
372+ let cT = fraction(cN, d, bJ(co, cm, FLOOR), CEILING)
373+ let cU = if ((cS > cN))
374+ then $Tuple2(cT, cN)
375+ else $Tuple2(cM, cS)
376+ let cV = cU._1
377+ let cW = cU._2
378+ let bX = fraction(cs, cW, co, FLOOR)
379+ $Tuple5(K(bX, b, FLOOR), K(cV, bU, CEILING), K(cW, bV, CEILING), cp, cQ)
377380 }
378381 }
379- let cW = cO._1
380- let cX = cO._2
381- let cY = cO._3
382- let cp = H(cO._4, b)
383- let cZ = H(cO._5, b)
384- if ((0 >= cW))
382+ let cX = cP._1
383+ let cY = cP._2
384+ let cZ = cP._3
385+ let cq = H(cP._4, b)
386+ let da = H(cP._5, b)
387+ if ((0 >= cX))
385388 then throw("Invalid calculations. LP calculated is less than zero.")
386389 else {
387- let da = if (!(cE))
390+ let db = if (!(cF))
388391 then 0
389- else cW
390- let db = (cz - cX)
391- let dc = (cB - cY)
392- let dd = [IntegerEntry(V(), cp), IntegerEntry(W(height, lastBlock.timestamp), cp), StringEntry(Z(aa, cc), bo(cX, cY, da, cp, cy, cZ, height, lastBlock.timestamp, db, dc))]
393- $Tuple13(cW, da, cp, ck, cm, cj, cf, ci, dd, db, dc, cA, cC)
392+ else cX
393+ let dc = (cA - cY)
394+ let dd = (cC - cZ)
395+ let de = [IntegerEntry(W(), cq), IntegerEntry(X(height, lastBlock.timestamp), cq), StringEntry(aa(ab, cd), bp(cY, cZ, db, cq, cz, da, height, lastBlock.timestamp, dc, dd))]
396+ $Tuple13(cX, db, cq, cl, cn, ck, cg, cj, de, dc, dd, cB, cD)
394397 }
395398 }
396399 }
397400
398401
399-func de (df,dg,cj) = {
400- let dh = G(df, toBigInt(bj))
402+func df (dg,dh,ck) = {
401403 let di = G(dg, toBigInt(bk))
402- let dj = fraction(pow((dh * di), 0, toBigInt(5), 1, 18, DOWN), g, cj)
403- if ((cj == f))
404+ let dj = G(dh, toBigInt(bl))
405+ let dk = fraction(pow((di * dj), 0, toBigInt(5), 1, 18, DOWN), g, ck)
406+ if ((ck == f))
404407 then f
405- else dj
408+ else dk
406409 }
407410
408411
409-func dk (dl,dm,dn) = {
410- let do = (toBigInt(bD(aZ(bh))) - dl)
411- let dp = (toBigInt(bD(aZ(bi))) - dm)
412- let dq = (toBigInt(value(assetInfo(bg)).quantity) - dn)
413- let dr = de(do, dp, dq)
414- dr
412+func dl (dm,dn,do) = {
413+ let dp = (toBigInt(bE(ba(bi))) - dm)
414+ let dq = (toBigInt(bE(ba(bj))) - dn)
415+ let dr = (toBigInt(value(assetInfo(bh)).quantity) - do)
416+ let ds = df(dp, dq, dr)
417+ ds
415418 }
416419
417420
418-func ds (dt,du,dn) = {
419- let do = (bD(aZ(bh)) + dt)
420- let dp = (bD(aZ(bi)) + du)
421- let dq = (value(assetInfo(bg)).quantity + dn)
422- let dj = de(toBigInt(do), toBigInt(dp), toBigInt(dq))
423- let dv = [IntegerEntry(aj, height), StringEntry(ai, toString(dj))]
424- $Tuple2(dv, dj)
421+func dt (du,dv,do) = {
422+ let dp = (bE(ba(bi)) + du)
423+ let dq = (bE(ba(bj)) + dv)
424+ let dr = (value(assetInfo(bh)).quantity + do)
425+ let dk = df(toBigInt(dp), toBigInt(dq), toBigInt(dr))
426+ let dw = [IntegerEntry(ak, height), StringEntry(aj, toString(dk))]
427+ $Tuple2(dw, dk)
425428 }
426429
427430
428-func dw (dx,dj) = if ((dj >= dx))
431+func dx (dy,dk) = if ((dk >= dy))
429432 then true
430- else aK(makeString(["updated KLp lower than current KLp", toString(dx), toString(dj)], " "))
433+ else aL(makeString(["updated KLp lower than current KLp", toString(dy), toString(dk)], " "))
431434
432435
433-func dy (dz) = {
434- let do = bD(aZ(bh))
435- let dp = bD(aZ(bi))
436- let dA = dz.amount
437- let dB = fraction(dz.amount, dz.price, b, FLOOR)
438- let dC = if ((dz.orderType == Buy))
439- then $Tuple2(dA, -(dB))
440- else $Tuple2(-(dA), dB)
441- let dt = dC._1
442- let du = dC._2
443- if (if (if (aS())
436+func dz (dA) = {
437+ let dp = bE(ba(bi))
438+ let dq = bE(ba(bj))
439+ let dB = dA.amount
440+ let dC = fraction(dA.amount, dA.price, b, FLOOR)
441+ let dD = if ((dA.orderType == Buy))
442+ then $Tuple2(dB, -(dC))
443+ else $Tuple2(-(dB), dC)
444+ let du = dD._1
445+ let dv = dD._2
446+ if (if (if (aT())
444447 then true
445- else (bf == m))
448+ else (bg == m))
446449 then true
447- else (bf == n))
450+ else (bg == n))
448451 then throw("Exchange operations disabled")
449- else if (if ((dz.assetPair.amountAsset != bh))
452+ else if (if ((dA.assetPair.amountAsset != bi))
450453 then true
451- else (dz.assetPair.priceAsset != bi))
454+ else (dA.assetPair.priceAsset != bj))
452455 then throw("Wrong order assets.")
453456 else {
454- let dD = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ai), "0")), aM("invalid kLp"))
455- let dE = ds(dt, du, 0)
456- let dF = dE._1
457- let dG = dE._2
458- let dH = (dG >= dD)
459- let dI = makeString(["kLp=", toString(dD), " kLpNew=", toString(dG), " amountAssetBalance=", toString(do), " priceAssetBalance=", toString(dp), " amountAssetBalanceDelta=", toString(dt), " priceAssetBalanceDelta=", toString(du), " height=", toString(height)], "")
460- $Tuple2(dH, dI)
457+ let dE = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aN("invalid kLp"))
458+ let dF = dt(du, dv, 0)
459+ let dG = dF._1
460+ let dH = dF._2
461+ let dI = (dH >= dE)
462+ let dJ = makeString(["kLp=", toString(dE), " kLpNew=", toString(dH), " amountAssetBalance=", toString(dp), " priceAssetBalance=", toString(dq), " amountAssetBalanceDelta=", toString(du), " priceAssetBalanceDelta=", toString(dv), " height=", toString(height)], "")
463+ $Tuple2(dI, dJ)
461464 }
462465 }
463466
464467
465-func dJ (dK) = if ((size(dK.payments) != 1))
468+func dK (dL) = if ((size(dL.payments) != 1))
466469 then throw("exactly 1 payment is expected")
467470 else {
468- let dL = value(dK.payments[0])
469- let cd = value(dL.assetId)
470- let dM = dL.amount
471- let cO = cb(toBase58String(dK.transactionId), toBase58String(cd), dM, dK.caller)
472- let cu = cO._1
473- let cv = cO._2
474- let ci = parseIntValue(cO._9)
475- let cw = cO._10
476- if (if (aS())
471+ let dM = value(dL.payments[0])
472+ let ce = value(dM.assetId)
473+ let dN = dM.amount
474+ let cP = cc(toBase58String(dL.transactionId), toBase58String(ce), dN, dL.caller)
475+ let cv = cP._1
476+ let cw = cP._2
477+ let cj = parseIntValue(cP._9)
478+ let cx = cP._10
479+ if (if (aT())
477480 then true
478- else (ci == n))
479- then throw(("Get operation is blocked by admin. Status = " + toString(ci)))
480- else $Tuple5(cu, cv, dM, cd, cw)
481+ else (cj == n))
482+ then throw(("Get operation is blocked by admin. Status = " + toString(cj)))
483+ else $Tuple5(cv, cw, dN, ce, cx)
481484 }
482485
483486
484-func dN (dK,cy,cE) = if ((size(dK.payments) != 2))
487+func dO (dL,cz,cF) = if ((size(dL.payments) != 2))
485488 then throw("exactly 2 payments are expected")
486489 else {
487- let dO = value(dK.payments[0])
488- let dP = value(dK.payments[1])
489- let dQ = cx(toBase58String(dK.transactionId), cy, dO.amount, dO.assetId, dP.amount, dP.assetId, toString(dK.caller), false, cE)
490- let ci = parseIntValue(dQ._8)
491- if (if (if (aS())
490+ let dP = value(dL.payments[0])
491+ let dQ = value(dL.payments[1])
492+ let dR = cy(toBase58String(dL.transactionId), cz, dP.amount, dP.assetId, dQ.amount, dQ.assetId, toString(dL.caller), false, cF)
493+ let cj = parseIntValue(dR._8)
494+ if (if (if (aT())
492495 then true
493- else (ci == l))
496+ else (cj == l))
494497 then true
495- else (ci == n))
496- then throw(("Put operation is blocked by admin. Status = " + toString(ci)))
497- else dQ
498+ else (cj == n))
499+ then throw(("Put operation is blocked by admin. Status = " + toString(cj)))
500+ else dR
498501 }
499502
500503
501-func dR (dS) = {
502- let dT = invoke(aN, "emit", [dS], nil)
503- if ((dT == dT))
504+func dS (dT) = {
505+ let dU = invoke(aO, "emit", [dT], nil)
506+ if ((dU == dU))
504507 then {
505- let dU = {
506- let dV = dT
507- if ($isInstanceOf(dV, "Address"))
508+ let dV = {
509+ let dW = dU
510+ if ($isInstanceOf(dW, "Address"))
508511 then {
509- let dW = dV
510- invoke(dW, "emit", [dS], nil)
512+ let dX = dW
513+ invoke(dX, "emit", [dT], nil)
511514 }
512515 else unit
513516 }
514- if ((dU == dU))
515- then dS
517+ if ((dV == dV))
518+ then dT
516519 else throw("Strict value is not equal to itself.")
517520 }
518521 else throw("Strict value is not equal to itself.")
519522 }
520523
521524
522-func dX (dS,ah) = {
523- let dY = if ((ah == 0))
525+func dY (dT,ai) = {
526+ let dZ = if ((ai == 0))
524527 then 0
525- else fraction(dS, ah, b)
526- $Tuple2((dS - dY), dY)
528+ else fraction(dT, ai, b)
529+ $Tuple2((dT - dZ), dZ)
527530 }
528531
529532
530-func dZ (ea,eb,aa,ab) = {
531- let ec = (ab == unit)
532- let ed = bD(aZ(bh))
533- let ee = bD(aZ(bi))
534- let ef = if ((eb == bh))
533+func ea (eb,ec,ab,ac) = {
534+ let ed = (ac == unit)
535+ let ee = bE(ba(bi))
536+ let ef = bE(ba(bj))
537+ let eg = if ((ec == bi))
535538 then true
536- else if ((eb == bi))
539+ else if ((ec == bj))
537540 then false
538- else aK("invalid asset")
539- let eg = if (ec)
540- then $Tuple2(ed, ee)
541- else if (ef)
542- then $Tuple2((ed - ea), ee)
543- else $Tuple2(ed, (ee - ea))
544- let eh = eg._1
545- let ei = eg._2
546- let ej = if (ef)
547- then $Tuple2(ea, 0)
548- else $Tuple2(0, ea)
549- let ek = ej._1
550- let el = ej._2
551- let dA = dX(ek, aP)._1
552- let dB = dX(el, aP)._1
553- let em = dX(ea, aP)
554- let en = em._1
555- let dY = em._2
556- let eo = (eh + dA)
541+ else aL("invalid asset")
542+ let eh = if (ed)
543+ then $Tuple2(ee, ef)
544+ else if (eg)
545+ then $Tuple2((ee - eb), ef)
546+ else $Tuple2(ee, (ef - eb))
547+ let ei = eh._1
548+ let ej = eh._2
549+ let ek = if (eg)
550+ then $Tuple2(eb, 0)
551+ else $Tuple2(0, eb)
552+ let el = ek._1
553+ let em = ek._2
554+ let dB = dY(el, aQ)._1
555+ let dC = dY(em, aQ)._1
556+ let en = dY(eb, aQ)
557+ let eo = en._1
558+ let dZ = en._2
557559 let ep = (ei + dB)
558- let eq = bF(D(ep, bk), D(eo, bj))
559- let er = H(eq, b)
560- let es = if (ef)
561- then eh
562- else ei
563- let et = toBigInt(es)
564- let eu = toBigInt(valueOrErrorMessage(assetInfo(bg), (("asset " + toBase58String(bg)) + " doesn't exist")).quantity)
565- let ev = if ((eu > f))
560+ let eq = (ej + dC)
561+ let er = bG(D(eq, bl), D(ep, bk))
562+ let es = H(er, b)
563+ let et = if (eg)
564+ then ei
565+ else ej
566+ let eu = toBigInt(et)
567+ let ev = toBigInt(valueOrErrorMessage(assetInfo(bh), (("asset " + toBase58String(bh)) + " doesn't exist")).quantity)
568+ let ew = if ((ev > f))
566569 then true
567- else aK("initial deposit requires all coins")
568- if ((ev == ev))
570+ else aL("initial deposit requires all coins")
571+ if ((ew == ew))
569572 then {
570- let ew = toBigInt(en)
571- let ex = max([0, toInt(((eu * (sqrtBigInt((d + ((ew * d) / et)), 18, 18, DOWN) - d)) / d))])
572- let dd = if (ec)
573+ let ex = toBigInt(eo)
574+ let ey = max([0, toInt(((ev * (sqrtBigInt((d + ((ex * d) / eu)), 18, 18, DOWN) - d)) / d))])
575+ let de = if (ed)
573576 then nil
574- else [IntegerEntry(V(), er), IntegerEntry(W(height, lastBlock.timestamp), er), StringEntry(Z(toString(value(aa)), toBase58String(value(ab))), bo(ek, el, ex, er, 0, 0, height, lastBlock.timestamp, 0, 0))]
575- let ey = bF(D(ei, bk), D(eh, bj))
576- let ez = H(ey, b)
577- let eA = {
578- let eB = if (ef)
579- then $Tuple2(ek, eh)
580- else $Tuple2(el, ei)
581- let dS = eB._1
582- let eC = eB._2
583- let eD = toInt(fraction(eu, toBigInt((dS / 2)), toBigInt(eC)))
584- fraction((ex - eD), b, eD)
577+ else [IntegerEntry(W(), es), IntegerEntry(X(height, lastBlock.timestamp), es), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bp(el, em, ey, es, 0, 0, height, lastBlock.timestamp, 0, 0))]
578+ let ez = bG(D(ej, bl), D(ei, bk))
579+ let eA = H(ez, b)
580+ let eB = {
581+ let eC = if (eg)
582+ then $Tuple2(el, ei)
583+ else $Tuple2(em, ej)
584+ let dT = eC._1
585+ let eD = eC._2
586+ let eE = toInt(fraction(ev, toBigInt((dT / 2)), toBigInt(eD)))
587+ fraction((ey - eE), b, eE)
585588 }
586- $Tuple5(ex, dd, dY, eA, ef)
589+ $Tuple5(ey, de, dZ, eB, eg)
587590 }
588591 else throw("Strict value is not equal to itself.")
589592 }
590593
591594
592-func eE (eF,en,eb,aa,ab) = {
593- let ec = (ab == unit)
594- let bS = aU()
595- let bT = parseIntValue(bS[t])
596- let bU = parseIntValue(bS[u])
597- let eG = [if ((eb == bg))
595+func eF (eG,eo,ec,ab,ac) = {
596+ let ed = (ac == unit)
597+ let bT = aV()
598+ let bU = parseIntValue(bT[t])
599+ let bV = parseIntValue(bT[u])
600+ let eH = [if ((ec == bh))
598601 then true
599- else aK("invalid lp asset")]
600- if ((eG == eG))
602+ else aL("invalid lp asset")]
603+ if ((eH == eH))
601604 then {
602- let eH = if ((eF == bh))
605+ let eI = if ((eG == bi))
603606 then true
604- else if ((eF == bi))
607+ else if ((eG == bj))
605608 then false
606- else aK("invalid asset")
607- let eI = if (eH)
608- then toBigInt(bD(aZ(bh)))
609- else toBigInt(bD(aZ(bi)))
610- let eJ = if (eH)
611- then bT
612- else bU
613- let eK = bD(aZ(bh))
614- let eL = bD(aZ(bi))
615- let eM = if (eH)
616- then eK
617- else eL
618- let eN = toBigInt(eM)
619- let eu = toBigInt(valueOrErrorMessage(assetInfo(bg), (("asset " + toBase58String(bg)) + " doesn't exist")).quantity)
620- let eO = toBigInt(en)
621- let eP = max([0, toInt(((eI * (d - pow((d - ((eO * d) / eu)), 18, h, 0, 18, DOWN))) / d))])
622- let eQ = dX(eP, aR)
623- let eR = eQ._1
624- let dY = eQ._2
625- let eS = if (eH)
626- then $Tuple4(eR, 0, (eK - eP), eL)
627- else $Tuple4(0, eR, eK, (eL - eP))
628- let eT = eS._1
629- let eU = eS._2
630- let eV = eS._3
631- let eW = eS._4
632- let eq = bF(D(eW, bk), D(eV, bj))
633- let er = H(eq, b)
634- let dd = if (ec)
609+ else aL("invalid asset")
610+ let eJ = if (eI)
611+ then toBigInt(bE(ba(bi)))
612+ else toBigInt(bE(ba(bj)))
613+ let eK = if (eI)
614+ then bU
615+ else bV
616+ let eL = bE(ba(bi))
617+ let eM = bE(ba(bj))
618+ let eN = if (eI)
619+ then eL
620+ else eM
621+ let eO = toBigInt(eN)
622+ let ev = toBigInt(valueOrErrorMessage(assetInfo(bh), (("asset " + toBase58String(bh)) + " doesn't exist")).quantity)
623+ let eP = toBigInt(eo)
624+ let eQ = max([0, toInt(((eJ * (d - pow((d - ((eP * d) / ev)), 18, h, 0, 18, DOWN))) / d))])
625+ let eR = dY(eQ, aS)
626+ let eS = eR._1
627+ let dZ = eR._2
628+ let eT = if (eI)
629+ then $Tuple4(eS, 0, (eL - eQ), eM)
630+ else $Tuple4(0, eS, eL, (eM - eQ))
631+ let eU = eT._1
632+ let eV = eT._2
633+ let eW = eT._3
634+ let eX = eT._4
635+ let er = bG(D(eX, bl), D(eW, bk))
636+ let es = H(er, b)
637+ let de = if (ed)
635638 then nil
636- else [StringEntry(ac(toString(value(aa)), toBase58String(value(ab))), bz(eT, eU, en, er, height, lastBlock.timestamp)), IntegerEntry(V(), er), IntegerEntry(W(height, lastBlock.timestamp), er)]
637- let ey = bF(D(eL, bk), D(eK, bj))
638- let ez = H(ey, b)
639- let eA = {
640- let eX = (toInt(fraction(eI, eO, eu)) * 2)
641- fraction((eR - eX), b, eX)
639+ else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bA(eU, eV, eo, es, height, lastBlock.timestamp)), IntegerEntry(W(), es), IntegerEntry(X(height, lastBlock.timestamp), es)]
640+ let ez = bG(D(eM, bl), D(eL, bk))
641+ let eA = H(ez, b)
642+ let eB = {
643+ let eY = (toInt(fraction(eJ, eP, ev)) * 2)
644+ fraction((eS - eY), b, eY)
642645 }
643- $Tuple5(eR, dd, dY, eA, eH)
646+ $Tuple5(eS, de, dZ, eB, eI)
644647 }
645648 else throw("Strict value is not equal to itself.")
646649 }
647650
648651
649-func eY () = {
650- let dV = getString(T())
651- if ($isInstanceOf(dV, "String"))
652+func eZ () = {
653+ let dW = getString(U())
654+ if ($isInstanceOf(dW, "String"))
652655 then {
653- let eZ = dV
654- fromBase58String(eZ)
656+ let fa = dW
657+ fromBase58String(fa)
655658 }
656- else if ($isInstanceOf(dV, "Unit"))
659+ else if ($isInstanceOf(dW, "Unit"))
657660 then unit
658661 else throw("Match error")
659662 }
660663
661664
662-func fa () = {
663- let dV = getString(U())
664- if ($isInstanceOf(dV, "String"))
665+func fb () = {
666+ let dW = getString(V())
667+ if ($isInstanceOf(dW, "String"))
665668 then {
666- let eZ = dV
667- fromBase58String(eZ)
669+ let fa = dW
670+ fromBase58String(fa)
668671 }
669- else if ($isInstanceOf(dV, "Unit"))
672+ else if ($isInstanceOf(dW, "Unit"))
670673 then unit
671674 else throw("Match error")
672675 }
673676
674677
675-func fb (dK) = {
676- let dV = eY()
677- if ($isInstanceOf(dV, "ByteVector"))
678+func fc (dL) = {
679+ let dW = eZ()
680+ if ($isInstanceOf(dW, "ByteVector"))
678681 then {
679- let fc = dV
680- (dK.callerPublicKey == fc)
682+ let fd = dW
683+ (dL.callerPublicKey == fd)
681684 }
682- else if ($isInstanceOf(dV, "Unit"))
683- then (dK.caller == this)
685+ else if ($isInstanceOf(dW, "Unit"))
686+ then (dL.caller == this)
684687 else throw("Match error")
685688 }
686689
687690
688-func fd (dK) = {
689- let fe = throw("Permission denied")
690- let dV = eY()
691- if ($isInstanceOf(dV, "ByteVector"))
691+func fe (dL) = {
692+ let ff = throw("Permission denied")
693+ let dW = eZ()
694+ if ($isInstanceOf(dW, "ByteVector"))
692695 then {
693- let fc = dV
694- if ((dK.callerPublicKey == fc))
696+ let fd = dW
697+ if ((dL.callerPublicKey == fd))
695698 then true
696- else fe
699+ else ff
697700 }
698- else if ($isInstanceOf(dV, "Unit"))
699- then if ((dK.caller == this))
701+ else if ($isInstanceOf(dW, "Unit"))
702+ then if ((dL.caller == this))
700703 then true
701- else fe
704+ else ff
702705 else throw("Match error")
703706 }
704707
705708
706-@Callable(dK)
707-func setManager (ff) = {
708- let fg = fd(dK)
709- if ((fg == fg))
709+@Callable(dL)
710+func calculateAmountOutForSwapREADONLY (fg,fh) = {
711+ let fi = if ((fh == false))
710712 then {
711- let fh = fromBase58String(ff)
712- if ((fh == fh))
713- then [StringEntry(U(), ff)]
713+ let fj = aH(this, af())
714+ let fk = aH(this, ae())
715+ $Tuple2(fj, fk)
716+ }
717+ else {
718+ let fj = aH(this, ae())
719+ let fk = aH(this, af())
720+ $Tuple2(fj, fk)
721+ }
722+ let fj = fi._1
723+ let fk = fi._2
724+ let fl = bE(fk)
725+ let fm = bE(fj)
726+ let fn = fraction(fm, fg, (fl + fg))
727+ let fo = (toBigInt(fl) * toBigInt(fm))
728+ let fp = ((toBigInt(bE(fk)) + toBigInt(fg)) * (toBigInt(bE(fj)) - toBigInt(fn)))
729+ let fq = if ((fp >= fo))
730+ then true
731+ else throw("new K is fewer error")
732+ if ((fq == fq))
733+ then $Tuple2(nil, fn)
734+ else throw("Strict value is not equal to itself.")
735+ }
736+
737+
738+
739+@Callable(dL)
740+func calculateAmountOutForSwapAndSendTokens (fg,fh,fr,fs) = {
741+ let ft = {
742+ let aR = invoke(aO, "getSwapContractREADONLY", nil, nil)
743+ if ($isInstanceOf(aR, "String"))
744+ then aR
745+ else throw(($getType(aR) + " couldn't be cast to String"))
746+ }
747+ let eH = [if ((value(dL.payments[0]).amount >= fg))
748+ then true
749+ else aL("Wrong amount"), if ((dL.caller == addressFromStringValue(ft)))
750+ then true
751+ else aL("Permission denied")]
752+ if ((eH == eH))
753+ then {
754+ let dM = value(dL.payments[0])
755+ let fk = if ((dM.assetId == unit))
756+ then toBase58String(toBytes("WAVES"))
757+ else toBase58String(value(dM.assetId))
758+ let fj = if ((fh == false))
759+ then aH(this, af())
760+ else aH(this, ae())
761+ let fl = (bE(fk) - value(dL.payments[0]).amount)
762+ let fm = bE(fj)
763+ let fn = fraction(fm, fg, (fl + fg))
764+ let fo = (toBigInt(fl) * toBigInt(fm))
765+ let fp = (toBigInt(bE(fk)) * (toBigInt(bE(fj)) - toBigInt(fn)))
766+ let fq = if ((fp >= fo))
767+ then true
768+ else throw("new K is fewer error")
769+ if ((fq == fq))
770+ then {
771+ let fu = if ((fn >= fr))
772+ then true
773+ else throw("Exchange result is fewer coins than expected")
774+ if ((fu == fu))
775+ then $Tuple2([ScriptTransfer(addressFromStringValue(fs), fn, aY(fj))], fn)
776+ else throw("Strict value is not equal to itself.")
777+ }
714778 else throw("Strict value is not equal to itself.")
715779 }
716780 else throw("Strict value is not equal to itself.")
718782
719783
720784
721-@Callable(dK)
722-func confirmManager () = {
723- let fi = fa()
724- let fj = if (isDefined(fi))
725- then true
726- else throw("No pending manager")
727- if ((fj == fj))
785+@Callable(dL)
786+func setManager (fv) = {
787+ let fw = fe(dL)
788+ if ((fw == fw))
728789 then {
729- let fk = if ((dK.callerPublicKey == value(fi)))
730- then true
731- else throw("You are not pending manager")
732- if ((fk == fk))
733- then [StringEntry(T(), toBase58String(value(fi))), DeleteEntry(U())]
790+ let fx = fromBase58String(fv)
791+ if ((fx == fx))
792+ then [StringEntry(V(), fv)]
734793 else throw("Strict value is not equal to itself.")
735794 }
736795 else throw("Strict value is not equal to itself.")
738797
739798
740799
741-@Callable(dK)
742-func put (cy,fl) = if ((0 > cy))
800+@Callable(dL)
801+func confirmManager () = {
802+ let fy = fb()
803+ let fz = if (isDefined(fy))
804+ then true
805+ else throw("No pending manager")
806+ if ((fz == fz))
807+ then {
808+ let fA = if ((dL.callerPublicKey == value(fy)))
809+ then true
810+ else throw("You are not pending manager")
811+ if ((fA == fA))
812+ then [StringEntry(U(), toBase58String(value(fy))), DeleteEntry(V())]
813+ else throw("Strict value is not equal to itself.")
814+ }
815+ else throw("Strict value is not equal to itself.")
816+ }
817+
818+
819+
820+@Callable(dL)
821+func put (cz,fB) = if ((0 > cz))
743822 then throw("Invalid slippageTolerance passed")
744823 else {
745- let dQ = dN(dK, cy, true)
746- let da = dQ._2
747- let cf = dQ._7
748- let cw = dQ._9
749- let db = dQ._10
750- let dc = dQ._11
751- let fm = dQ._12
752- let fn = dQ._13
753- let dO = toBigInt(value(dK.payments[0]).amount)
754- let dP = toBigInt(value(dK.payments[1]).amount)
755- let dr = dk(dO, dP, toBigInt(0))
756- if ((dr == dr))
824+ let dR = dO(dL, cz, true)
825+ let db = dR._2
826+ let cg = dR._7
827+ let cx = dR._9
828+ let dc = dR._10
829+ let dd = dR._11
830+ let fC = dR._12
831+ let fD = dR._13
832+ let dP = toBigInt(value(dL.payments[0]).amount)
833+ let dQ = toBigInt(value(dL.payments[1]).amount)
834+ let ds = dl(dP, dQ, toBigInt(0))
835+ if ((ds == ds))
757836 then {
758- let dT = invoke(aN, "emit", [da], nil)
759- if ((dT == dT))
837+ let dU = invoke(aO, "emit", [db], nil)
838+ if ((dU == dU))
760839 then {
761- let dU = {
762- let dV = dT
763- if ($isInstanceOf(dV, "Address"))
840+ let dV = {
841+ let dW = dU
842+ if ($isInstanceOf(dW, "Address"))
764843 then {
765- let dW = dV
766- invoke(dW, "emit", [da], nil)
844+ let dX = dW
845+ invoke(dX, "emit", [db], nil)
767846 }
768847 else unit
769848 }
770- if ((dU == dU))
849+ if ((dV == dV))
771850 then {
772- let fo = if ((db > 0))
773- then invoke(bn, "put", nil, [AttachedPayment(fm, db)])
851+ let fE = if ((dc > 0))
852+ then invoke(bo, "put", nil, [AttachedPayment(fC, dc)])
774853 else nil
775- if ((fo == fo))
854+ if ((fE == fE))
776855 then {
777- let fp = if ((dc > 0))
778- then invoke(bn, "put", nil, [AttachedPayment(fn, dc)])
856+ let fF = if ((dd > 0))
857+ then invoke(bo, "put", nil, [AttachedPayment(fD, dd)])
779858 else nil
780- if ((fp == fp))
859+ if ((fF == fF))
781860 then {
782- let fq = if (fl)
861+ let fG = if (fB)
783862 then {
784- let fr = invoke(bm, "stake", nil, [AttachedPayment(cf, da)])
785- if ((fr == fr))
863+ let fH = invoke(bn, "stake", nil, [AttachedPayment(cg, db)])
864+ if ((fH == fH))
786865 then nil
787866 else throw("Strict value is not equal to itself.")
788867 }
789- else [ScriptTransfer(dK.caller, da, cf)]
790- let fs = ds(0, 0, 0)
791- if ((fs == fs))
868+ else [ScriptTransfer(dL.caller, db, cg)]
869+ let fI = dt(0, 0, 0)
870+ if ((fI == fI))
792871 then {
793- let dj = fs._2
794- let ft = fs._1
795- let fu = dw(dr, dj)
796- if ((fu == fu))
797- then ((cw ++ fq) ++ ft)
872+ let dk = fI._2
873+ let fJ = fI._1
874+ let fK = dx(ds, dk)
875+ if ((fK == fK))
876+ then ((cx ++ fG) ++ fJ)
798877 else throw("Strict value is not equal to itself.")
799878 }
800879 else throw("Strict value is not equal to itself.")
812891
813892
814893
815-@Callable(dK)
816-func putForFree (fv) = if ((0 > fv))
894+@Callable(dL)
895+func putForFree (fL) = if ((0 > fL))
817896 then throw("Invalid value passed")
818897 else {
819- let dQ = dN(dK, fv, false)
820- let cw = dQ._9
821- let dO = toBigInt(value(dK.payments[0]).amount)
822- let dP = toBigInt(value(dK.payments[1]).amount)
823- let dr = dk(dO, dP, toBigInt(0))
824- if ((dr == dr))
898+ let dR = dO(dL, fL, false)
899+ let cx = dR._9
900+ let dP = toBigInt(value(dL.payments[0]).amount)
901+ let dQ = toBigInt(value(dL.payments[1]).amount)
902+ let ds = dl(dP, dQ, toBigInt(0))
903+ if ((ds == ds))
825904 then {
826- let fw = ds(0, 0, 0)
827- let ft = fw._1
828- let dj = fw._2
829- let fu = dw(dr, dj)
830- if ((fu == fu))
831- then (cw ++ ft)
905+ let fM = dt(0, 0, 0)
906+ let fJ = fM._1
907+ let dk = fM._2
908+ let fK = dx(ds, dk)
909+ if ((fK == fK))
910+ then (cx ++ fJ)
832911 else throw("Strict value is not equal to itself.")
833912 }
834913 else throw("Strict value is not equal to itself.")
836915
837916
838917
839-@Callable(dK)
840-func putOneTkn (fx,fy) = {
841- let fz = {
842- let aQ = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
843- if ($isInstanceOf(aQ, "Boolean"))
844- then aQ
845- else throw(($getType(aQ) + " couldn't be cast to Boolean"))
918+@Callable(dL)
919+func putOneTkn (fN,fO) = {
920+ let fP = {
921+ let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
922+ if ($isInstanceOf(aR, "Boolean"))
923+ then aR
924+ else throw(($getType(aR) + " couldn't be cast to Boolean"))
846925 }
847- let fA = if (if (if (aS())
926+ let fQ = if (if (if (aT())
848927 then true
849- else (bf == l))
928+ else (bg == l))
850929 then true
851- else (bf == n))
930+ else (bg == n))
852931 then true
853- else fz
854- let eG = [if (if (!(fA))
932+ else fP
933+ let eH = [if (if (!(fQ))
855934 then true
856- else fb(dK))
935+ else fc(dL))
857936 then true
858- else aK("put operation is blocked by admin"), if ((size(dK.payments) == 1))
937+ else aL("put operation is blocked by admin"), if ((size(dL.payments) == 1))
859938 then true
860- else aK("exactly 1 payment are expected")]
861- if ((eG == eG))
939+ else aL("exactly 1 payment are expected")]
940+ if ((eH == eH))
862941 then {
863- let fB = dK.payments[0]
864- let eb = fB.assetId
865- let ea = fB.amount
866- let dr = if ((eb == bh))
867- then dk(toBigInt(ea), toBigInt(0), toBigInt(0))
868- else if ((eb == bi))
869- then dk(toBigInt(0), toBigInt(ea), toBigInt(0))
870- else aK("payment asset is not supported")
871- if ((dr == dr))
942+ let fR = dL.payments[0]
943+ let ec = fR.assetId
944+ let eb = fR.amount
945+ let ds = if ((ec == bi))
946+ then dl(toBigInt(eb), toBigInt(0), toBigInt(0))
947+ else if ((ec == bj))
948+ then dl(toBigInt(0), toBigInt(eb), toBigInt(0))
949+ else aL("payment asset is not supported")
950+ if ((ds == ds))
872951 then {
873- let aa = dK.caller
874- let ab = dK.transactionId
875- let fC = dZ(ea, eb, aa, ab)
876- if ((fC == fC))
952+ let ab = dL.caller
953+ let ac = dL.transactionId
954+ let fS = ea(eb, ec, ab, ac)
955+ if ((fS == fS))
877956 then {
878- let ef = fC._5
879- let fD = fC._4
880- let dY = fC._3
881- let dd = fC._2
882- let fE = fC._1
883- let fF = if (if ((fx > 0))
884- then (fx > fE)
957+ let eg = fS._5
958+ let fT = fS._4
959+ let dZ = fS._3
960+ let de = fS._2
961+ let fU = fS._1
962+ let fV = if (if ((fN > 0))
963+ then (fN > fU)
885964 else false)
886- then aK(makeString(["amount to receive is less than ", toString(fx)], ""))
887- else fE
888- let dT = dR(fF)
889- if ((dT == dT))
965+ then aL(makeString(["amount to receive is less than ", toString(fN)], ""))
966+ else fU
967+ let dU = dS(fV)
968+ if ((dU == dU))
890969 then {
891- let fq = if (fy)
970+ let fG = if (fO)
892971 then {
893- let fG = invoke(bm, "stake", nil, [AttachedPayment(bg, fF)])
894- if ((fG == fG))
972+ let fW = invoke(bn, "stake", nil, [AttachedPayment(bh, fV)])
973+ if ((fW == fW))
895974 then nil
896975 else throw("Strict value is not equal to itself.")
897976 }
898- else [ScriptTransfer(dK.caller, fF, bg)]
899- let fH = if ((dY > 0))
900- then [ScriptTransfer(aO, dY, eb)]
977+ else [ScriptTransfer(dL.caller, fV, bh)]
978+ let fX = if ((dZ > 0))
979+ then [ScriptTransfer(aP, dZ, ec)]
901980 else nil
902- let fI = if ((this == aO))
981+ let fY = if ((this == aP))
903982 then $Tuple2(0, 0)
904- else if (ef)
905- then $Tuple2(-(dY), 0)
906- else $Tuple2(0, -(dY))
907- let dt = fI._1
908- let du = fI._2
909- let fJ = ds(dt, du, 0)
910- let ft = fJ._1
911- let dj = fJ._2
912- let dD = value(getString(ai))
913- let fu = dw(dr, dj)
914- if ((fu == fu))
915- then $Tuple2((((dd ++ fq) ++ fH) ++ ft), fF)
983+ else if (eg)
984+ then $Tuple2(-(dZ), 0)
985+ else $Tuple2(0, -(dZ))
986+ let du = fY._1
987+ let dv = fY._2
988+ let fZ = dt(du, dv, 0)
989+ let fJ = fZ._1
990+ let dk = fZ._2
991+ let dE = value(getString(aj))
992+ let fK = dx(ds, dk)
993+ if ((fK == fK))
994+ then $Tuple2((((de ++ fG) ++ fX) ++ fJ), fV)
916995 else throw("Strict value is not equal to itself.")
917996 }
918997 else throw("Strict value is not equal to itself.")
9261005
9271006
9281007
929-@Callable(dK)
930-func putOneTknREADONLY (eb,ea) = {
931- let fK = dZ(ea, aX(eb), unit, unit)
932- let fE = fK._1
933- let dd = fK._2
934- let dY = fK._3
935- let fD = fK._4
936- let ef = fK._5
937- $Tuple2(nil, $Tuple3(fE, dY, fD))
1008+@Callable(dL)
1009+func putOneTknREADONLY (ec,eb) = {
1010+ let ga = ea(eb, aY(ec), unit, unit)
1011+ let fU = ga._1
1012+ let de = ga._2
1013+ let dZ = ga._3
1014+ let fT = ga._4
1015+ let eg = ga._5
1016+ $Tuple2(nil, $Tuple3(fU, dZ, fT))
9381017 }
9391018
9401019
9411020
942-@Callable(dK)
943-func getOneTkn (fL,fx) = {
944- let fz = {
945- let aQ = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
946- if ($isInstanceOf(aQ, "Boolean"))
947- then aQ
948- else throw(($getType(aQ) + " couldn't be cast to Boolean"))
1021+@Callable(dL)
1022+func getOneTkn (gb,fN) = {
1023+ let fP = {
1024+ let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1025+ if ($isInstanceOf(aR, "Boolean"))
1026+ then aR
1027+ else throw(($getType(aR) + " couldn't be cast to Boolean"))
9491028 }
950- let fM = if (if (aS())
1029+ let gc = if (if (aT())
9511030 then true
952- else (bf == n))
1031+ else (bg == n))
9531032 then true
954- else fz
955- let eG = [if (if (!(fM))
1033+ else fP
1034+ let eH = [if (if (!(gc))
9561035 then true
957- else fb(dK))
1036+ else fc(dL))
9581037 then true
959- else aK("get operation is blocked by admin"), if ((size(dK.payments) == 1))
1038+ else aL("get operation is blocked by admin"), if ((size(dL.payments) == 1))
9601039 then true
961- else aK("exactly 1 payment are expected")]
962- if ((eG == eG))
1040+ else aL("exactly 1 payment are expected")]
1041+ if ((eH == eH))
9631042 then {
964- let eF = aX(fL)
965- let fB = dK.payments[0]
966- let eb = fB.assetId
967- let en = fB.amount
968- let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
969- if ((dr == dr))
1043+ let eG = aY(gb)
1044+ let fR = dL.payments[0]
1045+ let ec = fR.assetId
1046+ let eo = fR.amount
1047+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1048+ if ((ds == ds))
9701049 then {
971- let aa = dK.caller
972- let ab = dK.transactionId
973- let fN = eE(eF, en, eb, aa, ab)
974- if ((fN == fN))
1050+ let ab = dL.caller
1051+ let ac = dL.transactionId
1052+ let gd = eF(eG, eo, ec, ab, ac)
1053+ if ((gd == gd))
9751054 then {
976- let eH = fN._5
977- let fD = fN._4
978- let dY = fN._3
979- let dd = fN._2
980- let fO = fN._1
981- let dS = if (if ((fx > 0))
982- then (fx > fO)
1055+ let eI = gd._5
1056+ let fT = gd._4
1057+ let dZ = gd._3
1058+ let de = gd._2
1059+ let ge = gd._1
1060+ let dT = if (if ((fN > 0))
1061+ then (fN > ge)
9831062 else false)
984- then aK(makeString(["amount to receive is less than ", toString(fx)], ""))
985- else fO
986- let fP = invoke(aN, "burn", [en], [AttachedPayment(eb, en)])
987- if ((fP == fP))
1063+ then aL(makeString(["amount to receive is less than ", toString(fN)], ""))
1064+ else ge
1065+ let gf = invoke(aO, "burn", [eo], [AttachedPayment(ec, eo)])
1066+ if ((gf == gf))
9881067 then {
989- let fQ = [ScriptTransfer(aa, dS, eF)]
990- let fH = if ((dY > 0))
991- then [ScriptTransfer(aO, dY, eF)]
1068+ let gg = [ScriptTransfer(ab, dT, eG)]
1069+ let fX = if ((dZ > 0))
1070+ then [ScriptTransfer(aP, dZ, eG)]
9921071 else nil
993- let fR = {
994- let fS = if ((this == aO))
1072+ let gh = {
1073+ let gi = if ((this == aP))
9951074 then 0
996- else dY
997- if (eH)
998- then $Tuple2(-((dS + fS)), 0)
999- else $Tuple2(0, -((dS + fS)))
1075+ else dZ
1076+ if (eI)
1077+ then $Tuple2(-((dT + gi)), 0)
1078+ else $Tuple2(0, -((dT + gi)))
10001079 }
1001- let dt = fR._1
1002- let du = fR._2
1003- let fT = ds(dt, du, 0)
1004- let ft = fT._1
1005- let dj = fT._2
1006- let fu = dw(dr, dj)
1007- if ((fu == fu))
1008- then $Tuple2((((dd ++ fQ) ++ fH) ++ ft), dS)
1080+ let du = gh._1
1081+ let dv = gh._2
1082+ let gj = dt(du, dv, 0)
1083+ let fJ = gj._1
1084+ let dk = gj._2
1085+ let fK = dx(ds, dk)
1086+ if ((fK == fK))
1087+ then $Tuple2((((de ++ gg) ++ fX) ++ fJ), dT)
10091088 else throw("Strict value is not equal to itself.")
10101089 }
10111090 else throw("Strict value is not equal to itself.")
10191098
10201099
10211100
1022-@Callable(dK)
1023-func getOneTknREADONLY (eF,en) = {
1024- let fU = eE(aX(eF), en, bg, unit, unit)
1025- let fO = fU._1
1026- let dd = fU._2
1027- let dY = fU._3
1028- let fD = fU._4
1029- let eH = fU._5
1030- $Tuple2(nil, $Tuple3(fO, dY, fD))
1101+@Callable(dL)
1102+func getOneTknREADONLY (eG,eo) = {
1103+ let gk = eF(aY(eG), eo, bh, unit, unit)
1104+ let ge = gk._1
1105+ let de = gk._2
1106+ let dZ = gk._3
1107+ let fT = gk._4
1108+ let eI = gk._5
1109+ $Tuple2(nil, $Tuple3(ge, dZ, fT))
10311110 }
10321111
10331112
10341113
1035-@Callable(dK)
1036-func unstakeAndGetOneTkn (fV,fL,fx) = {
1037- let fz = {
1038- let aQ = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1039- if ($isInstanceOf(aQ, "Boolean"))
1040- then aQ
1041- else throw(($getType(aQ) + " couldn't be cast to Boolean"))
1114+@Callable(dL)
1115+func unstakeAndGetOneTkn (gl,gb,fN) = {
1116+ let fP = {
1117+ let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1118+ if ($isInstanceOf(aR, "Boolean"))
1119+ then aR
1120+ else throw(($getType(aR) + " couldn't be cast to Boolean"))
10421121 }
1043- let fM = if (if (aS())
1122+ let gc = if (if (aT())
10441123 then true
1045- else (bf == n))
1124+ else (bg == n))
10461125 then true
1047- else fz
1048- let eG = [if (if (!(fM))
1126+ else fP
1127+ let eH = [if (if (!(gc))
10491128 then true
1050- else fb(dK))
1129+ else fc(dL))
10511130 then true
1052- else aK("get operation is blocked by admin"), if ((size(dK.payments) == 0))
1131+ else aL("get operation is blocked by admin"), if ((size(dL.payments) == 0))
10531132 then true
1054- else aK("no payments are expected")]
1055- if ((eG == eG))
1133+ else aL("no payments are expected")]
1134+ if ((eH == eH))
10561135 then {
1057- let eF = aX(fL)
1058- let aa = dK.caller
1059- let ab = dK.transactionId
1060- let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
1061- if ((dr == dr))
1136+ let eG = aY(gb)
1137+ let ab = dL.caller
1138+ let ac = dL.transactionId
1139+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1140+ if ((ds == ds))
10621141 then {
1063- let fW = invoke(bm, "unstake", [toBase58String(bg), fV], nil)
1064- if ((fW == fW))
1142+ let gm = invoke(bn, "unstake", [toBase58String(bh), gl], nil)
1143+ if ((gm == gm))
10651144 then {
1066- let fX = eE(eF, fV, bg, aa, ab)
1067- if ((fX == fX))
1145+ let gn = eF(eG, gl, bh, ab, ac)
1146+ if ((gn == gn))
10681147 then {
1069- let eH = fX._5
1070- let fD = fX._4
1071- let dY = fX._3
1072- let dd = fX._2
1073- let fO = fX._1
1074- let dS = if (if ((fx > 0))
1075- then (fx > fO)
1148+ let eI = gn._5
1149+ let fT = gn._4
1150+ let dZ = gn._3
1151+ let de = gn._2
1152+ let ge = gn._1
1153+ let dT = if (if ((fN > 0))
1154+ then (fN > ge)
10761155 else false)
1077- then aK(makeString(["amount to receive is less than ", toString(fx)], ""))
1078- else fO
1079- let fP = invoke(aN, "burn", [fV], [AttachedPayment(bg, fV)])
1080- if ((fP == fP))
1156+ then aL(makeString(["amount to receive is less than ", toString(fN)], ""))
1157+ else ge
1158+ let gf = invoke(aO, "burn", [gl], [AttachedPayment(bh, gl)])
1159+ if ((gf == gf))
10811160 then {
1082- let fQ = [ScriptTransfer(dK.caller, dS, eF)]
1083- let fH = if ((dY > 0))
1084- then [ScriptTransfer(aO, dY, eF)]
1161+ let gg = [ScriptTransfer(dL.caller, dT, eG)]
1162+ let fX = if ((dZ > 0))
1163+ then [ScriptTransfer(aP, dZ, eG)]
10851164 else nil
1086- let fY = {
1087- let fS = if ((this == aO))
1165+ let go = {
1166+ let gi = if ((this == aP))
10881167 then 0
1089- else dY
1090- if (eH)
1091- then $Tuple2(-((dS + fS)), 0)
1092- else $Tuple2(0, -((dS + fS)))
1168+ else dZ
1169+ if (eI)
1170+ then $Tuple2(-((dT + gi)), 0)
1171+ else $Tuple2(0, -((dT + gi)))
10931172 }
1094- let dt = fY._1
1095- let du = fY._2
1096- let fZ = ds(dt, du, 0)
1097- let ft = fZ._1
1098- let dj = fZ._2
1099- let fu = dw(dr, dj)
1100- if ((fu == fu))
1101- then $Tuple2((((dd ++ fQ) ++ fH) ++ ft), dS)
1173+ let du = go._1
1174+ let dv = go._2
1175+ let gp = dt(du, dv, 0)
1176+ let fJ = gp._1
1177+ let dk = gp._2
1178+ let fK = dx(ds, dk)
1179+ if ((fK == fK))
1180+ then $Tuple2((((de ++ gg) ++ fX) ++ fJ), dT)
11021181 else throw("Strict value is not equal to itself.")
11031182 }
11041183 else throw("Strict value is not equal to itself.")
11141193
11151194
11161195
1117-@Callable(dK)
1196+@Callable(dL)
11181197 func get () = {
1119- let cO = dJ(dK)
1120- let ga = cO._1
1121- let cv = cO._2
1122- let dM = cO._3
1123- let cd = cO._4
1124- let cw = cO._5
1125- let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
1126- if ((dr == dr))
1198+ let cP = dK(dL)
1199+ let gq = cP._1
1200+ let cw = cP._2
1201+ let dN = cP._3
1202+ let ce = cP._4
1203+ let cx = cP._5
1204+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1205+ if ((ds == ds))
11271206 then {
1128- let gb = invoke(aN, "burn", [dM], [AttachedPayment(cd, dM)])
1129- if ((gb == gb))
1207+ let gr = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1208+ if ((gr == gr))
11301209 then {
1131- let gc = ds(-(ga), -(cv), 0)
1132- let ft = gc._1
1133- let dj = gc._2
1134- let fu = dw(dr, dj)
1135- if ((fu == fu))
1136- then (cw ++ ft)
1210+ let gs = dt(-(gq), -(cw), 0)
1211+ let fJ = gs._1
1212+ let dk = gs._2
1213+ let fK = dx(ds, dk)
1214+ if ((fK == fK))
1215+ then (cx ++ fJ)
11371216 else throw("Strict value is not equal to itself.")
11381217 }
11391218 else throw("Strict value is not equal to itself.")
11431222
11441223
11451224
1146-@Callable(dK)
1147-func getNoLess (gd,ge) = {
1148- let cO = dJ(dK)
1149- let cu = cO._1
1150- let cv = cO._2
1151- let dM = cO._3
1152- let cd = cO._4
1153- let cw = cO._5
1154- if ((gd > cu))
1155- then throw(((("noLessThenAmtAsset failed: " + toString(cu)) + " < ") + toString(gd)))
1156- else if ((ge > cv))
1157- then throw(((("noLessThenPriceAsset failed: " + toString(cv)) + " < ") + toString(ge)))
1225+@Callable(dL)
1226+func getNoLess (gt,gu) = {
1227+ let cP = dK(dL)
1228+ let cv = cP._1
1229+ let cw = cP._2
1230+ let dN = cP._3
1231+ let ce = cP._4
1232+ let cx = cP._5
1233+ if ((gt > cv))
1234+ then throw(((("noLessThenAmtAsset failed: " + toString(cv)) + " < ") + toString(gt)))
1235+ else if ((gu > cw))
1236+ then throw(((("noLessThenPriceAsset failed: " + toString(cw)) + " < ") + toString(gu)))
11581237 else {
1159- let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
1160- if ((dr == dr))
1238+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1239+ if ((ds == ds))
11611240 then {
1162- let gb = invoke(aN, "burn", [dM], [AttachedPayment(cd, dM)])
1163- if ((gb == gb))
1241+ let gr = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1242+ if ((gr == gr))
11641243 then {
1165- let gf = ds(-(cu), -(cv), 0)
1166- let ft = gf._1
1167- let dj = gf._2
1168- let fu = dw(dr, dj)
1169- if ((fu == fu))
1170- then (cw ++ ft)
1244+ let gv = dt(-(cv), -(cw), 0)
1245+ let fJ = gv._1
1246+ let dk = gv._2
1247+ let fK = dx(ds, dk)
1248+ if ((fK == fK))
1249+ then (cx ++ fJ)
11711250 else throw("Strict value is not equal to itself.")
11721251 }
11731252 else throw("Strict value is not equal to itself.")
11781257
11791258
11801259
1181-@Callable(dK)
1182-func unstakeAndGet (dS) = {
1183- let gg = if ((size(dK.payments) != 0))
1260+@Callable(dL)
1261+func unstakeAndGet (dT) = {
1262+ let gw = if ((size(dL.payments) != 0))
11841263 then throw("No payments are expected")
11851264 else true
1186- if ((gg == gg))
1265+ if ((gw == gw))
11871266 then {
1188- let bS = aU()
1189- let cf = fromBase58String(bS[q])
1190- let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
1191- if ((dr == dr))
1267+ let bT = aV()
1268+ let cg = fromBase58String(bT[q])
1269+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1270+ if ((ds == ds))
11921271 then {
1193- let fW = invoke(bm, "unstake", [toBase58String(cf), dS], nil)
1194- if ((fW == fW))
1272+ let gm = invoke(bn, "unstake", [toBase58String(cg), dT], nil)
1273+ if ((gm == gm))
11951274 then {
1196- let cO = cb(toBase58String(dK.transactionId), toBase58String(cf), dS, dK.caller)
1197- let cu = cO._1
1198- let cv = cO._2
1199- let ci = parseIntValue(cO._9)
1200- let cw = cO._10
1201- let gh = if (if (aS())
1275+ let cP = cc(toBase58String(dL.transactionId), toBase58String(cg), dT, dL.caller)
1276+ let cv = cP._1
1277+ let cw = cP._2
1278+ let cj = parseIntValue(cP._9)
1279+ let cx = cP._10
1280+ let gx = if (if (aT())
12021281 then true
1203- else (ci == n))
1204- then throw(("Get operation is blocked by admin. Status = " + toString(ci)))
1282+ else (cj == n))
1283+ then throw(("Get operation is blocked by admin. Status = " + toString(cj)))
12051284 else true
1206- if ((gh == gh))
1285+ if ((gx == gx))
12071286 then {
1208- let gb = invoke(aN, "burn", [dS], [AttachedPayment(cf, dS)])
1209- if ((gb == gb))
1287+ let gr = invoke(aO, "burn", [dT], [AttachedPayment(cg, dT)])
1288+ if ((gr == gr))
12101289 then {
1211- let gi = ds(-(cu), -(cv), 0)
1212- let ft = gi._1
1213- let dj = gi._2
1214- let fu = dw(dr, dj)
1215- if ((fu == fu))
1216- then (cw ++ ft)
1290+ let gy = dt(-(cv), -(cw), 0)
1291+ let fJ = gy._1
1292+ let dk = gy._2
1293+ let fK = dx(ds, dk)
1294+ if ((fK == fK))
1295+ then (cx ++ fJ)
12171296 else throw("Strict value is not equal to itself.")
12181297 }
12191298 else throw("Strict value is not equal to itself.")
12291308
12301309
12311310
1232-@Callable(dK)
1233-func unstakeAndGetNoLess (fV,gj,ge) = {
1234- let fM = if (aS())
1311+@Callable(dL)
1312+func unstakeAndGetNoLess (gl,gz,gu) = {
1313+ let gc = if (aT())
12351314 then true
1236- else (bf == n)
1237- let eG = [if (!(fM))
1315+ else (bg == n)
1316+ let eH = [if (!(gc))
12381317 then true
1239- else throw("get operation is blocked by admin"), if ((size(dK.payments) == 0))
1318+ else throw("get operation is blocked by admin"), if ((size(dL.payments) == 0))
12401319 then true
12411320 else throw("no payments are expected")]
1242- if ((eG == eG))
1321+ if ((eH == eH))
12431322 then {
1244- let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
1245- if ((dr == dr))
1323+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1324+ if ((ds == ds))
12461325 then {
1247- let fW = invoke(bm, "unstake", [toBase58String(bg), fV], nil)
1248- if ((fW == fW))
1326+ let gm = invoke(bn, "unstake", [toBase58String(bh), gl], nil)
1327+ if ((gm == gm))
12491328 then {
1250- let cO = cb(toBase58String(dK.transactionId), toBase58String(bg), fV, dK.caller)
1251- let cu = cO._1
1252- let cv = cO._2
1253- let cw = cO._10
1254- let gk = [if ((cu >= gj))
1329+ let cP = cc(toBase58String(dL.transactionId), toBase58String(bh), gl, dL.caller)
1330+ let cv = cP._1
1331+ let cw = cP._2
1332+ let cx = cP._10
1333+ let gA = [if ((cv >= gz))
12551334 then true
1256- else throw(makeString(["amount asset amount to receive is less than ", toString(gj)], "")), if ((cv >= ge))
1335+ else throw(makeString(["amount asset amount to receive is less than ", toString(gz)], "")), if ((cw >= gu))
12571336 then true
1258- else throw(makeString(["price asset amount to receive is less than ", toString(ge)], ""))]
1259- if ((gk == gk))
1337+ else throw(makeString(["price asset amount to receive is less than ", toString(gu)], ""))]
1338+ if ((gA == gA))
12601339 then {
1261- let gb = invoke(aN, "burn", [fV], [AttachedPayment(bg, fV)])
1262- if ((gb == gb))
1340+ let gr = invoke(aO, "burn", [gl], [AttachedPayment(bh, gl)])
1341+ if ((gr == gr))
12631342 then {
1264- let gl = ds(-(cu), -(cv), 0)
1265- let ft = gl._1
1266- let dj = gl._2
1267- let fu = dw(dr, dj)
1268- if ((fu == fu))
1269- then (cw ++ ft)
1343+ let gB = dt(-(cv), -(cw), 0)
1344+ let fJ = gB._1
1345+ let dk = gB._2
1346+ let fK = dx(ds, dk)
1347+ if ((fK == fK))
1348+ then (cx ++ fJ)
12701349 else throw("Strict value is not equal to itself.")
12711350 }
12721351 else throw("Strict value is not equal to itself.")
12821361
12831362
12841363
1285-@Callable(dK)
1286-func activate (gm,gn) = if ((toString(dK.caller) != toString(aN)))
1364+@Callable(dL)
1365+func activate (gC,gD) = if ((toString(dL.caller) != toString(aO)))
12871366 then throw("permissions denied")
1288- else $Tuple2([StringEntry(ad(), gm), StringEntry(ae(), gn)], "success")
1367+ else $Tuple2([StringEntry(ae(), gC), StringEntry(af(), gD)], "success")
12891368
12901369
12911370
1292-@Callable(dK)
1371+@Callable(dL)
12931372 func refreshKLp () = {
1294- let go = valueOrElse(getInteger(aj), 0)
1295- let gp = if (((height - go) >= am))
1373+ let gE = valueOrElse(getInteger(ak), 0)
1374+ let gF = if (((height - gE) >= an))
12961375 then unit
1297- else aK(makeString([toString(am), " blocks have not passed since the previous call"], ""))
1298- if ((gp == gp))
1376+ else aL(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1377+ if ((gF == gF))
12991378 then {
1300- let dD = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ai), "0")), aM("invalid kLp"))
1301- let gq = ds(0, 0, 0)
1302- let gr = gq._1
1303- let dj = gq._2
1304- let dv = if ((dD != dj))
1305- then gr
1306- else aK("nothing to refresh")
1307- $Tuple2(dv, toString(dj))
1379+ let dE = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aN("invalid kLp"))
1380+ let gG = dt(0, 0, 0)
1381+ let gH = gG._1
1382+ let dk = gG._2
1383+ let dw = if ((dE != dk))
1384+ then gH
1385+ else aL("nothing to refresh")
1386+ $Tuple2(dw, toString(dk))
13081387 }
13091388 else throw("Strict value is not equal to itself.")
13101389 }
13111390
13121391
13131392
1314-@Callable(dK)
1315-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aU())
1393+@Callable(dL)
1394+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aV())
13161395
13171396
13181397
1319-@Callable(dK)
1320-func getAccBalanceWrapperREADONLY (bE) = $Tuple2(nil, bD(bE))
1398+@Callable(dL)
1399+func getAccBalanceWrapperREADONLY (bF) = $Tuple2(nil, bE(bF))
13211400
13221401
13231402
1324-@Callable(dK)
1325-func calcPricesWrapperREADONLY (bM,bN,bR) = {
1326- let ca = bQ(bM, bN, bR)
1327- $Tuple2(nil, [toString(ca[0]), toString(ca[1]), toString(ca[2])])
1403+@Callable(dL)
1404+func calcPricesWrapperREADONLY (bN,bO,bS) = {
1405+ let cb = bR(bN, bO, bS)
1406+ $Tuple2(nil, [toString(cb[0]), toString(cb[1]), toString(cb[2])])
13281407 }
13291408
13301409
13311410
1332-@Callable(dK)
1411+@Callable(dL)
13331412 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
13341413
13351414
13361415
1337-@Callable(dK)
1416+@Callable(dL)
13381417 func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
13391418
13401419
13411420
1342-@Callable(dK)
1343-func calcPriceBigIntWrapperREADONLY (bG,bH) = $Tuple2(nil, toString(bF(parseBigIntValue(bG), parseBigIntValue(bH))))
1421+@Callable(dL)
1422+func calcPriceBigIntWrapperREADONLY (bH,bI) = $Tuple2(nil, toString(bG(parseBigIntValue(bH), parseBigIntValue(bI))))
13441423
13451424
13461425
1347-@Callable(dK)
1348-func estimatePutOperationWrapperREADONLY (cc,cy,cz,cA,cB,cC,aa,cD,cE) = $Tuple2(nil, cx(cc, cy, cz, cA, cB, cC, aa, cD, cE))
1426+@Callable(dL)
1427+func estimatePutOperationWrapperREADONLY (cd,cz,cA,cB,cC,cD,ab,cE,cF) = $Tuple2(nil, cy(cd, cz, cA, cB, cC, cD, ab, cE, cF))
13491428
13501429
13511430
1352-@Callable(dK)
1353-func estimateGetOperationWrapperREADONLY (cc,cd,ce,aa) = {
1354- let cO = cb(cc, cd, ce, addressFromStringValue(aa))
1355- $Tuple2(nil, $Tuple10(cO._1, cO._2, cO._3, cO._4, cO._5, cO._6, cO._7, toString(cO._8), cO._9, cO._10))
1431+@Callable(dL)
1432+func estimateGetOperationWrapperREADONLY (cd,ce,cf,ab) = {
1433+ let cP = cc(cd, ce, cf, addressFromStringValue(ab))
1434+ $Tuple2(nil, $Tuple10(cP._1, cP._2, cP._3, cP._4, cP._5, cP._6, cP._7, toString(cP._8), cP._9, cP._10))
13561435 }
13571436
13581437
13591438
1360-@Callable(dK)
1439+@Callable(dL)
13611440 func statsREADONLY () = {
1362- let bS = aU()
1363- let cf = fromBase58String(bS[q])
1364- let gs = bS[r]
1365- let gt = bS[s]
1366- let cH = bS[v]
1367- let cI = bS[w]
1368- let bT = parseIntValue(bS[t])
1369- let bU = parseIntValue(bS[u])
1370- let gu = valueOrErrorMessage(assetInfo(cf), (("Asset " + toBase58String(cf)) + " doesn't exist")).quantity
1371- let gv = bD(gs)
1372- let gw = bD(gt)
1373- let gx = if ((gu == 0))
1441+ let bT = aV()
1442+ let cg = fromBase58String(bT[q])
1443+ let gI = bT[r]
1444+ let gJ = bT[s]
1445+ let cI = bT[v]
1446+ let cJ = bT[w]
1447+ let bU = parseIntValue(bT[t])
1448+ let bV = parseIntValue(bT[u])
1449+ let gK = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1450+ let gL = bE(gI)
1451+ let gM = bE(gJ)
1452+ let gN = if ((gK == 0))
13741453 then [e, e, e]
1375- else bQ(gv, gw, gu)
1376- let cp = 0
1377- let gy = H(gx[1], b)
1378- let gz = H(gx[2], b)
1379- let gA = value(getInteger(aN, ax(toString(this))))
1380- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gv), toString(gw), toString(gu), toString(cp), toString(gy), toString(gz), toString(gA)], j))
1454+ else bR(gL, gM, gK)
1455+ let cq = 0
1456+ let gO = H(gN[1], b)
1457+ let gP = H(gN[2], b)
1458+ let gQ = value(getInteger(aO, ay(toString(this))))
1459+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gL), toString(gM), toString(gK), toString(cq), toString(gO), toString(gP), toString(gQ)], j))
13811460 }
13821461
13831462
13841463
1385-@Callable(dK)
1386-func evaluatePutByAmountAssetREADONLY (cz) = {
1387- let bS = aU()
1388- let cf = fromBase58String(bS[q])
1389- let cF = bS[r]
1390- let cg = fromBase58String(cF)
1391- let cG = bS[s]
1464+@Callable(dL)
1465+func evaluatePutByAmountAssetREADONLY (cA) = {
1466+ let bT = aV()
1467+ let cg = fromBase58String(bT[q])
1468+ let cG = bT[r]
13921469 let ch = fromBase58String(cG)
1393- let bT = parseIntValue(bS[t])
1394- let bU = parseIntValue(bS[u])
1395- let ci = bS[p]
1396- let gu = valueOrErrorMessage(assetInfo(cf), (("Asset " + toBase58String(cf)) + " doesn't exist")).quantity
1397- let gv = bD(cF)
1398- let gw = bD(cG)
1399- let bO = D(gv, bT)
1400- let bP = D(gw, bU)
1401- let co = if ((gu == 0))
1470+ let cH = bT[s]
1471+ let ci = fromBase58String(cH)
1472+ let bU = parseIntValue(bT[t])
1473+ let bV = parseIntValue(bT[u])
1474+ let cj = bT[p]
1475+ let gK = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1476+ let gL = bE(cG)
1477+ let gM = bE(cH)
1478+ let bP = D(gL, bU)
1479+ let bQ = D(gM, bV)
1480+ let cp = if ((gK == 0))
14021481 then e
1403- else bF(bP, bO)
1404- let cL = D(cz, bT)
1405- let cM = fraction(cL, co, d)
1406- let cB = H(cM, bU)
1407- let dQ = cx("", 500000, cz, cg, cB, ch, "", true, false)
1408- let cW = dQ._1
1409- let gB = dQ._3
1410- let ck = dQ._4
1411- let cm = dQ._5
1412- let cj = dQ._6
1413- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cW), toString(H(co, b)), toString(ck), toString(cm), toString(cj), ci, toString(cz), toString(cB)], j))
1482+ else bG(bQ, bP)
1483+ let cM = D(cA, bU)
1484+ let cN = fraction(cM, cp, d)
1485+ let cC = H(cN, bV)
1486+ let dR = cy("", 500000, cA, ch, cC, ci, "", true, false)
1487+ let cX = dR._1
1488+ let gR = dR._3
1489+ let cl = dR._4
1490+ let cn = dR._5
1491+ let ck = dR._6
1492+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cX), toString(H(cp, b)), toString(cl), toString(cn), toString(ck), cj, toString(cA), toString(cC)], j))
14141493 }
14151494
14161495
14171496
1418-@Callable(dK)
1419-func evaluatePutByPriceAssetREADONLY (cB) = {
1420- let bS = aU()
1421- let cf = fromBase58String(bS[q])
1422- let cF = bS[r]
1423- let cg = fromBase58String(cF)
1424- let cG = bS[s]
1497+@Callable(dL)
1498+func evaluatePutByPriceAssetREADONLY (cC) = {
1499+ let bT = aV()
1500+ let cg = fromBase58String(bT[q])
1501+ let cG = bT[r]
14251502 let ch = fromBase58String(cG)
1426- let bT = parseIntValue(bS[t])
1427- let bU = parseIntValue(bS[u])
1428- let ci = bS[p]
1429- let gu = valueOrErrorMessage(assetInfo(cf), (("Asset " + toBase58String(cf)) + " doesn't exist")).quantity
1430- let gC = bD(cF)
1431- let gD = bD(cG)
1432- let gE = D(gC, bT)
1433- let gF = D(gD, bU)
1434- let co = if ((gu == 0))
1503+ let cH = bT[s]
1504+ let ci = fromBase58String(cH)
1505+ let bU = parseIntValue(bT[t])
1506+ let bV = parseIntValue(bT[u])
1507+ let cj = bT[p]
1508+ let gK = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1509+ let gS = bE(cG)
1510+ let gT = bE(cH)
1511+ let gU = D(gS, bU)
1512+ let gV = D(gT, bV)
1513+ let cp = if ((gK == 0))
14351514 then e
1436- else bF(gF, gE)
1437- let cM = D(cB, bU)
1438- let cL = fraction(cM, d, co)
1439- let cz = H(cL, bT)
1440- let dQ = cx("", 500000, cz, cg, cB, ch, "", true, false)
1441- let cW = dQ._1
1442- let gB = dQ._3
1443- let ck = dQ._4
1444- let cm = dQ._5
1445- let cj = dQ._6
1446- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cW), toString(H(co, b)), toString(ck), toString(cm), toString(cj), ci, toString(cz), toString(cB)], j))
1515+ else bG(gV, gU)
1516+ let cN = D(cC, bV)
1517+ let cM = fraction(cN, d, cp)
1518+ let cA = H(cM, bU)
1519+ let dR = cy("", 500000, cA, ch, cC, ci, "", true, false)
1520+ let cX = dR._1
1521+ let gR = dR._3
1522+ let cl = dR._4
1523+ let cn = dR._5
1524+ let ck = dR._6
1525+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cX), toString(H(cp, b)), toString(cl), toString(cn), toString(ck), cj, toString(cA), toString(cC)], j))
14471526 }
14481527
14491528
14501529
1451-@Callable(dK)
1452-func evaluateGetREADONLY (gG,gH) = {
1453- let cO = cb("", gG, gH, this)
1454- let cu = cO._1
1455- let cv = cO._2
1456- let ck = cO._5
1457- let cm = cO._6
1458- let cj = cO._7
1459- let cp = cO._8
1460- let ci = parseIntValue(cO._9)
1461- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cu), toString(cv), toString(ck), toString(cm), toString(cj), toString(cp), toString(ci)], j))
1530+@Callable(dL)
1531+func evaluateGetREADONLY (gW,gX) = {
1532+ let cP = cc("", gW, gX, this)
1533+ let cv = cP._1
1534+ let cw = cP._2
1535+ let cl = cP._5
1536+ let cn = cP._6
1537+ let ck = cP._7
1538+ let cq = cP._8
1539+ let cj = parseIntValue(cP._9)
1540+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cv), toString(cw), toString(cl), toString(cn), toString(ck), toString(cq), toString(cj)], j))
14621541 }
14631542
14641543
1465-@Verifier(gI)
1466-func gJ () = {
1467- let gK = {
1468- let dV = eY()
1469- if ($isInstanceOf(dV, "ByteVector"))
1544+@Verifier(gY)
1545+func gZ () = {
1546+ let ha = {
1547+ let dW = eZ()
1548+ if ($isInstanceOf(dW, "ByteVector"))
14701549 then {
1471- let fc = dV
1472- fc
1550+ let fd = dW
1551+ fd
14731552 }
1474- else if ($isInstanceOf(dV, "Unit"))
1475- then gI.senderPublicKey
1553+ else if ($isInstanceOf(dW, "Unit"))
1554+ then gY.senderPublicKey
14761555 else throw("Match error")
14771556 }
1478- let dV = gI
1479- if ($isInstanceOf(dV, "Order"))
1557+ let dW = gY
1558+ if ($isInstanceOf(dW, "Order"))
14801559 then {
1481- let dz = dV
1482- let gL = aT()
1483- let gM = dy(dz)
1484- let aC = gM._1
1485- let aD = gM._2
1486- let aE = sigVerify(dz.bodyBytes, dz.proofs[0], dz.senderPublicKey)
1487- let aF = sigVerify(dz.bodyBytes, dz.proofs[1], gL)
1488- if (if (if (aC)
1489- then aE
1490- else false)
1560+ let dA = dW
1561+ let hb = aU()
1562+ let hc = dz(dA)
1563+ let aD = hc._1
1564+ let aE = hc._2
1565+ let aF = sigVerify(dA.bodyBytes, dA.proofs[0], dA.senderPublicKey)
1566+ let aG = sigVerify(dA.bodyBytes, dA.proofs[1], hb)
1567+ if (if (if (aD)
14911568 then aF
14921569 else false)
1570+ then aG
1571+ else false)
14931572 then true
1494- else aB(aC, aD, aE, aF)
1573+ else aC(aD, aE, aF, aG)
14951574 }
1496- else if ($isInstanceOf(dV, "SetScriptTransaction"))
1575+ else if ($isInstanceOf(dW, "SetScriptTransaction"))
14971576 then {
1498- let eZ = dV
1499- if (sigVerify(gI.bodyBytes, gI.proofs[0], gK))
1577+ let fa = dW
1578+ if (sigVerify(gY.bodyBytes, gY.proofs[0], ha))
15001579 then true
15011580 else {
1502- let gN = blake2b256(value(eZ.script))
1503- let gO = fromBase64String(value(getString(aN, az())))
1504- let gP = scriptHash(this)
1505- if ((gO == gN))
1506- then (gP != gN)
1581+ let hd = blake2b256(value(fa.script))
1582+ let he = fromBase64String(value(getString(aO, aA())))
1583+ let hf = scriptHash(this)
1584+ if ((he == hd))
1585+ then (hf != hd)
15071586 else false
15081587 }
15091588 }
1510- else sigVerify(gI.bodyBytes, gI.proofs[0], gK)
1589+ else sigVerify(gY.bodyBytes, gY.proofs[0], ha)
15111590 }
15121591
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(0)
1515
1616 let g = toBigInt(1)
1717
1818 let h = toBigInt(2)
1919
2020 let i = "WAVES"
2121
2222 let j = "__"
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 10
5151
5252 let y = 1
5353
5454 let z = 2
5555
5656 let A = 3
5757
5858 let B = 1
5959
6060 let C = 7
6161
6262 func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
6363
6464
6565 func G (E,F) = fraction(E, d, F)
6666
6767
6868 func H (I,J) = toInt(fraction(I, toBigInt(J), d))
6969
7070
7171 func K (I,J,L) = toInt(fraction(I, toBigInt(J), d, L))
7272
7373
7474 func M (N,O,P) = fraction(N, O, P)
7575
7676
7777 func Q (I) = if ((0 > I))
7878 then -(I)
7979 else I
8080
8181
8282 func R (I) = if ((e > I))
8383 then -(I)
8484 else I
8585
8686
87-func S () = "%s__factoryContract"
87+func S () = "%s__swapContract"
8888
8989
90-func T () = "%s__managerPublicKey"
90+func T () = "%s__factoryContract"
9191
9292
93-func U () = "%s__pendingManagerPublicKey"
93+func U () = "%s__managerPublicKey"
9494
9595
96-func V () = "%s%s__price__last"
96+func V () = "%s__pendingManagerPublicKey"
9797
9898
99-func W (X,Y) = makeString(["%s%s%d%d__price__history", toString(X), toString(Y)], j)
99+func W () = "%s%s__price__last"
100100
101101
102-func Z (aa,ab) = ((("%s%s%s__P__" + aa) + "__") + ab)
102+func X (Y,Z) = makeString(["%s%s%d%d__price__history", toString(Y), toString(Z)], j)
103103
104104
105-func ac (aa,ab) = ((("%s%s%s__G__" + aa) + "__") + ab)
105+func aa (ab,ac) = ((("%s%s%s__P__" + ab) + "__") + ac)
106106
107107
108-func ad () = "%s__amountAsset"
108+func ad (ab,ac) = ((("%s%s%s__G__" + ab) + "__") + ac)
109109
110110
111-func ae () = "%s__priceAsset"
111+func ae () = "%s__amountAsset"
112112
113113
114-let af = "%s__fee"
115-
116-let ag = fraction(10, b, 10000)
117-
118-let ah = valueOrElse(getInteger(this, af), ag)
119-
120-let ai = makeString(["%s", "kLp"], j)
121-
122-let aj = makeString(["%s", "kLpRefreshedHeight"], j)
123-
124-let ak = makeString(["%s", "refreshKLpDelay"], j)
125-
126-let al = 30
127-
128-let am = valueOrElse(getInteger(this, ak), al)
129-
130-func an () = "%s__factoryConfig"
114+func af () = "%s__priceAsset"
131115
132116
133-func ao () = "%s%s__matcher__publicKey"
117+let ag = "%s__fee"
118+
119+let ah = fraction(10, b, 10000)
120+
121+let ai = valueOrElse(getInteger(this, ag), ah)
122+
123+let aj = makeString(["%s", "kLp"], j)
124+
125+let ak = makeString(["%s", "kLpRefreshedHeight"], j)
126+
127+let al = makeString(["%s", "refreshKLpDelay"], j)
128+
129+let am = 30
130+
131+let an = valueOrElse(getInteger(this, al), am)
132+
133+func ao () = "%s__factoryConfig"
134134
135135
136-func ap (aq) = (("%s%s%s__" + aq) + "__mappings__poolContract2LpAsset")
136+func ap () = "%s%s__matcher__publicKey"
137137
138138
139-func ar (as,at) = (((("%d%d%s__" + as) + "__") + at) + "__config")
139+func aq (ar) = (("%s%s%s__" + ar) + "__mappings__poolContract2LpAsset")
140140
141141
142-func au (av) = ("%s%s%s__mappings__baseAsset2internalId__" + av)
142+func as (at,au) = (((("%d%d%s__" + at) + "__") + au) + "__config")
143143
144144
145-func aw () = "%s__shutdown"
145+func av (aw) = ("%s%s%s__mappings__baseAsset2internalId__" + aw)
146146
147147
148-func ax (ay) = ("%s%s__poolWeight__" + ay)
148+func ax () = "%s__shutdown"
149149
150150
151-func az () = "%s__allowedLpScriptHash"
151+func ay (az) = ("%s%s__poolWeight__" + az)
152152
153153
154-let aA = "%s__feeCollectorAddress"
155-
156-func aB (aC,aD,aE,aF) = throw((((((((("order validation failed: orderValid=" + toString(aC)) + " (") + aD) + ")") + " senderValid=") + toString(aE)) + " matcherValid=") + toString(aF)))
154+func aA () = "%s__allowedLpScriptHash"
157155
158156
159-func aG (aH,aI) = valueOrErrorMessage(getString(aH, aI), makeString(["mandatory ", toString(aH), ".", aI, " is not defined"], ""))
157+let aB = "%s__feeCollectorAddress"
158+
159+func aC (aD,aE,aF,aG) = throw((((((((("order validation failed: orderValid=" + toString(aD)) + " (") + aE) + ")") + " senderValid=") + toString(aF)) + " matcherValid=") + toString(aG)))
160160
161161
162-func aJ (aH,aI) = valueOrErrorMessage(getInteger(aH, aI), makeString(["mandatory ", toString(aH), ".", aI, " is not defined"], ""))
162+func aH (aI,aJ) = valueOrErrorMessage(getString(aI, aJ), makeString(["mandatory ", toString(aI), ".", aJ, " is not defined"], ""))
163163
164164
165-func aK (aL) = throw(makeString(["lp.ride:", aL], " "))
165+func aK (aI,aJ) = valueOrErrorMessage(getInteger(aI, aJ), makeString(["mandatory ", toString(aI), ".", aJ, " is not defined"], ""))
166166
167167
168-func aM (aL) = makeString(["lp.ride:", aL], " ")
168+func aL (aM) = throw(makeString(["lp.ride:", aM], " "))
169169
170170
171-let aN = addressFromStringValue(aG(this, S()))
171+func aN (aM) = makeString(["lp.ride:", aM], " ")
172172
173-let aO = addressFromStringValue(aG(aN, aA))
174173
175-let aP = {
176- let aQ = invoke(aN, "getInFeeREADONLY", [toString(this)], nil)
177- if ($isInstanceOf(aQ, "Int"))
178- then aQ
179- else throw(($getType(aQ) + " couldn't be cast to Int"))
174+let aO = addressFromStringValue(aH(this, T()))
175+
176+let aP = addressFromStringValue(aH(aO, aB))
177+
178+let aQ = {
179+ let aR = invoke(aO, "getInFeeREADONLY", [toString(this)], nil)
180+ if ($isInstanceOf(aR, "Int"))
181+ then aR
182+ else throw(($getType(aR) + " couldn't be cast to Int"))
180183 }
181184
182-let aR = {
183- let aQ = invoke(aN, "getOutFeeREADONLY", [toString(this)], nil)
184- if ($isInstanceOf(aQ, "Int"))
185- then aQ
186- else throw(($getType(aQ) + " couldn't be cast to Int"))
185+let aS = {
186+ let aR = invoke(aO, "getOutFeeREADONLY", [toString(this)], nil)
187+ if ($isInstanceOf(aR, "Int"))
188+ then aR
189+ else throw(($getType(aR) + " couldn't be cast to Int"))
187190 }
188191
189-func aS () = valueOrElse(getBoolean(aN, aw()), false)
192+func aT () = valueOrElse(getBoolean(aO, ax()), false)
190193
191194
192-func aT () = fromBase58String(aG(aN, ao()))
195+func aU () = fromBase58String(aH(aO, ap()))
193196
194197
195-func aU () = {
196- let aV = aG(this, ad())
197- let aW = aG(this, ae())
198- let at = aJ(aN, au(aW))
199- let as = aJ(aN, au(aV))
200- split(aG(aN, ar(toString(as), toString(at))), j)
198+func aV () = {
199+ let aW = aH(this, ae())
200+ let aX = aH(this, af())
201+ let au = aK(aO, av(aX))
202+ let at = aK(aO, av(aW))
203+ split(aH(aO, as(toString(at), toString(au))), j)
201204 }
202205
203206
204-func aX (aY) = if ((aY == i))
207+func aY (aZ) = if ((aZ == i))
205208 then unit
206- else fromBase58String(aY)
209+ else fromBase58String(aZ)
207210
208211
209-func aZ (aY) = if ((aY == unit))
212+func ba (aZ) = if ((aZ == unit))
210213 then i
211- else toBase58String(value(aY))
214+ else toBase58String(value(aZ))
212215
213216
214-func ba (bb) = $Tuple7(addressFromStringValue(bb[o]), parseIntValue(bb[p]), fromBase58String(bb[q]), aX(bb[r]), aX(bb[s]), parseIntValue(bb[t]), parseIntValue(bb[u]))
217+func bb (bc) = $Tuple7(addressFromStringValue(bc[o]), parseIntValue(bc[p]), fromBase58String(bc[q]), aY(bc[r]), aY(bc[s]), parseIntValue(bc[t]), parseIntValue(bc[u]))
215218
216219
217-let bc = ba(aU())
220+let bd = bb(aV())
218221
219-let bd = bc
222+let be = bd
220223
221-let be = bd._1
224+let bf = be._1
222225
223-let bf = bd._2
226+let bg = be._2
224227
225-let bg = bd._3
228+let bh = be._3
226229
227-let bh = bd._4
230+let bi = be._4
228231
229-let bi = bd._5
232+let bj = be._5
230233
231-let bj = bd._6
234+let bk = be._6
232235
233-let bk = bd._7
236+let bl = be._7
234237
235-func bl () = split(aG(aN, an()), j)
238+func bm () = split(aH(aO, ao()), j)
236239
237240
238-let bm = valueOrErrorMessage(addressFromString(bl()[B]), "incorrect staking address")
241+let bn = valueOrErrorMessage(addressFromString(bm()[B]), "incorrect staking address")
239242
240-let bn = valueOrErrorMessage(addressFromString(bl()[C]), "incorrect staking address")
243+let bo = valueOrErrorMessage(addressFromString(bm()[C]), "incorrect staking address")
241244
242-func bo (bp,bq,br,bs,bt,bu,bv,bw,bx,by) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bp), toString(bq), toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by)], j)
245+func bp (bq,br,bs,bt,bu,bv,bw,bx,by,bz) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bq), toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by), toString(bz)], j)
243246
244247
245-func bz (bA,bB,bC,bs,bv,bw) = makeString(["%d%d%d%d%d%d", toString(bA), toString(bB), toString(bC), toString(bs), toString(bv), toString(bw)], j)
248+func bA (bB,bC,bD,bt,bw,bx) = makeString(["%d%d%d%d%d%d", toString(bB), toString(bC), toString(bD), toString(bt), toString(bw), toString(bx)], j)
246249
247250
248-func bD (bE) = if ((bE == "WAVES"))
251+func bE (bF) = if ((bF == "WAVES"))
249252 then wavesBalance(this).available
250- else assetBalance(this, fromBase58String(bE))
253+ else assetBalance(this, fromBase58String(bF))
251254
252255
253-func bF (bG,bH) = fraction(bG, d, bH)
256+func bG (bH,bI) = fraction(bH, d, bI)
254257
255258
256-func bI (bG,bH,L) = fraction(bG, d, bH, L)
259+func bJ (bH,bI,L) = fraction(bH, d, bI, L)
257260
258261
259-func bJ (bK,bL,bM,bN) = {
260- let bO = D(bM, bK)
262+func bK (bL,bM,bN,bO) = {
261263 let bP = D(bN, bL)
262- bF(bP, bO)
264+ let bQ = D(bO, bM)
265+ bG(bQ, bP)
263266 }
264267
265268
266-func bQ (bM,bN,bR) = {
267- let bS = aU()
268- let bT = parseIntValue(bS[t])
269- let bU = parseIntValue(bS[u])
270- let bV = bJ(bT, bU, bM, bN)
271- let bH = D(bM, bT)
272- let bG = D(bN, bU)
273- let bW = D(bR, b)
274- let bX = bF(bH, bW)
275- let bY = bF(bG, bW)
276-[bV, bX, bY]
269+func bR (bN,bO,bS) = {
270+ let bT = aV()
271+ let bU = parseIntValue(bT[t])
272+ let bV = parseIntValue(bT[u])
273+ let bW = bK(bU, bV, bN, bO)
274+ let bI = D(bN, bU)
275+ let bH = D(bO, bV)
276+ let bX = D(bS, b)
277+ let bY = bG(bI, bX)
278+ let bZ = bG(bH, bX)
279+[bW, bY, bZ]
277280 }
278281
279282
280-func bZ (bM,bN,bR) = {
281- let ca = bQ(bM, bN, bR)
282-[H(ca[0], b), H(ca[1], b), H(ca[2], b)]
283+func ca (bN,bO,bS) = {
284+ let cb = bR(bN, bO, bS)
285+[H(cb[0], b), H(cb[1], b), H(cb[2], b)]
283286 }
284287
285288
286-func cb (cc,cd,ce,aa) = {
287- let bS = aU()
288- let cf = bS[q]
289- let cg = bS[r]
290- let ch = bS[s]
291- let bK = parseIntValue(bS[t])
292- let bL = parseIntValue(bS[u])
293- let ci = bS[p]
294- let cj = valueOrErrorMessage(assetInfo(fromBase58String(cf)), (("Asset " + cf) + " doesn't exist")).quantity
295- if ((cf != cd))
289+func cc (cd,ce,cf,ab) = {
290+ let bT = aV()
291+ let cg = bT[q]
292+ let ch = bT[r]
293+ let ci = bT[s]
294+ let bL = parseIntValue(bT[t])
295+ let bM = parseIntValue(bT[u])
296+ let cj = bT[p]
297+ let ck = valueOrErrorMessage(assetInfo(fromBase58String(cg)), (("Asset " + cg) + " doesn't exist")).quantity
298+ if ((cg != ce))
296299 then throw("Invalid asset passed.")
297300 else {
298- let ck = bD(cg)
299- let cl = D(ck, bK)
300- let cm = bD(ch)
301- let cn = D(cm, bL)
302- let co = bF(cn, cl)
303- let cp = H(co, b)
304- let cq = D(ce, b)
305- let cr = D(cj, b)
306- let cs = fraction(cl, cq, cr)
307- let ct = fraction(cn, cq, cr)
308- let cu = K(cs, bK, FLOOR)
301+ let cl = bE(ch)
302+ let cm = D(cl, bL)
303+ let cn = bE(ci)
304+ let co = D(cn, bM)
305+ let cp = bG(co, cm)
306+ let cq = H(cp, b)
307+ let cr = D(cf, b)
308+ let cs = D(ck, b)
309+ let ct = fraction(cm, cr, cs)
310+ let cu = fraction(co, cr, cs)
309311 let cv = K(ct, bL, FLOOR)
310- let cw = if ((cc == ""))
312+ let cw = K(cu, bM, FLOOR)
313+ let cx = if ((cd == ""))
311314 then nil
312- else [ScriptTransfer(aa, cu, if ((cg == "WAVES"))
315+ else [ScriptTransfer(ab, cv, if ((ch == "WAVES"))
313316 then unit
314- else fromBase58String(cg)), ScriptTransfer(aa, cv, if ((ch == "WAVES"))
317+ else fromBase58String(ch)), ScriptTransfer(ab, cw, if ((ci == "WAVES"))
315318 then unit
316- else fromBase58String(ch)), StringEntry(ac(toString(aa), cc), bz(cu, cv, ce, cp, height, lastBlock.timestamp)), IntegerEntry(V(), cp), IntegerEntry(W(height, lastBlock.timestamp), cp)]
317- $Tuple10(cu, cv, cg, ch, ck, cm, cj, co, ci, cw)
319+ else fromBase58String(ci)), StringEntry(ad(toString(ab), cd), bA(cv, cw, cf, cq, height, lastBlock.timestamp)), IntegerEntry(W(), cq), IntegerEntry(X(height, lastBlock.timestamp), cq)]
320+ $Tuple10(cv, cw, ch, ci, cl, cn, ck, cp, cj, cx)
318321 }
319322 }
320323
321324
322-func cx (cc,cy,cz,cA,cB,cC,aa,cD,cE) = {
323- let bS = aU()
324- let cf = fromBase58String(bS[q])
325- let cF = bS[r]
326- let cG = bS[s]
327- let cH = bS[v]
328- let cI = bS[w]
329- let bT = parseIntValue(bS[t])
330- let bU = parseIntValue(bS[u])
331- let ci = bS[p]
332- let cj = valueOrErrorMessage(assetInfo(cf), (("Asset " + toBase58String(cf)) + " doesn't exist")).quantity
333- let cJ = toBase58String(valueOrElse(cA, fromBase58String("WAVES")))
334- let cK = toBase58String(valueOrElse(cC, fromBase58String("WAVES")))
335- if (if ((cF != cJ))
325+func cy (cd,cz,cA,cB,cC,cD,ab,cE,cF) = {
326+ let bT = aV()
327+ let cg = fromBase58String(bT[q])
328+ let cG = bT[r]
329+ let cH = bT[s]
330+ let cI = bT[v]
331+ let cJ = bT[w]
332+ let bU = parseIntValue(bT[t])
333+ let bV = parseIntValue(bT[u])
334+ let cj = bT[p]
335+ let ck = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
336+ let cK = toBase58String(valueOrElse(cB, fromBase58String("WAVES")))
337+ let cL = toBase58String(valueOrElse(cD, fromBase58String("WAVES")))
338+ if (if ((cG != cK))
336339 then true
337- else (cG != cK))
340+ else (cH != cL))
338341 then throw("Invalid amt or price asset passed.")
339342 else {
340- let ck = if (cD)
341- then bD(cF)
342- else (bD(cF) - cz)
343- let cm = if (cD)
344- then bD(cG)
345- else (bD(cG) - cB)
346- let cL = D(cz, bT)
347- let cM = D(cB, bU)
348- let cN = bF(cM, cL)
349- let cl = D(ck, bT)
350- let cn = D(cm, bU)
351- let cO = if ((cj == 0))
343+ let cl = if (cE)
344+ then bE(cG)
345+ else (bE(cG) - cA)
346+ let cn = if (cE)
347+ then bE(cH)
348+ else (bE(cH) - cC)
349+ let cM = D(cA, bU)
350+ let cN = D(cC, bV)
351+ let cO = bG(cN, cM)
352+ let cm = D(cl, bU)
353+ let co = D(cn, bV)
354+ let cP = if ((ck == 0))
352355 then {
353- let co = e
354- let cP = e
355- let bW = pow((cL * cM), 0, toBigInt(5), 1, 0, DOWN)
356- $Tuple5(H(bW, b), H(cL, bT), H(cM, bU), bF((cn + cM), (cl + cL)), cP)
356+ let cp = e
357+ let cQ = e
358+ let bX = pow((cM * cN), 0, toBigInt(5), 1, 0, DOWN)
359+ $Tuple5(H(bX, b), H(cM, bU), H(cN, bV), bG((co + cN), (cm + cM)), cQ)
357360 }
358361 else {
359- let co = bF(cn, cl)
360- let cP = fraction(R((co - cN)), d, co)
361- let cQ = D(cy, b)
362- if (if ((co != e))
363- then (cP > cQ)
362+ let cp = bG(co, cm)
363+ let cQ = fraction(R((cp - cO)), d, cp)
364+ let cR = D(cz, b)
365+ if (if ((cp != e))
366+ then (cQ > cR)
364367 else false)
365- then throw(((("Price slippage " + toString(cP)) + " exceeded the passed limit of ") + toString(cQ)))
368+ then throw(((("Price slippage " + toString(cQ)) + " exceeded the passed limit of ") + toString(cR)))
366369 else {
367- let cr = D(cj, b)
368- let cR = fraction(cL, bI(cn, cl, CEILING), d, CEILING)
369- let cS = fraction(cM, d, bI(cn, cl, FLOOR), CEILING)
370- let cT = if ((cR > cM))
371- then $Tuple2(cS, cM)
372- else $Tuple2(cL, cR)
373- let cU = cT._1
374- let cV = cT._2
375- let bW = fraction(cr, cV, cn, FLOOR)
376- $Tuple5(K(bW, b, FLOOR), K(cU, bT, CEILING), K(cV, bU, CEILING), co, cP)
370+ let cs = D(ck, b)
371+ let cS = fraction(cM, bJ(co, cm, CEILING), d, CEILING)
372+ let cT = fraction(cN, d, bJ(co, cm, FLOOR), CEILING)
373+ let cU = if ((cS > cN))
374+ then $Tuple2(cT, cN)
375+ else $Tuple2(cM, cS)
376+ let cV = cU._1
377+ let cW = cU._2
378+ let bX = fraction(cs, cW, co, FLOOR)
379+ $Tuple5(K(bX, b, FLOOR), K(cV, bU, CEILING), K(cW, bV, CEILING), cp, cQ)
377380 }
378381 }
379- let cW = cO._1
380- let cX = cO._2
381- let cY = cO._3
382- let cp = H(cO._4, b)
383- let cZ = H(cO._5, b)
384- if ((0 >= cW))
382+ let cX = cP._1
383+ let cY = cP._2
384+ let cZ = cP._3
385+ let cq = H(cP._4, b)
386+ let da = H(cP._5, b)
387+ if ((0 >= cX))
385388 then throw("Invalid calculations. LP calculated is less than zero.")
386389 else {
387- let da = if (!(cE))
390+ let db = if (!(cF))
388391 then 0
389- else cW
390- let db = (cz - cX)
391- let dc = (cB - cY)
392- let dd = [IntegerEntry(V(), cp), IntegerEntry(W(height, lastBlock.timestamp), cp), StringEntry(Z(aa, cc), bo(cX, cY, da, cp, cy, cZ, height, lastBlock.timestamp, db, dc))]
393- $Tuple13(cW, da, cp, ck, cm, cj, cf, ci, dd, db, dc, cA, cC)
392+ else cX
393+ let dc = (cA - cY)
394+ let dd = (cC - cZ)
395+ let de = [IntegerEntry(W(), cq), IntegerEntry(X(height, lastBlock.timestamp), cq), StringEntry(aa(ab, cd), bp(cY, cZ, db, cq, cz, da, height, lastBlock.timestamp, dc, dd))]
396+ $Tuple13(cX, db, cq, cl, cn, ck, cg, cj, de, dc, dd, cB, cD)
394397 }
395398 }
396399 }
397400
398401
399-func de (df,dg,cj) = {
400- let dh = G(df, toBigInt(bj))
402+func df (dg,dh,ck) = {
401403 let di = G(dg, toBigInt(bk))
402- let dj = fraction(pow((dh * di), 0, toBigInt(5), 1, 18, DOWN), g, cj)
403- if ((cj == f))
404+ let dj = G(dh, toBigInt(bl))
405+ let dk = fraction(pow((di * dj), 0, toBigInt(5), 1, 18, DOWN), g, ck)
406+ if ((ck == f))
404407 then f
405- else dj
408+ else dk
406409 }
407410
408411
409-func dk (dl,dm,dn) = {
410- let do = (toBigInt(bD(aZ(bh))) - dl)
411- let dp = (toBigInt(bD(aZ(bi))) - dm)
412- let dq = (toBigInt(value(assetInfo(bg)).quantity) - dn)
413- let dr = de(do, dp, dq)
414- dr
412+func dl (dm,dn,do) = {
413+ let dp = (toBigInt(bE(ba(bi))) - dm)
414+ let dq = (toBigInt(bE(ba(bj))) - dn)
415+ let dr = (toBigInt(value(assetInfo(bh)).quantity) - do)
416+ let ds = df(dp, dq, dr)
417+ ds
415418 }
416419
417420
418-func ds (dt,du,dn) = {
419- let do = (bD(aZ(bh)) + dt)
420- let dp = (bD(aZ(bi)) + du)
421- let dq = (value(assetInfo(bg)).quantity + dn)
422- let dj = de(toBigInt(do), toBigInt(dp), toBigInt(dq))
423- let dv = [IntegerEntry(aj, height), StringEntry(ai, toString(dj))]
424- $Tuple2(dv, dj)
421+func dt (du,dv,do) = {
422+ let dp = (bE(ba(bi)) + du)
423+ let dq = (bE(ba(bj)) + dv)
424+ let dr = (value(assetInfo(bh)).quantity + do)
425+ let dk = df(toBigInt(dp), toBigInt(dq), toBigInt(dr))
426+ let dw = [IntegerEntry(ak, height), StringEntry(aj, toString(dk))]
427+ $Tuple2(dw, dk)
425428 }
426429
427430
428-func dw (dx,dj) = if ((dj >= dx))
431+func dx (dy,dk) = if ((dk >= dy))
429432 then true
430- else aK(makeString(["updated KLp lower than current KLp", toString(dx), toString(dj)], " "))
433+ else aL(makeString(["updated KLp lower than current KLp", toString(dy), toString(dk)], " "))
431434
432435
433-func dy (dz) = {
434- let do = bD(aZ(bh))
435- let dp = bD(aZ(bi))
436- let dA = dz.amount
437- let dB = fraction(dz.amount, dz.price, b, FLOOR)
438- let dC = if ((dz.orderType == Buy))
439- then $Tuple2(dA, -(dB))
440- else $Tuple2(-(dA), dB)
441- let dt = dC._1
442- let du = dC._2
443- if (if (if (aS())
436+func dz (dA) = {
437+ let dp = bE(ba(bi))
438+ let dq = bE(ba(bj))
439+ let dB = dA.amount
440+ let dC = fraction(dA.amount, dA.price, b, FLOOR)
441+ let dD = if ((dA.orderType == Buy))
442+ then $Tuple2(dB, -(dC))
443+ else $Tuple2(-(dB), dC)
444+ let du = dD._1
445+ let dv = dD._2
446+ if (if (if (aT())
444447 then true
445- else (bf == m))
448+ else (bg == m))
446449 then true
447- else (bf == n))
450+ else (bg == n))
448451 then throw("Exchange operations disabled")
449- else if (if ((dz.assetPair.amountAsset != bh))
452+ else if (if ((dA.assetPair.amountAsset != bi))
450453 then true
451- else (dz.assetPair.priceAsset != bi))
454+ else (dA.assetPair.priceAsset != bj))
452455 then throw("Wrong order assets.")
453456 else {
454- let dD = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ai), "0")), aM("invalid kLp"))
455- let dE = ds(dt, du, 0)
456- let dF = dE._1
457- let dG = dE._2
458- let dH = (dG >= dD)
459- let dI = makeString(["kLp=", toString(dD), " kLpNew=", toString(dG), " amountAssetBalance=", toString(do), " priceAssetBalance=", toString(dp), " amountAssetBalanceDelta=", toString(dt), " priceAssetBalanceDelta=", toString(du), " height=", toString(height)], "")
460- $Tuple2(dH, dI)
457+ let dE = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aN("invalid kLp"))
458+ let dF = dt(du, dv, 0)
459+ let dG = dF._1
460+ let dH = dF._2
461+ let dI = (dH >= dE)
462+ let dJ = makeString(["kLp=", toString(dE), " kLpNew=", toString(dH), " amountAssetBalance=", toString(dp), " priceAssetBalance=", toString(dq), " amountAssetBalanceDelta=", toString(du), " priceAssetBalanceDelta=", toString(dv), " height=", toString(height)], "")
463+ $Tuple2(dI, dJ)
461464 }
462465 }
463466
464467
465-func dJ (dK) = if ((size(dK.payments) != 1))
468+func dK (dL) = if ((size(dL.payments) != 1))
466469 then throw("exactly 1 payment is expected")
467470 else {
468- let dL = value(dK.payments[0])
469- let cd = value(dL.assetId)
470- let dM = dL.amount
471- let cO = cb(toBase58String(dK.transactionId), toBase58String(cd), dM, dK.caller)
472- let cu = cO._1
473- let cv = cO._2
474- let ci = parseIntValue(cO._9)
475- let cw = cO._10
476- if (if (aS())
471+ let dM = value(dL.payments[0])
472+ let ce = value(dM.assetId)
473+ let dN = dM.amount
474+ let cP = cc(toBase58String(dL.transactionId), toBase58String(ce), dN, dL.caller)
475+ let cv = cP._1
476+ let cw = cP._2
477+ let cj = parseIntValue(cP._9)
478+ let cx = cP._10
479+ if (if (aT())
477480 then true
478- else (ci == n))
479- then throw(("Get operation is blocked by admin. Status = " + toString(ci)))
480- else $Tuple5(cu, cv, dM, cd, cw)
481+ else (cj == n))
482+ then throw(("Get operation is blocked by admin. Status = " + toString(cj)))
483+ else $Tuple5(cv, cw, dN, ce, cx)
481484 }
482485
483486
484-func dN (dK,cy,cE) = if ((size(dK.payments) != 2))
487+func dO (dL,cz,cF) = if ((size(dL.payments) != 2))
485488 then throw("exactly 2 payments are expected")
486489 else {
487- let dO = value(dK.payments[0])
488- let dP = value(dK.payments[1])
489- let dQ = cx(toBase58String(dK.transactionId), cy, dO.amount, dO.assetId, dP.amount, dP.assetId, toString(dK.caller), false, cE)
490- let ci = parseIntValue(dQ._8)
491- if (if (if (aS())
490+ let dP = value(dL.payments[0])
491+ let dQ = value(dL.payments[1])
492+ let dR = cy(toBase58String(dL.transactionId), cz, dP.amount, dP.assetId, dQ.amount, dQ.assetId, toString(dL.caller), false, cF)
493+ let cj = parseIntValue(dR._8)
494+ if (if (if (aT())
492495 then true
493- else (ci == l))
496+ else (cj == l))
494497 then true
495- else (ci == n))
496- then throw(("Put operation is blocked by admin. Status = " + toString(ci)))
497- else dQ
498+ else (cj == n))
499+ then throw(("Put operation is blocked by admin. Status = " + toString(cj)))
500+ else dR
498501 }
499502
500503
501-func dR (dS) = {
502- let dT = invoke(aN, "emit", [dS], nil)
503- if ((dT == dT))
504+func dS (dT) = {
505+ let dU = invoke(aO, "emit", [dT], nil)
506+ if ((dU == dU))
504507 then {
505- let dU = {
506- let dV = dT
507- if ($isInstanceOf(dV, "Address"))
508+ let dV = {
509+ let dW = dU
510+ if ($isInstanceOf(dW, "Address"))
508511 then {
509- let dW = dV
510- invoke(dW, "emit", [dS], nil)
512+ let dX = dW
513+ invoke(dX, "emit", [dT], nil)
511514 }
512515 else unit
513516 }
514- if ((dU == dU))
515- then dS
517+ if ((dV == dV))
518+ then dT
516519 else throw("Strict value is not equal to itself.")
517520 }
518521 else throw("Strict value is not equal to itself.")
519522 }
520523
521524
522-func dX (dS,ah) = {
523- let dY = if ((ah == 0))
525+func dY (dT,ai) = {
526+ let dZ = if ((ai == 0))
524527 then 0
525- else fraction(dS, ah, b)
526- $Tuple2((dS - dY), dY)
528+ else fraction(dT, ai, b)
529+ $Tuple2((dT - dZ), dZ)
527530 }
528531
529532
530-func dZ (ea,eb,aa,ab) = {
531- let ec = (ab == unit)
532- let ed = bD(aZ(bh))
533- let ee = bD(aZ(bi))
534- let ef = if ((eb == bh))
533+func ea (eb,ec,ab,ac) = {
534+ let ed = (ac == unit)
535+ let ee = bE(ba(bi))
536+ let ef = bE(ba(bj))
537+ let eg = if ((ec == bi))
535538 then true
536- else if ((eb == bi))
539+ else if ((ec == bj))
537540 then false
538- else aK("invalid asset")
539- let eg = if (ec)
540- then $Tuple2(ed, ee)
541- else if (ef)
542- then $Tuple2((ed - ea), ee)
543- else $Tuple2(ed, (ee - ea))
544- let eh = eg._1
545- let ei = eg._2
546- let ej = if (ef)
547- then $Tuple2(ea, 0)
548- else $Tuple2(0, ea)
549- let ek = ej._1
550- let el = ej._2
551- let dA = dX(ek, aP)._1
552- let dB = dX(el, aP)._1
553- let em = dX(ea, aP)
554- let en = em._1
555- let dY = em._2
556- let eo = (eh + dA)
541+ else aL("invalid asset")
542+ let eh = if (ed)
543+ then $Tuple2(ee, ef)
544+ else if (eg)
545+ then $Tuple2((ee - eb), ef)
546+ else $Tuple2(ee, (ef - eb))
547+ let ei = eh._1
548+ let ej = eh._2
549+ let ek = if (eg)
550+ then $Tuple2(eb, 0)
551+ else $Tuple2(0, eb)
552+ let el = ek._1
553+ let em = ek._2
554+ let dB = dY(el, aQ)._1
555+ let dC = dY(em, aQ)._1
556+ let en = dY(eb, aQ)
557+ let eo = en._1
558+ let dZ = en._2
557559 let ep = (ei + dB)
558- let eq = bF(D(ep, bk), D(eo, bj))
559- let er = H(eq, b)
560- let es = if (ef)
561- then eh
562- else ei
563- let et = toBigInt(es)
564- let eu = toBigInt(valueOrErrorMessage(assetInfo(bg), (("asset " + toBase58String(bg)) + " doesn't exist")).quantity)
565- let ev = if ((eu > f))
560+ let eq = (ej + dC)
561+ let er = bG(D(eq, bl), D(ep, bk))
562+ let es = H(er, b)
563+ let et = if (eg)
564+ then ei
565+ else ej
566+ let eu = toBigInt(et)
567+ let ev = toBigInt(valueOrErrorMessage(assetInfo(bh), (("asset " + toBase58String(bh)) + " doesn't exist")).quantity)
568+ let ew = if ((ev > f))
566569 then true
567- else aK("initial deposit requires all coins")
568- if ((ev == ev))
570+ else aL("initial deposit requires all coins")
571+ if ((ew == ew))
569572 then {
570- let ew = toBigInt(en)
571- let ex = max([0, toInt(((eu * (sqrtBigInt((d + ((ew * d) / et)), 18, 18, DOWN) - d)) / d))])
572- let dd = if (ec)
573+ let ex = toBigInt(eo)
574+ let ey = max([0, toInt(((ev * (sqrtBigInt((d + ((ex * d) / eu)), 18, 18, DOWN) - d)) / d))])
575+ let de = if (ed)
573576 then nil
574- else [IntegerEntry(V(), er), IntegerEntry(W(height, lastBlock.timestamp), er), StringEntry(Z(toString(value(aa)), toBase58String(value(ab))), bo(ek, el, ex, er, 0, 0, height, lastBlock.timestamp, 0, 0))]
575- let ey = bF(D(ei, bk), D(eh, bj))
576- let ez = H(ey, b)
577- let eA = {
578- let eB = if (ef)
579- then $Tuple2(ek, eh)
580- else $Tuple2(el, ei)
581- let dS = eB._1
582- let eC = eB._2
583- let eD = toInt(fraction(eu, toBigInt((dS / 2)), toBigInt(eC)))
584- fraction((ex - eD), b, eD)
577+ else [IntegerEntry(W(), es), IntegerEntry(X(height, lastBlock.timestamp), es), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bp(el, em, ey, es, 0, 0, height, lastBlock.timestamp, 0, 0))]
578+ let ez = bG(D(ej, bl), D(ei, bk))
579+ let eA = H(ez, b)
580+ let eB = {
581+ let eC = if (eg)
582+ then $Tuple2(el, ei)
583+ else $Tuple2(em, ej)
584+ let dT = eC._1
585+ let eD = eC._2
586+ let eE = toInt(fraction(ev, toBigInt((dT / 2)), toBigInt(eD)))
587+ fraction((ey - eE), b, eE)
585588 }
586- $Tuple5(ex, dd, dY, eA, ef)
589+ $Tuple5(ey, de, dZ, eB, eg)
587590 }
588591 else throw("Strict value is not equal to itself.")
589592 }
590593
591594
592-func eE (eF,en,eb,aa,ab) = {
593- let ec = (ab == unit)
594- let bS = aU()
595- let bT = parseIntValue(bS[t])
596- let bU = parseIntValue(bS[u])
597- let eG = [if ((eb == bg))
595+func eF (eG,eo,ec,ab,ac) = {
596+ let ed = (ac == unit)
597+ let bT = aV()
598+ let bU = parseIntValue(bT[t])
599+ let bV = parseIntValue(bT[u])
600+ let eH = [if ((ec == bh))
598601 then true
599- else aK("invalid lp asset")]
600- if ((eG == eG))
602+ else aL("invalid lp asset")]
603+ if ((eH == eH))
601604 then {
602- let eH = if ((eF == bh))
605+ let eI = if ((eG == bi))
603606 then true
604- else if ((eF == bi))
607+ else if ((eG == bj))
605608 then false
606- else aK("invalid asset")
607- let eI = if (eH)
608- then toBigInt(bD(aZ(bh)))
609- else toBigInt(bD(aZ(bi)))
610- let eJ = if (eH)
611- then bT
612- else bU
613- let eK = bD(aZ(bh))
614- let eL = bD(aZ(bi))
615- let eM = if (eH)
616- then eK
617- else eL
618- let eN = toBigInt(eM)
619- let eu = toBigInt(valueOrErrorMessage(assetInfo(bg), (("asset " + toBase58String(bg)) + " doesn't exist")).quantity)
620- let eO = toBigInt(en)
621- let eP = max([0, toInt(((eI * (d - pow((d - ((eO * d) / eu)), 18, h, 0, 18, DOWN))) / d))])
622- let eQ = dX(eP, aR)
623- let eR = eQ._1
624- let dY = eQ._2
625- let eS = if (eH)
626- then $Tuple4(eR, 0, (eK - eP), eL)
627- else $Tuple4(0, eR, eK, (eL - eP))
628- let eT = eS._1
629- let eU = eS._2
630- let eV = eS._3
631- let eW = eS._4
632- let eq = bF(D(eW, bk), D(eV, bj))
633- let er = H(eq, b)
634- let dd = if (ec)
609+ else aL("invalid asset")
610+ let eJ = if (eI)
611+ then toBigInt(bE(ba(bi)))
612+ else toBigInt(bE(ba(bj)))
613+ let eK = if (eI)
614+ then bU
615+ else bV
616+ let eL = bE(ba(bi))
617+ let eM = bE(ba(bj))
618+ let eN = if (eI)
619+ then eL
620+ else eM
621+ let eO = toBigInt(eN)
622+ let ev = toBigInt(valueOrErrorMessage(assetInfo(bh), (("asset " + toBase58String(bh)) + " doesn't exist")).quantity)
623+ let eP = toBigInt(eo)
624+ let eQ = max([0, toInt(((eJ * (d - pow((d - ((eP * d) / ev)), 18, h, 0, 18, DOWN))) / d))])
625+ let eR = dY(eQ, aS)
626+ let eS = eR._1
627+ let dZ = eR._2
628+ let eT = if (eI)
629+ then $Tuple4(eS, 0, (eL - eQ), eM)
630+ else $Tuple4(0, eS, eL, (eM - eQ))
631+ let eU = eT._1
632+ let eV = eT._2
633+ let eW = eT._3
634+ let eX = eT._4
635+ let er = bG(D(eX, bl), D(eW, bk))
636+ let es = H(er, b)
637+ let de = if (ed)
635638 then nil
636- else [StringEntry(ac(toString(value(aa)), toBase58String(value(ab))), bz(eT, eU, en, er, height, lastBlock.timestamp)), IntegerEntry(V(), er), IntegerEntry(W(height, lastBlock.timestamp), er)]
637- let ey = bF(D(eL, bk), D(eK, bj))
638- let ez = H(ey, b)
639- let eA = {
640- let eX = (toInt(fraction(eI, eO, eu)) * 2)
641- fraction((eR - eX), b, eX)
639+ else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bA(eU, eV, eo, es, height, lastBlock.timestamp)), IntegerEntry(W(), es), IntegerEntry(X(height, lastBlock.timestamp), es)]
640+ let ez = bG(D(eM, bl), D(eL, bk))
641+ let eA = H(ez, b)
642+ let eB = {
643+ let eY = (toInt(fraction(eJ, eP, ev)) * 2)
644+ fraction((eS - eY), b, eY)
642645 }
643- $Tuple5(eR, dd, dY, eA, eH)
646+ $Tuple5(eS, de, dZ, eB, eI)
644647 }
645648 else throw("Strict value is not equal to itself.")
646649 }
647650
648651
649-func eY () = {
650- let dV = getString(T())
651- if ($isInstanceOf(dV, "String"))
652+func eZ () = {
653+ let dW = getString(U())
654+ if ($isInstanceOf(dW, "String"))
652655 then {
653- let eZ = dV
654- fromBase58String(eZ)
656+ let fa = dW
657+ fromBase58String(fa)
655658 }
656- else if ($isInstanceOf(dV, "Unit"))
659+ else if ($isInstanceOf(dW, "Unit"))
657660 then unit
658661 else throw("Match error")
659662 }
660663
661664
662-func fa () = {
663- let dV = getString(U())
664- if ($isInstanceOf(dV, "String"))
665+func fb () = {
666+ let dW = getString(V())
667+ if ($isInstanceOf(dW, "String"))
665668 then {
666- let eZ = dV
667- fromBase58String(eZ)
669+ let fa = dW
670+ fromBase58String(fa)
668671 }
669- else if ($isInstanceOf(dV, "Unit"))
672+ else if ($isInstanceOf(dW, "Unit"))
670673 then unit
671674 else throw("Match error")
672675 }
673676
674677
675-func fb (dK) = {
676- let dV = eY()
677- if ($isInstanceOf(dV, "ByteVector"))
678+func fc (dL) = {
679+ let dW = eZ()
680+ if ($isInstanceOf(dW, "ByteVector"))
678681 then {
679- let fc = dV
680- (dK.callerPublicKey == fc)
682+ let fd = dW
683+ (dL.callerPublicKey == fd)
681684 }
682- else if ($isInstanceOf(dV, "Unit"))
683- then (dK.caller == this)
685+ else if ($isInstanceOf(dW, "Unit"))
686+ then (dL.caller == this)
684687 else throw("Match error")
685688 }
686689
687690
688-func fd (dK) = {
689- let fe = throw("Permission denied")
690- let dV = eY()
691- if ($isInstanceOf(dV, "ByteVector"))
691+func fe (dL) = {
692+ let ff = throw("Permission denied")
693+ let dW = eZ()
694+ if ($isInstanceOf(dW, "ByteVector"))
692695 then {
693- let fc = dV
694- if ((dK.callerPublicKey == fc))
696+ let fd = dW
697+ if ((dL.callerPublicKey == fd))
695698 then true
696- else fe
699+ else ff
697700 }
698- else if ($isInstanceOf(dV, "Unit"))
699- then if ((dK.caller == this))
701+ else if ($isInstanceOf(dW, "Unit"))
702+ then if ((dL.caller == this))
700703 then true
701- else fe
704+ else ff
702705 else throw("Match error")
703706 }
704707
705708
706-@Callable(dK)
707-func setManager (ff) = {
708- let fg = fd(dK)
709- if ((fg == fg))
709+@Callable(dL)
710+func calculateAmountOutForSwapREADONLY (fg,fh) = {
711+ let fi = if ((fh == false))
710712 then {
711- let fh = fromBase58String(ff)
712- if ((fh == fh))
713- then [StringEntry(U(), ff)]
713+ let fj = aH(this, af())
714+ let fk = aH(this, ae())
715+ $Tuple2(fj, fk)
716+ }
717+ else {
718+ let fj = aH(this, ae())
719+ let fk = aH(this, af())
720+ $Tuple2(fj, fk)
721+ }
722+ let fj = fi._1
723+ let fk = fi._2
724+ let fl = bE(fk)
725+ let fm = bE(fj)
726+ let fn = fraction(fm, fg, (fl + fg))
727+ let fo = (toBigInt(fl) * toBigInt(fm))
728+ let fp = ((toBigInt(bE(fk)) + toBigInt(fg)) * (toBigInt(bE(fj)) - toBigInt(fn)))
729+ let fq = if ((fp >= fo))
730+ then true
731+ else throw("new K is fewer error")
732+ if ((fq == fq))
733+ then $Tuple2(nil, fn)
734+ else throw("Strict value is not equal to itself.")
735+ }
736+
737+
738+
739+@Callable(dL)
740+func calculateAmountOutForSwapAndSendTokens (fg,fh,fr,fs) = {
741+ let ft = {
742+ let aR = invoke(aO, "getSwapContractREADONLY", nil, nil)
743+ if ($isInstanceOf(aR, "String"))
744+ then aR
745+ else throw(($getType(aR) + " couldn't be cast to String"))
746+ }
747+ let eH = [if ((value(dL.payments[0]).amount >= fg))
748+ then true
749+ else aL("Wrong amount"), if ((dL.caller == addressFromStringValue(ft)))
750+ then true
751+ else aL("Permission denied")]
752+ if ((eH == eH))
753+ then {
754+ let dM = value(dL.payments[0])
755+ let fk = if ((dM.assetId == unit))
756+ then toBase58String(toBytes("WAVES"))
757+ else toBase58String(value(dM.assetId))
758+ let fj = if ((fh == false))
759+ then aH(this, af())
760+ else aH(this, ae())
761+ let fl = (bE(fk) - value(dL.payments[0]).amount)
762+ let fm = bE(fj)
763+ let fn = fraction(fm, fg, (fl + fg))
764+ let fo = (toBigInt(fl) * toBigInt(fm))
765+ let fp = (toBigInt(bE(fk)) * (toBigInt(bE(fj)) - toBigInt(fn)))
766+ let fq = if ((fp >= fo))
767+ then true
768+ else throw("new K is fewer error")
769+ if ((fq == fq))
770+ then {
771+ let fu = if ((fn >= fr))
772+ then true
773+ else throw("Exchange result is fewer coins than expected")
774+ if ((fu == fu))
775+ then $Tuple2([ScriptTransfer(addressFromStringValue(fs), fn, aY(fj))], fn)
776+ else throw("Strict value is not equal to itself.")
777+ }
714778 else throw("Strict value is not equal to itself.")
715779 }
716780 else throw("Strict value is not equal to itself.")
717781 }
718782
719783
720784
721-@Callable(dK)
722-func confirmManager () = {
723- let fi = fa()
724- let fj = if (isDefined(fi))
725- then true
726- else throw("No pending manager")
727- if ((fj == fj))
785+@Callable(dL)
786+func setManager (fv) = {
787+ let fw = fe(dL)
788+ if ((fw == fw))
728789 then {
729- let fk = if ((dK.callerPublicKey == value(fi)))
730- then true
731- else throw("You are not pending manager")
732- if ((fk == fk))
733- then [StringEntry(T(), toBase58String(value(fi))), DeleteEntry(U())]
790+ let fx = fromBase58String(fv)
791+ if ((fx == fx))
792+ then [StringEntry(V(), fv)]
734793 else throw("Strict value is not equal to itself.")
735794 }
736795 else throw("Strict value is not equal to itself.")
737796 }
738797
739798
740799
741-@Callable(dK)
742-func put (cy,fl) = if ((0 > cy))
800+@Callable(dL)
801+func confirmManager () = {
802+ let fy = fb()
803+ let fz = if (isDefined(fy))
804+ then true
805+ else throw("No pending manager")
806+ if ((fz == fz))
807+ then {
808+ let fA = if ((dL.callerPublicKey == value(fy)))
809+ then true
810+ else throw("You are not pending manager")
811+ if ((fA == fA))
812+ then [StringEntry(U(), toBase58String(value(fy))), DeleteEntry(V())]
813+ else throw("Strict value is not equal to itself.")
814+ }
815+ else throw("Strict value is not equal to itself.")
816+ }
817+
818+
819+
820+@Callable(dL)
821+func put (cz,fB) = if ((0 > cz))
743822 then throw("Invalid slippageTolerance passed")
744823 else {
745- let dQ = dN(dK, cy, true)
746- let da = dQ._2
747- let cf = dQ._7
748- let cw = dQ._9
749- let db = dQ._10
750- let dc = dQ._11
751- let fm = dQ._12
752- let fn = dQ._13
753- let dO = toBigInt(value(dK.payments[0]).amount)
754- let dP = toBigInt(value(dK.payments[1]).amount)
755- let dr = dk(dO, dP, toBigInt(0))
756- if ((dr == dr))
824+ let dR = dO(dL, cz, true)
825+ let db = dR._2
826+ let cg = dR._7
827+ let cx = dR._9
828+ let dc = dR._10
829+ let dd = dR._11
830+ let fC = dR._12
831+ let fD = dR._13
832+ let dP = toBigInt(value(dL.payments[0]).amount)
833+ let dQ = toBigInt(value(dL.payments[1]).amount)
834+ let ds = dl(dP, dQ, toBigInt(0))
835+ if ((ds == ds))
757836 then {
758- let dT = invoke(aN, "emit", [da], nil)
759- if ((dT == dT))
837+ let dU = invoke(aO, "emit", [db], nil)
838+ if ((dU == dU))
760839 then {
761- let dU = {
762- let dV = dT
763- if ($isInstanceOf(dV, "Address"))
840+ let dV = {
841+ let dW = dU
842+ if ($isInstanceOf(dW, "Address"))
764843 then {
765- let dW = dV
766- invoke(dW, "emit", [da], nil)
844+ let dX = dW
845+ invoke(dX, "emit", [db], nil)
767846 }
768847 else unit
769848 }
770- if ((dU == dU))
849+ if ((dV == dV))
771850 then {
772- let fo = if ((db > 0))
773- then invoke(bn, "put", nil, [AttachedPayment(fm, db)])
851+ let fE = if ((dc > 0))
852+ then invoke(bo, "put", nil, [AttachedPayment(fC, dc)])
774853 else nil
775- if ((fo == fo))
854+ if ((fE == fE))
776855 then {
777- let fp = if ((dc > 0))
778- then invoke(bn, "put", nil, [AttachedPayment(fn, dc)])
856+ let fF = if ((dd > 0))
857+ then invoke(bo, "put", nil, [AttachedPayment(fD, dd)])
779858 else nil
780- if ((fp == fp))
859+ if ((fF == fF))
781860 then {
782- let fq = if (fl)
861+ let fG = if (fB)
783862 then {
784- let fr = invoke(bm, "stake", nil, [AttachedPayment(cf, da)])
785- if ((fr == fr))
863+ let fH = invoke(bn, "stake", nil, [AttachedPayment(cg, db)])
864+ if ((fH == fH))
786865 then nil
787866 else throw("Strict value is not equal to itself.")
788867 }
789- else [ScriptTransfer(dK.caller, da, cf)]
790- let fs = ds(0, 0, 0)
791- if ((fs == fs))
868+ else [ScriptTransfer(dL.caller, db, cg)]
869+ let fI = dt(0, 0, 0)
870+ if ((fI == fI))
792871 then {
793- let dj = fs._2
794- let ft = fs._1
795- let fu = dw(dr, dj)
796- if ((fu == fu))
797- then ((cw ++ fq) ++ ft)
872+ let dk = fI._2
873+ let fJ = fI._1
874+ let fK = dx(ds, dk)
875+ if ((fK == fK))
876+ then ((cx ++ fG) ++ fJ)
798877 else throw("Strict value is not equal to itself.")
799878 }
800879 else throw("Strict value is not equal to itself.")
801880 }
802881 else throw("Strict value is not equal to itself.")
803882 }
804883 else throw("Strict value is not equal to itself.")
805884 }
806885 else throw("Strict value is not equal to itself.")
807886 }
808887 else throw("Strict value is not equal to itself.")
809888 }
810889 else throw("Strict value is not equal to itself.")
811890 }
812891
813892
814893
815-@Callable(dK)
816-func putForFree (fv) = if ((0 > fv))
894+@Callable(dL)
895+func putForFree (fL) = if ((0 > fL))
817896 then throw("Invalid value passed")
818897 else {
819- let dQ = dN(dK, fv, false)
820- let cw = dQ._9
821- let dO = toBigInt(value(dK.payments[0]).amount)
822- let dP = toBigInt(value(dK.payments[1]).amount)
823- let dr = dk(dO, dP, toBigInt(0))
824- if ((dr == dr))
898+ let dR = dO(dL, fL, false)
899+ let cx = dR._9
900+ let dP = toBigInt(value(dL.payments[0]).amount)
901+ let dQ = toBigInt(value(dL.payments[1]).amount)
902+ let ds = dl(dP, dQ, toBigInt(0))
903+ if ((ds == ds))
825904 then {
826- let fw = ds(0, 0, 0)
827- let ft = fw._1
828- let dj = fw._2
829- let fu = dw(dr, dj)
830- if ((fu == fu))
831- then (cw ++ ft)
905+ let fM = dt(0, 0, 0)
906+ let fJ = fM._1
907+ let dk = fM._2
908+ let fK = dx(ds, dk)
909+ if ((fK == fK))
910+ then (cx ++ fJ)
832911 else throw("Strict value is not equal to itself.")
833912 }
834913 else throw("Strict value is not equal to itself.")
835914 }
836915
837916
838917
839-@Callable(dK)
840-func putOneTkn (fx,fy) = {
841- let fz = {
842- let aQ = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
843- if ($isInstanceOf(aQ, "Boolean"))
844- then aQ
845- else throw(($getType(aQ) + " couldn't be cast to Boolean"))
918+@Callable(dL)
919+func putOneTkn (fN,fO) = {
920+ let fP = {
921+ let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
922+ if ($isInstanceOf(aR, "Boolean"))
923+ then aR
924+ else throw(($getType(aR) + " couldn't be cast to Boolean"))
846925 }
847- let fA = if (if (if (aS())
926+ let fQ = if (if (if (aT())
848927 then true
849- else (bf == l))
928+ else (bg == l))
850929 then true
851- else (bf == n))
930+ else (bg == n))
852931 then true
853- else fz
854- let eG = [if (if (!(fA))
932+ else fP
933+ let eH = [if (if (!(fQ))
855934 then true
856- else fb(dK))
935+ else fc(dL))
857936 then true
858- else aK("put operation is blocked by admin"), if ((size(dK.payments) == 1))
937+ else aL("put operation is blocked by admin"), if ((size(dL.payments) == 1))
859938 then true
860- else aK("exactly 1 payment are expected")]
861- if ((eG == eG))
939+ else aL("exactly 1 payment are expected")]
940+ if ((eH == eH))
862941 then {
863- let fB = dK.payments[0]
864- let eb = fB.assetId
865- let ea = fB.amount
866- let dr = if ((eb == bh))
867- then dk(toBigInt(ea), toBigInt(0), toBigInt(0))
868- else if ((eb == bi))
869- then dk(toBigInt(0), toBigInt(ea), toBigInt(0))
870- else aK("payment asset is not supported")
871- if ((dr == dr))
942+ let fR = dL.payments[0]
943+ let ec = fR.assetId
944+ let eb = fR.amount
945+ let ds = if ((ec == bi))
946+ then dl(toBigInt(eb), toBigInt(0), toBigInt(0))
947+ else if ((ec == bj))
948+ then dl(toBigInt(0), toBigInt(eb), toBigInt(0))
949+ else aL("payment asset is not supported")
950+ if ((ds == ds))
872951 then {
873- let aa = dK.caller
874- let ab = dK.transactionId
875- let fC = dZ(ea, eb, aa, ab)
876- if ((fC == fC))
952+ let ab = dL.caller
953+ let ac = dL.transactionId
954+ let fS = ea(eb, ec, ab, ac)
955+ if ((fS == fS))
877956 then {
878- let ef = fC._5
879- let fD = fC._4
880- let dY = fC._3
881- let dd = fC._2
882- let fE = fC._1
883- let fF = if (if ((fx > 0))
884- then (fx > fE)
957+ let eg = fS._5
958+ let fT = fS._4
959+ let dZ = fS._3
960+ let de = fS._2
961+ let fU = fS._1
962+ let fV = if (if ((fN > 0))
963+ then (fN > fU)
885964 else false)
886- then aK(makeString(["amount to receive is less than ", toString(fx)], ""))
887- else fE
888- let dT = dR(fF)
889- if ((dT == dT))
965+ then aL(makeString(["amount to receive is less than ", toString(fN)], ""))
966+ else fU
967+ let dU = dS(fV)
968+ if ((dU == dU))
890969 then {
891- let fq = if (fy)
970+ let fG = if (fO)
892971 then {
893- let fG = invoke(bm, "stake", nil, [AttachedPayment(bg, fF)])
894- if ((fG == fG))
972+ let fW = invoke(bn, "stake", nil, [AttachedPayment(bh, fV)])
973+ if ((fW == fW))
895974 then nil
896975 else throw("Strict value is not equal to itself.")
897976 }
898- else [ScriptTransfer(dK.caller, fF, bg)]
899- let fH = if ((dY > 0))
900- then [ScriptTransfer(aO, dY, eb)]
977+ else [ScriptTransfer(dL.caller, fV, bh)]
978+ let fX = if ((dZ > 0))
979+ then [ScriptTransfer(aP, dZ, ec)]
901980 else nil
902- let fI = if ((this == aO))
981+ let fY = if ((this == aP))
903982 then $Tuple2(0, 0)
904- else if (ef)
905- then $Tuple2(-(dY), 0)
906- else $Tuple2(0, -(dY))
907- let dt = fI._1
908- let du = fI._2
909- let fJ = ds(dt, du, 0)
910- let ft = fJ._1
911- let dj = fJ._2
912- let dD = value(getString(ai))
913- let fu = dw(dr, dj)
914- if ((fu == fu))
915- then $Tuple2((((dd ++ fq) ++ fH) ++ ft), fF)
983+ else if (eg)
984+ then $Tuple2(-(dZ), 0)
985+ else $Tuple2(0, -(dZ))
986+ let du = fY._1
987+ let dv = fY._2
988+ let fZ = dt(du, dv, 0)
989+ let fJ = fZ._1
990+ let dk = fZ._2
991+ let dE = value(getString(aj))
992+ let fK = dx(ds, dk)
993+ if ((fK == fK))
994+ then $Tuple2((((de ++ fG) ++ fX) ++ fJ), fV)
916995 else throw("Strict value is not equal to itself.")
917996 }
918997 else throw("Strict value is not equal to itself.")
919998 }
920999 else throw("Strict value is not equal to itself.")
9211000 }
9221001 else throw("Strict value is not equal to itself.")
9231002 }
9241003 else throw("Strict value is not equal to itself.")
9251004 }
9261005
9271006
9281007
929-@Callable(dK)
930-func putOneTknREADONLY (eb,ea) = {
931- let fK = dZ(ea, aX(eb), unit, unit)
932- let fE = fK._1
933- let dd = fK._2
934- let dY = fK._3
935- let fD = fK._4
936- let ef = fK._5
937- $Tuple2(nil, $Tuple3(fE, dY, fD))
1008+@Callable(dL)
1009+func putOneTknREADONLY (ec,eb) = {
1010+ let ga = ea(eb, aY(ec), unit, unit)
1011+ let fU = ga._1
1012+ let de = ga._2
1013+ let dZ = ga._3
1014+ let fT = ga._4
1015+ let eg = ga._5
1016+ $Tuple2(nil, $Tuple3(fU, dZ, fT))
9381017 }
9391018
9401019
9411020
942-@Callable(dK)
943-func getOneTkn (fL,fx) = {
944- let fz = {
945- let aQ = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
946- if ($isInstanceOf(aQ, "Boolean"))
947- then aQ
948- else throw(($getType(aQ) + " couldn't be cast to Boolean"))
1021+@Callable(dL)
1022+func getOneTkn (gb,fN) = {
1023+ let fP = {
1024+ let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1025+ if ($isInstanceOf(aR, "Boolean"))
1026+ then aR
1027+ else throw(($getType(aR) + " couldn't be cast to Boolean"))
9491028 }
950- let fM = if (if (aS())
1029+ let gc = if (if (aT())
9511030 then true
952- else (bf == n))
1031+ else (bg == n))
9531032 then true
954- else fz
955- let eG = [if (if (!(fM))
1033+ else fP
1034+ let eH = [if (if (!(gc))
9561035 then true
957- else fb(dK))
1036+ else fc(dL))
9581037 then true
959- else aK("get operation is blocked by admin"), if ((size(dK.payments) == 1))
1038+ else aL("get operation is blocked by admin"), if ((size(dL.payments) == 1))
9601039 then true
961- else aK("exactly 1 payment are expected")]
962- if ((eG == eG))
1040+ else aL("exactly 1 payment are expected")]
1041+ if ((eH == eH))
9631042 then {
964- let eF = aX(fL)
965- let fB = dK.payments[0]
966- let eb = fB.assetId
967- let en = fB.amount
968- let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
969- if ((dr == dr))
1043+ let eG = aY(gb)
1044+ let fR = dL.payments[0]
1045+ let ec = fR.assetId
1046+ let eo = fR.amount
1047+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1048+ if ((ds == ds))
9701049 then {
971- let aa = dK.caller
972- let ab = dK.transactionId
973- let fN = eE(eF, en, eb, aa, ab)
974- if ((fN == fN))
1050+ let ab = dL.caller
1051+ let ac = dL.transactionId
1052+ let gd = eF(eG, eo, ec, ab, ac)
1053+ if ((gd == gd))
9751054 then {
976- let eH = fN._5
977- let fD = fN._4
978- let dY = fN._3
979- let dd = fN._2
980- let fO = fN._1
981- let dS = if (if ((fx > 0))
982- then (fx > fO)
1055+ let eI = gd._5
1056+ let fT = gd._4
1057+ let dZ = gd._3
1058+ let de = gd._2
1059+ let ge = gd._1
1060+ let dT = if (if ((fN > 0))
1061+ then (fN > ge)
9831062 else false)
984- then aK(makeString(["amount to receive is less than ", toString(fx)], ""))
985- else fO
986- let fP = invoke(aN, "burn", [en], [AttachedPayment(eb, en)])
987- if ((fP == fP))
1063+ then aL(makeString(["amount to receive is less than ", toString(fN)], ""))
1064+ else ge
1065+ let gf = invoke(aO, "burn", [eo], [AttachedPayment(ec, eo)])
1066+ if ((gf == gf))
9881067 then {
989- let fQ = [ScriptTransfer(aa, dS, eF)]
990- let fH = if ((dY > 0))
991- then [ScriptTransfer(aO, dY, eF)]
1068+ let gg = [ScriptTransfer(ab, dT, eG)]
1069+ let fX = if ((dZ > 0))
1070+ then [ScriptTransfer(aP, dZ, eG)]
9921071 else nil
993- let fR = {
994- let fS = if ((this == aO))
1072+ let gh = {
1073+ let gi = if ((this == aP))
9951074 then 0
996- else dY
997- if (eH)
998- then $Tuple2(-((dS + fS)), 0)
999- else $Tuple2(0, -((dS + fS)))
1075+ else dZ
1076+ if (eI)
1077+ then $Tuple2(-((dT + gi)), 0)
1078+ else $Tuple2(0, -((dT + gi)))
10001079 }
1001- let dt = fR._1
1002- let du = fR._2
1003- let fT = ds(dt, du, 0)
1004- let ft = fT._1
1005- let dj = fT._2
1006- let fu = dw(dr, dj)
1007- if ((fu == fu))
1008- then $Tuple2((((dd ++ fQ) ++ fH) ++ ft), dS)
1080+ let du = gh._1
1081+ let dv = gh._2
1082+ let gj = dt(du, dv, 0)
1083+ let fJ = gj._1
1084+ let dk = gj._2
1085+ let fK = dx(ds, dk)
1086+ if ((fK == fK))
1087+ then $Tuple2((((de ++ gg) ++ fX) ++ fJ), dT)
10091088 else throw("Strict value is not equal to itself.")
10101089 }
10111090 else throw("Strict value is not equal to itself.")
10121091 }
10131092 else throw("Strict value is not equal to itself.")
10141093 }
10151094 else throw("Strict value is not equal to itself.")
10161095 }
10171096 else throw("Strict value is not equal to itself.")
10181097 }
10191098
10201099
10211100
1022-@Callable(dK)
1023-func getOneTknREADONLY (eF,en) = {
1024- let fU = eE(aX(eF), en, bg, unit, unit)
1025- let fO = fU._1
1026- let dd = fU._2
1027- let dY = fU._3
1028- let fD = fU._4
1029- let eH = fU._5
1030- $Tuple2(nil, $Tuple3(fO, dY, fD))
1101+@Callable(dL)
1102+func getOneTknREADONLY (eG,eo) = {
1103+ let gk = eF(aY(eG), eo, bh, unit, unit)
1104+ let ge = gk._1
1105+ let de = gk._2
1106+ let dZ = gk._3
1107+ let fT = gk._4
1108+ let eI = gk._5
1109+ $Tuple2(nil, $Tuple3(ge, dZ, fT))
10311110 }
10321111
10331112
10341113
1035-@Callable(dK)
1036-func unstakeAndGetOneTkn (fV,fL,fx) = {
1037- let fz = {
1038- let aQ = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1039- if ($isInstanceOf(aQ, "Boolean"))
1040- then aQ
1041- else throw(($getType(aQ) + " couldn't be cast to Boolean"))
1114+@Callable(dL)
1115+func unstakeAndGetOneTkn (gl,gb,fN) = {
1116+ let fP = {
1117+ let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1118+ if ($isInstanceOf(aR, "Boolean"))
1119+ then aR
1120+ else throw(($getType(aR) + " couldn't be cast to Boolean"))
10421121 }
1043- let fM = if (if (aS())
1122+ let gc = if (if (aT())
10441123 then true
1045- else (bf == n))
1124+ else (bg == n))
10461125 then true
1047- else fz
1048- let eG = [if (if (!(fM))
1126+ else fP
1127+ let eH = [if (if (!(gc))
10491128 then true
1050- else fb(dK))
1129+ else fc(dL))
10511130 then true
1052- else aK("get operation is blocked by admin"), if ((size(dK.payments) == 0))
1131+ else aL("get operation is blocked by admin"), if ((size(dL.payments) == 0))
10531132 then true
1054- else aK("no payments are expected")]
1055- if ((eG == eG))
1133+ else aL("no payments are expected")]
1134+ if ((eH == eH))
10561135 then {
1057- let eF = aX(fL)
1058- let aa = dK.caller
1059- let ab = dK.transactionId
1060- let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
1061- if ((dr == dr))
1136+ let eG = aY(gb)
1137+ let ab = dL.caller
1138+ let ac = dL.transactionId
1139+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1140+ if ((ds == ds))
10621141 then {
1063- let fW = invoke(bm, "unstake", [toBase58String(bg), fV], nil)
1064- if ((fW == fW))
1142+ let gm = invoke(bn, "unstake", [toBase58String(bh), gl], nil)
1143+ if ((gm == gm))
10651144 then {
1066- let fX = eE(eF, fV, bg, aa, ab)
1067- if ((fX == fX))
1145+ let gn = eF(eG, gl, bh, ab, ac)
1146+ if ((gn == gn))
10681147 then {
1069- let eH = fX._5
1070- let fD = fX._4
1071- let dY = fX._3
1072- let dd = fX._2
1073- let fO = fX._1
1074- let dS = if (if ((fx > 0))
1075- then (fx > fO)
1148+ let eI = gn._5
1149+ let fT = gn._4
1150+ let dZ = gn._3
1151+ let de = gn._2
1152+ let ge = gn._1
1153+ let dT = if (if ((fN > 0))
1154+ then (fN > ge)
10761155 else false)
1077- then aK(makeString(["amount to receive is less than ", toString(fx)], ""))
1078- else fO
1079- let fP = invoke(aN, "burn", [fV], [AttachedPayment(bg, fV)])
1080- if ((fP == fP))
1156+ then aL(makeString(["amount to receive is less than ", toString(fN)], ""))
1157+ else ge
1158+ let gf = invoke(aO, "burn", [gl], [AttachedPayment(bh, gl)])
1159+ if ((gf == gf))
10811160 then {
1082- let fQ = [ScriptTransfer(dK.caller, dS, eF)]
1083- let fH = if ((dY > 0))
1084- then [ScriptTransfer(aO, dY, eF)]
1161+ let gg = [ScriptTransfer(dL.caller, dT, eG)]
1162+ let fX = if ((dZ > 0))
1163+ then [ScriptTransfer(aP, dZ, eG)]
10851164 else nil
1086- let fY = {
1087- let fS = if ((this == aO))
1165+ let go = {
1166+ let gi = if ((this == aP))
10881167 then 0
1089- else dY
1090- if (eH)
1091- then $Tuple2(-((dS + fS)), 0)
1092- else $Tuple2(0, -((dS + fS)))
1168+ else dZ
1169+ if (eI)
1170+ then $Tuple2(-((dT + gi)), 0)
1171+ else $Tuple2(0, -((dT + gi)))
10931172 }
1094- let dt = fY._1
1095- let du = fY._2
1096- let fZ = ds(dt, du, 0)
1097- let ft = fZ._1
1098- let dj = fZ._2
1099- let fu = dw(dr, dj)
1100- if ((fu == fu))
1101- then $Tuple2((((dd ++ fQ) ++ fH) ++ ft), dS)
1173+ let du = go._1
1174+ let dv = go._2
1175+ let gp = dt(du, dv, 0)
1176+ let fJ = gp._1
1177+ let dk = gp._2
1178+ let fK = dx(ds, dk)
1179+ if ((fK == fK))
1180+ then $Tuple2((((de ++ gg) ++ fX) ++ fJ), dT)
11021181 else throw("Strict value is not equal to itself.")
11031182 }
11041183 else throw("Strict value is not equal to itself.")
11051184 }
11061185 else throw("Strict value is not equal to itself.")
11071186 }
11081187 else throw("Strict value is not equal to itself.")
11091188 }
11101189 else throw("Strict value is not equal to itself.")
11111190 }
11121191 else throw("Strict value is not equal to itself.")
11131192 }
11141193
11151194
11161195
1117-@Callable(dK)
1196+@Callable(dL)
11181197 func get () = {
1119- let cO = dJ(dK)
1120- let ga = cO._1
1121- let cv = cO._2
1122- let dM = cO._3
1123- let cd = cO._4
1124- let cw = cO._5
1125- let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
1126- if ((dr == dr))
1198+ let cP = dK(dL)
1199+ let gq = cP._1
1200+ let cw = cP._2
1201+ let dN = cP._3
1202+ let ce = cP._4
1203+ let cx = cP._5
1204+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1205+ if ((ds == ds))
11271206 then {
1128- let gb = invoke(aN, "burn", [dM], [AttachedPayment(cd, dM)])
1129- if ((gb == gb))
1207+ let gr = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1208+ if ((gr == gr))
11301209 then {
1131- let gc = ds(-(ga), -(cv), 0)
1132- let ft = gc._1
1133- let dj = gc._2
1134- let fu = dw(dr, dj)
1135- if ((fu == fu))
1136- then (cw ++ ft)
1210+ let gs = dt(-(gq), -(cw), 0)
1211+ let fJ = gs._1
1212+ let dk = gs._2
1213+ let fK = dx(ds, dk)
1214+ if ((fK == fK))
1215+ then (cx ++ fJ)
11371216 else throw("Strict value is not equal to itself.")
11381217 }
11391218 else throw("Strict value is not equal to itself.")
11401219 }
11411220 else throw("Strict value is not equal to itself.")
11421221 }
11431222
11441223
11451224
1146-@Callable(dK)
1147-func getNoLess (gd,ge) = {
1148- let cO = dJ(dK)
1149- let cu = cO._1
1150- let cv = cO._2
1151- let dM = cO._3
1152- let cd = cO._4
1153- let cw = cO._5
1154- if ((gd > cu))
1155- then throw(((("noLessThenAmtAsset failed: " + toString(cu)) + " < ") + toString(gd)))
1156- else if ((ge > cv))
1157- then throw(((("noLessThenPriceAsset failed: " + toString(cv)) + " < ") + toString(ge)))
1225+@Callable(dL)
1226+func getNoLess (gt,gu) = {
1227+ let cP = dK(dL)
1228+ let cv = cP._1
1229+ let cw = cP._2
1230+ let dN = cP._3
1231+ let ce = cP._4
1232+ let cx = cP._5
1233+ if ((gt > cv))
1234+ then throw(((("noLessThenAmtAsset failed: " + toString(cv)) + " < ") + toString(gt)))
1235+ else if ((gu > cw))
1236+ then throw(((("noLessThenPriceAsset failed: " + toString(cw)) + " < ") + toString(gu)))
11581237 else {
1159- let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
1160- if ((dr == dr))
1238+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1239+ if ((ds == ds))
11611240 then {
1162- let gb = invoke(aN, "burn", [dM], [AttachedPayment(cd, dM)])
1163- if ((gb == gb))
1241+ let gr = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1242+ if ((gr == gr))
11641243 then {
1165- let gf = ds(-(cu), -(cv), 0)
1166- let ft = gf._1
1167- let dj = gf._2
1168- let fu = dw(dr, dj)
1169- if ((fu == fu))
1170- then (cw ++ ft)
1244+ let gv = dt(-(cv), -(cw), 0)
1245+ let fJ = gv._1
1246+ let dk = gv._2
1247+ let fK = dx(ds, dk)
1248+ if ((fK == fK))
1249+ then (cx ++ fJ)
11711250 else throw("Strict value is not equal to itself.")
11721251 }
11731252 else throw("Strict value is not equal to itself.")
11741253 }
11751254 else throw("Strict value is not equal to itself.")
11761255 }
11771256 }
11781257
11791258
11801259
1181-@Callable(dK)
1182-func unstakeAndGet (dS) = {
1183- let gg = if ((size(dK.payments) != 0))
1260+@Callable(dL)
1261+func unstakeAndGet (dT) = {
1262+ let gw = if ((size(dL.payments) != 0))
11841263 then throw("No payments are expected")
11851264 else true
1186- if ((gg == gg))
1265+ if ((gw == gw))
11871266 then {
1188- let bS = aU()
1189- let cf = fromBase58String(bS[q])
1190- let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
1191- if ((dr == dr))
1267+ let bT = aV()
1268+ let cg = fromBase58String(bT[q])
1269+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1270+ if ((ds == ds))
11921271 then {
1193- let fW = invoke(bm, "unstake", [toBase58String(cf), dS], nil)
1194- if ((fW == fW))
1272+ let gm = invoke(bn, "unstake", [toBase58String(cg), dT], nil)
1273+ if ((gm == gm))
11951274 then {
1196- let cO = cb(toBase58String(dK.transactionId), toBase58String(cf), dS, dK.caller)
1197- let cu = cO._1
1198- let cv = cO._2
1199- let ci = parseIntValue(cO._9)
1200- let cw = cO._10
1201- let gh = if (if (aS())
1275+ let cP = cc(toBase58String(dL.transactionId), toBase58String(cg), dT, dL.caller)
1276+ let cv = cP._1
1277+ let cw = cP._2
1278+ let cj = parseIntValue(cP._9)
1279+ let cx = cP._10
1280+ let gx = if (if (aT())
12021281 then true
1203- else (ci == n))
1204- then throw(("Get operation is blocked by admin. Status = " + toString(ci)))
1282+ else (cj == n))
1283+ then throw(("Get operation is blocked by admin. Status = " + toString(cj)))
12051284 else true
1206- if ((gh == gh))
1285+ if ((gx == gx))
12071286 then {
1208- let gb = invoke(aN, "burn", [dS], [AttachedPayment(cf, dS)])
1209- if ((gb == gb))
1287+ let gr = invoke(aO, "burn", [dT], [AttachedPayment(cg, dT)])
1288+ if ((gr == gr))
12101289 then {
1211- let gi = ds(-(cu), -(cv), 0)
1212- let ft = gi._1
1213- let dj = gi._2
1214- let fu = dw(dr, dj)
1215- if ((fu == fu))
1216- then (cw ++ ft)
1290+ let gy = dt(-(cv), -(cw), 0)
1291+ let fJ = gy._1
1292+ let dk = gy._2
1293+ let fK = dx(ds, dk)
1294+ if ((fK == fK))
1295+ then (cx ++ fJ)
12171296 else throw("Strict value is not equal to itself.")
12181297 }
12191298 else throw("Strict value is not equal to itself.")
12201299 }
12211300 else throw("Strict value is not equal to itself.")
12221301 }
12231302 else throw("Strict value is not equal to itself.")
12241303 }
12251304 else throw("Strict value is not equal to itself.")
12261305 }
12271306 else throw("Strict value is not equal to itself.")
12281307 }
12291308
12301309
12311310
1232-@Callable(dK)
1233-func unstakeAndGetNoLess (fV,gj,ge) = {
1234- let fM = if (aS())
1311+@Callable(dL)
1312+func unstakeAndGetNoLess (gl,gz,gu) = {
1313+ let gc = if (aT())
12351314 then true
1236- else (bf == n)
1237- let eG = [if (!(fM))
1315+ else (bg == n)
1316+ let eH = [if (!(gc))
12381317 then true
1239- else throw("get operation is blocked by admin"), if ((size(dK.payments) == 0))
1318+ else throw("get operation is blocked by admin"), if ((size(dL.payments) == 0))
12401319 then true
12411320 else throw("no payments are expected")]
1242- if ((eG == eG))
1321+ if ((eH == eH))
12431322 then {
1244- let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
1245- if ((dr == dr))
1323+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1324+ if ((ds == ds))
12461325 then {
1247- let fW = invoke(bm, "unstake", [toBase58String(bg), fV], nil)
1248- if ((fW == fW))
1326+ let gm = invoke(bn, "unstake", [toBase58String(bh), gl], nil)
1327+ if ((gm == gm))
12491328 then {
1250- let cO = cb(toBase58String(dK.transactionId), toBase58String(bg), fV, dK.caller)
1251- let cu = cO._1
1252- let cv = cO._2
1253- let cw = cO._10
1254- let gk = [if ((cu >= gj))
1329+ let cP = cc(toBase58String(dL.transactionId), toBase58String(bh), gl, dL.caller)
1330+ let cv = cP._1
1331+ let cw = cP._2
1332+ let cx = cP._10
1333+ let gA = [if ((cv >= gz))
12551334 then true
1256- else throw(makeString(["amount asset amount to receive is less than ", toString(gj)], "")), if ((cv >= ge))
1335+ else throw(makeString(["amount asset amount to receive is less than ", toString(gz)], "")), if ((cw >= gu))
12571336 then true
1258- else throw(makeString(["price asset amount to receive is less than ", toString(ge)], ""))]
1259- if ((gk == gk))
1337+ else throw(makeString(["price asset amount to receive is less than ", toString(gu)], ""))]
1338+ if ((gA == gA))
12601339 then {
1261- let gb = invoke(aN, "burn", [fV], [AttachedPayment(bg, fV)])
1262- if ((gb == gb))
1340+ let gr = invoke(aO, "burn", [gl], [AttachedPayment(bh, gl)])
1341+ if ((gr == gr))
12631342 then {
1264- let gl = ds(-(cu), -(cv), 0)
1265- let ft = gl._1
1266- let dj = gl._2
1267- let fu = dw(dr, dj)
1268- if ((fu == fu))
1269- then (cw ++ ft)
1343+ let gB = dt(-(cv), -(cw), 0)
1344+ let fJ = gB._1
1345+ let dk = gB._2
1346+ let fK = dx(ds, dk)
1347+ if ((fK == fK))
1348+ then (cx ++ fJ)
12701349 else throw("Strict value is not equal to itself.")
12711350 }
12721351 else throw("Strict value is not equal to itself.")
12731352 }
12741353 else throw("Strict value is not equal to itself.")
12751354 }
12761355 else throw("Strict value is not equal to itself.")
12771356 }
12781357 else throw("Strict value is not equal to itself.")
12791358 }
12801359 else throw("Strict value is not equal to itself.")
12811360 }
12821361
12831362
12841363
1285-@Callable(dK)
1286-func activate (gm,gn) = if ((toString(dK.caller) != toString(aN)))
1364+@Callable(dL)
1365+func activate (gC,gD) = if ((toString(dL.caller) != toString(aO)))
12871366 then throw("permissions denied")
1288- else $Tuple2([StringEntry(ad(), gm), StringEntry(ae(), gn)], "success")
1367+ else $Tuple2([StringEntry(ae(), gC), StringEntry(af(), gD)], "success")
12891368
12901369
12911370
1292-@Callable(dK)
1371+@Callable(dL)
12931372 func refreshKLp () = {
1294- let go = valueOrElse(getInteger(aj), 0)
1295- let gp = if (((height - go) >= am))
1373+ let gE = valueOrElse(getInteger(ak), 0)
1374+ let gF = if (((height - gE) >= an))
12961375 then unit
1297- else aK(makeString([toString(am), " blocks have not passed since the previous call"], ""))
1298- if ((gp == gp))
1376+ else aL(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1377+ if ((gF == gF))
12991378 then {
1300- let dD = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ai), "0")), aM("invalid kLp"))
1301- let gq = ds(0, 0, 0)
1302- let gr = gq._1
1303- let dj = gq._2
1304- let dv = if ((dD != dj))
1305- then gr
1306- else aK("nothing to refresh")
1307- $Tuple2(dv, toString(dj))
1379+ let dE = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aN("invalid kLp"))
1380+ let gG = dt(0, 0, 0)
1381+ let gH = gG._1
1382+ let dk = gG._2
1383+ let dw = if ((dE != dk))
1384+ then gH
1385+ else aL("nothing to refresh")
1386+ $Tuple2(dw, toString(dk))
13081387 }
13091388 else throw("Strict value is not equal to itself.")
13101389 }
13111390
13121391
13131392
1314-@Callable(dK)
1315-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aU())
1393+@Callable(dL)
1394+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aV())
13161395
13171396
13181397
1319-@Callable(dK)
1320-func getAccBalanceWrapperREADONLY (bE) = $Tuple2(nil, bD(bE))
1398+@Callable(dL)
1399+func getAccBalanceWrapperREADONLY (bF) = $Tuple2(nil, bE(bF))
13211400
13221401
13231402
1324-@Callable(dK)
1325-func calcPricesWrapperREADONLY (bM,bN,bR) = {
1326- let ca = bQ(bM, bN, bR)
1327- $Tuple2(nil, [toString(ca[0]), toString(ca[1]), toString(ca[2])])
1403+@Callable(dL)
1404+func calcPricesWrapperREADONLY (bN,bO,bS) = {
1405+ let cb = bR(bN, bO, bS)
1406+ $Tuple2(nil, [toString(cb[0]), toString(cb[1]), toString(cb[2])])
13281407 }
13291408
13301409
13311410
1332-@Callable(dK)
1411+@Callable(dL)
13331412 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
13341413
13351414
13361415
1337-@Callable(dK)
1416+@Callable(dL)
13381417 func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
13391418
13401419
13411420
1342-@Callable(dK)
1343-func calcPriceBigIntWrapperREADONLY (bG,bH) = $Tuple2(nil, toString(bF(parseBigIntValue(bG), parseBigIntValue(bH))))
1421+@Callable(dL)
1422+func calcPriceBigIntWrapperREADONLY (bH,bI) = $Tuple2(nil, toString(bG(parseBigIntValue(bH), parseBigIntValue(bI))))
13441423
13451424
13461425
1347-@Callable(dK)
1348-func estimatePutOperationWrapperREADONLY (cc,cy,cz,cA,cB,cC,aa,cD,cE) = $Tuple2(nil, cx(cc, cy, cz, cA, cB, cC, aa, cD, cE))
1426+@Callable(dL)
1427+func estimatePutOperationWrapperREADONLY (cd,cz,cA,cB,cC,cD,ab,cE,cF) = $Tuple2(nil, cy(cd, cz, cA, cB, cC, cD, ab, cE, cF))
13491428
13501429
13511430
1352-@Callable(dK)
1353-func estimateGetOperationWrapperREADONLY (cc,cd,ce,aa) = {
1354- let cO = cb(cc, cd, ce, addressFromStringValue(aa))
1355- $Tuple2(nil, $Tuple10(cO._1, cO._2, cO._3, cO._4, cO._5, cO._6, cO._7, toString(cO._8), cO._9, cO._10))
1431+@Callable(dL)
1432+func estimateGetOperationWrapperREADONLY (cd,ce,cf,ab) = {
1433+ let cP = cc(cd, ce, cf, addressFromStringValue(ab))
1434+ $Tuple2(nil, $Tuple10(cP._1, cP._2, cP._3, cP._4, cP._5, cP._6, cP._7, toString(cP._8), cP._9, cP._10))
13561435 }
13571436
13581437
13591438
1360-@Callable(dK)
1439+@Callable(dL)
13611440 func statsREADONLY () = {
1362- let bS = aU()
1363- let cf = fromBase58String(bS[q])
1364- let gs = bS[r]
1365- let gt = bS[s]
1366- let cH = bS[v]
1367- let cI = bS[w]
1368- let bT = parseIntValue(bS[t])
1369- let bU = parseIntValue(bS[u])
1370- let gu = valueOrErrorMessage(assetInfo(cf), (("Asset " + toBase58String(cf)) + " doesn't exist")).quantity
1371- let gv = bD(gs)
1372- let gw = bD(gt)
1373- let gx = if ((gu == 0))
1441+ let bT = aV()
1442+ let cg = fromBase58String(bT[q])
1443+ let gI = bT[r]
1444+ let gJ = bT[s]
1445+ let cI = bT[v]
1446+ let cJ = bT[w]
1447+ let bU = parseIntValue(bT[t])
1448+ let bV = parseIntValue(bT[u])
1449+ let gK = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1450+ let gL = bE(gI)
1451+ let gM = bE(gJ)
1452+ let gN = if ((gK == 0))
13741453 then [e, e, e]
1375- else bQ(gv, gw, gu)
1376- let cp = 0
1377- let gy = H(gx[1], b)
1378- let gz = H(gx[2], b)
1379- let gA = value(getInteger(aN, ax(toString(this))))
1380- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gv), toString(gw), toString(gu), toString(cp), toString(gy), toString(gz), toString(gA)], j))
1454+ else bR(gL, gM, gK)
1455+ let cq = 0
1456+ let gO = H(gN[1], b)
1457+ let gP = H(gN[2], b)
1458+ let gQ = value(getInteger(aO, ay(toString(this))))
1459+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gL), toString(gM), toString(gK), toString(cq), toString(gO), toString(gP), toString(gQ)], j))
13811460 }
13821461
13831462
13841463
1385-@Callable(dK)
1386-func evaluatePutByAmountAssetREADONLY (cz) = {
1387- let bS = aU()
1388- let cf = fromBase58String(bS[q])
1389- let cF = bS[r]
1390- let cg = fromBase58String(cF)
1391- let cG = bS[s]
1464+@Callable(dL)
1465+func evaluatePutByAmountAssetREADONLY (cA) = {
1466+ let bT = aV()
1467+ let cg = fromBase58String(bT[q])
1468+ let cG = bT[r]
13921469 let ch = fromBase58String(cG)
1393- let bT = parseIntValue(bS[t])
1394- let bU = parseIntValue(bS[u])
1395- let ci = bS[p]
1396- let gu = valueOrErrorMessage(assetInfo(cf), (("Asset " + toBase58String(cf)) + " doesn't exist")).quantity
1397- let gv = bD(cF)
1398- let gw = bD(cG)
1399- let bO = D(gv, bT)
1400- let bP = D(gw, bU)
1401- let co = if ((gu == 0))
1470+ let cH = bT[s]
1471+ let ci = fromBase58String(cH)
1472+ let bU = parseIntValue(bT[t])
1473+ let bV = parseIntValue(bT[u])
1474+ let cj = bT[p]
1475+ let gK = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1476+ let gL = bE(cG)
1477+ let gM = bE(cH)
1478+ let bP = D(gL, bU)
1479+ let bQ = D(gM, bV)
1480+ let cp = if ((gK == 0))
14021481 then e
1403- else bF(bP, bO)
1404- let cL = D(cz, bT)
1405- let cM = fraction(cL, co, d)
1406- let cB = H(cM, bU)
1407- let dQ = cx("", 500000, cz, cg, cB, ch, "", true, false)
1408- let cW = dQ._1
1409- let gB = dQ._3
1410- let ck = dQ._4
1411- let cm = dQ._5
1412- let cj = dQ._6
1413- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cW), toString(H(co, b)), toString(ck), toString(cm), toString(cj), ci, toString(cz), toString(cB)], j))
1482+ else bG(bQ, bP)
1483+ let cM = D(cA, bU)
1484+ let cN = fraction(cM, cp, d)
1485+ let cC = H(cN, bV)
1486+ let dR = cy("", 500000, cA, ch, cC, ci, "", true, false)
1487+ let cX = dR._1
1488+ let gR = dR._3
1489+ let cl = dR._4
1490+ let cn = dR._5
1491+ let ck = dR._6
1492+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cX), toString(H(cp, b)), toString(cl), toString(cn), toString(ck), cj, toString(cA), toString(cC)], j))
14141493 }
14151494
14161495
14171496
1418-@Callable(dK)
1419-func evaluatePutByPriceAssetREADONLY (cB) = {
1420- let bS = aU()
1421- let cf = fromBase58String(bS[q])
1422- let cF = bS[r]
1423- let cg = fromBase58String(cF)
1424- let cG = bS[s]
1497+@Callable(dL)
1498+func evaluatePutByPriceAssetREADONLY (cC) = {
1499+ let bT = aV()
1500+ let cg = fromBase58String(bT[q])
1501+ let cG = bT[r]
14251502 let ch = fromBase58String(cG)
1426- let bT = parseIntValue(bS[t])
1427- let bU = parseIntValue(bS[u])
1428- let ci = bS[p]
1429- let gu = valueOrErrorMessage(assetInfo(cf), (("Asset " + toBase58String(cf)) + " doesn't exist")).quantity
1430- let gC = bD(cF)
1431- let gD = bD(cG)
1432- let gE = D(gC, bT)
1433- let gF = D(gD, bU)
1434- let co = if ((gu == 0))
1503+ let cH = bT[s]
1504+ let ci = fromBase58String(cH)
1505+ let bU = parseIntValue(bT[t])
1506+ let bV = parseIntValue(bT[u])
1507+ let cj = bT[p]
1508+ let gK = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1509+ let gS = bE(cG)
1510+ let gT = bE(cH)
1511+ let gU = D(gS, bU)
1512+ let gV = D(gT, bV)
1513+ let cp = if ((gK == 0))
14351514 then e
1436- else bF(gF, gE)
1437- let cM = D(cB, bU)
1438- let cL = fraction(cM, d, co)
1439- let cz = H(cL, bT)
1440- let dQ = cx("", 500000, cz, cg, cB, ch, "", true, false)
1441- let cW = dQ._1
1442- let gB = dQ._3
1443- let ck = dQ._4
1444- let cm = dQ._5
1445- let cj = dQ._6
1446- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cW), toString(H(co, b)), toString(ck), toString(cm), toString(cj), ci, toString(cz), toString(cB)], j))
1515+ else bG(gV, gU)
1516+ let cN = D(cC, bV)
1517+ let cM = fraction(cN, d, cp)
1518+ let cA = H(cM, bU)
1519+ let dR = cy("", 500000, cA, ch, cC, ci, "", true, false)
1520+ let cX = dR._1
1521+ let gR = dR._3
1522+ let cl = dR._4
1523+ let cn = dR._5
1524+ let ck = dR._6
1525+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cX), toString(H(cp, b)), toString(cl), toString(cn), toString(ck), cj, toString(cA), toString(cC)], j))
14471526 }
14481527
14491528
14501529
1451-@Callable(dK)
1452-func evaluateGetREADONLY (gG,gH) = {
1453- let cO = cb("", gG, gH, this)
1454- let cu = cO._1
1455- let cv = cO._2
1456- let ck = cO._5
1457- let cm = cO._6
1458- let cj = cO._7
1459- let cp = cO._8
1460- let ci = parseIntValue(cO._9)
1461- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cu), toString(cv), toString(ck), toString(cm), toString(cj), toString(cp), toString(ci)], j))
1530+@Callable(dL)
1531+func evaluateGetREADONLY (gW,gX) = {
1532+ let cP = cc("", gW, gX, this)
1533+ let cv = cP._1
1534+ let cw = cP._2
1535+ let cl = cP._5
1536+ let cn = cP._6
1537+ let ck = cP._7
1538+ let cq = cP._8
1539+ let cj = parseIntValue(cP._9)
1540+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cv), toString(cw), toString(cl), toString(cn), toString(ck), toString(cq), toString(cj)], j))
14621541 }
14631542
14641543
1465-@Verifier(gI)
1466-func gJ () = {
1467- let gK = {
1468- let dV = eY()
1469- if ($isInstanceOf(dV, "ByteVector"))
1544+@Verifier(gY)
1545+func gZ () = {
1546+ let ha = {
1547+ let dW = eZ()
1548+ if ($isInstanceOf(dW, "ByteVector"))
14701549 then {
1471- let fc = dV
1472- fc
1550+ let fd = dW
1551+ fd
14731552 }
1474- else if ($isInstanceOf(dV, "Unit"))
1475- then gI.senderPublicKey
1553+ else if ($isInstanceOf(dW, "Unit"))
1554+ then gY.senderPublicKey
14761555 else throw("Match error")
14771556 }
1478- let dV = gI
1479- if ($isInstanceOf(dV, "Order"))
1557+ let dW = gY
1558+ if ($isInstanceOf(dW, "Order"))
14801559 then {
1481- let dz = dV
1482- let gL = aT()
1483- let gM = dy(dz)
1484- let aC = gM._1
1485- let aD = gM._2
1486- let aE = sigVerify(dz.bodyBytes, dz.proofs[0], dz.senderPublicKey)
1487- let aF = sigVerify(dz.bodyBytes, dz.proofs[1], gL)
1488- if (if (if (aC)
1489- then aE
1490- else false)
1560+ let dA = dW
1561+ let hb = aU()
1562+ let hc = dz(dA)
1563+ let aD = hc._1
1564+ let aE = hc._2
1565+ let aF = sigVerify(dA.bodyBytes, dA.proofs[0], dA.senderPublicKey)
1566+ let aG = sigVerify(dA.bodyBytes, dA.proofs[1], hb)
1567+ if (if (if (aD)
14911568 then aF
14921569 else false)
1570+ then aG
1571+ else false)
14931572 then true
1494- else aB(aC, aD, aE, aF)
1573+ else aC(aD, aE, aF, aG)
14951574 }
1496- else if ($isInstanceOf(dV, "SetScriptTransaction"))
1575+ else if ($isInstanceOf(dW, "SetScriptTransaction"))
14971576 then {
1498- let eZ = dV
1499- if (sigVerify(gI.bodyBytes, gI.proofs[0], gK))
1577+ let fa = dW
1578+ if (sigVerify(gY.bodyBytes, gY.proofs[0], ha))
15001579 then true
15011580 else {
1502- let gN = blake2b256(value(eZ.script))
1503- let gO = fromBase64String(value(getString(aN, az())))
1504- let gP = scriptHash(this)
1505- if ((gO == gN))
1506- then (gP != gN)
1581+ let hd = blake2b256(value(fa.script))
1582+ let he = fromBase64String(value(getString(aO, aA())))
1583+ let hf = scriptHash(this)
1584+ if ((he == hd))
1585+ then (hf != hd)
15071586 else false
15081587 }
15091588 }
1510- else sigVerify(gI.bodyBytes, gI.proofs[0], gK)
1589+ else sigVerify(gY.bodyBytes, gY.proofs[0], ha)
15111590 }
15121591

github/deemru/w8io/873ac7e 
2380.50 ms