tx · AoUQLUXDWbVcrXaoBsQpCLjcXzZezF6zdPGvW42fuDSW

3N4vUDe3oc1YPNwMyQi2h8f2tmGoA7wBZp2:  -0.03200000 Waves

2023.02.08 11:04 [2440377] smart account 3N4vUDe3oc1YPNwMyQi2h8f2tmGoA7wBZp2 > SELF 0.00000000 Waves

{ "type": 13, "id": "AoUQLUXDWbVcrXaoBsQpCLjcXzZezF6zdPGvW42fuDSW", "fee": 3200000, "feeAssetId": null, "timestamp": 1675843429528, "version": 1, "sender": "3N4vUDe3oc1YPNwMyQi2h8f2tmGoA7wBZp2", "senderPublicKey": "6MuWw1pkme7UgQX2hZh8yTZyoWVkz8A4rmHZ1acrsrVm", "proofs": [ "8TYeXhC7rjTHCJkM92isxHovpbyT14ksUKUu2PRmgZ3mYbiM2jeTej85fEUDSBXKuVJ4upeHZmKnkjAXpV3VD82" ], "script": "base64:BgKcKQgCEgQKAgEEEgYKBAEEAQgSAwoBCBIAEgQKAgEEEgMKAQESBAoCAQQSBAoCCAESBAoCCAESBAoCCAESBQoDAQgBEgASBAoCAQESAwoBARIFCgMBAQESBAoCCAgSABIDCgEIEgUKAwEBARIECgIBARIECgIIARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAEgMKAQESAwoBARIECgIIASIKbFBkZWNpbWFscyIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiC3dhdmVzU3RyaW5nIgNTRVAiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iEmlkeFBvb2xBbXRBc3NldEFtdCIUaWR4UG9vbFByaWNlQXNzZXRBbXQiEWlkeFBvb2xMUEFzc2V0QW10IhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiC3RvWDE4QmlnSW50Igdmcm9tWDE4IgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCIMZnJvbVgxOFJvdW5kIgVyb3VuZCIHdG9TY2FsZSIDYW10IghyZXNTY2FsZSIIY3VyU2NhbGUiA2FicyIJYWJzQmlnSW50Igxzd2FwQ29udHJhY3QiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIQa2V5RmFjdG9yeUNvbmZpZyINa2V5TWF0Y2hlclB1YiIpa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMiE3Bvb2xDb250cmFjdEFkZHJlc3MiDWtleVBvb2xDb25maWciCWlBbXRBc3NldCILaVByaWNlQXNzZXQiH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQiDGJhc2VBc3NldFN0ciITa2V5QWxsUG9vbHNTaHV0ZG93biINa2V5UG9vbFdlaWdodCIPY29udHJhY3RBZGRyZXNzIhZrZXlBbGxvd2VkTHBTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIg90aHJvd09yZGVyRXJyb3IiCm9yZGVyVmFsaWQiC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiD2dldFN0cmluZ09yRmFpbCIHYWRkcmVzcyIDa2V5IgxnZXRJbnRPckZhaWwiCHRocm93RXJyIgNtc2ciD2ZhY3RvcnlDb250cmFjdCITZmVlQ29sbGVjdG9yQWRkcmVzcyIFaW5GZWUiAUAiBm91dEZlZSIQaXNHbG9iYWxTaHV0ZG93biITZ2V0TWF0Y2hlclB1Yk9yRmFpbCINZ2V0UG9vbENvbmZpZyIIYW10QXNzZXQiCnByaWNlQXNzZXQiDHBhcnNlQXNzZXRJZCIFaW5wdXQiD2Fzc2V0SWRUb1N0cmluZyIPcGFyc2VQb29sQ29uZmlnIgpwb29sQ29uZmlnIhBwb29sQ29uZmlnUGFyc2VkIgskdDA3OTA2ODA3MiIOY2ZnUG9vbEFkZHJlc3MiDWNmZ1Bvb2xTdGF0dXMiDGNmZ0xwQXNzZXRJZCIQY2ZnQW1vdW50QXNzZXRJZCIPY2ZnUHJpY2VBc3NldElkIhZjZmdBbW91bnRBc3NldERlY2ltYWxzIhVjZmdQcmljZUFzc2V0RGVjaW1hbHMiEGdldEZhY3RvcnlDb25maWciD3N0YWtpbmdDb250cmFjdCIQc2xpcHBhZ2VDb250cmFjdCIRZGF0YVB1dEFjdGlvbkluZm8iDWluQW10QXNzZXRBbXQiD2luUHJpY2VBc3NldEFtdCIIb3V0THBBbXQiBXByaWNlIh1zbGlwcGFnZVRvbGVyYW5jZVBhc3NlZEJ5VXNlciIVc2xpcHBhZ2VUb2xlcmFuY2VSZWFsIgh0eEhlaWdodCILdHhUaW1lc3RhbXAiEnNsaXBhZ2VBbXRBc3NldEFtdCIUc2xpcGFnZVByaWNlQXNzZXRBbXQiEWRhdGFHZXRBY3Rpb25JbmZvIg5vdXRBbXRBc3NldEFtdCIQb3V0UHJpY2VBc3NldEFtdCIHaW5McEFtdCINZ2V0QWNjQmFsYW5jZSIHYXNzZXRJZCIPY2FsY1ByaWNlQmlnSW50IghwckFtdFgxOCIIYW1BbXRYMTgiEHByaXZhdGVDYWxjUHJpY2UiCmFtQXNzZXREY20iCnByQXNzZXREY20iBWFtQW10IgVwckFtdCIOYW10QXNzZXRBbXRYMTgiEHByaWNlQXNzZXRBbXRYMTgiCmNhbGNQcmljZXMiBWxwQW10IgNjZmciC2FtdEFzc2V0RGNtIg1wcmljZUFzc2V0RGNtIghwcmljZVgxOCIIbHBBbXRYMTgiE2xwUHJpY2VJbkFtQXNzZXRYMTgiE2xwUHJpY2VJblByQXNzZXRYMTgiD2NhbGN1bGF0ZVByaWNlcyIGcHJpY2VzIhRlc3RpbWF0ZUdldE9wZXJhdGlvbiIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCIJbHBBc3NldElkIglhbUFzc2V0SWQiCXByQXNzZXRJZCIKcG9vbFN0YXR1cyIKbHBFbWlzc2lvbiIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4Ig1scEVtaXNzaW9uWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiFGVzdGltYXRlUHV0T3BlcmF0aW9uIhFzbGlwcGFnZVRvbGVyYW5jZSIMaW5BbUFzc2V0QW10IgtpbkFtQXNzZXRJZCIMaW5QckFzc2V0QW10IgtpblByQXNzZXRJZCIKaXNFdmFsdWF0ZSIGZW1pdExwIgxhbUFzc2V0SWRTdHIiDHByQXNzZXRJZFN0ciILaUFtdEFzc2V0SWQiDWlQcmljZUFzc2V0SWQiDmluQW1Bc3NldElkU3RyIg5pblByQXNzZXRJZFN0ciIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIDcmVzIgtzbGlwcGFnZVgxOCIUc2xpcHBhZ2VUb2xlcmFuY2VYMTgiCnByVmlhQW1YMTgiCmFtVmlhUHJYMTgiDGV4cGVjdGVkQW10cyIRZXhwQW10QXNzZXRBbXRYMTgiE2V4cFByaWNlQXNzZXRBbXRYMTgiCWNhbGNMcEFtdCIOY2FsY0FtQXNzZXRQbXQiDmNhbGNQckFzc2V0UG10IgxzbGlwcGFnZUNhbGMiCWVtaXRMcEFtdCIGYW1EaWZmIgZwckRpZmYiC2NvbW1vblN0YXRlIht2YWxpZGF0ZU1hdGNoZXJPcmRlckFsbG93ZWQiBW9yZGVyIgphbXRBc3NldElkIgxwcmljZUFzc2V0SWQiEmFjY0FtdEFzc2V0QmFsYW5jZSIUYWNjUHJpY2VBc3NldEJhbGFuY2UiDW9yZGVyQW10QXNzZXQiEG9yZGVyQW10QXNzZXRTdHIiD29yZGVyUHJpY2VBc3NldCISb3JkZXJQcmljZUFzc2V0U3RyIgpvcmRlclByaWNlIghwcmljZURjbSIQY2FzdGVkT3JkZXJQcmljZSIRaXNPcmRlclByaWNlVmFsaWQiCWNvbW1vbkdldCIBaSIDcG10IgZwbXRBbXQiCWNvbW1vblB1dCIKYW1Bc3NldFBtdCIKcHJBc3NldFBtdCIGZXN0UHV0IgRlbWl0IgZhbW91bnQiB2VtaXRJbnYiDWVtaXRJbnZMZWdhY3kiByRtYXRjaDAiFWxlZ2FjeUZhY3RvcnlDb250cmFjdCIHdGFrZUZlZSIDZmVlIglmZWVBbW91bnQiD2NhbGNQdXRPbmVUb2tlbiIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiBmlzRXZhbCIQYW1vdW50QmFsYW5jZVJhdyIPcHJpY2VCYWxhbmNlUmF3IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMjI5NjkyMzI2MiIQYW1vdW50QmFsYW5jZU9sZCIPcHJpY2VCYWxhbmNlT2xkIg0kdDAyMzI2NjIzNDE1IhRhbW91bnRBc3NldEFtb3VudFJhdyITcHJpY2VBc3NldEFtb3VudFJhdyIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDIzNTQ3MjM2MTEiDXBheW1lbnRBbW91bnQiEGFtb3VudEJhbGFuY2VOZXciD3ByaWNlQmFsYW5jZU5ldyILcHJpY2VOZXdYMTgiCHByaWNlTmV3Ig5wYXltZW50QmFsYW5jZSIUcGF5bWVudEJhbGFuY2VCaWdJbnQiDHN1cHBseUJpZ0ludCILY2hlY2hTdXBwbHkiDWRlcG9zaXRCaWdJbnQiC2lzc3VlQW1vdW50IgtwcmljZU9sZFgxOCIIcHJpY2VPbGQiBGxvc3MiDSR0MDI1MDg4MjUyNTUiB2JhbGFuY2UiD2lzc3VlQW1vdW50Qm90aCIPY2FsY0dldE9uZVRva2VuIgpvdXRBc3NldElkIgZjaGVja3MiEG91dEluQW1vdW50QXNzZXQiDWJhbGFuY2VCaWdJbnQiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIgpvdXRCYWxhbmNlIhBvdXRCYWxhbmNlQmlnSW50Ig5yZWRlZW1lZEJpZ0ludCIJYW1vdW50UmF3Ig0kdDAyNjgzNTI2ODkxIgt0b3RhbEFtb3VudCINJHQwMjY4OTUyNzEyMSILb3V0QW1BbW91bnQiC291dFByQW1vdW50IgxhbUJhbGFuY2VOZXciDHByQmFsYW5jZU5ldyIYYW1vdW50Qm90aEluUGF5bWVudEFzc2V0IhZtYW5hZ2VyUHVibGljS2V5T3JVbml0IgFzIh1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdCIJaXNNYW5hZ2VyIgJwayILbXVzdE1hbmFnZXIiAnBkIg1jbGVhbkFtb3VudEluIglpc1JldmVyc2UiDSR0MDI4Nzk4MjkxMDMiCGFzc2V0T3V0Igdhc3NldEluIhJwb29sQXNzZXRJbkJhbGFuY2UiE3Bvb2xBc3NldE91dEJhbGFuY2UiCWFtb3VudE91dCIEb2xkSyIEbmV3SyIGY2hlY2tLIgxhbW91bnRPdXRNaW4iCWFkZHJlc3NUbyIIY2hlY2tNaW4iF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IgtjaGVja0NhbGxlciIVY2hlY2tNYW5hZ2VyUHVibGljS2V5IgJwbSIFaGFzUE0iB2NoZWNrUE0iD3Nob3VsZEF1dG9TdGFrZSIEYW1JZCIEcHJJZCIMc2xpcHBhZ2VBSW52IgxzbGlwcGFnZVBJbnYiCmxwVHJhbnNmZXIiC3NscFN0YWtlSW52IgttYXhTbGlwcGFnZSIMbWluT3V0QW1vdW50IglhdXRvU3Rha2UiIGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkIg1pc1B1dERpc2FibGVkIgdwYXltZW50Ig0kdDAzNDIyMjM0MzUyIgVib251cyITZW1pdEFtb3VudEVzdGltYXRlZCIKZW1pdEFtb3VudCIIc3Rha2VJbnYiB3NlbmRGZWUiDSR0MDM1MDgxMzUyMTYiDW91dEFzc2V0SWRTdHIiDWlzR2V0RGlzYWJsZWQiDSR0MDM2MDIxMzYxNTYiD2Ftb3VudEVzdGltYXRlZCIHYnVybkludiINYXNzZXRUcmFuc2ZlciINJHQwMzY3OTEzNjkyOSINdW5zdGFrZUFtb3VudCIKdW5zdGFrZUludiINJHQwMzc3NTQzNzg4NyIJb3V0QW10QW10IhRidXJuTFBBc3NldE9uRmFjdG9yeSISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCINY2hlY2tQYXltZW50cyIPY2hlY2tQb29sU3RhdHVzIhVub0xlc3NUaGVuQW1vdW50QXNzZXQiDGNoZWNrQW1vdW50cyILYW10QXNzZXRTdHIiDXByaWNlQXNzZXRTdHIiDXBvb2xMUEJhbGFuY2UiCnByaWNlc0xpc3QiD2xwQW10QXNzZXRTaGFyZSIRbHBQcmljZUFzc2V0U2hhcmUiCnBvb2xXZWlnaHQiDGN1clByaWNlQ2FsYyIMYW1CYWxhbmNlUmF3IgxwckJhbGFuY2VSYXciD2FtQmFsYW5jZVJhd1gxOCIPcHJCYWxhbmNlUmF3WDE4IhBwYXltZW50THBBc3NldElkIgxwYXltZW50THBBbXQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNoZQABYQAIAAFiAIDC1y8AAWMJALYCAQCAwtcvAAFkCQC2AgEAgICQu7rWrfANAAFlCQC2AgEAAAABZgkAtgIBAAAAAWcJALYCAQABAAFoCQC2AgEAAgABaQIFV0FWRVMAAWoCAl9fAAFrAAEAAWwAAgABbQADAAFuAAQAAW8AAQABcAACAAFxAAMAAXIABAABcwAFAAF0AAYAAXUABwABdgAIAAF3AAkAAXgACgABeQABAAF6AAIAAUEAAwABQgABAAFDAAcBAUQCAUUBRgkAvAIDCQC2AgEFAUUFAWQJALYCAQUBRgEBRwIBRQFGCQC8AgMFAUUFAWQFAUYBAUgCAUkBSgkAoAMBCQC8AgMFAUkJALYCAQUBSgUBZAEBSwMBSQFKAUwJAKADAQkAvQIEBQFJCQC2AgEFAUoFAWQFAUwBAU0DAU4BTwFQCQBrAwUBTgUBTwUBUAEBUQEBSQMJAGYCAAAFAUkJAQEtAQUBSQUBSQEBUgEBSQMJAL8CAgUBZQUBSQkAvgIBBQFJBQFJAQFTAAIQJXNfX3N3YXBDb250cmFjdAEBVAACEyVzX19mYWN0b3J5Q29udHJhY3QBAVUAAhQlc19fbWFuYWdlclB1YmxpY0tleQEBVgACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEBVwACESVzJXNfX3ByaWNlX19sYXN0AQFYAgFZAVoJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQFZCQDMCAIJAKQDAQUBWgUDbmlsBQFqAQJhYQICYWICYWMJAKwCAgkArAICCQCsAgICCyVzJXMlc19fUF9fBQJhYgICX18FAmFjAQJhZAICYWICYWMJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQJhYgICX18FAmFjAQJhZQACDyVzX19hbW91bnRBc3NldAECYWYAAg4lc19fcHJpY2VBc3NldAECYWcAAhElc19fZmFjdG9yeUNvbmZpZwECYWgAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAmFpAQJhagkArAICCQCsAgICCCVzJXMlc19fBQJhagIgX19tYXBwaW5nc19fcG9vbENvbnRyYWN0MkxwQXNzZXQBAmFrAgJhbAJhbQkArAICCQCsAgIJAKwCAgkArAICAgglZCVkJXNfXwUCYWwCAl9fBQJhbQIIX19jb25maWcBAmFuAQJhbwkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQJhbwECYXAAAgwlc19fc2h1dGRvd24BAmFxAQJhcgkArAICAhIlcyVzX19wb29sV2VpZ2h0X18FAmFyAQJhcwACFyVzX19hbGxvd2VkTHBTY3JpcHRIYXNoAAJhdAIXJXNfX2ZlZUNvbGxlY3RvckFkZHJlc3MBAmF1AwJhdgJhdwJheAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAiRvcmRlciB2YWxpZGF0aW9uIGZhaWxlZDogb3JkZXJWYWxpZD0JAKUDAQUCYXYCDSBzZW5kZXJWYWxpZD0JAKUDAQUCYXcCDiBtYXRjaGVyVmFsaWQ9CQClAwEFAmF4AQJheQICYXoCYUEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJhegUCYUEJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYXoJAMwIAgIBLgkAzAgCBQJhQQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQJhQgICYXoCYUEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQJhegUCYUEJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYXoJAMwIAgIBLgkAzAgCBQJhQQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQJhQwECYUQJAAIBCQC5CQIJAMwIAgIIbHAucmlkZToJAMwIAgUCYUQFA25pbAIBIAACYUUJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJheQIFBHRoaXMJAQFUAAACYUYJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJheQIFAmFFBQJhdAACYUcKAAJhSAkA/AcEBQJhRQIQZ2V0SW5GZWVSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFIAgNJbnQFAmFICQACAQkArAICCQADAQUCYUgCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAACYUkKAAJhSAkA/AcEBQJhRQIRZ2V0T3V0RmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhSAIDSW50BQJhSAkAAgEJAKwCAgkAAwEFAmFIAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQBAmFKAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJhRQkBAmFwAAcBAmFLAAkA2QQBCQECYXkCBQJhRQkBAmFoAAECYUwABAJhTQkBAmF5AgUEdGhpcwkBAmFlAAQCYU4JAQJheQIFBHRoaXMJAQJhZgAEAmFtCQECYUICBQJhRQkBAmFuAQUCYU4EAmFsCQECYUICBQJhRQkBAmFuAQUCYU0JALUJAgkBAmF5AgUCYUUJAQJhawIJAKQDAQUCYWwJAKQDAQUCYW0FAWoBAmFPAQJhUAMJAAACBQJhUAUBaQUEdW5pdAkA2QQBBQJhUAECYVEBAmFQAwkAAAIFAmFQBQR1bml0BQFpCQDYBAEJAQV2YWx1ZQEFAmFQAQJhUgECYVMJAJkKBwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJhUwUBbwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFTBQFwCQDZBAEJAJEDAgUCYVMFAXEJAQJhTwEJAJEDAgUCYVMFAXIJAQJhTwEJAJEDAgUCYVMFAXMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhUwUBdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFTBQF1AAJhVAkBAmFSAQkBAmFMAAACYVUFAmFUAAJhVggFAmFVAl8xAAJhVwgFAmFVAl8yAAJhWAgFAmFVAl8zAAJhWQgFAmFVAl80AAJhWggFAmFVAl81AAJiYQgFAmFVAl82AAJiYggFAmFVAl83AQJiYwAJALUJAgkBAmF5AgUCYUUJAQJhZwAFAWoAAmJkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCCQECYmMABQFCAhlpbmNvcnJlY3Qgc3Rha2luZyBhZGRyZXNzAAJiZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmJjAAUBQwIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwECYmYKAmJnAmJoAmJpAmJqAmJrAmJsAmJtAmJuAmJvAmJwCQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiZwkAzAgCCQCkAwEFAmJoCQDMCAIJAKQDAQUCYmkJAMwIAgkApAMBBQJiagkAzAgCCQCkAwEFAmJrCQDMCAIJAKQDAQUCYmwJAMwIAgkApAMBBQJibQkAzAgCCQCkAwEFAmJuCQDMCAIJAKQDAQUCYm8JAMwIAgkApAMBBQJicAUDbmlsBQFqAQJicQYCYnICYnMCYnQCYmoCYm0CYm4JALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJicgkAzAgCCQCkAwEFAmJzCQDMCAIJAKQDAQUCYnQJAMwIAgkApAMBBQJiagkAzAgCCQCkAwEFAmJtCQDMCAIJAKQDAQUCYm4FA25pbAUBagECYnUBAmJ2AwkAAAIFAmJ2AgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJidgECYncCAmJ4AmJ5CQC8AgMFAmJ4BQFkBQJieQECYnoEAmJBAmJCAmJDAmJEBAJiRQkBAUQCBQJiQwUCYkEEAmJGCQEBRAIFAmJEBQJiQgkBAmJ3AgUCYkYFAmJFAQJiRwMCYkMCYkQCYkgEAmJJCQECYUwABAJiSgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJJBQF0BAJiSwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJJBQF1BAJiTAkBAmJ6BAUCYkoFAmJLBQJiQwUCYkQEAmJ5CQEBRAIFAmJDBQJiSgQCYngJAQFEAgUCYkQFAmJLBAJiTQkBAUQCBQJiSAUBYgQCYk4JAQJidwIFAmJ5BQJiTQQCYk8JAQJidwIFAmJ4BQJiTQkAzAgCBQJiTAkAzAgCBQJiTgkAzAgCBQJiTwUDbmlsAQJiUAMCYkMCYkQCYkgEAmJRCQECYkcDBQJiQwUCYkQFAmJICQDMCAIJAQFIAgkAkQMCBQJiUQAABQFiCQDMCAIJAQFIAgkAkQMCBQJiUQABBQFiCQDMCAIJAQFIAgkAkQMCBQJiUQACBQFiBQNuaWwBAmJSBAJiUwJiVAJiVQJhYgQCYkkJAQJhTAAEAmJWCQCRAwIFAmJJBQFxBAJiVwkAkQMCBQJiSQUBcgQCYlgJAJEDAgUCYkkFAXMEAmJBCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkkFAXQEAmJCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkkFAXUEAmJZCQCRAwIFAmJJBQFwBAJiWggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmJWCQCsAgIJAKwCAgIGQXNzZXQgBQJiVgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkDCQECIT0CBQJiVgUCYlQJAAIBAhVJbnZhbGlkIGFzc2V0IHBhc3NlZC4EAmNhCQECYnUBBQJiVwQCY2IJAQFEAgUCY2EFAmJBBAJjYwkBAmJ1AQUCYlgEAmNkCQEBRAIFAmNjBQJiQgQCY2UJAQJidwIFAmNkBQJjYgQCY2YJAQFIAgUCY2UFAWIEAmNnCQEBRAIFAmJVBQFiBAJjaAkBAUQCBQJiWgUBYgQCY2kJALwCAwUCY2IFAmNnBQJjaAQCY2oJALwCAwUCY2QFAmNnBQJjaAQCY2sJAQFIAgUCY2kFAmJBBAJjbAkBAUgCBQJjagUCYkIEAmNtAwkAAAIFAmJTAgAFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhYgUCY2sDCQAAAgUCYlcCBVdBVkVTBQR1bml0CQDZBAEFAmJXCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFiBQJjbAMJAAACBQJiWAIFV0FWRVMFBHVuaXQJANkEAQUCYlgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFkAgkApQgBBQJhYgUCYlMJAQJicQYFAmNrBQJjbAUCYlUFAmNmBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmNmCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNmBQNuaWwJAJwKCgUCY2sFAmNsBQJiVwUCYlgFAmNhBQJjYwUCYloFAmNlBQJiWQUCY20BAmNuCQJiUwJjbwJjcAJjcQJjcgJjcwJhYgJjdAJjdQQCYkkJAQJhTAAEAmJWCQDZBAEJAJEDAgUCYkkFAXEEAmN2CQCRAwIFAmJJBQFyBAJjdwkAkQMCBQJiSQUBcwQCY3gJAJEDAgUCYkkFAXYEAmN5CQCRAwIFAmJJBQF3BAJiSgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJJBQF0BAJiSwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJJBQF1BAJiWQkAkQMCBQJiSQUBcAQCYloICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlYJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlYCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJjegkA2AQBCQELdmFsdWVPckVsc2UCBQJjcQkA2QQBAgVXQVZFUwQCY0EJANgEAQkBC3ZhbHVlT3JFbHNlAgUCY3MJANkEAQIFV0FWRVMDAwkBAiE9AgUCY3YFAmN6BgkBAiE9AgUCY3cFAmNBCQACAQIiSW52YWxpZCBhbXQgb3IgcHJpY2UgYXNzZXQgcGFzc2VkLgQCY2EDBQJjdAkBAmJ1AQUCY3YJAGUCCQECYnUBBQJjdgUCY3AEAmNjAwUCY3QJAQJidQEFAmN3CQBlAgkBAmJ1AQUCY3cFAmNyBAJjQgkBAUQCBQJjcAUCYkoEAmNDCQEBRAIFAmNyBQJiSwQCY0QJAQJidwIFAmNDBQJjQgQCY2IJAQFEAgUCY2EFAmJKBAJjZAkBAUQCBQJjYwUCYksEAmNFAwkAAAIFAmJaAAAEAmNlBQFlBAJjRgUBZQQCYk0JAHYGCQC5AgIFAmNCBQJjQwAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAUgCBQJiTQUBYgkBAUgCBQJjQgUCYkoJAQFIAgUCY0MFAmJLCQECYncCCQC3AgIFAmNkBQJjQwkAtwICBQJjYgUCY0IFAmNGBAJjZQkBAmJ3AgUCY2QFAmNiBAJjRgkAvAIDCQEBUgEJALgCAgUCY2UFAmNEBQFkBQJjZQQCY0cJAQFEAgUCY28FAWIDAwkBAiE9AgUCY2UFAWUJAL8CAgUCY0YFAmNHBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJjRgIeIGV4Y2VlZGVkIHRoZSBwYXNzZWQgbGltaXQgb2YgCQCmAwEFAmNHBAJjaAkBAUQCBQJiWgUBYgQCY0gJALwCAwUCY0IFAmNlBQFkBAJjSQkAvAIDBQJjQwUBZAUCY2UEAmNKAwkAvwICBQJjSAUCY0MJAJQKAgUCY0kFAmNDCQCUCgIFAmNCBQJjSAQCY0sIBQJjSgJfMQQCY0wIBQJjSgJfMgQCYk0JALwCAwUCY2gFAmNMBQJjZAkAlwoFCQEBSAIFAmJNBQFiCQEBSAIFAmNLBQJiSgkBAUgCBQJjTAUCYksFAmNlBQJjRgQCY00IBQJjRQJfMQQCY04IBQJjRQJfMgQCY08IBQJjRQJfMwQCY2YJAQFIAggFAmNFAl80BQFiBAJjUAkBAUgCCAUCY0UCXzUFAWIDCQBnAgAABQJjTQkAAgECNkludmFsaWQgY2FsY3VsYXRpb25zLiBMUCBjYWxjdWxhdGVkIGlzIGxlc3MgdGhhbiB6ZXJvLgQCY1EDCQEBIQEFAmN1AAAFAmNNBAJjUgkAZQIFAmNwBQJjTgQCY1MJAGUCBQJjcgUCY08EAmNUCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmNmCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNmCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQIFAmFiBQJiUwkBAmJmCgUCY04FAmNPBQJjUQUCY2YFAmNvBQJjUAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY1IFAmNTBQNuaWwJAJ8KDQUCY00FAmNRBQJjZgUCY2EFAmNjBQJiWgUCYlYFAmJZBQJjVAUCY1IFAmNTBQJjcQUCY3MBAmNVAQJjVgQCYkkJAQJhTAAEAmNXCQCRAwIFAmJJBQFyBAJjWAkAkQMCBQJiSQUBcwQCYlkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSQUBcAQCYkoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSQUBdAQCYksJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSQUBdQQCY1kJAQJidQEFAmNXBAJjWgkBAmJ1AQUCY1gEAmNlAwkAAAIIBQJjVglvcmRlclR5cGUFA0J1eQkBAmJ6BAUCYkoFAmJLCQBkAgUCY1kIBQJjVgZhbW91bnQFAmNaCQECYnoEBQJiSgUCYksJAGUCBQJjWQgFAmNWBmFtb3VudAUCY1oEAmNmCQEBSAIFAmNlBQFiAwMDCQECYUoABgkAAAIFAmJZBQFtBgkAAAIFAmJZBQFuCQACAQIcRXhjaGFuZ2Ugb3BlcmF0aW9ucyBkaXNhYmxlZAQCZGEICAUCY1YJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BAJkYgMJAAACBQJkYQUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUCZGEEAmRjCAgFAmNWCWFzc2V0UGFpcgpwcmljZUFzc2V0BAJkZAMJAAACBQJkYwUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUCZGMDAwkBAiE9AgUCZGIFAmNXBgkBAiE9AgUCZGQFAmNYCQACAQITV3Jvbmcgb3JkZXIgYXNzZXRzLgQCZGUIBQJjVgVwcmljZQQCZGYJAGsDBQFiBQJiSwUCYkoEAmRnCQEBTQMFAmRlBQFiBQJkZgQCZGgDCQAAAggFAmNWCW9yZGVyVHlwZQUDQnV5CQBnAgUCY2YFAmRnCQBnAgUCZGcFAmNmBgECZGkBAmRqAwkBAiE9AgkAkAMBCAUCZGoIcGF5bWVudHMAAQkAAgECHWV4YWN0bHkgMSBwYXltZW50IGlzIGV4cGVjdGVkBAJkawkBBXZhbHVlAQkAkQMCCAUCZGoIcGF5bWVudHMAAAQCYlQJAQV2YWx1ZQEIBQJkawdhc3NldElkBAJkbAgFAmRrBmFtb3VudAQCY0UJAQJiUgQJANgEAQgFAmRqDXRyYW5zYWN0aW9uSWQJANgEAQUCYlQFAmRsCAUCZGoGY2FsbGVyBAJjawgFAmNFAl8xBAJjbAgFAmNFAl8yBAJiWQkBDXBhcnNlSW50VmFsdWUBCAUCY0UCXzkEAmNtCAUCY0UDXzEwAwMJAQJhSgAGCQAAAgUCYlkFAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmJZCQCXCgUFAmNrBQJjbAUCZGwFAmJUBQJjbQECZG0DAmRqAmNvAmN1AwkBAiE9AgkAkAMBCAUCZGoIcGF5bWVudHMAAgkAAgECH2V4YWN0bHkgMiBwYXltZW50cyBhcmUgZXhwZWN0ZWQEAmRuCQEFdmFsdWUBCQCRAwIIBQJkaghwYXltZW50cwAABAJkbwkBBXZhbHVlAQkAkQMCCAUCZGoIcGF5bWVudHMAAQQCZHAJAQJjbgkJANgEAQgFAmRqDXRyYW5zYWN0aW9uSWQFAmNvCAUCZG4GYW1vdW50CAUCZG4HYXNzZXRJZAgFAmRvBmFtb3VudAgFAmRvB2Fzc2V0SWQJAKUIAQgFAmRqBmNhbGxlcgcFAmN1BAJiWQkBDXBhcnNlSW50VmFsdWUBCAUCZHACXzgDAwMJAQJhSgAGCQAAAgUCYlkFAWwGCQAAAgUCYlkFAW4JAAIBCQCsAgICLFB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmJZBQJkcAECZHEBAmRyBAJkcwkA/AcEBQJhRQIEZW1pdAkAzAgCBQJkcgUDbmlsBQNuaWwDCQAAAgUCZHMFAmRzBAJkdAQCZHUFAmRzAwkAAQIFAmR1AgdBZGRyZXNzBAJkdgUCZHUJAPwHBAUCZHYCBGVtaXQJAMwIAgUCZHIFA25pbAUDbmlsBQR1bml0AwkAAAIFAmR0BQJkdAUCZHIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmR3AgJkcgJkeAQCZHkDCQAAAgUCZHgAAAAACQBrAwUCZHIFAmR4BQFiCQCUCgIJAGUCBQJkcgUCZHkFAmR5AQJkegQCZEECZEICYWICYWMEAmRDCQAAAgUCYWMFBHVuaXQEAmRECQECYnUBCQECYVEBBQJhWQQCZEUJAQJidQEJAQJhUQEFAmFaBAJkRgMJAAACBQJkQgUCYVkGAwkAAAIFAmRCBQJhWgcJAQJhQwECDWludmFsaWQgYXNzZXQEAmRHAwUCZEMJAJQKAgUCZEQFAmRFAwUCZEYJAJQKAgkAZQIFAmREBQJkQQUCZEUJAJQKAgUCZEQJAGUCBQJkRQUCZEEEAmRICAUCZEcCXzEEAmRJCAUCZEcCXzIEAmRKAwUCZEYJAJQKAgUCZEEAAAkAlAoCAAAFAmRBBAJkSwgFAmRKAl8xBAJkTAgFAmRKAl8yBAJkTQgJAQJkdwIFAmRLBQJhRwJfMQQCZE4ICQECZHcCBQJkTAUCYUcCXzEEAmRPCQECZHcCBQJkQQUCYUcEAmRQCAUCZE8CXzEEAmR5CAUCZE8CXzIEAmRRCQBkAgUCZEgFAmRNBAJkUgkAZAIFAmRJBQJkTgQCZFMJAQJidwIJAQFEAgUCZFIFAmJiCQEBRAIFAmRRBQJiYQQCZFQJAQFIAgUCZFMFAWIEAmRVAwUCZEYFAmRIBQJkSQQCZFYJALYCAQUCZFUEAmRXCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYVgJAKwCAgkArAICAgZhc3NldCAJANgEAQUCYVgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJkWAMJAL8CAgUCZFcFAWYGCQECYUMBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmRYBQJkWAQCZFkJALYCAQUCZFAEAmRaCQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmRXCQC4AgIJAQpzcXJ0QmlnSW50BAkAtwICBQFkCQC6AgIJALkCAgUCZFkFAWQFAmRWABIAEgUERE9XTgUBZAUBZAUDbmlsBAJjVAMFAmRDBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCZFQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZFQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAgkApQgBCQEFdmFsdWUBBQJhYgkA2AQBCQEFdmFsdWUBBQJhYwkBAmJmCgUCZEsFAmRMBQJkWgUCZFQAAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAJlYQkBAmJ3AgkBAUQCBQJkSQUCYmIJAQFEAgUCZEgFAmJhBAJlYgkBAUgCBQJlYQUBYgQCZWMEAmVkAwUCZEYJAJQKAgUCZEsFAmRICQCUCgIFAmRMBQJkSQQCZHIIBQJlZAJfMQQCZWUIBQJlZAJfMgQCZWYJAKADAQkAvAIDBQJkVwkAtgIBCQBpAgUCZHIAAgkAtgIBBQJlZQkAawMJAGUCBQJkWgUCZWYFAWIFAmVmCQCWCgQFAmRaBQJjVAUCZHkFAmVjCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlZwUCZWgCZFACZEICYWICYWMEAmRDCQAAAgUCYWMFBHVuaXQEAmVpCQDMCAIDCQAAAgUCZEIFAmFYBgkBAmFDAQIQaW52YWxpZCBscCBhc3NldAUDbmlsAwkAAAIFAmVpBQJlaQQCZWoDCQAAAgUCZWgFAmFZBgMJAAACBQJlaAUCYVoHCQECYUMBAg1pbnZhbGlkIGFzc2V0BAJlawMFAmVqCQC2AgEJAQJidQEJAQJhUQEFAmFZCQC2AgEJAQJidQEJAQJhUQEFAmFaBAJlbAkBAmJ1AQkBAmFRAQUCYVkEAmVtCQECYnUBCQECYVEBBQJhWgQCZW4DBQJlagUCZWwFAmVtBAJlbwkAtgIBBQJlbgQCZFcJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJhWAkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJhWAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmVwCQC2AgEFAmRQBAJlcQkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQJlawkAuAICBQFkCQB2BgkAuAICBQFkCQC6AgIJALkCAgUCZXAFAWQFAmRXABIFAWgAAAASBQRET1dOBQFkBQNuaWwEAmVyCQECZHcCBQJlcQUCYUkEAmVzCAUCZXICXzEEAmR5CAUCZXICXzIEAmV0AwUCZWoJAJYKBAUCZXMAAAkAZQIFAmVsBQJlcQUCZW0JAJYKBAAABQJlcwUCZWwJAGUCBQJlbQUCZXEEAmV1CAUCZXQCXzEEAmV2CAUCZXQCXzIEAmV3CAUCZXQCXzMEAmV4CAUCZXQCXzQEAmRTCQECYncCCQEBRAIFAmV4BQJiYgkBAUQCBQJldwUCYmEEAmRUCQEBSAIFAmRTBQFiBAJjVAMFAmRDBQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFkAgkApQgBCQEFdmFsdWUBBQJhYgkA2AQBCQEFdmFsdWUBBQJhYwkBAmJxBgUCZXUFAmV2BQJkUAUCZFQFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCZFQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZFQFA25pbAQCZWEJAQJidwIJAQFEAgUCZW0FAmJiCQEBRAIFAmVsBQJiYQQCZWIJAQFIAgUCZWEFAWIEAmVjBAJleQkAaAIJAKADAQkAvAIDBQJlawUCZXAFAmRXAAIJAGsDCQBlAgUCZXMFAmV5BQFiBQJleQkAlgoEBQJlcwUCY1QFAmR5BQJlYwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZXoABAJkdQkAoggBCQEBVQADCQABAgUCZHUCBlN0cmluZwQCZUEFAmR1CQDZBAEFAmVBAwkAAQIFAmR1AgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmVCAAQCZHUJAKIIAQkBAVYAAwkAAQIFAmR1AgZTdHJpbmcEAmVBBQJkdQkA2QQBBQJlQQMJAAECBQJkdQIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJlQwECZGoEAmR1CQECZXoAAwkAAQIFAmR1AgpCeXRlVmVjdG9yBAJlRAUCZHUJAAACCAUCZGoPY2FsbGVyUHVibGljS2V5BQJlRAMJAAECBQJkdQIEVW5pdAkAAAIIBQJkagZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgECZUUBAmRqBAJlRgkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAJkdQkBAmV6AAMJAAECBQJkdQIKQnl0ZVZlY3RvcgQCZUQFAmR1AwkAAAIIBQJkag9jYWxsZXJQdWJsaWNLZXkFAmVEBgUCZUYDCQABAgUCZHUCBFVuaXQDCQAAAggFAmRqBmNhbGxlcgUEdGhpcwYFAmVGCQACAQILTWF0Y2ggZXJyb3IcAmRqASFjYWxjdWxhdGVBbW91bnRPdXRGb3JTd2FwUkVBRE9OTFkCAmVHAmVIBAJlSQMJAAACBQJlSAcEAmVKCQECYXkCBQR0aGlzCQECYWYABAJlSwkBAmF5AgUEdGhpcwkBAmFlAAkAlAoCBQJlSgUCZUsEAmVKCQECYXkCBQR0aGlzCQECYWUABAJlSwkBAmF5AgUEdGhpcwkBAmFmAAkAlAoCBQJlSgUCZUsEAmVKCAUCZUkCXzEEAmVLCAUCZUkCXzIEAmVMCQECYnUBBQJlSwQCZU0JAQJidQEFAmVKBAJlTgkAaQIJAGgCBQJlTQUCZUcJAGQCBQJlTAUCZUcEAmVPCQBoAgUCZUwFAmVNBAJlUAkAaAIJAGQCCQECYnUBBQJlSwUCZUcJAGUCCQECYnUBBQJlSgUCZU4EAmVRAwkAZwIFAmVQBQJlTwYJAAIBAhRuZXcgSyBpcyBmZXdlciBlcnJvcgMJAAACBQJlUQUCZVEJAJQKAgUDbmlsBQJlTgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkagEmY2FsY3VsYXRlQW1vdW50T3V0Rm9yU3dhcEFuZFNlbmRUb2tlbnMEAmVHAmVIAmVSAmVTBAJlaQkAzAgCAwkAZwIICQEFdmFsdWUBCQCRAwIIBQJkaghwYXltZW50cwAABmFtb3VudAUCZUcGCQECYUMBAgxXcm9uZyBhbW91bnQJAMwIAgMJAAACCAUCZGoGY2FsbGVyCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYXkCBQR0aGlzCQEBUwAGCQECYUMBAhFQZXJtaXNzaW9uIGRlbmllZAUDbmlsAwkAAAIFAmVpBQJlaQQCZGsJAQV2YWx1ZQEJAJEDAggFAmRqCHBheW1lbnRzAAAEAmVLAwkAAAIIBQJkawdhc3NldElkBQR1bml0CQDYBAEJAJsDAQIFV0FWRVMJANgEAQkBBXZhbHVlAQgFAmRrB2Fzc2V0SWQEAmVKAwkAAAIFAmVIBwkBAmF5AgUEdGhpcwkBAmFmAAkBAmF5AgUEdGhpcwkBAmFlAAQCZUwJAGUCCQECYnUBBQJlSwgJAQV2YWx1ZQEJAJEDAggFAmRqCHBheW1lbnRzAAAGYW1vdW50BAJlTQkBAmJ1AQUCZUoEAmVOCQBpAgkAaAIFAmVNBQJlRwkAZAIFAmVMBQJlRwQCZU8JAGgCBQJlTAUCZU0EAmVQCQBoAgkBAmJ1AQUCZUsJAGUCCQECYnUBBQJlSgUCZU4EAmVRAwkAZwIFAmVQBQJlTwYJAAIBAhRuZXcgSyBpcyBmZXdlciBlcnJvcgMJAAACBQJlUQUCZVEEAmVUAwkAZwIFAmVOBQJlUgYJAAIBAixFeGNoYW5nZSByZXN1bHQgaXMgZmV3ZXIgY29pbnMgdGhhbiBleHBlY3RlZAMJAAACBQJlVAUCZVQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCZVMFAmVOAwkAAAIFAmVLAgVXQVZFUwUEdW5pdAkA2QQBBQJlSgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRqAQpzZXRNYW5hZ2VyAQJlVQQCZVYJAQJlRQEFAmRqAwkAAAIFAmVWBQJlVgQCZVcJANkEAQUCZVUDCQAAAgUCZVcFAmVXCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFWAAUCZVUFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkagEOY29uZmlybU1hbmFnZXIABAJlWAkBAmVCAAQCZVkDCQEJaXNEZWZpbmVkAQUCZVgGCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmVZBQJlWQQCZVoDCQAAAggFAmRqD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCZVgGCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmVaBQJlWgkAzAgCCQELU3RyaW5nRW50cnkCCQEBVQAJANgEAQkBBXZhbHVlAQUCZVgJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVYABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGoBA3B1dAICY28CZmEDCQBmAgAABQJjbwkAAgECIEludmFsaWQgc2xpcHBhZ2VUb2xlcmFuY2UgcGFzc2VkBAJkcAkBAmRtAwUCZGoFAmNvBgQCY1EIBQJkcAJfMgQCYlYIBQJkcAJfNwQCY20IBQJkcAJfOQQCY1IIBQJkcANfMTAEAmNTCAUCZHADXzExBAJmYggFAmRwA18xMgQCZmMIBQJkcANfMTMEAmRzCQD8BwQFAmFFAgRlbWl0CQDMCAIFAmNRBQNuaWwFA25pbAMJAAACBQJkcwUCZHMEAmR0BAJkdQUCZHMDCQABAgUCZHUCB0FkZHJlc3MEAmR2BQJkdQkA/AcEBQJkdgIEZW1pdAkAzAgCBQJjUQUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZHQFAmR0BAJmZAMJAGYCBQJjUgAACQD8BwQFAmJlAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZmIFAmNSBQNuaWwFA25pbAMJAAACBQJmZAUCZmQEAmZlAwkAZgIFAmNTAAAJAPwHBAUCYmUCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJmYwUCY1MFA25pbAUDbmlsAwkAAAIFAmZlBQJmZQQCZmYDBQJmYQQCZmcJAPwHBAUCYmQCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJWBQJjUQUDbmlsAwkAAAIFAmZnBQJmZwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkagZjYWxsZXIFAmNRBQJiVgUDbmlsCQDOCAIFAmNtBQJmZgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkagEKcHV0Rm9yRnJlZQECZmgDCQBmAgAABQJmaAkAAgECFEludmFsaWQgdmFsdWUgcGFzc2VkBAJkcAkBAmRtAwUCZGoFAmZoBwgFAmRwAl85AmRqAQlwdXRPbmVUa24CAmZpAmZqBAJmawoAAmFICQD8BwQFAmFFAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYUgCB0Jvb2xlYW4FAmFICQACAQkArAICCQADAQUCYUgCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZsAwMDCQECYUoABgkAAAIFAmFXBQFsBgkAAAIFAmFXBQFuBgUCZmsEAmVpCQDMCAIDAwkBASEBBQJmbAYJAQJlQwEFAmRqBgkBAmFDAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZGoIcGF5bWVudHMAAQYJAQJhQwECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmVpBQJlaQQCZm0JAJEDAggFAmRqCHBheW1lbnRzAAAEAmRCCAUCZm0HYXNzZXRJZAQCZEEIBQJmbQZhbW91bnQEAmFiCAUCZGoGY2FsbGVyBAJhYwgFAmRqDXRyYW5zYWN0aW9uSWQEAmZuCQECZHoEBQJkQQUCZEIFAmFiBQJhYwMJAAACBQJmbgUCZm4EAmZvCAUCZm4CXzQEAmR5CAUCZm4CXzMEAmNUCAUCZm4CXzIEAmZwCAUCZm4CXzEEAmZxAwMJAGYCBQJmaQAACQBmAgUCZmkFAmZwBwkBAmFDAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmaQUDbmlsAgAFAmZwBAJkcwkBAmRxAQUCZnEDCQAAAgUCZHMFAmRzBAJmZgMFAmZqBAJmcgkA/AcEBQJiZAIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYVgFAmZxBQNuaWwDCQAAAgUCZnIFAmZyBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRqBmNhbGxlcgUCZnEFAmFYBQNuaWwEAmZzAwkAZgIFAmR5AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUYFAmR5BQJkQgUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIFAmNUBQJmZgUCZnMFAmZxCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRqARFwdXRPbmVUa25SRUFET05MWQICZEICZEEEAmZ0CQECZHoEBQJkQQkBAmFPAQUCZEIFBHVuaXQFBHVuaXQEAmZwCAUCZnQCXzEEAmNUCAUCZnQCXzIEAmR5CAUCZnQCXzMEAmZvCAUCZnQCXzQJAJQKAgUDbmlsCQCVCgMFAmZwBQJkeQUCZm8CZGoBCWdldE9uZVRrbgICZnUCZmkEAmZrCgACYUgJAPwHBAUCYUUCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhSAIHQm9vbGVhbgUCYUgJAAIBCQCsAgIJAAMBBQJhSAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZnYDAwkBAmFKAAYJAAACBQJhVwUBbgYFAmZrBAJlaQkAzAgCAwMJAQEhAQUCZnYGCQECZUMBBQJkagYJAQJhQwECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRqCHBheW1lbnRzAAEGCQECYUMBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJlaQUCZWkEAmVoCQECYU8BBQJmdQQCZm0JAJEDAggFAmRqCHBheW1lbnRzAAAEAmRCCAUCZm0HYXNzZXRJZAQCZFAIBQJmbQZhbW91bnQEAmFiCAUCZGoGY2FsbGVyBAJhYwgFAmRqDXRyYW5zYWN0aW9uSWQEAmZ3CQECZWcFBQJlaAUCZFAFAmRCBQJhYgUCYWMDCQAAAgUCZncFAmZ3BAJmbwgFAmZ3Al80BAJkeQgFAmZ3Al8zBAJjVAgFAmZ3Al8yBAJmeAgFAmZ3Al8xBAJkcgMDCQBmAgUCZmkAAAkAZgIFAmZpBQJmeAcJAQJhQwEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZmkFA25pbAIABQJmeAQCZnkJAPwHBAUCYUUCBGJ1cm4JAMwIAgUCZFAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZEIFAmRQBQNuaWwDCQAAAgUCZnkFAmZ5BAJmegkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhYgUCZHIFAmVoBQNuaWwEAmZzAwkAZgIFAmR5AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUYFAmR5BQJlaAUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIFAmNUBQJmegUCZnMFAmRyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRqARFnZXRPbmVUa25SRUFET05MWQICZWgCZFAEAmZBCQECZWcFCQECYU8BBQJlaAUCZFAFAmFYBQR1bml0BQR1bml0BAJmeAgFAmZBAl8xBAJjVAgFAmZBAl8yBAJkeQgFAmZBAl8zBAJmbwgFAmZBAl80CQCUCgIFA25pbAkAlQoDBQJmeAUCZHkFAmZvAmRqARN1bnN0YWtlQW5kR2V0T25lVGtuAwJmQgJmdQJmaQQCZmsKAAJhSAkA/AcEBQJhRQIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFIAgdCb29sZWFuBQJhSAkAAgEJAKwCAgkAAwEFAmFIAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJmdgMDCQECYUoABgkAAAIFAmFXBQFuBgUCZmsEAmVpCQDMCAIDAwkBASEBBQJmdgYJAQJlQwEFAmRqBgkBAmFDAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZGoIcGF5bWVudHMAAAYJAQJhQwECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmVpBQJlaQQCZWgJAQJhTwEFAmZ1BAJhYggFAmRqBmNhbGxlcgQCYWMIBQJkag10cmFuc2FjdGlvbklkBAJmQwkA/AcEBQJiZAIHdW5zdGFrZQkAzAgCCQDYBAEFAmFYCQDMCAIFAmZCBQNuaWwFA25pbAMJAAACBQJmQwUCZkMEAmZECQECZWcFBQJlaAUCZkIFAmFYBQJhYgUCYWMDCQAAAgUCZkQFAmZEBAJmbwgFAmZEAl80BAJkeQgFAmZEAl8zBAJjVAgFAmZEAl8yBAJmeAgFAmZEAl8xBAJkcgMDCQBmAgUCZmkAAAkAZgIFAmZpBQJmeAcJAQJhQwEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZmkFA25pbAIABQJmeAQCZnkJAPwHBAUCYUUCBGJ1cm4JAMwIAgUCZkIFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYVgFAmZCBQNuaWwDCQAAAgUCZnkFAmZ5BAJmegkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZGoGY2FsbGVyBQJkcgUCZWgFA25pbAQCZnMDCQBmAgUCZHkAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhRgUCZHkFAmVoBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAgUCY1QFAmZ6BQJmcwUCZHIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGoBA2dldAAEAmNFCQECZGkBBQJkagQCZkUIBQJjRQJfMQQCY2wIBQJjRQJfMgQCZGwIBQJjRQJfMwQCYlQIBQJjRQJfNAQCY20IBQJjRQJfNQQCZkYJAPwHBAUCYUUCBGJ1cm4JAMwIAgUCZGwFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlQFAmRsBQNuaWwDCQAAAgUCZkYFAmZGBQJjbQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkagEJZ2V0Tm9MZXNzAgJmRwJmSAQCY0UJAQJkaQEFAmRqBAJjawgFAmNFAl8xBAJjbAgFAmNFAl8yBAJkbAgFAmNFAl8zBAJiVAgFAmNFAl80BAJjbQgFAmNFAl81AwkAZgIFAmZHBQJjawkAAgEJAKwCAgkArAICCQCsAgICHG5vTGVzc1RoZW5BbXRBc3NldCBmYWlsZWQ6ICAJAKQDAQUCY2sCAyA8IAkApAMBBQJmRwMJAGYCBQJmSAUCY2wJAAIBCQCsAgIJAKwCAgkArAICAh1ub0xlc3NUaGVuUHJpY2VBc3NldCBmYWlsZWQ6IAkApAMBBQJjbAIDIDwgCQCkAwEFAmZIBAJmRgkA/AcEBQJhRQIEYnVybgkAzAgCBQJkbAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiVAUCZGwFA25pbAMJAAACBQJmRgUCZkYFAmNtCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRqAQ11bnN0YWtlQW5kR2V0AQJkcgQCZkkDCQECIT0CCQCQAwEIBQJkaghwYXltZW50cwAACQACAQIYTm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBgMJAAACBQJmSQUCZkkEAmJJCQECYUwABAJiVgkA2QQBCQCRAwIFAmJJBQFxBAJmQwkA/AcEBQJiZAIHdW5zdGFrZQkAzAgCCQDYBAEFAmJWCQDMCAIFAmRyBQNuaWwFA25pbAMJAAACBQJmQwUCZkMEAmNFCQECYlIECQDYBAEIBQJkag10cmFuc2FjdGlvbklkCQDYBAEFAmJWBQJkcggFAmRqBmNhbGxlcgQCYlkJAQ1wYXJzZUludFZhbHVlAQgFAmNFAl85BAJjbQgFAmNFA18xMAQCZkoDAwkBAmFKAAYJAAACBQJiWQUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCYlkGAwkAAAIFAmZKBQJmSgQCZkYJAPwHBAUCYUUCBGJ1cm4JAMwIAgUCZHIFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlYFAmRyBQNuaWwDCQAAAgUCZkYFAmZGBQJjbQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkagETdW5zdGFrZUFuZEdldE5vTGVzcwMCZkICZksCZkgEAmZ2AwkBAmFKAAYJAAACBQJhVwUBbgQCZWkJAMwIAgMJAQEhAQUCZnYGCQACAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZGoIcGF5bWVudHMAAAYJAAIBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJlaQUCZWkEAmZDCQD8BwQFAmJkAgd1bnN0YWtlCQDMCAIJANgEAQUCYVgJAMwIAgUCZkIFA25pbAUDbmlsAwkAAAIFAmZDBQJmQwQCY0UJAQJiUgQJANgEAQgFAmRqDXRyYW5zYWN0aW9uSWQJANgEAQUCYVgFAmZCCAUCZGoGY2FsbGVyBAJjawgFAmNFAl8xBAJjbAgFAmNFAl8yBAJjbQgFAmNFA18xMAQCZkwJAMwIAgMJAGcCBQJjawUCZksGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZksFA25pbAIACQDMCAIDCQBnAgUCY2wFAmZIBgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZkgFA25pbAIABQNuaWwDCQAAAgUCZkwFAmZMBAJmRgkA/AcEBQJhRQIEYnVybgkAzAgCBQJmQgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJhWAUCZkIFA25pbAMJAAACBQJmRgUCZkYFAmNtCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRqAQhhY3RpdmF0ZQICZk0CZk4DCQECIT0CCQClCAEIBQJkagZjYWxsZXIJAKUIAQUCYUUJAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWUABQJmTQkAzAgCCQELU3RyaW5nRW50cnkCCQECYWYABQJmTgUDbmlsAgdzdWNjZXNzAmRqARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJhTAACZGoBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmJ2CQCUCgIFA25pbAkBAmJ1AQUCYnYCZGoBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmJDAmJEAmJIBAJiUQkBAmJHAwUCYkMFAmJEBQJiSAkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmJRAAAJAMwIAgkApgMBCQCRAwIFAmJRAAEJAMwIAgkApgMBCQCRAwIFAmJRAAIFA25pbAJkagEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUUBRgkAlAoCBQNuaWwJAKYDAQkBAUQCBQFFBQFGAmRqARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFJAUoJAJQKAgUDbmlsCQEBSAIJAKcDAQUBSQUBSgJkagEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAgJieAJieQkAlAoCBQNuaWwJAKYDAQkBAmJ3AgkApwMBBQJieAkApwMBBQJieQJkagEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAmJTAmNvAmNwAmNxAmNyAmNzAmFiAmN0AmN1CQCUCgIFA25pbAkBAmNuCQUCYlMFAmNvBQJjcAUCY3EFAmNyBQJjcwUCYWIFAmN0BQJjdQJkagEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEAmJTAmJUAmJVAmFiBAJjRQkBAmJSBAUCYlMFAmJUBQJiVQkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYWIJAJQKAgUDbmlsCQCcCgoIBQJjRQJfMQgFAmNFAl8yCAUCY0UCXzMIBQJjRQJfNAgFAmNFAl81CAUCY0UCXzYIBQJjRQJfNwkApgMBCAUCY0UCXzgIBQJjRQJfOQgFAmNFA18xMAJkagENc3RhdHNSRUFET05MWQAEAmJJCQECYUwABAJiVgkA2QQBCQCRAwIFAmJJBQFxBAJjVwkAkQMCBQJiSQUBcgQCY1gJAJEDAgUCYkkFAXMEAmN4CQCRAwIFAmJJBQF2BAJjeQkAkQMCBQJiSQUBdwQCYkoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSQUBdAQCYksJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSQUBdQQCZk8ICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlYJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlYCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJjWQkBAmJ1AQUCY1cEAmNaCQECYnUBBQJjWAQCZlADCQAAAgUCZk8AAAkAzAgCBQFlCQDMCAIFAWUJAMwIAgUBZQUDbmlsCQECYkcDBQJjWQUCY1oFAmZPBAJjZgAABAJmUQkBAUgCCQCRAwIFAmZQAAEFAWIEAmZSCQEBSAIJAJEDAgUCZlAAAgUBYgQCZlMJAQV2YWx1ZQEJAJoIAgUCYUUJAQJhcQEJAKUIAQUEdGhpcwkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmNZCQDMCAIJAKQDAQUCY1oJAMwIAgkApAMBBQJmTwkAzAgCCQCkAwEFAmNmCQDMCAIJAKQDAQUCZlEJAMwIAgkApAMBBQJmUgkAzAgCCQCkAwEFAmZTBQNuaWwFAWoCZGoBIGV2YWx1YXRlUHV0QnlBbW91bnRBc3NldFJFQURPTkxZAQJjcAQCYkkJAQJhTAAEAmJWCQDZBAEJAJEDAgUCYkkFAXEEAmN2CQCRAwIFAmJJBQFyBAJiVwkA2QQBBQJjdgQCY3cJAJEDAgUCYkkFAXMEAmJYCQDZBAEFAmN3BAJiSgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJJBQF0BAJiSwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJJBQF1BAJiWQkAkQMCBQJiSQUBcAQCZk8ICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlYJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlYCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJjWQkBAmJ1AQUCY3YEAmNaCQECYnUBBQJjdwQCYkUJAQFEAgUCY1kFAmJKBAJiRgkBAUQCBQJjWgUCYksEAmNlAwkAAAIFAmZPAAAFAWUJAQJidwIFAmJGBQJiRQQCY0IJAQFEAgUCY3AFAmJKBAJjQwkAvAIDBQJjQgUCY2UFAWQEAmNyCQEBSAIFAmNDBQJiSwQCZHAJAQJjbgkCAACgwh4FAmNwBQJiVwUCY3IFAmJYAgAGBwQCY00IBQJkcAJfMQQCZlQIBQJkcAJfMwQCY2EIBQJkcAJfNAQCY2MIBQJkcAJfNQQCYloIBQJkcAJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY00JAMwIAgkApAMBCQEBSAIFAmNlBQFiCQDMCAIJAKQDAQUCY2EJAMwIAgkApAMBBQJjYwkAzAgCCQCkAwEFAmJaCQDMCAIFAmJZCQDMCAIJAKQDAQUCY3AJAMwIAgkApAMBBQJjcgUDbmlsBQFqAmRqAR9ldmFsdWF0ZVB1dEJ5UHJpY2VBc3NldFJFQURPTkxZAQJjcgQCYkkJAQJhTAAEAmJWCQDZBAEJAJEDAgUCYkkFAXEEAmN2CQCRAwIFAmJJBQFyBAJiVwkA2QQBBQJjdgQCY3cJAJEDAgUCYkkFAXMEAmJYCQDZBAEFAmN3BAJiSgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJJBQF0BAJiSwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJJBQF1BAJiWQkAkQMCBQJiSQUBcAQCZk8ICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlYJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlYCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJmVQkBAmJ1AQUCY3YEAmZWCQECYnUBBQJjdwQCZlcJAQFEAgUCZlUFAmJKBAJmWAkBAUQCBQJmVgUCYksEAmNlAwkAAAIFAmZPAAAFAWUJAQJidwIFAmZYBQJmVwQCY0MJAQFEAgUCY3IFAmJLBAJjQgkAvAIDBQJjQwUBZAUCY2UEAmNwCQEBSAIFAmNCBQJiSgQCZHAJAQJjbgkCAACgwh4FAmNwBQJiVwUCY3IFAmJYAgAGBwQCY00IBQJkcAJfMQQCZlQIBQJkcAJfMwQCY2EIBQJkcAJfNAQCY2MIBQJkcAJfNQQCYloIBQJkcAJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY00JAMwIAgkApAMBCQEBSAIFAmNlBQFiCQDMCAIJAKQDAQUCY2EJAMwIAgkApAMBBQJjYwkAzAgCCQCkAwEFAmJaCQDMCAIFAmJZCQDMCAIJAKQDAQUCY3AJAMwIAgkApAMBBQJjcgUDbmlsBQFqAmRqARNldmFsdWF0ZUdldFJFQURPTkxZAgJmWQJmWgQCY0UJAQJiUgQCAAUCZlkFAmZaBQR0aGlzBAJjawgFAmNFAl8xBAJjbAgFAmNFAl8yBAJjYQgFAmNFAl81BAJjYwgFAmNFAl82BAJiWggFAmNFAl83BAJjZggFAmNFAl84BAJiWQkBDXBhcnNlSW50VmFsdWUBCAUCY0UCXzkJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjawkAzAgCCQCkAwEFAmNsCQDMCAIJAKQDAQUCY2EJAMwIAgkApAMBBQJjYwkAzAgCCQCkAwEFAmJaCQDMCAIJAKYDAQUCY2YJAMwIAgkApAMBBQJiWQUDbmlsBQFqAQJnYQECZ2IABAJnYwQCZHUJAQJlegADCQABAgUCZHUCCkJ5dGVWZWN0b3IEAmVEBQJkdQUCZUQDCQABAgUCZHUCBFVuaXQIBQJnYQ9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCZHUFAmdhAwkAAQIFAmR1AgVPcmRlcgQCY1YFAmR1BAJnZAkBAmFLAAQCYXYJAQJjVQEFAmNWBAJhdwkA9AMDCAUCY1YJYm9keUJ5dGVzCQCRAwIIBQJjVgZwcm9vZnMAAAgFAmNWD3NlbmRlclB1YmxpY0tleQQCYXgJAPQDAwgFAmNWCWJvZHlCeXRlcwkAkQMCCAUCY1YGcHJvb2ZzAAEFAmdkAwMDBQJhdgUCYXcHBQJheAcGCQECYXUDBQJhdgUCYXcFAmF4AwkAAQIFAmR1AhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCZUEFAmR1BAJnZQkA9gMBCQEFdmFsdWUBCAUCZUEGc2NyaXB0BAJnZgkA2wQBCQEFdmFsdWUBCQCdCAIFAmFFCQECYXMABAJnZwkA8QcBBQR0aGlzAwMJAAACBQJnZgUCZ2UJAQIhPQIFAmdnBQJnZQcGCQD0AwMIBQJnYQlib2R5Qnl0ZXMJAJEDAggFAmdhBnByb29mcwAABQJnYwkA9AMDCAUCZ2EJYm9keUJ5dGVzCQCRAwIIBQJnYQZwcm9vZnMAAAUCZ2MflOEF", "chainId": 84, "height": 2440377, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: E8bNYZxjfmsBxJxQXUjgtPnfm3TFk1JrJtbeyAmrKfA3 Next: HzF2TbmxcAp2BiCmGPJLLetNhYjCaoS9c5Pyo6kToPbN Diff:
OldNewDifferences
6262 func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
6363
6464
65-func G (H,I) = toInt(fraction(H, toBigInt(I), d))
65+func G (E,F) = fraction(E, d, F)
6666
6767
68-func J (K,L,M) = fraction(K, L, M)
68+func H (I,J) = toInt(fraction(I, toBigInt(J), d))
6969
7070
71-func N (H) = if ((0 > H))
72- then -(H)
73- else H
71+func K (I,J,L) = toInt(fraction(I, toBigInt(J), d, L))
7472
7573
76-func O (H) = if ((e > H))
77- then -(H)
78- else H
74+func M (N,O,P) = fraction(N, O, P)
7975
8076
81-func P () = "%s__swapContract"
77+func Q (I) = if ((0 > I))
78+ then -(I)
79+ else I
8280
8381
84-func Q () = "%s__factoryContract"
82+func R (I) = if ((e > I))
83+ then -(I)
84+ else I
8585
8686
87-func R () = "%s__managerPublicKey"
87+func S () = "%s__swapContract"
8888
8989
90-func S () = "%s__pendingManagerPublicKey"
90+func T () = "%s__factoryContract"
9191
9292
93-func T () = "%s%s__price__last"
93+func U () = "%s__managerPublicKey"
9494
9595
96-func U (V,W) = makeString(["%s%s%d%d__price__history", toString(V), toString(W)], j)
96+func V () = "%s__pendingManagerPublicKey"
9797
9898
99-func X (Y,Z) = ((("%s%s%s__P__" + Y) + "__") + Z)
99+func W () = "%s%s__price__last"
100100
101101
102-func aa (Y,Z) = ((("%s%s%s__G__" + Y) + "__") + Z)
102+func X (Y,Z) = makeString(["%s%s%d%d__price__history", toString(Y), toString(Z)], j)
103103
104104
105-func ab () = "%s__amountAsset"
105+func aa (ab,ac) = ((("%s%s%s__P__" + ab) + "__") + ac)
106106
107107
108-func ac () = "%s__priceAsset"
108+func ad (ab,ac) = ((("%s%s%s__G__" + ab) + "__") + ac)
109109
110110
111-func ad () = "%s__factoryConfig"
111+func ae () = "%s__amountAsset"
112112
113113
114-func ae () = "%s%s__matcher__publicKey"
114+func af () = "%s__priceAsset"
115115
116116
117-func af (ag) = (("%s%s%s__" + ag) + "__mappings__poolContract2LpAsset")
117+func ag () = "%s__factoryConfig"
118118
119119
120-func ah (ai,aj) = (((("%d%d%s__" + ai) + "__") + aj) + "__config")
120+func ah () = "%s%s__matcher__publicKey"
121121
122122
123-func ak (al) = ("%s%s%s__mappings__baseAsset2internalId__" + al)
123+func ai (aj) = (("%s%s%s__" + aj) + "__mappings__poolContract2LpAsset")
124124
125125
126-func am () = "%s__shutdown"
126+func ak (al,am) = (((("%d%d%s__" + al) + "__") + am) + "__config")
127127
128128
129-func an (ao) = ("%s%s__poolWeight__" + ao)
129+func an (ao) = ("%s%s%s__mappings__baseAsset2internalId__" + ao)
130130
131131
132-func ap () = "%s__allowedLpScriptHash"
132+func ap () = "%s__shutdown"
133133
134134
135-let aq = "%s__feeCollectorAddress"
136-
137-func ar (as,at,au) = throw(((((("order validation failed: orderValid=" + toString(as)) + " senderValid=") + toString(at)) + " matcherValid=") + toString(au)))
135+func aq (ar) = ("%s%s__poolWeight__" + ar)
138136
139137
140-func av (aw,ax) = valueOrErrorMessage(getString(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " is not defined"], ""))
138+func as () = "%s__allowedLpScriptHash"
141139
142140
143-func ay (aw,ax) = valueOrErrorMessage(getInteger(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " is not defined"], ""))
141+let at = "%s__feeCollectorAddress"
142+
143+func au (av,aw,ax) = throw(((((("order validation failed: orderValid=" + toString(av)) + " senderValid=") + toString(aw)) + " matcherValid=") + toString(ax)))
144144
145145
146-func az (aA) = throw(makeString(["lp.ride:", aA], " "))
146+func ay (az,aA) = valueOrErrorMessage(getString(az, aA), makeString(["mandatory ", toString(az), ".", aA, " is not defined"], ""))
147147
148148
149-let aB = addressFromStringValue(av(this, Q()))
149+func aB (az,aA) = valueOrErrorMessage(getInteger(az, aA), makeString(["mandatory ", toString(az), ".", aA, " is not defined"], ""))
150150
151-let aC = addressFromStringValue(av(aB, aq))
152151
153-let aD = {
154- let aE = invoke(aB, "getInFeeREADONLY", [toString(this)], nil)
155- if ($isInstanceOf(aE, "Int"))
156- then aE
157- else throw(($getType(aE) + " couldn't be cast to Int"))
152+func aC (aD) = throw(makeString(["lp.ride:", aD], " "))
153+
154+
155+let aE = addressFromStringValue(ay(this, T()))
156+
157+let aF = addressFromStringValue(ay(aE, at))
158+
159+let aG = {
160+ let aH = invoke(aE, "getInFeeREADONLY", [toString(this)], nil)
161+ if ($isInstanceOf(aH, "Int"))
162+ then aH
163+ else throw(($getType(aH) + " couldn't be cast to Int"))
158164 }
159165
160-let aF = {
161- let aE = invoke(aB, "getOutFeeREADONLY", [toString(this)], nil)
162- if ($isInstanceOf(aE, "Int"))
163- then aE
164- else throw(($getType(aE) + " couldn't be cast to Int"))
166+let aI = {
167+ let aH = invoke(aE, "getOutFeeREADONLY", [toString(this)], nil)
168+ if ($isInstanceOf(aH, "Int"))
169+ then aH
170+ else throw(($getType(aH) + " couldn't be cast to Int"))
165171 }
166172
167-func aG () = valueOrElse(getBoolean(aB, am()), false)
173+func aJ () = valueOrElse(getBoolean(aE, ap()), false)
168174
169175
170-func aH () = fromBase58String(av(aB, ae()))
176+func aK () = fromBase58String(ay(aE, ah()))
171177
172178
173-func aI () = {
174- let aJ = av(this, ab())
175- let aK = av(this, ac())
176- let aj = ay(aB, ak(aK))
177- let ai = ay(aB, ak(aJ))
178- split(av(aB, ah(toString(ai), toString(aj))), j)
179+func aL () = {
180+ let aM = ay(this, ae())
181+ let aN = ay(this, af())
182+ let am = aB(aE, an(aN))
183+ let al = aB(aE, an(aM))
184+ split(ay(aE, ak(toString(al), toString(am))), j)
179185 }
180186
181187
182-func aL (aM) = if ((aM == i))
188+func aO (aP) = if ((aP == i))
183189 then unit
184- else fromBase58String(aM)
190+ else fromBase58String(aP)
185191
186192
187-func aN (aM) = if ((aM == unit))
193+func aQ (aP) = if ((aP == unit))
188194 then i
189- else toBase58String(value(aM))
195+ else toBase58String(value(aP))
190196
191197
192-func aO (aP) = $Tuple7(addressFromStringValue(aP[o]), parseIntValue(aP[p]), fromBase58String(aP[q]), aL(aP[r]), aL(aP[s]), parseIntValue(aP[t]), parseIntValue(aP[u]))
198+func aR (aS) = $Tuple7(addressFromStringValue(aS[o]), parseIntValue(aS[p]), fromBase58String(aS[q]), aO(aS[r]), aO(aS[s]), parseIntValue(aS[t]), parseIntValue(aS[u]))
193199
194200
195-let aQ = aO(aI())
201+let aT = aR(aL())
196202
197-let aR = aQ
203+let aU = aT
198204
199-let aS = aR._1
205+let aV = aU._1
200206
201-let aT = aR._2
207+let aW = aU._2
202208
203-let aU = aR._3
209+let aX = aU._3
204210
205-let aV = aR._4
211+let aY = aU._4
206212
207-let aW = aR._5
213+let aZ = aU._5
208214
209-let aX = aR._6
215+let ba = aU._6
210216
211-let aY = aR._7
217+let bb = aU._7
212218
213-func aZ () = split(av(aB, ad()), j)
219+func bc () = split(ay(aE, ag()), j)
214220
215221
216-let ba = valueOrErrorMessage(addressFromString(aZ()[B]), "incorrect staking address")
222+let bd = valueOrErrorMessage(addressFromString(bc()[B]), "incorrect staking address")
217223
218-let bb = valueOrErrorMessage(addressFromString(aZ()[C]), "incorrect staking address")
224+let be = valueOrErrorMessage(addressFromString(bc()[C]), "incorrect staking address")
219225
220-func bc (bd,be,bf,bg,bh,bi,bj,bk,bl,bm) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bd), toString(be), toString(bf), toString(bg), toString(bh), toString(bi), toString(bj), toString(bk), toString(bl), toString(bm)], j)
226+func bf (bg,bh,bi,bj,bk,bl,bm,bn,bo,bp) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bg), toString(bh), toString(bi), toString(bj), toString(bk), toString(bl), toString(bm), toString(bn), toString(bo), toString(bp)], j)
221227
222228
223-func bn (bo,bp,bq,bg,bj,bk) = makeString(["%d%d%d%d%d%d", toString(bo), toString(bp), toString(bq), toString(bg), toString(bj), toString(bk)], j)
229+func bq (br,bs,bt,bj,bm,bn) = makeString(["%d%d%d%d%d%d", toString(br), toString(bs), toString(bt), toString(bj), toString(bm), toString(bn)], j)
224230
225231
226-func br (bs) = if ((bs == "WAVES"))
232+func bu (bv) = if ((bv == "WAVES"))
227233 then wavesBalance(this).available
228- else assetBalance(this, fromBase58String(bs))
234+ else assetBalance(this, fromBase58String(bv))
229235
230236
231-func bt (bu,bv) = fraction(bu, d, bv)
237+func bw (bx,by) = fraction(bx, d, by)
232238
233239
234-func bw (bx,by,bz,bA) = {
235- let bB = D(bz, bx)
236- let bC = D(bA, by)
237- bt(bC, bB)
240+func bz (bA,bB,bC,bD) = {
241+ let bE = D(bC, bA)
242+ let bF = D(bD, bB)
243+ bw(bF, bE)
238244 }
239245
240246
241-func bD (bz,bA,bE) = {
242- let bF = aI()
243- let bG = parseIntValue(bF[t])
244- let bH = parseIntValue(bF[u])
245- let bI = bw(bG, bH, bz, bA)
246- let bv = D(bz, bG)
247- let bu = D(bA, bH)
248- let bJ = D(bE, b)
249- let bK = bt(bv, bJ)
250- let bL = bt(bu, bJ)
251-[bI, bK, bL]
247+func bG (bC,bD,bH) = {
248+ let bI = aL()
249+ let bJ = parseIntValue(bI[t])
250+ let bK = parseIntValue(bI[u])
251+ let bL = bz(bJ, bK, bC, bD)
252+ let by = D(bC, bJ)
253+ let bx = D(bD, bK)
254+ let bM = D(bH, b)
255+ let bN = bw(by, bM)
256+ let bO = bw(bx, bM)
257+[bL, bN, bO]
252258 }
253259
254260
255-func bM (bz,bA,bE) = {
256- let bN = bD(bz, bA, bE)
257-[G(bN[0], b), G(bN[1], b), G(bN[2], b)]
261+func bP (bC,bD,bH) = {
262+ let bQ = bG(bC, bD, bH)
263+[H(bQ[0], b), H(bQ[1], b), H(bQ[2], b)]
258264 }
259265
260266
261-func bO (bP,bQ,bR,Y) = {
262- let bF = aI()
263- let bS = bF[q]
264- let bT = bF[r]
265- let bU = bF[s]
266- let bx = parseIntValue(bF[t])
267- let by = parseIntValue(bF[u])
268- let bV = bF[p]
269- let bW = valueOrErrorMessage(assetInfo(fromBase58String(bS)), (("Asset " + bS) + " doesn't exist")).quantity
270- if ((bS != bQ))
267+func bR (bS,bT,bU,ab) = {
268+ let bI = aL()
269+ let bV = bI[q]
270+ let bW = bI[r]
271+ let bX = bI[s]
272+ let bA = parseIntValue(bI[t])
273+ let bB = parseIntValue(bI[u])
274+ let bY = bI[p]
275+ let bZ = valueOrErrorMessage(assetInfo(fromBase58String(bV)), (("Asset " + bV) + " doesn't exist")).quantity
276+ if ((bV != bT))
271277 then throw("Invalid asset passed.")
272278 else {
273- let bX = br(bT)
274- let bY = D(bX, bx)
275- let bZ = br(bU)
276- let ca = D(bZ, by)
277- let cb = bt(ca, bY)
278- let cc = G(cb, b)
279- let cd = D(bR, b)
280- let ce = D(bW, b)
281- let cf = fraction(bY, cd, ce)
282- let cg = fraction(ca, cd, ce)
283- let ch = G(cf, bx)
284- let ci = G(cg, by)
285- let cj = if ((bP == ""))
279+ let ca = bu(bW)
280+ let cb = D(ca, bA)
281+ let cc = bu(bX)
282+ let cd = D(cc, bB)
283+ let ce = bw(cd, cb)
284+ let cf = H(ce, b)
285+ let cg = D(bU, b)
286+ let ch = D(bZ, b)
287+ let ci = fraction(cb, cg, ch)
288+ let cj = fraction(cd, cg, ch)
289+ let ck = H(ci, bA)
290+ let cl = H(cj, bB)
291+ let cm = if ((bS == ""))
286292 then nil
287- else [ScriptTransfer(Y, ch, if ((bT == "WAVES"))
293+ else [ScriptTransfer(ab, ck, if ((bW == "WAVES"))
288294 then unit
289- else fromBase58String(bT)), ScriptTransfer(Y, ci, if ((bU == "WAVES"))
295+ else fromBase58String(bW)), ScriptTransfer(ab, cl, if ((bX == "WAVES"))
290296 then unit
291- else fromBase58String(bU)), StringEntry(aa(toString(Y), bP), bn(ch, ci, bR, cc, height, lastBlock.timestamp)), IntegerEntry(T(), cc), IntegerEntry(U(height, lastBlock.timestamp), cc)]
292- $Tuple10(ch, ci, bT, bU, bX, bZ, bW, cb, bV, cj)
297+ else fromBase58String(bX)), StringEntry(ad(toString(ab), bS), bq(ck, cl, bU, cf, height, lastBlock.timestamp)), IntegerEntry(W(), cf), IntegerEntry(X(height, lastBlock.timestamp), cf)]
298+ $Tuple10(ck, cl, bW, bX, ca, cc, bZ, ce, bY, cm)
293299 }
294300 }
295301
296302
297-func ck (bP,cl,cm,cn,co,cp,Y,cq,cr) = {
298- let bF = aI()
299- let bS = fromBase58String(bF[q])
300- let cs = bF[r]
301- let ct = bF[s]
302- let cu = bF[v]
303- let cv = bF[w]
304- let bG = parseIntValue(bF[t])
305- let bH = parseIntValue(bF[u])
306- let bV = bF[p]
307- let bW = valueOrErrorMessage(assetInfo(bS), (("Asset " + toBase58String(bS)) + " doesn't exist")).quantity
308- let cw = toBase58String(valueOrElse(cn, fromBase58String("WAVES")))
309- let cx = toBase58String(valueOrElse(cp, fromBase58String("WAVES")))
310- if (if ((cs != cw))
303+func cn (bS,co,cp,cq,cr,cs,ab,ct,cu) = {
304+ let bI = aL()
305+ let bV = fromBase58String(bI[q])
306+ let cv = bI[r]
307+ let cw = bI[s]
308+ let cx = bI[v]
309+ let cy = bI[w]
310+ let bJ = parseIntValue(bI[t])
311+ let bK = parseIntValue(bI[u])
312+ let bY = bI[p]
313+ let bZ = valueOrErrorMessage(assetInfo(bV), (("Asset " + toBase58String(bV)) + " doesn't exist")).quantity
314+ let cz = toBase58String(valueOrElse(cq, fromBase58String("WAVES")))
315+ let cA = toBase58String(valueOrElse(cs, fromBase58String("WAVES")))
316+ if (if ((cv != cz))
311317 then true
312- else (ct != cx))
318+ else (cw != cA))
313319 then throw("Invalid amt or price asset passed.")
314320 else {
315- let bX = if (cq)
316- then br(cs)
317- else (br(cs) - cm)
318- let bZ = if (cq)
319- then br(ct)
320- else (br(ct) - co)
321- let cy = D(cm, bG)
322- let cz = D(co, bH)
323- let cA = bt(cz, cy)
324- let bY = D(bX, bG)
325- let ca = D(bZ, bH)
326- let cB = if ((bW == 0))
321+ let ca = if (ct)
322+ then bu(cv)
323+ else (bu(cv) - cp)
324+ let cc = if (ct)
325+ then bu(cw)
326+ else (bu(cw) - cr)
327+ let cB = D(cp, bJ)
328+ let cC = D(cr, bK)
329+ let cD = bw(cC, cB)
330+ let cb = D(ca, bJ)
331+ let cd = D(cc, bK)
332+ let cE = if ((bZ == 0))
327333 then {
328- let cb = e
329- let cC = e
330- let bJ = pow((cy * cz), 0, toBigInt(5), 1, 0, DOWN)
331- $Tuple5(G(bJ, b), G(cy, bG), G(cz, bH), bt((ca + cz), (bY + cy)), cC)
334+ let ce = e
335+ let cF = e
336+ let bM = pow((cB * cC), 0, toBigInt(5), 1, 0, DOWN)
337+ $Tuple5(H(bM, b), H(cB, bJ), H(cC, bK), bw((cd + cC), (cb + cB)), cF)
332338 }
333339 else {
334- let cb = bt(ca, bY)
335- let cC = fraction(O((cb - cA)), d, cb)
336- let cD = D(cl, b)
337- if (if ((cb != e))
338- then (cC > cD)
340+ let ce = bw(cd, cb)
341+ let cF = fraction(R((ce - cD)), d, ce)
342+ let cG = D(co, b)
343+ if (if ((ce != e))
344+ then (cF > cG)
339345 else false)
340- then throw(((("Price slippage " + toString(cC)) + " exceeded the passed limit of ") + toString(cD)))
346+ then throw(((("Price slippage " + toString(cF)) + " exceeded the passed limit of ") + toString(cG)))
341347 else {
342- let ce = D(bW, b)
343- let cE = fraction(cy, cb, d)
344- let cF = fraction(cz, d, cb)
345- let cG = if ((cE > cz))
346- then $Tuple2(cF, cz)
347- else $Tuple2(cy, cE)
348- let cH = cG._1
349- let cI = cG._2
350- let bJ = fraction(ce, cI, ca)
351- $Tuple5(G(bJ, b), G(cH, bG), G(cI, bH), cb, cC)
348+ let ch = D(bZ, b)
349+ let cH = fraction(cB, ce, d)
350+ let cI = fraction(cC, d, ce)
351+ let cJ = if ((cH > cC))
352+ then $Tuple2(cI, cC)
353+ else $Tuple2(cB, cH)
354+ let cK = cJ._1
355+ let cL = cJ._2
356+ let bM = fraction(ch, cL, cd)
357+ $Tuple5(H(bM, b), H(cK, bJ), H(cL, bK), ce, cF)
352358 }
353359 }
354- let cJ = cB._1
355- let cK = cB._2
356- let cL = cB._3
357- let cc = G(cB._4, b)
358- let cM = G(cB._5, b)
359- if ((0 >= cJ))
360+ let cM = cE._1
361+ let cN = cE._2
362+ let cO = cE._3
363+ let cf = H(cE._4, b)
364+ let cP = H(cE._5, b)
365+ if ((0 >= cM))
360366 then throw("Invalid calculations. LP calculated is less than zero.")
361367 else {
362- let cN = if (!(cr))
368+ let cQ = if (!(cu))
363369 then 0
364- else cJ
365- let cO = (cm - cK)
366- let cP = (co - cL)
367- let cQ = [IntegerEntry(T(), cc), IntegerEntry(U(height, lastBlock.timestamp), cc), StringEntry(X(Y, bP), bc(cK, cL, cN, cc, cl, cM, height, lastBlock.timestamp, cO, cP))]
368- $Tuple13(cJ, cN, cc, bX, bZ, bW, bS, bV, cQ, cO, cP, cn, cp)
370+ else cM
371+ let cR = (cp - cN)
372+ let cS = (cr - cO)
373+ let cT = [IntegerEntry(W(), cf), IntegerEntry(X(height, lastBlock.timestamp), cf), StringEntry(aa(ab, bS), bf(cN, cO, cQ, cf, co, cP, height, lastBlock.timestamp, cR, cS))]
374+ $Tuple13(cM, cQ, cf, ca, cc, bZ, bV, bY, cT, cR, cS, cq, cs)
369375 }
370376 }
371377 }
372378
373379
374-func cR (cS) = {
375- let bF = aI()
376- let cT = bF[r]
377- let cU = bF[s]
378- let bV = parseIntValue(bF[p])
379- let bG = parseIntValue(bF[t])
380- let bH = parseIntValue(bF[u])
381- let cV = br(cT)
382- let cW = br(cU)
383- let cb = if ((cS.orderType == Buy))
384- then bw(bG, bH, (cV + cS.amount), cW)
385- else bw(bG, bH, (cV - cS.amount), cW)
386- let cc = G(cb, b)
387- if (if (if (aG())
380+func cU (cV) = {
381+ let bI = aL()
382+ let cW = bI[r]
383+ let cX = bI[s]
384+ let bY = parseIntValue(bI[p])
385+ let bJ = parseIntValue(bI[t])
386+ let bK = parseIntValue(bI[u])
387+ let cY = bu(cW)
388+ let cZ = bu(cX)
389+ let ce = if ((cV.orderType == Buy))
390+ then bz(bJ, bK, (cY + cV.amount), cZ)
391+ else bz(bJ, bK, (cY - cV.amount), cZ)
392+ let cf = H(ce, b)
393+ if (if (if (aJ())
388394 then true
389- else (bV == m))
395+ else (bY == m))
390396 then true
391- else (bV == n))
397+ else (bY == n))
392398 then throw("Exchange operations disabled")
393399 else {
394- let cX = cS.assetPair.amountAsset
395- let cY = if ((cX == unit))
400+ let da = cV.assetPair.amountAsset
401+ let db = if ((da == unit))
396402 then "WAVES"
397- else toBase58String(value(cX))
398- let cZ = cS.assetPair.priceAsset
399- let da = if ((cZ == unit))
403+ else toBase58String(value(da))
404+ let dc = cV.assetPair.priceAsset
405+ let dd = if ((dc == unit))
400406 then "WAVES"
401- else toBase58String(value(cZ))
402- if (if ((cY != cT))
407+ else toBase58String(value(dc))
408+ if (if ((db != cW))
403409 then true
404- else (da != cU))
410+ else (dd != cX))
405411 then throw("Wrong order assets.")
406412 else {
407- let db = cS.price
408- let dc = fraction(b, bH, bG)
409- let dd = J(db, b, dc)
410- let de = if ((cS.orderType == Buy))
411- then (cc >= dd)
412- else (dd >= cc)
413+ let de = cV.price
414+ let df = fraction(b, bK, bJ)
415+ let dg = M(de, b, df)
416+ let dh = if ((cV.orderType == Buy))
417+ then (cf >= dg)
418+ else (dg >= cf)
413419 true
414420 }
415421 }
416422 }
417423
418424
419-func df (dg) = if ((size(dg.payments) != 1))
425+func di (dj) = if ((size(dj.payments) != 1))
420426 then throw("exactly 1 payment is expected")
421427 else {
422- let dh = value(dg.payments[0])
423- let bQ = value(dh.assetId)
424- let di = dh.amount
425- let cB = bO(toBase58String(dg.transactionId), toBase58String(bQ), di, dg.caller)
426- let ch = cB._1
427- let ci = cB._2
428- let bV = parseIntValue(cB._9)
429- let cj = cB._10
430- if (if (aG())
428+ let dk = value(dj.payments[0])
429+ let bT = value(dk.assetId)
430+ let dl = dk.amount
431+ let cE = bR(toBase58String(dj.transactionId), toBase58String(bT), dl, dj.caller)
432+ let ck = cE._1
433+ let cl = cE._2
434+ let bY = parseIntValue(cE._9)
435+ let cm = cE._10
436+ if (if (aJ())
431437 then true
432- else (bV == n))
433- then throw(("Get operation is blocked by admin. Status = " + toString(bV)))
434- else $Tuple5(ch, ci, di, bQ, cj)
438+ else (bY == n))
439+ then throw(("Get operation is blocked by admin. Status = " + toString(bY)))
440+ else $Tuple5(ck, cl, dl, bT, cm)
435441 }
436442
437443
438-func dj (dg,cl,cr) = if ((size(dg.payments) != 2))
444+func dm (dj,co,cu) = if ((size(dj.payments) != 2))
439445 then throw("exactly 2 payments are expected")
440446 else {
441- let dk = value(dg.payments[0])
442- let dl = value(dg.payments[1])
443- let dm = ck(toBase58String(dg.transactionId), cl, dk.amount, dk.assetId, dl.amount, dl.assetId, toString(dg.caller), false, cr)
444- let bV = parseIntValue(dm._8)
445- if (if (if (aG())
447+ let dn = value(dj.payments[0])
448+ let do = value(dj.payments[1])
449+ let dp = cn(toBase58String(dj.transactionId), co, dn.amount, dn.assetId, do.amount, do.assetId, toString(dj.caller), false, cu)
450+ let bY = parseIntValue(dp._8)
451+ if (if (if (aJ())
446452 then true
447- else (bV == l))
453+ else (bY == l))
448454 then true
449- else (bV == n))
450- then throw(("Put operation is blocked by admin. Status = " + toString(bV)))
451- else dm
455+ else (bY == n))
456+ then throw(("Put operation is blocked by admin. Status = " + toString(bY)))
457+ else dp
452458 }
453459
454460
455-func dn (do) = {
456- let dp = invoke(aB, "emit", [do], nil)
457- if ((dp == dp))
461+func dq (dr) = {
462+ let ds = invoke(aE, "emit", [dr], nil)
463+ if ((ds == ds))
458464 then {
459- let dq = {
460- let dr = dp
461- if ($isInstanceOf(dr, "Address"))
465+ let dt = {
466+ let du = ds
467+ if ($isInstanceOf(du, "Address"))
462468 then {
463- let ds = dr
464- invoke(ds, "emit", [do], nil)
469+ let dv = du
470+ invoke(dv, "emit", [dr], nil)
465471 }
466472 else unit
467473 }
468- if ((dq == dq))
469- then do
474+ if ((dt == dt))
475+ then dr
470476 else throw("Strict value is not equal to itself.")
471477 }
472478 else throw("Strict value is not equal to itself.")
473479 }
474480
475481
476-func dt (do,du) = {
477- let dv = if ((du == 0))
482+func dw (dr,dx) = {
483+ let dy = if ((dx == 0))
478484 then 0
479- else fraction(do, du, b)
480- $Tuple2((do - dv), dv)
485+ else fraction(dr, dx, b)
486+ $Tuple2((dr - dy), dy)
481487 }
482488
483489
484-func dw (dx,dy,Y,Z) = {
485- let dz = (Z == unit)
486- let dA = br(aN(aV))
487- let dB = br(aN(aW))
488- let dC = if ((dy == aV))
490+func dz (dA,dB,ab,ac) = {
491+ let dC = (ac == unit)
492+ let dD = bu(aQ(aY))
493+ let dE = bu(aQ(aZ))
494+ let dF = if ((dB == aY))
489495 then true
490- else if ((dy == aW))
496+ else if ((dB == aZ))
491497 then false
492- else az("invalid asset")
493- let dD = if (dz)
494- then $Tuple2(dA, dB)
495- else if (dC)
496- then $Tuple2((dA - dx), dB)
497- else $Tuple2(dA, (dB - dx))
498- let dE = dD._1
499- let dF = dD._2
498+ else aC("invalid asset")
500499 let dG = if (dC)
501- then $Tuple2(dx, 0)
502- else $Tuple2(0, dx)
500+ then $Tuple2(dD, dE)
501+ else if (dF)
502+ then $Tuple2((dD - dA), dE)
503+ else $Tuple2(dD, (dE - dA))
503504 let dH = dG._1
504505 let dI = dG._2
505- let dJ = dt(dH, aD)._1
506- let dK = dt(dI, aD)._1
507- let dL = dt(dx, aD)
508- let dM = dL._1
509- let dv = dL._2
510- let dN = (dE + dJ)
511- let dO = (dF + dK)
512- let dP = bt(D(dO, aY), D(dN, aX))
513- let dQ = G(dP, b)
514- let dR = if (dC)
515- then dE
516- else dF
517- let dS = toBigInt(dR)
518- let dT = toBigInt(valueOrErrorMessage(assetInfo(aU), (("asset " + toBase58String(aU)) + " doesn't exist")).quantity)
519- let dU = if ((dT > f))
506+ let dJ = if (dF)
507+ then $Tuple2(dA, 0)
508+ else $Tuple2(0, dA)
509+ let dK = dJ._1
510+ let dL = dJ._2
511+ let dM = dw(dK, aG)._1
512+ let dN = dw(dL, aG)._1
513+ let dO = dw(dA, aG)
514+ let dP = dO._1
515+ let dy = dO._2
516+ let dQ = (dH + dM)
517+ let dR = (dI + dN)
518+ let dS = bw(D(dR, bb), D(dQ, ba))
519+ let dT = H(dS, b)
520+ let dU = if (dF)
521+ then dH
522+ else dI
523+ let dV = toBigInt(dU)
524+ let dW = toBigInt(valueOrErrorMessage(assetInfo(aX), (("asset " + toBase58String(aX)) + " doesn't exist")).quantity)
525+ let dX = if ((dW > f))
520526 then true
521- else az("initial deposit requires all coins")
522- if ((dU == dU))
527+ else aC("initial deposit requires all coins")
528+ if ((dX == dX))
523529 then {
524- let dV = toBigInt(dM)
525- let dW = max([0, toInt(((dT * (sqrtBigInt((d + ((dV * d) / dS)), 18, 18, DOWN) - d)) / d))])
526- let cQ = if (dz)
530+ let dY = toBigInt(dP)
531+ let dZ = max([0, toInt(((dW * (sqrtBigInt((d + ((dY * d) / dV)), 18, 18, DOWN) - d)) / d))])
532+ let cT = if (dC)
527533 then nil
528- else [IntegerEntry(T(), dQ), IntegerEntry(U(height, lastBlock.timestamp), dQ), StringEntry(X(toString(value(Y)), toBase58String(value(Z))), bc(dH, dI, dW, dQ, 0, 0, height, lastBlock.timestamp, 0, 0))]
529- let dX = bt(D(dF, aY), D(dE, aX))
530- let dY = G(dX, b)
531- let dZ = {
532- let ea = if (dC)
533- then $Tuple2(dH, dE)
534- else $Tuple2(dI, dF)
535- let do = ea._1
536- let eb = ea._2
537- let ec = toInt(fraction(dT, toBigInt((do / 2)), toBigInt(eb)))
538- fraction((dW - ec), b, ec)
534+ else [IntegerEntry(W(), dT), IntegerEntry(X(height, lastBlock.timestamp), dT), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bf(dK, dL, dZ, dT, 0, 0, height, lastBlock.timestamp, 0, 0))]
535+ let ea = bw(D(dI, bb), D(dH, ba))
536+ let eb = H(ea, b)
537+ let ec = {
538+ let ed = if (dF)
539+ then $Tuple2(dK, dH)
540+ else $Tuple2(dL, dI)
541+ let dr = ed._1
542+ let ee = ed._2
543+ let ef = toInt(fraction(dW, toBigInt((dr / 2)), toBigInt(ee)))
544+ fraction((dZ - ef), b, ef)
539545 }
540- $Tuple4(dW, cQ, dv, dZ)
546+ $Tuple4(dZ, cT, dy, ec)
541547 }
542548 else throw("Strict value is not equal to itself.")
543549 }
544550
545551
546-func ed (ee,dM,dy,Y,Z) = {
547- let dz = (Z == unit)
548- let ef = [if ((dy == aU))
552+func eg (eh,dP,dB,ab,ac) = {
553+ let dC = (ac == unit)
554+ let ei = [if ((dB == aX))
549555 then true
550- else az("invalid lp asset")]
551- if ((ef == ef))
556+ else aC("invalid lp asset")]
557+ if ((ei == ei))
552558 then {
553- let eg = if ((ee == aV))
559+ let ej = if ((eh == aY))
554560 then true
555- else if ((ee == aW))
561+ else if ((eh == aZ))
556562 then false
557- else az("invalid asset")
558- let eh = if (eg)
559- then toBigInt(br(aN(aV)))
560- else toBigInt(br(aN(aW)))
561- let ei = br(aN(aV))
562- let ej = br(aN(aW))
563- let ek = if (eg)
564- then ei
565- else ej
566- let el = toBigInt(ek)
567- let dT = toBigInt(valueOrErrorMessage(assetInfo(aU), (("asset " + toBase58String(aU)) + " doesn't exist")).quantity)
568- let em = toBigInt(dM)
569- let en = max([0, toInt(((eh * (d - pow((d - ((em * d) / dT)), 18, h, 0, 18, DOWN))) / d))])
570- let eo = dt(en, aF)
571- let ep = eo._1
572- let dv = eo._2
573- let eq = if (eg)
574- then $Tuple4(ep, 0, (ei - en), ej)
575- else $Tuple4(0, ep, ei, (ej - en))
576- let er = eq._1
577- let es = eq._2
578- let et = eq._3
579- let eu = eq._4
580- let dP = bt(D(eu, aY), D(et, aX))
581- let dQ = G(dP, b)
582- let cQ = if (dz)
563+ else aC("invalid asset")
564+ let ek = if (ej)
565+ then toBigInt(bu(aQ(aY)))
566+ else toBigInt(bu(aQ(aZ)))
567+ let el = bu(aQ(aY))
568+ let em = bu(aQ(aZ))
569+ let en = if (ej)
570+ then el
571+ else em
572+ let eo = toBigInt(en)
573+ let dW = toBigInt(valueOrErrorMessage(assetInfo(aX), (("asset " + toBase58String(aX)) + " doesn't exist")).quantity)
574+ let ep = toBigInt(dP)
575+ let eq = max([0, toInt(((ek * (d - pow((d - ((ep * d) / dW)), 18, h, 0, 18, DOWN))) / d))])
576+ let er = dw(eq, aI)
577+ let es = er._1
578+ let dy = er._2
579+ let et = if (ej)
580+ then $Tuple4(es, 0, (el - eq), em)
581+ else $Tuple4(0, es, el, (em - eq))
582+ let eu = et._1
583+ let ev = et._2
584+ let ew = et._3
585+ let ex = et._4
586+ let dS = bw(D(ex, bb), D(ew, ba))
587+ let dT = H(dS, b)
588+ let cT = if (dC)
583589 then nil
584- else [StringEntry(aa(toString(value(Y)), toBase58String(value(Z))), bn(er, es, dM, dQ, height, lastBlock.timestamp)), IntegerEntry(T(), dQ), IntegerEntry(U(height, lastBlock.timestamp), dQ)]
585- let dX = bt(D(ej, aY), D(ei, aX))
586- let dY = G(dX, b)
587- let dZ = {
588- let ev = (toInt(fraction(eh, em, dT)) * 2)
589- fraction((ep - ev), b, ev)
590+ else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bq(eu, ev, dP, dT, height, lastBlock.timestamp)), IntegerEntry(W(), dT), IntegerEntry(X(height, lastBlock.timestamp), dT)]
591+ let ea = bw(D(em, bb), D(el, ba))
592+ let eb = H(ea, b)
593+ let ec = {
594+ let ey = (toInt(fraction(ek, ep, dW)) * 2)
595+ fraction((es - ey), b, ey)
590596 }
591- $Tuple4(ep, cQ, dv, dZ)
597+ $Tuple4(es, cT, dy, ec)
592598 }
593599 else throw("Strict value is not equal to itself.")
594600 }
595601
596602
597-func ew () = {
598- let dr = getString(R())
599- if ($isInstanceOf(dr, "String"))
603+func ez () = {
604+ let du = getString(U())
605+ if ($isInstanceOf(du, "String"))
600606 then {
601- let ex = dr
602- fromBase58String(ex)
607+ let eA = du
608+ fromBase58String(eA)
603609 }
604- else if ($isInstanceOf(dr, "Unit"))
610+ else if ($isInstanceOf(du, "Unit"))
605611 then unit
606612 else throw("Match error")
607613 }
608614
609615
610-func ey () = {
611- let dr = getString(S())
612- if ($isInstanceOf(dr, "String"))
616+func eB () = {
617+ let du = getString(V())
618+ if ($isInstanceOf(du, "String"))
613619 then {
614- let ex = dr
615- fromBase58String(ex)
620+ let eA = du
621+ fromBase58String(eA)
616622 }
617- else if ($isInstanceOf(dr, "Unit"))
623+ else if ($isInstanceOf(du, "Unit"))
618624 then unit
619625 else throw("Match error")
620626 }
621627
622628
623-func ez (dg) = {
624- let dr = ew()
625- if ($isInstanceOf(dr, "ByteVector"))
629+func eC (dj) = {
630+ let du = ez()
631+ if ($isInstanceOf(du, "ByteVector"))
626632 then {
627- let eA = dr
628- (dg.callerPublicKey == eA)
633+ let eD = du
634+ (dj.callerPublicKey == eD)
629635 }
630- else if ($isInstanceOf(dr, "Unit"))
631- then (dg.caller == this)
636+ else if ($isInstanceOf(du, "Unit"))
637+ then (dj.caller == this)
632638 else throw("Match error")
633639 }
634640
635641
636-func eB (dg) = {
637- let eC = throw("Permission denied")
638- let dr = ew()
639- if ($isInstanceOf(dr, "ByteVector"))
642+func eE (dj) = {
643+ let eF = throw("Permission denied")
644+ let du = ez()
645+ if ($isInstanceOf(du, "ByteVector"))
640646 then {
641- let eA = dr
642- if ((dg.callerPublicKey == eA))
647+ let eD = du
648+ if ((dj.callerPublicKey == eD))
643649 then true
644- else eC
650+ else eF
645651 }
646- else if ($isInstanceOf(dr, "Unit"))
647- then if ((dg.caller == this))
652+ else if ($isInstanceOf(du, "Unit"))
653+ then if ((dj.caller == this))
648654 then true
649- else eC
655+ else eF
650656 else throw("Match error")
651657 }
652658
653659
654-@Callable(dg)
655-func calculateAmountOutForSwapREADONLY (eD,eE) = {
656- let eF = if ((eE == false))
660+@Callable(dj)
661+func calculateAmountOutForSwapREADONLY (eG,eH) = {
662+ let eI = if ((eH == false))
657663 then {
658- let eG = av(this, ac())
659- let eH = av(this, ab())
660- $Tuple2(eG, eH)
664+ let eJ = ay(this, af())
665+ let eK = ay(this, ae())
666+ $Tuple2(eJ, eK)
661667 }
662668 else {
663- let eG = av(this, ab())
664- let eH = av(this, ac())
665- $Tuple2(eG, eH)
669+ let eJ = ay(this, ae())
670+ let eK = ay(this, af())
671+ $Tuple2(eJ, eK)
666672 }
667- let eG = eF._1
668- let eH = eF._2
669- let eI = br(eH)
670- let eJ = br(eG)
671- let eK = ((eJ * eD) / (eI + eD))
672- $Tuple2(nil, eK)
673+ let eJ = eI._1
674+ let eK = eI._2
675+ let eL = bu(eK)
676+ let eM = bu(eJ)
677+ let eN = ((eM * eG) / (eL + eG))
678+ let eO = (eL * eM)
679+ let eP = ((bu(eK) + eG) * (bu(eJ) - eN))
680+ let eQ = if ((eP >= eO))
681+ then true
682+ else throw("new K is fewer error")
683+ if ((eQ == eQ))
684+ then $Tuple2(nil, eN)
685+ else throw("Strict value is not equal to itself.")
673686 }
674687
675688
676689
677-@Callable(dg)
678-func calculateAmountOutForSwapAndSendTokens (eD,eE,eL,eM) = {
679- let ef = [if ((value(dg.payments[0]).amount >= eD))
690+@Callable(dj)
691+func calculateAmountOutForSwapAndSendTokens (eG,eH,eR,eS) = {
692+ let ei = [if ((value(dj.payments[0]).amount >= eG))
680693 then true
681- else az("Wrong amount"), if ((dg.caller == addressFromStringValue(av(this, P()))))
694+ else aC("Wrong amount"), if ((dj.caller == addressFromStringValue(ay(this, S()))))
682695 then true
683- else az("Permission denied")]
684- if ((ef == ef))
696+ else aC("Permission denied")]
697+ if ((ei == ei))
685698 then {
686- let dh = value(dg.payments[0])
687- let eH = if ((dh.assetId == unit))
699+ let dk = value(dj.payments[0])
700+ let eK = if ((dk.assetId == unit))
688701 then toBase58String(toBytes("WAVES"))
689- else toBase58String(value(dh.assetId))
690- let eG = if ((eE == false))
691- then av(this, ac())
692- else av(this, ab())
693- let eI = (br(eH) - value(dg.payments[0]).amount)
694- let eJ = br(eG)
695- let eK = ((eJ * eD) / (eI + eD))
696- let eN = if ((eK >= eL))
702+ else toBase58String(value(dk.assetId))
703+ let eJ = if ((eH == false))
704+ then ay(this, af())
705+ else ay(this, ae())
706+ let eL = (bu(eK) - value(dj.payments[0]).amount)
707+ let eM = bu(eJ)
708+ let eN = ((eM * eG) / (eL + eG))
709+ let eO = (eL * eM)
710+ let eP = (bu(eK) * (bu(eJ) - eN))
711+ let eQ = if ((eP >= eO))
697712 then true
698- else throw("Exchange result is fewer coins than expected")
699- if ((eN == eN))
700- then [ScriptTransfer(addressFromStringValue(eM), eK, if ((eH == "WAVES"))
701- then unit
702- else fromBase58String(eG))]
713+ else throw("new K is fewer error")
714+ if ((eQ == eQ))
715+ then {
716+ let eT = if ((eN >= eR))
717+ then true
718+ else throw("Exchange result is fewer coins than expected")
719+ if ((eT == eT))
720+ then [ScriptTransfer(addressFromStringValue(eS), eN, if ((eK == "WAVES"))
721+ then unit
722+ else fromBase58String(eJ))]
723+ else throw("Strict value is not equal to itself.")
724+ }
703725 else throw("Strict value is not equal to itself.")
704726 }
705727 else throw("Strict value is not equal to itself.")
707729
708730
709731
710-@Callable(dg)
711-func setManager (eO) = {
712- let eP = eB(dg)
713- if ((eP == eP))
732+@Callable(dj)
733+func setManager (eU) = {
734+ let eV = eE(dj)
735+ if ((eV == eV))
714736 then {
715- let eQ = fromBase58String(eO)
716- if ((eQ == eQ))
717- then [StringEntry(S(), eO)]
737+ let eW = fromBase58String(eU)
738+ if ((eW == eW))
739+ then [StringEntry(V(), eU)]
718740 else throw("Strict value is not equal to itself.")
719741 }
720742 else throw("Strict value is not equal to itself.")
722744
723745
724746
725-@Callable(dg)
747+@Callable(dj)
726748 func confirmManager () = {
727- let eR = ey()
728- let eS = if (isDefined(eR))
749+ let eX = eB()
750+ let eY = if (isDefined(eX))
729751 then true
730752 else throw("No pending manager")
731- if ((eS == eS))
753+ if ((eY == eY))
732754 then {
733- let eT = if ((dg.callerPublicKey == value(eR)))
755+ let eZ = if ((dj.callerPublicKey == value(eX)))
734756 then true
735757 else throw("You are not pending manager")
736- if ((eT == eT))
737- then [StringEntry(R(), toBase58String(value(eR))), DeleteEntry(S())]
758+ if ((eZ == eZ))
759+ then [StringEntry(U(), toBase58String(value(eX))), DeleteEntry(V())]
738760 else throw("Strict value is not equal to itself.")
739761 }
740762 else throw("Strict value is not equal to itself.")
742764
743765
744766
745-@Callable(dg)
746-func put (cl,eU) = if ((0 > cl))
767+@Callable(dj)
768+func put (co,fa) = if ((0 > co))
747769 then throw("Invalid slippageTolerance passed")
748770 else {
749- let dm = dj(dg, cl, true)
750- let cN = dm._2
751- let bS = dm._7
752- let cj = dm._9
753- let cO = dm._10
754- let cP = dm._11
755- let eV = dm._12
756- let eW = dm._13
757- let dp = invoke(aB, "emit", [cN], nil)
758- if ((dp == dp))
771+ let dp = dm(dj, co, true)
772+ let cQ = dp._2
773+ let bV = dp._7
774+ let cm = dp._9
775+ let cR = dp._10
776+ let cS = dp._11
777+ let fb = dp._12
778+ let fc = dp._13
779+ let ds = invoke(aE, "emit", [cQ], nil)
780+ if ((ds == ds))
759781 then {
760- let dq = {
761- let dr = dp
762- if ($isInstanceOf(dr, "Address"))
782+ let dt = {
783+ let du = ds
784+ if ($isInstanceOf(du, "Address"))
763785 then {
764- let ds = dr
765- invoke(ds, "emit", [cN], nil)
786+ let dv = du
787+ invoke(dv, "emit", [cQ], nil)
766788 }
767789 else unit
768790 }
769- if ((dq == dq))
791+ if ((dt == dt))
770792 then {
771- let eX = if ((cO > 0))
772- then invoke(bb, "put", nil, [AttachedPayment(eV, cO)])
793+ let fd = if ((cR > 0))
794+ then invoke(be, "put", nil, [AttachedPayment(fb, cR)])
773795 else nil
774- if ((eX == eX))
796+ if ((fd == fd))
775797 then {
776- let eY = if ((cP > 0))
777- then invoke(bb, "put", nil, [AttachedPayment(eW, cP)])
798+ let fe = if ((cS > 0))
799+ then invoke(be, "put", nil, [AttachedPayment(fc, cS)])
778800 else nil
779- if ((eY == eY))
801+ if ((fe == fe))
780802 then {
781- let eZ = if (eU)
803+ let ff = if (fa)
782804 then {
783- let fa = invoke(ba, "stake", nil, [AttachedPayment(bS, cN)])
784- if ((fa == fa))
805+ let fg = invoke(bd, "stake", nil, [AttachedPayment(bV, cQ)])
806+ if ((fg == fg))
785807 then nil
786808 else throw("Strict value is not equal to itself.")
787809 }
788- else [ScriptTransfer(dg.caller, cN, bS)]
789- (cj ++ eZ)
810+ else [ScriptTransfer(dj.caller, cQ, bV)]
811+ (cm ++ ff)
790812 }
791813 else throw("Strict value is not equal to itself.")
792814 }
799821
800822
801823
802-@Callable(dg)
803-func putForFree (fb) = if ((0 > fb))
824+@Callable(dj)
825+func putForFree (fh) = if ((0 > fh))
804826 then throw("Invalid value passed")
805827 else {
806- let dm = dj(dg, fb, false)
807- dm._9
828+ let dp = dm(dj, fh, false)
829+ dp._9
808830 }
809831
810832
811833
812-@Callable(dg)
813-func putOneTkn (fc,fd) = {
814- let fe = {
815- let aE = invoke(aB, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
816- if ($isInstanceOf(aE, "Boolean"))
817- then aE
818- else throw(($getType(aE) + " couldn't be cast to Boolean"))
834+@Callable(dj)
835+func putOneTkn (fi,fj) = {
836+ let fk = {
837+ let aH = invoke(aE, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
838+ if ($isInstanceOf(aH, "Boolean"))
839+ then aH
840+ else throw(($getType(aH) + " couldn't be cast to Boolean"))
819841 }
820- let ff = if (if (if (aG())
842+ let fl = if (if (if (aJ())
821843 then true
822- else (aT == l))
844+ else (aW == l))
823845 then true
824- else (aT == n))
846+ else (aW == n))
825847 then true
826- else fe
827- let ef = [if (if (!(ff))
848+ else fk
849+ let ei = [if (if (!(fl))
828850 then true
829- else ez(dg))
851+ else eC(dj))
830852 then true
831- else az("put operation is blocked by admin"), if ((size(dg.payments) == 1))
853+ else aC("put operation is blocked by admin"), if ((size(dj.payments) == 1))
832854 then true
833- else az("exactly 1 payment are expected")]
834- if ((ef == ef))
855+ else aC("exactly 1 payment are expected")]
856+ if ((ei == ei))
835857 then {
836- let fg = dg.payments[0]
837- let dy = fg.assetId
838- let dx = fg.amount
839- let Y = dg.caller
840- let Z = dg.transactionId
841- let fh = dw(dx, dy, Y, Z)
842- if ((fh == fh))
858+ let fm = dj.payments[0]
859+ let dB = fm.assetId
860+ let dA = fm.amount
861+ let ab = dj.caller
862+ let ac = dj.transactionId
863+ let fn = dz(dA, dB, ab, ac)
864+ if ((fn == fn))
843865 then {
844- let fi = fh._4
845- let dv = fh._3
846- let cQ = fh._2
847- let fj = fh._1
848- let fk = if (if ((fc > 0))
849- then (fc > fj)
866+ let fo = fn._4
867+ let dy = fn._3
868+ let cT = fn._2
869+ let fp = fn._1
870+ let fq = if (if ((fi > 0))
871+ then (fi > fp)
850872 else false)
851- then az(makeString(["amount to receive is less than ", toString(fc)], ""))
852- else fj
853- let dp = dn(fk)
854- if ((dp == dp))
873+ then aC(makeString(["amount to receive is less than ", toString(fi)], ""))
874+ else fp
875+ let ds = dq(fq)
876+ if ((ds == ds))
855877 then {
856- let eZ = if (fd)
878+ let ff = if (fj)
857879 then {
858- let fl = invoke(ba, "stake", nil, [AttachedPayment(aU, fk)])
859- if ((fl == fl))
880+ let fr = invoke(bd, "stake", nil, [AttachedPayment(aX, fq)])
881+ if ((fr == fr))
860882 then nil
861883 else throw("Strict value is not equal to itself.")
862884 }
863- else [ScriptTransfer(dg.caller, fk, aU)]
864- let fm = if ((dv > 0))
865- then [ScriptTransfer(aC, dv, dy)]
885+ else [ScriptTransfer(dj.caller, fq, aX)]
886+ let fs = if ((dy > 0))
887+ then [ScriptTransfer(aF, dy, dB)]
866888 else nil
867- $Tuple2(((cQ ++ eZ) ++ fm), fk)
889+ $Tuple2(((cT ++ ff) ++ fs), fq)
868890 }
869891 else throw("Strict value is not equal to itself.")
870892 }
875897
876898
877899
878-@Callable(dg)
879-func putOneTknREADONLY (dy,dx) = {
880- let fn = dw(dx, aL(dy), unit, unit)
881- let fj = fn._1
882- let cQ = fn._2
883- let dv = fn._3
884- let fi = fn._4
885- $Tuple2(nil, $Tuple3(fj, dv, fi))
900+@Callable(dj)
901+func putOneTknREADONLY (dB,dA) = {
902+ let ft = dz(dA, aO(dB), unit, unit)
903+ let fp = ft._1
904+ let cT = ft._2
905+ let dy = ft._3
906+ let fo = ft._4
907+ $Tuple2(nil, $Tuple3(fp, dy, fo))
886908 }
887909
888910
889911
890-@Callable(dg)
891-func getOneTkn (fo,fc) = {
892- let fe = {
893- let aE = invoke(aB, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
894- if ($isInstanceOf(aE, "Boolean"))
895- then aE
896- else throw(($getType(aE) + " couldn't be cast to Boolean"))
912+@Callable(dj)
913+func getOneTkn (fu,fi) = {
914+ let fk = {
915+ let aH = invoke(aE, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
916+ if ($isInstanceOf(aH, "Boolean"))
917+ then aH
918+ else throw(($getType(aH) + " couldn't be cast to Boolean"))
897919 }
898- let fp = if (if (aG())
920+ let fv = if (if (aJ())
899921 then true
900- else (aT == n))
922+ else (aW == n))
901923 then true
902- else fe
903- let ef = [if (if (!(fp))
924+ else fk
925+ let ei = [if (if (!(fv))
904926 then true
905- else ez(dg))
927+ else eC(dj))
906928 then true
907- else az("get operation is blocked by admin"), if ((size(dg.payments) == 1))
929+ else aC("get operation is blocked by admin"), if ((size(dj.payments) == 1))
908930 then true
909- else az("exactly 1 payment are expected")]
910- if ((ef == ef))
931+ else aC("exactly 1 payment are expected")]
932+ if ((ei == ei))
911933 then {
912- let ee = aL(fo)
913- let fg = dg.payments[0]
914- let dy = fg.assetId
915- let dM = fg.amount
916- let Y = dg.caller
917- let Z = dg.transactionId
918- let fq = ed(ee, dM, dy, Y, Z)
919- if ((fq == fq))
934+ let eh = aO(fu)
935+ let fm = dj.payments[0]
936+ let dB = fm.assetId
937+ let dP = fm.amount
938+ let ab = dj.caller
939+ let ac = dj.transactionId
940+ let fw = eg(eh, dP, dB, ab, ac)
941+ if ((fw == fw))
920942 then {
921- let fi = fq._4
922- let dv = fq._3
923- let cQ = fq._2
924- let fr = fq._1
925- let do = if (if ((fc > 0))
926- then (fc > fr)
943+ let fo = fw._4
944+ let dy = fw._3
945+ let cT = fw._2
946+ let fx = fw._1
947+ let dr = if (if ((fi > 0))
948+ then (fi > fx)
927949 else false)
928- then az(makeString(["amount to receive is less than ", toString(fc)], ""))
929- else fr
930- let fs = invoke(aB, "burn", [dM], [AttachedPayment(dy, dM)])
931- if ((fs == fs))
950+ then aC(makeString(["amount to receive is less than ", toString(fi)], ""))
951+ else fx
952+ let fy = invoke(aE, "burn", [dP], [AttachedPayment(dB, dP)])
953+ if ((fy == fy))
932954 then {
933- let ft = [ScriptTransfer(Y, do, ee)]
934- let fm = if ((dv > 0))
935- then [ScriptTransfer(aC, dv, ee)]
955+ let fz = [ScriptTransfer(ab, dr, eh)]
956+ let fs = if ((dy > 0))
957+ then [ScriptTransfer(aF, dy, eh)]
936958 else nil
937- $Tuple2(((cQ ++ ft) ++ fm), do)
959+ $Tuple2(((cT ++ fz) ++ fs), dr)
938960 }
939961 else throw("Strict value is not equal to itself.")
940962 }
945967
946968
947969
948-@Callable(dg)
949-func getOneTknREADONLY (ee,dM) = {
950- let fu = ed(aL(ee), dM, aU, unit, unit)
951- let fr = fu._1
952- let cQ = fu._2
953- let dv = fu._3
954- let fi = fu._4
955- $Tuple2(nil, $Tuple3(fr, dv, fi))
970+@Callable(dj)
971+func getOneTknREADONLY (eh,dP) = {
972+ let fA = eg(aO(eh), dP, aX, unit, unit)
973+ let fx = fA._1
974+ let cT = fA._2
975+ let dy = fA._3
976+ let fo = fA._4
977+ $Tuple2(nil, $Tuple3(fx, dy, fo))
956978 }
957979
958980
959981
960-@Callable(dg)
961-func unstakeAndGetOneTkn (fv,fo,fc) = {
962- let fe = {
963- let aE = invoke(aB, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
964- if ($isInstanceOf(aE, "Boolean"))
965- then aE
966- else throw(($getType(aE) + " couldn't be cast to Boolean"))
982+@Callable(dj)
983+func unstakeAndGetOneTkn (fB,fu,fi) = {
984+ let fk = {
985+ let aH = invoke(aE, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
986+ if ($isInstanceOf(aH, "Boolean"))
987+ then aH
988+ else throw(($getType(aH) + " couldn't be cast to Boolean"))
967989 }
968- let fp = if (if (aG())
990+ let fv = if (if (aJ())
969991 then true
970- else (aT == n))
992+ else (aW == n))
971993 then true
972- else fe
973- let ef = [if (if (!(fp))
994+ else fk
995+ let ei = [if (if (!(fv))
974996 then true
975- else ez(dg))
997+ else eC(dj))
976998 then true
977- else az("get operation is blocked by admin"), if ((size(dg.payments) == 0))
999+ else aC("get operation is blocked by admin"), if ((size(dj.payments) == 0))
9781000 then true
979- else az("no payments are expected")]
980- if ((ef == ef))
1001+ else aC("no payments are expected")]
1002+ if ((ei == ei))
9811003 then {
982- let ee = aL(fo)
983- let Y = dg.caller
984- let Z = dg.transactionId
985- let fw = invoke(ba, "unstake", [toBase58String(aU), fv], nil)
986- if ((fw == fw))
1004+ let eh = aO(fu)
1005+ let ab = dj.caller
1006+ let ac = dj.transactionId
1007+ let fC = invoke(bd, "unstake", [toBase58String(aX), fB], nil)
1008+ if ((fC == fC))
9871009 then {
988- let fx = ed(ee, fv, aU, Y, Z)
989- if ((fx == fx))
1010+ let fD = eg(eh, fB, aX, ab, ac)
1011+ if ((fD == fD))
9901012 then {
991- let fi = fx._4
992- let dv = fx._3
993- let cQ = fx._2
994- let fr = fx._1
995- let do = if (if ((fc > 0))
996- then (fc > fr)
1013+ let fo = fD._4
1014+ let dy = fD._3
1015+ let cT = fD._2
1016+ let fx = fD._1
1017+ let dr = if (if ((fi > 0))
1018+ then (fi > fx)
9971019 else false)
998- then az(makeString(["amount to receive is less than ", toString(fc)], ""))
999- else fr
1000- let fs = invoke(aB, "burn", [fv], [AttachedPayment(aU, fv)])
1001- if ((fs == fs))
1020+ then aC(makeString(["amount to receive is less than ", toString(fi)], ""))
1021+ else fx
1022+ let fy = invoke(aE, "burn", [fB], [AttachedPayment(aX, fB)])
1023+ if ((fy == fy))
10021024 then {
1003- let ft = [ScriptTransfer(dg.caller, do, ee)]
1004- let fm = if ((dv > 0))
1005- then [ScriptTransfer(aC, dv, ee)]
1025+ let fz = [ScriptTransfer(dj.caller, dr, eh)]
1026+ let fs = if ((dy > 0))
1027+ then [ScriptTransfer(aF, dy, eh)]
10061028 else nil
1007- $Tuple2(((cQ ++ ft) ++ fm), do)
1029+ $Tuple2(((cT ++ fz) ++ fs), dr)
10081030 }
10091031 else throw("Strict value is not equal to itself.")
10101032 }
10171039
10181040
10191041
1020-@Callable(dg)
1042+@Callable(dj)
10211043 func get () = {
1022- let cB = df(dg)
1023- let fy = cB._1
1024- let ci = cB._2
1025- let di = cB._3
1026- let bQ = cB._4
1027- let cj = cB._5
1028- let fz = invoke(aB, "burn", [di], [AttachedPayment(bQ, di)])
1029- if ((fz == fz))
1030- then cj
1044+ let cE = di(dj)
1045+ let fE = cE._1
1046+ let cl = cE._2
1047+ let dl = cE._3
1048+ let bT = cE._4
1049+ let cm = cE._5
1050+ let fF = invoke(aE, "burn", [dl], [AttachedPayment(bT, dl)])
1051+ if ((fF == fF))
1052+ then cm
10311053 else throw("Strict value is not equal to itself.")
10321054 }
10331055
10341056
10351057
1036-@Callable(dg)
1037-func getNoLess (fA,fB) = {
1038- let cB = df(dg)
1039- let ch = cB._1
1040- let ci = cB._2
1041- let di = cB._3
1042- let bQ = cB._4
1043- let cj = cB._5
1044- if ((fA > ch))
1045- then throw(((("noLessThenAmtAsset failed: " + toString(ch)) + " < ") + toString(fA)))
1046- else if ((fB > ci))
1047- then throw(((("noLessThenPriceAsset failed: " + toString(ci)) + " < ") + toString(fB)))
1058+@Callable(dj)
1059+func getNoLess (fG,fH) = {
1060+ let cE = di(dj)
1061+ let ck = cE._1
1062+ let cl = cE._2
1063+ let dl = cE._3
1064+ let bT = cE._4
1065+ let cm = cE._5
1066+ if ((fG > ck))
1067+ then throw(((("noLessThenAmtAsset failed: " + toString(ck)) + " < ") + toString(fG)))
1068+ else if ((fH > cl))
1069+ then throw(((("noLessThenPriceAsset failed: " + toString(cl)) + " < ") + toString(fH)))
10481070 else {
1049- let fz = invoke(aB, "burn", [di], [AttachedPayment(bQ, di)])
1050- if ((fz == fz))
1051- then cj
1071+ let fF = invoke(aE, "burn", [dl], [AttachedPayment(bT, dl)])
1072+ if ((fF == fF))
1073+ then cm
10521074 else throw("Strict value is not equal to itself.")
10531075 }
10541076 }
10551077
10561078
10571079
1058-@Callable(dg)
1059-func unstakeAndGet (do) = {
1060- let fC = if ((size(dg.payments) != 0))
1080+@Callable(dj)
1081+func unstakeAndGet (dr) = {
1082+ let fI = if ((size(dj.payments) != 0))
10611083 then throw("No payments are expected")
10621084 else true
1063- if ((fC == fC))
1085+ if ((fI == fI))
10641086 then {
1065- let bF = aI()
1066- let bS = fromBase58String(bF[q])
1067- let fw = invoke(ba, "unstake", [toBase58String(bS), do], nil)
1068- if ((fw == fw))
1087+ let bI = aL()
1088+ let bV = fromBase58String(bI[q])
1089+ let fC = invoke(bd, "unstake", [toBase58String(bV), dr], nil)
1090+ if ((fC == fC))
10691091 then {
1070- let cB = bO(toBase58String(dg.transactionId), toBase58String(bS), do, dg.caller)
1071- let bV = parseIntValue(cB._9)
1072- let cj = cB._10
1073- let fD = if (if (aG())
1092+ let cE = bR(toBase58String(dj.transactionId), toBase58String(bV), dr, dj.caller)
1093+ let bY = parseIntValue(cE._9)
1094+ let cm = cE._10
1095+ let fJ = if (if (aJ())
10741096 then true
1075- else (bV == n))
1076- then throw(("Get operation is blocked by admin. Status = " + toString(bV)))
1097+ else (bY == n))
1098+ then throw(("Get operation is blocked by admin. Status = " + toString(bY)))
10771099 else true
1078- if ((fD == fD))
1100+ if ((fJ == fJ))
10791101 then {
1080- let fz = invoke(aB, "burn", [do], [AttachedPayment(bS, do)])
1081- if ((fz == fz))
1082- then cj
1102+ let fF = invoke(aE, "burn", [dr], [AttachedPayment(bV, dr)])
1103+ if ((fF == fF))
1104+ then cm
10831105 else throw("Strict value is not equal to itself.")
10841106 }
10851107 else throw("Strict value is not equal to itself.")
10911113
10921114
10931115
1094-@Callable(dg)
1095-func unstakeAndGetNoLess (fv,fE,fB) = {
1096- let fp = if (aG())
1116+@Callable(dj)
1117+func unstakeAndGetNoLess (fB,fK,fH) = {
1118+ let fv = if (aJ())
10971119 then true
1098- else (aT == n)
1099- let ef = [if (!(fp))
1120+ else (aW == n)
1121+ let ei = [if (!(fv))
11001122 then true
1101- else throw("get operation is blocked by admin"), if ((size(dg.payments) == 0))
1123+ else throw("get operation is blocked by admin"), if ((size(dj.payments) == 0))
11021124 then true
11031125 else throw("no payments are expected")]
1104- if ((ef == ef))
1126+ if ((ei == ei))
11051127 then {
1106- let fw = invoke(ba, "unstake", [toBase58String(aU), fv], nil)
1107- if ((fw == fw))
1128+ let fC = invoke(bd, "unstake", [toBase58String(aX), fB], nil)
1129+ if ((fC == fC))
11081130 then {
1109- let cB = bO(toBase58String(dg.transactionId), toBase58String(aU), fv, dg.caller)
1110- let ch = cB._1
1111- let ci = cB._2
1112- let cj = cB._10
1113- let fF = [if ((ch >= fE))
1131+ let cE = bR(toBase58String(dj.transactionId), toBase58String(aX), fB, dj.caller)
1132+ let ck = cE._1
1133+ let cl = cE._2
1134+ let cm = cE._10
1135+ let fL = [if ((ck >= fK))
11141136 then true
1115- else throw(makeString(["amount asset amount to receive is less than ", toString(fE)], "")), if ((ci >= fB))
1137+ else throw(makeString(["amount asset amount to receive is less than ", toString(fK)], "")), if ((cl >= fH))
11161138 then true
1117- else throw(makeString(["price asset amount to receive is less than ", toString(fB)], ""))]
1118- if ((fF == fF))
1139+ else throw(makeString(["price asset amount to receive is less than ", toString(fH)], ""))]
1140+ if ((fL == fL))
11191141 then {
1120- let fz = invoke(aB, "burn", [fv], [AttachedPayment(aU, fv)])
1121- if ((fz == fz))
1122- then cj
1142+ let fF = invoke(aE, "burn", [fB], [AttachedPayment(aX, fB)])
1143+ if ((fF == fF))
1144+ then cm
11231145 else throw("Strict value is not equal to itself.")
11241146 }
11251147 else throw("Strict value is not equal to itself.")
11311153
11321154
11331155
1134-@Callable(dg)
1135-func activate (fG,fH) = if ((toString(dg.caller) != toString(aB)))
1156+@Callable(dj)
1157+func activate (fM,fN) = if ((toString(dj.caller) != toString(aE)))
11361158 then throw("permissions denied")
1137- else $Tuple2([StringEntry(ab(), fG), StringEntry(ac(), fH)], "success")
1159+ else $Tuple2([StringEntry(ae(), fM), StringEntry(af(), fN)], "success")
11381160
11391161
11401162
1141-@Callable(dg)
1142-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aI())
1163+@Callable(dj)
1164+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aL())
11431165
11441166
11451167
1146-@Callable(dg)
1147-func getAccBalanceWrapperREADONLY (bs) = $Tuple2(nil, br(bs))
1168+@Callable(dj)
1169+func getAccBalanceWrapperREADONLY (bv) = $Tuple2(nil, bu(bv))
11481170
11491171
11501172
1151-@Callable(dg)
1152-func calcPricesWrapperREADONLY (bz,bA,bE) = {
1153- let bN = bD(bz, bA, bE)
1154- $Tuple2(nil, [toString(bN[0]), toString(bN[1]), toString(bN[2])])
1173+@Callable(dj)
1174+func calcPricesWrapperREADONLY (bC,bD,bH) = {
1175+ let bQ = bG(bC, bD, bH)
1176+ $Tuple2(nil, [toString(bQ[0]), toString(bQ[1]), toString(bQ[2])])
11551177 }
11561178
11571179
11581180
1159-@Callable(dg)
1181+@Callable(dj)
11601182 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
11611183
11621184
11631185
1164-@Callable(dg)
1165-func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
1186+@Callable(dj)
1187+func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
11661188
11671189
11681190
1169-@Callable(dg)
1170-func calcPriceBigIntWrapperREADONLY (bu,bv) = $Tuple2(nil, toString(bt(parseBigIntValue(bu), parseBigIntValue(bv))))
1191+@Callable(dj)
1192+func calcPriceBigIntWrapperREADONLY (bx,by) = $Tuple2(nil, toString(bw(parseBigIntValue(bx), parseBigIntValue(by))))
11711193
11721194
11731195
1174-@Callable(dg)
1175-func estimatePutOperationWrapperREADONLY (bP,cl,cm,cn,co,cp,Y,cq,cr) = $Tuple2(nil, ck(bP, cl, cm, cn, co, cp, Y, cq, cr))
1196+@Callable(dj)
1197+func estimatePutOperationWrapperREADONLY (bS,co,cp,cq,cr,cs,ab,ct,cu) = $Tuple2(nil, cn(bS, co, cp, cq, cr, cs, ab, ct, cu))
11761198
11771199
11781200
1179-@Callable(dg)
1180-func estimateGetOperationWrapperREADONLY (bP,bQ,bR,Y) = {
1181- let cB = bO(bP, bQ, bR, addressFromStringValue(Y))
1182- $Tuple2(nil, $Tuple10(cB._1, cB._2, cB._3, cB._4, cB._5, cB._6, cB._7, toString(cB._8), cB._9, cB._10))
1201+@Callable(dj)
1202+func estimateGetOperationWrapperREADONLY (bS,bT,bU,ab) = {
1203+ let cE = bR(bS, bT, bU, addressFromStringValue(ab))
1204+ $Tuple2(nil, $Tuple10(cE._1, cE._2, cE._3, cE._4, cE._5, cE._6, cE._7, toString(cE._8), cE._9, cE._10))
11831205 }
11841206
11851207
11861208
1187-@Callable(dg)
1209+@Callable(dj)
11881210 func statsREADONLY () = {
1189- let bF = aI()
1190- let bS = fromBase58String(bF[q])
1191- let cT = bF[r]
1192- let cU = bF[s]
1193- let cu = bF[v]
1194- let cv = bF[w]
1195- let bG = parseIntValue(bF[t])
1196- let bH = parseIntValue(bF[u])
1197- let fI = valueOrErrorMessage(assetInfo(bS), (("Asset " + toBase58String(bS)) + " doesn't exist")).quantity
1198- let cV = br(cT)
1199- let cW = br(cU)
1200- let fJ = if ((fI == 0))
1211+ let bI = aL()
1212+ let bV = fromBase58String(bI[q])
1213+ let cW = bI[r]
1214+ let cX = bI[s]
1215+ let cx = bI[v]
1216+ let cy = bI[w]
1217+ let bJ = parseIntValue(bI[t])
1218+ let bK = parseIntValue(bI[u])
1219+ let fO = valueOrErrorMessage(assetInfo(bV), (("Asset " + toBase58String(bV)) + " doesn't exist")).quantity
1220+ let cY = bu(cW)
1221+ let cZ = bu(cX)
1222+ let fP = if ((fO == 0))
12011223 then [e, e, e]
1202- else bD(cV, cW, fI)
1203- let cc = 0
1204- let fK = G(fJ[1], b)
1205- let fL = G(fJ[2], b)
1206- let fM = value(getInteger(aB, an(toString(this))))
1207- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cV), toString(cW), toString(fI), toString(cc), toString(fK), toString(fL), toString(fM)], j))
1224+ else bG(cY, cZ, fO)
1225+ let cf = 0
1226+ let fQ = H(fP[1], b)
1227+ let fR = H(fP[2], b)
1228+ let fS = value(getInteger(aE, aq(toString(this))))
1229+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cY), toString(cZ), toString(fO), toString(cf), toString(fQ), toString(fR), toString(fS)], j))
12081230 }
12091231
12101232
12111233
1212-@Callable(dg)
1213-func evaluatePutByAmountAssetREADONLY (cm) = {
1214- let bF = aI()
1215- let bS = fromBase58String(bF[q])
1216- let cs = bF[r]
1217- let bT = fromBase58String(cs)
1218- let ct = bF[s]
1219- let bU = fromBase58String(ct)
1220- let bG = parseIntValue(bF[t])
1221- let bH = parseIntValue(bF[u])
1222- let bV = bF[p]
1223- let fI = valueOrErrorMessage(assetInfo(bS), (("Asset " + toBase58String(bS)) + " doesn't exist")).quantity
1224- let cV = br(cs)
1225- let cW = br(ct)
1226- let bB = D(cV, bG)
1227- let bC = D(cW, bH)
1228- let cb = if ((fI == 0))
1234+@Callable(dj)
1235+func evaluatePutByAmountAssetREADONLY (cp) = {
1236+ let bI = aL()
1237+ let bV = fromBase58String(bI[q])
1238+ let cv = bI[r]
1239+ let bW = fromBase58String(cv)
1240+ let cw = bI[s]
1241+ let bX = fromBase58String(cw)
1242+ let bJ = parseIntValue(bI[t])
1243+ let bK = parseIntValue(bI[u])
1244+ let bY = bI[p]
1245+ let fO = valueOrErrorMessage(assetInfo(bV), (("Asset " + toBase58String(bV)) + " doesn't exist")).quantity
1246+ let cY = bu(cv)
1247+ let cZ = bu(cw)
1248+ let bE = D(cY, bJ)
1249+ let bF = D(cZ, bK)
1250+ let ce = if ((fO == 0))
12291251 then e
1230- else bt(bC, bB)
1231- let cy = D(cm, bG)
1232- let cz = fraction(cy, cb, d)
1233- let co = G(cz, bH)
1234- let dm = ck("", 500000, cm, bT, co, bU, "", true, false)
1235- let cJ = dm._1
1236- let fN = dm._3
1237- let bX = dm._4
1238- let bZ = dm._5
1239- let bW = dm._6
1240- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cJ), toString(G(cb, b)), toString(bX), toString(bZ), toString(bW), bV, toString(cm), toString(co)], j))
1252+ else bw(bF, bE)
1253+ let cB = D(cp, bJ)
1254+ let cC = fraction(cB, ce, d)
1255+ let cr = H(cC, bK)
1256+ let dp = cn("", 500000, cp, bW, cr, bX, "", true, false)
1257+ let cM = dp._1
1258+ let fT = dp._3
1259+ let ca = dp._4
1260+ let cc = dp._5
1261+ let bZ = dp._6
1262+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cM), toString(H(ce, b)), toString(ca), toString(cc), toString(bZ), bY, toString(cp), toString(cr)], j))
12411263 }
12421264
12431265
12441266
1245-@Callable(dg)
1246-func evaluatePutByPriceAssetREADONLY (co) = {
1247- let bF = aI()
1248- let bS = fromBase58String(bF[q])
1249- let cs = bF[r]
1250- let bT = fromBase58String(cs)
1251- let ct = bF[s]
1252- let bU = fromBase58String(ct)
1253- let bG = parseIntValue(bF[t])
1254- let bH = parseIntValue(bF[u])
1255- let bV = bF[p]
1256- let fI = valueOrErrorMessage(assetInfo(bS), (("Asset " + toBase58String(bS)) + " doesn't exist")).quantity
1257- let fO = br(cs)
1258- let fP = br(ct)
1259- let fQ = D(fO, bG)
1260- let fR = D(fP, bH)
1261- let cb = if ((fI == 0))
1267+@Callable(dj)
1268+func evaluatePutByPriceAssetREADONLY (cr) = {
1269+ let bI = aL()
1270+ let bV = fromBase58String(bI[q])
1271+ let cv = bI[r]
1272+ let bW = fromBase58String(cv)
1273+ let cw = bI[s]
1274+ let bX = fromBase58String(cw)
1275+ let bJ = parseIntValue(bI[t])
1276+ let bK = parseIntValue(bI[u])
1277+ let bY = bI[p]
1278+ let fO = valueOrErrorMessage(assetInfo(bV), (("Asset " + toBase58String(bV)) + " doesn't exist")).quantity
1279+ let fU = bu(cv)
1280+ let fV = bu(cw)
1281+ let fW = D(fU, bJ)
1282+ let fX = D(fV, bK)
1283+ let ce = if ((fO == 0))
12621284 then e
1263- else bt(fR, fQ)
1264- let cz = D(co, bH)
1265- let cy = fraction(cz, d, cb)
1266- let cm = G(cy, bG)
1267- let dm = ck("", 500000, cm, bT, co, bU, "", true, false)
1268- let cJ = dm._1
1269- let fN = dm._3
1270- let bX = dm._4
1271- let bZ = dm._5
1272- let bW = dm._6
1273- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cJ), toString(G(cb, b)), toString(bX), toString(bZ), toString(bW), bV, toString(cm), toString(co)], j))
1285+ else bw(fX, fW)
1286+ let cC = D(cr, bK)
1287+ let cB = fraction(cC, d, ce)
1288+ let cp = H(cB, bJ)
1289+ let dp = cn("", 500000, cp, bW, cr, bX, "", true, false)
1290+ let cM = dp._1
1291+ let fT = dp._3
1292+ let ca = dp._4
1293+ let cc = dp._5
1294+ let bZ = dp._6
1295+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cM), toString(H(ce, b)), toString(ca), toString(cc), toString(bZ), bY, toString(cp), toString(cr)], j))
12741296 }
12751297
12761298
12771299
1278-@Callable(dg)
1279-func evaluateGetREADONLY (fS,fT) = {
1280- let cB = bO("", fS, fT, this)
1281- let ch = cB._1
1282- let ci = cB._2
1283- let bX = cB._5
1284- let bZ = cB._6
1285- let bW = cB._7
1286- let cc = cB._8
1287- let bV = parseIntValue(cB._9)
1288- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(ch), toString(ci), toString(bX), toString(bZ), toString(bW), toString(cc), toString(bV)], j))
1300+@Callable(dj)
1301+func evaluateGetREADONLY (fY,fZ) = {
1302+ let cE = bR("", fY, fZ, this)
1303+ let ck = cE._1
1304+ let cl = cE._2
1305+ let ca = cE._5
1306+ let cc = cE._6
1307+ let bZ = cE._7
1308+ let cf = cE._8
1309+ let bY = parseIntValue(cE._9)
1310+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(ck), toString(cl), toString(ca), toString(cc), toString(bZ), toString(cf), toString(bY)], j))
12891311 }
12901312
12911313
1292-@Verifier(fU)
1293-func fV () = {
1294- let fW = {
1295- let dr = ew()
1296- if ($isInstanceOf(dr, "ByteVector"))
1314+@Verifier(ga)
1315+func gb () = {
1316+ let gc = {
1317+ let du = ez()
1318+ if ($isInstanceOf(du, "ByteVector"))
12971319 then {
1298- let eA = dr
1299- eA
1320+ let eD = du
1321+ eD
13001322 }
1301- else if ($isInstanceOf(dr, "Unit"))
1302- then fU.senderPublicKey
1323+ else if ($isInstanceOf(du, "Unit"))
1324+ then ga.senderPublicKey
13031325 else throw("Match error")
13041326 }
1305- let dr = fU
1306- if ($isInstanceOf(dr, "Order"))
1327+ let du = ga
1328+ if ($isInstanceOf(du, "Order"))
13071329 then {
1308- let cS = dr
1309- let fX = aH()
1310- let as = cR(cS)
1311- let at = sigVerify(cS.bodyBytes, cS.proofs[0], cS.senderPublicKey)
1312- let au = sigVerify(cS.bodyBytes, cS.proofs[1], fX)
1313- if (if (if (as)
1314- then at
1330+ let cV = du
1331+ let gd = aK()
1332+ let av = cU(cV)
1333+ let aw = sigVerify(cV.bodyBytes, cV.proofs[0], cV.senderPublicKey)
1334+ let ax = sigVerify(cV.bodyBytes, cV.proofs[1], gd)
1335+ if (if (if (av)
1336+ then aw
13151337 else false)
1316- then au
1338+ then ax
13171339 else false)
13181340 then true
1319- else ar(as, at, au)
1341+ else au(av, aw, ax)
13201342 }
1321- else if ($isInstanceOf(dr, "SetScriptTransaction"))
1343+ else if ($isInstanceOf(du, "SetScriptTransaction"))
13221344 then {
1323- let ex = dr
1324- let fY = blake2b256(value(ex.script))
1325- let fZ = fromBase64String(value(getString(aB, ap())))
1326- let ga = scriptHash(this)
1327- if (if ((fZ == fY))
1328- then (ga != fY)
1345+ let eA = du
1346+ let ge = blake2b256(value(eA.script))
1347+ let gf = fromBase64String(value(getString(aE, as())))
1348+ let gg = scriptHash(this)
1349+ if (if ((gf == ge))
1350+ then (gg != ge)
13291351 else false)
13301352 then true
1331- else sigVerify(fU.bodyBytes, fU.proofs[0], fW)
1353+ else sigVerify(ga.bodyBytes, ga.proofs[0], gc)
13321354 }
1333- else sigVerify(fU.bodyBytes, fU.proofs[0], fW)
1355+ else sigVerify(ga.bodyBytes, ga.proofs[0], gc)
13341356 }
13351357
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
65-func G (H,I) = toInt(fraction(H, toBigInt(I), d))
65+func G (E,F) = fraction(E, d, F)
6666
6767
68-func J (K,L,M) = fraction(K, L, M)
68+func H (I,J) = toInt(fraction(I, toBigInt(J), d))
6969
7070
71-func N (H) = if ((0 > H))
72- then -(H)
73- else H
71+func K (I,J,L) = toInt(fraction(I, toBigInt(J), d, L))
7472
7573
76-func O (H) = if ((e > H))
77- then -(H)
78- else H
74+func M (N,O,P) = fraction(N, O, P)
7975
8076
81-func P () = "%s__swapContract"
77+func Q (I) = if ((0 > I))
78+ then -(I)
79+ else I
8280
8381
84-func Q () = "%s__factoryContract"
82+func R (I) = if ((e > I))
83+ then -(I)
84+ else I
8585
8686
87-func R () = "%s__managerPublicKey"
87+func S () = "%s__swapContract"
8888
8989
90-func S () = "%s__pendingManagerPublicKey"
90+func T () = "%s__factoryContract"
9191
9292
93-func T () = "%s%s__price__last"
93+func U () = "%s__managerPublicKey"
9494
9595
96-func U (V,W) = makeString(["%s%s%d%d__price__history", toString(V), toString(W)], j)
96+func V () = "%s__pendingManagerPublicKey"
9797
9898
99-func X (Y,Z) = ((("%s%s%s__P__" + Y) + "__") + Z)
99+func W () = "%s%s__price__last"
100100
101101
102-func aa (Y,Z) = ((("%s%s%s__G__" + Y) + "__") + Z)
102+func X (Y,Z) = makeString(["%s%s%d%d__price__history", toString(Y), toString(Z)], j)
103103
104104
105-func ab () = "%s__amountAsset"
105+func aa (ab,ac) = ((("%s%s%s__P__" + ab) + "__") + ac)
106106
107107
108-func ac () = "%s__priceAsset"
108+func ad (ab,ac) = ((("%s%s%s__G__" + ab) + "__") + ac)
109109
110110
111-func ad () = "%s__factoryConfig"
111+func ae () = "%s__amountAsset"
112112
113113
114-func ae () = "%s%s__matcher__publicKey"
114+func af () = "%s__priceAsset"
115115
116116
117-func af (ag) = (("%s%s%s__" + ag) + "__mappings__poolContract2LpAsset")
117+func ag () = "%s__factoryConfig"
118118
119119
120-func ah (ai,aj) = (((("%d%d%s__" + ai) + "__") + aj) + "__config")
120+func ah () = "%s%s__matcher__publicKey"
121121
122122
123-func ak (al) = ("%s%s%s__mappings__baseAsset2internalId__" + al)
123+func ai (aj) = (("%s%s%s__" + aj) + "__mappings__poolContract2LpAsset")
124124
125125
126-func am () = "%s__shutdown"
126+func ak (al,am) = (((("%d%d%s__" + al) + "__") + am) + "__config")
127127
128128
129-func an (ao) = ("%s%s__poolWeight__" + ao)
129+func an (ao) = ("%s%s%s__mappings__baseAsset2internalId__" + ao)
130130
131131
132-func ap () = "%s__allowedLpScriptHash"
132+func ap () = "%s__shutdown"
133133
134134
135-let aq = "%s__feeCollectorAddress"
136-
137-func ar (as,at,au) = throw(((((("order validation failed: orderValid=" + toString(as)) + " senderValid=") + toString(at)) + " matcherValid=") + toString(au)))
135+func aq (ar) = ("%s%s__poolWeight__" + ar)
138136
139137
140-func av (aw,ax) = valueOrErrorMessage(getString(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " is not defined"], ""))
138+func as () = "%s__allowedLpScriptHash"
141139
142140
143-func ay (aw,ax) = valueOrErrorMessage(getInteger(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " is not defined"], ""))
141+let at = "%s__feeCollectorAddress"
142+
143+func au (av,aw,ax) = throw(((((("order validation failed: orderValid=" + toString(av)) + " senderValid=") + toString(aw)) + " matcherValid=") + toString(ax)))
144144
145145
146-func az (aA) = throw(makeString(["lp.ride:", aA], " "))
146+func ay (az,aA) = valueOrErrorMessage(getString(az, aA), makeString(["mandatory ", toString(az), ".", aA, " is not defined"], ""))
147147
148148
149-let aB = addressFromStringValue(av(this, Q()))
149+func aB (az,aA) = valueOrErrorMessage(getInteger(az, aA), makeString(["mandatory ", toString(az), ".", aA, " is not defined"], ""))
150150
151-let aC = addressFromStringValue(av(aB, aq))
152151
153-let aD = {
154- let aE = invoke(aB, "getInFeeREADONLY", [toString(this)], nil)
155- if ($isInstanceOf(aE, "Int"))
156- then aE
157- else throw(($getType(aE) + " couldn't be cast to Int"))
152+func aC (aD) = throw(makeString(["lp.ride:", aD], " "))
153+
154+
155+let aE = addressFromStringValue(ay(this, T()))
156+
157+let aF = addressFromStringValue(ay(aE, at))
158+
159+let aG = {
160+ let aH = invoke(aE, "getInFeeREADONLY", [toString(this)], nil)
161+ if ($isInstanceOf(aH, "Int"))
162+ then aH
163+ else throw(($getType(aH) + " couldn't be cast to Int"))
158164 }
159165
160-let aF = {
161- let aE = invoke(aB, "getOutFeeREADONLY", [toString(this)], nil)
162- if ($isInstanceOf(aE, "Int"))
163- then aE
164- else throw(($getType(aE) + " couldn't be cast to Int"))
166+let aI = {
167+ let aH = invoke(aE, "getOutFeeREADONLY", [toString(this)], nil)
168+ if ($isInstanceOf(aH, "Int"))
169+ then aH
170+ else throw(($getType(aH) + " couldn't be cast to Int"))
165171 }
166172
167-func aG () = valueOrElse(getBoolean(aB, am()), false)
173+func aJ () = valueOrElse(getBoolean(aE, ap()), false)
168174
169175
170-func aH () = fromBase58String(av(aB, ae()))
176+func aK () = fromBase58String(ay(aE, ah()))
171177
172178
173-func aI () = {
174- let aJ = av(this, ab())
175- let aK = av(this, ac())
176- let aj = ay(aB, ak(aK))
177- let ai = ay(aB, ak(aJ))
178- split(av(aB, ah(toString(ai), toString(aj))), j)
179+func aL () = {
180+ let aM = ay(this, ae())
181+ let aN = ay(this, af())
182+ let am = aB(aE, an(aN))
183+ let al = aB(aE, an(aM))
184+ split(ay(aE, ak(toString(al), toString(am))), j)
179185 }
180186
181187
182-func aL (aM) = if ((aM == i))
188+func aO (aP) = if ((aP == i))
183189 then unit
184- else fromBase58String(aM)
190+ else fromBase58String(aP)
185191
186192
187-func aN (aM) = if ((aM == unit))
193+func aQ (aP) = if ((aP == unit))
188194 then i
189- else toBase58String(value(aM))
195+ else toBase58String(value(aP))
190196
191197
192-func aO (aP) = $Tuple7(addressFromStringValue(aP[o]), parseIntValue(aP[p]), fromBase58String(aP[q]), aL(aP[r]), aL(aP[s]), parseIntValue(aP[t]), parseIntValue(aP[u]))
198+func aR (aS) = $Tuple7(addressFromStringValue(aS[o]), parseIntValue(aS[p]), fromBase58String(aS[q]), aO(aS[r]), aO(aS[s]), parseIntValue(aS[t]), parseIntValue(aS[u]))
193199
194200
195-let aQ = aO(aI())
201+let aT = aR(aL())
196202
197-let aR = aQ
203+let aU = aT
198204
199-let aS = aR._1
205+let aV = aU._1
200206
201-let aT = aR._2
207+let aW = aU._2
202208
203-let aU = aR._3
209+let aX = aU._3
204210
205-let aV = aR._4
211+let aY = aU._4
206212
207-let aW = aR._5
213+let aZ = aU._5
208214
209-let aX = aR._6
215+let ba = aU._6
210216
211-let aY = aR._7
217+let bb = aU._7
212218
213-func aZ () = split(av(aB, ad()), j)
219+func bc () = split(ay(aE, ag()), j)
214220
215221
216-let ba = valueOrErrorMessage(addressFromString(aZ()[B]), "incorrect staking address")
222+let bd = valueOrErrorMessage(addressFromString(bc()[B]), "incorrect staking address")
217223
218-let bb = valueOrErrorMessage(addressFromString(aZ()[C]), "incorrect staking address")
224+let be = valueOrErrorMessage(addressFromString(bc()[C]), "incorrect staking address")
219225
220-func bc (bd,be,bf,bg,bh,bi,bj,bk,bl,bm) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bd), toString(be), toString(bf), toString(bg), toString(bh), toString(bi), toString(bj), toString(bk), toString(bl), toString(bm)], j)
226+func bf (bg,bh,bi,bj,bk,bl,bm,bn,bo,bp) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bg), toString(bh), toString(bi), toString(bj), toString(bk), toString(bl), toString(bm), toString(bn), toString(bo), toString(bp)], j)
221227
222228
223-func bn (bo,bp,bq,bg,bj,bk) = makeString(["%d%d%d%d%d%d", toString(bo), toString(bp), toString(bq), toString(bg), toString(bj), toString(bk)], j)
229+func bq (br,bs,bt,bj,bm,bn) = makeString(["%d%d%d%d%d%d", toString(br), toString(bs), toString(bt), toString(bj), toString(bm), toString(bn)], j)
224230
225231
226-func br (bs) = if ((bs == "WAVES"))
232+func bu (bv) = if ((bv == "WAVES"))
227233 then wavesBalance(this).available
228- else assetBalance(this, fromBase58String(bs))
234+ else assetBalance(this, fromBase58String(bv))
229235
230236
231-func bt (bu,bv) = fraction(bu, d, bv)
237+func bw (bx,by) = fraction(bx, d, by)
232238
233239
234-func bw (bx,by,bz,bA) = {
235- let bB = D(bz, bx)
236- let bC = D(bA, by)
237- bt(bC, bB)
240+func bz (bA,bB,bC,bD) = {
241+ let bE = D(bC, bA)
242+ let bF = D(bD, bB)
243+ bw(bF, bE)
238244 }
239245
240246
241-func bD (bz,bA,bE) = {
242- let bF = aI()
243- let bG = parseIntValue(bF[t])
244- let bH = parseIntValue(bF[u])
245- let bI = bw(bG, bH, bz, bA)
246- let bv = D(bz, bG)
247- let bu = D(bA, bH)
248- let bJ = D(bE, b)
249- let bK = bt(bv, bJ)
250- let bL = bt(bu, bJ)
251-[bI, bK, bL]
247+func bG (bC,bD,bH) = {
248+ let bI = aL()
249+ let bJ = parseIntValue(bI[t])
250+ let bK = parseIntValue(bI[u])
251+ let bL = bz(bJ, bK, bC, bD)
252+ let by = D(bC, bJ)
253+ let bx = D(bD, bK)
254+ let bM = D(bH, b)
255+ let bN = bw(by, bM)
256+ let bO = bw(bx, bM)
257+[bL, bN, bO]
252258 }
253259
254260
255-func bM (bz,bA,bE) = {
256- let bN = bD(bz, bA, bE)
257-[G(bN[0], b), G(bN[1], b), G(bN[2], b)]
261+func bP (bC,bD,bH) = {
262+ let bQ = bG(bC, bD, bH)
263+[H(bQ[0], b), H(bQ[1], b), H(bQ[2], b)]
258264 }
259265
260266
261-func bO (bP,bQ,bR,Y) = {
262- let bF = aI()
263- let bS = bF[q]
264- let bT = bF[r]
265- let bU = bF[s]
266- let bx = parseIntValue(bF[t])
267- let by = parseIntValue(bF[u])
268- let bV = bF[p]
269- let bW = valueOrErrorMessage(assetInfo(fromBase58String(bS)), (("Asset " + bS) + " doesn't exist")).quantity
270- if ((bS != bQ))
267+func bR (bS,bT,bU,ab) = {
268+ let bI = aL()
269+ let bV = bI[q]
270+ let bW = bI[r]
271+ let bX = bI[s]
272+ let bA = parseIntValue(bI[t])
273+ let bB = parseIntValue(bI[u])
274+ let bY = bI[p]
275+ let bZ = valueOrErrorMessage(assetInfo(fromBase58String(bV)), (("Asset " + bV) + " doesn't exist")).quantity
276+ if ((bV != bT))
271277 then throw("Invalid asset passed.")
272278 else {
273- let bX = br(bT)
274- let bY = D(bX, bx)
275- let bZ = br(bU)
276- let ca = D(bZ, by)
277- let cb = bt(ca, bY)
278- let cc = G(cb, b)
279- let cd = D(bR, b)
280- let ce = D(bW, b)
281- let cf = fraction(bY, cd, ce)
282- let cg = fraction(ca, cd, ce)
283- let ch = G(cf, bx)
284- let ci = G(cg, by)
285- let cj = if ((bP == ""))
279+ let ca = bu(bW)
280+ let cb = D(ca, bA)
281+ let cc = bu(bX)
282+ let cd = D(cc, bB)
283+ let ce = bw(cd, cb)
284+ let cf = H(ce, b)
285+ let cg = D(bU, b)
286+ let ch = D(bZ, b)
287+ let ci = fraction(cb, cg, ch)
288+ let cj = fraction(cd, cg, ch)
289+ let ck = H(ci, bA)
290+ let cl = H(cj, bB)
291+ let cm = if ((bS == ""))
286292 then nil
287- else [ScriptTransfer(Y, ch, if ((bT == "WAVES"))
293+ else [ScriptTransfer(ab, ck, if ((bW == "WAVES"))
288294 then unit
289- else fromBase58String(bT)), ScriptTransfer(Y, ci, if ((bU == "WAVES"))
295+ else fromBase58String(bW)), ScriptTransfer(ab, cl, if ((bX == "WAVES"))
290296 then unit
291- else fromBase58String(bU)), StringEntry(aa(toString(Y), bP), bn(ch, ci, bR, cc, height, lastBlock.timestamp)), IntegerEntry(T(), cc), IntegerEntry(U(height, lastBlock.timestamp), cc)]
292- $Tuple10(ch, ci, bT, bU, bX, bZ, bW, cb, bV, cj)
297+ else fromBase58String(bX)), StringEntry(ad(toString(ab), bS), bq(ck, cl, bU, cf, height, lastBlock.timestamp)), IntegerEntry(W(), cf), IntegerEntry(X(height, lastBlock.timestamp), cf)]
298+ $Tuple10(ck, cl, bW, bX, ca, cc, bZ, ce, bY, cm)
293299 }
294300 }
295301
296302
297-func ck (bP,cl,cm,cn,co,cp,Y,cq,cr) = {
298- let bF = aI()
299- let bS = fromBase58String(bF[q])
300- let cs = bF[r]
301- let ct = bF[s]
302- let cu = bF[v]
303- let cv = bF[w]
304- let bG = parseIntValue(bF[t])
305- let bH = parseIntValue(bF[u])
306- let bV = bF[p]
307- let bW = valueOrErrorMessage(assetInfo(bS), (("Asset " + toBase58String(bS)) + " doesn't exist")).quantity
308- let cw = toBase58String(valueOrElse(cn, fromBase58String("WAVES")))
309- let cx = toBase58String(valueOrElse(cp, fromBase58String("WAVES")))
310- if (if ((cs != cw))
303+func cn (bS,co,cp,cq,cr,cs,ab,ct,cu) = {
304+ let bI = aL()
305+ let bV = fromBase58String(bI[q])
306+ let cv = bI[r]
307+ let cw = bI[s]
308+ let cx = bI[v]
309+ let cy = bI[w]
310+ let bJ = parseIntValue(bI[t])
311+ let bK = parseIntValue(bI[u])
312+ let bY = bI[p]
313+ let bZ = valueOrErrorMessage(assetInfo(bV), (("Asset " + toBase58String(bV)) + " doesn't exist")).quantity
314+ let cz = toBase58String(valueOrElse(cq, fromBase58String("WAVES")))
315+ let cA = toBase58String(valueOrElse(cs, fromBase58String("WAVES")))
316+ if (if ((cv != cz))
311317 then true
312- else (ct != cx))
318+ else (cw != cA))
313319 then throw("Invalid amt or price asset passed.")
314320 else {
315- let bX = if (cq)
316- then br(cs)
317- else (br(cs) - cm)
318- let bZ = if (cq)
319- then br(ct)
320- else (br(ct) - co)
321- let cy = D(cm, bG)
322- let cz = D(co, bH)
323- let cA = bt(cz, cy)
324- let bY = D(bX, bG)
325- let ca = D(bZ, bH)
326- let cB = if ((bW == 0))
321+ let ca = if (ct)
322+ then bu(cv)
323+ else (bu(cv) - cp)
324+ let cc = if (ct)
325+ then bu(cw)
326+ else (bu(cw) - cr)
327+ let cB = D(cp, bJ)
328+ let cC = D(cr, bK)
329+ let cD = bw(cC, cB)
330+ let cb = D(ca, bJ)
331+ let cd = D(cc, bK)
332+ let cE = if ((bZ == 0))
327333 then {
328- let cb = e
329- let cC = e
330- let bJ = pow((cy * cz), 0, toBigInt(5), 1, 0, DOWN)
331- $Tuple5(G(bJ, b), G(cy, bG), G(cz, bH), bt((ca + cz), (bY + cy)), cC)
334+ let ce = e
335+ let cF = e
336+ let bM = pow((cB * cC), 0, toBigInt(5), 1, 0, DOWN)
337+ $Tuple5(H(bM, b), H(cB, bJ), H(cC, bK), bw((cd + cC), (cb + cB)), cF)
332338 }
333339 else {
334- let cb = bt(ca, bY)
335- let cC = fraction(O((cb - cA)), d, cb)
336- let cD = D(cl, b)
337- if (if ((cb != e))
338- then (cC > cD)
340+ let ce = bw(cd, cb)
341+ let cF = fraction(R((ce - cD)), d, ce)
342+ let cG = D(co, b)
343+ if (if ((ce != e))
344+ then (cF > cG)
339345 else false)
340- then throw(((("Price slippage " + toString(cC)) + " exceeded the passed limit of ") + toString(cD)))
346+ then throw(((("Price slippage " + toString(cF)) + " exceeded the passed limit of ") + toString(cG)))
341347 else {
342- let ce = D(bW, b)
343- let cE = fraction(cy, cb, d)
344- let cF = fraction(cz, d, cb)
345- let cG = if ((cE > cz))
346- then $Tuple2(cF, cz)
347- else $Tuple2(cy, cE)
348- let cH = cG._1
349- let cI = cG._2
350- let bJ = fraction(ce, cI, ca)
351- $Tuple5(G(bJ, b), G(cH, bG), G(cI, bH), cb, cC)
348+ let ch = D(bZ, b)
349+ let cH = fraction(cB, ce, d)
350+ let cI = fraction(cC, d, ce)
351+ let cJ = if ((cH > cC))
352+ then $Tuple2(cI, cC)
353+ else $Tuple2(cB, cH)
354+ let cK = cJ._1
355+ let cL = cJ._2
356+ let bM = fraction(ch, cL, cd)
357+ $Tuple5(H(bM, b), H(cK, bJ), H(cL, bK), ce, cF)
352358 }
353359 }
354- let cJ = cB._1
355- let cK = cB._2
356- let cL = cB._3
357- let cc = G(cB._4, b)
358- let cM = G(cB._5, b)
359- if ((0 >= cJ))
360+ let cM = cE._1
361+ let cN = cE._2
362+ let cO = cE._3
363+ let cf = H(cE._4, b)
364+ let cP = H(cE._5, b)
365+ if ((0 >= cM))
360366 then throw("Invalid calculations. LP calculated is less than zero.")
361367 else {
362- let cN = if (!(cr))
368+ let cQ = if (!(cu))
363369 then 0
364- else cJ
365- let cO = (cm - cK)
366- let cP = (co - cL)
367- let cQ = [IntegerEntry(T(), cc), IntegerEntry(U(height, lastBlock.timestamp), cc), StringEntry(X(Y, bP), bc(cK, cL, cN, cc, cl, cM, height, lastBlock.timestamp, cO, cP))]
368- $Tuple13(cJ, cN, cc, bX, bZ, bW, bS, bV, cQ, cO, cP, cn, cp)
370+ else cM
371+ let cR = (cp - cN)
372+ let cS = (cr - cO)
373+ let cT = [IntegerEntry(W(), cf), IntegerEntry(X(height, lastBlock.timestamp), cf), StringEntry(aa(ab, bS), bf(cN, cO, cQ, cf, co, cP, height, lastBlock.timestamp, cR, cS))]
374+ $Tuple13(cM, cQ, cf, ca, cc, bZ, bV, bY, cT, cR, cS, cq, cs)
369375 }
370376 }
371377 }
372378
373379
374-func cR (cS) = {
375- let bF = aI()
376- let cT = bF[r]
377- let cU = bF[s]
378- let bV = parseIntValue(bF[p])
379- let bG = parseIntValue(bF[t])
380- let bH = parseIntValue(bF[u])
381- let cV = br(cT)
382- let cW = br(cU)
383- let cb = if ((cS.orderType == Buy))
384- then bw(bG, bH, (cV + cS.amount), cW)
385- else bw(bG, bH, (cV - cS.amount), cW)
386- let cc = G(cb, b)
387- if (if (if (aG())
380+func cU (cV) = {
381+ let bI = aL()
382+ let cW = bI[r]
383+ let cX = bI[s]
384+ let bY = parseIntValue(bI[p])
385+ let bJ = parseIntValue(bI[t])
386+ let bK = parseIntValue(bI[u])
387+ let cY = bu(cW)
388+ let cZ = bu(cX)
389+ let ce = if ((cV.orderType == Buy))
390+ then bz(bJ, bK, (cY + cV.amount), cZ)
391+ else bz(bJ, bK, (cY - cV.amount), cZ)
392+ let cf = H(ce, b)
393+ if (if (if (aJ())
388394 then true
389- else (bV == m))
395+ else (bY == m))
390396 then true
391- else (bV == n))
397+ else (bY == n))
392398 then throw("Exchange operations disabled")
393399 else {
394- let cX = cS.assetPair.amountAsset
395- let cY = if ((cX == unit))
400+ let da = cV.assetPair.amountAsset
401+ let db = if ((da == unit))
396402 then "WAVES"
397- else toBase58String(value(cX))
398- let cZ = cS.assetPair.priceAsset
399- let da = if ((cZ == unit))
403+ else toBase58String(value(da))
404+ let dc = cV.assetPair.priceAsset
405+ let dd = if ((dc == unit))
400406 then "WAVES"
401- else toBase58String(value(cZ))
402- if (if ((cY != cT))
407+ else toBase58String(value(dc))
408+ if (if ((db != cW))
403409 then true
404- else (da != cU))
410+ else (dd != cX))
405411 then throw("Wrong order assets.")
406412 else {
407- let db = cS.price
408- let dc = fraction(b, bH, bG)
409- let dd = J(db, b, dc)
410- let de = if ((cS.orderType == Buy))
411- then (cc >= dd)
412- else (dd >= cc)
413+ let de = cV.price
414+ let df = fraction(b, bK, bJ)
415+ let dg = M(de, b, df)
416+ let dh = if ((cV.orderType == Buy))
417+ then (cf >= dg)
418+ else (dg >= cf)
413419 true
414420 }
415421 }
416422 }
417423
418424
419-func df (dg) = if ((size(dg.payments) != 1))
425+func di (dj) = if ((size(dj.payments) != 1))
420426 then throw("exactly 1 payment is expected")
421427 else {
422- let dh = value(dg.payments[0])
423- let bQ = value(dh.assetId)
424- let di = dh.amount
425- let cB = bO(toBase58String(dg.transactionId), toBase58String(bQ), di, dg.caller)
426- let ch = cB._1
427- let ci = cB._2
428- let bV = parseIntValue(cB._9)
429- let cj = cB._10
430- if (if (aG())
428+ let dk = value(dj.payments[0])
429+ let bT = value(dk.assetId)
430+ let dl = dk.amount
431+ let cE = bR(toBase58String(dj.transactionId), toBase58String(bT), dl, dj.caller)
432+ let ck = cE._1
433+ let cl = cE._2
434+ let bY = parseIntValue(cE._9)
435+ let cm = cE._10
436+ if (if (aJ())
431437 then true
432- else (bV == n))
433- then throw(("Get operation is blocked by admin. Status = " + toString(bV)))
434- else $Tuple5(ch, ci, di, bQ, cj)
438+ else (bY == n))
439+ then throw(("Get operation is blocked by admin. Status = " + toString(bY)))
440+ else $Tuple5(ck, cl, dl, bT, cm)
435441 }
436442
437443
438-func dj (dg,cl,cr) = if ((size(dg.payments) != 2))
444+func dm (dj,co,cu) = if ((size(dj.payments) != 2))
439445 then throw("exactly 2 payments are expected")
440446 else {
441- let dk = value(dg.payments[0])
442- let dl = value(dg.payments[1])
443- let dm = ck(toBase58String(dg.transactionId), cl, dk.amount, dk.assetId, dl.amount, dl.assetId, toString(dg.caller), false, cr)
444- let bV = parseIntValue(dm._8)
445- if (if (if (aG())
447+ let dn = value(dj.payments[0])
448+ let do = value(dj.payments[1])
449+ let dp = cn(toBase58String(dj.transactionId), co, dn.amount, dn.assetId, do.amount, do.assetId, toString(dj.caller), false, cu)
450+ let bY = parseIntValue(dp._8)
451+ if (if (if (aJ())
446452 then true
447- else (bV == l))
453+ else (bY == l))
448454 then true
449- else (bV == n))
450- then throw(("Put operation is blocked by admin. Status = " + toString(bV)))
451- else dm
455+ else (bY == n))
456+ then throw(("Put operation is blocked by admin. Status = " + toString(bY)))
457+ else dp
452458 }
453459
454460
455-func dn (do) = {
456- let dp = invoke(aB, "emit", [do], nil)
457- if ((dp == dp))
461+func dq (dr) = {
462+ let ds = invoke(aE, "emit", [dr], nil)
463+ if ((ds == ds))
458464 then {
459- let dq = {
460- let dr = dp
461- if ($isInstanceOf(dr, "Address"))
465+ let dt = {
466+ let du = ds
467+ if ($isInstanceOf(du, "Address"))
462468 then {
463- let ds = dr
464- invoke(ds, "emit", [do], nil)
469+ let dv = du
470+ invoke(dv, "emit", [dr], nil)
465471 }
466472 else unit
467473 }
468- if ((dq == dq))
469- then do
474+ if ((dt == dt))
475+ then dr
470476 else throw("Strict value is not equal to itself.")
471477 }
472478 else throw("Strict value is not equal to itself.")
473479 }
474480
475481
476-func dt (do,du) = {
477- let dv = if ((du == 0))
482+func dw (dr,dx) = {
483+ let dy = if ((dx == 0))
478484 then 0
479- else fraction(do, du, b)
480- $Tuple2((do - dv), dv)
485+ else fraction(dr, dx, b)
486+ $Tuple2((dr - dy), dy)
481487 }
482488
483489
484-func dw (dx,dy,Y,Z) = {
485- let dz = (Z == unit)
486- let dA = br(aN(aV))
487- let dB = br(aN(aW))
488- let dC = if ((dy == aV))
490+func dz (dA,dB,ab,ac) = {
491+ let dC = (ac == unit)
492+ let dD = bu(aQ(aY))
493+ let dE = bu(aQ(aZ))
494+ let dF = if ((dB == aY))
489495 then true
490- else if ((dy == aW))
496+ else if ((dB == aZ))
491497 then false
492- else az("invalid asset")
493- let dD = if (dz)
494- then $Tuple2(dA, dB)
495- else if (dC)
496- then $Tuple2((dA - dx), dB)
497- else $Tuple2(dA, (dB - dx))
498- let dE = dD._1
499- let dF = dD._2
498+ else aC("invalid asset")
500499 let dG = if (dC)
501- then $Tuple2(dx, 0)
502- else $Tuple2(0, dx)
500+ then $Tuple2(dD, dE)
501+ else if (dF)
502+ then $Tuple2((dD - dA), dE)
503+ else $Tuple2(dD, (dE - dA))
503504 let dH = dG._1
504505 let dI = dG._2
505- let dJ = dt(dH, aD)._1
506- let dK = dt(dI, aD)._1
507- let dL = dt(dx, aD)
508- let dM = dL._1
509- let dv = dL._2
510- let dN = (dE + dJ)
511- let dO = (dF + dK)
512- let dP = bt(D(dO, aY), D(dN, aX))
513- let dQ = G(dP, b)
514- let dR = if (dC)
515- then dE
516- else dF
517- let dS = toBigInt(dR)
518- let dT = toBigInt(valueOrErrorMessage(assetInfo(aU), (("asset " + toBase58String(aU)) + " doesn't exist")).quantity)
519- let dU = if ((dT > f))
506+ let dJ = if (dF)
507+ then $Tuple2(dA, 0)
508+ else $Tuple2(0, dA)
509+ let dK = dJ._1
510+ let dL = dJ._2
511+ let dM = dw(dK, aG)._1
512+ let dN = dw(dL, aG)._1
513+ let dO = dw(dA, aG)
514+ let dP = dO._1
515+ let dy = dO._2
516+ let dQ = (dH + dM)
517+ let dR = (dI + dN)
518+ let dS = bw(D(dR, bb), D(dQ, ba))
519+ let dT = H(dS, b)
520+ let dU = if (dF)
521+ then dH
522+ else dI
523+ let dV = toBigInt(dU)
524+ let dW = toBigInt(valueOrErrorMessage(assetInfo(aX), (("asset " + toBase58String(aX)) + " doesn't exist")).quantity)
525+ let dX = if ((dW > f))
520526 then true
521- else az("initial deposit requires all coins")
522- if ((dU == dU))
527+ else aC("initial deposit requires all coins")
528+ if ((dX == dX))
523529 then {
524- let dV = toBigInt(dM)
525- let dW = max([0, toInt(((dT * (sqrtBigInt((d + ((dV * d) / dS)), 18, 18, DOWN) - d)) / d))])
526- let cQ = if (dz)
530+ let dY = toBigInt(dP)
531+ let dZ = max([0, toInt(((dW * (sqrtBigInt((d + ((dY * d) / dV)), 18, 18, DOWN) - d)) / d))])
532+ let cT = if (dC)
527533 then nil
528- else [IntegerEntry(T(), dQ), IntegerEntry(U(height, lastBlock.timestamp), dQ), StringEntry(X(toString(value(Y)), toBase58String(value(Z))), bc(dH, dI, dW, dQ, 0, 0, height, lastBlock.timestamp, 0, 0))]
529- let dX = bt(D(dF, aY), D(dE, aX))
530- let dY = G(dX, b)
531- let dZ = {
532- let ea = if (dC)
533- then $Tuple2(dH, dE)
534- else $Tuple2(dI, dF)
535- let do = ea._1
536- let eb = ea._2
537- let ec = toInt(fraction(dT, toBigInt((do / 2)), toBigInt(eb)))
538- fraction((dW - ec), b, ec)
534+ else [IntegerEntry(W(), dT), IntegerEntry(X(height, lastBlock.timestamp), dT), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bf(dK, dL, dZ, dT, 0, 0, height, lastBlock.timestamp, 0, 0))]
535+ let ea = bw(D(dI, bb), D(dH, ba))
536+ let eb = H(ea, b)
537+ let ec = {
538+ let ed = if (dF)
539+ then $Tuple2(dK, dH)
540+ else $Tuple2(dL, dI)
541+ let dr = ed._1
542+ let ee = ed._2
543+ let ef = toInt(fraction(dW, toBigInt((dr / 2)), toBigInt(ee)))
544+ fraction((dZ - ef), b, ef)
539545 }
540- $Tuple4(dW, cQ, dv, dZ)
546+ $Tuple4(dZ, cT, dy, ec)
541547 }
542548 else throw("Strict value is not equal to itself.")
543549 }
544550
545551
546-func ed (ee,dM,dy,Y,Z) = {
547- let dz = (Z == unit)
548- let ef = [if ((dy == aU))
552+func eg (eh,dP,dB,ab,ac) = {
553+ let dC = (ac == unit)
554+ let ei = [if ((dB == aX))
549555 then true
550- else az("invalid lp asset")]
551- if ((ef == ef))
556+ else aC("invalid lp asset")]
557+ if ((ei == ei))
552558 then {
553- let eg = if ((ee == aV))
559+ let ej = if ((eh == aY))
554560 then true
555- else if ((ee == aW))
561+ else if ((eh == aZ))
556562 then false
557- else az("invalid asset")
558- let eh = if (eg)
559- then toBigInt(br(aN(aV)))
560- else toBigInt(br(aN(aW)))
561- let ei = br(aN(aV))
562- let ej = br(aN(aW))
563- let ek = if (eg)
564- then ei
565- else ej
566- let el = toBigInt(ek)
567- let dT = toBigInt(valueOrErrorMessage(assetInfo(aU), (("asset " + toBase58String(aU)) + " doesn't exist")).quantity)
568- let em = toBigInt(dM)
569- let en = max([0, toInt(((eh * (d - pow((d - ((em * d) / dT)), 18, h, 0, 18, DOWN))) / d))])
570- let eo = dt(en, aF)
571- let ep = eo._1
572- let dv = eo._2
573- let eq = if (eg)
574- then $Tuple4(ep, 0, (ei - en), ej)
575- else $Tuple4(0, ep, ei, (ej - en))
576- let er = eq._1
577- let es = eq._2
578- let et = eq._3
579- let eu = eq._4
580- let dP = bt(D(eu, aY), D(et, aX))
581- let dQ = G(dP, b)
582- let cQ = if (dz)
563+ else aC("invalid asset")
564+ let ek = if (ej)
565+ then toBigInt(bu(aQ(aY)))
566+ else toBigInt(bu(aQ(aZ)))
567+ let el = bu(aQ(aY))
568+ let em = bu(aQ(aZ))
569+ let en = if (ej)
570+ then el
571+ else em
572+ let eo = toBigInt(en)
573+ let dW = toBigInt(valueOrErrorMessage(assetInfo(aX), (("asset " + toBase58String(aX)) + " doesn't exist")).quantity)
574+ let ep = toBigInt(dP)
575+ let eq = max([0, toInt(((ek * (d - pow((d - ((ep * d) / dW)), 18, h, 0, 18, DOWN))) / d))])
576+ let er = dw(eq, aI)
577+ let es = er._1
578+ let dy = er._2
579+ let et = if (ej)
580+ then $Tuple4(es, 0, (el - eq), em)
581+ else $Tuple4(0, es, el, (em - eq))
582+ let eu = et._1
583+ let ev = et._2
584+ let ew = et._3
585+ let ex = et._4
586+ let dS = bw(D(ex, bb), D(ew, ba))
587+ let dT = H(dS, b)
588+ let cT = if (dC)
583589 then nil
584- else [StringEntry(aa(toString(value(Y)), toBase58String(value(Z))), bn(er, es, dM, dQ, height, lastBlock.timestamp)), IntegerEntry(T(), dQ), IntegerEntry(U(height, lastBlock.timestamp), dQ)]
585- let dX = bt(D(ej, aY), D(ei, aX))
586- let dY = G(dX, b)
587- let dZ = {
588- let ev = (toInt(fraction(eh, em, dT)) * 2)
589- fraction((ep - ev), b, ev)
590+ else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bq(eu, ev, dP, dT, height, lastBlock.timestamp)), IntegerEntry(W(), dT), IntegerEntry(X(height, lastBlock.timestamp), dT)]
591+ let ea = bw(D(em, bb), D(el, ba))
592+ let eb = H(ea, b)
593+ let ec = {
594+ let ey = (toInt(fraction(ek, ep, dW)) * 2)
595+ fraction((es - ey), b, ey)
590596 }
591- $Tuple4(ep, cQ, dv, dZ)
597+ $Tuple4(es, cT, dy, ec)
592598 }
593599 else throw("Strict value is not equal to itself.")
594600 }
595601
596602
597-func ew () = {
598- let dr = getString(R())
599- if ($isInstanceOf(dr, "String"))
603+func ez () = {
604+ let du = getString(U())
605+ if ($isInstanceOf(du, "String"))
600606 then {
601- let ex = dr
602- fromBase58String(ex)
607+ let eA = du
608+ fromBase58String(eA)
603609 }
604- else if ($isInstanceOf(dr, "Unit"))
610+ else if ($isInstanceOf(du, "Unit"))
605611 then unit
606612 else throw("Match error")
607613 }
608614
609615
610-func ey () = {
611- let dr = getString(S())
612- if ($isInstanceOf(dr, "String"))
616+func eB () = {
617+ let du = getString(V())
618+ if ($isInstanceOf(du, "String"))
613619 then {
614- let ex = dr
615- fromBase58String(ex)
620+ let eA = du
621+ fromBase58String(eA)
616622 }
617- else if ($isInstanceOf(dr, "Unit"))
623+ else if ($isInstanceOf(du, "Unit"))
618624 then unit
619625 else throw("Match error")
620626 }
621627
622628
623-func ez (dg) = {
624- let dr = ew()
625- if ($isInstanceOf(dr, "ByteVector"))
629+func eC (dj) = {
630+ let du = ez()
631+ if ($isInstanceOf(du, "ByteVector"))
626632 then {
627- let eA = dr
628- (dg.callerPublicKey == eA)
633+ let eD = du
634+ (dj.callerPublicKey == eD)
629635 }
630- else if ($isInstanceOf(dr, "Unit"))
631- then (dg.caller == this)
636+ else if ($isInstanceOf(du, "Unit"))
637+ then (dj.caller == this)
632638 else throw("Match error")
633639 }
634640
635641
636-func eB (dg) = {
637- let eC = throw("Permission denied")
638- let dr = ew()
639- if ($isInstanceOf(dr, "ByteVector"))
642+func eE (dj) = {
643+ let eF = throw("Permission denied")
644+ let du = ez()
645+ if ($isInstanceOf(du, "ByteVector"))
640646 then {
641- let eA = dr
642- if ((dg.callerPublicKey == eA))
647+ let eD = du
648+ if ((dj.callerPublicKey == eD))
643649 then true
644- else eC
650+ else eF
645651 }
646- else if ($isInstanceOf(dr, "Unit"))
647- then if ((dg.caller == this))
652+ else if ($isInstanceOf(du, "Unit"))
653+ then if ((dj.caller == this))
648654 then true
649- else eC
655+ else eF
650656 else throw("Match error")
651657 }
652658
653659
654-@Callable(dg)
655-func calculateAmountOutForSwapREADONLY (eD,eE) = {
656- let eF = if ((eE == false))
660+@Callable(dj)
661+func calculateAmountOutForSwapREADONLY (eG,eH) = {
662+ let eI = if ((eH == false))
657663 then {
658- let eG = av(this, ac())
659- let eH = av(this, ab())
660- $Tuple2(eG, eH)
664+ let eJ = ay(this, af())
665+ let eK = ay(this, ae())
666+ $Tuple2(eJ, eK)
661667 }
662668 else {
663- let eG = av(this, ab())
664- let eH = av(this, ac())
665- $Tuple2(eG, eH)
669+ let eJ = ay(this, ae())
670+ let eK = ay(this, af())
671+ $Tuple2(eJ, eK)
666672 }
667- let eG = eF._1
668- let eH = eF._2
669- let eI = br(eH)
670- let eJ = br(eG)
671- let eK = ((eJ * eD) / (eI + eD))
672- $Tuple2(nil, eK)
673+ let eJ = eI._1
674+ let eK = eI._2
675+ let eL = bu(eK)
676+ let eM = bu(eJ)
677+ let eN = ((eM * eG) / (eL + eG))
678+ let eO = (eL * eM)
679+ let eP = ((bu(eK) + eG) * (bu(eJ) - eN))
680+ let eQ = if ((eP >= eO))
681+ then true
682+ else throw("new K is fewer error")
683+ if ((eQ == eQ))
684+ then $Tuple2(nil, eN)
685+ else throw("Strict value is not equal to itself.")
673686 }
674687
675688
676689
677-@Callable(dg)
678-func calculateAmountOutForSwapAndSendTokens (eD,eE,eL,eM) = {
679- let ef = [if ((value(dg.payments[0]).amount >= eD))
690+@Callable(dj)
691+func calculateAmountOutForSwapAndSendTokens (eG,eH,eR,eS) = {
692+ let ei = [if ((value(dj.payments[0]).amount >= eG))
680693 then true
681- else az("Wrong amount"), if ((dg.caller == addressFromStringValue(av(this, P()))))
694+ else aC("Wrong amount"), if ((dj.caller == addressFromStringValue(ay(this, S()))))
682695 then true
683- else az("Permission denied")]
684- if ((ef == ef))
696+ else aC("Permission denied")]
697+ if ((ei == ei))
685698 then {
686- let dh = value(dg.payments[0])
687- let eH = if ((dh.assetId == unit))
699+ let dk = value(dj.payments[0])
700+ let eK = if ((dk.assetId == unit))
688701 then toBase58String(toBytes("WAVES"))
689- else toBase58String(value(dh.assetId))
690- let eG = if ((eE == false))
691- then av(this, ac())
692- else av(this, ab())
693- let eI = (br(eH) - value(dg.payments[0]).amount)
694- let eJ = br(eG)
695- let eK = ((eJ * eD) / (eI + eD))
696- let eN = if ((eK >= eL))
702+ else toBase58String(value(dk.assetId))
703+ let eJ = if ((eH == false))
704+ then ay(this, af())
705+ else ay(this, ae())
706+ let eL = (bu(eK) - value(dj.payments[0]).amount)
707+ let eM = bu(eJ)
708+ let eN = ((eM * eG) / (eL + eG))
709+ let eO = (eL * eM)
710+ let eP = (bu(eK) * (bu(eJ) - eN))
711+ let eQ = if ((eP >= eO))
697712 then true
698- else throw("Exchange result is fewer coins than expected")
699- if ((eN == eN))
700- then [ScriptTransfer(addressFromStringValue(eM), eK, if ((eH == "WAVES"))
701- then unit
702- else fromBase58String(eG))]
713+ else throw("new K is fewer error")
714+ if ((eQ == eQ))
715+ then {
716+ let eT = if ((eN >= eR))
717+ then true
718+ else throw("Exchange result is fewer coins than expected")
719+ if ((eT == eT))
720+ then [ScriptTransfer(addressFromStringValue(eS), eN, if ((eK == "WAVES"))
721+ then unit
722+ else fromBase58String(eJ))]
723+ else throw("Strict value is not equal to itself.")
724+ }
703725 else throw("Strict value is not equal to itself.")
704726 }
705727 else throw("Strict value is not equal to itself.")
706728 }
707729
708730
709731
710-@Callable(dg)
711-func setManager (eO) = {
712- let eP = eB(dg)
713- if ((eP == eP))
732+@Callable(dj)
733+func setManager (eU) = {
734+ let eV = eE(dj)
735+ if ((eV == eV))
714736 then {
715- let eQ = fromBase58String(eO)
716- if ((eQ == eQ))
717- then [StringEntry(S(), eO)]
737+ let eW = fromBase58String(eU)
738+ if ((eW == eW))
739+ then [StringEntry(V(), eU)]
718740 else throw("Strict value is not equal to itself.")
719741 }
720742 else throw("Strict value is not equal to itself.")
721743 }
722744
723745
724746
725-@Callable(dg)
747+@Callable(dj)
726748 func confirmManager () = {
727- let eR = ey()
728- let eS = if (isDefined(eR))
749+ let eX = eB()
750+ let eY = if (isDefined(eX))
729751 then true
730752 else throw("No pending manager")
731- if ((eS == eS))
753+ if ((eY == eY))
732754 then {
733- let eT = if ((dg.callerPublicKey == value(eR)))
755+ let eZ = if ((dj.callerPublicKey == value(eX)))
734756 then true
735757 else throw("You are not pending manager")
736- if ((eT == eT))
737- then [StringEntry(R(), toBase58String(value(eR))), DeleteEntry(S())]
758+ if ((eZ == eZ))
759+ then [StringEntry(U(), toBase58String(value(eX))), DeleteEntry(V())]
738760 else throw("Strict value is not equal to itself.")
739761 }
740762 else throw("Strict value is not equal to itself.")
741763 }
742764
743765
744766
745-@Callable(dg)
746-func put (cl,eU) = if ((0 > cl))
767+@Callable(dj)
768+func put (co,fa) = if ((0 > co))
747769 then throw("Invalid slippageTolerance passed")
748770 else {
749- let dm = dj(dg, cl, true)
750- let cN = dm._2
751- let bS = dm._7
752- let cj = dm._9
753- let cO = dm._10
754- let cP = dm._11
755- let eV = dm._12
756- let eW = dm._13
757- let dp = invoke(aB, "emit", [cN], nil)
758- if ((dp == dp))
771+ let dp = dm(dj, co, true)
772+ let cQ = dp._2
773+ let bV = dp._7
774+ let cm = dp._9
775+ let cR = dp._10
776+ let cS = dp._11
777+ let fb = dp._12
778+ let fc = dp._13
779+ let ds = invoke(aE, "emit", [cQ], nil)
780+ if ((ds == ds))
759781 then {
760- let dq = {
761- let dr = dp
762- if ($isInstanceOf(dr, "Address"))
782+ let dt = {
783+ let du = ds
784+ if ($isInstanceOf(du, "Address"))
763785 then {
764- let ds = dr
765- invoke(ds, "emit", [cN], nil)
786+ let dv = du
787+ invoke(dv, "emit", [cQ], nil)
766788 }
767789 else unit
768790 }
769- if ((dq == dq))
791+ if ((dt == dt))
770792 then {
771- let eX = if ((cO > 0))
772- then invoke(bb, "put", nil, [AttachedPayment(eV, cO)])
793+ let fd = if ((cR > 0))
794+ then invoke(be, "put", nil, [AttachedPayment(fb, cR)])
773795 else nil
774- if ((eX == eX))
796+ if ((fd == fd))
775797 then {
776- let eY = if ((cP > 0))
777- then invoke(bb, "put", nil, [AttachedPayment(eW, cP)])
798+ let fe = if ((cS > 0))
799+ then invoke(be, "put", nil, [AttachedPayment(fc, cS)])
778800 else nil
779- if ((eY == eY))
801+ if ((fe == fe))
780802 then {
781- let eZ = if (eU)
803+ let ff = if (fa)
782804 then {
783- let fa = invoke(ba, "stake", nil, [AttachedPayment(bS, cN)])
784- if ((fa == fa))
805+ let fg = invoke(bd, "stake", nil, [AttachedPayment(bV, cQ)])
806+ if ((fg == fg))
785807 then nil
786808 else throw("Strict value is not equal to itself.")
787809 }
788- else [ScriptTransfer(dg.caller, cN, bS)]
789- (cj ++ eZ)
810+ else [ScriptTransfer(dj.caller, cQ, bV)]
811+ (cm ++ ff)
790812 }
791813 else throw("Strict value is not equal to itself.")
792814 }
793815 else throw("Strict value is not equal to itself.")
794816 }
795817 else throw("Strict value is not equal to itself.")
796818 }
797819 else throw("Strict value is not equal to itself.")
798820 }
799821
800822
801823
802-@Callable(dg)
803-func putForFree (fb) = if ((0 > fb))
824+@Callable(dj)
825+func putForFree (fh) = if ((0 > fh))
804826 then throw("Invalid value passed")
805827 else {
806- let dm = dj(dg, fb, false)
807- dm._9
828+ let dp = dm(dj, fh, false)
829+ dp._9
808830 }
809831
810832
811833
812-@Callable(dg)
813-func putOneTkn (fc,fd) = {
814- let fe = {
815- let aE = invoke(aB, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
816- if ($isInstanceOf(aE, "Boolean"))
817- then aE
818- else throw(($getType(aE) + " couldn't be cast to Boolean"))
834+@Callable(dj)
835+func putOneTkn (fi,fj) = {
836+ let fk = {
837+ let aH = invoke(aE, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
838+ if ($isInstanceOf(aH, "Boolean"))
839+ then aH
840+ else throw(($getType(aH) + " couldn't be cast to Boolean"))
819841 }
820- let ff = if (if (if (aG())
842+ let fl = if (if (if (aJ())
821843 then true
822- else (aT == l))
844+ else (aW == l))
823845 then true
824- else (aT == n))
846+ else (aW == n))
825847 then true
826- else fe
827- let ef = [if (if (!(ff))
848+ else fk
849+ let ei = [if (if (!(fl))
828850 then true
829- else ez(dg))
851+ else eC(dj))
830852 then true
831- else az("put operation is blocked by admin"), if ((size(dg.payments) == 1))
853+ else aC("put operation is blocked by admin"), if ((size(dj.payments) == 1))
832854 then true
833- else az("exactly 1 payment are expected")]
834- if ((ef == ef))
855+ else aC("exactly 1 payment are expected")]
856+ if ((ei == ei))
835857 then {
836- let fg = dg.payments[0]
837- let dy = fg.assetId
838- let dx = fg.amount
839- let Y = dg.caller
840- let Z = dg.transactionId
841- let fh = dw(dx, dy, Y, Z)
842- if ((fh == fh))
858+ let fm = dj.payments[0]
859+ let dB = fm.assetId
860+ let dA = fm.amount
861+ let ab = dj.caller
862+ let ac = dj.transactionId
863+ let fn = dz(dA, dB, ab, ac)
864+ if ((fn == fn))
843865 then {
844- let fi = fh._4
845- let dv = fh._3
846- let cQ = fh._2
847- let fj = fh._1
848- let fk = if (if ((fc > 0))
849- then (fc > fj)
866+ let fo = fn._4
867+ let dy = fn._3
868+ let cT = fn._2
869+ let fp = fn._1
870+ let fq = if (if ((fi > 0))
871+ then (fi > fp)
850872 else false)
851- then az(makeString(["amount to receive is less than ", toString(fc)], ""))
852- else fj
853- let dp = dn(fk)
854- if ((dp == dp))
873+ then aC(makeString(["amount to receive is less than ", toString(fi)], ""))
874+ else fp
875+ let ds = dq(fq)
876+ if ((ds == ds))
855877 then {
856- let eZ = if (fd)
878+ let ff = if (fj)
857879 then {
858- let fl = invoke(ba, "stake", nil, [AttachedPayment(aU, fk)])
859- if ((fl == fl))
880+ let fr = invoke(bd, "stake", nil, [AttachedPayment(aX, fq)])
881+ if ((fr == fr))
860882 then nil
861883 else throw("Strict value is not equal to itself.")
862884 }
863- else [ScriptTransfer(dg.caller, fk, aU)]
864- let fm = if ((dv > 0))
865- then [ScriptTransfer(aC, dv, dy)]
885+ else [ScriptTransfer(dj.caller, fq, aX)]
886+ let fs = if ((dy > 0))
887+ then [ScriptTransfer(aF, dy, dB)]
866888 else nil
867- $Tuple2(((cQ ++ eZ) ++ fm), fk)
889+ $Tuple2(((cT ++ ff) ++ fs), fq)
868890 }
869891 else throw("Strict value is not equal to itself.")
870892 }
871893 else throw("Strict value is not equal to itself.")
872894 }
873895 else throw("Strict value is not equal to itself.")
874896 }
875897
876898
877899
878-@Callable(dg)
879-func putOneTknREADONLY (dy,dx) = {
880- let fn = dw(dx, aL(dy), unit, unit)
881- let fj = fn._1
882- let cQ = fn._2
883- let dv = fn._3
884- let fi = fn._4
885- $Tuple2(nil, $Tuple3(fj, dv, fi))
900+@Callable(dj)
901+func putOneTknREADONLY (dB,dA) = {
902+ let ft = dz(dA, aO(dB), unit, unit)
903+ let fp = ft._1
904+ let cT = ft._2
905+ let dy = ft._3
906+ let fo = ft._4
907+ $Tuple2(nil, $Tuple3(fp, dy, fo))
886908 }
887909
888910
889911
890-@Callable(dg)
891-func getOneTkn (fo,fc) = {
892- let fe = {
893- let aE = invoke(aB, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
894- if ($isInstanceOf(aE, "Boolean"))
895- then aE
896- else throw(($getType(aE) + " couldn't be cast to Boolean"))
912+@Callable(dj)
913+func getOneTkn (fu,fi) = {
914+ let fk = {
915+ let aH = invoke(aE, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
916+ if ($isInstanceOf(aH, "Boolean"))
917+ then aH
918+ else throw(($getType(aH) + " couldn't be cast to Boolean"))
897919 }
898- let fp = if (if (aG())
920+ let fv = if (if (aJ())
899921 then true
900- else (aT == n))
922+ else (aW == n))
901923 then true
902- else fe
903- let ef = [if (if (!(fp))
924+ else fk
925+ let ei = [if (if (!(fv))
904926 then true
905- else ez(dg))
927+ else eC(dj))
906928 then true
907- else az("get operation is blocked by admin"), if ((size(dg.payments) == 1))
929+ else aC("get operation is blocked by admin"), if ((size(dj.payments) == 1))
908930 then true
909- else az("exactly 1 payment are expected")]
910- if ((ef == ef))
931+ else aC("exactly 1 payment are expected")]
932+ if ((ei == ei))
911933 then {
912- let ee = aL(fo)
913- let fg = dg.payments[0]
914- let dy = fg.assetId
915- let dM = fg.amount
916- let Y = dg.caller
917- let Z = dg.transactionId
918- let fq = ed(ee, dM, dy, Y, Z)
919- if ((fq == fq))
934+ let eh = aO(fu)
935+ let fm = dj.payments[0]
936+ let dB = fm.assetId
937+ let dP = fm.amount
938+ let ab = dj.caller
939+ let ac = dj.transactionId
940+ let fw = eg(eh, dP, dB, ab, ac)
941+ if ((fw == fw))
920942 then {
921- let fi = fq._4
922- let dv = fq._3
923- let cQ = fq._2
924- let fr = fq._1
925- let do = if (if ((fc > 0))
926- then (fc > fr)
943+ let fo = fw._4
944+ let dy = fw._3
945+ let cT = fw._2
946+ let fx = fw._1
947+ let dr = if (if ((fi > 0))
948+ then (fi > fx)
927949 else false)
928- then az(makeString(["amount to receive is less than ", toString(fc)], ""))
929- else fr
930- let fs = invoke(aB, "burn", [dM], [AttachedPayment(dy, dM)])
931- if ((fs == fs))
950+ then aC(makeString(["amount to receive is less than ", toString(fi)], ""))
951+ else fx
952+ let fy = invoke(aE, "burn", [dP], [AttachedPayment(dB, dP)])
953+ if ((fy == fy))
932954 then {
933- let ft = [ScriptTransfer(Y, do, ee)]
934- let fm = if ((dv > 0))
935- then [ScriptTransfer(aC, dv, ee)]
955+ let fz = [ScriptTransfer(ab, dr, eh)]
956+ let fs = if ((dy > 0))
957+ then [ScriptTransfer(aF, dy, eh)]
936958 else nil
937- $Tuple2(((cQ ++ ft) ++ fm), do)
959+ $Tuple2(((cT ++ fz) ++ fs), dr)
938960 }
939961 else throw("Strict value is not equal to itself.")
940962 }
941963 else throw("Strict value is not equal to itself.")
942964 }
943965 else throw("Strict value is not equal to itself.")
944966 }
945967
946968
947969
948-@Callable(dg)
949-func getOneTknREADONLY (ee,dM) = {
950- let fu = ed(aL(ee), dM, aU, unit, unit)
951- let fr = fu._1
952- let cQ = fu._2
953- let dv = fu._3
954- let fi = fu._4
955- $Tuple2(nil, $Tuple3(fr, dv, fi))
970+@Callable(dj)
971+func getOneTknREADONLY (eh,dP) = {
972+ let fA = eg(aO(eh), dP, aX, unit, unit)
973+ let fx = fA._1
974+ let cT = fA._2
975+ let dy = fA._3
976+ let fo = fA._4
977+ $Tuple2(nil, $Tuple3(fx, dy, fo))
956978 }
957979
958980
959981
960-@Callable(dg)
961-func unstakeAndGetOneTkn (fv,fo,fc) = {
962- let fe = {
963- let aE = invoke(aB, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
964- if ($isInstanceOf(aE, "Boolean"))
965- then aE
966- else throw(($getType(aE) + " couldn't be cast to Boolean"))
982+@Callable(dj)
983+func unstakeAndGetOneTkn (fB,fu,fi) = {
984+ let fk = {
985+ let aH = invoke(aE, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
986+ if ($isInstanceOf(aH, "Boolean"))
987+ then aH
988+ else throw(($getType(aH) + " couldn't be cast to Boolean"))
967989 }
968- let fp = if (if (aG())
990+ let fv = if (if (aJ())
969991 then true
970- else (aT == n))
992+ else (aW == n))
971993 then true
972- else fe
973- let ef = [if (if (!(fp))
994+ else fk
995+ let ei = [if (if (!(fv))
974996 then true
975- else ez(dg))
997+ else eC(dj))
976998 then true
977- else az("get operation is blocked by admin"), if ((size(dg.payments) == 0))
999+ else aC("get operation is blocked by admin"), if ((size(dj.payments) == 0))
9781000 then true
979- else az("no payments are expected")]
980- if ((ef == ef))
1001+ else aC("no payments are expected")]
1002+ if ((ei == ei))
9811003 then {
982- let ee = aL(fo)
983- let Y = dg.caller
984- let Z = dg.transactionId
985- let fw = invoke(ba, "unstake", [toBase58String(aU), fv], nil)
986- if ((fw == fw))
1004+ let eh = aO(fu)
1005+ let ab = dj.caller
1006+ let ac = dj.transactionId
1007+ let fC = invoke(bd, "unstake", [toBase58String(aX), fB], nil)
1008+ if ((fC == fC))
9871009 then {
988- let fx = ed(ee, fv, aU, Y, Z)
989- if ((fx == fx))
1010+ let fD = eg(eh, fB, aX, ab, ac)
1011+ if ((fD == fD))
9901012 then {
991- let fi = fx._4
992- let dv = fx._3
993- let cQ = fx._2
994- let fr = fx._1
995- let do = if (if ((fc > 0))
996- then (fc > fr)
1013+ let fo = fD._4
1014+ let dy = fD._3
1015+ let cT = fD._2
1016+ let fx = fD._1
1017+ let dr = if (if ((fi > 0))
1018+ then (fi > fx)
9971019 else false)
998- then az(makeString(["amount to receive is less than ", toString(fc)], ""))
999- else fr
1000- let fs = invoke(aB, "burn", [fv], [AttachedPayment(aU, fv)])
1001- if ((fs == fs))
1020+ then aC(makeString(["amount to receive is less than ", toString(fi)], ""))
1021+ else fx
1022+ let fy = invoke(aE, "burn", [fB], [AttachedPayment(aX, fB)])
1023+ if ((fy == fy))
10021024 then {
1003- let ft = [ScriptTransfer(dg.caller, do, ee)]
1004- let fm = if ((dv > 0))
1005- then [ScriptTransfer(aC, dv, ee)]
1025+ let fz = [ScriptTransfer(dj.caller, dr, eh)]
1026+ let fs = if ((dy > 0))
1027+ then [ScriptTransfer(aF, dy, eh)]
10061028 else nil
1007- $Tuple2(((cQ ++ ft) ++ fm), do)
1029+ $Tuple2(((cT ++ fz) ++ fs), dr)
10081030 }
10091031 else throw("Strict value is not equal to itself.")
10101032 }
10111033 else throw("Strict value is not equal to itself.")
10121034 }
10131035 else throw("Strict value is not equal to itself.")
10141036 }
10151037 else throw("Strict value is not equal to itself.")
10161038 }
10171039
10181040
10191041
1020-@Callable(dg)
1042+@Callable(dj)
10211043 func get () = {
1022- let cB = df(dg)
1023- let fy = cB._1
1024- let ci = cB._2
1025- let di = cB._3
1026- let bQ = cB._4
1027- let cj = cB._5
1028- let fz = invoke(aB, "burn", [di], [AttachedPayment(bQ, di)])
1029- if ((fz == fz))
1030- then cj
1044+ let cE = di(dj)
1045+ let fE = cE._1
1046+ let cl = cE._2
1047+ let dl = cE._3
1048+ let bT = cE._4
1049+ let cm = cE._5
1050+ let fF = invoke(aE, "burn", [dl], [AttachedPayment(bT, dl)])
1051+ if ((fF == fF))
1052+ then cm
10311053 else throw("Strict value is not equal to itself.")
10321054 }
10331055
10341056
10351057
1036-@Callable(dg)
1037-func getNoLess (fA,fB) = {
1038- let cB = df(dg)
1039- let ch = cB._1
1040- let ci = cB._2
1041- let di = cB._3
1042- let bQ = cB._4
1043- let cj = cB._5
1044- if ((fA > ch))
1045- then throw(((("noLessThenAmtAsset failed: " + toString(ch)) + " < ") + toString(fA)))
1046- else if ((fB > ci))
1047- then throw(((("noLessThenPriceAsset failed: " + toString(ci)) + " < ") + toString(fB)))
1058+@Callable(dj)
1059+func getNoLess (fG,fH) = {
1060+ let cE = di(dj)
1061+ let ck = cE._1
1062+ let cl = cE._2
1063+ let dl = cE._3
1064+ let bT = cE._4
1065+ let cm = cE._5
1066+ if ((fG > ck))
1067+ then throw(((("noLessThenAmtAsset failed: " + toString(ck)) + " < ") + toString(fG)))
1068+ else if ((fH > cl))
1069+ then throw(((("noLessThenPriceAsset failed: " + toString(cl)) + " < ") + toString(fH)))
10481070 else {
1049- let fz = invoke(aB, "burn", [di], [AttachedPayment(bQ, di)])
1050- if ((fz == fz))
1051- then cj
1071+ let fF = invoke(aE, "burn", [dl], [AttachedPayment(bT, dl)])
1072+ if ((fF == fF))
1073+ then cm
10521074 else throw("Strict value is not equal to itself.")
10531075 }
10541076 }
10551077
10561078
10571079
1058-@Callable(dg)
1059-func unstakeAndGet (do) = {
1060- let fC = if ((size(dg.payments) != 0))
1080+@Callable(dj)
1081+func unstakeAndGet (dr) = {
1082+ let fI = if ((size(dj.payments) != 0))
10611083 then throw("No payments are expected")
10621084 else true
1063- if ((fC == fC))
1085+ if ((fI == fI))
10641086 then {
1065- let bF = aI()
1066- let bS = fromBase58String(bF[q])
1067- let fw = invoke(ba, "unstake", [toBase58String(bS), do], nil)
1068- if ((fw == fw))
1087+ let bI = aL()
1088+ let bV = fromBase58String(bI[q])
1089+ let fC = invoke(bd, "unstake", [toBase58String(bV), dr], nil)
1090+ if ((fC == fC))
10691091 then {
1070- let cB = bO(toBase58String(dg.transactionId), toBase58String(bS), do, dg.caller)
1071- let bV = parseIntValue(cB._9)
1072- let cj = cB._10
1073- let fD = if (if (aG())
1092+ let cE = bR(toBase58String(dj.transactionId), toBase58String(bV), dr, dj.caller)
1093+ let bY = parseIntValue(cE._9)
1094+ let cm = cE._10
1095+ let fJ = if (if (aJ())
10741096 then true
1075- else (bV == n))
1076- then throw(("Get operation is blocked by admin. Status = " + toString(bV)))
1097+ else (bY == n))
1098+ then throw(("Get operation is blocked by admin. Status = " + toString(bY)))
10771099 else true
1078- if ((fD == fD))
1100+ if ((fJ == fJ))
10791101 then {
1080- let fz = invoke(aB, "burn", [do], [AttachedPayment(bS, do)])
1081- if ((fz == fz))
1082- then cj
1102+ let fF = invoke(aE, "burn", [dr], [AttachedPayment(bV, dr)])
1103+ if ((fF == fF))
1104+ then cm
10831105 else throw("Strict value is not equal to itself.")
10841106 }
10851107 else throw("Strict value is not equal to itself.")
10861108 }
10871109 else throw("Strict value is not equal to itself.")
10881110 }
10891111 else throw("Strict value is not equal to itself.")
10901112 }
10911113
10921114
10931115
1094-@Callable(dg)
1095-func unstakeAndGetNoLess (fv,fE,fB) = {
1096- let fp = if (aG())
1116+@Callable(dj)
1117+func unstakeAndGetNoLess (fB,fK,fH) = {
1118+ let fv = if (aJ())
10971119 then true
1098- else (aT == n)
1099- let ef = [if (!(fp))
1120+ else (aW == n)
1121+ let ei = [if (!(fv))
11001122 then true
1101- else throw("get operation is blocked by admin"), if ((size(dg.payments) == 0))
1123+ else throw("get operation is blocked by admin"), if ((size(dj.payments) == 0))
11021124 then true
11031125 else throw("no payments are expected")]
1104- if ((ef == ef))
1126+ if ((ei == ei))
11051127 then {
1106- let fw = invoke(ba, "unstake", [toBase58String(aU), fv], nil)
1107- if ((fw == fw))
1128+ let fC = invoke(bd, "unstake", [toBase58String(aX), fB], nil)
1129+ if ((fC == fC))
11081130 then {
1109- let cB = bO(toBase58String(dg.transactionId), toBase58String(aU), fv, dg.caller)
1110- let ch = cB._1
1111- let ci = cB._2
1112- let cj = cB._10
1113- let fF = [if ((ch >= fE))
1131+ let cE = bR(toBase58String(dj.transactionId), toBase58String(aX), fB, dj.caller)
1132+ let ck = cE._1
1133+ let cl = cE._2
1134+ let cm = cE._10
1135+ let fL = [if ((ck >= fK))
11141136 then true
1115- else throw(makeString(["amount asset amount to receive is less than ", toString(fE)], "")), if ((ci >= fB))
1137+ else throw(makeString(["amount asset amount to receive is less than ", toString(fK)], "")), if ((cl >= fH))
11161138 then true
1117- else throw(makeString(["price asset amount to receive is less than ", toString(fB)], ""))]
1118- if ((fF == fF))
1139+ else throw(makeString(["price asset amount to receive is less than ", toString(fH)], ""))]
1140+ if ((fL == fL))
11191141 then {
1120- let fz = invoke(aB, "burn", [fv], [AttachedPayment(aU, fv)])
1121- if ((fz == fz))
1122- then cj
1142+ let fF = invoke(aE, "burn", [fB], [AttachedPayment(aX, fB)])
1143+ if ((fF == fF))
1144+ then cm
11231145 else throw("Strict value is not equal to itself.")
11241146 }
11251147 else throw("Strict value is not equal to itself.")
11261148 }
11271149 else throw("Strict value is not equal to itself.")
11281150 }
11291151 else throw("Strict value is not equal to itself.")
11301152 }
11311153
11321154
11331155
1134-@Callable(dg)
1135-func activate (fG,fH) = if ((toString(dg.caller) != toString(aB)))
1156+@Callable(dj)
1157+func activate (fM,fN) = if ((toString(dj.caller) != toString(aE)))
11361158 then throw("permissions denied")
1137- else $Tuple2([StringEntry(ab(), fG), StringEntry(ac(), fH)], "success")
1159+ else $Tuple2([StringEntry(ae(), fM), StringEntry(af(), fN)], "success")
11381160
11391161
11401162
1141-@Callable(dg)
1142-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aI())
1163+@Callable(dj)
1164+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aL())
11431165
11441166
11451167
1146-@Callable(dg)
1147-func getAccBalanceWrapperREADONLY (bs) = $Tuple2(nil, br(bs))
1168+@Callable(dj)
1169+func getAccBalanceWrapperREADONLY (bv) = $Tuple2(nil, bu(bv))
11481170
11491171
11501172
1151-@Callable(dg)
1152-func calcPricesWrapperREADONLY (bz,bA,bE) = {
1153- let bN = bD(bz, bA, bE)
1154- $Tuple2(nil, [toString(bN[0]), toString(bN[1]), toString(bN[2])])
1173+@Callable(dj)
1174+func calcPricesWrapperREADONLY (bC,bD,bH) = {
1175+ let bQ = bG(bC, bD, bH)
1176+ $Tuple2(nil, [toString(bQ[0]), toString(bQ[1]), toString(bQ[2])])
11551177 }
11561178
11571179
11581180
1159-@Callable(dg)
1181+@Callable(dj)
11601182 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
11611183
11621184
11631185
1164-@Callable(dg)
1165-func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
1186+@Callable(dj)
1187+func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
11661188
11671189
11681190
1169-@Callable(dg)
1170-func calcPriceBigIntWrapperREADONLY (bu,bv) = $Tuple2(nil, toString(bt(parseBigIntValue(bu), parseBigIntValue(bv))))
1191+@Callable(dj)
1192+func calcPriceBigIntWrapperREADONLY (bx,by) = $Tuple2(nil, toString(bw(parseBigIntValue(bx), parseBigIntValue(by))))
11711193
11721194
11731195
1174-@Callable(dg)
1175-func estimatePutOperationWrapperREADONLY (bP,cl,cm,cn,co,cp,Y,cq,cr) = $Tuple2(nil, ck(bP, cl, cm, cn, co, cp, Y, cq, cr))
1196+@Callable(dj)
1197+func estimatePutOperationWrapperREADONLY (bS,co,cp,cq,cr,cs,ab,ct,cu) = $Tuple2(nil, cn(bS, co, cp, cq, cr, cs, ab, ct, cu))
11761198
11771199
11781200
1179-@Callable(dg)
1180-func estimateGetOperationWrapperREADONLY (bP,bQ,bR,Y) = {
1181- let cB = bO(bP, bQ, bR, addressFromStringValue(Y))
1182- $Tuple2(nil, $Tuple10(cB._1, cB._2, cB._3, cB._4, cB._5, cB._6, cB._7, toString(cB._8), cB._9, cB._10))
1201+@Callable(dj)
1202+func estimateGetOperationWrapperREADONLY (bS,bT,bU,ab) = {
1203+ let cE = bR(bS, bT, bU, addressFromStringValue(ab))
1204+ $Tuple2(nil, $Tuple10(cE._1, cE._2, cE._3, cE._4, cE._5, cE._6, cE._7, toString(cE._8), cE._9, cE._10))
11831205 }
11841206
11851207
11861208
1187-@Callable(dg)
1209+@Callable(dj)
11881210 func statsREADONLY () = {
1189- let bF = aI()
1190- let bS = fromBase58String(bF[q])
1191- let cT = bF[r]
1192- let cU = bF[s]
1193- let cu = bF[v]
1194- let cv = bF[w]
1195- let bG = parseIntValue(bF[t])
1196- let bH = parseIntValue(bF[u])
1197- let fI = valueOrErrorMessage(assetInfo(bS), (("Asset " + toBase58String(bS)) + " doesn't exist")).quantity
1198- let cV = br(cT)
1199- let cW = br(cU)
1200- let fJ = if ((fI == 0))
1211+ let bI = aL()
1212+ let bV = fromBase58String(bI[q])
1213+ let cW = bI[r]
1214+ let cX = bI[s]
1215+ let cx = bI[v]
1216+ let cy = bI[w]
1217+ let bJ = parseIntValue(bI[t])
1218+ let bK = parseIntValue(bI[u])
1219+ let fO = valueOrErrorMessage(assetInfo(bV), (("Asset " + toBase58String(bV)) + " doesn't exist")).quantity
1220+ let cY = bu(cW)
1221+ let cZ = bu(cX)
1222+ let fP = if ((fO == 0))
12011223 then [e, e, e]
1202- else bD(cV, cW, fI)
1203- let cc = 0
1204- let fK = G(fJ[1], b)
1205- let fL = G(fJ[2], b)
1206- let fM = value(getInteger(aB, an(toString(this))))
1207- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cV), toString(cW), toString(fI), toString(cc), toString(fK), toString(fL), toString(fM)], j))
1224+ else bG(cY, cZ, fO)
1225+ let cf = 0
1226+ let fQ = H(fP[1], b)
1227+ let fR = H(fP[2], b)
1228+ let fS = value(getInteger(aE, aq(toString(this))))
1229+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cY), toString(cZ), toString(fO), toString(cf), toString(fQ), toString(fR), toString(fS)], j))
12081230 }
12091231
12101232
12111233
1212-@Callable(dg)
1213-func evaluatePutByAmountAssetREADONLY (cm) = {
1214- let bF = aI()
1215- let bS = fromBase58String(bF[q])
1216- let cs = bF[r]
1217- let bT = fromBase58String(cs)
1218- let ct = bF[s]
1219- let bU = fromBase58String(ct)
1220- let bG = parseIntValue(bF[t])
1221- let bH = parseIntValue(bF[u])
1222- let bV = bF[p]
1223- let fI = valueOrErrorMessage(assetInfo(bS), (("Asset " + toBase58String(bS)) + " doesn't exist")).quantity
1224- let cV = br(cs)
1225- let cW = br(ct)
1226- let bB = D(cV, bG)
1227- let bC = D(cW, bH)
1228- let cb = if ((fI == 0))
1234+@Callable(dj)
1235+func evaluatePutByAmountAssetREADONLY (cp) = {
1236+ let bI = aL()
1237+ let bV = fromBase58String(bI[q])
1238+ let cv = bI[r]
1239+ let bW = fromBase58String(cv)
1240+ let cw = bI[s]
1241+ let bX = fromBase58String(cw)
1242+ let bJ = parseIntValue(bI[t])
1243+ let bK = parseIntValue(bI[u])
1244+ let bY = bI[p]
1245+ let fO = valueOrErrorMessage(assetInfo(bV), (("Asset " + toBase58String(bV)) + " doesn't exist")).quantity
1246+ let cY = bu(cv)
1247+ let cZ = bu(cw)
1248+ let bE = D(cY, bJ)
1249+ let bF = D(cZ, bK)
1250+ let ce = if ((fO == 0))
12291251 then e
1230- else bt(bC, bB)
1231- let cy = D(cm, bG)
1232- let cz = fraction(cy, cb, d)
1233- let co = G(cz, bH)
1234- let dm = ck("", 500000, cm, bT, co, bU, "", true, false)
1235- let cJ = dm._1
1236- let fN = dm._3
1237- let bX = dm._4
1238- let bZ = dm._5
1239- let bW = dm._6
1240- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cJ), toString(G(cb, b)), toString(bX), toString(bZ), toString(bW), bV, toString(cm), toString(co)], j))
1252+ else bw(bF, bE)
1253+ let cB = D(cp, bJ)
1254+ let cC = fraction(cB, ce, d)
1255+ let cr = H(cC, bK)
1256+ let dp = cn("", 500000, cp, bW, cr, bX, "", true, false)
1257+ let cM = dp._1
1258+ let fT = dp._3
1259+ let ca = dp._4
1260+ let cc = dp._5
1261+ let bZ = dp._6
1262+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cM), toString(H(ce, b)), toString(ca), toString(cc), toString(bZ), bY, toString(cp), toString(cr)], j))
12411263 }
12421264
12431265
12441266
1245-@Callable(dg)
1246-func evaluatePutByPriceAssetREADONLY (co) = {
1247- let bF = aI()
1248- let bS = fromBase58String(bF[q])
1249- let cs = bF[r]
1250- let bT = fromBase58String(cs)
1251- let ct = bF[s]
1252- let bU = fromBase58String(ct)
1253- let bG = parseIntValue(bF[t])
1254- let bH = parseIntValue(bF[u])
1255- let bV = bF[p]
1256- let fI = valueOrErrorMessage(assetInfo(bS), (("Asset " + toBase58String(bS)) + " doesn't exist")).quantity
1257- let fO = br(cs)
1258- let fP = br(ct)
1259- let fQ = D(fO, bG)
1260- let fR = D(fP, bH)
1261- let cb = if ((fI == 0))
1267+@Callable(dj)
1268+func evaluatePutByPriceAssetREADONLY (cr) = {
1269+ let bI = aL()
1270+ let bV = fromBase58String(bI[q])
1271+ let cv = bI[r]
1272+ let bW = fromBase58String(cv)
1273+ let cw = bI[s]
1274+ let bX = fromBase58String(cw)
1275+ let bJ = parseIntValue(bI[t])
1276+ let bK = parseIntValue(bI[u])
1277+ let bY = bI[p]
1278+ let fO = valueOrErrorMessage(assetInfo(bV), (("Asset " + toBase58String(bV)) + " doesn't exist")).quantity
1279+ let fU = bu(cv)
1280+ let fV = bu(cw)
1281+ let fW = D(fU, bJ)
1282+ let fX = D(fV, bK)
1283+ let ce = if ((fO == 0))
12621284 then e
1263- else bt(fR, fQ)
1264- let cz = D(co, bH)
1265- let cy = fraction(cz, d, cb)
1266- let cm = G(cy, bG)
1267- let dm = ck("", 500000, cm, bT, co, bU, "", true, false)
1268- let cJ = dm._1
1269- let fN = dm._3
1270- let bX = dm._4
1271- let bZ = dm._5
1272- let bW = dm._6
1273- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cJ), toString(G(cb, b)), toString(bX), toString(bZ), toString(bW), bV, toString(cm), toString(co)], j))
1285+ else bw(fX, fW)
1286+ let cC = D(cr, bK)
1287+ let cB = fraction(cC, d, ce)
1288+ let cp = H(cB, bJ)
1289+ let dp = cn("", 500000, cp, bW, cr, bX, "", true, false)
1290+ let cM = dp._1
1291+ let fT = dp._3
1292+ let ca = dp._4
1293+ let cc = dp._5
1294+ let bZ = dp._6
1295+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cM), toString(H(ce, b)), toString(ca), toString(cc), toString(bZ), bY, toString(cp), toString(cr)], j))
12741296 }
12751297
12761298
12771299
1278-@Callable(dg)
1279-func evaluateGetREADONLY (fS,fT) = {
1280- let cB = bO("", fS, fT, this)
1281- let ch = cB._1
1282- let ci = cB._2
1283- let bX = cB._5
1284- let bZ = cB._6
1285- let bW = cB._7
1286- let cc = cB._8
1287- let bV = parseIntValue(cB._9)
1288- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(ch), toString(ci), toString(bX), toString(bZ), toString(bW), toString(cc), toString(bV)], j))
1300+@Callable(dj)
1301+func evaluateGetREADONLY (fY,fZ) = {
1302+ let cE = bR("", fY, fZ, this)
1303+ let ck = cE._1
1304+ let cl = cE._2
1305+ let ca = cE._5
1306+ let cc = cE._6
1307+ let bZ = cE._7
1308+ let cf = cE._8
1309+ let bY = parseIntValue(cE._9)
1310+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(ck), toString(cl), toString(ca), toString(cc), toString(bZ), toString(cf), toString(bY)], j))
12891311 }
12901312
12911313
1292-@Verifier(fU)
1293-func fV () = {
1294- let fW = {
1295- let dr = ew()
1296- if ($isInstanceOf(dr, "ByteVector"))
1314+@Verifier(ga)
1315+func gb () = {
1316+ let gc = {
1317+ let du = ez()
1318+ if ($isInstanceOf(du, "ByteVector"))
12971319 then {
1298- let eA = dr
1299- eA
1320+ let eD = du
1321+ eD
13001322 }
1301- else if ($isInstanceOf(dr, "Unit"))
1302- then fU.senderPublicKey
1323+ else if ($isInstanceOf(du, "Unit"))
1324+ then ga.senderPublicKey
13031325 else throw("Match error")
13041326 }
1305- let dr = fU
1306- if ($isInstanceOf(dr, "Order"))
1327+ let du = ga
1328+ if ($isInstanceOf(du, "Order"))
13071329 then {
1308- let cS = dr
1309- let fX = aH()
1310- let as = cR(cS)
1311- let at = sigVerify(cS.bodyBytes, cS.proofs[0], cS.senderPublicKey)
1312- let au = sigVerify(cS.bodyBytes, cS.proofs[1], fX)
1313- if (if (if (as)
1314- then at
1330+ let cV = du
1331+ let gd = aK()
1332+ let av = cU(cV)
1333+ let aw = sigVerify(cV.bodyBytes, cV.proofs[0], cV.senderPublicKey)
1334+ let ax = sigVerify(cV.bodyBytes, cV.proofs[1], gd)
1335+ if (if (if (av)
1336+ then aw
13151337 else false)
1316- then au
1338+ then ax
13171339 else false)
13181340 then true
1319- else ar(as, at, au)
1341+ else au(av, aw, ax)
13201342 }
1321- else if ($isInstanceOf(dr, "SetScriptTransaction"))
1343+ else if ($isInstanceOf(du, "SetScriptTransaction"))
13221344 then {
1323- let ex = dr
1324- let fY = blake2b256(value(ex.script))
1325- let fZ = fromBase64String(value(getString(aB, ap())))
1326- let ga = scriptHash(this)
1327- if (if ((fZ == fY))
1328- then (ga != fY)
1345+ let eA = du
1346+ let ge = blake2b256(value(eA.script))
1347+ let gf = fromBase64String(value(getString(aE, as())))
1348+ let gg = scriptHash(this)
1349+ if (if ((gf == ge))
1350+ then (gg != ge)
13291351 else false)
13301352 then true
1331- else sigVerify(fU.bodyBytes, fU.proofs[0], fW)
1353+ else sigVerify(ga.bodyBytes, ga.proofs[0], gc)
13321354 }
1333- else sigVerify(fU.bodyBytes, fU.proofs[0], fW)
1355+ else sigVerify(ga.bodyBytes, ga.proofs[0], gc)
13341356 }
13351357

github/deemru/w8io/873ac7e 
537.84 ms