tx · HnAN5fcy312uGAVtMs9ZCcoBEU51nyRf3PyNe4DH7mw1 3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy: -0.01400000 Waves 2022.03.11 16:54 [1959375] smart account 3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy > SELF 0.00000000 Waves
{ "type": 13, "id": "HnAN5fcy312uGAVtMs9ZCcoBEU51nyRf3PyNe4DH7mw1", "fee": 1400000, "feeAssetId": null, "timestamp": 1647006866537, "version": 1, "sender": "3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy", "senderPublicKey": "9W33iCCNfmFxUbiC6XZcH5x7f6xfwC7Jb3BoExT5q2PV", "proofs": [ "5amdoSfjSctXsK1P6DopkJtaD9NXJwuSUg6k5KzQCgxkY4HSU7pREnGbrwutxHkTi8WQyV428Y6ktYDc9qwWd5w7" ], "script": "base64:AAIFAAAAAAAAADMIAhIICgYICAEBAQgSAwoBARIDCgEBEgQKAggIEgQKAggIEgMKAQgSAwoBCBIDCgEIEgAAAABkAAAAAANTRVACAAAAAl9fAAAAAAZTQ0FMRTgAAAAAAAAAAAgAAAAABU1VTFQ4AAAAAAAF9eEAAAAAAA5QT09MV0VJR0hUTVVMVAUAAAAFTVVMVDgBAAAABHN0cmYAAAACAAAAB2FkZHJlc3MAAAADa2V5CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5CQABLAAAAAIJAAEsAAAAAgIAAAAPbWFuZGF0b3J5IHRoaXMuBQAAAANrZXkCAAAADyBpcyBub3QgZGVmaW5lZAEAAAAMZ2V0SW50T3JaZXJvAAAAAgAAAAdhZGRyZXNzAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAdhZGRyZXNzBQAAAANrZXkAAAAAAAAAAAABAAAAD2dldEludE9yRGVmYXVsdAAAAAMAAAAHYWRkcmVzcwAAAANrZXkAAAAKZGVmYXVsdFZhbAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAdhZGRyZXNzBQAAAANrZXkFAAAACmRlZmF1bHRWYWwBAAAADGdldEludE9yRmFpbAAAAAIAAAAHYWRkcmVzcwAAAANrZXkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAdhZGRyZXNzBQAAAANrZXkJAAEsAAAAAgkAASwAAAACAgAAAA9tYW5kYXRvcnkgdGhpcy4FAAAAA2tleQIAAAAPIGlzIG5vdCBkZWZpbmVkAQAAAANhYnMAAAABAAAAA3ZhbAMJAABmAAAAAgAAAAAAAAAAAAUAAAADdmFsCQEAAAABLQAAAAEFAAAAA3ZhbAUAAAADdmFsAQAAAAlhc0FueUxpc3QAAAABAAAAA3ZhbAQAAAAHJG1hdGNoMAUAAAADdmFsAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAlMaXN0W0FueV0EAAAACnZhbEFueUx5c3QFAAAAByRtYXRjaDAFAAAACnZhbEFueUx5c3QJAAACAAAAAQIAAAAbZmFpbCB0byBjYXN0IGludG8gTGlzdFtBbnldAQAAAAVhc0ludAAAAAEAAAADdmFsBAAAAAckbWF0Y2gwBQAAAAN2YWwDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAAGdmFsSW50BQAAAAckbWF0Y2gwBQAAAAZ2YWxJbnQJAAACAAAAAQIAAAAVZmFpbCB0byBjYXN0IGludG8gSW50AQAAABFrZXlGYWN0b3J5QWRkcmVzcwAAAAACAAAAHCVzJXNfX2NvbmZpZ19fZmFjdG9yeUFkZHJlc3MAAAAAGElkeEZhY3RvcnlDZmdTdGFraW5nRGFwcAAAAAAAAAAAAQAAAAAZSWR4RmFjdG9yeUNmZ0Jvb3N0aW5nRGFwcAAAAAAAAAAAAgAAAAAUSWR4RmFjdG9yeUNmZ0lkb0RhcHAAAAAAAAAAAAMAAAAAFUlkeEZhY3RvcnlDZmdUZWFtRGFwcAAAAAAAAAAABAAAAAAZSWR4RmFjdG9yeUNmZ0VtaXNzaW9uRGFwcAAAAAAAAAAABQAAAAAVSWR4RmFjdG9yeUNmZ1Jlc3REYXBwAAAAAAAAAAAGAAAAABlJZHhGYWN0b3J5Q2ZnU2xpcHBhZ2VEYXBwAAAAAAAAAAAHAAAAABRJZHhGYWN0b3J5Q2ZnRGFvRGFwcAAAAAAAAAAACAAAAAAaSWR4RmFjdG9yeUNmZ01hcmtldGluZ0RhcHAAAAAAAAAAAAkAAAAAGklkeEZhY3RvcnlDZmdHd3hSZXdhcmREYXBwAAAAAAAAAAAKAAAAABZJZHhGYWN0b3J5Q2ZnQmlyZHNEYXBwAAAAAAAAAAALAQAAAA1rZXlGYWN0b3J5Q2ZnAAAAAAIAAAARJXNfX2ZhY3RvcnlDb25maWcBAAAAGmtleUZhY3RvcnlMcDJBc3NldHNNYXBwaW5nAAAAAQAAAApscEFzc2V0U3RyCQAEuQAAAAIJAARMAAAAAgIAAAAGJXMlcyVzCQAETAAAAAIFAAAACmxwQXNzZXRTdHIJAARMAAAAAgIAAAAebWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0BQAAAANuaWwFAAAAA1NFUAEAAAAQa2V5RmFjdG9yeUxwTGlzdAAAAAACAAAAECVzX19scFRva2Vuc0xpc3QBAAAAJmtleUZhY3RvcnlMcEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAAAAAQAAAApscEFzc2V0U3RyCQAEuQAAAAIJAARMAAAAAgIAAAAGJXMlcyVzCQAETAAAAAIFAAAACmxwQXNzZXRTdHIJAARMAAAAAgIAAAAebWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0BQAAAANuaWwFAAAAA1NFUAEAAAAUa2V5RmFjdG9yeVBvb2xXZWlnaHQAAAABAAAAD2NvbnRyYWN0QWRkcmVzcwkABLkAAAACCQAETAAAAAICAAAABCVzJXMJAARMAAAAAgIAAAAKcG9vbFdlaWdodAkABEwAAAACBQAAAA9jb250cmFjdEFkZHJlc3MFAAAAA25pbAUAAAADU0VQAQAAABtrZXlGYWN0b3J5UG9vbFdlaWdodEhpc3RvcnkAAAACAAAAC3Bvb2xBZGRyZXNzAAAAA251bQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAASJXMlc19fcG9vbFdlaWdodF9fBQAAAAtwb29sQWRkcmVzcwIAAAACX18JAAGkAAAAAQUAAAADbnVtAQAAABhyZWFkRmFjdG9yeUFkZHJlc3NPckZhaWwAAAAACQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQEAAAAEc3RyZgAAAAIFAAAABHRoaXMJAQAAABFrZXlGYWN0b3J5QWRkcmVzcwAAAAABAAAACnJlYWRMcExpc3QAAAAACQAEtQAAAAIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgkBAAAAGHJlYWRGYWN0b3J5QWRkcmVzc09yRmFpbAAAAAAJAQAAABBrZXlGYWN0b3J5THBMaXN0AAAAAAIAAAAABQAAAANTRVABAAAAFHJlYWRGYWN0b3J5Q2ZnT3JGYWlsAAAAAQAAAAdmYWN0b3J5CQAEtQAAAAIJAQAAAARzdHJmAAAAAgUAAAAHZmFjdG9yeQkBAAAADWtleUZhY3RvcnlDZmcAAAAABQAAAANTRVABAAAAGGdldEJvb3N0aW5nQWRkcmVzc09yRmFpbAAAAAEAAAAKZmFjdG9yeUNmZwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkAAZEAAAACBQAAAApmYWN0b3J5Q2ZnBQAAABlJZHhGYWN0b3J5Q2ZnQm9vc3RpbmdEYXBwAQAAABhnZXRFbWlzc2lvbkFkZHJlc3NPckZhaWwAAAABAAAACmZhY3RvcnlDZmcJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAAGRAAAAAgUAAAAKZmFjdG9yeUNmZwUAAAAZSWR4RmFjdG9yeUNmZ0VtaXNzaW9uRGFwcAEAAAAXZ2V0U3Rha2luZ0FkZHJlc3NPckZhaWwAAAABAAAACmZhY3RvcnlDZmcJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAAGRAAAAAgUAAAAKZmFjdG9yeUNmZwUAAAAYSWR4RmFjdG9yeUNmZ1N0YWtpbmdEYXBwAQAAABlnZXRHd3hSZXdhcmRBZGRyZXNzT3JGYWlsAAAAAQAAAApmYWN0b3J5Q2ZnCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQABkQAAAAIFAAAACmZhY3RvcnlDZmcFAAAAGklkeEZhY3RvcnlDZmdHd3hSZXdhcmREYXBwAQAAABNrZXlNYW5hZ2VyUHVibGljS2V5AAAAAAIAAAAUJXNfX21hbmFnZXJQdWJsaWNLZXkBAAAAGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAAAAAIAAAAbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQAAAB5rZXlFbWlzc2lvblJhdGVQZXJCbG9ja0N1cnJlbnQAAAAAAgAAABslcyVzX19yYXRlUGVyQmxvY2tfX2N1cnJlbnQBAAAAIWtleUVtaXNzaW9uUmF0ZVBlckJsb2NrTWF4Q3VycmVudAAAAAACAAAAHiVzJXNfX3JhdGVQZXJCbG9ja01heF9fY3VycmVudAEAAAAVa2V5RW1pc3Npb25TdGFydEJsb2NrAAAAAAIAAAAaJXMlc19fZW1pc3Npb25fX3N0YXJ0QmxvY2sBAAAAG2tleUVtaXNzaW9uRHVyYXRpb25JbkJsb2NrcwAAAAACAAAAGCVzJXNfX2VtaXNzaW9uX19kdXJhdGlvbgEAAAATa2V5RW1pc3Npb25FbmRCbG9jawAAAAACAAAAGCVzJXNfX2VtaXNzaW9uX19lbmRCbG9jawEAAAANa2V5TmV4dFBlcmlvZAAAAAACAAAADiVzX19uZXh0UGVyaW9kAQAAAB9rZXlHd3hSZXdhcmRFbWlzc2lvblN0YXJ0SGVpZ2h0AAAAAAIAAAAoJXMlc19fZ3d4UmV3YXJkRW1pc3Npb25QYXJ0X19zdGFydEhlaWdodAAAAAANSWR4Q2ZnQXNzZXRJZAAAAAAAAAAAAQAAAAATSWR4Q2ZnTWluTG9ja0Ftb3VudAAAAAAAAAAAAgAAAAAVSWR4Q2ZnTWluTG9ja0R1cmF0aW9uAAAAAAAAAAADAAAAABVJZHhDZmdNYXhMb2NrRHVyYXRpb24AAAAAAAAAAAQAAAAAEklkeENmZ01hdGhDb250cmFjdAAAAAAAAAAABQEAAAAJa2V5Q29uZmlnAAAAAAIAAAAKJXNfX2NvbmZpZwEAAAAVcmVhZENvbmZpZ0FycmF5T3JGYWlsAAAAAAkABLUAAAACCQEAAAAEc3RyZgAAAAIFAAAABHRoaXMJAQAAAAlrZXlDb25maWcAAAAABQAAAANTRVABAAAADWZvcm1hdENvbmZpZ1MAAAAFAAAAB2Fzc2V0SWQAAAANbWluTG9ja0Ftb3VudAAAAA9taW5Mb2NrRHVyYXRpb24AAAAPbWF4TG9ja0R1cmF0aW9uAAAADG1hdGhDb250cmFjdAkABLkAAAACCQAETAAAAAICAAAACCVzJWQlZCVkCQAETAAAAAIFAAAAB2Fzc2V0SWQJAARMAAAAAgUAAAANbWluTG9ja0Ftb3VudAkABEwAAAACBQAAAA9taW5Mb2NrRHVyYXRpb24JAARMAAAAAgUAAAAPbWF4TG9ja0R1cmF0aW9uCQAETAAAAAIFAAAADG1hdGhDb250cmFjdAUAAAADbmlsBQAAAANTRVABAAAADGZvcm1hdENvbmZpZwAAAAUAAAAHYXNzZXRJZAAAAA1taW5Mb2NrQW1vdW50AAAAD21pbkxvY2tEdXJhdGlvbgAAAA9tYXhMb2NrRHVyYXRpb24AAAAMbWF0aENvbnRyYWN0CQEAAAANZm9ybWF0Q29uZmlnUwAAAAUFAAAAB2Fzc2V0SWQJAAGkAAAAAQUAAAANbWluTG9ja0Ftb3VudAkAAaQAAAABBQAAAA9taW5Mb2NrRHVyYXRpb24JAAGkAAAAAQUAAAAPbWF4TG9ja0R1cmF0aW9uBQAAAAxtYXRoQ29udHJhY3QBAAAAFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAAAABAAAAAckbWF0Y2gwCQAEIgAAAAEJAQAA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AAAAFWtleUxvY2tQYXJhbUJ5UGVyaW9kSwAAAAIAAAAHdXNlck51bQAAAAZwZXJpb2QJAAS5AAAAAgkABEwAAAACAgAAABclcyVkJXMlZF9fcGFyYW1CeVBlcmlvZAkABEwAAAACBQAAAAd1c2VyTnVtCQAETAAAAAICAAAAAWsJAARMAAAAAgUAAAAGcGVyaW9kBQAAAANuaWwFAAAAA1NFUAEAAAAVa2V5TG9ja1BhcmFtQnlQZXJpb2RCAAAAAgAAAAd1c2VyTnVtAAAABnBlcmlvZAkABLkAAAACCQAETAAAAAICAAAAFyVzJWQlcyVkX19wYXJhbUJ5UGVyaW9kCQAETAAAAAIFAAAAB3VzZXJOdW0JAARMAAAAAgIAAAABYgkABEwAAAACBQAAAAZwZXJpb2QFAAAAA25pbAUAAAADU0VQAQAAABdrZXlMb2NrUGFyYW1Ub3RhbEFtb3VudAAAAAACAAAAHiVzJXNfX3N0YXRzX19hY3RpdmVUb3RhbExvY2tlZAEAAAAga2V5U3RhdHNMb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MAAAAAAgAAACUlcyVzX19zdGF0c19fbG9ja3NEdXJhdGlvblN1bUluQmxvY2tzAQAAABJrZXlTdGF0c0xvY2tzQ291bnQAAAAAAgAAABclcyVzX19zdGF0c19fbG9ja3NDb3VudAEAAAASa2V5U3RhdHNVc2Vyc0NvdW50AAAAAAIAAAAdJXMlc19fc3RhdHNfX2FjdGl2ZVVzZXJzQ291bnQBAAAAIGtleVVzZXJCb29zdEVtaXNzaW9uTGFzdElOVEVHUkFMAAAAAQAAAAd1c2VyTnVtCQAEuQAAAAIJAARMAAAAAgIAAAAeJXMlZF9fdXNlckJvb3N0RW1pc3Npb25MYXN0SW50CQAETAAAAAIFAAAAB3VzZXJOdW0FAAAAA25pbAUAAAADU0VQAQAAACJrZXlVc2VyTHBCb29zdEVtaXNzaW9uTGFzdElOVEVHUkFMAAAAAgAAAAd1c2VyTnVtAAAACWxwQXNzZXRJZAkABLkAAAACCQAETAAAAAICAAAAHiVzJWRfX3VzZXJCb29zdEVtaXNzaW9uTGFzdEludAkABEwAAAACBQAAAAd1c2VyTnVtCQAETAAAAAIFAAAACWxwQXNzZXRJZAUAAAADbmlsBQAAAANTRVABAAAAF2tleVVzZXJNYXhCb29zdElOVEVHUkFMAAAAAQAAAAd1c2VyTnVtCQAEuQAAAAIJAARMAAAAAgIAAAARJXMlZF9fbWF4Qm9vc3RJbnQJAARMAAAAAgUAAAAHdXNlck51bQUAAAADbmlsBQAAAANTRVABAAAAGGtleVRvdGFsTWF4Qm9vc3RJTlRFR1JBTAAAAAACAAAAGCVzJXNfX21heEJvb3N0SW50X190b3RhbAEAAAAha2V5VXNlckJvb3N0QXZhbGFpYmxlVG9DbGFpbVRvdGFsAAAAAQAAAAd1c2VyTnVtCQAEuQAAAAIJAARMAAAAAgIAAAAkJXMlZF9fdXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsCQAETAAAAAIFAAAAB3VzZXJOdW0FAAAAA25pbAUAAAADU0VQAQAAABNrZXlVc2VyQm9vc3RDbGFpbWVkAAAAAQAAAAd1c2VyTnVtCQAEuQAAAAIJAARMAAAAAgIAAAAWJXMlZF9fdXNlckJvb3N0Q2xhaW1lZAkABEwAAAACBQAAAAd1c2VyTnVtBQAAAANuaWwFAAAAA1NFUAEAAAARa2V5VG90YWxDYWNoZWRHd3gAAAAAAgAAABYlcyVzX19nd3hDYWNoZWRfX3RvdGFsAAAAAA9mYWN0b3J5Q29udHJhY3QJAQAAABhyZWFkRmFjdG9yeUFkZHJlc3NPckZhaWwAAAAAAAAAAApmYWN0b3J5Q2ZnCQEAAAAUcmVhZEZhY3RvcnlDZmdPckZhaWwAAAABBQAAAA9mYWN0b3J5Q29udHJhY3QAAAAAEGVtaXNzaW9uQ29udHJhY3QJAQAAABhnZXRFbWlzc2lvbkFkZHJlc3NPckZhaWwAAAABBQAAAApmYWN0b3J5Q2ZnAAAAAA9zdGFraW5nQ29udHJhY3QJAQAAABdnZXRTdGFraW5nQWRkcmVzc09yRmFpbAAAAAEFAAAACmZhY3RvcnlDZmcAAAAAEWd3eFJld2FyZENvbnRyYWN0CQEAAAAZZ2V0R3d4UmV3YXJkQWRkcmVzc09yRmFpbAAAAAEFAAAACmZhY3RvcnlDZmcBAAAADEhpc3RvcnlFbnRyeQAAAAgAAAAEdHlwZQAAAAR1c2VyAAAABmFtb3VudAAAAAlsb2NrU3RhcnQAAAAIZHVyYXRpb24AAAABawAAAAFiAAAAAWkEAAAACmhpc3RvcnlLRVkJAAS5AAAAAgkABEwAAAACAgAAABElcyVzJXMlc19faGlzdG9yeQkABEwAAAACBQAAAAR0eXBlCQAETAAAAAIFAAAABHVzZXIJAARMAAAAAgkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBQAAAANuaWwFAAAAA1NFUAQAAAALaGlzdG9yeURBVEEJAAS5AAAAAgkABEwAAAACAgAAAA4lZCVkJWQlZCVkJWQlZAkABEwAAAACCQABpAAAAAEIBQAAAAlsYXN0QmxvY2sAAAAGaGVpZ2h0CQAETAAAAAIJAAGkAAAAAQgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAJAARMAAAAAgkAAaQAAAABBQAAAAZhbW91bnQJAARMAAAAAgkAAaQAAAABBQAAAAlsb2NrU3RhcnQJAARMAAAAAgkAAaQAAAABBQAAAAhkdXJhdGlvbgkABEwAAAACCQABpAAAAAEFAAAAAWsJAARMAAAAAgkAAaQAAAABBQAAAAFiBQAAAANuaWwFAAAAA1NFUAkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAKaGlzdG9yeUtFWQUAAAALaGlzdG9yeURBVEEBAAAAClN0YXRzRW50cnkAAAAEAAAADnRvdGFsTG9ja2VkSW5jAAAAC2R1cmF0aW9uSW5jAAAADGxvY2tDb3VudEluYwAAAA11c2Vyc0NvdW50SW5jBAAAABtsb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3NLRVkJAQAAACBrZXlTdGF0c0xvY2tzRHVyYXRpb25TdW1JbkJsb2NrcwAAAAAEAAAADWxvY2tzQ291bnRLRVkJAQAAABJrZXlTdGF0c0xvY2tzQ291bnQAAAAABAAAAA11c2Vyc0NvdW50S0VZCQEAAAASa2V5U3RhdHNVc2Vyc0NvdW50AAAAAAQAAAAOdG90YWxBbW91bnRLRVkJAQAAABdrZXlMb2NrUGFyYW1Ub3RhbEFtb3VudAAAAAAEAAAAGGxvY2tzRHVyYXRpb25TdW1JbkJsb2NrcwkBAAAADGdldEludE9yWmVybwAAAAIFAAAABHRoaXMFAAAAG2xvY2tzRHVyYXRpb25TdW1JbkJsb2Nrc0tFWQQAAAAKbG9ja3NDb3VudAkBAAAADGdldEludE9yWmVybwAAAAIFAAAABHRoaXMFAAAADWxvY2tzQ291bnRLRVkEAAAACnVzZXJzQ291bnQJAQAAAAxnZXRJbnRPclplcm8AAAACBQAAAAR0aGlzBQAAAA11c2Vyc0NvdW50S0VZBAAAAAt0b3RhbEFtb3VudAkBAAAADGdldEludE9yWmVybwAAAAIFAAAABHRoaXMFAAAADnRvdGFsQW1vdW50S0VZCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABtsb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3NLRVkJAABkAAAAAgUAAAAYbG9ja3NEdXJhdGlvblN1bUluQmxvY2tzBQAAAAtkdXJhdGlvbkluYwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAANbG9ja3NDb3VudEtFWQkAAGQAAAACBQAAAApsb2Nrc0NvdW50BQAAAAxsb2NrQ291bnRJbmMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADXVzZXJzQ291bnRLRVkJAABkAAAAAgUAAAAKdXNlcnNDb3VudAUAAAANdXNlcnNDb3VudEluYwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAOdG90YWxBbW91bnRLRVkJAABkAAAAAgUAAAALdG90YWxBbW91bnQFAAAADnRvdGFsTG9ja2VkSW5jBQAAAANuaWwBAAAADWNhbGNHd3hBbW91bnQAAAADAAAABGtSYXcAAAAEYlJhdwAAAAFoBAAAAAVTQ0FMRQAAAAAAAAAD6AkAAGkAAAACCQAAZAAAAAIJAABoAAAAAgUAAAAEa1JhdwUAAAABaAUAAAAEYlJhdwUAAAAFU0NBTEUBAAAAD0xvY2tQYXJhbXNFbnRyeQAAAAgAAAALdXNlckFkZHJlc3MAAAAHdXNlck51bQAAAAZhbW91bnQAAAAFc3RhcnQAAAAIZHVyYXRpb24AAAABawAAAAFiAAAABnBlcmlvZAQAAAANdXNlckFtb3VudEtFWQkBAAAAFmtleUxvY2tQYXJhbVVzZXJBbW91bnQAAAABBQAAAAd1c2VyTnVtBAAAAA1zdGFydEJsb2NrS0VZCQEAAAAWa2V5TG9ja1BhcmFtU3RhcnRCbG9jawAAAAEFAAAAB3VzZXJOdW0EAAAAC2R1cmF0aW9uS0VZCQEAAAAUa2V5TG9ja1BhcmFtRHVyYXRpb24AAAABBQAAAAd1c2VyTnVtBAAAAARrS0VZCQEAAAANa2V5TG9ja1BhcmFtSwAAAAEFAAAAB3VzZXJOdW0EAAAABGJLRVkJAQAAAA1rZXlMb2NrUGFyYW1CAAAAAQUAAAAHdXNlck51bQQAAAAMa0J5UGVyaW9kS0VZCQEAAAAVa2V5TG9ja1BhcmFtQnlQZXJpb2RLAAAAAgUAAAAHdXNlck51bQUAAAAGcGVyaW9kBAAAAAxiQnlQZXJpb2RLRVkJAQAAABVrZXlMb2NrUGFyYW1CeVBlcmlvZEIAAAACBQAAAAd1c2VyTnVtBQAAAAZwZXJpb2QEAAAACWd3eEFtb3VudAkBAAAADWNhbGNHd3hBbW91bnQAAAADBQAAAAFrBQAAAAFiBQAAAAZoZWlnaHQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADXVzZXJBbW91bnRLRVkFAAAABmFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAANc3RhcnRCbG9ja0tFWQUAAAAFc3RhcnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2R1cmF0aW9uS0VZBQAAAAhkdXJhdGlvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAEa0tFWQUAAAABawkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAEYktFWQUAAAABYgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAMa0J5UGVyaW9kS0VZBQAAAAFrCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAxiQnlQZXJpb2RLRVkFAAAAAWIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAE2tleUxvY2tQYXJhbXNSZWNvcmQAAAABBQAAAAt1c2VyQWRkcmVzcwkBAAAAFmZvcm1hdExvY2tQYXJhbXNSZWNvcmQAAAAHBQAAAAd1c2VyTnVtBQAAAAZhbW91bnQFAAAABXN0YXJ0BQAAAAhkdXJhdGlvbgUAAAABawUAAAABYgUAAAAJZ3d4QW1vdW50BQAAAANuaWwBAAAAImV4dHJhY3RPcHRpb25hbFBheW1lbnRBbW91bnRPckZhaWwAAAACAAAAAWkAAAAPZXhwZWN0ZWRBc3NldElkAwkAAGYAAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQAAAgAAAAECAAAAG29ubHkgb25lIHBheW1lbnQgaXMgYWxsb3dlZAMJAAAAAAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAAAAAAAAAQAAAADcG10CQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAwkBAAAAAiE9AAAAAgkBAAAABXZhbHVlAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkBQAAAA9leHBlY3RlZEFzc2V0SWQJAAACAAAAAQIAAAAbaW52YWxpZCBhc3NldCBpZCBpbiBwYXltZW50CAUAAAADcG10AAAABmFtb3VudAEAAAAUY2FsY0N1cnJlbnRHd3hBbW91bnQAAAABAAAAC3VzZXJBZGRyZXNzBAAAAAVFTVBUWQIAAAAFZW1wdHkEAAAAEnVzZXIyTnVtTWFwcGluZ0tFWQkBAAAAEmtleVVzZXIyTnVtTWFwcGluZwAAAAEFAAAAC3VzZXJBZGRyZXNzBAAAAAd1c2VyTnVtCQEAAAALdmFsdWVPckVsc2UAAAACCQAEIgAAAAEFAAAAEnVzZXIyTnVtTWFwcGluZ0tFWQUAAAAFRU1QVFkEAAAAAWsJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQfAAAAAQkBAAAADWtleUxvY2tQYXJhbUsAAAABBQAAAAd1c2VyTnVtAAAAAAAAAAAABAAAAAFiCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHwAAAAEJAQAAAA1rZXlMb2NrUGFyYW1CAAAAAQUAAAAHdXNlck51bQAAAAAAAAAAAAQAAAANZ3d4QW1vdW50Q2FsYwkBAAAADWNhbGNHd3hBbW91bnQAAAADBQAAAAFrBQAAAAFiBQAAAAZoZWlnaHQEAAAACWd3eEFtb3VudAMJAABmAAAAAgAAAAAAAAAAAAUAAAANZ3d4QW1vdW50Q2FsYwAAAAAAAAAAAAUAAAANZ3d4QW1vdW50Q2FsYwUAAAAJZ3d4QW1vdW50AQAAABRpbnRlcm5hbENsYWltV3hCb29zdAAAAAMAAAAMbHBBc3NldElkU3RyAAAADnVzZXJBZGRyZXNzU3RyAAAACHJlYWRPbmx5BAAAAAVFTVBUWQIAAAAFRU1QVFkEAAAAEXVzZXJSZWNvcmRPckVtcHR5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAABHRoaXMJAQAAABNrZXlMb2NrUGFyYW1zUmVjb3JkAAAAAQUAAAAOdXNlckFkZHJlc3NTdHIFAAAABUVNUFRZAwkAAAAAAAACBQAAABF1c2VyUmVjb3JkT3JFbXB0eQUAAAAFRU1QVFkJAAUVAAAAAwAAAAAAAAAAAAUAAAADbmlsAgAAABV1c2VyUmVjb3JkOjppczo6ZW1wdHkEAAAAD3VzZXJSZWNvcmRBcnJheQkABLUAAAACBQAAABF1c2VyUmVjb3JkT3JFbXB0eQUAAAADU0VQBAAAAAp1c2VyTnVtU3RyCQABkQAAAAIFAAAAD3VzZXJSZWNvcmRBcnJheQUAAAAOSWR4TG9ja1VzZXJOdW0EAAAAHGd3eFJld2FyZEVtaXNzaW9uU3RhcnRIZWlnaHQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAARZ3d4UmV3YXJkQ29udHJhY3QJAQAAAB9rZXlHd3hSZXdhcmRFbWlzc2lvblN0YXJ0SGVpZ2h0AAAAAAAAAAAAAAAAAAQAAAAIRU1QVFlTVFICAAAABWVtcHR5BAAAAA0kdDAxMzA0MjEzNjEwAwkBAAAAAiE9AAAAAgUAAAAMbHBBc3NldElkU3RyBQAAAAhFTVBUWVNUUgQAAAAOcG9vbEFkZHJlc3NTdHIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAABprZXlGYWN0b3J5THAyQXNzZXRzTWFwcGluZwAAAAEFAAAADGxwQXNzZXRJZFN0cgkAASwAAAACAgAAABV1bnN1cHBvcnRlZCBscCBhc3NldCAFAAAADGxwQXNzZXRJZFN0cgQAAAADcHcxCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAABRrZXlGYWN0b3J5UG9vbFdlaWdodAAAAAEFAAAADnBvb2xBZGRyZXNzU3RyBAAAAANwdzAJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAAba2V5RmFjdG9yeVBvb2xXZWlnaHRIaXN0b3J5AAAAAgUAAAAOcG9vbEFkZHJlc3NTdHIAAAAAAAAAAAAFAAAAA3B3MQkABRQAAAACBQAAAANwdzAFAAAAA3B3MQMFAAAACHJlYWRPbmx5CQAFFAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAJAAACAAAAAQkAASwAAAACAgAAAChub3QgcmVhZG9ubHkgbW9kZTogdW5zdXBwb3J0ZWQgbHAgYXNzZXQgBQAAAAxscEFzc2V0SWRTdHIEAAAAC3Bvb2xXZWlnaHQwCAUAAAANJHQwMTMwNDIxMzYxMAAAAAJfMQQAAAALcG9vbFdlaWdodDEIBQAAAA0kdDAxMzA0MjEzNjEwAAAAAl8yBAAAABJ3eEVtaXNzaW9uUGVyQmxvY2sJAQAAAAxnZXRJbnRPckZhaWwAAAACBQAAABBlbWlzc2lvbkNvbnRyYWN0CQEAAAAea2V5RW1pc3Npb25SYXRlUGVyQmxvY2tDdXJyZW50AAAAAAQAAAANZW1pc3Npb25TdGFydAkBAAAADGdldEludE9yRmFpbAAAAAIFAAAAEGVtaXNzaW9uQ29udHJhY3QJAQAAABVrZXlFbWlzc2lvblN0YXJ0QmxvY2sAAAAABAAAAAtlbWlzc2lvbkVuZAkBAAAADGdldEludE9yRmFpbAAAAAIFAAAAEGVtaXNzaW9uQ29udHJhY3QJAQAAABNrZXlFbWlzc2lvbkVuZEJsb2NrAAAAAAQAAAABaAMJAABmAAAAAgUAAAAGaGVpZ2h0BQAAAAtlbWlzc2lvbkVuZAUAAAALZW1pc3Npb25FbmQFAAAABmhlaWdodAQAAAACZGgJAAGWAAAAAQkABEwAAAACCQAAZQAAAAIFAAAAAWgFAAAADWVtaXNzaW9uU3RhcnQJAARMAAAAAgAAAAAAAAAAAAUAAAADbmlsBAAAACJ1c2VyTHBCb29zdEVtaXNzaW9uTGFzdEludGVncmFsS0VZCQEAAAAia2V5VXNlckxwQm9vc3RFbWlzc2lvbkxhc3RJTlRFR1JBTAAAAAIFAAAACnVzZXJOdW1TdHIFAAAADGxwQXNzZXRJZFN0cgQAAAAgdXNlckJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWxLRVkJAQAAACBrZXlVc2VyQm9vc3RFbWlzc2lvbkxhc3RJTlRFR1JBTAAAAAEFAAAACnVzZXJOdW1TdHIEAAAAHXVzZXJCb29zdEVtaXNzaW9uTGFzdEludGVncmFsCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAInVzZXJMcEJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWxLRVkJAQAAAAxnZXRJbnRPclplcm8AAAACBQAAAAR0aGlzBQAAACB1c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbEtFWQQAAAAVYm9vc3RFbWlzc2lvbkludGVncmFsCQAAaQAAAAIJAABoAAAAAgkAAGgAAAACBQAAABJ3eEVtaXNzaW9uUGVyQmxvY2sFAAAAAmRoAAAAAAAAAAACAAAAAAAAAAADBAAAABl1c2VyQm9vc3RFbWlzc2lvbkludGVncmFsCQAAZQAAAAIFAAAAFWJvb3N0RW1pc3Npb25JbnRlZ3JhbAUAAAAddXNlckJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWwEAAAAA3VkaAkAAGsAAAADBQAAABl1c2VyQm9vc3RFbWlzc2lvbkludGVncmFsAAAAAAAAAAADCQAAaAAAAAIAAAAAAAAAAAIFAAAAEnd4RW1pc3Npb25QZXJCbG9jawQAAAAGdUxhc3RICQAAZQAAAAIFAAAAAWgFAAAAA3VkaAQAAAAEdWRoMAkAAZYAAAABCQAETAAAAAIJAABlAAAAAgUAAAAcZ3d4UmV3YXJkRW1pc3Npb25TdGFydEhlaWdodAUAAAAGdUxhc3RICQAETAAAAAIAAAAAAAAAAAAFAAAAA25pbAQAAAAEdWRoMQkAAGUAAAACCQAAZQAAAAIFAAAAAWgFAAAABnVMYXN0SAUAAAAEdWRoMAMDAwkAAGYAAAACAAAAAAAAAAAABQAAAAZ1TGFzdEgGCQAAZgAAAAIAAAAAAAAAAAAFAAAABHVkaDEGCQAAZwAAAAIJAQAAAANhYnMAAAABCQAAZQAAAAIJAABkAAAAAgUAAAAEdWRoMAUAAAAEdWRoMQUAAAADdWRoAAAAAAAAAAABCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAWaW52YWxpZCB1ZGggY2FsYzogdWRoPQkAAaQAAAABBQAAAAN1ZGgCAAAACCB1TGFzdEg9CQABpAAAAAEFAAAABnVMYXN0SAIAAAAGIHVkaDA9CQABpAAAAAEFAAAABHVkaDACAAAABiB1ZGgxPQkAAaQAAAABBQAAAAR1ZGgxAwkAAGYAAAACAAAAAAAAAAAABQAAABl1c2VyQm9vc3RFbWlzc2lvbkludGVncmFsCQAAAgAAAAECAAAAEndyb25nIGNhbGN1bGF0aW9ucwQAAAAXdXNlck1heEJvb3N0SW50ZWdyYWxLRVkJAQAAABdrZXlVc2VyTWF4Qm9vc3RJTlRFR1JBTAAAAAEFAAAACnVzZXJOdW1TdHIEAAAAGHRvdGFsTWF4Qm9vc3RJbnRlZ3JhbEtFWQkBAAAAGGtleVRvdGFsTWF4Qm9vc3RJTlRFR1JBTAAAAAAEAAAAD3VzZXJNYXhCb29zdEludAkBAAAADGdldEludE9yWmVybwAAAAIFAAAABHRoaXMFAAAAF3VzZXJNYXhCb29zdEludGVncmFsS0VZBAAAABB0b3RhbE1heEJvb3N0SW50CQEAAAAMZ2V0SW50T3JaZXJvAAAAAgUAAAAEdGhpcwUAAAAYdG90YWxNYXhCb29zdEludGVncmFsS0VZBAAAABF0b3RhbENhY2hlZEd3eEtFWQkBAAAAEWtleVRvdGFsQ2FjaGVkR3d4AAAAAAQAAAAOdG90YWxDYWNoZWRHd3gJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAARdG90YWxDYWNoZWRHd3hLRVkAAAAAAAAAAAAEAAAAC3VzZXJDdXJyR3d4CQEAAAAUY2FsY0N1cnJlbnRHd3hBbW91bnQAAAABBQAAAA51c2VyQWRkcmVzc1N0cgQAAAAhdXNlckJvb3N0QXZhbGFpYmxlVG9DbGFpbVRvdGFsS0VZCQEAAAAha2V5VXNlckJvb3N0QXZhbGFpYmxlVG9DbGFpbVRvdGFsAAAAAQUAAAAKdXNlck51bVN0cgQAAAAedXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsCQEAAAAMZ2V0SW50T3JaZXJvAAAAAgUAAAAEdGhpcwUAAAAhdXNlckJvb3N0QXZhbGFpYmxlVG9DbGFpbVRvdGFsS0VZBAAAABp1c2VyQm9vc3RFbWlzc2lvbkludGVncmFsMAkAAGsAAAADBQAAABl1c2VyQm9vc3RFbWlzc2lvbkludGVncmFsBQAAAAR1ZGgwBQAAAAN1ZGgEAAAAGnVzZXJCb29zdEVtaXNzaW9uSW50ZWdyYWwxCQAAawAAAAMFAAAAGXVzZXJCb29zdEVtaXNzaW9uSW50ZWdyYWwFAAAABHVkaDEFAAAAA3VkaAQAAAAecG9vbFVzZXJCb29zdEVtaXNzaW9uSW50ZWdyYWwwCQAAawAAAAMFAAAAGnVzZXJCb29zdEVtaXNzaW9uSW50ZWdyYWwwBQAAAAtwb29sV2VpZ2h0MAUAAAAOUE9PTFdFSUdIVE1VTFQEAAAAHnBvb2xVc2VyQm9vc3RFbWlzc2lvbkludGVncmFsMQkAAGsAAAADBQAAABp1c2VyQm9vc3RFbWlzc2lvbkludGVncmFsMQUAAAALcG9vbFdlaWdodDEFAAAADlBPT0xXRUlHSFRNVUxUBAAAACJ1c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWxOZXcwAwkAAAAAAAACBQAAAA50b3RhbENhY2hlZEd3eAAAAAAAAAAAAAAAAAAAAAAAAAkAAGsAAAADBQAAAB5wb29sVXNlckJvb3N0RW1pc3Npb25JbnRlZ3JhbDAFAAAAC3VzZXJDdXJyR3d4BQAAAA50b3RhbENhY2hlZEd3eAQAAAAidXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsTmV3MQMJAAAAAAAAAgUAAAAOdG90YWxDYWNoZWRHd3gAAAAAAAAAAAAAAAAAAAAAAAAJAABrAAAAAwUAAAAecG9vbFVzZXJCb29zdEVtaXNzaW9uSW50ZWdyYWwxBQAAAAt1c2VyQ3Vyckd3eAUAAAAOdG90YWxDYWNoZWRHd3gEAAAAIXVzZXJCb29zdEF2YWxpYWJsZVRvQ2xhaW1Ub3RhbE5ldwkAAGQAAAACBQAAACJ1c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWxOZXcwBQAAACJ1c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWxOZXcxBAAAABN1c2VyQm9vc3RDbGFpbWVkS0VZCQEAAAATa2V5VXNlckJvb3N0Q2xhaW1lZAAAAAEFAAAACnVzZXJOdW1TdHIEAAAAEHVzZXJCb29zdENsYWltZWQJAQAAAAxnZXRJbnRPclplcm8AAAACBQAAAAR0aGlzBQAAABN1c2VyQm9vc3RDbGFpbWVkS0VZBAAAABJ1c2VyQm9vc3RBdmFpbGFibGUJAABlAAAAAgUAAAAhdXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsTmV3BQAAABB1c2VyQm9vc3RDbGFpbWVkBAAAAAlkYXRhU3RhdGUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAInVzZXJMcEJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWxLRVkFAAAAFWJvb3N0RW1pc3Npb25JbnRlZ3JhbAUAAAADbmlsBAAAAAVkZWJ1ZwkABLkAAAACCQAETAAAAAIJAAEsAAAAAgIAAAAedXNlckJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWw9CQABpAAAAAEFAAAAHXVzZXJCb29zdEVtaXNzaW9uTGFzdEludGVncmFsCQAETAAAAAIJAAEsAAAAAgIAAAAadXNlckJvb3N0RW1pc3Npb25JbnRlZ3JhbD0JAAGkAAAAAQUAAAAZdXNlckJvb3N0RW1pc3Npb25JbnRlZ3JhbAkABEwAAAACCQABLAAAAAICAAAAEHVzZXJNYXhCb29zdEludD0JAAGkAAAAAQUAAAAPdXNlck1heEJvb3N0SW50CQAETAAAAAIJAAEsAAAAAgIAAAARdG90YWxNYXhCb29zdEludD0JAAGkAAAAAQUAAAAQdG90YWxNYXhCb29zdEludAkABEwAAAACCQABLAAAAAICAAAAH3VzZXJCb29zdEF2YWxpYWJsZVRvQ2xhaW1Ub3RhbD0JAAGkAAAAAQUAAAAedXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsCQAETAAAAAIJAAEsAAAAAgIAAAAidXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsTmV3PQkAAaQAAAABBQAAACF1c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWxOZXcJAARMAAAAAgkAASwAAAACAgAAABF1c2VyQm9vc3RDbGFpbWVkPQkAAaQAAAABBQAAABB1c2VyQm9vc3RDbGFpbWVkCQAETAAAAAIJAAEsAAAAAgIAAAATdXNlckJvb3N0QXZhaWxhYmxlPQkAAaQAAAABBQAAABJ1c2VyQm9vc3RBdmFpbGFibGUJAARMAAAAAgkAASwAAAACAgAAABt1c2VyQm9vc3RFbWlzc2lvbkludGVncmFsMD0JAAGkAAAAAQUAAAAadXNlckJvb3N0RW1pc3Npb25JbnRlZ3JhbDAJAARMAAAAAgkAASwAAAACAgAAABt1c2VyQm9vc3RFbWlzc2lvbkludGVncmFsMT0JAAGkAAAAAQUAAAAadXNlckJvb3N0RW1pc3Npb25JbnRlZ3JhbDEJAARMAAAAAgkAASwAAAACAgAAAB9wb29sVXNlckJvb3N0RW1pc3Npb25JbnRlZ3JhbDA9CQABpAAAAAEFAAAAHnBvb2xVc2VyQm9vc3RFbWlzc2lvbkludGVncmFsMAkABEwAAAACCQABLAAAAAICAAAAH3Bvb2xVc2VyQm9vc3RFbWlzc2lvbkludGVncmFsMT0JAAGkAAAAAQUAAAAecG9vbFVzZXJCb29zdEVtaXNzaW9uSW50ZWdyYWwxCQAETAAAAAIJAAEsAAAAAgIAAAAMcG9vbFdlaWdodDA9CQABpAAAAAEFAAAAC3Bvb2xXZWlnaHQwCQAETAAAAAIJAAEsAAAAAgIAAAAMcG9vbFdlaWdodDE9CQABpAAAAAEFAAAAC3Bvb2xXZWlnaHQxCQAETAAAAAIJAAEsAAAAAgIAAAACaD0JAAGkAAAAAQUAAAABaAkABEwAAAACCQABLAAAAAICAAAABHVkaD0JAAGkAAAAAQUAAAADdWRoCQAETAAAAAIJAAEsAAAAAgIAAAAHdUxhc3RIPQkAAaQAAAABBQAAAAZ1TGFzdEgJAARMAAAAAgkAASwAAAACAgAAAAV1ZGgwPQkAAaQAAAABBQAAAAR1ZGgwCQAETAAAAAIJAAEsAAAAAgIAAAAFdWRoMT0JAAGkAAAAAQUAAAAEdWRoMQkABEwAAAACCQABLAAAAAICAAAADHVzZXJDdXJyR3d4PQkAAaQAAAABBQAAAAt1c2VyQ3Vyckd3eAkABEwAAAACCQABLAAAAAICAAAAD3RvdGFsQ2FjaGVkR3d4PQkAAaQAAAABBQAAAA50b3RhbENhY2hlZEd3eAUAAAADbmlsAgAAAAI6OgkABRUAAAADBQAAACF1c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWxOZXcFAAAACWRhdGFTdGF0ZQUAAAAFZGVidWcAAAAJAAAAAWkBAAAAC2NvbnN0cnVjdG9yAAAABgAAABFmYWN0b3J5QWRkcmVzc1N0cgAAAA5sb2NrQXNzZXRJZFN0cgAAAA1taW5Mb2NrQW1vdW50AAAAC21pbkR1cmF0aW9uAAAAC21heER1cmF0aW9uAAAADG1hdGhDb250cmFjdAQAAAALY2hlY2tDYWxsZXIJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgkABE4AAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAOa2V5TmV4dFVzZXJOdW0AAAAAAAAAAAAAAAAACQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAlrZXlDb25maWcAAAAACQEAAAAMZm9ybWF0Q29uZmlnAAAABQUAAAAObG9ja0Fzc2V0SWRTdHIFAAAADW1pbkxvY2tBbW91bnQFAAAAC21pbkR1cmF0aW9uBQAAAAttYXhEdXJhdGlvbgUAAAAMbWF0aENvbnRyYWN0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABFrZXlGYWN0b3J5QWRkcmVzcwAAAAAFAAAAEWZhY3RvcnlBZGRyZXNzU3RyBQAAAANuaWwJAQAAAApTdGF0c0VudHJ5AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAEbG9jawAAAAEAAAAIZHVyYXRpb24EAAAACGNmZ0FycmF5CQEAAAAVcmVhZENvbmZpZ0FycmF5T3JGYWlsAAAAAAQAAAAKYXNzZXRJZFN0cgkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAANSWR4Q2ZnQXNzZXRJZAQAAAAHYXNzZXRJZAkAAlkAAAABBQAAAAphc3NldElkU3RyBAAAAA1taW5Mb2NrQW1vdW50CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAE0lkeENmZ01pbkxvY2tBbW91bnQEAAAAD21pbkxvY2tEdXJhdGlvbgkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABVJZHhDZmdNaW5Mb2NrRHVyYXRpb24EAAAAD21heExvY2tEdXJhdGlvbgkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABVJZHhDZmdNYXhMb2NrRHVyYXRpb24EAAAADG1hdGhDb250cmFjdAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAASSWR4Q2ZnTWF0aENvbnRyYWN0AwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAIAAAABAgAAADRpbnZhbGlkIHBheW1lbnQgLSBleGFjdCBvbmUgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBAAAAANwbXQJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAACXBtdEFtb3VudAgFAAAAA3BtdAAAAAZhbW91bnQDCQEAAAACIT0AAAACBQAAAAdhc3NldElkCQEAAAAFdmFsdWUAAAABCAUAAAADcG10AAAAB2Fzc2V0SWQJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAHmludmFsaWQgYXNzZXQgaXMgaW4gcGF5bWVudCAtIAUAAAAKYXNzZXRJZFN0cgIAAAAMIGlzIGV4cGVjdGVkBAAAAA5uZXh0VXNlck51bUtFWQkBAAAADmtleU5leHRVc2VyTnVtAAAAAAQAAAAOdXNlckFkZHJlc3NTdHIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAA51c2VySXNFeGlzdGluZwkBAAAACWlzRGVmaW5lZAAAAAEJAAQiAAAAAQkBAAAAEmtleVVzZXIyTnVtTWFwcGluZwAAAAEFAAAADnVzZXJBZGRyZXNzU3RyBAAAAAp1c2VyTnVtU3RyAwUAAAAOdXNlcklzRXhpc3RpbmcJAQAAAAV2YWx1ZQAAAAEJAAQiAAAAAQkBAAAAEmtleVVzZXIyTnVtTWFwcGluZwAAAAEFAAAADnVzZXJBZGRyZXNzU3RyCQABpAAAAAEJAQAAAAxnZXRJbnRPckZhaWwAAAACBQAAAAR0aGlzBQAAAA5uZXh0VXNlck51bUtFWQQAAAAHdXNlck51bQkBAAAADXBhcnNlSW50VmFsdWUAAAABBQAAAAp1c2VyTnVtU3RyBAAAAAlsb2NrU3RhcnQFAAAABmhlaWdodAQAAAANc3RhcnRCbG9ja0tFWQkBAAAAFmtleUxvY2tQYXJhbVN0YXJ0QmxvY2sAAAABBQAAAAp1c2VyTnVtU3RyBAAAAAtkdXJhdGlvbktFWQkBAAAAFGtleUxvY2tQYXJhbUR1cmF0aW9uAAAAAQUAAAAKdXNlck51bVN0cgQAAAANdXNlckFtb3VudEtFWQkBAAAAFmtleUxvY2tQYXJhbVVzZXJBbW91bnQAAAABBQAAAAp1c2VyTnVtU3RyAwkAAGYAAAACBQAAAA1taW5Mb2NrQW1vdW50BQAAAAlwbXRBbW91bnQJAAACAAAAAQkAASwAAAACAgAAACJhbW91bnQgaXMgbGVzcyB0aGVuIG1pbkxvY2tBbW91bnQ9CQABpAAAAAEFAAAADW1pbkxvY2tBbW91bnQDCQAAZgAAAAIFAAAAD21pbkxvY2tEdXJhdGlvbgUAAAAIZHVyYXRpb24JAAACAAAAAQkAASwAAAACAgAAAC1wYXNzZWQgZHVyYXRpb24gaXMgbGVzcyB0aGVuIG1pbkxvY2tEdXJhdGlvbj0JAAGkAAAAAQUAAAAPbWluTG9ja0R1cmF0aW9uAwkAAGYAAAACBQAAAAhkdXJhdGlvbgUAAAAPbWF4TG9ja0R1cmF0aW9uCQAAAgAAAAEJAAEsAAAAAgIAAAAwcGFzc2VkIGR1cmF0aW9uIGlzIGdyZWF0ZXIgdGhlbiBtYXhMb2NrRHVyYXRpb249CQABpAAAAAEFAAAAD21heExvY2tEdXJhdGlvbgMDBQAAAA51c2VySXNFeGlzdGluZwkAAGcAAAACCQAAZAAAAAIJAQAAAAxnZXRJbnRPckZhaWwAAAACBQAAAAR0aGlzBQAAAA1zdGFydEJsb2NrS0VZCQEAAAAMZ2V0SW50T3JGYWlsAAAAAgUAAAAEdGhpcwUAAAALZHVyYXRpb25LRVkFAAAACWxvY2tTdGFydAcJAAACAAAAAQIAAAA2dGhlcmUgaXMgYW4gYWN0aXZlIGxvY2sgLSBjb25zaWRlciB0byB1c2UgaW5jcmVhc2VMb2NrAwkAAGYAAAACCQEAAAAMZ2V0SW50T3JaZXJvAAAAAgUAAAAEdGhpcwUAAAANdXNlckFtb3VudEtFWQAAAAAAAAAAAAkAAAIAAAABCQABLAAAAAICAAAANHRoZXJlIGFyZSBsb2NrZWQgV1hzIC0gY29uc2lkZXIgdG8gdXNlIGluY3JlYXNlTG9jayAFAAAADXVzZXJBbW91bnRLRVkEAAAAB2NvZWZmWDgJAABrAAAAAwUAAAAIZHVyYXRpb24FAAAABU1VTFQ4BQAAAA9tYXhMb2NrRHVyYXRpb24EAAAADmdXeEFtb3VudFN0YXJ0CQAAawAAAAMFAAAACXBtdEFtb3VudAUAAAAHY29lZmZYOAUAAAAFTVVMVDgEAAAAE2dXeFBhcmFtc1Jlc3VsdExpc3QJAQAAAAlhc0FueUxpc3QAAAABCQAD/AAAAAQFAAAADG1hdGhDb250cmFjdAIAAAAVY2FsY0d3eFBhcmFtc1JFQURPTkxZCQAETAAAAAIFAAAADmdXeEFtb3VudFN0YXJ0CQAETAAAAAIFAAAACWxvY2tTdGFydAkABEwAAAACBQAAAAhkdXJhdGlvbgUAAAADbmlsBQAAAANuaWwEAAAAAWsJAQAAAAVhc0ludAAAAAEJAAGRAAAAAgUAAAATZ1d4UGFyYW1zUmVzdWx0TGlzdAAAAAAAAAAAAAQAAAABYgkBAAAABWFzSW50AAAAAQkAAZEAAAACBQAAABNnV3hQYXJhbXNSZXN1bHRMaXN0AAAAAAAAAAABBAAAAAZwZXJpb2QJAAGkAAAAAQkBAAAABWFzSW50AAAAAQkAAZEAAAACBQAAABNnV3hQYXJhbXNSZXN1bHRMaXN0AAAAAAAAAAACBAAAABJ3eEVtaXNzaW9uUGVyQmxvY2sJAQAAAAxnZXRJbnRPckZhaWwAAAACBQAAABBlbWlzc2lvbkNvbnRyYWN0CQEAAAAea2V5RW1pc3Npb25SYXRlUGVyQmxvY2tDdXJyZW50AAAAAAQAAAANZW1pc3Npb25TdGFydAkBAAAADGdldEludE9yRmFpbAAAAAIFAAAAEGVtaXNzaW9uQ29udHJhY3QJAQAAABVrZXlFbWlzc2lvblN0YXJ0QmxvY2sAAAAABAAAAAtlbWlzc2lvbkVuZAkBAAAADGdldEludE9yRmFpbAAAAAIFAAAAEGVtaXNzaW9uQ29udHJhY3QJAQAAABNrZXlFbWlzc2lvbkVuZEJsb2NrAAAAAAQAAAABaAMJAABmAAAAAgUAAAAGaGVpZ2h0BQAAAAtlbWlzc2lvbkVuZAUAAAALZW1pc3Npb25FbmQFAAAABmhlaWdodAQAAAACZGgJAAGWAAAAAQkABEwAAAACCQAAZQAAAAIFAAAAAWgFAAAADWVtaXNzaW9uU3RhcnQJAARMAAAAAgAAAAAAAAAAAAUAAAADbmlsBAAAACB1c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbEtFWQkBAAAAIGtleVVzZXJCb29zdEVtaXNzaW9uTGFzdElOVEVHUkFMAAAAAQUAAAAKdXNlck51bVN0cgQAAAAVYm9vc3RFbWlzc2lvbkludGVncmFsCQAAaQAAAAIJAABoAAAAAgkAAGgAAAACBQAAABJ3eEVtaXNzaW9uUGVyQmxvY2sFAAAAAmRoAAAAAAAAAAACAAAAAAAAAAADBAAAABd1c2VyTWF4Qm9vc3RJbnRlZ3JhbEtFWQkBAAAAF2tleVVzZXJNYXhCb29zdElOVEVHUkFMAAAAAQUAAAAKdXNlck51bVN0cgQAAAAYdG90YWxNYXhCb29zdEludGVncmFsS0VZCQEAAAAYa2V5VG90YWxNYXhCb29zdElOVEVHUkFMAAAAAAQAAAAPdXNlck1heEJvb3N0SW50CQAAaQAAAAIJAABoAAAAAgUAAAAOZ1d4QW1vdW50U3RhcnQFAAAACGR1cmF0aW9uAAAAAAAAAAACBAAAABB0b3RhbE1heEJvb3N0SW50CQEAAAAMZ2V0SW50T3JaZXJvAAAAAgUAAAAEdGhpcwUAAAAYdG90YWxNYXhCb29zdEludGVncmFsS0VZBAAAABF0b3RhbENhY2hlZEd3eEtFWQkBAAAAEWtleVRvdGFsQ2FjaGVkR3d4AAAAAAQAAAAOdG90YWxDYWNoZWRHd3gJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAARdG90YWxDYWNoZWRHd3hLRVkAAAAAAAAAAAAEAAAAA2FycgMFAAAADnVzZXJJc0V4aXN0aW5nBQAAAANuaWwJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADm5leHRVc2VyTnVtS0VZCQAAZAAAAAIFAAAAB3VzZXJOdW0AAAAAAAAAAAEJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEmtleVVzZXIyTnVtTWFwcGluZwAAAAEFAAAADnVzZXJBZGRyZXNzU3RyBQAAAAp1c2VyTnVtU3RyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABJrZXlOdW0yVXNlck1hcHBpbmcAAAABBQAAAAp1c2VyTnVtU3RyBQAAAA51c2VyQWRkcmVzc1N0cgUAAAADbmlsCQAETgAAAAIJAARNAAAAAgkABE4AAAACCQAETgAAAAIFAAAAA2FycgkBAAAAD0xvY2tQYXJhbXNFbnRyeQAAAAgFAAAADnVzZXJBZGRyZXNzU3RyBQAAAAp1c2VyTnVtU3RyBQAAAAlwbXRBbW91bnQFAAAACWxvY2tTdGFydAUAAAAIZHVyYXRpb24FAAAAAWsFAAAAAWIFAAAABnBlcmlvZAkBAAAAClN0YXRzRW50cnkAAAAEBQAAAAlwbXRBbW91bnQFAAAACGR1cmF0aW9uAAAAAAAAAAABAwUAAAAOdXNlcklzRXhpc3RpbmcAAAAAAAAAAAAAAAAAAAAAAAEJAQAAAAxIaXN0b3J5RW50cnkAAAAIAgAAAARsb2NrBQAAAA51c2VyQWRkcmVzc1N0cgUAAAAJcG10QW1vdW50BQAAAAlsb2NrU3RhcnQFAAAACGR1cmF0aW9uBQAAAAFrBQAAAAFiBQAAAAFpCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAACB1c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbEtFWQUAAAAVYm9vc3RFbWlzc2lvbkludGVncmFsCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABF0b3RhbENhY2hlZEd3eEtFWQkAAGQAAAACBQAAAA50b3RhbENhY2hlZEd3eAUAAAAOZ1d4QW1vdW50U3RhcnQFAAAAA25pbAAAAAFpAQAAAAxpbmNyZWFzZUxvY2sAAAABAAAADWRlbHRhRHVyYXRpb24EAAAACGNmZ0FycmF5CQEAAAAVcmVhZENvbmZpZ0FycmF5T3JGYWlsAAAAAAQAAAAKYXNzZXRJZFN0cgkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAANSWR4Q2ZnQXNzZXRJZAQAAAAHYXNzZXRJZAkAAlkAAAABBQAAAAphc3NldElkU3RyBAAAAA9taW5Mb2NrRHVyYXRpb24JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAAVSWR4Q2ZnTWluTG9ja0R1cmF0aW9uBAAAAA9tYXhMb2NrRHVyYXRpb24JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAAVSWR4Q2ZnTWF4TG9ja0R1cmF0aW9uBAAAAAxtYXRoQ29udHJhY3QJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAEklkeENmZ01hdGhDb250cmFjdAQAAAAJcG10QW1vdW50CQEAAAAiZXh0cmFjdE9wdGlvbmFsUGF5bWVudEFtb3VudE9yRmFpbAAAAAIFAAAAAWkFAAAAB2Fzc2V0SWQEAAAADnVzZXJBZGRyZXNzU3RyCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAPdXNlclJlY29yZEFycmF5CQEAAAAacmVhZExvY2tQYXJhbXNSZWNvcmRPckZhaWwAAAABBQAAAA51c2VyQWRkcmVzc1N0cgQAAAAKdXNlck51bVN0cgkAAZEAAAACBQAAAA91c2VyUmVjb3JkQXJyYXkFAAAADklkeExvY2tVc2VyTnVtBAAAAAp1c2VyQW1vdW50CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAPdXNlclJlY29yZEFycmF5BQAAAA1JZHhMb2NrQW1vdW50BAAAAAlsb2NrU3RhcnQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAA91c2VyUmVjb3JkQXJyYXkFAAAADElkeExvY2tTdGFydAQAAAAMbG9ja0R1cmF0aW9uCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAPdXNlclJlY29yZEFycmF5BQAAAA9JZHhMb2NrRHVyYXRpb24EAAAAB2xvY2tFbmQJAABkAAAAAgUAAAAJbG9ja1N0YXJ0BQAAAAxsb2NrRHVyYXRpb24EAAAAEXJlbWFpbmluZ0R1cmF0aW9uCQABlgAAAAEJAARMAAAAAgkAAGUAAAACBQAAAAdsb2NrRW5kBQAAAAZoZWlnaHQJAARMAAAAAgAAAAAAAAAAAAUAAAADbmlsBAAAAA11c2VyQW1vdW50TmV3CQAAZAAAAAIFAAAACnVzZXJBbW91bnQFAAAACXBtdEFtb3VudAQAAAAPbG9ja0R1cmF0aW9uTmV3CQAAZAAAAAIFAAAAEXJlbWFpbmluZ0R1cmF0aW9uBQAAAA1kZWx0YUR1cmF0aW9uAwkAAGYAAAACAAAAAAAAAAAABQAAAA1kZWx0YUR1cmF0aW9uCQAAAgAAAAECAAAAGmR1cmF0aW9uIGlzIGxlc3MgdGhlbiB6ZXJvAwkAAGYAAAACBQAAAA9taW5Mb2NrRHVyYXRpb24FAAAAD2xvY2tEdXJhdGlvbk5ldwkAAAIAAAABCQABLAAAAAICAAAALWxvY2tEdXJhdGlvbk5ldyBpcyBsZXNzIHRoZW4gbWluTG9ja0R1cmF0aW9uPQkAAaQAAAABBQAAAA9taW5Mb2NrRHVyYXRpb24DCQAAZgAAAAIFAAAAD2xvY2tEdXJhdGlvbk5ldwUAAAAPbWF4TG9ja0R1cmF0aW9uCQAAAgAAAAEJAAEsAAAAAgIAAABEZGVsdGFEdXJhdGlvbiArIGV4aXN0ZWRMb2NrRHVyYXRpb24gaXMgZ3JlYXRlciB0aGVuIG1heExvY2tEdXJhdGlvbj0JAAGkAAAAAQUAAAAPbWF4TG9ja0R1cmF0aW9uBAAAAAdjb2VmZlg4CQAAawAAAAMFAAAAD2xvY2tEdXJhdGlvbk5ldwUAAAAFTVVMVDgFAAAAD21heExvY2tEdXJhdGlvbgQAAAAOZ1d4QW1vdW50U3RhcnQJAABrAAAAAwUAAAANdXNlckFtb3VudE5ldwUAAAAHY29lZmZYOAUAAAAFTVVMVDgEAAAADGxvY2tTdGFydE5ldwUAAAAGaGVpZ2h0BAAAABNnV3hQYXJhbXNSZXN1bHRMaXN0CQEAAAAJYXNBbnlMaXN0AAAAAQkAA/wAAAAEBQAAAAxtYXRoQ29udHJhY3QCAAAAFWNhbGNHd3hQYXJhbXNSRUFET05MWQkABEwAAAACBQAAAA5nV3hBbW91bnRTdGFydAkABEwAAAACBQAAAAxsb2NrU3RhcnROZXcJAARMAAAAAgUAAAAPbG9ja0R1cmF0aW9uTmV3BQAAAANuaWwFAAAAA25pbAQAAAABawkBAAAABWFzSW50AAAAAQkAAZEAAAACBQAAABNnV3hQYXJhbXNSZXN1bHRMaXN0AAAAAAAAAAAABAAAAAFiCQEAAAAFYXNJbnQAAAABCQABkQAAAAIFAAAAE2dXeFBhcmFtc1Jlc3VsdExpc3QAAAAAAAAAAAEEAAAABnBlcmlvZAkAAaQAAAABCQEAAAAFYXNJbnQAAAABCQABkQAAAAIFAAAAE2dXeFBhcmFtc1Jlc3VsdExpc3QAAAAAAAAAAAIEAAAAEnd4RW1pc3Npb25QZXJCbG9jawkBAAAADGdldEludE9yRmFpbAAAAAIFAAAAEGVtaXNzaW9uQ29udHJhY3QJAQAAAB5rZXlFbWlzc2lvblJhdGVQZXJCbG9ja0N1cnJlbnQAAAAABAAAAA1lbWlzc2lvblN0YXJ0CQEAAAAMZ2V0SW50T3JGYWlsAAAAAgUAAAAQZW1pc3Npb25Db250cmFjdAkBAAAAFWtleUVtaXNzaW9uU3RhcnRCbG9jawAAAAAEAAAAC2VtaXNzaW9uRW5kCQEAAAAMZ2V0SW50T3JGYWlsAAAAAgUAAAAQZW1pc3Npb25Db250cmFjdAkBAAAAE2tleUVtaXNzaW9uRW5kQmxvY2sAAAAABAAAAAFoAwkAAGYAAAACBQAAAAZoZWlnaHQFAAAAC2VtaXNzaW9uRW5kBQAAAAtlbWlzc2lvbkVuZAUAAAAGaGVpZ2h0BAAAAAJkaAkAAZYAAAABCQAETAAAAAIJAABlAAAAAgUAAAABaAUAAAANZW1pc3Npb25TdGFydAkABEwAAAACAAAAAAAAAAAABQAAAANuaWwEAAAAIHVzZXJCb29zdEVtaXNzaW9uTGFzdEludGVncmFsS0VZCQEAAAAga2V5VXNlckJvb3N0RW1pc3Npb25MYXN0SU5URUdSQUwAAAABBQAAAAp1c2VyTnVtU3RyBAAAAB11c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbAkBAAAADGdldEludE9yWmVybwAAAAIFAAAABHRoaXMFAAAAIHVzZXJCb29zdEVtaXNzaW9uTGFzdEludGVncmFsS0VZBAAAABVib29zdEVtaXNzaW9uSW50ZWdyYWwJAABpAAAAAgkAAGgAAAACCQAAaAAAAAIFAAAAEnd4RW1pc3Npb25QZXJCbG9jawUAAAACZGgAAAAAAAAAAAIAAAAAAAAAAAMEAAAAGXVzZXJCb29zdEVtaXNzaW9uSW50ZWdyYWwJAABlAAAAAgUAAAAVYm9vc3RFbWlzc2lvbkludGVncmFsBQAAAB11c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbAMJAABmAAAAAgAAAAAAAAAAAAUAAAAZdXNlckJvb3N0RW1pc3Npb25JbnRlZ3JhbAkAAAIAAAABAgAAABJ3cm9uZyBjYWxjdWxhdGlvbnMEAAAAF3VzZXJNYXhCb29zdEludGVncmFsS0VZCQEAAAAXa2V5VXNlck1heEJvb3N0SU5URUdSQUwAAAABBQAAAAp1c2VyTnVtU3RyBAAAABh0b3RhbE1heEJvb3N0SW50ZWdyYWxLRVkJAQAAABhrZXlUb3RhbE1heEJvb3N0SU5URUdSQUwAAAAABAAAAA91c2VyTWF4Qm9vc3RJbnQJAQAAAAxnZXRJbnRPclplcm8AAAACBQAAAAR0aGlzBQAAABd1c2VyTWF4Qm9vc3RJbnRlZ3JhbEtFWQQAAAAQdG90YWxNYXhCb29zdEludAkBAAAADGdldEludE9yWmVybwAAAAIFAAAABHRoaXMFAAAAGHRvdGFsTWF4Qm9vc3RJbnRlZ3JhbEtFWQQAAAALY3VyclVzZXJHd3gJAQAAABRjYWxjQ3VycmVudEd3eEFtb3VudAAAAAEFAAAADnVzZXJBZGRyZXNzU3RyBAAAAAdnd3hEaWZmCQAAZQAAAAIFAAAADmdXeEFtb3VudFN0YXJ0BQAAAAtjdXJyVXNlckd3eAMJAABmAAAAAgAAAAAAAAAAAAUAAAAHZ3d4RGlmZgkAAAIAAAABCQABLAAAAAICAAAAGGd3eERpZmYgaXMgbGVzcyB0aGVuIDA6IAkAAaQAAAABBQAAAAdnd3hEaWZmBAAAABF0b3RhbENhY2hlZEd3eEtFWQkBAAAAEWtleVRvdGFsQ2FjaGVkR3d4AAAAAAQAAAAOdG90YWxDYWNoZWRHd3gJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAARdG90YWxDYWNoZWRHd3hLRVkAAAAAAAAAAAAEAAAAIXVzZXJCb29zdEF2YWxhaWJsZVRvQ2xhaW1Ub3RhbEtFWQkBAAAAIWtleVVzZXJCb29zdEF2YWxhaWJsZVRvQ2xhaW1Ub3RhbAAAAAEFAAAACnVzZXJOdW1TdHIEAAAAHnVzZXJCb29zdEF2YWxpYWJsZVRvQ2xhaW1Ub3RhbAkBAAAADGdldEludE9yWmVybwAAAAIFAAAABHRoaXMFAAAAIXVzZXJCb29zdEF2YWxhaWJsZVRvQ2xhaW1Ub3RhbEtFWQQAAAAhdXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsTmV3CQAAawAAAAMFAAAAGXVzZXJCb29zdEVtaXNzaW9uSW50ZWdyYWwFAAAAC2N1cnJVc2VyR3d4BQAAAA50b3RhbENhY2hlZEd3eAQAAAASdXNlck1heEJvb3N0SW50TmV3CQAAaQAAAAIJAABoAAAAAgUAAAAOZ1d4QW1vdW50U3RhcnQFAAAAD2xvY2tEdXJhdGlvbk5ldwAAAAAAAAAAAgQAAAAYcmVtYWluaW5nVXNlck1heEJvb3N0SW50CQAAaQAAAAIJAABoAAAAAgUAAAALY3VyclVzZXJHd3gFAAAAEXJlbWFpbmluZ0R1cmF0aW9uAAAAAAAAAAACBAAAABN1c2VyTWF4Qm9vc3RJbnREaWZmCQAAZQAAAAIFAAAAEnVzZXJNYXhCb29zdEludE5ldwUAAAAYcmVtYWluaW5nVXNlck1heEJvb3N0SW50CQAETgAAAAIJAARNAAAAAgkABE4AAAACCQEAAAAPTG9ja1BhcmFtc0VudHJ5AAAACAUAAAAOdXNlckFkZHJlc3NTdHIFAAAACnVzZXJOdW1TdHIFAAAADXVzZXJBbW91bnROZXcFAAAADGxvY2tTdGFydE5ldwUAAAAPbG9ja0R1cmF0aW9uTmV3BQAAAAFrBQAAAAFiBQAAAAZwZXJpb2QJAQAAAApTdGF0c0VudHJ5AAAABAUAAAAJcG10QW1vdW50BQAAAA1kZWx0YUR1cmF0aW9uAAAAAAAAAAAAAAAAAAAAAAAACQEAAAAMSGlzdG9yeUVudHJ5AAAACAIAAAAEbG9jawUAAAAOdXNlckFkZHJlc3NTdHIFAAAACXBtdEFtb3VudAUAAAAJbG9ja1N0YXJ0BQAAAA9sb2NrRHVyYXRpb25OZXcFAAAAAWsFAAAAAWIFAAAAAWkJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEXRvdGFsQ2FjaGVkR3d4S0VZCQAAZAAAAAIFAAAADnRvdGFsQ2FjaGVkR3d4BQAAAAdnd3hEaWZmBQAAAANuaWwAAAABaQEAAAAMY2xhaW1XeEJvb3N0AAAAAgAAAAxscEFzc2V0SWRTdHIAAAAOdXNlckFkZHJlc3NTdHIDCQEAAAACIT0AAAACBQAAAA9zdGFraW5nQ29udHJhY3QIBQAAAAFpAAAABmNhbGxlcgkAAAIAAAABAgAAABJwZXJtaXNzaW9ucyBkZW5pZWQEAAAADSR0MDI3ODEwMjc5MTIJAQAAABRpbnRlcm5hbENsYWltV3hCb29zdAAAAAMFAAAADGxwQXNzZXRJZFN0cgUAAAAOdXNlckFkZHJlc3NTdHIHBAAAABJ1c2VyQm9vc3RBdmFpbGFibGUIBQAAAA0kdDAyNzgxMDI3OTEyAAAAAl8xBAAAAAlkYXRhU3RhdGUIBQAAAA0kdDAyNzgxMDI3OTEyAAAAAl8yBAAAAAVkZWJ1ZwgFAAAADSR0MDI3ODEwMjc5MTIAAAACXzMJAAUUAAAAAgUAAAAJZGF0YVN0YXRlCQAETAAAAAIFAAAAEnVzZXJCb29zdEF2YWlsYWJsZQUAAAADbmlsAAAAAWkBAAAAFGNsYWltV3hCb29zdFJFQURPTkxZAAAAAgAAAAxscEFzc2V0SWRTdHIAAAAOdXNlckFkZHJlc3NTdHIEAAAADSR0MDI4MDQ0MjgxNDUJAQAAABRpbnRlcm5hbENsYWltV3hCb29zdAAAAAMFAAAADGxwQXNzZXRJZFN0cgUAAAAOdXNlckFkZHJlc3NTdHIGBAAAABJ1c2VyQm9vc3RBdmFpbGFibGUIBQAAAA0kdDAyODA0NDI4MTQ1AAAAAl8xBAAAAAlkYXRhU3RhdGUIBQAAAA0kdDAyODA0NDI4MTQ1AAAAAl8yBAAAAAVkZWJ1ZwgFAAAADSR0MDI4MDQ0MjgxNDUAAAACXzMJAAUUAAAAAgUAAAADbmlsCQAETAAAAAIFAAAAEnVzZXJCb29zdEF2YWlsYWJsZQkABEwAAAACBQAAAAVkZWJ1ZwUAAAADbmlsAAAAAWkBAAAABnVubG9jawAAAAEAAAALdXNlckFkZHJlc3MEAAAAD3VzZXJSZWNvcmRBcnJheQkBAAAAGnJlYWRMb2NrUGFyYW1zUmVjb3JkT3JGYWlsAAAAAQUAAAALdXNlckFkZHJlc3MEAAAACnVzZXJOdW1TdHIJAAGRAAAAAgUAAAAPdXNlclJlY29yZEFycmF5BQAAAA5JZHhMb2NrVXNlck51bQQAAAAKdXNlckFtb3VudAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAD3VzZXJSZWNvcmRBcnJheQUAAAANSWR4TG9ja0Ftb3VudAQAAAAJbG9ja1N0YXJ0CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAPdXNlclJlY29yZEFycmF5BQAAAAxJZHhMb2NrU3RhcnQEAAAADGxvY2tEdXJhdGlvbgkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAD3VzZXJSZWNvcmRBcnJheQUAAAAPSWR4TG9ja0R1cmF0aW9uBAAAAAdsb2NrRW5kCQAAZAAAAAIFAAAACWxvY2tTdGFydAUAAAAMbG9ja0R1cmF0aW9uBAAAAAhjZmdBcnJheQkBAAAAFXJlYWRDb25maWdBcnJheU9yRmFpbAAAAAAEAAAAB2Fzc2V0SWQJAAJZAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAANSWR4Q2ZnQXNzZXRJZAQAAAAMbWF0aENvbnRyYWN0CQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABJJZHhDZmdNYXRoQ29udHJhY3QDCQAAZwAAAAIFAAAAB2xvY2tFbmQFAAAABmhlaWdodAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAFd2FpdCAJAAGkAAAAAQUA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", "chainId": 84, "height": 1959375, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DBDMkVpd6MpKd8b83QY8r2YwaPNchBnmx9EZy1hB6aXw Next: 9heaPi1NThZTuxzCg1yfszA6b4YefV7GErYeH45e7MmE Full:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = "__" | |
5 | 5 | ||
6 | 6 | let b = 8 | |
7 | 7 | ||
8 | 8 | let c = 100000000 | |
9 | 9 | ||
10 | 10 | let d = c | |
11 | 11 | ||
12 | 12 | func e (f,g) = valueOrErrorMessage(getString(f, g), (("mandatory this." + g) + " is not defined")) | |
13 | 13 | ||
14 | 14 | ||
15 | 15 | func h (f,g) = valueOrElse(getInteger(f, g), 0) | |
16 | 16 | ||
17 | 17 | ||
18 | 18 | func i (f,g,j) = valueOrElse(getInteger(f, g), j) | |
19 | 19 | ||
20 | 20 | ||
21 | 21 | func k (f,g) = valueOrErrorMessage(getInteger(f, g), (("mandatory this." + g) + " is not defined")) | |
22 | 22 | ||
23 | 23 | ||
24 | 24 | func l (m) = if ((0 > m)) | |
25 | 25 | then -(m) | |
26 | 26 | else m | |
27 | 27 | ||
28 | 28 | ||
29 | 29 | func n (m) = { | |
30 | 30 | let o = m | |
31 | 31 | if ($isInstanceOf(o, "List[Any]")) | |
32 | 32 | then { | |
33 | 33 | let p = o | |
34 | 34 | p | |
35 | 35 | } | |
36 | 36 | else throw("fail to cast into List[Any]") | |
37 | 37 | } | |
38 | 38 | ||
39 | 39 | ||
40 | 40 | func q (m) = { | |
41 | 41 | let o = m | |
42 | 42 | if ($isInstanceOf(o, "Int")) | |
43 | 43 | then { | |
44 | 44 | let r = o | |
45 | 45 | r | |
46 | 46 | } | |
47 | 47 | else throw("fail to cast into Int") | |
48 | 48 | } | |
49 | 49 | ||
50 | 50 | ||
51 | 51 | func s () = "%s%s__config__factoryAddress" | |
52 | 52 | ||
53 | 53 | ||
54 | 54 | let t = 1 | |
55 | 55 | ||
56 | 56 | let u = 2 | |
57 | 57 | ||
58 | 58 | let v = 3 | |
59 | 59 | ||
60 | 60 | let w = 4 | |
61 | 61 | ||
62 | 62 | let x = 5 | |
63 | 63 | ||
64 | 64 | let y = 6 | |
65 | 65 | ||
66 | 66 | let z = 7 | |
67 | 67 | ||
68 | 68 | let A = 8 | |
69 | 69 | ||
70 | 70 | let B = 9 | |
71 | 71 | ||
72 | 72 | let C = 10 | |
73 | 73 | ||
74 | 74 | let D = 11 | |
75 | 75 | ||
76 | 76 | func E () = "%s__factoryConfig" | |
77 | 77 | ||
78 | 78 | ||
79 | 79 | func F (G) = makeString(["%s%s%s", G, "mappings__lpAsset2PoolContract"], a) | |
80 | 80 | ||
81 | 81 | ||
82 | 82 | func H () = "%s__lpTokensList" | |
83 | 83 | ||
84 | 84 | ||
85 | 85 | func I (G) = makeString(["%s%s%s", G, "mappings__lpAsset2PoolContract"], a) | |
86 | 86 | ||
87 | 87 | ||
88 | 88 | func J (K) = makeString(["%s%s", "poolWeight", K], a) | |
89 | 89 | ||
90 | 90 | ||
91 | 91 | func L (M,N) = ((("%s%s__poolWeight__" + M) + "__") + toString(N)) | |
92 | 92 | ||
93 | 93 | ||
94 | 94 | func O () = addressFromStringValue(e(this, s())) | |
95 | 95 | ||
96 | 96 | ||
97 | 97 | func P () = split(valueOrElse(getString(O(), H()), ""), a) | |
98 | 98 | ||
99 | 99 | ||
100 | 100 | func Q (R) = split(e(R, E()), a) | |
101 | 101 | ||
102 | 102 | ||
103 | 103 | func S (T) = addressFromStringValue(T[u]) | |
104 | 104 | ||
105 | 105 | ||
106 | 106 | func U (T) = addressFromStringValue(T[x]) | |
107 | 107 | ||
108 | 108 | ||
109 | 109 | func V (T) = addressFromStringValue(T[t]) | |
110 | 110 | ||
111 | 111 | ||
112 | 112 | func W (T) = addressFromStringValue(T[C]) | |
113 | 113 | ||
114 | 114 | ||
115 | 115 | func X () = "%s__managerPublicKey" | |
116 | 116 | ||
117 | 117 | ||
118 | 118 | func Y () = "%s__pendingManagerPublicKey" | |
119 | 119 | ||
120 | 120 | ||
121 | 121 | func Z () = "%s%s__ratePerBlock__current" | |
122 | 122 | ||
123 | 123 | ||
124 | 124 | func aa () = "%s%s__ratePerBlockMax__current" | |
125 | 125 | ||
126 | 126 | ||
127 | 127 | func ab () = "%s%s__emission__startBlock" | |
128 | 128 | ||
129 | 129 | ||
130 | 130 | func ac () = "%s%s__emission__duration" | |
131 | 131 | ||
132 | 132 | ||
133 | 133 | func ad () = "%s%s__emission__endBlock" | |
134 | 134 | ||
135 | 135 | ||
136 | 136 | func ae () = "%s__nextPeriod" | |
137 | 137 | ||
138 | 138 | ||
139 | 139 | func af () = "%s%s__gwxRewardEmissionPart__startHeight" | |
140 | 140 | ||
141 | 141 | ||
142 | 142 | let ag = 1 | |
143 | 143 | ||
144 | 144 | let ah = 2 | |
145 | 145 | ||
146 | 146 | let ai = 3 | |
147 | 147 | ||
148 | 148 | let aj = 4 | |
149 | 149 | ||
150 | 150 | let ak = 5 | |
151 | 151 | ||
152 | 152 | func al () = "%s__config" | |
153 | 153 | ||
154 | 154 | ||
155 | 155 | func am () = split(e(this, al()), a) | |
156 | 156 | ||
157 | 157 | ||
158 | 158 | func an (ao,ap,aq,ar,as) = makeString(["%s%d%d%d", ao, ap, aq, ar, as], a) | |
159 | 159 | ||
160 | 160 | ||
161 | 161 | func at (ao,ap,aq,ar,as) = an(ao, toString(ap), toString(aq), toString(ar), as) | |
162 | 162 | ||
163 | 163 | ||
164 | 164 | func au () = { | |
165 | 165 | let o = getString(X()) | |
166 | 166 | if ($isInstanceOf(o, "String")) | |
167 | 167 | then { | |
168 | 168 | let av = o | |
169 | 169 | fromBase58String(av) | |
170 | 170 | } | |
171 | 171 | else if ($isInstanceOf(o, "Unit")) | |
172 | 172 | then unit | |
173 | 173 | else throw("Match error") | |
174 | 174 | } | |
175 | 175 | ||
176 | 176 | ||
177 | 177 | func aw () = { | |
178 | 178 | let o = getString(Y()) | |
179 | 179 | if ($isInstanceOf(o, "String")) | |
180 | 180 | then { | |
181 | 181 | let av = o | |
182 | 182 | fromBase58String(av) | |
183 | 183 | } | |
184 | 184 | else if ($isInstanceOf(o, "Unit")) | |
185 | 185 | then unit | |
186 | 186 | else throw("Match error") | |
187 | 187 | } | |
188 | 188 | ||
189 | 189 | ||
190 | 190 | func ax (ay) = { | |
191 | 191 | let az = throw("Permission denied") | |
192 | 192 | let o = au() | |
193 | 193 | if ($isInstanceOf(o, "ByteVector")) | |
194 | 194 | then { | |
195 | 195 | let aA = o | |
196 | 196 | if ((ay.callerPublicKey == aA)) | |
197 | 197 | then true | |
198 | 198 | else az | |
199 | 199 | } | |
200 | 200 | else if ($isInstanceOf(o, "Unit")) | |
201 | 201 | then if ((ay.caller == this)) | |
202 | 202 | then true | |
203 | 203 | else az | |
204 | 204 | else throw("Match error") | |
205 | 205 | } | |
206 | 206 | ||
207 | 207 | ||
208 | 208 | let aB = 1 | |
209 | 209 | ||
210 | 210 | let aC = 2 | |
211 | 211 | ||
212 | 212 | let aD = 3 | |
213 | 213 | ||
214 | 214 | let aE = 4 | |
215 | 215 | ||
216 | 216 | let aF = 5 | |
217 | 217 | ||
218 | 218 | let aG = 6 | |
219 | 219 | ||
220 | 220 | func aH (aI) = makeString(["%s%s__lock", aI], a) | |
221 | 221 | ||
222 | 222 | ||
223 | 223 | func aJ (aI) = split(e(this, aH(aI)), a) | |
224 | 224 | ||
225 | 225 | ||
226 | 226 | func aK (aL,aM,aN,aO,aP,aQ,aR,aS) = makeString(["%d%d%d%d%d%d%d%d", aL, aM, aN, aO, aP, aQ, aR, aS], a) | |
227 | 227 | ||
228 | 228 | ||
229 | 229 | func aT (aL,aM,aN,aO,aP,aQ,aS) = aK(aL, toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(lastBlock.timestamp), toString(aS)) | |
230 | 230 | ||
231 | 231 | ||
232 | 232 | func aU () = "%s__nextUserNum" | |
233 | 233 | ||
234 | 234 | ||
235 | 235 | func aV (aI) = makeString(["%s%s%s__mapping__user2num", aI], a) | |
236 | 236 | ||
237 | 237 | ||
238 | 238 | func aW (N) = makeString(["%s%s%s__mapping__num2user", N], a) | |
239 | 239 | ||
240 | 240 | ||
241 | 241 | func aX (aL) = makeString(["%s%d%s__paramByUserNum", aL, "amount"], a) | |
242 | 242 | ||
243 | 243 | ||
244 | 244 | func aY (aL) = makeString(["%s%d%s__paramByUserNum", aL, "start"], a) | |
245 | 245 | ||
246 | 246 | ||
247 | 247 | func aZ (aL) = makeString(["%s%d%s__paramByUserNum", aL, "duration"], a) | |
248 | 248 | ||
249 | 249 | ||
250 | 250 | func ba (aL) = makeString(["%s%d%s__paramByUserNum", aL, "k"], a) | |
251 | 251 | ||
252 | 252 | ||
253 | 253 | func bb (aL) = makeString(["%s%d%s__paramByUserNum", aL, "b"], a) | |
254 | 254 | ||
255 | 255 | ||
256 | 256 | func bc (aL,bd) = makeString(["%s%d%s%d__paramByPeriod", aL, "k", bd], a) | |
257 | 257 | ||
258 | 258 | ||
259 | 259 | func be (aL,bd) = makeString(["%s%d%s%d__paramByPeriod", aL, "b", bd], a) | |
260 | 260 | ||
261 | 261 | ||
262 | 262 | func bf () = "%s%s__stats__activeTotalLocked" | |
263 | 263 | ||
264 | 264 | ||
265 | 265 | func bg () = "%s%s__stats__locksDurationSumInBlocks" | |
266 | 266 | ||
267 | 267 | ||
268 | 268 | func bh () = "%s%s__stats__locksCount" | |
269 | 269 | ||
270 | 270 | ||
271 | 271 | func bi () = "%s%s__stats__activeUsersCount" | |
272 | 272 | ||
273 | 273 | ||
274 | 274 | func bj (aL) = makeString(["%s%d__userBoostEmissionLastInt", aL], a) | |
275 | 275 | ||
276 | 276 | ||
277 | 277 | func bk (aL,bl) = makeString(["%s%d__userBoostEmissionLastInt", aL, bl], a) | |
278 | 278 | ||
279 | 279 | ||
280 | 280 | func bm (aL) = makeString(["%s%d__maxBoostInt", aL], a) | |
281 | 281 | ||
282 | 282 | ||
283 | 283 | func bn () = "%s%s__maxBoostInt__total" | |
284 | 284 | ||
285 | 285 | ||
286 | 286 | func bo (aL) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aL], a) | |
287 | 287 | ||
288 | 288 | ||
289 | 289 | func bp (aL) = makeString(["%s%d__userBoostClaimed", aL], a) | |
290 | 290 | ||
291 | 291 | ||
292 | 292 | func bq () = "%s%s__gwxCached__total" | |
293 | 293 | ||
294 | 294 | ||
295 | 295 | let br = O() | |
296 | 296 | ||
297 | 297 | let T = Q(br) | |
298 | 298 | ||
299 | 299 | let bs = U(T) | |
300 | 300 | ||
301 | 301 | let bt = V(T) | |
302 | 302 | ||
303 | 303 | let bu = W(T) | |
304 | 304 | ||
305 | 305 | func bv (bw,bx,aM,by,aO,bz,bA,ay) = { | |
306 | 306 | let bB = makeString(["%s%s%s%s__history", bw, bx, toBase58String(ay.transactionId)], a) | |
307 | 307 | let bC = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aM), toString(by), toString(aO), toString(bz), toString(bA)], a) | |
308 | 308 | StringEntry(bB, bC) | |
309 | 309 | } | |
310 | 310 | ||
311 | 311 | ||
312 | 312 | func bD (bE,bF,bG,bH) = { | |
313 | 313 | let bI = bg() | |
314 | 314 | let bJ = bh() | |
315 | 315 | let bK = bi() | |
316 | 316 | let bL = bf() | |
317 | 317 | let bM = h(this, bI) | |
318 | 318 | let bN = h(this, bJ) | |
319 | 319 | let bO = h(this, bK) | |
320 | 320 | let bP = h(this, bL) | |
321 | 321 | [IntegerEntry(bI, (bM + bF)), IntegerEntry(bJ, (bN + bG)), IntegerEntry(bK, (bO + bH)), IntegerEntry(bL, (bP + bE))] | |
322 | 322 | } | |
323 | 323 | ||
324 | 324 | ||
325 | 325 | func bQ (bR,bS,bT) = { | |
326 | 326 | let bU = 1000 | |
327 | 327 | (((bR * bT) + bS) / bU) | |
328 | 328 | } | |
329 | 329 | ||
330 | 330 | ||
331 | 331 | func bV (aI,aL,aM,aN,aO,bz,bA,bd) = { | |
332 | 332 | let bW = aX(aL) | |
333 | 333 | let bX = aY(aL) | |
334 | 334 | let bY = aZ(aL) | |
335 | 335 | let bZ = ba(aL) | |
336 | 336 | let ca = bb(aL) | |
337 | 337 | let cb = bc(aL, bd) | |
338 | 338 | let cc = be(aL, bd) | |
339 | 339 | let aS = bQ(bz, bA, height) | |
340 | 340 | [IntegerEntry(bW, aM), IntegerEntry(bX, aN), IntegerEntry(bY, aO), IntegerEntry(bZ, bz), IntegerEntry(ca, bA), IntegerEntry(cb, bz), IntegerEntry(cc, bA), StringEntry(aH(aI), aT(aL, aM, aN, aO, bz, bA, aS))] | |
341 | 341 | } | |
342 | 342 | ||
343 | 343 | ||
344 | 344 | func cd (ay,ce) = if ((size(ay.payments) > 1)) | |
345 | 345 | then throw("only one payment is allowed") | |
346 | 346 | else if ((size(ay.payments) == 0)) | |
347 | 347 | then 0 | |
348 | 348 | else { | |
349 | 349 | let cf = ay.payments[0] | |
350 | 350 | if ((value(cf.assetId) != ce)) | |
351 | 351 | then throw("invalid asset id in payment") | |
352 | 352 | else cf.amount | |
353 | 353 | } | |
354 | 354 | ||
355 | 355 | ||
356 | 356 | func cg (aI) = { | |
357 | 357 | let ch = "empty" | |
358 | 358 | let ci = aV(aI) | |
359 | 359 | let aL = valueOrElse(getString(ci), ch) | |
360 | 360 | let bz = valueOrElse(getInteger(ba(aL)), 0) | |
361 | 361 | let bA = valueOrElse(getInteger(bb(aL)), 0) | |
362 | 362 | let cj = bQ(bz, bA, height) | |
363 | 363 | let aS = if ((0 > cj)) | |
364 | 364 | then 0 | |
365 | 365 | else cj | |
366 | 366 | aS | |
367 | 367 | } | |
368 | 368 | ||
369 | 369 | ||
370 | 370 | func ck (cl,cm,cn) = { | |
371 | 371 | let ch = "EMPTY" | |
372 | 372 | let co = valueOrElse(getString(this, aH(cm)), ch) | |
373 | 373 | if ((co == ch)) | |
374 | 374 | then $Tuple3(0, nil, "userRecord::is::empty") | |
375 | 375 | else { | |
376 | 376 | let cp = split(co, a) | |
377 | 377 | let cq = cp[aB] | |
378 | 378 | let cr = valueOrElse(getInteger(bu, af()), 0) | |
379 | 379 | let cs = "empty" | |
380 | 380 | let ct = if ((cl != cs)) | |
381 | 381 | then { | |
382 | 382 | let cu = valueOrErrorMessage(getString(br, F(cl)), ("unsupported lp asset " + cl)) | |
383 | 383 | let cv = getIntegerValue(br, J(cu)) | |
384 | 384 | let cw = valueOrElse(getInteger(br, L(cu, 0)), cv) | |
385 | 385 | $Tuple2(cw, cv) | |
386 | 386 | } | |
387 | 387 | else if (cn) | |
388 | 388 | then $Tuple2(0, 0) | |
389 | 389 | else throw(("not readonly mode: unsupported lp asset " + cl)) | |
390 | 390 | let cx = ct._1 | |
391 | 391 | let cy = ct._2 | |
392 | 392 | let cz = k(bs, Z()) | |
393 | 393 | let cA = k(bs, ab()) | |
394 | 394 | let cB = k(bs, ad()) | |
395 | 395 | let bT = if ((height > cB)) | |
396 | 396 | then cB | |
397 | 397 | else height | |
398 | 398 | let cC = max([(bT - cA), 0]) | |
399 | 399 | let cD = bk(cq, cl) | |
400 | 400 | let cE = bj(cq) | |
401 | 401 | let cF = valueOrElse(getInteger(this, cD), h(this, cE)) | |
402 | 402 | let cG = (((cz * cC) * 2) / 3) | |
403 | 403 | let cH = (cG - cF) | |
404 | 404 | let cI = fraction(cH, 3, (2 * cz)) | |
405 | 405 | let cJ = (bT - cI) | |
406 | 406 | let cK = max([(cr - cJ), 0]) | |
407 | 407 | let cL = ((bT - cJ) - cK) | |
408 | 408 | if (if (if ((0 > cJ)) | |
409 | 409 | then true | |
410 | 410 | else (0 > cL)) | |
411 | 411 | then true | |
412 | 412 | else (l(((cK + cL) - cI)) >= 1)) | |
413 | 413 | then throw(((((((("invalid udh calc: udh=" + toString(cI)) + " uLastH=") + toString(cJ)) + " udh0=") + toString(cK)) + " udh1=") + toString(cL))) | |
414 | 414 | else if ((0 > cH)) | |
415 | 415 | then throw("wrong calculations") | |
416 | 416 | else { | |
417 | 417 | let cM = bm(cq) | |
418 | 418 | let cN = bn() | |
419 | 419 | let cO = h(this, cM) | |
420 | 420 | let cP = h(this, cN) | |
421 | 421 | let cQ = bq() | |
422 | 422 | let cR = valueOrElse(getInteger(this, cQ), 0) | |
423 | 423 | let cS = cg(cm) | |
424 | 424 | let cT = bo(cq) | |
425 | 425 | let cU = h(this, cT) | |
426 | 426 | let cV = fraction(cH, cK, cI) | |
427 | 427 | let cW = fraction(cH, cL, cI) | |
428 | 428 | let cX = fraction(cV, cx, d) | |
429 | 429 | let cY = fraction(cW, cy, d) | |
430 | 430 | let cZ = if ((cR == 0)) | |
431 | 431 | then 0 | |
432 | 432 | else fraction(cX, cS, cR) | |
433 | 433 | let da = if ((cR == 0)) | |
434 | 434 | then 0 | |
435 | 435 | else fraction(cY, cS, cR) | |
436 | 436 | let db = (cZ + da) | |
437 | 437 | let dc = bp(cq) | |
438 | 438 | let dd = h(this, dc) | |
439 | 439 | let de = (db - dd) | |
440 | 440 | let df = [IntegerEntry(cD, cG)] | |
441 | 441 | let dg = makeString([("userBoostEmissionLastIntegral=" + toString(cF)), ("userBoostEmissionIntegral=" + toString(cH)), ("userMaxBoostInt=" + toString(cO)), ("totalMaxBoostInt=" + toString(cP)), ("userBoostAvaliableToClaimTotal=" + toString(cU)), ("userBoostAvaliableToClaimTotalNew=" + toString(db)), ("userBoostClaimed=" + toString(dd)), ("userBoostAvailable=" + toString(de)), ("userBoostEmissionIntegral0=" + toString(cV)), ("userBoostEmissionIntegral1=" + toString(cW)), ("poolUserBoostEmissionIntegral0=" + toString(cX)), ("poolUserBoostEmissionIntegral1=" + toString(cY)), ("poolWeight0=" + toString(cx)), ("poolWeight1=" + toString(cy)), ("h=" + toString(bT)), ("udh=" + toString(cI)), ("uLastH=" + toString(cJ)), ("udh0=" + toString(cK)), ("udh1=" + toString(cL)), ("userCurrGwx=" + toString(cS)), ("totalCachedGwx=" + toString(cR))], "::") | |
442 | 442 | $Tuple3(db, df, dg) | |
443 | 443 | } | |
444 | 444 | } | |
445 | 445 | } | |
446 | 446 | ||
447 | 447 | ||
448 | 448 | @Callable(ay) | |
449 | 449 | func constructor (dh,di,ap,dj,dk,as) = { | |
450 | 450 | let dl = ax(ay) | |
451 | 451 | if ((dl == dl)) | |
452 | 452 | then ([IntegerEntry(aU(), 0), StringEntry(al(), at(di, ap, dj, dk, as)), StringEntry(s(), dh)] ++ bD(0, 0, 0, 0)) | |
453 | 453 | else throw("Strict value is not equal to itself.") | |
454 | 454 | } | |
455 | 455 | ||
456 | 456 | ||
457 | 457 | ||
458 | 458 | @Callable(ay) | |
459 | 459 | func lock (aO) = { | |
460 | 460 | let dm = am() | |
461 | 461 | let dn = dm[ag] | |
462 | 462 | let ao = fromBase58String(dn) | |
463 | 463 | let ap = parseIntValue(dm[ah]) | |
464 | 464 | let aq = parseIntValue(dm[ai]) | |
465 | 465 | let ar = parseIntValue(dm[aj]) | |
466 | 466 | let as = addressFromStringValue(dm[ak]) | |
467 | 467 | if ((size(ay.payments) != 1)) | |
468 | 468 | then throw("invalid payment - exact one payment must be attached") | |
469 | 469 | else { | |
470 | 470 | let cf = ay.payments[0] | |
471 | 471 | let do = cf.amount | |
472 | 472 | if ((ao != value(cf.assetId))) | |
473 | 473 | then throw((("invalid asset is in payment - " + dn) + " is expected")) | |
474 | 474 | else { | |
475 | 475 | let dp = aU() | |
476 | 476 | let cm = toString(ay.caller) | |
477 | 477 | let dq = isDefined(getString(aV(cm))) | |
478 | 478 | let cq = if (dq) | |
479 | 479 | then value(getString(aV(cm))) | |
480 | 480 | else toString(k(this, dp)) | |
481 | 481 | let aL = parseIntValue(cq) | |
482 | 482 | let by = height | |
483 | 483 | let bX = aY(cq) | |
484 | 484 | let bY = aZ(cq) | |
485 | 485 | let bW = aX(cq) | |
486 | 486 | if ((ap > do)) | |
487 | 487 | then throw(("amount is less then minLockAmount=" + toString(ap))) | |
488 | 488 | else if ((aq > aO)) | |
489 | 489 | then throw(("passed duration is less then minLockDuration=" + toString(aq))) | |
490 | 490 | else if ((aO > ar)) | |
491 | 491 | then throw(("passed duration is greater then maxLockDuration=" + toString(ar))) | |
492 | 492 | else if (if (dq) | |
493 | 493 | then ((k(this, bX) + k(this, bY)) >= by) | |
494 | 494 | else false) | |
495 | 495 | then throw("there is an active lock - consider to use increaseLock") | |
496 | 496 | else if ((h(this, bW) > 0)) | |
497 | 497 | then throw(("there are locked WXs - consider to use increaseLock " + bW)) | |
498 | 498 | else { | |
499 | 499 | let dr = fraction(aO, c, ar) | |
500 | 500 | let ds = fraction(do, dr, c) | |
501 | 501 | let dt = n(invoke(as, "calcGwxParamsREADONLY", [ds, by, aO], nil)) | |
502 | 502 | let bz = q(dt[0]) | |
503 | 503 | let bA = q(dt[1]) | |
504 | 504 | let bd = toString(q(dt[2])) | |
505 | 505 | let cz = k(bs, Z()) | |
506 | 506 | let cA = k(bs, ab()) | |
507 | 507 | let cB = k(bs, ad()) | |
508 | 508 | let bT = if ((height > cB)) | |
509 | 509 | then cB | |
510 | 510 | else height | |
511 | 511 | let cC = max([(bT - cA), 0]) | |
512 | 512 | let cE = bj(cq) | |
513 | 513 | let cG = (((cz * cC) * 2) / 3) | |
514 | 514 | let cM = bm(cq) | |
515 | 515 | let cN = bn() | |
516 | 516 | let cO = ((ds * aO) / 2) | |
517 | 517 | let cP = h(this, cN) | |
518 | 518 | let cQ = bq() | |
519 | 519 | let cR = valueOrElse(getInteger(this, cQ), 0) | |
520 | 520 | let du = if (dq) | |
521 | 521 | then nil | |
522 | 522 | else [IntegerEntry(dp, (aL + 1)), StringEntry(aV(cm), cq), StringEntry(aW(cq), cm)] | |
523 | 523 | ((((du ++ bV(cm, cq, do, by, aO, bz, bA, bd)) ++ bD(do, aO, 1, if (dq) | |
524 | 524 | then 0 | |
525 | 525 | else 1)) :+ bv("lock", cm, do, by, aO, bz, bA, ay)) ++ [IntegerEntry(cE, cG), IntegerEntry(cQ, (cR + ds))]) | |
526 | 526 | } | |
527 | 527 | } | |
528 | 528 | } | |
529 | 529 | } | |
530 | 530 | ||
531 | 531 | ||
532 | 532 | ||
533 | 533 | @Callable(ay) | |
534 | 534 | func increaseLock (dv) = { | |
535 | 535 | let dm = am() | |
536 | 536 | let dn = dm[ag] | |
537 | 537 | let ao = fromBase58String(dn) | |
538 | 538 | let aq = parseIntValue(dm[ai]) | |
539 | 539 | let ar = parseIntValue(dm[aj]) | |
540 | 540 | let as = addressFromStringValue(dm[ak]) | |
541 | 541 | let do = cd(ay, ao) | |
542 | 542 | let cm = toString(ay.caller) | |
543 | 543 | let cp = aJ(cm) | |
544 | 544 | let cq = cp[aB] | |
545 | 545 | let dw = parseIntValue(cp[aC]) | |
546 | 546 | let by = parseIntValue(cp[aD]) | |
547 | 547 | let dx = parseIntValue(cp[aE]) | |
548 | 548 | let dy = (by + dx) | |
549 | 549 | let dz = max([(dy - height), 0]) | |
550 | 550 | let dA = (dw + do) | |
551 | 551 | let dB = (dz + dv) | |
552 | 552 | if ((0 > dv)) | |
553 | 553 | then throw("duration is less then zero") | |
554 | 554 | else if ((aq > dB)) | |
555 | 555 | then throw(("lockDurationNew is less then minLockDuration=" + toString(aq))) | |
556 | 556 | else if ((dB > ar)) | |
557 | 557 | then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(ar))) | |
558 | 558 | else { | |
559 | 559 | let dr = fraction(dB, c, ar) | |
560 | 560 | let ds = fraction(dA, dr, c) | |
561 | 561 | let dC = height | |
562 | 562 | let dt = n(invoke(as, "calcGwxParamsREADONLY", [ds, dC, dB], nil)) | |
563 | 563 | let bz = q(dt[0]) | |
564 | 564 | let bA = q(dt[1]) | |
565 | 565 | let bd = toString(q(dt[2])) | |
566 | 566 | let cz = k(bs, Z()) | |
567 | 567 | let cA = k(bs, ab()) | |
568 | 568 | let cB = k(bs, ad()) | |
569 | 569 | let bT = if ((height > cB)) | |
570 | 570 | then cB | |
571 | 571 | else height | |
572 | 572 | let cC = max([(bT - cA), 0]) | |
573 | 573 | let cE = bj(cq) | |
574 | 574 | let cF = h(this, cE) | |
575 | 575 | let cG = (((cz * cC) * 2) / 3) | |
576 | 576 | let cH = (cG - cF) | |
577 | 577 | if ((0 > cH)) | |
578 | 578 | then throw("wrong calculations") | |
579 | 579 | else { | |
580 | 580 | let cM = bm(cq) | |
581 | 581 | let cN = bn() | |
582 | 582 | let cO = h(this, cM) | |
583 | 583 | let cP = h(this, cN) | |
584 | 584 | let dD = cg(cm) | |
585 | 585 | let dE = (ds - dD) | |
586 | 586 | if ((0 > dE)) | |
587 | 587 | then throw(("gwxDiff is less then 0: " + toString(dE))) | |
588 | 588 | else { | |
589 | 589 | let cQ = bq() | |
590 | 590 | let cR = valueOrElse(getInteger(this, cQ), 0) | |
591 | 591 | let cT = bo(cq) | |
592 | 592 | let cU = h(this, cT) | |
593 | 593 | let db = fraction(cH, dD, cR) | |
594 | 594 | let dF = ((ds * dB) / 2) | |
595 | 595 | let dG = ((dD * dz) / 2) | |
596 | 596 | let dH = (dF - dG) | |
597 | 597 | (((bV(cm, cq, dA, dC, dB, bz, bA, bd) ++ bD(do, dv, 0, 0)) :+ bv("lock", cm, do, by, dB, bz, bA, ay)) ++ [IntegerEntry(cQ, (cR + dE))]) | |
598 | 598 | } | |
599 | 599 | } | |
600 | 600 | } | |
601 | 601 | } | |
602 | 602 | ||
603 | 603 | ||
604 | 604 | ||
605 | 605 | @Callable(ay) | |
606 | 606 | func claimWxBoost (cl,cm) = if ((bt != ay.caller)) | |
607 | 607 | then throw("permissions denied") | |
608 | 608 | else { | |
609 | 609 | let dI = ck(cl, cm, false) | |
610 | 610 | let de = dI._1 | |
611 | 611 | let df = dI._2 | |
612 | 612 | let dg = dI._3 | |
613 | 613 | $Tuple2(df, [de]) | |
614 | 614 | } | |
615 | 615 | ||
616 | 616 | ||
617 | 617 | ||
618 | 618 | @Callable(ay) | |
619 | 619 | func claimWxBoostREADONLY (cl,cm) = { | |
620 | 620 | let dJ = ck(cl, cm, true) | |
621 | 621 | let de = dJ._1 | |
622 | 622 | let df = dJ._2 | |
623 | 623 | let dg = dJ._3 | |
624 | 624 | $Tuple2(nil, [de, dg]) | |
625 | 625 | } | |
626 | 626 | ||
627 | 627 | ||
628 | 628 | ||
629 | 629 | @Callable(ay) | |
630 | 630 | func unlock (aI) = { | |
631 | 631 | let cp = aJ(aI) | |
632 | 632 | let cq = cp[aB] | |
633 | 633 | let dw = parseIntValue(cp[aC]) | |
634 | 634 | let by = parseIntValue(cp[aD]) | |
635 | 635 | let dx = parseIntValue(cp[aE]) | |
636 | 636 | let dy = (by + dx) | |
637 | 637 | let dm = am() | |
638 | 638 | let ao = fromBase58String(dm[ag]) | |
639 | 639 | let as = addressFromStringValue(dm[ak]) | |
640 | 640 | if ((dy >= height)) | |
641 | 641 | then throw((("wait " + toString(dy)) + " to unlock")) | |
642 | 642 | else if ((0 >= dw)) | |
643 | 643 | then throw("nothing to unlock") | |
644 | 644 | else { | |
645 | 645 | let bd = valueOrElse(getInteger(as, ae()), 0) | |
646 | 646 | (((bV(aI, cq, 0, by, dx, 0, 0, toString(bd)) ++ bD(-(dw), 0, 0, -1)) :+ bv("unlock", aI, dw, by, dx, 0, 0, ay)) :+ ScriptTransfer(addressFromStringValue(aI), dw, ao)) | |
647 | 647 | } | |
648 | 648 | } | |
649 | 649 | ||
650 | 650 | ||
651 | 651 | ||
652 | 652 | @Callable(ay) | |
653 | 653 | func gwxUserInfoREADONLY (aI) = { | |
654 | 654 | let aS = cg(aI) | |
655 | 655 | $Tuple2(nil, [aS]) | |
656 | 656 | } | |
657 | 657 | ||
658 | 658 | ||
659 | 659 | ||
660 | 660 | @Callable(ay) | |
661 | 661 | func setManager (dK) = { | |
662 | 662 | let dl = ax(ay) | |
663 | 663 | if ((dl == dl)) | |
664 | 664 | then { | |
665 | 665 | let dL = fromBase58String(dK) | |
666 | 666 | if ((dL == dL)) | |
667 | 667 | then [StringEntry(Y(), dK)] | |
668 | 668 | else throw("Strict value is not equal to itself.") | |
669 | 669 | } | |
670 | 670 | else throw("Strict value is not equal to itself.") | |
671 | 671 | } | |
672 | 672 | ||
673 | 673 | ||
674 | 674 | ||
675 | 675 | @Callable(ay) | |
676 | 676 | func confirmManager () = { | |
677 | 677 | let dM = aw() | |
678 | 678 | let dN = if (isDefined(dM)) | |
679 | 679 | then true | |
680 | 680 | else throw("No pending manager") | |
681 | 681 | if ((dN == dN)) | |
682 | 682 | then { | |
683 | 683 | let dO = if ((ay.callerPublicKey == value(dM))) | |
684 | 684 | then true | |
685 | 685 | else throw("You are not pending manager") | |
686 | 686 | if ((dO == dO)) | |
687 | 687 | then [StringEntry(X(), toBase58String(value(dM))), DeleteEntry(Y())] | |
688 | 688 | else throw("Strict value is not equal to itself.") | |
689 | 689 | } | |
690 | 690 | else throw("Strict value is not equal to itself.") | |
691 | 691 | } | |
692 | 692 | ||
693 | 693 | ||
694 | 694 | @Verifier(dP) | |
695 | 695 | func dQ () = { | |
696 | 696 | let dR = { | |
697 | 697 | let o = au() | |
698 | 698 | if ($isInstanceOf(o, "ByteVector")) | |
699 | 699 | then { | |
700 | 700 | let aA = o | |
701 | 701 | aA | |
702 | 702 | } | |
703 | 703 | else if ($isInstanceOf(o, "Unit")) | |
704 | 704 | then dP.senderPublicKey | |
705 | 705 | else throw("Match error") | |
706 | 706 | } | |
707 | 707 | sigVerify(dP.bodyBytes, dP.proofs[0], dR) | |
708 | 708 | } | |
709 | 709 |
github/deemru/w8io/026f985 59.95 ms ◑