tx · 5g2H7FmPjurUc5TquBFWnjWd59BujWEeFAJNT9SC4KhX

3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY:  -0.01400000 Waves

2022.02.25 03:12 [1938426] smart account 3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY > SELF 0.00000000 Waves

{ "type": 13, "id": "5g2H7FmPjurUc5TquBFWnjWd59BujWEeFAJNT9SC4KhX", "fee": 1400000, "feeAssetId": null, "timestamp": 1645747957556, "version": 2, "chainId": 84, "sender": "3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY", "senderPublicKey": "J9DCtJJxJBWZdtDR12BA1U94Q3cZzMi4R6k5hYkAzmzC", "proofs": [ "64xhb4k3V5AmbT8E4mrNCUDKfnwrS6f4fcxJfAZiJdb6jXyvJ8RdJgRBNjTJgmJ76o9UimYi8XP9dA7BJHhZchQz" ], "script": "base64:AAIFAAAAAAAAAFQIAhIOCgwICAgICAgICAgICAgSDQoLCAgICAgICAgICAgSBgoECAgICBIECgIICBIHCgUIAQEIARIECgIICBIECgIICBIGCgQICAgIEgYKBAgICAgAAABJAAAAAAh1bml0VGVzdAcAAAAACW9yYWNsZUZlZQkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTjJzNVJ0YUhQQmVuQ3N4MkVDY29GUmJZSHgzbm9aaFhXMQAAAAAIc2lnbkRhcHAJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM05DMjhoU2l2cm1zVFVYYVlEMXg2TDM2Mko0WnBVbm9UZEIAAAAAC2ZlZVJlY2VpdmVyAgAAACMzTjFFNnRYZGRSb1ZhUmZROWRRM3ZnNUxhVzJmc2Q4SEt1YgAAAAAIdXNlckRhcHADBQAAAAh1bml0VGVzdAkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTXQ0UkdNRXlqU1dZQW9jVFBxZDU1d2RIUVFCM1BVMlVDbQkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTjh4WGFZakUyN0FhNzlkNWhIcmhIdTlIYUZvVEJtaERFagAAAAANd2hpdGVsaXN0RGFwcAkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTjZCYVYxZENCNHpnNDNnb05OSGFDdHZSMTNCY3lKNUdzcQAAAAALc2lnbkFzc2V0SWQBAAAAIOilarzKd0LycGEyNUpPRYO5uR7lmWcXw3Hq2QuhBK3rAAAAAAt1c2RuQXNzZXRJZAEAAAAgD/IcEqzkxDya7EYaqyWosOy6BytGzG2IcvC14pJJAbQAAAAADHdhdmVzQXNzZXRJZAEAAAAAAAAAAAVjaHJpcwIAAAAjM01zRzZqUE5DclZKVXRZQjdYSkJ4Uzd1dFdzWEFmNG45VnAAAAAABGpvZXACAAAAIzNNem00Vkx3c045dVp3YlRNelBqM1h1eFY2a0VmQVI4VUROAAAAAAdzaWduQ3V0AAAAAAAAAAAHAAAAAAt1c2RuV2F2ZUN1dAAAAAAAAAAACgAAAAAOZGVmYXVsdExpY2VuY2UCAAAAR2JhZnliZWlmdXlvNHBxdTU0aXNtcWd0YjZlNGg2a2t2Z3g3emc0dTN6aWJoMnI3eTZtYjY0aTdienphL2xpY2VuY2UucGRmAAAAABJkZWZhdWx0SGFzaExpY2VuY2UCAAAAQGE4Nzc1OGMzNTRlMzBhOWU3OGZiODRmYTNhMDAxMGE1MDkwYWIyMGRmMGJlMTFhZDQ1YjU3MjBjYzE4N2U2MzkAAAAAC2RhcHBSdW5uaW5nCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAACHVzZXJEYXBwAgAAABRjb25mX2RhcHBfaXNfcnVubmluZwYAAAAADm1haW50ZW5hbmNlTVNHCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAACHVzZXJEYXBwAgAAABRjb25mX21haW50ZW5hbmNlX21zZwIAAAAAAAAAAA11c2VyU3VzcGVuZGVkAgAAAAlTVVNQRU5ERUQAAAAAC3VzZXJSZW1vdmVkAgAAAAdSRU1PVkVEAAAAABB1c2VyVW5yZWdpc3RlcmVkAgAAAAxVTlJFR0lTVEVSRUQAAAAAC3VzZXJBbGxvd2VkAgAAAAdBTExPV0VEAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQIAAAAAAQAAABlnZXRJbnRlZ2VyQnlLZXlGcm9tT3JhY2xlAAAAAQAAAANrZXkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAlvcmFjbGVGZWUFAAAAA2tleQIAAAAfSW50ZWdlciB1bmRlZmluZSBvciAwIGluIG9yYWNsZQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AAAAAAAAAAAAAQAAAA5jaGVja1doaXRlbGlzdAAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAADXdoaXRlbGlzdERhcHAFAAAAA2tleQAAAAAAAAAAAAEAAAAPZ2V0Qm9vbGVhbkJ5S2V5AAAAAQAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQbAAAAAgUAAAAEdGhpcwUAAAADa2V5BwAAAAAZY3Vy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X2Fzc2V0QWNjZXB0ZWRfBQAAAAVhcnRJZAIAAAABXwUAAAAGY2FsbGVyAQAAAAdrZXlGbGFnAAAAAgAAAAZjYWxsZXIAAAAFYXJ0SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACWFydF9mbGFnXwUAAAAFYXJ0SWQCAAAAAV8FAAAABmNhbGxlcgEAAAASa2V5QXJ0aXN0QWdlbnRBZGRyAAAAAQAAAAphcnRpc3RBZGRyCQABLAAAAAICAAAADWFydGlzdF9hZ2VudF8FAAAACmFydGlzdEFkZHIBAAAAD2tleVByaW1hcnlTaGFyZQAAAAEAAAAKYXJ0aXN0QWRkcgkAASwAAAACAgAAABVhcnRpc3RfYWdlbnRfcHJpbWFyeV8FAAAACmFydGlzdEFkZHIBAAAAEWtleUhhc2hCeVR4aWRBZGRyAAAAAgAAAAZjYWxsZXIAAAAEdHhpZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAATZ2V0X2hhc2hieXR4aWRhZGRyXwUAAAAEdHhpZAIAAAABXwUAAAAGY2FsbGVyAQAAAA5rZXlPd25lckJ5SGFzaAAAAAEAAAAKc2hhMjU2SGFzaAkAASwAAAACAgAAABJnZXRfb3duZXJfYnlfaGFzaF8FAAAACnNoYTI1Nkhhc2gBAAAADWtleWlkQnlTaWduaWQAAAACAAAABmNhbGxlcgAAAAZzaWduSWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAEmdldF9hcnRpZGJ5c2lnbmlkXwUAAAAGc2lnbklkAgAAAAFfBQAAAAZjYWxsZXIBAAAAEmtleVR4aWRCeUhhc2hPd25lcgAAAAIAAAAKc2hhMjU2SGFzaAAAAAZjYWxsZXIJAAEsAAAAAgIAAAAXZ2V0X3R4aWRfYnlfaGFzaF9vd25lcl8JAAJYAAAAAQkAC1QAAAABCQABmwAAAAEJAAEsAAAAAgUAAAAKc2hhMjU2SGFzaAUAAAAGY2FsbGVyAQAAAA52YWxpZGF0ZUFsbENJRAAAAAMAAAAKY2lkRGlzcGxheQAAAAljaWRFeHBvcnQAAAAKY2lkTGljZW5jZQMJAQAAAAEhAAAAAQkBAAAAC3ZhbGlkYXRlQ0lEAAAAAQUAAAAKY2lkRGlzcGxheQkAAAIAAAABAgAAABFXcm9uZyBEaXNwbGF5IENJRAMJAQAAAAEhAAAAAQkBAAAAC3ZhbGlkYXRlQ0lEAAAAAQUAAAAJY2lkRXhwb3J0CQAAAgAAAAECAAAAEFdyb25nIEV4cG9ydCBDSUQDAwkBAAAAAiE9AAAAAgUAAAAKY2lkTGljZW5jZQIAAAAACQEAAAABIQAAAAEJAQAAAAt2YWxpZGF0ZUNJRAAAAAEFAAAACmNpZExpY2VuY2UHCQAAAgAAAAECAAAAEVdyb25nIExpY2VuY2UgQ0lEBgEAAAAPdmFsaWRhdGVBbGxIYXNoAAAAAgAAAAxzaGEyNTZFeHBvcnQAAAANc2hhMjU2TGljZW5jZQMJAQAAAAEhAAAAAQkBAAAADHZhbGlkYXRlSGFzaAAAAAEFAAAADHNoYTI1NkV4cG9ydAkAAAIAAAABAgAAABhFeHBvcnQgSGFzaCA2NCBjaGFyLiBtYXgDCQEAAAABIQAAAAEJAQAAAAx2YWxpZGF0ZUhhc2gAAAABBQAAAA1zaGEyNTZMaWNlbmNlCQAAAgAAAAECAAAAGUxpY2VuY2UgSGFzaCA2NCBjaGFyLiBtYXgGAQAAAA52YWxpZGF0ZVN0cmluZwAAAAIAAAADc3RyAAAAA21heAMJAAAAAAAAAgkAATEAAAABBQAAAANzdHIAAAAAAAAAAAAJAAACAAAAAQIAAAAYRmllbGQgY2Fubm90IGJlIGlzIGVtcHR5AwkAAGYAAAACCQABMQAAAAEFAAAAA3N0cgUAAAADbWF4CQAAAgAAAAEJAAEsAAAAAgUAAAADc3RyAgAAAAwgaXMgdG9vIGxvbmcGAQAAAAx2YWxpZGF0ZVVzZXIAAAABAAAABmNhbGxlcgQAAAAKdXNlclN0YXR1cwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAh1c2VyRGFwcAkBAAAADWtleVVzZXJTdGF0dXMAAAABBQAAAAZjYWxsZXIFAAAAEHVzZXJVbnJlZ2lzdGVyZWQDAwkAAAAAAAACBQAAAAp1c2VyU3RhdHVzBQAAABB1c2VyVW5yZWdpc3RlcmVkBgkAAAAAAAACBQAAAAp1c2VyU3RhdHVzBQAAAAt1c2VyQWxsb3dlZAIAAAAuUmVnaXN0ZXIgdGhpcyBhY2NvdW50IGZpcnN0IHdpdGggIkFjY291bnQiIHRhYgMJAAAAAAAAAgUAAAAKdXNlclN0YXR1cwUAAAANdXNlclN1c3BlbmRlZAIAAAARQWNjb3VudCBzdXNwZW5kZWQDCQAAAAAAAAIFAAAACnVzZXJTdGF0dXMFAAAAC3VzZXJSZW1vdmVkAgAAAA9BY2NvdW50IHJlbW92ZWQCAAAAAAEAAAAKc2V0TEljZW5jZQAAAAIAAAAKY2lkTGljZW5jZQAAAA1zaGEyNTZMaWNlbmNlBAAAAANjaWQDCQAAAAAAAAIJAAExAAAAAQUAAAAKY2lkTGljZW5jZQAAAAAAAAAAAAUAAAAOZGVmYXVsdExpY2VuY2UFAAAACmNpZExpY2VuY2UEAAAABGhhc2gDCQAAAAAAAAIJAAExAAAAAQUAAAANc2hhMjU2TGljZW5jZQAAAAAAAAAAAAUAAAASZGVmYXVsdEhhc2hMaWNlbmNlBQAAAA1zaGEyNTZMaWNlbmNlCQAFFAAAAAIFAAAAA2NpZAUAAAAEaGFzaAEAAAATdmFsaWRhdGVBcnR3b3JrRGF0YQAAAAkAAAAGY2FsbGVyAAAACmNpZERpc3BsYXkAAAAJY2lkRXhwb3J0AAAACmxpY2VuY2VDSUQAAAAMc2hhMjU2RXhwb3J0AAAAC2xpY2VuY2VIYXNoAAAABG5hbWUAAAALZGVzY3JpcHRpb24AAAAEdGFncwQAAAAJY2hlY2tVc2VyCQEAAAAMdmFsaWRhdGVVc2VyAAAAAQUAAAAGY2FsbGVyAwkBAAAAAiE9AAAAAgUAAAAJY2hlY2tVc2VyAgAAAAAJAAACAAAAAQUAAAAJY2hlY2tVc2VyAwkAAAAAAAACCQABMQAAAAEFAAAACmNpZERpc3BsYXkAAAAAAAAAAAAJAAACAAAAAQIAAAAbRGlzcGxheSBDSUQgY2Fubm90IGJlIGVtcHR5AwkBAAAAASEAAAABCQEAAAAOdmFsaWRhdGVBbGxDSUQAAAADBQAAAApjaWREaXNwbGF5BQAAAAljaWRFeHBvcnQFAAAACmxpY2VuY2VDSUQJAAACAAAAAQIAAAAQUHJvYmxlbSB3aXRoIENJRAMJAQAAAAEhAAAAAQkBAAAAD3ZhbGlkYXRlQWxsSGFzaAAAAAIFAAAADHNoYTI1NkV4cG9ydAUAAAALbGljZW5jZUhhc2gJAAACAAAAAQIAAAATUHJvYmxlbSB3aXRoIEhhc2hlcwMJAQAAAAEhAAAAAQkBAAAADnZhbGlkYXRlU3RyaW5nAAAAAgUAAAAEbmFtZQAAAAAAAAAAZAkAAAIAAAABAgAAABIxMDAgQ2hhci4gbWF4IG5hbWUDCQEAAAABIQAAAAEJAQAAAA52YWxpZGF0ZVN0cmluZwAAAAIFAAAAC2Rlc2NyaXB0aW9uAAAAAAAAAAPoCQAAAgAAAAECAAAAGjEwMDAgQ2hhci4gbWF4IGRlc2NyaXB0aW9uAwkAAGYAAAACCQABkAAAAAEJAAS1AAAAAgUAAAAEdGFncwIAAAABLAAAAAAAAAAABQkAAAIAAAABAgAAAAs1IHRhZ3MgbWF4LgIAAAAAAQAAAAlpc1BheW1lbnQAAAABAAAAAWkDCQAAAAAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAJAAACAAAAAQIAAAATTm8gcGF5bWVudCBhdHRhY2hlZAQAAAAHcGF5bWVudAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAGYW1vdW50CQEAAAAFdmFsdWUAAAABCAUAAAAHcGF5bWVudAAAAAZhbW91bnQJAAUUAAAAAgUAAAAHcGF5bWVudAUAAAAGYW1vdW50AQAAAA92YWxpZGF0ZVBheW1lbnQAAAABAAAAAWkEAAAACyR0MDk0MTk5NDU1CQEAAAAJaXNQYXltZW50AAAAAQUAAAABaQQAAAAHcGF5bWVudAgFAAAACyR0MDk0MTk5NDU1AAAAAl8xBAAAAAZhbW91bnQIBQAAAAskdDA5NDE5OTQ1NQAAAAJfMgQAAAAHYXNzZXRJZAMDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkAAAAAAAACCAUAAAAHcGF5bWVudAAAAAdhc3NldElkBQAAAAtzaWduQXNzZXRJZAcIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQJAAACAAAAAQIAAAArT25seSBTSUdOIHRva2VuIGFjY2VwdGVkIGFzIHRyYW5zYWN0aW9uIGZlZQMJAQAAAAIhPQAAAAIFAAAABmFtb3VudAUAAAAZY3VycmVudENlcnRpZmljYXRpb25QcmljZQkAAAIAAAABCQABLAAAAAICAAAAGVBheW1lbnQgYW1vdW50IHNob3VsZCBiZSAJAAGkAAAAAQUAAAAZY3VycmVudENlcnRpZmljYXRpb25QcmljZQkABRQAAAACBQAAAAZhbW91bnQFAAAAB2Fzc2V0SWQBAAAAC2lzQXJ0TWludGVkAAAAAgAAAAlhZGRyVG9Vc2UAAAAFYXJ0SWQEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwkBAAAACWtleUlzc3VlZAAAAAIFAAAACWFkZHJUb1VzZQUAAAAFYXJ0SWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYgUAAAAHJG1hdGNoMAMJAQAAAAIhPQAAAAIFAAAAAWIAAAAAAAAAAAAGBwcBAAAAFHZhbGlkYXRlUHJpY2VBc3NldElkAAAAAwAAAAFpAAAADHByaWNlQXNzZXRJZAAAAAxhcnR3b3JrUHJpY2UEAAAADSR0MDEwMDQ4MTAwODQJAQAAAAlpc1BheW1lbnQAAAABBQAAAAFpBAAAAAdwYXltZW50CAUAAAANJHQwMTAwNDgxMDA4NAAAAAJfMQQAAAAGYW1vdW50CAUAAAANJHQwMTAwNDgxMDA4NAAAAAJfMgQAAAAHYXNzZXRJZAMJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQFAAAABHVuaXQDAwkAAGYAAAACCQABMQAAAAEFAAAADHByaWNlQXNzZXRJZAAAAAAAAAAAAAkAAAAAAAACCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQFAAAADHByaWNlQXNzZXRJZAcIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQJAAACAAAAAQIAAAAOV3JvbmcgYXNzZXQgaWQDAwkAAAAAAAACBQAAAAdhc3NldElkBQAAAAR1bml0CQEAAAACIT0AAAACBQAAAAxwcmljZUFzc2V0SWQCAAAAAAcJAAACAAAAAQIAAAAOV3JvbmcgYXNzZXQgaWQDCQEAAAACIT0AAAACBQAAAAxhcnR3b3JrUHJpY2UFAAAABmFtb3VudAkAAAIAAAABAgAAABNQYXltZW50IGRvbid0IG1hdGNoCQAFFAAAAAIFAAAABmFtb3VudAUAAAAHYXNzZXRJZAEAAAAQYWNjZXB0ZWRBc3NldElkcwAAAAEAAAAHYXNzZXRJZAMDAwMJAQAAAAIhPQAAAAIFAAAAB2Fzc2V0SWQJAAJYAAAAAQUAAAALc2lnbkFzc2V0SWQJAQAAAAIhPQAAAAIFAAAAB2Fzc2V0SWQJAAJYAAAAAQUAAAAMd2F2ZXNBc3NldElkBwkBAAAAAiE9AAAAAgUAAAAHYXNzZXRJZAIAAAAFV0FWRVMHCQEAAAACIT0AAAACBQAAAAdhc3NldElkCQACWAAAAAEFAAAAC3VzZG5Bc3NldElkBwkAAAIAAAABAgAAACFPbmx5IFNJR04sIFVTRE4gb3IgV0FWRVMgYWNjZXB0ZWQGAQAAAA92YWxpZGF0ZU1pblNlbGwAAAACAAAAB2Fzc2V0SWQAAAAFcHJpY2UEAAAADG1pblNlbGxXYXZlcwMFAAAACHVuaXRUZXN0AAAAAAAAAAAKCQEAAAAZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZQAAAAECAAAADndhdmVzX21pbl9zZWxsBAAAAAttaW5TZWxsVXNkbgAAAAAAAA9CQAQAAAALbWluU2VsbFNpZ24DBQAAAAh1bml0VGVzdAAAAAAAAAAAAQkAAGgAAAACBQAAABljdXJyZW50Q2VydGlmaWNhdGlvblByaWNlAAAAAAAAAAACAwMDAwMJAAAAAAAAAgUAAAAHYXNzZXRJZAkAAlgAAAABBQAAAAt1c2RuQXNzZXRJZAkAAGYAAAACBQAAAAttaW5TZWxsVXNkbgUAAAAFcHJpY2UHCQEAAAACIT0AAAACBQAAAAVwcmljZQAAAAAAAAAAAAcGAwMJAAAAAAAAAgUAAAAHYXNzZXRJZAkAAlgAAAABBQAAAAtzaWduQXNzZXRJZAkAAGYAAAACBQAAAAttaW5TZWxsU2lnbgUAAAAFcHJpY2UHCQEAAAACIT0AAAACBQAAAAVwcmljZQAAAAAAAAAAAAcGAwMDCQAAAAAAAAIFAAAAB2Fzc2V0SWQJAAJYAAAAAQUAAAAMd2F2ZXNBc3NldElkBgkAAAAAAAACBQAAAAdhc3NldElkAgAAAAVXQVZFUwkAAGYAAAACBQAAAAxtaW5TZWxsV2F2ZXMFAAAABXByaWNlBwkBAAAAAiE9AAAAAgUAAAAFcHJpY2UAAAAAAAAAAAAHCQAAAgAAAAECAAAAGFdyb25nIG1pbmltdW0gc2VsbCBwcmljZQYBAAAADWdldEJpZEFzc2V0SWQAAAABAAAAB2Fzc2V0SWQDCQAAAAAAAAIFAAAAB2Fzc2V0SWQCAAAABVdBVkVTBQAAAAR1bml0CQACWQAAAAEFAAAAB2Fzc2V0SWQBAAAAFmdldFByaWNlQXNzZXRJZEZyb21CaWQAAAABAAAACmJpZERhdGFLZXkEAAAAB2JpZERhdGEJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAAEsAAAAAgUAAAAKYmlkRGF0YUtleQIAAAAFX09QRU4DCQAAAAAAAAIFAAAAB2JpZERhdGECAAAAAAkAAAIAAAABAgAAAA1CaWQgbm90IGZvdW5kBAAAAApiaWREYXRhQXJyCQAEtQAAAAIFAAAAB2JpZERhdGECAAAAAV8EAAAACWJpZEFtb3VudAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACmJpZERhdGFBcnIAAAAAAAAAAAEEAAAACmJpZEFzc2V0SWQJAQAAAA1nZXRCaWRBc3NldElkAAAAAQkAAZEAAAACBQAAAApiaWREYXRhQXJyAAAAAAAAAAAAAwkAAGcAAAACAAAAAAAAAAAABQAAAAliaWRBbW91bnQJAAACAAAAAQIAAAAMV3JvbmcgYW1vdW50CQAFFAAAAAIFAAAACWJpZEFtb3VudAUAAAAKYmlkQXNzZXRJZAEAAAAMaWRDYWxsZXJEYXRlAAAAAQAAAAFpAwkBAAAAASEAAAABBQAAAAtkYXBwUnVubmluZwkAAAIAAAABBQAAAA5tYWludGVuYW5jZU1TRwkABRUAAAADCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXABAAAAB2J1eU1pbnQAAAAFAAAAAWkAAAAFYXJ0SWQAAAAGaXNzdWVyAAAABWJpZElkAAAACGJpZE93bmVyBAAAAA0kdDAxMjMwOTEyMzY2CQEAAAAMaWRDYWxsZXJEYXRlAAAAAQUAAAABaQQAAAACaWQIBQAAAA0kdDAxMjMwOTEyMzY2AAAAAl8xBAAAAAZjYWxsZXIIBQAAAA0kdDAxMjMwOTEyMzY2AAAAAl8yBAAAAARkYXRlCAUAAAANJHQwMTIzMDkxMjM2NgAAAAJfMwQAAAAFaXNCaWQDAwMJAAAAAAAAAgkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBQAAAAZpc3N1ZXIJAQAAAAIhPQAAAAIFAAAACGJpZE93bmVyAgAAAAAHCQEAAAACIT0AAAACBQAAAAViaWRJZAIAAAAABwYHBAAAAAhibG9ja0VuZAkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAQAAAAprZXlFbmRTYWxlAAAAAgUAAAAGY2FsbGVyBQAAAAVhcnRJZAMDAwkBAAAAAiE9AAAAAgUAAAAIYmxvY2tFbmQAAAAAAAAAAAAJAABnAAAAAgUAAAAGaGVpZ2h0BQAAAAhibG9ja0VuZAcJAQAAAAEhAAAAAQUAAAAFaXNCaWQHCQAAAgAAAAECAAAAC1NhbGUgZW5kZWQuBAAAAA5jYWxsZXJJc0lzc3VlcgkAAAAAAAACCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMFAAAABmlzc3VlcgQAAAAIdG90YWxORlQJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABAgAAABB0b3RhbF9uZnRfaXNzdWVkBAAAAAZzaWduSUQJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAAlrZXlTaWduSUQAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAAthcnR3b3JrTmFtZQkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAB2tleU5hbWUAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkAwkAAAAAAAACBQAAAAthcnR3b3JrTmFtZQIAAAAACQAAAgAAAAECAAAAEUFydCBkb2Vzbid0IGV4aXN0BAAAAAhpc09uU2FsZQkBAAAAD2dldEJvb2xlYW5CeUtleQAAAAEJAQAAAAlrZXlPblNhbGUAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAAphbW91bnRTb2xkCQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQkBAAAACWtleUlzc3VlZAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAADGFydHdvcmtQcmljZQMFAAAADmNhbGxlcklzSXNzdWVyCQAAaAAAAAIFAAAAGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UAAAAAAAAAAAIJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAAIa2V5UHJpY2UAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAAxwcmljZUFzc2V0SWQDBQAAAA5jYWxsZXJJc0lzc3VlcgkAAlgAAAABBQAAAAtzaWduQXNzZXRJZAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAEmtleUFzc2V0SWRBY2NlcHRlZAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAACm1heENhblNlbGwJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAAKa2V5TWF4TWludAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQDAwMJAQAAAAEhAAAAAQUAAAAFaXNCaWQJAQAAAAEhAAAAAQUAAAAOY2FsbGVySXNJc3N1ZXIHAwMJAABnAAAAAgAAAAAAAAAAAAUAAAAMYXJ0d29ya1ByaWNlBgkBAAAAASEAAAABBQAAAAhpc09uU2FsZQYJAABnAAAAAgAAAAAAAAAAAAUAAAAKbWF4Q2FuU2VsbAcJAAACAAAAAQIAAAAQQXJ0IG5vdCBmb3Igc2FsZQMDAwkBAAAAASEAAAABBQAAAAVpc0JpZAUAAAAOY2FsbGVySXNJc3N1ZXIHCQAAZwAAAAIAAAAAAAAAAAAFAAAACm1heENhblNlbGwHCQAAAgAAAAECAAAAFE1heCBpc3N1YWJsZSBub3Qgc2V0BAAAAAljaGVja1VzZXIJAQAAAAx2YWxpZGF0ZVVzZXIAAAABBQAAAAZpc3N1ZXIDAwUAAAAFaXNCaWQJAQAAAAIhPQAAAAIFAAAACWNoZWNrVXNlcgIAAAAABwkAAAIAAAABBQAAAAljaGVja1VzZXIEAAAACmJpZERhdGFLZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAEYmlkXwUAAAAFYXJ0SWQCAAAAAV8FAAAABmlzc3VlcgIAAAABXwUAAAAIYmlkT3duZXICAAAAAV8FAAAABWJpZElkBAAAAA0kdDAxNDExNzE0Mjg0AwUAAAAFaXNCaWQJAQAAABZnZXRQcmljZUFzc2V0SWRGcm9tQmlkAAAAAQUAAAAKYmlkRGF0YUtleQkBAAAAFHZhbGlkYXRlUHJpY2VBc3NldElkAAAAAwUAAAABaQUAAAAMcHJpY2VBc3NldElkBQAAAAxhcnR3b3JrUHJpY2UEAAAABmFtb3VudAgFAAAADSR0MDE0MTE3MTQyODQAAAACXzEEAAAAB2Fzc2V0SWQIBQAAAA0kdDAxNDExNzE0Mjg0AAAAAl8yBAAAAAVhZ2VudAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAh1c2VyRGFwcAkBAAAAEmtleUFydGlzdEFnZW50QWRkcgAAAAEFAAAABmlzc3VlcgUAAAALZmVlUmVjZWl2ZXIEAAAACmFnZW50U2hhcmUJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAIdXNlckRhcHAJAQAAAA9rZXlQcmltYXJ5U2hhcmUAAAABBQAAAAZpc3N1ZXIAAAAAAAAAAAAEAAAADWlzV2hpdGVsaXN0ZWQJAQAAAA5jaGVja1doaXRlbGlzdAAAAAEFAAAABmlzc3VlcgQAAAADY3V0AwkAAGYAAAACBQAAAA1pc1doaXRlbGlzdGVkBQAAAAZoZWlnaHQAAAAAAAAAAAADCQAAAAAAAAIFAAAAB2Fzc2V0SWQFAAAAC3NpZ25Bc3NldElkBQAAAAdzaWduQ3V0BQAAAAt1c2RuV2F2ZUN1dAQAAAANYW1vdW50Rm9yU2lnbgkAAGsAAAADBQAAAAZhbW91bnQFAAAAA2N1dAAAAAAAAAAAZAQAAAAOYW1vdW50Rm9yQWdlbnQDAwMJAQAAAAIhPQAAAAIFAAAABWFnZW50BQAAAAtmZWVSZWNlaXZlcgkAAGYAAAACBQAAAAphZ2VudFNoYXJlAAAAAAAAAAAABwkAAGYAAAACBQAAAAZoZWlnaHQFAAAADWlzV2hpdGVsaXN0ZWQHCQAAawAAAAMFAAAABmFtb3VudAUAAAAKYWdlbnRTaGFyZQAAAAAAAAAAZAAAAAAAAAAAAAQAAAAQYW1vdW50Rm9yQ3JlYXRvcgkAAGUAAAACBQAAAAZhbW91bnQFAAAADWFtb3VudEZvclNpZ24DCQAAAAAAAAIFAAAACmFtb3VudFNvbGQFAAAACm1heENhblNlbGwJAAACAAAAAQIAAAAMQXJ0IHNvbGQgb3V0BAAAAA1uZXdBbW91bnRTb2xkCQAAZAAAAAIFAAAACmFtb3VudFNvbGQAAAAAAAAAAAEEAAAACWlzc3VlTWV0YQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACUNyZWF0b3I6IAUAAAAGaXNzdWVyAgAAAAosCiBBcnRJRDogBQAAAAVhcnRJZAIAAAALLAogU2lnbklEOiAFAAAABnNpZ25JRAIAAAARLAogQXJ0d29yayBuYW1lOiAFAAAAC2FydHdvcmtOYW1lAgAAAAosCiBJc3N1ZTogCQABpAAAAAEFAAAADW5ld0Ftb3VudFNvbGQCAAAAAS8JAAGkAAAAAQUAAAAKbWF4Q2FuU2VsbAQAAAAIaXNzdWVORlQJAARCAAAABQkAASwAAAACAgAAAANTQV8JAAGkAAAAAQkAAGQAAAACBQAAAAh0b3RhbE5GVAAAAAAAAAAAAQUAAAAJaXNzdWVNZXRhAAAAAAAAAAABAAAAAAAAAAAABwQAAAAFaWRORlQJAAQ4AAAAAQUAAAAIaXNzdWVORlQEAAAACnNlbGxTdGF0dXMDAwkAAAAAAAACBQAAAA1uZXdBbW91bnRTb2xkBQAAAAptYXhDYW5TZWxsBgkBAAAAASEAAAABBQAAAAhpc09uU2FsZQcGBAAAAApyZWNlaXZlTkZUAwMDCQAAAAAAAAIFAAAABmNhbGxlcgUAAAAGaXNzdWVyCQEAAAACIT0AAAACBQAAAAhiaWRPd25lcgIAAAAABwkBAAAAAiE9AAAAAgUAAAAFYmlkSWQCAAAAAAcJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAACGJpZE93bmVyCAUAAAABaQAAAAZjYWxsZXIEAAAACmFzc2V0SWRCaWQDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABBQAAAAdhc3NldElkAgAAAAVXQVZFUwkAAlgAAAABCQEAAAAFdmFsdWUAAAABBQAAAAdhc3NldElkBAAAAAdiaWREYXRhCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQABLAAAAAIFAAAACmJpZERhdGFLZXkCAAAABV9PUEVOBAAAAAliaWREZWxPbGQJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgUAAAAKYmlkRGF0YUtleQIAAAAFX09QRU4EAAAACWJpZFVwZGF0ZQkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACBQAAAApiaWREYXRhS2V5AgAAAAdfQ0xPU0VECQABLAAAAAIJAAEsAAAAAgUAAAAHYmlkRGF0YQIAAAABXwkAAaQAAAABBQAAAARkYXRlBAAAAAdzb2xkS2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACWFydF9zb2xkXwkAAaQAAAABBQAAAA1uZXdBbW91bnRTb2xkAgAAAARfb2ZfCQABpAAAAAEFAAAACm1heENhblNlbGwCAAAAAV8FAAAABWFydElkAgAAAAFfBQAAAAZpc3N1ZXIEAAAACXNvbGRWYWx1ZQMJAQAAAAEhAAAAAQUAAAAFaXNCaWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAGY2FsbGVyAgAAAAFfCQABpAAAAAEFAAAABGRhdGUCAAAAAV8FAAAAAmlkAgAAAAFfCQABpAAAAAEFAAAADGFydHdvcmtQcmljZQIAAAABXwUAAAAMcHJpY2VBc3NldElkAgAAAAFfCQACWAAAAAEFAAAABWlkTkZUCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAQlAAAAAQUAAAAKcmVjZWl2ZU5GVAIAAAABXwkAAaQAAAABBQAAAARkYXRlAgAAAAFfBQAAAAJpZAIAAAABXwkAAaQAAAABBQAAAAZhbW91bnQCAAAAAV8FAAAACmFzc2V0SWRCaWQCAAAAAV8JAAJYAAAAAQUAAAAFaWRORlQEAAAACHNvbGREYXRhCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAdzb2xkS2V5BQAAAAlzb2xkVmFsdWUEAAAAC2NvbW1pc3Npb25zAwkBAAAAAiE9AAAAAgUAAAAOYW1vdW50Rm9yQWdlbnQAAAAAAAAAAAAJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAAC2ZlZVJlY2VpdmVyCQAAZQAAAAIFAAAADWFtb3VudEZvclNpZ24FAAAADmFtb3VudEZvckFnZW50BQAAAAdhc3NldElkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABBQAAAAVhZ2VudAUAAAAOYW1vdW50Rm9yQWdlbnQFAAAAB2Fzc2V0SWQFAAAAA25pbAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAALZmVlUmVjZWl2ZXIFAAAADWFtb3VudEZvclNpZ24FAAAAB2Fzc2V0SWQFAAAAA25pbAQAAAAGYnV5UmVzCQAETgAAAAIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAlrZXlJc3N1ZWQAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBQAAAA1uZXdBbW91bnRTb2xkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgIAAAAEbmZ0XwkAAlgAAAABBQAAAAVpZE5GVAUAAAAHc29sZEtleQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAQdG90YWxfbmZ0X2lzc3VlZAkAAGQAAAACBQAAAAh0b3RhbE5GVAAAAAAAAAAAAQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAACmtleUVuZFNhbGUAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkAAAAAAAAAAAACQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACCQEAAAAJa2V5T25TYWxlAAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAUAAAAKc2VsbFN0YXR1cwkABEwAAAACBQAAAAhpc3N1ZU5GVAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAAGaXNzdWVyBQAAABBhbW91bnRGb3JDcmVhdG9yBQAAAAdhc3NldElkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAACnJlY2VpdmVORlQAAAAAAAAAAAEFAAAABWlkTkZUBQAAAANuaWwFAAAAC2NvbW1pc3Npb25zAwUAAAAFaXNCaWQJAARMAAAAAgUAAAAIc29sZERhdGEJAARMAAAAAgUAAAAJYmlkVXBkYXRlCQAETAAAAAIFAAAACWJpZERlbE9sZAUAAAAGYnV5UmVzCQAETAAAAAIFAAAACHNvbGREYXRhBQAAAAZidXlSZXMAAAAJAAAAAWkBAAAACmFkZEFydHdvcmsAAAAMAAAACnNoYTI1Nkhhc2gAAAAGc2lnbklEAAAABG5hbWUAAAALZGVzY3JpcHRpb24AAAAEdGFncwAAAAR0eXBlAAAACmNpZERpc3BsYXkAAAAMc2hhMjU2RXhwb3J0AAAACWNpZEV4cG9ydAAAAA1zaGEyNTZMaWNlbmNlAAAACmNpZExpY2VuY2UAAAAHY3Jhd2xlcgQAAAANJHQwMTc2ODYxNzcyNwkBAAAADGlkQ2FsbGVyRGF0ZQAAAAEFAAAAAWkEAAAABWFydElkCAUAAAANJHQwMTc2ODYxNzcyNwAAAAJfMQQAAAAGY2FsbGVyCAUAAAANJHQwMTc2ODYxNzcyNwAAAAJfMgQAAAAEZGF0ZQgFAAAADSR0MDE3Njg2MTc3MjcAAAACXzMDCQEAAAABIQAAAAEJAQAAAAx2YWxpZGF0ZUhhc2gAAAABBQAAAApzaGEyNTZIYXNoCQAAAgAAAAECAAAAJEhhc2ggc2hvdWxkIGJlIDY0IGNoYXJhY3RlcnMgbWF4aW11bQQAAAANJHQwMTc4MjgxNzg5NwkBAAAACnNldExJY2VuY2UAAAACBQAAAApjaWRMaWNlbmNlBQAAAA1zaGEyNTZMaWNlbmNlBAAAAApsaWNlbmNlQ0lECAUAAAANJHQwMTc4MjgxNzg5NwAAAAJfMQQAAAALbGljZW5jZUhhc2gIBQAAAA0kdDAxNzgyODE3ODk3AAAAAl8yBAAAAA92YWxpZGF0ZUFydHdvcmsJAQAAABN2YWxpZGF0ZUFydHdvcmtEYXRhAAAACQUAAAAGY2FsbGVyBQAAAApjaWREaXNwbGF5BQAAAAljaWRFeHBvcnQFAAAACmxpY2VuY2VDSUQFAAAADHNoYTI1NkV4cG9ydAUAAAALbGljZW5jZUhhc2gFAAAABG5hbWUFAAAAC2Rlc2NyaXB0aW9uBQAAAAR0YWdzAwkBAAAAAiE9AAAAAgUAAAAPdmFsaWRhdGVBcnR3b3JrAgAAAAAJAAACAAAAAQIAAAAVU29tZXRoaW5nIHdlbnQgd3JvbmchBAAAAA0kdDAxODExNjE4MTU4CQEAAAAPdmFsaWRhdGVQYXltZW50AAAAAQUAAAABaQQAAAAGYW1vdW50CAUAAAANJHQwMTgxMTYxODE1OAAAAAJfMQQAAAAHYXNzZXRJZAgFAAAADSR0MDE4MTE2MTgxNTgAAAACXzIDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABBQAAAAZhbW91bnQJAAACAAAAAQIAAAAUU29tZXRoaW5nIHdlbnQgd3JvbmcEAAAACmVudHJ5RXhpc3QJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABJrZXlUeGlkQnlIYXNoT3duZXIAAAACBQAAAApzaGEyNTZIYXNoBQAAAAZjYWxsZXIDCQEAAAACIT0AAAACBQAAAAplbnRyeUV4aXN0AgAAAAAJAAACAAAAAQIAAAAUWW91IGFscmVhZHkgYWRkZWQgaXQEAAAACWhhc2hFeGlzdAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAADmtleU93bmVyQnlIYXNoAAAAAQUAAAAKc2hhMjU2SGFzaAMJAQAAAAIhPQAAAAIFAAAACWhhc2hFeGlzdAIAAAAACQAAAgAAAAECAAAAF0hhc2ggYWxyZWFkeSByZWdpc3RlcmVkBAAAAA9pc1NpZ25DZXJ0aWZpZWQJAQAAABRjaGVja1NpZ25DZXJ0aWZpY2F0ZQAAAAMFAAAABnNpZ25JRAUAAAAGY2FsbGVyBQAAAApzaGEyNTZIYXNoAwkBAAAAASEAAAABBQAAAA9pc1NpZ25DZXJ0aWZpZWQJAAACAAAAAQIAAAAsU2lnbiBDZXJ0aWZpY2F0ZSBub3QgZm91bmQg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aWRFeHBvcnQAAAANc2hhMjU2TGljZW5jZQAAAApjaWRMaWNlbmNlAAAAB2NyYXdsZXIDCQEAAAABIQAAAAEFAAAAC2RhcHBSdW5uaW5nCQAAAgAAAAEFAAAADm1haW50ZW5hbmNlTVNHBAAAAAZjYWxsZXIJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAANJHQwMjA4OTAyMDk1OQkBAAAACnNldExJY2VuY2UAAAACBQAAAApjaWRMaWNlbmNlBQAAAA1zaGEyNTZMaWNlbmNlBAAAAApsaWNlbmNlQ0lECAUAAAANJHQwMjA4OTAyMDk1OQAAAAJfMQQAAAALbGljZW5jZUhhc2gIBQAAAA0kdDAyMDg5MDIwOTU5AAAAAl8yBAAAAA92YWxpZGF0ZUFydHdvcmsJAQAAABN2YWxpZGF0ZUFydHdvcmtEYXRhAAAACQUAAAAGY2FsbGVyBQAAAApjaWREaXNwbGF5BQAAAAljaWRFeHBvcnQFAAAACmxpY2VuY2VDSUQFAAAADHNoYTI1NkV4cG9ydAUAAAALbGljZW5jZUhhc2gFAAAABG5hbWUFAAAAC2Rlc2NyaXB0aW9uBQAAAAR0YWdzAwkBAAAAAiE9AAAAAgUAAAAPdmFsaWRhdGVBcnR3b3JrAgAAAAAJAAACAAAAAQIAAAAVU29tZXRoaW5nIHdlbnQgd3JvbmchBAAAAAplbnRyeUV4aXN0CQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAHa2V5TmFtZQAAAAIFAAAABmNhbGxlcgUAAAAEdHhpZAMJAAAAAAAAAgUAAAAKZW50cnlFeGlzdAIAAAAACQAAAgAAAAECAAAAD0VudHJ5IG5vdCBmb3VuZAQAAAAEZmxhZwkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAB2tleUZsYWcAAAACBQAAAAZjYWxsZXIFAAAABHR4aWQDCQAAAAAAAAIFAAAABGZsYWcCAAAAB0lMTEVHQUwJAAACAAAAAQIAAAAdQ2Fubm90IHVwZGF0ZSBJTExFR0FMIGFydHdvcmsDCQEAAAABIQAAAAEJAQAAAAtpc0FydE1pbnRlZAAAAAIFAAAABmNhbGxlcgUAAAAEdHhpZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkA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", "height": 1938426, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: iDubvLbgqhfgmx7U4UT3aFLevyhAukJuiAM5qDkGUai Next: BJY64MKbSrh6xDgHLVrV7exPhHmPioCGhkzvHRJZidNU Diff:
OldNewDifferences
432432 then signCut
433433 else usdnWaveCut
434434 let amountForSign = fraction(amount, cut, 100)
435- let amountForAgent = if (if ((agent != feeReceiver))
435+ let amountForAgent = if (if (if ((agent != feeReceiver))
436436 then (agentShare > 0)
437+ else false)
438+ then (height > isWhitelisted)
437439 else false)
438440 then fraction(amount, agentShare, 100)
439441 else 0
489491
490492 @Callable(i)
491493 func addArtwork (sha256Hash,signID,name,description,tags,type,cidDisplay,sha256Export,cidExport,sha256Licence,cidLicence,crawler) = {
492- let $t01766017701 = idCallerDate(i)
493- let artId = $t01766017701._1
494- let caller = $t01766017701._2
495- let date = $t01766017701._3
494+ let $t01768617727 = idCallerDate(i)
495+ let artId = $t01768617727._1
496+ let caller = $t01768617727._2
497+ let date = $t01768617727._3
496498 if (!(validateHash(sha256Hash)))
497499 then throw("Hash should be 64 characters maximum")
498500 else {
499- let $t01780217871 = setLIcence(cidLicence, sha256Licence)
500- let licenceCID = $t01780217871._1
501- let licenceHash = $t01780217871._2
501+ let $t01782817897 = setLIcence(cidLicence, sha256Licence)
502+ let licenceCID = $t01782817897._1
503+ let licenceHash = $t01782817897._2
502504 let validateArtwork = validateArtworkData(caller, cidDisplay, cidExport, licenceCID, sha256Export, licenceHash, name, description, tags)
503505 if ((validateArtwork != ""))
504506 then throw("Something went wrong!")
505507 else {
506- let $t01809018132 = validatePayment(i)
507- let amount = $t01809018132._1
508- let assetId = $t01809018132._2
508+ let $t01811618158 = validatePayment(i)
509+ let amount = $t01811618158._1
510+ let assetId = $t01811618158._2
509511 if (!(isDefined(amount)))
510512 then throw("Something went wrong")
511513 else {
535537 then throw(maintenanceMSG)
536538 else {
537539 let caller = toBase58String(i.caller.bytes)
538- let $t02086420933 = setLIcence(cidLicence, sha256Licence)
539- let licenceCID = $t02086420933._1
540- let licenceHash = $t02086420933._2
540+ let $t02089020959 = setLIcence(cidLicence, sha256Licence)
541+ let licenceCID = $t02089020959._1
542+ let licenceHash = $t02089020959._2
541543 let validateArtwork = validateArtworkData(caller, cidDisplay, cidExport, licenceCID, sha256Export, licenceHash, name, description, tags)
542544 if ((validateArtwork != ""))
543545 then throw("Something went wrong!")
560562
561563 @Callable(i)
562564 func flagArtwork (artId,addr,flag,note) = {
563- let $t02235822391 = idCallerDate(i)
564- let id = $t02235822391._1
565- let caller = $t02235822391._2
565+ let $t02238422417 = idCallerDate(i)
566+ let id = $t02238422417._1
567+ let caller = $t02238422417._2
566568 if (containsElement([chris, toString(this)], caller))
567569 then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], flag))
568570 then [StringEntry(keyFlag(addr, artId), flag), StringEntry(keyNote(addr, artId), note)]
574576
575577 @Callable(i)
576578 func deleteArtwork (artId,addr) = {
577- let $t02282722860 = idCallerDate(i)
578- let id = $t02282722860._1
579- let caller = $t02282722860._2
579+ let $t02285322886 = idCallerDate(i)
580+ let id = $t02285322886._1
581+ let caller = $t02285322886._2
580582 let addrToUse = if (containsElement([chris, joep, toString(this)], caller))
581583 then addr
582584 else caller
609611
610612 @Callable(i)
611613 func sellArtwork (artId,price,maxMint,assetId,blockEnd) = {
612- let $t02563325666 = idCallerDate(i)
613- let id = $t02563325666._1
614- let caller = $t02563325666._2
614+ let $t02565925692 = idCallerDate(i)
615+ let id = $t02565925692._1
616+ let caller = $t02565925692._2
615617 let artworkName = getStringByKey(keyName(caller, artId))
616618 if ((artworkName == ""))
617619 then throw("This art doesn't match your account")
682684
683685 @Callable(i)
684686 func setBid (artId,issuer) = {
685- let $t02792327961 = idCallerDate(i)
686- let id = $t02792327961._1
687- let caller = $t02792327961._2
688- let date = $t02792327961._3
689- let $t02796628002 = isPayment(i)
690- let payment = $t02796628002._1
691- let amount = $t02796628002._2
687+ let $t02794927987 = idCallerDate(i)
688+ let id = $t02794927987._1
689+ let caller = $t02794927987._2
690+ let date = $t02794927987._3
691+ let $t02799228028 = isPayment(i)
692+ let payment = $t02799228028._1
693+ let amount = $t02799228028._2
692694 let assetId = if (!(isDefined(payment.assetId)))
693695 then "WAVES"
694696 else toBase58String(value(payment.assetId))
729731
730732 @Callable(i)
731733 func cancelBid (artId,issuer,bidId,bidOwner) = {
732- let $t02942929488 = idCallerDate(i)
733- let id = $t02942929488._1
734- let caller = $t02942929488._2
735- let date = $t02942929488._3
734+ let $t02945529514 = idCallerDate(i)
735+ let id = $t02945529514._1
736+ let caller = $t02945529514._2
737+ let date = $t02945529514._3
736738 if (if ((caller != bidOwner))
737739 then (caller != issuer)
738740 else false)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let unitTest = false
55
66 let oracleFee = value(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
77
88 let signDapp = value(addressFromString("3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB"))
99
1010 let feeReceiver = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
1111
1212 let userDapp = if (unitTest)
1313 then value(addressFromString("3Mt4RGMEyjSWYAocTPqd55wdHQQB3PU2UCm"))
1414 else value(addressFromString("3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj"))
1515
1616 let whitelistDapp = value(addressFromString("3N6BaV1dCB4zg43goNNHaCtvR13BcyJ5Gsq"))
1717
1818 let signAssetId = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
1919
2020 let usdnAssetId = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT'
2121
2222 let wavesAssetId = base58''
2323
2424 let chris = "3MsG6jPNCrVJUtYB7XJBxS7utWsXAf4n9Vp"
2525
2626 let joep = "3Mzm4VLwsN9uZwbTMzPj3XuxV6kEfAR8UDN"
2727
2828 let signCut = 7
2929
3030 let usdnWaveCut = 10
3131
3232 let defaultLicence = "bafybeifuyo4pqu54ismqgtb6e4h6kkvgx7zg4u3zibh2r7y6mb64i7bzza/licence.pdf"
3333
3434 let defaultHashLicence = "a87758c354e30a9e78fb84fa3a0010a5090ab20df0be11ad45b5720cc187e639"
3535
3636 let dappRunning = valueOrElse(getBoolean(userDapp, "conf_dapp_is_running"), true)
3737
3838 let maintenanceMSG = valueOrElse(getString(userDapp, "conf_maintenance_msg"), "")
3939
4040 let userSuspended = "SUSPENDED"
4141
4242 let userRemoved = "REMOVED"
4343
4444 let userUnregistered = "UNREGISTERED"
4545
4646 let userAllowed = "ALLOWED"
4747
4848 func getStringByKey (key) = valueOrElse(getString(this, key), "")
4949
5050
5151 func getIntegerByKeyFromOracle (key) = valueOrErrorMessage(getInteger(oracleFee, key), "Integer undefine or 0 in oracle")
5252
5353
5454 func getIntegerByKey (key) = valueOrElse(getInteger(this, key), 0)
5555
5656
5757 func checkWhitelist (key) = valueOrElse(getInteger(whitelistDapp, key), 0)
5858
5959
6060 func getBooleanByKey (key) = valueOrElse(getBoolean(this, key), false)
6161
6262
6363 let currentCertificationPrice = getIntegerByKeyFromOracle(("certification_fee_" + toBase58String(signAssetId)))
6464
6565 func checkSignCertificate (signID,Owner,sha256Hash) = match getString(signDapp, ((("data_fc_" + signID) + "_") + Owner)) {
6666 case a: String =>
6767 if (contains(a, sha256Hash))
6868 then true
6969 else false
7070 case _ =>
7171 false
7272 }
7373
7474
7575 func validateCID (cid) = if (contains(cid, "/"))
7676 then if (if ((76 > size(cid)))
7777 then (size(split(cid, "/")[0]) == 59)
7878 else false)
7979 then (16 > size(split(cid, "/")[1]))
8080 else false
8181 else false
8282
8383
8484 func validateHash (hash) = (size(hash) == 64)
8585
8686
8787 func keyUserStatus (caller) = ("user_status_" + caller)
8888
8989
9090 func keyDate (caller,artId) = ((("art_date_" + artId) + "_") + caller)
9191
9292
9393 func keyName (caller,artId) = ((("art_name_" + artId) + "_") + caller)
9494
9595
9696 func keyDesc (caller,artId) = ((("art_desc_" + artId) + "_") + caller)
9797
9898
9999 func keyDisplayCid (caller,artId) = ((("art_display_cid_" + artId) + "_") + caller)
100100
101101
102102 func keyExportHash (caller,artId) = ((("art_export_hash_" + artId) + "_") + caller)
103103
104104
105105 func keyExportCid (caller,artId) = ((("art_export_cid_" + artId) + "_") + caller)
106106
107107
108108 func keyMaxMint (caller,artId) = ((("art_maxmint_" + artId) + "_") + caller)
109109
110110
111111 func keySignID (caller,artId) = ((("art_signid_" + artId) + "_") + caller)
112112
113113
114114 func keyIssued (caller,artId) = ((("art_issued_" + artId) + "_") + caller)
115115
116116
117117 func keyOnSale (caller,artId) = ((("art_onsale_" + artId) + "_") + caller)
118118
119119
120120 func keyLicenceHash (caller,artId) = ((("art_licence_hash_" + artId) + "_") + caller)
121121
122122
123123 func keyLicenceCid (caller,artId) = ((("art_licence_cid_" + artId) + "_") + caller)
124124
125125
126126 func keyTags (caller,artId) = ((("art_tags_" + artId) + "_") + caller)
127127
128128
129129 func keyType (caller,artId) = ((("art_type_" + artId) + "_") + caller)
130130
131131
132132 func keyNote (caller,artId) = ((("art_note_" + artId) + "_") + caller)
133133
134134
135135 func keyCrawler (caller,artId) = ((("art_crawler_cid_" + artId) + "_") + caller)
136136
137137
138138 func keyPrice (caller,artId) = ((("art_price_" + artId) + "_") + caller)
139139
140140
141141 func keyEndSale (caller,artId) = ((("art_endsale_" + artId) + "_") + caller)
142142
143143
144144 func keyAssetIdAccepted (caller,artId) = ((("art_assetAccepted_" + artId) + "_") + caller)
145145
146146
147147 func keyFlag (caller,artId) = ((("art_flag_" + artId) + "_") + caller)
148148
149149
150150 func keyArtistAgentAddr (artistAddr) = ("artist_agent_" + artistAddr)
151151
152152
153153 func keyPrimaryShare (artistAddr) = ("artist_agent_primary_" + artistAddr)
154154
155155
156156 func keyHashByTxidAddr (caller,txid) = ((("get_hashbytxidaddr_" + txid) + "_") + caller)
157157
158158
159159 func keyOwnerByHash (sha256Hash) = ("get_owner_by_hash_" + sha256Hash)
160160
161161
162162 func keyidBySignid (caller,signId) = ((("get_artidbysignid_" + signId) + "_") + caller)
163163
164164
165165 func keyTxidByHashOwner (sha256Hash,caller) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((sha256Hash + caller)))))
166166
167167
168168 func validateAllCID (cidDisplay,cidExport,cidLicence) = if (!(validateCID(cidDisplay)))
169169 then throw("Wrong Display CID")
170170 else if (!(validateCID(cidExport)))
171171 then throw("Wrong Export CID")
172172 else if (if ((cidLicence != ""))
173173 then !(validateCID(cidLicence))
174174 else false)
175175 then throw("Wrong Licence CID")
176176 else true
177177
178178
179179 func validateAllHash (sha256Export,sha256Licence) = if (!(validateHash(sha256Export)))
180180 then throw("Export Hash 64 char. max")
181181 else if (!(validateHash(sha256Licence)))
182182 then throw("Licence Hash 64 char. max")
183183 else true
184184
185185
186186 func validateString (str,max) = if ((size(str) == 0))
187187 then throw("Field cannot be is empty")
188188 else if ((size(str) > max))
189189 then throw((str + " is too long"))
190190 else true
191191
192192
193193 func validateUser (caller) = {
194194 let userStatus = valueOrElse(getString(userDapp, keyUserStatus(caller)), userUnregistered)
195195 if (if ((userStatus == userUnregistered))
196196 then true
197197 else (userStatus == userAllowed))
198198 then "Register this account first with \"Account\" tab"
199199 else if ((userStatus == userSuspended))
200200 then "Account suspended"
201201 else if ((userStatus == userRemoved))
202202 then "Account removed"
203203 else ""
204204 }
205205
206206
207207 func setLIcence (cidLicence,sha256Licence) = {
208208 let cid = if ((size(cidLicence) == 0))
209209 then defaultLicence
210210 else cidLicence
211211 let hash = if ((size(sha256Licence) == 0))
212212 then defaultHashLicence
213213 else sha256Licence
214214 $Tuple2(cid, hash)
215215 }
216216
217217
218218 func validateArtworkData (caller,cidDisplay,cidExport,licenceCID,sha256Export,licenceHash,name,description,tags) = {
219219 let checkUser = validateUser(caller)
220220 if ((checkUser != ""))
221221 then throw(checkUser)
222222 else if ((size(cidDisplay) == 0))
223223 then throw("Display CID cannot be empty")
224224 else if (!(validateAllCID(cidDisplay, cidExport, licenceCID)))
225225 then throw("Problem with CID")
226226 else if (!(validateAllHash(sha256Export, licenceHash)))
227227 then throw("Problem with Hashes")
228228 else if (!(validateString(name, 100)))
229229 then throw("100 Char. max name")
230230 else if (!(validateString(description, 1000)))
231231 then throw("1000 Char. max description")
232232 else if ((size(split(tags, ",")) > 5))
233233 then throw("5 tags max.")
234234 else ""
235235 }
236236
237237
238238 func isPayment (i) = if ((size(i.payments) == 0))
239239 then throw("No payment attached")
240240 else {
241241 let payment = value(i.payments[0])
242242 let amount = value(payment.amount)
243243 $Tuple2(payment, amount)
244244 }
245245
246246
247247 func validatePayment (i) = {
248248 let $t094199455 = isPayment(i)
249249 let payment = $t094199455._1
250250 let amount = $t094199455._2
251251 let assetId = if (if (isDefined(payment.assetId))
252252 then (payment.assetId == signAssetId)
253253 else false)
254254 then payment.assetId
255255 else throw("Only SIGN token accepted as transaction fee")
256256 if ((amount != currentCertificationPrice))
257257 then throw(("Payment amount should be " + toString(currentCertificationPrice)))
258258 else $Tuple2(amount, assetId)
259259 }
260260
261261
262262 func isArtMinted (addrToUse,artId) = match getInteger(this, keyIssued(addrToUse, artId)) {
263263 case b: Int =>
264264 if ((b != 0))
265265 then true
266266 else false
267267 case _ =>
268268 false
269269 }
270270
271271
272272 func validatePriceAssetId (i,priceAssetId,artworkPrice) = {
273273 let $t01004810084 = isPayment(i)
274274 let payment = $t01004810084._1
275275 let amount = $t01004810084._2
276276 let assetId = if (!(isDefined(payment.assetId)))
277277 then unit
278278 else if (if ((size(priceAssetId) > 0))
279279 then (toBase58String(value(payment.assetId)) == priceAssetId)
280280 else false)
281281 then payment.assetId
282282 else throw("Wrong asset id")
283283 if (if ((assetId == unit))
284284 then (priceAssetId != "")
285285 else false)
286286 then throw("Wrong asset id")
287287 else if ((artworkPrice != amount))
288288 then throw("Payment don't match")
289289 else $Tuple2(amount, assetId)
290290 }
291291
292292
293293 func acceptedAssetIds (assetId) = if (if (if (if ((assetId != toBase58String(signAssetId)))
294294 then (assetId != toBase58String(wavesAssetId))
295295 else false)
296296 then (assetId != "WAVES")
297297 else false)
298298 then (assetId != toBase58String(usdnAssetId))
299299 else false)
300300 then throw("Only SIGN, USDN or WAVES accepted")
301301 else true
302302
303303
304304 func validateMinSell (assetId,price) = {
305305 let minSellWaves = if (unitTest)
306306 then 10
307307 else getIntegerByKeyFromOracle("waves_min_sell")
308308 let minSellUsdn = 1000000
309309 let minSellSign = if (unitTest)
310310 then 1
311311 else (currentCertificationPrice * 2)
312312 if (if (if (if (if ((assetId == toBase58String(usdnAssetId)))
313313 then (minSellUsdn > price)
314314 else false)
315315 then (price != 0)
316316 else false)
317317 then true
318318 else if (if ((assetId == toBase58String(signAssetId)))
319319 then (minSellSign > price)
320320 else false)
321321 then (price != 0)
322322 else false)
323323 then true
324324 else if (if (if ((assetId == toBase58String(wavesAssetId)))
325325 then true
326326 else (assetId == "WAVES"))
327327 then (minSellWaves > price)
328328 else false)
329329 then (price != 0)
330330 else false)
331331 then throw("Wrong minimum sell price")
332332 else true
333333 }
334334
335335
336336 func getBidAssetId (assetId) = if ((assetId == "WAVES"))
337337 then unit
338338 else fromBase58String(assetId)
339339
340340
341341 func getPriceAssetIdFromBid (bidDataKey) = {
342342 let bidData = getStringByKey((bidDataKey + "_OPEN"))
343343 if ((bidData == ""))
344344 then throw("Bid not found")
345345 else {
346346 let bidDataArr = split(bidData, "_")
347347 let bidAmount = parseIntValue(bidDataArr[1])
348348 let bidAssetId = getBidAssetId(bidDataArr[0])
349349 if ((0 >= bidAmount))
350350 then throw("Wrong amount")
351351 else $Tuple2(bidAmount, bidAssetId)
352352 }
353353 }
354354
355355
356356 func idCallerDate (i) = if (!(dappRunning))
357357 then throw(maintenanceMSG)
358358 else $Tuple3(toBase58String(i.transactionId), toBase58String(i.caller.bytes), lastBlock.timestamp)
359359
360360
361361 func buyMint (i,artId,issuer,bidId,bidOwner) = {
362362 let $t01230912366 = idCallerDate(i)
363363 let id = $t01230912366._1
364364 let caller = $t01230912366._2
365365 let date = $t01230912366._3
366366 let isBid = if (if (if ((toBase58String(i.caller.bytes) == issuer))
367367 then (bidOwner != "")
368368 else false)
369369 then (bidId != "")
370370 else false)
371371 then true
372372 else false
373373 let blockEnd = getIntegerByKey(keyEndSale(caller, artId))
374374 if (if (if ((blockEnd != 0))
375375 then (height >= blockEnd)
376376 else false)
377377 then !(isBid)
378378 else false)
379379 then throw("Sale ended.")
380380 else {
381381 let callerIsIssuer = (toBase58String(i.caller.bytes) == issuer)
382382 let totalNFT = getIntegerByKey("total_nft_issued")
383383 let signID = getStringByKey(keySignID(issuer, artId))
384384 let artworkName = getStringByKey(keyName(issuer, artId))
385385 if ((artworkName == ""))
386386 then throw("Art doesn't exist")
387387 else {
388388 let isOnSale = getBooleanByKey(keyOnSale(issuer, artId))
389389 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
390390 let artworkPrice = if (callerIsIssuer)
391391 then (currentCertificationPrice * 2)
392392 else getIntegerByKey(keyPrice(issuer, artId))
393393 let priceAssetId = if (callerIsIssuer)
394394 then toBase58String(signAssetId)
395395 else getStringByKey(keyAssetIdAccepted(issuer, artId))
396396 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
397397 if (if (if (!(isBid))
398398 then !(callerIsIssuer)
399399 else false)
400400 then if (if ((0 >= artworkPrice))
401401 then true
402402 else !(isOnSale))
403403 then true
404404 else (0 >= maxCanSell)
405405 else false)
406406 then throw("Art not for sale")
407407 else if (if (if (!(isBid))
408408 then callerIsIssuer
409409 else false)
410410 then (0 >= maxCanSell)
411411 else false)
412412 then throw("Max issuable not set")
413413 else {
414414 let checkUser = validateUser(issuer)
415415 if (if (isBid)
416416 then (checkUser != "")
417417 else false)
418418 then throw(checkUser)
419419 else {
420420 let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + bidOwner) + "_") + bidId)
421421 let $t01411714284 = if (isBid)
422422 then getPriceAssetIdFromBid(bidDataKey)
423423 else validatePriceAssetId(i, priceAssetId, artworkPrice)
424424 let amount = $t01411714284._1
425425 let assetId = $t01411714284._2
426426 let agent = valueOrElse(getString(userDapp, keyArtistAgentAddr(issuer)), feeReceiver)
427427 let agentShare = valueOrElse(getInteger(userDapp, keyPrimaryShare(issuer)), 0)
428428 let isWhitelisted = checkWhitelist(issuer)
429429 let cut = if ((isWhitelisted > height))
430430 then 0
431431 else if ((assetId == signAssetId))
432432 then signCut
433433 else usdnWaveCut
434434 let amountForSign = fraction(amount, cut, 100)
435- let amountForAgent = if (if ((agent != feeReceiver))
435+ let amountForAgent = if (if (if ((agent != feeReceiver))
436436 then (agentShare > 0)
437+ else false)
438+ then (height > isWhitelisted)
437439 else false)
438440 then fraction(amount, agentShare, 100)
439441 else 0
440442 let amountForCreator = (amount - amountForSign)
441443 if ((amountSold == maxCanSell))
442444 then throw("Art sold out")
443445 else {
444446 let newAmountSold = (amountSold + 1)
445447 let issueMeta = ((((((((((("Creator: " + issuer) + ",
446448 ArtID: ") + artId) + ",
447449 SignID: ") + signID) + ",
448450 Artwork name: ") + artworkName) + ",
449451 Issue: ") + toString(newAmountSold)) + "/") + toString(maxCanSell))
450452 let issueNFT = Issue(("SA_" + toString((totalNFT + 1))), issueMeta, 1, 0, false)
451453 let idNFT = calculateAssetId(issueNFT)
452454 let sellStatus = if (if ((newAmountSold == maxCanSell))
453455 then true
454456 else !(isOnSale))
455457 then false
456458 else true
457459 let receiveNFT = if (if (if ((caller == issuer))
458460 then (bidOwner != "")
459461 else false)
460462 then (bidId != "")
461463 else false)
462464 then addressFromStringValue(bidOwner)
463465 else i.caller
464466 let assetIdBid = if (!(isDefined(assetId)))
465467 then "WAVES"
466468 else toBase58String(value(assetId))
467469 let bidData = getStringByKey((bidDataKey + "_OPEN"))
468470 let bidDelOld = DeleteEntry((bidDataKey + "_OPEN"))
469471 let bidUpdate = StringEntry((bidDataKey + "_CLOSED"), ((bidData + "_") + toString(date)))
470472 let soldKey = ((((((("art_sold_" + toString(newAmountSold)) + "_of_") + toString(maxCanSell)) + "_") + artId) + "_") + issuer)
471473 let soldValue = if (!(isBid))
472474 then ((((((((((caller + "_") + toString(date)) + "_") + id) + "_") + toString(artworkPrice)) + "_") + priceAssetId) + "_") + toBase58String(idNFT))
473475 else ((((((((((toString(receiveNFT) + "_") + toString(date)) + "_") + id) + "_") + toString(amount)) + "_") + assetIdBid) + "_") + toBase58String(idNFT))
474476 let soldData = StringEntry(soldKey, soldValue)
475477 let commissions = if ((amountForAgent != 0))
476478 then [ScriptTransfer(Address(fromBase58String(feeReceiver)), (amountForSign - amountForAgent), assetId), ScriptTransfer(Address(fromBase58String(agent)), amountForAgent, assetId)]
477479 else [ScriptTransfer(Address(fromBase58String(feeReceiver)), amountForSign, assetId)]
478480 let buyRes = ([IntegerEntry(keyIssued(issuer, artId), newAmountSold), StringEntry(("nft_" + toBase58String(idNFT)), soldKey), IntegerEntry("total_nft_issued", (totalNFT + 1)), IntegerEntry(keyEndSale(issuer, artId), 0), BooleanEntry(keyOnSale(issuer, artId), sellStatus), issueNFT, ScriptTransfer(Address(fromBase58String(issuer)), amountForCreator, assetId), ScriptTransfer(receiveNFT, 1, idNFT)] ++ commissions)
479481 if (isBid)
480482 then [soldData, bidUpdate, bidDelOld] :: buyRes
481483 else soldData :: buyRes
482484 }
483485 }
484486 }
485487 }
486488 }
487489 }
488490
489491
490492 @Callable(i)
491493 func addArtwork (sha256Hash,signID,name,description,tags,type,cidDisplay,sha256Export,cidExport,sha256Licence,cidLicence,crawler) = {
492- let $t01766017701 = idCallerDate(i)
493- let artId = $t01766017701._1
494- let caller = $t01766017701._2
495- let date = $t01766017701._3
494+ let $t01768617727 = idCallerDate(i)
495+ let artId = $t01768617727._1
496+ let caller = $t01768617727._2
497+ let date = $t01768617727._3
496498 if (!(validateHash(sha256Hash)))
497499 then throw("Hash should be 64 characters maximum")
498500 else {
499- let $t01780217871 = setLIcence(cidLicence, sha256Licence)
500- let licenceCID = $t01780217871._1
501- let licenceHash = $t01780217871._2
501+ let $t01782817897 = setLIcence(cidLicence, sha256Licence)
502+ let licenceCID = $t01782817897._1
503+ let licenceHash = $t01782817897._2
502504 let validateArtwork = validateArtworkData(caller, cidDisplay, cidExport, licenceCID, sha256Export, licenceHash, name, description, tags)
503505 if ((validateArtwork != ""))
504506 then throw("Something went wrong!")
505507 else {
506- let $t01809018132 = validatePayment(i)
507- let amount = $t01809018132._1
508- let assetId = $t01809018132._2
508+ let $t01811618158 = validatePayment(i)
509+ let amount = $t01811618158._1
510+ let assetId = $t01811618158._2
509511 if (!(isDefined(amount)))
510512 then throw("Something went wrong")
511513 else {
512514 let entryExist = getStringByKey(keyTxidByHashOwner(sha256Hash, caller))
513515 if ((entryExist != ""))
514516 then throw("You already added it")
515517 else {
516518 let hashExist = getStringByKey(keyOwnerByHash(sha256Hash))
517519 if ((hashExist != ""))
518520 then throw("Hash already registered")
519521 else {
520522 let isSignCertified = checkSignCertificate(signID, caller, sha256Hash)
521523 if (!(isSignCertified))
522524 then throw("Sign Certificate not found for this address.")
523525 else [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(keyExportCid(caller, artId), cidExport), StringEntry(keyExportHash(caller, artId), sha256Export), StringEntry(keyLicenceHash(caller, artId), licenceHash), StringEntry(keyLicenceCid(caller, artId), licenceCID), StringEntry(keyType(caller, artId), type), StringEntry(keyTags(caller, artId), tags), IntegerEntry(keyMaxMint(caller, artId), 0), StringEntry(keySignID(caller, artId), signID), IntegerEntry(keyIssued(caller, artId), 0), BooleanEntry(keyOnSale(caller, artId), false), StringEntry(keyidBySignid(caller, signID), artId), StringEntry(keyHashByTxidAddr(caller, artId), sha256Hash), StringEntry(keyCrawler(caller, artId), crawler), ScriptTransfer(Address(fromBase58String(feeReceiver)), amount, assetId)]
524526 }
525527 }
526528 }
527529 }
528530 }
529531 }
530532
531533
532534
533535 @Callable(i)
534536 func updateArtwork (txid,name,description,tags,type,cidDisplay,sha256Export,cidExport,sha256Licence,cidLicence,crawler) = if (!(dappRunning))
535537 then throw(maintenanceMSG)
536538 else {
537539 let caller = toBase58String(i.caller.bytes)
538- let $t02086420933 = setLIcence(cidLicence, sha256Licence)
539- let licenceCID = $t02086420933._1
540- let licenceHash = $t02086420933._2
540+ let $t02089020959 = setLIcence(cidLicence, sha256Licence)
541+ let licenceCID = $t02089020959._1
542+ let licenceHash = $t02089020959._2
541543 let validateArtwork = validateArtworkData(caller, cidDisplay, cidExport, licenceCID, sha256Export, licenceHash, name, description, tags)
542544 if ((validateArtwork != ""))
543545 then throw("Something went wrong!")
544546 else {
545547 let entryExist = getStringByKey(keyName(caller, txid))
546548 if ((entryExist == ""))
547549 then throw("Entry not found")
548550 else {
549551 let flag = getStringByKey(keyFlag(caller, txid))
550552 if ((flag == "ILLEGAL"))
551553 then throw("Cannot update ILLEGAL artwork")
552554 else if (!(isArtMinted(caller, txid)))
553555 then [StringEntry(keyName(caller, txid), name), StringEntry(keyDesc(caller, txid), description), StringEntry(keyDisplayCid(caller, txid), cidDisplay), StringEntry(keyExportCid(caller, txid), cidExport), StringEntry(keyExportHash(caller, txid), sha256Export), StringEntry(keyLicenceCid(caller, txid), licenceCID), StringEntry(keyLicenceHash(caller, txid), licenceHash), StringEntry(keyTags(caller, txid), tags), StringEntry(keyType(caller, txid), type), StringEntry(keyCrawler(caller, txid), crawler)]
554556 else throw("Already minted")
555557 }
556558 }
557559 }
558560
559561
560562
561563 @Callable(i)
562564 func flagArtwork (artId,addr,flag,note) = {
563- let $t02235822391 = idCallerDate(i)
564- let id = $t02235822391._1
565- let caller = $t02235822391._2
565+ let $t02238422417 = idCallerDate(i)
566+ let id = $t02238422417._1
567+ let caller = $t02238422417._2
566568 if (containsElement([chris, toString(this)], caller))
567569 then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], flag))
568570 then [StringEntry(keyFlag(addr, artId), flag), StringEntry(keyNote(addr, artId), note)]
569571 else throw(("Unknow status " + flag))
570572 else throw("You are not allowed")
571573 }
572574
573575
574576
575577 @Callable(i)
576578 func deleteArtwork (artId,addr) = {
577- let $t02282722860 = idCallerDate(i)
578- let id = $t02282722860._1
579- let caller = $t02282722860._2
579+ let $t02285322886 = idCallerDate(i)
580+ let id = $t02285322886._1
581+ let caller = $t02285322886._2
580582 let addrToUse = if (containsElement([chris, joep, toString(this)], caller))
581583 then addr
582584 else caller
583585 let entryExist = valueOrErrorMessage(getStringByKey(keyName(addrToUse, artId)), "No art matching for this address")
584586 if ((entryExist == ""))
585587 then throw("No art matching for this address")
586588 else {
587589 let sha256Hash = getStringByKey(keyHashByTxidAddr(addrToUse, artId))
588590 if ((sha256Hash == ""))
589591 then throw("No art hash matching for this address")
590592 else {
591593 let signID = getStringByKey(keySignID(addrToUse, artId))
592594 if ((signID == ""))
593595 then throw("No SIGN ID matching")
594596 else {
595597 let dataToDelete = [DeleteEntry(keyDate(addrToUse, artId)), DeleteEntry(keyName(addrToUse, artId)), DeleteEntry(keyDesc(addrToUse, artId)), DeleteEntry(keyDisplayCid(addrToUse, artId)), DeleteEntry(keyExportCid(addrToUse, artId)), DeleteEntry(keyExportHash(addrToUse, artId)), DeleteEntry(keyLicenceHash(addrToUse, artId)), DeleteEntry(keyLicenceCid(addrToUse, artId)), DeleteEntry(keyType(addrToUse, artId)), DeleteEntry(keyTags(addrToUse, artId)), DeleteEntry(keyMaxMint(addrToUse, artId)), DeleteEntry(keySignID(addrToUse, artId)), DeleteEntry(keyIssued(addrToUse, artId)), DeleteEntry(keyOnSale(addrToUse, artId)), DeleteEntry(keyFlag(addrToUse, artId)), DeleteEntry(keyPrice(addrToUse, artId)), DeleteEntry(keyAssetIdAccepted(addrToUse, artId)), DeleteEntry(keyOwnerByHash(sha256Hash)), DeleteEntry(keyidBySignid(addrToUse, signID)), DeleteEntry(keyTxidByHashOwner(sha256Hash, addrToUse)), DeleteEntry(keyEndSale(addrToUse, artId)), DeleteEntry(keyNote(addrToUse, artId)), DeleteEntry(keyCrawler(addrToUse, artId))]
596598 if (!(isArtMinted(addrToUse, artId)))
597599 then if (!(dappRunning))
598600 then throw(maintenanceMSG)
599601 else dataToDelete
600602 else if (containsElement([chris, toString(this)], caller))
601603 then dataToDelete
602604 else throw("Art already minted, you cannot delete it")
603605 }
604606 }
605607 }
606608 }
607609
608610
609611
610612 @Callable(i)
611613 func sellArtwork (artId,price,maxMint,assetId,blockEnd) = {
612- let $t02563325666 = idCallerDate(i)
613- let id = $t02563325666._1
614- let caller = $t02563325666._2
614+ let $t02565925692 = idCallerDate(i)
615+ let id = $t02565925692._1
616+ let caller = $t02565925692._2
615617 let artworkName = getStringByKey(keyName(caller, artId))
616618 if ((artworkName == ""))
617619 then throw("This art doesn't match your account")
618620 else {
619621 let flag = getStringByKey(keyFlag(caller, artId))
620622 if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], flag))
621623 then throw("Flagged artwork")
622624 else {
623625 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
624626 if ((0 > blockEnd))
625627 then throw("Negative end")
626628 else if (if ((blockEnd > 0))
627629 then if ((maxMint != 1))
628630 then true
629631 else (price != 0)
630632 else false)
631633 then throw("Timed offer only allowed for unique edition and offer only")
632634 else {
633635 let baseHeight = if ((blockEnd == 0))
634636 then 0
635637 else height
636638 if (!(acceptedAssetIds(assetId)))
637639 then throw("Something went wrong!")
638640 else if (!(validateMinSell(assetId, price)))
639641 then throw("Something went wrong!")
640642 else {
641643 let checkUser = validateUser(caller)
642644 if ((checkUser != ""))
643645 then throw(checkUser)
644646 else {
645647 let amountSold = getIntegerByKey(keyIssued(caller, artId))
646648 let maxCanSell = getIntegerByKey(keyMaxMint(caller, artId))
647649 if ((maxMint > 100))
648650 then throw("100 editions max per artwork")
649651 else if (if ((amountSold != 0))
650652 then (amountSold == maxCanSell)
651653 else false)
652654 then throw("Max edition reached.")
653655 else if (if ((amountSold > 0))
654656 then (maxCanSell != maxMint)
655657 else false)
656658 then throw("Cannot change maximum issuable anymore")
657659 else if (if ((bidNbr > 0))
658660 then (maxCanSell != maxMint)
659661 else false)
660662 then throw("Cannot change maximum issuable with active orders")
661663 else {
662664 let sellStatus = if (if ((price > 0))
663665 then (maxMint > 0)
664666 else false)
665667 then true
666668 else false
667669 [BooleanEntry(keyOnSale(caller, artId), sellStatus), IntegerEntry(keyPrice(caller, artId), price), IntegerEntry(keyMaxMint(caller, artId), maxMint), StringEntry(keyAssetIdAccepted(caller, artId), assetId), IntegerEntry(keyEndSale(caller, artId), (baseHeight + blockEnd))]
668670 }
669671 }
670672 }
671673 }
672674 }
673675 }
674676 }
675677
676678
677679
678680 @Callable(i)
679681 func buyArtwork (artId,issuer) = buyMint(i, artId, issuer, "", "")
680682
681683
682684
683685 @Callable(i)
684686 func setBid (artId,issuer) = {
685- let $t02792327961 = idCallerDate(i)
686- let id = $t02792327961._1
687- let caller = $t02792327961._2
688- let date = $t02792327961._3
689- let $t02796628002 = isPayment(i)
690- let payment = $t02796628002._1
691- let amount = $t02796628002._2
687+ let $t02794927987 = idCallerDate(i)
688+ let id = $t02794927987._1
689+ let caller = $t02794927987._2
690+ let date = $t02794927987._3
691+ let $t02799228028 = isPayment(i)
692+ let payment = $t02799228028._1
693+ let amount = $t02799228028._2
692694 let assetId = if (!(isDefined(payment.assetId)))
693695 then "WAVES"
694696 else toBase58String(value(payment.assetId))
695697 let blockEnd = getIntegerByKey(keyEndSale(issuer, artId))
696698 if (if ((blockEnd != 0))
697699 then (height >= blockEnd)
698700 else false)
699701 then throw("Sale ended.")
700702 else {
701703 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
702704 if (!(acceptedAssetIds(assetId)))
703705 then throw("asset not accepted")
704706 else if (!(validateMinSell(assetId, amount)))
705707 then throw("Wrong min sell")
706708 else {
707709 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
708710 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
709711 if ((0 >= maxCanSell))
710712 then throw("No max edition set for this artwork")
711713 else if ((amountSold >= maxCanSell))
712714 then throw("Sold out, you cannot bid")
713715 else [StringEntry((((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + id) + "_OPEN"), ((((assetId + "_") + toString(amount)) + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr + 1))]
714716 }
715717 }
716718 }
717719
718720
719721
720722 @Callable(i)
721723 func acceptBid (artId,issuer,bidId,bidOwner) = {
722724 let caller = toBase58String(i.caller.bytes)
723725 if ((caller != issuer))
724726 then throw("You cannot do this action")
725727 else buyMint(i, artId, issuer, bidId, bidOwner)
726728 }
727729
728730
729731
730732 @Callable(i)
731733 func cancelBid (artId,issuer,bidId,bidOwner) = {
732- let $t02942929488 = idCallerDate(i)
733- let id = $t02942929488._1
734- let caller = $t02942929488._2
735- let date = $t02942929488._3
734+ let $t02945529514 = idCallerDate(i)
735+ let id = $t02945529514._1
736+ let caller = $t02945529514._2
737+ let date = $t02945529514._3
736738 if (if ((caller != bidOwner))
737739 then (caller != issuer)
738740 else false)
739741 then throw("You cannot do this action")
740742 else {
741743 let returnMoneyTo = if ((caller == issuer))
742744 then bidOwner
743745 else caller
744746 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
745747 let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + bidOwner) + "_") + bidId)
746748 let bidData = getStringByKey((bidDataKey + "_OPEN"))
747749 if ((bidData == ""))
748750 then throw("Bid not found")
749751 else {
750752 let bidDataArr = split(bidData, "_")
751753 let assetId = getBidAssetId(bidDataArr[0])
752754 let bidStatus = "CANCELED"
753755 [DeleteEntry((bidDataKey + "_OPEN")), StringEntry(((bidDataKey + "_") + bidStatus), ((bidData + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr - 1)), ScriptTransfer(Address(fromBase58String(returnMoneyTo)), parseIntValue(bidDataArr[1]), assetId)]
754756 }
755757 }
756758 }
757759
758760

github/deemru/w8io/169f3d6 
96.30 ms