tx · 5Znap2GQwrJc64tMUKeB3KA9Ky9fEpDraGWj99f1pU5a

3N41jx367r3HSFV68JfLUia22bvgwfPiU8J:  -0.04500000 Waves

2023.08.03 19:37 [2694651] smart account 3N41jx367r3HSFV68JfLUia22bvgwfPiU8J > SELF 0.00000000 Waves

{ "type": 13, "id": "5Znap2GQwrJc64tMUKeB3KA9Ky9fEpDraGWj99f1pU5a", "fee": 4500000, "feeAssetId": null, "timestamp": 1691080639577, "version": 2, "chainId": 84, "sender": "3N41jx367r3HSFV68JfLUia22bvgwfPiU8J", "senderPublicKey": "51cTRWaywGzzBXaFt4MRPswto8Rz3Wwa1uTbaSaXqXTk", "proofs": [ "4Fg5t11xvY4E31oA4qJ9KrTiEb2BTRt7ketkzDmn3UxR8YG5ioWcNNznEnTGws1VGCiQL4LUD1M7Nrq363Sowe2g", "5HYdhfCkirVnu7KteKNRgYeGUT2VBi1krR799xYitwCbzu8A3GGf1HAB6yzoEQjTyv9TzBQ784XPqtDxGjfobyvx" ], "script": "base64:BgJiCAISBgoEAhgREhIGCgQCGBESEgYKBAIYERISBgoEAhgREhIGCgQCGBESEgYKBAIYERISBgoEAhgREhIGCgQCGBESEgYKBAIYERISBgoEAhgREhIGCgQCGBESEgYKBAIYERJYAAd2ZXJzaW9uAgUxLjAuMAAIa1ZlcnNpb24CB3ZlcnNpb24AB2tBY3RpdmUCBmFjdGl2ZQALa0RlcHJlY2F0ZWQCC2RlcHJlY2F0ZWRfAAlrQXNzZXRJZEECCkFfYXNzZXRfaWQACWtBc3NldElkQgIKQl9hc3NldF9pZAAJa0JhbGFuY2VBAg9BX2Fzc2V0X2JhbGFuY2UACWtCYWxhbmNlQgIPQl9hc3NldF9iYWxhbmNlAA1rQmFsYW5jZUluaXRBAgxBX2Fzc2V0X2luaXQADWtCYWxhbmNlSW5pdEICDEJfYXNzZXRfaW5pdAANa1NoYXJlQXNzZXRJZAIOc2hhcmVfYXNzZXRfaWQAEWtTaGFyZUFzc2V0U3VwcGx5AhJzaGFyZV9hc3NldF9zdXBwbHkABGtGZWUCCmNvbW1pc3Npb24ABmtDYXVzZQIOc2h1dGRvd25fY2F1c2UADWtGaXJzdEhhcnZlc3QCDWZpcnN0X2hhcnZlc3QAE2tGaXJzdEhhcnZlc3RIZWlnaHQCFGZpcnN0X2hhcnZlc3RfaGVpZ2h0AAtrU2hhcmVMaW1pdAIcc2hhcmVfbGltaXRfb25fZmlyc3RfaGFydmVzdAALa0Jhc2VQZXJpb2QCC2Jhc2VfcGVyaW9kAA1rUGVyaW9kTGVuZ3RoAg1wZXJpb2RfbGVuZ3RoAAxrU3RhcnRIZWlnaHQCDHN0YXJ0X2hlaWdodAAMa1VTRE5BZGRyZXNzAhhzdGFraW5nX3VzZG5uc2J0X2FkZHJlc3MADGtFVVJOQWRkcmVzcwIUc3Rha2luZ19ldXJuX2FkZHJlc3MADmtMZWFzaW5nQW1vdW50Ag5sZWFzaW5nX2Ftb3VudAAMa1VTRE5Bc3NldElkAg11c2RuX2Fzc2V0X2lkAAxrRVVSTkFzc2V0SWQCDWV1cm5fYXNzZXRfaWQADGtMMk1QQXNzZXRJZAINbDJtcF9hc3NldF9pZAAOa1N0YWtpbmdBc3NldHMCDnN0YWtpbmdfYXNzZXRzAA1rT3JhY2xlQWN0aXZlAhRhY3RpdmVfYWxsX2NvbnRyYWN0cwAKa0Rpc2NvdW50cwIJZGlzY291bnRzAA9rRGlzY291bnRWYWx1ZXMCD2Rpc2NvdW50X3ZhbHVlcwAPa1VzZXJHU3dvcEluR292Ag1fR1N3b3BfYW1vdW50AA5rVXNlclN3b3BJbkdvdgIMX1NXT1BfYW1vdW50AAtrT3JhY2xlUG9vbAIFcG9vbF8ADWtBZG1pblB1YktleTECC2FkbWluX3B1Yl8xAA1rQWRtaW5QdWJLZXkyAgthZG1pbl9wdWJfMgANa0FkbWluUHViS2V5MwILYWRtaW5fcHViXzMAEmtBZG1pbkludm9rZVB1YktleQIQYWRtaW5faW52b2tlX3B1YgAQa01vbmV5Qm94QWRkcmVzcwIRbW9uZXlfYm94X2FkZHJlc3MAD2tUZWFtQm94QWRkcmVzcwIQdGVhbV9ib3hfYWRkcmVzcwAOa1ZvdGluZ0FkZHJlc3MCDnZvdGluZ19hZGRyZXNzAAtrR292QWRkcmVzcwISZ292ZXJuYW5jZV9hZGRyZXNzAA9rRmFybWluZ0FkZHJlc3MCD2Zhcm1pbmdfYWRkcmVzcwAMa0wyTVBBZGRyZXNzAhRzdGFraW5nX2wybXBfYWRkcmVzcwAGb3JhY2xlCQEHQWRkcmVzcwEBGgFXiv8IaJo1ukDNYXTyEjfepjfw+jjO6B44ARNnZXRCYXNlNThGcm9tT3JhY2xlAQNrZXkEByRtYXRjaDAJAJ0IAgUGb3JhY2xlBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAZzdHJpbmcFByRtYXRjaDAJANkEAQUGc3RyaW5nBAdub3RoaW5nBQckbWF0Y2gwCQACAQkArAICBQNrZXkCCGlzIGVtcHR5AAxhZG1pblB1YktleTEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUNa0FkbWluUHViS2V5MQAMYWRtaW5QdWJLZXkyCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDWtBZG1pblB1YktleTIADGFkbWluUHViS2V5MwkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ1rQWRtaW5QdWJLZXkzABFhZG1pbkludm9rZVB1YktleQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBRJrQWRtaW5JbnZva2VQdWJLZXkAD21vbmV5Qm94QWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFEGtNb25leUJveEFkZHJlc3MADnRlYW1Cb3hBZGRyZXNzCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUPa1RlYW1Cb3hBZGRyZXNzAA12b3RpbmdBZGRyZXNzCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUOa1ZvdGluZ0FkZHJlc3MACmdvdkFkZHJlc3MJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQtrR292QWRkcmVzcwAOZmFybWluZ0FkZHJlc3MJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ9rRmFybWluZ0FkZHJlc3MABFVTRE4JARNnZXRCYXNlNThGcm9tT3JhY2xlAQUMa1VTRE5Bc3NldElkAARFVVJOCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDGtFVVJOQXNzZXRJZAAETDJNUAkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQxrTDJNUEFzc2V0SWQADXN0YWtpbmdBc3NldHMJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBm9yYWNsZQUOa1N0YWtpbmdBc3NldHMAEnN0YWtpbmdVU0ROQWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDGtVU0ROQWRkcmVzcwASc3Rha2luZ0VVUk5BZGRyZXNzCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUMa0VVUk5BZGRyZXNzABJzdGFraW5nTDJNUEFkZHJlc3MJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQxrTDJNUEFkZHJlc3MACmJhc2VQZXJpb2QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQ12b3RpbmdBZGRyZXNzBQtrQmFzZVBlcmlvZAIRRW1wdHkga0Jhc2VQZXJpb2QAC3N0YXJ0SGVpZ2h0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUNdm90aW5nQWRkcmVzcwUMa1N0YXJ0SGVpZ2h0AhJFbXB0eSBrU3RhcnRIZWlnaHQADHBlcmlvZExlbmd0aAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFDXZvdGluZ0FkZHJlc3MFDWtQZXJpb2RMZW5ndGgCE0VtcHR5IGtQZXJpb2RMZW5ndGgAFWZpcnN0SGFydmVzdEVuZFBlcmlvZAkAZAIJAGQCBQpiYXNlUGVyaW9kCQBpAgkAZQIFBmhlaWdodAULc3RhcnRIZWlnaHQFDHBlcmlvZExlbmd0aAADAAZhY3RpdmUJARFAZXh0ck5hdGl2ZSgxMDUxKQIFBm9yYWNsZQUNa09yYWNsZUFjdGl2ZQAJZmVlU2NhbGU2AMCEPQAGc2NhbGU4AIDC1y8AB3NjYWxlMTYJALYCAQCAgIT+pt7hEQEOYWNjb3VudEJhbGFuY2UCB2Fzc2V0SWQEcG9vbAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJpZAUHJG1hdGNoMAkA8AcCBQRwb29sBQJpZAMJAAECBQckbWF0Y2gwAgRVbml0BAV3YXZlcwUHJG1hdGNoMAgJAO8HAQUEcG9vbAlhdmFpbGFibGUJAAIBAgtNYXRjaCBlcnJvcgEMc3Rha2VkQW1vdW50Agdhc3NldElkBHBvb2wEFnN0YWtlZEFtb3VudENhbGN1bGF0ZWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQDYUlkBQckbWF0Y2gwAwkAAAIFA2FJZAUEVVNETgkAmggCBRJzdGFraW5nVVNETkFkZHJlc3MJAKwCAgkArAICCQCsAgICDHJwZF9iYWxhbmNlXwkA2AQBBQNhSWQCAV8JAKUIAQUEcG9vbAMJAAACBQNhSWQFBEVVUk4JAJoIAgUSc3Rha2luZ0VVUk5BZGRyZXNzCQCsAgIJAKwCAgkArAICAhglcyVzJXNfX3N0YWtpbmdCYWxhbmNlX18JANgEAQUDYUlkAgJfXwkApQgBBQRwb29sAwkAAAIFA2FJZAUETDJNUAQJYXZhaWxhYmxlCgABQAkA/AcEBRJzdGFraW5nTDJNUEFkZHJlc3MCFWdldFVzZXJBc3NldHNSRUFET05MWQkAzAgCBQRwb29sBQNuaWwFA25pbAMJAAECBQFAAhkoSW50LCBJbnQsIEludCwgSW50LCBJbnQpBQFACQACAQkArAICCQADAQUBQAIuIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50LCBJbnQsIEludCwgSW50KQMJAAACBQlhdmFpbGFibGUFCWF2YWlsYWJsZQUJYXZhaWxhYmxlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAADCQABAgUHJG1hdGNoMAIEVW5pdAkBC3ZhbHVlT3JFbHNlAgkAmggCBQRwb29sBQ5rTGVhc2luZ0Ftb3VudAAACQACAQILTWF0Y2ggZXJyb3IEByRtYXRjaDAFFnN0YWtlZEFtb3VudENhbGN1bGF0ZWQDCQABAgUHJG1hdGNoMAIDSW50BAFpBQckbWF0Y2gwBQFpAAABDGdldEFzc2V0SW5mbwEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMDCQABAgUHJG1hdGNoMAIGU3RyaW5nBgkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAmlkBQckbWF0Y2gwBAskdDA0NDYzNDYzNQQHJG1hdGNoMQUCaWQDCQABAgUHJG1hdGNoMQIKQnl0ZVZlY3RvcgQDYUlkBQckbWF0Y2gxCQCUCgIJANgEAQUDYUlkBQNhSWQDCQABAgUHJG1hdGNoMQIGU3RyaW5nBANhSWQFByRtYXRjaDEJAJQKAgUDYUlkCQDZBAEFA2FJZAkAAgECC01hdGNoIGVycm9yBAhzdHJpbmdJZAgFCyR0MDQ0NjM0NjM1Al8xBAdieXRlc0lkCAULJHQwNDQ2MzQ2MzUCXzIEBGluZm8JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQdieXRlc0lkCQCsAgIJAKwCAgIGQXNzZXQgBQhzdHJpbmdJZAIOIGRvZXNuJ3QgZXhpc3QJAJUKAwUIc3RyaW5nSWQIBQRpbmZvBG5hbWUIBQRpbmZvCGRlY2ltYWxzAwkAAQIFByRtYXRjaDACBFVuaXQEBXdhdmVzBQckbWF0Y2gwCQCVCgMCBVdBVkVTAgVXQVZFUwAICQACAQILTWF0Y2ggZXJyb3IBB3N1c3BlbmQBBWNhdXNlCQDMCAIJAQxCb29sZWFuRW50cnkCBQdrQWN0aXZlBwkAzAgCCQELU3RyaW5nRW50cnkCBQZrQ2F1c2UFBWNhdXNlBQNuaWwBFGNhbGN1bGF0ZUZlZURpc2NvdW50AQh1c2VyQWRkcgQKc3dvcEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQpnb3ZBZGRyZXNzCQCsAgIJAKUIAQUIdXNlckFkZHIFDmtVc2VyU3dvcEluR292AAAEC2dTd29wQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFCmdvdkFkZHJlc3MJAKwCAgkApQgBBQh1c2VyQWRkcgUPa1VzZXJHU3dvcEluR292BQpzd29wQW1vdW50BA5kaXNjb3VudFZhbHVlcwkAtQkCCQERQGV4dHJOYXRpdmUoMTA1MykCBQZvcmFjbGUFD2tEaXNjb3VudFZhbHVlcwIBLAQJZGlzY291bnRzCQC1CQIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBm9yYWNsZQUKa0Rpc2NvdW50cwIBLAMDCQBnAgULZ1N3b3BBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5kaXNjb3VudFZhbHVlcwAACQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmRpc2NvdW50VmFsdWVzAAEFC2dTd29wQW1vdW50BwkAZQIFCWZlZVNjYWxlNgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCWRpc2NvdW50cwAAAwMJAGcCBQtnU3dvcEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmRpc2NvdW50VmFsdWVzAAEJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOZGlzY291bnRWYWx1ZXMAAgULZ1N3b3BBbW91bnQHCQBlAgUJZmVlU2NhbGU2CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJZGlzY291bnRzAAEDAwkAZwIFC2dTd29wQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOZGlzY291bnRWYWx1ZXMAAgkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5kaXNjb3VudFZhbHVlcwADBQtnU3dvcEFtb3VudAcJAGUCBQlmZWVTY2FsZTYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlkaXNjb3VudHMAAgMDCQBnAgULZ1N3b3BBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5kaXNjb3VudFZhbHVlcwADCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmRpc2NvdW50VmFsdWVzAAQFC2dTd29wQW1vdW50BwkAZQIFCWZlZVNjYWxlNgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCWRpc2NvdW50cwADAwkAZwIFC2dTd29wQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOZGlzY291bnRWYWx1ZXMABAkAZQIFCWZlZVNjYWxlNgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCWRpc2NvdW50cwAEBQlmZWVTY2FsZTYBDWNhbGN1bGF0ZUZlZXMHCXBtdEFtb3VudBJtaW5BbW91bnRUb1JlY2VpdmUJdG9rZW5Gcm9tB3Rva2VuVG8DZmVlBmZlZUdvdgdmZWVUZWFtBBBhbW91bnRXaXRob3V0RmVlCQBrAwUHdG9rZW5UbwUJcG10QW1vdW50CQBkAgUJcG10QW1vdW50BQl0b2tlbkZyb20EDWFtb3VudFdpdGhGZWUJAGsDBRBhbW91bnRXaXRob3V0RmVlCQBlAgUJZmVlU2NhbGU2BQNmZWUFCWZlZVNjYWxlNgQQZ292ZXJuYW5jZVJld2FyZAkAawMFEGFtb3VudFdpdGhvdXRGZWUFBmZlZUdvdgUJZmVlU2NhbGU2BAp0ZWFtUmV3YXJkCQBrAwUQYW1vdW50V2l0aG91dEZlZQUHZmVlVGVhbQUJZmVlU2NhbGU2AwkAZgIFEm1pbkFtb3VudFRvUmVjZWl2ZQUNYW1vdW50V2l0aEZlZQkAAgEJAKwCAgkArAICCQCsAgICHUNhbGN1bGF0ZWQgYW1vdW50IHRvIHJlY2VpdmUgCQCkAwEFDWFtb3VudFdpdGhGZWUCICBpcyBsZXNzIHRoYW4gc3BlY2lmaWVkIG1pbmltdW0gCQCkAwEFEm1pbkFtb3VudFRvUmVjZWl2ZQkAlgoEBRBhbW91bnRXaXRob3V0RmVlBQ1hbW91bnRXaXRoRmVlBRBnb3Zlcm5hbmNlUmV3YXJkBQp0ZWFtUmV3YXJkARBjYWxjdWxhdGVWaXJ0UGF5AwlwbXRBbW91bnQHYmFsYW5jZQNmZWUEAUYJAGUCBQlmZWVTY2FsZTYFA2ZlZQQBawkAawMFA2ZlZQA3AGQEAWEJAGQCBQZzY2FsZTgJAGsDCQBoAgUBRgUBawUGc2NhbGU4CQBoAgUJZmVlU2NhbGU2BQlmZWVTY2FsZTYEAWIJAGUCCQBlAgkAZAIJAGQCBQdiYWxhbmNlCQBrAwUHYmFsYW5jZQUBRgUJZmVlU2NhbGU2CQBrAwUJcG10QW1vdW50BQFGBQlmZWVTY2FsZTYFCXBtdEFtb3VudAkAawMFCXBtdEFtb3VudAkAaAIFAUYFAWsJAGgCBQlmZWVTY2FsZTYFCWZlZVNjYWxlNgQBYwkAuQICCQC+AgEJALYCAQUHYmFsYW5jZQkAtgIBBQlwbXRBbW91bnQEAUQJALgCAgkAuQICCQC2AgEFAWIJALYCAQUBYgkAvAIDCQC5AgIJALYCAQAEBQFjCQC2AgEFAWEJALYCAQUGc2NhbGU4CQCgAwEJALwCAwkAtwICCQC+AgEJALYCAQUBYgkBCnNxcnRCaWdJbnQEBQFEAAAAAAUERE9XTgkAtgIBBQZzY2FsZTgJALYCAQkAaAIAAgUBYQERcGFyc2VQYXltZW50QXNzZXQBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAEABQR1bml0BQdhc3NldElkARFzdXNwZW5kU3VzcGljaW91cwYPYWNjb3VudEJhbGFuY2VBD2FjY291bnRCYWxhbmNlQghiYWxhbmNlQQhiYWxhbmNlQghhc3NldElkQQhhc3NldElkQgkBB3N1c3BlbmQBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAiNTdXNwaWNpb3VzIHN0YXRlLiBBY3R1YWwgYmFsYW5jZXM6IAkApAMBBQ9hY2NvdW50QmFsYW5jZUECASAFCGFzc2V0SWRBAgIsIAkApAMBBQ9hY2NvdW50QmFsYW5jZUICASAFCGFzc2V0SWRCAgkuIFN0YXRlOiAJAKQDAQUIYmFsYW5jZUECASAFCGFzc2V0SWRBAgIsIAkApAMBBQhiYWxhbmNlQgIBIAUIYXNzZXRJZEIBCGlzQWN0aXZlAAMFBmFjdGl2ZQUEdW5pdAkAAgECH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQBDGlzT3JhY2xlUG9vbAELcG9vbEFkZHJlc3MDCQEJaXNEZWZpbmVkAQkAnQgCBQZvcmFjbGUJAKwCAgULa09yYWNsZVBvb2wFC3Bvb2xBZGRyZXNzBQR1bml0CQACAQIbREFwcCBpcyBub3QgcmVnaXN0ZXJlZCBwb29sAQxpc0RlcHJpY2F0ZWQBC3Bvb2xBZGRyZXNzAwkBASEBCQELdmFsdWVPckVsc2UCCQCbCAIFBm9yYWNsZQkArAICBQtrRGVwcmVjYXRlZAULcG9vbEFkZHJlc3MHBQR1bml0CQACAQIxUG9vbCBpcyBkZXByZWNhdGVkLiBPbmx5IHdpdGhkcmF3IGFjdGlvbiBhbGxvd2VkLgEPZ2V0UG9vbEJhbGFuY2VzAwRwb29sCGFzc2V0SWRBCGFzc2V0SWRCBAhiYWxhbmNlQQkBEUBleHRyTmF0aXZlKDEwNTApAgUEcG9vbAUJa0JhbGFuY2VBBAhiYWxhbmNlQgkBEUBleHRyTmF0aXZlKDEwNTApAgUEcG9vbAUJa0JhbGFuY2VCBA1zdGFrZWRBbW91bnRBCQEMc3Rha2VkQW1vdW50AgUIYXNzZXRJZEEFBHBvb2wEDXN0YWtlZEFtb3VudEIJAQxzdGFrZWRBbW91bnQCBQhhc3NldElkQgUEcG9vbAQPYWNjb3VudEJhbGFuY2VBCQBkAgkBDmFjY291bnRCYWxhbmNlAgUIYXNzZXRJZEEFBHBvb2wFDXN0YWtlZEFtb3VudEEED2FjY291bnRCYWxhbmNlQgkAZAIJAQ5hY2NvdW50QmFsYW5jZQIFCGFzc2V0SWRCBQRwb29sBQ1zdGFrZWRBbW91bnRCCQCYCgYFCGJhbGFuY2VBBQhiYWxhbmNlQgUPYWNjb3VudEJhbGFuY2VBBQ9hY2NvdW50QmFsYW5jZUIFDXN0YWtlZEFtb3VudEEFDXN0YWtlZEFtb3VudEIBC2dldExwU3VwcGx5AQRwb29sCQERQGV4dHJOYXRpdmUoMTA1MCkCBQRwb29sBRFrU2hhcmVBc3NldFN1cHBseQENZ2V0UG9vbEFzc2V0cwEEcG9vbAQLc3RyQXNzZXRJZEEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHBvb2wFCWtBc3NldElkQQQLc3RyQXNzZXRJZEIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHBvb2wFCWtBc3NldElkQgQIYXNzZXRJZEEDCQAAAgULc3RyQXNzZXRJZEECBVdBVkVTBQR1bml0CQDZBAEFC3N0ckFzc2V0SWRBBAhhc3NldElkQgMJAAACBQtzdHJBc3NldElkQgIFV0FWRVMFBHVuaXQJANkEAQULc3RyQXNzZXRJZEIEDHNoYXJlQXNzZXRJZAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1MykCBQRwb29sBQ1rU2hhcmVBc3NldElkCQCXCgUFC3N0ckFzc2V0SWRBBQtzdHJBc3NldElkQgUIYXNzZXRJZEEFCGFzc2V0SWRCBQxzaGFyZUFzc2V0SWQBDGdldEZlZVBhcmFtcwIEcG9vbAZjYWxsZXIEC2ZlZURpc2NvdW50CQEUY2FsY3VsYXRlRmVlRGlzY291bnQBBQZjYWxsZXIEA2ZlZQkAbgQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHBvb2wFBGtGZWUFC2ZlZURpc2NvdW50BQlmZWVTY2FsZTYFB0NFSUxJTkcEBmdvdkZlZQkAawMFA2ZlZQAjAGQEB3RlYW1GZWUJAGsDBQNmZWUACgBkCQCVCgMFA2ZlZQUGZ292RmVlBQd0ZWFtRmVlAR9jYWxjTFBBbW91bnRSZXBsZW5zaXNoVHdvVG9rZW5zBwRwbXRBBHBtdEIGcG10SWRBBnBtdElkQgRiYWxBBGJhbEIQc2hhcmVBc3NldFN1cHBseQQMJHQwOTk3NjEwMDQ4CQEMZ2V0QXNzZXRJbmZvAQUGcG10SWRBBA5wbXRTdHJBc3NldElkQQgFDCR0MDk5NzYxMDA0OAJfMQQNcG10QXNzZXROYW1lQQgFDCR0MDk5NzYxMDA0OAJfMgQMcG10RGVjaW1hbHNBCAUMJHQwOTk3NjEwMDQ4Al8zBA0kdDAxMDA1MzEwMTI1CQEMZ2V0QXNzZXRJbmZvAQUGcG10SWRCBA5wbXRTdHJBc3NldElkQggFDSR0MDEwMDUzMTAxMjUCXzEEDXBtdEFzc2V0TmFtZUIIBQ0kdDAxMDA1MzEwMTI1Al8yBAxwbXREZWNpbWFsc0IIBQ0kdDAxMDA1MzEwMTI1Al8zBAdpbml0aWFsCQAAAgkAZAIFBGJhbEEFBGJhbEIAAAQNJHQwMTAxNjgxMDgyNwMFB2luaXRpYWwJAJcKBQUEcG10QQUEcG10QgAABQZwbXRJZEEJALYCAQABBBNyYXRpb1NoYXJlVG9rZW5zSW5BCQC8AgMFB3NjYWxlMTYJALYCAQUEcG10QQkAtgIBBQRiYWxBBBNyYXRpb1NoYXJlVG9rZW5zSW5CCQC8AgMFB3NjYWxlMTYJALYCAQUEcG10QgkAtgIBBQRiYWxCAwkAvwICBRNyYXRpb1NoYXJlVG9rZW5zSW5CBRNyYXRpb1NoYXJlVG9rZW5zSW5BBANwbXQJAGsDBQRwbXRBBQRiYWxCBQRiYWxBCQCXCgUFBHBtdEEFA3BtdAkAZQIFBHBtdEIFA3BtdAUGcG10SWRCBRNyYXRpb1NoYXJlVG9rZW5zSW5BBANwbXQJAGsDBQRwbXRCBQRiYWxBBQRiYWxCCQCXCgUFA3BtdAUEcG10QgkAZQIFBHBtdEEFA3BtdAUGcG10SWRBBRNyYXRpb1NoYXJlVG9rZW5zSW5CBApwbXRBbW91bnRBCAUNJHQwMTAxNjgxMDgyNwJfMQQKcG10QW1vdW50QggFDSR0MDEwMTY4MTA4MjcCXzIEBmNoYW5nZQgFDSR0MDEwMTY4MTA4MjcCXzMEDWNoYW5nZUFzc2V0SWQIBQ0kdDAxMDE2ODEwODI3Al80BA9zaGFyZVRva2VuUmF0aW8IBQ0kdDAxMDE2ODEwODI3Al81BBVzaGFyZVRva2VuVG9QYXlBbW91bnQDBQdpbml0aWFsBA1zaGFyZURlY2ltYWxzCQBpAgkAZAIFDHBtdERlY2ltYWxzQQUMcG10RGVjaW1hbHNCAAIJAGsDCQBsBgUKcG10QW1vdW50QQUMcG10RGVjaW1hbHNBAAUAAQUMcG10RGVjaW1hbHNBBQRET1dOCQBsBgUKcG10QW1vdW50QgUMcG10RGVjaW1hbHNCAAUAAQUMcG10RGVjaW1hbHNCBQRET1dOCQBsBgAKAAAFDXNoYXJlRGVjaW1hbHMAAAAABQRET1dOCQCgAwEJALwCAwUPc2hhcmVUb2tlblJhdGlvCQC2AgEFEHNoYXJlQXNzZXRTdXBwbHkFB3NjYWxlMTYJAJcKBQUVc2hhcmVUb2tlblRvUGF5QW1vdW50BQZjaGFuZ2UFDWNoYW5nZUFzc2V0SWQFCnBtdEFtb3VudEEFCnBtdEFtb3VudEIBHWNhbGNMUEFtb3VudFJlcGxlbmlzaE9uZVRva2VuCwlwbXRBbW91bnQKcG10QXNzZXRJZANhSWQDYklkBGJhbEEEYmFsQghscFN1cHBseQNmZWUGZ292RmVlB3RlYW1GZWUQdmlydEdldE1pbkFtb3VudAMJAAACBQpwbXRBc3NldElkBQNhSWQEDXZpcnRQYXlBbW91bnQJARBjYWxjdWxhdGVWaXJ0UGF5AwUJcG10QW1vdW50BQRiYWxBBQNmZWUEDSR0MDExNjkxMTE4MzgJAQ1jYWxjdWxhdGVGZWVzBwUNdmlydFBheUFtb3VudAUQdmlydEdldE1pbkFtb3VudAUEYmFsQQUEYmFsQgUDZmVlBQZnb3ZGZWUFB3RlYW1GZWUEEGFtb3VudFdpdGhvdXRGZWUIBQ0kdDAxMTY5MTExODM4Al8xBA1hbW91bnRXaXRoRmVlCAUNJHQwMTE2OTExMTgzOAJfMgQQZ292ZXJuYW5jZVJld2FyZAgFDSR0MDExNjkxMTE4MzgCXzMEB3RSZXdhcmQIBQ0kdDAxMTY5MTExODM4Al80BAxiYWxhbmNlQVZpcnQJAGQCBQRiYWxBBQ12aXJ0UGF5QW1vdW50BAxiYWxhbmNlQlZpcnQJAGUCCQBlAgkAZAIFBGJhbEIFEGFtb3VudFdpdGhvdXRGZWUFEGdvdmVybmFuY2VSZXdhcmQFB3RSZXdhcmQEC25ld0JhbGFuY2VBCQBkAgUEYmFsQQUJcG10QW1vdW50BAtuZXdCYWxhbmNlQgkAZQIJAGUCBQRiYWxCBRBnb3Zlcm5hbmNlUmV3YXJkBQd0UmV3YXJkBBNyYXRpb1NoYXJlVG9rZW5zSW5BCQC8AgMJALYCAQkAZQIFCXBtdEFtb3VudAUNdmlydFBheUFtb3VudAUHc2NhbGUxNgkAtgIBBQxiYWxhbmNlQVZpcnQEE3JhdGlvU2hhcmVUb2tlbnNJbkIJALwCAwkAtgIBBQ1hbW91bnRXaXRoRmVlBQdzY2FsZTE2CQC2AgEFDGJhbGFuY2VCVmlydAQVc2hhcmVUb2tlblRvUGF5QW1vdW50CQCgAwEJALwCAwkAmQMBCQDMCAIFE3JhdGlvU2hhcmVUb2tlbnNJbkEJAMwIAgUTcmF0aW9TaGFyZVRva2Vuc0luQgUDbmlsCQC2AgEFCGxwU3VwcGx5BQdzY2FsZTE2BBtzaGFyZVRva2VuVG9QYXlBbW91bnRJbkJvdGgJAKADAQkAvAIDCQC8AgMJALYCAQkAZQIFCXBtdEFtb3VudAUNdmlydFBheUFtb3VudAUHc2NhbGUxNgkAtgIBBQRiYWxBCQC2AgEFCGxwU3VwcGx5BQdzY2FsZTE2BARsb3NzCQBrAwkAZQIFFXNoYXJlVG9rZW5Ub1BheUFtb3VudAUbc2hhcmVUb2tlblRvUGF5QW1vdW50SW5Cb3RoBQZzY2FsZTgFG3NoYXJlVG9rZW5Ub1BheUFtb3VudEluQm90aAkAmQoHBRVzaGFyZVRva2VuVG9QYXlBbW91bnQFC25ld0JhbGFuY2VBBQtuZXdCYWxhbmNlQgUQZ292ZXJuYW5jZVJld2FyZAUHdFJld2FyZAUDYklkBQRsb3NzBA12aXJ0UGF5QW1vdW50CQEQY2FsY3VsYXRlVmlydFBheQMFCXBtdEFtb3VudAUEYmFsQgUDZmVlBA0kdDAxMjg4MjEzMDI5CQENY2FsY3VsYXRlRmVlcwcFDXZpcnRQYXlBbW91bnQFEHZpcnRHZXRNaW5BbW91bnQFBGJhbEIFBGJhbEEFA2ZlZQUGZ292RmVlBQd0ZWFtRmVlBBBhbW91bnRXaXRob3V0RmVlCAUNJHQwMTI4ODIxMzAyOQJfMQQNYW1vdW50V2l0aEZlZQgFDSR0MDEyODgyMTMwMjkCXzIEEGdvdmVybmFuY2VSZXdhcmQIBQ0kdDAxMjg4MjEzMDI5Al8zBAd0UmV3YXJkCAUNJHQwMTI4ODIxMzAyOQJfNAQMYmFsYW5jZUFWaXJ0CQBlAgkAZQIJAGQCBQRiYWxBBRBhbW91bnRXaXRob3V0RmVlBRBnb3Zlcm5hbmNlUmV3YXJkBQd0UmV3YXJkBAxiYWxhbmNlQlZpcnQJAGQCBQRiYWxCBQ12aXJ0UGF5QW1vdW50BAtuZXdCYWxhbmNlQQkAZQIJAGUCBQRiYWxBBRBnb3Zlcm5hbmNlUmV3YXJkBQd0UmV3YXJkBAtuZXdCYWxhbmNlQgkAZAIFBGJhbEIFCXBtdEFtb3VudAQTcmF0aW9TaGFyZVRva2Vuc0luQQkAvAIDCQC2AgEFDWFtb3VudFdpdGhGZWUFB3NjYWxlMTYJALYCAQUMYmFsYW5jZUFWaXJ0BBNyYXRpb1NoYXJlVG9rZW5zSW5CCQC8AgMJALYCAQkAZQIFCXBtdEFtb3VudAUNdmlydFBheUFtb3VudAUHc2NhbGUxNgkAtgIBBQxiYWxhbmNlQlZpcnQEFXNoYXJlVG9rZW5Ub1BheUFtb3VudAkAoAMBCQC8AgMJAJkDAQkAzAgCBRNyYXRpb1NoYXJlVG9rZW5zSW5BCQDMCAIFE3JhdGlvU2hhcmVUb2tlbnNJbkIFA25pbAkAtgIBBQhscFN1cHBseQUHc2NhbGUxNgQbc2hhcmVUb2tlblRvUGF5QW1vdW50SW5Cb3RoCQCgAwEJALwCAwkAvAIDCQC2AgEJAGUCBQlwbXRBbW91bnQFDXZpcnRQYXlBbW91bnQFB3NjYWxlMTYJALYCAQUEYmFsQgkAtgIBBQhscFN1cHBseQUHc2NhbGUxNgQEbG9zcwkAawMJAGUCBRVzaGFyZVRva2VuVG9QYXlBbW91bnQFG3NoYXJlVG9rZW5Ub1BheUFtb3VudEluQm90aAUGc2NhbGU4BRtzaGFyZVRva2VuVG9QYXlBbW91bnRJbkJvdGgJAJkKBwUVc2hhcmVUb2tlblRvUGF5QW1vdW50BQtuZXdCYWxhbmNlQQULbmV3QmFsYW5jZUIFEGdvdmVybmFuY2VSZXdhcmQFB3RSZXdhcmQFA2FJZAUEbG9zcwEXY2FsY0xQUmVwbGVuaXNoRGlmZlByb3ALBHBtdEEEcG10QgZwbXRJZEEGcG10SWRCBGJhbEEEYmFsQghscFN1cHBseQNmZWUGZ292RmVlB3RlYW1GZWUQdmlydEdldE1pbkFtb3VudAQNJHQwMTQxOTYxNDM0NAkBH2NhbGNMUEFtb3VudFJlcGxlbnNpc2hUd29Ub2tlbnMHBQRwbXRBBQRwbXRCBQZwbXRJZEEFBnBtdElkQgUEYmFsQQUEYmFsQgUIbHBTdXBwbHkEC2xwVHdvQW1vdW50CAUNJHQwMTQxOTYxNDM0NAJfMQQGY2hhbmdlCAUNJHQwMTQxOTYxNDM0NAJfMgQNY2hhbmdlQXNzZXRJZAgFDSR0MDE0MTk2MTQzNDQCXzMECnBtdEFtb3VudEEIBQ0kdDAxNDE5NjE0MzQ0Al80BApwbXRBbW91bnRCCAUNJHQwMTQxOTYxNDM0NAJfNQMJAGYCBQZjaGFuZ2UAAAQNJHQwMTQzNzYxNDYxMAkBHWNhbGNMUEFtb3VudFJlcGxlbmlzaE9uZVRva2VuCwUGY2hhbmdlBQ1jaGFuZ2VBc3NldElkBQZwbXRJZEEFBnBtdElkQgkAZAIFBGJhbEEFCnBtdEFtb3VudEEJAGQCBQRiYWxCBQpwbXRBbW91bnRCBQhscFN1cHBseQUDZmVlBQZnb3ZGZWUFB3RlYW1GZWUFEHZpcnRHZXRNaW5BbW91bnQEBWxwT25lCAUNJHQwMTQzNzYxNDYxMAJfMQQLbmV3QmFsYW5jZUEIBQ0kdDAxNDM3NjE0NjEwAl8yBAtuZXdCYWxhbmNlQggFDSR0MDE0Mzc2MTQ2MTACXzMEEGdvdmVybmFuY2VSZXdhcmQIBQ0kdDAxNDM3NjE0NjEwAl80BAd0UmV3YXJkCAUNJHQwMTQzNzYxNDYxMAJfNQQDZ0lkCAUNJHQwMTQzNzYxNDYxMAJfNgQEbG9zcwgFDSR0MDE0Mzc2MTQ2MTACXzcJAJkKBwkAZAIFC2xwVHdvQW1vdW50BQVscE9uZQUEbG9zcwULbmV3QmFsYW5jZUEFC25ld0JhbGFuY2VCBRBnb3Zlcm5hbmNlUmV3YXJkBQd0UmV3YXJkBQNnSWQJAJkKBwULbHBUd29BbW91bnQAAAkAZAIFBGJhbEEFCnBtdEFtb3VudEEJAGQCBQRiYWxCBQpwbXRBbW91bnRCAAAAAAUEdW5pdAwBaQEfY2FsY0xQUmVwbGVuaXNoRGlmZlByb3BSRUFET05MWQQLY2FsbGVyQnl0ZXMEYXJncwhwQW1vdW50cwlwQXNzZXRJZHMEDSR0MDE0OTQ2MTUwMzYJAQ1nZXRQb29sQXNzZXRzAQgFAWkGY2FsbGVyBAtzdHJBc3NldElkQQgFDSR0MDE0OTQ2MTUwMzYCXzEEC3N0ckFzc2V0SWRCCAUNJHQwMTQ5NDYxNTAzNgJfMgQIYXNzZXRJZEEIBQ0kdDAxNDk0NjE1MDM2Al8zBAhhc3NldElkQggFDSR0MDE0OTQ2MTUwMzYCXzQEDHNoYXJlQXNzZXRJZAgFDSR0MDE0OTQ2MTUwMzYCXzUEDSR0MDE1MDQxMTUxMjMJAQ9nZXRQb29sQmFsYW5jZXMDCAUBaQZjYWxsZXIFCGFzc2V0SWRBBQhhc3NldElkQgQEYmFsQQgFDSR0MDE1MDQxMTUxMjMCXzEEBGJhbEIIBQ0kdDAxNTA0MTE1MTIzAl8yBAdhY2NCYWxBCAUNJHQwMTUwNDExNTEyMwJfMwQHYWNjQmFsQggFDSR0MDE1MDQxMTUxMjMCXzQECGxwU3VwcGx5CQELZ2V0THBTdXBwbHkBCAUBaQZjYWxsZXIEBHBtdEEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRhcmdzAAAEBHBtdEIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRhcmdzAAEEEHZpcnRHZXRNaW5BbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRhcmdzAAIEDSR0MDE1Mjk4MTUzNjUJAQxnZXRGZWVQYXJhbXMCCAUBaQZjYWxsZXIIBQFpDG9yaWdpbkNhbGxlcgQDZmVlCAUNJHQwMTUyOTgxNTM2NQJfMQQGZ292RmVlCAUNJHQwMTUyOTgxNTM2NQJfMgQHdGVhbUZlZQgFDSR0MDE1Mjk4MTUzNjUCXzMEDSR0MDE1MzcwMTU1NjIJARdjYWxjTFBSZXBsZW5pc2hEaWZmUHJvcAsFBHBtdEEFBHBtdEIFCGFzc2V0SWRBBQhhc3NldElkQgUEYmFsQQUEYmFsQgUIbHBTdXBwbHkFA2ZlZQUGZ292RmVlBQd0ZWFtRmVlBRB2aXJ0R2V0TWluQW1vdW50BAJscAgFDSR0MDE1MzcwMTU1NjICXzEEBGxvc3MIBQ0kdDAxNTM3MDE1NTYyAl8yBAtuZXdCYWxhbmNlQQgFDSR0MDE1MzcwMTU1NjICXzMEC25ld0JhbGFuY2VCCAUNJHQwMTUzNzAxNTU2MgJfNAQQZ292ZXJuYW5jZVJld2FyZAgFDSR0MDE1MzcwMTU1NjICXzUEB3RSZXdhcmQIBQ0kdDAxNTM3MDE1NTYyAl82BANhSWQIBQ0kdDAxNTM3MDE1NTYyAl83CQCUCgIFA25pbAkAlAoCBQNuaWwJAMwIAgUCbHAJAMwIAgUEbG9zcwkAzAgCBQtuZXdCYWxhbmNlQQkAzAgCBQtuZXdCYWxhbmNlQgkAzAgCBRBnb3Zlcm5hbmNlUmV3YXJkCQDMCAIFB3RSZXdhcmQJAMwIAgUDYUlkBQNuaWwBaQEgY2FsY0xQUmVwbGVuaXNoVHdvVG9rZW5zUkVBRE9OTFkEC2NhbGxlckJ5dGVzBGFyZ3MIcEFtb3VudHMJcEFzc2V0SWRzBA0kdDAxNTgwNTE1ODk1CQENZ2V0UG9vbEFzc2V0cwEIBQFpBmNhbGxlcgQLc3RyQXNzZXRJZEEIBQ0kdDAxNTgwNTE1ODk1Al8xBAtzdHJBc3NldElkQggFDSR0MDE1ODA1MTU4OTUCXzIECGFzc2V0SWRBCAUNJHQwMTU4MDUxNTg5NQJfMwQIYXNzZXRJZEIIBQ0kdDAxNTgwNTE1ODk1Al80BAxzaGFyZUFzc2V0SWQIBQ0kdDAxNTgwNTE1ODk1Al81BA0kdDAxNTkwMDE1OTgyCQEPZ2V0UG9vbEJhbGFuY2VzAwgFAWkGY2FsbGVyBQhhc3NldElkQQUIYXNzZXRJZEIEBGJhbEEIBQ0kdDAxNTkwMDE1OTgyAl8xBARiYWxCCAUNJHQwMTU5MDAxNTk4MgJfMgQHYWNjQmFsQQgFDSR0MDE1OTAwMTU5ODICXzMEB2FjY0JhbEIIBQ0kdDAxNTkwMDE1OTgyAl80BAhscFN1cHBseQkBC2dldExwU3VwcGx5AQgFAWkGY2FsbGVyBARwbXRBCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEYXJncwAABARwbXRCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEYXJncwABBA0kdDAxNjEwNjE2MjQ5CQEfY2FsY0xQQW1vdW50UmVwbGVuc2lzaFR3b1Rva2VucwcFBHBtdEEFBHBtdEIFCGFzc2V0SWRBBQhhc3NldElkQgUEYmFsQQUEYmFsQgUIbHBTdXBwbHkEAmxwCAUNJHQwMTYxMDYxNjI0OQJfMQQGY2hhbmdlCAUNJHQwMTYxMDYxNjI0OQJfMgQNY2hhbmdlQXNzZXRJZAgFDSR0MDE2MTA2MTYyNDkCXzMECnBtdEFtb3VudEEIBQ0kdDAxNjEwNjE2MjQ5Al80BApwbXRBbW91bnRCCAUNJHQwMTYxMDYxNjI0OQJfNQkAlAoCBQNuaWwJAJQKAgUDbmlsCQDMCAIFAmxwCQDMCAIFBmNoYW5nZQkAzAgCBQ1jaGFuZ2VBc3NldElkCQDMCAIFCnBtdEFtb3VudEEJAMwIAgUKcG10QW1vdW50QgUDbmlsAWkBEHdpdGhkcmF3UkVBRE9OTFkEC2NhbGxlckJ5dGVzBGFyZ3MIcEFtb3VudHMJcEFzc2V0SWRzBA0kdDAxNjQ2MDE2NTUwCQENZ2V0UG9vbEFzc2V0cwEIBQFpBmNhbGxlcgQLc3RyQXNzZXRJZEEIBQ0kdDAxNjQ2MDE2NTUwAl8xBAtzdHJBc3NldElkQggFDSR0MDE2NDYwMTY1NTACXzIECGFzc2V0SWRBCAUNJHQwMTY0NjAxNjU1MAJfMwQIYXNzZXRJZEIIBQ0kdDAxNjQ2MDE2NTUwAl80BAxzaGFyZUFzc2V0SWQIBQ0kdDAxNjQ2MDE2NTUwAl81BA0kdDAxNjU1NTE2NjYxCQEPZ2V0UG9vbEJhbGFuY2VzAwgFAWkGY2FsbGVyBQhhc3NldElkQQUIYXNzZXRJZEIECGJhbGFuY2VBCAUNJHQwMTY1NTUxNjY2MQJfMQQIYmFsYW5jZUIIBQ0kdDAxNjU1NTE2NjYxAl8yBA9hY2NvdW50QmFsYW5jZUEIBQ0kdDAxNjU1NTE2NjYxAl8zBA9hY2NvdW50QmFsYW5jZUIIBQ0kdDAxNjU1NTE2NjYxAl80BBBzaGFyZUFzc2V0U3VwcGx5CQELZ2V0THBTdXBwbHkBCAUBaQZjYWxsZXIEDndpdGhkcmF3QW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEYXJncwAABA0kdDAxNjc2NDE2OTI2AwkAAAIJAJADAQUEYXJncwADCQCUCgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRhcmdzAAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRhcmdzAAIJAJQKAgUIYmFsYW5jZUEFCGJhbGFuY2VCBARiYWxBCAUNJHQwMTY3NjQxNjkyNgJfMQQEYmFsQggFDSR0MDE2NzY0MTY5MjYCXzIEDGFtb3VudFRvUGF5QQkAawMFDndpdGhkcmF3QW1vdW50BQRiYWxBBRBzaGFyZUFzc2V0U3VwcGx5BAxhbW91bnRUb1BheUIJAGsDBQ53aXRoZHJhd0Ftb3VudAUEYmFsQgUQc2hhcmVBc3NldFN1cHBseQkAlAoCBQNuaWwJAJQKAgUDbmlsCQDMCAIFDGFtb3VudFRvUGF5QQkAzAgCBQxhbW91bnRUb1BheUIFA25pbAFpAQRpbml0BAtjYWxsZXJCeXRlcwRhcmdzCHBBbW91bnRzCXBBc3NldElkcwQGY2FsbGVyCQEHQWRkcmVzcwEFC2NhbGxlckJ5dGVzBA0kdDAxNzI4MTE3MzU5CQCUCgIJAJEDAgUIcEFtb3VudHMAAAkBEXBhcnNlUGF5bWVudEFzc2V0AQkAkQMCBQlwQXNzZXRJZHMAAAQKcG10QW1vdW50QQgFDSR0MDE3MjgxMTczNTkCXzEEC3BtdEFzc2V0SWRBCAUNJHQwMTcyODExNzM1OQJfMgQNJHQwMTczNjQxNzQ0MgkAlAoCCQCRAwIFCHBBbW91bnRzAAEJARFwYXJzZVBheW1lbnRBc3NldAEJAJEDAgUJcEFzc2V0SWRzAAEECnBtdEFtb3VudEIIBQ0kdDAxNzM2NDE3NDQyAl8xBAtwbXRBc3NldElkQggFDSR0MDE3MzY0MTc0NDICXzIDCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFDGFkbWluUHViS2V5MQkAzAgCBQxhZG1pblB1YktleTIJAMwIAgUMYWRtaW5QdWJLZXkzCQDMCAIFEWFkbWluSW52b2tlUHViS2V5BQNuaWwIBQFpFW9yaWdpbkNhbGxlclB1YmxpY0tleQkAAgECIU9ubHkgYWRtaW4gY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgMJAQIhPQIJAJADAQUEYXJncwABCQACAQIPV3JvbmcgYXJncyBzaXplAwkBCWlzRGVmaW5lZAEJAJsIAgUGY2FsbGVyBQdrQWN0aXZlCQACAQIWREFwcCBpcyBhbHJlYWR5IGFjdGl2ZQMJAAACBQtwbXRBc3NldElkQQULcG10QXNzZXRJZEIJAAIBAhhBc3NldHMgbXVzdCBiZSBkaWZmZXJlbnQEDSR0MDE3ODc3MTc5NTQJAQxnZXRBc3NldEluZm8BBQtwbXRBc3NldElkQQQOcG10U3RyQXNzZXRJZEEIBQ0kdDAxNzg3NzE3OTU0Al8xBA1wbXRBc3NldE5hbWVBCAUNJHQwMTc4NzcxNzk1NAJfMgQMcG10RGVjaW1hbHNBCAUNJHQwMTc4NzcxNzk1NAJfMwQNJHQwMTc5NjMxODA0MAkBDGdldEFzc2V0SW5mbwEFC3BtdEFzc2V0SWRCBA5wbXRTdHJBc3NldElkQggFDSR0MDE3OTYzMTgwNDACXzEEDXBtdEFzc2V0TmFtZUIIBQ0kdDAxNzk2MzE4MDQwAl8yBAxwbXREZWNpbWFsc0IIBQ0kdDAxNzk2MzE4MDQwAl8zBAxmaXJzdEhhcnZlc3QJAAACCQCRAwIFBGFyZ3MAAAIEdHJ1ZQQJc2hhcmVOYW1lCQCsAgIJAKwCAgkArAICAgFzCQCvAgIFDXBtdEFzc2V0TmFtZUEABwIBXwkArwICBQ1wbXRBc3NldE5hbWVCAAcEEHNoYXJlRGVzY3JpcHRpb24JAKwCAgkArAICCQCsAgIJAKwCAgkArAICAiJTaGFyZVRva2VuIG9mIFN3b3BGaSBwcm90b2NvbCBmb3IgBQ1wbXRBc3NldE5hbWVBAgUgYW5kIAUNcG10QXNzZXROYW1lQgIMIGF0IGFkZHJlc3MgCQClCAEFBHRoaXMEDXNoYXJlRGVjaW1hbHMJAGkCCQBkAgUMcG10RGVjaW1hbHNBBQxwbXREZWNpbWFsc0IAAgQEYXJnMQkAbAYFCnBtdEFtb3VudEEFDHBtdERlY2ltYWxzQQAFAAEFDHBtdERlY2ltYWxzQQUERE9XTgQEYXJnMgkAbAYFCnBtdEFtb3VudEIFDHBtdERlY2ltYWxzQgAFAAEFDHBtdERlY2ltYWxzQgUERE9XTgQEYXJnMwkAbAYACgAABQ1zaGFyZURlY2ltYWxzAAAAAAUERE9XTgQSc2hhcmVJbml0aWFsU3VwcGx5CQBrAwUEYXJnMQUEYXJnMgUEYXJnMwQKc2hhcmVJc3N1ZQkAwggFBQlzaGFyZU5hbWUFEHNoYXJlRGVzY3JpcHRpb24FEnNoYXJlSW5pdGlhbFN1cHBseQUNc2hhcmVEZWNpbWFscwYEDHNoYXJlSXNzdWVJZAkAuAgBBQpzaGFyZUlzc3VlBAZzdGFrZTEDCQEIY29udGFpbnMCBQ1zdGFraW5nQXNzZXRzBQ5wbXRTdHJBc3NldElkQQkA/AcECAUBaQZjYWxsZXICDHN0YWtlVW5zdGFrZQkAzAgCBgkAzAgCBQpwbXRBbW91bnRBCQDMCAIFDnBtdFN0ckFzc2V0SWRBBQNuaWwFA25pbAAAAwkAAAIFBnN0YWtlMQUGc3Rha2UxBAZzdGFrZTIDCQEIY29udGFpbnMCBQ1zdGFraW5nQXNzZXRzBQ5wbXRTdHJBc3NldElkQgkA/AcECAUBaQZjYWxsZXICDHN0YWtlVW5zdGFrZQkAzAgCBgkAzAgCBQpwbXRBbW91bnRCCQDMCAIFDnBtdFN0ckFzc2V0SWRCBQNuaWwFA25pbAAAAwkAAAIFBnN0YWtlMgUGc3Rha2UyBAliYXNlRW50cnkJAMwIAgkBC1N0cmluZ0VudHJ5AgUIa1ZlcnNpb24FB3ZlcnNpb24JAMwIAgkBDEJvb2xlYW5FbnRyeQIFB2tBY3RpdmUGCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWtBc3NldElkQQUOcG10U3RyQXNzZXRJZEEJAMwIAgkBC1N0cmluZ0VudHJ5AgUJa0Fzc2V0SWRCBQ5wbXRTdHJBc3NldElkQgkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa0JhbGFuY2VBBQpwbXRBbW91bnRBCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrQmFsYW5jZUIFCnBtdEFtb3VudEIJAMwIAgkBDEludGVnZXJFbnRyeQIFBGtGZWUJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBm9yYWNsZQINYmFzZV9mZWVfY3BtbQkAzAgCBQpzaGFyZUlzc3VlCQDMCAIJAQtTdHJpbmdFbnRyeQIFDWtTaGFyZUFzc2V0SWQJANgEAQUMc2hhcmVJc3N1ZUlkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrU2hhcmVBc3NldFN1cHBseQUSc2hhcmVJbml0aWFsU3VwcGx5CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUSc2hhcmVJbml0aWFsU3VwcGx5BQxzaGFyZUlzc3VlSWQFA25pbAMFDGZpcnN0SGFydmVzdAkAlAoCBQNuaWwJAJQKAgkAzggCBQliYXNlRW50cnkJAMwIAgkBDEJvb2xlYW5FbnRyeQIFDWtGaXJzdEhhcnZlc3QFDGZpcnN0SGFydmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUTa0ZpcnN0SGFydmVzdEhlaWdodAkAZAIFC3N0YXJ0SGVpZ2h0CQBoAgUVZmlyc3RIYXJ2ZXN0RW5kUGVyaW9kBQxwZXJpb2RMZW5ndGgFA25pbAUDbmlsCQCUCgIFA25pbAkAlAoCBQliYXNlRW50cnkFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARFpbml0V2l0aEluaXRSYXRpbwQLY2FsbGVyQnl0ZXMEYXJncwhwQW1vdW50cwlwQXNzZXRJZHMEBmNhbGxlcgkBB0FkZHJlc3MBBQtjYWxsZXJCeXRlcwQNJHQwMjAyNjEyMDQ2MQkAlwoFCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEYXJncwAACQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEYXJncwABCQCRAwIFBGFyZ3MAAgkAkQMCBQRhcmdzAAMJAAACCQCRAwIFBGFyZ3MABAIEdHJ1ZQQJYW10QXNzZXRBCAUNJHQwMjAyNjEyMDQ2MQJfMQQJYW10QXNzZXRCCAUNJHQwMjAyNjEyMDQ2MQJfMgQLYXNzZXRJZEFTdHIIBQ0kdDAyMDI2MTIwNDYxAl8zBAthc3NldElkQlN0cggFDSR0MDIwMjYxMjA0NjECXzQEDGZpcnN0SGFydmVzdAgFDSR0MDIwMjYxMjA0NjECXzUDCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFDGFkbWluUHViS2V5MQkAzAgCBQxhZG1pblB1YktleTIJAMwIAgUMYWRtaW5QdWJLZXkzCQDMCAIFEWFkbWluSW52b2tlUHViS2V5BQNuaWwIBQFpFW9yaWdpbkNhbGxlclB1YmxpY0tleQkAAgECIU9ubHkgYWRtaW4gY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgMJAQIhPQIJAJADAQUEYXJncwAFCQACAQIPV3JvbmcgYXJncyBzaXplAwkBCWlzRGVmaW5lZAEJAJsIAgUGY2FsbGVyBQdrQWN0aXZlCQACAQIWREFwcCBpcyBhbHJlYWR5IGFjdGl2ZQMJAAACBQthc3NldElkQVN0cgULYXNzZXRJZEJTdHIJAAIBAhhBc3NldHMgbXVzdCBiZSBkaWZmZXJlbnQEDSR0MDIwODk2MjA5NzMJAQxnZXRBc3NldEluZm8BBQthc3NldElkQVN0cgQOcG10U3RyQXNzZXRJZEEIBQ0kdDAyMDg5NjIwOTczAl8xBA1wbXRBc3NldE5hbWVBCAUNJHQwMjA4OTYyMDk3MwJfMgQMcG10RGVjaW1hbHNBCAUNJHQwMjA4OTYyMDk3MwJfMwQNJHQwMjA5ODIyMTA1OQkBDGdldEFzc2V0SW5mbwEFC2Fzc2V0SWRCU3RyBA5wbXRTdHJBc3NldElkQggFDSR0MDIwOTgyMjEwNTkCXzEEDXBtdEFzc2V0TmFtZUIIBQ0kdDAyMDk4MjIxMDU5Al8yBAxwbXREZWNpbWFsc0IIBQ0kdDAyMDk4MjIxMDU5Al8zBAlzaGFyZU5hbWUJAKwCAgkArAICCQCsAgICAXMJAK8CAgUNcG10QXNzZXROYW1lQQAHAgFfCQCvAgIFDXBtdEFzc2V0TmFtZUIABwQQc2hhcmVEZXNjcmlwdGlvbgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICIlNoYXJlVG9rZW4gb2YgU3dvcEZpIHByb3RvY29sIGZvciAFDXBtdEFzc2V0TmFtZUECBSBhbmQgBQ1wbXRBc3NldE5hbWVCAgwgYXQgYWRkcmVzcyAJAKUIAQUEdGhpcwQNc2hhcmVEZWNpbWFscwkAaQIJAGQCBQxwbXREZWNpbWFsc0EFDHBtdERlY2ltYWxzQgACBBJzaGFyZUluaXRpYWxTdXBwbHkAAAQKc2hhcmVJc3N1ZQkAwggFBQlzaGFyZU5hbWUFEHNoYXJlRGVzY3JpcHRpb24FEnNoYXJlSW5pdGlhbFN1cHBseQUNc2hhcmVEZWNpbWFscwYEDHNoYXJlSXNzdWVJZAkAuAgBBQpzaGFyZUlzc3VlBAliYXNlRW50cnkJAMwIAgkBC1N0cmluZ0VudHJ5AgUIa1ZlcnNpb24FB3ZlcnNpb24JAMwIAgkBDEJvb2xlYW5FbnRyeQIFB2tBY3RpdmUGCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWtBc3NldElkQQUOcG10U3RyQXNzZXRJZEEJAMwIAgkBC1N0cmluZ0VudHJ5AgUJa0Fzc2V0SWRCBQ5wbXRTdHJBc3NldElkQgkAzAgCCQEMSW50ZWdlckVudHJ5AgUNa0JhbGFuY2VJbml0QQUJYW10QXNzZXRBCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rQmFsYW5jZUluaXRCBQlhbXRBc3NldEIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtCYWxhbmNlQQAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrQmFsYW5jZUIAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUEa0ZlZQkBEUBleHRyTmF0aXZlKDEwNTApAgUGb3JhY2xlAg1iYXNlX2ZlZV9jcG1tCQDMCAIFCnNoYXJlSXNzdWUJAMwIAgkBC1N0cmluZ0VudHJ5AgUNa1NoYXJlQXNzZXRJZAkA2AQBBQxzaGFyZUlzc3VlSWQJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtTaGFyZUFzc2V0U3VwcGx5BRJzaGFyZUluaXRpYWxTdXBwbHkFA25pbAMFDGZpcnN0SGFydmVzdAkAlAoCBQNuaWwJAJQKAgkAzggCBQliYXNlRW50cnkJAMwIAgkBDEJvb2xlYW5FbnRyeQIFDWtGaXJzdEhhcnZlc3QFDGZpcnN0SGFydmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUTa0ZpcnN0SGFydmVzdEhlaWdodAkAZAIFC3N0YXJ0SGVpZ2h0CQBoAgUVZmlyc3RIYXJ2ZXN0RW5kUGVyaW9kBQxwZXJpb2RMZW5ndGgFA25pbAUDbmlsCQCUCgIFA25pbAkAlAoCBQliYXNlRW50cnkFA25pbAFpARhrZWVwTGltaXRGb3JGaXJzdEhhcnZlc3QEC2NhbGxlckJ5dGVzBGFyZ3MIcEFtb3VudHMJcEFzc2V0SWRzCQELdmFsdWVPckVsc2UCCQEMaXNPcmFjbGVQb29sAQkApQgBCAUBaQZjYWxsZXIJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQADCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFDGFkbWluUHViS2V5MQkAzAgCBQxhZG1pblB1YktleTIJAMwIAgUMYWRtaW5QdWJLZXkzCQDMCAIFEWFkbWluSW52b2tlUHViS2V5BQNuaWwIBQFpFW9yaWdpbkNhbGxlclB1YmxpY0tleQkAAgECIU9ubHkgYWRtaW4gY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgMJAQIhPQIJAJADAQUEYXJncwABCQACAQIPV3JvbmcgYXJncyBzaXplBApzaGFyZUxpbWl0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEYXJncwAACQCUCgIFA25pbAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQtrU2hhcmVMaW1pdAUKc2hhcmVMaW1pdAUDbmlsBQNuaWwBaQEIZXhjaGFuZ2UEC2NhbGxlckJ5dGVzBGFyZ3MIcEFtb3VudHMJcEFzc2V0SWRzCQELdmFsdWVPckVsc2UCCQEMaXNPcmFjbGVQb29sAQkApQgBCAUBaQZjYWxsZXIJAQt2YWx1ZU9yRWxzZQIJAQxpc0RlcHJpY2F0ZWQBCQClCAEIBQFpBmNhbGxlcgkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAQGY2FsbGVyCQEHQWRkcmVzcwEFC2NhbGxlckJ5dGVzBA0kdDAyMzQ4NTIzNTYxCQCUCgIJAJEDAgUIcEFtb3VudHMAAAkBEXBhcnNlUGF5bWVudEFzc2V0AQkAkQMCBQlwQXNzZXRJZHMAAAQJcG10QW1vdW50CAUNJHQwMjM0ODUyMzU2MQJfMQQKcG10QXNzZXRJZAgFDSR0MDIzNDg1MjM1NjECXzIEEm1pbkFtb3VudFRvUmVjZWl2ZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGFyZ3MAAAQNJHQwMjM2MjYyMzcwMgkBDWdldFBvb2xBc3NldHMBCAUBaQZjYWxsZXIEC3N0ckFzc2V0SWRBCAUNJHQwMjM2MjYyMzcwMgJfMQQLc3RyQXNzZXRJZEIIBQ0kdDAyMzYyNjIzNzAyAl8yBAhhc3NldElkQQgFDSR0MDIzNjI2MjM3MDICXzMECGFzc2V0SWRCCAUNJHQwMjM2MjYyMzcwMgJfNAQNJHQwMjM3MTEyMzgxNwkBD2dldFBvb2xCYWxhbmNlcwMIBQFpBmNhbGxlcgUIYXNzZXRJZEEFCGFzc2V0SWRCBAhiYWxhbmNlQQgFDSR0MDIzNzExMjM4MTcCXzEECGJhbGFuY2VCCAUNJHQwMjM3MTEyMzgxNwJfMgQPYWNjb3VudEJhbGFuY2VBCAUNJHQwMjM3MTEyMzgxNwJfMwQPYWNjb3VudEJhbGFuY2VCCAUNJHQwMjM3MTEyMzgxNwJfNAMJAQIhPQIJAJADAQUEYXJncwABCQACAQIPV3JvbmcgYXJncyBzaXplAwMJAAACBQhiYWxhbmNlQQAABgkAAAIFCGJhbGFuY2VCAAAJAAIBAiBDYW4ndCBleGNoYW5nZSB3aXRoIHplcm8gYmFsYW5jZQMJAGcCAAAFEm1pbkFtb3VudFRvUmVjZWl2ZQkAAgEJAKwCAgI0TWluaW1hbCBhbW91bnQgdG8gcmVjZWl2ZSBtdXN0IGJlIHBvc2l0aXZlLiBBY3R1YWw6IAkApAMBBRJtaW5BbW91bnRUb1JlY2VpdmUDCQECIT0CCQCQAwEFCHBBbW91bnRzAAEJAAIBAh1PbmUgYXR0YWNoZWQgcGF5bWVudCBleHBlY3RlZAMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUIYXNzZXRJZEEJAMwIAgUIYXNzZXRJZEIFA25pbAUKcG10QXNzZXRJZAkAAgEJAKwCAgkArAICCQCsAgICJEluY29ycmVjdCBhc3NldCBhdHRhY2hlZC4gRXhwZWN0ZWQ6IAULc3RyQXNzZXRJZEECBCBvciAFC3N0ckFzc2V0SWRCAwMJAGYCBQhiYWxhbmNlQQUPYWNjb3VudEJhbGFuY2VBBgkAZgIFCGJhbGFuY2VCBQ9hY2NvdW50QmFsYW5jZUIJAJQKAgUDbmlsCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyBQlwbXRBbW91bnQFCnBtdEFzc2V0SWQFA25pbAkBEXN1c3BlbmRTdXNwaWNpb3VzBgUPYWNjb3VudEJhbGFuY2VBBQ9hY2NvdW50QmFsYW5jZUIFCGJhbGFuY2VBBQhiYWxhbmNlQgULc3RyQXNzZXRJZEEFC3N0ckFzc2V0SWRCBA0kdDAyNDcxNzI0Nzg0CQEMZ2V0RmVlUGFyYW1zAggFAWkGY2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIEA2ZlZQgFDSR0MDI0NzE3MjQ3ODQCXzEEBmdvdkZlZQgFDSR0MDI0NzE3MjQ3ODQCXzIEB3RlYW1GZWUIBQ0kdDAyNDcxNzI0Nzg0Al8zBA0kdDAyNDc5NzI1MTQ4AwkAAAIFCnBtdEFzc2V0SWQFCGFzc2V0SWRBCQENY2FsY3VsYXRlRmVlcwcFCXBtdEFtb3VudAUSbWluQW1vdW50VG9SZWNlaXZlBQhiYWxhbmNlQQUIYmFsYW5jZUIFA2ZlZQUGZ292RmVlBQd0ZWFtRmVlCQENY2FsY3VsYXRlRmVlcwcFCXBtdEFtb3VudAUSbWluQW1vdW50VG9SZWNlaXZlBQhiYWxhbmNlQgUIYmFsYW5jZUEFA2ZlZQUGZ292RmVlBQd0ZWFtRmVlBBBhbW91bnRXaXRob3V0RmVlCAUNJHQwMjQ3OTcyNTE0OAJfMQQNYW1vdW50V2l0aEZlZQgFDSR0MDI0Nzk3MjUxNDgCXzIEEGdvdmVybmFuY2VSZXdhcmQIBQ0kdDAyNDc5NzI1MTQ4Al8zBAp0ZWFtUmV3YXJkCAUNJHQwMjQ3OTcyNTE0OAJfNAQNJHQwMjUxNjIyNTQ5NwMJAAACBQpwbXRBc3NldElkBQhhc3NldElkQQkAlQoDCQBkAgUIYmFsYW5jZUEFCXBtdEFtb3VudAkAZQIJAGUCCQBlAgUIYmFsYW5jZUIFDWFtb3VudFdpdGhGZWUFEGdvdmVybmFuY2VSZXdhcmQFCnRlYW1SZXdhcmQFCGFzc2V0SWRCCQCVCgMJAGUCCQBlAgkAZQIFCGJhbGFuY2VBBQ1hbW91bnRXaXRoRmVlBRBnb3Zlcm5hbmNlUmV3YXJkBQp0ZWFtUmV3YXJkCQBkAgUIYmFsYW5jZUIFCXBtdEFtb3VudAUIYXNzZXRJZEEEC25ld0JhbGFuY2VBCAUNJHQwMjUxNjIyNTQ5NwJfMQQLbmV3QmFsYW5jZUIIBQ0kdDAyNTE2MjI1NDk3Al8yBAthc3NldElkU2VuZAgFDSR0MDI1MTYyMjU0OTcCXzMEDSR0MDI1NTExMjU3NzEDCQAAAgUKcG10QXNzZXRJZAUIYXNzZXRJZEEJAJQKAgUJcG10QW1vdW50CQBkAgkAZAIFDWFtb3VudFdpdGhGZWUFEGdvdmVybmFuY2VSZXdhcmQFCnRlYW1SZXdhcmQJAJQKAgkAZAIJAGQCBQ1hbW91bnRXaXRoRmVlBRBnb3Zlcm5hbmNlUmV3YXJkBQp0ZWFtUmV3YXJkBQlwbXRBbW91bnQEDHN0YWtlQW1vdW50QQgFDSR0MDI1NTExMjU3NzECXzEEDHN0YWtlQW1vdW50QggFDSR0MDI1NTExMjU3NzECXzIEBnN0YWtlMQMJAQhjb250YWlucwIFDXN0YWtpbmdBc3NldHMFC3N0ckFzc2V0SWRBCQD8BwQIBQFpBmNhbGxlcgIMc3Rha2VVbnN0YWtlCQDMCAIJAAACBQpwbXRBc3NldElkBQhhc3NldElkQQkAzAgCBQxzdGFrZUFtb3VudEEJAMwIAgULc3RyQXNzZXRJZEEFA25pbAUDbmlsAAADCQAAAgUGc3Rha2UxBQZzdGFrZTEEBnN0YWtlMgMJAQhjb250YWlucwIFDXN0YWtpbmdBc3NldHMFC3N0ckFzc2V0SWRCCQD8BwQIBQFpBmNhbGxlcgIMc3Rha2VVbnN0YWtlCQDMCAIJAAACBQpwbXRBc3NldElkBQhhc3NldElkQgkAzAgCBQxzdGFrZUFtb3VudEIJAMwIAgULc3RyQXNzZXRJZEIFA25pbAUDbmlsAAADCQAAAgUGc3Rha2UyBQZzdGFrZTIJAJQKAgUDbmlsCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtCYWxhbmNlQQULbmV3QmFsYW5jZUEJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtCYWxhbmNlQgULbmV3QmFsYW5jZUIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyBQ1hbW91bnRXaXRoRmVlBQthc3NldElkU2VuZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ9tb25leUJveEFkZHJlc3MFEGdvdmVybmFuY2VSZXdhcmQFC2Fzc2V0SWRTZW5kCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFDnRlYW1Cb3hBZGRyZXNzBQp0ZWFtUmV3YXJkBQthc3NldElkU2VuZAUDbmlsCQDMCAIFDWFtb3VudFdpdGhGZWUJAMwIAgULYXNzZXRJZFNlbmQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARZyZXBsZW5pc2hXaXRoVHdvVG9rZW5zBAtjYWxsZXJCeXRlcwRhcmdzCHBBbW91bnRzCXBBc3NldElkcwkBC3ZhbHVlT3JFbHNlAgkBDGlzT3JhY2xlUG9vbAEJAKUIAQgFAWkGY2FsbGVyCQELdmFsdWVPckVsc2UCCQEMaXNEZXByaWNhdGVkAQkApQgBCAUBaQZjYWxsZXIJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAEBmNhbGxlcgkBB0FkZHJlc3MBBQtjYWxsZXJCeXRlcwQLcG10QXNzZXRJZEEJARFwYXJzZVBheW1lbnRBc3NldAEJAJEDAgUJcEFzc2V0SWRzAAAEC3BtdEFzc2V0SWRCCQERcGFyc2VQYXltZW50QXNzZXQBCQCRAwIFCXBBc3NldElkcwABBAxzdGFrZUZhcm1pbmcJAAACCQCRAwIFBGFyZ3MAAAIEdHJ1ZQQIbG9ja1R5cGUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRhcmdzAAEEDSR0MDI3MDg2MjcxNzYJAQ1nZXRQb29sQXNzZXRzAQgFAWkGY2FsbGVyBAtzdHJBc3NldElkQQgFDSR0MDI3MDg2MjcxNzYCXzEEC3N0ckFzc2V0SWRCCAUNJHQwMjcwODYyNzE3NgJfMgQIYXNzZXRJZEEIBQ0kdDAyNzA4NjI3MTc2Al8zBAhhc3NldElkQggFDSR0MDI3MDg2MjcxNzYCXzQEDHNoYXJlQXNzZXRJZAgFDSR0MDI3MDg2MjcxNzYCXzUEDSR0MDI3MTg1MjcyOTEJAQ9nZXRQb29sQmFsYW5jZXMDCAUBaQZjYWxsZXIFCGFzc2V0SWRBBQhhc3NldElkQgQIYmFsYW5jZUEIBQ0kdDAyNzE4NTI3MjkxAl8xBAhiYWxhbmNlQggFDSR0MDI3MTg1MjcyOTECXzIED2FjY291bnRCYWxhbmNlQQgFDSR0MDI3MTg1MjcyOTECXzMED2FjY291bnRCYWxhbmNlQggFDSR0MDI3MTg1MjcyOTECXzQEEHNoYXJlQXNzZXRTdXBwbHkJAQtnZXRMcFN1cHBseQEIBQFpBmNhbGxlcgMJAQIhPQIJAJADAQUEYXJncwACCQACAQIPV3JvbmcgYXJncyBzaXplAwMJAQIhPQIJAJADAQUIcEFtb3VudHMAAgkBAiE9AgkAkAMBBQhwQW1vdW50cwADBwkAAgECHlR3byBvciB0aHJlZSBwYXltZW50cyBleHBlY3RlZAMDCQECIT0CBQtwbXRBc3NldElkQQUIYXNzZXRJZEEGCQECIT0CBQtwbXRBc3NldElkQgUIYXNzZXRJZEIJAAIBCQCsAgIJAKwCAgkArAICAiVJbmNvcnJlY3QgYXNzZXRzIGF0dGFjaGVkLiBFeHBlY3RlZDogBQtzdHJBc3NldElkQQIFIGFuZCAFC3N0ckFzc2V0SWRCAwMJAGYCBQhiYWxhbmNlQQUPYWNjb3VudEJhbGFuY2VBBgkAZgIFCGJhbGFuY2VCBQ9hY2NvdW50QmFsYW5jZUIJAJQKAgUDbmlsCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyCQCRAwIFCHBBbW91bnRzAAAFC3BtdEFzc2V0SWRBCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgkAkQMCBQhwQW1vdW50cwABBQtwbXRBc3NldElkQgUDbmlsAwkAAAIJAJADAQUIcEFtb3VudHMAAwkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgMJAAACCQCRAwIFCXBBc3NldElkcwACAQAFBHVuaXQJAJEDAgUJcEFzc2V0SWRzAAIJAJEDAgUIcEFtb3VudHMAAgUDbmlsCQDOCAIFA25pbAkBEXN1c3BlbmRTdXNwaWNpb3VzBgUPYWNjb3VudEJhbGFuY2VBBQ9hY2NvdW50QmFsYW5jZUIFCGJhbGFuY2VBBQhiYWxhbmNlQgULc3RyQXNzZXRJZEEFC3N0ckFzc2V0SWRCBA0kdDAyODI4MDI4NDc4CQEfY2FsY0xQQW1vdW50UmVwbGVuc2lzaFR3b1Rva2VucwcJAJEDAgUIcEFtb3VudHMAAAkAkQMCBQhwQW1vdW50cwABBQtwbXRBc3NldElkQQULcG10QXNzZXRJZEIFCGJhbGFuY2VBBQhiYWxhbmNlQgUQc2hhcmVBc3NldFN1cHBseQQVc2hhcmVUb2tlblRvUGF5QW1vdW50CAUNJHQwMjgyODAyODQ3OAJfMQQGY2hhbmdlCAUNJHQwMjgyODAyODQ3OAJfMgQNY2hhbmdlQXNzZXRJZAgFDSR0MDI4MjgwMjg0NzgCXzMECnBtdEFtb3VudEEIBQ0kdDAyODI4MDI4NDc4Al80BApwbXRBbW91bnRCCAUNJHQwMjgyODAyODQ3OAJfNQMJAAACBRVzaGFyZVRva2VuVG9QYXlBbW91bnQAAAkAAgECHVRvbyBzbWFsbCBhbW91bnQgdG8gcmVwbGVuaXNoAwkAZgIAAAUGY2hhbmdlCQACAQIKQ2hhbmdlIDwgMAQGc3Rha2UxAwkBCGNvbnRhaW5zAgUNc3Rha2luZ0Fzc2V0cwULc3RyQXNzZXRJZEEJAPwHBAgFAWkGY2FsbGVyAgxzdGFrZVVuc3Rha2UJAMwIAgYJAMwIAgUKcG10QW1vdW50QQkAzAgCBQtzdHJBc3NldElkQQUDbmlsBQNuaWwAAAMJAAACBQZzdGFrZTEFBnN0YWtlMQQGc3Rha2UyAwkBCGNvbnRhaW5zAgUNc3Rha2luZ0Fzc2V0cwULc3RyQXNzZXRJZEIJAPwHBAgFAWkGY2FsbGVyAgxzdGFrZVVuc3Rha2UJAMwIAgYJAMwIAgUKcG10QW1vdW50QgkAzAgCBQtzdHJBc3NldElkQgUDbmlsBQNuaWwAAAMJAAACBQZzdGFrZTIFBnN0YWtlMgQMc2hhcmVUb2tlblNUAwUMc3Rha2VGYXJtaW5nBApzdFBheW1lbnRzCQDOCAIJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFDHNoYXJlQXNzZXRJZAUVc2hhcmVUb2tlblRvUGF5QW1vdW50BQNuaWwDCQAAAgkAkAMBBQhwQW1vdW50cwADCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCAwkAAAIJAJEDAgUJcEFzc2V0SWRzAAIBAAUEdW5pdAkAkQMCBQlwQXNzZXRJZHMAAgkAkQMCBQhwQW1vdW50cwACBQNuaWwFA25pbAQHcmVpc3N1ZQkA/AcECAUBaQZjYWxsZXICEXJlaXNzdWVTaGFyZVRva2VuCQDMCAIFFXNoYXJlVG9rZW5Ub1BheUFtb3VudAUDbmlsBQNuaWwDCQAAAgUHcmVpc3N1ZQUHcmVpc3N1ZQQGc3Rha2UzCQD8BwQFDmZhcm1pbmdBZGRyZXNzAhdsb2NrU2hhcmVUb2tlbnNGcm9tUG9vbAkAzAgCBQtjYWxsZXJCeXRlcwkAzAgCCQClCAEIBQFpBmNhbGxlcgkAzAgCBQhsb2NrVHlwZQUDbmlsBQpzdFBheW1lbnRzAwkAAAIFBnN0YWtlMwUGc3Rha2UzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBB1JlaXNzdWUDBQxzaGFyZUFzc2V0SWQFFXNoYXJlVG9rZW5Ub1BheUFtb3VudAYJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyBRVzaGFyZVRva2VuVG9QYXlBbW91bnQFDHNoYXJlQXNzZXRJZAUDbmlsCQCUCgIFA25pbAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtCYWxhbmNlQQkAZAIFCGJhbGFuY2VBBQpwbXRBbW91bnRBCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrQmFsYW5jZUIJAGQCBQhiYWxhbmNlQgUKcG10QW1vdW50QgkAzAgCCQEMSW50ZWdlckVudHJ5AgURa1NoYXJlQXNzZXRTdXBwbHkJAGQCBRBzaGFyZUFzc2V0U3VwcGx5BRVzaGFyZVRva2VuVG9QYXlBbW91bnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyBQZjaGFuZ2UFDWNoYW5nZUFzc2V0SWQFA25pbAUMc2hhcmVUb2tlblNUBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEVcmVwbGVuaXNoV2l0aE9uZVRva2VuBAtjYWxsZXJCeXRlcwRhcmdzCHBBbW91bnRzCXBBc3NldElkcwkBC3ZhbHVlT3JFbHNlAgkBDGlzT3JhY2xlUG9vbAEJAKUIAQgFAWkGY2FsbGVyCQELdmFsdWVPckVsc2UCCQEMaXNEZXByaWNhdGVkAQkApQgBCAUBaQZjYWxsZXIJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAEBmNhbGxlcgkBB0FkZHJlc3MBBQtjYWxsZXJCeXRlcwQKcG10QXNzZXRJZAkBEXBhcnNlUGF5bWVudEFzc2V0AQkAkQMCBQlwQXNzZXRJZHMAAAQJcG10QW1vdW50CQCRAwIFCHBBbW91bnRzAAAEEHZpcnRHZXRNaW5BbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRhcmdzAAAEDHN0YWtlRmFybWluZwkAAAIJAJEDAgUEYXJncwABAgR0cnVlBAhsb2NrVHlwZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGFyZ3MAAgQNJHQwMzA3MzczMDgyNwkBDWdldFBvb2xBc3NldHMBCAUBaQZjYWxsZXIEC3N0ckFzc2V0SWRBCAUNJHQwMzA3MzczMDgyNwJfMQQLc3RyQXNzZXRJZEIIBQ0kdDAzMDczNzMwODI3Al8yBAhhc3NldElkQQgFDSR0MDMwNzM3MzA4MjcCXzMECGFzc2V0SWRCCAUNJHQwMzA3MzczMDgyNwJfNAQMc2hhcmVBc3NldElkCAUNJHQwMzA3MzczMDgyNwJfNQQNJHQwMzA4MzIzMDkzOAkBD2dldFBvb2xCYWxhbmNlcwMIBQFpBmNhbGxlcgUIYXNzZXRJZEEFCGFzc2V0SWRCBAhiYWxhbmNlQQgFDSR0MDMwODMyMzA5MzgCXzEECGJhbGFuY2VCCAUNJHQwMzA4MzIzMDkzOAJfMgQPYWNjb3VudEJhbGFuY2VBCAUNJHQwMzA4MzIzMDkzOAJfMwQPYWNjb3VudEJhbGFuY2VCCAUNJHQwMzA4MzIzMDkzOAJfNAQQc2hhcmVBc3NldFN1cHBseQkBC2dldExwU3VwcGx5AQgFAWkGY2FsbGVyBAdpbml0aWFsCQAAAgkAZAIFCGJhbGFuY2VBBQhiYWxhbmNlQgAAAwkBAiE9AgkAkAMBBQRhcmdzAAMJAAIBAg9Xcm9uZyBhcmdzIHNpemUDAwkBAiE9AgkAkAMBBQhwQW1vdW50cwABCQECIT0CCQCQAwEFCHBBbW91bnRzAAIHCQACAQIjVHdvIG9yIG9uZSBhdHRhY2hlZCBhc3NldHMgZXhwZWN0ZWQDAwkBAiE9AgUKcG10QXNzZXRJZAUIYXNzZXRJZEEJAQIhPQIFCnBtdEFzc2V0SWQFCGFzc2V0SWRCBwkAAgEJAKwCAgkArAICCQCsAgICJEluY29ycmVjdCBhc3NldCBhdHRhY2hlZC4gRXhwZWN0ZWQ6IAULc3RyQXNzZXRJZEECBCBvciAFC3N0ckFzc2V0SWRCAwUHaW5pdGlhbAkAAgECMEZvciBpbml0aWFsIGV4Y2hhbmdlciB5b3UgbmVlZCB0byB1c2UgdHdvIHRva2VucwMDCQBmAgUIYmFsYW5jZUEFD2FjY291bnRCYWxhbmNlQQYJAGYCBQhiYWxhbmNlQgUPYWNjb3VudEJhbGFuY2VCCQCUCgIFA25pbAkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUJcG10QW1vdW50BQpwbXRBc3NldElkBQNuaWwDCQAAAgkAkAMBBQhwQW1vdW50cwACCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCAwkAAAIJAJEDAgUJcEFzc2V0SWRzAAIBAAUEdW5pdAkAkQMCBQlwQXNzZXRJZHMAAgkAkQMCBQhwQW1vdW50cwACBQNuaWwJAM4IAgUDbmlsCQERc3VzcGVuZFN1c3BpY2lvdXMGBQ9hY2NvdW50QmFsYW5jZUEFD2FjY291bnRCYWxhbmNlQgUIYmFsYW5jZUEFCGJhbGFuY2VCBQtzdHJBc3NldElkQQULc3RyQXNzZXRJZEIEDSR0MDMxODk5MzE5NjYJAQxnZXRGZWVQYXJhbXMCCAUBaQZjYWxsZXIIBQFpDG9yaWdpbkNhbGxlcgQDZmVlCAUNJHQwMzE4OTkzMTk2NgJfMQQGZ292RmVlCAUNJHQwMzE4OTkzMTk2NgJfMgQHdGVhbUZlZQgFDSR0MDMxODk5MzE5NjYCXzMEDSR0MDMxOTc1MzIwMzcJAQxnZXRBc3NldEluZm8BBQpwbXRBc3NldElkBA1wbXRBc3NldElkU3RyCAUNJHQwMzE5NzUzMjAzNwJfMQQOcG10QXNzZXRJZE5hbWUIBQ0kdDAzMTk3NTMyMDM3Al8yBA0kdDAzMjA1NTMyMzAwCQEdY2FsY0xQQW1vdW50UmVwbGVuaXNoT25lVG9rZW4LBQlwbXRBbW91bnQFCnBtdEFzc2V0SWQFCGFzc2V0SWRBBQhhc3NldElkQgUIYmFsYW5jZUEFCGJhbGFuY2VCBRBzaGFyZUFzc2V0U3VwcGx5BQNmZWUFBmdvdkZlZQUHdGVhbUZlZQUQdmlydEdldE1pbkFtb3VudAQVc2hhcmVUb2tlblRvUGF5QW1vdW50CAUNJHQwMzIwNTUzMjMwMAJfMQQLbmV3QmFsYW5jZUEIBQ0kdDAzMjA1NTMyMzAwAl8yBAtuZXdCYWxhbmNlQggFDSR0MDMyMDU1MzIzMDACXzMECWdvdlJld2FyZAgFDSR0MDMyMDU1MzIzMDACXzQECnRlYW1SZXdhcmQIBQ0kdDAzMjA1NTMyMzAwAl81BA5nb3ZSZXdhcmRBc3NldAgFDSR0MDMyMDU1MzIzMDACXzYEEWdvdlJld2FyZEFzc2V0U3RyAwkAAAIFDmdvdlJld2FyZEFzc2V0BQhhc3NldElkQQULc3RyQXNzZXRJZEEFC3N0ckFzc2V0SWRCAwkAAAIFFXNoYXJlVG9rZW5Ub1BheUFtb3VudAAACQACAQIdVG9vIHNtYWxsIGFtb3VudCB0byByZXBsZW5pc2gEBnN0YWtlMQMJAQhjb250YWlucwIFDXN0YWtpbmdBc3NldHMFDXBtdEFzc2V0SWRTdHIJAPwHBAgFAWkGY2FsbGVyAgxzdGFrZVVuc3Rha2UJAMwIAgYJAMwIAgUJcG10QW1vdW50CQDMCAIFDXBtdEFzc2V0SWRTdHIFA25pbAUDbmlsAAADCQAAAgUGc3Rha2UxBQZzdGFrZTEEBnN0YWtlMgMJAQhjb250YWlucwIFDXN0YWtpbmdBc3NldHMFEWdvdlJld2FyZEFzc2V0U3RyCQD8BwQIBQFpBmNhbGxlcgIMc3Rha2VVbnN0YWtlCQDMCAIHCQDMCAIJAGQCBQlnb3ZSZXdhcmQFCnRlYW1SZXdhcmQJAMwIAgURZ292UmV3YXJkQXNzZXRTdHIFA25pbAUDbmlsAAADCQAAAgUGc3Rha2UyBQZzdGFrZTIEDHNoYXJlVG9rZW5TVAMFDHN0YWtlRmFybWluZwQKc3RQYXltZW50cwkAzggCCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQxzaGFyZUFzc2V0SWQFFXNoYXJlVG9rZW5Ub1BheUFtb3VudAUDbmlsAwkAAAIJAJADAQUIcEFtb3VudHMAAgkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgMJAAACCQCRAwIFCXBBc3NldElkcwABAQAFBHVuaXQJAJEDAgUJcEFzc2V0SWRzAAEJAJEDAgUIcEFtb3VudHMAAQUDbmlsBQNuaWwEB3JlaXNzdWUJAPwHBAgFAWkGY2FsbGVyAhFyZWlzc3VlU2hhcmVUb2tlbgkAzAgCBRVzaGFyZVRva2VuVG9QYXlBbW91bnQFA25pbAUDbmlsAwkAAAIFB3JlaXNzdWUFB3JlaXNzdWUEBnN0YWtlMwkA/AcEBQ5mYXJtaW5nQWRkcmVzcwIXbG9ja1NoYXJlVG9rZW5zRnJvbVBvb2wJAMwIAgULY2FsbGVyQnl0ZXMJAMwIAgkApQgBCAUBaQZjYWxsZXIJAMwIAgUIbG9ja1R5cGUFA25pbAUKc3RQYXltZW50cwMJAAACBQZzdGFrZTMFBnN0YWtlMwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQdSZWlzc3VlAwUMc2hhcmVBc3NldElkBRVzaGFyZVRva2VuVG9QYXlBbW91bnQGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUVc2hhcmVUb2tlblRvUGF5QW1vdW50BQxzaGFyZUFzc2V0SWQFA25pbAkAlAoCBQNuaWwJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrQmFsYW5jZUEFC25ld0JhbGFuY2VBCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrQmFsYW5jZUIFC25ld0JhbGFuY2VCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrU2hhcmVBc3NldFN1cHBseQkAZAIFEHNoYXJlQXNzZXRTdXBwbHkFFXNoYXJlVG9rZW5Ub1BheUFtb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ9tb25leUJveEFkZHJlc3MFCWdvdlJld2FyZAUOZ292UmV3YXJkQXNzZXQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUOdGVhbUJveEFkZHJlc3MFCnRlYW1SZXdhcmQFDmdvdlJld2FyZEFzc2V0BQNuaWwFDHNoYXJlVG9rZW5TVAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCHdpdGhkcmF3BAtjYWxsZXJCeXRlcwRhcmdzCHBBbW91bnRzCXBBc3NldElkcwkBC3ZhbHVlT3JFbHNlAgkBDGlzT3JhY2xlUG9vbAEJAKUIAQgFAWkGY2FsbGVyCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABAZjYWxsZXIJAQdBZGRyZXNzAQULY2FsbGVyQnl0ZXMEDSR0MDM0MzY4MzQ0NTgJAQ1nZXRQb29sQXNzZXRzAQgFAWkGY2FsbGVyBAtzdHJBc3NldElkQQgFDSR0MDM0MzY4MzQ0NTgCXzEEC3N0ckFzc2V0SWRCCAUNJHQwMzQzNjgzNDQ1OAJfMgQIYXNzZXRJZEEIBQ0kdDAzNDM2ODM0NDU4Al8zBAhhc3NldElkQggFDSR0MDM0MzY4MzQ0NTgCXzQEDHNoYXJlQXNzZXRJZAgFDSR0MDM0MzY4MzQ0NTgCXzUEDSR0MDM0NDY3MzQ1NzMJAQ9nZXRQb29sQmFsYW5jZXMDCAUBaQZjYWxsZXIFCGFzc2V0SWRBBQhhc3NldElkQgQIYmFsYW5jZUEIBQ0kdDAzNDQ2NzM0NTczAl8xBAhiYWxhbmNlQggFDSR0MDM0NDY3MzQ1NzMCXzIED2FjY291bnRCYWxhbmNlQQgFDSR0MDM0NDY3MzQ1NzMCXzMED2FjY291bnRCYWxhbmNlQggFDSR0MDM0NDY3MzQ1NzMCXzQEEHNoYXJlQXNzZXRTdXBwbHkJAQtnZXRMcFN1cHBseQEIBQFpBmNhbGxlcgQNJHQwMzQ2MzUzNTAxNQMJAAACCQCQAwEFCHBBbW91bnRzAAEEBnBBc3NldAkBEXBhcnNlUGF5bWVudEFzc2V0AQkAkQMCBQlwQXNzZXRJZHMAAAMJAQIhPQIFBnBBc3NldAUMc2hhcmVBc3NldElkCQACAQkArAICAiRJbmNvcnJlY3QgYXNzZXQgYXR0YWNoZWQuIEV4cGVjdGVkOiAJANgEAQUMc2hhcmVBc3NldElkCQCUCgIJAJEDAgUIcEFtb3VudHMAAAUGcEFzc2V0CQCUCgIAAAUMc2hhcmVBc3NldElkBAlwbXRBbW91bnQIBQ0kdDAzNDYzNTM1MDE1Al8xBApwbXRBc3NldElkCAUNJHQwMzQ2MzUzNTAxNQJfMgMJAQIhPQIJAJADAQUEYXJncwABCQACAQIPV3JvbmcgYXJncyBzaXplAwkAZgIJAJADAQUIcEFtb3VudHMAAQkAAgECHU9uZSBhdHRhY2hlZCBwYXltZW50IGV4cGVjdGVkAwMJAGYCBQhiYWxhbmNlQQUPYWNjb3VudEJhbGFuY2VBBgkAZgIFCGJhbGFuY2VCBQ9hY2NvdW50QmFsYW5jZUIJAJQKAgUDbmlsCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyBQlwbXRBbW91bnQFCnBtdEFzc2V0SWQFA25pbAkBEXN1c3BlbmRTdXNwaWNpb3VzBgUPYWNjb3VudEJhbGFuY2VBBQ9hY2NvdW50QmFsYW5jZUIFCGJhbGFuY2VBBQhiYWxhbmNlQgULc3RyQXNzZXRJZEEFC3N0ckFzc2V0SWRCBAx1bmxvY2tBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkBC3ZhbHVlT3JFbHNlAgkAkQMCBQRhcmdzAAACATAEBnVubG9jawMJAGYCBQx1bmxvY2tBbW91bnQAAAkA/AcEBQ5mYXJtaW5nQWRkcmVzcwIbd2l0aGRyYXdTaGFyZVRva2Vuc0Zyb21Qb29sCQDMCAIFC2NhbGxlckJ5dGVzCQDMCAIJAKUIAQgFAWkGY2FsbGVyCQDMCAIFDHVubG9ja0Ftb3VudAUDbmlsBQNuaWwAAAMJAAACBQZ1bmxvY2sFBnVubG9jawQOd2l0aGRyYXdBbW91bnQJAGQCBQlwbXRBbW91bnQFDHVubG9ja0Ftb3VudAQMYW1vdW50VG9QYXlBCQBrAwUOd2l0aGRyYXdBbW91bnQFCGJhbGFuY2VBBRBzaGFyZUFzc2V0U3VwcGx5BAxhbW91bnRUb1BheUIJAGsDBQ53aXRoZHJhd0Ftb3VudAUIYmFsYW5jZUIFEHNoYXJlQXNzZXRTdXBwbHkEBnN0YWtlMQMJAQhjb250YWlucwIFDXN0YWtpbmdBc3NldHMFC3N0ckFzc2V0SWRBCQD8BwQIBQFpBmNhbGxlcgIMc3Rha2VVbnN0YWtlCQDMCAIHCQDMCAIFDGFtb3VudFRvUGF5QQkAzAgCBQtzdHJBc3NldElkQQUDbmlsBQNuaWwAAAMJAAACBQZzdGFrZTEFBnN0YWtlMQQGc3Rha2UyAwkBCGNvbnRhaW5zAgUNc3Rha2luZ0Fzc2V0cwULc3RyQXNzZXRJZEIJAPwHBAgFAWkGY2FsbGVyAgxzdGFrZVVuc3Rha2UJAMwIAgcJAMwIAgUMYW1vdW50VG9QYXlCCQDMCAIFC3N0ckFzc2V0SWRCBQNuaWwFA25pbAAAAwkAAAIFBnN0YWtlMgUGc3Rha2UyCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQx1bmxvY2tBbW91bnQFDHNoYXJlQXNzZXRJZAUDbmlsCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtCYWxhbmNlQQkAZQIFCGJhbGFuY2VBBQxhbW91bnRUb1BheUEJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtCYWxhbmNlQgkAZQIFCGJhbGFuY2VCBQxhbW91bnRUb1BheUIJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtTaGFyZUFzc2V0U3VwcGx5CQBlAgUQc2hhcmVBc3NldFN1cHBseQUOd2l0aGRyYXdBbW91bnQJAMwIAgkBBEJ1cm4CBQxzaGFyZUFzc2V0SWQFDndpdGhkcmF3QW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUMYW1vdW50VG9QYXlBBQhhc3NldElkQQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFDGFtb3VudFRvUGF5QgUIYXNzZXRJZEIFA25pbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEHdpdGhkcmF3T25lVG9rZW4EC2NhbGxlckJ5dGVzBGFyZ3MIcEFtb3VudHMJcEFzc2V0SWRzCQELdmFsdWVPckVsc2UCCQEMaXNPcmFjbGVQb29sAQkApQgBCAUBaQZjYWxsZXIJAQt2YWx1ZU9yRWxzZQIJAQxpc0RlcHJpY2F0ZWQBCQClCAEIBQFpBmNhbGxlcgkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAQGY2FsbGVyCQEHQWRkcmVzcwEFC2NhbGxlckJ5dGVzBA13aXRoZHJhd0Fzc2V0AwkAAAIJAJEDAgUEYXJncwAAAgAFBHVuaXQJANkEAQkAkQMCBQRhcmdzAAAEDSR0MDM3MjMzMzczMjMJAQ1nZXRQb29sQXNzZXRzAQgFAWkGY2FsbGVyBAtzdHJBc3NldElkQQgFDSR0MDM3MjMzMzczMjMCXzEEC3N0ckFzc2V0SWRCCAUNJHQwMzcyMzMzNzMyMwJfMgQIYXNzZXRJZEEIBQ0kdDAzNzIzMzM3MzIzAl8zBAhhc3NldElkQggFDSR0MDM3MjMzMzczMjMCXzQEDHNoYXJlQXNzZXRJZAgFDSR0MDM3MjMzMzczMjMCXzUEDSR0MDM3MzMyMzc0MzgJAQ9nZXRQb29sQmFsYW5jZXMDCAUBaQZjYWxsZXIFCGFzc2V0SWRBBQhhc3NldElkQgQIYmFsYW5jZUEIBQ0kdDAzNzMzMjM3NDM4Al8xBAhiYWxhbmNlQggFDSR0MDM3MzMyMzc0MzgCXzIED2FjY291bnRCYWxhbmNlQQgFDSR0MDM3MzMyMzc0MzgCXzMED2FjY291bnRCYWxhbmNlQggFDSR0MDM3MzMyMzc0MzgCXzQEEHNoYXJlQXNzZXRTdXBwbHkJAQtnZXRMcFN1cHBseQEIBQFpBmNhbGxlcgQNJHQwMzc1MDAzNzg1MgMJAAACCQCQAwEFCHBBbW91bnRzAAEEBnBBc3NldAkBEXBhcnNlUGF5bWVudEFzc2V0AQkAkQMCBQlwQXNzZXRJZHMAAAMJAQIhPQIFBnBBc3NldAUMc2hhcmVBc3NldElkCQACAQkArAICAiRJbmNvcnJlY3QgYXNzZXQgYXR0YWNoZWQuIEV4cGVjdGVkOiAJANgEAQUMc2hhcmVBc3NldElkCQCUCgIJAJEDAgUIcEFtb3VudHMAAAUGcEFzc2V0CQCUCgIAAAUMc2hhcmVBc3NldElkBAlwbXRBbW91bnQIBQ0kdDAzNzUwMDM3ODUyAl8xBApwbXRBc3NldElkCAUNJHQwMzc1MDAzNzg1MgJfMgQPdmlydE1pblRvUmVjaXZlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEYXJncwABAwkBAiE9AgkAkAMBBQRhcmdzAAMJAAIBAg9Xcm9uZyBhcmdzIHNpemUDCQBmAgkAkAMBBQhwQW1vdW50cwABCQACAQIdT25lIGF0dGFjaGVkIHBheW1lbnQgZXhwZWN0ZWQDCQECIT0CBQpwbXRBc3NldElkBQxzaGFyZUFzc2V0SWQJAAIBCQCsAgICJEluY29ycmVjdCBhc3NldCBhdHRhY2hlZC4gRXhwZWN0ZWQ6IAkA2AQBBQxzaGFyZUFzc2V0SWQDCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFCGFzc2V0SWRBCQDMCAIFCGFzc2V0SWRCBQNuaWwFDXdpdGhkcmF3QXNzZXQJAAIBAhlJbmNvcnJlY3Qgd2l0aGRyYXcgYXNzZXQuAwMJAGYCBQhiYWxhbmNlQQUPYWNjb3VudEJhbGFuY2VBBgkAZgIFCGJhbGFuY2VCBQ9hY2NvdW50QmFsYW5jZUIJAJQKAgUDbmlsCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyBQlwbXRBbW91bnQFCnBtdEFzc2V0SWQFA25pbAkBEXN1c3BlbmRTdXNwaWNpb3VzBgUPYWNjb3VudEJhbGFuY2VBBQ9hY2NvdW50QmFsYW5jZUIFCGJhbGFuY2VBBQhiYWxhbmNlQgULc3RyQXNzZXRJZEEFC3N0ckFzc2V0SWRCBAx1bmxvY2tBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkBC3ZhbHVlT3JFbHNlAgkAkQMCBQRhcmdzAAICATAEBnVubG9jawMJAGYCBQx1bmxvY2tBbW91bnQAAAkA/AcEBQ5mYXJtaW5nQWRkcmVzcwIbd2l0aGRyYXdTaGFyZVRva2Vuc0Zyb21Qb29sCQDMCAIFC2NhbGxlckJ5dGVzCQDMCAIJAKUIAQgFAWkGY2FsbGVyCQDMCAIFDHVubG9ja0Ftb3VudAUDbmlsBQNuaWwAAAMJAAACBQZ1bmxvY2sFBnVubG9jawQOd2l0aGRyYXdBbW91bnQJAGQCBQlwbXRBbW91bnQFDHVubG9ja0Ftb3VudAQMYW1vdW50VG9QYXlBCQBrAwUOd2l0aGRyYXdBbW91bnQFCGJhbGFuY2VBBRBzaGFyZUFzc2V0U3VwcGx5BAxhbW91bnRUb1BheUIJAGsDBQ53aXRoZHJhd0Ftb3VudAUIYmFsYW5jZUIFEHNoYXJlQXNzZXRTdXBwbHkEDSR0MDM5MTE5MzkxODYJAQxnZXRGZWVQYXJhbXMCCAUBaQZjYWxsZXIIBQFpDG9yaWdpbkNhbGxlcgQDZmVlCAUNJHQwMzkxMTkzOTE4NgJfMQQGZ292RmVlCAUNJHQwMzkxMTkzOTE4NgJfMgQHdGVhbUZlZQgFDSR0MDM5MTE5MzkxODYCXzMEDSR0MDM5MTk5Mzk2MTMDCQAAAgUNd2l0aGRyYXdBc3NldAUIYXNzZXRJZEEJAQ1jYWxjdWxhdGVGZWVzBwUMYW1vdW50VG9QYXlCBQ92aXJ0TWluVG9SZWNpdmUJAGUCBQhiYWxhbmNlQgUMYW1vdW50VG9QYXlCCQBlAgUIYmFsYW5jZUEFDGFtb3VudFRvUGF5QQUDZmVlBQZnb3ZGZWUFB3RlYW1GZWUJAQ1jYWxjdWxhdGVGZWVzBwUMYW1vdW50VG9QYXlBBQ92aXJ0TWluVG9SZWNpdmUJAGUCBQhiYWxhbmNlQQUMYW1vdW50VG9QYXlBCQBlAgUIYmFsYW5jZUIFDGFtb3VudFRvUGF5QgUDZmVlBQZnb3ZGZWUFB3RlYW1GZWUEEGFtb3VudFdpdGhvdXRGZWUIBQ0kdDAzOTE5OTM5NjEzAl8xBA1hbW91bnRXaXRoRmVlCAUNJHQwMzkxOTkzOTYxMwJfMgQQZ292ZXJuYW5jZVJld2FyZAgFDSR0MDM5MTk5Mzk2MTMCXzMECnRlYW1SZXdhcmQIBQ0kdDAzOTE5OTM5NjEzAl80BA0kdDAzOTYyNjQwOTM2AwkAAAIFDXdpdGhkcmF3QXNzZXQFCGFzc2V0SWRBBAd1bnN0YWtlAwkBCGNvbnRhaW5zAgUNc3Rha2luZ0Fzc2V0cwULc3RyQXNzZXRJZEEJAPwHBAgFAWkGY2FsbGVyAgxzdGFrZVVuc3Rha2UJAMwIAgcJAMwIAgkAZAIJAGQCCQBkAgUMYW1vdW50VG9QYXlBBQ1hbW91bnRXaXRoRmVlBRBnb3Zlcm5hbmNlUmV3YXJkBQp0ZWFtUmV3YXJkCQDMCAIFC3N0ckFzc2V0SWRBBQNuaWwFA25pbAAAAwkAAAIFB3Vuc3Rha2UFB3Vuc3Rha2UJAJYKBAkAZQIJAGUCCQBlAgkAZQIFCGJhbGFuY2VBBQxhbW91bnRUb1BheUEFDWFtb3VudFdpdGhGZWUFEGdvdmVybmFuY2VSZXdhcmQFCnRlYW1SZXdhcmQFCGJhbGFuY2VCBQhhc3NldElkQQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIJAGQCBQxhbW91bnRUb1BheUEFDWFtb3VudFdpdGhGZWUFCGFzc2V0SWRBBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EB3Vuc3Rha2UDCQEIY29udGFpbnMCBQ1zdGFraW5nQXNzZXRzBQtzdHJBc3NldElkQgkA/AcECAUBaQZjYWxsZXICDHN0YWtlVW5zdGFrZQkAzAgCBwkAzAgCCQBkAgkAZAIJAGQCBQxhbW91bnRUb1BheUIFDWFtb3VudFdpdGhGZWUFEGdvdmVybmFuY2VSZXdhcmQFCnRlYW1SZXdhcmQJAMwIAgULc3RyQXNzZXRJZEIFA25pbAUDbmlsAAADCQAAAgUHdW5zdGFrZQUHdW5zdGFrZQkAlgoEBQhiYWxhbmNlQQkAZQIJAGUCCQBlAgkAZQIFCGJhbGFuY2VCBQxhbW91bnRUb1BheUIFDWFtb3VudFdpdGhGZWUFEGdvdmVybmFuY2VSZXdhcmQFCnRlYW1SZXdhcmQFCGFzc2V0SWRCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgkAZAIFDGFtb3VudFRvUGF5QgUNYW1vdW50V2l0aEZlZQUIYXNzZXRJZEIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQLbmV3QmFsYW5jZUEIBQ0kdDAzOTYyNjQwOTM2Al8xBAtuZXdCYWxhbmNlQggFDSR0MDM5NjI2NDA5MzYCXzIEEGdvdlJld2FyZEFzc2V0SWQIBQ0kdDAzOTYyNjQwOTM2Al8zBAx1c2VyVHJhbnNmZXIIBQ0kdDAzOTYyNjQwOTM2Al80CQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQx1bmxvY2tBbW91bnQFDHNoYXJlQXNzZXRJZAUDbmlsCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa0JhbGFuY2VBBQtuZXdCYWxhbmNlQQkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa0JhbGFuY2VCBQtuZXdCYWxhbmNlQgkAzAgCCQEMSW50ZWdlckVudHJ5AgURa1NoYXJlQXNzZXRTdXBwbHkJAGUCBRBzaGFyZUFzc2V0U3VwcGx5BQ53aXRoZHJhd0Ftb3VudAkAzAgCCQEEQnVybgIFDHNoYXJlQXNzZXRJZAUOd2l0aGRyYXdBbW91bnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUPbW9uZXlCb3hBZGRyZXNzBRBnb3Zlcm5hbmNlUmV3YXJkBRBnb3ZSZXdhcmRBc3NldElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFDnRlYW1Cb3hBZGRyZXNzBQp0ZWFtUmV3YXJkBRBnb3ZSZXdhcmRBc3NldElkBQNuaWwFDHVzZXJUcmFuc2ZlcgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBGXRha2VJbnRvQWNjb3VudEV4dHJhRnVuZHMEC2NhbGxlckJ5dGVzBGFyZ3MIcEFtb3VudHMJcEFzc2V0SWRzCQELdmFsdWVPckVsc2UCCQEMaXNPcmFjbGVQb29sAQkApQgBCAUBaQZjYWxsZXIJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAEDSR0MDQxNjk2NDE3NzIJAQ1nZXRQb29sQXNzZXRzAQgFAWkGY2FsbGVyBAtzdHJBc3NldElkQQgFDSR0MDQxNjk2NDE3NzICXzEEC3N0ckFzc2V0SWRCCAUNJHQwNDE2OTY0MTc3MgJfMgQIYXNzZXRJZEEIBQ0kdDA0MTY5NjQxNzcyAl8zBAhhc3NldElkQggFDSR0MDQxNjk2NDE3NzICXzQEBWNsYWltAwMJAAACBQhhc3NldElkQQUEVVNETgYJAAACBQhhc3NldElkQgUEVVNETgkA/AcECAUBaQZjYWxsZXICE2NsYWltTmV0cmlub1Jld2FyZHMFA25pbAUDbmlsBQNuaWwDCQAAAgUFY2xhaW0FBWNsYWltBA0kdDA0MTk1NjQyMDkyCQEPZ2V0UG9vbEJhbGFuY2VzAwgFAWkGY2FsbGVyBQhhc3NldElkQQUIYXNzZXRJZEIECGJhbGFuY2VBCAUNJHQwNDE5NTY0MjA5MgJfMQQIYmFsYW5jZUIIBQ0kdDA0MTk1NjQyMDkyAl8yBA9hY2NvdW50QmFsYW5jZUEIBQ0kdDA0MTk1NjQyMDkyAl8zBA9hY2NvdW50QmFsYW5jZUIIBQ0kdDA0MTk1NjQyMDkyAl80BA1zdGFrZWRBbW91bnRBCAUNJHQwNDE5NTY0MjA5MgJfNQQNc3Rha2VkQW1vdW50QggFDSR0MDQxOTU2NDIwOTICXzYEDWFtb3VudEVucm9sbEEJAGUCBQ9hY2NvdW50QmFsYW5jZUEFCGJhbGFuY2VBBA1hbW91bnRFbnJvbGxCCQBlAgUPYWNjb3VudEJhbGFuY2VCBQhiYWxhbmNlQgQNJHQwNDIyMTI0MjUyNgMJAAACBQhhc3NldElkQQUETDJNUAkAlAoCCQBlAgUPYWNjb3VudEJhbGFuY2VBBQ1zdGFrZWRBbW91bnRBBQ1hbW91bnRFbnJvbGxCAwkAAAIFCGFzc2V0SWRCBQRMMk1QCQCUCgIFDWFtb3VudEVucm9sbEEJAGUCBQ9hY2NvdW50QmFsYW5jZUIFDXN0YWtlZEFtb3VudEIJAJQKAgUNYW1vdW50RW5yb2xsQQUNYW1vdW50RW5yb2xsQgQOYW1vdW50VG9TdGFrZUEIBQ0kdDA0MjIxMjQyNTI2Al8xBA5hbW91bnRUb1N0YWtlQggFDSR0MDQyMjEyNDI1MjYCXzIDCQECIT0CCQCQAwEFBGFyZ3MAAAkAAgECD1dyb25nIGFyZ3Mgc2l6ZQMJAQIhPQIFD21vbmV5Qm94QWRkcmVzcwgFAWkMb3JpZ2luQ2FsbGVyCQACAQImT25seSB0aGUgd2FsbGV0IGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24DAwkAZgIAAAUNYW1vdW50RW5yb2xsQQYJAGYCAAAFDWFtb3VudEVucm9sbEIJAQdzdXNwZW5kAQIWRW5yb2xsIGFtb3VudCBuZWdhdGl2ZQMDCQAAAgUNYW1vdW50RW5yb2xsQQAACQAAAgUNYW1vdW50RW5yb2xsQgAABwkAAgECEE5vIG1vbmV5IHRvIHRha2UEBnN0YWtlMQMDCQEIY29udGFpbnMCBQ1zdGFraW5nQXNzZXRzBQtzdHJBc3NldElkQQkAZgIFDmFtb3VudFRvU3Rha2VBAAAHCQD8BwQIBQFpBmNhbGxlcgIMc3Rha2VVbnN0YWtlCQDMCAIGCQDMCAIFDmFtb3VudFRvU3Rha2VBCQDMCAIFC3N0ckFzc2V0SWRBBQNuaWwFA25pbAAAAwkAAAIFBnN0YWtlMQUGc3Rha2UxBAZzdGFrZTIDAwkBCGNvbnRhaW5zAgUNc3Rha2luZ0Fzc2V0cwULc3RyQXNzZXRJZEIJAGYCBQ5hbW91bnRUb1N0YWtlQgAABwkA/AcECAUBaQZjYWxsZXICDHN0YWtlVW5zdGFrZQkAzAgCBgkAzAgCBQ5hbW91bnRUb1N0YWtlQgkAzAgCBQtzdHJBc3NldElkQgUDbmlsBQNuaWwAAAMJAAACBQZzdGFrZTIFBnN0YWtlMgkAlAoCBQNuaWwJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa0JhbGFuY2VBCQBkAgUIYmFsYW5jZUEFDWFtb3VudEVucm9sbEEJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtCYWxhbmNlQgkAZAIFCGJhbGFuY2VCBQ1hbW91bnRFbnJvbGxCBQNuaWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAEE211bHRpU2lnbmVkQnlBZG1pbnMEEmFkbWluUHViS2V5MVNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFDGFkbWluUHViS2V5MQABAAAEEmFkbWluUHViS2V5MlNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEFDGFkbWluUHViS2V5MgABAAAEEmFkbWluUHViS2V5M1NpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAIFDGFkbWluUHViS2V5MwABAAAJAGcCCQBkAgkAZAIFEmFkbWluUHViS2V5MVNpZ25lZAUSYWRtaW5QdWJLZXkyU2lnbmVkBRJhZG1pblB1YktleTNTaWduZWQAAgUTbXVsdGlTaWduZWRCeUFkbWluc27wwQU=", "height": 2694651, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: n8BZ2RUtVcqUYQx2xtChh4SyyjMWq4LnzVyVA8t8rq6 Next: none Diff:
OldNewDifferences
5151
5252 let y = "eurn_asset_id"
5353
54-let z = "staking_assets"
54+let z = "l2mp_asset_id"
5555
56-let A = "active_all_contracts"
56+let A = "staking_assets"
5757
58-let B = "discounts"
58+let B = "active_all_contracts"
5959
60-let C = "discount_values"
60+let C = "discounts"
6161
62-let D = "_GSwop_amount"
62+let D = "discount_values"
6363
64-let E = "_SWOP_amount"
64+let E = "_GSwop_amount"
6565
66-let F = "pool_"
66+let F = "_SWOP_amount"
6767
68-let G = "admin_pub_1"
68+let G = "pool_"
6969
70-let H = "admin_pub_2"
70+let H = "admin_pub_1"
7171
72-let I = "admin_pub_3"
72+let I = "admin_pub_2"
7373
74-let J = "admin_invoke_pub"
74+let J = "admin_pub_3"
7575
76-let K = "money_box_address"
76+let K = "admin_invoke_pub"
7777
78-let L = "team_box_address"
78+let L = "money_box_address"
7979
80-let M = "voting_address"
80+let M = "team_box_address"
8181
82-let N = "governance_address"
82+let N = "voting_address"
8383
84-let O = "farming_address"
84+let O = "governance_address"
8585
86-let P = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
86+let P = "farming_address"
8787
88-func Q (R) = {
89- let S = getString(P, R)
90- if ($isInstanceOf(S, "String"))
88+let Q = "staking_l2mp_address"
89+
90+let R = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom')
91+
92+func S (T) = {
93+ let U = getString(R, T)
94+ if ($isInstanceOf(U, "String"))
9195 then {
92- let T = S
93- fromBase58String(T)
96+ let V = U
97+ fromBase58String(V)
9498 }
9599 else {
96- let U = S
97- throw((R + "is empty"))
100+ let W = U
101+ throw((T + "is empty"))
98102 }
99103 }
100104
101105
102-let V = Q(G)
106+let X = S(H)
103107
104-let W = Q(H)
108+let Y = S(I)
105109
106-let X = Q(I)
110+let Z = S(J)
107111
108-let Y = Q(J)
112+let aa = S(K)
109113
110-let Z = Address(Q(K))
114+let ab = Address(S(L))
111115
112-let aa = Address(Q(L))
116+let ac = Address(S(M))
113117
114-let ab = Address(Q(M))
118+let ad = Address(S(N))
115119
116-let ac = Address(Q(N))
120+let ae = Address(S(O))
117121
118-let ad = Address(Q(O))
122+let af = Address(S(P))
119123
120-let ae = Q(x)
124+let ag = S(x)
121125
122-let af = Q(y)
126+let ah = S(y)
123127
124-let ag = getStringValue(P, z)
128+let ai = S(z)
125129
126-let ah = Address(Q(u))
130+let aj = getStringValue(R, A)
127131
128-let ai = Address(Q(v))
132+let ak = Address(S(u))
129133
130-let aj = valueOrErrorMessage(getInteger(ab, r), "Empty kBasePeriod")
134+let al = Address(S(v))
131135
132-let ak = valueOrErrorMessage(getInteger(ab, t), "Empty kStartHeight")
136+let am = Address(S(Q))
133137
134-let al = valueOrErrorMessage(getInteger(ab, s), "Empty kPeriodLength")
138+let an = valueOrErrorMessage(getInteger(ad, r), "Empty kBasePeriod")
135139
136-let am = ((aj + ((height - ak) / al)) + 3)
140+let ao = valueOrErrorMessage(getInteger(ad, t), "Empty kStartHeight")
137141
138-let an = getBooleanValue(P, A)
142+let ap = valueOrErrorMessage(getInteger(ad, s), "Empty kPeriodLength")
139143
140-let ao = 1000000
144+let aq = ((an + ((height - ao) / ap)) + 3)
141145
142-let ap = 100000000
146+let ar = getBooleanValue(R, B)
143147
144-let aq = toBigInt(10000000000000000)
148+let as = 1000000
145149
146-func ar (as,at) = {
147- let S = as
148- if ($isInstanceOf(S, "ByteVector"))
150+let at = 100000000
151+
152+let au = toBigInt(10000000000000000)
153+
154+func av (aw,ax) = {
155+ let U = aw
156+ if ($isInstanceOf(U, "ByteVector"))
149157 then {
150- let au = S
151- assetBalance(at, au)
158+ let ay = U
159+ assetBalance(ax, ay)
152160 }
153- else if ($isInstanceOf(S, "Unit"))
161+ else if ($isInstanceOf(U, "Unit"))
154162 then {
155- let av = S
156- wavesBalance(at).available
163+ let az = U
164+ wavesBalance(ax).available
157165 }
158166 else throw("Match error")
159167 }
160168
161169
162-func aw (as,at) = {
163- let ax = {
164- let S = as
165- if ($isInstanceOf(S, "ByteVector"))
170+func aA (aw,ax) = {
171+ let aB = {
172+ let U = aw
173+ if ($isInstanceOf(U, "ByteVector"))
166174 then {
167- let ay = S
168- if ((ay == ae))
169- then getInteger(ah, ((("rpd_balance_" + toBase58String(ay)) + "_") + toString(at)))
170- else if ((ay == af))
171- then getInteger(ai, ((("%s%s%s__stakingBalance__" + toBase58String(ay)) + "__") + toString(at)))
172- else 0
175+ let aC = U
176+ if ((aC == ag))
177+ then getInteger(ak, ((("rpd_balance_" + toBase58String(aC)) + "_") + toString(ax)))
178+ else if ((aC == ah))
179+ then getInteger(al, ((("%s%s%s__stakingBalance__" + toBase58String(aC)) + "__") + toString(ax)))
180+ else if ((aC == ai))
181+ then {
182+ let aD = {
183+ let aE = invoke(am, "getUserAssetsREADONLY", [ax], nil)
184+ if ($isInstanceOf(aE, "(Int, Int, Int, Int, Int)"))
185+ then aE
186+ else throw(($getType(aE) + " couldn't be cast to (Int, Int, Int, Int, Int)"))
187+ }
188+ if ((aD == aD))
189+ then aD
190+ else throw("Strict value is not equal to itself.")
191+ }
192+ else 0
173193 }
174- else if ($isInstanceOf(S, "Unit"))
175- then valueOrElse(getInteger(at, w), 0)
194+ else if ($isInstanceOf(U, "Unit"))
195+ then valueOrElse(getInteger(ax, w), 0)
176196 else throw("Match error")
177197 }
178- let S = ax
179- if ($isInstanceOf(S, "Int"))
198+ let U = aB
199+ if ($isInstanceOf(U, "Int"))
180200 then {
181- let az = S
182- az
201+ let aF = U
202+ aF
183203 }
184204 else 0
185205 }
186206
187207
188-func aA (as) = {
189- let S = as
190- if (if ($isInstanceOf(S, "String"))
208+func aG (aw) = {
209+ let U = aw
210+ if (if ($isInstanceOf(U, "String"))
191211 then true
192- else $isInstanceOf(S, "ByteVector"))
212+ else $isInstanceOf(U, "ByteVector"))
193213 then {
194- let au = S
195- let aB = {
196- let aC = au
197- if ($isInstanceOf(aC, "ByteVector"))
214+ let ay = U
215+ let aH = {
216+ let aI = ay
217+ if ($isInstanceOf(aI, "ByteVector"))
198218 then {
199- let ay = aC
200- $Tuple2(toBase58String(ay), ay)
219+ let aC = aI
220+ $Tuple2(toBase58String(aC), aC)
201221 }
202- else if ($isInstanceOf(aC, "String"))
222+ else if ($isInstanceOf(aI, "String"))
203223 then {
204- let ay = aC
205- $Tuple2(ay, fromBase58String(ay))
224+ let aC = aI
225+ $Tuple2(aC, fromBase58String(aC))
206226 }
207227 else throw("Match error")
208228 }
209- let aD = aB._1
210- let aE = aB._2
211- let aF = valueOrErrorMessage(assetInfo(aE), (("Asset " + aD) + " doesn't exist"))
212- $Tuple3(aD, aF.name, aF.decimals)
229+ let aJ = aH._1
230+ let aK = aH._2
231+ let aL = valueOrErrorMessage(assetInfo(aK), (("Asset " + aJ) + " doesn't exist"))
232+ $Tuple3(aJ, aL.name, aL.decimals)
213233 }
214- else if ($isInstanceOf(S, "Unit"))
234+ else if ($isInstanceOf(U, "Unit"))
215235 then {
216- let av = S
236+ let az = U
217237 $Tuple3("WAVES", "WAVES", 8)
218238 }
219239 else throw("Match error")
220240 }
221241
222242
223-func aG (aH) = [BooleanEntry(c, false), StringEntry(n, aH)]
243+func aM (aN) = [BooleanEntry(c, false), StringEntry(n, aN)]
224244
225245
226-func aI (aJ) = {
227- let aK = valueOrElse(getInteger(ac, (toString(aJ) + E)), 0)
228- let aL = valueOrElse(getInteger(ac, (toString(aJ) + D)), aK)
229- let aM = split(getStringValue(P, C), ",")
230- let aN = split(getStringValue(P, B), ",")
231- if (if ((aL >= parseIntValue(aM[0])))
232- then (parseIntValue(aM[1]) > aL)
246+func aO (aP) = {
247+ let aQ = valueOrElse(getInteger(ae, (toString(aP) + F)), 0)
248+ let aR = valueOrElse(getInteger(ae, (toString(aP) + E)), aQ)
249+ let aS = split(getStringValue(R, D), ",")
250+ let aT = split(getStringValue(R, C), ",")
251+ if (if ((aR >= parseIntValue(aS[0])))
252+ then (parseIntValue(aS[1]) > aR)
233253 else false)
234- then (ao - parseIntValue(aN[0]))
235- else if (if ((aL >= parseIntValue(aM[1])))
236- then (parseIntValue(aM[2]) > aL)
254+ then (as - parseIntValue(aT[0]))
255+ else if (if ((aR >= parseIntValue(aS[1])))
256+ then (parseIntValue(aS[2]) > aR)
237257 else false)
238- then (ao - parseIntValue(aN[1]))
239- else if (if ((aL >= parseIntValue(aM[2])))
240- then (parseIntValue(aM[3]) > aL)
258+ then (as - parseIntValue(aT[1]))
259+ else if (if ((aR >= parseIntValue(aS[2])))
260+ then (parseIntValue(aS[3]) > aR)
241261 else false)
242- then (ao - parseIntValue(aN[2]))
243- else if (if ((aL >= parseIntValue(aM[3])))
244- then (parseIntValue(aM[4]) > aL)
262+ then (as - parseIntValue(aT[2]))
263+ else if (if ((aR >= parseIntValue(aS[3])))
264+ then (parseIntValue(aS[4]) > aR)
245265 else false)
246- then (ao - parseIntValue(aN[3]))
247- else if ((aL >= parseIntValue(aM[4])))
248- then (ao - parseIntValue(aN[4]))
249- else ao
266+ then (as - parseIntValue(aT[3]))
267+ else if ((aR >= parseIntValue(aS[4])))
268+ then (as - parseIntValue(aT[4]))
269+ else as
250270 }
251271
252272
253-func aO (aP,aQ,aR,aS,aT,aU,aV) = {
254- let aW = fraction(aS, aP, (aP + aR))
255- let aX = fraction(aW, (ao - aT), ao)
256- let aY = fraction(aW, aU, ao)
257- let aZ = fraction(aW, aV, ao)
258- if ((aQ > aX))
259- then throw(((("Calculated amount to receive " + toString(aX)) + " is less than specified minimum ") + toString(aQ)))
260- else $Tuple4(aW, aX, aY, aZ)
273+func aU (aV,aW,aX,aY,aZ,ba,bb) = {
274+ let bc = fraction(aY, aV, (aV + aX))
275+ let bd = fraction(bc, (as - aZ), as)
276+ let be = fraction(bc, ba, as)
277+ let bf = fraction(bc, bb, as)
278+ if ((aW > bd))
279+ then throw(((("Calculated amount to receive " + toString(bd)) + " is less than specified minimum ") + toString(aW)))
280+ else $Tuple4(bc, bd, be, bf)
261281 }
262282
263283
264-func ba (aP,bb,aT) = {
265- let bc = (ao - aT)
266- let bd = fraction(aT, 55, 100)
267- let be = (ap + fraction((bc * bd), ap, (ao * ao)))
268- let bf = ((((bb + fraction(bb, bc, ao)) + fraction(aP, bc, ao)) - aP) - fraction(aP, (bc * bd), (ao * ao)))
269- let bg = (-(toBigInt(bb)) * toBigInt(aP))
270- let bh = ((toBigInt(bf) * toBigInt(bf)) - fraction((toBigInt(4) * bg), toBigInt(be), toBigInt(ap)))
271- toInt(fraction((-(toBigInt(bf)) + sqrtBigInt(bh, 0, 0, DOWN)), toBigInt(ap), toBigInt((2 * be))))
284+func bg (aV,bh,aZ) = {
285+ let bi = (as - aZ)
286+ let bj = fraction(aZ, 55, 100)
287+ let bk = (at + fraction((bi * bj), at, (as * as)))
288+ let bl = ((((bh + fraction(bh, bi, as)) + fraction(aV, bi, as)) - aV) - fraction(aV, (bi * bj), (as * as)))
289+ let bm = (-(toBigInt(bh)) * toBigInt(aV))
290+ let bn = ((toBigInt(bl) * toBigInt(bl)) - fraction((toBigInt(4) * bm), toBigInt(bk), toBigInt(at)))
291+ toInt(fraction((-(toBigInt(bl)) + sqrtBigInt(bn, 0, 0, DOWN)), toBigInt(at), toBigInt((2 * bk))))
272292 }
273293
274294
275-func bi (as) = if ((as == base58''))
295+func bo (aw) = if ((aw == base58''))
276296 then unit
277- else as
297+ else aw
278298
279299
280-func bj (bk,bl,bm,bn,bo,bp) = aG(((((((((((((((("Suspicious state. Actual balances: " + toString(bk)) + " ") + bo) + ", ") + toString(bl)) + " ") + bp) + ". State: ") + toString(bm)) + " ") + bo) + ", ") + toString(bn)) + " ") + bp))
300+func bp (bq,br,bs,bt,bu,bv) = aM(((((((((((((((("Suspicious state. Actual balances: " + toString(bq)) + " ") + bu) + ", ") + toString(br)) + " ") + bv) + ". State: ") + toString(bs)) + " ") + bu) + ", ") + toString(bt)) + " ") + bv))
281301
282302
283-func bq () = if (an)
303+func bw () = if (ar)
284304 then unit
285305 else throw("DApp is inactive at this moment")
286306
287307
288-func br (bs) = if (isDefined(getString(P, (F + bs))))
308+func bx (by) = if (isDefined(getString(R, (G + by))))
289309 then unit
290310 else throw("DApp is not registered pool")
291311
292312
293-func bt (bs) = if (!(valueOrElse(getBoolean(P, (d + bs)), false)))
313+func bz (by) = if (!(valueOrElse(getBoolean(R, (d + by)), false)))
294314 then unit
295315 else throw("Pool is deprecated. Only withdraw action allowed.")
296316
297317
298-func bu (at,bo,bp) = {
299- let bm = getIntegerValue(at, g)
300- let bn = getIntegerValue(at, h)
301- let bv = aw(bo, at)
302- let bw = aw(bp, at)
303- let bk = (ar(bo, at) + bv)
304- let bl = (ar(bp, at) + bw)
305- let bx = getIntegerValue(at, l)
306- $Tuple5(bm, bn, bk, bl, bx)
318+func bA (ax,bu,bv) = {
319+ let bs = getIntegerValue(ax, g)
320+ let bt = getIntegerValue(ax, h)
321+ let bB = aA(bu, ax)
322+ let bC = aA(bv, ax)
323+ let bq = (av(bu, ax) + bB)
324+ let br = (av(bv, ax) + bC)
325+ $Tuple6(bs, bt, bq, br, bB, bC)
307326 }
308327
309328
310-func by (at) = {
311- let bz = getStringValue(at, e)
312- let bA = getStringValue(at, f)
313- let bo = if ((bz == "WAVES"))
329+func bD (ax) = getIntegerValue(ax, l)
330+
331+
332+func bE (ax) = {
333+ let bF = getStringValue(ax, e)
334+ let bG = getStringValue(ax, f)
335+ let bu = if ((bF == "WAVES"))
314336 then unit
315- else fromBase58String(bz)
316- let bp = if ((bA == "WAVES"))
337+ else fromBase58String(bF)
338+ let bv = if ((bG == "WAVES"))
317339 then unit
318- else fromBase58String(bA)
319- let bB = fromBase58String(getStringValue(at, k))
320- $Tuple5(bz, bA, bo, bp, bB)
340+ else fromBase58String(bG)
341+ let bH = fromBase58String(getStringValue(ax, k))
342+ $Tuple5(bF, bG, bu, bv, bH)
321343 }
322344
323345
324-func bC (at,bD) = {
325- let bE = aI(bD)
326- let aT = fraction(getIntegerValue(at, m), bE, ao, CEILING)
327- let bF = fraction(aT, 35, 100)
328- let bG = fraction(aT, 10, 100)
329- $Tuple3(aT, bF, bG)
346+func bI (ax,bJ) = {
347+ let bK = aO(bJ)
348+ let aZ = fraction(getIntegerValue(ax, m), bK, as, CEILING)
349+ let bL = fraction(aZ, 35, 100)
350+ let bM = fraction(aZ, 10, 100)
351+ $Tuple3(aZ, bL, bM)
330352 }
331353
332354
333-func bH (bI,bJ,bK,bL,bM,bN,bO) = {
334- let bP = aA(bK)
335- let bQ = bP._1
336- let bR = bP._2
337- let bS = bP._3
338- let bT = aA(bL)
339- let bU = bT._1
340- let bV = bT._2
341- let bW = bT._3
342- let bX = ((bM + bN) == 0)
343- let bY = if (bX)
344- then $Tuple5(bI, bJ, 0, bK, toBigInt(1))
355+func bN (bO,bP,bQ,bR,bS,bT,bU) = {
356+ let bV = aG(bQ)
357+ let bW = bV._1
358+ let bX = bV._2
359+ let bY = bV._3
360+ let bZ = aG(bR)
361+ let ca = bZ._1
362+ let cb = bZ._2
363+ let cc = bZ._3
364+ let cd = ((bS + bT) == 0)
365+ let ce = if (cd)
366+ then $Tuple5(bO, bP, 0, bQ, toBigInt(1))
345367 else {
346- let bZ = fraction(aq, toBigInt(bI), toBigInt(bM))
347- let ca = fraction(aq, toBigInt(bJ), toBigInt(bN))
348- if ((ca > bZ))
368+ let cf = fraction(au, toBigInt(bO), toBigInt(bS))
369+ let cg = fraction(au, toBigInt(bP), toBigInt(bT))
370+ if ((cg > cf))
349371 then {
350- let cb = fraction(bI, bN, bM)
351- $Tuple5(bI, cb, (bJ - cb), bL, bZ)
372+ let ch = fraction(bO, bT, bS)
373+ $Tuple5(bO, ch, (bP - ch), bR, cf)
352374 }
353375 else {
354- let cb = fraction(bJ, bM, bN)
355- $Tuple5(cb, bJ, (bI - cb), bK, ca)
376+ let ch = fraction(bP, bS, bT)
377+ $Tuple5(ch, bP, (bO - ch), bQ, cg)
356378 }
357379 }
358- let cc = bY._1
359- let cd = bY._2
360- let ce = bY._3
361- let cf = bY._4
362- let cg = bY._5
363- let ch = if (bX)
380+ let ci = ce._1
381+ let cj = ce._2
382+ let ck = ce._3
383+ let cl = ce._4
384+ let cm = ce._5
385+ let cn = if (cd)
364386 then {
365- let ci = ((bS + bW) / 2)
366- fraction(pow(cc, bS, 5, 1, bS, DOWN), pow(cd, bW, 5, 1, bW, DOWN), pow(10, 0, ci, 0, 0, DOWN))
387+ let co = ((bY + cc) / 2)
388+ fraction(pow(ci, bY, 5, 1, bY, DOWN), pow(cj, cc, 5, 1, cc, DOWN), pow(10, 0, co, 0, 0, DOWN))
367389 }
368- else toInt(fraction(cg, toBigInt(bO), aq))
369- $Tuple5(ch, ce, cf, cc, cd)
390+ else toInt(fraction(cm, toBigInt(bU), au))
391+ $Tuple5(cn, ck, cl, ci, cj)
370392 }
371393
372394
373-func cj (aP,ck,ay,cl,bM,bN,cm,aT,bF,bG,cn) = if ((ck == ay))
395+func cp (aV,cq,aC,cr,bS,bT,cs,aZ,bL,bM,ct) = if ((cq == aC))
374396 then {
375- let co = ba(aP, bM, aT)
376- let cp = aO(co, cn, bM, bN, aT, bF, bG)
377- let aW = cp._1
378- let aX = cp._2
379- let aY = cp._3
380- let cq = cp._4
381- let cr = (bM + co)
382- let cs = (((bN + aW) - aY) - cq)
383- let ct = (bM + aP)
384- let cu = ((bN - aY) - cq)
385- let bZ = fraction(toBigInt((aP - co)), aq, toBigInt(cr))
386- let ca = fraction(toBigInt(aX), aq, toBigInt(cs))
387- let ch = toInt(fraction(min([bZ, ca]), toBigInt(cm), aq))
388- let cv = toInt(fraction(fraction(toBigInt((aP - co)), aq, toBigInt(bM)), toBigInt(cm), aq))
389- let cw = fraction((ch - cv), ap, cv)
390- $Tuple7(ch, ct, cu, aY, cq, cl, cw)
397+ let cu = bg(aV, bS, aZ)
398+ let cv = aU(cu, ct, bS, bT, aZ, bL, bM)
399+ let bc = cv._1
400+ let bd = cv._2
401+ let be = cv._3
402+ let cw = cv._4
403+ let cx = (bS + cu)
404+ let cy = (((bT + bc) - be) - cw)
405+ let cz = (bS + aV)
406+ let cA = ((bT - be) - cw)
407+ let cf = fraction(toBigInt((aV - cu)), au, toBigInt(cx))
408+ let cg = fraction(toBigInt(bd), au, toBigInt(cy))
409+ let cn = toInt(fraction(min([cf, cg]), toBigInt(cs), au))
410+ let cB = toInt(fraction(fraction(toBigInt((aV - cu)), au, toBigInt(bS)), toBigInt(cs), au))
411+ let cC = fraction((cn - cB), at, cB)
412+ $Tuple7(cn, cz, cA, be, cw, cr, cC)
391413 }
392414 else {
393- let co = ba(aP, bN, aT)
394- let cx = aO(co, cn, bN, bM, aT, bF, bG)
395- let aW = cx._1
396- let aX = cx._2
397- let aY = cx._3
398- let cq = cx._4
399- let cr = (((bM + aW) - aY) - cq)
400- let cs = (bN + co)
401- let ct = ((bM - aY) - cq)
402- let cu = (bN + aP)
403- let bZ = fraction(toBigInt(aX), aq, toBigInt(cr))
404- let ca = fraction(toBigInt((aP - co)), aq, toBigInt(cs))
405- let ch = toInt(fraction(min([bZ, ca]), toBigInt(cm), aq))
406- let cv = toInt(fraction(fraction(toBigInt((aP - co)), aq, toBigInt(bN)), toBigInt(cm), aq))
407- let cw = fraction((ch - cv), ap, cv)
408- $Tuple7(ch, ct, cu, aY, cq, ay, cw)
415+ let cu = bg(aV, bT, aZ)
416+ let cD = aU(cu, ct, bT, bS, aZ, bL, bM)
417+ let bc = cD._1
418+ let bd = cD._2
419+ let be = cD._3
420+ let cw = cD._4
421+ let cx = (((bS + bc) - be) - cw)
422+ let cy = (bT + cu)
423+ let cz = ((bS - be) - cw)
424+ let cA = (bT + aV)
425+ let cf = fraction(toBigInt(bd), au, toBigInt(cx))
426+ let cg = fraction(toBigInt((aV - cu)), au, toBigInt(cy))
427+ let cn = toInt(fraction(min([cf, cg]), toBigInt(cs), au))
428+ let cB = toInt(fraction(fraction(toBigInt((aV - cu)), au, toBigInt(bT)), toBigInt(cs), au))
429+ let cC = fraction((cn - cB), at, cB)
430+ $Tuple7(cn, cz, cA, be, cw, aC, cC)
409431 }
410432
411433
412-func cy (bI,bJ,bK,bL,bM,bN,cm,aT,bF,bG,cn) = {
413- let cz = bH(bI, bJ, bK, bL, bM, bN, cm)
414- let cA = cz._1
415- let ce = cz._2
416- let cf = cz._3
417- let cc = cz._4
418- let cd = cz._5
419- if ((ce > 0))
434+func cE (bO,bP,bQ,bR,bS,bT,cs,aZ,bL,bM,ct) = {
435+ let cF = bN(bO, bP, bQ, bR, bS, bT, cs)
436+ let cG = cF._1
437+ let ck = cF._2
438+ let cl = cF._3
439+ let ci = cF._4
440+ let cj = cF._5
441+ if ((ck > 0))
420442 then {
421- let cB = cj(ce, cf, bK, bL, (bM + cc), (bN + cd), cm, aT, bF, bG, cn)
422- let cC = cB._1
423- let ct = cB._2
424- let cu = cB._3
425- let aY = cB._4
426- let cq = cB._5
427- let cD = cB._6
428- let cw = cB._7
429- $Tuple7((cA + cC), cw, ct, cu, aY, cq, cD)
443+ let cH = cp(ck, cl, bQ, bR, (bS + ci), (bT + cj), cs, aZ, bL, bM, ct)
444+ let cI = cH._1
445+ let cz = cH._2
446+ let cA = cH._3
447+ let be = cH._4
448+ let cw = cH._5
449+ let cJ = cH._6
450+ let cC = cH._7
451+ $Tuple7((cG + cI), cC, cz, cA, be, cw, cJ)
430452 }
431- else $Tuple7(cA, 0, (bM + cc), (bN + cd), 0, 0, unit)
453+ else $Tuple7(cG, 0, (bS + ci), (bT + cj), 0, 0, unit)
432454 }
433455
434456
435-@Callable(az)
436-func calcLPReplenishDiffPropREADONLY (cE,cF,cG,cH) = {
437- let cI = by(az.caller)
438- let bz = cI._1
439- let bA = cI._2
440- let bo = cI._3
441- let bp = cI._4
442- let bB = cI._5
443- let cJ = bu(az.caller, bo, bp)
444- let bM = cJ._1
445- let bN = cJ._2
446- let cK = cJ._3
447- let cL = cJ._4
448- let cm = cJ._5
449- let bI = parseIntValue(cF[0])
450- let bJ = parseIntValue(cF[1])
451- let cn = parseIntValue(cF[2])
452- let cM = bC(az.caller, az.originCaller)
453- let aT = cM._1
454- let bF = cM._2
455- let bG = cM._3
456- let cN = cy(bI, bJ, bo, bp, bM, bN, cm, aT, bF, bG, cn)
457- let cO = cN._1
458- let cw = cN._2
459- let ct = cN._3
460- let cu = cN._4
461- let aY = cN._5
462- let cq = cN._6
463- let ay = cN._7
464- $Tuple2(nil, $Tuple2(nil, [cO, cw, ct, cu, aY, cq, ay]))
457+@Callable(aF)
458+func calcLPReplenishDiffPropREADONLY (cK,cL,cM,cN) = {
459+ let cO = bE(aF.caller)
460+ let bF = cO._1
461+ let bG = cO._2
462+ let bu = cO._3
463+ let bv = cO._4
464+ let bH = cO._5
465+ let cP = bA(aF.caller, bu, bv)
466+ let bS = cP._1
467+ let bT = cP._2
468+ let cQ = cP._3
469+ let cR = cP._4
470+ let cs = bD(aF.caller)
471+ let bO = parseIntValue(cL[0])
472+ let bP = parseIntValue(cL[1])
473+ let ct = parseIntValue(cL[2])
474+ let cS = bI(aF.caller, aF.originCaller)
475+ let aZ = cS._1
476+ let bL = cS._2
477+ let bM = cS._3
478+ let cT = cE(bO, bP, bu, bv, bS, bT, cs, aZ, bL, bM, ct)
479+ let cU = cT._1
480+ let cC = cT._2
481+ let cz = cT._3
482+ let cA = cT._4
483+ let be = cT._5
484+ let cw = cT._6
485+ let aC = cT._7
486+ $Tuple2(nil, $Tuple2(nil, [cU, cC, cz, cA, be, cw, aC]))
465487 }
466488
467489
468490
469-@Callable(az)
470-func calcLPReplenishTwoTokensREADONLY (cE,cF,cG,cH) = {
471- let cP = by(az.caller)
472- let bz = cP._1
473- let bA = cP._2
474- let bo = cP._3
475- let bp = cP._4
476- let bB = cP._5
477- let cQ = bu(az.caller, bo, bp)
478- let bM = cQ._1
479- let bN = cQ._2
480- let cK = cQ._3
481- let cL = cQ._4
482- let cm = cQ._5
483- let bI = parseIntValue(cF[0])
484- let bJ = parseIntValue(cF[1])
485- let cR = bH(bI, bJ, bo, bp, bM, bN, cm)
486- let cO = cR._1
487- let ce = cR._2
488- let cf = cR._3
489- let cc = cR._4
490- let cd = cR._5
491- $Tuple2(nil, $Tuple2(nil, [cO, ce, cf, cc, cd]))
491+@Callable(aF)
492+func calcLPReplenishTwoTokensREADONLY (cK,cL,cM,cN) = {
493+ let cV = bE(aF.caller)
494+ let bF = cV._1
495+ let bG = cV._2
496+ let bu = cV._3
497+ let bv = cV._4
498+ let bH = cV._5
499+ let cW = bA(aF.caller, bu, bv)
500+ let bS = cW._1
501+ let bT = cW._2
502+ let cQ = cW._3
503+ let cR = cW._4
504+ let cs = bD(aF.caller)
505+ let bO = parseIntValue(cL[0])
506+ let bP = parseIntValue(cL[1])
507+ let cX = bN(bO, bP, bu, bv, bS, bT, cs)
508+ let cU = cX._1
509+ let ck = cX._2
510+ let cl = cX._3
511+ let ci = cX._4
512+ let cj = cX._5
513+ $Tuple2(nil, $Tuple2(nil, [cU, ck, cl, ci, cj]))
492514 }
493515
494516
495517
496-@Callable(az)
497-func withdrawREADONLY (cE,cF,cG,cH) = {
498- let cS = by(az.caller)
499- let bz = cS._1
500- let bA = cS._2
501- let bo = cS._3
502- let bp = cS._4
503- let bB = cS._5
504- let cT = bu(az.caller, bo, bp)
505- let bm = cT._1
506- let bn = cT._2
507- let bk = cT._3
508- let bl = cT._4
509- let bO = cT._5
510- let cU = parseIntValue(cF[0])
511- let cV = if ((size(cF) == 3))
512- then $Tuple2(parseIntValue(cF[1]), parseIntValue(cF[2]))
513- else $Tuple2(bm, bn)
514- let bM = cV._1
515- let bN = cV._2
516- let cW = fraction(cU, bM, bO)
517- let cX = fraction(cU, bN, bO)
518- $Tuple2(nil, $Tuple2(nil, [cW, cX]))
518+@Callable(aF)
519+func withdrawREADONLY (cK,cL,cM,cN) = {
520+ let cY = bE(aF.caller)
521+ let bF = cY._1
522+ let bG = cY._2
523+ let bu = cY._3
524+ let bv = cY._4
525+ let bH = cY._5
526+ let cZ = bA(aF.caller, bu, bv)
527+ let bs = cZ._1
528+ let bt = cZ._2
529+ let bq = cZ._3
530+ let br = cZ._4
531+ let bU = bD(aF.caller)
532+ let da = parseIntValue(cL[0])
533+ let db = if ((size(cL) == 3))
534+ then $Tuple2(parseIntValue(cL[1]), parseIntValue(cL[2]))
535+ else $Tuple2(bs, bt)
536+ let bS = db._1
537+ let bT = db._2
538+ let dc = fraction(da, bS, bU)
539+ let dd = fraction(da, bT, bU)
540+ $Tuple2(nil, $Tuple2(nil, [dc, dd]))
519541 }
520542
521543
522544
523-@Callable(az)
524-func init (cE,cF,cG,cH) = {
525- let bD = Address(cE)
526- let cY = $Tuple2(cG[0], bi(cH[0]))
527- let cc = cY._1
528- let cZ = cY._2
529- let da = $Tuple2(cG[1], bi(cH[1]))
530- let cd = da._1
531- let db = da._2
532- if (!(containsElement([V, W, X, Y], az.originCallerPublicKey)))
545+@Callable(aF)
546+func init (cK,cL,cM,cN) = {
547+ let bJ = Address(cK)
548+ let de = $Tuple2(cM[0], bo(cN[0]))
549+ let ci = de._1
550+ let df = de._2
551+ let dg = $Tuple2(cM[1], bo(cN[1]))
552+ let cj = dg._1
553+ let dh = dg._2
554+ if (!(containsElement([X, Y, Z, aa], aF.originCallerPublicKey)))
533555 then throw("Only admin can call this function")
534- else if ((size(cF) != 1))
556+ else if ((size(cL) != 1))
535557 then throw("Wrong args size")
536- else if (isDefined(getBoolean(bD, c)))
558+ else if (isDefined(getBoolean(bJ, c)))
537559 then throw("DApp is already active")
538- else if ((cZ == db))
560+ else if ((df == dh))
539561 then throw("Assets must be different")
540562 else {
541- let dc = aA(cZ)
542- let bQ = dc._1
543- let bR = dc._2
544- let bS = dc._3
545- let dd = aA(db)
546- let bU = dd._1
547- let bV = dd._2
548- let bW = dd._3
549- let de = (cF[0] == "true")
550- let df = ((("s" + take(bR, 7)) + "_") + take(bV, 7))
551- let dg = ((((("ShareToken of SwopFi protocol for " + bR) + " and ") + bV) + " at address ") + toString(this))
552- let ci = ((bS + bW) / 2)
553- let dh = pow(cc, bS, 5, 1, bS, DOWN)
554- let di = pow(cd, bW, 5, 1, bW, DOWN)
555- let dj = pow(10, 0, ci, 0, 0, DOWN)
556- let dk = fraction(dh, di, dj)
557- let dl = Issue(df, dg, dk, ci, true)
558- let dm = calculateAssetId(dl)
559- let dn = if (contains(ag, bQ))
560- then invoke(az.caller, "stakeUnstake", [true, cc, bQ], nil)
563+ let di = aG(df)
564+ let bW = di._1
565+ let bX = di._2
566+ let bY = di._3
567+ let dj = aG(dh)
568+ let ca = dj._1
569+ let cb = dj._2
570+ let cc = dj._3
571+ let dk = (cL[0] == "true")
572+ let dl = ((("s" + take(bX, 7)) + "_") + take(cb, 7))
573+ let dm = ((((("ShareToken of SwopFi protocol for " + bX) + " and ") + cb) + " at address ") + toString(this))
574+ let co = ((bY + cc) / 2)
575+ let dn = pow(ci, bY, 5, 1, bY, DOWN)
576+ let do = pow(cj, cc, 5, 1, cc, DOWN)
577+ let dp = pow(10, 0, co, 0, 0, DOWN)
578+ let dq = fraction(dn, do, dp)
579+ let dr = Issue(dl, dm, dq, co, true)
580+ let ds = calculateAssetId(dr)
581+ let dt = if (contains(aj, bW))
582+ then invoke(aF.caller, "stakeUnstake", [true, ci, bW], nil)
561583 else 0
562- if ((dn == dn))
584+ if ((dt == dt))
563585 then {
564- let do = if (contains(ag, bU))
565- then invoke(az.caller, "stakeUnstake", [true, cd, bU], nil)
586+ let du = if (contains(aj, ca))
587+ then invoke(aF.caller, "stakeUnstake", [true, cj, ca], nil)
566588 else 0
567- if ((do == do))
589+ if ((du == du))
568590 then {
569- let dp = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(e, bQ), StringEntry(f, bU), IntegerEntry(g, cc), IntegerEntry(h, cd), IntegerEntry(m, getIntegerValue(P, "base_fee_cpmm")), dl, StringEntry(k, toBase58String(dm)), IntegerEntry(l, dk), ScriptTransfer(bD, dk, dm)]
570- if (de)
571- then $Tuple2(nil, $Tuple2((dp ++ [BooleanEntry(o, de), IntegerEntry(p, (ak + (am * al)))]), nil))
572- else $Tuple2(nil, $Tuple2(dp, nil))
591+ let dv = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(e, bW), StringEntry(f, ca), IntegerEntry(g, ci), IntegerEntry(h, cj), IntegerEntry(m, getIntegerValue(R, "base_fee_cpmm")), dr, StringEntry(k, toBase58String(ds)), IntegerEntry(l, dq), ScriptTransfer(bJ, dq, ds)]
592+ if (dk)
593+ then $Tuple2(nil, $Tuple2((dv ++ [BooleanEntry(o, dk), IntegerEntry(p, (ao + (aq * ap)))]), nil))
594+ else $Tuple2(nil, $Tuple2(dv, nil))
573595 }
574596 else throw("Strict value is not equal to itself.")
575597 }
579601
580602
581603
582-@Callable(az)
583-func initWithInitRatio (cE,cF,cG,cH) = {
584- let bD = Address(cE)
585- let dq = $Tuple5(parseIntValue(cF[0]), parseIntValue(cF[1]), cF[2], cF[3], (cF[4] == "true"))
586- let dr = dq._1
587- let ds = dq._2
588- let dt = dq._3
589- let du = dq._4
590- let de = dq._5
591- if (!(containsElement([V, W, X, Y], az.originCallerPublicKey)))
604+@Callable(aF)
605+func initWithInitRatio (cK,cL,cM,cN) = {
606+ let bJ = Address(cK)
607+ let dw = $Tuple5(parseIntValue(cL[0]), parseIntValue(cL[1]), cL[2], cL[3], (cL[4] == "true"))
608+ let dx = dw._1
609+ let dy = dw._2
610+ let dz = dw._3
611+ let dA = dw._4
612+ let dk = dw._5
613+ if (!(containsElement([X, Y, Z, aa], aF.originCallerPublicKey)))
592614 then throw("Only admin can call this function")
593- else if ((size(cF) != 5))
615+ else if ((size(cL) != 5))
594616 then throw("Wrong args size")
595- else if (isDefined(getBoolean(bD, c)))
617+ else if (isDefined(getBoolean(bJ, c)))
596618 then throw("DApp is already active")
597- else if ((dt == du))
619+ else if ((dz == dA))
598620 then throw("Assets must be different")
599621 else {
600- let dv = aA(dt)
601- let bQ = dv._1
602- let bR = dv._2
603- let bS = dv._3
604- let dw = aA(du)
605- let bU = dw._1
606- let bV = dw._2
607- let bW = dw._3
608- let df = ((("s" + take(bR, 7)) + "_") + take(bV, 7))
609- let dg = ((((("ShareToken of SwopFi protocol for " + bR) + " and ") + bV) + " at address ") + toString(this))
610- let ci = ((bS + bW) / 2)
611- let dk = 0
612- let dl = Issue(df, dg, dk, ci, true)
613- let dm = calculateAssetId(dl)
614- let dp = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(e, bQ), StringEntry(f, bU), IntegerEntry(i, dr), IntegerEntry(j, ds), IntegerEntry(g, 0), IntegerEntry(h, 0), IntegerEntry(m, getIntegerValue(P, "base_fee_cpmm")), dl, StringEntry(k, toBase58String(dm)), IntegerEntry(l, dk)]
615- if (de)
616- then $Tuple2(nil, $Tuple2((dp ++ [BooleanEntry(o, de), IntegerEntry(p, (ak + (am * al)))]), nil))
617- else $Tuple2(nil, $Tuple2(dp, nil))
622+ let dB = aG(dz)
623+ let bW = dB._1
624+ let bX = dB._2
625+ let bY = dB._3
626+ let dC = aG(dA)
627+ let ca = dC._1
628+ let cb = dC._2
629+ let cc = dC._3
630+ let dl = ((("s" + take(bX, 7)) + "_") + take(cb, 7))
631+ let dm = ((((("ShareToken of SwopFi protocol for " + bX) + " and ") + cb) + " at address ") + toString(this))
632+ let co = ((bY + cc) / 2)
633+ let dq = 0
634+ let dr = Issue(dl, dm, dq, co, true)
635+ let ds = calculateAssetId(dr)
636+ let dv = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(e, bW), StringEntry(f, ca), IntegerEntry(i, dx), IntegerEntry(j, dy), IntegerEntry(g, 0), IntegerEntry(h, 0), IntegerEntry(m, getIntegerValue(R, "base_fee_cpmm")), dr, StringEntry(k, toBase58String(ds)), IntegerEntry(l, dq)]
637+ if (dk)
638+ then $Tuple2(nil, $Tuple2((dv ++ [BooleanEntry(o, dk), IntegerEntry(p, (ao + (aq * ap)))]), nil))
639+ else $Tuple2(nil, $Tuple2(dv, nil))
618640 }
619641 }
620642
621643
622644
623-@Callable(az)
624-func keepLimitForFirstHarvest (cE,cF,cG,cH) = valueOrElse(br(toString(az.caller)), valueOrElse(bq(), if (!(containsElement([V, W, X, Y], az.originCallerPublicKey)))
645+@Callable(aF)
646+func keepLimitForFirstHarvest (cK,cL,cM,cN) = valueOrElse(bx(toString(aF.caller)), valueOrElse(bw(), if (!(containsElement([X, Y, Z, aa], aF.originCallerPublicKey)))
625647 then throw("Only admin can call this function")
626- else if ((size(cF) != 1))
648+ else if ((size(cL) != 1))
627649 then throw("Wrong args size")
628650 else {
629- let dx = parseIntValue(cF[0])
630- $Tuple2(nil, $Tuple2([IntegerEntry(q, dx)], nil))
651+ let dD = parseIntValue(cL[0])
652+ $Tuple2(nil, $Tuple2([IntegerEntry(q, dD)], nil))
631653 }))
632654
633655
634656
635-@Callable(az)
636-func exchange (cE,cF,cG,cH) = valueOrElse(br(toString(az.caller)), valueOrElse(bt(toString(az.caller)), valueOrElse(bq(), {
637- let bD = Address(cE)
638- let dy = $Tuple2(cG[0], bi(cH[0]))
639- let aP = dy._1
640- let ck = dy._2
641- let aQ = parseIntValue(cF[0])
642- let dz = by(az.caller)
643- let bz = dz._1
644- let bA = dz._2
645- let bo = dz._3
646- let bp = dz._4
647- let dA = bu(az.caller, bo, bp)
648- let bm = dA._1
649- let bn = dA._2
650- let bk = dA._3
651- let bl = dA._4
652- if ((size(cF) != 1))
657+@Callable(aF)
658+func exchange (cK,cL,cM,cN) = valueOrElse(bx(toString(aF.caller)), valueOrElse(bz(toString(aF.caller)), valueOrElse(bw(), {
659+ let bJ = Address(cK)
660+ let dE = $Tuple2(cM[0], bo(cN[0]))
661+ let aV = dE._1
662+ let cq = dE._2
663+ let aW = parseIntValue(cL[0])
664+ let dF = bE(aF.caller)
665+ let bF = dF._1
666+ let bG = dF._2
667+ let bu = dF._3
668+ let bv = dF._4
669+ let dG = bA(aF.caller, bu, bv)
670+ let bs = dG._1
671+ let bt = dG._2
672+ let bq = dG._3
673+ let br = dG._4
674+ if ((size(cL) != 1))
653675 then throw("Wrong args size")
654- else if (if ((bm == 0))
676+ else if (if ((bs == 0))
655677 then true
656- else (bn == 0))
678+ else (bt == 0))
657679 then throw("Can't exchange with zero balance")
658- else if ((0 >= aQ))
659- then throw(("Minimal amount to receive must be positive. Actual: " + toString(aQ)))
660- else if ((size(cG) != 1))
680+ else if ((0 >= aW))
681+ then throw(("Minimal amount to receive must be positive. Actual: " + toString(aW)))
682+ else if ((size(cM) != 1))
661683 then throw("One attached payment expected")
662- else if (!(containsElement([bo, bp], ck)))
663- then throw(((("Incorrect asset attached. Expected: " + bz) + " or ") + bA))
664- else if (if ((bm > bk))
684+ else if (!(containsElement([bu, bv], cq)))
685+ then throw(((("Incorrect asset attached. Expected: " + bF) + " or ") + bG))
686+ else if (if ((bs > bq))
665687 then true
666- else (bn > bl))
667- then $Tuple2(nil, ([ScriptTransfer(bD, aP, ck)] ++ bj(bk, bl, bm, bn, bz, bA)))
688+ else (bt > br))
689+ then $Tuple2(nil, ([ScriptTransfer(bJ, aV, cq)] ++ bp(bq, br, bs, bt, bF, bG)))
668690 else {
669- let dB = bC(az.caller, az.originCaller)
670- let aT = dB._1
671- let bF = dB._2
672- let bG = dB._3
673- let dC = if ((ck == bo))
674- then aO(aP, aQ, bm, bn, aT, bF, bG)
675- else aO(aP, aQ, bn, bm, aT, bF, bG)
676- let aW = dC._1
677- let aX = dC._2
678- let aY = dC._3
679- let aZ = dC._4
680- let dD = if ((ck == bo))
681- then $Tuple3((bm + aP), (((bn - aX) - aY) - aZ), bp)
682- else $Tuple3((((bm - aX) - aY) - aZ), (bn + aP), bo)
683- let ct = dD._1
684- let cu = dD._2
685- let dE = dD._3
686- let dF = if ((ck == bo))
687- then $Tuple2(aP, ((aX + aY) + aZ))
688- else $Tuple2(((aX + aY) + aZ), aP)
689- let dG = dF._1
690- let dH = dF._2
691- let dn = if (contains(ag, bz))
692- then invoke(az.caller, "stakeUnstake", [(ck == bo), dG, bz], nil)
691+ let dH = bI(aF.caller, aF.originCaller)
692+ let aZ = dH._1
693+ let bL = dH._2
694+ let bM = dH._3
695+ let dI = if ((cq == bu))
696+ then aU(aV, aW, bs, bt, aZ, bL, bM)
697+ else aU(aV, aW, bt, bs, aZ, bL, bM)
698+ let bc = dI._1
699+ let bd = dI._2
700+ let be = dI._3
701+ let bf = dI._4
702+ let dJ = if ((cq == bu))
703+ then $Tuple3((bs + aV), (((bt - bd) - be) - bf), bv)
704+ else $Tuple3((((bs - bd) - be) - bf), (bt + aV), bu)
705+ let cz = dJ._1
706+ let cA = dJ._2
707+ let dK = dJ._3
708+ let dL = if ((cq == bu))
709+ then $Tuple2(aV, ((bd + be) + bf))
710+ else $Tuple2(((bd + be) + bf), aV)
711+ let dM = dL._1
712+ let dN = dL._2
713+ let dt = if (contains(aj, bF))
714+ then invoke(aF.caller, "stakeUnstake", [(cq == bu), dM, bF], nil)
693715 else 0
694- if ((dn == dn))
716+ if ((dt == dt))
695717 then {
696- let do = if (contains(ag, bA))
697- then invoke(az.caller, "stakeUnstake", [(ck == bp), dH, bA], nil)
718+ let du = if (contains(aj, bG))
719+ then invoke(aF.caller, "stakeUnstake", [(cq == bv), dN, bG], nil)
698720 else 0
699- if ((do == do))
700- then $Tuple2(nil, $Tuple2([IntegerEntry(g, ct), IntegerEntry(h, cu), ScriptTransfer(bD, aX, dE), ScriptTransfer(Z, aY, dE), ScriptTransfer(aa, aZ, dE)], [aX, dE]))
721+ if ((du == du))
722+ then $Tuple2(nil, $Tuple2([IntegerEntry(g, cz), IntegerEntry(h, cA), ScriptTransfer(bJ, bd, dK), ScriptTransfer(ab, be, dK), ScriptTransfer(ac, bf, dK)], [bd, dK]))
701723 else throw("Strict value is not equal to itself.")
702724 }
703725 else throw("Strict value is not equal to itself.")
706728
707729
708730
709-@Callable(az)
710-func replenishWithTwoTokens (cE,cF,cG,cH) = valueOrElse(br(toString(az.caller)), valueOrElse(bt(toString(az.caller)), valueOrElse(bq(), {
711- let bD = Address(cE)
712- let cZ = bi(cH[0])
713- let db = bi(cH[1])
714- let dI = (cF[0] == "true")
715- let dJ = parseIntValue(cF[1])
716- let dK = by(az.caller)
717- let bz = dK._1
718- let bA = dK._2
719- let bo = dK._3
720- let bp = dK._4
721- let bB = dK._5
722- let dL = bu(az.caller, bo, bp)
723- let bm = dL._1
724- let bn = dL._2
725- let bk = dL._3
726- let bl = dL._4
727- let bO = dL._5
728- if ((size(cF) != 2))
731+@Callable(aF)
732+func replenishWithTwoTokens (cK,cL,cM,cN) = valueOrElse(bx(toString(aF.caller)), valueOrElse(bz(toString(aF.caller)), valueOrElse(bw(), {
733+ let bJ = Address(cK)
734+ let df = bo(cN[0])
735+ let dh = bo(cN[1])
736+ let dO = (cL[0] == "true")
737+ let dP = parseIntValue(cL[1])
738+ let dQ = bE(aF.caller)
739+ let bF = dQ._1
740+ let bG = dQ._2
741+ let bu = dQ._3
742+ let bv = dQ._4
743+ let bH = dQ._5
744+ let dR = bA(aF.caller, bu, bv)
745+ let bs = dR._1
746+ let bt = dR._2
747+ let bq = dR._3
748+ let br = dR._4
749+ let bU = bD(aF.caller)
750+ if ((size(cL) != 2))
729751 then throw("Wrong args size")
730- else if (if ((size(cG) != 2))
731- then (size(cG) != 3)
752+ else if (if ((size(cM) != 2))
753+ then (size(cM) != 3)
732754 else false)
733755 then throw("Two or three payments expected")
734- else if (if ((cZ != bo))
756+ else if (if ((df != bu))
735757 then true
736- else (db != bp))
737- then throw(((("Incorrect assets attached. Expected: " + bz) + " and ") + bA))
738- else if (if ((bm > bk))
758+ else (dh != bv))
759+ then throw(((("Incorrect assets attached. Expected: " + bF) + " and ") + bG))
760+ else if (if ((bs > bq))
739761 then true
740- else (bn > bl))
741- then $Tuple2(nil, ([ScriptTransfer(bD, cG[0], cZ), ScriptTransfer(bD, cG[1], db)] ++ (if ((size(cG) == 3))
742- then [AttachedPayment(if ((cH[2] == base58''))
762+ else (bt > br))
763+ then $Tuple2(nil, ([ScriptTransfer(bJ, cM[0], df), ScriptTransfer(bJ, cM[1], dh)] ++ (if ((size(cM) == 3))
764+ then [AttachedPayment(if ((cN[2] == base58''))
743765 then unit
744- else cH[2], cG[2])]
745- else (nil ++ bj(bk, bl, bm, bn, bz, bA)))))
766+ else cN[2], cM[2])]
767+ else (nil ++ bp(bq, br, bs, bt, bF, bG)))))
746768 else {
747- let dM = bH(cG[0], cG[1], cZ, db, bm, bn, bO)
748- let ch = dM._1
749- let ce = dM._2
750- let cf = dM._3
751- let cc = dM._4
752- let cd = dM._5
753- if ((ch == 0))
769+ let dS = bN(cM[0], cM[1], df, dh, bs, bt, bU)
770+ let cn = dS._1
771+ let ck = dS._2
772+ let cl = dS._3
773+ let ci = dS._4
774+ let cj = dS._5
775+ if ((cn == 0))
754776 then throw("Too small amount to replenish")
755- else if ((0 > ce))
777+ else if ((0 > ck))
756778 then throw("Change < 0")
757779 else {
758- let dn = if (contains(ag, bz))
759- then invoke(az.caller, "stakeUnstake", [true, cc, bz], nil)
780+ let dt = if (contains(aj, bF))
781+ then invoke(aF.caller, "stakeUnstake", [true, ci, bF], nil)
760782 else 0
761- if ((dn == dn))
783+ if ((dt == dt))
762784 then {
763- let do = if (contains(ag, bA))
764- then invoke(az.caller, "stakeUnstake", [true, cd, bA], nil)
785+ let du = if (contains(aj, bG))
786+ then invoke(aF.caller, "stakeUnstake", [true, cj, bG], nil)
765787 else 0
766- if ((do == do))
788+ if ((du == du))
767789 then {
768- let dN = if (dI)
790+ let dT = if (dO)
769791 then {
770- let dO = ([AttachedPayment(bB, ch)] ++ (if ((size(cG) == 3))
771- then [AttachedPayment(if ((cH[2] == base58''))
792+ let dU = ([AttachedPayment(bH, cn)] ++ (if ((size(cM) == 3))
793+ then [AttachedPayment(if ((cN[2] == base58''))
772794 then unit
773- else cH[2], cG[2])]
795+ else cN[2], cM[2])]
774796 else nil))
775- let dP = invoke(az.caller, "reissueShareToken", [ch], nil)
776- if ((dP == dP))
797+ let dV = invoke(aF.caller, "reissueShareToken", [cn], nil)
798+ if ((dV == dV))
777799 then {
778- let dQ = invoke(ad, "lockShareTokensFromPool", [cE, toString(az.caller), dJ], dO)
779- if ((dQ == dQ))
800+ let dW = invoke(af, "lockShareTokensFromPool", [cK, toString(aF.caller), dP], dU)
801+ if ((dW == dW))
780802 then nil
781803 else throw("Strict value is not equal to itself.")
782804 }
783805 else throw("Strict value is not equal to itself.")
784806 }
785- else [Reissue(bB, ch, true), ScriptTransfer(bD, ch, bB)]
786- $Tuple2(nil, $Tuple2(([IntegerEntry(g, (bm + cc)), IntegerEntry(h, (bn + cd)), IntegerEntry(l, (bO + ch)), ScriptTransfer(bD, ce, cf)] ++ dN), nil))
807+ else [Reissue(bH, cn, true), ScriptTransfer(bJ, cn, bH)]
808+ $Tuple2(nil, $Tuple2(([IntegerEntry(g, (bs + ci)), IntegerEntry(h, (bt + cj)), IntegerEntry(l, (bU + cn)), ScriptTransfer(bJ, ck, cl)] ++ dT), nil))
787809 }
788810 else throw("Strict value is not equal to itself.")
789811 }
794816
795817
796818
797-@Callable(az)
798-func replenishWithOneToken (cE,cF,cG,cH) = valueOrElse(br(toString(az.caller)), valueOrElse(bt(toString(az.caller)), valueOrElse(bq(), {
799- let bD = Address(cE)
800- let ck = bi(cH[0])
801- let aP = cG[0]
802- let cn = parseIntValue(cF[0])
803- let dI = (cF[1] == "true")
804- let dJ = parseIntValue(cF[2])
805- let dR = by(az.caller)
806- let bz = dR._1
807- let bA = dR._2
808- let bo = dR._3
809- let bp = dR._4
810- let bB = dR._5
811- let dS = bu(az.caller, bo, bp)
812- let bm = dS._1
813- let bn = dS._2
814- let bk = dS._3
815- let bl = dS._4
816- let bO = dS._5
817- let bX = ((bm + bn) == 0)
818- if ((size(cF) != 3))
819+@Callable(aF)
820+func replenishWithOneToken (cK,cL,cM,cN) = valueOrElse(bx(toString(aF.caller)), valueOrElse(bz(toString(aF.caller)), valueOrElse(bw(), {
821+ let bJ = Address(cK)
822+ let cq = bo(cN[0])
823+ let aV = cM[0]
824+ let ct = parseIntValue(cL[0])
825+ let dO = (cL[1] == "true")
826+ let dP = parseIntValue(cL[2])
827+ let dX = bE(aF.caller)
828+ let bF = dX._1
829+ let bG = dX._2
830+ let bu = dX._3
831+ let bv = dX._4
832+ let bH = dX._5
833+ let dY = bA(aF.caller, bu, bv)
834+ let bs = dY._1
835+ let bt = dY._2
836+ let bq = dY._3
837+ let br = dY._4
838+ let bU = bD(aF.caller)
839+ let cd = ((bs + bt) == 0)
840+ if ((size(cL) != 3))
819841 then throw("Wrong args size")
820- else if (if ((size(cG) != 1))
821- then (size(cG) != 2)
842+ else if (if ((size(cM) != 1))
843+ then (size(cM) != 2)
822844 else false)
823845 then throw("Two or one attached assets expected")
824- else if (if ((ck != bo))
825- then (ck != bp)
846+ else if (if ((cq != bu))
847+ then (cq != bv)
826848 else false)
827- then throw(((("Incorrect asset attached. Expected: " + bz) + " or ") + bA))
828- else if (bX)
849+ then throw(((("Incorrect asset attached. Expected: " + bF) + " or ") + bG))
850+ else if (cd)
829851 then throw("For initial exchanger you need to use two tokens")
830- else if (if ((bm > bk))
852+ else if (if ((bs > bq))
831853 then true
832- else (bn > bl))
833- then $Tuple2(nil, ([ScriptTransfer(bD, aP, ck)] ++ (if ((size(cG) == 2))
834- then [AttachedPayment(if ((cH[2] == base58''))
854+ else (bt > br))
855+ then $Tuple2(nil, ([ScriptTransfer(bJ, aV, cq)] ++ (if ((size(cM) == 2))
856+ then [AttachedPayment(if ((cN[2] == base58''))
835857 then unit
836- else cH[2], cG[2])]
837- else (nil ++ bj(bk, bl, bm, bn, bz, bA)))))
858+ else cN[2], cM[2])]
859+ else (nil ++ bp(bq, br, bs, bt, bF, bG)))))
838860 else {
839- let dT = bC(az.caller, az.originCaller)
840- let aT = dT._1
841- let bF = dT._2
842- let bG = dT._3
843- let dU = aA(ck)
844- let dV = dU._1
845- let dW = dU._2
846- let dX = cj(aP, ck, bo, bp, bm, bn, bO, aT, bF, bG, cn)
847- let ch = dX._1
848- let ct = dX._2
849- let cu = dX._3
850- let dY = dX._4
851- let aZ = dX._5
852- let dZ = dX._6
853- let ea = if ((dZ == bo))
854- then bz
855- else bA
856- if ((ch == 0))
861+ let dZ = bI(aF.caller, aF.originCaller)
862+ let aZ = dZ._1
863+ let bL = dZ._2
864+ let bM = dZ._3
865+ let ea = aG(cq)
866+ let eb = ea._1
867+ let ec = ea._2
868+ let ed = cp(aV, cq, bu, bv, bs, bt, bU, aZ, bL, bM, ct)
869+ let cn = ed._1
870+ let cz = ed._2
871+ let cA = ed._3
872+ let ee = ed._4
873+ let bf = ed._5
874+ let ef = ed._6
875+ let eg = if ((ef == bu))
876+ then bF
877+ else bG
878+ if ((cn == 0))
857879 then throw("Too small amount to replenish")
858880 else {
859- let dn = if (contains(ag, dV))
860- then invoke(az.caller, "stakeUnstake", [true, aP, dV], nil)
881+ let dt = if (contains(aj, eb))
882+ then invoke(aF.caller, "stakeUnstake", [true, aV, eb], nil)
861883 else 0
862- if ((dn == dn))
884+ if ((dt == dt))
863885 then {
864- let do = if (contains(ag, ea))
865- then invoke(az.caller, "stakeUnstake", [false, (dY + aZ), ea], nil)
886+ let du = if (contains(aj, eg))
887+ then invoke(aF.caller, "stakeUnstake", [false, (ee + bf), eg], nil)
866888 else 0
867- if ((do == do))
889+ if ((du == du))
868890 then {
869- let dN = if (dI)
891+ let dT = if (dO)
870892 then {
871- let dO = ([AttachedPayment(bB, ch)] ++ (if ((size(cG) == 2))
872- then [AttachedPayment(if ((cH[1] == base58''))
893+ let dU = ([AttachedPayment(bH, cn)] ++ (if ((size(cM) == 2))
894+ then [AttachedPayment(if ((cN[1] == base58''))
873895 then unit
874- else cH[1], cG[1])]
896+ else cN[1], cM[1])]
875897 else nil))
876- let dP = invoke(az.caller, "reissueShareToken", [ch], nil)
877- if ((dP == dP))
898+ let dV = invoke(aF.caller, "reissueShareToken", [cn], nil)
899+ if ((dV == dV))
878900 then {
879- let dQ = invoke(ad, "lockShareTokensFromPool", [cE, toString(az.caller), dJ], dO)
880- if ((dQ == dQ))
901+ let dW = invoke(af, "lockShareTokensFromPool", [cK, toString(aF.caller), dP], dU)
902+ if ((dW == dW))
881903 then nil
882904 else throw("Strict value is not equal to itself.")
883905 }
884906 else throw("Strict value is not equal to itself.")
885907 }
886- else [Reissue(bB, ch, true), ScriptTransfer(bD, ch, bB)]
887- $Tuple2(nil, $Tuple2(([IntegerEntry(g, ct), IntegerEntry(h, cu), IntegerEntry(l, (bO + ch)), ScriptTransfer(Z, dY, dZ), ScriptTransfer(aa, aZ, dZ)] ++ dN), nil))
908+ else [Reissue(bH, cn, true), ScriptTransfer(bJ, cn, bH)]
909+ $Tuple2(nil, $Tuple2(([IntegerEntry(g, cz), IntegerEntry(h, cA), IntegerEntry(l, (bU + cn)), ScriptTransfer(ab, ee, ef), ScriptTransfer(ac, bf, ef)] ++ dT), nil))
888910 }
889911 else throw("Strict value is not equal to itself.")
890912 }
895917
896918
897919
898-@Callable(az)
899-func withdraw (cE,cF,cG,cH) = valueOrElse(br(toString(az.caller)), valueOrElse(bq(), {
900- let bD = Address(cE)
901- let eb = by(az.caller)
902- let bz = eb._1
903- let bA = eb._2
904- let bo = eb._3
905- let bp = eb._4
906- let bB = eb._5
907- let ec = bu(az.caller, bo, bp)
908- let bm = ec._1
909- let bn = ec._2
910- let bk = ec._3
911- let bl = ec._4
912- let bO = ec._5
913- let ed = if ((size(cG) == 1))
920+@Callable(aF)
921+func withdraw (cK,cL,cM,cN) = valueOrElse(bx(toString(aF.caller)), valueOrElse(bw(), {
922+ let bJ = Address(cK)
923+ let eh = bE(aF.caller)
924+ let bF = eh._1
925+ let bG = eh._2
926+ let bu = eh._3
927+ let bv = eh._4
928+ let bH = eh._5
929+ let ei = bA(aF.caller, bu, bv)
930+ let bs = ei._1
931+ let bt = ei._2
932+ let bq = ei._3
933+ let br = ei._4
934+ let bU = bD(aF.caller)
935+ let ej = if ((size(cM) == 1))
914936 then {
915- let ee = bi(cH[0])
916- if ((ee != bB))
917- then throw(("Incorrect asset attached. Expected: " + toBase58String(bB)))
918- else $Tuple2(cG[0], ee)
937+ let ek = bo(cN[0])
938+ if ((ek != bH))
939+ then throw(("Incorrect asset attached. Expected: " + toBase58String(bH)))
940+ else $Tuple2(cM[0], ek)
919941 }
920- else $Tuple2(0, bB)
921- let aP = ed._1
922- let ck = ed._2
923- if ((size(cF) != 1))
942+ else $Tuple2(0, bH)
943+ let aV = ej._1
944+ let cq = ej._2
945+ if ((size(cL) != 1))
924946 then throw("Wrong args size")
925- else if ((size(cG) > 1))
947+ else if ((size(cM) > 1))
926948 then throw("One attached payment expected")
927- else if (if ((bm > bk))
949+ else if (if ((bs > bq))
928950 then true
929- else (bn > bl))
930- then $Tuple2(nil, ([ScriptTransfer(bD, aP, ck)] ++ bj(bk, bl, bm, bn, bz, bA)))
951+ else (bt > br))
952+ then $Tuple2(nil, ([ScriptTransfer(bJ, aV, cq)] ++ bp(bq, br, bs, bt, bF, bG)))
931953 else {
932- let ef = parseIntValue(valueOrElse(cF[0], "0"))
933- let eg = if ((ef > 0))
934- then invoke(ad, "withdrawShareTokensFromPool", [cE, toString(az.caller), ef], nil)
954+ let el = parseIntValue(valueOrElse(cL[0], "0"))
955+ let em = if ((el > 0))
956+ then invoke(af, "withdrawShareTokensFromPool", [cK, toString(aF.caller), el], nil)
935957 else 0
936- if ((eg == eg))
958+ if ((em == em))
937959 then {
938- let cU = (aP + ef)
939- let cW = fraction(cU, bm, bO)
940- let cX = fraction(cU, bn, bO)
941- let dn = if (contains(ag, bz))
942- then invoke(az.caller, "stakeUnstake", [false, cW, bz], nil)
960+ let da = (aV + el)
961+ let dc = fraction(da, bs, bU)
962+ let dd = fraction(da, bt, bU)
963+ let dt = if (contains(aj, bF))
964+ then invoke(aF.caller, "stakeUnstake", [false, dc, bF], nil)
943965 else 0
944- if ((dn == dn))
966+ if ((dt == dt))
945967 then {
946- let do = if (contains(ag, bA))
947- then invoke(az.caller, "stakeUnstake", [false, cX, bA], nil)
968+ let du = if (contains(aj, bG))
969+ then invoke(aF.caller, "stakeUnstake", [false, dd, bG], nil)
948970 else 0
949- if ((do == do))
950- then $Tuple2([ScriptTransfer(az.caller, ef, bB)], $Tuple2([IntegerEntry(g, (bm - cW)), IntegerEntry(h, (bn - cX)), IntegerEntry(l, (bO - cU)), Burn(bB, cU), ScriptTransfer(bD, cW, bo), ScriptTransfer(bD, cX, bp)], nil))
971+ if ((du == du))
972+ then $Tuple2([ScriptTransfer(aF.caller, el, bH)], $Tuple2([IntegerEntry(g, (bs - dc)), IntegerEntry(h, (bt - dd)), IntegerEntry(l, (bU - da)), Burn(bH, da), ScriptTransfer(bJ, dc, bu), ScriptTransfer(bJ, dd, bv)], nil))
951973 else throw("Strict value is not equal to itself.")
952974 }
953975 else throw("Strict value is not equal to itself.")
958980
959981
960982
961-@Callable(az)
962-func withdrawOneToken (cE,cF,cG,cH) = valueOrElse(br(toString(az.caller)), valueOrElse(bt(toString(az.caller)), valueOrElse(bq(), {
963- let bD = Address(cE)
964- let eh = if ((cF[0] == ""))
983+@Callable(aF)
984+func withdrawOneToken (cK,cL,cM,cN) = valueOrElse(bx(toString(aF.caller)), valueOrElse(bz(toString(aF.caller)), valueOrElse(bw(), {
985+ let bJ = Address(cK)
986+ let en = if ((cL[0] == ""))
965987 then unit
966- else fromBase58String(cF[0])
967- let ei = by(az.caller)
968- let bz = ei._1
969- let bA = ei._2
970- let bo = ei._3
971- let bp = ei._4
972- let bB = ei._5
973- let ej = bu(az.caller, bo, bp)
974- let bm = ej._1
975- let bn = ej._2
976- let bk = ej._3
977- let bl = ej._4
978- let bO = ej._5
979- let ek = if ((size(cG) == 1))
988+ else fromBase58String(cL[0])
989+ let eo = bE(aF.caller)
990+ let bF = eo._1
991+ let bG = eo._2
992+ let bu = eo._3
993+ let bv = eo._4
994+ let bH = eo._5
995+ let ep = bA(aF.caller, bu, bv)
996+ let bs = ep._1
997+ let bt = ep._2
998+ let bq = ep._3
999+ let br = ep._4
1000+ let bU = bD(aF.caller)
1001+ let eq = if ((size(cM) == 1))
9801002 then {
981- let ee = bi(cH[0])
982- if ((ee != bB))
983- then throw(("Incorrect asset attached. Expected: " + toBase58String(bB)))
984- else $Tuple2(cG[0], ee)
1003+ let ek = bo(cN[0])
1004+ if ((ek != bH))
1005+ then throw(("Incorrect asset attached. Expected: " + toBase58String(bH)))
1006+ else $Tuple2(cM[0], ek)
9851007 }
986- else $Tuple2(0, bB)
987- let aP = ek._1
988- let ck = ek._2
989- let el = parseIntValue(cF[1])
990- if ((size(cF) != 3))
1008+ else $Tuple2(0, bH)
1009+ let aV = eq._1
1010+ let cq = eq._2
1011+ let er = parseIntValue(cL[1])
1012+ if ((size(cL) != 3))
9911013 then throw("Wrong args size")
992- else if ((size(cG) > 1))
1014+ else if ((size(cM) > 1))
9931015 then throw("One attached payment expected")
994- else if ((ck != bB))
995- then throw(("Incorrect asset attached. Expected: " + toBase58String(bB)))
996- else if (!(containsElement([bo, bp], eh)))
1016+ else if ((cq != bH))
1017+ then throw(("Incorrect asset attached. Expected: " + toBase58String(bH)))
1018+ else if (!(containsElement([bu, bv], en)))
9971019 then throw("Incorrect withdraw asset.")
998- else if (if ((bm > bk))
1020+ else if (if ((bs > bq))
9991021 then true
1000- else (bn > bl))
1001- then $Tuple2(nil, ([ScriptTransfer(bD, aP, ck)] ++ bj(bk, bl, bm, bn, bz, bA)))
1022+ else (bt > br))
1023+ then $Tuple2(nil, ([ScriptTransfer(bJ, aV, cq)] ++ bp(bq, br, bs, bt, bF, bG)))
10021024 else {
1003- let ef = parseIntValue(valueOrElse(cF[2], "0"))
1004- let eg = if ((ef > 0))
1005- then invoke(ad, "withdrawShareTokensFromPool", [cE, toString(az.caller), ef], nil)
1025+ let el = parseIntValue(valueOrElse(cL[2], "0"))
1026+ let em = if ((el > 0))
1027+ then invoke(af, "withdrawShareTokensFromPool", [cK, toString(aF.caller), el], nil)
10061028 else 0
1007- if ((eg == eg))
1029+ if ((em == em))
10081030 then {
1009- let cU = (aP + ef)
1010- let cW = fraction(cU, bm, bO)
1011- let cX = fraction(cU, bn, bO)
1012- let em = bC(az.caller, az.originCaller)
1013- let aT = em._1
1014- let bF = em._2
1015- let bG = em._3
1016- let en = if ((eh == bo))
1017- then aO(cX, el, (bn - cX), (bm - cW), aT, bF, bG)
1018- else aO(cW, el, (bm - cW), (bn - cX), aT, bF, bG)
1019- let aW = en._1
1020- let aX = en._2
1021- let aY = en._3
1022- let aZ = en._4
1023- let eo = if ((eh == bo))
1031+ let da = (aV + el)
1032+ let dc = fraction(da, bs, bU)
1033+ let dd = fraction(da, bt, bU)
1034+ let es = bI(aF.caller, aF.originCaller)
1035+ let aZ = es._1
1036+ let bL = es._2
1037+ let bM = es._3
1038+ let et = if ((en == bu))
1039+ then aU(dd, er, (bt - dd), (bs - dc), aZ, bL, bM)
1040+ else aU(dc, er, (bs - dc), (bt - dd), aZ, bL, bM)
1041+ let bc = et._1
1042+ let bd = et._2
1043+ let be = et._3
1044+ let bf = et._4
1045+ let eu = if ((en == bu))
10241046 then {
1025- let ep = if (contains(ag, bz))
1026- then invoke(az.caller, "stakeUnstake", [false, (((cW + aX) + aY) + aZ), bz], nil)
1047+ let ev = if (contains(aj, bF))
1048+ then invoke(aF.caller, "stakeUnstake", [false, (((dc + bd) + be) + bf), bF], nil)
10271049 else 0
1028- if ((ep == ep))
1029- then $Tuple4(((((bm - cW) - aX) - aY) - aZ), bn, bo, [ScriptTransfer(bD, (cW + aX), bo)])
1050+ if ((ev == ev))
1051+ then $Tuple4(((((bs - dc) - bd) - be) - bf), bt, bu, [ScriptTransfer(bJ, (dc + bd), bu)])
10301052 else throw("Strict value is not equal to itself.")
10311053 }
10321054 else {
1033- let ep = if (contains(ag, bA))
1034- then invoke(az.caller, "stakeUnstake", [false, (((cX + aX) + aY) + aZ), bA], nil)
1055+ let ev = if (contains(aj, bG))
1056+ then invoke(aF.caller, "stakeUnstake", [false, (((dd + bd) + be) + bf), bG], nil)
10351057 else 0
1036- if ((ep == ep))
1037- then $Tuple4(bm, ((((bn - cX) - aX) - aY) - aZ), bp, [ScriptTransfer(bD, (cX + aX), bp)])
1058+ if ((ev == ev))
1059+ then $Tuple4(bs, ((((bt - dd) - bd) - be) - bf), bv, [ScriptTransfer(bJ, (dd + bd), bv)])
10381060 else throw("Strict value is not equal to itself.")
10391061 }
1040- let ct = eo._1
1041- let cu = eo._2
1042- let eq = eo._3
1043- let er = eo._4
1044- $Tuple2([ScriptTransfer(az.caller, ef, bB)], $Tuple2(([IntegerEntry(g, ct), IntegerEntry(h, cu), IntegerEntry(l, (bO - cU)), Burn(bB, cU), ScriptTransfer(Z, aY, eq), ScriptTransfer(aa, aZ, eq)] ++ er), nil))
1062+ let cz = eu._1
1063+ let cA = eu._2
1064+ let ew = eu._3
1065+ let ex = eu._4
1066+ $Tuple2([ScriptTransfer(aF.caller, el, bH)], $Tuple2(([IntegerEntry(g, cz), IntegerEntry(h, cA), IntegerEntry(l, (bU - da)), Burn(bH, da), ScriptTransfer(ab, be, ew), ScriptTransfer(ac, bf, ew)] ++ ex), nil))
10451067 }
10461068 else throw("Strict value is not equal to itself.")
10471069 }
10491071
10501072
10511073
1052-@Callable(az)
1053-func takeIntoAccountExtraFunds (cE,cF,cG,cH) = valueOrElse(br(toString(az.caller)), valueOrElse(bq(), {
1054- let es = by(az.caller)
1055- let bz = es._1
1056- let bA = es._2
1057- let bo = es._3
1058- let bp = es._4
1059- let et = if (if ((bo == ae))
1074+@Callable(aF)
1075+func takeIntoAccountExtraFunds (cK,cL,cM,cN) = valueOrElse(bx(toString(aF.caller)), valueOrElse(bw(), {
1076+ let ey = bE(aF.caller)
1077+ let bF = ey._1
1078+ let bG = ey._2
1079+ let bu = ey._3
1080+ let bv = ey._4
1081+ let ez = if (if ((bu == ag))
10601082 then true
1061- else (bp == ae))
1062- then invoke(az.caller, "claimNetrinoRewards", nil, nil)
1063- else 0
1064- if ((et == et))
1083+ else (bv == ag))
1084+ then invoke(aF.caller, "claimNetrinoRewards", nil, nil)
1085+ else nil
1086+ if ((ez == ez))
10651087 then {
1066- let eu = bu(az.caller, bo, bp)
1067- let bm = eu._1
1068- let bn = eu._2
1069- let bk = eu._3
1070- let bl = eu._4
1071- let ev = (bk - bm)
1072- let ew = (bl - bn)
1073- if ((size(cF) != 0))
1088+ let eA = bA(aF.caller, bu, bv)
1089+ let bs = eA._1
1090+ let bt = eA._2
1091+ let bq = eA._3
1092+ let br = eA._4
1093+ let bB = eA._5
1094+ let bC = eA._6
1095+ let eB = (bq - bs)
1096+ let eC = (br - bt)
1097+ let eD = if ((bu == ai))
1098+ then $Tuple2((bq - bB), eC)
1099+ else if ((bv == ai))
1100+ then $Tuple2(eB, (br - bC))
1101+ else $Tuple2(eB, eC)
1102+ let eE = eD._1
1103+ let eF = eD._2
1104+ if ((size(cL) != 0))
10741105 then throw("Wrong args size")
1075- else if ((Z != az.originCaller))
1106+ else if ((ab != aF.originCaller))
10761107 then throw("Only the wallet can call this function")
1077- else if (if ((0 > ev))
1108+ else if (if ((0 > eB))
10781109 then true
1079- else (0 > ew))
1080- then aG("Enroll amount negative")
1081- else if (if ((ev == 0))
1082- then (ew == 0)
1110+ else (0 > eC))
1111+ then aM("Enroll amount negative")
1112+ else if (if ((eB == 0))
1113+ then (eC == 0)
10831114 else false)
10841115 then throw("No money to take")
10851116 else {
1086- let dn = if (if (contains(ag, bz))
1087- then (ev > 0)
1117+ let dt = if (if (contains(aj, bF))
1118+ then (eE > 0)
10881119 else false)
1089- then invoke(az.caller, "stakeUnstake", [true, ev, bz], nil)
1120+ then invoke(aF.caller, "stakeUnstake", [true, eE, bF], nil)
10901121 else 0
1091- if ((dn == dn))
1122+ if ((dt == dt))
10921123 then {
1093- let do = if (if (contains(ag, bA))
1094- then (ew > 0)
1124+ let du = if (if (contains(aj, bG))
1125+ then (eF > 0)
10951126 else false)
1096- then invoke(az.caller, "stakeUnstake", [true, ew, bA], nil)
1127+ then invoke(aF.caller, "stakeUnstake", [true, eF, bG], nil)
10971128 else 0
1098- if ((do == do))
1099- then $Tuple2(nil, $Tuple2([IntegerEntry(g, (bm + ev)), IntegerEntry(h, (bn + ew))], nil))
1129+ if ((du == du))
1130+ then $Tuple2(nil, $Tuple2([IntegerEntry(g, (bs + eB)), IntegerEntry(h, (bt + eC))], nil))
11001131 else throw("Strict value is not equal to itself.")
11011132 }
11021133 else throw("Strict value is not equal to itself.")
11061137 }))
11071138
11081139
1109-@Verifier(ex)
1110-func ey () = {
1111- let ez = {
1112- let eA = if (sigVerify(ex.bodyBytes, ex.proofs[0], V))
1140+@Verifier(eG)
1141+func eH () = {
1142+ let eI = {
1143+ let eJ = if (sigVerify(eG.bodyBytes, eG.proofs[0], X))
11131144 then 1
11141145 else 0
1115- let eB = if (sigVerify(ex.bodyBytes, ex.proofs[1], W))
1146+ let eK = if (sigVerify(eG.bodyBytes, eG.proofs[1], Y))
11161147 then 1
11171148 else 0
1118- let eC = if (sigVerify(ex.bodyBytes, ex.proofs[2], X))
1149+ let eL = if (sigVerify(eG.bodyBytes, eG.proofs[2], Z))
11191150 then 1
11201151 else 0
1121- (((eA + eB) + eC) >= 2)
1152+ (((eJ + eK) + eL) >= 2)
11221153 }
1123- ez
1154+ eI
11241155 }
11251156
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "1.0.0"
55
66 let b = "version"
77
88 let c = "active"
99
1010 let d = "deprecated_"
1111
1212 let e = "A_asset_id"
1313
1414 let f = "B_asset_id"
1515
1616 let g = "A_asset_balance"
1717
1818 let h = "B_asset_balance"
1919
2020 let i = "A_asset_init"
2121
2222 let j = "B_asset_init"
2323
2424 let k = "share_asset_id"
2525
2626 let l = "share_asset_supply"
2727
2828 let m = "commission"
2929
3030 let n = "shutdown_cause"
3131
3232 let o = "first_harvest"
3333
3434 let p = "first_harvest_height"
3535
3636 let q = "share_limit_on_first_harvest"
3737
3838 let r = "base_period"
3939
4040 let s = "period_length"
4141
4242 let t = "start_height"
4343
4444 let u = "staking_usdnnsbt_address"
4545
4646 let v = "staking_eurn_address"
4747
4848 let w = "leasing_amount"
4949
5050 let x = "usdn_asset_id"
5151
5252 let y = "eurn_asset_id"
5353
54-let z = "staking_assets"
54+let z = "l2mp_asset_id"
5555
56-let A = "active_all_contracts"
56+let A = "staking_assets"
5757
58-let B = "discounts"
58+let B = "active_all_contracts"
5959
60-let C = "discount_values"
60+let C = "discounts"
6161
62-let D = "_GSwop_amount"
62+let D = "discount_values"
6363
64-let E = "_SWOP_amount"
64+let E = "_GSwop_amount"
6565
66-let F = "pool_"
66+let F = "_SWOP_amount"
6767
68-let G = "admin_pub_1"
68+let G = "pool_"
6969
70-let H = "admin_pub_2"
70+let H = "admin_pub_1"
7171
72-let I = "admin_pub_3"
72+let I = "admin_pub_2"
7373
74-let J = "admin_invoke_pub"
74+let J = "admin_pub_3"
7575
76-let K = "money_box_address"
76+let K = "admin_invoke_pub"
7777
78-let L = "team_box_address"
78+let L = "money_box_address"
7979
80-let M = "voting_address"
80+let M = "team_box_address"
8181
82-let N = "governance_address"
82+let N = "voting_address"
8383
84-let O = "farming_address"
84+let O = "governance_address"
8585
86-let P = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
86+let P = "farming_address"
8787
88-func Q (R) = {
89- let S = getString(P, R)
90- if ($isInstanceOf(S, "String"))
88+let Q = "staking_l2mp_address"
89+
90+let R = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom')
91+
92+func S (T) = {
93+ let U = getString(R, T)
94+ if ($isInstanceOf(U, "String"))
9195 then {
92- let T = S
93- fromBase58String(T)
96+ let V = U
97+ fromBase58String(V)
9498 }
9599 else {
96- let U = S
97- throw((R + "is empty"))
100+ let W = U
101+ throw((T + "is empty"))
98102 }
99103 }
100104
101105
102-let V = Q(G)
106+let X = S(H)
103107
104-let W = Q(H)
108+let Y = S(I)
105109
106-let X = Q(I)
110+let Z = S(J)
107111
108-let Y = Q(J)
112+let aa = S(K)
109113
110-let Z = Address(Q(K))
114+let ab = Address(S(L))
111115
112-let aa = Address(Q(L))
116+let ac = Address(S(M))
113117
114-let ab = Address(Q(M))
118+let ad = Address(S(N))
115119
116-let ac = Address(Q(N))
120+let ae = Address(S(O))
117121
118-let ad = Address(Q(O))
122+let af = Address(S(P))
119123
120-let ae = Q(x)
124+let ag = S(x)
121125
122-let af = Q(y)
126+let ah = S(y)
123127
124-let ag = getStringValue(P, z)
128+let ai = S(z)
125129
126-let ah = Address(Q(u))
130+let aj = getStringValue(R, A)
127131
128-let ai = Address(Q(v))
132+let ak = Address(S(u))
129133
130-let aj = valueOrErrorMessage(getInteger(ab, r), "Empty kBasePeriod")
134+let al = Address(S(v))
131135
132-let ak = valueOrErrorMessage(getInteger(ab, t), "Empty kStartHeight")
136+let am = Address(S(Q))
133137
134-let al = valueOrErrorMessage(getInteger(ab, s), "Empty kPeriodLength")
138+let an = valueOrErrorMessage(getInteger(ad, r), "Empty kBasePeriod")
135139
136-let am = ((aj + ((height - ak) / al)) + 3)
140+let ao = valueOrErrorMessage(getInteger(ad, t), "Empty kStartHeight")
137141
138-let an = getBooleanValue(P, A)
142+let ap = valueOrErrorMessage(getInteger(ad, s), "Empty kPeriodLength")
139143
140-let ao = 1000000
144+let aq = ((an + ((height - ao) / ap)) + 3)
141145
142-let ap = 100000000
146+let ar = getBooleanValue(R, B)
143147
144-let aq = toBigInt(10000000000000000)
148+let as = 1000000
145149
146-func ar (as,at) = {
147- let S = as
148- if ($isInstanceOf(S, "ByteVector"))
150+let at = 100000000
151+
152+let au = toBigInt(10000000000000000)
153+
154+func av (aw,ax) = {
155+ let U = aw
156+ if ($isInstanceOf(U, "ByteVector"))
149157 then {
150- let au = S
151- assetBalance(at, au)
158+ let ay = U
159+ assetBalance(ax, ay)
152160 }
153- else if ($isInstanceOf(S, "Unit"))
161+ else if ($isInstanceOf(U, "Unit"))
154162 then {
155- let av = S
156- wavesBalance(at).available
163+ let az = U
164+ wavesBalance(ax).available
157165 }
158166 else throw("Match error")
159167 }
160168
161169
162-func aw (as,at) = {
163- let ax = {
164- let S = as
165- if ($isInstanceOf(S, "ByteVector"))
170+func aA (aw,ax) = {
171+ let aB = {
172+ let U = aw
173+ if ($isInstanceOf(U, "ByteVector"))
166174 then {
167- let ay = S
168- if ((ay == ae))
169- then getInteger(ah, ((("rpd_balance_" + toBase58String(ay)) + "_") + toString(at)))
170- else if ((ay == af))
171- then getInteger(ai, ((("%s%s%s__stakingBalance__" + toBase58String(ay)) + "__") + toString(at)))
172- else 0
175+ let aC = U
176+ if ((aC == ag))
177+ then getInteger(ak, ((("rpd_balance_" + toBase58String(aC)) + "_") + toString(ax)))
178+ else if ((aC == ah))
179+ then getInteger(al, ((("%s%s%s__stakingBalance__" + toBase58String(aC)) + "__") + toString(ax)))
180+ else if ((aC == ai))
181+ then {
182+ let aD = {
183+ let aE = invoke(am, "getUserAssetsREADONLY", [ax], nil)
184+ if ($isInstanceOf(aE, "(Int, Int, Int, Int, Int)"))
185+ then aE
186+ else throw(($getType(aE) + " couldn't be cast to (Int, Int, Int, Int, Int)"))
187+ }
188+ if ((aD == aD))
189+ then aD
190+ else throw("Strict value is not equal to itself.")
191+ }
192+ else 0
173193 }
174- else if ($isInstanceOf(S, "Unit"))
175- then valueOrElse(getInteger(at, w), 0)
194+ else if ($isInstanceOf(U, "Unit"))
195+ then valueOrElse(getInteger(ax, w), 0)
176196 else throw("Match error")
177197 }
178- let S = ax
179- if ($isInstanceOf(S, "Int"))
198+ let U = aB
199+ if ($isInstanceOf(U, "Int"))
180200 then {
181- let az = S
182- az
201+ let aF = U
202+ aF
183203 }
184204 else 0
185205 }
186206
187207
188-func aA (as) = {
189- let S = as
190- if (if ($isInstanceOf(S, "String"))
208+func aG (aw) = {
209+ let U = aw
210+ if (if ($isInstanceOf(U, "String"))
191211 then true
192- else $isInstanceOf(S, "ByteVector"))
212+ else $isInstanceOf(U, "ByteVector"))
193213 then {
194- let au = S
195- let aB = {
196- let aC = au
197- if ($isInstanceOf(aC, "ByteVector"))
214+ let ay = U
215+ let aH = {
216+ let aI = ay
217+ if ($isInstanceOf(aI, "ByteVector"))
198218 then {
199- let ay = aC
200- $Tuple2(toBase58String(ay), ay)
219+ let aC = aI
220+ $Tuple2(toBase58String(aC), aC)
201221 }
202- else if ($isInstanceOf(aC, "String"))
222+ else if ($isInstanceOf(aI, "String"))
203223 then {
204- let ay = aC
205- $Tuple2(ay, fromBase58String(ay))
224+ let aC = aI
225+ $Tuple2(aC, fromBase58String(aC))
206226 }
207227 else throw("Match error")
208228 }
209- let aD = aB._1
210- let aE = aB._2
211- let aF = valueOrErrorMessage(assetInfo(aE), (("Asset " + aD) + " doesn't exist"))
212- $Tuple3(aD, aF.name, aF.decimals)
229+ let aJ = aH._1
230+ let aK = aH._2
231+ let aL = valueOrErrorMessage(assetInfo(aK), (("Asset " + aJ) + " doesn't exist"))
232+ $Tuple3(aJ, aL.name, aL.decimals)
213233 }
214- else if ($isInstanceOf(S, "Unit"))
234+ else if ($isInstanceOf(U, "Unit"))
215235 then {
216- let av = S
236+ let az = U
217237 $Tuple3("WAVES", "WAVES", 8)
218238 }
219239 else throw("Match error")
220240 }
221241
222242
223-func aG (aH) = [BooleanEntry(c, false), StringEntry(n, aH)]
243+func aM (aN) = [BooleanEntry(c, false), StringEntry(n, aN)]
224244
225245
226-func aI (aJ) = {
227- let aK = valueOrElse(getInteger(ac, (toString(aJ) + E)), 0)
228- let aL = valueOrElse(getInteger(ac, (toString(aJ) + D)), aK)
229- let aM = split(getStringValue(P, C), ",")
230- let aN = split(getStringValue(P, B), ",")
231- if (if ((aL >= parseIntValue(aM[0])))
232- then (parseIntValue(aM[1]) > aL)
246+func aO (aP) = {
247+ let aQ = valueOrElse(getInteger(ae, (toString(aP) + F)), 0)
248+ let aR = valueOrElse(getInteger(ae, (toString(aP) + E)), aQ)
249+ let aS = split(getStringValue(R, D), ",")
250+ let aT = split(getStringValue(R, C), ",")
251+ if (if ((aR >= parseIntValue(aS[0])))
252+ then (parseIntValue(aS[1]) > aR)
233253 else false)
234- then (ao - parseIntValue(aN[0]))
235- else if (if ((aL >= parseIntValue(aM[1])))
236- then (parseIntValue(aM[2]) > aL)
254+ then (as - parseIntValue(aT[0]))
255+ else if (if ((aR >= parseIntValue(aS[1])))
256+ then (parseIntValue(aS[2]) > aR)
237257 else false)
238- then (ao - parseIntValue(aN[1]))
239- else if (if ((aL >= parseIntValue(aM[2])))
240- then (parseIntValue(aM[3]) > aL)
258+ then (as - parseIntValue(aT[1]))
259+ else if (if ((aR >= parseIntValue(aS[2])))
260+ then (parseIntValue(aS[3]) > aR)
241261 else false)
242- then (ao - parseIntValue(aN[2]))
243- else if (if ((aL >= parseIntValue(aM[3])))
244- then (parseIntValue(aM[4]) > aL)
262+ then (as - parseIntValue(aT[2]))
263+ else if (if ((aR >= parseIntValue(aS[3])))
264+ then (parseIntValue(aS[4]) > aR)
245265 else false)
246- then (ao - parseIntValue(aN[3]))
247- else if ((aL >= parseIntValue(aM[4])))
248- then (ao - parseIntValue(aN[4]))
249- else ao
266+ then (as - parseIntValue(aT[3]))
267+ else if ((aR >= parseIntValue(aS[4])))
268+ then (as - parseIntValue(aT[4]))
269+ else as
250270 }
251271
252272
253-func aO (aP,aQ,aR,aS,aT,aU,aV) = {
254- let aW = fraction(aS, aP, (aP + aR))
255- let aX = fraction(aW, (ao - aT), ao)
256- let aY = fraction(aW, aU, ao)
257- let aZ = fraction(aW, aV, ao)
258- if ((aQ > aX))
259- then throw(((("Calculated amount to receive " + toString(aX)) + " is less than specified minimum ") + toString(aQ)))
260- else $Tuple4(aW, aX, aY, aZ)
273+func aU (aV,aW,aX,aY,aZ,ba,bb) = {
274+ let bc = fraction(aY, aV, (aV + aX))
275+ let bd = fraction(bc, (as - aZ), as)
276+ let be = fraction(bc, ba, as)
277+ let bf = fraction(bc, bb, as)
278+ if ((aW > bd))
279+ then throw(((("Calculated amount to receive " + toString(bd)) + " is less than specified minimum ") + toString(aW)))
280+ else $Tuple4(bc, bd, be, bf)
261281 }
262282
263283
264-func ba (aP,bb,aT) = {
265- let bc = (ao - aT)
266- let bd = fraction(aT, 55, 100)
267- let be = (ap + fraction((bc * bd), ap, (ao * ao)))
268- let bf = ((((bb + fraction(bb, bc, ao)) + fraction(aP, bc, ao)) - aP) - fraction(aP, (bc * bd), (ao * ao)))
269- let bg = (-(toBigInt(bb)) * toBigInt(aP))
270- let bh = ((toBigInt(bf) * toBigInt(bf)) - fraction((toBigInt(4) * bg), toBigInt(be), toBigInt(ap)))
271- toInt(fraction((-(toBigInt(bf)) + sqrtBigInt(bh, 0, 0, DOWN)), toBigInt(ap), toBigInt((2 * be))))
284+func bg (aV,bh,aZ) = {
285+ let bi = (as - aZ)
286+ let bj = fraction(aZ, 55, 100)
287+ let bk = (at + fraction((bi * bj), at, (as * as)))
288+ let bl = ((((bh + fraction(bh, bi, as)) + fraction(aV, bi, as)) - aV) - fraction(aV, (bi * bj), (as * as)))
289+ let bm = (-(toBigInt(bh)) * toBigInt(aV))
290+ let bn = ((toBigInt(bl) * toBigInt(bl)) - fraction((toBigInt(4) * bm), toBigInt(bk), toBigInt(at)))
291+ toInt(fraction((-(toBigInt(bl)) + sqrtBigInt(bn, 0, 0, DOWN)), toBigInt(at), toBigInt((2 * bk))))
272292 }
273293
274294
275-func bi (as) = if ((as == base58''))
295+func bo (aw) = if ((aw == base58''))
276296 then unit
277- else as
297+ else aw
278298
279299
280-func bj (bk,bl,bm,bn,bo,bp) = aG(((((((((((((((("Suspicious state. Actual balances: " + toString(bk)) + " ") + bo) + ", ") + toString(bl)) + " ") + bp) + ". State: ") + toString(bm)) + " ") + bo) + ", ") + toString(bn)) + " ") + bp))
300+func bp (bq,br,bs,bt,bu,bv) = aM(((((((((((((((("Suspicious state. Actual balances: " + toString(bq)) + " ") + bu) + ", ") + toString(br)) + " ") + bv) + ". State: ") + toString(bs)) + " ") + bu) + ", ") + toString(bt)) + " ") + bv))
281301
282302
283-func bq () = if (an)
303+func bw () = if (ar)
284304 then unit
285305 else throw("DApp is inactive at this moment")
286306
287307
288-func br (bs) = if (isDefined(getString(P, (F + bs))))
308+func bx (by) = if (isDefined(getString(R, (G + by))))
289309 then unit
290310 else throw("DApp is not registered pool")
291311
292312
293-func bt (bs) = if (!(valueOrElse(getBoolean(P, (d + bs)), false)))
313+func bz (by) = if (!(valueOrElse(getBoolean(R, (d + by)), false)))
294314 then unit
295315 else throw("Pool is deprecated. Only withdraw action allowed.")
296316
297317
298-func bu (at,bo,bp) = {
299- let bm = getIntegerValue(at, g)
300- let bn = getIntegerValue(at, h)
301- let bv = aw(bo, at)
302- let bw = aw(bp, at)
303- let bk = (ar(bo, at) + bv)
304- let bl = (ar(bp, at) + bw)
305- let bx = getIntegerValue(at, l)
306- $Tuple5(bm, bn, bk, bl, bx)
318+func bA (ax,bu,bv) = {
319+ let bs = getIntegerValue(ax, g)
320+ let bt = getIntegerValue(ax, h)
321+ let bB = aA(bu, ax)
322+ let bC = aA(bv, ax)
323+ let bq = (av(bu, ax) + bB)
324+ let br = (av(bv, ax) + bC)
325+ $Tuple6(bs, bt, bq, br, bB, bC)
307326 }
308327
309328
310-func by (at) = {
311- let bz = getStringValue(at, e)
312- let bA = getStringValue(at, f)
313- let bo = if ((bz == "WAVES"))
329+func bD (ax) = getIntegerValue(ax, l)
330+
331+
332+func bE (ax) = {
333+ let bF = getStringValue(ax, e)
334+ let bG = getStringValue(ax, f)
335+ let bu = if ((bF == "WAVES"))
314336 then unit
315- else fromBase58String(bz)
316- let bp = if ((bA == "WAVES"))
337+ else fromBase58String(bF)
338+ let bv = if ((bG == "WAVES"))
317339 then unit
318- else fromBase58String(bA)
319- let bB = fromBase58String(getStringValue(at, k))
320- $Tuple5(bz, bA, bo, bp, bB)
340+ else fromBase58String(bG)
341+ let bH = fromBase58String(getStringValue(ax, k))
342+ $Tuple5(bF, bG, bu, bv, bH)
321343 }
322344
323345
324-func bC (at,bD) = {
325- let bE = aI(bD)
326- let aT = fraction(getIntegerValue(at, m), bE, ao, CEILING)
327- let bF = fraction(aT, 35, 100)
328- let bG = fraction(aT, 10, 100)
329- $Tuple3(aT, bF, bG)
346+func bI (ax,bJ) = {
347+ let bK = aO(bJ)
348+ let aZ = fraction(getIntegerValue(ax, m), bK, as, CEILING)
349+ let bL = fraction(aZ, 35, 100)
350+ let bM = fraction(aZ, 10, 100)
351+ $Tuple3(aZ, bL, bM)
330352 }
331353
332354
333-func bH (bI,bJ,bK,bL,bM,bN,bO) = {
334- let bP = aA(bK)
335- let bQ = bP._1
336- let bR = bP._2
337- let bS = bP._3
338- let bT = aA(bL)
339- let bU = bT._1
340- let bV = bT._2
341- let bW = bT._3
342- let bX = ((bM + bN) == 0)
343- let bY = if (bX)
344- then $Tuple5(bI, bJ, 0, bK, toBigInt(1))
355+func bN (bO,bP,bQ,bR,bS,bT,bU) = {
356+ let bV = aG(bQ)
357+ let bW = bV._1
358+ let bX = bV._2
359+ let bY = bV._3
360+ let bZ = aG(bR)
361+ let ca = bZ._1
362+ let cb = bZ._2
363+ let cc = bZ._3
364+ let cd = ((bS + bT) == 0)
365+ let ce = if (cd)
366+ then $Tuple5(bO, bP, 0, bQ, toBigInt(1))
345367 else {
346- let bZ = fraction(aq, toBigInt(bI), toBigInt(bM))
347- let ca = fraction(aq, toBigInt(bJ), toBigInt(bN))
348- if ((ca > bZ))
368+ let cf = fraction(au, toBigInt(bO), toBigInt(bS))
369+ let cg = fraction(au, toBigInt(bP), toBigInt(bT))
370+ if ((cg > cf))
349371 then {
350- let cb = fraction(bI, bN, bM)
351- $Tuple5(bI, cb, (bJ - cb), bL, bZ)
372+ let ch = fraction(bO, bT, bS)
373+ $Tuple5(bO, ch, (bP - ch), bR, cf)
352374 }
353375 else {
354- let cb = fraction(bJ, bM, bN)
355- $Tuple5(cb, bJ, (bI - cb), bK, ca)
376+ let ch = fraction(bP, bS, bT)
377+ $Tuple5(ch, bP, (bO - ch), bQ, cg)
356378 }
357379 }
358- let cc = bY._1
359- let cd = bY._2
360- let ce = bY._3
361- let cf = bY._4
362- let cg = bY._5
363- let ch = if (bX)
380+ let ci = ce._1
381+ let cj = ce._2
382+ let ck = ce._3
383+ let cl = ce._4
384+ let cm = ce._5
385+ let cn = if (cd)
364386 then {
365- let ci = ((bS + bW) / 2)
366- fraction(pow(cc, bS, 5, 1, bS, DOWN), pow(cd, bW, 5, 1, bW, DOWN), pow(10, 0, ci, 0, 0, DOWN))
387+ let co = ((bY + cc) / 2)
388+ fraction(pow(ci, bY, 5, 1, bY, DOWN), pow(cj, cc, 5, 1, cc, DOWN), pow(10, 0, co, 0, 0, DOWN))
367389 }
368- else toInt(fraction(cg, toBigInt(bO), aq))
369- $Tuple5(ch, ce, cf, cc, cd)
390+ else toInt(fraction(cm, toBigInt(bU), au))
391+ $Tuple5(cn, ck, cl, ci, cj)
370392 }
371393
372394
373-func cj (aP,ck,ay,cl,bM,bN,cm,aT,bF,bG,cn) = if ((ck == ay))
395+func cp (aV,cq,aC,cr,bS,bT,cs,aZ,bL,bM,ct) = if ((cq == aC))
374396 then {
375- let co = ba(aP, bM, aT)
376- let cp = aO(co, cn, bM, bN, aT, bF, bG)
377- let aW = cp._1
378- let aX = cp._2
379- let aY = cp._3
380- let cq = cp._4
381- let cr = (bM + co)
382- let cs = (((bN + aW) - aY) - cq)
383- let ct = (bM + aP)
384- let cu = ((bN - aY) - cq)
385- let bZ = fraction(toBigInt((aP - co)), aq, toBigInt(cr))
386- let ca = fraction(toBigInt(aX), aq, toBigInt(cs))
387- let ch = toInt(fraction(min([bZ, ca]), toBigInt(cm), aq))
388- let cv = toInt(fraction(fraction(toBigInt((aP - co)), aq, toBigInt(bM)), toBigInt(cm), aq))
389- let cw = fraction((ch - cv), ap, cv)
390- $Tuple7(ch, ct, cu, aY, cq, cl, cw)
397+ let cu = bg(aV, bS, aZ)
398+ let cv = aU(cu, ct, bS, bT, aZ, bL, bM)
399+ let bc = cv._1
400+ let bd = cv._2
401+ let be = cv._3
402+ let cw = cv._4
403+ let cx = (bS + cu)
404+ let cy = (((bT + bc) - be) - cw)
405+ let cz = (bS + aV)
406+ let cA = ((bT - be) - cw)
407+ let cf = fraction(toBigInt((aV - cu)), au, toBigInt(cx))
408+ let cg = fraction(toBigInt(bd), au, toBigInt(cy))
409+ let cn = toInt(fraction(min([cf, cg]), toBigInt(cs), au))
410+ let cB = toInt(fraction(fraction(toBigInt((aV - cu)), au, toBigInt(bS)), toBigInt(cs), au))
411+ let cC = fraction((cn - cB), at, cB)
412+ $Tuple7(cn, cz, cA, be, cw, cr, cC)
391413 }
392414 else {
393- let co = ba(aP, bN, aT)
394- let cx = aO(co, cn, bN, bM, aT, bF, bG)
395- let aW = cx._1
396- let aX = cx._2
397- let aY = cx._3
398- let cq = cx._4
399- let cr = (((bM + aW) - aY) - cq)
400- let cs = (bN + co)
401- let ct = ((bM - aY) - cq)
402- let cu = (bN + aP)
403- let bZ = fraction(toBigInt(aX), aq, toBigInt(cr))
404- let ca = fraction(toBigInt((aP - co)), aq, toBigInt(cs))
405- let ch = toInt(fraction(min([bZ, ca]), toBigInt(cm), aq))
406- let cv = toInt(fraction(fraction(toBigInt((aP - co)), aq, toBigInt(bN)), toBigInt(cm), aq))
407- let cw = fraction((ch - cv), ap, cv)
408- $Tuple7(ch, ct, cu, aY, cq, ay, cw)
415+ let cu = bg(aV, bT, aZ)
416+ let cD = aU(cu, ct, bT, bS, aZ, bL, bM)
417+ let bc = cD._1
418+ let bd = cD._2
419+ let be = cD._3
420+ let cw = cD._4
421+ let cx = (((bS + bc) - be) - cw)
422+ let cy = (bT + cu)
423+ let cz = ((bS - be) - cw)
424+ let cA = (bT + aV)
425+ let cf = fraction(toBigInt(bd), au, toBigInt(cx))
426+ let cg = fraction(toBigInt((aV - cu)), au, toBigInt(cy))
427+ let cn = toInt(fraction(min([cf, cg]), toBigInt(cs), au))
428+ let cB = toInt(fraction(fraction(toBigInt((aV - cu)), au, toBigInt(bT)), toBigInt(cs), au))
429+ let cC = fraction((cn - cB), at, cB)
430+ $Tuple7(cn, cz, cA, be, cw, aC, cC)
409431 }
410432
411433
412-func cy (bI,bJ,bK,bL,bM,bN,cm,aT,bF,bG,cn) = {
413- let cz = bH(bI, bJ, bK, bL, bM, bN, cm)
414- let cA = cz._1
415- let ce = cz._2
416- let cf = cz._3
417- let cc = cz._4
418- let cd = cz._5
419- if ((ce > 0))
434+func cE (bO,bP,bQ,bR,bS,bT,cs,aZ,bL,bM,ct) = {
435+ let cF = bN(bO, bP, bQ, bR, bS, bT, cs)
436+ let cG = cF._1
437+ let ck = cF._2
438+ let cl = cF._3
439+ let ci = cF._4
440+ let cj = cF._5
441+ if ((ck > 0))
420442 then {
421- let cB = cj(ce, cf, bK, bL, (bM + cc), (bN + cd), cm, aT, bF, bG, cn)
422- let cC = cB._1
423- let ct = cB._2
424- let cu = cB._3
425- let aY = cB._4
426- let cq = cB._5
427- let cD = cB._6
428- let cw = cB._7
429- $Tuple7((cA + cC), cw, ct, cu, aY, cq, cD)
443+ let cH = cp(ck, cl, bQ, bR, (bS + ci), (bT + cj), cs, aZ, bL, bM, ct)
444+ let cI = cH._1
445+ let cz = cH._2
446+ let cA = cH._3
447+ let be = cH._4
448+ let cw = cH._5
449+ let cJ = cH._6
450+ let cC = cH._7
451+ $Tuple7((cG + cI), cC, cz, cA, be, cw, cJ)
430452 }
431- else $Tuple7(cA, 0, (bM + cc), (bN + cd), 0, 0, unit)
453+ else $Tuple7(cG, 0, (bS + ci), (bT + cj), 0, 0, unit)
432454 }
433455
434456
435-@Callable(az)
436-func calcLPReplenishDiffPropREADONLY (cE,cF,cG,cH) = {
437- let cI = by(az.caller)
438- let bz = cI._1
439- let bA = cI._2
440- let bo = cI._3
441- let bp = cI._4
442- let bB = cI._5
443- let cJ = bu(az.caller, bo, bp)
444- let bM = cJ._1
445- let bN = cJ._2
446- let cK = cJ._3
447- let cL = cJ._4
448- let cm = cJ._5
449- let bI = parseIntValue(cF[0])
450- let bJ = parseIntValue(cF[1])
451- let cn = parseIntValue(cF[2])
452- let cM = bC(az.caller, az.originCaller)
453- let aT = cM._1
454- let bF = cM._2
455- let bG = cM._3
456- let cN = cy(bI, bJ, bo, bp, bM, bN, cm, aT, bF, bG, cn)
457- let cO = cN._1
458- let cw = cN._2
459- let ct = cN._3
460- let cu = cN._4
461- let aY = cN._5
462- let cq = cN._6
463- let ay = cN._7
464- $Tuple2(nil, $Tuple2(nil, [cO, cw, ct, cu, aY, cq, ay]))
457+@Callable(aF)
458+func calcLPReplenishDiffPropREADONLY (cK,cL,cM,cN) = {
459+ let cO = bE(aF.caller)
460+ let bF = cO._1
461+ let bG = cO._2
462+ let bu = cO._3
463+ let bv = cO._4
464+ let bH = cO._5
465+ let cP = bA(aF.caller, bu, bv)
466+ let bS = cP._1
467+ let bT = cP._2
468+ let cQ = cP._3
469+ let cR = cP._4
470+ let cs = bD(aF.caller)
471+ let bO = parseIntValue(cL[0])
472+ let bP = parseIntValue(cL[1])
473+ let ct = parseIntValue(cL[2])
474+ let cS = bI(aF.caller, aF.originCaller)
475+ let aZ = cS._1
476+ let bL = cS._2
477+ let bM = cS._3
478+ let cT = cE(bO, bP, bu, bv, bS, bT, cs, aZ, bL, bM, ct)
479+ let cU = cT._1
480+ let cC = cT._2
481+ let cz = cT._3
482+ let cA = cT._4
483+ let be = cT._5
484+ let cw = cT._6
485+ let aC = cT._7
486+ $Tuple2(nil, $Tuple2(nil, [cU, cC, cz, cA, be, cw, aC]))
465487 }
466488
467489
468490
469-@Callable(az)
470-func calcLPReplenishTwoTokensREADONLY (cE,cF,cG,cH) = {
471- let cP = by(az.caller)
472- let bz = cP._1
473- let bA = cP._2
474- let bo = cP._3
475- let bp = cP._4
476- let bB = cP._5
477- let cQ = bu(az.caller, bo, bp)
478- let bM = cQ._1
479- let bN = cQ._2
480- let cK = cQ._3
481- let cL = cQ._4
482- let cm = cQ._5
483- let bI = parseIntValue(cF[0])
484- let bJ = parseIntValue(cF[1])
485- let cR = bH(bI, bJ, bo, bp, bM, bN, cm)
486- let cO = cR._1
487- let ce = cR._2
488- let cf = cR._3
489- let cc = cR._4
490- let cd = cR._5
491- $Tuple2(nil, $Tuple2(nil, [cO, ce, cf, cc, cd]))
491+@Callable(aF)
492+func calcLPReplenishTwoTokensREADONLY (cK,cL,cM,cN) = {
493+ let cV = bE(aF.caller)
494+ let bF = cV._1
495+ let bG = cV._2
496+ let bu = cV._3
497+ let bv = cV._4
498+ let bH = cV._5
499+ let cW = bA(aF.caller, bu, bv)
500+ let bS = cW._1
501+ let bT = cW._2
502+ let cQ = cW._3
503+ let cR = cW._4
504+ let cs = bD(aF.caller)
505+ let bO = parseIntValue(cL[0])
506+ let bP = parseIntValue(cL[1])
507+ let cX = bN(bO, bP, bu, bv, bS, bT, cs)
508+ let cU = cX._1
509+ let ck = cX._2
510+ let cl = cX._3
511+ let ci = cX._4
512+ let cj = cX._5
513+ $Tuple2(nil, $Tuple2(nil, [cU, ck, cl, ci, cj]))
492514 }
493515
494516
495517
496-@Callable(az)
497-func withdrawREADONLY (cE,cF,cG,cH) = {
498- let cS = by(az.caller)
499- let bz = cS._1
500- let bA = cS._2
501- let bo = cS._3
502- let bp = cS._4
503- let bB = cS._5
504- let cT = bu(az.caller, bo, bp)
505- let bm = cT._1
506- let bn = cT._2
507- let bk = cT._3
508- let bl = cT._4
509- let bO = cT._5
510- let cU = parseIntValue(cF[0])
511- let cV = if ((size(cF) == 3))
512- then $Tuple2(parseIntValue(cF[1]), parseIntValue(cF[2]))
513- else $Tuple2(bm, bn)
514- let bM = cV._1
515- let bN = cV._2
516- let cW = fraction(cU, bM, bO)
517- let cX = fraction(cU, bN, bO)
518- $Tuple2(nil, $Tuple2(nil, [cW, cX]))
518+@Callable(aF)
519+func withdrawREADONLY (cK,cL,cM,cN) = {
520+ let cY = bE(aF.caller)
521+ let bF = cY._1
522+ let bG = cY._2
523+ let bu = cY._3
524+ let bv = cY._4
525+ let bH = cY._5
526+ let cZ = bA(aF.caller, bu, bv)
527+ let bs = cZ._1
528+ let bt = cZ._2
529+ let bq = cZ._3
530+ let br = cZ._4
531+ let bU = bD(aF.caller)
532+ let da = parseIntValue(cL[0])
533+ let db = if ((size(cL) == 3))
534+ then $Tuple2(parseIntValue(cL[1]), parseIntValue(cL[2]))
535+ else $Tuple2(bs, bt)
536+ let bS = db._1
537+ let bT = db._2
538+ let dc = fraction(da, bS, bU)
539+ let dd = fraction(da, bT, bU)
540+ $Tuple2(nil, $Tuple2(nil, [dc, dd]))
519541 }
520542
521543
522544
523-@Callable(az)
524-func init (cE,cF,cG,cH) = {
525- let bD = Address(cE)
526- let cY = $Tuple2(cG[0], bi(cH[0]))
527- let cc = cY._1
528- let cZ = cY._2
529- let da = $Tuple2(cG[1], bi(cH[1]))
530- let cd = da._1
531- let db = da._2
532- if (!(containsElement([V, W, X, Y], az.originCallerPublicKey)))
545+@Callable(aF)
546+func init (cK,cL,cM,cN) = {
547+ let bJ = Address(cK)
548+ let de = $Tuple2(cM[0], bo(cN[0]))
549+ let ci = de._1
550+ let df = de._2
551+ let dg = $Tuple2(cM[1], bo(cN[1]))
552+ let cj = dg._1
553+ let dh = dg._2
554+ if (!(containsElement([X, Y, Z, aa], aF.originCallerPublicKey)))
533555 then throw("Only admin can call this function")
534- else if ((size(cF) != 1))
556+ else if ((size(cL) != 1))
535557 then throw("Wrong args size")
536- else if (isDefined(getBoolean(bD, c)))
558+ else if (isDefined(getBoolean(bJ, c)))
537559 then throw("DApp is already active")
538- else if ((cZ == db))
560+ else if ((df == dh))
539561 then throw("Assets must be different")
540562 else {
541- let dc = aA(cZ)
542- let bQ = dc._1
543- let bR = dc._2
544- let bS = dc._3
545- let dd = aA(db)
546- let bU = dd._1
547- let bV = dd._2
548- let bW = dd._3
549- let de = (cF[0] == "true")
550- let df = ((("s" + take(bR, 7)) + "_") + take(bV, 7))
551- let dg = ((((("ShareToken of SwopFi protocol for " + bR) + " and ") + bV) + " at address ") + toString(this))
552- let ci = ((bS + bW) / 2)
553- let dh = pow(cc, bS, 5, 1, bS, DOWN)
554- let di = pow(cd, bW, 5, 1, bW, DOWN)
555- let dj = pow(10, 0, ci, 0, 0, DOWN)
556- let dk = fraction(dh, di, dj)
557- let dl = Issue(df, dg, dk, ci, true)
558- let dm = calculateAssetId(dl)
559- let dn = if (contains(ag, bQ))
560- then invoke(az.caller, "stakeUnstake", [true, cc, bQ], nil)
563+ let di = aG(df)
564+ let bW = di._1
565+ let bX = di._2
566+ let bY = di._3
567+ let dj = aG(dh)
568+ let ca = dj._1
569+ let cb = dj._2
570+ let cc = dj._3
571+ let dk = (cL[0] == "true")
572+ let dl = ((("s" + take(bX, 7)) + "_") + take(cb, 7))
573+ let dm = ((((("ShareToken of SwopFi protocol for " + bX) + " and ") + cb) + " at address ") + toString(this))
574+ let co = ((bY + cc) / 2)
575+ let dn = pow(ci, bY, 5, 1, bY, DOWN)
576+ let do = pow(cj, cc, 5, 1, cc, DOWN)
577+ let dp = pow(10, 0, co, 0, 0, DOWN)
578+ let dq = fraction(dn, do, dp)
579+ let dr = Issue(dl, dm, dq, co, true)
580+ let ds = calculateAssetId(dr)
581+ let dt = if (contains(aj, bW))
582+ then invoke(aF.caller, "stakeUnstake", [true, ci, bW], nil)
561583 else 0
562- if ((dn == dn))
584+ if ((dt == dt))
563585 then {
564- let do = if (contains(ag, bU))
565- then invoke(az.caller, "stakeUnstake", [true, cd, bU], nil)
586+ let du = if (contains(aj, ca))
587+ then invoke(aF.caller, "stakeUnstake", [true, cj, ca], nil)
566588 else 0
567- if ((do == do))
589+ if ((du == du))
568590 then {
569- let dp = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(e, bQ), StringEntry(f, bU), IntegerEntry(g, cc), IntegerEntry(h, cd), IntegerEntry(m, getIntegerValue(P, "base_fee_cpmm")), dl, StringEntry(k, toBase58String(dm)), IntegerEntry(l, dk), ScriptTransfer(bD, dk, dm)]
570- if (de)
571- then $Tuple2(nil, $Tuple2((dp ++ [BooleanEntry(o, de), IntegerEntry(p, (ak + (am * al)))]), nil))
572- else $Tuple2(nil, $Tuple2(dp, nil))
591+ let dv = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(e, bW), StringEntry(f, ca), IntegerEntry(g, ci), IntegerEntry(h, cj), IntegerEntry(m, getIntegerValue(R, "base_fee_cpmm")), dr, StringEntry(k, toBase58String(ds)), IntegerEntry(l, dq), ScriptTransfer(bJ, dq, ds)]
592+ if (dk)
593+ then $Tuple2(nil, $Tuple2((dv ++ [BooleanEntry(o, dk), IntegerEntry(p, (ao + (aq * ap)))]), nil))
594+ else $Tuple2(nil, $Tuple2(dv, nil))
573595 }
574596 else throw("Strict value is not equal to itself.")
575597 }
576598 else throw("Strict value is not equal to itself.")
577599 }
578600 }
579601
580602
581603
582-@Callable(az)
583-func initWithInitRatio (cE,cF,cG,cH) = {
584- let bD = Address(cE)
585- let dq = $Tuple5(parseIntValue(cF[0]), parseIntValue(cF[1]), cF[2], cF[3], (cF[4] == "true"))
586- let dr = dq._1
587- let ds = dq._2
588- let dt = dq._3
589- let du = dq._4
590- let de = dq._5
591- if (!(containsElement([V, W, X, Y], az.originCallerPublicKey)))
604+@Callable(aF)
605+func initWithInitRatio (cK,cL,cM,cN) = {
606+ let bJ = Address(cK)
607+ let dw = $Tuple5(parseIntValue(cL[0]), parseIntValue(cL[1]), cL[2], cL[3], (cL[4] == "true"))
608+ let dx = dw._1
609+ let dy = dw._2
610+ let dz = dw._3
611+ let dA = dw._4
612+ let dk = dw._5
613+ if (!(containsElement([X, Y, Z, aa], aF.originCallerPublicKey)))
592614 then throw("Only admin can call this function")
593- else if ((size(cF) != 5))
615+ else if ((size(cL) != 5))
594616 then throw("Wrong args size")
595- else if (isDefined(getBoolean(bD, c)))
617+ else if (isDefined(getBoolean(bJ, c)))
596618 then throw("DApp is already active")
597- else if ((dt == du))
619+ else if ((dz == dA))
598620 then throw("Assets must be different")
599621 else {
600- let dv = aA(dt)
601- let bQ = dv._1
602- let bR = dv._2
603- let bS = dv._3
604- let dw = aA(du)
605- let bU = dw._1
606- let bV = dw._2
607- let bW = dw._3
608- let df = ((("s" + take(bR, 7)) + "_") + take(bV, 7))
609- let dg = ((((("ShareToken of SwopFi protocol for " + bR) + " and ") + bV) + " at address ") + toString(this))
610- let ci = ((bS + bW) / 2)
611- let dk = 0
612- let dl = Issue(df, dg, dk, ci, true)
613- let dm = calculateAssetId(dl)
614- let dp = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(e, bQ), StringEntry(f, bU), IntegerEntry(i, dr), IntegerEntry(j, ds), IntegerEntry(g, 0), IntegerEntry(h, 0), IntegerEntry(m, getIntegerValue(P, "base_fee_cpmm")), dl, StringEntry(k, toBase58String(dm)), IntegerEntry(l, dk)]
615- if (de)
616- then $Tuple2(nil, $Tuple2((dp ++ [BooleanEntry(o, de), IntegerEntry(p, (ak + (am * al)))]), nil))
617- else $Tuple2(nil, $Tuple2(dp, nil))
622+ let dB = aG(dz)
623+ let bW = dB._1
624+ let bX = dB._2
625+ let bY = dB._3
626+ let dC = aG(dA)
627+ let ca = dC._1
628+ let cb = dC._2
629+ let cc = dC._3
630+ let dl = ((("s" + take(bX, 7)) + "_") + take(cb, 7))
631+ let dm = ((((("ShareToken of SwopFi protocol for " + bX) + " and ") + cb) + " at address ") + toString(this))
632+ let co = ((bY + cc) / 2)
633+ let dq = 0
634+ let dr = Issue(dl, dm, dq, co, true)
635+ let ds = calculateAssetId(dr)
636+ let dv = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(e, bW), StringEntry(f, ca), IntegerEntry(i, dx), IntegerEntry(j, dy), IntegerEntry(g, 0), IntegerEntry(h, 0), IntegerEntry(m, getIntegerValue(R, "base_fee_cpmm")), dr, StringEntry(k, toBase58String(ds)), IntegerEntry(l, dq)]
637+ if (dk)
638+ then $Tuple2(nil, $Tuple2((dv ++ [BooleanEntry(o, dk), IntegerEntry(p, (ao + (aq * ap)))]), nil))
639+ else $Tuple2(nil, $Tuple2(dv, nil))
618640 }
619641 }
620642
621643
622644
623-@Callable(az)
624-func keepLimitForFirstHarvest (cE,cF,cG,cH) = valueOrElse(br(toString(az.caller)), valueOrElse(bq(), if (!(containsElement([V, W, X, Y], az.originCallerPublicKey)))
645+@Callable(aF)
646+func keepLimitForFirstHarvest (cK,cL,cM,cN) = valueOrElse(bx(toString(aF.caller)), valueOrElse(bw(), if (!(containsElement([X, Y, Z, aa], aF.originCallerPublicKey)))
625647 then throw("Only admin can call this function")
626- else if ((size(cF) != 1))
648+ else if ((size(cL) != 1))
627649 then throw("Wrong args size")
628650 else {
629- let dx = parseIntValue(cF[0])
630- $Tuple2(nil, $Tuple2([IntegerEntry(q, dx)], nil))
651+ let dD = parseIntValue(cL[0])
652+ $Tuple2(nil, $Tuple2([IntegerEntry(q, dD)], nil))
631653 }))
632654
633655
634656
635-@Callable(az)
636-func exchange (cE,cF,cG,cH) = valueOrElse(br(toString(az.caller)), valueOrElse(bt(toString(az.caller)), valueOrElse(bq(), {
637- let bD = Address(cE)
638- let dy = $Tuple2(cG[0], bi(cH[0]))
639- let aP = dy._1
640- let ck = dy._2
641- let aQ = parseIntValue(cF[0])
642- let dz = by(az.caller)
643- let bz = dz._1
644- let bA = dz._2
645- let bo = dz._3
646- let bp = dz._4
647- let dA = bu(az.caller, bo, bp)
648- let bm = dA._1
649- let bn = dA._2
650- let bk = dA._3
651- let bl = dA._4
652- if ((size(cF) != 1))
657+@Callable(aF)
658+func exchange (cK,cL,cM,cN) = valueOrElse(bx(toString(aF.caller)), valueOrElse(bz(toString(aF.caller)), valueOrElse(bw(), {
659+ let bJ = Address(cK)
660+ let dE = $Tuple2(cM[0], bo(cN[0]))
661+ let aV = dE._1
662+ let cq = dE._2
663+ let aW = parseIntValue(cL[0])
664+ let dF = bE(aF.caller)
665+ let bF = dF._1
666+ let bG = dF._2
667+ let bu = dF._3
668+ let bv = dF._4
669+ let dG = bA(aF.caller, bu, bv)
670+ let bs = dG._1
671+ let bt = dG._2
672+ let bq = dG._3
673+ let br = dG._4
674+ if ((size(cL) != 1))
653675 then throw("Wrong args size")
654- else if (if ((bm == 0))
676+ else if (if ((bs == 0))
655677 then true
656- else (bn == 0))
678+ else (bt == 0))
657679 then throw("Can't exchange with zero balance")
658- else if ((0 >= aQ))
659- then throw(("Minimal amount to receive must be positive. Actual: " + toString(aQ)))
660- else if ((size(cG) != 1))
680+ else if ((0 >= aW))
681+ then throw(("Minimal amount to receive must be positive. Actual: " + toString(aW)))
682+ else if ((size(cM) != 1))
661683 then throw("One attached payment expected")
662- else if (!(containsElement([bo, bp], ck)))
663- then throw(((("Incorrect asset attached. Expected: " + bz) + " or ") + bA))
664- else if (if ((bm > bk))
684+ else if (!(containsElement([bu, bv], cq)))
685+ then throw(((("Incorrect asset attached. Expected: " + bF) + " or ") + bG))
686+ else if (if ((bs > bq))
665687 then true
666- else (bn > bl))
667- then $Tuple2(nil, ([ScriptTransfer(bD, aP, ck)] ++ bj(bk, bl, bm, bn, bz, bA)))
688+ else (bt > br))
689+ then $Tuple2(nil, ([ScriptTransfer(bJ, aV, cq)] ++ bp(bq, br, bs, bt, bF, bG)))
668690 else {
669- let dB = bC(az.caller, az.originCaller)
670- let aT = dB._1
671- let bF = dB._2
672- let bG = dB._3
673- let dC = if ((ck == bo))
674- then aO(aP, aQ, bm, bn, aT, bF, bG)
675- else aO(aP, aQ, bn, bm, aT, bF, bG)
676- let aW = dC._1
677- let aX = dC._2
678- let aY = dC._3
679- let aZ = dC._4
680- let dD = if ((ck == bo))
681- then $Tuple3((bm + aP), (((bn - aX) - aY) - aZ), bp)
682- else $Tuple3((((bm - aX) - aY) - aZ), (bn + aP), bo)
683- let ct = dD._1
684- let cu = dD._2
685- let dE = dD._3
686- let dF = if ((ck == bo))
687- then $Tuple2(aP, ((aX + aY) + aZ))
688- else $Tuple2(((aX + aY) + aZ), aP)
689- let dG = dF._1
690- let dH = dF._2
691- let dn = if (contains(ag, bz))
692- then invoke(az.caller, "stakeUnstake", [(ck == bo), dG, bz], nil)
691+ let dH = bI(aF.caller, aF.originCaller)
692+ let aZ = dH._1
693+ let bL = dH._2
694+ let bM = dH._3
695+ let dI = if ((cq == bu))
696+ then aU(aV, aW, bs, bt, aZ, bL, bM)
697+ else aU(aV, aW, bt, bs, aZ, bL, bM)
698+ let bc = dI._1
699+ let bd = dI._2
700+ let be = dI._3
701+ let bf = dI._4
702+ let dJ = if ((cq == bu))
703+ then $Tuple3((bs + aV), (((bt - bd) - be) - bf), bv)
704+ else $Tuple3((((bs - bd) - be) - bf), (bt + aV), bu)
705+ let cz = dJ._1
706+ let cA = dJ._2
707+ let dK = dJ._3
708+ let dL = if ((cq == bu))
709+ then $Tuple2(aV, ((bd + be) + bf))
710+ else $Tuple2(((bd + be) + bf), aV)
711+ let dM = dL._1
712+ let dN = dL._2
713+ let dt = if (contains(aj, bF))
714+ then invoke(aF.caller, "stakeUnstake", [(cq == bu), dM, bF], nil)
693715 else 0
694- if ((dn == dn))
716+ if ((dt == dt))
695717 then {
696- let do = if (contains(ag, bA))
697- then invoke(az.caller, "stakeUnstake", [(ck == bp), dH, bA], nil)
718+ let du = if (contains(aj, bG))
719+ then invoke(aF.caller, "stakeUnstake", [(cq == bv), dN, bG], nil)
698720 else 0
699- if ((do == do))
700- then $Tuple2(nil, $Tuple2([IntegerEntry(g, ct), IntegerEntry(h, cu), ScriptTransfer(bD, aX, dE), ScriptTransfer(Z, aY, dE), ScriptTransfer(aa, aZ, dE)], [aX, dE]))
721+ if ((du == du))
722+ then $Tuple2(nil, $Tuple2([IntegerEntry(g, cz), IntegerEntry(h, cA), ScriptTransfer(bJ, bd, dK), ScriptTransfer(ab, be, dK), ScriptTransfer(ac, bf, dK)], [bd, dK]))
701723 else throw("Strict value is not equal to itself.")
702724 }
703725 else throw("Strict value is not equal to itself.")
704726 }
705727 })))
706728
707729
708730
709-@Callable(az)
710-func replenishWithTwoTokens (cE,cF,cG,cH) = valueOrElse(br(toString(az.caller)), valueOrElse(bt(toString(az.caller)), valueOrElse(bq(), {
711- let bD = Address(cE)
712- let cZ = bi(cH[0])
713- let db = bi(cH[1])
714- let dI = (cF[0] == "true")
715- let dJ = parseIntValue(cF[1])
716- let dK = by(az.caller)
717- let bz = dK._1
718- let bA = dK._2
719- let bo = dK._3
720- let bp = dK._4
721- let bB = dK._5
722- let dL = bu(az.caller, bo, bp)
723- let bm = dL._1
724- let bn = dL._2
725- let bk = dL._3
726- let bl = dL._4
727- let bO = dL._5
728- if ((size(cF) != 2))
731+@Callable(aF)
732+func replenishWithTwoTokens (cK,cL,cM,cN) = valueOrElse(bx(toString(aF.caller)), valueOrElse(bz(toString(aF.caller)), valueOrElse(bw(), {
733+ let bJ = Address(cK)
734+ let df = bo(cN[0])
735+ let dh = bo(cN[1])
736+ let dO = (cL[0] == "true")
737+ let dP = parseIntValue(cL[1])
738+ let dQ = bE(aF.caller)
739+ let bF = dQ._1
740+ let bG = dQ._2
741+ let bu = dQ._3
742+ let bv = dQ._4
743+ let bH = dQ._5
744+ let dR = bA(aF.caller, bu, bv)
745+ let bs = dR._1
746+ let bt = dR._2
747+ let bq = dR._3
748+ let br = dR._4
749+ let bU = bD(aF.caller)
750+ if ((size(cL) != 2))
729751 then throw("Wrong args size")
730- else if (if ((size(cG) != 2))
731- then (size(cG) != 3)
752+ else if (if ((size(cM) != 2))
753+ then (size(cM) != 3)
732754 else false)
733755 then throw("Two or three payments expected")
734- else if (if ((cZ != bo))
756+ else if (if ((df != bu))
735757 then true
736- else (db != bp))
737- then throw(((("Incorrect assets attached. Expected: " + bz) + " and ") + bA))
738- else if (if ((bm > bk))
758+ else (dh != bv))
759+ then throw(((("Incorrect assets attached. Expected: " + bF) + " and ") + bG))
760+ else if (if ((bs > bq))
739761 then true
740- else (bn > bl))
741- then $Tuple2(nil, ([ScriptTransfer(bD, cG[0], cZ), ScriptTransfer(bD, cG[1], db)] ++ (if ((size(cG) == 3))
742- then [AttachedPayment(if ((cH[2] == base58''))
762+ else (bt > br))
763+ then $Tuple2(nil, ([ScriptTransfer(bJ, cM[0], df), ScriptTransfer(bJ, cM[1], dh)] ++ (if ((size(cM) == 3))
764+ then [AttachedPayment(if ((cN[2] == base58''))
743765 then unit
744- else cH[2], cG[2])]
745- else (nil ++ bj(bk, bl, bm, bn, bz, bA)))))
766+ else cN[2], cM[2])]
767+ else (nil ++ bp(bq, br, bs, bt, bF, bG)))))
746768 else {
747- let dM = bH(cG[0], cG[1], cZ, db, bm, bn, bO)
748- let ch = dM._1
749- let ce = dM._2
750- let cf = dM._3
751- let cc = dM._4
752- let cd = dM._5
753- if ((ch == 0))
769+ let dS = bN(cM[0], cM[1], df, dh, bs, bt, bU)
770+ let cn = dS._1
771+ let ck = dS._2
772+ let cl = dS._3
773+ let ci = dS._4
774+ let cj = dS._5
775+ if ((cn == 0))
754776 then throw("Too small amount to replenish")
755- else if ((0 > ce))
777+ else if ((0 > ck))
756778 then throw("Change < 0")
757779 else {
758- let dn = if (contains(ag, bz))
759- then invoke(az.caller, "stakeUnstake", [true, cc, bz], nil)
780+ let dt = if (contains(aj, bF))
781+ then invoke(aF.caller, "stakeUnstake", [true, ci, bF], nil)
760782 else 0
761- if ((dn == dn))
783+ if ((dt == dt))
762784 then {
763- let do = if (contains(ag, bA))
764- then invoke(az.caller, "stakeUnstake", [true, cd, bA], nil)
785+ let du = if (contains(aj, bG))
786+ then invoke(aF.caller, "stakeUnstake", [true, cj, bG], nil)
765787 else 0
766- if ((do == do))
788+ if ((du == du))
767789 then {
768- let dN = if (dI)
790+ let dT = if (dO)
769791 then {
770- let dO = ([AttachedPayment(bB, ch)] ++ (if ((size(cG) == 3))
771- then [AttachedPayment(if ((cH[2] == base58''))
792+ let dU = ([AttachedPayment(bH, cn)] ++ (if ((size(cM) == 3))
793+ then [AttachedPayment(if ((cN[2] == base58''))
772794 then unit
773- else cH[2], cG[2])]
795+ else cN[2], cM[2])]
774796 else nil))
775- let dP = invoke(az.caller, "reissueShareToken", [ch], nil)
776- if ((dP == dP))
797+ let dV = invoke(aF.caller, "reissueShareToken", [cn], nil)
798+ if ((dV == dV))
777799 then {
778- let dQ = invoke(ad, "lockShareTokensFromPool", [cE, toString(az.caller), dJ], dO)
779- if ((dQ == dQ))
800+ let dW = invoke(af, "lockShareTokensFromPool", [cK, toString(aF.caller), dP], dU)
801+ if ((dW == dW))
780802 then nil
781803 else throw("Strict value is not equal to itself.")
782804 }
783805 else throw("Strict value is not equal to itself.")
784806 }
785- else [Reissue(bB, ch, true), ScriptTransfer(bD, ch, bB)]
786- $Tuple2(nil, $Tuple2(([IntegerEntry(g, (bm + cc)), IntegerEntry(h, (bn + cd)), IntegerEntry(l, (bO + ch)), ScriptTransfer(bD, ce, cf)] ++ dN), nil))
807+ else [Reissue(bH, cn, true), ScriptTransfer(bJ, cn, bH)]
808+ $Tuple2(nil, $Tuple2(([IntegerEntry(g, (bs + ci)), IntegerEntry(h, (bt + cj)), IntegerEntry(l, (bU + cn)), ScriptTransfer(bJ, ck, cl)] ++ dT), nil))
787809 }
788810 else throw("Strict value is not equal to itself.")
789811 }
790812 else throw("Strict value is not equal to itself.")
791813 }
792814 }
793815 })))
794816
795817
796818
797-@Callable(az)
798-func replenishWithOneToken (cE,cF,cG,cH) = valueOrElse(br(toString(az.caller)), valueOrElse(bt(toString(az.caller)), valueOrElse(bq(), {
799- let bD = Address(cE)
800- let ck = bi(cH[0])
801- let aP = cG[0]
802- let cn = parseIntValue(cF[0])
803- let dI = (cF[1] == "true")
804- let dJ = parseIntValue(cF[2])
805- let dR = by(az.caller)
806- let bz = dR._1
807- let bA = dR._2
808- let bo = dR._3
809- let bp = dR._4
810- let bB = dR._5
811- let dS = bu(az.caller, bo, bp)
812- let bm = dS._1
813- let bn = dS._2
814- let bk = dS._3
815- let bl = dS._4
816- let bO = dS._5
817- let bX = ((bm + bn) == 0)
818- if ((size(cF) != 3))
819+@Callable(aF)
820+func replenishWithOneToken (cK,cL,cM,cN) = valueOrElse(bx(toString(aF.caller)), valueOrElse(bz(toString(aF.caller)), valueOrElse(bw(), {
821+ let bJ = Address(cK)
822+ let cq = bo(cN[0])
823+ let aV = cM[0]
824+ let ct = parseIntValue(cL[0])
825+ let dO = (cL[1] == "true")
826+ let dP = parseIntValue(cL[2])
827+ let dX = bE(aF.caller)
828+ let bF = dX._1
829+ let bG = dX._2
830+ let bu = dX._3
831+ let bv = dX._4
832+ let bH = dX._5
833+ let dY = bA(aF.caller, bu, bv)
834+ let bs = dY._1
835+ let bt = dY._2
836+ let bq = dY._3
837+ let br = dY._4
838+ let bU = bD(aF.caller)
839+ let cd = ((bs + bt) == 0)
840+ if ((size(cL) != 3))
819841 then throw("Wrong args size")
820- else if (if ((size(cG) != 1))
821- then (size(cG) != 2)
842+ else if (if ((size(cM) != 1))
843+ then (size(cM) != 2)
822844 else false)
823845 then throw("Two or one attached assets expected")
824- else if (if ((ck != bo))
825- then (ck != bp)
846+ else if (if ((cq != bu))
847+ then (cq != bv)
826848 else false)
827- then throw(((("Incorrect asset attached. Expected: " + bz) + " or ") + bA))
828- else if (bX)
849+ then throw(((("Incorrect asset attached. Expected: " + bF) + " or ") + bG))
850+ else if (cd)
829851 then throw("For initial exchanger you need to use two tokens")
830- else if (if ((bm > bk))
852+ else if (if ((bs > bq))
831853 then true
832- else (bn > bl))
833- then $Tuple2(nil, ([ScriptTransfer(bD, aP, ck)] ++ (if ((size(cG) == 2))
834- then [AttachedPayment(if ((cH[2] == base58''))
854+ else (bt > br))
855+ then $Tuple2(nil, ([ScriptTransfer(bJ, aV, cq)] ++ (if ((size(cM) == 2))
856+ then [AttachedPayment(if ((cN[2] == base58''))
835857 then unit
836- else cH[2], cG[2])]
837- else (nil ++ bj(bk, bl, bm, bn, bz, bA)))))
858+ else cN[2], cM[2])]
859+ else (nil ++ bp(bq, br, bs, bt, bF, bG)))))
838860 else {
839- let dT = bC(az.caller, az.originCaller)
840- let aT = dT._1
841- let bF = dT._2
842- let bG = dT._3
843- let dU = aA(ck)
844- let dV = dU._1
845- let dW = dU._2
846- let dX = cj(aP, ck, bo, bp, bm, bn, bO, aT, bF, bG, cn)
847- let ch = dX._1
848- let ct = dX._2
849- let cu = dX._3
850- let dY = dX._4
851- let aZ = dX._5
852- let dZ = dX._6
853- let ea = if ((dZ == bo))
854- then bz
855- else bA
856- if ((ch == 0))
861+ let dZ = bI(aF.caller, aF.originCaller)
862+ let aZ = dZ._1
863+ let bL = dZ._2
864+ let bM = dZ._3
865+ let ea = aG(cq)
866+ let eb = ea._1
867+ let ec = ea._2
868+ let ed = cp(aV, cq, bu, bv, bs, bt, bU, aZ, bL, bM, ct)
869+ let cn = ed._1
870+ let cz = ed._2
871+ let cA = ed._3
872+ let ee = ed._4
873+ let bf = ed._5
874+ let ef = ed._6
875+ let eg = if ((ef == bu))
876+ then bF
877+ else bG
878+ if ((cn == 0))
857879 then throw("Too small amount to replenish")
858880 else {
859- let dn = if (contains(ag, dV))
860- then invoke(az.caller, "stakeUnstake", [true, aP, dV], nil)
881+ let dt = if (contains(aj, eb))
882+ then invoke(aF.caller, "stakeUnstake", [true, aV, eb], nil)
861883 else 0
862- if ((dn == dn))
884+ if ((dt == dt))
863885 then {
864- let do = if (contains(ag, ea))
865- then invoke(az.caller, "stakeUnstake", [false, (dY + aZ), ea], nil)
886+ let du = if (contains(aj, eg))
887+ then invoke(aF.caller, "stakeUnstake", [false, (ee + bf), eg], nil)
866888 else 0
867- if ((do == do))
889+ if ((du == du))
868890 then {
869- let dN = if (dI)
891+ let dT = if (dO)
870892 then {
871- let dO = ([AttachedPayment(bB, ch)] ++ (if ((size(cG) == 2))
872- then [AttachedPayment(if ((cH[1] == base58''))
893+ let dU = ([AttachedPayment(bH, cn)] ++ (if ((size(cM) == 2))
894+ then [AttachedPayment(if ((cN[1] == base58''))
873895 then unit
874- else cH[1], cG[1])]
896+ else cN[1], cM[1])]
875897 else nil))
876- let dP = invoke(az.caller, "reissueShareToken", [ch], nil)
877- if ((dP == dP))
898+ let dV = invoke(aF.caller, "reissueShareToken", [cn], nil)
899+ if ((dV == dV))
878900 then {
879- let dQ = invoke(ad, "lockShareTokensFromPool", [cE, toString(az.caller), dJ], dO)
880- if ((dQ == dQ))
901+ let dW = invoke(af, "lockShareTokensFromPool", [cK, toString(aF.caller), dP], dU)
902+ if ((dW == dW))
881903 then nil
882904 else throw("Strict value is not equal to itself.")
883905 }
884906 else throw("Strict value is not equal to itself.")
885907 }
886- else [Reissue(bB, ch, true), ScriptTransfer(bD, ch, bB)]
887- $Tuple2(nil, $Tuple2(([IntegerEntry(g, ct), IntegerEntry(h, cu), IntegerEntry(l, (bO + ch)), ScriptTransfer(Z, dY, dZ), ScriptTransfer(aa, aZ, dZ)] ++ dN), nil))
908+ else [Reissue(bH, cn, true), ScriptTransfer(bJ, cn, bH)]
909+ $Tuple2(nil, $Tuple2(([IntegerEntry(g, cz), IntegerEntry(h, cA), IntegerEntry(l, (bU + cn)), ScriptTransfer(ab, ee, ef), ScriptTransfer(ac, bf, ef)] ++ dT), nil))
888910 }
889911 else throw("Strict value is not equal to itself.")
890912 }
891913 else throw("Strict value is not equal to itself.")
892914 }
893915 }
894916 })))
895917
896918
897919
898-@Callable(az)
899-func withdraw (cE,cF,cG,cH) = valueOrElse(br(toString(az.caller)), valueOrElse(bq(), {
900- let bD = Address(cE)
901- let eb = by(az.caller)
902- let bz = eb._1
903- let bA = eb._2
904- let bo = eb._3
905- let bp = eb._4
906- let bB = eb._5
907- let ec = bu(az.caller, bo, bp)
908- let bm = ec._1
909- let bn = ec._2
910- let bk = ec._3
911- let bl = ec._4
912- let bO = ec._5
913- let ed = if ((size(cG) == 1))
920+@Callable(aF)
921+func withdraw (cK,cL,cM,cN) = valueOrElse(bx(toString(aF.caller)), valueOrElse(bw(), {
922+ let bJ = Address(cK)
923+ let eh = bE(aF.caller)
924+ let bF = eh._1
925+ let bG = eh._2
926+ let bu = eh._3
927+ let bv = eh._4
928+ let bH = eh._5
929+ let ei = bA(aF.caller, bu, bv)
930+ let bs = ei._1
931+ let bt = ei._2
932+ let bq = ei._3
933+ let br = ei._4
934+ let bU = bD(aF.caller)
935+ let ej = if ((size(cM) == 1))
914936 then {
915- let ee = bi(cH[0])
916- if ((ee != bB))
917- then throw(("Incorrect asset attached. Expected: " + toBase58String(bB)))
918- else $Tuple2(cG[0], ee)
937+ let ek = bo(cN[0])
938+ if ((ek != bH))
939+ then throw(("Incorrect asset attached. Expected: " + toBase58String(bH)))
940+ else $Tuple2(cM[0], ek)
919941 }
920- else $Tuple2(0, bB)
921- let aP = ed._1
922- let ck = ed._2
923- if ((size(cF) != 1))
942+ else $Tuple2(0, bH)
943+ let aV = ej._1
944+ let cq = ej._2
945+ if ((size(cL) != 1))
924946 then throw("Wrong args size")
925- else if ((size(cG) > 1))
947+ else if ((size(cM) > 1))
926948 then throw("One attached payment expected")
927- else if (if ((bm > bk))
949+ else if (if ((bs > bq))
928950 then true
929- else (bn > bl))
930- then $Tuple2(nil, ([ScriptTransfer(bD, aP, ck)] ++ bj(bk, bl, bm, bn, bz, bA)))
951+ else (bt > br))
952+ then $Tuple2(nil, ([ScriptTransfer(bJ, aV, cq)] ++ bp(bq, br, bs, bt, bF, bG)))
931953 else {
932- let ef = parseIntValue(valueOrElse(cF[0], "0"))
933- let eg = if ((ef > 0))
934- then invoke(ad, "withdrawShareTokensFromPool", [cE, toString(az.caller), ef], nil)
954+ let el = parseIntValue(valueOrElse(cL[0], "0"))
955+ let em = if ((el > 0))
956+ then invoke(af, "withdrawShareTokensFromPool", [cK, toString(aF.caller), el], nil)
935957 else 0
936- if ((eg == eg))
958+ if ((em == em))
937959 then {
938- let cU = (aP + ef)
939- let cW = fraction(cU, bm, bO)
940- let cX = fraction(cU, bn, bO)
941- let dn = if (contains(ag, bz))
942- then invoke(az.caller, "stakeUnstake", [false, cW, bz], nil)
960+ let da = (aV + el)
961+ let dc = fraction(da, bs, bU)
962+ let dd = fraction(da, bt, bU)
963+ let dt = if (contains(aj, bF))
964+ then invoke(aF.caller, "stakeUnstake", [false, dc, bF], nil)
943965 else 0
944- if ((dn == dn))
966+ if ((dt == dt))
945967 then {
946- let do = if (contains(ag, bA))
947- then invoke(az.caller, "stakeUnstake", [false, cX, bA], nil)
968+ let du = if (contains(aj, bG))
969+ then invoke(aF.caller, "stakeUnstake", [false, dd, bG], nil)
948970 else 0
949- if ((do == do))
950- then $Tuple2([ScriptTransfer(az.caller, ef, bB)], $Tuple2([IntegerEntry(g, (bm - cW)), IntegerEntry(h, (bn - cX)), IntegerEntry(l, (bO - cU)), Burn(bB, cU), ScriptTransfer(bD, cW, bo), ScriptTransfer(bD, cX, bp)], nil))
971+ if ((du == du))
972+ then $Tuple2([ScriptTransfer(aF.caller, el, bH)], $Tuple2([IntegerEntry(g, (bs - dc)), IntegerEntry(h, (bt - dd)), IntegerEntry(l, (bU - da)), Burn(bH, da), ScriptTransfer(bJ, dc, bu), ScriptTransfer(bJ, dd, bv)], nil))
951973 else throw("Strict value is not equal to itself.")
952974 }
953975 else throw("Strict value is not equal to itself.")
954976 }
955977 else throw("Strict value is not equal to itself.")
956978 }
957979 }))
958980
959981
960982
961-@Callable(az)
962-func withdrawOneToken (cE,cF,cG,cH) = valueOrElse(br(toString(az.caller)), valueOrElse(bt(toString(az.caller)), valueOrElse(bq(), {
963- let bD = Address(cE)
964- let eh = if ((cF[0] == ""))
983+@Callable(aF)
984+func withdrawOneToken (cK,cL,cM,cN) = valueOrElse(bx(toString(aF.caller)), valueOrElse(bz(toString(aF.caller)), valueOrElse(bw(), {
985+ let bJ = Address(cK)
986+ let en = if ((cL[0] == ""))
965987 then unit
966- else fromBase58String(cF[0])
967- let ei = by(az.caller)
968- let bz = ei._1
969- let bA = ei._2
970- let bo = ei._3
971- let bp = ei._4
972- let bB = ei._5
973- let ej = bu(az.caller, bo, bp)
974- let bm = ej._1
975- let bn = ej._2
976- let bk = ej._3
977- let bl = ej._4
978- let bO = ej._5
979- let ek = if ((size(cG) == 1))
988+ else fromBase58String(cL[0])
989+ let eo = bE(aF.caller)
990+ let bF = eo._1
991+ let bG = eo._2
992+ let bu = eo._3
993+ let bv = eo._4
994+ let bH = eo._5
995+ let ep = bA(aF.caller, bu, bv)
996+ let bs = ep._1
997+ let bt = ep._2
998+ let bq = ep._3
999+ let br = ep._4
1000+ let bU = bD(aF.caller)
1001+ let eq = if ((size(cM) == 1))
9801002 then {
981- let ee = bi(cH[0])
982- if ((ee != bB))
983- then throw(("Incorrect asset attached. Expected: " + toBase58String(bB)))
984- else $Tuple2(cG[0], ee)
1003+ let ek = bo(cN[0])
1004+ if ((ek != bH))
1005+ then throw(("Incorrect asset attached. Expected: " + toBase58String(bH)))
1006+ else $Tuple2(cM[0], ek)
9851007 }
986- else $Tuple2(0, bB)
987- let aP = ek._1
988- let ck = ek._2
989- let el = parseIntValue(cF[1])
990- if ((size(cF) != 3))
1008+ else $Tuple2(0, bH)
1009+ let aV = eq._1
1010+ let cq = eq._2
1011+ let er = parseIntValue(cL[1])
1012+ if ((size(cL) != 3))
9911013 then throw("Wrong args size")
992- else if ((size(cG) > 1))
1014+ else if ((size(cM) > 1))
9931015 then throw("One attached payment expected")
994- else if ((ck != bB))
995- then throw(("Incorrect asset attached. Expected: " + toBase58String(bB)))
996- else if (!(containsElement([bo, bp], eh)))
1016+ else if ((cq != bH))
1017+ then throw(("Incorrect asset attached. Expected: " + toBase58String(bH)))
1018+ else if (!(containsElement([bu, bv], en)))
9971019 then throw("Incorrect withdraw asset.")
998- else if (if ((bm > bk))
1020+ else if (if ((bs > bq))
9991021 then true
1000- else (bn > bl))
1001- then $Tuple2(nil, ([ScriptTransfer(bD, aP, ck)] ++ bj(bk, bl, bm, bn, bz, bA)))
1022+ else (bt > br))
1023+ then $Tuple2(nil, ([ScriptTransfer(bJ, aV, cq)] ++ bp(bq, br, bs, bt, bF, bG)))
10021024 else {
1003- let ef = parseIntValue(valueOrElse(cF[2], "0"))
1004- let eg = if ((ef > 0))
1005- then invoke(ad, "withdrawShareTokensFromPool", [cE, toString(az.caller), ef], nil)
1025+ let el = parseIntValue(valueOrElse(cL[2], "0"))
1026+ let em = if ((el > 0))
1027+ then invoke(af, "withdrawShareTokensFromPool", [cK, toString(aF.caller), el], nil)
10061028 else 0
1007- if ((eg == eg))
1029+ if ((em == em))
10081030 then {
1009- let cU = (aP + ef)
1010- let cW = fraction(cU, bm, bO)
1011- let cX = fraction(cU, bn, bO)
1012- let em = bC(az.caller, az.originCaller)
1013- let aT = em._1
1014- let bF = em._2
1015- let bG = em._3
1016- let en = if ((eh == bo))
1017- then aO(cX, el, (bn - cX), (bm - cW), aT, bF, bG)
1018- else aO(cW, el, (bm - cW), (bn - cX), aT, bF, bG)
1019- let aW = en._1
1020- let aX = en._2
1021- let aY = en._3
1022- let aZ = en._4
1023- let eo = if ((eh == bo))
1031+ let da = (aV + el)
1032+ let dc = fraction(da, bs, bU)
1033+ let dd = fraction(da, bt, bU)
1034+ let es = bI(aF.caller, aF.originCaller)
1035+ let aZ = es._1
1036+ let bL = es._2
1037+ let bM = es._3
1038+ let et = if ((en == bu))
1039+ then aU(dd, er, (bt - dd), (bs - dc), aZ, bL, bM)
1040+ else aU(dc, er, (bs - dc), (bt - dd), aZ, bL, bM)
1041+ let bc = et._1
1042+ let bd = et._2
1043+ let be = et._3
1044+ let bf = et._4
1045+ let eu = if ((en == bu))
10241046 then {
1025- let ep = if (contains(ag, bz))
1026- then invoke(az.caller, "stakeUnstake", [false, (((cW + aX) + aY) + aZ), bz], nil)
1047+ let ev = if (contains(aj, bF))
1048+ then invoke(aF.caller, "stakeUnstake", [false, (((dc + bd) + be) + bf), bF], nil)
10271049 else 0
1028- if ((ep == ep))
1029- then $Tuple4(((((bm - cW) - aX) - aY) - aZ), bn, bo, [ScriptTransfer(bD, (cW + aX), bo)])
1050+ if ((ev == ev))
1051+ then $Tuple4(((((bs - dc) - bd) - be) - bf), bt, bu, [ScriptTransfer(bJ, (dc + bd), bu)])
10301052 else throw("Strict value is not equal to itself.")
10311053 }
10321054 else {
1033- let ep = if (contains(ag, bA))
1034- then invoke(az.caller, "stakeUnstake", [false, (((cX + aX) + aY) + aZ), bA], nil)
1055+ let ev = if (contains(aj, bG))
1056+ then invoke(aF.caller, "stakeUnstake", [false, (((dd + bd) + be) + bf), bG], nil)
10351057 else 0
1036- if ((ep == ep))
1037- then $Tuple4(bm, ((((bn - cX) - aX) - aY) - aZ), bp, [ScriptTransfer(bD, (cX + aX), bp)])
1058+ if ((ev == ev))
1059+ then $Tuple4(bs, ((((bt - dd) - bd) - be) - bf), bv, [ScriptTransfer(bJ, (dd + bd), bv)])
10381060 else throw("Strict value is not equal to itself.")
10391061 }
1040- let ct = eo._1
1041- let cu = eo._2
1042- let eq = eo._3
1043- let er = eo._4
1044- $Tuple2([ScriptTransfer(az.caller, ef, bB)], $Tuple2(([IntegerEntry(g, ct), IntegerEntry(h, cu), IntegerEntry(l, (bO - cU)), Burn(bB, cU), ScriptTransfer(Z, aY, eq), ScriptTransfer(aa, aZ, eq)] ++ er), nil))
1062+ let cz = eu._1
1063+ let cA = eu._2
1064+ let ew = eu._3
1065+ let ex = eu._4
1066+ $Tuple2([ScriptTransfer(aF.caller, el, bH)], $Tuple2(([IntegerEntry(g, cz), IntegerEntry(h, cA), IntegerEntry(l, (bU - da)), Burn(bH, da), ScriptTransfer(ab, be, ew), ScriptTransfer(ac, bf, ew)] ++ ex), nil))
10451067 }
10461068 else throw("Strict value is not equal to itself.")
10471069 }
10481070 })))
10491071
10501072
10511073
1052-@Callable(az)
1053-func takeIntoAccountExtraFunds (cE,cF,cG,cH) = valueOrElse(br(toString(az.caller)), valueOrElse(bq(), {
1054- let es = by(az.caller)
1055- let bz = es._1
1056- let bA = es._2
1057- let bo = es._3
1058- let bp = es._4
1059- let et = if (if ((bo == ae))
1074+@Callable(aF)
1075+func takeIntoAccountExtraFunds (cK,cL,cM,cN) = valueOrElse(bx(toString(aF.caller)), valueOrElse(bw(), {
1076+ let ey = bE(aF.caller)
1077+ let bF = ey._1
1078+ let bG = ey._2
1079+ let bu = ey._3
1080+ let bv = ey._4
1081+ let ez = if (if ((bu == ag))
10601082 then true
1061- else (bp == ae))
1062- then invoke(az.caller, "claimNetrinoRewards", nil, nil)
1063- else 0
1064- if ((et == et))
1083+ else (bv == ag))
1084+ then invoke(aF.caller, "claimNetrinoRewards", nil, nil)
1085+ else nil
1086+ if ((ez == ez))
10651087 then {
1066- let eu = bu(az.caller, bo, bp)
1067- let bm = eu._1
1068- let bn = eu._2
1069- let bk = eu._3
1070- let bl = eu._4
1071- let ev = (bk - bm)
1072- let ew = (bl - bn)
1073- if ((size(cF) != 0))
1088+ let eA = bA(aF.caller, bu, bv)
1089+ let bs = eA._1
1090+ let bt = eA._2
1091+ let bq = eA._3
1092+ let br = eA._4
1093+ let bB = eA._5
1094+ let bC = eA._6
1095+ let eB = (bq - bs)
1096+ let eC = (br - bt)
1097+ let eD = if ((bu == ai))
1098+ then $Tuple2((bq - bB), eC)
1099+ else if ((bv == ai))
1100+ then $Tuple2(eB, (br - bC))
1101+ else $Tuple2(eB, eC)
1102+ let eE = eD._1
1103+ let eF = eD._2
1104+ if ((size(cL) != 0))
10741105 then throw("Wrong args size")
1075- else if ((Z != az.originCaller))
1106+ else if ((ab != aF.originCaller))
10761107 then throw("Only the wallet can call this function")
1077- else if (if ((0 > ev))
1108+ else if (if ((0 > eB))
10781109 then true
1079- else (0 > ew))
1080- then aG("Enroll amount negative")
1081- else if (if ((ev == 0))
1082- then (ew == 0)
1110+ else (0 > eC))
1111+ then aM("Enroll amount negative")
1112+ else if (if ((eB == 0))
1113+ then (eC == 0)
10831114 else false)
10841115 then throw("No money to take")
10851116 else {
1086- let dn = if (if (contains(ag, bz))
1087- then (ev > 0)
1117+ let dt = if (if (contains(aj, bF))
1118+ then (eE > 0)
10881119 else false)
1089- then invoke(az.caller, "stakeUnstake", [true, ev, bz], nil)
1120+ then invoke(aF.caller, "stakeUnstake", [true, eE, bF], nil)
10901121 else 0
1091- if ((dn == dn))
1122+ if ((dt == dt))
10921123 then {
1093- let do = if (if (contains(ag, bA))
1094- then (ew > 0)
1124+ let du = if (if (contains(aj, bG))
1125+ then (eF > 0)
10951126 else false)
1096- then invoke(az.caller, "stakeUnstake", [true, ew, bA], nil)
1127+ then invoke(aF.caller, "stakeUnstake", [true, eF, bG], nil)
10971128 else 0
1098- if ((do == do))
1099- then $Tuple2(nil, $Tuple2([IntegerEntry(g, (bm + ev)), IntegerEntry(h, (bn + ew))], nil))
1129+ if ((du == du))
1130+ then $Tuple2(nil, $Tuple2([IntegerEntry(g, (bs + eB)), IntegerEntry(h, (bt + eC))], nil))
11001131 else throw("Strict value is not equal to itself.")
11011132 }
11021133 else throw("Strict value is not equal to itself.")
11031134 }
11041135 }
11051136 else throw("Strict value is not equal to itself.")
11061137 }))
11071138
11081139
1109-@Verifier(ex)
1110-func ey () = {
1111- let ez = {
1112- let eA = if (sigVerify(ex.bodyBytes, ex.proofs[0], V))
1140+@Verifier(eG)
1141+func eH () = {
1142+ let eI = {
1143+ let eJ = if (sigVerify(eG.bodyBytes, eG.proofs[0], X))
11131144 then 1
11141145 else 0
1115- let eB = if (sigVerify(ex.bodyBytes, ex.proofs[1], W))
1146+ let eK = if (sigVerify(eG.bodyBytes, eG.proofs[1], Y))
11161147 then 1
11171148 else 0
1118- let eC = if (sigVerify(ex.bodyBytes, ex.proofs[2], X))
1149+ let eL = if (sigVerify(eG.bodyBytes, eG.proofs[2], Z))
11191150 then 1
11201151 else 0
1121- (((eA + eB) + eC) >= 2)
1152+ (((eJ + eK) + eL) >= 2)
11221153 }
1123- ez
1154+ eI
11241155 }
11251156

github/deemru/w8io/873ac7e 
720.88 ms