tx · DxBZzH4mWKw7otSJkPb1CkGPohreFeV3wCt3UUVCPn1T

3P8KMyAJCPWNcyedqrmymxaeWonvmkhGauz:  -0.04200000 Waves

2023.10.16 13:32 [3866905] smart account 3P8KMyAJCPWNcyedqrmymxaeWonvmkhGauz > SELF 0.00000000 Waves

{ "type": 13, "id": "DxBZzH4mWKw7otSJkPb1CkGPohreFeV3wCt3UUVCPn1T", "fee": 4200000, "feeAssetId": null, "timestamp": 1697452151734, "version": 2, "chainId": 87, "sender": "3P8KMyAJCPWNcyedqrmymxaeWonvmkhGauz", "senderPublicKey": "DxhbzFs9BZTiN6kcnyybxmqPTV8xReD6Z5gWQ5AgRX8w", "proofs": [ "svcWEFw3F5wESsdrprSY7fTdGUCk5XhWEQtqoT2i1Z9F7Cvq25CT43FR9MLUnjLUdqxAs763wxj48tjhwYgW1Wc" ], "script": "base64:BgLaLQgCEgUKAwEEARIHCgUBBAEIARIDCgEIEgQKAgEEEgQKAgEEEgMKAQESABIECgIIARIAEgQKAggBEgQKAggBEgQKAgEBEgMKAQESBQoDAQEBEgUKAwEIARIECgIBCBIECgIBCBIECgIICBIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgAiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgRiaWczIgRiaWc0IgpzbGlwcGFnZTREIgt3YXZlc1N0cmluZyIKYW1wSW5pdGlhbCIFQW11bHQiBURjb252IgNTRVAiBUVNUFRZIgpQb29sQWN0aXZlIgpQb29sUHV0RGlzIg5Qb29sTWF0Y2hlckRpcyIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyIJaWR4UG9vbFN0IglpZHhMUEFzSWQiCWlkeEFtQXNJZCIJaWR4UHJBc0lkIgtpZHhBbXRBc0RjbSINaWR4UHJpY2VBc0RjbSILaWR4SUFtdEFzSWQiDWlkeElQcmljZUFzSWQiD2lkeEZhY3RTdGFrQ250ciISaWR4RmFjdG9yeVJlc3RDbnRyIhBpZHhGYWN0U2xpcHBDbnRyIhFpZHhGYWN0R3d4UmV3Q250ciIKZmVlRGVmYXVsdCICdDEiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiCHQxQmlnSW50IgJmMSIDdmFsIg9yZXN1bHRTY2FsZU11bHQiDGZyb21YMThSb3VuZCIFcm91bmQiAnQyIgJmMiICdHMiA2FtdCIIcmVzU2NhbGUiCGN1clNjYWxlIgNhYnMiCWFic0JpZ0ludCICZmMiE2tleU1hbmFnZXJQdWJsaWNLZXkiFmtleU1hbmFnZXJWYXVsdEFkZHJlc3MiAnBsIgJwaCIBaCIBdCIDcGF1IgJ1YSIEdHhJZCIDZ2F1IgJhYSICcGEiA2FtcCINa2V5QW1wSGlzdG9yeSIMaGVpZ2h0QmxvY2tzIhRrZXlDaGFuZ2VBbXBMYXN0Q2FsbCIGa2V5RmVlIgNmZWUiBmtleURMcCIVa2V5RExwUmVmcmVzaGVkSGVpZ2h0IhJrZXlETHBSZWZyZXNoRGVsYXkiFmRMcFJlZnJlc2hEZWxheURlZmF1bHQiD2RMcFJlZnJlc2hEZWxheSIEZmNmZyIEbXRwayICcGMiBmlBbXRBcyIFaVByQXMiA21iYSIFYkFTdHIiA2FwcyIca2V5QWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaCIWa2V5RmVlQ29sbGVjdG9yQWRkcmVzcyIWa2V5U2tpcE9yZGVyVmFsaWRhdGlvbiILcG9vbEFkZHJlc3MiD3Rocm93T3JkZXJFcnJvciIKb3JkZXJWYWxpZCIOb3JkZXJWYWxpZEluZm8iC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiF2FkZHJlc3NGcm9tU3RyaW5nT3JUaGlzIg1hZGRyZXNzU3RyaW5nIgckbWF0Y2gwIgFhIhxnZXRNYW5hZ2VyVmF1bHRBZGRyZXNzT3JUaGlzIg5mYWN0b3J5QWRkcmVzcyIDZmNhIgFzIgRzdHJmIgRhZGRyIgNrZXkiBGludGYiCHRocm93RXJyIgNtc2ciBmZtdEVyciIFaW5GZWUiAUAiBm91dEZlZSIVa2V5QWRkcmVzc1doaXRlbGlzdGVkIgdhZGRyZXNzIhRpc0FkZHJlc3NXaGl0ZWxpc3RlZCIBQSIDaWdzIgJtcCITZmVlQ29sbGVjdG9yQWRkcmVzcyIDZ3BjIgVhbXRBcyIHcHJpY2VBcyIIaVByaWNlQXMiDHBhcnNlQXNzZXRJZCIFaW5wdXQiD2Fzc2V0SWRUb1N0cmluZyIPcGFyc2VQb29sQ29uZmlnIgpwb29sQ29uZmlnIhBwb29sQ29uZmlnUGFyc2VkIgskdDA4ODM2OTAyMiIOY2ZnUG9vbEFkZHJlc3MiDWNmZ1Bvb2xTdGF0dXMiDGNmZ0xwQXNzZXRJZCIQY2ZnQW1vdW50QXNzZXRJZCIPY2ZnUHJpY2VBc3NldElkIhZjZmdBbW91bnRBc3NldERlY2ltYWxzIhVjZmdQcmljZUFzc2V0RGVjaW1hbHMiA2dmYyINZmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0Ig9zbGlwYWdlQ29udHJhY3QiC2d3eENvbnRyYWN0IgxyZXN0Q29udHJhY3QiEWRhdGFQdXRBY3Rpb25JbmZvIg1pbkFtdEFzc2V0QW10Ig9pblByaWNlQXNzZXRBbXQiCG91dExwQW10IgVwcmljZSIKc2xpcEJ5VXNlciIMc2xpcHBhZ2VSZWFsIgh0eEhlaWdodCILdHhUaW1lc3RhbXAiDHNsaXBhZ2VBbUFtdCIMc2xpcGFnZVByQW10IhFkYXRhR2V0QWN0aW9uSW5mbyIOb3V0QW10QXNzZXRBbXQiEG91dFByaWNlQXNzZXRBbXQiB2luTHBBbXQiDWdldEFjY0JhbGFuY2UiB2Fzc2V0SWQiBGNwYmkiCHByQW10WDE4IghhbUFtdFgxOCIFY3BiaXIiA3ZhZCICQTEiAkEyIghzbGlwcGFnZSIEZGlmZiIEcGFzcyICdmQiAkQxIgJEMCIEc2xwZyIEZmFpbCIDcGNwIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiC2FtdEFzQW10WDE4IgpwckFzQW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIIYW10QXNEY20iB3ByQXNEY20iCHByaWNlWDE4IghscEFtdFgxOCINbHBQckluQW1Bc1gxOCINbHBQckluUHJBc1gxOCIPY2FsY3VsYXRlUHJpY2VzIgFwIgd0YWtlRmVlIgZhbW91bnQiCWZlZUFtb3VudCIEZ2V0RCICeHAiA3hwMCIDeHAxIgNhbm4iC3hwMF94cDFfbl9uIgVhbm5fcyIFYW5uXzEiCWNhbGNETmV4dCIBZCICZGQiA2RkZCICZHAiBGNhbGMiA2FjYyIBaSIFZE5leHQiCGREaWZmUmF3IgVkRGlmZiIDYXJyIg0kdDAxMzUyNzEzNTc1IgIkbCICJHMiBSRhY2MwIgUkZjBfMSICJGEiAiRpIgUkZjBfMiIFZm91bmQiA2VnbyIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCILdXNlckFkZHJlc3MiBGxwSWQiBGFtSWQiBHBySWQiBWFtRGNtIgVwckRjbSIDc3RzIgdscEVtaXNzIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiCmxwRW1pc3NYMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIDZXBvIgdpbkFtQW10IgZpbkFtSWQiB2luUHJBbXQiBmluUHJJZCIGaXNFdmFsIgZlbWl0THAiCmlzT25lQXNzZXQiEHZhbGlkYXRlU2xpcHBhZ2UiBnBtdEFtdCIFcG10SWQiB2FtSWRTdHIiB3BySWRTdHIiBmFtdERjbSIIcHJpY2VEY20iBGxwRW0iD2luQW1Bc3NldEFtdFgxOCIPaW5QckFzc2V0QW10WDE4Igx1c2VyUHJpY2VYMTgiAXIiBmNoZWNrRCILc2xpcHBhZ2VYMTgiD3NsaXBwYWdlUmVhbFgxOCINbHBFbWlzc2lvblgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiINJHQwMjEzMzcyMTY4MiIKd3JpdGVBbUFtdCIKd3JpdGVQckFtdCILY29tbW9uU3RhdGUiBWdldFlEIgFEIgFuIgF4IgphUHJlY2lzaW9uIgFjIgFiIgNjdXIiDSR0MDIyODc3MjI4OTciAXkiBXlOZXh0IgV5RGlmZiINJHQwMjMyMDQyMzI1MSIHY2FsY0RMcCINYW1vdW50QmFsYW5jZSIMcHJpY2VCYWxhbmNlIgpscEVtaXNzaW9uIgp1cGRhdGVkRExwIg5jYWxjQ3VycmVudERMcCIQYW1vdW50QXNzZXREZWx0YSIPcHJpY2VBc3NldERlbHRhIhRscEFzc2V0RW1pc3Npb25EZWx0YSISYW1vdW50QXNzZXRCYWxhbmNlIhFwcmljZUFzc2V0QmFsYW5jZSIPbHBBc3NldEVtaXNzaW9uIgpjdXJyZW50RExwIhJyZWZyZXNoRExwSW50ZXJuYWwiF2Ftb3VudEFzc2V0QmFsYW5jZURlbHRhIhZwcmljZUFzc2V0QmFsYW5jZURlbHRhIgdhY3Rpb25zIhJ2YWxpZGF0ZVVwZGF0ZWRETHAiBm9sZERMcCIbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkIgVvcmRlciIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDI1NDQ5MjU2NjEiA2RMcCINJHQwMjYwMDMyNjEwMyINdW51c2VkQWN0aW9ucyIGZExwTmV3Igxpc09yZGVyVmFsaWQiBGluZm8iAmNnIgNwbXQiDWlzR2V0RGlzYWJsZWQiAmNwIgZjYWxsZXIiB2FtQXNQbXQiB3ByQXNQbXQiDWlzUHV0RGlzYWJsZWQiDWNhbGNQdXRPbmVUa24iCXBtdEFtdFJhdyILd2l0aFRha2VGZWUiDWNoZWNoRW1pc3Npb24iDSR0MDI4OTYyMjk0MjQiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIg0kdDAyOTQzMDI5NjA2IgthbUFtb3VudFJhdyILcHJBbW91bnRSYXciDSR0MDI5NjEwMjk4NjQiCGFtQW1vdW50IghwckFtb3VudCIMYW1CYWxhbmNlTmV3IgxwckJhbGFuY2VOZXciCGxwQW1vdW50Ig5wb29sUHJvcG9ydGlvbiIPYW1vdW50QXNzZXRQYXJ0Ig5wcmljZUFzc2V0UGFydCIJbHBBbXRCb3RoIgVib251cyITZ2V0T25lVGtuVjJJbnRlcm5hbCIKb3V0QXNzZXRJZCIMbWluT3V0QW1vdW50IghwYXltZW50cyIMb3JpZ2luQ2FsbGVyIg10cmFuc2FjdGlvbklkIgphbURlY2ltYWxzIgpwckRlY2ltYWxzIgpwb29sU3RhdHVzIg0kdDAzMTk3NjMyMDg3Igh0b3RhbEdldCILdG90YWxBbW91bnQiDSR0MDMyMjc3MzI1ODQiBW91dEFtIgVvdXRQciIIY3VyUHJYMTgiBWN1clByIhFvdXRBc3NldElkT3JXYXZlcyIQc2VuZEZlZVRvTWF0Y2hlciIEYnVybiINJHQwMzMzNjkzMzcxOSIQZmVlQW1vdW50Rm9yQ2FsYyIQb3V0SW5BbW91bnRBc3NldCINJHQwMzM3MjIzMzgzMCIRcmVmcmVzaERMcEFjdGlvbnMiEWlzVXBkYXRlZERMcFZhbGlkIhZtYW5hZ2VyUHVibGljS2V5T3JVbml0IhNtYW5hZ2VyVmF1bHRBZGRyZXNzIgJwZCIJaXNNYW5hZ2VyIgJwayILbXVzdE1hbmFnZXIiBGdldFkiCWlzUmV2ZXJzZSITcG9vbEFtb3VudEluQmFsYW5jZSINJHQwMzUzMTczNTMzNyINJHQwMzU2NjgzNTcxNSITc2tpcE9yZGVyVmFsaWRhdGlvbiINY2xlYW5BbW91bnRJbiINZmVlUG9vbEFtb3VudCINJHQwMzYwNjczNjQ5MSIIYXNzZXRPdXQiAmR5Igt0b3RhbEdldFJhdyIFbmV3WHAiBG5ld0QiDGFtb3VudE91dE1pbiIJYWRkcmVzc1RvIgtzd2FwQ29udGFjdCISaXNQb29sU3dhcERpc2FibGVkIg5pc1N3YXBEaXNhYmxlZCIGY2hlY2tzIgdhc3NldEluIg0kdDAzODI2MzM4NjU3IghjaGVja01pbiIEc2xpcCIJYXV0b1N0YWtlIgdmYWN0Q2ZnIgtzdGFraW5nQ250ciIIc2xpcENudHIiCmFtQXNzZXRQbXQiCnByQXNzZXRQbXQiAWUiCWxwQXNzZXRJZCICZWwiBmxlZ2FjeSICc2EiAnNwIghscFRybnNmciICc3MiDSR0MDQzMTEyNDMyNTQiBWNoZWNrIhRscEFzc2V0RW1pc3Npb25BZnRlciIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiDSR0MDQ0OTMyNDUwOTAiB2VzdGltTFAiDSR0MDQ1OTc1NDYzMjQiFHBheW1lbnRJbkFtb3VudEFzc2V0Ig0kdDA0NjMyNzQ2NDM1IgdtYXhTbHBnIgZlc3RQdXQiDSR0MDQ3NDY1NDc1MzAiCW91dEFtdEFtdCINJHQwNDg3MDM0ODc4NSINJHQwNDk0NDA0OTU5NSIYbGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ih1jaGVja0xhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCINJHQwNTAxMTk1MDE4MyIQZExwVXBkYXRlQWN0aW9ucyINbHBBc3NldEFtb3VudCIFaW5kZXgiBG5ld1kiDSR0MDUxMTkzNTEyNDgiDSR0MDUxNjIzNTE3MzgiDnN1bU9mR2V0QXNzZXRzIhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0IhRidXJuTFBBc3NldE9uRmFjdG9yeSINJHQwNTI5MDQ1Mjk4NSINY2hlY2tQYXltZW50cyIKZmFjdG9yeUNmZyIHc3Rha2luZyIKdW5zdGFrZUludiIBdiIFYnVybkEiDSR0MDU0MDk1NTQxNzYiDXVuc3Rha2VBbW91bnQiFW5vTGVzc1RoZW5BbW91bnRBc3NldCIDcmVzIgxjaGVja0Ftb3VudHMiDSR0MDU1NDY0NTU1NDUiF2xwQXNzZXRSZWNpcGllbnRBZGRyZXNzIg0kdDA1NjYwNDU2NzkyIhBwYXltZW50QW1vdW50UmF3Ig5wYXltZW50QXNzZXRJZCINJHQwNTY5MjA1NzAyMyINJHQwNTcxNzE1NzI3NSIIYW10QXNTdHIiB3ByQXNTdHIiAnByIgxyZXNTY2FsZU11bHQiB3VzckFkZHIiB3BtdEFzSWQiA2NmZyINJHQwNTk3NTU1OTk1NCIEbGlzdCIFZGVsYXkiBWRlbHRhIgZ0YXJnZXQiBmN1ckFtcCIJbmV3QW1wUmF3IgZuZXdBbXAiCGxhc3RDYWxsIgR3YWl0IgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkiCm1hdGNoZXJQdWIiDSR0MDYwODg3NjEwMDQiB25ld0hhc2giC2FsbG93ZWRIYXNoIgtjdXJyZW50SGFzaIcBAAFhAIDC1y8AAWIJALYCAQCAwtcvAAFjCQC2AgEAgICQu7rWrfANAAFkCQC2AgEAAAABZQkAtgIBAAAAAWYJALYCAQABAAFnCQC2AgEAAgABaAkAtgIBAAMAAWkJALYCAQAEAAFqCQC2AgEJAGUCBQFhCQBpAgkAaAIFAWEAAQUBYQABawIFV0FWRVMAAWwAMgABbQIDMTAwAAFuAgExAAFvAgJfXwABcAIAAAFxAAEAAXIAAgABcwADAAF0AAQAAXUAAQABdgACAAF3AAMAAXgABAABeQAFAAF6AAYAAUEABwABQgAIAAFDAAkAAUQAAQABRQAGAAFGAAcAAUcACgABSAkAawMACgUBYQCQTgEBSQIBSgFLCQC8AgMJALYCAQUBSgUBYwkAtgIBBQFLAQFMAgFKAUsJALwCAwUBSgUBYwUBSwEBTQIBTgFPCQCgAwEJALwCAwUBTgkAtgIBBQFPBQFjAQFQAwFOAU8BUQkAoAMBCQC9AgQFAU4JALYCAQUBTwUBYwUBUQEBUgIBSgFLCQC8AgMFAUoFAWMJALYCAQUBSwEBUwIBTgFPCQC8AgMFAU4JALYCAQUBTwUBYwEBVAMBVQFWAVcJAGsDBQFVBQFWBQFXAQFYAQFOAwkAvwICBQFkBQFOCQC+AgEFAU4FAU4BAVkBAU4DCQC/AgIFAWQFAU4JAL4CAQUBTgUBTgEBWgACEyVzX19mYWN0b3J5Q29udHJhY3QBAmFhAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAmFiAAIXJXNfX21hbmFnZXJWYXVsdEFkZHJlc3MBAmFjAAIRJXMlc19fcHJpY2VfX2xhc3QBAmFkAgJhZQJhZgkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAmFlCQDMCAIJAKQDAQUCYWYFA25pbAUBbwECYWcCAmFoAmFpCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUCYWgCAl9fBQJhaQECYWoCAmFoAmFpCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUCYWgCAl9fBQJhaQECYWsAAg8lc19fYW1vdW50QXNzZXQBAmFsAAIOJXNfX3ByaWNlQXNzZXQBAmFtAAIHJXNfX2FtcAECYW4BAmFvCQCsAgICCyVzJWRfX2FtcF9fCQCkAwEFAmFvAQJhcAACFSVzX19jaGFuZ2VBbXBMYXN0Q2FsbAACYXECByVzX19mZWUAAmFyCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFxBQFIAAJhcwkAuQkCCQDMCAICAiVzCQDMCAICA2RMcAUDbmlsBQFvAAJhdAkAuQkCCQDMCAICAiVzCQDMCAICEmRMcFJlZnJlc2hlZEhlaWdodAUDbmlsBQFvAAJhdQkAuQkCCQDMCAICAiVzCQDMCAICD3JlZnJlc2hETHBEZWxheQUDbmlsBQFvAAJhdgAeAAJhdwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhdQUCYXYBAmF4AAIRJXNfX2ZhY3RvcnlDb25maWcBAmF5AAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhegICYUECYUIJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmFBAgJfXwUCYUICCF9fY29uZmlnAQJhQwECYUQJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYUQBAmFFAAIMJXNfX3NodXRkb3duAQJhRgACHSVzX19hbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAQJhRwACFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJhSAECYUkJAKwCAgIbJXMlc19fc2tpcE9yZGVyVmFsaWRhdGlvbl9fBQJhSQECYUoEAmFLAmFMAmFNAmFOCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICJG9yZGVyIHZhbGlkYXRpb24gZmFpbGVkOiBvcmRlclZhbGlkPQkApQMBBQJhSwICICgFAmFMAgEpAg0gc2VuZGVyVmFsaWQ9CQClAwEFAmFNAg4gbWF0Y2hlclZhbGlkPQkApQMBBQJhTgECYU8BAmFQBAJhUQkApggBBQJhUAMJAAECBQJhUQIHQWRkcmVzcwQCYVIFAmFRBQJhUgUEdGhpcwECYVMABAJhVAQCYVEJAKIIAQkBAVoAAwkAAQIFAmFRAgZTdHJpbmcEAmFVBQJhUQkBAmFPAQUCYVUFBHRoaXMEAmFRCQCdCAIFAmFUCQECYWIAAwkAAQIFAmFRAgZTdHJpbmcEAmFWBQJhUQkBAmFPAQUCYVYFBHRoaXMBAmFXAgJhWAJhWQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmFYBQJhWQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhWAkAzAgCAgEuCQDMCAIFAmFZCQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgABAmFaAgJhWAJhWQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAmFYBQJhWQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhWAkAzAgCAgEuCQDMCAIFAmFZCQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgABAmJhAQJiYgkAAgEJALkJAgkAzAgCAg9scF9zdGFibGUucmlkZToJAMwIAgUCYmIFA25pbAIBIAECYmMBAmJiCQC5CQIJAMwIAgIPbHBfc3RhYmxlLnJpZGU6CQDMCAIFAmJiBQNuaWwCASAAAmFVCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYVcCBQR0aGlzCQEBWgAAAmJkCgACYmUJAPwHBAUCYVUCEGdldEluRmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJiZQIDSW50BQJiZQkAAgEJAKwCAgkAAwEFAmJlAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQAAmJmCgACYmUJAPwHBAUCYVUCEWdldE91dEZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYmUCA0ludAUCYmUJAAIBCQCsAgIJAAMBBQJiZQIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AQJiZwECYmgJALkJAgkAzAgCAgQlcyVzCQDMCAICC3doaXRlbGlzdGVkCQDMCAIJAKUIAQUCYmgFA25pbAUBbwECYmkBAmJoCQELdmFsdWVPckVsc2UCCQCbCAIFAmFVCQECYmcBBQJiaAcAAmJqCQECYVcCBQR0aGlzCQECYW0AAQJiawAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYVUJAQJhRQAHAQJibAAJANkEAQkBAmFXAgUCYVUJAQJheQAAAmJtCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYVcCBQJhVQkBAmFHAAECYm4ABAJibwkBAmFXAgUEdGhpcwkBAmFrAAQCYnAJAQJhVwIFBHRoaXMJAQJhbAAEAmJxCQECYVoCBQJhVQkBAmFDAQUCYnAEAmFBCQECYVoCBQJhVQkBAmFDAQUCYm8JALUJAgkBAmFXAgUCYVUJAQJhegIJAKQDAQUCYUEJAKQDAQUCYnEFAW8BAmJyAQJicwMJAAACBQJicwUBawUEdW5pdAkA2QQBBQJicwECYnQBAmJzAwkAAAIFAmJzBQR1bml0BQFrCQDYBAEJAQV2YWx1ZQEFAmJzAQJidQECYnYJAJkKBwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJidgUBdQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJ2BQF2CQDZBAEJAJEDAgUCYnYFAXcJAQJicgEJAJEDAgUCYnYFAXgJAQJicgEJAJEDAgUCYnYFAXkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJidgUBegkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJ2BQFBAAJidwkBAmJ1AQkBAmJuAAACYngFAmJ3AAJieQgFAmJ4Al8xAAJieggFAmJ4Al8yAAJiQQgFAmJ4Al8zAAJiQggFAmJ4Al80AAJiQwgFAmJ4Al81AAJiRAgFAmJ4Al82AAJiRQgFAmJ4Al83AQJiRgAJALUJAgkBAmFXAgUCYVUJAQJheAAFAW8AAmJHCQECYkYAAAJiSAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYkcFAUQCIEludmFsaWQgc3Rha2luZyBjb250cmFjdCBhZGRyZXNzAAJiSQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYkcFAUYCIEludmFsaWQgc2xpcGFnZSBjb250cmFjdCBhZGRyZXNzAAJiSgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYkcFAUcCHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MAAmJLCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJiRwUBRQIcSW52YWxpZCBnd3ggY29udHJhY3QgYWRkcmVzcwECYkwKAmJNAmJOAmJPAmJQAmJRAmJSAmJTAmJUAmJVAmJWCQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiTQkAzAgCCQCkAwEFAmJOCQDMCAIJAKQDAQUCYk8JAMwIAgkApAMBBQJiUAkAzAgCCQCkAwEFAmJRCQDMCAIJAKQDAQUCYlIJAMwIAgkApAMBBQJiUwkAzAgCCQCkAwEFAmJUCQDMCAIJAKQDAQUCYlUJAMwIAgkApAMBBQJiVgUDbmlsBQFvAQJiVwYCYlgCYlkCYloCYlACYlMCYlQJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiWAkAzAgCCQCkAwEFAmJZCQDMCAIJAKQDAQUCYloJAMwIAgkApAMBBQJiUAkAzAgCCQCkAwEFAmJTCQDMCAIJAKQDAQUCYlQFA25pbAUBbwECY2EBAmNiAwkAAAIFAmNiAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJjYgECY2MCAmNkAmNlCQC8AgMFAmNkBQFjBQJjZQECY2YDAmNkAmNlAVEJAL0CBAUCY2QFAWMFAmNlBQFRAQJjZwMCY2gCY2kCY2oEAmNrCQC8AgMJALgCAgUCY2gFAmNpBQFiBQJjaQQCY2wJAL8CAgkAuAICBQJjagkBAVgBBQJjawUBZAMJAQEhAQUCY2wJAAIBCQCsAgICCkJpZyBzbHBnOiAJAKYDAQUCY2sJAJQKAgUCY2wJAJkDAQkAzAgCBQJjaAkAzAgCBQJjaQUDbmlsAQJjbQMCY24CY28CY3AEAmNrCQC8AgMFAmNvBQFiBQJjbgQCY3EJAL8CAgUCY3AFAmNrAwMFAmNxBgkAvwICBQJjbwUCY24JAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCmAwEFAmNvAgEgCQCmAwEFAmNuAgEgCQCmAwEFAmNrAgEgCQCmAwEFAmNwBQJjcQECY3IEAmNzAmN0AmN1AmN2BAJjdwkBAUkCBQJjdQUCY3MEAmN4CQEBSQIFAmN2BQJjdAkBAmNjAgUCY3gFAmN3AQJjeQMCY3UCY3YCY3oEAmNBBQJiRAQCY0IFAmJFBAJjQwkBAmNyBAUCY0EFAmNCBQJjdQUCY3YEAmNlCQEBSQIFAmN1BQJjQQQCY2QJAQFJAgUCY3YFAmNCBAJjRAkBAUkCBQJjegUBYQQCY0UJAQJjYwIFAmNlBQJjRAQCY0YJAQJjYwIFAmNkBQJjRAkAzAgCBQJjQwkAzAgCBQJjRQkAzAgCBQJjRgUDbmlsAQJjRwMCY3UCY3YCY3oEAmNICQECY3kDBQJjdQUCY3YFAmN6CQDMCAIJAQFNAgkAkQMCBQJjSAAABQFhCQDMCAIJAQFNAgkAkQMCBQJjSAABBQFhCQDMCAIJAQFNAgkAkQMCBQJjSAACBQFhBQNuaWwBAmNJAgJjSgJhcgQCY0sDCQAAAgUCYXIAAAAACQBrAwUCY0oFAmFyBQFhCQCUCgIJAGUCBQJjSgUCY0sFAmNLAQJjTAECY00EAmNOCQCRAwIFAmNNAAAEAmNPCQCRAwIFAmNNAAEEAmFWCQC3AgIFAmNOBQJjTwMJAAACBQJhVgUBZQUBZQQCYVIJAQ1wYXJzZUludFZhbHVlAQUCYmoEAmNQCQBoAgUCYVIAAgQCY0gJALwCAwUCY04FAmNPBQFmBAJjUQkAvAIDBQJjSAUBaQUBZgQCY1IJALwCAwkAtgIBBQJjUAUCYVYFAWYEAmNTCQC2AgEJAGUCBQJjUAABCgECY1QBAmNVBAJjVgkAvAIDBQJjVQUCY1UFAWYEAmNXCQC8AgMFAmNWBQJjVQUBZgQCY1gJALwCAwUCY1cFAWYFAmNRCQC8AgMJALcCAgUCY1IJALwCAwUCY1gFAWcFAWYFAmNVCQC3AgIJALwCAwUCY1MFAmNVBQFmCQC8AgMFAWgFAmNYBQFmCgECY1kCAmNaAmRhAwgFAmNaAl8yBQJjWgQCY1UIBQJjWgJfMQQCZGIJAQJjVAEFAmNVBAJkYwkAuAICBQJkYgkBBXZhbHVlAQUCY1UEAmRkAwkAvwICBQFlBQJkYwkAvgIBBQJkYwUCZGMDCQDAAgIFAWYFAmRkCQCUCgIFAmRiBgkAlAoCBQJkYgcEAmRlCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOCQDMCAIADwkAzAgCABAFA25pbAQCZGYKAAJkZwUCZGUKAAJkaAkAkAMBBQJkZwoAAmRpCQCUCgIFAmFWBwoBAmRqAgJkawJkbAMJAGcCBQJkbAUCZGgFAmRrCQECY1kCBQJkawkAkQMCBQJkZwUCZGwKAQJkbQICZGsCZGwDCQBnAgUCZGwFAmRoBQJkawkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE3CQECZG0CCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCBQJkaQAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQQCY1UIBQJkZgJfMQQCZG4IBQJkZgJfMgMFAmRuBQJjVQkAAgEJAKwCAgIZRCBjYWxjdWxhdGlvbiBlcnJvciwgRCA9IAkApgMBBQJjVQECZG8EAmRwAmRxAmRyAmRzBAJkdAUCYkEEAmR1CQDYBAEJAQV2YWx1ZQEFAmJCBAJkdgkA2AQBCQEFdmFsdWUBBQJiQwQCZHcFAmJEBAJkeAUCYkUEAmR5CQCkAwEFAmJ6BAJkeggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJkdAILV3JvbmcgTFAgaWQIcXVhbnRpdHkDCQECIT0CCQDYBAEFAmR0BQJkcQkAAgECD1dyb25nIHBtdCBhc3NldAQCZEEJAQJjYQEFAmR1BAJkQgkBAUkCBQJkQQUCZHcEAmRDCQECY2EBBQJkdgQCZEQJAQFJAgUCZEMFAmR4BAJkRQkBAmNjAgUCZEQFAmRCBAJkRgkBAU0CBQJkRQUBYQQCZEcJAQFJAgUCZHIFAWEEAmRICQEBSQIFAmR6BQFhBAJkSQkAvAIDBQJkQgUCZEcFAmRIBAJkSgkAvAIDBQJkRAUCZEcFAmRIBAJkSwkBAVADBQJkSQUCZHcFBUZMT09SBAJkTAkBAVADBQJkSgUCZHgFBUZMT09SBAJkTQMJAAACBQJkcAIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCZHMFAmRLAwkAAAIFAmR1AgVXQVZFUwUEdW5pdAkA2QQBBQJkdQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJkcwUCZEwDCQAAAgUCZHYCBVdBVkVTBQR1bml0CQDZBAEFAmR2CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhagIJAKUIAQUCZHMFAmRwCQECYlcGBQJkSwUCZEwFAmRyBQJkRgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFjAAUCZEYJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhZAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmRGBQNuaWwJAJwKCgUCZEsFAmRMBQJkdQUCZHYFAmRBBQJkQwUCZHoFAmRFBQJkeQUCZE0BAmRODQJkcAJjagJkTwJkUAJkUQJkUgJkcwJkUwJkVAJkVQJkVgJkVwJkWAQCZHQFAmJBBAJkWQkA2AQBCQEFdmFsdWUBBQJiQgQCZFoJANgEAQkBBXZhbHVlAQUCYkMEAmVhBQJiRAQCZWIFAmJFBAJkeQkApAMBBQJiegQCZWMICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCZHQCCFdyIGxwIGFzCHF1YW50aXR5BAJkQQMFAmRTCQECY2EBBQJkWQMDBQJkVQkAAAIFAmRYBQJkWQcJAGUCCQECY2EBBQJkWQUCZFcDBQJkVQkBAmNhAQUCZFkJAGUCCQECY2EBBQJkWQUCZE8EAmRDAwUCZFMJAQJjYQEFAmRaAwMFAmRVCQAAAgUCZFgFAmRaBwkAZQIJAQJjYQEFAmRaBQJkVwMFAmRVCQECY2EBBQJkWgkAZQIJAQJjYQEFAmRaBQJkUQQCZWQJAQFJAgUCZE8FAmVhBAJlZQkBAUkCBQJkUQUCZWIEAmVmCQECY2MCBQJlZQUCZWQEAmRCCQEBSQIFAmRBBQJlYQQCZEQJAQFJAgUCZEMFAmViBAJjbwkBAmNMAQkAzAgCBQJkQgkAzAgCBQJkRAUDbmlsBAJlZwMJAAACBQJlYwAABAJjbgkBAmNMAQkAzAgCCQC3AgIFAmRCBQJlZAkAzAgCCQC3AgIFAmREBQJlZQUDbmlsBAJlaAMJAL8CAgUCY24FAmNvBgkAAgECHEQxIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gRDADCQAAAgUCZWgFAmVoBAJkRQUBZAQCZWkFAWQEAmNEBQJjbgkAlwoFCQEBTQIFAmNEBQFhCQEBTQIFAmVkBQJlYQkBAU0CBQJlZQUCZWIJAQJjYwIJALcCAgUCZEQFAmVlCQC3AgIFAmRCBQJlZAUCZWkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EAmRFCQECY2MCBQJkRAUCZEIEAmVqCQC8AgMJAQFYAQkAuAICBQJkRQUCZWYFAWMFAmRFBAJlaQkBAUkCBQJjagUBYQMDAwUCZFYJAQIhPQIFAmRFBQFkBwkAvwICBQJlagUCZWkHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmVqAgMgPiAJAKYDAQUCZWkEAmVrCQEBSQIFAmVjBQFhBAJlbAkAvQIEBQJlZAkBAmNmAwUCZEQFAmRCBQdDRUlMSU5HBQFjBQdDRUlMSU5HBAJlbQkAvQIEBQJlZQUBYwkBAmNmAwUCZEQFAmRCBQVGTE9PUgUHQ0VJTElORwQCZW4DCQC/AgIFAmVsBQJlZQkAlAoCBQJlbQUCZWUJAJQKAgUCZWQFAmVsBAJlbwgFAmVuAl8xBAJlcAgFAmVuAl8yBAJjbgkBAmNMAQkAzAgCCQC3AgIFAmRCBQJlbwkAzAgCCQC3AgIFAmREBQJlcAUDbmlsBAJlaAMJAL8CAgUCY24FAmNvBgkAAgECHEQxIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gRDADCQAAAgUCZWgFAmVoBAJjRAkAvAIDBQJlawkAuAICBQJjbgUCY28FAmNvCQCXCgUJAQFQAwUCY0QFAWEFBUZMT09SCQEBUAMFAmVvBQJlYQUHQ0VJTElORwkBAVADBQJlcAUCZWIFB0NFSUxJTkcFAmRFBQJlaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQCZXEIBQJlZwJfMQQCZXIIBQJlZwJfMgQCZXMIBQJlZwJfMwQCZEYJAQFNAggFAmVnAl80BQFhBAJldAkBAU0CCAUCZWcCXzUFAWEDCQBnAgAABQJlcQkAAgECB0xQIDw9IDAEAmV1AwkBASEBBQJkVAAABQJlcQQCZXYJAGUCBQJkTwUCZXIEAmV3CQBlAgUCZFEFAmVzBAJleAMDBQJkVQkAAAIFAmRYBQJkWQcJAJQKAgUCZFcAAAMDBQJkVQkAAAIFAmRYBQJkWgcJAJQKAgAABQJkVwkAlAoCBQJlcgUCZXMEAmV5CAUCZXgCXzEEAmV6CAUCZXgCXzIEAmVBCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWMABQJkRgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFkAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZEYJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFnAgUCZHMFAmRwCQECYkwKBQJleQUCZXoFAmV1BQJkRgUCY2oFAmV0BQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJldgUCZXcFA25pbAkAnwoNBQJlcQUCZXUFAmRGBQJkQQUCZEMFAmVjBQJkdAUCZHkFAmVBBQJldgUCZXcFAmRQBQJkUgECZUIDAmNNAmRhAmVDBAJlRAUBZwQCZUUJAJEDAgUCY00DCQAAAgUCZGEAAAABAAAEAmVGCQCnAwEFAW0EAmFSCQC5AgIJAKcDAQUCYmoFAmVGBAJhVgUCZUUEAmNQCQC5AgIFAmFSBQJlRAQCZUcJALoCAgkAuQICCQC5AgIJALoCAgkAuQICBQJlQwUCZUMJALkCAgUCZUUFAmVEBQJlQwUCZUYJALkCAgUCY1AFAmVEBAJlSAkAuAICCQC3AgIFAmFWCQC6AgIJALkCAgUCZUMFAmVGBQJjUAUCZUMKAQJjWQICY1oCZUkEAmVKBQJjWgQCZUsIBQJlSgJfMQQCZG4IBQJlSgJfMgMJAQIhPQIFAmRuBQR1bml0BQJjWgQCZUwJALoCAgkAtwICCQC5AgIFAmVLBQJlSwUCZUcJALcCAgkAuQICBQFnBQJlSwUCZUgEAmVNCQEBWQEJALgCAgUCZUwJAQV2YWx1ZQEFAmVLAwkAwAICBQFmBQJlTQkAlAoCBQJlTAUCZUkJAJQKAgUCZUwFBHVuaXQEAmRlCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwEAmVOCgACZGcFAmRlCgACZGgJAJADAQUCZGcKAAJkaQkAlAoCBQJlQwUEdW5pdAoBAmRqAgJkawJkbAMJAGcCBQJkbAUCZGgFAmRrCQECY1kCBQJkawkAkQMCBQJkZwUCZGwKAQJkbQICZGsCZGwDCQBnAgUCZGwFAmRoBQJkawkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE1CQECZG0CCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCBQJkaQAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPBAJlSwgFAmVOAl8xBAJkbggFAmVOAl8yAwkBAiE9AgUCZG4FBHVuaXQFAmVLCQACAQkArAICAhlZIGNhbGN1bGF0aW9uIGVycm9yLCBZID0gCQCmAwEFAmVLAQJlTwMCZVACZVECZVIEAmVTCQC8AgMJAQJjTAEJAMwIAgkBAUwCBQJlUAkAtgIBBQJiRAkAzAgCCQEBTAIFAmVRCQC2AgEFAmJFBQNuaWwFAWMFAmVSAwkAAAIFAmVSBQFlBQFlBQJlUwECZVQDAmVVAmVWAmVXBAJlWAkAuAICCQC2AgEJAQJjYQEJAQJidAEFAmJCBQJlVQQCZVkJALgCAgkAtgIBCQECY2EBCQECYnQBBQJiQwUCZVYEAmVaCQC4AgIJALYCAQgJAQV2YWx1ZQEJAOwHAQUCYkEIcXVhbnRpdHkFAmVXBAJmYQkBAmVPAwUCZVgFAmVZBQJlWgUCZmEBAmZiAwJmYwJmZAJlVwQCZVgJAGQCCQECY2EBCQECYnQBBQJiQgUCZmMEAmVZCQBkAgkBAmNhAQkBAmJ0AQUCYkMFAmZkBAJlWgkAZAIICQEFdmFsdWUBCQDsBwEFAmJBCHF1YW50aXR5BQJlVwQCZVMJAQJlTwMJALYCAQUCZVgJALYCAQUCZVkJALYCAQUCZVoEAmZlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJhdAUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIFAmFzCQCmAwEFAmVTBQNuaWwJAJQKAgUCZmUFAmVTAQJmZgICZmcCZVMDCQDAAgIFAmVTBQJmZwYJAQJiYQECInVwZGF0ZWQgRExwIGxvd2VyIHRoYW4gY3VycmVudCBETHABAmZoAQJmaQQCZVgJAQJjYQEJAQJidAEFAmJCBAJlWQkBAmNhAQkBAmJ0AQUCYkMEAmZqCAUCZmkGYW1vdW50BAJmawkAbgQIBQJmaQZhbW91bnQIBQJmaQVwcmljZQUBYQUFRkxPT1IEAmZsAwkAAAIIBQJmaQlvcmRlclR5cGUFA0J1eQkAlAoCBQJmagkBAS0BBQJmawkAlAoCCQEBLQEFAmZqBQJmawQCZmMIBQJmbAJfMQQCZmQIBQJmbAJfMgMDAwkBAmJrAAYJAAACBQJiegUBcwYJAAACBQJiegUBdAkAAgECDUFkbWluIGJsb2NrZWQDAwkBAiE9AggIBQJmaQlhc3NldFBhaXILYW1vdW50QXNzZXQFAmJCBgkBAiE9AggIBQJmaQlhc3NldFBhaXIKcHJpY2VBc3NldAUCYkMJAAIBAglXciBhc3NldHMEAmZtCQCnAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUCYXMCATAEAmZuCQECZmIDBQJmYwUCZmQAAAQCZm8IBQJmbgJfMQQCZnAIBQJmbgJfMgQCZnEJAMACAgUCZnAFAmZtBAJmcgkAuQkCCQDMCAICBGRMcD0JAMwIAgkApgMBBQJmbQkAzAgCAgggZExwTmV3PQkAzAgCCQCmAwEFAmZwCQDMCAICFCBhbW91bnRBc3NldEJhbGFuY2U9CQDMCAIJAKQDAQUCZVgJAMwIAgITIHByaWNlQXNzZXRCYWxhbmNlPQkAzAgCCQCkAwEFAmVZCQDMCAICGSBhbW91bnRBc3NldEJhbGFuY2VEZWx0YT0JAMwIAgkApAMBBQJmYwkAzAgCAhggcHJpY2VBc3NldEJhbGFuY2VEZWx0YT0JAMwIAgkApAMBBQJmZAkAzAgCAgggaGVpZ2h0PQkAzAgCCQCkAwEFBmhlaWdodAUDbmlsAgAJAJQKAgUCZnEFAmZyAQJmcwECZGEDCQECIT0CCQCQAwEIBQJkYQhwYXltZW50cwABCQACAQIKMSBwbW50IGV4cAQCZnQJAQV2YWx1ZQEJAJEDAggFAmRhCHBheW1lbnRzAAAEAmRxCQEFdmFsdWUBCAUCZnQHYXNzZXRJZAQCZFcIBQJmdAZhbW91bnQEAmVnCQECZG8ECQDYBAEIBQJkYQ10cmFuc2FjdGlvbklkCQDYBAEFAmRxBQJkVwgFAmRhBmNhbGxlcgQCZEsIBQJlZwJfMQQCZEwIBQJlZwJfMgQCZHkJAQ1wYXJzZUludFZhbHVlAQgFAmVnAl85BAJkTQgFAmVnA18xMAQCZnUDCQEBIQEJAQJiaQEIBQJkYQZjYWxsZXIDCQECYmsABgkAAAIFAmJ6BQF0BwMFAmZ1CQACAQkArAICAg9BZG1pbiBibG9ja2VkOiAJAKQDAQUCZHkJAJcKBQUCZEsFAmRMBQJkVwUCZHEFAmRNAQJmdgoCZncCYWkCZngCZnkCY2oCZFQCZFUCZFYCZFcCZFgEAmVnCQECZE4NBQJhaQUCY2oICQEFdmFsdWUBBQJmeAZhbW91bnQICQEFdmFsdWUBBQJmeAdhc3NldElkCAkBBXZhbHVlAQUCZnkGYW1vdW50CAkBBXZhbHVlAQUCZnkHYXNzZXRJZAUCZncJAAACBQJhaQIABQJkVAUCZFUFAmRWBQJkVwUCZFgEAmR5CQENcGFyc2VJbnRWYWx1ZQEIBQJlZwJfOAQCZnoDCQEBIQEJAQJiaQEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmZ3AwMJAQJiawAGCQAAAgUCYnoFAXQGCQAAAgUCYnoFAXIHAwUCZnoJAAIBCQCsAgICCEJsb2NrZWQ6CQCkAwEFAmR5BQJlZwECZkEFAmZCAmRxAmRzAmFpAmZDBAJkdQkA2AQBCQEFdmFsdWUBBQJiQgQCZHYJANgEAQkBBXZhbHVlAQUCYkMEAmR0BQJiQQQCZWEFAmJEBAJlYgUCYkUEAmVaCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCZHQCEGludmFsaWQgbHAgYXNzZXQIcXVhbnRpdHkEAmZEAwkAvwICBQJlWgUBZQYJAAIBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmZEBQJmRAQCZEEJAQJjYQEFAmR1BAJkQwkBAmNhAQUCZHYEAmZFAwkAAAIFAmFpAgAJAJQKAgUCZEEFAmRDAwkAAAIFAmRxBQJkdQMJAGYCBQJmQgUCZEEJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIJAGUCBQJkQQUCZkIFAmRDAwkAAAIFAmRxBQJkdgMJAGYCBQJmQgUCZEMJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIFAmRBCQBlAgUCZEMFAmZCCQACAQIQd3JvbmcgcG10QXNzZXRJZAQCZkYIBQJmRQJfMQQCZkcIBQJmRQJfMgQCZkgDCQAAAgUCZHEFAmR1CQCUCgIFAmZCAAADCQAAAgUCZHEFAmR2CQCUCgIAAAUCZkIJAAIBAg9pbnZhbGlkIHBheW1lbnQEAmZJCAUCZkgCXzEEAmZKCAUCZkgCXzIEAmZLAwUCZkMJAJUKAwgJAQJjSQIFAmZJBQJiZAJfMQgJAQJjSQIFAmZKBQJiZAJfMQgJAQJjSQIFAmZCBQJiZAJfMgkAlQoDBQJmSQUCZkoAAAQCZkwIBQJmSwJfMQQCZk0IBQJmSwJfMgQCY0sIBQJmSwJfMwQCZk4JAGQCBQJmRgUCZkwEAmZPCQBkAgUCZkcFAmZNBAJjbwkBAmNMAQkAzAgCCQEBSQIFAmZGBQJiRAkAzAgCCQEBSQIFAmZHBQJiRQUDbmlsBAJjbgkBAmNMAQkAzAgCCQEBSQIFAmZOBQJiRAkAzAgCCQEBSQIFAmZPBQJiRQUDbmlsBAJlaAMJAL8CAgUCY24FAmNvBgkBBXRocm93AAMJAAACBQJlaAUCZWgEAmZQCQC9AgQFAmVaCQC4AgIFAmNuBQJjbwUCY28FBUZMT09SBAJkRgkBAU0CCQECY2MCCQEBSQIFAmZPBQJlYgkBAUkCBQJmTgUCZWEFAWEEAmVBCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWMABQJkRgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFkAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZEYJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFnAgUCZHMFAmFpCQECYkwKBQJmSQUCZkoJAKADAQUCZlAFAmRGAAAAAAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAAAAAAFA25pbAQCZlEJAGsDBQJmRwUBYQUCZkYEAmZSCQBrAwUCZkIFAWEJAGQCBQJmUQUBYQQCZlMJAGUCBQJmQgUCZlIEAmZUCQC8AgMFAmVaCQC2AgEFAmZTCQC2AgEFAmZHBAJmVQkAoAMBCQC8AgMJALgCAgUCZlAFAmZUBQFiBQJmVAkAlgoECQCgAwEFAmZQBQJlQQUCY0sFAmZVCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJmVgYCZlcCZlgCZlkCZncCZloCZ2EEAmR0CQDYBAEJAQV2YWx1ZQEFAmJBBAJkdQkA2AQBCQEFdmFsdWUBBQJiQgQCZHYJANgEAQkBBXZhbHVlAQUCYkMEAmdiBQJiRAQCZ2MFAmJFBAJnZAUCYnoEAmRzAwkAAAIFAmZ3BQJiSwUCZloFAmZ3BAJmdAkBBXZhbHVlAQkAkQMCBQJmWQAABAJkcQkBBXZhbHVlAQgFAmZ0B2Fzc2V0SWQEAmRXCAUCZnQGYW1vdW50BAJmYQkBAmVUAwUBZQUBZQUBZQMJAAACBQJmYQUCZmEEAmRwCQDYBAEFAmdhAwkBAiE9AgUCZHQJANgEAQUCZHEJAAIBAghXcm9uZyBMUAQCZEEJAQJjYQEFAmR1BAJkQwkBAmNhAQUCZHYEAmdlCgACYmUJAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJmVwkAzAgCBQJkVwUDbmlsBQNuaWwDCQABAgUCYmUCCihJbnQsIEludCkFAmJlCQACAQkArAICCQADAQUCYmUCHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkDCQAAAgUCZ2UFAmdlBAJjSwgFAmdlAl8yBAJnZggFAmdlAl8xBAJnZwMDCQBmAgUCZlgAAAkAZgIFAmZYBQJnZgcJAQJiYQEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZlgFA25pbAIABQJnZgQCZ2gDCQAAAgUCZlcFAmR1CQCWCgQFAmdnAAAJAGUCCQBlAgUCZEEFAmdnBQJjSwUCZEMDCQAAAgUCZlcFAmR2CQCWCgQAAAUCZ2cFAmRBCQBlAgkAZQIFAmRDBQJnZwUCY0sJAAIBAhRpbnZhbGlkIG91dCBhc3NldCBpZAQCZ2kIBQJnaAJfMQQCZ2oIBQJnaAJfMgQCZk4IBQJnaAJfMwQCZk8IBQJnaAJfNAQCZ2sJAQJjYwIJAQFJAgUCZk8FAmdjCQEBSQIFAmZOBQJnYgQCZ2wJAQFNAgUCZ2sFAWEEAmdtAwkAAAIFAmZXAgVXQVZFUwUEdW5pdAkA2QQBBQJmVwQCZ24DCQBmAgUCY0sAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJibQUCY0sFAmdtBQNuaWwFA25pbAQCZE0JAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJkcwUCZ2cFAmdtCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhagIJAKUIAQUCZHMFAmRwCQECYlcGBQJnaQUCZ2oFAmRXBQJnbAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFjAAUCZ2wJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhZAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmdsBQNuaWwFAmduAwkAAAIFAmRNBQJkTQQCZ28JAPwHBAUCYVUCBGJ1cm4JAMwIAgUCZFcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZHEFAmRXBQNuaWwDCQAAAgUCZ28FAmdvBAJncAQCZ3EDCQAAAgUEdGhpcwUCYm0AAAUCY0sEAmdyAwkAAAIJAQJicgEFAmZXBQJiQgYHAwUCZ3IJAJQKAgkBAS0BCQBkAgUCZ2YFAmdxAAAJAJQKAgAACQEBLQEJAGQCBQJnZgUCZ3EEAmZjCAUCZ3ACXzEEAmZkCAUCZ3ACXzIEAmdzCQECZmIDBQJmYwUCZmQAAAQCZ3QIBQJncwJfMQQCZVMIBQJncwJfMgQCZ3UJAQJmZgIFAmZhBQJlUwMJAAACBQJndQUCZ3UJAJQKAgkAzggCBQJkTQUCZ3QFAmdnCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJndgAEAmd3CQECYVMABAJhUQkAnQgCBQJndwkBAmFhAAMJAAECBQJhUQIGU3RyaW5nBAJhVgUCYVEJANkEAQUCYVYDCQABAgUCYVECBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgACZ3gJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAECZ3kBAmRhBAJhUQkBAmd2AAMJAAECBQJhUQIKQnl0ZVZlY3RvcgQCZ3oFAmFRCQAAAggFAmRhD2NhbGxlclB1YmxpY0tleQUCZ3oDCQABAgUCYVECBFVuaXQJAAACCAUCZGEGY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBAmdBAQJkYQQCYVEJAQJndgADCQABAgUCYVECCkJ5dGVWZWN0b3IEAmd6BQJhUQMJAAACCAUCZGEPY2FsbGVyUHVibGljS2V5BQJnegYFAmd4AwkAAQIFAmFRAgRVbml0AwkAAAIIBQJkYQZjYWxsZXIFBHRoaXMGBQJneAkAAgECC01hdGNoIGVycm9yAQJnQgMCZ0MCZUMCZ0QEAmJ2CQECYm4ABAJkdQkAkQMCBQJidgUBeAQCZHYJAJEDAgUCYnYFAXkEAmVEBQFnBAJlRgkApwMBBQFtBAJhUgkAuQICCQCnAwEFAmJqBQJlRgQCY00DCQAAAgUCZ0MHCQDMCAIJALcCAgkAtgIBCQECY2EBBQJkdQUCZ0QJAMwIAgkAtgIBCQECY2EBBQJkdgUDbmlsCQDMCAIJALcCAgkAtgIBCQECY2EBBQJkdgUCZ0QJAMwIAgkAtgIBCQECY2EBBQJkdQUDbmlsBAJlRQkAkQMCBQJjTQAABAJhVgUCZUUEAmNQCQC5AgIFAmFSBQJlRAQCZUcJALoCAgkAuQICCQC5AgIJALoCAgkAuQICBQJlQwUCZUMJALkCAgUCZUUFAmVEBQJlQwUCZUYJALkCAgUCY1AFAmVEBAJlSAkAuAICCQC3AgIFAmFWCQC6AgIJALkCAgUCZUMFAmVGBQJjUAUCZUMKAQJjWQICY1oCZUkEAmdFBQJjWgQCZUsIBQJnRQJfMQQCZG4IBQJnRQJfMgMJAQIhPQIFAmRuBQR1bml0BQJjWgQCZUwJALoCAgkAtwICCQC5AgIFAmVLBQJlSwUCZUcJALcCAgkAuQICBQFnBQJlSwUCZUgEAmVNCQEBWQEJALgCAgUCZUwJAQV2YWx1ZQEFAmVLAwkAwAICBQFmBQJlTQkAlAoCBQJlTAUCZUkJAJQKAgUCZUwFBHVuaXQEAmRlCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwEAmdGCgACZGcFAmRlCgACZGgJAJADAQUCZGcKAAJkaQkAlAoCBQJlQwUEdW5pdAoBAmRqAgJkawJkbAMJAGcCBQJkbAUCZGgFAmRrCQECY1kCBQJkawkAkQMCBQJkZwUCZGwKAQJkbQICZGsCZGwDCQBnAgUCZGwFAmRoBQJkawkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE1CQECZG0CCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCCQECZGoCBQJkaQAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPBAJlSwgFAmdGAl8xBAJkbggFAmdGAl8yAwkBAiE9AgUCZG4FBHVuaXQFAmVLCQACAQkArAICAhlZIGNhbGN1bGF0aW9uIGVycm9yLCBZID0gCQCmAwEFAmVLAQJnRwAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYVUJAQJhSAEJAKUIAQUEdGhpcwcbAmRhASFjYWxjdWxhdGVBbW91bnRPdXRGb3JTd2FwUkVBRE9OTFkDAmdIAmdDAmdJBAJnSgMJAAACBQJnQwcEAmdLCQECYVcCBQR0aGlzCQECYWwABAJnRAkAtwICCQC2AgEJAQJjYQEJAQJhVwIFBHRoaXMJAQJhawAJALYCAQUCZ0gJAJQKAgUCZ0sFAmdEBAJnSwkBAmFXAgUEdGhpcwkBAmFrAAQCZ0QJALcCAgkAtgIBCQECY2EBCQECYVcCBQR0aGlzCQECYWwACQC2AgEFAmdICQCUCgIFAmdLBQJnRAQCZ0sIBQJnSgJfMQQCZ0QIBQJnSgJfMgQCYnYJAQJibgAEAmR1CQCRAwIFAmJ2BQF4BAJkdgkAkQMCBQJidgUBeQQCY00JAMwIAgkAtgIBCQECY2EBBQJkdQkAzAgCCQC2AgEJAQJjYQEFAmR2BQNuaWwEAmVDCQECY0wBBQJjTQQCZUsJAQJnQgMFAmdDBQJlQwkAtgIBBQJnSAQCZ0wJALgCAgkAuAICCQC2AgEJAQJjYQEFAmdLBQJlSwkAtgIBAAEEAmdNCQCWAwEJAMwIAgAACQDMCAIJAKADAQUCZ0wFA25pbAQCZ04DCQAAAgUCZ0MHCQDMCAIJALcCAgkAtwICCQC2AgEJAQJjYQEFAmR1CQC2AgEFAmdICQC2AgEFAmdJCQDMCAIJALgCAgkAtgIBCQECY2EBBQJkdgUCZ0wFA25pbAkAzAgCCQC4AgIJALYCAQkBAmNhAQUCZHUFAmdMCQDMCAIJALcCAgkAtwICCQC2AgEJAQJjYQEFAmR2CQC2AgEFAmdICQC2AgEFAmdJBQNuaWwEAmdPCQECY0wBBQJnTgQCZWgDCQDAAgIFAmdPBQJlQwYJAAIBCQC5CQIJAMwIAgIUbmV3IEQgaXMgZmV3ZXIgZXJyb3IJAMwIAgkApgMBBQJlQwkAzAgCCQCmAwEFAmdPBQNuaWwCAl9fAwkAAAIFAmVoBQJlaAkAlAoCBQNuaWwFAmdNCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRhASZjYWxjdWxhdGVBbW91bnRPdXRGb3JTd2FwQW5kU2VuZFRva2VucwUCZ0gCZ0MCZ1ACZ1ECZ0kEAmdSCgACYmUJAPwHBAUCYVUCF2dldFN3YXBDb250cmFjdFJFQURPTkxZBQNuaWwFA25pbAMJAAECBQJiZQIGU3RyaW5nBQJiZQkAAgEJAKwCAgkAAwEFAmJlAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcEAmdTCgACYmUJAPwHBAUCYVUCGmlzUG9vbFN3YXBEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYmUCB0Jvb2xlYW4FAmJlCQACAQkArAICCQADAQUCYmUCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmdUAwkBASEBCQECYmkBCAUCZGEGY2FsbGVyAwMJAQJiawAGCQAAAgUCYnoFAXQGBQJnUwcEAmdVCQDMCAIDAwkBASEBBQJnVAYJAQJneQEFAmRhBgkBAmJhAQIic3dhcCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAZwIICQEFdmFsdWUBCQCRAwIIBQJkYQhwYXltZW50cwAABmFtb3VudAUCZ0gGCQECYmEBAgxXcm9uZyBhbW91bnQJAMwIAgMJAAACCAUCZGEGY2FsbGVyCQERQGV4dHJOYXRpdmUoMTA2MikBBQJnUgYJAQJiYQECEVBlcm1pc3Npb24gZGVuaWVkBQNuaWwDCQAAAgUCZ1UFAmdVBAJmdAkBBXZhbHVlAQkAkQMCCAUCZGEIcGF5bWVudHMAAAQCZ1YJAQJidAEIBQJmdAdhc3NldElkBAJnVwMJAAACBQJnQwcEAmdLCQECYVcCBQR0aGlzCQECYWwABAJnRAkAZQIJAQJjYQEFAmdWCAkBBXZhbHVlAQkAkQMCCAUCZGEIcGF5bWVudHMAAAZhbW91bnQJAJQKAgUCZ0sFAmdEBAJnSwkBAmFXAgUEdGhpcwkBAmFrAAQCZ0QJAGUCCQECY2EBBQJnVggJAQV2YWx1ZQEJAJEDAggFAmRhCHBheW1lbnRzAAAGYW1vdW50CQCUCgIFAmdLBQJnRAQCZ0sIBQJnVwJfMQQCZ0QIBQJnVwJfMgQCYnYJAQJibgAEAmR1CQCRAwIFAmJ2BQF4BAJkdgkAkQMCBQJidgUBeQQCY00DCQAAAgUCZ0MHCQDMCAIJALgCAgkAtgIBCQECY2EBBQJkdQkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZGEIcGF5bWVudHMAAAZhbW91bnQJAMwIAgkAtgIBCQECY2EBBQJkdgUDbmlsCQDMCAIJALYCAQkBAmNhAQUCZHUJAMwIAgkAuAICCQC2AgEJAQJjYQEFAmR2CQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkYQhwYXltZW50cwAABmFtb3VudAUDbmlsBAJlQwkBAmNMAQUCY00EAmVLCQECZ0IDBQJnQwUCZUMJALYCAQAABAJnTAkAuAICCQC4AgIJALYCAQkBAmNhAQUCZ0sFAmVLCQC2AgEAAQQCZ00JAJYDAQkAzAgCAAAJAMwIAgkAoAMBBQJnTAUDbmlsBAJnWAMJAGcCBQJnTQUCZ1AGCQACAQIsRXhjaGFuZ2UgcmVzdWx0IGlzIGZld2VyIGNvaW5zIHRoYW4gZXhwZWN0ZWQDCQAAAgUCZ1gFAmdYBAJnTgMJAAACBQJnQwcJAMwIAgkAtwICCQC2AgEJAQJjYQEFAmR1CQC2AgEFAmdJCQDMCAIJALgCAgkAtgIBCQECY2EBBQJkdgUCZ0wFA25pbAkAzAgCCQC4AgIJALYCAQkBAmNhAQUCZHUFAmdMCQDMCAIJALcCAgkAtgIBCQECY2EBBQJkdgkAtgIBBQJnSQUDbmlsBAJnTwkBAmNMAQUCZ04EAmVoAwkAwAICBQJnTwUCZUMGCQACAQIUbmV3IEQgaXMgZmV3ZXIgZXJyb3IDCQAAAgUCZWgFAmVoBAJmYwMFAmdDCQEBLQEFAmdNBQJnSQQCZmQDBQJnQwUCZ0kJAQEtAQUCZ00EAmd0CAkBAmZiAwUCZmMFAmZkAAACXzEDCQAAAgUCZ3QFAmd0CQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCZ1EFAmdNCQECYnIBBQJnSwUDbmlsBQJnTQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkYQELY29uc3RydWN0b3IBAVoEAmVHCQECZ0EBBQJkYQMJAAACBQJlRwUCZUcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVoABQFaBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGEBA3B1dAICZ1kCZ1oEAmhhCQECYkYABAJoYgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCaGEFAUQCCldyIHN0IGFkZHIEAmhjCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJoYQUBRgIKV3Igc2wgYWRkcgMJAGYCAAAFAmdZCQACAQIOV3Jvbmcgc2xpcHBhZ2UDCQECIT0CCQCQAwEIBQJkYQhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAJoZAkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZGEIcGF5bWVudHMAAAZhbW91bnQEAmhlCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkYQhwYXltZW50cwABBmFtb3VudAQCZVgJALgCAgkAtgIBCQECY2EBCQECYnQBBQJiQgUCaGQDCQAAAgUCZVgFAmVYBAJlWQkAuAICCQC2AgEJAQJjYQEJAQJidAEFAmJDBQJoZQMJAAACBQJlWQUCZVkEAmVaCQC2AgEICQEFdmFsdWUBCQDsBwEFAmJBCHF1YW50aXR5AwkAAAIFAmVaBQJlWgQCZmEJAQJlVAMFAmhkBQJoZQkAtgIBAAADCQAAAgUCZmEFAmZhBAJoZgkBAmZ2CgkApQgBCAUCZGEGY2FsbGVyCQDYBAEIBQJkYQ10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAmRhCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAmRhCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQJkYQhwYXltZW50cwABBQJnWQYHBgAAAgAEAmV1CAUCaGYCXzIEAmhnCAUCaGYCXzcEAmRNCAUCaGYCXzkEAmV2CAUCaGYDXzEwBAJldwgFAmhmA18xMQQCZHUIBQJoZgNfMTIEAmR2CAUCaGYDXzEzBAJlZwkA/AcEBQJhVQIEZW1pdAkAzAgCBQJldQUDbmlsBQNuaWwDCQAAAgUCZWcFAmVnBAJoaAQCYVEFAmVnAwkAAQIFAmFRAgdBZGRyZXNzBAJoaQUCYVEJAPwHBAUCaGkCBGVtaXQJAMwIAgUCZXUFA25pbAUDbmlsBQR1bml0AwkAAAIFAmhoBQJoaAQCaGoDCQBmAgUCZXYAAAkA/AcEBQJoYwIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmR1BQJldgUDbmlsBQNuaWwDCQAAAgUCaGoFAmhqBAJoawMJAGYCBQJldwAACQD8BwQFAmhjAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZHYFAmV3BQNuaWwFA25pbAMJAAACBQJoawUCaGsEAmhsAwUCZ1oEAmhtCQD8BwQFAmhiAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJoZwUCZXUFA25pbAMJAAACBQJobQUCaG0FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZGEGY2FsbGVyBQJldQUCaGcFA25pbAQCaG4JAQJmYgMAAAAAAAAEAmd0CAUCaG4CXzEEAmVTCAUCaG4CXzIEAmhvAwkAwAICBQJlUwUCZmEGCQECYmEBCQC5CQIJAMwIAgIidXBkYXRlZCBETHAgbG93ZXIgdGhhbiBjdXJyZW50IERMcAkAzAgCCQCmAwEFAmVYCQDMCAIJAKYDAQUCZVkJAMwIAgkApgMBBQJlWgkAzAgCCQCmAwEFAmZhCQDMCAIJAKYDAQUCZVMJAMwIAgkApAMBBQJldgkAzAgCCQCkAwEFAmV3BQNuaWwCASADCQAAAgUCaG8FAmhvBAJocAgJAQV2YWx1ZQEJAOwHAQUCYkEIcXVhbnRpdHkDCQAAAgUCaHAFAmhwCQDOCAIJAM4IAgUCZE0FAmhsBQJndAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkYQELcHV0T25lVGtuVjICAmZYAmdaBAJocQoAAmJlCQD8BwQFAmFVAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYmUCB0Jvb2xlYW4FAmJlCQACAQkArAICCQADAQUCYmUCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZ6AwkBASEBCQECYmkBCAUCZGEGY2FsbGVyAwMDCQECYmsABgkAAAIFAmJ6BQFyBgkAAAIFAmJ6BQF0BgUCaHEHBAJnVQkAzAgCAwMJAQEhAQUCZnoGCQECZ3kBBQJkYQYJAQJiYQECIXB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRhCHBheW1lbnRzAAEGCQECYmEBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJnVQUCZ1UEAmR1CQDYBAEJAQV2YWx1ZQEFAmJCBAJkdgkA2AQBCQEFdmFsdWUBBQJiQwQCZHQFAmJBBAJnYgUCYkQEAmdjBQJiRQQCZHMDCQAAAggFAmRhBmNhbGxlcgUEdGhpcwgFAmRhDG9yaWdpbkNhbGxlcggFAmRhBmNhbGxlcgQCZnQJAQV2YWx1ZQEJAJEDAggFAmRhCHBheW1lbnRzAAAEAmRxCQDYBAEJAQV2YWx1ZQEIBQJmdAdhc3NldElkBAJkVwgFAmZ0BmFtb3VudAQCZmEDCQAAAggFAmZ0B2Fzc2V0SWQFAmJCCQECZVQDCQC2AgEFAmRXCQC2AgEAAAkAtgIBAAAJAQJlVAMJALYCAQAACQC2AgEFAmRXCQC2AgEAAAMJAAACBQJmYQUCZmEEAmhyCQECZkEFBQJkVwUCZHEJAKUIAQUCZHMJANgEAQgFAmRhDXRyYW5zYWN0aW9uSWQGAwkAAAIFAmhyBQJocgQCY0sIBQJocgJfMwQCZE0IBQJocgJfMgQCaHMIBQJocgJfMQQCZXUDAwkAZgIFAmZYAAAJAGYCBQJmWAUCaHMHCQECYmEBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZYBQNuaWwCAAUCaHMEAmhmCQD8BwQFAmFVAgRlbWl0CQDMCAIFAmV1BQNuaWwFA25pbAMJAAACBQJoZgUCaGYEAmhoBAJhUQUCaGYDCQABAgUCYVECB0FkZHJlc3MEAmhpBQJhUQkA/AcEBQJoaQIEZW1pdAkAzAgCBQJldQUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCaGgFAmhoBAJobAMFAmdaBAJobQkA/AcEBQJiSAIIc3Rha2VGb3IJAMwIAgkApQgBCAUCZGEGY2FsbGVyBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmR0BQJldQUDbmlsAwkAAAIFAmhtBQJobQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkYQZjYWxsZXIFAmV1BQJkdAUDbmlsBAJnbgMJAGYCBQJjSwAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJtBQJjSwkA2QQBBQJkcQUDbmlsBQNuaWwEAmh0AwkAAAIFBHRoaXMFAmJtCQCUCgIAAAAABAJodQMJAAACCAUCZnQHYXNzZXRJZAUCYkIGBwMFAmh1CQCUCgIJAQEtAQUCY0sAAAkAlAoCAAAJAQEtAQUCY0sEAmZjCAUCaHQCXzEEAmZkCAUCaHQCXzIEAmh2CQECZmIDBQJmYwUCZmQAAAQCZ3QIBQJodgJfMQQCZVMIBQJodgJfMgQCZ3UJAQJmZgIFAmZhBQJlUwMJAAACBQJndQUCZ3UJAJQKAgkAzggCCQDOCAIJAM4IAgUCZE0FAmhsBQJnbgUCZ3QFAmV1CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRhAQpwdXRGb3JGcmVlAQJodwMJAGYCAAAFAmh3CQACAQIKV3Jvbmcgc2xwZwMJAQIhPQIJAJADAQgFAmRhCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmh4CQECZnYKCQClCAEIBQJkYQZjYWxsZXIJANgEAQgFAmRhDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZGEIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZGEIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmRhCHBheW1lbnRzAAEFAmh3BwcGAAACAAQCZE0IBQJoeAJfOQQCaGQJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRhCHBheW1lbnRzAAAGYW1vdW50BAJoZQkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZGEIcGF5bWVudHMAAQZhbW91bnQEAmZhCQECZVQDBQJoZAUCaGUJALYCAQAAAwkAAAIFAmZhBQJmYQQCaHkJAQJmYgMAAAAAAAAEAmd0CAUCaHkCXzEEAmVTCAUCaHkCXzIEAmd1CQECZmYCBQJmYQUCZVMDCQAAAgUCZ3UFAmd1CQDOCAIFAmRNBQJndAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkYQEDZ2V0AAQCZmEJAQJlVAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZmEFAmZhBAJlZwkBAmZzAQUCZGEEAmh6CAUCZWcCXzEEAmRMCAUCZWcCXzIEAmRXCAUCZWcCXzMEAmRxCAUCZWcCXzQEAmRNCAUCZWcCXzUEAmVICQD8BwQFAmFVAgRidXJuCQDMCAIFAmRXBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRxBQJkVwUDbmlsAwkAAAIFAmVIBQJlSAQCaEEJAQJmYgMJAQEtAQUCaHoJAQEtAQUCZEwAAAQCZ3QIBQJoQQJfMQQCZVMIBQJoQQJfMgQCZ3UJAQJmZgIFAmZhBQJlUwMJAAACBQJndQUCZ3UJAM4IAgUCZE0FAmd0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRhAQtnZXRPbmVUa25WMgICZlcCZlgEAmhxCgACYmUJAPwHBAUCYVUCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJiZQIHQm9vbGVhbgUCYmUJAAIBCQCsAgIJAAMBBQJiZQIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZnUDCQEBIQEJAQJiaQEIBQJkYQZjYWxsZXIDAwkBAmJrAAYJAAACBQJiegUBdAYFAmhxBwQCZ1UJAMwIAgMDCQEBIQEFAmZ1BgkBAmd5AQUCZGEGCQECYmEBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkYQhwYXltZW50cwABBgkBAmJhAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ1UFAmdVBAJoQgkBAmZWBgUCZlcFAmZYCAUCZGEIcGF5bWVudHMIBQJkYQZjYWxsZXIIBQJkYQxvcmlnaW5DYWxsZXIIBQJkYQ10cmFuc2FjdGlvbklkBAJkTQgFAmhCAl8xBAJnZwgFAmhCAl8yCQCUCgIFAmRNBQJnZwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkYQEKcmVmcmVzaERMcAAEAmhDCQELdmFsdWVPckVsc2UCCQCfCAEFAmF0AAAEAmhEAwkAZwIJAGUCBQZoZWlnaHQFAmhDBQJhdwUEdW5pdAkBAmJhAQkAuQkCCQDMCAIJAKQDAQUCYXcJAMwIAgIvIGJsb2NrcyBoYXZlIG5vdCBwYXNzZWQgc2luY2UgdGhlIHByZXZpb3VzIGNhbGwFA25pbAIAAwkAAAIFAmhEBQJoRAQCZm0JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFzAgEwCQECYmMBAgtpbnZhbGlkIGRMcAQCaEUJAQJmYgMAAAAAAAAEAmhGCAUCaEUCXzEEAmVTCAUCaEUCXzIEAmZlAwkBAiE9AgUCZm0FAmVTBQJoRgkBAmJhAQISbm90aGluZyB0byByZWZyZXNoCQCUCgIFAmZlCQCmAwEFAmVTCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRhARNnZXRPbmVUa25WMlJFQURPTkxZAgJmVwJoRwQCZHUJANgEAQkBBXZhbHVlAQUCYkIEAmR2CQDYBAEJAQV2YWx1ZQEFAmJDBAJkdAkA2AQBCQEFdmFsdWUBBQJiQQQCY00JAMwIAgkAtgIBCQECY2EBBQJkdQkAzAgCCQC2AgEJAQJjYQEFAmR2BQNuaWwEAmVSCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJkdAIQaW52YWxpZCBscCBhc3NldAhxdWFudGl0eQQCY28JAQJjTAEFAmNNBAJjbgkAuAICBQJjbwkAvAIDCQC2AgEFAmhHBQJjbwUCZVIEAmhIAwkAAAIFAmZXBQJkdQAAAwkAAAIFAmZXBQJkdgABCQACAQIUaW52YWxpZCBvdXQgYXNzZXQgaWQEAmhJCQECZUIDBQJjTQUCaEgFAmNuBAJnTAkAuAICCQCRAwIFAmNNBQJoSAUCaEkEAmdNCQCWAwEJAMwIAgAACQDMCAIJAKADAQkAuAICBQJnTAUBZgUDbmlsBAJoSgkBAmNJAgUCZ00FAmJmBAJnZggFAmhKAl8xBAJjSwgFAmhKAl8yCQCUCgIFA25pbAkAlAoCBQJnZgUCY0sCZGEBHGdldE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkCAmZXAmhHBAJkdQkA2AQBCQEFdmFsdWUBBQJiQgQCZHYJANgEAQkBBXZhbHVlAQUCYkMEAmR0CQDYBAEJAQV2YWx1ZQEFAmJBBAJkQQkBAmNhAQUCZHUEAmRDCQECY2EBBQJkdgQCaEsKAAJiZQkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmZXCQDMCAIFAmhHBQNuaWwFA25pbAMJAAECBQJiZQIKKEludCwgSW50KQUCYmUJAAIBCQCsAgIJAAMBBQJiZQIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQQCZ2YIBQJoSwJfMQQCY0sIBQJoSwJfMgQCZWcJAQJkbwQCAAUCZHQFAmhHBQR0aGlzBAJkSwgFAmVnAl8xBAJkTAgFAmVnAl8yBAJoTAkAZAIFAmRLBQJkTAQCZlUDCQAAAgUCaEwAAAMJAAACBQJnZgAAAAAJAAIBAhdib251cyBjYWxjdWxhdGlvbiBlcnJvcgkAawMJAGUCBQJnZgUCaEwFAWEFAmhMCQCUCgIFA25pbAkAlQoDBQJnZgUCY0sFAmZVAmRhAQlnZXROb0xlc3MCAmhNAmhOBAJlZwkBAmZzAQUCZGEEAmRLCAUCZWcCXzEEAmRMCAUCZWcCXzIEAmRXCAUCZWcCXzMEAmRxCAUCZWcCXzQEAmRNCAUCZWcCXzUDCQBmAgUCaE0FAmRLCQACAQkArAICCQCsAgIJAKwCAgIJRmFpbGVkOiAgCQCkAwEFAmRLAgMgPCAJAKQDAQUCaE0DCQBmAgUCaE4FAmRMCQACAQkArAICCQCsAgIJAKwCAgIIRmFpbGVkOiAJAKQDAQUCZEwCAyA8IAkApAMBBQJoTgQCZmEJAQJlVAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZmEFAmZhBAJoTwkA/AcEBQJhVQIEYnVybgkAzAgCBQJkVwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkcQUCZFcFA25pbAMJAAACBQJoTwUCaE8EAmhQCQECZmIDCQEBLQEFAmRLCQEBLQEFAmRMAAAEAmd0CAUCaFACXzEEAmVTCAUCaFACXzIEAmd1CQECZmYCBQJmYQUCZVMDCQAAAgUCZ3UFAmd1CQDOCAIFAmRNBQJndAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkYQENdW5zdGFrZUFuZEdldAECY0oEAmhRAwkBAiE9AgkAkAMBCAUCZGEIcGF5bWVudHMAAAkAAgECDU5vIHBtbnRzIGV4cGQGAwkAAAIFAmhRBQJoUQQCaFIJAQJiRgAEAmhnBQJiQQQCaFMJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmhSBQFEAgpXciBzdCBhZGRyBAJmYQkBAmVUAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJmYQUCZmEEAmhUCQD8BwQFAmhTAgd1bnN0YWtlCQDMCAIJANgEAQUCaGcJAMwIAgUCY0oFA25pbAUDbmlsAwkAAAIFAmhUBQJoVAQCZWcJAQJkbwQJANgEAQgFAmRhDXRyYW5zYWN0aW9uSWQJANgEAQUCaGcFAmNKCAUCZGEGY2FsbGVyBAJkSwgFAmVnAl8xBAJkTAgFAmVnAl8yBAJkeQkBDXBhcnNlSW50VmFsdWUBCAUCZWcCXzkEAmRNCAUCZWcDXzEwBAJmdQMJAQEhAQkBAmJpAQgFAmRhBmNhbGxlcgMJAQJiawAGCQAAAgUCYnoFAXQHBAJoVQMFAmZ1CQACAQkArAICAglCbG9ja2VkOiAJAKQDAQUCZHkGAwkAAAIFAmhVBQJoVQQCaFYJAPwHBAUCYVUCBGJ1cm4JAMwIAgUCY0oFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCaGcFAmNKBQNuaWwDCQAAAgUCaFYFAmhWBAJoVwkBAmZiAwkBAS0BBQJkSwkBAS0BBQJkTAAABAJndAgFAmhXAl8xBAJlUwgFAmhXAl8yBAJndQkBAmZmAgUCZmEFAmVTAwkAAAIFAmd1BQJndQkAzggCBQJkTQUCZ3QJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGEBE3Vuc3Rha2VBbmRHZXROb0xlc3MDAmhYAmhZAmhOBAJmdQMJAQEhAQkBAmJpAQgFAmRhBmNhbGxlcgMJAQJiawAGCQAAAgUCYnoFAXQHBAJnVQkAzAgCAwkBASEBBQJmdQYJAAIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkYQhwYXltZW50cwAABgkAAgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmdVBQJnVQQCZmEJAQJlVAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZmEFAmZhBAJoVAkA/AcEBQJiSAIHdW5zdGFrZQkAzAgCCQDYBAEFAmJBCQDMCAIFAmhYBQNuaWwFA25pbAMJAAACBQJoVAUCaFQEAmhaCQECZG8ECQDYBAEIBQJkYQ10cmFuc2FjdGlvbklkCQDYBAEFAmJBBQJoWAgFAmRhBmNhbGxlcgQCZEsIBQJoWgJfMQQCZEwIBQJoWgJfMgQCZE0IBQJoWgNfMTAEAmlhCQDMCAIDCQBnAgUCZEsFAmhZBgkAAgEJALkJAgkAzAgCAixhbW91bnQgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmhZBQNuaWwCAAkAzAgCAwkAZwIFAmRMBQJoTgYJAAIBCQC5CQIJAMwIAgIrcHJpY2UgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmhOBQNuaWwCAAUDbmlsAwkAAAIFAmlhBQJpYQQCaE8JAPwHBAUCYVUCBGJ1cm4JAMwIAgUCaFgFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYkEFAmhYBQNuaWwDCQAAAgUCaE8FAmhPBAJpYgkBAmZiAwkBAS0BBQJkSwkBAS0BBQJkTAAABAJndAgFAmliAl8xBAJlUwgFAmliAl8yBAJndQkBAmZmAgUCZmEFAmVTAwkAAAIFAmd1BQJndQkAzggCBQJkTQUCZ3QJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGEBFXVuc3Rha2VBbmRHZXRPbmVUa25WMgMCaFgCZlcCZlgEAmhxCgACYmUJAPwHBAUCYVUCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJiZQIHQm9vbGVhbgUCYmUJAAIBCQCsAgIJAAMBBQJiZQIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZnUDCQEBIQEJAQJiaQEIBQJkYQZjYWxsZXIDAwkBAmJrAAYJAAACBQJiegUBdAYFAmhxBwQCZ1UJAMwIAgMDCQEBIQEFAmZ1BgkBAmd5AQUCZGEGCQECYmEBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkYQhwYXltZW50cwAABgkBAmJhAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ1UFAmdVBAJoUgkBAmJGAAQCaGcFAmJBBAJoUwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCaFIFAUQCCldyIHN0IGFkZHIEAmRzCAUCZGEGY2FsbGVyBAJpYwUEdGhpcwQCaFQJAPwHBAUCaFMCD3Vuc3Rha2VJTlRFUk5BTAkAzAgCBQJoZwkAzAgCBQJoWAkAzAgCCAUCZHMFYnl0ZXMJAMwIAggFAmljBWJ5dGVzBQNuaWwFA25pbAMJAAACBQJoVAUCaFQEAmlkCQECZlYGBQJmVwUCZlgJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmhnBQJoWAUDbmlsCAUCZGEGY2FsbGVyCAUCZGEMb3JpZ2luQ2FsbGVyCAUCZGENdHJhbnNhY3Rpb25JZAQCZE0IBQJpZAJfMQQCZ2cIBQJpZAJfMgkAlAoCBQJkTQUCZ2cJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGEBHHB1dE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkCAmllAmlmBAJpZwkBAmZBBQUCaWUFAmlmAgACAAYEAmZQCAUCaWcCXzEEAmRNCAUCaWcCXzIEAmNLCAUCaWcCXzMEAmZVCAUCaWcCXzQJAJQKAgUDbmlsCQCVCgMFAmZQBQJjSwUCZlUCZGEBIXB1dE9uZVRrblYyV2l0aG91dFRha2VGZWVSRUFET05MWQICaWUCaWYEAmloCQECZkEFBQJpZQUCaWYCAAIABwQCZlAIBQJpaAJfMQQCZE0IBQJpaAJfMgQCY0sIBQJpaAJfMwQCZlUIBQJpaAJfNAkAlAoCBQNuaWwJAJUKAwUCZlAFAmNLBQJmVQJkYQEIYWN0aXZhdGUCAmlpAmlqAwkBAiE9AgkApQgBCAUCZGEGY2FsbGVyCQClCAEFAmFVCQACAQIGZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFrAAUCaWkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFsAAUCaWoJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFtAAkApAMBBQFsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhbgEFBmhlaWdodAkApAMBBQFsBQNuaWwCB3N1Y2Nlc3MCZGEBHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBAmJuAAJkYQEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQECY2IJAJQKAgUDbmlsCQECY2EBBQJjYgJkYQEZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQMCY3UCY3YCY3oEAmlrCQECY3kDBQJjdQUCY3YFAmN6CQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUCaWsAAAkAzAgCCQCmAwEJAJEDAgUCaWsAAQkAzAgCCQCmAwEJAJEDAgUCaWsAAgUDbmlsAmRhARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFOAmlsCQCUCgIFA25pbAkBAU0CCQCnAwEFAU4FAmlsAmRhARR0b1gxOFdyYXBwZXJSRUFET05MWQIBSgFLCQCUCgIFA25pbAkApgMBCQEBSQIFAUoFAUsCZGEBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICY2QCY2UJAJQKAgUDbmlsCQCmAwEJAQJjYwIJAKcDAQUCY2QJAKcDAQUCY2UCZGEBI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJkcAJjagJkTwJkUAJkUQJkUgJpbQJkUwJkVAkAlAoCBQNuaWwJAQJkTg0FAmRwBQJjagUCZE8FAmRQBQJkUQUCZFIFAmltBQJkUwUCZFQGBwAAAgACZGEBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJkcAJpbgJkcgJpbQQCZWcJAQJkbwQFAmRwBQJpbgUCZHIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmltCQCUCgIFA25pbAkAnAoKCAUCZWcCXzEIBQJlZwJfMggFAmVnAl8zCAUCZWcCXzQIBQJlZwJfNQgFAmVnAl82CAUCZWcCXzcJAKYDAQgFAmVnAl84CAUCZWcCXzkIBQJlZwNfMTACZGEBCWNoYW5nZUFtcAAEAmlvCQD8BwQFAmFVAhpnZXRDaGFuZ2VBbXBDb25maWdSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsBAJpcAQCYVEFAmlvAwkAAQIFAmFRAglMaXN0W0FueV0EAmlxBQJhUQkAlQoDCgACYmUJAJEDAgUCaXEAAAMJAAECBQJiZQIDSW50BQJiZQkAAgEJAKwCAgkAAwEFAmJlAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQKAAJiZQkAkQMCBQJpcQABAwkAAQIFAmJlAgNJbnQFAmJlCQACAQkArAICCQADAQUCYmUCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAoAAmJlCQCRAwIFAmlxAAIDCQABAgUCYmUCA0ludAUCYmUJAAIBCQCsAgIJAAMBBQJiZQIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50CQECYmEBAhJpbnZhbGlkIGVudHJ5IHR5cGUEAmlyCAUCaXACXzEEAmlzCAUCaXACXzIEAml0CAUCaXACXzMEAml1CQENcGFyc2VJbnRWYWx1ZQEJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAQJhbQAEAml2CQBkAgUCaXUFAmlzBAJpdwMJAGYCAAAFAmlzAwkAZgIFAml0BQJpdgUCaXQFAml2AwkAZgIFAml2BQJpdAUCaXQFAml2BAJpeAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQECYXAAAAAEAml5CQBkAgUCaXgFAmlyBAJnVQkAzAgCAwkAZgIFBmhlaWdodAUCaXkGCQECYmEBAhd0cnkgYWdhaW4gaW4gZmV3IGJsb2NrcwkAzAgCAwkBAiE9AgUCaXUFAml3BgkBAmJhAQIWYWxyZWFkeSByZWFjaGVkIHRhcmdldAUDbmlsAwkAAAIFAmdVBQJnVQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFwAAUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhbQAJAKQDAQUCaXcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFuAQUGaGVpZ2h0CQCkAwEFAml3BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAml6AQJpQQAEAmlCBAJhUQkBAmd2AAMJAAECBQJhUQIKQnl0ZVZlY3RvcgQCZ3oFAmFRBQJnegMJAAECBQJhUQIEVW5pdAgFAml6D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJhUQUCaXoDCQABAgUCYVECBU9yZGVyBAJmaQUCYVEEAmlDCQECYmwABAJpRAMJAQJnRwAJAJQKAgYCAAkBAmZoAQUCZmkEAmFLCAUCaUQCXzEEAmFMCAUCaUQCXzIEAmFNCQD0AwMIBQJmaQlib2R5Qnl0ZXMJAJEDAggFAmZpBnByb29mcwAACAUCZmkPc2VuZGVyUHVibGljS2V5BAJhTgkA9AMDCAUCZmkJYm9keUJ5dGVzCQCRAwIIBQJmaQZwcm9vZnMAAQUCaUMDAwMFAmFLBQJhTQcFAmFOBwYJAQJhSgQFAmFLBQJhTAUCYU0FAmFOAwkAAQIFAmFRAhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCYVYFAmFRAwkA9AMDCAUCaXoJYm9keUJ5dGVzCQCRAwIIBQJpegZwcm9vZnMAAAUCaUIGBAJpRQkA9gMBCQEFdmFsdWUBCAUCYVYGc2NyaXB0BAJpRgkA2wQBCQEFdmFsdWUBCQCdCAIFAmFVCQECYUYABAJpRwkA8QcBBQR0aGlzAwkAAAIFAmlGBQJpRQkBAiE9AgUCaUcFAmlFBwkA9AMDCAUCaXoJYm9keUJ5dGVzCQCRAwIIBQJpegZwcm9vZnMAAAUCaUIbQH/Q", "height": 3866905, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7ooebJMq5LKRdk45921hC51SmtEkw1FWTVFJZyAHvKi1 Next: DGxgzhaGyVSHxPutX3mgzHx1Gzb3BYqLk4sEeYRoqPnx Diff:
OldNewDifferences
236236 else throw(($getType(be) + " couldn't be cast to Int"))
237237 }
238238
239-let bg = aW(this, am())
240-
241-func bh () = valueOrElse(getBoolean(aU, aE()), false)
239+func bg (bh) = makeString(["%s%s", "whitelisted", toString(bh)], o)
242240
243241
244-func bi () = fromBase58String(aW(aU, ay()))
242+func bi (bh) = valueOrElse(getBoolean(aU, bg(bh)), false)
245243
246244
247-let bj = addressFromStringValue(aW(aU, aG()))
245+let bj = aW(this, am())
248246
249-func bk () = {
250- let bl = aW(this, ak())
251- let bm = aW(this, al())
252- let bn = aZ(aU, aC(bm))
253- let aA = aZ(aU, aC(bl))
254- split(aW(aU, az(toString(aA), toString(bn))), o)
247+func bk () = valueOrElse(getBoolean(aU, aE()), false)
248+
249+
250+func bl () = fromBase58String(aW(aU, ay()))
251+
252+
253+let bm = addressFromStringValue(aW(aU, aG()))
254+
255+func bn () = {
256+ let bo = aW(this, ak())
257+ let bp = aW(this, al())
258+ let bq = aZ(aU, aC(bp))
259+ let aA = aZ(aU, aC(bo))
260+ split(aW(aU, az(toString(aA), toString(bq))), o)
255261 }
256262
257263
258-func bo (bp) = if ((bp == k))
264+func br (bs) = if ((bs == k))
259265 then unit
260- else fromBase58String(bp)
266+ else fromBase58String(bs)
261267
262268
263-func bq (bp) = if ((bp == unit))
269+func bt (bs) = if ((bs == unit))
264270 then k
265- else toBase58String(value(bp))
271+ else toBase58String(value(bs))
266272
267273
268-func br (bs) = $Tuple7(addressFromStringValue(bs[u]), parseIntValue(bs[v]), fromBase58String(bs[w]), bo(bs[x]), bo(bs[y]), parseIntValue(bs[z]), parseIntValue(bs[A]))
274+func bu (bv) = $Tuple7(addressFromStringValue(bv[u]), parseIntValue(bv[v]), fromBase58String(bv[w]), br(bv[x]), br(bv[y]), parseIntValue(bv[z]), parseIntValue(bv[A]))
269275
270276
271-let bt = br(bk())
277+let bw = bu(bn())
272278
273-let bu = bt
279+let bx = bw
274280
275-let bv = bu._1
281+let by = bx._1
276282
277-let bw = bu._2
283+let bz = bx._2
278284
279-let bx = bu._3
285+let bA = bx._3
280286
281-let by = bu._4
287+let bB = bx._4
282288
283-let bz = bu._5
289+let bC = bx._5
284290
285-let bA = bu._6
291+let bD = bx._6
286292
287-let bB = bu._7
293+let bE = bx._7
288294
289-func bC () = split(aW(aU, ax()), o)
295+func bF () = split(aW(aU, ax()), o)
290296
291297
292-let bD = bC()
298+let bG = bF()
293299
294-let bE = valueOrErrorMessage(addressFromString(bD[D]), "Invalid staking contract address")
300+let bH = valueOrErrorMessage(addressFromString(bG[D]), "Invalid staking contract address")
295301
296-let bF = valueOrErrorMessage(addressFromString(bD[F]), "Invalid slipage contract address")
302+let bI = valueOrErrorMessage(addressFromString(bG[F]), "Invalid slipage contract address")
297303
298-let bG = valueOrErrorMessage(addressFromString(bD[G]), "Invalid gwx contract address")
304+let bJ = valueOrErrorMessage(addressFromString(bG[G]), "Invalid gwx contract address")
299305
300-let bH = valueOrErrorMessage(addressFromString(bD[E]), "Invalid gwx contract address")
306+let bK = valueOrErrorMessage(addressFromString(bG[E]), "Invalid gwx contract address")
301307
302-func bI (bJ,bK,bL,bM,bN,bO,bP,bQ,bR,bS) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bJ), toString(bK), toString(bL), toString(bM), toString(bN), toString(bO), toString(bP), toString(bQ), toString(bR), toString(bS)], o)
308+func bL (bM,bN,bO,bP,bQ,bR,bS,bT,bU,bV) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bM), toString(bN), toString(bO), toString(bP), toString(bQ), toString(bR), toString(bS), toString(bT), toString(bU), toString(bV)], o)
303309
304310
305-func bT (bU,bV,bW,bM,bP,bQ) = makeString(["%d%d%d%d%d%d", toString(bU), toString(bV), toString(bW), toString(bM), toString(bP), toString(bQ)], o)
311+func bW (bX,bY,bZ,bP,bS,bT) = makeString(["%d%d%d%d%d%d", toString(bX), toString(bY), toString(bZ), toString(bP), toString(bS), toString(bT)], o)
306312
307313
308-func bX (bY) = if ((bY == "WAVES"))
314+func ca (cb) = if ((cb == "WAVES"))
309315 then wavesBalance(this).available
310- else assetBalance(this, fromBase58String(bY))
316+ else assetBalance(this, fromBase58String(cb))
311317
312318
313-func bZ (ca,cb) = fraction(ca, c, cb)
319+func cc (cd,ce) = fraction(cd, c, ce)
314320
315321
316-func cc (ca,cb,Q) = fraction(ca, c, cb, Q)
322+func cf (cd,ce,Q) = fraction(cd, c, ce, Q)
317323
318324
319-func cd (ce,cf,cg) = {
320- let ch = fraction((ce - cf), b, cf)
321- let ci = ((cg - X(ch)) > d)
322- if (!(ci))
323- then throw(("Big slpg: " + toString(ch)))
324- else $Tuple2(ci, min([ce, cf]))
325+func cg (ch,ci,cj) = {
326+ let ck = fraction((ch - ci), b, ci)
327+ let cl = ((cj - X(ck)) > d)
328+ if (!(cl))
329+ then throw(("Big slpg: " + toString(ck)))
330+ else $Tuple2(cl, min([ch, ci]))
325331 }
326332
327333
328-func cj (ck,cl,cm) = {
329- let ch = fraction(cl, b, ck)
330- let cn = (cm > ch)
331- if (if (cn)
334+func cm (cn,co,cp) = {
335+ let ck = fraction(co, b, cn)
336+ let cq = (cp > ck)
337+ if (if (cq)
332338 then true
333- else (cl > ck))
334- then throw(((((((toString(cl) + " ") + toString(ck)) + " ") + toString(ch)) + " ") + toString(cm)))
335- else cn
339+ else (co > cn))
340+ then throw(((((((toString(co) + " ") + toString(cn)) + " ") + toString(ck)) + " ") + toString(cp)))
341+ else cq
336342 }
337343
338344
339-func co (cp,cq,cr,cs) = {
340- let ct = I(cr, cp)
341- let cu = I(cs, cq)
342- bZ(cu, ct)
345+func cr (cs,ct,cu,cv) = {
346+ let cw = I(cu, cs)
347+ let cx = I(cv, ct)
348+ cc(cx, cw)
343349 }
344350
345351
346-func cv (cr,cs,cw) = {
347- let cx = bA
348- let cy = bB
349- let cz = co(cx, cy, cr, cs)
350- let cb = I(cr, cx)
351- let ca = I(cs, cy)
352- let cA = I(cw, a)
353- let cB = bZ(cb, cA)
354- let cC = bZ(ca, cA)
355-[cz, cB, cC]
352+func cy (cu,cv,cz) = {
353+ let cA = bD
354+ let cB = bE
355+ let cC = cr(cA, cB, cu, cv)
356+ let ce = I(cu, cA)
357+ let cd = I(cv, cB)
358+ let cD = I(cz, a)
359+ let cE = cc(ce, cD)
360+ let cF = cc(cd, cD)
361+[cC, cE, cF]
356362 }
357363
358364
359-func cD (cr,cs,cw) = {
360- let cE = cv(cr, cs, cw)
361-[M(cE[0], a), M(cE[1], a), M(cE[2], a)]
365+func cG (cu,cv,cz) = {
366+ let cH = cy(cu, cv, cz)
367+[M(cH[0], a), M(cH[1], a), M(cH[2], a)]
362368 }
363369
364370
365-func cF (cG,ar) = {
366- let cH = if ((ar == 0))
371+func cI (cJ,ar) = {
372+ let cK = if ((ar == 0))
367373 then 0
368- else fraction(cG, ar, a)
369- $Tuple2((cG - cH), cH)
374+ else fraction(cJ, ar, a)
375+ $Tuple2((cJ - cK), cK)
370376 }
371377
372378
373-func cI (cJ) = {
374- let cK = cJ[0]
375- let cL = cJ[1]
376- let aV = (cK + cL)
379+func cL (cM) = {
380+ let cN = cM[0]
381+ let cO = cM[1]
382+ let aV = (cN + cO)
377383 if ((aV == e))
378384 then e
379385 else {
380- let aR = parseIntValue(bg)
381- let cM = (aR * 2)
382- let cE = fraction(cK, cL, f)
383- let cN = fraction(cE, i, f)
384- let cO = fraction(toBigInt(cM), aV, f)
385- let cP = toBigInt((cM - 1))
386- func cQ (cR) = {
387- let cS = fraction(cR, cR, f)
388- let cT = fraction(cS, cR, f)
389- let cU = fraction(cT, f, cN)
390- fraction((cO + fraction(cU, g, f)), cR, (fraction(cP, cR, f) + fraction(h, cU, f)))
386+ let aR = parseIntValue(bj)
387+ let cP = (aR * 2)
388+ let cH = fraction(cN, cO, f)
389+ let cQ = fraction(cH, i, f)
390+ let cR = fraction(toBigInt(cP), aV, f)
391+ let cS = toBigInt((cP - 1))
392+ func cT (cU) = {
393+ let cV = fraction(cU, cU, f)
394+ let cW = fraction(cV, cU, f)
395+ let cX = fraction(cW, f, cQ)
396+ fraction((cR + fraction(cX, g, f)), cU, (fraction(cS, cU, f) + fraction(h, cX, f)))
391397 }
392398
393- func cV (cW,cX) = if (cW._2)
394- then cW
399+ func cY (cZ,da) = if (cZ._2)
400+ then cZ
395401 else {
396- let cR = cW._1
397- let cY = cQ(cR)
398- let cZ = (cY - value(cR))
399- let da = if ((e > cZ))
400- then -(cZ)
401- else cZ
402- if ((f >= da))
403- then $Tuple2(cY, true)
404- else $Tuple2(cY, false)
402+ let cU = cZ._1
403+ let db = cT(cU)
404+ let dc = (db - value(cU))
405+ let dd = if ((e > dc))
406+ then -(dc)
407+ else dc
408+ if ((f >= dd))
409+ then $Tuple2(db, true)
410+ else $Tuple2(db, false)
405411 }
406412
407- let db = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
408- let dc = {
409- let dd = db
410- let de = size(dd)
411- let df = $Tuple2(aV, false)
412- func dg (dh,di) = if ((di >= de))
413- then dh
414- else cV(dh, dd[di])
413+ let de = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
414+ let df = {
415+ let dg = de
416+ let dh = size(dg)
417+ let di = $Tuple2(aV, false)
418+ func dj (dk,dl) = if ((dl >= dh))
419+ then dk
420+ else cY(dk, dg[dl])
415421
416- func dj (dh,di) = if ((di >= de))
417- then dh
422+ func dm (dk,dl) = if ((dl >= dh))
423+ then dk
418424 else throw("List size exceeds 17")
419425
420- dj(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(df, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17)
426+ dm(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(di, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17)
421427 }
422- let cR = dc._1
423- let dk = dc._2
424- if (dk)
425- then cR
426- else throw(("D calculation error, D = " + toString(cR)))
428+ let cU = df._1
429+ let dn = df._2
430+ if (dn)
431+ then cU
432+ else throw(("D calculation error, D = " + toString(cU)))
427433 }
428434 }
429435
430436
431-func dl (dm,dn,do,dp) = {
432- let dq = bx
433- let dr = toBase58String(value(by))
434- let ds = toBase58String(value(bz))
437+func do (dp,dq,dr,ds) = {
435438 let dt = bA
436- let du = bB
437- let dv = toString(bw)
438- let dw = valueOrErrorMessage(assetInfo(dq), "Wrong LP id").quantity
439- if ((toBase58String(dq) != dn))
439+ let du = toBase58String(value(bB))
440+ let dv = toBase58String(value(bC))
441+ let dw = bD
442+ let dx = bE
443+ let dy = toString(bz)
444+ let dz = valueOrErrorMessage(assetInfo(dt), "Wrong LP id").quantity
445+ if ((toBase58String(dt) != dq))
440446 then throw("Wrong pmt asset")
441447 else {
442- let dx = bX(dr)
443- let dy = I(dx, dt)
444- let dz = bX(ds)
445- let dA = I(dz, du)
446- let dB = bZ(dA, dy)
447- let dC = M(dB, a)
448- let dD = I(do, a)
449- let dE = I(dw, a)
450- let dF = fraction(dy, dD, dE)
451- let dG = fraction(dA, dD, dE)
452- let dH = P(dF, dt, FLOOR)
453- let dI = P(dG, du, FLOOR)
454- let dJ = if ((dm == ""))
448+ let dA = ca(du)
449+ let dB = I(dA, dw)
450+ let dC = ca(dv)
451+ let dD = I(dC, dx)
452+ let dE = cc(dD, dB)
453+ let dF = M(dE, a)
454+ let dG = I(dr, a)
455+ let dH = I(dz, a)
456+ let dI = fraction(dB, dG, dH)
457+ let dJ = fraction(dD, dG, dH)
458+ let dK = P(dI, dw, FLOOR)
459+ let dL = P(dJ, dx, FLOOR)
460+ let dM = if ((dp == ""))
455461 then nil
456- else [ScriptTransfer(dp, dH, if ((dr == "WAVES"))
462+ else [ScriptTransfer(ds, dK, if ((du == "WAVES"))
457463 then unit
458- else fromBase58String(dr)), ScriptTransfer(dp, dI, if ((ds == "WAVES"))
464+ else fromBase58String(du)), ScriptTransfer(ds, dL, if ((dv == "WAVES"))
459465 then unit
460- else fromBase58String(ds)), StringEntry(aj(toString(dp), dm), bT(dH, dI, do, dC, height, lastBlock.timestamp)), IntegerEntry(ac(), dC), IntegerEntry(ad(height, lastBlock.timestamp), dC)]
461- $Tuple10(dH, dI, dr, ds, dx, dz, dw, dB, dv, dJ)
466+ else fromBase58String(dv)), StringEntry(aj(toString(ds), dp), bW(dK, dL, dr, dF, height, lastBlock.timestamp)), IntegerEntry(ac(), dF), IntegerEntry(ad(height, lastBlock.timestamp), dF)]
467+ $Tuple10(dK, dL, du, dv, dA, dC, dz, dE, dy, dM)
462468 }
463469 }
464470
465471
466-func dK (dm,cg,dL,dM,dN,dO,dp,dP,dQ,dR,dS,dT,dU) = {
467- let dq = bx
468- let dV = toBase58String(value(by))
469- let dW = toBase58String(value(bz))
470- let dX = bA
471- let dY = bB
472- let dv = toString(bw)
473- let dZ = valueOrErrorMessage(assetInfo(dq), "Wr lp as").quantity
474- let dx = if (dP)
475- then bX(dV)
476- else if (if (dR)
477- then (dU == dV)
472+func dN (dp,cj,dO,dP,dQ,dR,ds,dS,dT,dU,dV,dW,dX) = {
473+ let dt = bA
474+ let dY = toBase58String(value(bB))
475+ let dZ = toBase58String(value(bC))
476+ let ea = bD
477+ let eb = bE
478+ let dy = toString(bz)
479+ let ec = valueOrErrorMessage(assetInfo(dt), "Wr lp as").quantity
480+ let dA = if (dS)
481+ then ca(dY)
482+ else if (if (dU)
483+ then (dX == dY)
478484 else false)
479- then (bX(dV) - dT)
480- else if (dR)
481- then bX(dV)
482- else (bX(dV) - dL)
483- let dz = if (dP)
484- then bX(dW)
485- else if (if (dR)
486- then (dU == dW)
485+ then (ca(dY) - dW)
486+ else if (dU)
487+ then ca(dY)
488+ else (ca(dY) - dO)
489+ let dC = if (dS)
490+ then ca(dZ)
491+ else if (if (dU)
492+ then (dX == dZ)
487493 else false)
488- then (bX(dW) - dT)
489- else if (dR)
490- then bX(dW)
491- else (bX(dW) - dN)
492- let ea = I(dL, dX)
493- let eb = I(dN, dY)
494- let ec = bZ(eb, ea)
495- let dy = I(dx, dX)
496- let dA = I(dz, dY)
497- let cl = cI([dy, dA])
498- let ed = if ((dZ == 0))
494+ then (ca(dZ) - dW)
495+ else if (dU)
496+ then ca(dZ)
497+ else (ca(dZ) - dQ)
498+ let ed = I(dO, ea)
499+ let ee = I(dQ, eb)
500+ let ef = cc(ee, ed)
501+ let dB = I(dA, ea)
502+ let dD = I(dC, eb)
503+ let co = cL([dB, dD])
504+ let eg = if ((ec == 0))
499505 then {
500- let ck = cI([(dy + ea), (dA + eb)])
501- let ee = if ((ck > cl))
506+ let cn = cL([(dB + ed), (dD + ee)])
507+ let eh = if ((cn > co))
502508 then true
503509 else throw("D1 should be greater than D0")
504- if ((ee == ee))
510+ if ((eh == eh))
505511 then {
506- let dB = d
507- let ef = d
508- let cA = ck
509- $Tuple5(M(cA, a), M(ea, dX), M(eb, dY), bZ((dA + eb), (dy + ea)), ef)
512+ let dE = d
513+ let ei = d
514+ let cD = cn
515+ $Tuple5(M(cD, a), M(ed, ea), M(ee, eb), cc((dD + ee), (dB + ed)), ei)
510516 }
511517 else throw("Strict value is not equal to itself.")
512518 }
513519 else {
514- let dB = bZ(dA, dy)
515- let eg = fraction(X((dB - ec)), c, dB)
516- let ef = I(cg, a)
517- if (if (if (dS)
518- then (dB != d)
520+ let dE = cc(dD, dB)
521+ let ej = fraction(X((dE - ef)), c, dE)
522+ let ei = I(cj, a)
523+ if (if (if (dV)
524+ then (dE != d)
519525 else false)
520- then (eg > ef)
526+ then (ej > ei)
521527 else false)
522- then throw(((("Price slippage " + toString(eg)) + " > ") + toString(ef)))
528+ then throw(((("Price slippage " + toString(ej)) + " > ") + toString(ei)))
523529 else {
524- let eh = I(dZ, a)
525- let ei = fraction(ea, cc(dA, dy, CEILING), c, CEILING)
526- let ej = fraction(eb, c, cc(dA, dy, FLOOR), CEILING)
527- let ek = if ((ei > eb))
528- then $Tuple2(ej, eb)
529- else $Tuple2(ea, ei)
530- let el = ek._1
531- let em = ek._2
532- let ck = cI([(dy + el), (dA + em)])
533- let ee = if ((ck > cl))
530+ let ek = I(ec, a)
531+ let el = fraction(ed, cf(dD, dB, CEILING), c, CEILING)
532+ let em = fraction(ee, c, cf(dD, dB, FLOOR), CEILING)
533+ let en = if ((el > ee))
534+ then $Tuple2(em, ee)
535+ else $Tuple2(ed, el)
536+ let eo = en._1
537+ let ep = en._2
538+ let cn = cL([(dB + eo), (dD + ep)])
539+ let eh = if ((cn > co))
534540 then true
535541 else throw("D1 should be greater than D0")
536- if ((ee == ee))
542+ if ((eh == eh))
537543 then {
538- let cA = fraction(eh, (ck - cl), cl)
539- $Tuple5(P(cA, a, FLOOR), P(el, dX, CEILING), P(em, dY, CEILING), dB, ef)
544+ let cD = fraction(ek, (cn - co), co)
545+ $Tuple5(P(cD, a, FLOOR), P(eo, ea, CEILING), P(ep, eb, CEILING), dE, ei)
540546 }
541547 else throw("Strict value is not equal to itself.")
542548 }
543549 }
544- let en = ed._1
545- let eo = ed._2
546- let ep = ed._3
547- let dC = M(ed._4, a)
548- let eq = M(ed._5, a)
549- if ((0 >= en))
550+ let eq = eg._1
551+ let er = eg._2
552+ let es = eg._3
553+ let dF = M(eg._4, a)
554+ let et = M(eg._5, a)
555+ if ((0 >= eq))
550556 then throw("LP <= 0")
551557 else {
552- let er = if (!(dQ))
558+ let eu = if (!(dT))
553559 then 0
554- else en
555- let es = (dL - eo)
556- let et = (dN - ep)
557- let eu = if (if (dR)
558- then (dU == dV)
560+ else eq
561+ let ev = (dO - er)
562+ let ew = (dQ - es)
563+ let ex = if (if (dU)
564+ then (dX == dY)
559565 else false)
560- then $Tuple2(dT, 0)
561- else if (if (dR)
562- then (dU == dW)
566+ then $Tuple2(dW, 0)
567+ else if (if (dU)
568+ then (dX == dZ)
563569 else false)
564- then $Tuple2(0, dT)
565- else $Tuple2(eo, ep)
566- let ev = eu._1
567- let ew = eu._2
568- let ex = [IntegerEntry(ac(), dC), IntegerEntry(ad(height, lastBlock.timestamp), dC), StringEntry(ag(dp, dm), bI(ev, ew, er, dC, cg, eq, height, lastBlock.timestamp, es, et))]
569- $Tuple13(en, er, dC, dx, dz, dZ, dq, dv, ex, es, et, dM, dO)
570+ then $Tuple2(0, dW)
571+ else $Tuple2(er, es)
572+ let ey = ex._1
573+ let ez = ex._2
574+ let eA = [IntegerEntry(ac(), dF), IntegerEntry(ad(height, lastBlock.timestamp), dF), StringEntry(ag(ds, dp), bL(ey, ez, eu, dF, cj, et, height, lastBlock.timestamp, ev, ew))]
575+ $Tuple13(eq, eu, dF, dA, dC, ec, dt, dy, eA, ev, ew, dP, dR)
570576 }
571577 }
572578
573579
574-func ey (cJ,cX,ez) = {
575- let eA = g
576- let eB = cJ[if ((cX == 0))
580+func eB (cM,da,eC) = {
581+ let eD = g
582+ let eE = cM[if ((da == 0))
577583 then 1
578584 else 0]
579- let eC = parseBigIntValue(m)
580- let aR = (parseBigIntValue(bg) * eC)
581- let aV = eB
582- let cM = (aR * eA)
583- let eD = (((((ez * ez) / (eB * eA)) * ez) * eC) / (cM * eA))
584- let eE = ((aV + ((ez * eC) / cM)) - ez)
585- func cV (cW,eF) = {
586- let eG = cW
587- let eH = eG._1
588- let dk = eG._2
589- if ((dk != unit))
590- then cW
585+ let eF = parseBigIntValue(m)
586+ let aR = (parseBigIntValue(bj) * eF)
587+ let aV = eE
588+ let cP = (aR * eD)
589+ let eG = (((((eC * eC) / (eE * eD)) * eC) * eF) / (cP * eD))
590+ let eH = ((aV + ((eC * eF) / cP)) - eC)
591+ func cY (cZ,eI) = {
592+ let eJ = cZ
593+ let eK = eJ._1
594+ let dn = eJ._2
595+ if ((dn != unit))
596+ then cZ
591597 else {
592- let eI = (((eH * eH) + eD) / ((g * eH) + eE))
593- let eJ = Y((eI - value(eH)))
594- if ((f >= eJ))
595- then $Tuple2(eI, eF)
596- else $Tuple2(eI, unit)
598+ let eL = (((eK * eK) + eG) / ((g * eK) + eH))
599+ let eM = Y((eL - value(eK)))
600+ if ((f >= eM))
601+ then $Tuple2(eL, eI)
602+ else $Tuple2(eL, unit)
597603 }
598604 }
599605
600- let db = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
601- let eK = {
602- let dd = db
603- let de = size(dd)
604- let df = $Tuple2(ez, unit)
605- func dg (dh,di) = if ((di >= de))
606- then dh
607- else cV(dh, dd[di])
606+ let de = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
607+ let eN = {
608+ let dg = de
609+ let dh = size(dg)
610+ let di = $Tuple2(eC, unit)
611+ func dj (dk,dl) = if ((dl >= dh))
612+ then dk
613+ else cY(dk, dg[dl])
608614
609- func dj (dh,di) = if ((di >= de))
610- then dh
615+ func dm (dk,dl) = if ((dl >= dh))
616+ then dk
611617 else throw("List size exceeds 15")
612618
613- dj(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(df, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
619+ dm(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(di, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
614620 }
615- let eH = eK._1
616- let dk = eK._2
617- if ((dk != unit))
618- then eH
619- else throw(("Y calculation error, Y = " + toString(eH)))
621+ let eK = eN._1
622+ let dn = eN._2
623+ if ((dn != unit))
624+ then eK
625+ else throw(("Y calculation error, Y = " + toString(eK)))
620626 }
621627
622628
623-func eL (eM,eN,eO) = {
624- let eP = fraction(cI([L(eM, toBigInt(bA)), L(eN, toBigInt(bB))]), c, eO)
625- if ((eO == e))
629+func eO (eP,eQ,eR) = {
630+ let eS = fraction(cL([L(eP, toBigInt(bD)), L(eQ, toBigInt(bE))]), c, eR)
631+ if ((eR == e))
626632 then e
627- else eP
633+ else eS
628634 }
629635
630636
631-func eQ (eR,eS,eT) = {
632- let eU = (toBigInt(bX(bq(by))) - eR)
633- let eV = (toBigInt(bX(bq(bz))) - eS)
634- let eW = (toBigInt(value(assetInfo(bx)).quantity) - eT)
635- let eX = eL(eU, eV, eW)
636- eX
637+func eT (eU,eV,eW) = {
638+ let eX = (toBigInt(ca(bt(bB))) - eU)
639+ let eY = (toBigInt(ca(bt(bC))) - eV)
640+ let eZ = (toBigInt(value(assetInfo(bA)).quantity) - eW)
641+ let fa = eO(eX, eY, eZ)
642+ fa
637643 }
638644
639645
640-func eY (eZ,fa,eT) = {
641- let eU = (bX(bq(by)) + eZ)
642- let eV = (bX(bq(bz)) + fa)
643- let eW = (value(assetInfo(bx)).quantity + eT)
644- let eP = eL(toBigInt(eU), toBigInt(eV), toBigInt(eW))
645- let fb = [IntegerEntry(at, height), StringEntry(as, toString(eP))]
646- $Tuple2(fb, eP)
646+func fb (fc,fd,eW) = {
647+ let eX = (ca(bt(bB)) + fc)
648+ let eY = (ca(bt(bC)) + fd)
649+ let eZ = (value(assetInfo(bA)).quantity + eW)
650+ let eS = eO(toBigInt(eX), toBigInt(eY), toBigInt(eZ))
651+ let fe = [IntegerEntry(at, height), StringEntry(as, toString(eS))]
652+ $Tuple2(fe, eS)
647653 }
648654
649655
650-func fc (fd,eP) = if ((eP >= fd))
656+func ff (fg,eS) = if ((eS >= fg))
651657 then true
652658 else ba("updated DLp lower than current DLp")
653659
654660
655-func fe (ff) = {
656- let eU = bX(bq(by))
657- let eV = bX(bq(bz))
658- let fg = ff.amount
659- let fh = fraction(ff.amount, ff.price, a, FLOOR)
660- let fi = if ((ff.orderType == Buy))
661- then $Tuple2(fg, -(fh))
662- else $Tuple2(-(fg), fh)
663- let eZ = fi._1
664- let fa = fi._2
665- if (if (if (bh())
661+func fh (fi) = {
662+ let eX = ca(bt(bB))
663+ let eY = ca(bt(bC))
664+ let fj = fi.amount
665+ let fk = fraction(fi.amount, fi.price, a, FLOOR)
666+ let fl = if ((fi.orderType == Buy))
667+ then $Tuple2(fj, -(fk))
668+ else $Tuple2(-(fj), fk)
669+ let fc = fl._1
670+ let fd = fl._2
671+ if (if (if (bk())
666672 then true
667- else (bw == s))
673+ else (bz == s))
668674 then true
669- else (bw == t))
675+ else (bz == t))
670676 then throw("Admin blocked")
671- else if (if ((ff.assetPair.amountAsset != by))
677+ else if (if ((fi.assetPair.amountAsset != bB))
672678 then true
673- else (ff.assetPair.priceAsset != bz))
679+ else (fi.assetPair.priceAsset != bC))
674680 then throw("Wr assets")
675681 else {
676- let fj = parseBigIntValue(valueOrElse(getString(this, as), "0"))
677- let fk = eY(eZ, fa, 0)
678- let fl = fk._1
679- let fm = fk._2
680- let fn = (fm >= fj)
681- let fo = makeString(["dLp=", toString(fj), " dLpNew=", toString(fm), " amountAssetBalance=", toString(eU), " priceAssetBalance=", toString(eV), " amountAssetBalanceDelta=", toString(eZ), " priceAssetBalanceDelta=", toString(fa), " height=", toString(height)], "")
682- $Tuple2(fn, fo)
682+ let fm = parseBigIntValue(valueOrElse(getString(this, as), "0"))
683+ let fn = fb(fc, fd, 0)
684+ let fo = fn._1
685+ let fp = fn._2
686+ let fq = (fp >= fm)
687+ let fr = makeString(["dLp=", toString(fm), " dLpNew=", toString(fp), " amountAssetBalance=", toString(eX), " priceAssetBalance=", toString(eY), " amountAssetBalanceDelta=", toString(fc), " priceAssetBalanceDelta=", toString(fd), " height=", toString(height)], "")
688+ $Tuple2(fq, fr)
683689 }
684690 }
685691
686692
687-func fp (cX) = if ((size(cX.payments) != 1))
693+func fs (da) = if ((size(da.payments) != 1))
688694 then throw("1 pmnt exp")
689695 else {
690- let fq = value(cX.payments[0])
691- let dn = value(fq.assetId)
692- let dT = fq.amount
693- let ed = dl(toBase58String(cX.transactionId), toBase58String(dn), dT, cX.caller)
694- let dH = ed._1
695- let dI = ed._2
696- let dv = parseIntValue(ed._9)
697- let dJ = ed._10
698- if (if (bh())
699- then true
700- else (dv == t))
701- then throw(("Admin blocked: " + toString(dv)))
702- else $Tuple5(dH, dI, dT, dn, dJ)
696+ let ft = value(da.payments[0])
697+ let dq = value(ft.assetId)
698+ let dW = ft.amount
699+ let eg = do(toBase58String(da.transactionId), toBase58String(dq), dW, da.caller)
700+ let dK = eg._1
701+ let dL = eg._2
702+ let dy = parseIntValue(eg._9)
703+ let dM = eg._10
704+ let fu = if (!(bi(da.caller)))
705+ then if (bk())
706+ then true
707+ else (bz == t)
708+ else false
709+ if (fu)
710+ then throw(("Admin blocked: " + toString(dy)))
711+ else $Tuple5(dK, dL, dW, dq, dM)
703712 }
704713
705714
706-func fr (fs,ai,ft,fu,cg,dQ,dR,dS,dT,dU) = {
707- let ed = dK(ai, cg, value(ft).amount, value(ft).assetId, value(fu).amount, value(fu).assetId, fs, (ai == ""), dQ, dR, dS, dT, dU)
708- let dv = parseIntValue(ed._8)
709- if (if (if (bh())
710- then true
711- else (dv == r))
712- then true
713- else (dv == t))
714- then throw(("Blocked:" + toString(dv)))
715- else ed
715+func fv (fw,ai,fx,fy,cj,dT,dU,dV,dW,dX) = {
716+ let eg = dN(ai, cj, value(fx).amount, value(fx).assetId, value(fy).amount, value(fy).assetId, fw, (ai == ""), dT, dU, dV, dW, dX)
717+ let dy = parseIntValue(eg._8)
718+ let fz = if (!(bi(addressFromStringValue(fw))))
719+ then if (if (bk())
720+ then true
721+ else (bz == t))
722+ then true
723+ else (bz == r)
724+ else false
725+ if (fz)
726+ then throw(("Blocked:" + toString(dy)))
727+ else eg
716728 }
717729
718730
719-func fv (fw,dn,dp,ai,fx) = {
720- let dr = toBase58String(value(by))
721- let ds = toBase58String(value(bz))
722- let dq = bx
723- let dX = bA
724- let dY = bB
725- let eW = toBigInt(valueOrErrorMessage(assetInfo(dq), "invalid lp asset").quantity)
726- let fy = if ((eW > e))
731+func fA (fB,dq,ds,ai,fC) = {
732+ let du = toBase58String(value(bB))
733+ let dv = toBase58String(value(bC))
734+ let dt = bA
735+ let ea = bD
736+ let eb = bE
737+ let eZ = toBigInt(valueOrErrorMessage(assetInfo(dt), "invalid lp asset").quantity)
738+ let fD = if ((eZ > e))
727739 then true
728740 else throw("initial deposit requires all coins")
729- if ((fy == fy))
741+ if ((fD == fD))
730742 then {
731- let dx = bX(dr)
732- let dz = bX(ds)
733- let fz = if ((ai == ""))
734- then $Tuple2(dx, dz)
735- else if ((dn == dr))
736- then if ((fw > dx))
743+ let dA = ca(du)
744+ let dC = ca(dv)
745+ let fE = if ((ai == ""))
746+ then $Tuple2(dA, dC)
747+ else if ((dq == du))
748+ then if ((fB > dA))
737749 then throw("invalid payment amount")
738- else $Tuple2((dx - fw), dz)
739- else if ((dn == ds))
740- then if ((fw > dz))
750+ else $Tuple2((dA - fB), dC)
751+ else if ((dq == dv))
752+ then if ((fB > dC))
741753 then throw("invalid payment amount")
742- else $Tuple2(dx, (dz - fw))
754+ else $Tuple2(dA, (dC - fB))
743755 else throw("wrong pmtAssetId")
744- let fA = fz._1
745- let fB = fz._2
746- let fC = if ((dn == dr))
747- then $Tuple2(fw, 0)
748- else if ((dn == ds))
749- then $Tuple2(0, fw)
756+ let fF = fE._1
757+ let fG = fE._2
758+ let fH = if ((dq == du))
759+ then $Tuple2(fB, 0)
760+ else if ((dq == dv))
761+ then $Tuple2(0, fB)
750762 else throw("invalid payment")
751- let fD = fC._1
752- let fE = fC._2
753- let fF = if (fx)
754- then $Tuple3(cF(fD, bd)._1, cF(fE, bd)._1, cF(fw, bd)._2)
755- else $Tuple3(fD, fE, 0)
756- let fG = fF._1
757- let fH = fF._2
758- let cH = fF._3
759- let fI = (fA + fG)
760- let fJ = (fB + fH)
761- let cl = cI([I(fA, bA), I(fB, bB)])
762- let ck = cI([I(fI, bA), I(fJ, bB)])
763- let ee = if ((ck > cl))
763+ let fI = fH._1
764+ let fJ = fH._2
765+ let fK = if (fC)
766+ then $Tuple3(cI(fI, bd)._1, cI(fJ, bd)._1, cI(fB, bd)._2)
767+ else $Tuple3(fI, fJ, 0)
768+ let fL = fK._1
769+ let fM = fK._2
770+ let cK = fK._3
771+ let fN = (fF + fL)
772+ let fO = (fG + fM)
773+ let co = cL([I(fF, bD), I(fG, bE)])
774+ let cn = cL([I(fN, bD), I(fO, bE)])
775+ let eh = if ((cn > co))
764776 then true
765777 else throw()
766- if ((ee == ee))
778+ if ((eh == eh))
767779 then {
768- let fK = fraction(eW, (ck - cl), cl, FLOOR)
769- let dC = M(bZ(I(fJ, dY), I(fI, dX)), a)
770- let ex = [IntegerEntry(ac(), dC), IntegerEntry(ad(height, lastBlock.timestamp), dC), StringEntry(ag(dp, ai), bI(fD, fE, toInt(fK), dC, 0, 0, height, lastBlock.timestamp, 0, 0))]
771- let fL = fraction(fB, a, fA)
772- let fM = fraction(fw, a, (fL + a))
773- let fN = (fw - fM)
774- let fO = fraction(eW, toBigInt(fN), toBigInt(fB))
775- let fP = toInt(fraction((fK - fO), b, fO))
776- $Tuple4(toInt(fK), ex, cH, fP)
780+ let fP = fraction(eZ, (cn - co), co, FLOOR)
781+ let dF = M(cc(I(fO, eb), I(fN, ea)), a)
782+ let eA = [IntegerEntry(ac(), dF), IntegerEntry(ad(height, lastBlock.timestamp), dF), StringEntry(ag(ds, ai), bL(fI, fJ, toInt(fP), dF, 0, 0, height, lastBlock.timestamp, 0, 0))]
783+ let fQ = fraction(fG, a, fF)
784+ let fR = fraction(fB, a, (fQ + a))
785+ let fS = (fB - fR)
786+ let fT = fraction(eZ, toBigInt(fS), toBigInt(fG))
787+ let fU = toInt(fraction((fP - fT), b, fT))
788+ $Tuple4(toInt(fP), eA, cK, fU)
777789 }
778790 else throw("Strict value is not equal to itself.")
779791 }
781793 }
782794
783795
784-func fQ (fR,fS,fT,fs,fU,fV) = {
785- let dq = toBase58String(value(bx))
786- let dr = toBase58String(value(by))
787- let ds = toBase58String(value(bz))
788- let fW = bA
789- let fX = bB
790- let fY = bw
791- let dp = if ((fs == bH))
792- then fU
793- else fs
794- let fq = value(fT[0])
795- let dn = value(fq.assetId)
796- let dT = fq.amount
797- let eX = eQ(e, e, e)
798- if ((eX == eX))
796+func fV (fW,fX,fY,fw,fZ,ga) = {
797+ let dt = toBase58String(value(bA))
798+ let du = toBase58String(value(bB))
799+ let dv = toBase58String(value(bC))
800+ let gb = bD
801+ let gc = bE
802+ let gd = bz
803+ let ds = if ((fw == bK))
804+ then fZ
805+ else fw
806+ let ft = value(fY[0])
807+ let dq = value(ft.assetId)
808+ let dW = ft.amount
809+ let fa = eT(e, e, e)
810+ if ((fa == fa))
799811 then {
800- let dm = toBase58String(fV)
801- if ((dq != toBase58String(dn)))
812+ let dp = toBase58String(ga)
813+ if ((dt != toBase58String(dq)))
802814 then throw("Wrong LP")
803815 else {
804- let dx = bX(dr)
805- let dz = bX(ds)
806- let fZ = {
807- let be = invoke(this, "getOneTknV2READONLY", [fR, dT], nil)
816+ let dA = ca(du)
817+ let dC = ca(dv)
818+ let ge = {
819+ let be = invoke(this, "getOneTknV2READONLY", [fW, dW], nil)
808820 if ($isInstanceOf(be, "(Int, Int)"))
809821 then be
810822 else throw(($getType(be) + " couldn't be cast to (Int, Int)"))
811823 }
812- if ((fZ == fZ))
824+ if ((ge == ge))
813825 then {
814- let cH = fZ._2
815- let ga = fZ._1
816- let gb = if (if ((fS > 0))
817- then (fS > ga)
826+ let cK = ge._2
827+ let gf = ge._1
828+ let gg = if (if ((fX > 0))
829+ then (fX > gf)
818830 else false)
819- then ba(makeString(["amount to receive is less than ", toString(fS)], ""))
820- else ga
821- let gc = if ((fR == dr))
822- then $Tuple4(gb, 0, ((dx - gb) - cH), dz)
823- else if ((fR == ds))
824- then $Tuple4(0, gb, dx, ((dz - gb) - cH))
831+ then ba(makeString(["amount to receive is less than ", toString(fX)], ""))
832+ else gf
833+ let gh = if ((fW == du))
834+ then $Tuple4(gg, 0, ((dA - gg) - cK), dC)
835+ else if ((fW == dv))
836+ then $Tuple4(0, gg, dA, ((dC - gg) - cK))
825837 else throw("invalid out asset id")
826- let gd = gc._1
827- let ge = gc._2
828- let fI = gc._3
829- let fJ = gc._4
830- let gf = bZ(I(fJ, fX), I(fI, fW))
831- let gg = M(gf, a)
832- let gh = if ((fR == "WAVES"))
838+ let gi = gh._1
839+ let gj = gh._2
840+ let fN = gh._3
841+ let fO = gh._4
842+ let gk = cc(I(fO, gc), I(fN, gb))
843+ let gl = M(gk, a)
844+ let gm = if ((fW == "WAVES"))
833845 then unit
834- else fromBase58String(fR)
835- let gi = if ((cH > 0))
836- then [ScriptTransfer(bj, cH, gh)]
846+ else fromBase58String(fW)
847+ let gn = if ((cK > 0))
848+ then [ScriptTransfer(bm, cK, gm)]
837849 else nil
838- let dJ = ([ScriptTransfer(dp, gb, gh), StringEntry(aj(toString(dp), dm), bT(gd, ge, dT, gg, height, lastBlock.timestamp)), IntegerEntry(ac(), gg), IntegerEntry(ad(height, lastBlock.timestamp), gg)] ++ gi)
839- if ((dJ == dJ))
850+ let dM = ([ScriptTransfer(ds, gg, gm), StringEntry(aj(toString(ds), dp), bW(gi, gj, dW, gl, height, lastBlock.timestamp)), IntegerEntry(ac(), gl), IntegerEntry(ad(height, lastBlock.timestamp), gl)] ++ gn)
851+ if ((dM == dM))
840852 then {
841- let gj = invoke(aU, "burn", [dT], [AttachedPayment(dn, dT)])
842- if ((gj == gj))
853+ let go = invoke(aU, "burn", [dW], [AttachedPayment(dq, dW)])
854+ if ((go == go))
843855 then {
844- let gk = {
845- let gl = if ((this == bj))
856+ let gp = {
857+ let gq = if ((this == bm))
846858 then 0
847- else cH
848- let gm = if ((bo(fR) == by))
859+ else cK
860+ let gr = if ((br(fW) == bB))
849861 then true
850862 else false
851- if (gm)
852- then $Tuple2(-((ga + gl)), 0)
853- else $Tuple2(0, -((ga + gl)))
863+ if (gr)
864+ then $Tuple2(-((gf + gq)), 0)
865+ else $Tuple2(0, -((gf + gq)))
854866 }
855- let eZ = gk._1
856- let fa = gk._2
857- let gn = eY(eZ, fa, 0)
858- let go = gn._1
859- let eP = gn._2
860- let gp = fc(eX, eP)
861- if ((gp == gp))
862- then $Tuple2((dJ ++ go), gb)
867+ let fc = gp._1
868+ let fd = gp._2
869+ let gs = fb(fc, fd, 0)
870+ let gt = gs._1
871+ let eS = gs._2
872+ let gu = ff(fa, eS)
873+ if ((gu == gu))
874+ then $Tuple2((dM ++ gt), gg)
863875 else throw("Strict value is not equal to itself.")
864876 }
865877 else throw("Strict value is not equal to itself.")
873885 }
874886
875887
876-func gq () = {
877- let gr = aS()
878- let aQ = getString(gr, aa())
888+func gv () = {
889+ let gw = aS()
890+ let aQ = getString(gw, aa())
879891 if ($isInstanceOf(aQ, "String"))
880892 then {
881893 let aV = aQ
887899 }
888900
889901
890-let gs = throw("Permission denied")
902+let gx = throw("Permission denied")
891903
892-func gt (cX) = {
893- let aQ = gq()
904+func gy (da) = {
905+ let aQ = gv()
894906 if ($isInstanceOf(aQ, "ByteVector"))
895907 then {
896- let gu = aQ
897- (cX.callerPublicKey == gu)
908+ let gz = aQ
909+ (da.callerPublicKey == gz)
898910 }
899911 else if ($isInstanceOf(aQ, "Unit"))
900- then (cX.caller == this)
912+ then (da.caller == this)
901913 else throw("Match error")
902914 }
903915
904916
905-func gv (cX) = {
906- let aQ = gq()
917+func gA (da) = {
918+ let aQ = gv()
907919 if ($isInstanceOf(aQ, "ByteVector"))
908920 then {
909- let gu = aQ
910- if ((cX.callerPublicKey == gu))
921+ let gz = aQ
922+ if ((da.callerPublicKey == gz))
911923 then true
912- else gs
924+ else gx
913925 }
914926 else if ($isInstanceOf(aQ, "Unit"))
915- then if ((cX.caller == this))
927+ then if ((da.caller == this))
916928 then true
917- else gs
929+ else gx
918930 else throw("Match error")
919931 }
920932
921933
922-func gw (gx,ez,gy) = {
923- let bs = bk()
924- let dr = bs[x]
925- let ds = bs[y]
926- let eA = g
927- let eC = parseBigIntValue(m)
928- let aR = (parseBigIntValue(bg) * eC)
929- let cJ = if ((gx == false))
930- then [(toBigInt(bX(dr)) + gy), toBigInt(bX(ds))]
931- else [(toBigInt(bX(ds)) + gy), toBigInt(bX(dr))]
932- let eB = cJ[0]
933- let aV = eB
934- let cM = (aR * eA)
935- let eD = (((((ez * ez) / (eB * eA)) * ez) * eC) / (cM * eA))
936- let eE = ((aV + ((ez * eC) / cM)) - ez)
937- func cV (cW,eF) = {
938- let gz = cW
939- let eH = gz._1
940- let dk = gz._2
941- if ((dk != unit))
942- then cW
934+func gB (gC,eC,gD) = {
935+ let bv = bn()
936+ let du = bv[x]
937+ let dv = bv[y]
938+ let eD = g
939+ let eF = parseBigIntValue(m)
940+ let aR = (parseBigIntValue(bj) * eF)
941+ let cM = if ((gC == false))
942+ then [(toBigInt(ca(du)) + gD), toBigInt(ca(dv))]
943+ else [(toBigInt(ca(dv)) + gD), toBigInt(ca(du))]
944+ let eE = cM[0]
945+ let aV = eE
946+ let cP = (aR * eD)
947+ let eG = (((((eC * eC) / (eE * eD)) * eC) * eF) / (cP * eD))
948+ let eH = ((aV + ((eC * eF) / cP)) - eC)
949+ func cY (cZ,eI) = {
950+ let gE = cZ
951+ let eK = gE._1
952+ let dn = gE._2
953+ if ((dn != unit))
954+ then cZ
943955 else {
944- let eI = (((eH * eH) + eD) / ((g * eH) + eE))
945- let eJ = Y((eI - value(eH)))
946- if ((f >= eJ))
947- then $Tuple2(eI, eF)
948- else $Tuple2(eI, unit)
956+ let eL = (((eK * eK) + eG) / ((g * eK) + eH))
957+ let eM = Y((eL - value(eK)))
958+ if ((f >= eM))
959+ then $Tuple2(eL, eI)
960+ else $Tuple2(eL, unit)
949961 }
950962 }
951963
952- let db = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
953- let gA = {
954- let dd = db
955- let de = size(dd)
956- let df = $Tuple2(ez, unit)
957- func dg (dh,di) = if ((di >= de))
958- then dh
959- else cV(dh, dd[di])
964+ let de = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
965+ let gF = {
966+ let dg = de
967+ let dh = size(dg)
968+ let di = $Tuple2(eC, unit)
969+ func dj (dk,dl) = if ((dl >= dh))
970+ then dk
971+ else cY(dk, dg[dl])
960972
961- func dj (dh,di) = if ((di >= de))
962- then dh
973+ func dm (dk,dl) = if ((dl >= dh))
974+ then dk
963975 else throw("List size exceeds 15")
964976
965- dj(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(df, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
977+ dm(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(di, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
966978 }
967- let eH = gA._1
968- let dk = gA._2
969- if ((dk != unit))
970- then eH
971- else throw(("Y calculation error, Y = " + toString(eH)))
979+ let eK = gF._1
980+ let dn = gF._2
981+ if ((dn != unit))
982+ then eK
983+ else throw(("Y calculation error, Y = " + toString(eK)))
972984 }
973985
974986
975-func gB () = valueOrElse(getBoolean(aU, aH(toString(this))), false)
987+func gG () = valueOrElse(getBoolean(aU, aH(toString(this))), false)
976988
977989
978-@Callable(cX)
979-func calculateAmountOutForSwapREADONLY (gC,gx,gD) = {
980- let gE = if ((gx == false))
990+@Callable(da)
991+func calculateAmountOutForSwapREADONLY (gH,gC,gI) = {
992+ let gJ = if ((gC == false))
981993 then {
982- let gF = aW(this, al())
983- let gy = (toBigInt(bX(aW(this, ak()))) + toBigInt(gC))
984- $Tuple2(gF, gy)
994+ let gK = aW(this, al())
995+ let gD = (toBigInt(ca(aW(this, ak()))) + toBigInt(gH))
996+ $Tuple2(gK, gD)
985997 }
986998 else {
987- let gF = aW(this, ak())
988- let gy = (toBigInt(bX(aW(this, al()))) + toBigInt(gC))
989- $Tuple2(gF, gy)
999+ let gK = aW(this, ak())
1000+ let gD = (toBigInt(ca(aW(this, al()))) + toBigInt(gH))
1001+ $Tuple2(gK, gD)
9901002 }
991- let gF = gE._1
992- let gy = gE._2
993- let bs = bk()
994- let dr = bs[x]
995- let ds = bs[y]
996- let cJ = [toBigInt(bX(dr)), toBigInt(bX(ds))]
997- let ez = cI(cJ)
998- let eH = gw(gx, ez, toBigInt(gC))
999- let gG = ((toBigInt(bX(gF)) - eH) - toBigInt(1))
1000- let gH = max([0, toInt(gG)])
1001- let gI = if ((gx == false))
1002- then [((toBigInt(bX(dr)) + toBigInt(gC)) + toBigInt(gD)), (toBigInt(bX(ds)) - gG)]
1003- else [(toBigInt(bX(dr)) - gG), ((toBigInt(bX(ds)) + toBigInt(gC)) + toBigInt(gD))]
1004- let gJ = cI(gI)
1005- let ee = if ((gJ >= ez))
1003+ let gK = gJ._1
1004+ let gD = gJ._2
1005+ let bv = bn()
1006+ let du = bv[x]
1007+ let dv = bv[y]
1008+ let cM = [toBigInt(ca(du)), toBigInt(ca(dv))]
1009+ let eC = cL(cM)
1010+ let eK = gB(gC, eC, toBigInt(gH))
1011+ let gL = ((toBigInt(ca(gK)) - eK) - toBigInt(1))
1012+ let gM = max([0, toInt(gL)])
1013+ let gN = if ((gC == false))
1014+ then [((toBigInt(ca(du)) + toBigInt(gH)) + toBigInt(gI)), (toBigInt(ca(dv)) - gL)]
1015+ else [(toBigInt(ca(du)) - gL), ((toBigInt(ca(dv)) + toBigInt(gH)) + toBigInt(gI))]
1016+ let gO = cL(gN)
1017+ let eh = if ((gO >= eC))
10061018 then true
1007- else throw(makeString(["new D is fewer error", toString(ez), toString(gJ)], "__"))
1008- if ((ee == ee))
1009- then $Tuple2(nil, gH)
1019+ else throw(makeString(["new D is fewer error", toString(eC), toString(gO)], "__"))
1020+ if ((eh == eh))
1021+ then $Tuple2(nil, gM)
10101022 else throw("Strict value is not equal to itself.")
10111023 }
10121024
10131025
10141026
1015-@Callable(cX)
1016-func calculateAmountOutForSwapAndSendTokens (gC,gx,gK,gL,gD) = {
1017- let gM = {
1027+@Callable(da)
1028+func calculateAmountOutForSwapAndSendTokens (gH,gC,gP,gQ,gI) = {
1029+ let gR = {
10181030 let be = invoke(aU, "getSwapContractREADONLY", nil, nil)
10191031 if ($isInstanceOf(be, "String"))
10201032 then be
10211033 else throw(($getType(be) + " couldn't be cast to String"))
10221034 }
1023- let gN = {
1035+ let gS = {
10241036 let be = invoke(aU, "isPoolSwapDisabledREADONLY", [toString(this)], nil)
10251037 if ($isInstanceOf(be, "Boolean"))
10261038 then be
10271039 else throw(($getType(be) + " couldn't be cast to Boolean"))
10281040 }
1029- let gO = if (if (bh())
1041+ let gT = if (!(bi(da.caller)))
1042+ then if (if (bk())
1043+ then true
1044+ else (bz == t))
1045+ then true
1046+ else gS
1047+ else false
1048+ let gU = [if (if (!(gT))
10301049 then true
1031- else (bw == t))
1050+ else gy(da))
10321051 then true
1033- else gN
1034- let gP = [if (if (!(gO))
1052+ else ba("swap operation is blocked by admin"), if ((value(da.payments[0]).amount >= gH))
10351053 then true
1036- else gt(cX))
1037- then true
1038- else ba("swap operation is blocked by admin"), if ((value(cX.payments[0]).amount >= gC))
1039- then true
1040- else ba("Wrong amount"), if ((cX.caller == addressFromStringValue(gM)))
1054+ else ba("Wrong amount"), if ((da.caller == addressFromStringValue(gR)))
10411055 then true
10421056 else ba("Permission denied")]
1043- if ((gP == gP))
1057+ if ((gU == gU))
10441058 then {
1045- let fq = value(cX.payments[0])
1046- let gQ = bq(fq.assetId)
1047- let gR = if ((gx == false))
1059+ let ft = value(da.payments[0])
1060+ let gV = bt(ft.assetId)
1061+ let gW = if ((gC == false))
10481062 then {
1049- let gF = aW(this, al())
1050- let gy = (bX(gQ) - value(cX.payments[0]).amount)
1051- $Tuple2(gF, gy)
1063+ let gK = aW(this, al())
1064+ let gD = (ca(gV) - value(da.payments[0]).amount)
1065+ $Tuple2(gK, gD)
10521066 }
10531067 else {
1054- let gF = aW(this, ak())
1055- let gy = (bX(gQ) - value(cX.payments[0]).amount)
1056- $Tuple2(gF, gy)
1068+ let gK = aW(this, ak())
1069+ let gD = (ca(gV) - value(da.payments[0]).amount)
1070+ $Tuple2(gK, gD)
10571071 }
1058- let gF = gR._1
1059- let gy = gR._2
1060- let bs = bk()
1061- let dr = bs[x]
1062- let ds = bs[y]
1063- let cJ = if ((gx == false))
1064- then [(toBigInt(bX(dr)) - toBigInt(value(cX.payments[0]).amount)), toBigInt(bX(ds))]
1065- else [toBigInt(bX(dr)), (toBigInt(bX(ds)) - toBigInt(value(cX.payments[0]).amount))]
1066- let ez = cI(cJ)
1067- let eH = gw(gx, ez, toBigInt(0))
1068- let gG = ((toBigInt(bX(gF)) - eH) - toBigInt(1))
1069- let gH = max([0, toInt(gG)])
1070- let gS = if ((gH >= gK))
1072+ let gK = gW._1
1073+ let gD = gW._2
1074+ let bv = bn()
1075+ let du = bv[x]
1076+ let dv = bv[y]
1077+ let cM = if ((gC == false))
1078+ then [(toBigInt(ca(du)) - toBigInt(value(da.payments[0]).amount)), toBigInt(ca(dv))]
1079+ else [toBigInt(ca(du)), (toBigInt(ca(dv)) - toBigInt(value(da.payments[0]).amount))]
1080+ let eC = cL(cM)
1081+ let eK = gB(gC, eC, toBigInt(0))
1082+ let gL = ((toBigInt(ca(gK)) - eK) - toBigInt(1))
1083+ let gM = max([0, toInt(gL)])
1084+ let gX = if ((gM >= gP))
10711085 then true
10721086 else throw("Exchange result is fewer coins than expected")
1073- if ((gS == gS))
1087+ if ((gX == gX))
10741088 then {
1075- let gI = if ((gx == false))
1076- then [(toBigInt(bX(dr)) + toBigInt(gD)), (toBigInt(bX(ds)) - gG)]
1077- else [(toBigInt(bX(dr)) - gG), (toBigInt(bX(ds)) + toBigInt(gD))]
1078- let gJ = cI(gI)
1079- let ee = if ((gJ >= ez))
1089+ let gN = if ((gC == false))
1090+ then [(toBigInt(ca(du)) + toBigInt(gI)), (toBigInt(ca(dv)) - gL)]
1091+ else [(toBigInt(ca(du)) - gL), (toBigInt(ca(dv)) + toBigInt(gI))]
1092+ let gO = cL(gN)
1093+ let eh = if ((gO >= eC))
10801094 then true
10811095 else throw("new D is fewer error")
1082- if ((ee == ee))
1096+ if ((eh == eh))
10831097 then {
1084- let eZ = if (gx)
1085- then -(gH)
1086- else gD
1087- let fa = if (gx)
1088- then gD
1089- else -(gH)
1090- let go = eY(eZ, fa, 0)._1
1091- if ((go == go))
1092- then $Tuple2([ScriptTransfer(addressFromStringValue(gL), gH, bo(gF))], gH)
1098+ let fc = if (gC)
1099+ then -(gM)
1100+ else gI
1101+ let fd = if (gC)
1102+ then gI
1103+ else -(gM)
1104+ let gt = fb(fc, fd, 0)._1
1105+ if ((gt == gt))
1106+ then $Tuple2([ScriptTransfer(addressFromStringValue(gQ), gM, br(gK))], gM)
10931107 else throw("Strict value is not equal to itself.")
10941108 }
10951109 else throw("Strict value is not equal to itself.")
11011115
11021116
11031117
1104-@Callable(cX)
1118+@Callable(da)
11051119 func constructor (Z) = {
1106- let eD = gv(cX)
1107- if ((eD == eD))
1120+ let eG = gA(da)
1121+ if ((eG == eG))
11081122 then [StringEntry(Z(), Z)]
11091123 else throw("Strict value is not equal to itself.")
11101124 }
11111125
11121126
11131127
1114-@Callable(cX)
1115-func put (gT,gU) = {
1116- let gV = bC()
1117- let gW = valueOrErrorMessage(addressFromString(gV[D]), "Wr st addr")
1118- let gX = valueOrErrorMessage(addressFromString(gV[F]), "Wr sl addr")
1119- if ((0 > gT))
1128+@Callable(da)
1129+func put (gY,gZ) = {
1130+ let ha = bF()
1131+ let hb = valueOrErrorMessage(addressFromString(ha[D]), "Wr st addr")
1132+ let hc = valueOrErrorMessage(addressFromString(ha[F]), "Wr sl addr")
1133+ if ((0 > gY))
11201134 then throw("Wrong slippage")
1121- else if ((size(cX.payments) != 2))
1135+ else if ((size(da.payments) != 2))
11221136 then throw("2 pmnts expd")
11231137 else {
1124- let gY = toBigInt(value(cX.payments[0]).amount)
1125- let gZ = toBigInt(value(cX.payments[1]).amount)
1126- let eU = (toBigInt(bX(bq(by))) - gY)
1127- if ((eU == eU))
1138+ let hd = toBigInt(value(da.payments[0]).amount)
1139+ let he = toBigInt(value(da.payments[1]).amount)
1140+ let eX = (toBigInt(ca(bt(bB))) - hd)
1141+ if ((eX == eX))
11281142 then {
1129- let eV = (toBigInt(bX(bq(bz))) - gZ)
1130- if ((eV == eV))
1143+ let eY = (toBigInt(ca(bt(bC))) - he)
1144+ if ((eY == eY))
11311145 then {
1132- let eW = toBigInt(value(assetInfo(bx)).quantity)
1133- if ((eW == eW))
1146+ let eZ = toBigInt(value(assetInfo(bA)).quantity)
1147+ if ((eZ == eZ))
11341148 then {
1135- let eX = eQ(gY, gZ, toBigInt(0))
1136- if ((eX == eX))
1149+ let fa = eT(hd, he, toBigInt(0))
1150+ if ((fa == fa))
11371151 then {
1138- let ha = fr(toString(cX.caller), toBase58String(cX.transactionId), AttachedPayment(value(cX.payments[0]).assetId, value(cX.payments[0]).amount), cX.payments[1], gT, true, false, true, 0, "")
1139- let er = ha._2
1140- let hb = ha._7
1141- let dJ = ha._9
1142- let es = ha._10
1143- let et = ha._11
1144- let dr = ha._12
1145- let ds = ha._13
1146- let ed = invoke(aU, "emit", [er], nil)
1147- if ((ed == ed))
1152+ let hf = fv(toString(da.caller), toBase58String(da.transactionId), AttachedPayment(value(da.payments[0]).assetId, value(da.payments[0]).amount), da.payments[1], gY, true, false, true, 0, "")
1153+ let eu = hf._2
1154+ let hg = hf._7
1155+ let dM = hf._9
1156+ let ev = hf._10
1157+ let ew = hf._11
1158+ let du = hf._12
1159+ let dv = hf._13
1160+ let eg = invoke(aU, "emit", [eu], nil)
1161+ if ((eg == eg))
11481162 then {
1149- let hc = {
1150- let aQ = ed
1163+ let hh = {
1164+ let aQ = eg
11511165 if ($isInstanceOf(aQ, "Address"))
11521166 then {
1153- let hd = aQ
1154- invoke(hd, "emit", [er], nil)
1167+ let hi = aQ
1168+ invoke(hi, "emit", [eu], nil)
11551169 }
11561170 else unit
11571171 }
1158- if ((hc == hc))
1172+ if ((hh == hh))
11591173 then {
1160- let he = if ((es > 0))
1161- then invoke(gX, "put", nil, [AttachedPayment(dr, es)])
1174+ let hj = if ((ev > 0))
1175+ then invoke(hc, "put", nil, [AttachedPayment(du, ev)])
11621176 else nil
1163- if ((he == he))
1177+ if ((hj == hj))
11641178 then {
1165- let hf = if ((et > 0))
1166- then invoke(gX, "put", nil, [AttachedPayment(ds, et)])
1179+ let hk = if ((ew > 0))
1180+ then invoke(hc, "put", nil, [AttachedPayment(dv, ew)])
11671181 else nil
1168- if ((hf == hf))
1182+ if ((hk == hk))
11691183 then {
1170- let hg = if (gU)
1184+ let hl = if (gZ)
11711185 then {
1172- let hh = invoke(gW, "stake", nil, [AttachedPayment(hb, er)])
1173- if ((hh == hh))
1186+ let hm = invoke(hb, "stake", nil, [AttachedPayment(hg, eu)])
1187+ if ((hm == hm))
11741188 then nil
11751189 else throw("Strict value is not equal to itself.")
11761190 }
1177- else [ScriptTransfer(cX.caller, er, hb)]
1178- let hi = eY(0, 0, 0)
1179- let go = hi._1
1180- let eP = hi._2
1181- let hj = if ((eP >= eX))
1191+ else [ScriptTransfer(da.caller, eu, hg)]
1192+ let hn = fb(0, 0, 0)
1193+ let gt = hn._1
1194+ let eS = hn._2
1195+ let ho = if ((eS >= fa))
11821196 then true
1183- else ba(makeString(["updated DLp lower than current DLp", toString(eU), toString(eV), toString(eW), toString(eX), toString(eP), toString(es), toString(et)], " "))
1184- if ((hj == hj))
1197+ else ba(makeString(["updated DLp lower than current DLp", toString(eX), toString(eY), toString(eZ), toString(fa), toString(eS), toString(ev), toString(ew)], " "))
1198+ if ((ho == ho))
11851199 then {
1186- let hk = value(assetInfo(bx)).quantity
1187- if ((hk == hk))
1188- then ((dJ ++ hg) ++ go)
1200+ let hp = value(assetInfo(bA)).quantity
1201+ if ((hp == hp))
1202+ then ((dM ++ hl) ++ gt)
11891203 else throw("Strict value is not equal to itself.")
11901204 }
11911205 else throw("Strict value is not equal to itself.")
12101224
12111225
12121226
1213-@Callable(cX)
1214-func putOneTknV2 (fS,gU) = {
1215- let hl = {
1227+@Callable(da)
1228+func putOneTknV2 (fX,gZ) = {
1229+ let hq = {
12161230 let be = invoke(aU, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
12171231 if ($isInstanceOf(be, "Boolean"))
12181232 then be
12191233 else throw(($getType(be) + " couldn't be cast to Boolean"))
12201234 }
1221- let hm = if (if (if (bh())
1235+ let fz = if (!(bi(da.caller)))
1236+ then if (if (if (bk())
1237+ then true
1238+ else (bz == r))
1239+ then true
1240+ else (bz == t))
1241+ then true
1242+ else hq
1243+ else false
1244+ let gU = [if (if (!(fz))
12221245 then true
1223- else (bw == r))
1246+ else gy(da))
12241247 then true
1225- else (bw == t))
1226- then true
1227- else hl
1228- let gP = [if (if (!(hm))
1229- then true
1230- else gt(cX))
1231- then true
1232- else ba("put operation is blocked by admin"), if ((size(cX.payments) == 1))
1248+ else ba("put operation is blocked by admin"), if ((size(da.payments) == 1))
12331249 then true
12341250 else ba("exactly 1 payment are expected")]
1235- if ((gP == gP))
1251+ if ((gU == gU))
12361252 then {
1237- let dr = toBase58String(value(by))
1238- let ds = toBase58String(value(bz))
1239- let dq = bx
1240- let fW = bA
1241- let fX = bB
1242- let dp = if ((cX.caller == this))
1243- then cX.originCaller
1244- else cX.caller
1245- let fq = value(cX.payments[0])
1246- let dn = toBase58String(value(fq.assetId))
1247- let dT = fq.amount
1248- let eX = if ((fq.assetId == by))
1249- then eQ(toBigInt(dT), toBigInt(0), toBigInt(0))
1250- else eQ(toBigInt(0), toBigInt(dT), toBigInt(0))
1251- if ((eX == eX))
1253+ let du = toBase58String(value(bB))
1254+ let dv = toBase58String(value(bC))
1255+ let dt = bA
1256+ let gb = bD
1257+ let gc = bE
1258+ let ds = if ((da.caller == this))
1259+ then da.originCaller
1260+ else da.caller
1261+ let ft = value(da.payments[0])
1262+ let dq = toBase58String(value(ft.assetId))
1263+ let dW = ft.amount
1264+ let fa = if ((ft.assetId == bB))
1265+ then eT(toBigInt(dW), toBigInt(0), toBigInt(0))
1266+ else eT(toBigInt(0), toBigInt(dW), toBigInt(0))
1267+ if ((fa == fa))
12521268 then {
1253- let hn = fv(dT, dn, toString(dp), toBase58String(cX.transactionId), true)
1254- if ((hn == hn))
1269+ let hr = fA(dW, dq, toString(ds), toBase58String(da.transactionId), true)
1270+ if ((hr == hr))
12551271 then {
1256- let cH = hn._3
1257- let dJ = hn._2
1258- let ho = hn._1
1259- let er = if (if ((fS > 0))
1260- then (fS > ho)
1272+ let cK = hr._3
1273+ let dM = hr._2
1274+ let hs = hr._1
1275+ let eu = if (if ((fX > 0))
1276+ then (fX > hs)
12611277 else false)
1262- then ba(makeString(["amount to receive is less than ", toString(fS)], ""))
1263- else ho
1264- let ha = invoke(aU, "emit", [er], nil)
1265- if ((ha == ha))
1278+ then ba(makeString(["amount to receive is less than ", toString(fX)], ""))
1279+ else hs
1280+ let hf = invoke(aU, "emit", [eu], nil)
1281+ if ((hf == hf))
12661282 then {
1267- let hc = {
1268- let aQ = ha
1283+ let hh = {
1284+ let aQ = hf
12691285 if ($isInstanceOf(aQ, "Address"))
12701286 then {
1271- let hd = aQ
1272- invoke(hd, "emit", [er], nil)
1287+ let hi = aQ
1288+ invoke(hi, "emit", [eu], nil)
12731289 }
12741290 else unit
12751291 }
1276- if ((hc == hc))
1292+ if ((hh == hh))
12771293 then {
1278- let hg = if (gU)
1294+ let hl = if (gZ)
12791295 then {
1280- let hh = invoke(bE, "stakeFor", [toString(cX.caller)], [AttachedPayment(dq, er)])
1281- if ((hh == hh))
1296+ let hm = invoke(bH, "stakeFor", [toString(da.caller)], [AttachedPayment(dt, eu)])
1297+ if ((hm == hm))
12821298 then nil
12831299 else throw("Strict value is not equal to itself.")
12841300 }
1285- else [ScriptTransfer(cX.caller, er, dq)]
1286- let gi = if ((cH > 0))
1287- then [ScriptTransfer(bj, cH, fromBase58String(dn))]
1301+ else [ScriptTransfer(da.caller, eu, dt)]
1302+ let gn = if ((cK > 0))
1303+ then [ScriptTransfer(bm, cK, fromBase58String(dq))]
12881304 else nil
1289- let hp = if ((this == bj))
1305+ let ht = if ((this == bm))
12901306 then $Tuple2(0, 0)
12911307 else {
1292- let hq = if ((fq.assetId == by))
1308+ let hu = if ((ft.assetId == bB))
12931309 then true
12941310 else false
1295- if (hq)
1296- then $Tuple2(-(cH), 0)
1297- else $Tuple2(0, -(cH))
1311+ if (hu)
1312+ then $Tuple2(-(cK), 0)
1313+ else $Tuple2(0, -(cK))
12981314 }
1299- let eZ = hp._1
1300- let fa = hp._2
1301- let hr = eY(eZ, fa, 0)
1302- let go = hr._1
1303- let eP = hr._2
1304- let gp = fc(eX, eP)
1305- if ((gp == gp))
1306- then $Tuple2((((dJ ++ hg) ++ gi) ++ go), er)
1315+ let fc = ht._1
1316+ let fd = ht._2
1317+ let hv = fb(fc, fd, 0)
1318+ let gt = hv._1
1319+ let eS = hv._2
1320+ let gu = ff(fa, eS)
1321+ if ((gu == gu))
1322+ then $Tuple2((((dM ++ hl) ++ gn) ++ gt), eu)
13071323 else throw("Strict value is not equal to itself.")
13081324 }
13091325 else throw("Strict value is not equal to itself.")
13191335
13201336
13211337
1322-@Callable(cX)
1323-func putForFree (hs) = if ((0 > hs))
1338+@Callable(da)
1339+func putForFree (hw) = if ((0 > hw))
13241340 then throw("Wrong slpg")
1325- else if ((size(cX.payments) != 2))
1341+ else if ((size(da.payments) != 2))
13261342 then throw("2 pmnts expd")
13271343 else {
1328- let ht = fr(toString(cX.caller), toBase58String(cX.transactionId), AttachedPayment(value(cX.payments[0]).assetId, value(cX.payments[0]).amount), cX.payments[1], hs, false, false, true, 0, "")
1329- let dJ = ht._9
1330- let gY = toBigInt(value(cX.payments[0]).amount)
1331- let gZ = toBigInt(value(cX.payments[1]).amount)
1332- let eX = eQ(gY, gZ, toBigInt(0))
1333- if ((eX == eX))
1344+ let hx = fv(toString(da.caller), toBase58String(da.transactionId), AttachedPayment(value(da.payments[0]).assetId, value(da.payments[0]).amount), da.payments[1], hw, false, false, true, 0, "")
1345+ let dM = hx._9
1346+ let hd = toBigInt(value(da.payments[0]).amount)
1347+ let he = toBigInt(value(da.payments[1]).amount)
1348+ let fa = eT(hd, he, toBigInt(0))
1349+ if ((fa == fa))
13341350 then {
1335- let hu = eY(0, 0, 0)
1336- let go = hu._1
1337- let eP = hu._2
1338- let gp = fc(eX, eP)
1339- if ((gp == gp))
1340- then (dJ ++ go)
1351+ let hy = fb(0, 0, 0)
1352+ let gt = hy._1
1353+ let eS = hy._2
1354+ let gu = ff(fa, eS)
1355+ if ((gu == gu))
1356+ then (dM ++ gt)
13411357 else throw("Strict value is not equal to itself.")
13421358 }
13431359 else throw("Strict value is not equal to itself.")
13451361
13461362
13471363
1348-@Callable(cX)
1364+@Callable(da)
13491365 func get () = {
1350- let eX = eQ(toBigInt(0), toBigInt(0), toBigInt(0))
1351- if ((eX == eX))
1366+ let fa = eT(toBigInt(0), toBigInt(0), toBigInt(0))
1367+ if ((fa == fa))
13521368 then {
1353- let ed = fp(cX)
1354- let hv = ed._1
1355- let dI = ed._2
1356- let dT = ed._3
1357- let dn = ed._4
1358- let dJ = ed._5
1359- let eE = invoke(aU, "burn", [dT], [AttachedPayment(dn, dT)])
1360- if ((eE == eE))
1369+ let eg = fs(da)
1370+ let hz = eg._1
1371+ let dL = eg._2
1372+ let dW = eg._3
1373+ let dq = eg._4
1374+ let dM = eg._5
1375+ let eH = invoke(aU, "burn", [dW], [AttachedPayment(dq, dW)])
1376+ if ((eH == eH))
13611377 then {
1362- let hw = eY(-(hv), -(dI), 0)
1363- let go = hw._1
1364- let eP = hw._2
1365- let gp = fc(eX, eP)
1366- if ((gp == gp))
1367- then (dJ ++ go)
1378+ let hA = fb(-(hz), -(dL), 0)
1379+ let gt = hA._1
1380+ let eS = hA._2
1381+ let gu = ff(fa, eS)
1382+ if ((gu == gu))
1383+ then (dM ++ gt)
13681384 else throw("Strict value is not equal to itself.")
13691385 }
13701386 else throw("Strict value is not equal to itself.")
13741390
13751391
13761392
1377-@Callable(cX)
1378-func getOneTknV2 (fR,fS) = {
1379- let hl = {
1393+@Callable(da)
1394+func getOneTknV2 (fW,fX) = {
1395+ let hq = {
13801396 let be = invoke(aU, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
13811397 if ($isInstanceOf(be, "Boolean"))
13821398 then be
13831399 else throw(($getType(be) + " couldn't be cast to Boolean"))
13841400 }
1385- let hx = if (if (bh())
1401+ let fu = if (!(bi(da.caller)))
1402+ then if (if (bk())
1403+ then true
1404+ else (bz == t))
1405+ then true
1406+ else hq
1407+ else false
1408+ let gU = [if (if (!(fu))
13861409 then true
1387- else (bw == t))
1410+ else gy(da))
13881411 then true
1389- else hl
1390- let gP = [if (if (!(hx))
1391- then true
1392- else gt(cX))
1393- then true
1394- else ba("get operation is blocked by admin"), if ((size(cX.payments) == 1))
1412+ else ba("get operation is blocked by admin"), if ((size(da.payments) == 1))
13951413 then true
13961414 else ba("exactly 1 payment are expected")]
1397- if ((gP == gP))
1415+ if ((gU == gU))
13981416 then {
1399- let hy = fQ(fR, fS, cX.payments, cX.caller, cX.originCaller, cX.transactionId)
1400- let dJ = hy._1
1401- let gb = hy._2
1402- $Tuple2(dJ, gb)
1417+ let hB = fV(fW, fX, da.payments, da.caller, da.originCaller, da.transactionId)
1418+ let dM = hB._1
1419+ let gg = hB._2
1420+ $Tuple2(dM, gg)
14031421 }
14041422 else throw("Strict value is not equal to itself.")
14051423 }
14061424
14071425
14081426
1409-@Callable(cX)
1427+@Callable(da)
14101428 func refreshDLp () = {
1411- let hz = valueOrElse(getInteger(at), 0)
1412- let hA = if (((height - hz) >= aw))
1429+ let hC = valueOrElse(getInteger(at), 0)
1430+ let hD = if (((height - hC) >= aw))
14131431 then unit
14141432 else ba(makeString([toString(aw), " blocks have not passed since the previous call"], ""))
1415- if ((hA == hA))
1433+ if ((hD == hD))
14161434 then {
1417- let fj = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, as), "0")), bc("invalid dLp"))
1418- let hB = eY(0, 0, 0)
1419- let hC = hB._1
1420- let eP = hB._2
1421- let fb = if ((fj != eP))
1422- then hC
1435+ let fm = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, as), "0")), bc("invalid dLp"))
1436+ let hE = fb(0, 0, 0)
1437+ let hF = hE._1
1438+ let eS = hE._2
1439+ let fe = if ((fm != eS))
1440+ then hF
14231441 else ba("nothing to refresh")
1424- $Tuple2(fb, toString(eP))
1442+ $Tuple2(fe, toString(eS))
14251443 }
14261444 else throw("Strict value is not equal to itself.")
14271445 }
14281446
14291447
14301448
1431-@Callable(cX)
1432-func getOneTknV2READONLY (fR,hD) = {
1433- let dr = toBase58String(value(by))
1434- let ds = toBase58String(value(bz))
1435- let dq = toBase58String(value(bx))
1436- let cJ = [toBigInt(bX(dr)), toBigInt(bX(ds))]
1437- let eO = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(dq)), "invalid lp asset").quantity)
1438- let cl = cI(cJ)
1439- let ck = (cl - fraction(toBigInt(hD), cl, eO))
1440- let hE = if ((fR == dr))
1449+@Callable(da)
1450+func getOneTknV2READONLY (fW,hG) = {
1451+ let du = toBase58String(value(bB))
1452+ let dv = toBase58String(value(bC))
1453+ let dt = toBase58String(value(bA))
1454+ let cM = [toBigInt(ca(du)), toBigInt(ca(dv))]
1455+ let eR = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(dt)), "invalid lp asset").quantity)
1456+ let co = cL(cM)
1457+ let cn = (co - fraction(toBigInt(hG), co, eR))
1458+ let hH = if ((fW == du))
14411459 then 0
1442- else if ((fR == ds))
1460+ else if ((fW == dv))
14431461 then 1
14441462 else throw("invalid out asset id")
1445- let hF = ey(cJ, hE, ck)
1446- let gG = (cJ[hE] - hF)
1447- let gH = max([0, toInt((gG - f))])
1448- let hG = cF(gH, bf)
1449- let ga = hG._1
1450- let cH = hG._2
1451- $Tuple2(nil, $Tuple2(ga, cH))
1463+ let hI = eB(cM, hH, cn)
1464+ let gL = (cM[hH] - hI)
1465+ let gM = max([0, toInt((gL - f))])
1466+ let hJ = cI(gM, bf)
1467+ let gf = hJ._1
1468+ let cK = hJ._2
1469+ $Tuple2(nil, $Tuple2(gf, cK))
14521470 }
14531471
14541472
14551473
1456-@Callable(cX)
1457-func getOneTknV2WithBonusREADONLY (fR,hD) = {
1458- let dr = toBase58String(value(by))
1459- let ds = toBase58String(value(bz))
1460- let dq = toBase58String(value(bx))
1461- let dx = bX(dr)
1462- let dz = bX(ds)
1463- let hH = {
1464- let be = invoke(this, "getOneTknV2READONLY", [fR, hD], nil)
1474+@Callable(da)
1475+func getOneTknV2WithBonusREADONLY (fW,hG) = {
1476+ let du = toBase58String(value(bB))
1477+ let dv = toBase58String(value(bC))
1478+ let dt = toBase58String(value(bA))
1479+ let dA = ca(du)
1480+ let dC = ca(dv)
1481+ let hK = {
1482+ let be = invoke(this, "getOneTknV2READONLY", [fW, hG], nil)
14651483 if ($isInstanceOf(be, "(Int, Int)"))
14661484 then be
14671485 else throw(($getType(be) + " couldn't be cast to (Int, Int)"))
14681486 }
1469- let ga = hH._1
1470- let cH = hH._2
1471- let ed = dl("", dq, hD, this)
1472- let dH = ed._1
1473- let dI = ed._2
1474- let hI = (dH + dI)
1475- let fP = if ((hI == 0))
1476- then if ((ga == 0))
1487+ let gf = hK._1
1488+ let cK = hK._2
1489+ let eg = do("", dt, hG, this)
1490+ let dK = eg._1
1491+ let dL = eg._2
1492+ let hL = (dK + dL)
1493+ let fU = if ((hL == 0))
1494+ then if ((gf == 0))
14771495 then 0
14781496 else throw("bonus calculation error")
1479- else fraction((ga - hI), a, hI)
1480- $Tuple2(nil, $Tuple3(ga, cH, fP))
1497+ else fraction((gf - hL), a, hL)
1498+ $Tuple2(nil, $Tuple3(gf, cK, fU))
14811499 }
14821500
14831501
14841502
1485-@Callable(cX)
1486-func getNoLess (hJ,hK) = {
1487- let ed = fp(cX)
1488- let dH = ed._1
1489- let dI = ed._2
1490- let dT = ed._3
1491- let dn = ed._4
1492- let dJ = ed._5
1493- if ((hJ > dH))
1494- then throw(((("Failed: " + toString(dH)) + " < ") + toString(hJ)))
1495- else if ((hK > dI))
1496- then throw(((("Failed: " + toString(dI)) + " < ") + toString(hK)))
1503+@Callable(da)
1504+func getNoLess (hM,hN) = {
1505+ let eg = fs(da)
1506+ let dK = eg._1
1507+ let dL = eg._2
1508+ let dW = eg._3
1509+ let dq = eg._4
1510+ let dM = eg._5
1511+ if ((hM > dK))
1512+ then throw(((("Failed: " + toString(dK)) + " < ") + toString(hM)))
1513+ else if ((hN > dL))
1514+ then throw(((("Failed: " + toString(dL)) + " < ") + toString(hN)))
14971515 else {
1498- let eX = eQ(toBigInt(0), toBigInt(0), toBigInt(0))
1499- if ((eX == eX))
1516+ let fa = eT(toBigInt(0), toBigInt(0), toBigInt(0))
1517+ if ((fa == fa))
15001518 then {
1501- let hL = invoke(aU, "burn", [dT], [AttachedPayment(dn, dT)])
1502- if ((hL == hL))
1519+ let hO = invoke(aU, "burn", [dW], [AttachedPayment(dq, dW)])
1520+ if ((hO == hO))
15031521 then {
1504- let hM = eY(-(dH), -(dI), 0)
1505- let go = hM._1
1506- let eP = hM._2
1507- let gp = fc(eX, eP)
1508- if ((gp == gp))
1509- then (dJ ++ go)
1522+ let hP = fb(-(dK), -(dL), 0)
1523+ let gt = hP._1
1524+ let eS = hP._2
1525+ let gu = ff(fa, eS)
1526+ if ((gu == gu))
1527+ then (dM ++ gt)
15101528 else throw("Strict value is not equal to itself.")
15111529 }
15121530 else throw("Strict value is not equal to itself.")
15171535
15181536
15191537
1520-@Callable(cX)
1521-func unstakeAndGet (cG) = {
1522- let hN = if ((size(cX.payments) != 0))
1538+@Callable(da)
1539+func unstakeAndGet (cJ) = {
1540+ let hQ = if ((size(da.payments) != 0))
15231541 then throw("No pmnts expd")
15241542 else true
1525- if ((hN == hN))
1543+ if ((hQ == hQ))
15261544 then {
1527- let hO = bC()
1528- let hb = bx
1529- let hP = valueOrErrorMessage(addressFromString(hO[D]), "Wr st addr")
1530- let eX = eQ(toBigInt(0), toBigInt(0), toBigInt(0))
1531- if ((eX == eX))
1545+ let hR = bF()
1546+ let hg = bA
1547+ let hS = valueOrErrorMessage(addressFromString(hR[D]), "Wr st addr")
1548+ let fa = eT(toBigInt(0), toBigInt(0), toBigInt(0))
1549+ if ((fa == fa))
15321550 then {
1533- let hQ = invoke(hP, "unstake", [toBase58String(hb), cG], nil)
1534- if ((hQ == hQ))
1551+ let hT = invoke(hS, "unstake", [toBase58String(hg), cJ], nil)
1552+ if ((hT == hT))
15351553 then {
1536- let ed = dl(toBase58String(cX.transactionId), toBase58String(hb), cG, cX.caller)
1537- let dH = ed._1
1538- let dI = ed._2
1539- let dv = parseIntValue(ed._9)
1540- let dJ = ed._10
1541- let hR = if (if (bh())
1542- then true
1543- else (dv == t))
1544- then throw(("Blocked: " + toString(dv)))
1554+ let eg = do(toBase58String(da.transactionId), toBase58String(hg), cJ, da.caller)
1555+ let dK = eg._1
1556+ let dL = eg._2
1557+ let dy = parseIntValue(eg._9)
1558+ let dM = eg._10
1559+ let fu = if (!(bi(da.caller)))
1560+ then if (bk())
1561+ then true
1562+ else (bz == t)
1563+ else false
1564+ let hU = if (fu)
1565+ then throw(("Blocked: " + toString(dy)))
15451566 else true
1546- if ((hR == hR))
1567+ if ((hU == hU))
15471568 then {
1548- let hS = invoke(aU, "burn", [cG], [AttachedPayment(hb, cG)])
1549- if ((hS == hS))
1569+ let hV = invoke(aU, "burn", [cJ], [AttachedPayment(hg, cJ)])
1570+ if ((hV == hV))
15501571 then {
1551- let hT = eY(-(dH), -(dI), 0)
1552- let go = hT._1
1553- let eP = hT._2
1554- let gp = fc(eX, eP)
1555- if ((gp == gp))
1556- then (dJ ++ go)
1572+ let hW = fb(-(dK), -(dL), 0)
1573+ let gt = hW._1
1574+ let eS = hW._2
1575+ let gu = ff(fa, eS)
1576+ if ((gu == gu))
1577+ then (dM ++ gt)
15571578 else throw("Strict value is not equal to itself.")
15581579 }
15591580 else throw("Strict value is not equal to itself.")
15691590
15701591
15711592
1572-@Callable(cX)
1573-func unstakeAndGetNoLess (hU,hV,hK) = {
1574- let hx = if (bh())
1593+@Callable(da)
1594+func unstakeAndGetNoLess (hX,hY,hN) = {
1595+ let fu = if (!(bi(da.caller)))
1596+ then if (bk())
1597+ then true
1598+ else (bz == t)
1599+ else false
1600+ let gU = [if (!(fu))
15751601 then true
1576- else (bw == t)
1577- let gP = [if (!(hx))
1578- then true
1579- else throw("get operation is blocked by admin"), if ((size(cX.payments) == 0))
1602+ else throw("get operation is blocked by admin"), if ((size(da.payments) == 0))
15801603 then true
15811604 else throw("no payments are expected")]
1582- if ((gP == gP))
1605+ if ((gU == gU))
15831606 then {
1584- let eX = eQ(toBigInt(0), toBigInt(0), toBigInt(0))
1585- if ((eX == eX))
1607+ let fa = eT(toBigInt(0), toBigInt(0), toBigInt(0))
1608+ if ((fa == fa))
15861609 then {
1587- let hQ = invoke(bE, "unstake", [toBase58String(bx), hU], nil)
1588- if ((hQ == hQ))
1610+ let hT = invoke(bH, "unstake", [toBase58String(bA), hX], nil)
1611+ if ((hT == hT))
15891612 then {
1590- let hW = dl(toBase58String(cX.transactionId), toBase58String(bx), hU, cX.caller)
1591- let dH = hW._1
1592- let dI = hW._2
1593- let dJ = hW._10
1594- let hX = [if ((dH >= hV))
1613+ let hZ = do(toBase58String(da.transactionId), toBase58String(bA), hX, da.caller)
1614+ let dK = hZ._1
1615+ let dL = hZ._2
1616+ let dM = hZ._10
1617+ let ia = [if ((dK >= hY))
15951618 then true
1596- else throw(makeString(["amount asset amount to receive is less than ", toString(hV)], "")), if ((dI >= hK))
1619+ else throw(makeString(["amount asset amount to receive is less than ", toString(hY)], "")), if ((dL >= hN))
15971620 then true
1598- else throw(makeString(["price asset amount to receive is less than ", toString(hK)], ""))]
1599- if ((hX == hX))
1621+ else throw(makeString(["price asset amount to receive is less than ", toString(hN)], ""))]
1622+ if ((ia == ia))
16001623 then {
1601- let hL = invoke(aU, "burn", [hU], [AttachedPayment(bx, hU)])
1602- if ((hL == hL))
1624+ let hO = invoke(aU, "burn", [hX], [AttachedPayment(bA, hX)])
1625+ if ((hO == hO))
16031626 then {
1604- let hY = eY(-(dH), -(dI), 0)
1605- let go = hY._1
1606- let eP = hY._2
1607- let gp = fc(eX, eP)
1608- if ((gp == gp))
1609- then (dJ ++ go)
1627+ let ib = fb(-(dK), -(dL), 0)
1628+ let gt = ib._1
1629+ let eS = ib._2
1630+ let gu = ff(fa, eS)
1631+ if ((gu == gu))
1632+ then (dM ++ gt)
16101633 else throw("Strict value is not equal to itself.")
16111634 }
16121635 else throw("Strict value is not equal to itself.")
16221645
16231646
16241647
1625-@Callable(cX)
1626-func unstakeAndGetOneTknV2 (hU,fR,fS) = {
1627- let hl = {
1648+@Callable(da)
1649+func unstakeAndGetOneTknV2 (hX,fW,fX) = {
1650+ let hq = {
16281651 let be = invoke(aU, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
16291652 if ($isInstanceOf(be, "Boolean"))
16301653 then be
16311654 else throw(($getType(be) + " couldn't be cast to Boolean"))
16321655 }
1633- let hx = if (if (bh())
1656+ let fu = if (!(bi(da.caller)))
1657+ then if (if (bk())
1658+ then true
1659+ else (bz == t))
1660+ then true
1661+ else hq
1662+ else false
1663+ let gU = [if (if (!(fu))
16341664 then true
1635- else (bw == t))
1665+ else gy(da))
16361666 then true
1637- else hl
1638- let gP = [if (if (!(hx))
1639- then true
1640- else gt(cX))
1641- then true
1642- else ba("get operation is blocked by admin"), if ((size(cX.payments) == 0))
1667+ else ba("get operation is blocked by admin"), if ((size(da.payments) == 0))
16431668 then true
16441669 else ba("no payments are expected")]
1645- if ((gP == gP))
1670+ if ((gU == gU))
16461671 then {
1647- let hO = bC()
1648- let hb = bx
1649- let hP = valueOrErrorMessage(addressFromString(hO[D]), "Wr st addr")
1650- let dp = cX.caller
1651- let hZ = this
1652- let hQ = invoke(hP, "unstakeINTERNAL", [hb, hU, dp.bytes, hZ.bytes], nil)
1653- if ((hQ == hQ))
1672+ let hR = bF()
1673+ let hg = bA
1674+ let hS = valueOrErrorMessage(addressFromString(hR[D]), "Wr st addr")
1675+ let ds = da.caller
1676+ let ic = this
1677+ let hT = invoke(hS, "unstakeINTERNAL", [hg, hX, ds.bytes, ic.bytes], nil)
1678+ if ((hT == hT))
16541679 then {
1655- let ia = fQ(fR, fS, [AttachedPayment(hb, hU)], cX.caller, cX.originCaller, cX.transactionId)
1656- let dJ = ia._1
1657- let gb = ia._2
1658- $Tuple2(dJ, gb)
1680+ let id = fV(fW, fX, [AttachedPayment(hg, hX)], da.caller, da.originCaller, da.transactionId)
1681+ let dM = id._1
1682+ let gg = id._2
1683+ $Tuple2(dM, gg)
16591684 }
16601685 else throw("Strict value is not equal to itself.")
16611686 }
16641689
16651690
16661691
1667-@Callable(cX)
1668-func putOneTknV2WithBonusREADONLY (ib,ic) = {
1669- let id = fv(ib, ic, "", "", true)
1670- let fK = id._1
1671- let dJ = id._2
1672- let cH = id._3
1673- let fP = id._4
1674- $Tuple2(nil, $Tuple3(fK, cH, fP))
1692+@Callable(da)
1693+func putOneTknV2WithBonusREADONLY (ie,if) = {
1694+ let ig = fA(ie, if, "", "", true)
1695+ let fP = ig._1
1696+ let dM = ig._2
1697+ let cK = ig._3
1698+ let fU = ig._4
1699+ $Tuple2(nil, $Tuple3(fP, cK, fU))
16751700 }
16761701
16771702
16781703
1679-@Callable(cX)
1680-func putOneTknV2WithoutTakeFeeREADONLY (ib,ic) = {
1681- let ie = fv(ib, ic, "", "", false)
1682- let fK = ie._1
1683- let dJ = ie._2
1684- let cH = ie._3
1685- let fP = ie._4
1686- $Tuple2(nil, $Tuple3(fK, cH, fP))
1704+@Callable(da)
1705+func putOneTknV2WithoutTakeFeeREADONLY (ie,if) = {
1706+ let ih = fA(ie, if, "", "", false)
1707+ let fP = ih._1
1708+ let dM = ih._2
1709+ let cK = ih._3
1710+ let fU = ih._4
1711+ $Tuple2(nil, $Tuple3(fP, cK, fU))
16871712 }
16881713
16891714
16901715
1691-@Callable(cX)
1692-func activate (if,ig) = if ((toString(cX.caller) != toString(aU)))
1716+@Callable(da)
1717+func activate (ii,ij) = if ((toString(da.caller) != toString(aU)))
16931718 then throw("denied")
1694- else $Tuple2([StringEntry(ak(), if), StringEntry(al(), ig), StringEntry(am(), toString(l)), StringEntry(an(height), toString(l))], "success")
1719+ else $Tuple2([StringEntry(ak(), ii), StringEntry(al(), ij), StringEntry(am(), toString(l)), StringEntry(an(height), toString(l))], "success")
16951720
16961721
16971722
1698-@Callable(cX)
1699-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, bk())
1723+@Callable(da)
1724+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, bn())
17001725
17011726
17021727
1703-@Callable(cX)
1704-func getAccBalanceWrapperREADONLY (bY) = $Tuple2(nil, bX(bY))
1728+@Callable(da)
1729+func getAccBalanceWrapperREADONLY (cb) = $Tuple2(nil, ca(cb))
17051730
17061731
17071732
1708-@Callable(cX)
1709-func calcPricesWrapperREADONLY (cr,cs,cw) = {
1710- let ih = cv(cr, cs, cw)
1711- $Tuple2(nil, [toString(ih[0]), toString(ih[1]), toString(ih[2])])
1733+@Callable(da)
1734+func calcPricesWrapperREADONLY (cu,cv,cz) = {
1735+ let ik = cy(cu, cv, cz)
1736+ $Tuple2(nil, [toString(ik[0]), toString(ik[1]), toString(ik[2])])
17121737 }
17131738
17141739
17151740
1716-@Callable(cX)
1717-func fromX18WrapperREADONLY (N,ii) = $Tuple2(nil, M(parseBigIntValue(N), ii))
1741+@Callable(da)
1742+func fromX18WrapperREADONLY (N,il) = $Tuple2(nil, M(parseBigIntValue(N), il))
17181743
17191744
17201745
1721-@Callable(cX)
1746+@Callable(da)
17221747 func toX18WrapperREADONLY (J,K) = $Tuple2(nil, toString(I(J, K)))
17231748
17241749
17251750
1726-@Callable(cX)
1727-func calcPriceBigIntWrapperREADONLY (ca,cb) = $Tuple2(nil, toString(bZ(parseBigIntValue(ca), parseBigIntValue(cb))))
1751+@Callable(da)
1752+func calcPriceBigIntWrapperREADONLY (cd,ce) = $Tuple2(nil, toString(cc(parseBigIntValue(cd), parseBigIntValue(ce))))
17281753
17291754
17301755
1731-@Callable(cX)
1732-func estimatePutOperationWrapperREADONLY (dm,cg,dL,dM,dN,dO,ij,dP,dQ) = $Tuple2(nil, dK(dm, cg, dL, dM, dN, dO, ij, dP, dQ, true, false, 0, ""))
1756+@Callable(da)
1757+func estimatePutOperationWrapperREADONLY (dp,cj,dO,dP,dQ,dR,im,dS,dT) = $Tuple2(nil, dN(dp, cj, dO, dP, dQ, dR, im, dS, dT, true, false, 0, ""))
17331758
17341759
17351760
1736-@Callable(cX)
1737-func estimateGetOperationWrapperREADONLY (dm,ik,do,ij) = {
1738- let ed = dl(dm, ik, do, addressFromStringValue(ij))
1739- $Tuple2(nil, $Tuple10(ed._1, ed._2, ed._3, ed._4, ed._5, ed._6, ed._7, toString(ed._8), ed._9, ed._10))
1761+@Callable(da)
1762+func estimateGetOperationWrapperREADONLY (dp,in,dr,im) = {
1763+ let eg = do(dp, in, dr, addressFromStringValue(im))
1764+ $Tuple2(nil, $Tuple10(eg._1, eg._2, eg._3, eg._4, eg._5, eg._6, eg._7, toString(eg._8), eg._9, eg._10))
17401765 }
17411766
17421767
17431768
1744-@Callable(cX)
1769+@Callable(da)
17451770 func changeAmp () = {
1746- let il = invoke(aU, "getChangeAmpConfigREADONLY", [toString(this)], nil)
1747- let im = {
1748- let aQ = il
1771+ let io = invoke(aU, "getChangeAmpConfigREADONLY", [toString(this)], nil)
1772+ let ip = {
1773+ let aQ = io
17491774 if ($isInstanceOf(aQ, "List[Any]"))
17501775 then {
1751- let in = aQ
1776+ let iq = aQ
17521777 $Tuple3({
1753- let be = in[0]
1778+ let be = iq[0]
17541779 if ($isInstanceOf(be, "Int"))
17551780 then be
17561781 else throw(($getType(be) + " couldn't be cast to Int"))
17571782 }, {
1758- let be = in[1]
1783+ let be = iq[1]
17591784 if ($isInstanceOf(be, "Int"))
17601785 then be
17611786 else throw(($getType(be) + " couldn't be cast to Int"))
17621787 }, {
1763- let be = in[2]
1788+ let be = iq[2]
17641789 if ($isInstanceOf(be, "Int"))
17651790 then be
17661791 else throw(($getType(be) + " couldn't be cast to Int"))
17681793 }
17691794 else ba("invalid entry type")
17701795 }
1771- let io = im._1
1772- let ip = im._2
1773- let iq = im._3
1774- let ir = parseIntValue(getStringValue(am()))
1775- let is = (ir + ip)
1776- let it = if ((0 > ip))
1777- then if ((iq > is))
1778- then iq
1779- else is
1780- else if ((is > iq))
1781- then iq
1782- else is
1783- let iu = valueOrElse(getInteger(ap()), 0)
1784- let iv = (iu + io)
1785- let gP = [if ((height > iv))
1796+ let ir = ip._1
1797+ let is = ip._2
1798+ let it = ip._3
1799+ let iu = parseIntValue(getStringValue(am()))
1800+ let iv = (iu + is)
1801+ let iw = if ((0 > is))
1802+ then if ((it > iv))
1803+ then it
1804+ else iv
1805+ else if ((iv > it))
1806+ then it
1807+ else iv
1808+ let ix = valueOrElse(getInteger(ap()), 0)
1809+ let iy = (ix + ir)
1810+ let gU = [if ((height > iy))
17861811 then true
1787- else ba("try again in few blocks"), if ((ir != it))
1812+ else ba("try again in few blocks"), if ((iu != iw))
17881813 then true
17891814 else ba("already reached target")]
1790- if ((gP == gP))
1791- then [IntegerEntry(ap(), height), StringEntry(am(), toString(it)), StringEntry(an(height), toString(it))]
1815+ if ((gU == gU))
1816+ then [IntegerEntry(ap(), height), StringEntry(am(), toString(iw)), StringEntry(an(height), toString(iw))]
17921817 else throw("Strict value is not equal to itself.")
17931818 }
17941819
17951820
1796-@Verifier(iw)
1797-func ix () = {
1798- let iy = {
1799- let aQ = gq()
1821+@Verifier(iz)
1822+func iA () = {
1823+ let iB = {
1824+ let aQ = gv()
18001825 if ($isInstanceOf(aQ, "ByteVector"))
18011826 then {
1802- let gu = aQ
1803- gu
1827+ let gz = aQ
1828+ gz
18041829 }
18051830 else if ($isInstanceOf(aQ, "Unit"))
1806- then iw.senderPublicKey
1831+ then iz.senderPublicKey
18071832 else throw("Match error")
18081833 }
1809- let aQ = iw
1834+ let aQ = iz
18101835 if ($isInstanceOf(aQ, "Order"))
18111836 then {
1812- let ff = aQ
1813- let iz = bi()
1814- let iA = if (gB())
1837+ let fi = aQ
1838+ let iC = bl()
1839+ let iD = if (gG())
18151840 then $Tuple2(true, "")
1816- else fe(ff)
1817- let aK = iA._1
1818- let aL = iA._2
1819- let aM = sigVerify(ff.bodyBytes, ff.proofs[0], ff.senderPublicKey)
1820- let aN = sigVerify(ff.bodyBytes, ff.proofs[1], iz)
1841+ else fh(fi)
1842+ let aK = iD._1
1843+ let aL = iD._2
1844+ let aM = sigVerify(fi.bodyBytes, fi.proofs[0], fi.senderPublicKey)
1845+ let aN = sigVerify(fi.bodyBytes, fi.proofs[1], iC)
18211846 if (if (if (aK)
18221847 then aM
18231848 else false)
18291854 else if ($isInstanceOf(aQ, "SetScriptTransaction"))
18301855 then {
18311856 let aV = aQ
1832- if (sigVerify(iw.bodyBytes, iw.proofs[0], iy))
1857+ if (sigVerify(iz.bodyBytes, iz.proofs[0], iB))
18331858 then true
18341859 else {
1835- let iB = blake2b256(value(aV.script))
1836- let iC = fromBase64String(value(getString(aU, aF())))
1837- let iD = scriptHash(this)
1838- if ((iC == iB))
1839- then (iD != iB)
1860+ let iE = blake2b256(value(aV.script))
1861+ let iF = fromBase64String(value(getString(aU, aF())))
1862+ let iG = scriptHash(this)
1863+ if ((iF == iE))
1864+ then (iG != iE)
18401865 else false
18411866 }
18421867 }
1843- else sigVerify(iw.bodyBytes, iw.proofs[0], iy)
1868+ else sigVerify(iz.bodyBytes, iz.proofs[0], iB)
18441869 }
18451870
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
1010 let d = toBigInt(0)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(1)
1515
1616 let g = toBigInt(2)
1717
1818 let h = toBigInt(3)
1919
2020 let i = toBigInt(4)
2121
2222 let j = toBigInt((a - ((a * 1) / a)))
2323
2424 let k = "WAVES"
2525
2626 let l = 50
2727
2828 let m = "100"
2929
3030 let n = "1"
3131
3232 let o = "__"
3333
3434 let p = ""
3535
3636 let q = 1
3737
3838 let r = 2
3939
4040 let s = 3
4141
4242 let t = 4
4343
4444 let u = 1
4545
4646 let v = 2
4747
4848 let w = 3
4949
5050 let x = 4
5151
5252 let y = 5
5353
5454 let z = 6
5555
5656 let A = 7
5757
5858 let B = 8
5959
6060 let C = 9
6161
6262 let D = 1
6363
6464 let E = 6
6565
6666 let F = 7
6767
6868 let G = 10
6969
7070 let H = fraction(10, a, 10000)
7171
7272 func I (J,K) = fraction(toBigInt(J), c, toBigInt(K))
7373
7474
7575 func L (J,K) = fraction(J, c, K)
7676
7777
7878 func M (N,O) = toInt(fraction(N, toBigInt(O), c))
7979
8080
8181 func P (N,O,Q) = toInt(fraction(N, toBigInt(O), c, Q))
8282
8383
8484 func R (J,K) = fraction(J, c, toBigInt(K))
8585
8686
8787 func S (N,O) = fraction(N, toBigInt(O), c)
8888
8989
9090 func T (U,V,W) = fraction(U, V, W)
9191
9292
9393 func X (N) = if ((d > N))
9494 then -(N)
9595 else N
9696
9797
9898 func Y (N) = if ((d > N))
9999 then -(N)
100100 else N
101101
102102
103103 func Z () = "%s__factoryContract"
104104
105105
106106 func aa () = "%s__managerPublicKey"
107107
108108
109109 func ab () = "%s__managerVaultAddress"
110110
111111
112112 func ac () = "%s%s__price__last"
113113
114114
115115 func ad (ae,af) = makeString(["%s%s%d%d__price__history", toString(ae), toString(af)], o)
116116
117117
118118 func ag (ah,ai) = ((("%s%s%s__P__" + ah) + "__") + ai)
119119
120120
121121 func aj (ah,ai) = ((("%s%s%s__G__" + ah) + "__") + ai)
122122
123123
124124 func ak () = "%s__amountAsset"
125125
126126
127127 func al () = "%s__priceAsset"
128128
129129
130130 func am () = "%s__amp"
131131
132132
133133 func an (ao) = ("%s%d__amp__" + toString(ao))
134134
135135
136136 func ap () = "%s__changeAmpLastCall"
137137
138138
139139 let aq = "%s__fee"
140140
141141 let ar = valueOrElse(getInteger(this, aq), H)
142142
143143 let as = makeString(["%s", "dLp"], o)
144144
145145 let at = makeString(["%s", "dLpRefreshedHeight"], o)
146146
147147 let au = makeString(["%s", "refreshDLpDelay"], o)
148148
149149 let av = 30
150150
151151 let aw = valueOrElse(getInteger(this, au), av)
152152
153153 func ax () = "%s__factoryConfig"
154154
155155
156156 func ay () = "%s%s__matcher__publicKey"
157157
158158
159159 func az (aA,aB) = (((("%d%d%s__" + aA) + "__") + aB) + "__config")
160160
161161
162162 func aC (aD) = ("%s%s%s__mappings__baseAsset2internalId__" + aD)
163163
164164
165165 func aE () = "%s__shutdown"
166166
167167
168168 func aF () = "%s__allowedLpStableScriptHash"
169169
170170
171171 func aG () = "%s__feeCollectorAddress"
172172
173173
174174 func aH (aI) = ("%s%s__skipOrderValidation__" + aI)
175175
176176
177177 func aJ (aK,aL,aM,aN) = throw((((((((("order validation failed: orderValid=" + toString(aK)) + " (") + aL) + ")") + " senderValid=") + toString(aM)) + " matcherValid=") + toString(aN)))
178178
179179
180180 func aO (aP) = {
181181 let aQ = addressFromString(aP)
182182 if ($isInstanceOf(aQ, "Address"))
183183 then {
184184 let aR = aQ
185185 aR
186186 }
187187 else this
188188 }
189189
190190
191191 func aS () = {
192192 let aT = {
193193 let aQ = getString(Z())
194194 if ($isInstanceOf(aQ, "String"))
195195 then {
196196 let aU = aQ
197197 aO(aU)
198198 }
199199 else this
200200 }
201201 let aQ = getString(aT, ab())
202202 if ($isInstanceOf(aQ, "String"))
203203 then {
204204 let aV = aQ
205205 aO(aV)
206206 }
207207 else this
208208 }
209209
210210
211211 func aW (aX,aY) = valueOrErrorMessage(getString(aX, aY), makeString(["mandatory ", toString(aX), ".", aY, " not defined"], ""))
212212
213213
214214 func aZ (aX,aY) = valueOrErrorMessage(getInteger(aX, aY), makeString(["mandatory ", toString(aX), ".", aY, " not defined"], ""))
215215
216216
217217 func ba (bb) = throw(makeString(["lp_stable.ride:", bb], " "))
218218
219219
220220 func bc (bb) = makeString(["lp_stable.ride:", bb], " ")
221221
222222
223223 let aU = addressFromStringValue(aW(this, Z()))
224224
225225 let bd = {
226226 let be = invoke(aU, "getInFeeREADONLY", [toString(this)], nil)
227227 if ($isInstanceOf(be, "Int"))
228228 then be
229229 else throw(($getType(be) + " couldn't be cast to Int"))
230230 }
231231
232232 let bf = {
233233 let be = invoke(aU, "getOutFeeREADONLY", [toString(this)], nil)
234234 if ($isInstanceOf(be, "Int"))
235235 then be
236236 else throw(($getType(be) + " couldn't be cast to Int"))
237237 }
238238
239-let bg = aW(this, am())
240-
241-func bh () = valueOrElse(getBoolean(aU, aE()), false)
239+func bg (bh) = makeString(["%s%s", "whitelisted", toString(bh)], o)
242240
243241
244-func bi () = fromBase58String(aW(aU, ay()))
242+func bi (bh) = valueOrElse(getBoolean(aU, bg(bh)), false)
245243
246244
247-let bj = addressFromStringValue(aW(aU, aG()))
245+let bj = aW(this, am())
248246
249-func bk () = {
250- let bl = aW(this, ak())
251- let bm = aW(this, al())
252- let bn = aZ(aU, aC(bm))
253- let aA = aZ(aU, aC(bl))
254- split(aW(aU, az(toString(aA), toString(bn))), o)
247+func bk () = valueOrElse(getBoolean(aU, aE()), false)
248+
249+
250+func bl () = fromBase58String(aW(aU, ay()))
251+
252+
253+let bm = addressFromStringValue(aW(aU, aG()))
254+
255+func bn () = {
256+ let bo = aW(this, ak())
257+ let bp = aW(this, al())
258+ let bq = aZ(aU, aC(bp))
259+ let aA = aZ(aU, aC(bo))
260+ split(aW(aU, az(toString(aA), toString(bq))), o)
255261 }
256262
257263
258-func bo (bp) = if ((bp == k))
264+func br (bs) = if ((bs == k))
259265 then unit
260- else fromBase58String(bp)
266+ else fromBase58String(bs)
261267
262268
263-func bq (bp) = if ((bp == unit))
269+func bt (bs) = if ((bs == unit))
264270 then k
265- else toBase58String(value(bp))
271+ else toBase58String(value(bs))
266272
267273
268-func br (bs) = $Tuple7(addressFromStringValue(bs[u]), parseIntValue(bs[v]), fromBase58String(bs[w]), bo(bs[x]), bo(bs[y]), parseIntValue(bs[z]), parseIntValue(bs[A]))
274+func bu (bv) = $Tuple7(addressFromStringValue(bv[u]), parseIntValue(bv[v]), fromBase58String(bv[w]), br(bv[x]), br(bv[y]), parseIntValue(bv[z]), parseIntValue(bv[A]))
269275
270276
271-let bt = br(bk())
277+let bw = bu(bn())
272278
273-let bu = bt
279+let bx = bw
274280
275-let bv = bu._1
281+let by = bx._1
276282
277-let bw = bu._2
283+let bz = bx._2
278284
279-let bx = bu._3
285+let bA = bx._3
280286
281-let by = bu._4
287+let bB = bx._4
282288
283-let bz = bu._5
289+let bC = bx._5
284290
285-let bA = bu._6
291+let bD = bx._6
286292
287-let bB = bu._7
293+let bE = bx._7
288294
289-func bC () = split(aW(aU, ax()), o)
295+func bF () = split(aW(aU, ax()), o)
290296
291297
292-let bD = bC()
298+let bG = bF()
293299
294-let bE = valueOrErrorMessage(addressFromString(bD[D]), "Invalid staking contract address")
300+let bH = valueOrErrorMessage(addressFromString(bG[D]), "Invalid staking contract address")
295301
296-let bF = valueOrErrorMessage(addressFromString(bD[F]), "Invalid slipage contract address")
302+let bI = valueOrErrorMessage(addressFromString(bG[F]), "Invalid slipage contract address")
297303
298-let bG = valueOrErrorMessage(addressFromString(bD[G]), "Invalid gwx contract address")
304+let bJ = valueOrErrorMessage(addressFromString(bG[G]), "Invalid gwx contract address")
299305
300-let bH = valueOrErrorMessage(addressFromString(bD[E]), "Invalid gwx contract address")
306+let bK = valueOrErrorMessage(addressFromString(bG[E]), "Invalid gwx contract address")
301307
302-func bI (bJ,bK,bL,bM,bN,bO,bP,bQ,bR,bS) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bJ), toString(bK), toString(bL), toString(bM), toString(bN), toString(bO), toString(bP), toString(bQ), toString(bR), toString(bS)], o)
308+func bL (bM,bN,bO,bP,bQ,bR,bS,bT,bU,bV) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bM), toString(bN), toString(bO), toString(bP), toString(bQ), toString(bR), toString(bS), toString(bT), toString(bU), toString(bV)], o)
303309
304310
305-func bT (bU,bV,bW,bM,bP,bQ) = makeString(["%d%d%d%d%d%d", toString(bU), toString(bV), toString(bW), toString(bM), toString(bP), toString(bQ)], o)
311+func bW (bX,bY,bZ,bP,bS,bT) = makeString(["%d%d%d%d%d%d", toString(bX), toString(bY), toString(bZ), toString(bP), toString(bS), toString(bT)], o)
306312
307313
308-func bX (bY) = if ((bY == "WAVES"))
314+func ca (cb) = if ((cb == "WAVES"))
309315 then wavesBalance(this).available
310- else assetBalance(this, fromBase58String(bY))
316+ else assetBalance(this, fromBase58String(cb))
311317
312318
313-func bZ (ca,cb) = fraction(ca, c, cb)
319+func cc (cd,ce) = fraction(cd, c, ce)
314320
315321
316-func cc (ca,cb,Q) = fraction(ca, c, cb, Q)
322+func cf (cd,ce,Q) = fraction(cd, c, ce, Q)
317323
318324
319-func cd (ce,cf,cg) = {
320- let ch = fraction((ce - cf), b, cf)
321- let ci = ((cg - X(ch)) > d)
322- if (!(ci))
323- then throw(("Big slpg: " + toString(ch)))
324- else $Tuple2(ci, min([ce, cf]))
325+func cg (ch,ci,cj) = {
326+ let ck = fraction((ch - ci), b, ci)
327+ let cl = ((cj - X(ck)) > d)
328+ if (!(cl))
329+ then throw(("Big slpg: " + toString(ck)))
330+ else $Tuple2(cl, min([ch, ci]))
325331 }
326332
327333
328-func cj (ck,cl,cm) = {
329- let ch = fraction(cl, b, ck)
330- let cn = (cm > ch)
331- if (if (cn)
334+func cm (cn,co,cp) = {
335+ let ck = fraction(co, b, cn)
336+ let cq = (cp > ck)
337+ if (if (cq)
332338 then true
333- else (cl > ck))
334- then throw(((((((toString(cl) + " ") + toString(ck)) + " ") + toString(ch)) + " ") + toString(cm)))
335- else cn
339+ else (co > cn))
340+ then throw(((((((toString(co) + " ") + toString(cn)) + " ") + toString(ck)) + " ") + toString(cp)))
341+ else cq
336342 }
337343
338344
339-func co (cp,cq,cr,cs) = {
340- let ct = I(cr, cp)
341- let cu = I(cs, cq)
342- bZ(cu, ct)
345+func cr (cs,ct,cu,cv) = {
346+ let cw = I(cu, cs)
347+ let cx = I(cv, ct)
348+ cc(cx, cw)
343349 }
344350
345351
346-func cv (cr,cs,cw) = {
347- let cx = bA
348- let cy = bB
349- let cz = co(cx, cy, cr, cs)
350- let cb = I(cr, cx)
351- let ca = I(cs, cy)
352- let cA = I(cw, a)
353- let cB = bZ(cb, cA)
354- let cC = bZ(ca, cA)
355-[cz, cB, cC]
352+func cy (cu,cv,cz) = {
353+ let cA = bD
354+ let cB = bE
355+ let cC = cr(cA, cB, cu, cv)
356+ let ce = I(cu, cA)
357+ let cd = I(cv, cB)
358+ let cD = I(cz, a)
359+ let cE = cc(ce, cD)
360+ let cF = cc(cd, cD)
361+[cC, cE, cF]
356362 }
357363
358364
359-func cD (cr,cs,cw) = {
360- let cE = cv(cr, cs, cw)
361-[M(cE[0], a), M(cE[1], a), M(cE[2], a)]
365+func cG (cu,cv,cz) = {
366+ let cH = cy(cu, cv, cz)
367+[M(cH[0], a), M(cH[1], a), M(cH[2], a)]
362368 }
363369
364370
365-func cF (cG,ar) = {
366- let cH = if ((ar == 0))
371+func cI (cJ,ar) = {
372+ let cK = if ((ar == 0))
367373 then 0
368- else fraction(cG, ar, a)
369- $Tuple2((cG - cH), cH)
374+ else fraction(cJ, ar, a)
375+ $Tuple2((cJ - cK), cK)
370376 }
371377
372378
373-func cI (cJ) = {
374- let cK = cJ[0]
375- let cL = cJ[1]
376- let aV = (cK + cL)
379+func cL (cM) = {
380+ let cN = cM[0]
381+ let cO = cM[1]
382+ let aV = (cN + cO)
377383 if ((aV == e))
378384 then e
379385 else {
380- let aR = parseIntValue(bg)
381- let cM = (aR * 2)
382- let cE = fraction(cK, cL, f)
383- let cN = fraction(cE, i, f)
384- let cO = fraction(toBigInt(cM), aV, f)
385- let cP = toBigInt((cM - 1))
386- func cQ (cR) = {
387- let cS = fraction(cR, cR, f)
388- let cT = fraction(cS, cR, f)
389- let cU = fraction(cT, f, cN)
390- fraction((cO + fraction(cU, g, f)), cR, (fraction(cP, cR, f) + fraction(h, cU, f)))
386+ let aR = parseIntValue(bj)
387+ let cP = (aR * 2)
388+ let cH = fraction(cN, cO, f)
389+ let cQ = fraction(cH, i, f)
390+ let cR = fraction(toBigInt(cP), aV, f)
391+ let cS = toBigInt((cP - 1))
392+ func cT (cU) = {
393+ let cV = fraction(cU, cU, f)
394+ let cW = fraction(cV, cU, f)
395+ let cX = fraction(cW, f, cQ)
396+ fraction((cR + fraction(cX, g, f)), cU, (fraction(cS, cU, f) + fraction(h, cX, f)))
391397 }
392398
393- func cV (cW,cX) = if (cW._2)
394- then cW
399+ func cY (cZ,da) = if (cZ._2)
400+ then cZ
395401 else {
396- let cR = cW._1
397- let cY = cQ(cR)
398- let cZ = (cY - value(cR))
399- let da = if ((e > cZ))
400- then -(cZ)
401- else cZ
402- if ((f >= da))
403- then $Tuple2(cY, true)
404- else $Tuple2(cY, false)
402+ let cU = cZ._1
403+ let db = cT(cU)
404+ let dc = (db - value(cU))
405+ let dd = if ((e > dc))
406+ then -(dc)
407+ else dc
408+ if ((f >= dd))
409+ then $Tuple2(db, true)
410+ else $Tuple2(db, false)
405411 }
406412
407- let db = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
408- let dc = {
409- let dd = db
410- let de = size(dd)
411- let df = $Tuple2(aV, false)
412- func dg (dh,di) = if ((di >= de))
413- then dh
414- else cV(dh, dd[di])
413+ let de = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
414+ let df = {
415+ let dg = de
416+ let dh = size(dg)
417+ let di = $Tuple2(aV, false)
418+ func dj (dk,dl) = if ((dl >= dh))
419+ then dk
420+ else cY(dk, dg[dl])
415421
416- func dj (dh,di) = if ((di >= de))
417- then dh
422+ func dm (dk,dl) = if ((dl >= dh))
423+ then dk
418424 else throw("List size exceeds 17")
419425
420- dj(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(df, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17)
426+ dm(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(di, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17)
421427 }
422- let cR = dc._1
423- let dk = dc._2
424- if (dk)
425- then cR
426- else throw(("D calculation error, D = " + toString(cR)))
428+ let cU = df._1
429+ let dn = df._2
430+ if (dn)
431+ then cU
432+ else throw(("D calculation error, D = " + toString(cU)))
427433 }
428434 }
429435
430436
431-func dl (dm,dn,do,dp) = {
432- let dq = bx
433- let dr = toBase58String(value(by))
434- let ds = toBase58String(value(bz))
437+func do (dp,dq,dr,ds) = {
435438 let dt = bA
436- let du = bB
437- let dv = toString(bw)
438- let dw = valueOrErrorMessage(assetInfo(dq), "Wrong LP id").quantity
439- if ((toBase58String(dq) != dn))
439+ let du = toBase58String(value(bB))
440+ let dv = toBase58String(value(bC))
441+ let dw = bD
442+ let dx = bE
443+ let dy = toString(bz)
444+ let dz = valueOrErrorMessage(assetInfo(dt), "Wrong LP id").quantity
445+ if ((toBase58String(dt) != dq))
440446 then throw("Wrong pmt asset")
441447 else {
442- let dx = bX(dr)
443- let dy = I(dx, dt)
444- let dz = bX(ds)
445- let dA = I(dz, du)
446- let dB = bZ(dA, dy)
447- let dC = M(dB, a)
448- let dD = I(do, a)
449- let dE = I(dw, a)
450- let dF = fraction(dy, dD, dE)
451- let dG = fraction(dA, dD, dE)
452- let dH = P(dF, dt, FLOOR)
453- let dI = P(dG, du, FLOOR)
454- let dJ = if ((dm == ""))
448+ let dA = ca(du)
449+ let dB = I(dA, dw)
450+ let dC = ca(dv)
451+ let dD = I(dC, dx)
452+ let dE = cc(dD, dB)
453+ let dF = M(dE, a)
454+ let dG = I(dr, a)
455+ let dH = I(dz, a)
456+ let dI = fraction(dB, dG, dH)
457+ let dJ = fraction(dD, dG, dH)
458+ let dK = P(dI, dw, FLOOR)
459+ let dL = P(dJ, dx, FLOOR)
460+ let dM = if ((dp == ""))
455461 then nil
456- else [ScriptTransfer(dp, dH, if ((dr == "WAVES"))
462+ else [ScriptTransfer(ds, dK, if ((du == "WAVES"))
457463 then unit
458- else fromBase58String(dr)), ScriptTransfer(dp, dI, if ((ds == "WAVES"))
464+ else fromBase58String(du)), ScriptTransfer(ds, dL, if ((dv == "WAVES"))
459465 then unit
460- else fromBase58String(ds)), StringEntry(aj(toString(dp), dm), bT(dH, dI, do, dC, height, lastBlock.timestamp)), IntegerEntry(ac(), dC), IntegerEntry(ad(height, lastBlock.timestamp), dC)]
461- $Tuple10(dH, dI, dr, ds, dx, dz, dw, dB, dv, dJ)
466+ else fromBase58String(dv)), StringEntry(aj(toString(ds), dp), bW(dK, dL, dr, dF, height, lastBlock.timestamp)), IntegerEntry(ac(), dF), IntegerEntry(ad(height, lastBlock.timestamp), dF)]
467+ $Tuple10(dK, dL, du, dv, dA, dC, dz, dE, dy, dM)
462468 }
463469 }
464470
465471
466-func dK (dm,cg,dL,dM,dN,dO,dp,dP,dQ,dR,dS,dT,dU) = {
467- let dq = bx
468- let dV = toBase58String(value(by))
469- let dW = toBase58String(value(bz))
470- let dX = bA
471- let dY = bB
472- let dv = toString(bw)
473- let dZ = valueOrErrorMessage(assetInfo(dq), "Wr lp as").quantity
474- let dx = if (dP)
475- then bX(dV)
476- else if (if (dR)
477- then (dU == dV)
472+func dN (dp,cj,dO,dP,dQ,dR,ds,dS,dT,dU,dV,dW,dX) = {
473+ let dt = bA
474+ let dY = toBase58String(value(bB))
475+ let dZ = toBase58String(value(bC))
476+ let ea = bD
477+ let eb = bE
478+ let dy = toString(bz)
479+ let ec = valueOrErrorMessage(assetInfo(dt), "Wr lp as").quantity
480+ let dA = if (dS)
481+ then ca(dY)
482+ else if (if (dU)
483+ then (dX == dY)
478484 else false)
479- then (bX(dV) - dT)
480- else if (dR)
481- then bX(dV)
482- else (bX(dV) - dL)
483- let dz = if (dP)
484- then bX(dW)
485- else if (if (dR)
486- then (dU == dW)
485+ then (ca(dY) - dW)
486+ else if (dU)
487+ then ca(dY)
488+ else (ca(dY) - dO)
489+ let dC = if (dS)
490+ then ca(dZ)
491+ else if (if (dU)
492+ then (dX == dZ)
487493 else false)
488- then (bX(dW) - dT)
489- else if (dR)
490- then bX(dW)
491- else (bX(dW) - dN)
492- let ea = I(dL, dX)
493- let eb = I(dN, dY)
494- let ec = bZ(eb, ea)
495- let dy = I(dx, dX)
496- let dA = I(dz, dY)
497- let cl = cI([dy, dA])
498- let ed = if ((dZ == 0))
494+ then (ca(dZ) - dW)
495+ else if (dU)
496+ then ca(dZ)
497+ else (ca(dZ) - dQ)
498+ let ed = I(dO, ea)
499+ let ee = I(dQ, eb)
500+ let ef = cc(ee, ed)
501+ let dB = I(dA, ea)
502+ let dD = I(dC, eb)
503+ let co = cL([dB, dD])
504+ let eg = if ((ec == 0))
499505 then {
500- let ck = cI([(dy + ea), (dA + eb)])
501- let ee = if ((ck > cl))
506+ let cn = cL([(dB + ed), (dD + ee)])
507+ let eh = if ((cn > co))
502508 then true
503509 else throw("D1 should be greater than D0")
504- if ((ee == ee))
510+ if ((eh == eh))
505511 then {
506- let dB = d
507- let ef = d
508- let cA = ck
509- $Tuple5(M(cA, a), M(ea, dX), M(eb, dY), bZ((dA + eb), (dy + ea)), ef)
512+ let dE = d
513+ let ei = d
514+ let cD = cn
515+ $Tuple5(M(cD, a), M(ed, ea), M(ee, eb), cc((dD + ee), (dB + ed)), ei)
510516 }
511517 else throw("Strict value is not equal to itself.")
512518 }
513519 else {
514- let dB = bZ(dA, dy)
515- let eg = fraction(X((dB - ec)), c, dB)
516- let ef = I(cg, a)
517- if (if (if (dS)
518- then (dB != d)
520+ let dE = cc(dD, dB)
521+ let ej = fraction(X((dE - ef)), c, dE)
522+ let ei = I(cj, a)
523+ if (if (if (dV)
524+ then (dE != d)
519525 else false)
520- then (eg > ef)
526+ then (ej > ei)
521527 else false)
522- then throw(((("Price slippage " + toString(eg)) + " > ") + toString(ef)))
528+ then throw(((("Price slippage " + toString(ej)) + " > ") + toString(ei)))
523529 else {
524- let eh = I(dZ, a)
525- let ei = fraction(ea, cc(dA, dy, CEILING), c, CEILING)
526- let ej = fraction(eb, c, cc(dA, dy, FLOOR), CEILING)
527- let ek = if ((ei > eb))
528- then $Tuple2(ej, eb)
529- else $Tuple2(ea, ei)
530- let el = ek._1
531- let em = ek._2
532- let ck = cI([(dy + el), (dA + em)])
533- let ee = if ((ck > cl))
530+ let ek = I(ec, a)
531+ let el = fraction(ed, cf(dD, dB, CEILING), c, CEILING)
532+ let em = fraction(ee, c, cf(dD, dB, FLOOR), CEILING)
533+ let en = if ((el > ee))
534+ then $Tuple2(em, ee)
535+ else $Tuple2(ed, el)
536+ let eo = en._1
537+ let ep = en._2
538+ let cn = cL([(dB + eo), (dD + ep)])
539+ let eh = if ((cn > co))
534540 then true
535541 else throw("D1 should be greater than D0")
536- if ((ee == ee))
542+ if ((eh == eh))
537543 then {
538- let cA = fraction(eh, (ck - cl), cl)
539- $Tuple5(P(cA, a, FLOOR), P(el, dX, CEILING), P(em, dY, CEILING), dB, ef)
544+ let cD = fraction(ek, (cn - co), co)
545+ $Tuple5(P(cD, a, FLOOR), P(eo, ea, CEILING), P(ep, eb, CEILING), dE, ei)
540546 }
541547 else throw("Strict value is not equal to itself.")
542548 }
543549 }
544- let en = ed._1
545- let eo = ed._2
546- let ep = ed._3
547- let dC = M(ed._4, a)
548- let eq = M(ed._5, a)
549- if ((0 >= en))
550+ let eq = eg._1
551+ let er = eg._2
552+ let es = eg._3
553+ let dF = M(eg._4, a)
554+ let et = M(eg._5, a)
555+ if ((0 >= eq))
550556 then throw("LP <= 0")
551557 else {
552- let er = if (!(dQ))
558+ let eu = if (!(dT))
553559 then 0
554- else en
555- let es = (dL - eo)
556- let et = (dN - ep)
557- let eu = if (if (dR)
558- then (dU == dV)
560+ else eq
561+ let ev = (dO - er)
562+ let ew = (dQ - es)
563+ let ex = if (if (dU)
564+ then (dX == dY)
559565 else false)
560- then $Tuple2(dT, 0)
561- else if (if (dR)
562- then (dU == dW)
566+ then $Tuple2(dW, 0)
567+ else if (if (dU)
568+ then (dX == dZ)
563569 else false)
564- then $Tuple2(0, dT)
565- else $Tuple2(eo, ep)
566- let ev = eu._1
567- let ew = eu._2
568- let ex = [IntegerEntry(ac(), dC), IntegerEntry(ad(height, lastBlock.timestamp), dC), StringEntry(ag(dp, dm), bI(ev, ew, er, dC, cg, eq, height, lastBlock.timestamp, es, et))]
569- $Tuple13(en, er, dC, dx, dz, dZ, dq, dv, ex, es, et, dM, dO)
570+ then $Tuple2(0, dW)
571+ else $Tuple2(er, es)
572+ let ey = ex._1
573+ let ez = ex._2
574+ let eA = [IntegerEntry(ac(), dF), IntegerEntry(ad(height, lastBlock.timestamp), dF), StringEntry(ag(ds, dp), bL(ey, ez, eu, dF, cj, et, height, lastBlock.timestamp, ev, ew))]
575+ $Tuple13(eq, eu, dF, dA, dC, ec, dt, dy, eA, ev, ew, dP, dR)
570576 }
571577 }
572578
573579
574-func ey (cJ,cX,ez) = {
575- let eA = g
576- let eB = cJ[if ((cX == 0))
580+func eB (cM,da,eC) = {
581+ let eD = g
582+ let eE = cM[if ((da == 0))
577583 then 1
578584 else 0]
579- let eC = parseBigIntValue(m)
580- let aR = (parseBigIntValue(bg) * eC)
581- let aV = eB
582- let cM = (aR * eA)
583- let eD = (((((ez * ez) / (eB * eA)) * ez) * eC) / (cM * eA))
584- let eE = ((aV + ((ez * eC) / cM)) - ez)
585- func cV (cW,eF) = {
586- let eG = cW
587- let eH = eG._1
588- let dk = eG._2
589- if ((dk != unit))
590- then cW
585+ let eF = parseBigIntValue(m)
586+ let aR = (parseBigIntValue(bj) * eF)
587+ let aV = eE
588+ let cP = (aR * eD)
589+ let eG = (((((eC * eC) / (eE * eD)) * eC) * eF) / (cP * eD))
590+ let eH = ((aV + ((eC * eF) / cP)) - eC)
591+ func cY (cZ,eI) = {
592+ let eJ = cZ
593+ let eK = eJ._1
594+ let dn = eJ._2
595+ if ((dn != unit))
596+ then cZ
591597 else {
592- let eI = (((eH * eH) + eD) / ((g * eH) + eE))
593- let eJ = Y((eI - value(eH)))
594- if ((f >= eJ))
595- then $Tuple2(eI, eF)
596- else $Tuple2(eI, unit)
598+ let eL = (((eK * eK) + eG) / ((g * eK) + eH))
599+ let eM = Y((eL - value(eK)))
600+ if ((f >= eM))
601+ then $Tuple2(eL, eI)
602+ else $Tuple2(eL, unit)
597603 }
598604 }
599605
600- let db = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
601- let eK = {
602- let dd = db
603- let de = size(dd)
604- let df = $Tuple2(ez, unit)
605- func dg (dh,di) = if ((di >= de))
606- then dh
607- else cV(dh, dd[di])
606+ let de = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
607+ let eN = {
608+ let dg = de
609+ let dh = size(dg)
610+ let di = $Tuple2(eC, unit)
611+ func dj (dk,dl) = if ((dl >= dh))
612+ then dk
613+ else cY(dk, dg[dl])
608614
609- func dj (dh,di) = if ((di >= de))
610- then dh
615+ func dm (dk,dl) = if ((dl >= dh))
616+ then dk
611617 else throw("List size exceeds 15")
612618
613- dj(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(df, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
619+ dm(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(di, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
614620 }
615- let eH = eK._1
616- let dk = eK._2
617- if ((dk != unit))
618- then eH
619- else throw(("Y calculation error, Y = " + toString(eH)))
621+ let eK = eN._1
622+ let dn = eN._2
623+ if ((dn != unit))
624+ then eK
625+ else throw(("Y calculation error, Y = " + toString(eK)))
620626 }
621627
622628
623-func eL (eM,eN,eO) = {
624- let eP = fraction(cI([L(eM, toBigInt(bA)), L(eN, toBigInt(bB))]), c, eO)
625- if ((eO == e))
629+func eO (eP,eQ,eR) = {
630+ let eS = fraction(cL([L(eP, toBigInt(bD)), L(eQ, toBigInt(bE))]), c, eR)
631+ if ((eR == e))
626632 then e
627- else eP
633+ else eS
628634 }
629635
630636
631-func eQ (eR,eS,eT) = {
632- let eU = (toBigInt(bX(bq(by))) - eR)
633- let eV = (toBigInt(bX(bq(bz))) - eS)
634- let eW = (toBigInt(value(assetInfo(bx)).quantity) - eT)
635- let eX = eL(eU, eV, eW)
636- eX
637+func eT (eU,eV,eW) = {
638+ let eX = (toBigInt(ca(bt(bB))) - eU)
639+ let eY = (toBigInt(ca(bt(bC))) - eV)
640+ let eZ = (toBigInt(value(assetInfo(bA)).quantity) - eW)
641+ let fa = eO(eX, eY, eZ)
642+ fa
637643 }
638644
639645
640-func eY (eZ,fa,eT) = {
641- let eU = (bX(bq(by)) + eZ)
642- let eV = (bX(bq(bz)) + fa)
643- let eW = (value(assetInfo(bx)).quantity + eT)
644- let eP = eL(toBigInt(eU), toBigInt(eV), toBigInt(eW))
645- let fb = [IntegerEntry(at, height), StringEntry(as, toString(eP))]
646- $Tuple2(fb, eP)
646+func fb (fc,fd,eW) = {
647+ let eX = (ca(bt(bB)) + fc)
648+ let eY = (ca(bt(bC)) + fd)
649+ let eZ = (value(assetInfo(bA)).quantity + eW)
650+ let eS = eO(toBigInt(eX), toBigInt(eY), toBigInt(eZ))
651+ let fe = [IntegerEntry(at, height), StringEntry(as, toString(eS))]
652+ $Tuple2(fe, eS)
647653 }
648654
649655
650-func fc (fd,eP) = if ((eP >= fd))
656+func ff (fg,eS) = if ((eS >= fg))
651657 then true
652658 else ba("updated DLp lower than current DLp")
653659
654660
655-func fe (ff) = {
656- let eU = bX(bq(by))
657- let eV = bX(bq(bz))
658- let fg = ff.amount
659- let fh = fraction(ff.amount, ff.price, a, FLOOR)
660- let fi = if ((ff.orderType == Buy))
661- then $Tuple2(fg, -(fh))
662- else $Tuple2(-(fg), fh)
663- let eZ = fi._1
664- let fa = fi._2
665- if (if (if (bh())
661+func fh (fi) = {
662+ let eX = ca(bt(bB))
663+ let eY = ca(bt(bC))
664+ let fj = fi.amount
665+ let fk = fraction(fi.amount, fi.price, a, FLOOR)
666+ let fl = if ((fi.orderType == Buy))
667+ then $Tuple2(fj, -(fk))
668+ else $Tuple2(-(fj), fk)
669+ let fc = fl._1
670+ let fd = fl._2
671+ if (if (if (bk())
666672 then true
667- else (bw == s))
673+ else (bz == s))
668674 then true
669- else (bw == t))
675+ else (bz == t))
670676 then throw("Admin blocked")
671- else if (if ((ff.assetPair.amountAsset != by))
677+ else if (if ((fi.assetPair.amountAsset != bB))
672678 then true
673- else (ff.assetPair.priceAsset != bz))
679+ else (fi.assetPair.priceAsset != bC))
674680 then throw("Wr assets")
675681 else {
676- let fj = parseBigIntValue(valueOrElse(getString(this, as), "0"))
677- let fk = eY(eZ, fa, 0)
678- let fl = fk._1
679- let fm = fk._2
680- let fn = (fm >= fj)
681- let fo = makeString(["dLp=", toString(fj), " dLpNew=", toString(fm), " amountAssetBalance=", toString(eU), " priceAssetBalance=", toString(eV), " amountAssetBalanceDelta=", toString(eZ), " priceAssetBalanceDelta=", toString(fa), " height=", toString(height)], "")
682- $Tuple2(fn, fo)
682+ let fm = parseBigIntValue(valueOrElse(getString(this, as), "0"))
683+ let fn = fb(fc, fd, 0)
684+ let fo = fn._1
685+ let fp = fn._2
686+ let fq = (fp >= fm)
687+ let fr = makeString(["dLp=", toString(fm), " dLpNew=", toString(fp), " amountAssetBalance=", toString(eX), " priceAssetBalance=", toString(eY), " amountAssetBalanceDelta=", toString(fc), " priceAssetBalanceDelta=", toString(fd), " height=", toString(height)], "")
688+ $Tuple2(fq, fr)
683689 }
684690 }
685691
686692
687-func fp (cX) = if ((size(cX.payments) != 1))
693+func fs (da) = if ((size(da.payments) != 1))
688694 then throw("1 pmnt exp")
689695 else {
690- let fq = value(cX.payments[0])
691- let dn = value(fq.assetId)
692- let dT = fq.amount
693- let ed = dl(toBase58String(cX.transactionId), toBase58String(dn), dT, cX.caller)
694- let dH = ed._1
695- let dI = ed._2
696- let dv = parseIntValue(ed._9)
697- let dJ = ed._10
698- if (if (bh())
699- then true
700- else (dv == t))
701- then throw(("Admin blocked: " + toString(dv)))
702- else $Tuple5(dH, dI, dT, dn, dJ)
696+ let ft = value(da.payments[0])
697+ let dq = value(ft.assetId)
698+ let dW = ft.amount
699+ let eg = do(toBase58String(da.transactionId), toBase58String(dq), dW, da.caller)
700+ let dK = eg._1
701+ let dL = eg._2
702+ let dy = parseIntValue(eg._9)
703+ let dM = eg._10
704+ let fu = if (!(bi(da.caller)))
705+ then if (bk())
706+ then true
707+ else (bz == t)
708+ else false
709+ if (fu)
710+ then throw(("Admin blocked: " + toString(dy)))
711+ else $Tuple5(dK, dL, dW, dq, dM)
703712 }
704713
705714
706-func fr (fs,ai,ft,fu,cg,dQ,dR,dS,dT,dU) = {
707- let ed = dK(ai, cg, value(ft).amount, value(ft).assetId, value(fu).amount, value(fu).assetId, fs, (ai == ""), dQ, dR, dS, dT, dU)
708- let dv = parseIntValue(ed._8)
709- if (if (if (bh())
710- then true
711- else (dv == r))
712- then true
713- else (dv == t))
714- then throw(("Blocked:" + toString(dv)))
715- else ed
715+func fv (fw,ai,fx,fy,cj,dT,dU,dV,dW,dX) = {
716+ let eg = dN(ai, cj, value(fx).amount, value(fx).assetId, value(fy).amount, value(fy).assetId, fw, (ai == ""), dT, dU, dV, dW, dX)
717+ let dy = parseIntValue(eg._8)
718+ let fz = if (!(bi(addressFromStringValue(fw))))
719+ then if (if (bk())
720+ then true
721+ else (bz == t))
722+ then true
723+ else (bz == r)
724+ else false
725+ if (fz)
726+ then throw(("Blocked:" + toString(dy)))
727+ else eg
716728 }
717729
718730
719-func fv (fw,dn,dp,ai,fx) = {
720- let dr = toBase58String(value(by))
721- let ds = toBase58String(value(bz))
722- let dq = bx
723- let dX = bA
724- let dY = bB
725- let eW = toBigInt(valueOrErrorMessage(assetInfo(dq), "invalid lp asset").quantity)
726- let fy = if ((eW > e))
731+func fA (fB,dq,ds,ai,fC) = {
732+ let du = toBase58String(value(bB))
733+ let dv = toBase58String(value(bC))
734+ let dt = bA
735+ let ea = bD
736+ let eb = bE
737+ let eZ = toBigInt(valueOrErrorMessage(assetInfo(dt), "invalid lp asset").quantity)
738+ let fD = if ((eZ > e))
727739 then true
728740 else throw("initial deposit requires all coins")
729- if ((fy == fy))
741+ if ((fD == fD))
730742 then {
731- let dx = bX(dr)
732- let dz = bX(ds)
733- let fz = if ((ai == ""))
734- then $Tuple2(dx, dz)
735- else if ((dn == dr))
736- then if ((fw > dx))
743+ let dA = ca(du)
744+ let dC = ca(dv)
745+ let fE = if ((ai == ""))
746+ then $Tuple2(dA, dC)
747+ else if ((dq == du))
748+ then if ((fB > dA))
737749 then throw("invalid payment amount")
738- else $Tuple2((dx - fw), dz)
739- else if ((dn == ds))
740- then if ((fw > dz))
750+ else $Tuple2((dA - fB), dC)
751+ else if ((dq == dv))
752+ then if ((fB > dC))
741753 then throw("invalid payment amount")
742- else $Tuple2(dx, (dz - fw))
754+ else $Tuple2(dA, (dC - fB))
743755 else throw("wrong pmtAssetId")
744- let fA = fz._1
745- let fB = fz._2
746- let fC = if ((dn == dr))
747- then $Tuple2(fw, 0)
748- else if ((dn == ds))
749- then $Tuple2(0, fw)
756+ let fF = fE._1
757+ let fG = fE._2
758+ let fH = if ((dq == du))
759+ then $Tuple2(fB, 0)
760+ else if ((dq == dv))
761+ then $Tuple2(0, fB)
750762 else throw("invalid payment")
751- let fD = fC._1
752- let fE = fC._2
753- let fF = if (fx)
754- then $Tuple3(cF(fD, bd)._1, cF(fE, bd)._1, cF(fw, bd)._2)
755- else $Tuple3(fD, fE, 0)
756- let fG = fF._1
757- let fH = fF._2
758- let cH = fF._3
759- let fI = (fA + fG)
760- let fJ = (fB + fH)
761- let cl = cI([I(fA, bA), I(fB, bB)])
762- let ck = cI([I(fI, bA), I(fJ, bB)])
763- let ee = if ((ck > cl))
763+ let fI = fH._1
764+ let fJ = fH._2
765+ let fK = if (fC)
766+ then $Tuple3(cI(fI, bd)._1, cI(fJ, bd)._1, cI(fB, bd)._2)
767+ else $Tuple3(fI, fJ, 0)
768+ let fL = fK._1
769+ let fM = fK._2
770+ let cK = fK._3
771+ let fN = (fF + fL)
772+ let fO = (fG + fM)
773+ let co = cL([I(fF, bD), I(fG, bE)])
774+ let cn = cL([I(fN, bD), I(fO, bE)])
775+ let eh = if ((cn > co))
764776 then true
765777 else throw()
766- if ((ee == ee))
778+ if ((eh == eh))
767779 then {
768- let fK = fraction(eW, (ck - cl), cl, FLOOR)
769- let dC = M(bZ(I(fJ, dY), I(fI, dX)), a)
770- let ex = [IntegerEntry(ac(), dC), IntegerEntry(ad(height, lastBlock.timestamp), dC), StringEntry(ag(dp, ai), bI(fD, fE, toInt(fK), dC, 0, 0, height, lastBlock.timestamp, 0, 0))]
771- let fL = fraction(fB, a, fA)
772- let fM = fraction(fw, a, (fL + a))
773- let fN = (fw - fM)
774- let fO = fraction(eW, toBigInt(fN), toBigInt(fB))
775- let fP = toInt(fraction((fK - fO), b, fO))
776- $Tuple4(toInt(fK), ex, cH, fP)
780+ let fP = fraction(eZ, (cn - co), co, FLOOR)
781+ let dF = M(cc(I(fO, eb), I(fN, ea)), a)
782+ let eA = [IntegerEntry(ac(), dF), IntegerEntry(ad(height, lastBlock.timestamp), dF), StringEntry(ag(ds, ai), bL(fI, fJ, toInt(fP), dF, 0, 0, height, lastBlock.timestamp, 0, 0))]
783+ let fQ = fraction(fG, a, fF)
784+ let fR = fraction(fB, a, (fQ + a))
785+ let fS = (fB - fR)
786+ let fT = fraction(eZ, toBigInt(fS), toBigInt(fG))
787+ let fU = toInt(fraction((fP - fT), b, fT))
788+ $Tuple4(toInt(fP), eA, cK, fU)
777789 }
778790 else throw("Strict value is not equal to itself.")
779791 }
780792 else throw("Strict value is not equal to itself.")
781793 }
782794
783795
784-func fQ (fR,fS,fT,fs,fU,fV) = {
785- let dq = toBase58String(value(bx))
786- let dr = toBase58String(value(by))
787- let ds = toBase58String(value(bz))
788- let fW = bA
789- let fX = bB
790- let fY = bw
791- let dp = if ((fs == bH))
792- then fU
793- else fs
794- let fq = value(fT[0])
795- let dn = value(fq.assetId)
796- let dT = fq.amount
797- let eX = eQ(e, e, e)
798- if ((eX == eX))
796+func fV (fW,fX,fY,fw,fZ,ga) = {
797+ let dt = toBase58String(value(bA))
798+ let du = toBase58String(value(bB))
799+ let dv = toBase58String(value(bC))
800+ let gb = bD
801+ let gc = bE
802+ let gd = bz
803+ let ds = if ((fw == bK))
804+ then fZ
805+ else fw
806+ let ft = value(fY[0])
807+ let dq = value(ft.assetId)
808+ let dW = ft.amount
809+ let fa = eT(e, e, e)
810+ if ((fa == fa))
799811 then {
800- let dm = toBase58String(fV)
801- if ((dq != toBase58String(dn)))
812+ let dp = toBase58String(ga)
813+ if ((dt != toBase58String(dq)))
802814 then throw("Wrong LP")
803815 else {
804- let dx = bX(dr)
805- let dz = bX(ds)
806- let fZ = {
807- let be = invoke(this, "getOneTknV2READONLY", [fR, dT], nil)
816+ let dA = ca(du)
817+ let dC = ca(dv)
818+ let ge = {
819+ let be = invoke(this, "getOneTknV2READONLY", [fW, dW], nil)
808820 if ($isInstanceOf(be, "(Int, Int)"))
809821 then be
810822 else throw(($getType(be) + " couldn't be cast to (Int, Int)"))
811823 }
812- if ((fZ == fZ))
824+ if ((ge == ge))
813825 then {
814- let cH = fZ._2
815- let ga = fZ._1
816- let gb = if (if ((fS > 0))
817- then (fS > ga)
826+ let cK = ge._2
827+ let gf = ge._1
828+ let gg = if (if ((fX > 0))
829+ then (fX > gf)
818830 else false)
819- then ba(makeString(["amount to receive is less than ", toString(fS)], ""))
820- else ga
821- let gc = if ((fR == dr))
822- then $Tuple4(gb, 0, ((dx - gb) - cH), dz)
823- else if ((fR == ds))
824- then $Tuple4(0, gb, dx, ((dz - gb) - cH))
831+ then ba(makeString(["amount to receive is less than ", toString(fX)], ""))
832+ else gf
833+ let gh = if ((fW == du))
834+ then $Tuple4(gg, 0, ((dA - gg) - cK), dC)
835+ else if ((fW == dv))
836+ then $Tuple4(0, gg, dA, ((dC - gg) - cK))
825837 else throw("invalid out asset id")
826- let gd = gc._1
827- let ge = gc._2
828- let fI = gc._3
829- let fJ = gc._4
830- let gf = bZ(I(fJ, fX), I(fI, fW))
831- let gg = M(gf, a)
832- let gh = if ((fR == "WAVES"))
838+ let gi = gh._1
839+ let gj = gh._2
840+ let fN = gh._3
841+ let fO = gh._4
842+ let gk = cc(I(fO, gc), I(fN, gb))
843+ let gl = M(gk, a)
844+ let gm = if ((fW == "WAVES"))
833845 then unit
834- else fromBase58String(fR)
835- let gi = if ((cH > 0))
836- then [ScriptTransfer(bj, cH, gh)]
846+ else fromBase58String(fW)
847+ let gn = if ((cK > 0))
848+ then [ScriptTransfer(bm, cK, gm)]
837849 else nil
838- let dJ = ([ScriptTransfer(dp, gb, gh), StringEntry(aj(toString(dp), dm), bT(gd, ge, dT, gg, height, lastBlock.timestamp)), IntegerEntry(ac(), gg), IntegerEntry(ad(height, lastBlock.timestamp), gg)] ++ gi)
839- if ((dJ == dJ))
850+ let dM = ([ScriptTransfer(ds, gg, gm), StringEntry(aj(toString(ds), dp), bW(gi, gj, dW, gl, height, lastBlock.timestamp)), IntegerEntry(ac(), gl), IntegerEntry(ad(height, lastBlock.timestamp), gl)] ++ gn)
851+ if ((dM == dM))
840852 then {
841- let gj = invoke(aU, "burn", [dT], [AttachedPayment(dn, dT)])
842- if ((gj == gj))
853+ let go = invoke(aU, "burn", [dW], [AttachedPayment(dq, dW)])
854+ if ((go == go))
843855 then {
844- let gk = {
845- let gl = if ((this == bj))
856+ let gp = {
857+ let gq = if ((this == bm))
846858 then 0
847- else cH
848- let gm = if ((bo(fR) == by))
859+ else cK
860+ let gr = if ((br(fW) == bB))
849861 then true
850862 else false
851- if (gm)
852- then $Tuple2(-((ga + gl)), 0)
853- else $Tuple2(0, -((ga + gl)))
863+ if (gr)
864+ then $Tuple2(-((gf + gq)), 0)
865+ else $Tuple2(0, -((gf + gq)))
854866 }
855- let eZ = gk._1
856- let fa = gk._2
857- let gn = eY(eZ, fa, 0)
858- let go = gn._1
859- let eP = gn._2
860- let gp = fc(eX, eP)
861- if ((gp == gp))
862- then $Tuple2((dJ ++ go), gb)
867+ let fc = gp._1
868+ let fd = gp._2
869+ let gs = fb(fc, fd, 0)
870+ let gt = gs._1
871+ let eS = gs._2
872+ let gu = ff(fa, eS)
873+ if ((gu == gu))
874+ then $Tuple2((dM ++ gt), gg)
863875 else throw("Strict value is not equal to itself.")
864876 }
865877 else throw("Strict value is not equal to itself.")
866878 }
867879 else throw("Strict value is not equal to itself.")
868880 }
869881 else throw("Strict value is not equal to itself.")
870882 }
871883 }
872884 else throw("Strict value is not equal to itself.")
873885 }
874886
875887
876-func gq () = {
877- let gr = aS()
878- let aQ = getString(gr, aa())
888+func gv () = {
889+ let gw = aS()
890+ let aQ = getString(gw, aa())
879891 if ($isInstanceOf(aQ, "String"))
880892 then {
881893 let aV = aQ
882894 fromBase58String(aV)
883895 }
884896 else if ($isInstanceOf(aQ, "Unit"))
885897 then unit
886898 else throw("Match error")
887899 }
888900
889901
890-let gs = throw("Permission denied")
902+let gx = throw("Permission denied")
891903
892-func gt (cX) = {
893- let aQ = gq()
904+func gy (da) = {
905+ let aQ = gv()
894906 if ($isInstanceOf(aQ, "ByteVector"))
895907 then {
896- let gu = aQ
897- (cX.callerPublicKey == gu)
908+ let gz = aQ
909+ (da.callerPublicKey == gz)
898910 }
899911 else if ($isInstanceOf(aQ, "Unit"))
900- then (cX.caller == this)
912+ then (da.caller == this)
901913 else throw("Match error")
902914 }
903915
904916
905-func gv (cX) = {
906- let aQ = gq()
917+func gA (da) = {
918+ let aQ = gv()
907919 if ($isInstanceOf(aQ, "ByteVector"))
908920 then {
909- let gu = aQ
910- if ((cX.callerPublicKey == gu))
921+ let gz = aQ
922+ if ((da.callerPublicKey == gz))
911923 then true
912- else gs
924+ else gx
913925 }
914926 else if ($isInstanceOf(aQ, "Unit"))
915- then if ((cX.caller == this))
927+ then if ((da.caller == this))
916928 then true
917- else gs
929+ else gx
918930 else throw("Match error")
919931 }
920932
921933
922-func gw (gx,ez,gy) = {
923- let bs = bk()
924- let dr = bs[x]
925- let ds = bs[y]
926- let eA = g
927- let eC = parseBigIntValue(m)
928- let aR = (parseBigIntValue(bg) * eC)
929- let cJ = if ((gx == false))
930- then [(toBigInt(bX(dr)) + gy), toBigInt(bX(ds))]
931- else [(toBigInt(bX(ds)) + gy), toBigInt(bX(dr))]
932- let eB = cJ[0]
933- let aV = eB
934- let cM = (aR * eA)
935- let eD = (((((ez * ez) / (eB * eA)) * ez) * eC) / (cM * eA))
936- let eE = ((aV + ((ez * eC) / cM)) - ez)
937- func cV (cW,eF) = {
938- let gz = cW
939- let eH = gz._1
940- let dk = gz._2
941- if ((dk != unit))
942- then cW
934+func gB (gC,eC,gD) = {
935+ let bv = bn()
936+ let du = bv[x]
937+ let dv = bv[y]
938+ let eD = g
939+ let eF = parseBigIntValue(m)
940+ let aR = (parseBigIntValue(bj) * eF)
941+ let cM = if ((gC == false))
942+ then [(toBigInt(ca(du)) + gD), toBigInt(ca(dv))]
943+ else [(toBigInt(ca(dv)) + gD), toBigInt(ca(du))]
944+ let eE = cM[0]
945+ let aV = eE
946+ let cP = (aR * eD)
947+ let eG = (((((eC * eC) / (eE * eD)) * eC) * eF) / (cP * eD))
948+ let eH = ((aV + ((eC * eF) / cP)) - eC)
949+ func cY (cZ,eI) = {
950+ let gE = cZ
951+ let eK = gE._1
952+ let dn = gE._2
953+ if ((dn != unit))
954+ then cZ
943955 else {
944- let eI = (((eH * eH) + eD) / ((g * eH) + eE))
945- let eJ = Y((eI - value(eH)))
946- if ((f >= eJ))
947- then $Tuple2(eI, eF)
948- else $Tuple2(eI, unit)
956+ let eL = (((eK * eK) + eG) / ((g * eK) + eH))
957+ let eM = Y((eL - value(eK)))
958+ if ((f >= eM))
959+ then $Tuple2(eL, eI)
960+ else $Tuple2(eL, unit)
949961 }
950962 }
951963
952- let db = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
953- let gA = {
954- let dd = db
955- let de = size(dd)
956- let df = $Tuple2(ez, unit)
957- func dg (dh,di) = if ((di >= de))
958- then dh
959- else cV(dh, dd[di])
964+ let de = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
965+ let gF = {
966+ let dg = de
967+ let dh = size(dg)
968+ let di = $Tuple2(eC, unit)
969+ func dj (dk,dl) = if ((dl >= dh))
970+ then dk
971+ else cY(dk, dg[dl])
960972
961- func dj (dh,di) = if ((di >= de))
962- then dh
973+ func dm (dk,dl) = if ((dl >= dh))
974+ then dk
963975 else throw("List size exceeds 15")
964976
965- dj(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(dg(df, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
977+ dm(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(di, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
966978 }
967- let eH = gA._1
968- let dk = gA._2
969- if ((dk != unit))
970- then eH
971- else throw(("Y calculation error, Y = " + toString(eH)))
979+ let eK = gF._1
980+ let dn = gF._2
981+ if ((dn != unit))
982+ then eK
983+ else throw(("Y calculation error, Y = " + toString(eK)))
972984 }
973985
974986
975-func gB () = valueOrElse(getBoolean(aU, aH(toString(this))), false)
987+func gG () = valueOrElse(getBoolean(aU, aH(toString(this))), false)
976988
977989
978-@Callable(cX)
979-func calculateAmountOutForSwapREADONLY (gC,gx,gD) = {
980- let gE = if ((gx == false))
990+@Callable(da)
991+func calculateAmountOutForSwapREADONLY (gH,gC,gI) = {
992+ let gJ = if ((gC == false))
981993 then {
982- let gF = aW(this, al())
983- let gy = (toBigInt(bX(aW(this, ak()))) + toBigInt(gC))
984- $Tuple2(gF, gy)
994+ let gK = aW(this, al())
995+ let gD = (toBigInt(ca(aW(this, ak()))) + toBigInt(gH))
996+ $Tuple2(gK, gD)
985997 }
986998 else {
987- let gF = aW(this, ak())
988- let gy = (toBigInt(bX(aW(this, al()))) + toBigInt(gC))
989- $Tuple2(gF, gy)
999+ let gK = aW(this, ak())
1000+ let gD = (toBigInt(ca(aW(this, al()))) + toBigInt(gH))
1001+ $Tuple2(gK, gD)
9901002 }
991- let gF = gE._1
992- let gy = gE._2
993- let bs = bk()
994- let dr = bs[x]
995- let ds = bs[y]
996- let cJ = [toBigInt(bX(dr)), toBigInt(bX(ds))]
997- let ez = cI(cJ)
998- let eH = gw(gx, ez, toBigInt(gC))
999- let gG = ((toBigInt(bX(gF)) - eH) - toBigInt(1))
1000- let gH = max([0, toInt(gG)])
1001- let gI = if ((gx == false))
1002- then [((toBigInt(bX(dr)) + toBigInt(gC)) + toBigInt(gD)), (toBigInt(bX(ds)) - gG)]
1003- else [(toBigInt(bX(dr)) - gG), ((toBigInt(bX(ds)) + toBigInt(gC)) + toBigInt(gD))]
1004- let gJ = cI(gI)
1005- let ee = if ((gJ >= ez))
1003+ let gK = gJ._1
1004+ let gD = gJ._2
1005+ let bv = bn()
1006+ let du = bv[x]
1007+ let dv = bv[y]
1008+ let cM = [toBigInt(ca(du)), toBigInt(ca(dv))]
1009+ let eC = cL(cM)
1010+ let eK = gB(gC, eC, toBigInt(gH))
1011+ let gL = ((toBigInt(ca(gK)) - eK) - toBigInt(1))
1012+ let gM = max([0, toInt(gL)])
1013+ let gN = if ((gC == false))
1014+ then [((toBigInt(ca(du)) + toBigInt(gH)) + toBigInt(gI)), (toBigInt(ca(dv)) - gL)]
1015+ else [(toBigInt(ca(du)) - gL), ((toBigInt(ca(dv)) + toBigInt(gH)) + toBigInt(gI))]
1016+ let gO = cL(gN)
1017+ let eh = if ((gO >= eC))
10061018 then true
1007- else throw(makeString(["new D is fewer error", toString(ez), toString(gJ)], "__"))
1008- if ((ee == ee))
1009- then $Tuple2(nil, gH)
1019+ else throw(makeString(["new D is fewer error", toString(eC), toString(gO)], "__"))
1020+ if ((eh == eh))
1021+ then $Tuple2(nil, gM)
10101022 else throw("Strict value is not equal to itself.")
10111023 }
10121024
10131025
10141026
1015-@Callable(cX)
1016-func calculateAmountOutForSwapAndSendTokens (gC,gx,gK,gL,gD) = {
1017- let gM = {
1027+@Callable(da)
1028+func calculateAmountOutForSwapAndSendTokens (gH,gC,gP,gQ,gI) = {
1029+ let gR = {
10181030 let be = invoke(aU, "getSwapContractREADONLY", nil, nil)
10191031 if ($isInstanceOf(be, "String"))
10201032 then be
10211033 else throw(($getType(be) + " couldn't be cast to String"))
10221034 }
1023- let gN = {
1035+ let gS = {
10241036 let be = invoke(aU, "isPoolSwapDisabledREADONLY", [toString(this)], nil)
10251037 if ($isInstanceOf(be, "Boolean"))
10261038 then be
10271039 else throw(($getType(be) + " couldn't be cast to Boolean"))
10281040 }
1029- let gO = if (if (bh())
1041+ let gT = if (!(bi(da.caller)))
1042+ then if (if (bk())
1043+ then true
1044+ else (bz == t))
1045+ then true
1046+ else gS
1047+ else false
1048+ let gU = [if (if (!(gT))
10301049 then true
1031- else (bw == t))
1050+ else gy(da))
10321051 then true
1033- else gN
1034- let gP = [if (if (!(gO))
1052+ else ba("swap operation is blocked by admin"), if ((value(da.payments[0]).amount >= gH))
10351053 then true
1036- else gt(cX))
1037- then true
1038- else ba("swap operation is blocked by admin"), if ((value(cX.payments[0]).amount >= gC))
1039- then true
1040- else ba("Wrong amount"), if ((cX.caller == addressFromStringValue(gM)))
1054+ else ba("Wrong amount"), if ((da.caller == addressFromStringValue(gR)))
10411055 then true
10421056 else ba("Permission denied")]
1043- if ((gP == gP))
1057+ if ((gU == gU))
10441058 then {
1045- let fq = value(cX.payments[0])
1046- let gQ = bq(fq.assetId)
1047- let gR = if ((gx == false))
1059+ let ft = value(da.payments[0])
1060+ let gV = bt(ft.assetId)
1061+ let gW = if ((gC == false))
10481062 then {
1049- let gF = aW(this, al())
1050- let gy = (bX(gQ) - value(cX.payments[0]).amount)
1051- $Tuple2(gF, gy)
1063+ let gK = aW(this, al())
1064+ let gD = (ca(gV) - value(da.payments[0]).amount)
1065+ $Tuple2(gK, gD)
10521066 }
10531067 else {
1054- let gF = aW(this, ak())
1055- let gy = (bX(gQ) - value(cX.payments[0]).amount)
1056- $Tuple2(gF, gy)
1068+ let gK = aW(this, ak())
1069+ let gD = (ca(gV) - value(da.payments[0]).amount)
1070+ $Tuple2(gK, gD)
10571071 }
1058- let gF = gR._1
1059- let gy = gR._2
1060- let bs = bk()
1061- let dr = bs[x]
1062- let ds = bs[y]
1063- let cJ = if ((gx == false))
1064- then [(toBigInt(bX(dr)) - toBigInt(value(cX.payments[0]).amount)), toBigInt(bX(ds))]
1065- else [toBigInt(bX(dr)), (toBigInt(bX(ds)) - toBigInt(value(cX.payments[0]).amount))]
1066- let ez = cI(cJ)
1067- let eH = gw(gx, ez, toBigInt(0))
1068- let gG = ((toBigInt(bX(gF)) - eH) - toBigInt(1))
1069- let gH = max([0, toInt(gG)])
1070- let gS = if ((gH >= gK))
1072+ let gK = gW._1
1073+ let gD = gW._2
1074+ let bv = bn()
1075+ let du = bv[x]
1076+ let dv = bv[y]
1077+ let cM = if ((gC == false))
1078+ then [(toBigInt(ca(du)) - toBigInt(value(da.payments[0]).amount)), toBigInt(ca(dv))]
1079+ else [toBigInt(ca(du)), (toBigInt(ca(dv)) - toBigInt(value(da.payments[0]).amount))]
1080+ let eC = cL(cM)
1081+ let eK = gB(gC, eC, toBigInt(0))
1082+ let gL = ((toBigInt(ca(gK)) - eK) - toBigInt(1))
1083+ let gM = max([0, toInt(gL)])
1084+ let gX = if ((gM >= gP))
10711085 then true
10721086 else throw("Exchange result is fewer coins than expected")
1073- if ((gS == gS))
1087+ if ((gX == gX))
10741088 then {
1075- let gI = if ((gx == false))
1076- then [(toBigInt(bX(dr)) + toBigInt(gD)), (toBigInt(bX(ds)) - gG)]
1077- else [(toBigInt(bX(dr)) - gG), (toBigInt(bX(ds)) + toBigInt(gD))]
1078- let gJ = cI(gI)
1079- let ee = if ((gJ >= ez))
1089+ let gN = if ((gC == false))
1090+ then [(toBigInt(ca(du)) + toBigInt(gI)), (toBigInt(ca(dv)) - gL)]
1091+ else [(toBigInt(ca(du)) - gL), (toBigInt(ca(dv)) + toBigInt(gI))]
1092+ let gO = cL(gN)
1093+ let eh = if ((gO >= eC))
10801094 then true
10811095 else throw("new D is fewer error")
1082- if ((ee == ee))
1096+ if ((eh == eh))
10831097 then {
1084- let eZ = if (gx)
1085- then -(gH)
1086- else gD
1087- let fa = if (gx)
1088- then gD
1089- else -(gH)
1090- let go = eY(eZ, fa, 0)._1
1091- if ((go == go))
1092- then $Tuple2([ScriptTransfer(addressFromStringValue(gL), gH, bo(gF))], gH)
1098+ let fc = if (gC)
1099+ then -(gM)
1100+ else gI
1101+ let fd = if (gC)
1102+ then gI
1103+ else -(gM)
1104+ let gt = fb(fc, fd, 0)._1
1105+ if ((gt == gt))
1106+ then $Tuple2([ScriptTransfer(addressFromStringValue(gQ), gM, br(gK))], gM)
10931107 else throw("Strict value is not equal to itself.")
10941108 }
10951109 else throw("Strict value is not equal to itself.")
10961110 }
10971111 else throw("Strict value is not equal to itself.")
10981112 }
10991113 else throw("Strict value is not equal to itself.")
11001114 }
11011115
11021116
11031117
1104-@Callable(cX)
1118+@Callable(da)
11051119 func constructor (Z) = {
1106- let eD = gv(cX)
1107- if ((eD == eD))
1120+ let eG = gA(da)
1121+ if ((eG == eG))
11081122 then [StringEntry(Z(), Z)]
11091123 else throw("Strict value is not equal to itself.")
11101124 }
11111125
11121126
11131127
1114-@Callable(cX)
1115-func put (gT,gU) = {
1116- let gV = bC()
1117- let gW = valueOrErrorMessage(addressFromString(gV[D]), "Wr st addr")
1118- let gX = valueOrErrorMessage(addressFromString(gV[F]), "Wr sl addr")
1119- if ((0 > gT))
1128+@Callable(da)
1129+func put (gY,gZ) = {
1130+ let ha = bF()
1131+ let hb = valueOrErrorMessage(addressFromString(ha[D]), "Wr st addr")
1132+ let hc = valueOrErrorMessage(addressFromString(ha[F]), "Wr sl addr")
1133+ if ((0 > gY))
11201134 then throw("Wrong slippage")
1121- else if ((size(cX.payments) != 2))
1135+ else if ((size(da.payments) != 2))
11221136 then throw("2 pmnts expd")
11231137 else {
1124- let gY = toBigInt(value(cX.payments[0]).amount)
1125- let gZ = toBigInt(value(cX.payments[1]).amount)
1126- let eU = (toBigInt(bX(bq(by))) - gY)
1127- if ((eU == eU))
1138+ let hd = toBigInt(value(da.payments[0]).amount)
1139+ let he = toBigInt(value(da.payments[1]).amount)
1140+ let eX = (toBigInt(ca(bt(bB))) - hd)
1141+ if ((eX == eX))
11281142 then {
1129- let eV = (toBigInt(bX(bq(bz))) - gZ)
1130- if ((eV == eV))
1143+ let eY = (toBigInt(ca(bt(bC))) - he)
1144+ if ((eY == eY))
11311145 then {
1132- let eW = toBigInt(value(assetInfo(bx)).quantity)
1133- if ((eW == eW))
1146+ let eZ = toBigInt(value(assetInfo(bA)).quantity)
1147+ if ((eZ == eZ))
11341148 then {
1135- let eX = eQ(gY, gZ, toBigInt(0))
1136- if ((eX == eX))
1149+ let fa = eT(hd, he, toBigInt(0))
1150+ if ((fa == fa))
11371151 then {
1138- let ha = fr(toString(cX.caller), toBase58String(cX.transactionId), AttachedPayment(value(cX.payments[0]).assetId, value(cX.payments[0]).amount), cX.payments[1], gT, true, false, true, 0, "")
1139- let er = ha._2
1140- let hb = ha._7
1141- let dJ = ha._9
1142- let es = ha._10
1143- let et = ha._11
1144- let dr = ha._12
1145- let ds = ha._13
1146- let ed = invoke(aU, "emit", [er], nil)
1147- if ((ed == ed))
1152+ let hf = fv(toString(da.caller), toBase58String(da.transactionId), AttachedPayment(value(da.payments[0]).assetId, value(da.payments[0]).amount), da.payments[1], gY, true, false, true, 0, "")
1153+ let eu = hf._2
1154+ let hg = hf._7
1155+ let dM = hf._9
1156+ let ev = hf._10
1157+ let ew = hf._11
1158+ let du = hf._12
1159+ let dv = hf._13
1160+ let eg = invoke(aU, "emit", [eu], nil)
1161+ if ((eg == eg))
11481162 then {
1149- let hc = {
1150- let aQ = ed
1163+ let hh = {
1164+ let aQ = eg
11511165 if ($isInstanceOf(aQ, "Address"))
11521166 then {
1153- let hd = aQ
1154- invoke(hd, "emit", [er], nil)
1167+ let hi = aQ
1168+ invoke(hi, "emit", [eu], nil)
11551169 }
11561170 else unit
11571171 }
1158- if ((hc == hc))
1172+ if ((hh == hh))
11591173 then {
1160- let he = if ((es > 0))
1161- then invoke(gX, "put", nil, [AttachedPayment(dr, es)])
1174+ let hj = if ((ev > 0))
1175+ then invoke(hc, "put", nil, [AttachedPayment(du, ev)])
11621176 else nil
1163- if ((he == he))
1177+ if ((hj == hj))
11641178 then {
1165- let hf = if ((et > 0))
1166- then invoke(gX, "put", nil, [AttachedPayment(ds, et)])
1179+ let hk = if ((ew > 0))
1180+ then invoke(hc, "put", nil, [AttachedPayment(dv, ew)])
11671181 else nil
1168- if ((hf == hf))
1182+ if ((hk == hk))
11691183 then {
1170- let hg = if (gU)
1184+ let hl = if (gZ)
11711185 then {
1172- let hh = invoke(gW, "stake", nil, [AttachedPayment(hb, er)])
1173- if ((hh == hh))
1186+ let hm = invoke(hb, "stake", nil, [AttachedPayment(hg, eu)])
1187+ if ((hm == hm))
11741188 then nil
11751189 else throw("Strict value is not equal to itself.")
11761190 }
1177- else [ScriptTransfer(cX.caller, er, hb)]
1178- let hi = eY(0, 0, 0)
1179- let go = hi._1
1180- let eP = hi._2
1181- let hj = if ((eP >= eX))
1191+ else [ScriptTransfer(da.caller, eu, hg)]
1192+ let hn = fb(0, 0, 0)
1193+ let gt = hn._1
1194+ let eS = hn._2
1195+ let ho = if ((eS >= fa))
11821196 then true
1183- else ba(makeString(["updated DLp lower than current DLp", toString(eU), toString(eV), toString(eW), toString(eX), toString(eP), toString(es), toString(et)], " "))
1184- if ((hj == hj))
1197+ else ba(makeString(["updated DLp lower than current DLp", toString(eX), toString(eY), toString(eZ), toString(fa), toString(eS), toString(ev), toString(ew)], " "))
1198+ if ((ho == ho))
11851199 then {
1186- let hk = value(assetInfo(bx)).quantity
1187- if ((hk == hk))
1188- then ((dJ ++ hg) ++ go)
1200+ let hp = value(assetInfo(bA)).quantity
1201+ if ((hp == hp))
1202+ then ((dM ++ hl) ++ gt)
11891203 else throw("Strict value is not equal to itself.")
11901204 }
11911205 else throw("Strict value is not equal to itself.")
11921206 }
11931207 else throw("Strict value is not equal to itself.")
11941208 }
11951209 else throw("Strict value is not equal to itself.")
11961210 }
11971211 else throw("Strict value is not equal to itself.")
11981212 }
11991213 else throw("Strict value is not equal to itself.")
12001214 }
12011215 else throw("Strict value is not equal to itself.")
12021216 }
12031217 else throw("Strict value is not equal to itself.")
12041218 }
12051219 else throw("Strict value is not equal to itself.")
12061220 }
12071221 else throw("Strict value is not equal to itself.")
12081222 }
12091223 }
12101224
12111225
12121226
1213-@Callable(cX)
1214-func putOneTknV2 (fS,gU) = {
1215- let hl = {
1227+@Callable(da)
1228+func putOneTknV2 (fX,gZ) = {
1229+ let hq = {
12161230 let be = invoke(aU, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
12171231 if ($isInstanceOf(be, "Boolean"))
12181232 then be
12191233 else throw(($getType(be) + " couldn't be cast to Boolean"))
12201234 }
1221- let hm = if (if (if (bh())
1235+ let fz = if (!(bi(da.caller)))
1236+ then if (if (if (bk())
1237+ then true
1238+ else (bz == r))
1239+ then true
1240+ else (bz == t))
1241+ then true
1242+ else hq
1243+ else false
1244+ let gU = [if (if (!(fz))
12221245 then true
1223- else (bw == r))
1246+ else gy(da))
12241247 then true
1225- else (bw == t))
1226- then true
1227- else hl
1228- let gP = [if (if (!(hm))
1229- then true
1230- else gt(cX))
1231- then true
1232- else ba("put operation is blocked by admin"), if ((size(cX.payments) == 1))
1248+ else ba("put operation is blocked by admin"), if ((size(da.payments) == 1))
12331249 then true
12341250 else ba("exactly 1 payment are expected")]
1235- if ((gP == gP))
1251+ if ((gU == gU))
12361252 then {
1237- let dr = toBase58String(value(by))
1238- let ds = toBase58String(value(bz))
1239- let dq = bx
1240- let fW = bA
1241- let fX = bB
1242- let dp = if ((cX.caller == this))
1243- then cX.originCaller
1244- else cX.caller
1245- let fq = value(cX.payments[0])
1246- let dn = toBase58String(value(fq.assetId))
1247- let dT = fq.amount
1248- let eX = if ((fq.assetId == by))
1249- then eQ(toBigInt(dT), toBigInt(0), toBigInt(0))
1250- else eQ(toBigInt(0), toBigInt(dT), toBigInt(0))
1251- if ((eX == eX))
1253+ let du = toBase58String(value(bB))
1254+ let dv = toBase58String(value(bC))
1255+ let dt = bA
1256+ let gb = bD
1257+ let gc = bE
1258+ let ds = if ((da.caller == this))
1259+ then da.originCaller
1260+ else da.caller
1261+ let ft = value(da.payments[0])
1262+ let dq = toBase58String(value(ft.assetId))
1263+ let dW = ft.amount
1264+ let fa = if ((ft.assetId == bB))
1265+ then eT(toBigInt(dW), toBigInt(0), toBigInt(0))
1266+ else eT(toBigInt(0), toBigInt(dW), toBigInt(0))
1267+ if ((fa == fa))
12521268 then {
1253- let hn = fv(dT, dn, toString(dp), toBase58String(cX.transactionId), true)
1254- if ((hn == hn))
1269+ let hr = fA(dW, dq, toString(ds), toBase58String(da.transactionId), true)
1270+ if ((hr == hr))
12551271 then {
1256- let cH = hn._3
1257- let dJ = hn._2
1258- let ho = hn._1
1259- let er = if (if ((fS > 0))
1260- then (fS > ho)
1272+ let cK = hr._3
1273+ let dM = hr._2
1274+ let hs = hr._1
1275+ let eu = if (if ((fX > 0))
1276+ then (fX > hs)
12611277 else false)
1262- then ba(makeString(["amount to receive is less than ", toString(fS)], ""))
1263- else ho
1264- let ha = invoke(aU, "emit", [er], nil)
1265- if ((ha == ha))
1278+ then ba(makeString(["amount to receive is less than ", toString(fX)], ""))
1279+ else hs
1280+ let hf = invoke(aU, "emit", [eu], nil)
1281+ if ((hf == hf))
12661282 then {
1267- let hc = {
1268- let aQ = ha
1283+ let hh = {
1284+ let aQ = hf
12691285 if ($isInstanceOf(aQ, "Address"))
12701286 then {
1271- let hd = aQ
1272- invoke(hd, "emit", [er], nil)
1287+ let hi = aQ
1288+ invoke(hi, "emit", [eu], nil)
12731289 }
12741290 else unit
12751291 }
1276- if ((hc == hc))
1292+ if ((hh == hh))
12771293 then {
1278- let hg = if (gU)
1294+ let hl = if (gZ)
12791295 then {
1280- let hh = invoke(bE, "stakeFor", [toString(cX.caller)], [AttachedPayment(dq, er)])
1281- if ((hh == hh))
1296+ let hm = invoke(bH, "stakeFor", [toString(da.caller)], [AttachedPayment(dt, eu)])
1297+ if ((hm == hm))
12821298 then nil
12831299 else throw("Strict value is not equal to itself.")
12841300 }
1285- else [ScriptTransfer(cX.caller, er, dq)]
1286- let gi = if ((cH > 0))
1287- then [ScriptTransfer(bj, cH, fromBase58String(dn))]
1301+ else [ScriptTransfer(da.caller, eu, dt)]
1302+ let gn = if ((cK > 0))
1303+ then [ScriptTransfer(bm, cK, fromBase58String(dq))]
12881304 else nil
1289- let hp = if ((this == bj))
1305+ let ht = if ((this == bm))
12901306 then $Tuple2(0, 0)
12911307 else {
1292- let hq = if ((fq.assetId == by))
1308+ let hu = if ((ft.assetId == bB))
12931309 then true
12941310 else false
1295- if (hq)
1296- then $Tuple2(-(cH), 0)
1297- else $Tuple2(0, -(cH))
1311+ if (hu)
1312+ then $Tuple2(-(cK), 0)
1313+ else $Tuple2(0, -(cK))
12981314 }
1299- let eZ = hp._1
1300- let fa = hp._2
1301- let hr = eY(eZ, fa, 0)
1302- let go = hr._1
1303- let eP = hr._2
1304- let gp = fc(eX, eP)
1305- if ((gp == gp))
1306- then $Tuple2((((dJ ++ hg) ++ gi) ++ go), er)
1315+ let fc = ht._1
1316+ let fd = ht._2
1317+ let hv = fb(fc, fd, 0)
1318+ let gt = hv._1
1319+ let eS = hv._2
1320+ let gu = ff(fa, eS)
1321+ if ((gu == gu))
1322+ then $Tuple2((((dM ++ hl) ++ gn) ++ gt), eu)
13071323 else throw("Strict value is not equal to itself.")
13081324 }
13091325 else throw("Strict value is not equal to itself.")
13101326 }
13111327 else throw("Strict value is not equal to itself.")
13121328 }
13131329 else throw("Strict value is not equal to itself.")
13141330 }
13151331 else throw("Strict value is not equal to itself.")
13161332 }
13171333 else throw("Strict value is not equal to itself.")
13181334 }
13191335
13201336
13211337
1322-@Callable(cX)
1323-func putForFree (hs) = if ((0 > hs))
1338+@Callable(da)
1339+func putForFree (hw) = if ((0 > hw))
13241340 then throw("Wrong slpg")
1325- else if ((size(cX.payments) != 2))
1341+ else if ((size(da.payments) != 2))
13261342 then throw("2 pmnts expd")
13271343 else {
1328- let ht = fr(toString(cX.caller), toBase58String(cX.transactionId), AttachedPayment(value(cX.payments[0]).assetId, value(cX.payments[0]).amount), cX.payments[1], hs, false, false, true, 0, "")
1329- let dJ = ht._9
1330- let gY = toBigInt(value(cX.payments[0]).amount)
1331- let gZ = toBigInt(value(cX.payments[1]).amount)
1332- let eX = eQ(gY, gZ, toBigInt(0))
1333- if ((eX == eX))
1344+ let hx = fv(toString(da.caller), toBase58String(da.transactionId), AttachedPayment(value(da.payments[0]).assetId, value(da.payments[0]).amount), da.payments[1], hw, false, false, true, 0, "")
1345+ let dM = hx._9
1346+ let hd = toBigInt(value(da.payments[0]).amount)
1347+ let he = toBigInt(value(da.payments[1]).amount)
1348+ let fa = eT(hd, he, toBigInt(0))
1349+ if ((fa == fa))
13341350 then {
1335- let hu = eY(0, 0, 0)
1336- let go = hu._1
1337- let eP = hu._2
1338- let gp = fc(eX, eP)
1339- if ((gp == gp))
1340- then (dJ ++ go)
1351+ let hy = fb(0, 0, 0)
1352+ let gt = hy._1
1353+ let eS = hy._2
1354+ let gu = ff(fa, eS)
1355+ if ((gu == gu))
1356+ then (dM ++ gt)
13411357 else throw("Strict value is not equal to itself.")
13421358 }
13431359 else throw("Strict value is not equal to itself.")
13441360 }
13451361
13461362
13471363
1348-@Callable(cX)
1364+@Callable(da)
13491365 func get () = {
1350- let eX = eQ(toBigInt(0), toBigInt(0), toBigInt(0))
1351- if ((eX == eX))
1366+ let fa = eT(toBigInt(0), toBigInt(0), toBigInt(0))
1367+ if ((fa == fa))
13521368 then {
1353- let ed = fp(cX)
1354- let hv = ed._1
1355- let dI = ed._2
1356- let dT = ed._3
1357- let dn = ed._4
1358- let dJ = ed._5
1359- let eE = invoke(aU, "burn", [dT], [AttachedPayment(dn, dT)])
1360- if ((eE == eE))
1369+ let eg = fs(da)
1370+ let hz = eg._1
1371+ let dL = eg._2
1372+ let dW = eg._3
1373+ let dq = eg._4
1374+ let dM = eg._5
1375+ let eH = invoke(aU, "burn", [dW], [AttachedPayment(dq, dW)])
1376+ if ((eH == eH))
13611377 then {
1362- let hw = eY(-(hv), -(dI), 0)
1363- let go = hw._1
1364- let eP = hw._2
1365- let gp = fc(eX, eP)
1366- if ((gp == gp))
1367- then (dJ ++ go)
1378+ let hA = fb(-(hz), -(dL), 0)
1379+ let gt = hA._1
1380+ let eS = hA._2
1381+ let gu = ff(fa, eS)
1382+ if ((gu == gu))
1383+ then (dM ++ gt)
13681384 else throw("Strict value is not equal to itself.")
13691385 }
13701386 else throw("Strict value is not equal to itself.")
13711387 }
13721388 else throw("Strict value is not equal to itself.")
13731389 }
13741390
13751391
13761392
1377-@Callable(cX)
1378-func getOneTknV2 (fR,fS) = {
1379- let hl = {
1393+@Callable(da)
1394+func getOneTknV2 (fW,fX) = {
1395+ let hq = {
13801396 let be = invoke(aU, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
13811397 if ($isInstanceOf(be, "Boolean"))
13821398 then be
13831399 else throw(($getType(be) + " couldn't be cast to Boolean"))
13841400 }
1385- let hx = if (if (bh())
1401+ let fu = if (!(bi(da.caller)))
1402+ then if (if (bk())
1403+ then true
1404+ else (bz == t))
1405+ then true
1406+ else hq
1407+ else false
1408+ let gU = [if (if (!(fu))
13861409 then true
1387- else (bw == t))
1410+ else gy(da))
13881411 then true
1389- else hl
1390- let gP = [if (if (!(hx))
1391- then true
1392- else gt(cX))
1393- then true
1394- else ba("get operation is blocked by admin"), if ((size(cX.payments) == 1))
1412+ else ba("get operation is blocked by admin"), if ((size(da.payments) == 1))
13951413 then true
13961414 else ba("exactly 1 payment are expected")]
1397- if ((gP == gP))
1415+ if ((gU == gU))
13981416 then {
1399- let hy = fQ(fR, fS, cX.payments, cX.caller, cX.originCaller, cX.transactionId)
1400- let dJ = hy._1
1401- let gb = hy._2
1402- $Tuple2(dJ, gb)
1417+ let hB = fV(fW, fX, da.payments, da.caller, da.originCaller, da.transactionId)
1418+ let dM = hB._1
1419+ let gg = hB._2
1420+ $Tuple2(dM, gg)
14031421 }
14041422 else throw("Strict value is not equal to itself.")
14051423 }
14061424
14071425
14081426
1409-@Callable(cX)
1427+@Callable(da)
14101428 func refreshDLp () = {
1411- let hz = valueOrElse(getInteger(at), 0)
1412- let hA = if (((height - hz) >= aw))
1429+ let hC = valueOrElse(getInteger(at), 0)
1430+ let hD = if (((height - hC) >= aw))
14131431 then unit
14141432 else ba(makeString([toString(aw), " blocks have not passed since the previous call"], ""))
1415- if ((hA == hA))
1433+ if ((hD == hD))
14161434 then {
1417- let fj = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, as), "0")), bc("invalid dLp"))
1418- let hB = eY(0, 0, 0)
1419- let hC = hB._1
1420- let eP = hB._2
1421- let fb = if ((fj != eP))
1422- then hC
1435+ let fm = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, as), "0")), bc("invalid dLp"))
1436+ let hE = fb(0, 0, 0)
1437+ let hF = hE._1
1438+ let eS = hE._2
1439+ let fe = if ((fm != eS))
1440+ then hF
14231441 else ba("nothing to refresh")
1424- $Tuple2(fb, toString(eP))
1442+ $Tuple2(fe, toString(eS))
14251443 }
14261444 else throw("Strict value is not equal to itself.")
14271445 }
14281446
14291447
14301448
1431-@Callable(cX)
1432-func getOneTknV2READONLY (fR,hD) = {
1433- let dr = toBase58String(value(by))
1434- let ds = toBase58String(value(bz))
1435- let dq = toBase58String(value(bx))
1436- let cJ = [toBigInt(bX(dr)), toBigInt(bX(ds))]
1437- let eO = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(dq)), "invalid lp asset").quantity)
1438- let cl = cI(cJ)
1439- let ck = (cl - fraction(toBigInt(hD), cl, eO))
1440- let hE = if ((fR == dr))
1449+@Callable(da)
1450+func getOneTknV2READONLY (fW,hG) = {
1451+ let du = toBase58String(value(bB))
1452+ let dv = toBase58String(value(bC))
1453+ let dt = toBase58String(value(bA))
1454+ let cM = [toBigInt(ca(du)), toBigInt(ca(dv))]
1455+ let eR = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(dt)), "invalid lp asset").quantity)
1456+ let co = cL(cM)
1457+ let cn = (co - fraction(toBigInt(hG), co, eR))
1458+ let hH = if ((fW == du))
14411459 then 0
1442- else if ((fR == ds))
1460+ else if ((fW == dv))
14431461 then 1
14441462 else throw("invalid out asset id")
1445- let hF = ey(cJ, hE, ck)
1446- let gG = (cJ[hE] - hF)
1447- let gH = max([0, toInt((gG - f))])
1448- let hG = cF(gH, bf)
1449- let ga = hG._1
1450- let cH = hG._2
1451- $Tuple2(nil, $Tuple2(ga, cH))
1463+ let hI = eB(cM, hH, cn)
1464+ let gL = (cM[hH] - hI)
1465+ let gM = max([0, toInt((gL - f))])
1466+ let hJ = cI(gM, bf)
1467+ let gf = hJ._1
1468+ let cK = hJ._2
1469+ $Tuple2(nil, $Tuple2(gf, cK))
14521470 }
14531471
14541472
14551473
1456-@Callable(cX)
1457-func getOneTknV2WithBonusREADONLY (fR,hD) = {
1458- let dr = toBase58String(value(by))
1459- let ds = toBase58String(value(bz))
1460- let dq = toBase58String(value(bx))
1461- let dx = bX(dr)
1462- let dz = bX(ds)
1463- let hH = {
1464- let be = invoke(this, "getOneTknV2READONLY", [fR, hD], nil)
1474+@Callable(da)
1475+func getOneTknV2WithBonusREADONLY (fW,hG) = {
1476+ let du = toBase58String(value(bB))
1477+ let dv = toBase58String(value(bC))
1478+ let dt = toBase58String(value(bA))
1479+ let dA = ca(du)
1480+ let dC = ca(dv)
1481+ let hK = {
1482+ let be = invoke(this, "getOneTknV2READONLY", [fW, hG], nil)
14651483 if ($isInstanceOf(be, "(Int, Int)"))
14661484 then be
14671485 else throw(($getType(be) + " couldn't be cast to (Int, Int)"))
14681486 }
1469- let ga = hH._1
1470- let cH = hH._2
1471- let ed = dl("", dq, hD, this)
1472- let dH = ed._1
1473- let dI = ed._2
1474- let hI = (dH + dI)
1475- let fP = if ((hI == 0))
1476- then if ((ga == 0))
1487+ let gf = hK._1
1488+ let cK = hK._2
1489+ let eg = do("", dt, hG, this)
1490+ let dK = eg._1
1491+ let dL = eg._2
1492+ let hL = (dK + dL)
1493+ let fU = if ((hL == 0))
1494+ then if ((gf == 0))
14771495 then 0
14781496 else throw("bonus calculation error")
1479- else fraction((ga - hI), a, hI)
1480- $Tuple2(nil, $Tuple3(ga, cH, fP))
1497+ else fraction((gf - hL), a, hL)
1498+ $Tuple2(nil, $Tuple3(gf, cK, fU))
14811499 }
14821500
14831501
14841502
1485-@Callable(cX)
1486-func getNoLess (hJ,hK) = {
1487- let ed = fp(cX)
1488- let dH = ed._1
1489- let dI = ed._2
1490- let dT = ed._3
1491- let dn = ed._4
1492- let dJ = ed._5
1493- if ((hJ > dH))
1494- then throw(((("Failed: " + toString(dH)) + " < ") + toString(hJ)))
1495- else if ((hK > dI))
1496- then throw(((("Failed: " + toString(dI)) + " < ") + toString(hK)))
1503+@Callable(da)
1504+func getNoLess (hM,hN) = {
1505+ let eg = fs(da)
1506+ let dK = eg._1
1507+ let dL = eg._2
1508+ let dW = eg._3
1509+ let dq = eg._4
1510+ let dM = eg._5
1511+ if ((hM > dK))
1512+ then throw(((("Failed: " + toString(dK)) + " < ") + toString(hM)))
1513+ else if ((hN > dL))
1514+ then throw(((("Failed: " + toString(dL)) + " < ") + toString(hN)))
14971515 else {
1498- let eX = eQ(toBigInt(0), toBigInt(0), toBigInt(0))
1499- if ((eX == eX))
1516+ let fa = eT(toBigInt(0), toBigInt(0), toBigInt(0))
1517+ if ((fa == fa))
15001518 then {
1501- let hL = invoke(aU, "burn", [dT], [AttachedPayment(dn, dT)])
1502- if ((hL == hL))
1519+ let hO = invoke(aU, "burn", [dW], [AttachedPayment(dq, dW)])
1520+ if ((hO == hO))
15031521 then {
1504- let hM = eY(-(dH), -(dI), 0)
1505- let go = hM._1
1506- let eP = hM._2
1507- let gp = fc(eX, eP)
1508- if ((gp == gp))
1509- then (dJ ++ go)
1522+ let hP = fb(-(dK), -(dL), 0)
1523+ let gt = hP._1
1524+ let eS = hP._2
1525+ let gu = ff(fa, eS)
1526+ if ((gu == gu))
1527+ then (dM ++ gt)
15101528 else throw("Strict value is not equal to itself.")
15111529 }
15121530 else throw("Strict value is not equal to itself.")
15131531 }
15141532 else throw("Strict value is not equal to itself.")
15151533 }
15161534 }
15171535
15181536
15191537
1520-@Callable(cX)
1521-func unstakeAndGet (cG) = {
1522- let hN = if ((size(cX.payments) != 0))
1538+@Callable(da)
1539+func unstakeAndGet (cJ) = {
1540+ let hQ = if ((size(da.payments) != 0))
15231541 then throw("No pmnts expd")
15241542 else true
1525- if ((hN == hN))
1543+ if ((hQ == hQ))
15261544 then {
1527- let hO = bC()
1528- let hb = bx
1529- let hP = valueOrErrorMessage(addressFromString(hO[D]), "Wr st addr")
1530- let eX = eQ(toBigInt(0), toBigInt(0), toBigInt(0))
1531- if ((eX == eX))
1545+ let hR = bF()
1546+ let hg = bA
1547+ let hS = valueOrErrorMessage(addressFromString(hR[D]), "Wr st addr")
1548+ let fa = eT(toBigInt(0), toBigInt(0), toBigInt(0))
1549+ if ((fa == fa))
15321550 then {
1533- let hQ = invoke(hP, "unstake", [toBase58String(hb), cG], nil)
1534- if ((hQ == hQ))
1551+ let hT = invoke(hS, "unstake", [toBase58String(hg), cJ], nil)
1552+ if ((hT == hT))
15351553 then {
1536- let ed = dl(toBase58String(cX.transactionId), toBase58String(hb), cG, cX.caller)
1537- let dH = ed._1
1538- let dI = ed._2
1539- let dv = parseIntValue(ed._9)
1540- let dJ = ed._10
1541- let hR = if (if (bh())
1542- then true
1543- else (dv == t))
1544- then throw(("Blocked: " + toString(dv)))
1554+ let eg = do(toBase58String(da.transactionId), toBase58String(hg), cJ, da.caller)
1555+ let dK = eg._1
1556+ let dL = eg._2
1557+ let dy = parseIntValue(eg._9)
1558+ let dM = eg._10
1559+ let fu = if (!(bi(da.caller)))
1560+ then if (bk())
1561+ then true
1562+ else (bz == t)
1563+ else false
1564+ let hU = if (fu)
1565+ then throw(("Blocked: " + toString(dy)))
15451566 else true
1546- if ((hR == hR))
1567+ if ((hU == hU))
15471568 then {
1548- let hS = invoke(aU, "burn", [cG], [AttachedPayment(hb, cG)])
1549- if ((hS == hS))
1569+ let hV = invoke(aU, "burn", [cJ], [AttachedPayment(hg, cJ)])
1570+ if ((hV == hV))
15501571 then {
1551- let hT = eY(-(dH), -(dI), 0)
1552- let go = hT._1
1553- let eP = hT._2
1554- let gp = fc(eX, eP)
1555- if ((gp == gp))
1556- then (dJ ++ go)
1572+ let hW = fb(-(dK), -(dL), 0)
1573+ let gt = hW._1
1574+ let eS = hW._2
1575+ let gu = ff(fa, eS)
1576+ if ((gu == gu))
1577+ then (dM ++ gt)
15571578 else throw("Strict value is not equal to itself.")
15581579 }
15591580 else throw("Strict value is not equal to itself.")
15601581 }
15611582 else throw("Strict value is not equal to itself.")
15621583 }
15631584 else throw("Strict value is not equal to itself.")
15641585 }
15651586 else throw("Strict value is not equal to itself.")
15661587 }
15671588 else throw("Strict value is not equal to itself.")
15681589 }
15691590
15701591
15711592
1572-@Callable(cX)
1573-func unstakeAndGetNoLess (hU,hV,hK) = {
1574- let hx = if (bh())
1593+@Callable(da)
1594+func unstakeAndGetNoLess (hX,hY,hN) = {
1595+ let fu = if (!(bi(da.caller)))
1596+ then if (bk())
1597+ then true
1598+ else (bz == t)
1599+ else false
1600+ let gU = [if (!(fu))
15751601 then true
1576- else (bw == t)
1577- let gP = [if (!(hx))
1578- then true
1579- else throw("get operation is blocked by admin"), if ((size(cX.payments) == 0))
1602+ else throw("get operation is blocked by admin"), if ((size(da.payments) == 0))
15801603 then true
15811604 else throw("no payments are expected")]
1582- if ((gP == gP))
1605+ if ((gU == gU))
15831606 then {
1584- let eX = eQ(toBigInt(0), toBigInt(0), toBigInt(0))
1585- if ((eX == eX))
1607+ let fa = eT(toBigInt(0), toBigInt(0), toBigInt(0))
1608+ if ((fa == fa))
15861609 then {
1587- let hQ = invoke(bE, "unstake", [toBase58String(bx), hU], nil)
1588- if ((hQ == hQ))
1610+ let hT = invoke(bH, "unstake", [toBase58String(bA), hX], nil)
1611+ if ((hT == hT))
15891612 then {
1590- let hW = dl(toBase58String(cX.transactionId), toBase58String(bx), hU, cX.caller)
1591- let dH = hW._1
1592- let dI = hW._2
1593- let dJ = hW._10
1594- let hX = [if ((dH >= hV))
1613+ let hZ = do(toBase58String(da.transactionId), toBase58String(bA), hX, da.caller)
1614+ let dK = hZ._1
1615+ let dL = hZ._2
1616+ let dM = hZ._10
1617+ let ia = [if ((dK >= hY))
15951618 then true
1596- else throw(makeString(["amount asset amount to receive is less than ", toString(hV)], "")), if ((dI >= hK))
1619+ else throw(makeString(["amount asset amount to receive is less than ", toString(hY)], "")), if ((dL >= hN))
15971620 then true
1598- else throw(makeString(["price asset amount to receive is less than ", toString(hK)], ""))]
1599- if ((hX == hX))
1621+ else throw(makeString(["price asset amount to receive is less than ", toString(hN)], ""))]
1622+ if ((ia == ia))
16001623 then {
1601- let hL = invoke(aU, "burn", [hU], [AttachedPayment(bx, hU)])
1602- if ((hL == hL))
1624+ let hO = invoke(aU, "burn", [hX], [AttachedPayment(bA, hX)])
1625+ if ((hO == hO))
16031626 then {
1604- let hY = eY(-(dH), -(dI), 0)
1605- let go = hY._1
1606- let eP = hY._2
1607- let gp = fc(eX, eP)
1608- if ((gp == gp))
1609- then (dJ ++ go)
1627+ let ib = fb(-(dK), -(dL), 0)
1628+ let gt = ib._1
1629+ let eS = ib._2
1630+ let gu = ff(fa, eS)
1631+ if ((gu == gu))
1632+ then (dM ++ gt)
16101633 else throw("Strict value is not equal to itself.")
16111634 }
16121635 else throw("Strict value is not equal to itself.")
16131636 }
16141637 else throw("Strict value is not equal to itself.")
16151638 }
16161639 else throw("Strict value is not equal to itself.")
16171640 }
16181641 else throw("Strict value is not equal to itself.")
16191642 }
16201643 else throw("Strict value is not equal to itself.")
16211644 }
16221645
16231646
16241647
1625-@Callable(cX)
1626-func unstakeAndGetOneTknV2 (hU,fR,fS) = {
1627- let hl = {
1648+@Callable(da)
1649+func unstakeAndGetOneTknV2 (hX,fW,fX) = {
1650+ let hq = {
16281651 let be = invoke(aU, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
16291652 if ($isInstanceOf(be, "Boolean"))
16301653 then be
16311654 else throw(($getType(be) + " couldn't be cast to Boolean"))
16321655 }
1633- let hx = if (if (bh())
1656+ let fu = if (!(bi(da.caller)))
1657+ then if (if (bk())
1658+ then true
1659+ else (bz == t))
1660+ then true
1661+ else hq
1662+ else false
1663+ let gU = [if (if (!(fu))
16341664 then true
1635- else (bw == t))
1665+ else gy(da))
16361666 then true
1637- else hl
1638- let gP = [if (if (!(hx))
1639- then true
1640- else gt(cX))
1641- then true
1642- else ba("get operation is blocked by admin"), if ((size(cX.payments) == 0))
1667+ else ba("get operation is blocked by admin"), if ((size(da.payments) == 0))
16431668 then true
16441669 else ba("no payments are expected")]
1645- if ((gP == gP))
1670+ if ((gU == gU))
16461671 then {
1647- let hO = bC()
1648- let hb = bx
1649- let hP = valueOrErrorMessage(addressFromString(hO[D]), "Wr st addr")
1650- let dp = cX.caller
1651- let hZ = this
1652- let hQ = invoke(hP, "unstakeINTERNAL", [hb, hU, dp.bytes, hZ.bytes], nil)
1653- if ((hQ == hQ))
1672+ let hR = bF()
1673+ let hg = bA
1674+ let hS = valueOrErrorMessage(addressFromString(hR[D]), "Wr st addr")
1675+ let ds = da.caller
1676+ let ic = this
1677+ let hT = invoke(hS, "unstakeINTERNAL", [hg, hX, ds.bytes, ic.bytes], nil)
1678+ if ((hT == hT))
16541679 then {
1655- let ia = fQ(fR, fS, [AttachedPayment(hb, hU)], cX.caller, cX.originCaller, cX.transactionId)
1656- let dJ = ia._1
1657- let gb = ia._2
1658- $Tuple2(dJ, gb)
1680+ let id = fV(fW, fX, [AttachedPayment(hg, hX)], da.caller, da.originCaller, da.transactionId)
1681+ let dM = id._1
1682+ let gg = id._2
1683+ $Tuple2(dM, gg)
16591684 }
16601685 else throw("Strict value is not equal to itself.")
16611686 }
16621687 else throw("Strict value is not equal to itself.")
16631688 }
16641689
16651690
16661691
1667-@Callable(cX)
1668-func putOneTknV2WithBonusREADONLY (ib,ic) = {
1669- let id = fv(ib, ic, "", "", true)
1670- let fK = id._1
1671- let dJ = id._2
1672- let cH = id._3
1673- let fP = id._4
1674- $Tuple2(nil, $Tuple3(fK, cH, fP))
1692+@Callable(da)
1693+func putOneTknV2WithBonusREADONLY (ie,if) = {
1694+ let ig = fA(ie, if, "", "", true)
1695+ let fP = ig._1
1696+ let dM = ig._2
1697+ let cK = ig._3
1698+ let fU = ig._4
1699+ $Tuple2(nil, $Tuple3(fP, cK, fU))
16751700 }
16761701
16771702
16781703
1679-@Callable(cX)
1680-func putOneTknV2WithoutTakeFeeREADONLY (ib,ic) = {
1681- let ie = fv(ib, ic, "", "", false)
1682- let fK = ie._1
1683- let dJ = ie._2
1684- let cH = ie._3
1685- let fP = ie._4
1686- $Tuple2(nil, $Tuple3(fK, cH, fP))
1704+@Callable(da)
1705+func putOneTknV2WithoutTakeFeeREADONLY (ie,if) = {
1706+ let ih = fA(ie, if, "", "", false)
1707+ let fP = ih._1
1708+ let dM = ih._2
1709+ let cK = ih._3
1710+ let fU = ih._4
1711+ $Tuple2(nil, $Tuple3(fP, cK, fU))
16871712 }
16881713
16891714
16901715
1691-@Callable(cX)
1692-func activate (if,ig) = if ((toString(cX.caller) != toString(aU)))
1716+@Callable(da)
1717+func activate (ii,ij) = if ((toString(da.caller) != toString(aU)))
16931718 then throw("denied")
1694- else $Tuple2([StringEntry(ak(), if), StringEntry(al(), ig), StringEntry(am(), toString(l)), StringEntry(an(height), toString(l))], "success")
1719+ else $Tuple2([StringEntry(ak(), ii), StringEntry(al(), ij), StringEntry(am(), toString(l)), StringEntry(an(height), toString(l))], "success")
16951720
16961721
16971722
1698-@Callable(cX)
1699-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, bk())
1723+@Callable(da)
1724+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, bn())
17001725
17011726
17021727
1703-@Callable(cX)
1704-func getAccBalanceWrapperREADONLY (bY) = $Tuple2(nil, bX(bY))
1728+@Callable(da)
1729+func getAccBalanceWrapperREADONLY (cb) = $Tuple2(nil, ca(cb))
17051730
17061731
17071732
1708-@Callable(cX)
1709-func calcPricesWrapperREADONLY (cr,cs,cw) = {
1710- let ih = cv(cr, cs, cw)
1711- $Tuple2(nil, [toString(ih[0]), toString(ih[1]), toString(ih[2])])
1733+@Callable(da)
1734+func calcPricesWrapperREADONLY (cu,cv,cz) = {
1735+ let ik = cy(cu, cv, cz)
1736+ $Tuple2(nil, [toString(ik[0]), toString(ik[1]), toString(ik[2])])
17121737 }
17131738
17141739
17151740
1716-@Callable(cX)
1717-func fromX18WrapperREADONLY (N,ii) = $Tuple2(nil, M(parseBigIntValue(N), ii))
1741+@Callable(da)
1742+func fromX18WrapperREADONLY (N,il) = $Tuple2(nil, M(parseBigIntValue(N), il))
17181743
17191744
17201745
1721-@Callable(cX)
1746+@Callable(da)
17221747 func toX18WrapperREADONLY (J,K) = $Tuple2(nil, toString(I(J, K)))
17231748
17241749
17251750
1726-@Callable(cX)
1727-func calcPriceBigIntWrapperREADONLY (ca,cb) = $Tuple2(nil, toString(bZ(parseBigIntValue(ca), parseBigIntValue(cb))))
1751+@Callable(da)
1752+func calcPriceBigIntWrapperREADONLY (cd,ce) = $Tuple2(nil, toString(cc(parseBigIntValue(cd), parseBigIntValue(ce))))
17281753
17291754
17301755
1731-@Callable(cX)
1732-func estimatePutOperationWrapperREADONLY (dm,cg,dL,dM,dN,dO,ij,dP,dQ) = $Tuple2(nil, dK(dm, cg, dL, dM, dN, dO, ij, dP, dQ, true, false, 0, ""))
1756+@Callable(da)
1757+func estimatePutOperationWrapperREADONLY (dp,cj,dO,dP,dQ,dR,im,dS,dT) = $Tuple2(nil, dN(dp, cj, dO, dP, dQ, dR, im, dS, dT, true, false, 0, ""))
17331758
17341759
17351760
1736-@Callable(cX)
1737-func estimateGetOperationWrapperREADONLY (dm,ik,do,ij) = {
1738- let ed = dl(dm, ik, do, addressFromStringValue(ij))
1739- $Tuple2(nil, $Tuple10(ed._1, ed._2, ed._3, ed._4, ed._5, ed._6, ed._7, toString(ed._8), ed._9, ed._10))
1761+@Callable(da)
1762+func estimateGetOperationWrapperREADONLY (dp,in,dr,im) = {
1763+ let eg = do(dp, in, dr, addressFromStringValue(im))
1764+ $Tuple2(nil, $Tuple10(eg._1, eg._2, eg._3, eg._4, eg._5, eg._6, eg._7, toString(eg._8), eg._9, eg._10))
17401765 }
17411766
17421767
17431768
1744-@Callable(cX)
1769+@Callable(da)
17451770 func changeAmp () = {
1746- let il = invoke(aU, "getChangeAmpConfigREADONLY", [toString(this)], nil)
1747- let im = {
1748- let aQ = il
1771+ let io = invoke(aU, "getChangeAmpConfigREADONLY", [toString(this)], nil)
1772+ let ip = {
1773+ let aQ = io
17491774 if ($isInstanceOf(aQ, "List[Any]"))
17501775 then {
1751- let in = aQ
1776+ let iq = aQ
17521777 $Tuple3({
1753- let be = in[0]
1778+ let be = iq[0]
17541779 if ($isInstanceOf(be, "Int"))
17551780 then be
17561781 else throw(($getType(be) + " couldn't be cast to Int"))
17571782 }, {
1758- let be = in[1]
1783+ let be = iq[1]
17591784 if ($isInstanceOf(be, "Int"))
17601785 then be
17611786 else throw(($getType(be) + " couldn't be cast to Int"))
17621787 }, {
1763- let be = in[2]
1788+ let be = iq[2]
17641789 if ($isInstanceOf(be, "Int"))
17651790 then be
17661791 else throw(($getType(be) + " couldn't be cast to Int"))
17671792 })
17681793 }
17691794 else ba("invalid entry type")
17701795 }
1771- let io = im._1
1772- let ip = im._2
1773- let iq = im._3
1774- let ir = parseIntValue(getStringValue(am()))
1775- let is = (ir + ip)
1776- let it = if ((0 > ip))
1777- then if ((iq > is))
1778- then iq
1779- else is
1780- else if ((is > iq))
1781- then iq
1782- else is
1783- let iu = valueOrElse(getInteger(ap()), 0)
1784- let iv = (iu + io)
1785- let gP = [if ((height > iv))
1796+ let ir = ip._1
1797+ let is = ip._2
1798+ let it = ip._3
1799+ let iu = parseIntValue(getStringValue(am()))
1800+ let iv = (iu + is)
1801+ let iw = if ((0 > is))
1802+ then if ((it > iv))
1803+ then it
1804+ else iv
1805+ else if ((iv > it))
1806+ then it
1807+ else iv
1808+ let ix = valueOrElse(getInteger(ap()), 0)
1809+ let iy = (ix + ir)
1810+ let gU = [if ((height > iy))
17861811 then true
1787- else ba("try again in few blocks"), if ((ir != it))
1812+ else ba("try again in few blocks"), if ((iu != iw))
17881813 then true
17891814 else ba("already reached target")]
1790- if ((gP == gP))
1791- then [IntegerEntry(ap(), height), StringEntry(am(), toString(it)), StringEntry(an(height), toString(it))]
1815+ if ((gU == gU))
1816+ then [IntegerEntry(ap(), height), StringEntry(am(), toString(iw)), StringEntry(an(height), toString(iw))]
17921817 else throw("Strict value is not equal to itself.")
17931818 }
17941819
17951820
1796-@Verifier(iw)
1797-func ix () = {
1798- let iy = {
1799- let aQ = gq()
1821+@Verifier(iz)
1822+func iA () = {
1823+ let iB = {
1824+ let aQ = gv()
18001825 if ($isInstanceOf(aQ, "ByteVector"))
18011826 then {
1802- let gu = aQ
1803- gu
1827+ let gz = aQ
1828+ gz
18041829 }
18051830 else if ($isInstanceOf(aQ, "Unit"))
1806- then iw.senderPublicKey
1831+ then iz.senderPublicKey
18071832 else throw("Match error")
18081833 }
1809- let aQ = iw
1834+ let aQ = iz
18101835 if ($isInstanceOf(aQ, "Order"))
18111836 then {
1812- let ff = aQ
1813- let iz = bi()
1814- let iA = if (gB())
1837+ let fi = aQ
1838+ let iC = bl()
1839+ let iD = if (gG())
18151840 then $Tuple2(true, "")
1816- else fe(ff)
1817- let aK = iA._1
1818- let aL = iA._2
1819- let aM = sigVerify(ff.bodyBytes, ff.proofs[0], ff.senderPublicKey)
1820- let aN = sigVerify(ff.bodyBytes, ff.proofs[1], iz)
1841+ else fh(fi)
1842+ let aK = iD._1
1843+ let aL = iD._2
1844+ let aM = sigVerify(fi.bodyBytes, fi.proofs[0], fi.senderPublicKey)
1845+ let aN = sigVerify(fi.bodyBytes, fi.proofs[1], iC)
18211846 if (if (if (aK)
18221847 then aM
18231848 else false)
18241849 then aN
18251850 else false)
18261851 then true
18271852 else aJ(aK, aL, aM, aN)
18281853 }
18291854 else if ($isInstanceOf(aQ, "SetScriptTransaction"))
18301855 then {
18311856 let aV = aQ
1832- if (sigVerify(iw.bodyBytes, iw.proofs[0], iy))
1857+ if (sigVerify(iz.bodyBytes, iz.proofs[0], iB))
18331858 then true
18341859 else {
1835- let iB = blake2b256(value(aV.script))
1836- let iC = fromBase64String(value(getString(aU, aF())))
1837- let iD = scriptHash(this)
1838- if ((iC == iB))
1839- then (iD != iB)
1860+ let iE = blake2b256(value(aV.script))
1861+ let iF = fromBase64String(value(getString(aU, aF())))
1862+ let iG = scriptHash(this)
1863+ if ((iF == iE))
1864+ then (iG != iE)
18401865 else false
18411866 }
18421867 }
1843- else sigVerify(iw.bodyBytes, iw.proofs[0], iy)
1868+ else sigVerify(iz.bodyBytes, iz.proofs[0], iB)
18441869 }
18451870

github/deemru/w8io/6500d08 
633.16 ms