tx · 2ouMhj8ivPh81KrkUmZgL4kB7fTEiErURkQn1vkfTRo3

3MxbR7b3gHF4XdQKNTT5aQMRiazHvrVWC8N:  -0.02000000 Waves

2021.01.08 12:09 [1344231] smart account 3MxbR7b3gHF4XdQKNTT5aQMRiazHvrVWC8N > SELF 0.00000000 Waves

{ "type": 13, "id": "2ouMhj8ivPh81KrkUmZgL4kB7fTEiErURkQn1vkfTRo3", "fee": 2000000, "feeAssetId": null, "timestamp": 1610096966621, "version": 1, "sender": "3MxbR7b3gHF4XdQKNTT5aQMRiazHvrVWC8N", "senderPublicKey": "4bj7YXaphTC4Ldx7DqqMmrTjNshRtw1yNsej2XXZcAzS", "proofs": [ "4c18zeLSpHoRQdwXJ4rXYFkKXY9qpfHbqniBA859V71yw1eECwVEydTLzGsBLTZmLkqNgd3iSDXJ6zN7wHyTfzBw", "29jSoxPWjixqvp18ynpqHrcWeuAxq3g9kvdwb6rxY9mszvWgYkDSeN5kH3iJGr9YKr628RHXfw3p8UEUHLdiv28p", "5HGPe8egu81gSyvwBa57MZDh4JjXaD9LLARTdj7xrWVtTc4PdWy6KXR5LQnoeRezuKwSNoLgJrELYogoyYzi8fvY" ], "script": "base64:AAIEAAAAAAAAABkIAhIDCgEBEgMKAQESBAoCAQgSAwoBCBIAAAAAQwEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkAAAAAAAAAAAABAAAADmdldFN0cmluZ0J5S2V5AAAAAQAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AgAAAAABAAAAFmdldEJvb2xCeUFkZHJlc3NBbmRLZXkAAAACAAAAB2FkZHJlc3MAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQcBAAAAGGdldFN0cmluZ0J5QWRkcmVzc0FuZEtleQAAAAIAAAAHYWRkcmVzcwAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AgAAAAABAAAAGGdldE51bWJlckJ5QWRkcmVzc0FuZEtleQAAAAIAAAAHYWRkcmVzcwAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AAAAAAAAAAAAAAAAAAdXQVZFTEVUAAAAAAAF9eEAAAAAAAVQQVVMSQAAAAAAAA9CQAAAAAAKUEFVTElTQ0FMRQAAAAAAAAAABgAAAAAIUFJJQ0VMRVQAAAAAAAAPQkAAAAAABE1VTFQAAAAAAAX14QAAAAAACU1VTFRTQ0FMRQAAAAAAAAAACAAAAAANTUlOT1JERVJUT1RBTAkAAGgAAAACAAAAAAAAAAAKBQAAAAdXQVZFTEVUAAAAAAZNQVhST0kAAAAAAAAAAF8AAAAACENBTkNFTEVEAgAAAAhjYW5jZWxlZAAAAAADTkVXAgAAAANuZXcAAAAABkZJTExFRAIAAAAGZmlsbGVkAAAAAAhQcmljZUtleQIAAAAFcHJpY2UAAAAADkJvbmRBc3NldElkS2V5AgAAAA1ib25kX2Fzc2V0X2lkAAAAABJOZXV0cmlub0Fzc2V0SWRLZXkCAAAAEW5ldXRyaW5vX2Fzc2V0X2lkAAAAABFCYWxhbmNlTG9ja2Vka0tleQIAAAANYmFsYW5jZV9sb2NrXwAAAAAVV2F2ZXNMb2NrZWRCYWxhbmNlS2V5CQABLAAAAAIFAAAAEUJhbGFuY2VMb2NrZWRrS2V5AgAAAAV3YXZlcwAAAAAYTmV1dHJpbm9Mb2NrZWRCYWxhbmNlS2V5CQABLAAAAAIFAAAAEUJhbGFuY2VMb2NrZWRrS2V5AgAAAAhuZXV0cmlubwAAAAANRmlyc3RPcmRlcktleQIAAAALb3JkZXJfZmlyc3QBAAAAEmdldFJvaUJ5T3JkZXJJZEtleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAABBkZWJ1Z19vcmRlcl9yb2lfBQAAAAdvcmRlcklkAQAAABBnZXRPcmRlclByaWNlS2V5AAAAAQAAAAdvcmRlcklkCQABLAAAAAICAAAADG9yZGVyX3ByaWNlXwUAAAAHb3JkZXJJZAEAAAAQZ2V0T3JkZXJUb3RhbEtleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAAxvcmRlcl90b3RhbF8FAAAAB29yZGVySWQBAAAAEGdldE9yZGVyT3duZXJLZXkAAAABAAAAB29yZGVySWQJAAEsAAAAAgIAAAAMb3JkZXJfb3duZXJfBQAAAAdvcmRlcklkAQAAABFnZXRPcmRlckhlaWdodEtleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAA1vcmRlcl9oZWlnaHRfBQAAAAdvcmRlcklkAQAAABFnZXRPcmRlclN0YXR1c0tleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAA1vcmRlcl9zdGF0dXNfBQAAAAdvcmRlcklkAQAAABZnZXRPcmRlckZpbGxlZFRvdGFsS2V5AAAAAQAAAAdvcmRlcklkCQABLAAAAAICAAAAE29yZGVyX2ZpbGxlZF90b3RhbF8FAAAAB29yZGVySWQBAAAAD2dldFByZXZPcmRlcktleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAAtvcmRlcl9wcmV2XwUAAAAHb3JkZXJJZAEAAAAPZ2V0TmV4dE9yZGVyS2V5AAAAAQAAAAdvcmRlcklkCQABLAAAAAICAAAAC29yZGVyX25leHRfBQAAAAdvcmRlcklkAQAAABZjb252ZXJ0TmV1dHJpbm9Ub1dhdmVzAAAAAgAAAAZhbW91bnQAAAAFcHJpY2UJAABrAAAAAwkAAGsAAAADBQAAAAZhbW91bnQFAAAACFBSSUNFTEVUBQAAAAVwcmljZQUAAAAHV0FWRUxFVAUAAAAFUEFVTEkBAAAAFmNvbnZlcnRXYXZlc1RvTmV1dHJpbm8AAAACAAAABmFtb3VudAAAAAVwcmljZQkAAGsAAAADCQAAawAAAAMFAAAABmFtb3VudAUAAAAFcHJpY2UFAAAACFBSSUNFTEVUBQAAAAVQQVVMSQUAAAAHV0FWRUxFVAEAAAASY29udmVydFdhdmVzVG9Cb25kAAAAAgAAAAZhbW91bnQAAAAFcHJpY2UJAQAAABZjb252ZXJ0V2F2ZXNUb05ldXRyaW5vAAAAAgUAAAAGYW1vdW50BQAAAAVwcmljZQEAAAASY29udmVydEJvbmRUb1dhdmVzAAAAAgAAAAZhbW91bnQAAAAFcHJpY2UJAQAAABZjb252ZXJ0TmV1dHJpbm9Ub1dhdmVzAAAAAgUAAAAGYW1vdW50BQAAAAVwcmljZQAAAAAQbmV1dHJpbm9Db250cmFjdAkBAAAAB0FkZHJlc3MAAAABAQAAABoBVHU7b6OlcTCIdohGSL8/NKL5nwWXL+YZyQAAAAAPY29udHJvbENvbnRyYWN0CQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUno2OAJeUn0PSjRqULfZsUfTQiLeRVcFDAAAAABNsaXF1aWRhdGlvbkNvbnRyYWN0CQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUrh+60NLfu2FBMSeZ0mudJuV2fLRxw6pzAAAAAA9uZXV0cmlub0Fzc2V0SWQBAAAAIA/yHBKs5MQ8muxGGqslqLDsugcrRsxtiHLwteKSSQG0AAAAAAtib25kQXNzZXRJZAEAAAAgmJo/x0eBXqqYBUsDVec3bkdYTgn3lisjb3dBcLTJiUgAAAAACWlzQmxvY2tlZAkBAAAAFmdldEJvb2xCeUFkZHJlc3NBbmRLZXkAAAACBQAAAA9jb250cm9sQ29udHJhY3QCAAAACmlzX2Jsb2NrZWQAAAAADGN1cnJlbnRQcmljZQkBAAAAGGdldE51bWJlckJ5QWRkcmVzc0FuZEtleQAAAAIFAAAAD2NvbnRyb2xDb250cmFjdAUAAAAIUHJpY2VLZXkAAAAAFW5ldXRyaW5vTG9ja2VkQmFsYW5jZQkBAAAAGGdldE51bWJlckJ5QWRkcmVzc0FuZEtleQAAAAIFAAAAEG5ldXRyaW5vQ29udHJhY3QFAAAAGE5ldXRyaW5vTG9ja2VkQmFsYW5jZUtleQAAAAAHcmVzZXJ2ZQkAAGUAAAACCAkAA+8AAAABBQAAABBuZXV0cmlub0NvbnRyYWN0AAAAB3JlZ3VsYXIJAQAAABhnZXROdW1iZXJCeUFkZHJlc3NBbmRLZXkAAAACBQAAABBuZXV0cmlub0NvbnRyYWN0BQAAABVXYXZlc0xvY2tlZEJhbGFuY2VLZXkAAAAADnJlc2VydmVzSW5Vc2RuCQEAAAAWY29udmVydFdhdmVzVG9OZXV0cmlubwAAAAIFAAAAB3Jlc2VydmUFAAAADGN1cnJlbnRQcmljZQAAAAAObmV1dHJpbm9TdXBwbHkJAABlAAAAAgkAAGUAAAACCQAAZAAAAAIFAAAAFW5ldXRyaW5vTG9ja2VkQmFsYW5jZQgJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAAPbmV1dHJpbm9Bc3NldElkAAAACHF1YW50aXR5CQAD8AAAAAIFAAAAEG5ldXRyaW5vQ29udHJhY3QFAAAAD25ldXRyaW5vQXNzZXRJZAkAA/AAAAACBQAAABNsaXF1aWRhdGlvbkNvbnRyYWN0BQAAAA9uZXV0cmlub0Fzc2V0SWQAAAAAB2RlZmljaXQJAABlAAAAAgUAAAAObmV1dHJpbm9TdXBwbHkFAAAADnJlc2VydmVzSW5Vc2RuAAAAAA1jdXJyZW50TWF4Um9pCQAAawAAAAMFAAAAB2RlZmljaXQAAAAAAAAAAGQFAAAADm5ldXRyaW5vU3VwcGx5AAAAAA1jdXJyZW50QnJNdWx0CQAAawAAAAMFAAAADnJlc2VydmVzSW5Vc2RuBQAAAARNVUxUBQAAAA5uZXV0cmlub1N1cHBseQAAAAAKZmlyc3RPcmRlcgkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQUAAAANRmlyc3RPcmRlcktleQEAAAANZ2V0T3JkZXJQcmljZQAAAAEAAAACaWQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABBnZXRPcmRlclByaWNlS2V5AAAAAQUAAAACaWQBAAAADWdldE9yZGVyVG90YWwAAAABAAAAAmlkCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAQZ2V0T3JkZXJUb3RhbEtleQAAAAEFAAAAAmlkAQAAAA1nZXRPcmRlck93bmVyAAAAAQAAAAJpZAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAEGdldE9yZGVyT3duZXJLZXkAAAABBQAAAAJpZAEAAAAOZ2V0T3JkZXJTdGF0dXMAAAABAAAAAmlkCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAARZ2V0T3JkZXJTdGF0dXNLZXkAAAABBQAAAAJpZAEAAAATZ2V0T3JkZXJGaWxsZWRUb3RhbAAAAAEAAAACaWQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABZnZXRPcmRlckZpbGxlZFRvdGFsS2V5AAAAAQUAAAACaWQBAAAADGdldFByZXZPcmRlcgAAAAEAAAACaWQJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAA9nZXRQcmV2T3JkZXJLZXkAAAABBQAAAAJpZAEAAAAMZ2V0TmV4dE9yZGVyAAAAAQAAAAJpZAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAD2dldE5leHRPcmRlcktleQAAAAEFAAAAAmlkAQAAAA5nZXRQcmljZUZvclJvaQAAAAEAAAALcm9pUGVyY2VudHMJAABrAAAAAwkAAGQAAAACAAAAAAAAAABkBQAAAAtyb2lQZXJjZW50cwUAAAAMY3VycmVudFByaWNlAAAAAAAAAABkAQAAAA9nZXRSZXZlcnNlUHJpY2UAAAABAAAABXByaWNlCQAAaQAAAAIJAABoAAAAAgUAAAAIUFJJQ0VMRVQFAAAACFBSSUNFTEVUBQAAAAVwcmljZQEAAAAWY2FsY05zYnQyV2F2ZXNQcmljZVJhdwAAAAIAAAANc3BlbnRXYXZlc1JhdwAAAA9yZWNlaXZlZE5zYnRSYXcJAABrAAAAAwUAAAANc3BlbnRXYXZlc1JhdwkAAGgAAAACBQAAAAVQQVVMSQUAAAAIUFJJQ0VMRVQFAAAAD3JlY2VpdmVkTnNidFJhdwEAAAAJb3JkZXJEYXRhAAAABwAAAAdvcmRlcklkAAAADXRvdGFsV2F2ZWxldHMAAAAOZmlsbGVkV2F2ZWxldHMAAAAFb3duZXIAAAAGc3RhdHVzAAAAA3JvaQAAAAVwcmljZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAEGdldE9yZGVyUHJpY2VLZXkAAAABBQAAAAdvcmRlcklkBQAAAAVwcmljZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAEGdldE9yZGVyVG90YWxLZXkAAAABBQAAAAdvcmRlcklkBQAAAA10b3RhbFdhdmVsZXRzCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAWZ2V0T3JkZXJGaWxsZWRUb3RhbEtleQAAAAEFAAAAB29yZGVySWQFAAAADmZpbGxlZFdhdmVsZXRzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABBnZXRPcmRlck93bmVyS2V5AAAAAQUAAAAHb3JkZXJJZAUAAAAFb3duZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABFnZXRPcmRlckhlaWdodEtleQAAAAEFAAAAB29yZGVySWQFAAAABmhlaWdodAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAARZ2V0T3JkZXJTdGF0dXNLZXkAAAABBQAAAAdvcmRlcklkBQAAAAZzdGF0dXMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgIAAAAZZGVidWdfb3JkZXJfY3VycmVudFByaWNlXwUAAAAHb3JkZXJJZAUAAAAMY3VycmVudFByaWNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAASZ2V0Um9pQnlPcmRlcklkS2V5AAAAAQUAAAAHb3JkZXJJZAUAAAADcm9pBQAAAANuaWwBAAAAEGludGVybmFsU2VsbEJvbmQAAAAIAAAAC3BGaXJzdE9yZGVyAAAACnBOZXh0T3JkZXIAAAAMcEZpbGxlZFRvdGFsAAAABHBSb2kAAAAGcFByaWNlAAAAEHBQYXltZW50V2F2ZWxldHMAAAARb3JkZXJPd25lckFkZHJlc3MAAAAMaW5zdGFudE9yZGVyBAAAABVwcmljZVdhdmVzQnlCb25kQ2VudHMJAQAAAA5nZXRQcmljZUZvclJvaQAAAAEFAAAABHBSb2kEAAAADXJlbWFpbmVkVG90YWwJAABlAAAAAgUAAAAQcFBheW1lbnRXYXZlbGV0cwUAAAAMcEZpbGxlZFRvdGFsBAAAABNmaWxsYWJsZU9yZGVyQW1vdW50CQEAAAASY29udmVydFdhdmVzVG9Cb25kAAAAAgUAAAANcmVtYWluZWRUb3RhbAUAAAAVcHJpY2VXYXZlc0J5Qm9uZENlbnRzBAAAABt0b3RhbE9yZGVyV2F2ZWxldGVzUmVxdWlyZWQJAQAAABJjb252ZXJ0Qm9uZFRvV2F2ZXMAAAACBQAAABNmaWxsYWJsZU9yZGVyQW1vdW50BQAAABVwcmljZVdhdmVzQnlCb25kQ2VudHMEAAAAFW5iVG9rZW5zU2VsbENvbmRpdGlvbgkAAGcAAAACBQAAAA1jdXJyZW50TWF4Um9pBQAAAARwUm9pAwkBAAAAASEAAAABBQAAABVuYlRva2Vuc1NlbGxDb25kaXRpb24JAAACAAAAAQkAASwAAAACAgAAABNpbm5hcHJvcHJpYXRlIHJvaTogCQABpAAAAAEFAAAABHBSb2kDCQAAAAAAAAIFAAAAG3RvdGFsT3JkZXJXYXZlbGV0ZXNSZXF1aXJlZAAAAAAAAAAAAAkAAAIAAAABAgAAAB9jYW5ub3QgZmlsbCBvcmRlciBhdCB0aGUgbW9tZW50BAAAAA5jaGFuZ2VXYXZlbGV0cwkAAGUAAAACBQAAAA1yZW1haW5lZFRvdGFsBQAAABt0b3RhbE9yZGVyV2F2ZWxldGVzUmVxdWlyZWQEAAAADHdyaXRlU2V0RGF0YQMFAAAADGluc3RhbnRPcmRlcgkBAAAACW9yZGVyRGF0YQAAAAcFAAAAC3BGaXJzdE9yZGVyBQAAABBwUGF5bWVudFdhdmVsZXRzCQAAZAAAAAIFAAAADHBGaWxsZWRUb3RhbAUAAAAbdG90YWxPcmRlcldhdmVsZXRlc1JlcXVpcmVkCQACWAAAAAEIBQAAABFvcmRlck93bmVyQWRkcmVzcwAAAAVieXRlcwUAAAAGRklMTEVEBQAAAARwUm9pBQAAAAxjdXJyZW50UHJpY2UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABZnZXRPcmRlckZpbGxlZFRvdGFsS2V5AAAAAQUAAAALcEZpcnN0T3JkZXIJAABkAAAAAgUAAAAMcEZpbGxlZFRvdGFsBQAAABt0b3RhbE9yZGVyV2F2ZWxldGVzUmVxdWlyZWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEWdldE9yZGVyU3RhdHVzS2V5AAAAAQUAAAALcEZpcnN0T3JkZXIFAAAABkZJTExFRAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAPZ2V0UHJldk9yZGVyS2V5AAAAAQUAAAAKcE5leHRPcmRlcgIAAAAACQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAADUZpcnN0T3JkZXJLZXkFAAAACnBOZXh0T3JkZXIFAAAAA25pbAkABE4AAAACBQAAAAx3cml0ZVNldERhdGEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAARb3JkZXJPd25lckFkZHJlc3MFAAAAE2ZpbGxhYmxlT3JkZXJBbW91bnQFAAAAC2JvbmRBc3NldElkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAEG5ldXRyaW5vQ29udHJhY3QFAAAAG3RvdGFsT3JkZXJXYXZlbGV0ZXNSZXF1aXJlZAUAAAAEdW5pdAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAABFvcmRlck93bmVyQWRkcmVzcwUAAAAOY2hhbmdlV2F2ZWxldHMFAAAABHVuaXQFAAAAA25pbAEAAAAXaW50ZXJuYWxBZGRCdXlCb25kT3JkZXIAAAAFAAAAA3JvaQAAAAVwcmljZQAAAAlwcmV2T3JkZXIAAAADaW52AAAADGluc3RhbnRPcmRlcgQAAAADcG10CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAANpbnYAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAACm5ld09yZGVySWQJAAJYAAAAAQgFAAAAA2ludgAAAA10cmFuc2FjdGlvbklkAwUAAAAJaXNCbG9ja2VkCQAAAgAAAAECAAAAWWNvbnRyYWN0IGlzIGJsb2NrZWQgYnkgRU1FUkdFTkNZIFNIVVRET1dOIGFjdGlvbnMgdW50aWwgcmVhY3RpdmF0aW9uIGJ5IGVtZXJnZW5jeSBvcmFjbGVzAwkAAGYAAAACBQAAAA1NSU5PUkRFUlRPVEFMCAUAAAADcG10AAAABmFtb3VudAkAAAIAAAABCQABLAAAAAICAAAAF21pbiBvcmRlciB0b3RhbCBlcXVhbHMgCQABpAAAAAEFAAAADU1JTk9SREVSVE9UQUwDCQAAZgAAAAIFAAAAA3JvaQUAAAAGTUFYUk9JCQAAAgAAAAECAAAAF21heCBzZXRPcmRlciBST0kgaXMgOTUlAwkAAGYAAAACAAAAAAAAAAAABQAAAANyb2kJAAACAAAAAQIAAAAjY2FuJ3QgcGxhY2Ugb3JkZXIgd2l0aCBuZWdhdGl2ZSByb2kDCQAAAAAAAAIFAAAAA3JvaQAAAAAAAAAAAAkAAAIAAAABAgAAABxyb2kgc2hvdWxkIG5vdCBiZSBlcXVhbCB0byAwAwkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAANwbXQAAAAHYXNzZXRJZAkAAAIAAAABAgAAABJjYW4gdXNlIHdhdmVzIG9ubHkDCQEAAAACIT0AAAACCQEAAAANZ2V0T3JkZXJPd25lcgAAAAEFAAAACm5ld09yZGVySWQCAAAAAAkAAAIAAAABAgAAAAxvcmRlciBleGlzdHMDAwkBAAAAAiE9AAAAAgUAAAAJcHJldk9yZGVyAgAAAAAJAQAAAAIhPQAAAAIJAQAAAA5nZXRPcmRlclN0YXR1cwAAAAEFAAAACXByZXZPcmRlcgUAAAADTkVXBwkAAAIAAAABAgAAABxwcmV2IG9yZGVyIHN0YXR1cyBpcyBub3QgbmV3BAAAABlpc05ld09yZGVyQXRGaXJzdFBvc2l0aW9uCQAAAAAAAAIFAAAACXByZXZPcmRlcgIAAAAABAAAAAVvd25lcgkABCUAAAABCAUAAAADaW52AAAABmNhbGxlcgQAAAAJbmV4dE9yZGVyAwUAAAAZaXNOZXdPcmRlckF0Rmlyc3RQb3NpdGlvbgUAAAAKZmlyc3RPcmRlcgkBAAAADGdldE5leHRPcmRlcgAAAAEFAAAACXByZXZPcmRlcgQAAAAMbmV4dE9yZGVyUm9pCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAASZ2V0Um9pQnlPcmRlcklkS2V5AAAAAQUAAAAJbmV4dE9yZGVyBAAAABBpc05leHRPcmRlckVycm9yAwMJAQAAAAIhPQAAAAIFAAAACW5leHRPcmRlcgIAAAAACQAAZwAAAAIFAAAAA3JvaQUAAAAMbmV4dE9yZGVyUm9pBwYHBAAAAAxwcmV2T3JkZXJSb2kJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABJnZXRSb2lCeU9yZGVySWRLZXkAAAABBQAAAAlwcmV2T3JkZXIEAAAAEGlzUHJldk9yZGVyRXJyb3IDAwkBAAAAAiE9AAAAAgUAAAAJcHJldk9yZGVyAgAAAAAJAABmAAAAAgUAAAAMcHJldk9yZGVyUm9pBQAAAANyb2kHBgcDAwUAAAAQaXNOZXh0T3JkZXJFcnJvcgYFAAAAEGlzUHJldk9yZGVyRXJyb3IJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAfaW52YWxpZCBvcmRlciBpc1ByZXZPcmRlckVycm9yOgkAAaUAAAABBQAAABBpc1ByZXZPcmRlckVycm9yAgAAABIgaXNOZXh0T3JkZXJFcnJvcjoJAAGlAAAAAQUAAAAQaXNOZXh0T3JkZXJFcnJvcgMDBQAAABlpc05ld09yZGVyQXRGaXJzdFBvc2l0aW9uCQAAZwAAAAIFAAAADWN1cnJlbnRNYXhSb2kFAAAAA3JvaQcJAQAAABBpbnRlcm5hbFNlbGxCb25kAAAACAUAAAAKbmV3T3JkZXJJZAUAAAAJbmV4dE9yZGVyAAAAAAAAAAAABQAAAANyb2kFAAAABXByaWNlCAUAAAADcG10AAAABmFtb3VudAgFAAAAA2ludgAAAAZjYWxsZXIGAwUAAAAMaW5zdGFudE9yZGVyCQAAAgAAAAECAAAAMkluc3RhbnQgb3JkZXIgY291bGRuJ3QgYmUgYWRkZWQgaW50byB3YWl0aW5nIHF1ZXVlCQAETgAAAAIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAD2dldFByZXZPcmRlcktleQAAAAEFAAAACm5ld09yZGVySWQFAAAACXByZXZPcmRlcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAPZ2V0TmV4dE9yZGVyS2V5AAAAAQUAAAAKbmV3T3JkZXJJZAUAAAAJbmV4dE9y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AAEJAQAAAAlpc0RlZmluZWQAAAABCQAD7gAAAAEJAAJZAAAAAQIAAAAsZ2RMdzVKS2RwcWZTRXF2bUZKdmNoZWpvckFremQ0QnJXTHZvRnd2TUd1NWsHCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCQAD7gAAAAEJAAJZAAAAAQIAAAAsaGRMdzVKS2RwcWZTRXF2bUZKdmNoZWpvckFremQ0QnJXTHZvRnd2TUd1NWsHCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCQAD7gAAAAEJAAJZAAAAAQIAAAAsamRMdzVKS2RwcWZTRXF2bUZKdmNoZWpvckFremQ0QnJXTHZvRnd2TUd1NWsHCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCQAD7gAAAAEJAAJZAAAAAQIAAAAsa2RMdzVKS2RwcWZTRXF2bUZKdmNoZWpvckFremQ0QnJXTHZvRnd2TUd1NWsHCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCQAD7gAAAAEJAAJZAAAAAQIAAAAscmRMdzVKS2RwcWZTRXF2bUZKdmNoZWpvckFremQ0QnJXTHZvRnd2TUd1NWsHCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCQAD7gAAAAEJAAJZAAAAAQIAAAAsdGRMcTVKS2RwcWZTRXF2bUZKdmNoZWpvckFremQ0QnJXTHZvRnd2TUd1NWsHCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCQAD7gAAAAEJAAJZAAAAAQIAAAAsdGRMeTVKS2RwcWZTRXF2bUZKdmNoZWpvckFremQ0QnJXTHZvRnd2TUd1NWsHCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCQAD7gAAAAEJAAJZAAAAAQIAAAAsdGRMdTVKS2RwcWZTRXF2bUZKdmNoZWpvckFremQ0QnJXTHZvRnd2TUd1NWsHCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCQAD7gAAAAEJAAJZAAAAAQIAAAAsdGRMaDVKS2RwcWZTRXF2bUZKdmNoZWpvckFremQ0QnJXTHZvRnd2TUd1NWsHCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCQAD7gAAAAEJAAJZAAAAAQIAAAArMWRMNEpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACwyZEwyNUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACwzZEw5NUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACw0ZEw5NUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACw1ZEw5NUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACw2ZEw5NUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACw3ZEw5NUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACw4ZEw5NUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACw5MUw5NUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACw5Mkw5NUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACw5M0w5NUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACw5NEw5NUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcAAAAFAAAAAWkBAAAAEGJ1eU5zYnRJblN1cnBsdXMAAAABAAAACm5zYnRBbW91bnQEAAAAA3BtdAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAJcG10QW1vdW50CAUAAAADcG10AAAABmFtb3VudAQAAAAMb3duZXJBZGRyZXNzCAUAAAABaQAAAAZjYWxsZXIDBQAAAAlpc0Jsb2NrZWQJAAACAAAAAQIAAABZY29udHJhY3QgaXMgYmxvY2tlZCBieSBFTUVSR0VOQ1kgU0hVVERPV04gYWN0aW9ucyB1bnRpbCByZWFjdGl2YXRpb24gYnkgZW1lcmdlbmN5IG9yYWNsZXMDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkCQAAAgAAAAECAAAAEmNhbiB1c2Ugd2F2ZXMgb25seQMJAABmAAAAAgkAAGgAAAACAAAAAAAAAAAKBQAAAAdXQVZFTEVUBQAAAAlwbXRBbW91bnQJAAACAAAAAQIAAAAVbWluIDEwIHdhdmVzIGV4cGVjdGVkBAAAAAppc3N1ZWROc2J0CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMCAAAADnRtcF9pc3N1ZWROc2J0AAAAAAAAAAAABAAAAAduc2J0TWF4CQAAaAAAAAIJAABoAAAAAgAAAAAAAAAJxAAAAAAAAAAD6AUAAAAFUEFVTEkEAAAAC25zYnRDdXJyZW50CQAAZAAAAAIJAABoAAAAAgkAAGgAAAACAAAAAAAAAAXcAAAAAAAAAAPoBQAAAAVQQVVMSQUAAAAKaXNzdWVkTnNidAQAAAALY3VydmVSZXN1bHQJAQAAAA1jdXJ2ZUZ1bmN0aW9uAAAABgUAAAAHcmVzZXJ2ZQUAAAAObmV1dHJpbm9TdXBwbHkFAAAADGN1cnJlbnRQcmljZQUAAAAHbnNidE1heAUAAAALbnNidEN1cnJlbnQFAAAACm5zYnRBbW91bnQEAAAADXJlcXVpcmVkV2F2ZXMJAAGRAAAAAgUAAAALY3VydmVSZXN1bHQAAAAAAAAAAAADCQAAZgAAAAIFAAAADXJlcXVpcmVkV2F2ZXMFAAAACXBtdEFtb3VudAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAADBQYXltZW50IGFtb3VudCBpcyBsZXNzIHRoZW4gcmVxdWlyZWQ6IHBtdEFtb3VudD0JAAGkAAAAAQUAAAAJcG10QW1vdW50AgAAAA8gcmVxdWlyZWRXYXZlcz0JAAGkAAAAAQUAAAANcmVxdWlyZWRXYXZlcwQAAAASbnNidDJXYXZlc1ByaWNlUmF3CQEAAAAWY2FsY05zYnQyV2F2ZXNQcmljZVJhdwAAAAIFAAAADXJlcXVpcmVkV2F2ZXMFAAAACm5zYnRBbW91bnQEAAAAA3JvaQkAAGUAAAACCQAAawAAAAMJAQAAAA9nZXRSZXZlcnNlUHJpY2UAAAABBQAAABJuc2J0MldhdmVzUHJpY2VSYXcAAAAAAAAAAGQFAAAADGN1cnJlbnRQcmljZQAAAAAAAAAAZAkABE4AAAACCQEAAAAJb3JkZXJEYXRhAAAABwkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBQAAAAlwbXRBbW91bnQFAAAACXBtdEFtb3VudAkABCUAAAABBQAAAAxvd25lckFkZHJlc3MFAAAABkZJTExFRAUAAAADcm9pBQAAABJuc2J0MldhdmVzUHJpY2VSYXcJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAMb3duZXJBZGRyZXNzBQAAAApuc2J0QW1vdW50BQAAAAtib25kQXNzZXRJZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAxvd25lckFkZHJlc3MJAABlAAAAAgUAAAAJcG10QW1vdW50BQAAAA1yZXF1aXJlZFdhdmVzBQAAAAR1bml0CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAEG5ldXRyaW5vQ29udHJhY3QFAAAADXJlcXVpcmVkV2F2ZXMFAAAABHVuaXQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAARZGVidWdfY3VydmVSZXN1bHQJAQAAAAV0b1N0cgAAAAICAAAAC2N1cnZlUmVzdWx0BQAAAAtjdXJ2ZVJlc3VsdAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAOdG1wX2lzc3VlZE5zYnQJAABkAAAAAgUAAAAKaXNzdWVkTnNidAUAAAAKbnNidEFtb3VudAUAAAADbmlsAAAAAWkBAAAAFGluc3RhbnRCdXlOc2J0T3JGYWlsAAAAAQAAAA1ub0xlc3NUaGVuUm9pBAAAAANwbXQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAAA3JvaQUAAAANY3VycmVudE1heFJvaQMJAABmAAAAAgUAAAANbm9MZXNzVGhlblJvaQUAAAADcm9pCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAD0N1cnJlbnQgbWF4Um9pPQkAAaQAAAABBQAAAANyb2kCAAAALSBpcyBsZXNzIHRoZW4gcGFzc2VkIHBhcmFtZXRlciBub0xlc3NUaGVuUm9pPQkAAaQAAAABBQAAAA1ub0xlc3NUaGVuUm9pBAAAABVwcmljZVdhdmVzQnlCb25kQ2VudHMJAQAAAA5nZXRQcmljZUZvclJvaQAAAAEFAAAAA3JvaQkBAAAAF2ludGVybmFsQWRkQnV5Qm9uZE9yZGVyAAAABQUAAAADcm9pCQEAAAAPZ2V0UmV2ZXJzZVByaWNlAAAAAQUAAAAVcHJpY2VXYXZlc0J5Qm9uZENlbnRzAgAAAAAFAAAAAWkGAAAAAWkBAAAAD2FkZEJ1eUJvbmRPcmRlcgAAAAIAAAAFcHJpY2UAAAAJcHJldk9yZGVyBAAAAANwbXQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAAFXByaWNlV2F2ZXNCeUJvbmRDZW50cwkBAAAAD2dldFJldmVyc2VQcmljZQAAAAEFAAAABXByaWNlAwkAAGcAAAACAAAAAAAAAAAABQAAAAVwcmljZQkAAAIAAAABAgAAAA9wcmljZSBsZXNzIHplcm8JAQAAABdpbnRlcm5hbEFkZEJ1eUJvbmRPcmRlcgAAAAUJAABrAAAAAwkAAGUAAAACBQAAABVwcmljZVdhdmVzQnlCb25kQ2VudHMFAAAADGN1cnJlbnRQcmljZQAAAAAAAAAAZAUAAAAMY3VycmVudFByaWNlBQAAAAVwcmljZQUAAAAJcHJldk9yZGVyBQAAAAFpBwAAAAFpAQAAAAtjYW5jZWxPcmRlcgAAAAEAAAAHb3JkZXJJZAQAAAAFb3duZXIJAQAAAA1nZXRPcmRlck93bmVyAAAAAQUAAAAHb3JkZXJJZAQAAAAGYW1vdW50CQAAZQAAAAIJAQAAAA1nZXRPcmRlclRvdGFsAAAAAQUAAAAHb3JkZXJJZAkBAAAAE2dldE9yZGVyRmlsbGVkVG90YWwAAAABBQAAAAdvcmRlcklkBAAAAAZjYWxsZXIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAAluZXh0T3JkZXIJAQAAAAxnZXROZXh0T3JkZXIAAAABBQAAAAdvcmRlcklkBAAAAAlwcmV2T3JkZXIJAQAAAAxnZXRQcmV2T3JkZXIAAAABBQAAAAdvcmRlcklkAwUAAAAJaXNCbG9ja2VkCQAAAgAAAAECAAAAWWNvbnRyYWN0IGlzIGJsb2NrZWQgYnkgRU1FUkdFTkNZIFNIVVRET1dOIGFjdGlvbnMgdW50aWwgcmVhY3RpdmF0aW9uIGJ5IGVtZXJnZW5jeSBvcmFjbGVzAwkBAAAAAiE9AAAAAgUAAAAFb3duZXIFAAAABmNhbGxlcgkAAAIAAAABAgAAABFwZXJtaXNzaW9uIGRlbmllZAMJAQAAAAIhPQAAAAIJAQAAAA5nZXRPcmRlclN0YXR1cwAAAAEFAAAAB29yZGVySWQFAAAAA05FVwkAAAIAAAABAgAAABRpbnZhbGlkIG9yZGVyIHN0YXR1cwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA1GaXJzdE9yZGVyS2V5AwkAAAAAAAACBQAAAApmaXJzdE9yZGVyBQAAAAdvcmRlcklkBQAAAAluZXh0T3JkZXIFAAAACmZpcnN0T3JkZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAD2dldE5leHRPcmRlcktleQAAAAEFAAAACXByZXZPcmRlcgUAAAAJbmV4dE9yZGVyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA9nZXRQcmV2T3JkZXJLZXkAAAABBQAAAAluZXh0T3JkZXIFAAAACXByZXZPcmRlcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAARZ2V0T3JkZXJTdGF0dXNLZXkAAAABBQAAAAdvcmRlcklkBQAAAAhDQU5DRUxFRAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAABmFtb3VudAUAAAAEdW5pdAUAAAADbmlsAAAAAWkBAAAACHNlbGxCb25kAAAAAAMFAAAACWlzQmxvY2tlZAkAAAIAAAABAgAAAFljb250cmFjdCBpcyBibG9ja2VkIGJ5IEVNRVJHRU5DWSBTSFVURE9XTiBhY3Rpb25zIHVudGlsIHJlYWN0aXZhdGlvbiBieSBlbWVyZ2VuY3kgb3JhY2xlcwMJAAAAAAAAAgUAAAAKZmlyc3RPcmRlcgIAAAAACQAAAgAAAAECAAAAD2VtcHR5IG9yZGVyYm9vawQAAAAJbmV4dE9yZGVyCQEAAAAMZ2V0TmV4dE9yZGVyAAAAAQUAAAAKZmlyc3RPcmRlcgQAAAALZmlsbGVkVG90YWwJAQAAABNnZXRPcmRlckZpbGxlZFRvdGFsAAAAAQUAAAAKZmlyc3RPcmRlcgQAAAAKb3JkZXJQcmljZQkBAAAADWdldE9yZGVyUHJpY2UAAAABBQAAAApmaXJzdE9yZGVyBAAAAANyb2kJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABJnZXRSb2lCeU9yZGVySWRLZXkAAAABBQAAAApmaXJzdE9yZGVyBAAAAA9wYXltZW50V2F2ZWxldHMJAQAAAA1nZXRPcmRlclRvdGFsAAAAAQUAAAAKZmlyc3RPcmRlcgQAAAARb3JkZXJPd25lckFkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAANZ2V0T3JkZXJPd25lcgAAAAEFAAAACmZpcnN0T3JkZXIJAQAAABBpbnRlcm5hbFNlbGxCb25kAAAACAUAAAAKZmlyc3RPcmRlcgUAAAAJbmV4dE9yZGVyBQAAAAtmaWxsZWRUb3RhbAUAAAADcm9pBQAAAApvcmRlclByaWNlBQAAAA9wYXltZW50V2F2ZWxldHMFAAAAEW9yZGVyT3duZXJBZGRyZXNzBwAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAEAAAAEHB1YktleUFkbWluc0xpc3QJAARMAAAAAgIAAAAsR1h4bVphQ2lnUGdKc1Q2ZDFjTHI4blVYQTY1bkdYOFY3RnVBenpyWTh3UUUJAARMAAAAAgIAAAAsM3h1bXg0aHJQcGVlb283OUhMR2JaQ2dmejk1TDM5WkZkeHh3V2VTVUMyUHUJAARMAAAAAgIAAAAsRDRDcXRLNWZCc256Um8zM1pNaHJNN25pTHNlREgydVJvSzZ3ZUJxMkpRM0EJAARMAAAAAgIAAAAsNVdSWEZTandjVGJOZktjSnM4WnFYbVNTV1lzU1ZKVXRNdk1xWmo1aEg0TmMFAAAAA25pbAQAAAAFY291bnQJAABkAAAAAgkAAGQAAAACCQAAZAAAAAIDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAkAAlkAAAABCQABkQAAAAIFAAAAEHB1YktleUFkbWluc0xpc3QAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAADCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAQkAAlkAAAABCQABkQAAAAIFAAAAEHB1YktleUFkbWluc0xpc3QAAAAAAAAAAAEAAAAAAAAAAAEAAAAAAAAAAAADCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAgkAAlkAAAABCQABkQAAAAIFAAAAEHB1YktleUFkbWluc0xpc3QAAAAAAAAAAAIAAAAAAAAAAAEAAAAAAAAAAAADCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAwkAAlkAAAABCQABkQAAAAIFAAAAEHB1YktleUFkbWluc0xpc3QAAAAAAAAAAAMAAAAAAAAAAAIAAAAAAAAAAAAJAABnAAAAAgUAAAAFY291bnQAAAAAAAAAAAPshzqS", "chainId": 84, "height": 1344231, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: JhGsAs6Bqp8mhbTCBfZTGwBrVWBoiJf2tHEfGdmja1n Next: DhMtx3H2y2LAeqHiaVwHyApA3YZLUWeZKymVZ6hsYW3a Diff:
OldNewDifferences
310310
311311
312312 @Callable(bv)
313-func buyNsbtInSurplus (bw,bx) = {
313+func buyNsbtInSurplus (bw) = {
314314 let aR = value(bv.payments[0])
315- let by = aR.amount
316- let bz = bv.caller
315+ let bx = aR.amount
316+ let by = bv.caller
317317 if (U)
318318 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
319319 else if (isDefined(aR.assetId))
320320 then throw("can use waves only")
321- else if (((10 * h) > by))
321+ else if (((10 * h) > bx))
322322 then throw("min 10 waves expected")
323323 else {
324- let bA = valueOrElse(getInteger(this, "tmp_issuedNsbt"), 0)
325- let bB = ((2500 * 1000) * i)
326- let bC = (((1500 * 1000) * i) + bA)
327- let bt = aZ(X, Z, V, bB, bC, bw)
328- let bD = bt[0]
329- if ((bD > by))
330- then throw(((("Payment amount is less then required: pmtAmount=" + toString(by)) + " requiredWaves=") + toString(bD)))
331- else if ((0 > bx))
332- then throw("Invalid tolerance param")
333- else {
334- let bE = fraction(bD, (bx + i), i)
335- if ((bD > bE))
336- then throw(((("Tolerance check failed: pmtAmount=" + toString(by)) + " maxAllowedPayment=") + toString(bE)))
337- else {
338- let bF = ap(bD, bw)
339- let ax = (fraction(ao(bF), 100, V) - 100)
340- (as(toBase58String(bv.transactionId), by, by, toString(bz), r, ax, bF) ++ [ScriptTransfer(bz, bw, T), ScriptTransfer(bz, (by - bD), unit), ScriptTransfer(P, bD, unit), StringEntry("debug_curveResult", br("curveResult", bt)), IntegerEntry("tmp_issuedNsbt", (bA + bw))])
341- }
342- }
324+ let bz = valueOrElse(getInteger(this, "tmp_issuedNsbt"), 0)
325+ let bA = ((2500 * 1000) * i)
326+ let bB = (((1500 * 1000) * i) + bz)
327+ let bt = aZ(X, Z, V, bA, bB, bw)
328+ let bC = bt[0]
329+ if ((bC > bx))
330+ then throw(((("Payment amount is less then required: pmtAmount=" + toString(bx)) + " requiredWaves=") + toString(bC)))
331+ else {
332+ let bD = ap(bC, bw)
333+ let ax = (fraction(ao(bD), 100, V) - 100)
334+ (as(toBase58String(bv.transactionId), bx, bx, toString(by), r, ax, bD) ++ [ScriptTransfer(by, bw, T), ScriptTransfer(by, (bx - bC), unit), ScriptTransfer(P, bC, unit), StringEntry("debug_curveResult", br("curveResult", bt)), IntegerEntry("tmp_issuedNsbt", (bz + bw))])
335+ }
343336 }
344337 }
345338
346339
347340
348341 @Callable(bv)
349-func instantBuyNsbtOrFail (bG) = {
342+func instantBuyNsbtOrFail (bE) = {
350343 let aR = value(bv.payments[0])
351344 let ax = ab
352- if ((bG > ax))
353- then throw(((("Current maxRoi=" + toString(ax)) + " is less then passed parameter noLessThenRoi=") + toString(bG)))
345+ if ((bE > ax))
346+ then throw(((("Current maxRoi=" + toString(ax)) + " is less then passed parameter noLessThenRoi=") + toString(bE)))
354347 else {
355348 let aH = am(ax)
356349 aO(ax, ao(aH), "", bv, true)
374367 func cancelOrder (A) = {
375368 let av = ah(A)
376369 let K = (ag(A) - aj(A))
377- let bH = toString(bv.caller)
370+ let bF = toString(bv.caller)
378371 let aU = al(A)
379372 let aP = ak(A)
380373 if (U)
381374 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
382- else if ((av != bH))
375+ else if ((av != bF))
383376 then throw("permission denied")
384377 else if ((ai(A) != q))
385378 then throw("invalid order status")
397390 then throw("empty orderbook")
398391 else {
399392 let aU = al(ad)
400- let bI = aj(ad)
401- let bJ = ae(ad)
393+ let bG = aj(ad)
394+ let bH = ae(ad)
402395 let ax = a(z(ad))
403- let bK = ag(ad)
396+ let bI = ag(ad)
404397 let aF = Address(fromBase58String(ah(ad)))
405- ay(ad, aU, bI, ax, bJ, bK, aF, false)
398+ ay(ad, aU, bG, ax, bH, bI, aF, false)
406399 }
407400
408401
409-@Verifier(bL)
410-func bM () = {
411- let bN = ["GXxmZaCigPgJsT6d1cLr8nUXA65nGX8V7FuAzzrY8wQE", "3xumx4hrPpeeoo79HLGbZCgfz95L39ZFdxxwWeSUC2Pu", "D4CqtK5fBsnzRo33ZMhrM7niLseDH2uRoK6weBq2JQ3A", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"]
412- let bO = ((((if (sigVerify(bL.bodyBytes, bL.proofs[0], fromBase58String(bN[0])))
402+@Verifier(bJ)
403+func bK () = {
404+ let bL = ["GXxmZaCigPgJsT6d1cLr8nUXA65nGX8V7FuAzzrY8wQE", "3xumx4hrPpeeoo79HLGbZCgfz95L39ZFdxxwWeSUC2Pu", "D4CqtK5fBsnzRo33ZMhrM7niLseDH2uRoK6weBq2JQ3A", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"]
405+ let bM = ((((if (sigVerify(bJ.bodyBytes, bJ.proofs[0], fromBase58String(bL[0])))
413406 then 1
414- else 0) + (if (sigVerify(bL.bodyBytes, bL.proofs[1], fromBase58String(bN[1])))
407+ else 0) + (if (sigVerify(bJ.bodyBytes, bJ.proofs[1], fromBase58String(bL[1])))
415408 then 1
416- else 0)) + (if (sigVerify(bL.bodyBytes, bL.proofs[2], fromBase58String(bN[2])))
409+ else 0)) + (if (sigVerify(bJ.bodyBytes, bJ.proofs[2], fromBase58String(bL[2])))
417410 then 1
418- else 0)) + (if (sigVerify(bL.bodyBytes, bL.proofs[3], fromBase58String(bN[3])))
411+ else 0)) + (if (sigVerify(bJ.bodyBytes, bJ.proofs[3], fromBase58String(bL[3])))
419412 then 2
420413 else 0))
421- (bO >= 3)
414+ (bM >= 3)
422415 }
423416
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b) = valueOrElse(getInteger(this, b), 0)
55
66
77 func c (b) = valueOrElse(getString(this, b), "")
88
99
1010 func d (e,b) = valueOrElse(getBoolean(e, b), false)
1111
1212
1313 func f (e,b) = valueOrElse(getString(e, b), "")
1414
1515
1616 func g (e,b) = valueOrElse(getInteger(e, b), 0)
1717
1818
1919 let h = 100000000
2020
2121 let i = 1000000
2222
2323 let j = 6
2424
2525 let k = 1000000
2626
2727 let l = 100000000
2828
2929 let m = 8
3030
3131 let n = (10 * h)
3232
3333 let o = 95
3434
3535 let p = "canceled"
3636
3737 let q = "new"
3838
3939 let r = "filled"
4040
4141 let s = "price"
4242
4343 let t = "bond_asset_id"
4444
4545 let u = "neutrino_asset_id"
4646
4747 let v = "balance_lock_"
4848
4949 let w = (v + "waves")
5050
5151 let x = (v + "neutrino")
5252
5353 let y = "order_first"
5454
5555 func z (A) = ("debug_order_roi_" + A)
5656
5757
5858 func B (A) = ("order_price_" + A)
5959
6060
6161 func C (A) = ("order_total_" + A)
6262
6363
6464 func D (A) = ("order_owner_" + A)
6565
6666
6767 func E (A) = ("order_height_" + A)
6868
6969
7070 func F (A) = ("order_status_" + A)
7171
7272
7373 func G (A) = ("order_filled_total_" + A)
7474
7575
7676 func H (A) = ("order_prev_" + A)
7777
7878
7979 func I (A) = ("order_next_" + A)
8080
8181
8282 func J (K,L) = fraction(fraction(K, k, L), h, i)
8383
8484
8585 func M (K,L) = fraction(fraction(K, L, k), i, h)
8686
8787
8888 func N (K,L) = M(K, L)
8989
9090
9191 func O (K,L) = J(K, L)
9292
9393
9494 let P = Address(base58'3Mzbx34Ex5rRbn39vUHx9kiwh3nneF8S5we')
9595
9696 let Q = Address(base58'3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx')
9797
9898 let R = Address(base58'3N5nmMvMH8o3RPEyCKCaoWahBTYTexnZy62')
9999
100100 let S = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT'
101101
102102 let T = base58'BGhPYquXSK6UYjnPLEn94gFhetp4Jvf7toekEY4x1VDH'
103103
104104 let U = d(Q, "is_blocked")
105105
106106 let V = g(Q, s)
107107
108108 let W = g(P, x)
109109
110110 let X = (wavesBalance(P).regular - g(P, w))
111111
112112 let Y = M(X, V)
113113
114114 let Z = (((W + value(assetInfo(S)).quantity) - assetBalance(P, S)) - assetBalance(R, S))
115115
116116 let aa = (Z - Y)
117117
118118 let ab = fraction(aa, 100, Z)
119119
120120 let ac = fraction(Y, l, Z)
121121
122122 let ad = c(y)
123123
124124 func ae (af) = a(B(af))
125125
126126
127127 func ag (af) = a(C(af))
128128
129129
130130 func ah (af) = c(D(af))
131131
132132
133133 func ai (af) = c(F(af))
134134
135135
136136 func aj (af) = a(G(af))
137137
138138
139139 func ak (af) = c(H(af))
140140
141141
142142 func al (af) = c(I(af))
143143
144144
145145 func am (an) = fraction((100 + an), V, 100)
146146
147147
148148 func ao (L) = ((k * k) / L)
149149
150150
151151 func ap (aq,ar) = fraction(aq, (i * k), ar)
152152
153153
154154 func as (A,at,au,av,aw,ax,L) = [IntegerEntry(B(A), L), IntegerEntry(C(A), at), IntegerEntry(G(A), au), StringEntry(D(A), av), IntegerEntry(E(A), height), StringEntry(F(A), aw), IntegerEntry(("debug_order_currentPrice_" + A), V), IntegerEntry(z(A), ax)]
155155
156156
157157 func ay (az,aA,aB,aC,aD,aE,aF,aG) = {
158158 let aH = am(aC)
159159 let aI = (aE - aB)
160160 let aJ = N(aI, aH)
161161 let aK = O(aJ, aH)
162162 let aL = (ab >= aC)
163163 if (!(aL))
164164 then throw(("innapropriate roi: " + toString(aC)))
165165 else if ((aK == 0))
166166 then throw("cannot fill order at the moment")
167167 else {
168168 let aM = (aI - aK)
169169 let aN = if (aG)
170170 then as(az, aE, (aB + aK), toBase58String(aF.bytes), r, aC, V)
171171 else [IntegerEntry(G(az), (aB + aK)), StringEntry(F(az), r), StringEntry(H(aA), ""), StringEntry(y, aA)]
172172 (aN ++ [ScriptTransfer(aF, aJ, T), ScriptTransfer(P, aK, unit), ScriptTransfer(aF, aM, unit)])
173173 }
174174 }
175175
176176
177177 func aO (ax,L,aP,aQ,aG) = {
178178 let aR = value(aQ.payments[0])
179179 let aS = toBase58String(aQ.transactionId)
180180 if (U)
181181 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
182182 else if ((n > aR.amount))
183183 then throw(("min order total equals " + toString(n)))
184184 else if ((ax > o))
185185 then throw("max setOrder ROI is 95%")
186186 else if ((0 > ax))
187187 then throw("can't place order with negative roi")
188188 else if ((ax == 0))
189189 then throw("roi should not be equal to 0")
190190 else if (isDefined(aR.assetId))
191191 then throw("can use waves only")
192192 else if ((ah(aS) != ""))
193193 then throw("order exists")
194194 else if (if ((aP != ""))
195195 then (ai(aP) != q)
196196 else false)
197197 then throw("prev order status is not new")
198198 else {
199199 let aT = (aP == "")
200200 let av = toString(aQ.caller)
201201 let aU = if (aT)
202202 then ad
203203 else al(aP)
204204 let aV = a(z(aU))
205205 let aW = if (if ((aU != ""))
206206 then (ax >= aV)
207207 else false)
208208 then true
209209 else false
210210 let aX = a(z(aP))
211211 let aY = if (if ((aP != ""))
212212 then (aX > ax)
213213 else false)
214214 then true
215215 else false
216216 if (if (aW)
217217 then true
218218 else aY)
219219 then throw(((("invalid order isPrevOrderError:" + toString(aY)) + " isNextOrderError:") + toString(aW)))
220220 else if (if (aT)
221221 then (ab >= ax)
222222 else false)
223223 then ay(aS, aU, 0, ax, L, aR.amount, aQ.caller, true)
224224 else if (aG)
225225 then throw("Instant order couldn't be added into waiting queue")
226226 else ([StringEntry(H(aS), aP), StringEntry(I(aS), aU), StringEntry(I(aP), if ((aP == ""))
227227 then ""
228228 else aS), StringEntry(H(aU), if ((aU == ""))
229229 then ""
230230 else aS), StringEntry(y, if (if ((ad == ""))
231231 then true
232232 else (ad == aU))
233233 then aS
234234 else ad)] ++ as(aS, aR.amount, 0, av, q, ax, L))
235235 }
236236 }
237237
238238
239239 func aZ (ba,bb,L,bc,bd,be) = {
240240 let bf = 271828100
241241 let bg = valueOrElse(getInteger(this, "nsbtCurveParam_a"), 3)
242242 let bh = M(ba, L)
243243 let bi = fraction(bh, l, bb)
244244 let bj = (bg * (bi - (1 * l)))
245245 let bk = pow(bf, m, bj, m, m, DOWN)
246246 let bl = log(((bc - bd) - be), j, bf, m, m, DOWN)
247247 let bm = log((bc - bd), j, bf, m, m, DOWN)
248248 let bn = (bm - bl)
249249 let bo = fraction(bc, bn, l)
250250 let bp = fraction(bk, bo, l)
251251 let bq = J(bp, L)
252252 [bq, bp, ba, bb, bc, bd, be, bg, bh, bi, bj, bk, bm, bl, bn, bo]
253253 }
254254
255255
256256 func br (bs,bt) = (((((((((((((((((((((((((((((((((bs + "[wavesPayment=") + toString(bt[0])) + " usdnPayment=") + toString(bt[1])) + " wRaw=") + toString(bt[2])) + " uRaw=") + toString(bt[3])) + " mRaw=") + toString(bt[4])) + " sRaw=") + toString(bt[5])) + " nRaw=") + toString(bt[6])) + " nsbtCurveParamA=") + toString(bt[7])) + " wReservesInUsdn=") + toString(bt[8])) + " brMult=") + toString(bt[9])) + " powerMult=") + toString(bt[10])) + " expInPowerMult=") + toString(bt[11])) + " lnRes0=") + toString(bt[12])) + " lnRes1=") + toString(bt[13])) + " lnDiffMult=") + toString(bt[14])) + " maxXlndiff=") + toString(bt[15])) + "]")
257257
258258
259259 func bu (bv) = if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (!(isDefined(transferTransactionById(fromBase58String("PdLw5JK5ppfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k")))))
260260 then !(isDefined(transferTransactionById(fromBase58String("adLw5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
261261 else false)
262262 then !(isDefined(transferTransactionById(fromBase58String("sdLw5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
263263 else false)
264264 then !(isDefined(transferTransactionById(fromBase58String("ddLw5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
265265 else false)
266266 then !(isDefined(transferTransactionById(fromBase58String("fdLw5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
267267 else false)
268268 then !(isDefined(transferTransactionById(fromBase58String("gdLw5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
269269 else false)
270270 then !(isDefined(transferTransactionById(fromBase58String("hdLw5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
271271 else false)
272272 then !(isDefined(transferTransactionById(fromBase58String("jdLw5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
273273 else false)
274274 then !(isDefined(transferTransactionById(fromBase58String("kdLw5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
275275 else false)
276276 then !(isDefined(transferTransactionById(fromBase58String("rdLw5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
277277 else false)
278278 then !(isDefined(transferTransactionById(fromBase58String("tdLq5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
279279 else false)
280280 then !(isDefined(transferTransactionById(fromBase58String("tdLy5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
281281 else false)
282282 then !(isDefined(transferTransactionById(fromBase58String("tdLu5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
283283 else false)
284284 then !(isDefined(transferTransactionById(fromBase58String("tdLh5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
285285 else false)
286286 then !(isDefined(transferTransactionById(fromBase58String("1dL4JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
287287 else false)
288288 then !(isDefined(transferTransactionById(fromBase58String("2dL25JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
289289 else false)
290290 then !(isDefined(transferTransactionById(fromBase58String("3dL95JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
291291 else false)
292292 then !(isDefined(transferTransactionById(fromBase58String("4dL95JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
293293 else false)
294294 then !(isDefined(transferTransactionById(fromBase58String("5dL95JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
295295 else false)
296296 then !(isDefined(transferTransactionById(fromBase58String("6dL95JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
297297 else false)
298298 then !(isDefined(transferTransactionById(fromBase58String("7dL95JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
299299 else false)
300300 then !(isDefined(transferTransactionById(fromBase58String("8dL95JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
301301 else false)
302302 then !(isDefined(transferTransactionById(fromBase58String("91L95JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
303303 else false)
304304 then !(isDefined(transferTransactionById(fromBase58String("92L95JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
305305 else false)
306306 then !(isDefined(transferTransactionById(fromBase58String("93L95JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
307307 else false)
308308 then !(isDefined(transferTransactionById(fromBase58String("94L95JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
309309 else false
310310
311311
312312 @Callable(bv)
313-func buyNsbtInSurplus (bw,bx) = {
313+func buyNsbtInSurplus (bw) = {
314314 let aR = value(bv.payments[0])
315- let by = aR.amount
316- let bz = bv.caller
315+ let bx = aR.amount
316+ let by = bv.caller
317317 if (U)
318318 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
319319 else if (isDefined(aR.assetId))
320320 then throw("can use waves only")
321- else if (((10 * h) > by))
321+ else if (((10 * h) > bx))
322322 then throw("min 10 waves expected")
323323 else {
324- let bA = valueOrElse(getInteger(this, "tmp_issuedNsbt"), 0)
325- let bB = ((2500 * 1000) * i)
326- let bC = (((1500 * 1000) * i) + bA)
327- let bt = aZ(X, Z, V, bB, bC, bw)
328- let bD = bt[0]
329- if ((bD > by))
330- then throw(((("Payment amount is less then required: pmtAmount=" + toString(by)) + " requiredWaves=") + toString(bD)))
331- else if ((0 > bx))
332- then throw("Invalid tolerance param")
333- else {
334- let bE = fraction(bD, (bx + i), i)
335- if ((bD > bE))
336- then throw(((("Tolerance check failed: pmtAmount=" + toString(by)) + " maxAllowedPayment=") + toString(bE)))
337- else {
338- let bF = ap(bD, bw)
339- let ax = (fraction(ao(bF), 100, V) - 100)
340- (as(toBase58String(bv.transactionId), by, by, toString(bz), r, ax, bF) ++ [ScriptTransfer(bz, bw, T), ScriptTransfer(bz, (by - bD), unit), ScriptTransfer(P, bD, unit), StringEntry("debug_curveResult", br("curveResult", bt)), IntegerEntry("tmp_issuedNsbt", (bA + bw))])
341- }
342- }
324+ let bz = valueOrElse(getInteger(this, "tmp_issuedNsbt"), 0)
325+ let bA = ((2500 * 1000) * i)
326+ let bB = (((1500 * 1000) * i) + bz)
327+ let bt = aZ(X, Z, V, bA, bB, bw)
328+ let bC = bt[0]
329+ if ((bC > bx))
330+ then throw(((("Payment amount is less then required: pmtAmount=" + toString(bx)) + " requiredWaves=") + toString(bC)))
331+ else {
332+ let bD = ap(bC, bw)
333+ let ax = (fraction(ao(bD), 100, V) - 100)
334+ (as(toBase58String(bv.transactionId), bx, bx, toString(by), r, ax, bD) ++ [ScriptTransfer(by, bw, T), ScriptTransfer(by, (bx - bC), unit), ScriptTransfer(P, bC, unit), StringEntry("debug_curveResult", br("curveResult", bt)), IntegerEntry("tmp_issuedNsbt", (bz + bw))])
335+ }
343336 }
344337 }
345338
346339
347340
348341 @Callable(bv)
349-func instantBuyNsbtOrFail (bG) = {
342+func instantBuyNsbtOrFail (bE) = {
350343 let aR = value(bv.payments[0])
351344 let ax = ab
352- if ((bG > ax))
353- then throw(((("Current maxRoi=" + toString(ax)) + " is less then passed parameter noLessThenRoi=") + toString(bG)))
345+ if ((bE > ax))
346+ then throw(((("Current maxRoi=" + toString(ax)) + " is less then passed parameter noLessThenRoi=") + toString(bE)))
354347 else {
355348 let aH = am(ax)
356349 aO(ax, ao(aH), "", bv, true)
357350 }
358351 }
359352
360353
361354
362355 @Callable(bv)
363356 func addBuyBondOrder (L,aP) = {
364357 let aR = value(bv.payments[0])
365358 let aH = ao(L)
366359 if ((0 >= L))
367360 then throw("price less zero")
368361 else aO(fraction((aH - V), 100, V), L, aP, bv, false)
369362 }
370363
371364
372365
373366 @Callable(bv)
374367 func cancelOrder (A) = {
375368 let av = ah(A)
376369 let K = (ag(A) - aj(A))
377- let bH = toString(bv.caller)
370+ let bF = toString(bv.caller)
378371 let aU = al(A)
379372 let aP = ak(A)
380373 if (U)
381374 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
382- else if ((av != bH))
375+ else if ((av != bF))
383376 then throw("permission denied")
384377 else if ((ai(A) != q))
385378 then throw("invalid order status")
386379 else [StringEntry(y, if ((ad == A))
387380 then aU
388381 else ad), StringEntry(I(aP), aU), StringEntry(H(aU), aP), StringEntry(F(A), p), ScriptTransfer(bv.caller, K, unit)]
389382 }
390383
391384
392385
393386 @Callable(bv)
394387 func sellBond () = if (U)
395388 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
396389 else if ((ad == ""))
397390 then throw("empty orderbook")
398391 else {
399392 let aU = al(ad)
400- let bI = aj(ad)
401- let bJ = ae(ad)
393+ let bG = aj(ad)
394+ let bH = ae(ad)
402395 let ax = a(z(ad))
403- let bK = ag(ad)
396+ let bI = ag(ad)
404397 let aF = Address(fromBase58String(ah(ad)))
405- ay(ad, aU, bI, ax, bJ, bK, aF, false)
398+ ay(ad, aU, bG, ax, bH, bI, aF, false)
406399 }
407400
408401
409-@Verifier(bL)
410-func bM () = {
411- let bN = ["GXxmZaCigPgJsT6d1cLr8nUXA65nGX8V7FuAzzrY8wQE", "3xumx4hrPpeeoo79HLGbZCgfz95L39ZFdxxwWeSUC2Pu", "D4CqtK5fBsnzRo33ZMhrM7niLseDH2uRoK6weBq2JQ3A", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"]
412- let bO = ((((if (sigVerify(bL.bodyBytes, bL.proofs[0], fromBase58String(bN[0])))
402+@Verifier(bJ)
403+func bK () = {
404+ let bL = ["GXxmZaCigPgJsT6d1cLr8nUXA65nGX8V7FuAzzrY8wQE", "3xumx4hrPpeeoo79HLGbZCgfz95L39ZFdxxwWeSUC2Pu", "D4CqtK5fBsnzRo33ZMhrM7niLseDH2uRoK6weBq2JQ3A", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"]
405+ let bM = ((((if (sigVerify(bJ.bodyBytes, bJ.proofs[0], fromBase58String(bL[0])))
413406 then 1
414- else 0) + (if (sigVerify(bL.bodyBytes, bL.proofs[1], fromBase58String(bN[1])))
407+ else 0) + (if (sigVerify(bJ.bodyBytes, bJ.proofs[1], fromBase58String(bL[1])))
415408 then 1
416- else 0)) + (if (sigVerify(bL.bodyBytes, bL.proofs[2], fromBase58String(bN[2])))
409+ else 0)) + (if (sigVerify(bJ.bodyBytes, bJ.proofs[2], fromBase58String(bL[2])))
417410 then 1
418- else 0)) + (if (sigVerify(bL.bodyBytes, bL.proofs[3], fromBase58String(bN[3])))
411+ else 0)) + (if (sigVerify(bJ.bodyBytes, bJ.proofs[3], fromBase58String(bL[3])))
419412 then 2
420413 else 0))
421- (bO >= 3)
414+ (bM >= 3)
422415 }
423416

github/deemru/w8io/169f3d6 
95.01 ms