tx · Af15ss46Z1dwFZpS5Jy4j1KyaXhiAqWWC6DCD2Ty3FXp

3MrWNTqFcHBqb58Za1A5crQrMV5KJ5DYhtA:  -0.01000000 Waves

2021.11.10 18:52 [1785124] smart account 3MrWNTqFcHBqb58Za1A5crQrMV5KJ5DYhtA > SELF 0.00000000 Waves

{ "type": 13, "id": "Af15ss46Z1dwFZpS5Jy4j1KyaXhiAqWWC6DCD2Ty3FXp", "fee": 1000000, "feeAssetId": null, "timestamp": 1636559547442, "version": 2, "chainId": 84, "sender": "3MrWNTqFcHBqb58Za1A5crQrMV5KJ5DYhtA", "senderPublicKey": "9abKuN1XmLjjire2feZH26PmcEWhEXxiHToWSmii3Gn2", "proofs": [ "eC68Y2WqEeufSwUjvcMjBxF3bteDjk7F8M9XkxQnv4aQh2Hc3Q1oXukcnbvgZNu7qtGphYAx9Mx1q3MkyxBz97g" ], "script": "base64:AAIFAAAAAAAAAEcIAhIFCgMBCAgSCgoICAgICAgICAgSCQoHCAEBCAgBARIECgIICBIFCgMICAgSAwoBCBIECgIICBIGCgQICAgIEgUKAwgICAAAAFMAAAAACHVuaXRUZXN0BwAAAAAJb3JhY2xlRmVlCQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNNcFpRanpHb2dtaWZjRUtlOG1EZDZyaWJMN254VDlBQ3llAAAAAAtmZWVSZWNlaXZlcgIAAAAjM042NXhMcThKY0NlYUVpUjFUSlE3ZEJxWEJ2RXk2RTQ4V3oAAAAACGNlcnREYXBwAgAAACMzTXhjWHJOYk1aS1lhU3JoY2ZlTW0yaFpuQmVDdTN5UldzdwAAAAAIdXNlckRhcHAJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM016djRVSEdSQ0M1S2tuWmI4eDV3ZkZVUXp6cFk5RzRHbjQAAAAADXdoaXRlbGlzdERhcHAJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM045eFpZR3B6TUZEWHZYdWN0bVU2elY4cVN6bTJaZkYzMWYAAAAAC1VTRE5Bc3NldElkAQAAACAAhSlM6RMuqheYbG/N0SV5hAUPIuUNy6okaxuy71mKvAAAAAAGb3duZXJzCQAETAAAAAIJAAQdAAAAAgUAAAAJb3JhY2xlRmVlAgAAAAZvd25lcjEJAARMAAAAAgkABB0AAAACBQAAAAlvcmFjbGVGZWUCAAAABm93bmVyMgUAAAADbmlsAAAAAAV0eXBlcwkABEwAAAACAgAAAAVJTUFHRQkABEwAAAACAgAAAANQREYJAARMAAAAAgIAAAAFVklERU8FAAAAA25pbAAAAAAMUHJldmlld3R5cGVzCQAETAAAAAICAAAAA1BERgUAAAADbmlsAAAAABBVU0RORmlyc3RTZWxsQ3V0AAAAAAAAAACWAAAAAAtkYXBwUnVubmluZwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBsAAAACBQAAAAh1c2VyRGFwcAIAAAAUY29uZl9kYXBwX2lzX3J1bm5pbmcGAAAAAA5tYWludGVuYW5jZU1TRwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAh1c2VyRGFwcAIAAAAUY29uZl9tYWludGVuYW5jZV9tc2cCAAAAAAAAAAANdXNlclN1c3BlbmRlZAIAAAAJU1VTUEVOREVEAAAAAAt1c2VyUmVtb3ZlZAIAAAAHUkVNT1ZFRAAAAAAQdXNlclVucmVnaXN0ZXJlZAIAAAAMVU5SRUdJU1RFUkVEAAAAAAt1c2VyQWxsb3dlZAIAAAAHQUxMT1dFRAAAAAAMYXVjdGlvblR5cGUxAgAAAAdCSURUWVBFAAAAAAxhdWN0aW9uVHlwZTICAAAAC1RSQURJVElPTkFMAAAAAAxhdWN0aW9uVHlwZTMCAAAABkRJUkVDVAEAAAAXZ2V0U3RyaW5nQnlLZXlGcm9tVXNlcnMAAAABAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAh1c2VyRGFwcAUAAAADa2V5AgAAAAABAAAADmdldFN0cmluZ0J5S2V5AAAAAQAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AgAAAAABAAAAFWdldFN0cmluZ0J5S2V5T3JFcnJvcgAAAAIAAAADa2V5AAAABWVycm9yCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5BQAAAAVlcnJvcgEAAAAZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZQAAAAEAAAADa2V5CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAJb3JhY2xlRmVlBQAAAANrZXkCAAAAH0ludGVnZXIgdW5kZWZpbmUgb3IgMCBpbiBvcmFjbGUBAAAAD2dldEludGVnZXJCeUtleQAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQAAAAAAAAAAAAEAAAAOY2hlY2tXaGl0ZWxpc3QAAAABAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAA13aGl0ZWxpc3REYXBwBQAAAANrZXkAAAAAAAAAAAABAAAAD2dldEJvb2xlYW5CeUtleQAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAABHRoaXMFAAAAA2tleQcBAAAADHZhbGlkYXRlSGFzaAAAAAEAAAAEaGFzaAkAAAAAAAACCQABMQAAAAEFAAAABGhhc2gAAAAAAAAAAEABAAAADWtleVVzZXJTdGF0dXMAAAABAAAABmNhbGxlcgkAASwAAAACAgAAAAx1c2VyX3N0YXR1c18FAAAABmNhbGxlcgEAAAAHa2V5RGF0ZQAAAAIAAAAGY2FsbGVyAAAABWFydElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAlhcnRfZGF0ZV8FAAAABWFydElkAgAAAAFfBQAAAAZjYWxsZXIBAAAAB2tleU5hbWUAAAACAAAABmNhbGxlcgAAAAVhcnRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJYXJ0X25hbWVfBQAAAAVhcnRJZAIAAAABXwUAAAAGY2FsbGVyAQAAAAdrZXlEZXNjAAAAAgAAAAZjYWxsZXIAAAAFYXJ0SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACWFydF9kZXNjXwUAAAAFYXJ0SWQCAAAAAV8FAAAABmNhbGxlcgEAAAANa2V5RGlzcGxheUNpZAAAAAIAAAAGY2FsbGVyAAAABWFydElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABBhcnRfZGlzcGxheV9jaWRfBQAAAAVhcnRJZAIAAAABXwUAAAAGY2FsbGVyAQAAAA1rZXlQcmV2aWV3Q2lkAAAAAgAAAAZjYWxsZXIAAAAFYXJ0SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAEGFydF9wcmV2aWV3X2NpZF8FAAAABWFydElkAgAAAAFfBQAAAAZjYWxsZXIBAAAACmtleU1heE1pbnQAAAACAAAABmNhbGxlcgAAAAVhcnRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAMYXJ0X21heG1pbnRfBQAAAAVhcnRJZAIAAAABXwUAAAAGY2FsbGVyAQAAABJrZXlIaWdoZXN0QmlkQmlkSWQAAAABAAAABWFydElkCQABLAAAAAICAAAAFGFydF9oaWdoZXN0QmlkQmlkSWRfBQAAAAVhcnRJZAEAAAAIa2V5QmlkSWQAAAABAAAABWJpZElkCQABLAAAAAICAAAABGJpZF8FAAAABWJpZElkAQAAAAtrZXlEdXJhdGlvbgAAAAIAAAAGY2FsbGVyAAAABWFydElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA1hcnRfZHVyYXRpb25fBQAAAAVhcnRJZAIAAAABXwUAAAAGY2FsbGVyAQAAAAxrZXlFbmRIZWlnaHQAAAACAAAABmNhbGxlcgAAAAVhcnRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAOYXJ0X2VuZGhlaWdodF8FAAAABWFydElkAgAAAAFfBQAAAAZjYWxsZXIBAAAADmtleUF1Y3Rpb25UeXBlAAAAAgAAAAZjYWxsZXIAAAAFYXJ0SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAEGFydF9hdWN0aW9udHlwZV8FAAAABWFydElkAgAAAAFfBQAAAAZjYWxsZXIBAAAACWtleUlzc3VlZAAAAAIAAAAGY2FsbGVyAAAABWFydElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAthcnRfaXNzdWVkXwUAAAAFYXJ0SWQCAAAAAV8FAAAABmNhbGxlcgEAAAAMS2V5TmZ0SXNzdWVyAAAAAQAAAAVuZnRJZAkAASwAAAACAgAAAAtuZnRfaXNzdWVkXwUAAAAFbmZ0SWQBAAAAC0tleU5mdEFydElkAAAAAQAAAAVuZnRJZAkAASwAAAACAgAAAApuZnRfYXJ0SWRfBQAAAAVuZnRJZAEAAAAKa2V5Um95YWx0eQAAAAIAAAAGY2FsbGVyAAAABWFydElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAxhcnRfcm95YWx0eV8FAAAABWFydElkAgAAAAFfBQAAAAZjYWxsZXIBAAAACWtleU9uU2FsZQAAAAIAAAAGY2FsbGVyAAAABWFydElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAthcnRfb25zYWxlXwUAAAAFYXJ0SWQCAAAAAV8FAAAABmNhbGxlcgEAAAAOa2V5RW50aXRsZW1lbnQAAAACAAAABmNhbGxlcgAAAAVhcnRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAQYXJ0X2VudGl0bGVtZW50XwUAAAAFYXJ0SWQCAAAAAV8FAAAABmNhbGxlcgEAAAAHa2V5VGFncwAAAAIAAAAGY2FsbGVyAAAABWFydElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAlhcnRfdGFnc18FAAAABWFydElkAgAAAAFfBQAAAAZjYWxsZXIBAAAAB2tleVR5cGUAAAACAAAABmNhbGxlcgAAAAVhcnRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJYXJ0X3R5cGVfBQAAAAVhcnRJZAIAAAABXwUAAAAGY2FsbGVyAQAAAAhrZXlQcmljZQAAAAIAAAAGY2FsbGVyAAAABWFydElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAphcnRfcHJpY2VfBQAAAAVhcnRJZAIAAAABXwUAAAAGY2FsbGVyAQAAABJrZXlBc3NldElkQWNjZXB0ZWQAAAACAAAABmNhbGxlcgAAAAVhcnRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAASYXJ0X2Fzc2V0QWNjZXB0ZWRfBQAAAAVhcnRJZAIAAAABXwUAAAAGY2FsbGVyAQAAABFrZXlIYXNoQnlUeGlkQWRkcgAAAAIAAAAGY2FsbGVyAAAABHR4aWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAE2dldF9oYXNoYnl0eGlkYWRkcl8FAAAABHR4aWQCAAAAAV8FAAAABmNhbGxlcgEAAAAOa2V5T3duZXJCeUhhc2gAAAABAAAACnNoYTI1Nkhhc2gJAAEsAAAAAgIAAAASZ2V0X293bmVyX2J5X2hhc2hfBQAAAApzaGEyNTZIYXNoAQAAABJrZXlUeGlkQnlIYXNoT3duZXIAAAACAAAACnNoYTI1Nkhhc2gAAAAGY2FsbGVyCQABLAAAAAICAAAAF2dldF90eGlkX2J5X2hhc2hfb3duZXJfCQACWAAAAAEJAAtUAAAAAQkAAZsAAAABCQABLAAAAAIFAAAACnNoYTI1Nkhhc2gFAAAABmNhbGxlcgAAAAAZY3VycmVudENlcnRpZmljYXRpb25QcmljZQkBAAAAGWdldEludGVnZXJCeUtleUZyb21PcmFjbGUAAAABCQABLAAAAAICAAAAEmNlcnRpZmljYXRpb25fZmVlXwkAAlgAAAABBQAAAAtVU0ROQXNzZXRJZAEAAAAQZ2V0QW1vdW50QnlCaWRJZAAAAAEAAAAFYmlkSWQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAAIa2V5QmlkSWQAAAABBQAAAAViaWRJZAAAAAAAAAAAAAEAAAAaZ2V0QW1vdW50SGlnaGVzdEJpZEJ5QXJ0SWQAAAABAAAABWFydElkBAAAAAViaWRJZAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAEmtleUhpZ2hlc3RCaWRCaWRJZAAAAAEFAAAABWFydElkAwkAAAAAAAACBQAAAAViaWRJZAIAAAAAAAAAAAAAAAAACQEAAAAQZ2V0QW1vdW50QnlCaWRJZAAAAAEFAAAABWJpZElkAQAAAA52YWxpZGF0ZVN0cmluZwAAAAIAAAADc3RyAAAAA21heAMJAAAAAAAAAgkAATEAAAABBQAAAANzdHIAAAAAAAAAAAAJAAACAAAAAQIAAAAYRmllbGQgY2Fubm90IGJlIGlzIGVtcHR5AwkAAGYAAAACCQABMQAAAAEFAAAAA3N0cgUAAAADbWF4CQAAAgAAAAEJAAEsAAAAAgUAAAADc3RyAgAAAAwgaXMgdG9vIGxvbmcGAQAAAAx2YWxpZGF0ZVVzZXIAAAABAAAABmNhbGxlcgQAAAAKdXNlclN0YXR1cwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAh1c2VyRGFwcAkBAAAADWtleVVzZXJTdGF0dXMAAAABBQAAAAZjYWxsZXIFAAAAEHVzZXJVbnJlZ2lzdGVyZWQDAwkAAAAAAAACBQAAAAp1c2VyU3RhdHVzBQAAABB1c2VyVW5yZWdpc3RlcmVkBgkAAAAAAAACBQAAAAp1c2VyU3RhdHVzBQAAAAt1c2VyQWxsb3dlZAIAAAAuUmVnaXN0ZXIgdGhpcyBhY2NvdW50IGZpcnN0IHdpdGggJ0FjY291bnQnIHRhYgMJAAAAAAAAAgUAAAAKdXNlclN0YXR1cwUAAAANdXNlclN1c3BlbmRlZAIAAAARQWNjb3VudCBzdXNwZW5kZWQDCQAAAAAAAAIFAAAACnVzZXJTdGF0dXMFAAAAC3VzZXJSZW1vdmVkAgAAAA9BY2NvdW50IHJlbW92ZWQCAAAAAAEAAAATdmFsaWRhdGVBcnR3b3JrRGF0YQAAAAUAAAAGY2FsbGVyAAAACmNpZERpc3BsYXkAAAAEbmFtZQAAAAtkZXNjcmlwdGlvbgAAAAR0YWdzBAAAAAljaGVja1VzZXIJAQAAAAx2YWxpZGF0ZVVzZXIAAAABBQAAAAZjYWxsZXIDCQEAAAACIT0AAAACBQAAAAljaGVja1VzZXICAAAAAAkAAAIAAAABBQAAAAljaGVja1VzZXIDCQAAAAAAAAIJAAExAAAAAQUAAAAKY2lkRGlzcGxheQAAAAAAAAAAAAkAAAIAAAABAgAAABtEaXNwbGF5IENJRCBjYW5ub3QgYmUgZW1wdHkDCQEAAAACIT0AAAACCQABMQAAAAEFAAAACmNpZERpc3BsYXkAAAAAAAAAAC4JAAACAAAAAQIAAAAeVGhpcyBkb2Vzbid0IHNlZW0gYSB2YWxpZCBDSUQhAwkBAAAAASEAAAABCQEAAAAOdmFsaWRhdGVTdHJpbmcAAAACBQAAAARuYW1lAAAAAAAAAABkCQAAAgAAAAECAAAAEjEwMCBDaGFyLiBtYXggbmFtZQMJAQAAAAEhAAAAAQkBAAAADnZhbGlkYXRlU3RyaW5nAAAAAgUAAAALZGVzY3JpcHRpb24AAAAAAAAAA+gJAAACAAAAAQIAAAAaMTAwMCBDaGFyLiBtYXggZGVzY3JpcHRpb24DCQAAZgAAAAIJAAGQAAAAAQkABLUAAAACBQAAAAR0YWdzAgAAAAEsAAAAAAAAAAAFCQAAAgAAAAECAAAACzUgdGFncyBtYXguAgAAAAABAAAACWlzUGF5bWVudAAAAAEAAAABaQMJAAAAAAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAkAAAIAAAABAgAAABNObyBwYXltZW50IGF0dGFjaGVkBAAAAAdwYXltZW50CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAAZhbW91bnQJAQAAAAV2YWx1ZQAAAAEIBQAAAAdwYXltZW50AAAABmFtb3VudAkABRQAAAACBQAAAAdwYXltZW50BQAAAAZhbW91bnQBAAAAD3ZhbGlkYXRlUGF5bWVudAAAAAEAAAABaQQAAAAKdDA4OTgyOTAxOAkBAAAACWlzUGF5bWVudAAAAAEFAAAAAWkEAAAAB3BheW1lbnQIBQAAAAp0MDg5ODI5MDE4AAAAAl8xBAAAAAZhbW91bnQIBQAAAAp0MDg5ODI5MDE4AAAAAl8yBAAAAAdhc3NldElkAwMJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkCQAAAAAAAAIIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQFAAAAC1VTRE5Bc3NldElkBwgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkAAAIAAAABAgAAACtPbmx5IFVTRE4gdG9rZW4gYWNjZXB0ZWQgYXMgdHJhbnNhY3Rpb24gZmVlAwkBAAAAAiE9AAAAAgUAAAAGYW1vdW50BQAAABljdXJyZW50Q2VydGlmaWNhdGlvblByaWNlCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAGVBheW1lbnQgYW1vdW50IHNob3VsZCBiZSAJAAGkAAAAAQUAAAAZY3VycmVudENlcnRpZmljYXRpb25QcmljZQIAAAAJIGJ1dCBpczogCQABpAAAAAEFAAAABmFtb3VudAkABRQAAAACBQAAAAZhbW91bnQFAAAAB2Fzc2V0SWQBAAAAC2lzQXJ0TWludGVkAAAAAgAAAAlhZGRyVG9Vc2UAAAAFYXJ0SWQEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwkBAAAACWtleUlzc3VlZAAAAAIFAAAACWFkZHJUb1VzZQUAAAAFYXJ0SWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYgUAAAAHJG1hdGNoMAMJAQAAAAIhPQAAAAIFAAAAAWIAAAAAAAAAAAAGBwcBAAAAFHZhbGlkYXRlUHJpY2VBc3NldElkAAAAAwAAAAFpAAAADHByaWNlQXNzZXRJZAAAAAxhcnR3b3JrUHJpY2UEAAAACnQwOTYxMTk2NDcJAQAAAAlpc1BheW1lbnQAAAABBQAAAAFpBAAAAAdwYXltZW50CAUAAAAKdDA5NjExOTY0NwAAAAJfMQQAAAAGYW1vdW50CAUAAAAKdDA5NjExOTY0NwAAAAJfMgQAAAAHYXNzZXRJZAMJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQJAAACAAAAAQIAAAAOV3JvbmcgYXNzZXQgaWQDAwkAAGYAAAACCQABMQAAAAEFAAAADHByaWNlQXNzZXRJZAAAAAAAAAAAAAkAAAAAAAACCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQFAAAADHByaWNlQXNzZXRJZAcIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQJAAACAAAAAQIAAAAOV3JvbmcgYXNzZXQgaWQDAwkAAAAAAAACBQAAAAdhc3NldElkBQAAAAR1bml0CQEAAAACIT0AAAACBQAAAAxwcmljZUFzc2V0SWQCAAAAAAcJAAACAAAAAQIAAAAOV3JvbmcgYXNzZXQgaWQDCQEAAAACIT0AAAACBQAAAAxhcnR3b3JrUHJpY2UFAAAABmFtb3VudAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABRQYXltZW50IGRvbid0IG1hdGNoIAkAAaQAAAABBQAAAAxhcnR3b3JrUHJpY2UCAAAAASAJAAGkAAAAAQUAAAAGYW1vdW50CQAFFAAAAAIFAAAABmFtb3VudAUAAAAHYXNzZXRJZAEAAAAQYWNjZXB0ZWRBc3NldElkcwAAAAEAAAAHYXNzZXRJZAMJAQAAAAIhPQAAAAIFAAAAB2Fzc2V0SWQJAAJYAAAAAQUAAAALVVNETkFzc2V0SWQJAAACAAAAAQIAAAAST25seSBVU0ROIGFjY2VwdGVkBgEAAAAPdmFsaWRhdGVNaW5TZWxsAAAAAgAAAAdhc3NldElkAAAABXByaWNlBAAAAA1taW5TZWxsU2NvbmV4AwUAAAAIdW5pdFRlc3QAAAAAAAAAAAEJAABoAAAAAgUAAAAZY3VycmVudENlcnRpZmljYXRpb25QcmljZQAAAAAAAAAAAgMDAwkAAAAAAAACBQAAAAdhc3NldElkCQACWAAAAAEFAAAAC1VTRE5Bc3NldElkCQAAZgAAAAIFAAAADW1pblNlbGxTY29uZXgFAAAABXByaWNlBwkBAAAAAiE9AAAAAgUAAAAFcHJpY2UAAAAAAAAAAAAHCQAAAgAAAAEJAAEsAAAAAgIAAAAZV3JvbmcgbWluaW11bSBzZWxsIHByaWNlIAkAAaQAAAABBQAAAA1taW5TZWxsU2NvbmV4BgEAAAANZ2V0QmlkQXNzZXRJZAAAAAEAAAAHYXNzZXRJZAMJAAAAAAAAAgUAAAAHYXNzZXRJZAIAAAAFV0FWRVMJAAACAAAAAQIAAAAWT25seSBVU0ROIGlzIGFjY2VwdGVkIQkAAlkAAAABBQAAAAdhc3NldElkAQAAABZnZXRQcmljZUFzc2V0SWRGcm9tQmlkAAAAAQAAAApiaWREYXRhS2V5BAAAAAdiaWREYXRhCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQABLAAAAAIFAAAACmJpZERhdGFLZXkCAAAABV9PUEVOAwkAAAAAAAACBQAAAAdiaWREYXRhAgAAAAAJAAACAAAAAQIAAAANQmlkIG5vdCBmb3VuZAQAAAAKYmlkRGF0YUFycgkABLUAAAACBQAAAAdiaWREYXRhAgAAAAFfBAAAAAliaWRBbW91bnQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAApiaWREYXRhQXJyAAAAAAAAAAABBAAAAApiaWRBc3NldElkCQEAAAANZ2V0QmlkQXNzZXRJZAAAAAEJAAGRAAAAAgUAAAAKYmlkRGF0YUFycgAAAAAAAAAAAAMJAABnAAAAAgAAAAAAAAAAAAUAAAAJYmlkQW1vdW50CQAAAgAAAAECAAAADFdyb25nIGFtb3VudAkABRQAAAACBQAAAAliaWRBbW91bnQFAAAACmJpZEFzc2V0SWQBAAAADGlkQ2FsbGVyRGF0ZQAAAAEAAAABaQMJAQAAAAEhAAAAAQUAAAALZGFwcFJ1bm5pbmcJAAACAAAAAQUAAAAObWFpbnRlbmFuY2VNU0cJAAUVAAAAAwkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wAQAAAAppc0JpZENoZWNrAAAABAAAAAFpAAAABmlzc3VlcgAAAAhiaWRPd25lcgAAAAViaWRJZAMDAwkAAAAAAAACCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMFAAAABmlzc3VlcgkBAAAAAiE9AAAAAgUAAAAIYmlkT3duZXICAAAAAAcJAQAAAAIhPQAAAAIFAAAABWJpZElkAgAAAAAHBgcBAAAACmdldEFydERhdGEAAAAEAAAAAWkAAAAGaXNzdWVyAAAABWFydElkAAAABWlzQmlkBAAAAA5jYWxsZXJJc0lzc3VlcgkAAAAAAAACCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMFAAAABmlzc3VlcgQAAAAIdG90YWxORlQJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABAgAAABB0b3RhbF9uZnRfaXNzdWVkBAAAAAthcnR3b3JrTmFtZQkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAB2tleU5hbWUAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkAwkAAAAAAAACBQAAAAthcnR3b3JrTmFtZQIAAAAACQAAAgAAAAECAAAAEUFydCBkb2Vzbid0IGV4aXN0BAAAAAhpc09uU2FsZQkBAAAAD2dldEJvb2xlYW5CeUtleQAAAAEJAQAAAAlrZXlPblNhbGUAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAAphbW91bnRTb2xkCQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQkBAAAACWtleUlzc3VlZAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAADGFydHdvcmtQcmljZQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAQAAAAhrZXlQcmljZQAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQJAABoAAAAAgUAAAAZY3VycmVudENlcnRpZmljYXRpb25QcmljZQAAAAAAAAAAAgQAAAAMcHJpY2VBc3NldElkAwUAAAAOY2FsbGVySXNJc3N1ZXIJAAJYAAAAAQUAAAALVVNETkFzc2V0SWQJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABJrZXlBc3NldElkQWNjZXB0ZWQAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAAptYXhDYW5TZWxsCQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQkBAAAACmtleU1heE1pbnQAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkAwMDCQEAAAABIQAAAAEFAAAABWlzQmlkCQEAAAABIQAAAAEFAAAADmNhbGxlcklzSXNzdWVyBwMDCQAAZwAAAAIAAAAAAAAAAAAFAAAADGFydHdvcmtQcmljZQYJAQAAAAEhAAAAAQUAAAAIaXNPblNhbGUGCQAAZwAAAAIAAAAAAAAAAAAFAAAACm1heENhblNlbGwHCQAAAgAAAAECAAAAEEFydCBub3QgZm9yIHNhbGUDAwMJAQAAAAEhAAAAAQUAAAAFaXNCaWQFAAAADmNhbGxlcklzSXNzdWVyBwkAAGcAAAACAAAAAAAAAAAABQAAAAptYXhDYW5TZWxsBwkAAAIAAAABAgAAABRNYXggaXNzdWFibGUgbm90IHNldAkABRkAAAAHBQAAAAh0b3RhbE5GVAUAAAALYXJ0d29ya05hbWUFAAAACmFtb3VudFNvbGQFAAAADGFydHdvcmtQcmljZQUAAAAMcHJpY2VBc3NldElkBQAAAAptYXhDYW5TZWxsBQAAAAhpc09uU2FsZQEAAAAKZ2V0QmlkRGF0YQAAAAkAAAABaQAAAAZjYWxsZXIAAAAGaXNzdWVyAAAABWFydElkAAAACGJpZE93bmVyAAAABWJpZElkAAAADHByaWNlQXNzZXRJZAAAAAxhcnR3b3JrUHJpY2UAAAAFaXNCaWQEAAAACWNoZWNrVXNlcgkBAAAADHZhbGlkYXRlVXNlcgAAAAEFAAAABmlzc3VlcgMDBQAAAAVpc0JpZAkBAAAAAiE9AAAAAgUAAAAJY2hlY2tVc2VyAgAAAAAHCQAAAgAAAAEFAAAACWNoZWNrVXNlcgQAAAAKYmlkRGF0YUtleQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAARiaWRfBQAAAAVhcnRJZAIAAAABXwUAAAAGaXNzdWVyAgAAAAFfBQAAAAhiaWRPd25lcgIAAAABXwUAAAAFYmlkSWQEAAAADHQwMTM1MTkxMzY0OAMFAAAABWlzQmlkCQEAAAAWZ2V0UHJpY2VBc3NldElkRnJvbUJpZAAAAAEFAAAACmJpZERhdGFLZXkJAQAAABR2YWxpZGF0ZVByaWNlQXNzZXRJZAAAAAMFAAAAAWkFAAAADHByaWNlQXNzZXRJZAUAAAAMYXJ0d29ya1ByaWNlBAAAAAZhbW91bnQIBQAAAAx0MDEzNTE5MTM2NDgAAAACXzEEAAAAB2Fzc2V0SWQIBQAAAAx0MDEzNTE5MTM2NDgAAAACXzIJAAUVAAAAAwUAAAAKYmlkRGF0YUtleQUAAAAGYW1vdW50BQAAAAdhc3NldElkAQAAABFnZXRDb21taXNzaW9uRGF0YQAAAAUAAAAGaXNzdWVyAAAAB2Fzc2V0SWQAAAAGYW1vdW50AAAACmFtb3VudFNvbGQAAAAKbWF4Q2FuU2VsbAQAAAANaXNXaGl0ZWxpc3RlZAkBAAAADmNoZWNrV2hpdGVsaXN0AAAAAQUAAAAGaXNzdWVyBAAAAANjdXQDCQAAZgAAAAIFAAAADWlzV2hpdGVsaXN0ZWQFAAAABmhlaWdodAAAAAAAAAAAAAMJAAAAAAAAAgUAAAAHYXNzZXRJZAUAAAALVVNETkFzc2V0SWQFAAAAEFVTRE5GaXJzdFNlbGxDdXQJAAACAAAAAQIAAAAWT25seSBVU0ROIGlzIGFjY2VwdGVkIQQAAAAPYW1vdW50Rm9yU2NvbmV4CQAAawAAAAMFAAAABmFtb3VudAUAAAADY3V0AAAAAAAAAAPoBAAAABBhbW91bnRGb3JDcmVhdG9yCQAAZQAAAAIFAAAABmFtb3VudAUAAAAPYW1vdW50Rm9yU2NvbmV4AwkAAAAAAAACBQAAAAphbW91bnRTb2xkBQAAAAptYXhDYW5TZWxsCQAAAgAAAAECAAAADEFydCBzb2xkIG91dAQAAAANbmV3QW1vdW50U29sZAkAAGQAAAACBQAAAAphbW91bnRTb2xkAAAAAAAAAAABCQAFFQAAAAMFAAAAD2Ftb3VudEZvclNjb25leAUAAAAQYW1vdW50Rm9yQ3JlYXRvcgUAAAANbmV3QW1vdW50U29sZAEAAAAMZ2V0SXNzdWVEYXRhAAAACwAAAAZpc3N1ZXIAAAAFYXJ0SWQAAAALYXJ0d29ya05hbWUAAAANbmV3QW1vdW50U29sZAAAAAptYXhDYW5TZWxsAAAACHRvdGFsTkZUAAAABmNhbGxlcgAAAAhiaWRPd25lcgAAAAViaWRJZAAAAAFpAAAACGlzT25TYWxlBAAAAAlpc3N1ZU1ldGEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAA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AAACXzMEAAAADWNvbW1pc2lvbkRhdGEJAQAAABFnZXRDb21taXNzaW9uRGF0YQAAAAUFAAAABmlzc3VlcgkBAAAABXZhbHVlAAAAAQUAAAAHYXNzZXRJZAUAAAAGYW1vdW50BQAAAAphbW91bnRTb2xkBQAAAAptYXhDYW5TZWxsBAAAAA9hbW91bnRGb3JTY29uZXgIBQAAAA1jb21taXNpb25EYXRhAAAAAl8xBAAAABBhbW91bnRGb3JDcmVhdG9yCAUAAAANY29tbWlzaW9uRGF0YQAAAAJfMgQAAAANbmV3QW1vdW50U29sZAgFAAAADWNvbW1pc2lvbkRhdGEAAAACXzMEAAAACmlzc3VlckRhdGEJAQAAAAxnZXRJc3N1ZURhdGEAAAALBQAAAAZpc3N1ZXIFAAAABWFydElkBQAAAAthcnR3b3JrTmFtZQUAAAANbmV3QW1vdW50U29sZAUAAAAKbWF4Q2FuU2VsbAUAAAAIdG90YWxORlQFAAAABmNhbGxlcgUAAAAIYmlkT3duZXIFAAAABWJpZElkBQAAAAFpBQAAAAhpc09uU2FsZQQAAAAKc2VsbFN0YXR1cwgFAAAACmlzc3VlckRhdGEAAAACXzEEAAAACnJlY2VpdmVORlQIBQAAAAppc3N1ZXJEYXRhAAAAAl8yBAAAAAlpc3N1ZU1ldGEIBQAAAAppc3N1ZXJEYXRhAAAAAl8zBAAAAAtpZE5GVEludm9rZQkAA/wAAAAEBQAAAAR0aGlzAgAAAAdtaW50TmZ0CQAETAAAAAIFAAAACHRvdGFsTkZUCQAETAAAAAIFAAAACWlzc3VlTWV0YQkABEwAAAACCQAEJQAAAAEFAAAACnJlY2VpdmVORlQFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAAtpZE5GVEludm9rZQUAAAALaWRORlRJbnZva2UEAAAABWlkTkZUBAAAAAckbWF0Y2gwBQAAAAtpZE5GVEludm9rZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFyBQAAAAckbWF0Y2gwBQAAAAFyCQAAAgAAAAECAAAAF0luY29ycmVjdCBpbnZva2UgcmVzdWx0BAAAAAtiaWRLZXlWYWx1ZQkBAAAADGdldEJpZEtleVZhbAAAAAMFAAAAB2Fzc2V0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BAAAAAllbmRIZWlnaHQJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAAMa2V5RW5kSGVpZ2h0AAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAQAAAAKaGlnaGVzdEJpZAkBAAAAGmdldEFtb3VudEhpZ2hlc3RCaWRCeUFydElkAAAAAQUAAAAFYXJ0SWQDCQAAZgAAAAIFAAAABmhlaWdodAUAAAAJZW5kSGVpZ2h0CQAAAgAAAAECAAAAIVRoaXMgYXVjdGlvbiBpcyBmaW5pc2hlZCBhbHJlYWR5IQQAAAALY2FsbGRlckRhdGEJAQAAAAxpZENhbGxlckRhdGUAAAABBQAAAAFpBAAAAAJpZAgFAAAAC2NhbGxkZXJEYXRhAAAAAl8xBAAAAAZjYWxsZXIIBQAAAAtjYWxsZGVyRGF0YQAAAAJfMgQAAAAEZGF0ZQgFAAAAC2NhbGxkZXJEYXRhAAAAAl8zBAAAAAxpc1BheW1lbnRWYXIJAQAAAAlpc1BheW1lbnQAAAABBQAAAAFpBAAAAAdwYXltZW50CAUAAAAMaXNQYXltZW50VmFyAAAAAl8xBAAAAAZhbW91bnQIBQAAAAxpc1BheW1lbnRWYXIAAAACXzIDCQAAZwAAAAIFAAAACmhpZ2hlc3RCaWQFAAAABmFtb3VudAkAAAIAAAABCQABLAAAAAICAAAAIFBsZWFzZSBwbGFjZSBhIGJpZCBoaWdoZXIgdGhhbjogCQABpAAAAAEFAAAACmhpZ2hlc3RCaWQEAAAAB2Fzc2V0SWQDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkCQAAAgAAAAECAAAAFk9ubHkgVVNETiBpcyBhY2NlcHRlZCEJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAQAAAAGYmlkTmJyCQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQkAASwAAAACAgAAABJjdXJyZW50X2JpZGFtb3VudF8FAAAABWFydElkBAAAAA9taW5BcnR3b3JrUHJpY2UJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAAIa2V5UHJpY2UAAAACBQAA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DG9sZEVuZEhlaWdodAMJAAAAAAAAAgUAAAAKYW1vdW50U29sZAUAAAAKbWF4Q2FuU2VsbAkAAAIAAAABAgAAACZDYW4ndCByZXN0YXJ0IGF1Y3Rpb24sIG1heCBhbW91bnQgc29sZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAADGtleUVuZEhlaWdodAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQFAAAACWVuZEhlaWdodAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAASa2V5SGlnaGVzdEJpZEJpZElkAAAAAQUAAAAFYXJ0SWQFAAAAA25pbAkAAAIAAAABAgAAACRQcmV2aW91cyBhdWN0aW9uIGlzbid0IGNvbXBsZXRlZCB5ZXQBAAAAFGFjY2VwdEJpZFRyYWRpdGlvbmFsAAAABQAAAAFpAAAABWFydElkAAAABmlzc3VlcgAAAAViaWRJZAAAAAhiaWRPd25lcgQAAAAJZW5kSGVpZ2h0CQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQkBAAAADGtleUVuZEhlaWdodAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAADGhpZ2hlc3RCaWRJZAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAEmtleUhpZ2hlc3RCaWRCaWRJZAAAAAEFAAAABWFydElkAwkAAGYAAAACBQAAAAZoZWlnaHQFAAAACWVuZEhlaWdodAMJAAAAAAAAAgUAAAAFYmlkSWQFAAAADGhpZ2hlc3RCaWRJZAQAAAALYnV5TWludERhdGEJAQAAAAdidXlNaW50AAAABgUAAAABaQUAAAAFYXJ0SWQFAAAABmlzc3VlcgUAAAAFYmlkSWQFAAAACGJpZE93bmVyBgQAAAAScmVzdGFydEF1Y3Rpb25EYXRhCQEAAAAOcmVzdGFydEF1Y3Rpb24AAAACBQAAAAVhcnRJZAUAAAAGaXNzdWVyCQAETgAAAAIFAAAAEnJlc3RhcnRBdWN0aW9uRGF0YQUAAAALYnV5TWludERhdGEJAAACAAAAAQIAAAAcVGhpcyBpcyBub3QgdGhlIHdpbm5pbmcgYmlkIQkAAAIAAAABAgAAACFUaGlzIGF1Y3Rpb24gaXMgbm90IHlldCBmaW5p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AAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAA5yZWNlaXZlTkZUQWRkeQAAAAAAAAAAAQUAAAAFaWRORlQFAAAAA25pbAkAAlgAAAABBQAAAAVpZE5GVAkAAAIAAAABAgAAABxPbmx5IHRoZSBkQXBwIGNhbiBtaW50IE5GVCdzAAAAAWkBAAAACmFkZEFydHdvcmsAAAAIAAAACnNoYTI1Nkhhc2gAAAAEbmFtZQAAAAtkZXNjcmlwdGlvbgAAAAR0YWdzAAAABHR5cGUAAAAKY2lkRGlzcGxheQAAAAtlbnRpdGxlbWVudAAAAAdwcmV2aWV3BAAAAAx0MDE3NzQwMTc3ODEJAQAAAAxpZENhbGxlckRhdGUAAAABBQAAAAFpBAAAAAVhcnRJZAgFAAAADHQwMTc3NDAxNzc4MQAAAAJfMQQAAAAGY2FsbGVyCAUAAAAMdDAxNzc0MDE3NzgxAAAAAl8yBAAAAARkYXRlCAUAAAAMdDAxNzc0MDE3NzgxAAAAAl8zAwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAABXR5cGVzBQAAAAR0eXBlBAAAAA92YWxpZGF0ZUFydHdvcmsJAQAAABN2YWxpZGF0ZUFydHdvcmtEYXRhAAAABQUAAAAGY2FsbGVyBQAAAApjaWREaXNwbGF5BQAAAARuYW1lBQAAAAtkZXNjcmlwdGlvbgUAAAAEdGFncwMJAQAAAAIhPQAAAAIFAAAAD3ZhbGlkYXRlQXJ0d29yawIAAAAACQAAAgAAAAECAAAAFVNvbWV0aGluZyB3ZW50IHdyb25nIQQAAAAMdDAxODE3MDE4MjEyCQEAAAAPdmFsaWRhdGVQYXltZW50AAAAAQUAAAABaQQAAAAGYW1vdW50CAUAAAAMdDAxODE3MDE4MjEyAAAAAl8xBAAAAAdhc3NldElkCAUAAAAMdDAxODE3MDE4MjEyAAAAAl8yAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAAGYW1vdW50CQAAAgAAAAECAAAAFFNvbWV0aGluZyB3ZW50IHdyb25nBAAAAAtwcmV2aWV3RGF0YQMJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAxQcmV2aWV3dHlwZXMFAAAABHR5cGUJAARMAAAAAgkBAAAAC1N0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TWF4TWludAAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQFAAAAB21heE1pbnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAtrZXlEdXJhdGlvbgAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQFAAAACGR1cmF0aW9uCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAMa2V5RW5kSGVpZ2h0AAAAAgUAAAAGY2FsbGVyBQAAAAVhcnRJZAUAAAAJZW5kSGVpZ2h0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABJrZXlBc3NldElkQWNjZXB0ZWQAAAACBQAAAAZjYWxsZXIFAAAABWFydElkBQAAAAdhc3NldElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA5rZXlBdWN0aW9uVHlwZQAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQFAAAAC2F1Y3Rpb25UeXBlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAKa2V5Um95YWx0eQAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQFAAAAB3JveWFsdHkFAAAAA25pbAAAAAFpAQAAAApidXlBcnR3b3JrAAAAAgAAAAVhcnRJZAAAAAZpc3N1ZXIEAAAAC2F1Y3Rpb25UeXBlCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAOa2V5QXVjdGlvblR5cGUAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkAwkAAAAAAAACBQAAAAthdWN0aW9uVHlwZQUAAAAMYXVjdGlvblR5cGUzCQEAAAAHYnV5TWludAAAAAYFAAAAAWkFAAAABWFydElkBQAAAAZpc3N1ZXICAAAAAAIAAAAABwkAAAIAAAABAgAAADREaXJlY3QgYnV5IG9ubHkgYWxsb3dlZCB3aGVuIG5vIGF1Y3Rpb24gdHlwZSBpcyBzZXQhAAAAAWkBAAAACnVwZGF0ZVRhZ3MAAAADAAAABmFydGlzdAAAAAVhcnRJZAAAAAR0YWdzBAAAAAZjYWxsZXIJAAQlAAAAAQkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5AwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAABm93bmVycwUAAAAGY2FsbGVyAwkAAGYAAAACCQABkAAAAAEJAAS1AAAAAgUAAAAEdGFncwIAAAABLAAAAAAAAAAABQkAAAIAAAABAgAAAAs1IHRhZ3MgbWF4LgQAAAAHdGFnc09sZAkBAAAAFWdldFN0cmluZ0J5S2V5T3JFcnJvcgAAAAIJAQAAAAdrZXlUYWdzAAAAAgUAAAAGYXJ0aXN0BQAAAAVhcnRJZAIAAAAvTm8gdGFncyBjcmVhdGVkIHdpdGggdGhpcyBrZXksIHNvIGNhbid0IHVwZGF0ZSEDCQAAAAAAAAIFAAAABHRhZ3MFAAAAB3RhZ3NPbGQJAAACAAAAAQIAAAAeVGFncyBhcmUgdGhlIHNhbWUgYXMgb2xkIHRhZ3MhCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAdrZXlUYWdzAAAAAgUAAAAGYXJ0aXN0BQAAAAVhcnRJZAUAAAAEdGFncwUAAAADbmlsCQAAAgAAAAECAAAAAm5vAAAAAWkBAAAAC2RlbGV0ZUVudHJ5AAAAAQAAAAVlbnRyeQQAAAAGY2FsbGVyCQAEJQAAAAEJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQMJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAZvd25lcnMFAAAABmNhbGxlcgkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABBQAAAAVlbnRyeQUAAAADbmlsCQAAAgAAAAECAAAAAm5vAAAAAWkBAAAABnNldEJpZAAAAAIAAAAFYXJ0SWQAAAAGaXNzdWVyBAAAAAthdWN0aW9uVHlwZQkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAADmtleUF1Y3Rpb25UeXBlAAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAMJAAAAAAAAAgUAAAALYXVjdGlvblR5cGUFAAAADGF1Y3Rpb25UeXBlMQkBAAAAFHNldEJpZE5vblRyYWRpdGlvbmFsAAAAAwUAAAABaQUAAAAFYXJ0SWQFAAAABmlzc3VlcgMJAAAAAAAAAgUAAAALYXVjdGlvblR5cGUFAAAADGF1Y3Rpb25UeXBlMgkBAAAAEXNldEJpZFRyYWRpdGlvbmFsAAAAAwUAAAABaQUAAAAFYXJ0SWQFAAAABmlzc3VlcgkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAWVW5rbm93biBhdWN0aW9uIHR5cGUgOgUAAAALYXVjdGlvblR5cGUCAAAAGywgcGxlYXNlIGNvbnRhY3QgdGhlIGFkbWlucwAAAAFpAQAAAAlhY2NlcHRCaWQAAAAEAAAABWFydElkAAAABmlzc3VlcgAAAAViaWRJZAAAAAhiaWRPd25lcgQAAAALYXVjdGlvblR5cGUJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAA5rZXlBdWN0aW9uVHlwZQAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQDCQAAAAAAAAIFAAAAC2F1Y3Rpb25UeXBlBQAAAAxhdWN0aW9uVHlwZTEJAQAAABdhY2NlcHRCaWROb25UcmFkaXRpb25hbAAAAAUFAAAAAWkFAAAABWFydElkBQAAAAZpc3N1ZXIFAAAABWJpZElkBQAAAAhiaWRPd25lcgMJAAAAAAAAAgUAAAALYXVjdGlvblR5cGUFAAAADGF1Y3Rpb25UeXBlMgkBAAAAFGFjY2VwdEJpZFRyYWRpdGlvbmFsAAAABQUAAAABaQUAAAAFYXJ0SWQFAAAABmlzc3VlcgUAAAAFYmlkSWQFAAAACGJpZE93bmVyCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAABZVbmtub3duIGF1Y3Rpb24gdHlwZSA6BQAAAAthdWN0aW9uVHlwZQIAAAAbLCBwbGVhc2UgY29udGFjdCB0aGUgYWRtaW5zAAAAAWkBAAAACWNhbmNlbEJpZAAAAAMAAAAFYXJ0SWQAAAAGaXNzdWVyAAAABWJpZElkBAAAAAthdWN0aW9uVHlwZQkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAADmtleUF1Y3Rpb25UeXBlAAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAMJAAAAAAAAAgUAAAALYXVjdGlvblR5cGUFAAAADGF1Y3Rpb25UeXBlMQkBAAAADWNhbmNlbEJpZEltcGwAAAAEBQAAAAFpBQAAAAVhcnRJZAUAAAAGaXNzdWVyBQAAAAViaWRJZAkBAAAAGGNhbmNlbEJpZEltcGxUcmFkaXRpb25hbAAAAAQFAAAAAWkFAAAABWFydElkBQAAAAZpc3N1ZXIFAAAABWJpZElkAAAAAJguwG4=", "height": 1785124, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Dn93TC8o3S58meMysH7z4u5tKuKKHNM7R7zMeFCbokne Next: CNPshsbVYjCZ3T66n45G6V53MaqaE18GQyvCM8qpWjyq Diff:
OldNewDifferences
99
1010 let certDapp = "3MxcXrNbMZKYaSrhcfeMm2hZnBeCu3yRWsw"
1111
12-let userDapp = value(addressFromString("3N9cQgZFPHHVu8wqsn2DkQFehg3h8CNiooA"))
12+let userDapp = value(addressFromString("3Mzv4UHGRCC5KknZb8x5wfFUQzzpY9G4Gn4"))
1313
1414 let whitelistDapp = value(addressFromString("3N9xZYGpzMFDXvXuctmU6zV8qSzm2ZfF31f"))
1515
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let unitTest = false
55
66 let oracleFee = value(addressFromString("3MpZQjzGogmifcEKe8mDd6ribL7nxT9ACye"))
77
88 let feeReceiver = "3N65xLq8JcCeaEiR1TJQ7dBqXBvEy6E48Wz"
99
1010 let certDapp = "3MxcXrNbMZKYaSrhcfeMm2hZnBeCu3yRWsw"
1111
12-let userDapp = value(addressFromString("3N9cQgZFPHHVu8wqsn2DkQFehg3h8CNiooA"))
12+let userDapp = value(addressFromString("3Mzv4UHGRCC5KknZb8x5wfFUQzzpY9G4Gn4"))
1313
1414 let whitelistDapp = value(addressFromString("3N9xZYGpzMFDXvXuctmU6zV8qSzm2ZfF31f"))
1515
1616 let USDNAssetId = base58'132maRL3uF35tc2bpRih9D6MYq5DR6H28zkop786dKyu'
1717
1818 let owners = [getString(oracleFee, "owner1"), getString(oracleFee, "owner2")]
1919
2020 let types = ["IMAGE", "PDF", "VIDEO"]
2121
2222 let Previewtypes = ["PDF"]
2323
2424 let USDNFirstSellCut = 150
2525
2626 let dappRunning = valueOrElse(getBoolean(userDapp, "conf_dapp_is_running"), true)
2727
2828 let maintenanceMSG = valueOrElse(getString(userDapp, "conf_maintenance_msg"), "")
2929
3030 let userSuspended = "SUSPENDED"
3131
3232 let userRemoved = "REMOVED"
3333
3434 let userUnregistered = "UNREGISTERED"
3535
3636 let userAllowed = "ALLOWED"
3737
3838 let auctionType1 = "BIDTYPE"
3939
4040 let auctionType2 = "TRADITIONAL"
4141
4242 let auctionType3 = "DIRECT"
4343
4444 func getStringByKeyFromUsers (key) = valueOrElse(getString(userDapp, key), "")
4545
4646
4747 func getStringByKey (key) = valueOrElse(getString(this, key), "")
4848
4949
5050 func getStringByKeyOrError (key,error) = valueOrErrorMessage(getString(this, key), error)
5151
5252
5353 func getIntegerByKeyFromOracle (key) = valueOrErrorMessage(getInteger(oracleFee, key), "Integer undefine or 0 in oracle")
5454
5555
5656 func getIntegerByKey (key) = valueOrElse(getInteger(this, key), 0)
5757
5858
5959 func checkWhitelist (key) = valueOrElse(getInteger(whitelistDapp, key), 0)
6060
6161
6262 func getBooleanByKey (key) = valueOrElse(getBoolean(this, key), false)
6363
6464
6565 func validateHash (hash) = (size(hash) == 64)
6666
6767
6868 func keyUserStatus (caller) = ("user_status_" + caller)
6969
7070
7171 func keyDate (caller,artId) = ((("art_date_" + artId) + "_") + caller)
7272
7373
7474 func keyName (caller,artId) = ((("art_name_" + artId) + "_") + caller)
7575
7676
7777 func keyDesc (caller,artId) = ((("art_desc_" + artId) + "_") + caller)
7878
7979
8080 func keyDisplayCid (caller,artId) = ((("art_display_cid_" + artId) + "_") + caller)
8181
8282
8383 func keyPreviewCid (caller,artId) = ((("art_preview_cid_" + artId) + "_") + caller)
8484
8585
8686 func keyMaxMint (caller,artId) = ((("art_maxmint_" + artId) + "_") + caller)
8787
8888
8989 func keyHighestBidBidId (artId) = ("art_highestBidBidId_" + artId)
9090
9191
9292 func keyBidId (bidId) = ("bid_" + bidId)
9393
9494
9595 func keyDuration (caller,artId) = ((("art_duration_" + artId) + "_") + caller)
9696
9797
9898 func keyEndHeight (caller,artId) = ((("art_endheight_" + artId) + "_") + caller)
9999
100100
101101 func keyAuctionType (caller,artId) = ((("art_auctiontype_" + artId) + "_") + caller)
102102
103103
104104 func keyIssued (caller,artId) = ((("art_issued_" + artId) + "_") + caller)
105105
106106
107107 func KeyNftIssuer (nftId) = ("nft_issued_" + nftId)
108108
109109
110110 func KeyNftArtId (nftId) = ("nft_artId_" + nftId)
111111
112112
113113 func keyRoyalty (caller,artId) = ((("art_royalty_" + artId) + "_") + caller)
114114
115115
116116 func keyOnSale (caller,artId) = ((("art_onsale_" + artId) + "_") + caller)
117117
118118
119119 func keyEntitlement (caller,artId) = ((("art_entitlement_" + artId) + "_") + caller)
120120
121121
122122 func keyTags (caller,artId) = ((("art_tags_" + artId) + "_") + caller)
123123
124124
125125 func keyType (caller,artId) = ((("art_type_" + artId) + "_") + caller)
126126
127127
128128 func keyPrice (caller,artId) = ((("art_price_" + artId) + "_") + caller)
129129
130130
131131 func keyAssetIdAccepted (caller,artId) = ((("art_assetAccepted_" + artId) + "_") + caller)
132132
133133
134134 func keyHashByTxidAddr (caller,txid) = ((("get_hashbytxidaddr_" + txid) + "_") + caller)
135135
136136
137137 func keyOwnerByHash (sha256Hash) = ("get_owner_by_hash_" + sha256Hash)
138138
139139
140140 func keyTxidByHashOwner (sha256Hash,caller) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((sha256Hash + caller)))))
141141
142142
143143 let currentCertificationPrice = getIntegerByKeyFromOracle(("certification_fee_" + toBase58String(USDNAssetId)))
144144
145145 func getAmountByBidId (bidId) = valueOrElse(getIntegerByKey(keyBidId(bidId)), 0)
146146
147147
148148 func getAmountHighestBidByArtId (artId) = {
149149 let bidId = getStringByKey(keyHighestBidBidId(artId))
150150 if ((bidId == ""))
151151 then 0
152152 else getAmountByBidId(bidId)
153153 }
154154
155155
156156 func validateString (str,max) = if ((size(str) == 0))
157157 then throw("Field cannot be is empty")
158158 else if ((size(str) > max))
159159 then throw((str + " is too long"))
160160 else true
161161
162162
163163 func validateUser (caller) = {
164164 let userStatus = valueOrElse(getString(userDapp, keyUserStatus(caller)), userUnregistered)
165165 if (if ((userStatus == userUnregistered))
166166 then true
167167 else (userStatus == userAllowed))
168168 then "Register this account first with 'Account' tab"
169169 else if ((userStatus == userSuspended))
170170 then "Account suspended"
171171 else if ((userStatus == userRemoved))
172172 then "Account removed"
173173 else ""
174174 }
175175
176176
177177 func validateArtworkData (caller,cidDisplay,name,description,tags) = {
178178 let checkUser = validateUser(caller)
179179 if ((checkUser != ""))
180180 then throw(checkUser)
181181 else if ((size(cidDisplay) == 0))
182182 then throw("Display CID cannot be empty")
183183 else if ((size(cidDisplay) != 46))
184184 then throw("This doesn't seem a valid CID!")
185185 else if (!(validateString(name, 100)))
186186 then throw("100 Char. max name")
187187 else if (!(validateString(description, 1000)))
188188 then throw("1000 Char. max description")
189189 else if ((size(split(tags, ",")) > 5))
190190 then throw("5 tags max.")
191191 else ""
192192 }
193193
194194
195195 func isPayment (i) = if ((size(i.payments) == 0))
196196 then throw("No payment attached")
197197 else {
198198 let payment = value(i.payments[0])
199199 let amount = value(payment.amount)
200200 $Tuple2(payment, amount)
201201 }
202202
203203
204204 func validatePayment (i) = {
205205 let t089829018 = isPayment(i)
206206 let payment = t089829018._1
207207 let amount = t089829018._2
208208 let assetId = if (if (isDefined(payment.assetId))
209209 then (payment.assetId == USDNAssetId)
210210 else false)
211211 then payment.assetId
212212 else throw("Only USDN token accepted as transaction fee")
213213 if ((amount != currentCertificationPrice))
214214 then throw(((("Payment amount should be " + toString(currentCertificationPrice)) + " but is: ") + toString(amount)))
215215 else $Tuple2(amount, assetId)
216216 }
217217
218218
219219 func isArtMinted (addrToUse,artId) = match getInteger(this, keyIssued(addrToUse, artId)) {
220220 case b: Int =>
221221 if ((b != 0))
222222 then true
223223 else false
224224 case _ =>
225225 false
226226 }
227227
228228
229229 func validatePriceAssetId (i,priceAssetId,artworkPrice) = {
230230 let t096119647 = isPayment(i)
231231 let payment = t096119647._1
232232 let amount = t096119647._2
233233 let assetId = if (!(isDefined(payment.assetId)))
234234 then throw("Wrong asset id")
235235 else if (if ((size(priceAssetId) > 0))
236236 then (toBase58String(value(payment.assetId)) == priceAssetId)
237237 else false)
238238 then payment.assetId
239239 else throw("Wrong asset id")
240240 if (if ((assetId == unit))
241241 then (priceAssetId != "")
242242 else false)
243243 then throw("Wrong asset id")
244244 else if ((artworkPrice != amount))
245245 then throw(((("Payment don't match " + toString(artworkPrice)) + " ") + toString(amount)))
246246 else $Tuple2(amount, assetId)
247247 }
248248
249249
250250 func acceptedAssetIds (assetId) = if ((assetId != toBase58String(USDNAssetId)))
251251 then throw("Only USDN accepted")
252252 else true
253253
254254
255255 func validateMinSell (assetId,price) = {
256256 let minSellSconex = if (unitTest)
257257 then 1
258258 else (currentCertificationPrice * 2)
259259 if (if (if ((assetId == toBase58String(USDNAssetId)))
260260 then (minSellSconex > price)
261261 else false)
262262 then (price != 0)
263263 else false)
264264 then throw(("Wrong minimum sell price " + toString(minSellSconex)))
265265 else true
266266 }
267267
268268
269269 func getBidAssetId (assetId) = if ((assetId == "WAVES"))
270270 then throw("Only USDN is accepted!")
271271 else fromBase58String(assetId)
272272
273273
274274 func getPriceAssetIdFromBid (bidDataKey) = {
275275 let bidData = getStringByKey((bidDataKey + "_OPEN"))
276276 if ((bidData == ""))
277277 then throw("Bid not found")
278278 else {
279279 let bidDataArr = split(bidData, "_")
280280 let bidAmount = parseIntValue(bidDataArr[1])
281281 let bidAssetId = getBidAssetId(bidDataArr[0])
282282 if ((0 >= bidAmount))
283283 then throw("Wrong amount")
284284 else $Tuple2(bidAmount, bidAssetId)
285285 }
286286 }
287287
288288
289289 func idCallerDate (i) = if (!(dappRunning))
290290 then throw(maintenanceMSG)
291291 else $Tuple3(toBase58String(i.transactionId), toBase58String(i.caller.bytes), lastBlock.timestamp)
292292
293293
294294 func isBidCheck (i,issuer,bidOwner,bidId) = if (if (if ((toBase58String(i.caller.bytes) == issuer))
295295 then (bidOwner != "")
296296 else false)
297297 then (bidId != "")
298298 else false)
299299 then true
300300 else false
301301
302302
303303 func getArtData (i,issuer,artId,isBid) = {
304304 let callerIsIssuer = (toBase58String(i.caller.bytes) == issuer)
305305 let totalNFT = getIntegerByKey("total_nft_issued")
306306 let artworkName = getStringByKey(keyName(issuer, artId))
307307 if ((artworkName == ""))
308308 then throw("Art doesn't exist")
309309 else {
310310 let isOnSale = getBooleanByKey(keyOnSale(issuer, artId))
311311 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
312312 let artworkPrice = valueOrElse(getIntegerByKey(keyPrice(issuer, artId)), (currentCertificationPrice * 2))
313313 let priceAssetId = if (callerIsIssuer)
314314 then toBase58String(USDNAssetId)
315315 else getStringByKey(keyAssetIdAccepted(issuer, artId))
316316 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
317317 if (if (if (!(isBid))
318318 then !(callerIsIssuer)
319319 else false)
320320 then if (if ((0 >= artworkPrice))
321321 then true
322322 else !(isOnSale))
323323 then true
324324 else (0 >= maxCanSell)
325325 else false)
326326 then throw("Art not for sale")
327327 else if (if (if (!(isBid))
328328 then callerIsIssuer
329329 else false)
330330 then (0 >= maxCanSell)
331331 else false)
332332 then throw("Max issuable not set")
333333 else $Tuple7(totalNFT, artworkName, amountSold, artworkPrice, priceAssetId, maxCanSell, isOnSale)
334334 }
335335 }
336336
337337
338338 func getBidData (i,caller,issuer,artId,bidOwner,bidId,priceAssetId,artworkPrice,isBid) = {
339339 let checkUser = validateUser(issuer)
340340 if (if (isBid)
341341 then (checkUser != "")
342342 else false)
343343 then throw(checkUser)
344344 else {
345345 let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + bidOwner) + "_") + bidId)
346346 let t01351913648 = if (isBid)
347347 then getPriceAssetIdFromBid(bidDataKey)
348348 else validatePriceAssetId(i, priceAssetId, artworkPrice)
349349 let amount = t01351913648._1
350350 let assetId = t01351913648._2
351351 $Tuple3(bidDataKey, amount, assetId)
352352 }
353353 }
354354
355355
356356 func getCommissionData (issuer,assetId,amount,amountSold,maxCanSell) = {
357357 let isWhitelisted = checkWhitelist(issuer)
358358 let cut = if ((isWhitelisted > height))
359359 then 0
360360 else if ((assetId == USDNAssetId))
361361 then USDNFirstSellCut
362362 else throw("Only USDN is accepted!")
363363 let amountForSconex = fraction(amount, cut, 1000)
364364 let amountForCreator = (amount - amountForSconex)
365365 if ((amountSold == maxCanSell))
366366 then throw("Art sold out")
367367 else {
368368 let newAmountSold = (amountSold + 1)
369369 $Tuple3(amountForSconex, amountForCreator, newAmountSold)
370370 }
371371 }
372372
373373
374374 func getIssueData (issuer,artId,artworkName,newAmountSold,maxCanSell,totalNFT,caller,bidOwner,bidId,i,isOnSale) = {
375375 let issueMeta = ((((((((("Creator: " + issuer) + ",ArtID: ") + artId) + ",Artwork name: ") + artworkName) + ",Issue: ") + toString(newAmountSold)) + "/") + toString(maxCanSell))
376376 let sellStatus = if (if ((newAmountSold == maxCanSell))
377377 then true
378378 else !(isOnSale))
379379 then false
380380 else true
381381 let receiveNFT = if ((bidOwner != ""))
382382 then addressFromStringValue(bidOwner)
383383 else i.caller
384384 $Tuple3(sellStatus, receiveNFT, issueMeta)
385385 }
386386
387387
388388 func calculateRarity (mintIndex) = if ((4 > mintIndex))
389389 then "SSR"
390390 else if ((11 > mintIndex))
391391 then "SR"
392392 else if ((101 > mintIndex))
393393 then "R"
394394 else "N"
395395
396396
397397 func getBidKeyVal (assetId,bidDataKey,date) = {
398398 let assetIdBid = if (!(isDefined(assetId)))
399399 then throw("Only USDN is accepted")
400400 else toBase58String(value(assetId))
401401 let bidData = getStringByKey((bidDataKey + "_OPEN"))
402402 let bidDelOld = DeleteEntry((bidDataKey + "_OPEN"))
403403 let bidUpdate = StringEntry((bidDataKey + "_CLOSED"), ((bidData + "_") + toString(date)))
404404 $Tuple3(assetIdBid, bidDelOld, bidUpdate)
405405 }
406406
407407
408408 func buyMint (i,artId,issuer,bidId,bidOwner,isBid) = {
409409 let callerData = idCallerDate(i)
410410 let id = callerData._1
411411 let caller = callerData._2
412412 let date = callerData._3
413413 let artData = getArtData(i, issuer, artId, isBid)
414414 let totalNFT = artData._1
415415 let artworkName = artData._2
416416 let amountSold = artData._3
417417 let artworkPrice = artData._4
418418 let priceAssetId = artData._5
419419 let maxCanSell = artData._6
420420 let isOnSale = artData._7
421421 let bidData = getBidData(i, caller, issuer, artId, bidOwner, bidId, priceAssetId, artworkPrice, isBid)
422422 let bidDataKey = bidData._1
423423 let amount = bidData._2
424424 let assetId = bidData._3
425425 let commisionData = getCommissionData(issuer, value(assetId), amount, amountSold, maxCanSell)
426426 let amountForSconex = commisionData._1
427427 let amountForCreator = commisionData._2
428428 let newAmountSold = commisionData._3
429429 let issuerData = getIssueData(issuer, artId, artworkName, newAmountSold, maxCanSell, totalNFT, caller, bidOwner, bidId, i, isOnSale)
430430 let sellStatus = issuerData._1
431431 let receiveNFT = issuerData._2
432432 let issueMeta = issuerData._3
433433 let idNFTInvoke = invoke(this, "mintNft", [totalNFT, issueMeta, toString(receiveNFT)], nil)
434434 if ((idNFTInvoke == idNFTInvoke))
435435 then {
436436 let idNFT = match idNFTInvoke {
437437 case r: String =>
438438 r
439439 case _ =>
440440 throw("Incorrect invoke result")
441441 }
442442 let bidKeyValue = getBidKeyVal(assetId, bidDataKey, date)
443443 let assetIdBid = bidKeyValue._1
444444 let bidDelOld = bidKeyValue._2
445445 let bidUpdate = bidKeyValue._3
446446 let soldKey = ((((((("art_sold_" + toString(newAmountSold)) + "_of_") + toString(maxCanSell)) + "_") + artId) + "_") + issuer)
447447 let rarity = calculateRarity(newAmountSold)
448448 let soldValue = if (!(isBid))
449449 then ((((((((((caller + "_") + toString(date)) + "_") + id) + "_") + toString(artworkPrice)) + "_") + priceAssetId) + "_") + idNFT)
450450 else ((((((((((toString(receiveNFT) + "_") + toString(date)) + "_") + id) + "_") + toString(amount)) + "_") + assetIdBid) + "_") + idNFT)
451451 let soldData = StringEntry(soldKey, soldValue)
452452 let buyRes = [IntegerEntry(keyIssued(issuer, artId), newAmountSold), StringEntry(("nft_" + idNFT), soldKey), StringEntry(("nft_rarity_" + idNFT), rarity), IntegerEntry("total_nft_issued", (totalNFT + 1)), BooleanEntry(keyOnSale(issuer, artId), sellStatus), ScriptTransfer(Address(fromBase58String(issuer)), amountForCreator, assetId), ScriptTransfer(Address(fromBase58String(feeReceiver)), amountForSconex, assetId), StringEntry(KeyNftIssuer(idNFT), issuer), StringEntry(KeyNftArtId(idNFT), artId)]
453453 let res = invoke(addressFromStringValue(certDapp), "createCert", [toString(receiveNFT), idNFT, issuer], nil)
454454 if ((res == res))
455455 then if (isBid)
456456 then (((buyRes :+ soldData) :+ bidUpdate) :+ bidDelOld)
457457 else soldData :: buyRes
458458 else throw("Strict value is not equal to itself.")
459459 }
460460 else throw("Strict value is not equal to itself.")
461461 }
462462
463463
464464 func setBidNonTraditional (i,artId,issuer) = {
465465 let t02770927747 = idCallerDate(i)
466466 let id = t02770927747._1
467467 let caller = t02770927747._2
468468 let date = t02770927747._3
469469 let t02775227788 = isPayment(i)
470470 let payment = t02775227788._1
471471 let amount = t02775227788._2
472472 let assetId = if (!(isDefined(payment.assetId)))
473473 then throw("Only USDN is accepted!")
474474 else toBase58String(value(payment.assetId))
475475 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
476476 let minArtworkPrice = valueOrElse(getIntegerByKey(keyPrice(issuer, artId)), (currentCertificationPrice * 2))
477477 if (!(acceptedAssetIds(assetId)))
478478 then throw("asset not accepted")
479479 else if ((minArtworkPrice > amount))
480480 then throw("Bid is below min price!")
481481 else {
482482 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
483483 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
484484 if ((0 >= maxCanSell))
485485 then throw("No max edition set for this artwork")
486486 else if ((amountSold >= maxCanSell))
487487 then throw("Sold out, you cannot bid")
488488 else [StringEntry((((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + id) + "_OPEN"), ((((assetId + "_") + toString(amount)) + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr + 1))]
489489 }
490490 }
491491
492492
493493 func setBidTraditional (i,artId,issuer) = {
494494 let endHeight = getIntegerByKey(keyEndHeight(issuer, artId))
495495 let highestBid = getAmountHighestBidByArtId(artId)
496496 if ((height > endHeight))
497497 then throw("This auction is finished already!")
498498 else {
499499 let callderData = idCallerDate(i)
500500 let id = callderData._1
501501 let caller = callderData._2
502502 let date = callderData._3
503503 let isPaymentVar = isPayment(i)
504504 let payment = isPaymentVar._1
505505 let amount = isPaymentVar._2
506506 if ((highestBid >= amount))
507507 then throw(("Please place a bid higher than: " + toString(highestBid)))
508508 else {
509509 let assetId = if (!(isDefined(payment.assetId)))
510510 then throw("Only USDN is accepted!")
511511 else toBase58String(value(payment.assetId))
512512 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
513513 let minArtworkPrice = valueOrElse(getIntegerByKey(keyPrice(issuer, artId)), (currentCertificationPrice * 2))
514514 if (!(acceptedAssetIds(assetId)))
515515 then throw("asset not accepted")
516516 else if ((minArtworkPrice > amount))
517517 then throw("Bid is below min price!")
518518 else {
519519 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
520520 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
521521 if ((0 >= maxCanSell))
522522 then throw("No max edition set for this artwork")
523523 else if ((amountSold >= maxCanSell))
524524 then throw("Sold out, you cannot bid")
525525 else [StringEntry((((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + id) + "_OPEN"), ((((assetId + "_") + toString(amount)) + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr + 1)), StringEntry(keyHighestBidBidId(artId), toBase58String(i.transactionId)), IntegerEntry(keyBidId(toBase58String(i.transactionId)), amount)]
526526 }
527527 }
528528 }
529529 }
530530
531531
532532 func acceptBidNonTraditional (i,artId,issuer,bidId,bidOwner) = {
533533 let caller = toBase58String(i.caller.bytes)
534534 if ((caller != issuer))
535535 then throw("You cannot do this action")
536536 else buyMint(i, artId, issuer, bidId, bidOwner, true)
537537 }
538538
539539
540540 func restartAuction (artId,issuer) = {
541541 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
542542 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
543543 let oldEndHeight = getIntegerByKey(keyEndHeight(issuer, artId))
544544 let duration = getIntegerByKey(keyDuration(issuer, artId))
545545 let endHeight = (duration + height)
546546 if ((height > oldEndHeight))
547547 then if ((amountSold == maxCanSell))
548548 then throw("Can't restart auction, max amount sold")
549549 else [IntegerEntry(keyEndHeight(issuer, artId), endHeight), DeleteEntry(keyHighestBidBidId(artId))]
550550 else throw("Previous auction isn't completed yet")
551551 }
552552
553553
554554 func acceptBidTraditional (i,artId,issuer,bidId,bidOwner) = {
555555 let endHeight = getIntegerByKey(keyEndHeight(issuer, artId))
556556 let highestBidId = getStringByKey(keyHighestBidBidId(artId))
557557 if ((height > endHeight))
558558 then if ((bidId == highestBidId))
559559 then {
560560 let buyMintData = buyMint(i, artId, issuer, bidId, bidOwner, true)
561561 let restartAuctionData = restartAuction(artId, issuer)
562562 (restartAuctionData ++ buyMintData)
563563 }
564564 else throw("This is not the winning bid!")
565565 else throw("This auction is not yet finished!")
566566 }
567567
568568
569569 func cancelBidImpl (i,artId,issuer,bidId) = {
570570 let t02894229094 = idCallerDate(i)
571571 let id = t02894229094._1
572572 let caller = t02894229094._2
573573 let date = t02894229094._3
574574 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
575575 let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + bidId)
576576 let bidData = getStringByKeyOrError((bidDataKey + "_OPEN"), "Bid not found")
577577 let bidDataArr = split(bidData, "_")
578578 let assetId = getBidAssetId(bidDataArr[0])
579579 let bidStatus = "CANCELED"
580580 [DeleteEntry((bidDataKey + "_OPEN")), StringEntry(((bidDataKey + "_") + bidStatus), ((bidData + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr - 1)), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
581581 }
582582
583583
584584 func cancelBidImplTraditional (i,artId,issuer,bidId) = {
585585 let t02894229094 = idCallerDate(i)
586586 let id = t02894229094._1
587587 let caller = t02894229094._2
588588 let date = t02894229094._3
589589 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
590590 let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + bidId)
591591 let bidData = getStringByKeyOrError((bidDataKey + "_OPEN"), "Bid not found")
592592 let bidDataArr = split(bidData, "_")
593593 let assetId = getBidAssetId(bidDataArr[0])
594594 let bidStatus = "CANCELED"
595595 let bidAmount = parseIntValue(bidDataArr[1])
596596 let highestBidId = getStringByKey(keyHighestBidBidId(artId))
597597 if ((bidId == highestBidId))
598598 then throw("You can't cancel the highest bid!")
599599 else [DeleteEntry((bidDataKey + "_OPEN")), StringEntry(((bidDataKey + "_") + bidStatus), ((bidData + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr - 1)), ScriptTransfer(Address(fromBase58String(caller)), bidAmount, assetId)]
600600 }
601601
602602
603603 @Callable(i)
604604 func mintNft (totalNFT,issueMeta,receiveNFT) = if ((i.caller == this))
605605 then {
606606 let receiveNFTAddy = Address(fromBase58String(receiveNFT))
607607 let issueNFT = Issue(("SCONEX_" + toString((totalNFT + 1))), issueMeta, 1, 0, false)
608608 let idNFT = calculateAssetId(issueNFT)
609609 $Tuple2([issueNFT, ScriptTransfer(receiveNFTAddy, 1, idNFT)], toBase58String(idNFT))
610610 }
611611 else throw("Only the dApp can mint NFT's")
612612
613613
614614
615615 @Callable(i)
616616 func addArtwork (sha256Hash,name,description,tags,type,cidDisplay,entitlement,preview) = {
617617 let t01774017781 = idCallerDate(i)
618618 let artId = t01774017781._1
619619 let caller = t01774017781._2
620620 let date = t01774017781._3
621621 if (containsElement(types, type))
622622 then {
623623 let validateArtwork = validateArtworkData(caller, cidDisplay, name, description, tags)
624624 if ((validateArtwork != ""))
625625 then throw("Something went wrong!")
626626 else {
627627 let t01817018212 = validatePayment(i)
628628 let amount = t01817018212._1
629629 let assetId = t01817018212._2
630630 if (!(isDefined(amount)))
631631 then throw("Something went wrong")
632632 else {
633633 let previewData = if (containsElement(Previewtypes, type))
634634 then [StringEntry(keyPreviewCid(caller, artId), preview)]
635635 else nil
636636 let entryExist = getStringByKey(keyTxidByHashOwner(sha256Hash, caller))
637637 if ((entryExist != ""))
638638 then throw("You already added it")
639639 else {
640640 let hashExist = getStringByKey(keyOwnerByHash(sha256Hash))
641641 if ((hashExist != ""))
642642 then throw("This hash is already registered")
643643 else (previewData ++ [StringEntry(keyOwnerByHash(sha256Hash), caller), StringEntry(keyTxidByHashOwner(sha256Hash, caller), artId), IntegerEntry(keyDate(caller, artId), date), StringEntry(keyName(caller, artId), name), StringEntry(keyDesc(caller, artId), description), StringEntry(keyDisplayCid(caller, artId), cidDisplay), StringEntry(keyType(caller, artId), type), StringEntry(keyTags(caller, artId), tags), IntegerEntry(keyMaxMint(caller, artId), 0), IntegerEntry(keyIssued(caller, artId), 0), BooleanEntry(keyOnSale(caller, artId), false), StringEntry(keyHashByTxidAddr(caller, artId), sha256Hash), StringEntry(keyEntitlement(caller, artId), entitlement), ScriptTransfer(Address(fromBase58String(feeReceiver)), amount, assetId)])
644644 }
645645 }
646646 }
647647 }
648648 else throw("Unknown type")
649649 }
650650
651651
652652
653653 @Callable(i)
654654 func sellArtwork (artId,price,maxMint,assetId,auctionType,duration,royalty) = {
655655 let t02571425747 = idCallerDate(i)
656656 let id = t02571425747._1
657657 let caller = t02571425747._2
658658 let artworkName = getStringByKey(keyName(caller, artId))
659659 if ((0 > royalty))
660660 then throw("Royalty percentage should be above 0")
661661 else if ((royalty > 85))
662662 then throw("Royalty percentage should be below 85")
663663 else if (!(containsElement([auctionType1, auctionType2, auctionType3], auctionType)))
664664 then throw("We don't know this auction type")
665665 else if ((artworkName == ""))
666666 then throw("This art doesn't match your account")
667667 else {
668668 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
669669 if (!(acceptedAssetIds(assetId)))
670670 then throw("Something went wrong!")
671671 else if (!(validateMinSell(assetId, price)))
672672 then throw("Something went wrong!")
673673 else {
674674 let checkUser = validateUser(caller)
675675 if ((checkUser != ""))
676676 then throw(checkUser)
677677 else {
678678 let amountSold = getIntegerByKey(keyIssued(caller, artId))
679679 let maxCanSell = getIntegerByKey(keyMaxMint(caller, artId))
680680 if ((maxMint > 10000))
681681 then throw("10000 editions max per artwork")
682682 else if (if ((amountSold != 0))
683683 then (amountSold == maxCanSell)
684684 else false)
685685 then throw("Max edition reached.")
686686 else if (if ((amountSold > 0))
687687 then (maxCanSell != maxMint)
688688 else false)
689689 then throw("Cannot change maximum issuable anymore")
690690 else if (if ((bidNbr > 0))
691691 then (maxCanSell != maxMint)
692692 else false)
693693 then throw("Cannot change maximum issuable with active orders")
694694 else {
695695 let sellStatus = if (if ((price > 0))
696696 then (maxMint > 0)
697697 else false)
698698 then true
699699 else false
700700 let endHeight = (duration + height)
701701 [BooleanEntry(keyOnSale(caller, artId), sellStatus), IntegerEntry(keyPrice(caller, artId), price), IntegerEntry(keyMaxMint(caller, artId), maxMint), IntegerEntry(keyDuration(caller, artId), duration), IntegerEntry(keyEndHeight(caller, artId), endHeight), StringEntry(keyAssetIdAccepted(caller, artId), assetId), StringEntry(keyAuctionType(caller, artId), auctionType), IntegerEntry(keyRoyalty(caller, artId), royalty)]
702702 }
703703 }
704704 }
705705 }
706706 }
707707
708708
709709
710710 @Callable(i)
711711 func buyArtwork (artId,issuer) = {
712712 let auctionType = getStringByKey(keyAuctionType(issuer, artId))
713713 if ((auctionType == auctionType3))
714714 then buyMint(i, artId, issuer, "", "", false)
715715 else throw("Direct buy only allowed when no auction type is set!")
716716 }
717717
718718
719719
720720 @Callable(i)
721721 func updateTags (artist,artId,tags) = {
722722 let caller = toString(addressFromPublicKey(i.callerPublicKey))
723723 if (containsElement(owners, caller))
724724 then if ((size(split(tags, ",")) > 5))
725725 then throw("5 tags max.")
726726 else {
727727 let tagsOld = getStringByKeyOrError(keyTags(artist, artId), "No tags created with this key, so can't update!")
728728 if ((tags == tagsOld))
729729 then throw("Tags are the same as old tags!")
730730 else [StringEntry(keyTags(artist, artId), tags)]
731731 }
732732 else throw("no")
733733 }
734734
735735
736736
737737 @Callable(i)
738738 func deleteEntry (entry) = {
739739 let caller = toString(addressFromPublicKey(i.callerPublicKey))
740740 if (containsElement(owners, caller))
741741 then [DeleteEntry(entry)]
742742 else throw("no")
743743 }
744744
745745
746746
747747 @Callable(i)
748748 func setBid (artId,issuer) = {
749749 let auctionType = getStringByKey(keyAuctionType(issuer, artId))
750750 if ((auctionType == auctionType1))
751751 then setBidNonTraditional(i, artId, issuer)
752752 else if ((auctionType == auctionType2))
753753 then setBidTraditional(i, artId, issuer)
754754 else throw((("Unknown auction type :" + auctionType) + ", please contact the admins"))
755755 }
756756
757757
758758
759759 @Callable(i)
760760 func acceptBid (artId,issuer,bidId,bidOwner) = {
761761 let auctionType = getStringByKey(keyAuctionType(issuer, artId))
762762 if ((auctionType == auctionType1))
763763 then acceptBidNonTraditional(i, artId, issuer, bidId, bidOwner)
764764 else if ((auctionType == auctionType2))
765765 then acceptBidTraditional(i, artId, issuer, bidId, bidOwner)
766766 else throw((("Unknown auction type :" + auctionType) + ", please contact the admins"))
767767 }
768768
769769
770770
771771 @Callable(i)
772772 func cancelBid (artId,issuer,bidId) = {
773773 let auctionType = getStringByKey(keyAuctionType(issuer, artId))
774774 if ((auctionType == auctionType1))
775775 then cancelBidImpl(i, artId, issuer, bidId)
776776 else cancelBidImplTraditional(i, artId, issuer, bidId)
777777 }
778778
779779

github/deemru/w8io/169f3d6 
73.30 ms