tx · 6gHBgENsotbG5F4UtyAVR6rPs49dpK4euuHh7AUaovPz

3MzqQ3HKdkHmJmk9mDhAeAMxmK5D2ztdAe5:  -0.14000000 Waves

2022.11.16 13:42 [2319559] smart account 3MzqQ3HKdkHmJmk9mDhAeAMxmK5D2ztdAe5 > SELF 0.00000000 Waves

{ "type": 13, "id": "6gHBgENsotbG5F4UtyAVR6rPs49dpK4euuHh7AUaovPz", "fee": 14000000, "feeAssetId": null, "timestamp": 1668595358404, "version": 2, "chainId": 84, "sender": "3MzqQ3HKdkHmJmk9mDhAeAMxmK5D2ztdAe5", "senderPublicKey": "FEnkfXnQZkk1FmjhH6QZqyK2taN6ngnZBexevKxouLUM", "proofs": [ "2VLMpBbZxbtxw19hE47NK4jYL1YsTfW3BE7pAY61CQPc14H6hmcwE1HmbeEBGHRJRHfJWHYK29vgecCG3G6XQiLT", "3eNLr6MLvyS2ZrpqeUGUc22mwnQaDCXfMJbFeecrTyKwdWvA8axvoagqd7Do4SzHHSZnvauKb4sgnGovKdMJtwqG" ], "script": "base64:BgJKCAISBgoEAhgREhIGCgQCGBESEgYKBAIYERISBgoEAhgREhIGCgQCGBESEgYKBAIYERISBgoEAhgREhIGCgQCGBESEgYKBAIYERJMAAd2ZXJzaW9uAgUxLjAuMAAIa1ZlcnNpb24CB3ZlcnNpb24AB2tBY3RpdmUCBmFjdGl2ZQAJa0Fzc2V0SWRBAgpBX2Fzc2V0X2lkAAlrQXNzZXRJZEICCkJfYXNzZXRfaWQACWtCYWxhbmNlQQIPQV9hc3NldF9iYWxhbmNlAAlrQmFsYW5jZUICD0JfYXNzZXRfYmFsYW5jZQANa0JhbGFuY2VJbml0QQIMQV9hc3NldF9pbml0AA1rQmFsYW5jZUluaXRCAgxCX2Fzc2V0X2luaXQADWtTaGFyZUFzc2V0SWQCDnNoYXJlX2Fzc2V0X2lkABFrU2hhcmVBc3NldFN1cHBseQISc2hhcmVfYXNzZXRfc3VwcGx5AARrRmVlAgpjb21taXNzaW9uAAZrQ2F1c2UCDnNodXRkb3duX2NhdXNlAA1rRmlyc3RIYXJ2ZXN0Ag1maXJzdF9oYXJ2ZXN0ABNrRmlyc3RIYXJ2ZXN0SGVpZ2h0AhRmaXJzdF9oYXJ2ZXN0X2hlaWdodAALa1NoYXJlTGltaXQCHHNoYXJlX2xpbWl0X29uX2ZpcnN0X2hhcnZlc3QAC2tCYXNlUGVyaW9kAgtiYXNlX3BlcmlvZAANa1BlcmlvZExlbmd0aAINcGVyaW9kX2xlbmd0aAAMa1N0YXJ0SGVpZ2h0AgxzdGFydF9oZWlnaHQADGtVU0ROQWRkcmVzcwIYc3Rha2luZ191c2RubnNidF9hZGRyZXNzAAxrRVVSTkFkZHJlc3MCFHN0YWtpbmdfZXVybl9hZGRyZXNzAA5rTGVhc2luZ0Ftb3VudAIObGVhc2luZ19hbW91bnQADGtVU0ROQXNzZXRJZAINdXNkbl9hc3NldF9pZAAMa0VVUk5Bc3NldElkAg1ldXJuX2Fzc2V0X2lkAA5rU3Rha2luZ0Fzc2V0cwIOc3Rha2luZ19hc3NldHMADWtPcmFjbGVBY3RpdmUCFGFjdGl2ZV9hbGxfY29udHJhY3RzABdrT3JhY2xlQWN0aXZlRXhjaGFuZ2VycwIYYWN0aXZlX2dsb2JhbF9leGNoYW5nZXJzAAprRGlzY291bnRzAglkaXNjb3VudHMAD2tEaXNjb3VudFZhbHVlcwIPZGlzY291bnRfdmFsdWVzAA9rVXNlckdTd29wSW5Hb3YCDV9HU3dvcF9hbW91bnQADmtVc2VyU3dvcEluR292AgxfU1dPUF9hbW91bnQAC2tPcmFjbGVQb29sAgVwb29sXwANa0FkbWluUHViS2V5MQILYWRtaW5fcHViXzEADWtBZG1pblB1YktleTICC2FkbWluX3B1Yl8yAA1rQWRtaW5QdWJLZXkzAgthZG1pbl9wdWJfMwASa0FkbWluSW52b2tlUHViS2V5AhBhZG1pbl9pbnZva2VfcHViABBrTW9uZXlCb3hBZGRyZXNzAhFtb25leV9ib3hfYWRkcmVzcwAOa1ZvdGluZ0FkZHJlc3MCDnZvdGluZ19hZGRyZXNzAAtrR292QWRkcmVzcwISZ292ZXJuYW5jZV9hZGRyZXNzAA9rRmFybWluZ0FkZHJlc3MCD2Zhcm1pbmdfYWRkcmVzcwAGb3JhY2xlCQEHQWRkcmVzcwEBGgFUSBOXDMDTM8wlMoC2KfenZGiAq+PMe0uZARNnZXRCYXNlNThGcm9tT3JhY2xlAQNrZXkEByRtYXRjaDAJAJ0IAgUGb3JhY2xlBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAZzdHJpbmcFByRtYXRjaDAJANkEAQUGc3RyaW5nBAdub3RoaW5nBQckbWF0Y2gwCQACAQkArAICBQNrZXkCCGlzIGVtcHR5AAxhZG1pblB1YktleTEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUNa0FkbWluUHViS2V5MQAMYWRtaW5QdWJLZXkyCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDWtBZG1pblB1YktleTIADGFkbWluUHViS2V5MwkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ1rQWRtaW5QdWJLZXkzABFhZG1pbkludm9rZVB1YktleQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBRJrQWRtaW5JbnZva2VQdWJLZXkAD21vbmV5Qm94QWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFEGtNb25leUJveEFkZHJlc3MADXZvdGluZ0FkZHJlc3MJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ5rVm90aW5nQWRkcmVzcwAKZ292QWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFC2tHb3ZBZGRyZXNzAA5mYXJtaW5nQWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFD2tGYXJtaW5nQWRkcmVzcwAEVVNETgkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQxrVVNETkFzc2V0SWQABEVVUk4JARNnZXRCYXNlNThGcm9tT3JhY2xlAQUMa0VVUk5Bc3NldElkAA1zdGFraW5nQXNzZXRzCQERQGV4dHJOYXRpdmUoMTA1MykCBQZvcmFjbGUFDmtTdGFraW5nQXNzZXRzABJzdGFraW5nVVNETkFkZHJlc3MJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQxrVVNETkFkZHJlc3MAEnN0YWtpbmdFVVJOQWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDGtFVVJOQWRkcmVzcwAKYmFzZVBlcmlvZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFDXZvdGluZ0FkZHJlc3MFC2tCYXNlUGVyaW9kAhFFbXB0eSBrQmFzZVBlcmlvZAALc3RhcnRIZWlnaHQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQ12b3RpbmdBZGRyZXNzBQxrU3RhcnRIZWlnaHQCEkVtcHR5IGtTdGFydEhlaWdodAAMcGVyaW9kTGVuZ3RoCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUNdm90aW5nQWRkcmVzcwUNa1BlcmlvZExlbmd0aAITRW1wdHkga1BlcmlvZExlbmd0aAAVZmlyc3RIYXJ2ZXN0RW5kUGVyaW9kCQBkAgkAZAIFCmJhc2VQZXJpb2QJAGkCCQBlAgUGaGVpZ2h0BQtzdGFydEhlaWdodAUMcGVyaW9kTGVuZ3RoAAMABmFjdGl2ZQMJARFAZXh0ck5hdGl2ZSgxMDUxKQIFBm9yYWNsZQUNa09yYWNsZUFjdGl2ZQkBEUBleHRyTmF0aXZlKDEwNTEpAgUGb3JhY2xlBRdrT3JhY2xlQWN0aXZlRXhjaGFuZ2VycwcACWZlZVNjYWxlNgDAhD0ABnNjYWxlOACAwtcvAQ5hY2NvdW50QmFsYW5jZQIHYXNzZXRJZARwb29sBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAmlkBQckbWF0Y2gwCQDwBwIFBHBvb2wFAmlkAwkAAQIFByRtYXRjaDACBFVuaXQEBXdhdmVzBQckbWF0Y2gwCAkA7wcBBQRwb29sCWF2YWlsYWJsZQkAAgECC01hdGNoIGVycm9yAQxzdGFrZWRBbW91bnQCB2Fzc2V0SWQEcG9vbAQWc3Rha2VkQW1vdW50Q2FsY3VsYXRlZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBANhSWQFByRtYXRjaDADCQAAAgUDYUlkBQRVU0ROCQCaCAIFEnN0YWtpbmdVU0ROQWRkcmVzcwkArAICCQCsAgIJAKwCAgIMcnBkX2JhbGFuY2VfCQDYBAEFA2FJZAIBXwkApQgBBQRwb29sAwkAAAIFA2FJZAUERVVSTgkAmggCBRJzdGFraW5nRVVSTkFkZHJlc3MJAKwCAgkArAICCQCsAgICGCVzJXMlc19fc3Rha2luZ0JhbGFuY2VfXwkA2AQBBQNhSWQCAl9fCQClCAEFBHBvb2wAAAMJAAECBQckbWF0Y2gwAgRVbml0CQELdmFsdWVPckVsc2UCCQCaCAIFBHBvb2wFDmtMZWFzaW5nQW1vdW50AAAJAAIBAgtNYXRjaCBlcnJvcgQHJG1hdGNoMAUWc3Rha2VkQW1vdW50Q2FsY3VsYXRlZAMJAAECBQckbWF0Y2gwAgNJbnQEAWkFByRtYXRjaDAFAWkAAAEMZ2V0QXNzZXRJbmZvAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwMJAAECBQckbWF0Y2gwAgZTdHJpbmcGCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCaWQFByRtYXRjaDAECyR0MDQwMDU0MTc3BAckbWF0Y2gxBQJpZAMJAAECBQckbWF0Y2gxAgpCeXRlVmVjdG9yBANhSWQFByRtYXRjaDEJAJQKAgkA2AQBBQNhSWQFA2FJZAMJAAECBQckbWF0Y2gxAgZTdHJpbmcEA2FJZAUHJG1hdGNoMQkAlAoCBQNhSWQJANkEAQUDYUlkCQACAQILTWF0Y2ggZXJyb3IECHN0cmluZ0lkCAULJHQwNDAwNTQxNzcCXzEEB2J5dGVzSWQIBQskdDA0MDA1NDE3NwJfMgQEaW5mbwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFB2J5dGVzSWQJAKwCAgkArAICAgZBc3NldCAFCHN0cmluZ0lkAg4gZG9lc24ndCBleGlzdAkAlQoDBQhzdHJpbmdJZAgFBGluZm8EbmFtZQgFBGluZm8IZGVjaW1hbHMDCQABAgUHJG1hdGNoMAIEVW5pdAQFd2F2ZXMFByRtYXRjaDAJAJUKAwIFV0FWRVMCBVdBVkVTAAgJAAIBAgtNYXRjaCBlcnJvcgEHc3VzcGVuZAEFY2F1c2UJAMwIAgkBDEJvb2xlYW5FbnRyeQIFB2tBY3RpdmUHCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmtDYXVzZQUFY2F1c2UFA25pbAEUY2FsY3VsYXRlRmVlRGlzY291bnQBCHVzZXJBZGRyBApzd29wQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFCmdvdkFkZHJlc3MJAKwCAgkApQgBBQh1c2VyQWRkcgUOa1VzZXJTd29wSW5Hb3YAAAQLZ1N3b3BBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUKZ292QWRkcmVzcwkArAICCQClCAEFCHVzZXJBZGRyBQ9rVXNlckdTd29wSW5Hb3YFCnN3b3BBbW91bnQEDmRpc2NvdW50VmFsdWVzCQC1CQIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBm9yYWNsZQUPa0Rpc2NvdW50VmFsdWVzAgEsBAlkaXNjb3VudHMJALUJAgkBEUBleHRyTmF0aXZlKDEwNTMpAgUGb3JhY2xlBQprRGlzY291bnRzAgEsAwMJAGcCBQtnU3dvcEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmRpc2NvdW50VmFsdWVzAAAJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOZGlzY291bnRWYWx1ZXMAAQULZ1N3b3BBbW91bnQHCQBlAgUJZmVlU2NhbGU2CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJZGlzY291bnRzAAADAwkAZwIFC2dTd29wQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOZGlzY291bnRWYWx1ZXMAAQkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5kaXNjb3VudFZhbHVlcwACBQtnU3dvcEFtb3VudAcJAGUCBQlmZWVTY2FsZTYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlkaXNjb3VudHMAAQMDCQBnAgULZ1N3b3BBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5kaXNjb3VudFZhbHVlcwACCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmRpc2NvdW50VmFsdWVzAAMFC2dTd29wQW1vdW50BwkAZQIFCWZlZVNjYWxlNgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCWRpc2NvdW50cwACAwMJAGcCBQtnU3dvcEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmRpc2NvdW50VmFsdWVzAAMJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOZGlzY291bnRWYWx1ZXMABAULZ1N3b3BBbW91bnQHCQBlAgUJZmVlU2NhbGU2CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJZGlzY291bnRzAAMDCQBnAgULZ1N3b3BBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5kaXNjb3VudFZhbHVlcwAECQBlAgUJZmVlU2NhbGU2CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJZGlzY291bnRzAAQFCWZlZVNjYWxlNgENY2FsY3VsYXRlRmVlcwYJcG10QW1vdW50Em1pbkFtb3VudFRvUmVjZWl2ZQl0b2tlbkZyb20HdG9rZW5UbwNmZWUNZmVlR292ZXJuYW5jZQQQYW1vdW50V2l0aG91dEZlZQkAawMFB3Rva2VuVG8FCXBtdEFtb3VudAkAZAIFCXBtdEFtb3VudAUJdG9rZW5Gcm9tBA1hbW91bnRXaXRoRmVlCQBrAwUQYW1vdW50V2l0aG91dEZlZQkAZQIFCWZlZVNjYWxlNgUDZmVlBQlmZWVTY2FsZTYEEGdvdmVybmFuY2VSZXdhcmQJAGsDBRBhbW91bnRXaXRob3V0RmVlBQ1mZWVHb3Zlcm5hbmNlBQlmZWVTY2FsZTYDCQBmAgUSbWluQW1vdW50VG9SZWNlaXZlBQ1hbW91bnRXaXRoRmVlCQACAQkArAICCQCsAgIJAKwCAgIdQ2FsY3VsYXRlZCBhbW91bnQgdG8gcmVjZWl2ZSAJAKQDAQUNYW1vdW50V2l0aEZlZQIgIGlzIGxlc3MgdGhhbiBzcGVjaWZpZWQgbWluaW11bSAJAKQDAQUSbWluQW1vdW50VG9SZWNlaXZlCQCVCgMFEGFtb3VudFdpdGhvdXRGZWUFDWFtb3VudFdpdGhGZWUFEGdvdmVybmFuY2VSZXdhcmQBEGNhbGN1bGF0ZVZpcnRQYXkDCXBtdEFtb3VudAdiYWxhbmNlA2ZlZQQBRgkAZQIFCWZlZVNjYWxlNgUDZmVlBAFrCQBrAwUDZmVlADwAZAQBYQkAZAIFBnNjYWxlOAkAawMJAGgCBQFGBQFrBQZzY2FsZTgJAGgCBQlmZWVTY2FsZTYFCWZlZVNjYWxlNgQBYgkAZQIJAGUCCQBkAgkAZAIFB2JhbGFuY2UJAGsDBQdiYWxhbmNlBQFGBQlmZWVTY2FsZTYJAGsDBQlwbXRBbW91bnQFAUYFCWZlZVNjYWxlNgUJcG10QW1vdW50CQBrAwUJcG10QW1vdW50CQBoAgUBRgUBawkAaAIFCWZlZVNjYWxlNgUJZmVlU2NhbGU2BAFjCQC5AgIJAL4CAQkAtgIBBQdiYWxhbmNlCQC2AgEFCXBtdEFtb3VudAQBRAkAuAICCQC5AgIJALYCAQUBYgkAtgIBBQFiCQC8AgMJALkCAgkAtgIBAAQFAWMJALYCAQUBYQkAtgIBBQZzY2FsZTgJAKADAQkAvAIDCQC3AgIJAL4CAQkAtgIBBQFiCQEKc3FydEJpZ0ludAQFAUQAAAAABQRET1dOCQC2AgEFBnNjYWxlOAkAtgIBCQBoAgACBQFhARFwYXJzZVBheW1lbnRBc3NldAEHYXNzZXRJZAMJAAACBQdhc3NldElkAQAFBHVuaXQFB2Fzc2V0SWQBEXN1c3BlbmRTdXNwaWNpb3VzBg9hY2NvdW50QmFsYW5jZUEPYWNjb3VudEJhbGFuY2VCCGJhbGFuY2VBCGJhbGFuY2VCCGFzc2V0SWRBCGFzc2V0SWRCCQEHc3VzcGVuZAEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICI1N1c3BpY2lvdXMgc3RhdGUuIEFjdHVhbCBiYWxhbmNlczogCQCkAwEFD2FjY291bnRCYWxhbmNlQQIBIAUIYXNzZXRJZEECAiwgCQCkAwEFD2FjY291bnRCYWxhbmNlQgIBIAUIYXNzZXRJZEICCS4gU3RhdGU6IAkApAMBBQhiYWxhbmNlQQIBIAUIYXNzZXRJZEECAiwgCQCkAwEFCGJhbGFuY2VCAgEgBQhhc3NldElkQgEIaXNBY3RpdmUAAwUGYWN0aXZlBQR1bml0CQACAQIfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAEMaXNPcmFjbGVQb29sAQtwb29sQWRkcmVzcwMJAQlpc0RlZmluZWQBCQCdCAIFBm9yYWNsZQkArAICBQtrT3JhY2xlUG9vbAULcG9vbEFkZHJlc3MFBHVuaXQJAAIBAhtEQXBwIGlzIG5vdCByZWdpc3RlcmVkIHBvb2wBD2dldFBvb2xCYWxhbmNlcwMEcG9vbAhhc3NldElkQQhhc3NldElkQgQIYmFsYW5jZUEJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHBvb2wFCWtCYWxhbmNlQQQIYmFsYW5jZUIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHBvb2wFCWtCYWxhbmNlQgQNc3Rha2VkQW1vdW50QQkBDHN0YWtlZEFtb3VudAIFCGFzc2V0SWRBBQRwb29sBA1zdGFrZWRBbW91bnRCCQEMc3Rha2VkQW1vdW50AgUIYXNzZXRJZEIFBHBvb2wED2FjY291bnRCYWxhbmNlQQkAZAIJAQ5hY2NvdW50QmFsYW5jZQIFCGFzc2V0SWRBBQRwb29sBQ1zdGFrZWRBbW91bnRBBA9hY2NvdW50QmFsYW5jZUIJAGQCCQEOYWNjb3VudEJhbGFuY2UCBQhhc3NldElkQgUEcG9vbAUNc3Rha2VkQW1vdW50QgQLc2hhcmVTdXBwbHkJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHBvb2wFEWtTaGFyZUFzc2V0U3VwcGx5CQCXCgUFCGJhbGFuY2VBBQhiYWxhbmNlQgUPYWNjb3VudEJhbGFuY2VBBQ9hY2NvdW50QmFsYW5jZUIFC3NoYXJlU3VwcGx5AQ1nZXRQb29sQXNzZXRzAQRwb29sBAtzdHJBc3NldElkQQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEcG9vbAUJa0Fzc2V0SWRBBAtzdHJBc3NldElkQgkBEUBleHRyTmF0aXZlKDEwNTMpAgUEcG9vbAUJa0Fzc2V0SWRCBAhhc3NldElkQQMJAAACBQtzdHJBc3NldElkQQIFV0FWRVMFBHVuaXQJANkEAQULc3RyQXNzZXRJZEEECGFzc2V0SWRCAwkAAAIFC3N0ckFzc2V0SWRCAgVXQVZFUwUEdW5pdAkA2QQBBQtzdHJBc3NldElkQgQMc2hhcmVBc3NldElkCQDZBAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHBvb2wFDWtTaGFyZUFzc2V0SWQJAJcKBQULc3RyQXNzZXRJZEEFC3N0ckFzc2V0SWRCBQhhc3NldElkQQUIYXNzZXRJZEIFDHNoYXJlQXNzZXRJZAEMZ2V0RmVlUGFyYW1zAgRwb29sBmNhbGxlcgQLZmVlRGlzY291bnQJARRjYWxjdWxhdGVGZWVEaXNjb3VudAEFBmNhbGxlcgQDZmVlCQBuBAkBEUBleHRyTmF0aXZlKDEwNTApAgUEcG9vbAUEa0ZlZQULZmVlRGlzY291bnQFCWZlZVNjYWxlNgUHQ0VJTElORwQGZ292RmVlCQBuBAkAawMFA2ZlZQAoAGQFC2ZlZURpc2NvdW50BQlmZWVTY2FsZTYFB0NFSUxJTkcJAJQKAgUDZmVlBQZnb3ZGZWUJAWkBBGluaXQEC2NhbGxlckJ5dGVzBGFyZ3MIcEFtb3VudHMJcEFzc2V0SWRzBAZjYWxsZXIJAQdBZGRyZXNzAQULY2FsbGVyQnl0ZXMECyR0MDkxODQ5MjYyCQCUCgIJAJEDAgUIcEFtb3VudHMAAAkBEXBhcnNlUGF5bWVudEFzc2V0AQkAkQMCBQlwQXNzZXRJZHMAAAQKcG10QW1vdW50QQgFCyR0MDkxODQ5MjYyAl8xBAtwbXRBc3NldElkQQgFCyR0MDkxODQ5MjYyAl8yBAskdDA5MjY3OTM0NQkAlAoCCQCRAwIFCHBBbW91bnRzAAEJARFwYXJzZVBheW1lbnRBc3NldAEJAJEDAgUJcEFzc2V0SWRzAAEECnBtdEFtb3VudEIIBQskdDA5MjY3OTM0NQJfMQQLcG10QXNzZXRJZEIIBQskdDA5MjY3OTM0NQJfMgMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUMYWRtaW5QdWJLZXkxCQDMCAIFDGFkbWluUHViS2V5MgkAzAgCBQxhZG1pblB1YktleTMJAMwIAgURYWRtaW5JbnZva2VQdWJLZXkFA25pbAgFAWkVb3JpZ2luQ2FsbGVyUHVibGljS2V5CQACAQIhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAwkBAiE9AgkAkAMBBQRhcmdzAAEJAAIBAg9Xcm9uZyBhcmdzIHNpemUDCQEJaXNEZWZpbmVkAQkAmwgCBQZjYWxsZXIFB2tBY3RpdmUJAAIBAhZEQXBwIGlzIGFscmVhZHkgYWN0aXZlAwkAAAIFC3BtdEFzc2V0SWRBBQtwbXRBc3NldElkQgkAAgECGEFzc2V0cyBtdXN0IGJlIGRpZmZlcmVudAQLJHQwOTc4MDk4NTcJAQxnZXRBc3NldEluZm8BBQtwbXRBc3NldElkQQQOcG10U3RyQXNzZXRJZEEIBQskdDA5NzgwOTg1NwJfMQQNcG10QXNzZXROYW1lQQgFCyR0MDk3ODA5ODU3Al8yBAxwbXREZWNpbWFsc0EIBQskdDA5NzgwOTg1NwJfMwQLJHQwOTg2Njk5NDMJAQxnZXRBc3NldEluZm8BBQtwbXRBc3NldElkQgQOcG10U3RyQXNzZXRJZEIIBQskdDA5ODY2OTk0MwJfMQQNcG10QXNzZXROYW1lQggFCyR0MDk4NjY5OTQzAl8yBAxwbXREZWNpbWFsc0IIBQskdDA5ODY2OTk0MwJfMwQMZmlyc3RIYXJ2ZXN0CQAAAgkAkQMCBQRhcmdzAAACBHRydWUECXNoYXJlTmFtZQkArAICCQCsAgIJAKwCAgIBcwkArwICBQ1wbXRBc3NldE5hbWVBAAcCAV8JAK8CAgUNcG10QXNzZXROYW1lQgAHBBBzaGFyZURlc2NyaXB0aW9uCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIiU2hhcmVUb2tlbiBvZiBTd29wRmkgcHJvdG9jb2wgZm9yIAUNcG10QXNzZXROYW1lQQIFIGFuZCAFDXBtdEFzc2V0TmFtZUICDCBhdCBhZGRyZXNzIAkApQgBBQR0aGlzBA1zaGFyZURlY2ltYWxzCQBpAgkAZAIFDHBtdERlY2ltYWxzQQUMcG10RGVjaW1hbHNCAAIEBGFyZzEJAGwGBQpwbXRBbW91bnRBBQxwbXREZWNpbWFsc0EABQABBQxwbXREZWNpbWFsc0EFBERPV04EBGFyZzIJAGwGBQpwbXRBbW91bnRCBQxwbXREZWNpbWFsc0IABQABBQxwbXREZWNpbWFsc0IFBERPV04EBGFyZzMJAGwGAAoAAAUNc2hhcmVEZWNpbWFscwAAAAAFBERPV04EEnNoYXJlSW5pdGlhbFN1cHBseQkAawMFBGFyZzEFBGFyZzIFBGFyZzMECnNoYXJlSXNzdWUJAMIIBQUJc2hhcmVOYW1lBRBzaGFyZURlc2NyaXB0aW9uBRJzaGFyZUluaXRpYWxTdXBwbHkFDXNoYXJlRGVjaW1hbHMGBAxzaGFyZUlzc3VlSWQJALgIAQUKc2hhcmVJc3N1ZQQGc3Rha2UxAwkBCGNvbnRhaW5zAgUNc3Rha2luZ0Fzc2V0cwUOcG10U3RyQXNzZXRJZEEJAPwHBAgFAWkGY2FsbGVyAgxzdGFrZVVuc3Rha2UJAMwIAgYJAMwIAgUKcG10QW1vdW50QQkAzAgCBQ5wbXRTdHJBc3NldElkQQUDbmlsBQNuaWwAAAMJAAACBQZzdGFrZTEFBnN0YWtlMQQGc3Rha2UyAwkBCGNvbnRhaW5zAgUNc3Rha2luZ0Fzc2V0cwUOcG10U3RyQXNzZXRJZEIJAPwHBAgFAWkGY2FsbGVyAgxzdGFrZVVuc3Rha2UJAMwIAgYJAMwIAgUKcG10QW1vdW50QgkAzAgCBQ5wbXRTdHJBc3NldElkQgUDbmlsBQNuaWwAAAMJAAACBQZzdGFrZTIFBnN0YWtlMgQJYmFzZUVudHJ5CQDMCAIJAQtTdHJpbmdFbnRyeQIFCGtWZXJzaW9uBQd2ZXJzaW9uCQDMCAIJAQxCb29sZWFuRW50cnkCBQdrQWN0aXZlBgkAzAgCCQELU3RyaW5nRW50cnkCBQlrQXNzZXRJZEEFDnBtdFN0ckFzc2V0SWRBCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWtBc3NldElkQgUOcG10U3RyQXNzZXRJZEIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtCYWxhbmNlQQUKcG10QW1vdW50QQkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa0JhbGFuY2VCBQpwbXRBbW91bnRCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQRrRmVlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQZvcmFjbGUCDWJhc2VfZmVlX2NwbW0JAMwIAgUKc2hhcmVJc3N1ZQkAzAgCCQELU3RyaW5nRW50cnkCBQ1rU2hhcmVBc3NldElkCQDYBAEFDHNoYXJlSXNzdWVJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgURa1NoYXJlQXNzZXRTdXBwbHkFEnNoYXJlSW5pdGlhbFN1cHBseQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFEnNoYXJlSW5pdGlhbFN1cHBseQUMc2hhcmVJc3N1ZUlkBQNuaWwDBQxmaXJzdEhhcnZlc3QJAJQKAgUDbmlsCQCUCgIJAM4IAgUJYmFzZUVudHJ5CQDMCAIJAQxCb29sZWFuRW50cnkCBQ1rRmlyc3RIYXJ2ZXN0BQxmaXJzdEhhcnZlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tGaXJzdEhhcnZlc3RIZWlnaHQJAGQCBQtzdGFydEhlaWdodAkAaAIFFWZpcnN0SGFydmVzdEVuZFBlcmlvZAUMcGVyaW9kTGVuZ3RoBQNuaWwFA25pbAkAlAoCBQNuaWwJAJQKAgUJYmFzZUVudHJ5BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQERaW5pdFdpdGhJbml0UmF0aW8EC2NhbGxlckJ5dGVzBGFyZ3MIcEFtb3VudHMJcEFzc2V0SWRzBAZjYWxsZXIJAQdBZGRyZXNzAQULY2FsbGVyQnl0ZXMEDSR0MDEyMTY0MTIzNjQJAJcKBQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGFyZ3MAAAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGFyZ3MAAQkAkQMCBQRhcmdzAAIJAJEDAgUEYXJncwADCQAAAgkAkQMCBQRhcmdzAAQCBHRydWUECWFtdEFzc2V0QQgFDSR0MDEyMTY0MTIzNjQCXzEECWFtdEFzc2V0QggFDSR0MDEyMTY0MTIzNjQCXzIEC2Fzc2V0SWRBU3RyCAUNJHQwMTIxNjQxMjM2NAJfMwQLYXNzZXRJZEJTdHIIBQ0kdDAxMjE2NDEyMzY0Al80BAxmaXJzdEhhcnZlc3QIBQ0kdDAxMjE2NDEyMzY0Al81AwkBASEBCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQxhZG1pblB1YktleTEJAMwIAgUMYWRtaW5QdWJLZXkyCQDMCAIFDGFkbWluUHViS2V5MwkAzAgCBRFhZG1pbkludm9rZVB1YktleQUDbmlsCAUBaRVvcmlnaW5DYWxsZXJQdWJsaWNLZXkJAAIBAiFPbmx5IGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24DCQECIT0CCQCQAwEFBGFyZ3MABQkAAgECD1dyb25nIGFyZ3Mgc2l6ZQMJAQlpc0RlZmluZWQBCQCbCAIFBmNhbGxlcgUHa0FjdGl2ZQkAAgECFkRBcHAgaXMgYWxyZWFkeSBhY3RpdmUDCQAAAgULYXNzZXRJZEFTdHIFC2Fzc2V0SWRCU3RyCQACAQIYQXNzZXRzIG11c3QgYmUgZGlmZmVyZW50BA0kdDAxMjc5OTEyODc2CQEMZ2V0QXNzZXRJbmZvAQULYXNzZXRJZEFTdHIEDnBtdFN0ckFzc2V0SWRBCAUNJHQwMTI3OTkxMjg3NgJfMQQNcG10QXNzZXROYW1lQQgFDSR0MDEyNzk5MTI4NzYCXzIEDHBtdERlY2ltYWxzQQgFDSR0MDEyNzk5MTI4NzYCXzMEDSR0MDEyODg1MTI5NjIJAQxnZXRBc3NldEluZm8BBQthc3NldElkQlN0cgQOcG10U3RyQXNzZXRJZEIIBQ0kdDAxMjg4NTEyOTYyAl8xBA1wbXRBc3NldE5hbWVCCAUNJHQwMTI4ODUxMjk2MgJfMgQMcG10RGVjaW1hbHNCCAUNJHQwMTI4ODUxMjk2MgJfMwQJc2hhcmVOYW1lCQCsAgIJAKwCAgkArAICAgFzCQCvAgIFDXBtdEFzc2V0TmFtZUEABwIBXwkArwICBQ1wbXRBc3NldE5hbWVCAAcEEHNoYXJlRGVzY3JpcHRpb24JAKwCAgkArAICCQCsAgIJAKwCAgkArAICAiJTaGFyZVRva2VuIG9mIFN3b3BGaSBwcm90b2NvbCBmb3IgBQ1wbXRBc3NldE5hbWVBAgUgYW5kIAUNcG10QXNzZXROYW1lQgIMIGF0IGFkZHJlc3MgCQClCAEFBHRoaXMEDXNoYXJlRGVjaW1hbHMJAGkCCQBkAgUMcG10RGVjaW1hbHNBBQxwbXREZWNpbWFsc0IAAgQSc2hhcmVJbml0aWFsU3VwcGx5AAAECnNoYXJlSXNzdWUJAMIIBQUJc2hhcmVOYW1lBRBzaGFyZURlc2NyaXB0aW9uBRJzaGFyZUluaXRpYWxTdXBwbHkFDXNoYXJlRGVjaW1hbHMGBAxzaGFyZUlzc3VlSWQJALgIAQUKc2hhcmVJc3N1ZQQJYmFzZUVudHJ5CQDMCAIJAQtTdHJpbmdFbnRyeQIFCGtWZXJzaW9uBQd2ZXJzaW9uCQDMCAIJAQxCb29sZWFuRW50cnkCBQdrQWN0aXZlBgkAzAgCCQELU3RyaW5nRW50cnkCBQlrQXNzZXRJZEEFDnBtdFN0ckFzc2V0SWRBCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWtBc3NldElkQgUOcG10U3RyQXNzZXRJZEIJAMwIAgkBDEludGVnZXJFbnRyeQIFDWtCYWxhbmNlSW5pdEEFCWFtdEFzc2V0QQkAzAgCCQEMSW50ZWdlckVudHJ5AgUNa0JhbGFuY2VJbml0QgUJYW10QXNzZXRCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrQmFsYW5jZUEAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa0JhbGFuY2VCAAAJAMwIAgkBDEludGVnZXJFbnRyeQIFBGtGZWUJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBm9yYWNsZQINYmFzZV9mZWVfY3BtbQkAzAgCBQpzaGFyZUlzc3VlCQDMCAIJAQtTdHJpbmdFbnRyeQIFDWtTaGFyZUFzc2V0SWQJANgEAQUMc2hhcmVJc3N1ZUlkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrU2hhcmVBc3NldFN1cHBseQUSc2hhcmVJbml0aWFsU3VwcGx5BQNuaWwDBQxmaXJzdEhhcnZlc3QJAJQKAgUDbmlsCQCUCgIJAM4IAgUJYmFzZUVudHJ5CQDMCAIJAQxCb29sZWFuRW50cnkCBQ1rRmlyc3RIYXJ2ZXN0BQxmaXJzdEhhcnZlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tGaXJzdEhhcnZlc3RIZWlnaHQJAGQCBQtzdGFydEhlaWdodAkAaAIFFWZpcnN0SGFydmVzdEVuZFBlcmlvZAUMcGVyaW9kTGVuZ3RoBQNuaWwFA25pbAkAlAoCBQNuaWwJAJQKAgUJYmFzZUVudHJ5BQNuaWwBaQEYa2VlcExpbWl0Rm9yRmlyc3RIYXJ2ZXN0BAtjYWxsZXJCeXRlcwRhcmdzCHBBbW91bnRzCXBBc3NldElkcwkBC3ZhbHVlT3JFbHNlAgkBDGlzT3JhY2xlUG9vbAEJAKUIAQgFAWkGY2FsbGVyCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUAAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQxhZG1pblB1YktleTEJAMwIAgUMYWRtaW5QdWJLZXkyCQDMCAIFDGFkbWluUHViS2V5MwkAzAgCBRFhZG1pbkludm9rZVB1YktleQUDbmlsCAUBaRVvcmlnaW5DYWxsZXJQdWJsaWNLZXkJAAIBAiFPbmx5IGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24DCQECIT0CCQCQAwEFBGFyZ3MAAQkAAgECD1dyb25nIGFyZ3Mgc2l6ZQQKc2hhcmVMaW1pdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGFyZ3MAAAkAlAoCBQNuaWwJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgULa1NoYXJlTGltaXQFCnNoYXJlTGltaXQFA25pbAUDbmlsAWkBCGV4Y2hhbmdlBAtjYWxsZXJCeXRlcwRhcmdzCHBBbW91bnRzCXBBc3NldElkcwkBC3ZhbHVlT3JFbHNlAgkBDGlzT3JhY2xlUG9vbAEJAKUIAQgFAWkGY2FsbGVyCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABAZjYWxsZXIJAQdBZGRyZXNzAQULY2FsbGVyQnl0ZXMEDSR0MDE1MzQ4MTU0MjQJAJQKAgkAkQMCBQhwQW1vdW50cwAACQERcGFyc2VQYXltZW50QXNzZXQBCQCRAwIFCXBBc3NldElkcwAABAlwbXRBbW91bnQIBQ0kdDAxNTM0ODE1NDI0Al8xBApwbXRBc3NldElkCAUNJHQwMTUzNDgxNTQyNAJfMgQSbWluQW1vdW50VG9SZWNlaXZlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEYXJncwAABA0kdDAxNTQ5NzE1NTczCQENZ2V0UG9vbEFzc2V0cwEIBQFpBmNhbGxlcgQLc3RyQXNzZXRJZEEIBQ0kdDAxNTQ5NzE1NTczAl8xBAtzdHJBc3NldElkQggFDSR0MDE1NDk3MTU1NzMCXzIECGFzc2V0SWRBCAUNJHQwMTU0OTcxNTU3MwJfMwQIYXNzZXRJZEIIBQ0kdDAxNTQ5NzE1NTczAl80BA0kdDAxNTU4NjE1NjkyCQEPZ2V0UG9vbEJhbGFuY2VzAwgFAWkGY2FsbGVyBQhhc3NldElkQQUIYXNzZXRJZEIECGJhbGFuY2VBCAUNJHQwMTU1ODYxNTY5MgJfMQQIYmFsYW5jZUIIBQ0kdDAxNTU4NjE1NjkyAl8yBA9hY2NvdW50QmFsYW5jZUEIBQ0kdDAxNTU4NjE1NjkyAl8zBA9hY2NvdW50QmFsYW5jZUIIBQ0kdDAxNTU4NjE1NjkyAl80AwkBAiE9AgkAkAMBBQRhcmdzAAEJAAIBAg9Xcm9uZyBhcmdzIHNpemUDAwkAAAIFCGJhbGFuY2VBAAAGCQAAAgUIYmFsYW5jZUIAAAkAAgECIENhbid0IGV4Y2hhbmdlIHdpdGggemVybyBiYWxhbmNlAwkAZwIAAAUSbWluQW1vdW50VG9SZWNlaXZlCQACAQkArAICAjRNaW5pbWFsIGFtb3VudCB0byByZWNlaXZlIG11c3QgYmUgcG9zaXRpdmUuIEFjdHVhbDogCQCkAwEFEm1pbkFtb3VudFRvUmVjZWl2ZQMJAQIhPQIJAJADAQUIcEFtb3VudHMAAQkAAgECHU9uZSBhdHRhY2hlZCBwYXltZW50IGV4cGVjdGVkAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQhhc3NldElkQQkAzAgCBQhhc3NldElkQgUDbmlsBQpwbXRBc3NldElkCQACAQkArAICCQCsAgIJAKwCAgIkSW5jb3JyZWN0IGFzc2V0IGF0dGFjaGVkLiBFeHBlY3RlZDogBQtzdHJBc3NldElkQQIEIG9yIAULc3RyQXNzZXRJZEIDAwkAZgIFCGJhbGFuY2VBBQ9hY2NvdW50QmFsYW5jZUEGCQBmAgUIYmFsYW5jZUIFD2FjY291bnRCYWxhbmNlQgkAlAoCBQNuaWwJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFCXBtdEFtb3VudAUKcG10QXNzZXRJZAUDbmlsCQERc3VzcGVuZFN1c3BpY2lvdXMGBQ9hY2NvdW50QmFsYW5jZUEFD2FjY291bnRCYWxhbmNlQgUIYmFsYW5jZUEFCGJhbGFuY2VCBQtzdHJBc3NldElkQQULc3RyQXNzZXRJZEIEDSR0MDE2NjYwMTY3MTgJAQxnZXRGZWVQYXJhbXMCCAUBaQZjYWxsZXIIBQFpDG9yaWdpbkNhbGxlcgQDZmVlCAUNJHQwMTY2NjAxNjcxOAJfMQQGZ292RmVlCAUNJHQwMTY2NjAxNjcxOAJfMgQNJHQwMTY3MzUxNzA3MgMJAAACBQpwbXRBc3NldElkBQhhc3NldElkQQkBDWNhbGN1bGF0ZUZlZXMGBQlwbXRBbW91bnQFEm1pbkFtb3VudFRvUmVjZWl2ZQUIYmFsYW5jZUEFCGJhbGFuY2VCBQNmZWUFBmdvdkZlZQkBDWNhbGN1bGF0ZUZlZXMGBQlwbXRBbW91bnQFEm1pbkFtb3VudFRvUmVjZWl2ZQUIYmFsYW5jZUIFCGJhbGFuY2VBBQNmZWUFBmdvdkZlZQQQYW1vdW50V2l0aG91dEZlZQgFDSR0MDE2NzM1MTcwNzICXzEEDWFtb3VudFdpdGhGZWUIBQ0kdDAxNjczNTE3MDcyAl8yBBBnb3Zlcm5hbmNlUmV3YXJkCAUNJHQwMTY3MzUxNzA3MgJfMwQNJHQwMTcwOTAxNzQxNQMJAAACBQpwbXRBc3NldElkBQhhc3NldElkQQkAlQoDCQBkAgUIYmFsYW5jZUEFCXBtdEFtb3VudAkAZQIJAGUCBQhiYWxhbmNlQgUNYW1vdW50V2l0aEZlZQUQZ292ZXJuYW5jZVJld2FyZAUIYXNzZXRJZEIJAJUKAwkAZQIJAGUCBQhiYWxhbmNlQQUNYW1vdW50V2l0aEZlZQUQZ292ZXJuYW5jZVJld2FyZAkAZAIFCGJhbGFuY2VCBQlwbXRBbW91bnQFCGFzc2V0SWRBBAtuZXdCYWxhbmNlQQgFDSR0MDE3MDkwMTc0MTUCXzEEC25ld0JhbGFuY2VCCAUNJHQwMTcwOTAxNzQxNQJfMgQLYXNzZXRJZFNlbmQIBQ0kdDAxNzA5MDE3NDE1Al8zBA0kdDAxNzQzMzE3NjgzAwkAAAIFCnBtdEFzc2V0SWQFCGFzc2V0SWRBCQCUCgIFCXBtdEFtb3VudAkAZAIFDWFtb3VudFdpdGhGZWUFEGdvdmVybmFuY2VSZXdhcmQJAJQKAgkAZAIFDWFtb3VudFdpdGhGZWUFEGdvdmVybmFuY2VSZXdhcmQFCXBtdEFtb3VudAQMc3Rha2VBbW91bnRBCAUNJHQwMTc0MzMxNzY4MwJfMQQMc3Rha2VBbW91bnRCCAUNJHQwMTc0MzMxNzY4MwJfMgQGc3Rha2UxAwkBCGNvbnRhaW5zAgUNc3Rha2luZ0Fzc2V0cwULc3RyQXNzZXRJZEEJAPwHBAgFAWkGY2FsbGVyAgxzdGFrZVVuc3Rha2UJAMwIAgkAAAIFCnBtdEFzc2V0SWQFCGFzc2V0SWRBCQDMCAIFDHN0YWtlQW1vdW50QQkAzAgCBQtzdHJBc3NldElkQQUDbmlsBQNuaWwAAAMJAAACBQZzdGFrZTEFBnN0YWtlMQQGc3Rha2UyAwkBCGNvbnRhaW5zAgUNc3Rha2luZ0Fzc2V0cwULc3RyQXNzZXRJZEIJAPwHBAgFAWkGY2FsbGVyAgxzdGFrZVVuc3Rha2UJAMwIAgkAAAIFCnBtdEFzc2V0SWQFCGFzc2V0SWRCCQDMCAIFDHN0YWtlQW1vdW50QgkAzAgCBQtzdHJBc3NldElkQgUDbmlsBQNuaWwAAAMJAAACBQZzdGFrZTIFBnN0YWtlMgkAlAoCBQNuaWwJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa0JhbGFuY2VBBQtuZXdCYWxhbmNlQQkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa0JhbGFuY2VCBQtuZXdCYWxhbmNlQgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFDWFtb3VudFdpdGhGZWUFC2Fzc2V0SWRTZW5kCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFD21vbmV5Qm94QWRkcmVzcwUQZ292ZXJuYW5jZVJld2FyZAULYXNzZXRJZFNlbmQFA25pbAkAzAgCBQ1hbW91bnRXaXRoRmVlCQDMCAIFC2Fzc2V0SWRTZW5kBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEWcmVwbGVuaXNoV2l0aFR3b1Rva2VucwQLY2FsbGVyQnl0ZXMEYXJncwhwQW1vdW50cwlwQXNzZXRJZHMJAQt2YWx1ZU9yRWxzZQIJAQxpc09yYWNsZVBvb2wBCQClCAEIBQFpBmNhbGxlcgkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAQGY2FsbGVyCQEHQWRkcmVzcwEFC2NhbGxlckJ5dGVzBAtwbXRBc3NldElkQQkBEXBhcnNlUGF5bWVudEFzc2V0AQkAkQMCBQlwQXNzZXRJZHMAAAQLcG10QXNzZXRJZEIJARFwYXJzZVBheW1lbnRBc3NldAEJAJEDAgUJcEFzc2V0SWRzAAEEDHN0YWtlRmFybWluZwkAAAIJAJEDAgUEYXJncwAAAgR0cnVlBAhsb2NrVHlwZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGFyZ3MAAQQNJHQwMTg5NDYxOTAzNgkBDWdldFBvb2xBc3NldHMBCAUBaQZjYWxsZXIEC3N0ckFzc2V0SWRBCAUNJHQwMTg5NDYxOTAzNgJfMQQLc3RyQXNzZXRJZEIIBQ0kdDAxODk0NjE5MDM2Al8yBAhhc3NldElkQQgFDSR0MDE4OTQ2MTkwMzYCXzMECGFzc2V0SWRCCAUNJHQwMTg5NDYxOTAzNgJfNAQMc2hhcmVBc3NldElkCAUNJHQwMTg5NDYxOTAzNgJfNQQNJHQwMTkwNDkxOTE3MwkBD2dldFBvb2xCYWxhbmNlcwMIBQFpBmNhbGxlcgUIYXNzZXRJZEEFCGFzc2V0SWRCBAhiYWxhbmNlQQgFDSR0MDE5MDQ5MTkxNzMCXzEECGJhbGFuY2VCCAUNJHQwMTkwNDkxOTE3MwJfMgQPYWNjb3VudEJhbGFuY2VBCAUNJHQwMTkwNDkxOTE3MwJfMwQPYWNjb3VudEJhbGFuY2VCCAUNJHQwMTkwNDkxOTE3MwJfNAQQc2hhcmVBc3NldFN1cHBseQgFDSR0MDE5MDQ5MTkxNzMCXzUDCQECIT0CCQCQAwEFBGFyZ3MAAgkAAgECD1dyb25nIGFyZ3Mgc2l6ZQMDCQECIT0CCQCQAwEFCHBBbW91bnRzAAIJAQIhPQIJAJADAQUIcEFtb3VudHMAAwcJAAIBAh5Ud28gb3IgdGhyZWUgcGF5bWVudHMgZXhwZWN0ZWQDAwkBAiE9AgULcG10QXNzZXRJZEEFCGFzc2V0SWRBBgkBAiE9AgULcG10QXNzZXRJZEIFCGFzc2V0SWRCCQACAQkArAICCQCsAgIJAKwCAgIlSW5jb3JyZWN0IGFzc2V0cyBhdHRhY2hlZC4gRXhwZWN0ZWQ6IAULc3RyQXNzZXRJZEECBSBhbmQgBQtzdHJBc3NldElkQgMDCQBmAgUIYmFsYW5jZUEFD2FjY291bnRCYWxhbmNlQQYJAGYCBQhiYWxhbmNlQgUPYWNjb3VudEJhbGFuY2VCCQCUCgIFA25pbAkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgkAkQMCBQhwQW1vdW50cwAABQtwbXRBc3NldElkQQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIJAJEDAgUIcEFtb3VudHMAAQULcG10QXNzZXRJZEIFA25pbAMJAAACCQCQAwEFCHBBbW91bnRzAAMJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIDCQAAAgkAkQMCBQlwQXNzZXRJZHMAAgEABQR1bml0CQCRAwIFCXBBc3NldElkcwACCQCRAwIFCHBBbW91bnRzAAIFA25pbAkAzggCBQNuaWwJARFzdXNwZW5kU3VzcGljaW91cwYFD2FjY291bnRCYWxhbmNlQQUPYWNjb3VudEJhbGFuY2VCBQhiYWxhbmNlQQUIYmFsYW5jZUIFC3N0ckFzc2V0SWRBBQtzdHJBc3NldElkQgQNJHQwMjAxNzQyMDI1MQkBDGdldEFzc2V0SW5mbwEFC3BtdEFzc2V0SWRBBA5wbXRTdHJBc3NldElkQQgFDSR0MDIwMTc0MjAyNTECXzEEDXBtdEFzc2V0TmFtZUEIBQ0kdDAyMDE3NDIwMjUxAl8yBAxwbXREZWNpbWFsc0EIBQ0kdDAyMDE3NDIwMjUxAl8zBA0kdDAyMDI2ODIwMzQ1CQEMZ2V0QXNzZXRJbmZvAQULcG10QXNzZXRJZEIEDnBtdFN0ckFzc2V0SWRCCAUNJHQwMjAyNjgyMDM0NQJfMQQNcG10QXNzZXROYW1lQggFDSR0MDIwMjY4MjAzNDUCXzIEDHBtdERlY2ltYWxzQggFDSR0MDIwMjY4MjAzNDUCXzMEB2luaXRpYWwJAAACCQBkAgUIYmFsYW5jZUEFCGJhbGFuY2VCAAAEDSR0MDIwNDIwMjEyNjMDBQdpbml0aWFsCQCXCgUJAJEDAgUIcEFtb3VudHMAAAkAkQMCBQhwQW1vdW50cwABAAAFC3BtdEFzc2V0SWRBAAEEE3JhdGlvU2hhcmVUb2tlbnNJbkEJAGsDBQZzY2FsZTgJAJEDAgUIcEFtb3VudHMAAAUIYmFsYW5jZUEEE3JhdGlvU2hhcmVUb2tlbnNJbkIJAGsDBQZzY2FsZTgJAJEDAgUIcEFtb3VudHMAAQUIYmFsYW5jZUIDCQBmAgUTcmF0aW9TaGFyZVRva2Vuc0luQgUTcmF0aW9TaGFyZVRva2Vuc0luQQQDcG10CQBrAwkAkQMCBQhwQW1vdW50cwAABQhiYWxhbmNlQgUIYmFsYW5jZUEJAJcKBQkAkQMCBQhwQW1vdW50cwAABQNwbXQJAGUCCQCRAwIFCHBBbW91bnRzAAEFA3BtdAULcG10QXNzZXRJZEIFE3JhdGlvU2hhcmVUb2tlbnNJbkEEA3BtdAkAawMJAJEDAgUIcEFtb3VudHMAAQUIYmFsYW5jZUEFCGJhbGFuY2VCCQCXCgUFA3BtdAkAkQMCBQhwQW1vdW50cwABCQBlAgkAkQMCBQhwQW1vdW50cwAABQNwbXQFC3BtdEFzc2V0SWRBBRNyYXRpb1NoYXJlVG9rZW5zSW5CBApwbXRBbW91bnRBCAUNJHQwMjA0MjAyMTI2MwJfMQQKcG10QW1vdW50QggFDSR0MDIwNDIwMjEyNjMCXzIEBmNoYW5nZQgFDSR0MDIwNDIwMjEyNjMCXzMEDWNoYW5nZUFzc2V0SWQIBQ0kdDAyMDQyMDIxMjYzAl80BA9zaGFyZVRva2VuUmF0aW8IBQ0kdDAyMDQyMDIxMjYzAl81BBVzaGFyZVRva2VuVG9QYXlBbW91bnQDBQdpbml0aWFsBA1zaGFyZURlY2ltYWxzCQBpAgkAZAIFDHBtdERlY2ltYWxzQQUMcG10RGVjaW1hbHNCAAIJAGsDCQBsBgUKcG10QW1vdW50QQUMcG10RGVjaW1hbHNBAAUAAQUMcG10RGVjaW1hbHNBBQRET1dOCQBsBgUKcG10QW1vdW50QgUMcG10RGVjaW1hbHNCAAUAAQUMcG10RGVjaW1hbHNCBQRET1dOCQBsBgAKAAAFDXNoYXJlRGVjaW1hbHMAAAAABQRET1dOCQBrAwUPc2hhcmVUb2tlblJhdGlvBRBzaGFyZUFzc2V0U3VwcGx5BQZzY2FsZTgDCQAAAgUVc2hhcmVUb2tlblRvUGF5QW1vdW50AAAJAAIBAh1Ub28gc21hbGwgYW1vdW50IHRvIHJlcGxlbmlzaAMJAGYCAAAFBmNoYW5nZQkAAgECCkNoYW5nZSA8IDAEBnN0YWtlMQMJAQhjb250YWlucwIFDXN0YWtpbmdBc3NldHMFDnBtdFN0ckFzc2V0SWRBCQD8BwQIBQFpBmNhbGxlcgIMc3Rha2VVbnN0YWtlCQDMCAIGCQDMCAIFCnBtdEFtb3VudEEJAMwIAgUOcG10U3RyQXNzZXRJZEEFA25pbAUDbmlsAAADCQAAAgUGc3Rha2UxBQZzdGFrZTEEBnN0YWtlMgMJAQhjb250YWlucwIFDXN0YWtpbmdBc3NldHMFDnBtdFN0ckFzc2V0SWRCCQD8BwQIBQFpBmNhbGxlcgIMc3Rha2VVbnN0YWtlCQDMCAIGCQDMCAIFCnBtdEFtb3VudEIJAMwIAgUOcG10U3RyQXNzZXRJZEIFA25pbAUDbmlsAAADCQAAAgUGc3Rha2UyBQZzdGFrZTIEDHNoYXJlVG9rZW5TVAMFDHN0YWtlRmFybWluZwQKc3RQYXltZW50cwkAzggCCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQxzaGFyZUFzc2V0SWQFFXNoYXJlVG9rZW5Ub1BheUFtb3VudAUDbmlsAwkAAAIJAJADAQUIcEFtb3VudHMAAwkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgMJAAACCQCRAwIFCXBBc3NldElkcwACAQAFBHVuaXQJAJEDAgUJcEFzc2V0SWRzAAIJAJEDAgUIcEFtb3VudHMAAgUDbmlsBQNuaWwEB3JlaXNzdWUJAPwHBAgFAWkGY2FsbGVyAhFyZWlzc3VlU2hhcmVUb2tlbgkAzAgCBRVzaGFyZVRva2VuVG9QYXlBbW91bnQFA25pbAUDbmlsAwkAAAIFB3JlaXNzdWUFB3JlaXNzdWUEBnN0YWtlMwkA/AcEBQ5mYXJtaW5nQWRkcmVzcwIXbG9ja1NoYXJlVG9rZW5zRnJvbVBvb2wJAMwIAgULY2FsbGVyQnl0ZXMJAMwIAgkApQgBCAUBaQZjYWxsZXIJAMwIAgUIbG9ja1R5cGUFA25pbAUKc3RQYXltZW50cwMJAAACBQZzdGFrZTMFBnN0YWtlMwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQdSZWlzc3VlAwUMc2hhcmVBc3NldElkBRVzaGFyZVRva2VuVG9QYXlBbW91bnQGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUVc2hhcmVUb2tlblRvUGF5QW1vdW50BQxzaGFyZUFzc2V0SWQFA25pbAkAlAoCBQNuaWwJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrQmFsYW5jZUEJAGQCBQhiYWxhbmNlQQUKcG10QW1vdW50QQkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa0JhbGFuY2VCCQBkAgUIYmFsYW5jZUIFCnBtdEFtb3VudEIJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtTaGFyZUFzc2V0U3VwcGx5CQBkAgUQc2hhcmVBc3NldFN1cHBseQUVc2hhcmVUb2tlblRvUGF5QW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUGY2hhbmdlBQ1jaGFuZ2VBc3NldElkBQNuaWwFDHNoYXJlVG9rZW5TVAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFXJlcGxlbmlzaFdpdGhPbmVUb2tlbgQLY2FsbGVyQnl0ZXMEYXJncwhwQW1vdW50cwlwQXNzZXRJZHMJAQt2YWx1ZU9yRWxzZQIJAQxpc09yYWNsZVBvb2wBCQClCAEIBQFpBmNhbGxlcgkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAQGY2FsbGVyCQEHQWRkcmVzcwEFC2NhbGxlckJ5dGVzBApwbXRBc3NldElkCQERcGFyc2VQYXltZW50QXNzZXQBCQCRAwIFCXBBc3NldElkcwAABAlwbXRBbW91bnQJAJEDAgUIcEFtb3VudHMAAAQQdmlydEdldE1pbkFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGFyZ3MAAAQMc3Rha2VGYXJtaW5nCQAAAgkAkQMCBQRhcmdzAAECBHRydWUECGxvY2tUeXBlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEYXJncwACBA0kdDAyNDE2ODI0MjU4CQENZ2V0UG9vbEFzc2V0cwEIBQFpBmNhbGxlcgQLc3RyQXNzZXRJZEEIBQ0kdDAyNDE2ODI0MjU4Al8xBAtzdHJBc3NldElkQggFDSR0MDI0MTY4MjQyNTgCXzIECGFzc2V0SWRBCAUNJHQwMjQxNjgyNDI1OAJfMwQIYXNzZXRJZEIIBQ0kdDAyNDE2ODI0MjU4Al80BAxzaGFyZUFzc2V0SWQIBQ0kdDAyNDE2ODI0MjU4Al81BA0kdDAyNDI3MTI0Mzk1CQEPZ2V0UG9vbEJhbGFuY2VzAwgFAWkGY2FsbGVyBQhhc3NldElkQQUIYXNzZXRJZEIECGJhbGFuY2VBCAUNJHQwMjQyNzEyNDM5NQJfMQQIYmFsYW5jZUIIBQ0kdDAyNDI3MTI0Mzk1Al8yBA9hY2NvdW50QmFsYW5jZUEIBQ0kdDAyNDI3MTI0Mzk1Al8zBA9hY2NvdW50QmFsYW5jZUIIBQ0kdDAyNDI3MTI0Mzk1Al80BBBzaGFyZUFzc2V0U3VwcGx5CAUNJHQwMjQyNzEyNDM5NQJfNQQHaW5pdGlhbAkAAAIJAGQCBQhiYWxhbmNlQQUIYmFsYW5jZUIAAAMJAQIhPQIJAJADAQUEYXJncwADCQACAQIPV3JvbmcgYXJncyBzaXplAwMJAQIhPQIJAJADAQUIcEFtb3VudHMAAQkBAiE9AgkAkAMBBQhwQW1vdW50cwACBwkAAgECI1R3byBvciBvbmUgYXR0YWNoZWQgYXNzZXRzIGV4cGVjdGVkAwMJAQIhPQIFCnBtdEFzc2V0SWQFCGFzc2V0SWRBCQECIT0CBQpwbXRBc3NldElkBQhhc3NldElkQgcJAAIBCQCsAgIJAKwCAgkArAICAiRJbmNvcnJlY3QgYXNzZXQgYXR0YWNoZWQuIEV4cGVjdGVkOiAFC3N0ckFzc2V0SWRBAgQgb3IgBQtzdHJBc3NldElkQgMFB2luaXRpYWwJAAIBAjBGb3IgaW5pdGlhbCBleGNoYW5nZXIgeW91IG5lZWQgdG8gdXNlIHR3byB0b2tlbnMDAwkAZgIFCGJhbGFuY2VBBQ9hY2NvdW50QmFsYW5jZUEGCQBmAgUIYmFsYW5jZUIFD2FjY291bnRCYWxhbmNlQgkAlAoCBQNuaWwJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFCXBtdEFtb3VudAUKcG10QXNzZXRJZAUDbmlsAwkAAAIJAJADAQUIcEFtb3VudHMAAgkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgMJAAACCQCRAwIFCXBBc3NldElkcwACAQAFBHVuaXQJAJEDAgUJcEFzc2V0SWRzAAIJAJEDAgUIcEFtb3VudHMAAgUDbmlsCQDOCAIFA25pbAkBEXN1c3BlbmRTdXNwaWNpb3VzBgUPYWNjb3VudEJhbGFuY2VBBQ9hY2NvdW50QmFsYW5jZUIFCGJhbGFuY2VBBQhiYWxhbmNlQgULc3RyQXNzZXRJZEEFC3N0ckFzc2V0SWRCBA0kdDAyNTQ1MTI1NTA5CQEMZ2V0RmVlUGFyYW1zAggFAWkGY2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIEA2ZlZQgFDSR0MDI1NDUxMjU1MDkCXzEEBmdvdkZlZQgFDSR0MDI1NDUxMjU1MDkCXzIEDSR0MDI1NTI2Mjc3MzIDCQAAAgUKcG10QXNzZXRJZAUIYXNzZXRJZEEEDXZpcnRQYXlBbW91bnQJARBjYWxjdWxhdGVWaXJ0UGF5AwUJcG10QW1vdW50BQhiYWxhbmNlQQUDZmVlBA0kdDAyNTgwNTI1OTQyCQENY2FsY3VsYXRlRmVlcwYFDXZpcnRQYXlBbW91bnQFEHZpcnRHZXRNaW5BbW91bnQFCGJhbGFuY2VBBQhiYWxhbmNlQgUDZmVlBQZnb3ZGZWUEEGFtb3VudFdpdGhvdXRGZWUIBQ0kdDAyNTgwNTI1OTQyAl8xBA1hbW91bnRXaXRoRmVlCAUNJHQwMjU4MDUyNTk0MgJfMgQQZ292ZXJuYW5jZVJld2FyZAgFDSR0MDI1ODA1MjU5NDICXzMEDGJhbGFuY2VBVmlydAkAZAIFCGJhbGFuY2VBBQ12aXJ0UGF5QW1vdW50BAxiYWxhbmNlQlZpcnQJAGUCCQBkAgUIYmFsYW5jZUIFEGFtb3VudFdpdGhvdXRGZWUFEGdvdmVybmFuY2VSZXdhcmQEC25ld0JhbGFuY2VBCQBkAgUIYmFsYW5jZUEFCXBtdEFtb3VudAQLbmV3QmFsYW5jZUIJAGUCBQhiYWxhbmNlQgUQZ292ZXJuYW5jZVJld2FyZAQTcmF0aW9TaGFyZVRva2Vuc0luQQkAawMJAGUCBQlwbXRBbW91bnQFDXZpcnRQYXlBbW91bnQFBnNjYWxlOAUMYmFsYW5jZUFWaXJ0BBNyYXRpb1NoYXJlVG9rZW5zSW5CCQBrAwUNYW1vdW50V2l0aEZlZQUGc2NhbGU4BQxiYWxhbmNlQlZpcnQEFXNoYXJlVG9rZW5Ub1BheUFtb3VudAkAawMJAJcDAQkAzAgCBRNyYXRpb1NoYXJlVG9rZW5zSW5BCQDMCAIFE3JhdGlvU2hhcmVUb2tlbnNJbkIFA25pbAUQc2hhcmVBc3NldFN1cHBseQUGc2NhbGU4CQCZCgcFC25ld0JhbGFuY2VBBQtuZXdCYWxhbmNlQgUVc2hhcmVUb2tlblRvUGF5QW1vdW50BRBnb3Zlcm5hbmNlUmV3YXJkBQhhc3NldElkQgULc3RyQXNzZXRJZEIFC3N0ckFzc2V0SWRBBA12aXJ0UGF5QW1vdW50CQEQY2FsY3VsYXRlVmlydFBheQMFCXBtdEFtb3VudAUIYmFsYW5jZUIFA2ZlZQQNJHQwMjY4MzcyNjk3NAkBDWNhbGN1bGF0ZUZlZXMGBQ12aXJ0UGF5QW1vdW50BRB2aXJ0R2V0TWluQW1vdW50BQhiYWxhbmNlQgUIYmFsYW5jZUEFA2ZlZQUGZ292RmVlBBBhbW91bnRXaXRob3V0RmVlCAUNJHQwMjY4MzcyNjk3NAJfMQQNYW1vdW50V2l0aEZlZQgFDSR0MDI2ODM3MjY5NzQCXzIEEGdvdmVybmFuY2VSZXdhcmQIBQ0kdDAyNjgzNzI2OTc0Al8zBAxiYWxhbmNlQVZpcnQJAGUCCQBkAgUIYmFsYW5jZUEFEGFtb3VudFdpdGhvdXRGZWUFEGdvdmVybmFuY2VSZXdhcmQEDGJhbGFuY2VCVmlydAkAZAIFCGJhbGFuY2VCBQ12aXJ0UGF5QW1vdW50BAtuZXdCYWxhbmNlQQkAZQIFCGJhbGFuY2VBBRBnb3Zlcm5hbmNlUmV3YXJkBAtuZXdCYWxhbmNlQgkAZAIFCGJhbGFuY2VCBQlwbXRBbW91bnQEE3JhdGlvU2hhcmVUb2tlbnNJbkEJAGsDBQ1hbW91bnRXaXRoRmVlBQZzY2FsZTgFDGJhbGFuY2VBVmlydAQTcmF0aW9TaGFyZVRva2Vuc0luQgkAawMJAGUCBQlwbXRBbW91bnQFDXZpcnRQYXlBbW91bnQFBnNjYWxlOAUMYmFsYW5jZUJWaXJ0BBVzaGFyZVRva2VuVG9QYXlBbW91bnQJAGsDCQCXAwEJAMwIAgUTcmF0aW9TaGFyZVRva2Vuc0luQQkAzAgCBRNyYXRpb1NoYXJlVG9rZW5zSW5CBQNuaWwFEHNoYXJlQXNzZXRTdXBwbHkFBnNjYWxlOAkAmQoHBQtuZXdCYWxhbmNlQQULbmV3QmFsYW5jZUIFFXNoYXJlVG9rZW5Ub1BheUFtb3VudAUQZ292ZXJuYW5jZVJld2FyZAUIYXNzZXRJZEEFC3N0ckFzc2V0SWRBBQtzdHJBc3NldElkQgQLbmV3QmFsYW5jZUEIBQ0kdDAyNTUyNjI3NzMyAl8xBAtuZXdCYWxhbmNlQggFDSR0MDI1NTI2Mjc3MzICXzIEFXNoYXJlVG9rZW5Ub1BheUFtb3VudAgFDSR0MDI1NTI2Mjc3MzICXzMECWdvdlJld2FyZAgFDSR0MDI1NTI2Mjc3MzICXzQEDmdvdlJld2FyZEFzc2V0CAUNJHQwMjU1MjYyNzczMgJfNQQRZ292UmV3YXJkQXNzZXRTdHIIBQ0kdDAyNTUyNjI3NzMyAl82BA1wbXRBc3NldElkU3RyCAUNJHQwMjU1MjYyNzczMgJfNwMJAAACBRVzaGFyZVRva2VuVG9QYXlBbW91bnQAAAkAAgECHVRvbyBzbWFsbCBhbW91bnQgdG8gcmVwbGVuaXNoBAZzdGFrZTEDCQEIY29udGFpbnMCBQ1zdGFraW5nQXNzZXRzBQ1wbXRBc3NldElkU3RyCQD8BwQIBQFpBmNhbGxlcgIMc3Rha2VVbnN0YWtlCQDMCAIGCQDMCAIFCXBtdEFtb3VudAkAzAgCBQ1wbXRBc3NldElkU3RyBQNuaWwFA25pbAAAAwkAAAIFBnN0YWtlMQUGc3Rha2UxBAZzdGFrZTIDCQEIY29udGFpbnMCBQ1zdGFraW5nQXNzZXRzBRFnb3ZSZXdhcmRBc3NldFN0cgkA/AcECAUBaQZjYWxsZXICDHN0YWtlVW5zdGFrZQkAzAgCBwkAzAgCBQlnb3ZSZXdhcmQJAMwIAgURZ292UmV3YXJkQXNzZXRTdHIFA25pbAUDbmlsAAADCQAAAgUGc3Rha2UyBQZzdGFrZTIEDHNoYXJlVG9rZW5TVAMFDHN0YWtlRmFybWluZwQKc3RQYXltZW50cwkAzggCCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQxzaGFyZUFzc2V0SWQFFXNoYXJlVG9rZW5Ub1BheUFtb3VudAUDbmlsAwkAAAIJAJADAQUIcEFtb3VudHMAAgkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgMJAAACCQCRAwIFCXBBc3NldElkcwABAQAFBHVuaXQJAJEDAgUJcEFzc2V0SWRzAAEJAJEDAgUIcEFtb3VudHMAAQUDbmlsBQNuaWwEB3JlaXNzdWUJAPwHBAgFAWkGY2FsbGVyAhFyZWlzc3VlU2hhcmVUb2tlbgkAzAgCBRVzaGFyZVRva2VuVG9QYXlBbW91bnQFA25pbAUDbmlsAwkAAAIFB3JlaXNzdWUFB3JlaXNzdWUEBnN0YWtlMwkA/AcEBQ5mYXJtaW5nQWRkcmVzcwIXbG9ja1NoYXJlVG9rZW5zRnJvbVBvb2wJAMwIAgULY2FsbGVyQnl0ZXMJAMwIAgkApQgBCAUBaQZjYWxsZXIJAMwIAgUIbG9ja1R5cGUFA25pbAUKc3RQYXltZW50cwMJAAACBQZzdGFrZTMFBnN0YWtlMwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQdSZWlzc3VlAwUMc2hhcmVBc3NldElkBRVzaGFyZVRva2VuVG9QYXlBbW91bnQGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUVc2hhcmVUb2tlblRvUGF5QW1vdW50BQxzaGFyZUFzc2V0SWQFA25pbAkAlAoCBQNuaWwJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrQmFsYW5jZUEFC25ld0JhbGFuY2VBCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrQmFsYW5jZUIFC25ld0JhbGFuY2VCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrU2hhcmVBc3NldFN1cHBseQkAZAIFEHNoYXJlQXNzZXRTdXBwbHkFFXNoYXJlVG9rZW5Ub1BheUFtb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ9tb25leUJveEFkZHJlc3MFCWdvdlJld2FyZAUOZ292UmV3YXJkQXNzZXQFA25pbAUMc2hhcmVUb2tlblNUBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEId2l0aGRyYXcEC2NhbGxlckJ5dGVzBGFyZ3MIcEFtb3VudHMJcEFzc2V0SWRzCQELdmFsdWVPckVsc2UCCQEMaXNPcmFjbGVQb29sAQkApQgBCAUBaQZjYWxsZXIJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAEBHRpbWUIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAZjYWxsZXIJAQdBZGRyZXNzAQULY2FsbGVyQnl0ZXMEDSR0MDI5ODg2Mjk5NzYJAQ1nZXRQb29sQXNzZXRzAQgFAWkGY2FsbGVyBAtzdHJBc3NldElkQQgFDSR0MDI5ODg2Mjk5NzYCXzEEC3N0ckFzc2V0SWRCCAUNJHQwMjk4ODYyOTk3NgJfMgQIYXNzZXRJZEEIBQ0kdDAyOTg4NjI5OTc2Al8zBAhhc3NldElkQggFDSR0MDI5ODg2Mjk5NzYCXzQEDHNoYXJlQXNzZXRJZAgFDSR0MDI5ODg2Mjk5NzYCXzUEDSR0MDI5OTg5MzAxMTMJAQ9nZXRQb29sQmFsYW5jZXMDCAUBaQZjYWxsZXIFCGFzc2V0SWRBBQhhc3NldElkQgQIYmFsYW5jZUEIBQ0kdDAyOTk4OTMwMTEzAl8xBAhiYWxhbmNlQggFDSR0MDI5OTg5MzAxMTMCXzIED2FjY291bnRCYWxhbmNlQQgFDSR0MDI5OTg5MzAxMTMCXzMED2FjY291bnRCYWxhbmNlQggFDSR0MDI5OTg5MzAxMTMCXzQEEHNoYXJlQXNzZXRTdXBwbHkIBQ0kdDAyOTk4OTMwMTEzAl81BA0kdDAzMDEyNjMwNTM0AwkAAAIJAJADAQUIcEFtb3VudHMAAQQGcEFzc2V0CQERcGFyc2VQYXltZW50QXNzZXQBCQCRAwIFCXBBc3NldElkcwAAAwkBAiE9AgUGcEFzc2V0BQxzaGFyZUFzc2V0SWQJAAIBCQCsAgICJEluY29ycmVjdCBhc3NldCBhdHRhY2hlZC4gRXhwZWN0ZWQ6IAkA2AQBBQxzaGFyZUFzc2V0SWQJAJQKAgkAkQMCBQhwQW1vdW50cwAABQZwQXNzZXQJAJQKAgAABQxzaGFyZUFzc2V0SWQECXBtdEFtb3VudAgFDSR0MDMwMTI2MzA1MzQCXzEECnBtdEFzc2V0SWQIBQ0kdDAzMDEyNjMwNTM0Al8yAwkBAiE9AgkAkAMBBQRhcmdzAAEJAAIBAg9Xcm9uZyBhcmdzIHNpemUDCQBmAgkAkAMBBQhwQW1vdW50cwABCQACAQIdT25lIGF0dGFjaGVkIHBheW1lbnQgZXhwZWN0ZWQDAwkAZgIFCGJhbGFuY2VBBQ9hY2NvdW50QmFsYW5jZUEGCQBmAgUIYmFsYW5jZUIFD2FjY291bnRCYWxhbmNlQgkAlAoCBQNuaWwJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFCXBtdEFtb3VudAUKcG10QXNzZXRJZAUDbmlsCQERc3VzcGVuZFN1c3BpY2lvdXMGBQ9hY2NvdW50QmFsYW5jZUEFD2FjY291bnRCYWxhbmNlQgUIYmFsYW5jZUEFCGJhbGFuY2VCBQtzdHJBc3NldElkQQULc3RyQXNzZXRJZEIEDHVubG9ja0Ftb3VudAkBDXBhcnNlSW50VmFsdWUBCQELdmFsdWVPckVsc2UCCQCRAwIFBGFyZ3MAAAIBMAQGdW5sb2NrAwkAZgIFDHVubG9ja0Ftb3VudAAACQD8BwQFDmZhcm1pbmdBZGRyZXNzAht3aXRoZHJhd1NoYXJlVG9rZW5zRnJvbVBvb2wJAMwIAgULY2FsbGVyQnl0ZXMJAMwIAgkApQgBCAUBaQZjYWxsZXIJAMwIAgUMdW5sb2NrQW1vdW50BQNuaWwFA25pbAAAAwkAAAIFBnVubG9jawUGdW5sb2NrBA53aXRoZHJhd0Ftb3VudAkAZAIFCXBtdEFtb3VudAUMdW5sb2NrQW1vdW50BAxhbW91bnRUb1BheUEJAGsDBQ53aXRoZHJhd0Ftb3VudAUIYmFsYW5jZUEFEHNoYXJlQXNzZXRTdXBwbHkEDGFtb3VudFRvUGF5QgkAawMFDndpdGhkcmF3QW1vdW50BQhiYWxhbmNlQgUQc2hhcmVBc3NldFN1cHBseQQGc3Rha2UxAwkBCGNvbnRhaW5zAgUNc3Rha2luZ0Fzc2V0cwULc3RyQXNzZXRJZEEJAPwHBAgFAWkGY2FsbGVyAgxzdGFrZVVuc3Rha2UJAMwIAgcJAMwIAgUMYW1vdW50VG9QYXlBCQDMCAIFC3N0ckFzc2V0SWRBBQNuaWwFA25pbAAAAwkAAAIFBnN0YWtlMQUGc3Rha2UxBAZzdGFrZTIDCQEIY29udGFpbnMCBQ1zdGFraW5nQXNzZXRzBQtzdHJBc3NldElkQgkA/AcECAUBaQZjYWxsZXICDHN0YWtlVW5zdGFrZQkAzAgCBwkAzAgCBQxhbW91bnRUb1BheUIJAMwIAgULc3RyQXNzZXRJZEIFA25pbAUDbmlsAAADCQAAAgUGc3Rha2UyBQZzdGFrZTIJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFDHVubG9ja0Ftb3VudAUMc2hhcmVBc3NldElkBQNuaWwJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa0JhbGFuY2VBCQBlAgUIYmFsYW5jZUEFDGFtb3VudFRvUGF5QQkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa0JhbGFuY2VCCQBlAgUIYmFsYW5jZUIFDGFtb3VudFRvUGF5QgkAzAgCCQEMSW50ZWdlckVudHJ5AgURa1NoYXJlQXNzZXRTdXBwbHkJAGUCBRBzaGFyZUFzc2V0U3VwcGx5BQ53aXRoZHJhd0Ftb3VudAkAzAgCCQEEQnVybgIFDHNoYXJlQXNzZXRJZAUOd2l0aGRyYXdBbW91bnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyBQxhbW91bnRUb1BheUEFCGFzc2V0SWRBCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUMYW1vdW50VG9QYXlCBQhhc3NldElkQgUDbmlsBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEQd2l0aGRyYXdPbmVUb2tlbgQLY2FsbGVyQnl0ZXMEYXJncwhwQW1vdW50cwlwQXNzZXRJZHMJAQt2YWx1ZU9yRWxzZQIJAQxpc09yYWNsZVBvb2wBCQClCAEIBQFpBmNhbGxlcgkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAQGY2FsbGVyCQEHQWRkcmVzcwEFC2NhbGxlckJ5dGVzBA13aXRoZHJhd0Fzc2V0AwkAAAIJAJEDAgUEYXJncwAAAgAFBHVuaXQJANkEAQkAkQMCBQRhcmdzAAAEDSR0MDMyODQ1MzI5MzUJAQ1nZXRQb29sQXNzZXRzAQgFAWkGY2FsbGVyBAtzdHJBc3NldElkQQgFDSR0MDMyODQ1MzI5MzUCXzEEC3N0ckFzc2V0SWRCCAUNJHQwMzI4NDUzMjkzNQJfMgQIYXNzZXRJZEEIBQ0kdDAzMjg0NTMyOTM1Al8zBAhhc3NldElkQggFDSR0MDMyODQ1MzI5MzUCXzQEDHNoYXJlQXNzZXRJZAgFDSR0MDMyODQ1MzI5MzUCXzUEDSR0MDMyOTQ4MzMwNzIJAQ9nZXRQb29sQmFsYW5jZXMDCAUBaQZjYWxsZXIFCGFzc2V0SWRBBQhhc3NldElkQgQIYmFsYW5jZUEIBQ0kdDAzMjk0ODMzMDcyAl8xBAhiYWxhbmNlQggFDSR0MDMyOTQ4MzMwNzICXzIED2FjY291bnRCYWxhbmNlQQgFDSR0MDMyOTQ4MzMwNzICXzMED2FjY291bnRCYWxhbmNlQggFDSR0MDMyOTQ4MzMwNzICXzQEEHNoYXJlQXNzZXRTdXBwbHkIBQ0kdDAzMjk0ODMzMDcyAl81BA0kdDAzMzA4NTMzNDY1AwkAAAIJAJADAQUIcEFtb3VudHMAAQQGcEFzc2V0CQERcGFyc2VQYXltZW50QXNzZXQBCQCRAwIFCXBBc3NldElkcwAAAwkBAiE9AgUGcEFzc2V0BQxzaGFyZUFzc2V0SWQJAAIBCQCsAgICJEluY29ycmVjdCBhc3NldCBhdHRhY2hlZC4gRXhwZWN0ZWQ6IAkA2AQBBQxzaGFyZUFzc2V0SWQJAJQKAgkAkQMCBQhwQW1vdW50cwAABQZwQXNzZXQJAJQKAgAABQxzaGFyZUFzc2V0SWQECXBtdEFtb3VudAgFDSR0MDMzMDg1MzM0NjUCXzEECnBtdEFzc2V0SWQIBQ0kdDAzMzA4NTMzNDY1Al8yBA92aXJ0TWluVG9SZWNpdmUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRhcmdzAAEDCQECIT0CCQCQAwEFBGFyZ3MAAwkAAgECD1dyb25nIGFyZ3Mgc2l6ZQMJAGYCCQCQAwEFCHBBbW91bnRzAAEJAAIBAh1PbmUgYXR0YWNoZWQgcGF5bWVudCBleHBlY3RlZAMJAQIhPQIFCnBtdEFzc2V0SWQFDHNoYXJlQXNzZXRJZAkAAgEJAKwCAgIkSW5jb3JyZWN0IGFzc2V0IGF0dGFjaGVkLiBFeHBlY3RlZDogCQDYBAEFDHNoYXJlQXNzZXRJZAMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUIYXNzZXRJZEEJAMwIAgUIYXNzZXRJZEIFA25pbAUNd2l0aGRyYXdBc3NldAkAAgECGUluY29ycmVjdCB3aXRoZHJhdyBhc3NldC4DAwkAZgIFCGJhbGFuY2VBBQ9hY2NvdW50QmFsYW5jZUEGCQBmAgUIYmFsYW5jZUIFD2FjY291bnRCYWxhbmNlQgkAlAoCBQNuaWwJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFCXBtdEFtb3VudAUKcG10QXNzZXRJZAUDbmlsCQERc3VzcGVuZFN1c3BpY2lvdXMGBQ9hY2NvdW50QmFsYW5jZUEFD2FjY291bnRCYWxhbmNlQgUIYmFsYW5jZUEFCGJhbGFuY2VCBQtzdHJBc3NldElkQQULc3RyQXNzZXRJZEIEDHVubG9ja0Ftb3VudAkBDXBhcnNlSW50VmFsdWUBCQELdmFsdWVPckVsc2UCCQCRAwIFBGFyZ3MAAgIBMAQGdW5sb2NrAwkAZgIFDHVubG9ja0Ftb3VudAAACQD8BwQFDmZhcm1pbmdBZGRyZXNzAht3aXRoZHJhd1NoYXJlVG9rZW5zRnJvbVBvb2wJAMwIAgULY2FsbGVyQnl0ZXMJAMwIAgkApQgBCAUBaQZjYWxsZXIJAMwIAgUMdW5sb2NrQW1vdW50BQNuaWwFA25pbAAAAwkAAAIFBnVubG9jawUGdW5sb2NrBA53aXRoZHJhd0Ftb3VudAkAZAIFCXBtdEFtb3VudAUMdW5sb2NrQW1vdW50BAxhbW91bnRUb1BheUEJAGsDBQ53aXRoZHJhd0Ftb3VudAUIYmFsYW5jZUEFEHNoYXJlQXNzZXRTdXBwbHkEDGFtb3VudFRvUGF5QgkAawMFDndpdGhkcmF3QW1vdW50BQhiYWxhbmNlQgUQc2hhcmVBc3NldFN1cHBseQQNJHQwMzQ4MTMzNDg3MQkBDGdldEZlZVBhcmFtcwIIBQFpBmNhbGxlcggFAWkMb3JpZ2luQ2FsbGVyBANmZWUIBQ0kdDAzNDgxMzM0ODcxAl8xBAZnb3ZGZWUIBQ0kdDAzNDgxMzM0ODcxAl8yBA0kdDAzNDg4ODM1Mjg4AwkAAAIFDXdpdGhkcmF3QXNzZXQFCGFzc2V0SWRBCQENY2FsY3VsYXRlRmVlcwYFDGFtb3VudFRvUGF5QgUPdmlydE1pblRvUmVjaXZlCQBlAgUIYmFsYW5jZUIFDGFtb3VudFRvUGF5QgkAZQIFCGJhbGFuY2VBBQxhbW91bnRUb1BheUEFA2ZlZQUGZ292RmVlCQENY2FsY3VsYXRlRmVlcwYFDGFtb3VudFRvUGF5QQUPdmlydE1pblRvUmVjaXZlCQBlAgUIYmFsYW5jZUEFDGFtb3VudFRvUGF5QQkAZQIFCGJhbGFuY2VCBQxhbW91bnRUb1BheUIFA2ZlZQUGZ292RmVlBBBhbW91bnRXaXRob3V0RmVlCAUNJHQwMzQ4ODgzNTI4OAJfMQQNYW1vdW50V2l0aEZlZQgFDSR0MDM0ODg4MzUyODgCXzIEEGdvdmVybmFuY2VSZXdhcmQIBQ0kdDAzNDg4ODM1Mjg4Al8zBA0kdDAzNTMwNTM2NjUxAwkAAAIFDXdpdGhkcmF3QXNzZXQFCGFzc2V0SWRBBAd1bnN0YWtlAwkBCGNvbnRhaW5zAgUNc3Rha2luZ0Fzc2V0cwULc3RyQXNzZXRJZEEJAPwHBAgFAWkGY2FsbGVyAgxzdGFrZVVuc3Rha2UJAMwIAgcJAMwIAgkAZAIJAGQCBQxhbW91bnRUb1BheUEFDWFtb3VudFdpdGhGZWUFEGdvdmVybmFuY2VSZXdhcmQJAMwIAgULc3RyQXNzZXRJZEEFA25pbAUDbmlsAAADCQAAAgUHdW5zdGFrZQUHdW5zdGFrZQkAlgoECQBlAgkAZQIJAGUCBQhiYWxhbmNlQQUMYW1vdW50VG9QYXlBBQ1hbW91bnRXaXRoRmVlBRBnb3Zlcm5hbmNlUmV3YXJkBQhiYWxhbmNlQgUIYXNzZXRJZEEJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyCQBkAgUMYW1vdW50VG9QYXlBBQ1hbW91bnRXaXRoRmVlBQhhc3NldElkQQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAd1bnN0YWtlAwkBCGNvbnRhaW5zAgUNc3Rha2luZ0Fzc2V0cwULc3RyQXNzZXRJZEIJAPwHBAgFAWkGY2FsbGVyAgxzdGFrZVVuc3Rha2UJAMwIAgcJAMwIAgkAZAIJAGQCBQxhbW91bnRUb1BheUIFDWFtb3VudFdpdGhGZWUFEGdvdmVybmFuY2VSZXdhcmQJAMwIAgULc3RyQXNzZXRJZEIFA25pbAUDbmlsAAADCQAAAgUHdW5zdGFrZQUHdW5zdGFrZQkAlgoEBQhiYWxhbmNlQQkAZQIJAGUCCQBlAgUIYmFsYW5jZUIFDGFtb3VudFRvUGF5QgUNYW1vdW50V2l0aEZlZQUQZ292ZXJuYW5jZVJld2FyZAUIYXNzZXRJZEIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyCQBkAgUMYW1vdW50VG9QYXlCBQ1hbW91bnRXaXRoRmVlBQhhc3NldElkQgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAtuZXdCYWxhbmNlQQgFDSR0MDM1MzA1MzY2NTECXzEEC25ld0JhbGFuY2VCCAUNJHQwMzUzMDUzNjY1MQJfMgQQZ292UmV3YXJkQXNzZXRJZAgFDSR0MDM1MzA1MzY2NTECXzMEDHVzZXJUcmFuc2ZlcggFDSR0MDM1MzA1MzY2NTECXzQJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFDHVubG9ja0Ftb3VudAUMc2hhcmVBc3NldElkBQNuaWwJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrQmFsYW5jZUEFC25ld0JhbGFuY2VBCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrQmFsYW5jZUIFC25ld0JhbGFuY2VCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrU2hhcmVBc3NldFN1cHBseQkAZQIFEHNoYXJlQXNzZXRTdXBwbHkFDndpdGhkcmF3QW1vdW50CQDMCAIJAQRCdXJuAgUMc2hhcmVBc3NldElkBQ53aXRoZHJhd0Ftb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ9tb25leUJveEFkZHJlc3MFEGdvdmVybmFuY2VSZXdhcmQFEGdvdlJld2FyZEFzc2V0SWQFA25pbAUMdXNlclRyYW5zZmVyBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEZdGFrZUludG9BY2NvdW50RXh0cmFGdW5kcwQLY2FsbGVyQnl0ZXMEYXJncwhwQW1vdW50cwlwQXNzZXRJZHMJAQt2YWx1ZU9yRWxzZQIJAQxpc09yYWNsZVBvb2wBCQClCAEIBQFpBmNhbGxlcgkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAQNJHQwMzczNzYzNzQ1MgkBDWdldFBvb2xBc3NldHMBCAUBaQZjYWxsZXIEC3N0ckFzc2V0SWRBCAUNJHQwMzczNzYzNzQ1MgJfMQQLc3RyQXNzZXRJZEIIBQ0kdDAzNzM3NjM3NDUyAl8yBAhhc3NldElkQQgFDSR0MDM3Mzc2Mzc0NTICXzMECGFzc2V0SWRCCAUNJHQwMzczNzYzNzQ1MgJfNAQNJHQwMzc0NjUzNzU3MQkBD2dldFBvb2xCYWxhbmNlcwMIBQFpBmNhbGxlcgUIYXNzZXRJZEEFCGFzc2V0SWRCBAhiYWxhbmNlQQgFDSR0MDM3NDY1Mzc1NzECXzEECGJhbGFuY2VCCAUNJHQwMzc0NjUzNzU3MQJfMgQPYWNjb3VudEJhbGFuY2VBCAUNJHQwMzc0NjUzNzU3MQJfMwQPYWNjb3VudEJhbGFuY2VCCAUNJHQwMzc0NjUzNzU3MQJfNAQNYW1vdW50RW5yb2xsQQkAZQIFD2FjY291bnRCYWxhbmNlQQUIYmFsYW5jZUEEDWFtb3VudEVucm9sbEIJAGUCBQ9hY2NvdW50QmFsYW5jZUIFCGJhbGFuY2VCAwkBAiE9AgkAkAMBBQRhcmdzAAAJAAIBAg9Xcm9uZyBhcmdzIHNpemUDCQECIT0CBQ9tb25leUJveEFkZHJlc3MIBQFpDG9yaWdpbkNhbGxlcgkAAgECJk9ubHkgdGhlIHdhbGxldCBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAwMJAGYCAAAFDWFtb3VudEVucm9sbEEGCQBmAgAABQ1hbW91bnRFbnJvbGxCCQEHc3VzcGVuZAECFkVucm9sbCBhbW91bnQgbmVnYXRpdmUDAwkAAAIFDWFtb3VudEVucm9sbEEAAAkAAAIFDWFtb3VudEVucm9sbEIAAAcJAAIBAhBObyBtb25leSB0byB0YWtlBAZzdGFrZTEDAwkBCGNvbnRhaW5zAgUNc3Rha2luZ0Fzc2V0cwULc3RyQXNzZXRJZEEJAGYCBQ1hbW91bnRFbnJvbGxBAAAHCQD8BwQIBQFpBmNhbGxlcgIMc3Rha2VVbnN0YWtlCQDMCAIGCQDMCAIFDWFtb3VudEVucm9sbEEJAMwIAgULc3RyQXNzZXRJZEEFA25pbAUDbmlsAAADCQAAAgUGc3Rha2UxBQZzdGFrZTEEBnN0YWtlMgMDCQEIY29udGFpbnMCBQ1zdGFraW5nQXNzZXRzBQtzdHJBc3NldElkQgkAZgIFDWFtb3VudEVucm9sbEIAAAcJAPwHBAgFAWkGY2FsbGVyAgxzdGFrZVVuc3Rha2UJAMwIAgYJAMwIAgUNYW1vdW50RW5yb2xsQgkAzAgCBQtzdHJBc3NldElkQgUDbmlsBQNuaWwAAAMJAAACBQZzdGFrZTIFBnN0YWtlMgkAlAoCBQNuaWwJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa0JhbGFuY2VBCQBkAgUIYmFsYW5jZUEFDWFtb3VudEVucm9sbEEJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtCYWxhbmNlQgkAZAIFCGJhbGFuY2VCBQ1hbW91bnRFbnJvbGxCBQNuaWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAEE211bHRpU2lnbmVkQnlBZG1pbnMEEmFkbWluUHViS2V5MVNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFDGFkbWluUHViS2V5MQABAAAEEmFkbWluUHViS2V5MlNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEFDGFkbWluUHViS2V5MgABAAAEEmFkbWluUHViS2V5M1NpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAIFDGFkbWluUHViS2V5MwABAAAJAGcCCQBkAgkAZAIFEmFkbWluUHViS2V5MVNpZ25lZAUSYWRtaW5QdWJLZXkyU2lnbmVkBRJhZG1pblB1YktleTNTaWduZWQAAgUTbXVsdGlTaWduZWRCeUFkbWluc4clpT4=", "height": 2319559, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EXjsEDasfUDCeLqiocpK38baYdeKgfySzDbtYJmEpT2c Next: DPyp1jZciazAD3rf9Q7azcsWbqaaB7Unonk6KPBh4d2T Diff:
OldNewDifferences
771771 else $Tuple2(0, bv)
772772 let aM = dl._1
773773 let co = dl._2
774- if ((size(bB) != 3))
774+ if ((size(bB) != 1))
775775 then throw("Wrong args size")
776776 else if ((size(bC) > 1))
777777 then throw("One attached payment expected")
840840 let dw = parseIntValue(bB[1])
841841 if ((size(bB) != 3))
842842 then throw("Wrong args size")
843- else if ((size(bC) != 1))
843+ else if ((size(bC) > 1))
844844 then throw("One attached payment expected")
845845 else if ((co != bv))
846846 then throw(("Incorrect asset attached. Expected: " + toBase58String(bv)))
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 = "A_asset_id"
1111
1212 let e = "B_asset_id"
1313
1414 let f = "A_asset_balance"
1515
1616 let g = "B_asset_balance"
1717
1818 let h = "A_asset_init"
1919
2020 let i = "B_asset_init"
2121
2222 let j = "share_asset_id"
2323
2424 let k = "share_asset_supply"
2525
2626 let l = "commission"
2727
2828 let m = "shutdown_cause"
2929
3030 let n = "first_harvest"
3131
3232 let o = "first_harvest_height"
3333
3434 let p = "share_limit_on_first_harvest"
3535
3636 let q = "base_period"
3737
3838 let r = "period_length"
3939
4040 let s = "start_height"
4141
4242 let t = "staking_usdnnsbt_address"
4343
4444 let u = "staking_eurn_address"
4545
4646 let v = "leasing_amount"
4747
4848 let w = "usdn_asset_id"
4949
5050 let x = "eurn_asset_id"
5151
5252 let y = "staking_assets"
5353
5454 let z = "active_all_contracts"
5555
5656 let A = "active_global_exchangers"
5757
5858 let B = "discounts"
5959
6060 let C = "discount_values"
6161
6262 let D = "_GSwop_amount"
6363
6464 let E = "_SWOP_amount"
6565
6666 let F = "pool_"
6767
6868 let G = "admin_pub_1"
6969
7070 let H = "admin_pub_2"
7171
7272 let I = "admin_pub_3"
7373
7474 let J = "admin_invoke_pub"
7575
7676 let K = "money_box_address"
7777
7878 let L = "voting_address"
7979
8080 let M = "governance_address"
8181
8282 let N = "farming_address"
8383
8484 let O = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
8585
8686 func P (Q) = {
8787 let R = getString(O, Q)
8888 if ($isInstanceOf(R, "String"))
8989 then {
9090 let S = R
9191 fromBase58String(S)
9292 }
9393 else {
9494 let T = R
9595 throw((Q + "is empty"))
9696 }
9797 }
9898
9999
100100 let U = P(G)
101101
102102 let V = P(H)
103103
104104 let W = P(I)
105105
106106 let X = P(J)
107107
108108 let Y = Address(P(K))
109109
110110 let Z = Address(P(L))
111111
112112 let aa = Address(P(M))
113113
114114 let ab = Address(P(N))
115115
116116 let ac = P(w)
117117
118118 let ad = P(x)
119119
120120 let ae = getStringValue(O, y)
121121
122122 let af = Address(P(t))
123123
124124 let ag = Address(P(u))
125125
126126 let ah = valueOrErrorMessage(getInteger(Z, q), "Empty kBasePeriod")
127127
128128 let ai = valueOrErrorMessage(getInteger(Z, s), "Empty kStartHeight")
129129
130130 let aj = valueOrErrorMessage(getInteger(Z, r), "Empty kPeriodLength")
131131
132132 let ak = ((ah + ((height - ai) / aj)) + 3)
133133
134134 let al = if (getBooleanValue(O, z))
135135 then getBooleanValue(O, A)
136136 else false
137137
138138 let am = 1000000
139139
140140 let an = 100000000
141141
142142 func ao (ap,aq) = {
143143 let R = ap
144144 if ($isInstanceOf(R, "ByteVector"))
145145 then {
146146 let ar = R
147147 assetBalance(aq, ar)
148148 }
149149 else if ($isInstanceOf(R, "Unit"))
150150 then {
151151 let as = R
152152 wavesBalance(aq).available
153153 }
154154 else throw("Match error")
155155 }
156156
157157
158158 func at (ap,aq) = {
159159 let au = {
160160 let R = ap
161161 if ($isInstanceOf(R, "ByteVector"))
162162 then {
163163 let av = R
164164 if ((av == ac))
165165 then getInteger(af, ((("rpd_balance_" + toBase58String(av)) + "_") + toString(aq)))
166166 else if ((av == ad))
167167 then getInteger(ag, ((("%s%s%s__stakingBalance__" + toBase58String(av)) + "__") + toString(aq)))
168168 else 0
169169 }
170170 else if ($isInstanceOf(R, "Unit"))
171171 then valueOrElse(getInteger(aq, v), 0)
172172 else throw("Match error")
173173 }
174174 let R = au
175175 if ($isInstanceOf(R, "Int"))
176176 then {
177177 let aw = R
178178 aw
179179 }
180180 else 0
181181 }
182182
183183
184184 func ax (ap) = {
185185 let R = ap
186186 if (if ($isInstanceOf(R, "String"))
187187 then true
188188 else $isInstanceOf(R, "ByteVector"))
189189 then {
190190 let ar = R
191191 let ay = {
192192 let az = ar
193193 if ($isInstanceOf(az, "ByteVector"))
194194 then {
195195 let av = az
196196 $Tuple2(toBase58String(av), av)
197197 }
198198 else if ($isInstanceOf(az, "String"))
199199 then {
200200 let av = az
201201 $Tuple2(av, fromBase58String(av))
202202 }
203203 else throw("Match error")
204204 }
205205 let aA = ay._1
206206 let aB = ay._2
207207 let aC = valueOrErrorMessage(assetInfo(aB), (("Asset " + aA) + " doesn't exist"))
208208 $Tuple3(aA, aC.name, aC.decimals)
209209 }
210210 else if ($isInstanceOf(R, "Unit"))
211211 then {
212212 let as = R
213213 $Tuple3("WAVES", "WAVES", 8)
214214 }
215215 else throw("Match error")
216216 }
217217
218218
219219 func aD (aE) = [BooleanEntry(c, false), StringEntry(m, aE)]
220220
221221
222222 func aF (aG) = {
223223 let aH = valueOrElse(getInteger(aa, (toString(aG) + E)), 0)
224224 let aI = valueOrElse(getInteger(aa, (toString(aG) + D)), aH)
225225 let aJ = split(getStringValue(O, C), ",")
226226 let aK = split(getStringValue(O, B), ",")
227227 if (if ((aI >= parseIntValue(aJ[0])))
228228 then (parseIntValue(aJ[1]) > aI)
229229 else false)
230230 then (am - parseIntValue(aK[0]))
231231 else if (if ((aI >= parseIntValue(aJ[1])))
232232 then (parseIntValue(aJ[2]) > aI)
233233 else false)
234234 then (am - parseIntValue(aK[1]))
235235 else if (if ((aI >= parseIntValue(aJ[2])))
236236 then (parseIntValue(aJ[3]) > aI)
237237 else false)
238238 then (am - parseIntValue(aK[2]))
239239 else if (if ((aI >= parseIntValue(aJ[3])))
240240 then (parseIntValue(aJ[4]) > aI)
241241 else false)
242242 then (am - parseIntValue(aK[3]))
243243 else if ((aI >= parseIntValue(aJ[4])))
244244 then (am - parseIntValue(aK[4]))
245245 else am
246246 }
247247
248248
249249 func aL (aM,aN,aO,aP,aQ,aR) = {
250250 let aS = fraction(aP, aM, (aM + aO))
251251 let aT = fraction(aS, (am - aQ), am)
252252 let aU = fraction(aS, aR, am)
253253 if ((aN > aT))
254254 then throw(((("Calculated amount to receive " + toString(aT)) + " is less than specified minimum ") + toString(aN)))
255255 else $Tuple3(aS, aT, aU)
256256 }
257257
258258
259259 func aV (aM,aW,aQ) = {
260260 let aX = (am - aQ)
261261 let aY = fraction(aQ, 60, 100)
262262 let aZ = (an + fraction((aX * aY), an, (am * am)))
263263 let ba = ((((aW + fraction(aW, aX, am)) + fraction(aM, aX, am)) - aM) - fraction(aM, (aX * aY), (am * am)))
264264 let bb = (-(toBigInt(aW)) * toBigInt(aM))
265265 let bc = ((toBigInt(ba) * toBigInt(ba)) - fraction((toBigInt(4) * bb), toBigInt(aZ), toBigInt(an)))
266266 toInt(fraction((-(toBigInt(ba)) + sqrtBigInt(bc, 0, 0, DOWN)), toBigInt(an), toBigInt((2 * aZ))))
267267 }
268268
269269
270270 func bd (ap) = if ((ap == base58''))
271271 then unit
272272 else ap
273273
274274
275275 func be (bf,bg,bh,bi,bj,bk) = aD(((((((((((((((("Suspicious state. Actual balances: " + toString(bf)) + " ") + bj) + ", ") + toString(bg)) + " ") + bk) + ". State: ") + toString(bh)) + " ") + bj) + ", ") + toString(bi)) + " ") + bk))
276276
277277
278278 func bl () = if (al)
279279 then unit
280280 else throw("DApp is inactive at this moment")
281281
282282
283283 func bm (bn) = if (isDefined(getString(O, (F + bn))))
284284 then unit
285285 else throw("DApp is not registered pool")
286286
287287
288288 func bo (aq,bj,bk) = {
289289 let bh = getIntegerValue(aq, f)
290290 let bi = getIntegerValue(aq, g)
291291 let bp = at(bj, aq)
292292 let bq = at(bk, aq)
293293 let bf = (ao(bj, aq) + bp)
294294 let bg = (ao(bk, aq) + bq)
295295 let br = getIntegerValue(aq, k)
296296 $Tuple5(bh, bi, bf, bg, br)
297297 }
298298
299299
300300 func bs (aq) = {
301301 let bt = getStringValue(aq, d)
302302 let bu = getStringValue(aq, e)
303303 let bj = if ((bt == "WAVES"))
304304 then unit
305305 else fromBase58String(bt)
306306 let bk = if ((bu == "WAVES"))
307307 then unit
308308 else fromBase58String(bu)
309309 let bv = fromBase58String(getStringValue(aq, j))
310310 $Tuple5(bt, bu, bj, bk, bv)
311311 }
312312
313313
314314 func bw (aq,bx) = {
315315 let by = aF(bx)
316316 let aQ = fraction(getIntegerValue(aq, l), by, am, CEILING)
317317 let bz = fraction(fraction(aQ, 40, 100), by, am, CEILING)
318318 $Tuple2(aQ, bz)
319319 }
320320
321321
322322 @Callable(aw)
323323 func init (bA,bB,bC,bD) = {
324324 let bx = Address(bA)
325325 let bE = $Tuple2(bC[0], bd(bD[0]))
326326 let bF = bE._1
327327 let bG = bE._2
328328 let bH = $Tuple2(bC[1], bd(bD[1]))
329329 let bI = bH._1
330330 let bJ = bH._2
331331 if (!(containsElement([U, V, W, X], aw.originCallerPublicKey)))
332332 then throw("Only admin can call this function")
333333 else if ((size(bB) != 1))
334334 then throw("Wrong args size")
335335 else if (isDefined(getBoolean(bx, c)))
336336 then throw("DApp is already active")
337337 else if ((bG == bJ))
338338 then throw("Assets must be different")
339339 else {
340340 let bK = ax(bG)
341341 let bL = bK._1
342342 let bM = bK._2
343343 let bN = bK._3
344344 let bO = ax(bJ)
345345 let bP = bO._1
346346 let bQ = bO._2
347347 let bR = bO._3
348348 let bS = (bB[0] == "true")
349349 let bT = ((("s" + take(bM, 7)) + "_") + take(bQ, 7))
350350 let bU = ((((("ShareToken of SwopFi protocol for " + bM) + " and ") + bQ) + " at address ") + toString(this))
351351 let bV = ((bN + bR) / 2)
352352 let bW = pow(bF, bN, 5, 1, bN, DOWN)
353353 let bX = pow(bI, bR, 5, 1, bR, DOWN)
354354 let bY = pow(10, 0, bV, 0, 0, DOWN)
355355 let bZ = fraction(bW, bX, bY)
356356 let ca = Issue(bT, bU, bZ, bV, true)
357357 let cb = calculateAssetId(ca)
358358 let cc = if (contains(ae, bL))
359359 then invoke(aw.caller, "stakeUnstake", [true, bF, bL], nil)
360360 else 0
361361 if ((cc == cc))
362362 then {
363363 let cd = if (contains(ae, bP))
364364 then invoke(aw.caller, "stakeUnstake", [true, bI, bP], nil)
365365 else 0
366366 if ((cd == cd))
367367 then {
368368 let ce = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, bL), StringEntry(e, bP), IntegerEntry(f, bF), IntegerEntry(g, bI), IntegerEntry(l, getIntegerValue(O, "base_fee_cpmm")), ca, StringEntry(j, toBase58String(cb)), IntegerEntry(k, bZ), ScriptTransfer(bx, bZ, cb)]
369369 if (bS)
370370 then $Tuple2(nil, $Tuple2((ce ++ [BooleanEntry(n, bS), IntegerEntry(o, (ai + (ak * aj)))]), nil))
371371 else $Tuple2(nil, $Tuple2(ce, nil))
372372 }
373373 else throw("Strict value is not equal to itself.")
374374 }
375375 else throw("Strict value is not equal to itself.")
376376 }
377377 }
378378
379379
380380
381381 @Callable(aw)
382382 func initWithInitRatio (bA,bB,bC,bD) = {
383383 let bx = Address(bA)
384384 let cf = $Tuple5(parseIntValue(bB[0]), parseIntValue(bB[1]), bB[2], bB[3], (bB[4] == "true"))
385385 let cg = cf._1
386386 let ch = cf._2
387387 let ci = cf._3
388388 let cj = cf._4
389389 let bS = cf._5
390390 if (!(containsElement([U, V, W, X], aw.originCallerPublicKey)))
391391 then throw("Only admin can call this function")
392392 else if ((size(bB) != 5))
393393 then throw("Wrong args size")
394394 else if (isDefined(getBoolean(bx, c)))
395395 then throw("DApp is already active")
396396 else if ((ci == cj))
397397 then throw("Assets must be different")
398398 else {
399399 let ck = ax(ci)
400400 let bL = ck._1
401401 let bM = ck._2
402402 let bN = ck._3
403403 let cl = ax(cj)
404404 let bP = cl._1
405405 let bQ = cl._2
406406 let bR = cl._3
407407 let bT = ((("s" + take(bM, 7)) + "_") + take(bQ, 7))
408408 let bU = ((((("ShareToken of SwopFi protocol for " + bM) + " and ") + bQ) + " at address ") + toString(this))
409409 let bV = ((bN + bR) / 2)
410410 let bZ = 0
411411 let ca = Issue(bT, bU, bZ, bV, true)
412412 let cb = calculateAssetId(ca)
413413 let ce = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, bL), StringEntry(e, bP), IntegerEntry(h, cg), IntegerEntry(i, ch), IntegerEntry(f, 0), IntegerEntry(g, 0), IntegerEntry(l, getIntegerValue(O, "base_fee_cpmm")), ca, StringEntry(j, toBase58String(cb)), IntegerEntry(k, bZ)]
414414 if (bS)
415415 then $Tuple2(nil, $Tuple2((ce ++ [BooleanEntry(n, bS), IntegerEntry(o, (ai + (ak * aj)))]), nil))
416416 else $Tuple2(nil, $Tuple2(ce, nil))
417417 }
418418 }
419419
420420
421421
422422 @Callable(aw)
423423 func keepLimitForFirstHarvest (bA,bB,bC,bD) = valueOrElse(bm(toString(aw.caller)), valueOrElse(bl(), if (!(containsElement([U, V, W, X], aw.originCallerPublicKey)))
424424 then throw("Only admin can call this function")
425425 else if ((size(bB) != 1))
426426 then throw("Wrong args size")
427427 else {
428428 let cm = parseIntValue(bB[0])
429429 $Tuple2(nil, $Tuple2([IntegerEntry(p, cm)], nil))
430430 }))
431431
432432
433433
434434 @Callable(aw)
435435 func exchange (bA,bB,bC,bD) = valueOrElse(bm(toString(aw.caller)), valueOrElse(bl(), {
436436 let bx = Address(bA)
437437 let cn = $Tuple2(bC[0], bd(bD[0]))
438438 let aM = cn._1
439439 let co = cn._2
440440 let aN = parseIntValue(bB[0])
441441 let cp = bs(aw.caller)
442442 let bt = cp._1
443443 let bu = cp._2
444444 let bj = cp._3
445445 let bk = cp._4
446446 let cq = bo(aw.caller, bj, bk)
447447 let bh = cq._1
448448 let bi = cq._2
449449 let bf = cq._3
450450 let bg = cq._4
451451 if ((size(bB) != 1))
452452 then throw("Wrong args size")
453453 else if (if ((bh == 0))
454454 then true
455455 else (bi == 0))
456456 then throw("Can't exchange with zero balance")
457457 else if ((0 >= aN))
458458 then throw(("Minimal amount to receive must be positive. Actual: " + toString(aN)))
459459 else if ((size(bC) != 1))
460460 then throw("One attached payment expected")
461461 else if (!(containsElement([bj, bk], co)))
462462 then throw(((("Incorrect asset attached. Expected: " + bt) + " or ") + bu))
463463 else if (if ((bh > bf))
464464 then true
465465 else (bi > bg))
466466 then $Tuple2(nil, ([ScriptTransfer(bx, aM, co)] ++ be(bf, bg, bh, bi, bt, bu)))
467467 else {
468468 let cr = bw(aw.caller, aw.originCaller)
469469 let aQ = cr._1
470470 let bz = cr._2
471471 let cs = if ((co == bj))
472472 then aL(aM, aN, bh, bi, aQ, bz)
473473 else aL(aM, aN, bi, bh, aQ, bz)
474474 let aS = cs._1
475475 let aT = cs._2
476476 let aU = cs._3
477477 let ct = if ((co == bj))
478478 then $Tuple3((bh + aM), ((bi - aT) - aU), bk)
479479 else $Tuple3(((bh - aT) - aU), (bi + aM), bj)
480480 let cu = ct._1
481481 let cv = ct._2
482482 let cw = ct._3
483483 let cx = if ((co == bj))
484484 then $Tuple2(aM, (aT + aU))
485485 else $Tuple2((aT + aU), aM)
486486 let cy = cx._1
487487 let cz = cx._2
488488 let cc = if (contains(ae, bt))
489489 then invoke(aw.caller, "stakeUnstake", [(co == bj), cy, bt], nil)
490490 else 0
491491 if ((cc == cc))
492492 then {
493493 let cd = if (contains(ae, bu))
494494 then invoke(aw.caller, "stakeUnstake", [(co == bk), cz, bu], nil)
495495 else 0
496496 if ((cd == cd))
497497 then $Tuple2(nil, $Tuple2([IntegerEntry(f, cu), IntegerEntry(g, cv), ScriptTransfer(bx, aT, cw), ScriptTransfer(Y, aU, cw)], [aT, cw]))
498498 else throw("Strict value is not equal to itself.")
499499 }
500500 else throw("Strict value is not equal to itself.")
501501 }
502502 }))
503503
504504
505505
506506 @Callable(aw)
507507 func replenishWithTwoTokens (bA,bB,bC,bD) = valueOrElse(bm(toString(aw.caller)), valueOrElse(bl(), {
508508 let bx = Address(bA)
509509 let bG = bd(bD[0])
510510 let bJ = bd(bD[1])
511511 let cA = (bB[0] == "true")
512512 let cB = parseIntValue(bB[1])
513513 let cC = bs(aw.caller)
514514 let bt = cC._1
515515 let bu = cC._2
516516 let bj = cC._3
517517 let bk = cC._4
518518 let bv = cC._5
519519 let cD = bo(aw.caller, bj, bk)
520520 let bh = cD._1
521521 let bi = cD._2
522522 let bf = cD._3
523523 let bg = cD._4
524524 let cE = cD._5
525525 if ((size(bB) != 2))
526526 then throw("Wrong args size")
527527 else if (if ((size(bC) != 2))
528528 then (size(bC) != 3)
529529 else false)
530530 then throw("Two or three payments expected")
531531 else if (if ((bG != bj))
532532 then true
533533 else (bJ != bk))
534534 then throw(((("Incorrect assets attached. Expected: " + bt) + " and ") + bu))
535535 else if (if ((bh > bf))
536536 then true
537537 else (bi > bg))
538538 then $Tuple2(nil, ([ScriptTransfer(bx, bC[0], bG), ScriptTransfer(bx, bC[1], bJ)] ++ (if ((size(bC) == 3))
539539 then [AttachedPayment(if ((bD[2] == base58''))
540540 then unit
541541 else bD[2], bC[2])]
542542 else (nil ++ be(bf, bg, bh, bi, bt, bu)))))
543543 else {
544544 let cF = ax(bG)
545545 let bL = cF._1
546546 let bM = cF._2
547547 let bN = cF._3
548548 let cG = ax(bJ)
549549 let bP = cG._1
550550 let bQ = cG._2
551551 let bR = cG._3
552552 let cH = ((bh + bi) == 0)
553553 let cI = if (cH)
554554 then $Tuple5(bC[0], bC[1], 0, bG, 1)
555555 else {
556556 let cJ = fraction(an, bC[0], bh)
557557 let cK = fraction(an, bC[1], bi)
558558 if ((cK > cJ))
559559 then {
560560 let cL = fraction(bC[0], bi, bh)
561561 $Tuple5(bC[0], cL, (bC[1] - cL), bJ, cJ)
562562 }
563563 else {
564564 let cL = fraction(bC[1], bh, bi)
565565 $Tuple5(cL, bC[1], (bC[0] - cL), bG, cK)
566566 }
567567 }
568568 let bF = cI._1
569569 let bI = cI._2
570570 let cM = cI._3
571571 let cN = cI._4
572572 let cO = cI._5
573573 let cP = if (cH)
574574 then {
575575 let bV = ((bN + bR) / 2)
576576 fraction(pow(bF, bN, 5, 1, bN, DOWN), pow(bI, bR, 5, 1, bR, DOWN), pow(10, 0, bV, 0, 0, DOWN))
577577 }
578578 else fraction(cO, cE, an)
579579 if ((cP == 0))
580580 then throw("Too small amount to replenish")
581581 else if ((0 > cM))
582582 then throw("Change < 0")
583583 else {
584584 let cc = if (contains(ae, bL))
585585 then invoke(aw.caller, "stakeUnstake", [true, bF, bL], nil)
586586 else 0
587587 if ((cc == cc))
588588 then {
589589 let cd = if (contains(ae, bP))
590590 then invoke(aw.caller, "stakeUnstake", [true, bI, bP], nil)
591591 else 0
592592 if ((cd == cd))
593593 then {
594594 let cQ = if (cA)
595595 then {
596596 let cR = ([AttachedPayment(bv, cP)] ++ (if ((size(bC) == 3))
597597 then [AttachedPayment(if ((bD[2] == base58''))
598598 then unit
599599 else bD[2], bC[2])]
600600 else nil))
601601 let cS = invoke(aw.caller, "reissueShareToken", [cP], nil)
602602 if ((cS == cS))
603603 then {
604604 let cT = invoke(ab, "lockShareTokensFromPool", [bA, toString(aw.caller), cB], cR)
605605 if ((cT == cT))
606606 then nil
607607 else throw("Strict value is not equal to itself.")
608608 }
609609 else throw("Strict value is not equal to itself.")
610610 }
611611 else [Reissue(bv, cP, true), ScriptTransfer(bx, cP, bv)]
612612 $Tuple2(nil, $Tuple2(([IntegerEntry(f, (bh + bF)), IntegerEntry(g, (bi + bI)), IntegerEntry(k, (cE + cP)), ScriptTransfer(bx, cM, cN)] ++ cQ), nil))
613613 }
614614 else throw("Strict value is not equal to itself.")
615615 }
616616 else throw("Strict value is not equal to itself.")
617617 }
618618 }
619619 }))
620620
621621
622622
623623 @Callable(aw)
624624 func replenishWithOneToken (bA,bB,bC,bD) = valueOrElse(bm(toString(aw.caller)), valueOrElse(bl(), {
625625 let bx = Address(bA)
626626 let co = bd(bD[0])
627627 let aM = bC[0]
628628 let cU = parseIntValue(bB[0])
629629 let cA = (bB[1] == "true")
630630 let cB = parseIntValue(bB[2])
631631 let cV = bs(aw.caller)
632632 let bt = cV._1
633633 let bu = cV._2
634634 let bj = cV._3
635635 let bk = cV._4
636636 let bv = cV._5
637637 let cW = bo(aw.caller, bj, bk)
638638 let bh = cW._1
639639 let bi = cW._2
640640 let bf = cW._3
641641 let bg = cW._4
642642 let cE = cW._5
643643 let cH = ((bh + bi) == 0)
644644 if ((size(bB) != 3))
645645 then throw("Wrong args size")
646646 else if (if ((size(bC) != 1))
647647 then (size(bC) != 2)
648648 else false)
649649 then throw("Two or one attached assets expected")
650650 else if (if ((co != bj))
651651 then (co != bk)
652652 else false)
653653 then throw(((("Incorrect asset attached. Expected: " + bt) + " or ") + bu))
654654 else if (cH)
655655 then throw("For initial exchanger you need to use two tokens")
656656 else if (if ((bh > bf))
657657 then true
658658 else (bi > bg))
659659 then $Tuple2(nil, ([ScriptTransfer(bx, aM, co)] ++ (if ((size(bC) == 2))
660660 then [AttachedPayment(if ((bD[2] == base58''))
661661 then unit
662662 else bD[2], bC[2])]
663663 else (nil ++ be(bf, bg, bh, bi, bt, bu)))))
664664 else {
665665 let cX = bw(aw.caller, aw.originCaller)
666666 let aQ = cX._1
667667 let bz = cX._2
668668 let cY = if ((co == bj))
669669 then {
670670 let cZ = aV(aM, bh, aQ)
671671 let da = aL(cZ, cU, bh, bi, aQ, bz)
672672 let aS = da._1
673673 let aT = da._2
674674 let aU = da._3
675675 let db = (bh + cZ)
676676 let dc = ((bi + aS) - aU)
677677 let cu = (bh + aM)
678678 let cv = (bi - aU)
679679 let cJ = fraction((aM - cZ), an, db)
680680 let cK = fraction(aT, an, dc)
681681 let cP = fraction(min([cJ, cK]), cE, an)
682682 $Tuple7(cu, cv, cP, aU, bk, bu, bt)
683683 }
684684 else {
685685 let cZ = aV(aM, bi, aQ)
686686 let dd = aL(cZ, cU, bi, bh, aQ, bz)
687687 let aS = dd._1
688688 let aT = dd._2
689689 let aU = dd._3
690690 let db = ((bh + aS) - aU)
691691 let dc = (bi + cZ)
692692 let cu = (bh - aU)
693693 let cv = (bi + aM)
694694 let cJ = fraction(aT, an, db)
695695 let cK = fraction((aM - cZ), an, dc)
696696 let cP = fraction(min([cJ, cK]), cE, an)
697697 $Tuple7(cu, cv, cP, aU, bj, bt, bu)
698698 }
699699 let cu = cY._1
700700 let cv = cY._2
701701 let cP = cY._3
702702 let de = cY._4
703703 let df = cY._5
704704 let dg = cY._6
705705 let dh = cY._7
706706 if ((cP == 0))
707707 then throw("Too small amount to replenish")
708708 else {
709709 let cc = if (contains(ae, dh))
710710 then invoke(aw.caller, "stakeUnstake", [true, aM, dh], nil)
711711 else 0
712712 if ((cc == cc))
713713 then {
714714 let cd = if (contains(ae, dg))
715715 then invoke(aw.caller, "stakeUnstake", [false, de, dg], nil)
716716 else 0
717717 if ((cd == cd))
718718 then {
719719 let cQ = if (cA)
720720 then {
721721 let cR = ([AttachedPayment(bv, cP)] ++ (if ((size(bC) == 2))
722722 then [AttachedPayment(if ((bD[1] == base58''))
723723 then unit
724724 else bD[1], bC[1])]
725725 else nil))
726726 let cS = invoke(aw.caller, "reissueShareToken", [cP], nil)
727727 if ((cS == cS))
728728 then {
729729 let cT = invoke(ab, "lockShareTokensFromPool", [bA, toString(aw.caller), cB], cR)
730730 if ((cT == cT))
731731 then nil
732732 else throw("Strict value is not equal to itself.")
733733 }
734734 else throw("Strict value is not equal to itself.")
735735 }
736736 else [Reissue(bv, cP, true), ScriptTransfer(bx, cP, bv)]
737737 $Tuple2(nil, $Tuple2(([IntegerEntry(f, cu), IntegerEntry(g, cv), IntegerEntry(k, (cE + cP)), ScriptTransfer(Y, de, df)] ++ cQ), nil))
738738 }
739739 else throw("Strict value is not equal to itself.")
740740 }
741741 else throw("Strict value is not equal to itself.")
742742 }
743743 }
744744 }))
745745
746746
747747
748748 @Callable(aw)
749749 func withdraw (bA,bB,bC,bD) = valueOrElse(bm(toString(aw.caller)), valueOrElse(bl(), {
750750 let di = lastBlock.timestamp
751751 let bx = Address(bA)
752752 let dj = bs(aw.caller)
753753 let bt = dj._1
754754 let bu = dj._2
755755 let bj = dj._3
756756 let bk = dj._4
757757 let bv = dj._5
758758 let dk = bo(aw.caller, bj, bk)
759759 let bh = dk._1
760760 let bi = dk._2
761761 let bf = dk._3
762762 let bg = dk._4
763763 let cE = dk._5
764764 let dl = if ((size(bC) == 1))
765765 then {
766766 let dm = bd(bD[0])
767767 if ((dm != bv))
768768 then throw(("Incorrect asset attached. Expected: " + toBase58String(bv)))
769769 else $Tuple2(bC[0], dm)
770770 }
771771 else $Tuple2(0, bv)
772772 let aM = dl._1
773773 let co = dl._2
774- if ((size(bB) != 3))
774+ if ((size(bB) != 1))
775775 then throw("Wrong args size")
776776 else if ((size(bC) > 1))
777777 then throw("One attached payment expected")
778778 else if (if ((bh > bf))
779779 then true
780780 else (bi > bg))
781781 then $Tuple2(nil, ([ScriptTransfer(bx, aM, co)] ++ be(bf, bg, bh, bi, bt, bu)))
782782 else {
783783 let dn = parseIntValue(valueOrElse(bB[0], "0"))
784784 let do = if ((dn > 0))
785785 then invoke(ab, "withdrawShareTokensFromPool", [bA, toString(aw.caller), dn], nil)
786786 else 0
787787 if ((do == do))
788788 then {
789789 let dp = (aM + dn)
790790 let dq = fraction(dp, bh, cE)
791791 let dr = fraction(dp, bi, cE)
792792 let cc = if (contains(ae, bt))
793793 then invoke(aw.caller, "stakeUnstake", [false, dq, bt], nil)
794794 else 0
795795 if ((cc == cc))
796796 then {
797797 let cd = if (contains(ae, bu))
798798 then invoke(aw.caller, "stakeUnstake", [false, dr, bu], nil)
799799 else 0
800800 if ((cd == cd))
801801 then $Tuple2([ScriptTransfer(aw.caller, dn, bv)], $Tuple2([IntegerEntry(f, (bh - dq)), IntegerEntry(g, (bi - dr)), IntegerEntry(k, (cE - dp)), Burn(bv, dp), ScriptTransfer(bx, dq, bj), ScriptTransfer(bx, dr, bk)], nil))
802802 else throw("Strict value is not equal to itself.")
803803 }
804804 else throw("Strict value is not equal to itself.")
805805 }
806806 else throw("Strict value is not equal to itself.")
807807 }
808808 }))
809809
810810
811811
812812 @Callable(aw)
813813 func withdrawOneToken (bA,bB,bC,bD) = valueOrElse(bm(toString(aw.caller)), valueOrElse(bl(), {
814814 let bx = Address(bA)
815815 let ds = if ((bB[0] == ""))
816816 then unit
817817 else fromBase58String(bB[0])
818818 let dt = bs(aw.caller)
819819 let bt = dt._1
820820 let bu = dt._2
821821 let bj = dt._3
822822 let bk = dt._4
823823 let bv = dt._5
824824 let du = bo(aw.caller, bj, bk)
825825 let bh = du._1
826826 let bi = du._2
827827 let bf = du._3
828828 let bg = du._4
829829 let cE = du._5
830830 let dv = if ((size(bC) == 1))
831831 then {
832832 let dm = bd(bD[0])
833833 if ((dm != bv))
834834 then throw(("Incorrect asset attached. Expected: " + toBase58String(bv)))
835835 else $Tuple2(bC[0], dm)
836836 }
837837 else $Tuple2(0, bv)
838838 let aM = dv._1
839839 let co = dv._2
840840 let dw = parseIntValue(bB[1])
841841 if ((size(bB) != 3))
842842 then throw("Wrong args size")
843- else if ((size(bC) != 1))
843+ else if ((size(bC) > 1))
844844 then throw("One attached payment expected")
845845 else if ((co != bv))
846846 then throw(("Incorrect asset attached. Expected: " + toBase58String(bv)))
847847 else if (!(containsElement([bj, bk], ds)))
848848 then throw("Incorrect withdraw asset.")
849849 else if (if ((bh > bf))
850850 then true
851851 else (bi > bg))
852852 then $Tuple2(nil, ([ScriptTransfer(bx, aM, co)] ++ be(bf, bg, bh, bi, bt, bu)))
853853 else {
854854 let dn = parseIntValue(valueOrElse(bB[2], "0"))
855855 let do = if ((dn > 0))
856856 then invoke(ab, "withdrawShareTokensFromPool", [bA, toString(aw.caller), dn], nil)
857857 else 0
858858 if ((do == do))
859859 then {
860860 let dp = (aM + dn)
861861 let dq = fraction(dp, bh, cE)
862862 let dr = fraction(dp, bi, cE)
863863 let dx = bw(aw.caller, aw.originCaller)
864864 let aQ = dx._1
865865 let bz = dx._2
866866 let dy = if ((ds == bj))
867867 then aL(dr, dw, (bi - dr), (bh - dq), aQ, bz)
868868 else aL(dq, dw, (bh - dq), (bi - dr), aQ, bz)
869869 let aS = dy._1
870870 let aT = dy._2
871871 let aU = dy._3
872872 let dz = if ((ds == bj))
873873 then {
874874 let dA = if (contains(ae, bt))
875875 then invoke(aw.caller, "stakeUnstake", [false, ((dq + aT) + aU), bt], nil)
876876 else 0
877877 if ((dA == dA))
878878 then $Tuple4((((bh - dq) - aT) - aU), bi, bj, [ScriptTransfer(bx, (dq + aT), bj)])
879879 else throw("Strict value is not equal to itself.")
880880 }
881881 else {
882882 let dA = if (contains(ae, bu))
883883 then invoke(aw.caller, "stakeUnstake", [false, ((dr + aT) + aU), bu], nil)
884884 else 0
885885 if ((dA == dA))
886886 then $Tuple4(bh, (((bi - dr) - aT) - aU), bk, [ScriptTransfer(bx, (dr + aT), bk)])
887887 else throw("Strict value is not equal to itself.")
888888 }
889889 let cu = dz._1
890890 let cv = dz._2
891891 let dB = dz._3
892892 let dC = dz._4
893893 $Tuple2([ScriptTransfer(aw.caller, dn, bv)], $Tuple2(([IntegerEntry(f, cu), IntegerEntry(g, cv), IntegerEntry(k, (cE - dp)), Burn(bv, dp), ScriptTransfer(Y, aU, dB)] ++ dC), nil))
894894 }
895895 else throw("Strict value is not equal to itself.")
896896 }
897897 }))
898898
899899
900900
901901 @Callable(aw)
902902 func takeIntoAccountExtraFunds (bA,bB,bC,bD) = valueOrElse(bm(toString(aw.caller)), valueOrElse(bl(), {
903903 let dD = bs(aw.caller)
904904 let bt = dD._1
905905 let bu = dD._2
906906 let bj = dD._3
907907 let bk = dD._4
908908 let dE = bo(aw.caller, bj, bk)
909909 let bh = dE._1
910910 let bi = dE._2
911911 let bf = dE._3
912912 let bg = dE._4
913913 let dF = (bf - bh)
914914 let dG = (bg - bi)
915915 if ((size(bB) != 0))
916916 then throw("Wrong args size")
917917 else if ((Y != aw.originCaller))
918918 then throw("Only the wallet can call this function")
919919 else if (if ((0 > dF))
920920 then true
921921 else (0 > dG))
922922 then aD("Enroll amount negative")
923923 else if (if ((dF == 0))
924924 then (dG == 0)
925925 else false)
926926 then throw("No money to take")
927927 else {
928928 let cc = if (if (contains(ae, bt))
929929 then (dF > 0)
930930 else false)
931931 then invoke(aw.caller, "stakeUnstake", [true, dF, bt], nil)
932932 else 0
933933 if ((cc == cc))
934934 then {
935935 let cd = if (if (contains(ae, bu))
936936 then (dG > 0)
937937 else false)
938938 then invoke(aw.caller, "stakeUnstake", [true, dG, bu], nil)
939939 else 0
940940 if ((cd == cd))
941941 then $Tuple2(nil, $Tuple2([IntegerEntry(f, (bh + dF)), IntegerEntry(g, (bi + dG))], nil))
942942 else throw("Strict value is not equal to itself.")
943943 }
944944 else throw("Strict value is not equal to itself.")
945945 }
946946 }))
947947
948948
949949 @Verifier(dH)
950950 func dI () = {
951951 let dJ = {
952952 let dK = if (sigVerify(dH.bodyBytes, dH.proofs[0], U))
953953 then 1
954954 else 0
955955 let dL = if (sigVerify(dH.bodyBytes, dH.proofs[1], V))
956956 then 1
957957 else 0
958958 let dM = if (sigVerify(dH.bodyBytes, dH.proofs[2], W))
959959 then 1
960960 else 0
961961 (((dK + dL) + dM) >= 2)
962962 }
963963 dJ
964964 }
965965

github/deemru/w8io/873ac7e 
132.99 ms