tx · 2P2gQfTo9skETBZyXHJAV6btEUwhhhBrMLDEAREzji6j

3N3UHNYQ8xwe2WWLKgXX628JyUtF6kYK4wS:  -0.01400000 Waves

2020.11.09 13:47 [1257698] smart account 3N3UHNYQ8xwe2WWLKgXX628JyUtF6kYK4wS > SELF 0.00000000 Waves

{ "type": 13, "id": "2P2gQfTo9skETBZyXHJAV6btEUwhhhBrMLDEAREzji6j", "fee": 1400000, "feeAssetId": null, "timestamp": 1604918861252, "version": 1, "sender": "3N3UHNYQ8xwe2WWLKgXX628JyUtF6kYK4wS", "senderPublicKey": "Hxyif8HnnHh34SZ7PZewDcNUgrZfHNJsQvLNCcPbCW27", "proofs": [ "4AnD92Wcnn3rBBdpRrdaMW6AkSwTYbapeLC2hcmycJrQHc4N8izcyDR6Lc9aYDtax84C95x9U1DeqmEAT1dv1dxw" ], "script": "base64:AAIEAAAAAAAAAD0IAhIKCggICAEIAQEICBIRCg8ICAEIAQgBAQEBAQEBAQESAwoBCBIDCgEIEgQKAggBEgQKAggIEgQKAggIAAAAaQEAAAAWY29udmVydEpzb25BcnJheVRvTGlzdAAAAAIAAAAJanNvbkFycmF5AAAAC3NwbGl0U3ltYm9sCQAEtQAAAAIFAAAACWpzb25BcnJheQUAAAALc3BsaXRTeW1ib2wBAAAAGGdldFN0cmluZ0J5QWRkcmVzc0FuZEtleQAAAAIAAAAHYWRkcmVzcwAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AgAAAAABAAAADGdldEJvb2xCeUtleQAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAABHRoaXMFAAAAA2tleQcAAAAAA1NFUAIAAAACX18AAAAADGtleUFzc2V0Q29kZQAAAAAAAAAAAQAAAAAKa2V5QXNzZXRJZAAAAAAAAAAAAgAAAAAOa2V5QXNzZXRTdGF0dXMAAAAAAAAAAAMAAAAAFWtleUFzc2V0UHJpY2VEZWNpbWFscwAAAAAAAAAABAAAAAATa2V5QXNzZXRCYWtpbmdBc3NldAAAAAAAAAAABQAAAAAba2V5T3ZlcmNvbGxhdGVyYWxQZXJjZW50YWdlAAAAAAAAAAAGAAAAAAprZXlNaW5Qb29sAAAAAAAAAAAHAAAAABVrZXlQcmljZU9yYWNsZUFkZHJlc3MAAAAAAAAAAAgAAAAAEGtleU1pbkJ1eVBheW1lbnQAAAAAAAAAAAkAAAAAEWtleU1pblNlbGxQYXltZW50AAAAAAAAAAAKAAAAABJrZXlCdXlMb2NrSW50ZXJ2YWwAAAAAAAAAAAsAAAAAE2tleVNlbGxMb2NrSW50ZXJ2YWwAAAAAAAAAAAwAAAAACWtleUJ1eUZlZQAAAAAAAAAADQAAAAAKa2V5U2VsbEZlZQAAAAAAAAAADgAAAAAYa2V5UG9vbFJlZGVtcHRpb25UaW1lb3V0AAAAAAAAAAAPAAAAACFrZXlXZWVrZW5kc1ByaWNlQ2hhbmdlQ29lZmZpY2llbnQAAAAAAAAAABAAAAAADmFkbWluUHVibGljS2V5AgAAACxHMUVidTVBTUhhVEpGRWJaTmtaUWNKRlVROUtmaVlVd3VweUxHODU3RGNGcgAAAAAabmV1dHJpbm9Db250cmFjdEFkZHJlc3NLZXkCAAAAKyVzJXNfX2NvbW1vbkNvbmZpZ19fbmV1dHJpbm9Db250cmFjdEFkZHJlc3MAAAAAGW5ldXRyaW5vU3Rha2luZ0FkZHJlc3NLZXkCAAAAKiVzJXNfX2NvbW1vbkNvbmZpZ19fbmV1dHJpbm9TdGFraW5nQWRkcmVzcwAAAAAbbWluaW11blBvb2xGdW5kaW5nQW1vdW50S2V5AgAAACwlcyVzX19jb21tb25Db25maWdfX21pbmltdW1Qb29sRnVuZGluZ0Ftb3VudAAAAAAQaXNJbml0aWFsaXplZEtleQIAAAAfJXMlc19fY29tbW9uQ29uZmlnX19pbml0aWFsaXplZAAAAAAUY3VycmVudEFzc2V0SW5kZXhLZXkCAAAALyVzJXNfX2NvbW1vbkNvbmZpZ19fcHJlZGVmaW5lZEFzc2V0c0FjdGl2ZUluZGV4AAAAABRhc3NldHNBZGRyZXNzTGlzdEtleQIAAAAoJXMlc19fY29tbW9uQ29uZmlnX19wcmVkZWZpbmVkQXNzZXRzTGlzdAAAAAAOZGVidFRva2VuSWRLZXkCAAAAHyVzJXNfX2NvbW1vbkNvbmZpZ19fZGVidEFzc2V0SWQAAAAAGWRlYnRUb2tlbkV0YWxvbkJhbGFuY2VLZXkCAAAAKiVzJXNfX2NvbW1vbkNvbmZpZ19fZGVidEFzc2V0RXRhbG9uQmFsYW5jZQAAAAAVZGVmb1N0YWtpbmdBZGRyZXNzS2V5AgAAACYlcyVzX19jb21tb25Db25maWdfX2RlZm9TdGFraW5nQWRkcmVzcwAAAAAaZGVmb1N0YWtpbmdQYWNlbWFrZXJQdWJLZXkCAAAAKyVzJXNfX2NvbW1vbkNvbmZpZ19fZGVmb1N0YWtpbmdQYWNlbWFrZXJQdWIAAAAAFm1pblBvb2xJbnZlc3RBbW91bnRLZXkCAAAAJyVzJXNfX2NvbW1vbkNvbmZpZ19fbWluUG9vbEludmVzdEFtb3VudAAAAAASbmV1dHJpbm9Bc3NldElkS2V5AgAAABFuZXV0cmlub19hc3NldF9pZAAAAAAObnNidEFzc2V0SWRLZXkCAAAADWJvbmRfYXNzZXRfaWQAAAAADm5ldXRyaW5vUnBkS2V5AgAAAAxycGRfY29udHJhY3QAAAAADmRlZm9Bc3NldElkS2V5AgAAAA8lc19fZGVmb0Fzc2V0SWQAAAAAFXNldEFzc2V0U2NyaXB0VHhJZEtleQIAAAATJXNfX2Fzc2V0U2NyaXB0VHhJZAEAAAARZ2V0QXNzZXRDb25maWdLZXkAAAABAAAADGFzc2V0QWRkcmVzcwkAASwAAAACCQABLAAAAAICAAAAEyVzJXMlc19fZGVmb0Fzc2V0X18FAAAADGFzc2V0QWRkcmVzcwIAAAAIX19jb25maWcBAAAAEGdldEFzc2V0UHJpY2VLZXkAAAABAAAACWFzc2V0Q29kZQkAASwAAAACAgAAAA0lcyVzX19wcmljZV9fBQAAAAlhc3NldENvZGUBAAAAFWdldEFzc2V0SW5pdEhlaWdodEtleQAAAAEAAAAMYXNzZXRBZGRyZXNzCQABLAAAAAIJAAEsAAAAAgIAAAATJXMlcyVzX19kZWZvQXNzZXRfXwUAAAAMYXNzZXRBZGRyZXNzAgAAAAxfX2luaXRIZWlnaHQBAAAAGWdldEFzc2V0QWN0aXZhdGVIZWlnaHRLZXkAAAABAAAADGFzc2V0QWRkcmVzcwkAASwAAAACCQABLAAAAAICAAAAEyVzJXMlc19fZGVmb0Fzc2V0X18FAAAADGFzc2V0QWRkcmVzcwIAAAAQX19hY3RpdmF0ZUhlaWdodAEAAAAdZ2V0QXNzZXRDdXJycmVudFBvb2xBbW91bnRLZXkAAAABAAAADGFzc2V0QWRkcmVzcwkAASwAAAACCQABLAAAAAICAAAAEyVzJXMlc19fZGVmb0Fzc2V0X18FAAAADGFzc2V0QWRkcmVzcwIAAAANX19jdXJyZW50UG9vbAEAAAAYZ2V0QXNzZXRNYXhQb29sQW1vdW50S2V5AAAAAQAAAAxhc3NldEFkZHJlc3MJAAEsAAAAAgkAASwAAAACAgAAABMlcyVzJXNfX2RlZm9Bc3NldF9fBQAAAAxhc3NldEFkZHJlc3MCAAAACV9fbWF4UG9vbAEAAAAPZ2V0QXNzZXRNZXRhS2V5AAAAAQAAAAxhc3NldEFkZHJlc3MJAAEsAAAAAgkAASwAAAACAgAAABMlcyVzJXNfX2RlZm9Bc3NldF9fBQAAAAxhc3NldEFkZHJlc3MCAAAABl9fbWV0YQEAAAAVZ2V0QXNzZXRQb29sTWFrZXJzS2V5AAAAAQAAAAxhc3NldEFkZHJlc3MJAAEsAAAAAgkAASwAAAACAgAAABMlcyVzJXNfX2RlZm9Bc3NldF9fBQAAAAxhc3NldEFkZHJlc3MCAAAADF9fcG9vbE1ha2VycwEAAAAYZ2V0QXNzZXRBZGRyZXNzQnlDb2RlS2V5AAAAAQAAAAlhc3NldENvZGUJAAEsAAAAAgkAASwAAAACAgAAABMlcyVzJXNfX2RlZm9Bc3NldF9fBQAAAAlhc3NldENvZGUCAAAAFF9fYWRkcmVzc0J5QXNzZXRDb2RlAQAAABtnZXRBc3NldEFkZHJlc3NCeUFzc2V0SWRLZXkAAAABAAAAB2Fzc2V0SWQJAAEsAAAAAgkAASwAAAACAgAAABMlcyVzJXNfX2RlZm9Bc3NldF9fBQAAAAdhc3NldElkAgAAABJfX2FkZHJlc3NCeUFzc2V0SWQBAAAAImdldFBvb2xNYWtlclBhcnRpY2lwYXRpb25BbW91bnRLZXkAAAACAAAADGFzc2V0QWRkcmVzcwAAABBwb29sTWFrZXJBZGRyZXNzCQAEuQAAAAIJAARMAAAAAgIAAAAOJXMlcyVzJXNfX3Bvb2wJAARMAAAAAgUAAAAMYXNzZXRBZGRyZXNzCQAETAAAAAIFAAAAEHBvb2xNYWtlckFkZHJlc3MJAARMAAAAAgIAAAAGYW1vdW50BQAAAANuaWwFAAAAA1NFUAEAAAAlZ2V0UG9vbE1ha2VyUGFydGljaXBhdGlvbk1heEFtb3VudEtleQAAAAIAAAAMYXNzZXRBZGRyZXNzAAAAEHBvb2xNYWtlckFkZHJlc3MJAAS5AAAAAgkABEwAAAACAgAAAA4lcyVzJXMlc19fcG9vbAkABEwAAAACBQAAAAxhc3NldEFkZHJlc3MJAARMAAAAAgUAAAAQcG9vbE1ha2VyQWRkcmVzcwkABEwAAAACAgAAAAltYXhBbW91bnQFAAAAA25pbAUAAAADU0VQAQAAABtnZXRQb29sTWFrZXJMb2NrZWRBbW91bnRLZXkAAAACAAAADGFzc2V0QWRkcmVzcwAAABBwb29sTWFrZXJBZGRyZXNzCQAEuQAAAAIJAARMAAAAAgIAAAAOJXMlcyVzJXNfX3Bvb2wJAARMAAAAAgUAAAAMYXNzZXRBZGRyZXNzCQAETAAAAAIFAAAAEHBvb2xNYWtlckFkZHJlc3MJAARMAAAAAgIAAAAMbG9ja2VkQW1vdW50BQAAAANuaWwFAAAAA1NFUAEAAAAbZ2V0UG9vbE1ha2VyVW5sb2NrSGVpZ2h0S2V5AAAAAgAAAAxhc3NldEFkZHJlc3MAAAAQcG9vbE1ha2VyQWRkcmVzcwkABLkAAAACCQAETAAAAAICAAAADiVzJXMlcyVzX19wb29sCQAETAAAAAIFAAAADGFzc2V0QWRkcmVzcwkABEwAAAACBQAAABBwb29sTWFrZXJBZGRyZXNzCQAETAAAAAICAAAADHVubG9ja0hlaWdodAUAAAADbmlsBQAAAANTRVABAAAAH2dldFBvb2xNYWtlckxpcXVpZGl0eVJlcXVlc3RLZXkAAAADAAAADGFzc2V0QWRkcmVzcwAAABBwb29sTWFrZXJBZGRyZXNzAAAAAWgJAAS5AAAAAgkABEwAAAACAgAAABAlcyVzJXMlZCVzX19wb29sCQAETAAAAAIFAAAADGFzc2V0QWRkcmVzcwkABEwAAAACBQAAABBwb29sTWFrZXJBZGRyZXNzCQAETAAAAAIJAAGkAAAAAQUAAAABaAkABEwAAAACAgAAABBsaXF1aWRpdHlSZXF1ZXN0BQAAAANuaWwFAAAAA1NFUAEAAAAbZ2V0UG9vbFRvdGFsTG9ja2VkQW1vdW50S2V5AAAAAQAAAAxhc3NldEFkZHJlc3MJAAS5AAAAAgkABEwAAAACAgAAAAwlcyVzJXNfX3Bvb2wJAARMAAAAAgUAAAAMYXNzZXRBZGRyZXNzCQAETAAAAAICAAAAEXRvdGFsTG9ja2VkQW1vdW50BQAAAANuaWwFAAAAA1NFUAEAAAATZ2V0QXNzZXRDb25maWdBcnJheQAAAAEAAAAMYXNzZXRBZGRyZXNzCQEAAAAWY29udmVydEpzb25BcnJheVRvTGlzdAAAAAIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkBAAAAGGdldFN0cmluZ0J5QWRkcmVzc0FuZEtleQAAAAIFAAAABHRoaXMJAQAAABFnZXRBc3NldENvbmZpZ0tleQAAAAEFAAAADGFzc2V0QWRkcmVzcwkAASwAAAACCQABLAAAAAICAAAADk5vIERFRk8gQXNzZXQgBQAAAAxhc3NldEFkZHJlc3MCAAAADmNvbmZpZyBwcmVzZW50AgAAAAJfXwAAAAANbXVsdGlwbGljYXRvcgAAAAAAAA9CQAAAAAAQbmV1dHJpbm9Db250cmFjdAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAAGm5ldXRyaW5vQ29udHJhY3RBZGRyZXNzS2V5AgAAAB9ObyBuZXV0cmlubyBjb250cmFjdCBzcGVjaWZpZWQuAAAAABJuZXV0cmlub0Fzc2V0SWRTdHIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAABBuZXV0cmlub0NvbnRyYWN0BQAAABJuZXV0cmlub0Fzc2V0SWRLZXkCAAAAF05vIFVTRE4gYXNzZXQgaWQgZm91bmQuAAAAAA9uZXV0cmlub0Fzc2V0SWQJAAJZAAAAAQUAAAASbmV1dHJpbm9Bc3NldElkU3RyAAAAAAtuc2J0QXNzZXRJZAkAAlkAAAABCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAQbmV1dHJpbm9Db250cmFjdAUAAAAObnNidEFzc2V0SWRLZXkCAAAAFk5vIE5TQlQgYXNzZXQgaWQgZm91bmQAAAAAEm1pbmltdW1Qb29sRnVuZGluZwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAG21pbmltdW5Qb29sRnVuZGluZ0Ftb3VudEtleQIAAAAtTWluaW11bSBwb29sIGZ1bmRpbmcgYW1vdW50IGlzIG5vdCBzcGVjaWZpZWQuAAAAABNtaW5Qb29sSW52ZXN0QW1vdW50CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAFm1pblBvb2xJbnZlc3RBbW91bnRLZXkJAABoAAAAAgAAAAAAAAAACgUAAAANbXVsdGlwbGljYXRvcgAAAAANQVNTRXRQUk9QT1NFRAIAAAAIUFJPUE9TRUQAAAAACkFTU0V0UkVBRFkCAAAABVJFQURZAAAAAAtBU1NFdElTU1VFRAIAAAAGSVNTVUVEAAAAAAthc3NldFN0YXR1cwkABRUAAAADBQAAAA1BU1NFdFBST1BPU0VEBQAAAApBU1NFdFJFQURZBQAAAAtBU1NFdElTU1VFRAAAAAAYcHJlZGVmaW5lZEFzc2V0Q29udHJhY3RzCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAAUYXNzZXRzQWRkcmVzc0xpc3RLZXkCAAAALU5vIHBvb2wgb2YgcHJlZGVwbG95ZWQgYXNzZXQgY29udHJhY3RzIGZvdW5kLgAAAAAUcHJlZGVmaW5lZEFzc2V0c0xpc3QJAQAAABZjb252ZXJ0SnNvbkFycmF5VG9MaXN0AAAAAgUAAAAYcHJlZGVmaW5lZEFzc2V0Q29udHJhY3RzAgAAAAEsAAAAABFjdXJyZW50QXNzZXRJbmRleAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAABRjdXJyZW50QXNzZXRJbmRleEtleQAAAAAAAAAAAAAAAAAJZGVidFRva2VuCQACWQAAAAEJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAR0aGlzBQAAAA5kZWJ0VG9rZW5JZEtleQIAAAATTm8gZGVidCB0b2tlbiBmb3VuZAAAAAAWZGVidFRva2VuUmVpc3N1ZUFtb3VudAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAABlkZWJ0VG9rZW5FdGFsb25CYWxhbmNlS2V5AAAAAAAAAAAAAAAAABNuZXV0cmlub1JwZENvbnRyYWN0CQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAABBuZXV0cmlub0NvbnRyYWN0BQAAAA5uZXV0cmlub1JwZEtleQEAAAAVZ2V0TmV1dHJpbm9ScGRCYWxhbmNlAAAAAQAAAAt1c2VyQWRkcmVzcwQAAAAWdXNlck5ldXRyaW5vUnBkQmFsYW5jZQkABLkAAAACCQAETAAAAAICAAAAC3JwZF9iYWxhbmNlCQAETAAAAAIFAAAAEm5ldXRyaW5vQXNzZXRJZFN0cgkABEwAAAACBQAAAAt1c2VyQWRkcmVzcwUAAAADbmlsAgAAAAFfCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAAE25ldXRyaW5vUnBkQ29udHJhY3QFAAAAFnVzZXJOZXV0cmlub1JwZEJhbGFuY2UAAAAAAAAAAAABAAAAFWdldEFzc2V0QWRkcmVzc0J5Q29kZQAAAAEAAAALYXNzZXRTeW1ib2wJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwkBAAAAGGdldEFzc2V0QWRkcmVzc0J5Q29kZUtleQAAAAEFAAAAC2Fzc2V0U3ltYm9sAgAAAAABAAAAG2dldEFzc2V0QWRkcmVzc0J5Q29kZU9yRmFpbAAAAAEAAAALYXNzZXRTeW1ib2wJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAR0aGlzCQEAAAAYZ2V0QXNzZXRBZGRyZXNzQnlDb2RlS2V5AAAAAQUAAAALYXNzZXRTeW1ib2wJAAEsAAAAAgkAASwAAAACAgAAAB1DYW5ub3QgZmluZCBhc3NldCBhZGRyZXNzIGJ5IAUAAAALYXNzZXRTeW1ib2wCAAAABSBjb2RlAQAAAAxnZXRBc3NldENvZGUAAAABAAAAC2Fzc2V0Q29uZmlnCQABkQAAAAIFAAAAC2Fzc2V0Q29uZmlnBQAAAAxrZXlBc3NldENvZGUBAAAACmdldEFzc2V0SUQAAAABAAAAC2Fzc2V0Q29uZmlnCQABkQAAAAIFAAAAC2Fzc2V0Q29uZmlnBQAAAAprZXlBc3NldElkAQAAAA5nZXRBc3NldFN0YXR1cwAAAAEAAAALYXNzZXRDb25maWcJAAGRAAAAAgUAAAALYXNzZXRDb25maWcFAAAADmtleUFzc2V0U3RhdHVzAQAAABVnZXRBc3NldFByaWNlRGVjaW1hbHMAAAABAAAAC2Fzc2V0Q29uZmlnCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAALYXNzZXRDb25maWcFAAAAFWtleUFzc2V0UHJpY2VEZWNpbWFscwEAAAAVZ2V0QXNzZXRCYWtpbmdBc3NldElkAAAAAQAAAAthc3NldENvbmZpZwkAAZEAAAACBQAAAAthc3NldENvbmZpZwUAAAATa2V5QXNzZXRCYWtpbmdBc3NldAEAAAAdZ2V0QXNzZXRPdmVyQ29sbGF0ZXJhbFBlcmNlbnQAAAABAAAAC2Fzc2V0Q29uZmlnCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAALYXNzZXRDb25maWcFAAAAG2tleU92ZXJjb2xsYXRlcmFsUGVyY2VudGFnZQEAAAAdZ2V0QXNzZXRNaW5SZXF1aXJlZFBvb2xBbW91bnQAAAABAAAAC2Fzc2V0Q29uZmlnCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAALYXNzZXRDb25maWcFAAAACmtleU1pblBvb2wBAAAAGmdldEFzc2V0UHJpY2VPcmFjbGVBZGRyZXNzAAAAAQAAAAthc3NldENvbmZpZwkAAZEAAAACBQAAAAthc3NldENvbmZpZwUAAAAVa2V5UHJpY2VPcmFjbGVBZGRyZXNzAQAAABhnZXRNaW5CdXlQYXltZW50UGVyQXNzZXQAAAABAAAAC2Fzc2V0Q29uZmlnCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAALYXNzZXRDb25maWcFAAAAEGtleU1pbkJ1eVBheW1lbnQBAAAAGWdldE1pblNlbGxQYXltZW50UGVyQXNzZXQAAAABAAAAC2Fzc2V0Q29uZmlnCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAALYXNzZXRDb25maWcFAAAAEWtleU1pblNlbGxQYXltZW50AQAAABpnZXRCdXlMb2NrSW50ZXJ2YWxQZXJBc3NldAAAAAEAAAALYXNzZXRDb25maWcJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAthc3NldENvbmZpZwUAAAASa2V5QnV5TG9ja0ludGVydmFsAQAAABtnZXRTZWxsTG9ja0ludGVydmFsUGVyQXNzZXQAAAABAAAAC2Fzc2V0Q29uZmlnCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAALYXNzZXRDb25maWcFAAAAE2tleVNlbGxMb2NrSW50ZXJ2YWwBAAAAEWdldEJ1eUZlZVBlckFzc2V0AAAAAQAAAAthc3NldENvbmZpZwkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAC2Fzc2V0Q29uZmlnBQAAAAlrZXlCdXlGZWUBAAAAEmdldFNlbGxGZWVQZXJBc3NldAAAAAEAAAALYXNzZXRDb25maWcJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAthc3NldENvbmZpZwUAAAAKa2V5U2VsbEZlZQEAAAAaZ2V0UmVkZW1wdGlvblRpbWVvdXRCbG9ja3MAAAABAAAAC2Fzc2V0Q29uZmlnCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAALYXNzZXRDb25maWcFAAAAGGtleVBvb2xSZWRlbXB0aW9uVGltZW91dAEAAAAhZ2V0V2Vla2VuZHNQcmljZUNoYW5nZUNvZWZmaWNpZW50AAAAAQAAAAthc3NldENvbmZpZwkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAC2Fzc2V0Q29uZmlnBQAAACFrZXlXZWVrZW5kc1ByaWNlQ2hhbmdlQ29lZmZpY2llbnQBAAAAEmdldEFzc2V0UG9vbE1ha2VycwAAAAEAAAAMYXNzZXRBZGRyZXNzCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAABHRoaXMJAQAAABVnZXRBc3NldFBvb2xNYWtlcnNLZXkAAAABBQAAAAxhc3NldEFkZHJlc3MCAAAAAAEAAAASZ2V0QXNzZXRJbml0SGVpZ2h0AAAAAQAAAAxhc3NldEFkZHJlc3MJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkBAAAAFWdldEFzc2V0SW5pdEhlaWdodEtleQAAAAEFAAAADGFzc2V0QWRkcmVzcwAAAAAAAAAAAAEAAAAWZ2V0QXNzZXRBY3RpdmF0ZUhlaWdodAAAAAEAAAAMYXNzZXRBZGRyZXNzCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAABlnZXRBc3NldEFjdGl2YXRlSGVpZ2h0S2V5AAAAAQUAAAAMYXNzZXRBZGRyZXNzAAAAAAAAAAAAAQAAABlnZXRBc3NldEN1cnJlbnRQb29sQW1vdW50AAAAAQAAAAxhc3NldEFkZHJlc3MJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkBAAAAHWdldEFzc2V0Q3VycnJlbnRQb29sQW1vdW50S2V5AAAAAQUAAAAMYXNzZXRBZGRyZXNzAAAAAAAAAAAAAQAAABVnZXRBc3NldE1heFBvb2xBbW91bnQAAAABAAAADGFzc2V0QWRkcmVzcwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQEAAAAYZ2V0QXNzZXRNYXhQb29sQW1vdW50S2V5AAAAAQUAAAAMYXNzZXRBZGRyZXNzAAAAAAAAAAAAAQAAAAxnZXRBc3NldE1ldGEAAAABAAAADGFzc2V0QWRkcmVzcwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAR0aGlzCQEAAAAPZ2V0QXNzZXRNZXRhS2V5AAAAAQUAAAAMYXNzZXRBZGRyZXNzAgAAAAABAAAAH2dldFBvb2xNYWtlclBhcnRpY2lwYXRpb25BbW91bnQAAAACAAAADGFzc2V0QWRkcmVzcwAAABBwb29sTWFrZXJBZGRyZXNzCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAACJnZXRQb29sTWFrZXJQYXJ0aWNpcGF0aW9uQW1vdW50S2V5AAAAAgUAAAAMYXNzZXRBZGRyZXNzBQAAABBwb29sTWFrZXJBZGRyZXNzAAAAAAAAAAAAAQAAACJnZXRQb29sTWFrZXJQYXJ0aWNpcGF0aW9uTWF4QW1vdW50AAAAAgAAAAxhc3NldEFkZHJlc3MAAAAQcG9vbE1ha2VyQWRkcmVzcwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQEAAAAlZ2V0UG9vbE1ha2VyUGFydGljaXBhdGlvbk1heEFtb3VudEtleQAAAAIFAAAADGFzc2V0QWRkcmVzcwUAAAAQcG9vbE1ha2VyQWRkcmVzcwAAAAAAAAAAAAEAAAAYZ2V0UG9vbE1ha2VyTG9ja2VkQW1vdW50AAAAAgAAAAxhc3NldEFkZHJlc3MAAAAQcG9vbE1ha2VyQWRkcmVzcwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQEAAAAbZ2V0UG9vbE1ha2VyTG9ja2VkQW1vdW50S2V5AAAAAgUAAAAMYXNzZXRBZGRyZXNzBQAAABBwb29sTWFrZXJBZGRyZXNzAAAAAAAAAAAAAQAAABhnZXRQb29sTWFrZXJVbmxvY2tIZWlnaHQAAAACAAAADGFzc2V0QWRkcmVzcwAAABBwb29sTWFrZXJBZGRyZXNzCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAABtnZXRQb29sTWFrZXJVbmxvY2tIZWlnaHRLZXkAAAACBQAAAAxhc3NldEFkZHJlc3MFAAAAEHBvb2xNYWtlckFkZHJlc3MAAAAAAAAAAAABAAAADWdldEFzc2V0UHJpY2UAAAACAAAAEnByaWNlT3JhY2xlQWRkcmVzcwAAAAlhc3NldENvZGUJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAABJwcmljZU9yYWNsZUFkZHJlc3MJAQAAABBnZXRBc3NldFByaWNlS2V5AAAAAQUAAAAJYXNzZXRDb2RlAgAAABRObyBBc3NldCBwcmljZSBmb3VuZAEAAAAYZ2V0UG9vbFRvdGFsTG9ja2VkQW1vdW50AAAAAQAAAAxhc3NldEFkZHJlc3MJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkBAAAAG2dldFBvb2xUb3RhbExvY2tlZEFtb3VudEtleQAAAAEFAAAADGFzc2V0QWRkcmVzcwAAAAAAAAAAAAEAAAAfY29tcG9zZUFzc2V0Q29uZmlndXJhdGlvblN0cmluZwAAABAAAAAJYXNzZXRDb2RlAAAAB2Fzc2V0SWQAAAALYXNzZXRTdGF0dXMAAAANcHJpY2VEZWNpbWFscwAAAA5iYWNraW5nQXNzZXRJZAAAABVvdmVyQ29sbGF0ZXJhbFBlcmNlbnQAAAAHbWluUG9vbAAAABJwcmljZU9yYWNsZUFkZHJlc3MAAAANbWluQnV5UGF5bWVudAAAAA5taW5TZWxsUGF5bWVudAAAAA9idXlMb2NrSW50ZXJ2YWwAAAAQc2VsbExvY2tJbnRlcnZhbAAAAAZidXlGZWUAAAAHc2VsbEZlZQAAABVwb29sUmVkZW1wdGlvblRpbWVvdXQAAAAed2Vla2VuZHNQcmljZUNoYW5nZUNvZWZmaWNpZW50CQAEuQAAAAIJAARMAAAAAgIAAAAeJXMlcyVzJWQlcyVkJWQlcyVkJWQlZCVkJWQlZCVkCQAETAAAAAIFAAAACWFzc2V0Q29kZQkABEwAAAACBQAAAAdhc3NldElkCQAETAAAAAIFAAAAC2Fzc2V0U3RhdHVzCQAETAAAAAIJAAGkAAAAAQUAAAANcHJpY2VEZWNpbWFscwkABEwAAAACBQAAAA5iYWNraW5nQXNzZXRJZAkABEwAAAACCQABpAAAAAEFAAAAFW92ZXJDb2xsYXRlcmFsUGVyY2VudAkABEwAAAACCQABpAAAAAEFAAAAB21pblBvb2wJAARMAAAAAgUAAAAScHJpY2VPcmFjbGVBZGRyZXNzCQAETAAAAAIJAAGkAAAAAQUAAAANbWluQnV5UGF5bWVudAkABEwAAAACCQABpAAAAAEFAAAADm1pblNlbGxQYXltZW50CQAETAAAAAIJAAGkAAAAAQUAAAAPYnV5TG9ja0ludGVydmFsCQAETAAAAAIJAAGkAAAAAQUAAAAQc2VsbExvY2tJbnRlcnZhbAkABEwAAAACCQABpAAAAAEFAAAABmJ1eUZlZQkABEwAAAACCQABpAAAAAEFAAAAB3NlbGxGZWUJAARMAAAAAgkAAaQAAAABBQAAABVwb29sUmVkZW1wdGlvblRpbWVvdXQJAARMAAAAAgkAAaQAAAABBQAAAB53ZWVrZW5kc1ByaWNlQ2hhbmdlQ29lZmZpY2llbnQFAAAAA25pbAIAAAACX18BAAAAFHVwZGF0ZUFzc2V0Q2ZnU3RhdHVzAAAAAgAAAAluZXdTdGF0dXMAAAAWYXNzZXRDb25maWd1cmF0aW9uTGlzdAQAAAAFYUNvZGUJAQAAAAxnZXRBc3NldENvZGUAAAABBQAAABZhc3NldENvbmZpZ3VyYXRpb25MaXN0BAAAAANhSUQJAQAAAApnZXRBc3NldElEAAAAAQUAAAAWYXNzZXRDb25maWd1cmF0aW9uTGlzdAQAAAAOYVByaWNlRGVjaW1hbHMJAQAAABVnZXRBc3NldFByaWNlRGVjaW1hbHMAAAABBQAAABZhc3NldENvbmZpZ3VyYXRpb25MaXN0BAAAAA5hQmFraW5nQXNzZXRJZAkBAAAAFWdldEFzc2V0QmFraW5nQXNzZXRJZAAAAAEFAAAAFmFzc2V0Q29uZmlndXJhdGlvbkxpc3QEAAAAFmFPdmVyQ29sbGF0ZXJhbFBlcmNlbnQJAQAAAB1nZXRBc3NldE92ZXJDb2xsYXRlcmFsUGVyY2VudAAAAAEFAAAAFmFzc2V0Q29uZmlndXJhdGlvbkxpc3QEAAAAEGFNaW5SZXF1aXJlZFBvb2wJAQAAAB1nZXRBc3NldE1pblJlcXVpcmVkUG9vbEFtb3VudAAAAAEFAAAAFmFzc2V0Q29uZmlndXJhdGlvbkxpc3QEAAAAE2FQcmljZU9yYWNsZUFkZHJlc3MJAQAAABpnZXRBc3NldFByaWNlT3JhY2xlQWRkcmVzcwAAAAEFAAAAFmFzc2V0Q29uZmlndXJhdGlvbkxpc3QEAAAADmFNaW5CdXlQYXltZW50CQEAAAAYZ2V0TWluQnV5UGF5bWVudFBlckFzc2V0AAAAAQUAAAAWYXNzZXRDb25maWd1cmF0aW9uTGlzdAQAAAAPYU1pblNlbGxQYXltZW50CQEAAAAZZ2V0TWluU2VsbFBheW1lbnRQZXJBc3NldAAAAAEFAAAAFmFzc2V0Q29uZmlndXJhdGlvbkxpc3QEAAAAEGFCdXlMb2NrSW50ZXJ2YWwJAQAAABpnZXRCdXlMb2NrSW50ZXJ2YWxQZXJBc3NldAAAAAEFAAAAFmFzc2V0Q29uZmlndXJhdGlvbkxpc3QEAAAAEWFTZWxsTG9ja0ludGVydmFsCQEAAAAbZ2V0U2VsbExvY2tJbnRlcnZhbFBlckFzc2V0AAAAAQUAAAAWYXNzZXRDb25maWd1cmF0aW9uTGlzdAQAAAAHYUJ1eUZlZQkBAAAAEWdldEJ1eUZlZVBlckFzc2V0AAAAAQUAAAAWYXNzZXRDb25maWd1cmF0aW9uTGlzdAQAAAAIYVNlbGxGZWUJAQAAABJnZXRTZWxsRmVlUGVyQXNzZXQAAAABBQAAABZhc3NldENvbmZpZ3VyYXRpb25MaXN0BAAAABhhUmVkZW1wdGlvblRpbWVvdXRCbG9ja3MJAQAAABpnZXRSZWRlbXB0aW9uVGltZW91dEJsb2NrcwAAAAEFAAAAFmFzc2V0Q29uZmlndXJhdGlvbkxpc3QEAAAAHndlZWtlbmRzUHJpY2VDaGFuZ2VDb2VmZmljaWVudAkBAAAAIWdldFdlZWtlbmRzUHJpY2VDaGFuZ2VDb2VmZmljaWVudAAAAAEFAAAAFmFzc2V0Q29uZmlndXJhdGlvbkxpc3QJAQAAAB9jb21wb3NlQXNzZXRDb25maWd1cmF0aW9uU3RyaW5nAAAAEAUAAAAFYUNvZGUFAAAAA2FJRAUAAAAJbmV3U3RhdHVzBQAAAA5hUHJpY2VEZWNpbWFscwUAAAAOYUJha2luZ0Fzc2V0SWQFAAAAFmFPdmVyQ29sbGF0ZXJhbFBlcmNlbnQFAAAAEGFNaW5SZXF1aXJlZFBvb2wFAAAAE2FQcmljZU9yYWNsZUFkZHJlc3MFAAAADmFNaW5CdXlQYXltZW50BQAAAA9hTWluU2VsbFBheW1lbnQFAAAAEGFCdXlMb2NrSW50ZXJ2YWwFAAAAEWFTZWxsTG9ja0ludGVydmFsBQAAAAdhQnV5RmVlBQAAAAhhU2VsbEZlZQUAAAAYYVJlZGVtcHRpb25UaW1lb3V0QmxvY2tzBQAAAB53ZWVrZW5kc1ByaWNlQ2hhbmdlQ29lZmZpY2llbnQBAAAAGWNhbGNBbGxvd2VkQW1vdW50VG9SZWRlZW0AAAACAAAACWFzc2V0Q29kZQAAABBwb29sTWFrZXJBZGRyZXNzBAAAAA9hc3NldEFkZHJlc3NTdHIJAQAAABtnZXRBc3NldEFkZHJlc3NCeUNvZGVPckZhaWwAAAABBQAAAAlhc3NldENvZGUEAAAADGFzc2V0QWRkcmVzcwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAAPYXNzZXRBZGRyZXNzU3RyBAAAABZhc3NldENvbmZpZ3VyYXRpb25MaXN0CQEAAAATZ2V0QXNzZXRDb25maWdBcnJheQAAAAEFAAAAD2Fzc2V0QWRkcmVzc1N0cgQAAAAKYXNzZXRJZFN0cgkBAAAACmdldEFzc2V0SUQAAAABBQAAABZhc3NldENvbmZpZ3VyYXRpb25MaXN0BAAAAAdhc3NldElkCQACWQAAAAEFAAAACmFzc2V0SWRTdHIEAAAADnBvb2xBY3R1YWxTaXplCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAAB1nZXRBc3NldEN1cnJyZW50UG9vbEFtb3VudEtleQAAAAEFAAAAD2Fzc2V0QWRkcmVzc1N0cgAAAAAAAAAAAAQAAAALcG9vbE1heFNpemUJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkBAAAAGGdldEFzc2V0TWF4UG9vbEFtb3VudEtleQAAAAEFAAAAD2Fzc2V0QWRkcmVzc1N0cgAAAAAAAAAAAAQAAAAYcG9vbFRvdGFsTG9ja2VkQW1vdW50S2V5CQEAAAAbZ2V0UG9vbFRvdGFsTG9ja2VkQW1vdW50S2V5AAAAAQUAAAAPYXNzZXRBZGRyZXNzU3RyBAAAAA9wb29sVG90YWxMb2NrZWQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAAYcG9vbFRvdGFsTG9ja2VkQW1vdW50S2V5AAAAAAAAAAAABAAAABVhc3NldFVzZG5TdGFrZWRBbW91bnQJAQAAABVnZXROZXV0cmlub1JwZEJhbGFuY2UAAAABBQAAAA9hc3NldEFkZHJlc3NTdHIEAAAAFmFzc2V0VXNkbkJhbGFuY2VBbW91bnQJAAPwAAAAAgUAAAAMYXNzZXRBZGRyZXNzBQAAAA9uZXV0cmlub0Fzc2V0SWQEAAAAFGFzc2V0VG90YWxVc2RuQW1vdW50CQAAZQAAAAIJAABkAAAAAgUAAAAVYXNzZXRVc2RuU3Rha2VkQW1vdW50BQAAABZhc3NldFVzZG5CYWxhbmNlQW1vdW50BQAAAA9wb29sVG90YWxMb2NrZWQEAAAAC3Vjb2xsYXRlcmFsCQAAZQAAAAIFAAAAFGFzc2V0VG90YWxVc2RuQW1vdW50BQAAAA5wb29sQWN0dWFsU2l6ZQQAAAAQZGVmb0Fzc2V0QmFsYW5jZQkAA/AAAAACBQAAAAxhc3NldEFkZHJlc3MFAAAAB2Fzc2V0SWQEAAAAEmFzc2V0RW1pc3Npb25EaXJ0eQgJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkAA+wAAAABBQAAAAdhc3NldElkCQABLAAAAAICAAAAGENhbm5vdCBmaW5kIGFzc2V0IGJ5IGlkIAUAAAAKYXNzZXRJZFN0cgAAAAhxdWFudGl0eQQAAAANYXNzZXRFbWlzc2lvbgkAAGUAAAACBQAAABJhc3NldEVtaXNzaW9uRGlydHkFAAAAEGRlZm9Bc3NldEJhbGFuY2UEAAAAEnByaWNlT3JhY2xlQWRkcmVzcwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAAGmdldEFzc2V0UHJpY2VPcmFjbGVBZGRyZXNzAAAAAQUAAAAWYXNzZXRDb25maWd1cmF0aW9uTGlzdAQAAAAMY3VycmVudFByaWNlCQEAAAANZ2V0QXNzZXRQcmljZQAAAAIFAAAAEnByaWNlT3JhY2xlQWRkcmVzcwUAAAAJYXNzZXRDb2RlBAAAABtwcmljZVdpdGhPdmVyY29sbGF0ZXJhbFJhdGUJAABpAAAAAgkAAGgAAAACCQAAZAAAAAIFAAAADW11bHRpcGxpY2F0b3IJAQAAAB1nZXRBc3NldE92ZXJDb2xsYXRlcmFsUGVyY2VudAAAAAEFAAAAFmFzc2V0Q29uZmlndXJhdGlvbkxpc3QFAAAADGN1cnJlbnRQcmljZQUAAAANbXVsdGlwbGljYXRvcgQAAAAZdXNkbk5lZWRlZFRvQ292ZXJFbWlzc2lvbgkAAGsAAAADBQAAABtwcmljZVdpdGhPdmVyY29sbGF0ZXJhbFJhdGUFAAAADWFzc2V0RW1pc3Npb24FAAAADW11bHRpcGxpY2F0b3IEAAAAEnBvb2xNYWtlck1heEFtb3VudAkBAAAAImdldFBvb2xNYWtlclBhcnRpY2lwYXRpb25NYXhBbW91bnQAAAACBQAAAA9hc3NldEFkZHJlc3NTdHIFAAAAEHBvb2xNYWtlckFkZHJlc3MEAAAAH3Bvb2xNYWtlclBhcnRpY2lwYXRpb25BbW91bnRLZXkJAQAAACJnZXRQb29sTWFrZXJQYXJ0aWNpcGF0aW9uQW1vdW50S2V5AAAAAgUAAAAPYXNzZXRBZGRyZXNzU3RyBQAAABBwb29sTWFrZXJBZGRyZXNzBAAAABVwb29sTWFrZXJBY3R1YWxBbW91bnQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAAfcG9vbE1ha2VyUGFydGljaXBhdGlvbkFtb3VudEtleQAAAAAAAAAAAAQAAAAVcG9vbE1ha2VyTG9ja2VkQW1vdW50CQEAAAAYZ2V0UG9vbE1ha2VyTG9ja2VkQW1vdW50AAAAAgUAAAAPYXNzZXRBZGRyZXNzU3RyBQAAABBwb29sTWFrZXJBZGRyZXNzBAAAAAdzdXJwbHVzCQAAZQAAAAIFAAAAC3Vjb2xsYXRlcmFsBQAAABl1c2RuTmVlZGVkVG9Db3ZlckVtaXNzaW9uBAAAABBwZXJjZW50VmlhQWN0dWFsCQAAawAAAAMFAAAAFXBvb2xNYWtlckFjdHVhbEFtb3VudAUAAAANbXVsdGlwbGljYXRvcgUAAAAOcG9vbEFjdHVhbFNpemUEAAAADXBlcmNlbnRWaWFNYXgJAABrAAAAAwUAAAAScG9vbE1ha2VyTWF4QW1vdW50BQAAAA1tdWx0aXBsaWNhdG9yBQAAAAtwb29sTWF4U2l6ZQQAAAAKZnJvemVuUGFydAMJAABnAAAAAgUAAAAHc3VycGx1cwAAAAAAAAAAAAAAAAAAAAAAAAkAAZYAAAABCQAETAAAAAIFAAAAEHBlcmNlbnRWaWFBY3R1YWwJAARMAAAAAgUAAAANcGVyY2VudFZpYU1heAUAAAADbmlsBAAAABVhbGxvd2VkQW1vdW50VG9SZWRlZW0DCQAAZwAAAAIFAAAAB3N1cnBsdXMAAAAAAAAAAAAFAAAAFXBvb2xNYWtlckFjdHVhbEFtb3VudAkAAGQAAAACCQAAawAAAAMFAAAACmZyb3plblBhcnQFAAAAB3N1cnBsdXMFAAAADW11bHRpcGxpY2F0b3IFAAAAFXBvb2xNYWtlckFjdHVhbEFtb3VudAQAAAAOd2l0aGRyYXdIZWlnaHQJAABkAAAAAgUAAAAGaGVpZ2h0CQEAAAAaZ2V0UmVkZW1wdGlvblRpbWVvdXRCbG9ja3MAAAABBQAAABZhc3NldENvbmZpZ3VyYXRpb25MaXN0CQAFGgAAAAgFAAAAD2Fzc2V0QWRkcmVzc1N0cgUAAAAVYWxsb3dlZEFtb3VudFRvUmVkZWVtBQAAAA9wb29sVG90YWxMb2NrZWQFAAAADnBvb2xBY3R1YWxTaXplBQAAABVwb29sTWFrZXJBY3R1YWxBbW91bnQFAAAADndpdGhkcmF3SGVpZ2h0BQAAABVwb29sTWFrZXJMb2NrZWRBbW91bnQJAAS5AAAAAgkABEwAAAACBQAAAA9hc3NldEFkZHJlc3NTdHIJAARMAAAAAgUAAAAKYXNzZXRJZFN0cgkABEwAAAACBQAAABBwb29sTWFrZXJBZGRyZXNzCQAETAAAAAIJAAGkAAAAAQUAAAAVYXNzZXRVc2RuU3Rha2VkQW1vdW50CQAETAAAAAIJAAGkAAAAAQUAAAAWYXNzZXRVc2RuQmFsYW5jZUFtb3VudAkABEwAAAACCQABpAAAAAEFAAAAFGFzc2V0VG90YWxVc2RuQW1vdW50CQAETAAAAAIJAAGkAAAAAQUAAAAOcG9vbEFjdHVhbFNpemUJAARMAAAAAgkAAaQAAAABBQAAAAtwb29sTWF4U2l6ZQkABEwAAAACCQABpAAAAAEFAAAAC3Vjb2xsYXRlcmFsCQAETAAAAAIJAAGkAAAAAQUAAAANYXNzZXRFbWlzc2lvbgkABEwAAAACCQABpAAAAAEFAAAADGN1cnJlbnRQcmljZQkABEwAAAACCQABpAAAAAEFAAAAG3ByaWNlV2l0aE92ZXJjb2xsYXRlcmFsUmF0ZQkABEwAAAACCQABpAAAAAEFAAAAEnBvb2xNYWtlck1heEFtb3VudAkABEwAAAACCQABpAAAAAEFAAAAFXBvb2xNYWtlckFjdHVhbEFtb3VudAkABEwAAAACCQABpAAAAAEFAAAAFXBvb2xNYWtlckxvY2tlZEFtb3VudAkABEwAAAACCQABpAAAAAEFAAAAB3N1cnBsdXMJAARMAAAAAgkAAaQAAAABBQAAABBwZXJjZW50VmlhQWN0dWFsCQAETAAAAAIJAAGkAAAAAQUAAAANcGVyY2VudFZpYU1heAkABEwAAAACCQABpAAAAAEFAAAACmZyb3plblBhcnQJAARMAAAAAgkAAaQAAAABBQAAABVhbGxvd2VkQW1vdW50VG9SZWRlZW0FAAAAA25pbAUAAAADU0VQAAAABwAAAAFpAQAAAARpbml0AAAACAAAABduZXV0cmlub0NvbnRyYWN0QWRkcmVzcwAAABZuZXV0cmlub1N0YWtpbmdBZGRyZXNzAAAAGG1pbmltdW5Qb29sRnVuZGluZ0Ftb3VudAAAABNwcmVkZWZpbmVkQXNzZXRMaXN0AAAAEWN1cnJlbnRBc3NldEluZGV4AAAAEmRlYnRFdGhhbG9uQmFsYW5jZQAAABJkZWZvU3Rha2luZ0FkZHJlc3MAAAAXZGVmb1N0YWtpbmdQYWNlbWFrZXJQdWIDCQEAAAACIT0AAAACCQACWAAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQUAAAAOYWRtaW5QdWJsaWNLZXkJAAACAAAAAQIAAAAqT25seSBBZG1pbiBjYW4gcGVyZm9ybSBjb250cmFjdCBvcGVyYXRpb24uAwkAAAAAAAACCQEAAAAMZ2V0Qm9vbEJ5S2V5AAAAAQUAAAAQaXNJbml0aWFsaXplZEtleQYJAAACAAAAAQIAAAAhQ29udHJhY3Qgd2FzIGFscmVhZHkgaW5pdGlhbGl6ZWQuBAAAAAlpc3N1ZURlYnQJAARCAAAABQIAAAAJREVGT19ERUJUAgAAABBERUZPIERlYnQgVG9rZW4uAAAAAAAAAAABAAAAAAAAAAAGBgQAAAALZGVidFRva2VuSWQJAAQ4AAAAAQUAAAAJaXNzdWVEZWJ0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAGm5ldXRyaW5vQ29udHJhY3RBZGRyZXNzS2V5BQAAABduZXV0cmlub0NvbnRyYWN0QWRkcmVzcwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABluZXV0cmlub1N0YWtpbmdBZGRyZXNzS2V5BQAAABZuZXV0cmlub1N0YWtpbmdBZGRyZXNzCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABttaW5pbXVuUG9vbEZ1bmRpbmdBbW91bnRLZXkFAAAAGG1pbmltdW5Qb29sRnVuZGluZ0Ftb3VudAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABRhc3NldHNBZGRyZXNzTGlzdEtleQUAAAATcHJlZGVmaW5lZEFzc2V0TGlzdAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAUY3VycmVudEFzc2V0SW5kZXhLZXkFAAAAEWN1cnJlbnRBc3NldEluZGV4CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABlkZWJ0VG9rZW5FdGFsb25CYWxhbmNlS2V5BQAAABJkZWJ0RXRoYWxvbkJhbGFuY2UJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAOZGVidFRva2VuSWRLZXkJAAJYAAAAAQUAAAALZGVidFRva2VuSWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAVZGVmb1N0YWtpbmdBZGRyZXNzS2V5BQAAABJkZWZvU3Rha2luZ0FkZHJlc3MJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAaZGVmb1N0YWtpbmdQYWNlbWFrZXJQdWJLZXkFAAAAF2RlZm9TdGFraW5nUGFjZW1ha2VyUHViCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAABBpc0luaXRpYWxpemVkS2V5BgkABEwAAAACBQAAAAlpc3N1ZURlYnQJAARMAAAAAgkBAAAABEJ1cm4AAAACBQAAAAtkZWJ0VG9rZW5JZAAAAAAAAAAAAQUAAAADbmlsAAAAAWkBAAAADHByb3Bvc2VBc3NldAAAAA8AAAAJYXNzZXRDb2RlAAAABG1ldGEAAAAHbWluUG9vbAAAABJwcmljZU9yYWNsZUFkZHJlc3MAAAAVb3ZlckNvbGxhdGVyYWxQZXJjZW50AAAADmJhY2tpbmdBc3NldElkAAAADXByaWNlRGVjaW1hbHMAAAANbWluQnV5UGF5bWVudAAAAA5taW5TZWxsUGF5bWVudAAAAA9idXlMb2NrSW50ZXJ2YWwAAAAQc2VsbExvY2tJbnRlcnZhbAAAAAZidXlGZWUAAAAHc2VsbEZlZQAAABVwb29sUmVkZW1wdGlvblRpbWVvdXQAAAAed2Vla2VuZHNQcmljZUNoYW5nZUNvZWZmaWNpZW50AwkBAAAAAiE9AAAAAgkAAlgAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkFAAAADmFkbWluUHVibGljS2V5CQAAAgAAAAECAAAAKk9ubHkgQWRtaW4gY2FuIHBlcmZvcm0gY29udHJhY3Qgb3BlcmF0aW9uLgMJAAAAAAAAAgkBAAAADGdldEJvb2xCeUtleQAAAAEFAAAAEGlzSW5pdGlhbGl6ZWRLZXkHCQAAAgAAAAECAAAAGkNvbnRyYWN0IGlzIG5vdCB5ZXQgcmVhZHkuAwkBAAAAAiE9AAAAAgkAAlkAAAABBQAAAA5iYWNraW5nQXNzZXRJZAUAAAAPbmV1dHJpbm9Bc3NldElkCQAAAgAAAAECAAAAI0Jha2luZyBhc3NldCBpZCBjb3VsZCBiZSBVU0ROIG9ubHkuAwkBAAAAAiE9AAAAAgkBAAAAFWdldEFzc2V0QWRkcmVzc0J5Q29kZQAAAAEFAAAACWFzc2V0Q29kZQIAAAAACQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAABdBc3NldCB3aXRoIHBhc3NlZCBjb2RlIAUAAAAJYXNzZXRDb2RlAgAAABsgaGFzIGFscmVhZHkgYmVlbiBwcm9wb3NlZC4DCQAAZgAAAAIFAAAAEm1pbmltdW1Qb29sRnVuZGluZwUAAAAHbWluUG9vbAkAAAIAAAABCQABLAAAAAICAAAAM01pbmltdW0gcG9vbCBhbW91bnQgc2hvdWxkIGJlIGdyZWF0ZXIgb3IgZXF1YWxzIHRvIAkAAaQAAAABBQAAABJtaW5pbXVtUG9vbEZ1bmRpbmcDAwMDAwMDAwkAAGYAAAACAAAAAAAAAAAABQAAABVvdmVyQ29sbGF0ZXJhbFBlcmNlbnQGCQAAZgAAAAIAAAAAAAAAAAAFAAAADXByaWNlRGVjaW1hbHMGCQAAZgAAAAIAAAAAAAAAAAAFAAAADW1pbkJ1eVBheW1lbnQGCQAAZgAAAAIAAAAAAAAAAAAFAAAADm1pblNlbGxQYXltZW50BgkAAGYAAAACAAAAAAAAAAAABQAAAA9idXlMb2NrSW50ZXJ2YWwGCQAAZgAAAAIAAAAAAAAAAAAFAAAAEHNlbGxMb2NrSW50ZXJ2YWwGCQAAZgAAAAIAAAAAAAAAAAAFAAAABmJ1eUZlZQYJAABmAAAAAgAAAAAAAAAAAAUAAAAHc2VsbEZlZQkAAAIAAAABAgAAAChPbmUgb2YgdGhlIHBhc3NlZCBwYXJhbWV0ZXJzIGlzIGludmFsaWQuBAAAABdwcmljZU9yYWNsZUFkZHJlc3NWYWxpZAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAABJwcmljZU9yYWNsZUFkZHJlc3MCAAAAKVBhc3NlZCBQcmljZSBPcmFjbGUgQWRkcmVzcyBpcyBub3QgdmFsaWQuBAAAAAxhc3NldEFkZHJlc3MJAAGRAAAAAgUAAAAUcHJlZGVmaW5lZEFzc2V0c0xpc3QFAAAAEWN1cnJlbnRBc3NldEluZGV4BAAAAAtkZWZvQXNzZXRJZAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABBQAAAAxhc3NldEFkZHJlc3MCAAAAAAUAAAAOZGVmb0Fzc2V0SWRLZXkCAAAAF05vIGRlZm8gYXNzZXQgSUQgZm91bmQuCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABFnZXRBc3NldENvbmZpZ0tleQAAAAEFAAAADGFzc2V0QWRkcmVzcwkBAAAAH2NvbXBvc2VBc3NldENvbmZpZ3VyYXRpb25TdHJpbmcAAAAQBQAAAAlhc3NldENvZGUFAAAAC2RlZm9Bc3NldElkCAUAAAALYXNzZXRTdGF0dXMAAAACXzEFAAAADXByaWNlRGVjaW1hbHMFAAAADmJhY2tpbmdBc3NldElkBQAAABVvdmVyQ29sbGF0ZXJhbFBlcmNlbnQFAAAAB21pblBvb2wFAAAAEnByaWNlT3JhY2xlQWRkcmVzcwUAAAANbWluQnV5UGF5bWVudAUAAAAObWluU2VsbFBheW1lbnQFAAAAD2J1eUxvY2tJbnRlcnZhbAUAAAAQc2VsbExvY2tJbnRlcnZhbAUAAAAGYnV5RmVlBQAAAAdzZWxsRmVlBQAAABVwb29sUmVkZW1wdGlvblRpbWVvdXQFAAAAHndlZWtlbmRzUHJpY2VDaGFuZ2VDb2VmZmljaWVudAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAYZ2V0QXNzZXRBZGRyZXNzQnlDb2RlS2V5AAAAAQUAAAAJYXNzZXRDb2RlBQAAAAxhc3NldEFkZHJlc3MJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAD2dldEFzc2V0TWV0YUtleQAAAAEFAAAADGFzc2V0QWRkcmVzcwUAAAAEbWV0YQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAFWdldEFzc2V0SW5pdEhlaWdodEtleQAAAAEFAAAADGFzc2V0QWRkcmVzcwUAAAAGaGVpZ2h0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABRjdXJyZW50QXNzZXRJbmRleEtleQkAAGQAAAACBQAAABFjdXJyZW50QXNzZXRJbmRleAAAAAAAAAAAAQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAbZ2V0QXNzZXRBZGRyZXNzQnlBc3NldElkS2V5AAAAAQUAAAALZGVmb0Fzc2V0SWQFAAAADGFzc2V0QWRkcmVzcwUAAAADbmlsAAAAAWkBAAAAEWZ1bmRMaXF1aWRpdHlQb29sAAAAAQAAAAlhc3NldENvZGUEAAAAD2Fzc2V0QWRkcmVzc1N0cgkBAAAAG2dldEFzc2V0QWRkcmVzc0J5Q29kZU9yRmFpbAAAAAEFAAAACWFzc2V0Q29kZQQAAAAWYXNzZXRDb25maWd1cmF0aW9uTGlzdAkBAAAAE2dldEFzc2V0Q29uZmlnQXJyYXkAAAABBQAAAA9hc3NldEFkZHJlc3NTdHIEAAAAD2F0dGFjaGVkUGF5bWVudAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAQcG9vbE1ha2VyQWRkcmVzcwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIDCQAAAAAAAAIJAQAAAAxnZXRCb29sQnlLZXkAAAABBQAAABBpc0luaXRpYWxpemVkS2V5BwkAAAIAAAABAgAAABpDb250cmFjdCBpcyBub3QgeWV0IHJlYWR5LgMJAQAAAAIhPQAAAAIIBQAAAA9hdHRhY2hlZFBheW1lbnQAAAAHYXNzZXRJZAUAAAAPbmV1dHJpbm9Bc3NldElkCQAAAgAAAAECAAAALkxpcXVpZGl0eSBwb29sIGNvdWxkIGJlIGZ1bmRlZCB3aXRoIFVTRE4gb25seS4DCQAAZgAAAAIFAAAAE21pblBvb2xJbnZlc3RBbW91bnQIBQAAAA9hdHRhY2hlZFBheW1lbnQAAAAGYW1vdW50CQAAAgAAAAEJAAEsAAAAAgIAAAAxQXR0YWNoZWQgcGF5bWVudCBhbW91bnQgaXMgbGVzcyB0aGEgbWluIGFsbG93ZWQ6IAkAAaQAAAABBQAAABNtaW5Qb29sSW52ZXN0QW1vdW50BAAAABRuZXdDdXJyZW50UG9vbEFtb3VudAkAAGQAAAACCAUAAAAPYXR0YWNoZWRQYXltZW50AAAABmFtb3VudAkBAAAAGWdldEFzc2V0Q3VycmVudFBvb2xBbW91bnQAAAABBQAAAA9hc3NldEFkZHJlc3NTdHIEAAAADW1heFBvb2xBbW91bnQJAQAAABVnZXRBc3NldE1heFBvb2xBbW91bnQAAAABBQAAAA9hc3NldEFkZHJlc3NTdHIEAAAAF2N1cnJlbnRQb29sTWFrZXJCYWxhbmNlCQEAAAAfZ2V0UG9vbE1ha2VyUGFydGljaXBhdGlvbkFtb3VudAAAAAIFAAAAD2Fzc2V0QWRkcmVzc1N0cgUAAAAQcG9vbE1ha2VyQWRkcmVzcwQAAAATbWF4UG9vbE1ha2VyQmFsYW5jZQkBAAAAImdldFBvb2xNYWtlclBhcnRpY2lwYXRpb25NYXhBbW91bnQAAAACBQAAAA9hc3NldEFkZHJlc3NTdHIFAAAAEHBvb2xNYWtlckFkZHJlc3MEAAAAEmN1cnJlbnRBc3NldFN0YXR1cwkBAAAADmdldEFzc2V0U3RhdHVzAAAAAQUAAAAWYXNzZXRDb25maWd1cmF0aW9uTGlzdAQAAAAObmV3QXNzZXRTdGF0dXMDAwkAAAAAAAACBQAAABJjdXJyZW50QXNzZXRTdGF0dXMFAAAADUFTU0V0UFJPUE9TRUQJAABnAAAAAgUAAAAUbmV3Q3VycmVudFBvb2xBbW91bnQJAQAAAB1nZXRBc3NldE1pblJlcXVpcmVkUG9vbEFtb3VudAAAAAEFAAAAFmFzc2V0Q29uZmlndXJhdGlvbkxpc3QHBQAAAApBU1NFdFJFQURZBQAAABJjdXJyZW50QXNzZXRTdGF0dXMEAAAAE25ld1Bvb2xNYWtlckJhbGFuY2UJAABkAAAAAgUAAAAXY3VycmVudFBvb2xNYWtlckJhbGFuY2UIBQAAAA9hdHRhY2hlZFBheW1lbnQAAAAGYW1vdW50BAAAABlpbW1lZGlhdGVUcmFuc2ZlcklmSXNzdWVkAwkAAAAAAAACBQAAABJjdXJyZW50QXNzZXRTdGF0dXMFAAAAC0FTU0V0SVNTVUVECQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAD2Fzc2V0QWRkcmVzc1N0cggFAAAAD2F0dGFjaGVkUGF5bWVudAAAAAZhbW91bnQFAAAAD25ldXRyaW5vQXNzZXRJZAUAAAADbmlsBQAAAANuaWwJAAROAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAImdldFBvb2xNYWtlclBhcnRpY2lwYXRpb25BbW91bnRLZXkAAAACBQAAAA9hc3NldEFkZHJlc3NTdHIFAAAAEHBvb2xNYWtlckFkZHJlc3MFAAAAE25ld1Bvb2xNYWtlckJhbGFuY2UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAACVnZXRQb29sTWFrZXJQYXJ0aWNpcGF0aW9uTWF4QW1vdW50S2V5AAAAAgUAAAAPYXNzZXRBZGRyZXNzU3RyBQAAABBwb29sTWFrZXJBZGRyZXNzCQABlgAAAAEJAARMAAAAAgUAAAATbmV3UG9vbE1ha2VyQmFsYW5jZQkABEwAAAACBQAAABNtYXhQb29sTWFrZXJCYWxhbmNlBQAAAANuaWwJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAB1nZXRBc3NldEN1cnJyZW50UG9vbEFtb3VudEtleQAAAAEFAAAAD2Fzc2V0QWRkcmVzc1N0cgUAAAAUbmV3Q3VycmVudFBvb2xBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABhnZXRBc3NldE1heFBvb2xBbW91bnRLZXkAAAABBQAAAA9hc3NldEFkZHJlc3NTdHIJAAGWAAAAAQkABEwAAAACBQAAAA1tYXhQb29sQW1vdW50CQAETAAAAAIFAAAAFG5ld0N1cnJlbnRQb29sQW1vdW50BQAAAANuaWwJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEWdldEFzc2V0Q29uZmlnS2V5AAAAAQUAAAAPYXNzZXRBZGRyZXNzU3RyCQEAAAAUdXBkYXRlQXNzZXRDZmdTdGF0dXMAAAACBQAAAA5uZXdBc3NldFN0YXR1cwUAAAAWYXNzZXRDb25maWd1cmF0aW9uTGlzdAUAAAADbmlsBQAAABlpbW1lZGlhdGVUcmFuc2ZlcklmSXNzdWVkAAAAAWkBAAAADWFjdGl2YXRlQXNzZXQAAAABAAAACWFzc2V0Q29kZQQAAAAMYXNzZXRBZGRyZXNzCQEAAAAVZ2V0QXNzZXRBZGRyZXNzQnlDb2RlAAAAAQUAAAAJYXNzZXRDb2RlBAAAABZhc3NldENvbmZpZ3VyYXRpb25MaXN0CQEAAAATZ2V0QXNzZXRDb25maWdBcnJheQAAAAEFAAAADGFzc2V0QWRkcmVzcwQAAAAWYXNzZXRDdXJyZW50UG9vbEFtb3VudAkBAAAAGWdldEFzc2V0Q3VycmVudFBvb2xBbW91bnQAAAABBQAAAAxhc3NldEFkZHJlc3MEAAAADmFDdXJyZW50U3RhdHVzCQEAAAAOZ2V0QXNzZXRTdGF0dXMAAAABBQAAABZhc3NldENvbmZpZ3VyYXRpb25MaXN0AwkBAAAAAiE9AAAAAgkAAlgAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkFAAAADmFkbWluUHVibGljS2V5CQAAAgAAAAECAAAAKk9ubHkgQWRtaW4gY2FuIHBlcmZvcm0gY29udHJhY3Qgb3BlcmF0aW9uLgMJAAAAAAAAAgkBAAAADGdldEJvb2xCeUtleQAAAAEFAAAAEGlzSW5pdGlhbGl6ZWRLZXkHCQAAAgAAAAECAAAAGkNvbnRyYWN0IGlzIG5vdCB5ZXQgcmVhZHkuAwkBAAAAAiE9AAAAAgUAAAAOYUN1cnJlbnRTdGF0dXMIBQAAAAthc3NldFN0YXR1cwAAAAJfMgkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAwQXNzZXQgaXMgbm90IGluIFJFQURZIHN0YXR1cy4gQ3VycmVudCBzdGF0dXMgaXMgBQAAAA5hQ3VycmVudFN0YXR1cwIAAAABLgMJAAAAAAAAAgUAAAAMYXNzZXRBZGRyZXNzAgAAAAAJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAEkNhbm5vdCBmaW5kIGFzc2V0IAUAAAAJYXNzZXRDb2RlAgAAAAEuAwkAAGYAAAACBQAAABJtaW5pbXVtUG9vbEZ1bmRpbmcFAAAAFmFzc2V0Q3VycmVudFBvb2xBbW91bnQJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAC1DYW5ub3QgaXNzdWUgYXNzZXQgYXMgbGlxdWlkaXR5IHBvb2wgYW1vdW50ICgJAAGkAAAAAQUAAAAWYXNzZXRDdXJyZW50UG9vbEFtb3VudAIAAAAZKSBpcyBsZXNzIHRoYW4gcmVxdWlyZWQgKAkAAaQAAAABBQAAABJtaW5pbXVtUG9vbEZ1bmRpbmcCAAAAASkEAAAACWlzc3VlRGVidAkBAAAAB1JlaXNzdWUAAAADBQAAAAlkZWJ0VG9rZW4FAAAAFmRlYnRUb2tlblJlaXNzdWVBbW91bnQGCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAZZ2V0QXNzZXRBY3RpdmF0ZUhlaWdodEtleQAAAAEFAAAADGFzc2V0QWRkcmVzcwUAAAAGaGVpZ2h0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABFnZXRBc3NldENvbmZpZ0tleQAAAAEFAAAADGFzc2V0QWRkcmVzcwkBAAAAFHVwZGF0ZUFzc2V0Q2ZnU3RhdHVzAAAAAggFAAAAC2Fzc2V0U3RhdHVzAAAAAl8zBQAAABZhc3NldENvbmZpZ3VyYXRpb25MaXN0CQAETAAAAAIFAAAACWlzc3VlRGVidAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAAxhc3NldEFkZHJlc3MFAAAAFmFzc2V0Q3VycmVudFBvb2xBbW91bnQFAAAAD25ldXRyaW5vQXNzZXRJZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAAxhc3NldEFkZHJlc3MFAAAAFmRlYnRUb2tlblJlaXNzdWVBbW91bnQFAAAACWRlYnRUb2tlbgUAAAADbmlsAAAAAWkBAAAADnJlZGVlbUZyb21Qb29sAAAAAgAAAAlhc3NldENvZGUAAAAGYW1vdW50BAAAAA1jYWxsZXJBZGRyZXNzCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAALcmVkZWVtVHVwbGUJAQAAABljYWxjQWxsb3dlZEFtb3VudFRvUmVkZWVtAAAAAgUAAAAJYXNzZXRDb2RlBQAAAA1jYWxsZXJBZGRyZXNzBAAAAA9hc3NldEFkZHJlc3NTdHIIBQAAAAtyZWRlZW1UdXBsZQAAAAJfMQQAAAAVYWxsb3dlZEFtb3VudFRvUmVkZWVtCAUAAAALcmVkZWVtVHVwbGUAAAACXzIEAAAAD3Bvb2xUb3RhbExvY2tlZAgFAAAAC3JlZGVlbVR1cGxlAAAAAl8zBAAAAA5wb29sQWN0dWFsU2l6ZQgFAAAAC3JlZGVlbVR1cGxlAAAAAl80BAAAABVwb29sTWFrZXJBY3R1YWxBbW91bnQIBQAAAAtyZWRlZW1UdXBsZQAAAAJfNQQAAAAOd2l0aGRyYXdIZWlnaHQIBQAAAAtyZWRlZW1UdXBsZQAAAAJfNgQAAAAVcG9vbE1ha2VyTG9ja2VkQW1vdW50CAUAAAALcmVkZWVtVHVwbGUAAAACXzcEAAAACXRyYWNlRGF0YQgFAAAAC3JlZGVlbVR1cGxlAAAAAl84BAAAABxwb29sTWFrZXJMaXF1aWRpdHlSZXF1ZXN0S2V5CQEAAAAfZ2V0UG9vbE1ha2VyTGlxdWlkaXR5UmVxdWVzdEtleQAAAAMFAAAAD2Fzc2V0QWRkcmVzc1N0cgUAAAANY2FsbGVyQWRkcmVzcwUAAAAOd2l0aGRyYXdIZWlnaHQDCQAAAAAAAAIJAQAAAAxnZXRCb29sQnlLZXkAAAABBQAAABBpc0luaXRpYWxpemVkS2V5BwkAAAIAAAABAgAAABpDb250cmFjdCBpcyBub3QgeWV0IHJlYWR5LgMJAABnAAAAAgAAAAAAAAAAAAUAAAAGYW1vdW50CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAACJDYW5ub3QgZmluZCBwb29sIG1ha2VyIGJ5IGFkZHJlc3MgBQAAAA1jYWxsZXJBZGRyZXNzAgAAACEgb3IgYW1vdW50IHBhc3NlZCBpcyBub3QgY29ycmVjdC4DCQAAZwAAAAIAAAAAAAAAAAAFAAAAFXBvb2xNYWtlckFjdHVhbEFtb3VudAkAAAIAAAABAgAAABdQb29sIG1ha2VyIGhhcyBubyBmdW5kcwMJAABnAAAAAgAAAAAAAAAAAAUAAAAVYWxsb3dlZEFtb3VudFRvUmVkZWVtCQAAAgAAAAECAAAAH0FsbCBwb29sIG1ha2VyIGZ1bmRzIGFyZSBsb2NrZWQDCQAAZgAAAAIFAAAABmFtb3VudAUAAAAVYWxsb3dlZEFtb3VudFRvUmVkZWVtCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAR0FsbG93ZWQgYW1vdW50IHRvIHJlZGVlbSBpcyBsZXNzIHRoZW4gcmVxdWVzdGVkOiBhbGxvd2VkQW1vdW50VG9SZWRlZW09CQABpAAAAAEFAAAAFWFsbG93ZWRBbW91bnRUb1JlZGVlbQIAAAALIHJlcXVlc3RlZD0JAAGkAAAAAQUAAAAGYW1vdW50AwkAAGYAAAACCQAAaAAAAAIAAAAAAAAAAAEFAAAADW11bHRpcGxpY2F0b3IFAAAABmFtb3VudAkAAAIAAAABAgAAACZSZWRlZW0gYW1vdW50IGlzIGxlc3MgdGhlbiBtaW4gYWxsb3dlZAMJAABmAAAAAgUAAAAVcG9vbE1ha2VyTG9ja2VkQW1vdW50AAAAAAAAAAAACQAAAgAAAAECAAAARlBvb2wgbWFrZXIgYWxyZWFkeSBoYXMgaW5pdGlhdGVkIHJlZGVtcHRpb24gdGhhdCBpcyBub3Qgd2l0aGRyYXduIHlldC4DCQEAAAAJaXNEZWZpbmVkAAAAAQkABBoAAAACBQAAAAR0aGlzBQAAABxwb29sTWFrZXJMaXF1aWRpdHlSZXF1ZXN0S2V5CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAADBQb29sIG1ha2VyIGhhcyBhbHJlYWR5IGluaXRpYXRlZCByZWRlbXB0aW9uIGZvciAJAAGkAAAAAQUAAAAGaGVpZ2h0AgAAAAcgaGVpZ2h0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAbZ2V0UG9vbFRvdGFsTG9ja2VkQW1vdW50S2V5AAAAAQUAAAAPYXNzZXRBZGRyZXNzU3RyCQAAZAAAAAIFAAAAD3Bvb2xUb3RhbExvY2tlZAUAAAAGYW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAdZ2V0QXNzZXRDdXJycmVudFBvb2xBbW91bnRLZXkAAAABBQAAAA9hc3NldEFkZHJlc3NTdHIJAABlAAAAAgUAAAAOcG9vbEFjdHVhbFNpemUFAAAABmFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAImdldFBvb2xNYWtlclBhcnRpY2lwYXRpb25BbW91bnRLZXkAAAACBQAAAA9hc3NldEFkZHJlc3NTdHIFAAAADWNhbGxlckFkZHJlc3MJAABlAAAAAgUAAAAVcG9vbE1ha2VyQWN0dWFsQW1vdW50BQAAAAZhbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAHHBvb2xNYWtlckxpcXVpZGl0eVJlcXVlc3RLZXkFAAAABmFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAG2dldFBvb2xNYWtlckxvY2tlZEFtb3VudEtleQAAAAIFAAAAD2Fzc2V0QWRkcmVzc1N0cgUAAAANY2FsbGVyQWRkcmVzcwUAAAAGYW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAbZ2V0UG9vbE1ha2VyVW5sb2NrSGVpZ2h0S2V5AAAAAgUAAAAPYXNzZXRBZGRyZXNzU3RyBQAAAA1jYWxsZXJBZGRyZXNzBQAAAA53aXRoZHJhd0hlaWdodAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAABklcyVzX3RyYWNlX3JlZGVlbUZyb21Qb29sBQAAAAl0cmFjZURhdGEFAAAAA25pbAAAAAFpAQAAABtnZXRNYXhBbGxvd2VkQW1vdW50VG9SZWRlZW0AAAACAAAACWFzc2V0Q29kZQAAABBwb29sTWFrZXJBZGRyZXNzBAAAAAtyZWRlZW1UdXBsZQkBAAAAGWNhbGNBbGxvd2VkQW1vdW50VG9SZWRlZW0AAAACBQAAAAlhc3NldENvZGUFAAAAEHBvb2xNYWtlckFkZHJlc3MEAAAAD2Fzc2V0QWRkcmVzc1N0cggFAAAAC3JlZGVlbVR1cGxlAAAAAl8xBAAAABVhbGxvd2VkQW1vdW50VG9SZWRlZW0IBQAAAAtyZWRlZW1UdXBsZQAAAAJfMgQAAAAPcG9vbFRvdGFsTG9ja2VkCAUAAAALcmVkZWVtVHVwbGUAAAACXzMEAAAADnBvb2xBY3R1YWxTaXplCAUAAAALcmVkZWVtVHVwbGUAAAACXzQEAAAAFXBvb2xNYWtlckFjdHVhbEFtb3VudAgFAAAAC3JlZGVlbVR1cGxlAAAAAl81BAAAAA53aXRoZHJhd0hlaWdodAgFAAAAC3JlZGVlbVR1cGxlAAAAAl82BAAAABVwb29sTWFrZXJMb2NrZWRBbW91bnQIBQAAAAtyZWRlZW1UdXBsZQAAAAJfNwQAAAAJdHJhY2VEYXRhCAUAAAALcmVkZWVtVHVwbGUAAAACXzgJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAABewIAAAAXYWxsb3dlZEFtb3VudFRvUmVkZWVtOiAJAAGkAAAAAQUAAAAVYWxsb3dlZEFtb3VudFRvUmVkZWVtAgAAAA0sIGFzc2V0Q29kZTogBQAAAAlhc3NldENvZGUCAAAADSwgcG9vbE1ha2VyOiAFAAAAEHBvb2xNYWtlckFkZHJlc3MCAAAACSwgdHJhY2U6IAUAAAAJdHJhY2VEYXRhAgAAAAF9AAAAAWkBAAAACHdpdGhkcmF3AAAAAgAAAAlhc3NldENvZGUAAAAQcG9vbE1ha2VyQWRkcmVzcwQAAAAPYXNzZXRBZGRyZXNzU3RyCQEAAAAbZ2V0QXNzZXRBZGRyZXNzQnlDb2RlT3JGYWlsAAAAAQUAAAAJYXNzZXRDb2RlBAAAAAxhc3NldEFkZHJlc3MJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAD2Fzc2V0QWRkcmVzc1N0cgQAAAAYcG9vbE1ha2VyTG9ja2VkQW1vdW50S2V5CQEAAAAbZ2V0UG9vbE1ha2VyTG9ja2VkQW1vdW50S2V5AAAAAgUAAAAPYXNzZXRBZGRyZXNzU3RyBQAAABBwb29sTWFrZXJBZGRyZXNzBAAAABlyZWdpc3RlcmVkQW1vdW50NFdpdGhkcmF3CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAGHBvb2xNYWtlckxvY2tlZEFtb3VudEtleQAAAAAAAAAAAAQAAAAYcG9vbE1ha2VyVW5sb2NrSGVpZ2h0S2V5CQEAAAAbZ2V0UG9vbE1ha2VyVW5sb2NrSGVpZ2h0S2V5AAAAAgUAAAAPYXNzZXRBZGRyZXNzU3RyBQAAABBwb29sTWFrZXJBZGRyZXNzBAAAAA53aXRoZHJhd0hlaWdodAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAABhwb29sTWFrZXJVbmxvY2tIZWlnaHRLZXkAAAAAAAAAAAAEAAAAGHBvb2xUb3RhbExvY2tlZEFtb3VudEtleQkBAAAAG2dldFBvb2xUb3RhbExvY2tlZEFtb3VudEtleQAAAAEFAAAAD2Fzc2V0QWRkcmVzc1N0cgQAAAAPcG9vbFRvdGFsTG9ja2VkCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAGHBvb2xUb3RhbExvY2tlZEFtb3VudEtleQAAAAAAAAAAAAQAAAAccG9vbE1ha2VyTGlxdWlkaXR5UmVxdWVzdEtleQkBAAAAH2dldFBvb2xNYWtlckxpcXVpZGl0eVJlcXVlc3RLZXkAAAADBQAAAA9hc3NldEFkZHJlc3NTdHIFAAAAEHBvb2xNYWtlckFkZHJlc3MFAAAADndpdGhkcmF3SGVpZ2h0AwkAAAAAAAACCQEAAAAMZ2V0Qm9vbEJ5S2V5AAAAAQUAAAAQaXNJbml0aWFsaXplZEtleQcJAAACAAAAAQIAAAAaQ29udHJhY3QgaXMgbm90IHlldCByZWFkeS4DCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCQAEGgAAAAIFAAAADGFzc2V0QWRkcmVzcwUAAAAccG9vbE1ha2VyTGlxdWlkaXR5UmVxdWVzdEtleQkAAAIAAAABAgAAADNOZWVkIHRvIHRyYW5zZmVyIGxpcXVpZGl0eSBmcm9tIGFzc2V0IGFjY291bnQgZmlyc3QDCQAAZwAAAAIAAAAAAAAAAAAFAAAAGXJlZ2lzdGVyZWRBbW91bnQ0V2l0aGRyYXcJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAIkNhbm5vdCBmaW5kIHBvb2wgbWFrZXIgYnkgYWRkcmVzcyAFAAAAEHBvb2xNYWtlckFkZHJlc3MCAAAAFSBvciBubyBsb2NrZWQgYW1vdW50LgMJAABmAAAAAgUAAAAOd2l0aGRyYXdIZWlnaHQFAAAABmhlaWdodAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAMUGxlYXNlIHdhaXQgCQABpAAAAAEFAAAADndpdGhkcmF3SGVpZ2h0AgAAABEgYmVmb3JlIHdpdGhkcmF3LgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAYcG9vbE1ha2VyTG9ja2VkQW1vdW50S2V5AAAAAAAAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABhwb29sVG90YWxMb2NrZWRBbW91bnRLZXkJAABlAAAAAgUAAAAPcG9vbFRvdGFsTG9ja2VkBQAAABlyZWdpc3RlcmVkQW1vdW50NFdpdGhkcmF3CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABhwb29sTWFrZXJVbmxvY2tIZWlnaHRLZXkAAAAAAAAAAAAJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAAQcG9vbE1ha2VyQWRkcmVzcwUAAAAZcmVnaXN0ZXJlZEFtb3VudDRXaXRoZHJhdwUAAAAPbmV1dHJpbm9Bc3NldElkBQAAAANuaWwAAAAAYBR4rQ==", "chainId": 84, "height": 1257698, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7vKjHAJwjLZqV8nCqm1nxqjLTUqeMDfMnFTMViWq9Z8H Next: FzfZGgJjPWhCp836dTNqB94ktnnq1rdPVvfUhY4n9ie3 Diff:
OldNewDifferences
313313 let co = if ((cl >= 0))
314314 then 0
315315 else max([cm, cn])
316- let cp = fraction((al - co), cj, al)
316+ let cp = if ((cl >= 0))
317+ then cj
318+ else (fraction(co, cl, al) + cj)
317319 let cq = (height + aX(bB))
318320 $Tuple8(bR, cp, bW, bT, cj, cq, ck, makeString([bR, bS, ad, toString(bX), toString(bY), toString(bZ), toString(bT), toString(bU), toString(ca), toString(cd), toString(ce), toString(cf), toString(ch), toString(cj), toString(ck), toString(cl), toString(cm), toString(cn), toString(co), toString(cp)], h))
319321 }
440442 let cT = ah(bR, cQ, cq)
441443 if ((g(C) == false))
442444 then throw("Contract is not yet ready.")
443- else if (if (if ((0 > cP))
444- then true
445- else (0 >= cj))
446- then true
447- else (cP > cp))
445+ else if ((0 >= cP))
448446 then throw((("Cannot find pool maker by address " + cQ) + " or amount passed is not correct."))
449- else if (((1 * al) > cP))
450- then throw("Redeem amount is less then min allowed")
451- else if ((ck > 0))
452- then throw("Pool maker already has initiated redemption that is not withdrawn yet.")
453- else if (isDefined(getInteger(this, cT)))
454- then throw((("Pool maker has already initiated redemption for " + toString(height)) + " height"))
455- else [IntegerEntry(aj(bR), (bW + cP)), IntegerEntry(V(bR), (bT - cP)), IntegerEntry(ac(bR, cQ), (cj - cP)), IntegerEntry(cT, cP), IntegerEntry(af(bR, cQ), cP), IntegerEntry(ag(bR, cQ), cq), StringEntry("%s%s_trace_redeemFromPool", cS)]
447+ else if ((0 >= cj))
448+ then throw("Pool maker has no funds")
449+ else if ((0 >= cp))
450+ then throw("All pool maker funds are locked")
451+ else if ((cP > cp))
452+ then throw(((("Allowed amount to redeem is less then requested: allowedAmountToRedeem=" + toString(cp)) + " requested=") + toString(cP)))
453+ else if (((1 * al) > cP))
454+ then throw("Redeem amount is less then min allowed")
455+ else if ((ck > 0))
456+ then throw("Pool maker already has initiated redemption that is not withdrawn yet.")
457+ else if (isDefined(getInteger(this, cT)))
458+ then throw((("Pool maker has already initiated redemption for " + toString(height)) + " height"))
459+ else [IntegerEntry(aj(bR), (bW + cP)), IntegerEntry(V(bR), (bT - cP)), IntegerEntry(ac(bR, cQ), (cj - cP)), IntegerEntry(cT, cP), IntegerEntry(af(bR, cQ), cP), IntegerEntry(ag(bR, cQ), cq), StringEntry("%s%s_trace_redeemFromPool", cS)]
456460 }
457461
458462
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b,c) = split(b, c)
55
66
77 func d (e,f) = valueOrElse(getString(e, f), "")
88
99
1010 func g (f) = valueOrElse(getBoolean(this, f), false)
1111
1212
1313 let h = "__"
1414
1515 let i = 1
1616
1717 let j = 2
1818
1919 let k = 3
2020
2121 let l = 4
2222
2323 let m = 5
2424
2525 let n = 6
2626
2727 let o = 7
2828
2929 let p = 8
3030
3131 let q = 9
3232
3333 let r = 10
3434
3535 let s = 11
3636
3737 let t = 12
3838
3939 let u = 13
4040
4141 let v = 14
4242
4343 let w = 15
4444
4545 let x = 16
4646
4747 let y = "G1Ebu5AMHaTJFEbZNkZQcJFUQ9KfiYUwupyLG857DcFr"
4848
4949 let z = "%s%s__commonConfig__neutrinoContractAddress"
5050
5151 let A = "%s%s__commonConfig__neutrinoStakingAddress"
5252
5353 let B = "%s%s__commonConfig__minimumPoolFundingAmount"
5454
5555 let C = "%s%s__commonConfig__initialized"
5656
5757 let D = "%s%s__commonConfig__predefinedAssetsActiveIndex"
5858
5959 let E = "%s%s__commonConfig__predefinedAssetsList"
6060
6161 let F = "%s%s__commonConfig__debtAssetId"
6262
6363 let G = "%s%s__commonConfig__debtAssetEtalonBalance"
6464
6565 let H = "%s%s__commonConfig__defoStakingAddress"
6666
6767 let I = "%s%s__commonConfig__defoStakingPacemakerPub"
6868
6969 let J = "%s%s__commonConfig__minPoolInvestAmount"
7070
7171 let K = "neutrino_asset_id"
7272
7373 let L = "bond_asset_id"
7474
7575 let M = "rpd_contract"
7676
7777 let N = "%s__defoAssetId"
7878
7979 let O = "%s__assetScriptTxId"
8080
8181 func P (Q) = (("%s%s%s__defoAsset__" + Q) + "__config")
8282
8383
8484 func R (S) = ("%s%s__price__" + S)
8585
8686
8787 func T (Q) = (("%s%s%s__defoAsset__" + Q) + "__initHeight")
8888
8989
9090 func U (Q) = (("%s%s%s__defoAsset__" + Q) + "__activateHeight")
9191
9292
9393 func V (Q) = (("%s%s%s__defoAsset__" + Q) + "__currentPool")
9494
9595
9696 func W (Q) = (("%s%s%s__defoAsset__" + Q) + "__maxPool")
9797
9898
9999 func X (Q) = (("%s%s%s__defoAsset__" + Q) + "__meta")
100100
101101
102102 func Y (Q) = (("%s%s%s__defoAsset__" + Q) + "__poolMakers")
103103
104104
105105 func Z (S) = (("%s%s%s__defoAsset__" + S) + "__addressByAssetCode")
106106
107107
108108 func aa (ab) = (("%s%s%s__defoAsset__" + ab) + "__addressByAssetId")
109109
110110
111111 func ac (Q,ad) = makeString(["%s%s%s%s__pool", Q, ad, "amount"], h)
112112
113113
114114 func ae (Q,ad) = makeString(["%s%s%s%s__pool", Q, ad, "maxAmount"], h)
115115
116116
117117 func af (Q,ad) = makeString(["%s%s%s%s__pool", Q, ad, "lockedAmount"], h)
118118
119119
120120 func ag (Q,ad) = makeString(["%s%s%s%s__pool", Q, ad, "unlockHeight"], h)
121121
122122
123123 func ah (Q,ad,ai) = makeString(["%s%s%s%d%s__pool", Q, ad, toString(ai), "liquidityRequest"], h)
124124
125125
126126 func aj (Q) = makeString(["%s%s%s__pool", Q, "totalLockedAmount"], h)
127127
128128
129129 func ak (Q) = a(valueOrErrorMessage(d(this, P(Q)), (("No DEFO Asset " + Q) + "config present")), "__")
130130
131131
132132 let al = 1000000
133133
134134 let am = addressFromStringValue(valueOrErrorMessage(getString(this, z), "No neutrino contract specified."))
135135
136136 let an = valueOrErrorMessage(getString(am, K), "No USDN asset id found.")
137137
138138 let ao = fromBase58String(an)
139139
140140 let ap = fromBase58String(valueOrErrorMessage(getString(am, L), "No NSBT asset id found"))
141141
142142 let aq = valueOrErrorMessage(getInteger(this, B), "Minimum pool funding amount is not specified.")
143143
144144 let ar = valueOrElse(getInteger(this, J), (10 * al))
145145
146146 let as = "PROPOSED"
147147
148148 let at = "READY"
149149
150150 let au = "ISSUED"
151151
152152 let av = $Tuple3(as, at, au)
153153
154154 let aw = valueOrErrorMessage(getString(this, E), "No pool of predeployed asset contracts found.")
155155
156156 let ax = a(aw, ",")
157157
158158 let ay = valueOrElse(getInteger(this, D), 0)
159159
160160 let az = fromBase58String(valueOrErrorMessage(getString(this, F), "No debt token found"))
161161
162162 let aA = valueOrElse(getInteger(this, G), 0)
163163
164164 let aB = addressFromStringValue(getStringValue(am, M))
165165
166166 func aC (aD) = {
167167 let aE = makeString(["rpd_balance", an, aD], "_")
168168 valueOrElse(getInteger(aB, aE), 0)
169169 }
170170
171171
172172 func aF (aG) = valueOrElse(getString(this, Z(aG)), "")
173173
174174
175175 func aH (aG) = valueOrErrorMessage(getString(this, Z(aG)), (("Cannot find asset address by " + aG) + " code"))
176176
177177
178178 func aI (aJ) = aJ[i]
179179
180180
181181 func aK (aJ) = aJ[j]
182182
183183
184184 func aL (aJ) = aJ[k]
185185
186186
187187 func aM (aJ) = parseIntValue(aJ[l])
188188
189189
190190 func aN (aJ) = aJ[m]
191191
192192
193193 func aO (aJ) = parseIntValue(aJ[n])
194194
195195
196196 func aP (aJ) = parseIntValue(aJ[o])
197197
198198
199199 func aQ (aJ) = aJ[p]
200200
201201
202202 func aR (aJ) = parseIntValue(aJ[q])
203203
204204
205205 func aS (aJ) = parseIntValue(aJ[r])
206206
207207
208208 func aT (aJ) = parseIntValue(aJ[s])
209209
210210
211211 func aU (aJ) = parseIntValue(aJ[t])
212212
213213
214214 func aV (aJ) = parseIntValue(aJ[u])
215215
216216
217217 func aW (aJ) = parseIntValue(aJ[v])
218218
219219
220220 func aX (aJ) = parseIntValue(aJ[w])
221221
222222
223223 func aY (aJ) = parseIntValue(aJ[x])
224224
225225
226226 func aZ (Q) = valueOrElse(getString(this, Y(Q)), "")
227227
228228
229229 func ba (Q) = valueOrElse(getInteger(this, T(Q)), 0)
230230
231231
232232 func bb (Q) = valueOrElse(getInteger(this, U(Q)), 0)
233233
234234
235235 func bc (Q) = valueOrElse(getInteger(this, V(Q)), 0)
236236
237237
238238 func bd (Q) = valueOrElse(getInteger(this, W(Q)), 0)
239239
240240
241241 func be (Q) = valueOrElse(getString(this, X(Q)), "")
242242
243243
244244 func bf (Q,ad) = valueOrElse(getInteger(this, ac(Q, ad)), 0)
245245
246246
247247 func bg (Q,ad) = valueOrElse(getInteger(this, ae(Q, ad)), 0)
248248
249249
250250 func bh (Q,ad) = valueOrElse(getInteger(this, af(Q, ad)), 0)
251251
252252
253253 func bi (Q,ad) = valueOrElse(getInteger(this, ag(Q, ad)), 0)
254254
255255
256256 func bj (bk,S) = valueOrErrorMessage(getInteger(bk, R(S)), "No Asset price found")
257257
258258
259259 func bl (Q) = valueOrElse(getInteger(this, aj(Q)), 0)
260260
261261
262262 func bm (S,ab,av,bn,bo,bp,bq,bk,br,bs,bt,bu,bv,bw,bx,by) = makeString(["%s%s%s%d%s%d%d%s%d%d%d%d%d%d%d", S, ab, av, toString(bn), bo, toString(bp), toString(bq), bk, toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by)], "__")
263263
264264
265265 func bz (bA,bB) = {
266266 let bC = aI(bB)
267267 let bD = aK(bB)
268268 let bE = aM(bB)
269269 let bF = aN(bB)
270270 let bG = aO(bB)
271271 let bH = aP(bB)
272272 let bI = aQ(bB)
273273 let bJ = aR(bB)
274274 let bK = aS(bB)
275275 let bL = aT(bB)
276276 let bM = aU(bB)
277277 let bN = aV(bB)
278278 let bO = aW(bB)
279279 let bP = aX(bB)
280280 let by = aY(bB)
281281 bm(bC, bD, bA, bE, bF, bG, bH, bI, bJ, bK, bL, bM, bN, bO, bP, by)
282282 }
283283
284284
285285 func bQ (S,ad) = {
286286 let bR = aH(S)
287287 let Q = addressFromStringValue(bR)
288288 let bB = ak(bR)
289289 let bS = aK(bB)
290290 let ab = fromBase58String(bS)
291291 let bT = valueOrElse(getInteger(this, V(bR)), 0)
292292 let bU = valueOrElse(getInteger(this, W(bR)), 0)
293293 let bV = aj(bR)
294294 let bW = valueOrElse(getInteger(this, bV), 0)
295295 let bX = aC(bR)
296296 let bY = assetBalance(Q, ao)
297297 let bZ = ((bX + bY) - bW)
298298 let ca = (bZ - bT)
299299 let cb = assetBalance(Q, ab)
300300 let cc = valueOrErrorMessage(assetInfo(ab), ("Cannot find asset by id " + bS)).quantity
301301 let cd = (cc - cb)
302302 let bk = addressFromStringValue(aQ(bB))
303303 let ce = bj(bk, S)
304304 let cf = (((al + aO(bB)) * ce) / al)
305305 let cg = fraction(cf, cd, al)
306306 let ch = bg(bR, ad)
307307 let ci = ac(bR, ad)
308308 let cj = valueOrElse(getInteger(this, ci), 0)
309309 let ck = bh(bR, ad)
310310 let cl = (ca - cg)
311311 let cm = fraction(cj, al, bT)
312312 let cn = fraction(ch, al, bU)
313313 let co = if ((cl >= 0))
314314 then 0
315315 else max([cm, cn])
316- let cp = fraction((al - co), cj, al)
316+ let cp = if ((cl >= 0))
317+ then cj
318+ else (fraction(co, cl, al) + cj)
317319 let cq = (height + aX(bB))
318320 $Tuple8(bR, cp, bW, bT, cj, cq, ck, makeString([bR, bS, ad, toString(bX), toString(bY), toString(bZ), toString(bT), toString(bU), toString(ca), toString(cd), toString(ce), toString(cf), toString(ch), toString(cj), toString(ck), toString(cl), toString(cm), toString(cn), toString(co), toString(cp)], h))
319321 }
320322
321323
322324 @Callable(cr)
323325 func init (cs,ct,cu,cv,ay,cw,cx,cy) = if ((toBase58String(cr.callerPublicKey) != y))
324326 then throw("Only Admin can perform contract operation.")
325327 else if ((g(C) == true))
326328 then throw("Contract was already initialized.")
327329 else {
328330 let cz = Issue("DEFO_DEBT", "DEFO Debt Token.", 1, 6, true)
329331 let cA = calculateAssetId(cz)
330332 [StringEntry(z, cs), StringEntry(A, ct), IntegerEntry(B, cu), StringEntry(E, cv), IntegerEntry(D, ay), IntegerEntry(G, cw), StringEntry(F, toBase58String(cA)), StringEntry(H, cx), StringEntry(I, cy), BooleanEntry(C, true), cz, Burn(cA, 1)]
331333 }
332334
333335
334336
335337 @Callable(cr)
336338 func proposeAsset (S,cB,bq,bk,bp,bo,bn,br,bs,bt,bu,bv,bw,bx,by) = if ((toBase58String(cr.callerPublicKey) != y))
337339 then throw("Only Admin can perform contract operation.")
338340 else if ((g(C) == false))
339341 then throw("Contract is not yet ready.")
340342 else if ((fromBase58String(bo) != ao))
341343 then throw("Baking asset id could be USDN only.")
342344 else if ((aF(S) != ""))
343345 then throw((("Asset with passed code " + S) + " has already been proposed."))
344346 else if ((aq > bq))
345347 then throw(("Minimum pool amount should be greater or equals to " + toString(aq)))
346348 else if (if (if (if (if (if (if (if ((0 > bp))
347349 then true
348350 else (0 > bn))
349351 then true
350352 else (0 > br))
351353 then true
352354 else (0 > bs))
353355 then true
354356 else (0 > bt))
355357 then true
356358 else (0 > bu))
357359 then true
358360 else (0 > bv))
359361 then true
360362 else (0 > bw))
361363 then throw("One of the passed parameters is invalid.")
362364 else {
363365 let cC = valueOrErrorMessage(addressFromStringValue(bk), "Passed Price Oracle Address is not valid.")
364366 let Q = ax[ay]
365367 let cD = valueOrErrorMessage(getString(valueOrErrorMessage(addressFromString(Q), ""), N), "No defo asset ID found.")
366368 [StringEntry(P(Q), bm(S, cD, av._1, bn, bo, bp, bq, bk, br, bs, bt, bu, bv, bw, bx, by)), StringEntry(Z(S), Q), StringEntry(X(Q), cB), IntegerEntry(T(Q), height), IntegerEntry(D, (ay + 1)), StringEntry(aa(cD), Q)]
367369 }
368370
369371
370372
371373 @Callable(cr)
372374 func fundLiquidityPool (S) = {
373375 let bR = aH(S)
374376 let bB = ak(bR)
375377 let cE = value(cr.payments[0])
376378 let ad = toString(cr.caller)
377379 if ((g(C) == false))
378380 then throw("Contract is not yet ready.")
379381 else if ((cE.assetId != ao))
380382 then throw("Liquidity pool could be funded with USDN only.")
381383 else if ((ar > cE.amount))
382384 then throw(("Attached payment amount is less tha min allowed: " + toString(ar)))
383385 else {
384386 let cF = (cE.amount + bc(bR))
385387 let cG = bd(bR)
386388 let cH = bf(bR, ad)
387389 let cI = bg(bR, ad)
388390 let cJ = aL(bB)
389391 let cK = if (if ((cJ == as))
390392 then (cF >= aP(bB))
391393 else false)
392394 then at
393395 else cJ
394396 let cL = (cH + cE.amount)
395397 let cM = if ((cJ == au))
396398 then [ScriptTransfer(addressFromStringValue(bR), cE.amount, ao)]
397399 else nil
398400 ([IntegerEntry(ac(bR, ad), cL), IntegerEntry(ae(bR, ad), max([cL, cI])), IntegerEntry(V(bR), cF), IntegerEntry(W(bR), max([cG, cF])), StringEntry(P(bR), bz(cK, bB))] ++ cM)
399401 }
400402 }
401403
402404
403405
404406 @Callable(cr)
405407 func activateAsset (S) = {
406408 let Q = aF(S)
407409 let bB = ak(Q)
408410 let cN = bc(Q)
409411 let cO = aL(bB)
410412 if ((toBase58String(cr.callerPublicKey) != y))
411413 then throw("Only Admin can perform contract operation.")
412414 else if ((g(C) == false))
413415 then throw("Contract is not yet ready.")
414416 else if ((cO != av._2))
415417 then throw((("Asset is not in READY status. Current status is " + cO) + "."))
416418 else if ((Q == ""))
417419 then throw((("Cannot find asset " + S) + "."))
418420 else if ((aq > cN))
419421 then throw((((("Cannot issue asset as liquidity pool amount (" + toString(cN)) + ") is less than required (") + toString(aq)) + ")"))
420422 else {
421423 let cz = Reissue(az, aA, true)
422424 [IntegerEntry(U(Q), height), StringEntry(P(Q), bz(av._3, bB)), cz, ScriptTransfer(addressFromStringValue(Q), cN, ao), ScriptTransfer(addressFromStringValue(Q), aA, az)]
423425 }
424426 }
425427
426428
427429
428430 @Callable(cr)
429431 func redeemFromPool (S,cP) = {
430432 let cQ = toString(cr.caller)
431433 let cR = bQ(S, cQ)
432434 let bR = cR._1
433435 let cp = cR._2
434436 let bW = cR._3
435437 let bT = cR._4
436438 let cj = cR._5
437439 let cq = cR._6
438440 let ck = cR._7
439441 let cS = cR._8
440442 let cT = ah(bR, cQ, cq)
441443 if ((g(C) == false))
442444 then throw("Contract is not yet ready.")
443- else if (if (if ((0 > cP))
444- then true
445- else (0 >= cj))
446- then true
447- else (cP > cp))
445+ else if ((0 >= cP))
448446 then throw((("Cannot find pool maker by address " + cQ) + " or amount passed is not correct."))
449- else if (((1 * al) > cP))
450- then throw("Redeem amount is less then min allowed")
451- else if ((ck > 0))
452- then throw("Pool maker already has initiated redemption that is not withdrawn yet.")
453- else if (isDefined(getInteger(this, cT)))
454- then throw((("Pool maker has already initiated redemption for " + toString(height)) + " height"))
455- else [IntegerEntry(aj(bR), (bW + cP)), IntegerEntry(V(bR), (bT - cP)), IntegerEntry(ac(bR, cQ), (cj - cP)), IntegerEntry(cT, cP), IntegerEntry(af(bR, cQ), cP), IntegerEntry(ag(bR, cQ), cq), StringEntry("%s%s_trace_redeemFromPool", cS)]
447+ else if ((0 >= cj))
448+ then throw("Pool maker has no funds")
449+ else if ((0 >= cp))
450+ then throw("All pool maker funds are locked")
451+ else if ((cP > cp))
452+ then throw(((("Allowed amount to redeem is less then requested: allowedAmountToRedeem=" + toString(cp)) + " requested=") + toString(cP)))
453+ else if (((1 * al) > cP))
454+ then throw("Redeem amount is less then min allowed")
455+ else if ((ck > 0))
456+ then throw("Pool maker already has initiated redemption that is not withdrawn yet.")
457+ else if (isDefined(getInteger(this, cT)))
458+ then throw((("Pool maker has already initiated redemption for " + toString(height)) + " height"))
459+ else [IntegerEntry(aj(bR), (bW + cP)), IntegerEntry(V(bR), (bT - cP)), IntegerEntry(ac(bR, cQ), (cj - cP)), IntegerEntry(cT, cP), IntegerEntry(af(bR, cQ), cP), IntegerEntry(ag(bR, cQ), cq), StringEntry("%s%s_trace_redeemFromPool", cS)]
456460 }
457461
458462
459463
460464 @Callable(cr)
461465 func getMaxAllowedAmountToRedeem (S,ad) = {
462466 let cR = bQ(S, ad)
463467 let bR = cR._1
464468 let cp = cR._2
465469 let bW = cR._3
466470 let bT = cR._4
467471 let cj = cR._5
468472 let cq = cR._6
469473 let ck = cR._7
470474 let cS = cR._8
471475 throw(((((((((("{" + "allowedAmountToRedeem: ") + toString(cp)) + ", assetCode: ") + S) + ", poolMaker: ") + ad) + ", trace: ") + cS) + "}"))
472476 }
473477
474478
475479
476480 @Callable(cr)
477481 func withdraw (S,ad) = {
478482 let bR = aH(S)
479483 let Q = addressFromStringValue(bR)
480484 let cU = af(bR, ad)
481485 let cV = valueOrElse(getInteger(this, cU), 0)
482486 let cW = ag(bR, ad)
483487 let cq = valueOrElse(getInteger(this, cW), 0)
484488 let bV = aj(bR)
485489 let bW = valueOrElse(getInteger(this, bV), 0)
486490 let cT = ah(bR, ad, cq)
487491 if ((g(C) == false))
488492 then throw("Contract is not yet ready.")
489493 else if (!(isDefined(getInteger(Q, cT))))
490494 then throw("Need to transfer liquidity from asset account first")
491495 else if ((0 >= cV))
492496 then throw((("Cannot find pool maker by address " + ad) + " or no locked amount."))
493497 else if ((cq > height))
494498 then throw((("Please wait " + toString(cq)) + " before withdraw."))
495499 else [IntegerEntry(cU, 0), IntegerEntry(bV, (bW - cV)), IntegerEntry(cW, 0), ScriptTransfer(addressFromStringValue(ad), cV, ao)]
496500 }
497501
498502

github/deemru/w8io/169f3d6 
63.30 ms