tx · HS5MDX4eAekX6RqCYd6s8RheWVsLheMBEXir8yA5CD59

3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY:  -0.02600000 Waves

2023.10.11 06:25 [2793421] smart account 3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY > SELF 0.00000000 Waves

{ "type": 13, "id": "HS5MDX4eAekX6RqCYd6s8RheWVsLheMBEXir8yA5CD59", "fee": 2600000, "feeAssetId": null, "timestamp": 1696994763541, "version": 2, "chainId": 84, "sender": "3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY", "senderPublicKey": "J9DCtJJxJBWZdtDR12BA1U94Q3cZzMi4R6k5hYkAzmzC", "proofs": [ "92btZi9TWiPXBeAmYRyLxPDFaj74FkcrRmPTiob33Jjz4BFg3FRnaQ4npTwg2TSBiQbHWa5QDNb7q7ut2RcTjKF" ], "script": "base64:BgJeCAISBAoCCAgSDgoMCAgICAgICAgICAEIEg8KDQgICAgICAgICAgIAQgSBgoECAgICBIECgIICBIICgYIAQEIAQgSBAoCCAgSBAoCCAgSBwoFCAgICAgSBgoECAgICFsAB1ZFUlNJT04CBTIuMC4wAQ5nZXRTdHJpbmdCeUtleQEDa2V5CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFA2tleQIAAAh1bml0VGVzdAcACW9yYWNsZUZlZQkBBXZhbHVlAQkApggBCQEOZ2V0U3RyaW5nQnlLZXkBAg9jb25mX29yYWNsZV9mZWUACHNpZ25EYXBwCQEFdmFsdWUBCQCmCAEJAQ5nZXRTdHJpbmdCeUtleQECEWNvbmZfc2lnbndlYl9kYXBwAAtmZWVSZWNlaXZlcgkBDmdldFN0cmluZ0J5S2V5AQIRY29uZl9mZWVfcmVjZWl2ZXIACHVzZXJEYXBwAwUIdW5pdFRlc3QJAQV2YWx1ZQEJAKYIAQIjM010NFJHTUV5alNXWUFvY1RQcWQ1NXdkSFFRQjNQVTJVQ20JAQV2YWx1ZQEJAKYIAQkBDmdldFN0cmluZ0J5S2V5AQIPY29uZl91c2Vyc19kYXBwAA13aGl0ZWxpc3REYXBwCQEFdmFsdWUBCQCmCAEJAQ5nZXRTdHJpbmdCeUtleQECE2NvbmZfd2hpdGVsaXN0X2RhcHAAD3B1enpsZV9hcnRfcG9vbAkBDmdldFN0cmluZ0J5S2V5AQIUY29uZl9wdXp6bGVfYXJ0X3Bvb2wAEXVzZHRQUEFzc2V0SWRfc3RyCQEOZ2V0U3RyaW5nQnlLZXkBAhtjb25mX2FjY2VwdGVkX2Fzc2V0X1VTRFRfUFAADmFydEFzc2V0SWRfc3RyCQEOZ2V0U3RyaW5nQnlLZXkBAhdjb25mX2FjY2VwdGVkX2Fzc2V0X0FSVAARdXNkY1BQQXNzZXRJZF9zdHIJAQ5nZXRTdHJpbmdCeUtleQECG2NvbmZfYWNjZXB0ZWRfYXNzZXRfVVNEQ19QUAAPZWFzdEFzc2V0SWRfc3RyCQEOZ2V0U3RyaW5nQnlLZXkBAhhjb25mX2FjY2VwdGVkX2Fzc2V0X0VBU1QAEXB1enpsZUFzc2V0SWRfc3RyCQEOZ2V0U3RyaW5nQnlLZXkBAhpjb25mX2FjY2VwdGVkX2Fzc2V0X1BVWlpMRQAQZXRoUFBBc3NldElkX3N0cgkBDmdldFN0cmluZ0J5S2V5AQIaY29uZl9hY2NlcHRlZF9hc3NldF9FVEhfUFAAEHdhdmVzQXNzZXRJZF9zdHICBVdBVkVTAA11c2R0UFBBc3NldElkCQDZBAEFEXVzZHRQUEFzc2V0SWRfc3RyAAphcnRBc3NldElkCQDZBAEFDmFydEFzc2V0SWRfc3RyAA11c2RjUFBBc3NldElkCQDZBAEFEXVzZGNQUEFzc2V0SWRfc3RyAAtlYXN0QXNzZXRJZAkA2QQBBQ9lYXN0QXNzZXRJZF9zdHIADXB1enpsZUFzc2V0SWQJANkEAQURcHV6emxlQXNzZXRJZF9zdHIADGV0aFBQQXNzZXRJZAkA2QQBBRBldGhQUEFzc2V0SWRfc3RyAAx3YXZlc0Fzc2V0SWQBAAATYWxsX2FjY2VwdGVkX2Fzc2V0cwkAzAgCBRF1c2R0UFBBc3NldElkX3N0cgkAzAgCBQ5hcnRBc3NldElkX3N0cgkAzAgCBRF1c2RjUFBBc3NldElkX3N0cgkAzAgCBQ9lYXN0QXNzZXRJZF9zdHIJAMwIAgURcHV6emxlQXNzZXRJZF9zdHIJAMwIAgUQd2F2ZXNBc3NldElkX3N0cgkAzAgCBRBldGhQUEFzc2V0SWRfc3RyBQNuaWwABWNocmlzCQEOZ2V0U3RyaW5nQnlLZXkBAgxjb25mX2FkbWluXzEBGWdldEludGVnZXJCeUtleUZyb21PcmFjbGUBA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCW9yYWNsZUZlZQUDa2V5Ah9JbnRlZ2VyIHVuZGVmaW5lIG9yIDAgaW4gb3JhY2xlAQ9nZXRJbnRlZ2VyQnlLZXkBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkAAAEOY2hlY2tXaGl0ZWxpc3QBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ13aGl0ZWxpc3REYXBwBQNrZXkAAAEPZ2V0Qm9vbGVhbkJ5S2V5AQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUDa2V5BwAOY29tbWlzc2lvbl9mZWUACAAOZGVmYXVsdExpY2VuY2UJAQ5nZXRTdHJpbmdCeUtleQECFGNvbmZfZGVmYXVsdF9saWNlbmNlABJkZWZhdWx0SGFzaExpY2VuY2UJAQ5nZXRTdHJpbmdCeUtleQECGWNvbmZfZGVmYXVsdF9saWNlbmNlX2hhc2gAC2RhcHBSdW5uaW5nCQELdmFsdWVPckVsc2UCCQCbCAIFCHVzZXJEYXBwAhRjb25mX2RhcHBfaXNfcnVubmluZwYADm1haW50ZW5hbmNlTVNHCQELdmFsdWVPckVsc2UCCQCdCAIFCHVzZXJEYXBwAhRjb25mX21haW50ZW5hbmNlX21zZwIAAA11c2VyU3VzcGVuZGVkAglTVVNQRU5ERUQAC3VzZXJSZW1vdmVkAgdSRU1PVkVEABB1c2VyVW5yZWdpc3RlcmVkAgxVTlJFR0lTVEVSRUQAC3VzZXJBbGxvd2VkAgdBTExPV0VEABljdXJyZW50Q2VydGlmaWNhdGlvblByaWNlCQEZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZQEJAKwCAgISY2VydGlmaWNhdGlvbl9mZWVfCQDYBAEFCmFydEFzc2V0SWQACG1pbnRfZmVlCQEZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZQEJAKwCAgIJbWludF9mZWVfCQDYBAEFCmFydEFzc2V0SWQBE2dldEFydHdvcmtSb3lhbHRpZXMBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkA6AcBC3ZhbGlkYXRlQ0lEAQNjaWQDCQEIY29udGFpbnMCBQNjaWQCAS8DAwkAZgIATAkAsQIBBQNjaWQJAAACCQCxAgEJAJEDAgkAtQkCBQNjaWQCAS8AAAA7BwkAZgIAEAkAsQIBCQCRAwIJALUJAgUDY2lkAgEvAAEHBwEMdmFsaWRhdGVIYXNoAQRoYXNoCQAAAgkAsQIBBQRoYXNoAEABDWtleVVzZXJTdGF0dXMBBmNhbGxlcgkArAICAgx1c2VyX3N0YXR1c18FBmNhbGxlcgEHa2V5RGF0ZQIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAglhcnRfZGF0ZV8FBWFydElkAgFfBQZjYWxsZXIBB2tleU5hbWUCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIJYXJ0X25hbWVfBQVhcnRJZAIBXwUGY2FsbGVyAQdrZXlEZXNjAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICCWFydF9kZXNjXwUFYXJ0SWQCAV8FBmNhbGxlcgENa2V5RGlzcGxheUNpZAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAhBhcnRfZGlzcGxheV9jaWRfBQVhcnRJZAIBXwUGY2FsbGVyAQ1rZXlFeHBvcnRIYXNoAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICEGFydF9leHBvcnRfaGFzaF8FBWFydElkAgFfBQZjYWxsZXIBDGtleUV4cG9ydENpZAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAg9hcnRfZXhwb3J0X2NpZF8FBWFydElkAgFfBQZjYWxsZXIBCmtleU1heE1pbnQCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIMYXJ0X21heG1pbnRfBQVhcnRJZAIBXwUGY2FsbGVyAQlrZXlTaWduSUQCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgILYXJ0X3NpZ25pZF8FBWFydElkAgFfBQZjYWxsZXIBCWtleUlzc3VlZAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAgthcnRfaXNzdWVkXwUFYXJ0SWQCAV8FBmNhbGxlcgEJa2V5T25TYWxlAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICC2FydF9vbnNhbGVfBQVhcnRJZAIBXwUGY2FsbGVyAQ5rZXlMaWNlbmNlSGFzaAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAhFhcnRfbGljZW5jZV9oYXNoXwUFYXJ0SWQCAV8FBmNhbGxlcgENa2V5TGljZW5jZUNpZAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAhBhcnRfbGljZW5jZV9jaWRfBQVhcnRJZAIBXwUGY2FsbGVyAQdrZXlUYWdzAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICCWFydF90YWdzXwUFYXJ0SWQCAV8FBmNhbGxlcgEHa2V5VHlwZQIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAglhcnRfdHlwZV8FBWFydElkAgFfBQZjYWxsZXIBB2tleU5vdGUCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIJYXJ0X25vdGVfBQVhcnRJZAIBXwUGY2FsbGVyAQprZXlDcmF3bGVyAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICEGFydF9jcmF3bGVyX2NpZF8FBWFydElkAgFfBQZjYWxsZXIBDGtleVJveWFsdGllcwIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAg5hcnRfcm95YWx0aWVzXwUFYXJ0SWQCAV8FBmNhbGxlcgEIa2V5UHJpY2UCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIKYXJ0X3ByaWNlXwUFYXJ0SWQCAV8FBmNhbGxlcgEKa2V5RW5kU2FsZQIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAgxhcnRfZW5kc2FsZV8FBWFydElkAgFfBQZjYWxsZXIBEmtleUFzc2V0SWRBY2NlcHRlZAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAhJhcnRfYXNzZXRBY2NlcHRlZF8FBWFydElkAgFfBQZjYWxsZXIBB2tleUZsYWcCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIJYXJ0X2ZsYWdfBQVhcnRJZAIBXwUGY2FsbGVyARJrZXlBcnRpc3RBZ2VudEFkZHIBCmFydGlzdEFkZHIJAKwCAgINYXJ0aXN0X2FnZW50XwUKYXJ0aXN0QWRkcgEUa2V5UHJpbWFyeVNoYXJlQWdlbnQBCmFydGlzdEFkZHIJAKwCAgIVYXJ0aXN0X2FnZW50X3ByaW1hcnlfBQphcnRpc3RBZGRyARhrZXlBcnRpc3RQdWJsaWNBZ2VudEFkZHIBCmFydGlzdEFkZHIJAKwCAgIUYXJ0aXN0X3B1YmxpY19hZ2VudF8FCmFydGlzdEFkZHIBGmtleVByaW1hcnlTaGFyZVB1YmxpY0FnZW50AQphcnRpc3RBZGRyCQCsAgICHGFydGlzdF9wdWJsaWNfYWdlbnRfcHJpbWFyeV8FCmFydGlzdEFkZHIBEWtleUhhc2hCeVR4aWRBZGRyAgZjYWxsZXIEdHhpZAkArAICCQCsAgIJAKwCAgITZ2V0X2hhc2hieXR4aWRhZGRyXwUEdHhpZAIBXwUGY2FsbGVyAQ5rZXlPd25lckJ5SGFzaAEKc2hhMjU2SGFzaAkArAICAhJnZXRfb3duZXJfYnlfaGFzaF8FCnNoYTI1Nkhhc2gBDWtleWlkQnlTaWduaWQCBmNhbGxlcgZzaWduSWQJAKwCAgkArAICCQCsAgICEmdldF9hcnRpZGJ5c2lnbmlkXwUGc2lnbklkAgFfBQZjYWxsZXIBDnZhbGlkYXRlQWxsQ0lEAwpjaWREaXNwbGF5CWNpZEV4cG9ydApjaWRMaWNlbmNlAwkBASEBCQELdmFsaWRhdGVDSUQBBQpjaWREaXNwbGF5CQACAQIRV3JvbmcgRGlzcGxheSBDSUQDCQEBIQEJAQt2YWxpZGF0ZUNJRAEFCWNpZEV4cG9ydAkAAgECEFdyb25nIEV4cG9ydCBDSUQDAwkBAiE9AgUKY2lkTGljZW5jZQIACQEBIQEJAQt2YWxpZGF0ZUNJRAEFCmNpZExpY2VuY2UHCQACAQIRV3JvbmcgTGljZW5jZSBDSUQGAQ92YWxpZGF0ZUFsbEhhc2gCDHNoYTI1NkV4cG9ydA1zaGEyNTZMaWNlbmNlAwkBASEBCQEMdmFsaWRhdGVIYXNoAQUMc2hhMjU2RXhwb3J0CQACAQIYRXhwb3J0IEhhc2ggNjQgY2hhci4gbWF4AwkBASEBCQEMdmFsaWRhdGVIYXNoAQUNc2hhMjU2TGljZW5jZQkAAgECGUxpY2VuY2UgSGFzaCA2NCBjaGFyLiBtYXgGAQ52YWxpZGF0ZVN0cmluZwIDc3RyA21heAMJAAACCQCxAgEFA3N0cgAACQACAQIYRmllbGQgY2Fubm90IGJlIGlzIGVtcHR5AwkAZgIJALECAQUDc3RyBQNtYXgJAAIBCQCsAgIFA3N0cgIMIGlzIHRvbyBsb25nBgEMdmFsaWRhdGVVc2VyAQZjYWxsZXIECnVzZXJTdGF0dXMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHAJAQ1rZXlVc2VyU3RhdHVzAQUGY2FsbGVyBRB1c2VyVW5yZWdpc3RlcmVkAwMJAAACBQp1c2VyU3RhdHVzBRB1c2VyVW5yZWdpc3RlcmVkBgkAAAIFCnVzZXJTdGF0dXMFC3VzZXJBbGxvd2VkAi5SZWdpc3RlciB0aGlzIGFjY291bnQgZmlyc3Qgd2l0aCAiQWNjb3VudCIgdGFiAwkAAAIFCnVzZXJTdGF0dXMFDXVzZXJTdXNwZW5kZWQCEUFjY291bnQgc3VzcGVuZGVkAwkAAAIFCnVzZXJTdGF0dXMFC3VzZXJSZW1vdmVkAg9BY2NvdW50IHJlbW92ZWQCAAEKc2V0TEljZW5jZQIKY2lkTGljZW5jZQ1zaGEyNTZMaWNlbmNlBANjaWQDCQAAAgkAsQIBBQpjaWRMaWNlbmNlAAAFDmRlZmF1bHRMaWNlbmNlBQpjaWRMaWNlbmNlBARoYXNoAwkAAAIJALECAQUNc2hhMjU2TGljZW5jZQAABRJkZWZhdWx0SGFzaExpY2VuY2UFDXNoYTI1NkxpY2VuY2UJAJQKAgUDY2lkBQRoYXNoARN2YWxpZGF0ZUFydHdvcmtEYXRhCgZjYWxsZXIKY2lkRGlzcGxheQljaWRFeHBvcnQKbGljZW5jZUNJRAxzaGEyNTZFeHBvcnQLbGljZW5jZUhhc2gEbmFtZQtkZXNjcmlwdGlvbgR0YWdzCXJveWFsdGllcwQJY2hlY2tVc2VyCQEMdmFsaWRhdGVVc2VyAQUGY2FsbGVyAwkBAiE9AgUJY2hlY2tVc2VyAgAJAAIBBQljaGVja1VzZXIDCQAAAgkAsQIBBQpjaWREaXNwbGF5AAAJAAIBAhtEaXNwbGF5IENJRCBjYW5ub3QgYmUgZW1wdHkDCQEBIQEJAQ52YWxpZGF0ZUFsbENJRAMFCmNpZERpc3BsYXkFCWNpZEV4cG9ydAUKbGljZW5jZUNJRAkAAgECEFByb2JsZW0gd2l0aCBDSUQDCQEBIQEJAQ92YWxpZGF0ZUFsbEhhc2gCBQxzaGEyNTZFeHBvcnQFC2xpY2VuY2VIYXNoCQACAQITUHJvYmxlbSB3aXRoIEhhc2hlcwMJAQEhAQkBDnZhbGlkYXRlU3RyaW5nAgUEbmFtZQBkCQACAQISMTAwIENoYXIuIG1heCBuYW1lAwkBASEBCQEOdmFsaWRhdGVTdHJpbmcCBQtkZXNjcmlwdGlvbgDoBwkAAgECGjEwMDAgQ2hhci4gbWF4IGRlc2NyaXB0aW9uAwMJAGYCAAAFCXJveWFsdGllcwYJAGYCBQlyb3lhbHRpZXMA6AcJAAIBAjNSb3lhbHRpZXMgY2Fubm90IGJlIGxlc3MgdGhhbiAwJSBvciBoaWdoZXIgdGhhbiAxMCUDCQBmAgkAkAMBCQC1CQIFBHRhZ3MCASwABQkAAgECCzUgdGFncyBtYXguAgABCWlzUGF5bWVudAEBaQMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhNObyBwYXltZW50IGF0dGFjaGVkBAdwYXltZW50CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEBmFtb3VudAkBBXZhbHVlAQgFB3BheW1lbnQGYW1vdW50CQCUCgIFB3BheW1lbnQFBmFtb3VudAEPdmFsaWRhdGVQYXltZW50AQFpBA0kdDAxMDE1NjEwMTkyCQEJaXNQYXltZW50AQUBaQQHcGF5bWVudAgFDSR0MDEwMTU2MTAxOTICXzEEBmFtb3VudAgFDSR0MDEwMTU2MTAxOTICXzIEB2Fzc2V0SWQDAwkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQJAAACCAUHcGF5bWVudAdhc3NldElkBQphcnRBc3NldElkBwgFB3BheW1lbnQHYXNzZXRJZAkAAgECK09ubHkgU0lHTiB0b2tlbiBhY2NlcHRlZCBhcyB0cmFuc2FjdGlvbiBmZWUDCQECIT0CBQZhbW91bnQFGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UJAAIBCQCsAgICGVBheW1lbnQgYW1vdW50IHNob3VsZCBiZSAJAKQDAQUZY3VycmVudENlcnRpZmljYXRpb25QcmljZQkAlAoCBQZhbW91bnQFB2Fzc2V0SWQBC2lzQXJ0TWludGVkAglhZGRyVG9Vc2UFYXJ0SWQEByRtYXRjaDAJAJoIAgUEdGhpcwkBCWtleUlzc3VlZAIFCWFkZHJUb1VzZQUFYXJ0SWQDCQABAgUHJG1hdGNoMAIDSW50BAFiBQckbWF0Y2gwAwkBAiE9AgUBYgAABgcHARR2YWxpZGF0ZVByaWNlQXNzZXRJZAMBaQxwcmljZUFzc2V0SWQMYXJ0d29ya1ByaWNlBA0kdDAxMDc3OTEwODE1CQEJaXNQYXltZW50AQUBaQQHcGF5bWVudAgFDSR0MDEwNzc5MTA4MTUCXzEEBmFtb3VudAgFDSR0MDEwNzc5MTA4MTUCXzIEB2Fzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCAUHcGF5bWVudAdhc3NldElkBQR1bml0AwMJAGYCCQCxAgEFDHByaWNlQXNzZXRJZAAACQAAAgkA2AQBCQEFdmFsdWUBCAUHcGF5bWVudAdhc3NldElkBQxwcmljZUFzc2V0SWQHCAUHcGF5bWVudAdhc3NldElkCQACAQIOV3JvbmcgYXNzZXQgaWQDAwkAAAIFB2Fzc2V0SWQFBHVuaXQJAQIhPQIFDHByaWNlQXNzZXRJZAIABwkAAgECDldyb25nIGFzc2V0IGlkAwkBAiE9AgUMYXJ0d29ya1ByaWNlBQZhbW91bnQJAAIBAhNQYXltZW50IGRvbid0IG1hdGNoCQCUCgIFBmFtb3VudAUHYXNzZXRJZAEQYWNjZXB0ZWRBc3NldElkcwEHYXNzZXRJZAMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIFE2FsbF9hY2NlcHRlZF9hc3NldHMFB2Fzc2V0SWQJAAIBAkBPbmx5ICRBUlQsIFVTRFQtUFAsIFVTREMtUFAsIEVBU1QsIFBVWlpMRSwgRVRIIG9yIFdBVkVTIGFjY2VwdGVkBgEPdmFsaWRhdGVNaW5TZWxsAQVwcmljZQMJAGcCAAAFBXByaWNlCQACAQIYV3JvbmcgbWluaW11bSBzZWxsIHByaWNlBgENZ2V0QmlkQXNzZXRJZAEHYXNzZXRJZAMJAAACBQdhc3NldElkAgVXQVZFUwUEdW5pdAkA2QQBBQdhc3NldElkARZnZXRQcmljZUFzc2V0SWRGcm9tQmlkAQpiaWREYXRhS2V5BAdiaWREYXRhCQEOZ2V0U3RyaW5nQnlLZXkBCQCsAgIFCmJpZERhdGFLZXkCBV9PUEVOAwkAAAIFB2JpZERhdGECAAkAAgECDUJpZCBub3QgZm91bmQECmJpZERhdGFBcnIJALUJAgUHYmlkRGF0YQIBXwQJYmlkQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKYmlkRGF0YUFycgABBApiaWRBc3NldElkCQENZ2V0QmlkQXNzZXRJZAEJAJEDAgUKYmlkRGF0YUFycgAAAwkAZwIAAAUJYmlkQW1vdW50CQACAQIMV3JvbmcgYW1vdW50CQCUCgIFCWJpZEFtb3VudAUKYmlkQXNzZXRJZAEVaWRDYWxsZXJEYXRlU3BvbnNvcmVkAgFpBnB1YktleQMJAQEhAQULZGFwcFJ1bm5pbmcJAAIBBQ5tYWludGVuYW5jZU1TRwQLaXNTcG9uc29yZWQDCQECIT0CBQZwdWJLZXkCAAkBC3ZhbHVlT3JFbHNlAgkBDmNoZWNrV2hpdGVsaXN0AQkArAICCQClCAEJAKcIAQkA2QQBBQZwdWJLZXkCCV9mcmVlX3R4cwAAAAAEBmNhbGxlcgMDCQAAAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzCQClCAEFBHRoaXMJAGYCBQtpc1Nwb25zb3JlZAAABwkApQgBCQCnCAEJANkEAQUGcHViS2V5CQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEE2dldF9zcG9uc29yZWRfd2F2ZXMDAwkBAiE9AgUGcHViS2V5AgAJAGYCBQtpc1Nwb25zb3JlZAAABwkA/AcEBQ13aGl0ZWxpc3REYXBwAgl1c2VGcmVlVHgJAMwIAgkApQgBCQCnCAEJANkEAQUGcHViS2V5BQNuaWwFA25pbAUEdW5pdAMJAAACBRNnZXRfc3BvbnNvcmVkX3dhdmVzBRNnZXRfc3BvbnNvcmVkX3dhdmVzCQCWCgQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAUGY2FsbGVyCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAZgIFC2lzU3BvbnNvcmVkAAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDGlkQ2FsbGVyRGF0ZQEBaQMJAQEhAQULZGFwcFJ1bm5pbmcJAAIBBQ5tYWludGVuYW5jZU1TRwkAlQoDCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJANgEAQgIBQFpBmNhbGxlcgVieXRlcwgFCWxhc3RCbG9jawl0aW1lc3RhbXABCmdldEJhbGFuY2UBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYgUHJG1hdGNoMAkA8AcCBQR0aGlzBQFiCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQEHYnV5TWludAYBaQVhcnRJZAZpc3N1ZXIFYmlkSWQIYmlkT3duZXIGcHViS2V5BA0kdDAxMzQyMDEzNTA5CQEVaWRDYWxsZXJEYXRlU3BvbnNvcmVkAgUBaQUGcHViS2V5BAJpZAgFDSR0MDEzNDIwMTM1MDkCXzEEBmNhbGxlcggFDSR0MDEzNDIwMTM1MDkCXzIEBGRhdGUIBQ0kdDAxMzQyMDEzNTA5Al8zBAtpc1Nwb25zb3JlZAgFDSR0MDEzNDIwMTM1MDkCXzQEBWlzQmlkAwMDCQAAAgUGY2FsbGVyBQZpc3N1ZXIJAQIhPQIFCGJpZE93bmVyAgAHCQECIT0CBQViaWRJZAIABwYHAwMFBWlzQmlkCQECIT0CBQZjYWxsZXIFBmlzc3VlcgcJAAIBAhlZb3UgY2Fubm90IGRvIHRoaXMgYWN0aW9uBAhibG9ja0VuZAkBD2dldEludGVnZXJCeUtleQEJAQprZXlFbmRTYWxlAgUGY2FsbGVyBQVhcnRJZAMDAwkBAiE9AgUIYmxvY2tFbmQAAAkAZwIFBmhlaWdodAUIYmxvY2tFbmQHCQEBIQEFBWlzQmlkBwkAAgECC1NhbGUgZW5kZWQuBA5jYWxsZXJJc0lzc3VlcgkAAAIFBmNhbGxlcgUGaXNzdWVyBAh0b3RhbE5GVAkBD2dldEludGVnZXJCeUtleQECEHRvdGFsX25mdF9pc3N1ZWQEC2FydHdvcmtOYW1lCQEOZ2V0U3RyaW5nQnlLZXkBCQEHa2V5TmFtZQIFBmlzc3VlcgUFYXJ0SWQDCQAAAgULYXJ0d29ya05hbWUCAAkAAgECEUFydCBkb2Vzbid0IGV4aXN0BAhpc09uU2FsZQkBD2dldEJvb2xlYW5CeUtleQEJAQlrZXlPblNhbGUCBQZpc3N1ZXIFBWFydElkBAphbW91bnRTb2xkCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCWtleUlzc3VlZAIFBmlzc3VlcgUFYXJ0SWQEDGFydHdvcmtQcmljZQMFDmNhbGxlcklzSXNzdWVyBQhtaW50X2ZlZQkBD2dldEludGVnZXJCeUtleQEJAQhrZXlQcmljZQIFBmlzc3VlcgUFYXJ0SWQEDHByaWNlQXNzZXRJZAMFDmNhbGxlcklzSXNzdWVyCQDYBAEFCmFydEFzc2V0SWQJAQ5nZXRTdHJpbmdCeUtleQEJARJrZXlBc3NldElkQWNjZXB0ZWQCBQZpc3N1ZXIFBWFydElkBAptYXhDYW5TZWxsCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCmtleU1heE1pbnQCBQZpc3N1ZXIFBWFydElkAwMDCQEBIQEFBWlzQmlkCQEBIQEFDmNhbGxlcklzSXNzdWVyBwMDCQBnAgAABQxhcnR3b3JrUHJpY2UGCQEBIQEFCGlzT25TYWxlBgkAZwIAAAUKbWF4Q2FuU2VsbAcJAAIBAhBBcnQgbm90IGZvciBzYWxlAwMDCQEBIQEFBWlzQmlkBQ5jYWxsZXJJc0lzc3VlcgcJAGcCAAAFCm1heENhblNlbGwHCQACAQIUTWF4IGlzc3VhYmxlIG5vdCBzZXQECWNoZWNrVXNlcgkBDHZhbGlkYXRlVXNlcgEFBmlzc3VlcgMDBQVpc0JpZAkBAiE9AgUJY2hlY2tVc2VyAgAHCQACAQUJY2hlY2tVc2VyBApiaWREYXRhS2V5CQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICBGJpZF8FBWFydElkAgFfBQZpc3N1ZXICAV8FCGJpZE93bmVyAgFfBQViaWRJZAQNJHQwMTUwODYxNTI3OAMFBWlzQmlkCQEWZ2V0UHJpY2VBc3NldElkRnJvbUJpZAEFCmJpZERhdGFLZXkJARR2YWxpZGF0ZVByaWNlQXNzZXRJZAMFAWkFDHByaWNlQXNzZXRJZAUMYXJ0d29ya1ByaWNlBAZhbW91bnQIBQ0kdDAxNTA4NjE1Mjc4Al8xBAdhc3NldElkCAUNJHQwMTUwODYxNTI3OAJfMgQFYWdlbnQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHAJARJrZXlBcnRpc3RBZ2VudEFkZHIBBQZpc3N1ZXIFC2ZlZVJlY2VpdmVyBAphZ2VudFNoYXJlCQELdmFsdWVPckVsc2UCCQCaCAIFCHVzZXJEYXBwCQEUa2V5UHJpbWFyeVNoYXJlQWdlbnQBBQZpc3N1ZXIAAAQLcHVibGljQWdlbnQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHAJARhrZXlBcnRpc3RQdWJsaWNBZ2VudEFkZHIBBQZpc3N1ZXIFC2ZlZVJlY2VpdmVyBBBwdWJsaWNBZ2VudFNoYXJlCQELdmFsdWVPckVsc2UCCQCaCAIFCHVzZXJEYXBwCQEaa2V5UHJpbWFyeVNoYXJlUHVibGljQWdlbnQBBQZpc3N1ZXIAAAQNaXNXaGl0ZWxpc3RlZAkBDmNoZWNrV2hpdGVsaXN0AQUGaXNzdWVyBA1hbW91bnRGb3JTaWduCQBrAwUGYW1vdW50BQ5jb21taXNzaW9uX2ZlZQBkBA5hbW91bnRGb3JBZ2VudAMDAwkBAiE9AgUFYWdlbnQFC2ZlZVJlY2VpdmVyCQBmAgUKYWdlbnRTaGFyZQAABwkAZgIFBmhlaWdodAUNaXNXaGl0ZWxpc3RlZAcJAGsDBQZhbW91bnQFCmFnZW50U2hhcmUAkE4AAAQUYW1vdW50Rm9yUHVibGljQWdlbnQDAwMJAQIhPQIFC3B1YmxpY0FnZW50BQtmZWVSZWNlaXZlcgkAZgIFEHB1YmxpY0FnZW50U2hhcmUAAAcJAGYCBQZoZWlnaHQFDWlzV2hpdGVsaXN0ZWQHCQBrAwUGYW1vdW50BRBwdWJsaWNBZ2VudFNoYXJlAJBOAAAEEGFtb3VudEZvckNyZWF0b3IJAGUCBQZhbW91bnQFDWFtb3VudEZvclNpZ24DCQAAAgUKYW1vdW50U29sZAUKbWF4Q2FuU2VsbAkAAgECDEFydCBzb2xkIG91dAQNbmV3QW1vdW50U29sZAkAZAIFCmFtb3VudFNvbGQAAQQJaXNzdWVNZXRhCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglDcmVhdG9yOiAFBmlzc3VlcgIKLAogQXJ0SUQ6IAUFYXJ0SWQCESwKIEFydHdvcmsgbmFtZTogBQthcnR3b3JrTmFtZQIKLAogSXNzdWU6IAkApAMBBQ1uZXdBbW91bnRTb2xkAgEvCQCkAwEFCm1heENhblNlbGwECGlzc3VlTkZUCQDCCAUJAKwCAgIDU0FfCQCkAwEJAGQCBQh0b3RhbE5GVAABBQlpc3N1ZU1ldGEAAQAABwQFaWRORlQJALgIAQUIaXNzdWVORlQECnNlbGxTdGF0dXMDAwkAAAIFDW5ld0Ftb3VudFNvbGQFCm1heENhblNlbGwGCQEBIQEFCGlzT25TYWxlBwYECnJlY2VpdmVORlQDAwMJAAACBQZjYWxsZXIFBmlzc3VlcgkBAiE9AgUIYmlkT3duZXICAAcJAQIhPQIFBWJpZElkAgAHCQERQGV4dHJOYXRpdmUoMTA2MikBBQhiaWRPd25lcggFAWkGY2FsbGVyBAphc3NldElkQmlkAwkBASEBCQEJaXNEZWZpbmVkAQUHYXNzZXRJZAIFV0FWRVMJANgEAQkBBXZhbHVlAQUHYXNzZXRJZAQHYmlkRGF0YQkBDmdldFN0cmluZ0J5S2V5AQkArAICBQpiaWREYXRhS2V5AgVfT1BFTgQJYmlkRGVsT2xkCQELRGVsZXRlRW50cnkBCQCsAgIFCmJpZERhdGFLZXkCBV9PUEVOBAliaWRVcGRhdGUJAQtTdHJpbmdFbnRyeQIJAKwCAgUKYmlkRGF0YUtleQIHX0NMT1NFRAkArAICCQCsAgIFB2JpZERhdGECAV8JAKQDAQUEZGF0ZQQHc29sZEtleQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglhcnRfc29sZF8JAKQDAQUNbmV3QW1vdW50U29sZAIEX29mXwkApAMBBQptYXhDYW5TZWxsAgFfBQVhcnRJZAIBXwUGaXNzdWVyBAlzb2xkVmFsdWUDCQEBIQEFBWlzQmlkCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBmNhbGxlcgIBXwkApAMBBQRkYXRlAgFfBQJpZAIBXwkApAMBBQxhcnR3b3JrUHJpY2UCAV8FDHByaWNlQXNzZXRJZAIBXwkA2AQBBQVpZE5GVAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQClCAEFCnJlY2VpdmVORlQCAV8JAKQDAQUEZGF0ZQIBXwUCaWQCAV8JAKQDAQUGYW1vdW50AgFfBQphc3NldElkQmlkAgFfCQDYBAEFBWlkTkZUBAhzb2xkRGF0YQkBC1N0cmluZ0VudHJ5AgUHc29sZEtleQUJc29sZFZhbHVlBCJhbW91bnRfY29tbWlzc2lvbl9mb3Jfc2lnbl90b19zd2FwAwkBAiE9AgUOYW1vdW50Rm9yQWdlbnQAAAkAZQIFDWFtb3VudEZvclNpZ24FDmFtb3VudEZvckFnZW50BQ1hbW91bnRGb3JTaWduBBFhbW91bnRfYXJ0X2JlZm9yZQkBCmdldEJhbGFuY2UBBQphcnRBc3NldElkAwkAAAIFEWFtb3VudF9hcnRfYmVmb3JlBRFhbW91bnRfYXJ0X2JlZm9yZQQPc3dhcF9mZWVfdG9fYXJ0AwkBAiE9AgUHYXNzZXRJZAUKYXJ0QXNzZXRJZAkA/AcECQEHQWRkcmVzcwEJANkEAQUPcHV6emxlX2FydF9wb29sAgRzd2FwCQDMCAIFDmFydEFzc2V0SWRfc3RyCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQdhc3NldElkBSJhbW91bnRfY29tbWlzc2lvbl9mb3Jfc2lnbl90b19zd2FwBQNuaWwFBHVuaXQDCQAAAgUPc3dhcF9mZWVfdG9fYXJ0BQ9zd2FwX2ZlZV90b19hcnQEEGFtb3VudF9hcnRfYWZ0ZXIJAQpnZXRCYWxhbmNlAQUKYXJ0QXNzZXRJZAMJAAACBRBhbW91bnRfYXJ0X2FmdGVyBRBhbW91bnRfYXJ0X2FmdGVyAwYJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICE2Fzc2V0aWQgcmVjZWl2ZWQgPSAJANgEAQkBBXZhbHVlAQUHYXNzZXRJZAISYW1vdW50IHJlY2VpdmVkID0gCQCkAwEFBmFtb3VudAImIGFtb3VudF9jb21taXNzaW9uX2Zvcl9zaWduX3RvX3N3YXAgPSAJAKQDAQUiYW1vdW50X2NvbW1pc3Npb25fZm9yX3NpZ25fdG9fc3dhcAIRIGFtb3VudEZvclNpZ24gPSAJAKQDAQUNYW1vdW50Rm9yU2lnbgISIGFtb3VudEZvckFnZW50ID0gCQCkAwEFDmFtb3VudEZvckFnZW50AhQgYW1vdW50Rm9yQ3JlYXRvciA9IAkApAMBBRBhbW91bnRGb3JDcmVhdG9yAhggYW1vdW50Rm9yUHVibGljQWdlbnQgPSAJAKQDAQUUYW1vdW50Rm9yUHVibGljQWdlbnQEFGNvbW1pc3Npb25zV2l0aEFnZW50AwkBAiE9AgUOYW1vdW50Rm9yQWdlbnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQULZmVlUmVjZWl2ZXIDCQAAAgUHYXNzZXRJZAUKYXJ0QXNzZXRJZAkAZQIFDWFtb3VudEZvclNpZ24FDmFtb3VudEZvckFnZW50CQBlAgUQYW1vdW50X2FydF9hZnRlcgURYW1vdW50X2FydF9iZWZvcmUFCmFydEFzc2V0SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBWFnZW50BQ5hbW91bnRGb3JBZ2VudAUHYXNzZXRJZAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQtmZWVSZWNlaXZlcgMJAAACBQdhc3NldElkBQphcnRBc3NldElkBQ1hbW91bnRGb3JTaWduCQBlAgUQYW1vdW50X2FydF9hZnRlcgURYW1vdW50X2FydF9iZWZvcmUFCmFydEFzc2V0SWQFA25pbAQaY29tbWlzc2lvbnNXaXRoUHVibGljQWdlbnQDCQECIT0CBRRhbW91bnRGb3JQdWJsaWNBZ2VudAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQtwdWJsaWNBZ2VudAUUYW1vdW50Rm9yUHVibGljQWdlbnQFB2Fzc2V0SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBmlzc3VlcgkAZQIFEGFtb3VudEZvckNyZWF0b3IFFGFtb3VudEZvclB1YmxpY0FnZW50BQdhc3NldElkBQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBmlzc3VlcgUQYW1vdW50Rm9yQ3JlYXRvcgUHYXNzZXRJZAUDbmlsBAp0eFRvQ2FsbGVyAwULaXNTcG9uc29yZWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBmNhbGxlcgAABQR1bml0BQNuaWwFA25pbAQGYnV5UmVzCQDOCAIJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEJa2V5SXNzdWVkAgUGaXNzdWVyBQVhcnRJZAUNbmV3QW1vdW50U29sZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgICBG5mdF8JANgEAQUFaWRORlQFB3NvbGRLZXkJAMwIAgkBDEludGVnZXJFbnRyeQICEHRvdGFsX25mdF9pc3N1ZWQJAGQCBQh0b3RhbE5GVAABCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEKa2V5RW5kU2FsZQIFBmlzc3VlcgUFYXJ0SWQAAAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBCWtleU9uU2FsZQIFBmlzc3VlcgUFYXJ0SWQFCnNlbGxTdGF0dXMJAMwIAgUIaXNzdWVORlQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUKcmVjZWl2ZU5GVAABBQVpZE5GVAUDbmlsBRRjb21taXNzaW9uc1dpdGhBZ2VudAUaY29tbWlzc2lvbnNXaXRoUHVibGljQWdlbnQFCnR4VG9DYWxsZXIDBQVpc0JpZAkAzAgCBQhzb2xkRGF0YQkAzAgCBQliaWRVcGRhdGUJAMwIAgUJYmlkRGVsT2xkBQZidXlSZXMJAMwIAgUIc29sZERhdGEFBmJ1eVJlcwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEIYXNTdHJpbmcBAmJ2BAckbWF0Y2gwBQJidgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEA2J2MAUHJG1hdGNoMAUDYnYwCQACAQIkU3BvbnNvcmVkIFB1YmxpYyBLZXkgU3RyaW5nIGV4cGVjdGVkCgZpbnZva2UBB3NldENvbmYCA2tleQN2YWwEBmNhbGxlcgkApQgBCAUGaW52b2tlBmNhbGxlcgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIDCQEIY29udGFpbnMCBQNrZXkCBWNvbmZfCQDMCAIJAQtTdHJpbmdFbnRyeQIFA2tleQUDdmFsBQNuaWwJAAIBAiBFbnRyaWVzIHN0YXJ0aW5nIHdpdGggY29uZl8gb25seQkAAgECIllvdSBhcmUgbm90IGFsbG93ZWQgdG8gY2hhbmdlIHRoaXMBaQEKYWRkQXJ0d29yawwEbmFtZQtkZXNjcmlwdGlvbgR0YWdzBHR5cGUKY2lkRGlzcGxheQxzaGEyNTZFeHBvcnQJY2lkRXhwb3J0DXNoYTI1NkxpY2VuY2UKY2lkTGljZW5jZQdjcmF3bGVyCXJveWFsdGllcwZwdWJLZXkEDSR0MDIxNTM2MjE2MDkJARVpZENhbGxlckRhdGVTcG9uc29yZWQCBQFpBQZwdWJLZXkEBWFydElkCAUNJHQwMjE1MzYyMTYwOQJfMQQGY2FsbGVyCAUNJHQwMjE1MzYyMTYwOQJfMgQEZGF0ZQgFDSR0MDIxNTM2MjE2MDkCXzMEC2lzU3BvbnNvcmVkCAUNJHQwMjE1MzYyMTYwOQJfNAQNJHQwMjE2MTkyMTY4OAkBCnNldExJY2VuY2UCBQpjaWRMaWNlbmNlBQ1zaGEyNTZMaWNlbmNlBApsaWNlbmNlQ0lECAUNJHQwMjE2MTkyMTY4OAJfMQQLbGljZW5jZUhhc2gIBQ0kdDAyMTYxOTIxNjg4Al8yBA92YWxpZGF0ZUFydHdvcmsJARN2YWxpZGF0ZUFydHdvcmtEYXRhCgUGY2FsbGVyBQpjaWREaXNwbGF5BQljaWRFeHBvcnQFCmxpY2VuY2VDSUQFDHNoYTI1NkV4cG9ydAULbGljZW5jZUhhc2gFBG5hbWUFC2Rlc2NyaXB0aW9uBQR0YWdzBQlyb3lhbHRpZXMDCQECIT0CBQ92YWxpZGF0ZUFydHdvcmsCAAkAAgECFVNvbWV0aGluZyB3ZW50IHdyb25nIQQQd2hpdGVsaXN0ZWRfZHJvcAkAZgIJAQ5jaGVja1doaXRlbGlzdAEJAKwCAgUGY2FsbGVyAgtfZnJlZV9kcm9wcwAABA0kdDAyMTk4NzIyMDc1AwUQd2hpdGVsaXN0ZWRfZHJvcAkAlAoCAAAFCmFydEFzc2V0SWQJAQ92YWxpZGF0ZVBheW1lbnQBBQFpBAZhbW91bnQIBQ0kdDAyMTk4NzIyMDc1Al8xBAdhc3NldElkCAUNJHQwMjE5ODcyMjA3NQJfMgMJAQEhAQkBCWlzRGVmaW5lZAEFBmFtb3VudAkAAgECFFNvbWV0aGluZyB3ZW50IHdyb25nBBdkZWNyZWFzZV93aGl0ZWxpc3RfZHJvcAMFEHdoaXRlbGlzdGVkX2Ryb3AJAPwHBAUNd2hpdGVsaXN0RGFwcAILdXNlRnJlZURyb3AJAMwIAgUGY2FsbGVyBQNuaWwFA25pbAUEdW5pdAMJAAACBRdkZWNyZWFzZV93aGl0ZWxpc3RfZHJvcAUXZGVjcmVhc2Vfd2hpdGVsaXN0X2Ryb3AECnR4VG9DYWxsZXIDBQtpc1Nwb25zb3JlZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUGY2FsbGVyAAAFBHVuaXQFA25pbAUDbmlsCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQdrZXlEYXRlAgUGY2FsbGVyBQVhcnRJZAUEZGF0ZQkAzAgCCQELU3RyaW5nRW50cnkCCQEHa2V5TmFtZQIFBmNhbGxlcgUFYXJ0SWQFBG5hbWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBB2tleURlc2MCBQZjYWxsZXIFBWFydElkBQtkZXNjcmlwdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5RGlzcGxheUNpZAIFBmNhbGxlcgUFYXJ0SWQFCmNpZERpc3BsYXkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUV4cG9ydENpZAIFBmNhbGxlcgUFYXJ0SWQFCWNpZEV4cG9ydAkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5RXhwb3J0SGFzaAIFBmNhbGxlcgUFYXJ0SWQFDHNoYTI1NkV4cG9ydAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5TGljZW5jZUhhc2gCBQZjYWxsZXIFBWFydElkBQtsaWNlbmNlSGFzaAkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5TGljZW5jZUNpZAIFBmNhbGxlcgUFYXJ0SWQFCmxpY2VuY2VDSUQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBB2tleVR5cGUCBQZjYWxsZXIFBWFydElkBQR0eXBlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlUYWdzAgUGY2FsbGVyBQVhcnRJZAUEdGFncwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCmtleU1heE1pbnQCBQZjYWxsZXIFBWFydElkAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQlrZXlJc3N1ZWQCBQZjYWxsZXIFBWFydElkAAAJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQlrZXlPblNhbGUCBQZjYWxsZXIFBWFydElkBwkAzAgCCQELU3RyaW5nRW50cnkCCQEKa2V5Q3Jhd2xlcgIFBmNhbGxlcgUFYXJ0SWQFB2NyYXdsZXIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQxrZXlSb3lhbHRpZXMCBQZjYWxsZXIFBWFydElkBQlyb3lhbHRpZXMJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFC2ZlZVJlY2VpdmVyBQZhbW91bnQFCmFydEFzc2V0SWQFA25pbAUKdHhUb0NhbGxlcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ11cGRhdGVBcnR3b3JrDQR0eGlkBG5hbWULZGVzY3JpcHRpb24EdGFncwR0eXBlCmNpZERpc3BsYXkMc2hhMjU2RXhwb3J0CWNpZEV4cG9ydA1zaGEyNTZMaWNlbmNlCmNpZExpY2VuY2UHY3Jhd2xlcglyb3lhbHRpZXMGcHViS2V5AwkBASEBBQtkYXBwUnVubmluZwkAAgEFDm1haW50ZW5hbmNlTVNHBA0kdDAyMzk5MDI0MDYwCQEVaWRDYWxsZXJEYXRlU3BvbnNvcmVkAgUBaQUGcHViS2V5BAJpZAgFDSR0MDIzOTkwMjQwNjACXzEEBmNhbGxlcggFDSR0MDIzOTkwMjQwNjACXzIEBGRhdGUIBQ0kdDAyMzk5MDI0MDYwAl8zBAtpc1Nwb25zb3JlZAgFDSR0MDIzOTkwMjQwNjACXzQEDSR0MDI0MDcwMjQxMzkJAQpzZXRMSWNlbmNlAgUKY2lkTGljZW5jZQUNc2hhMjU2TGljZW5jZQQKbGljZW5jZUNJRAgFDSR0MDI0MDcwMjQxMzkCXzEEC2xpY2VuY2VIYXNoCAUNJHQwMjQwNzAyNDEzOQJfMgQPdmFsaWRhdGVBcnR3b3JrCQETdmFsaWRhdGVBcnR3b3JrRGF0YQoFBmNhbGxlcgUKY2lkRGlzcGxheQUJY2lkRXhwb3J0BQpsaWNlbmNlQ0lEBQxzaGEyNTZFeHBvcnQFC2xpY2VuY2VIYXNoBQRuYW1lBQtkZXNjcmlwdGlvbgUEdGFncwUJcm95YWx0aWVzAwkBAiE9AgUPdmFsaWRhdGVBcnR3b3JrAgAJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEECmVudHJ5RXhpc3QJAQ5nZXRTdHJpbmdCeUtleQEJAQdrZXlOYW1lAgUGY2FsbGVyBQR0eGlkAwkAAAIFCmVudHJ5RXhpc3QCAAkAAgECD0VudHJ5IG5vdCBmb3VuZAQEZmxhZwkBDmdldFN0cmluZ0J5S2V5AQkBB2tleUZsYWcCBQZjYWxsZXIFBHR4aWQDCQAAAgUEZmxhZwIHSUxMRUdBTAkAAgECHUNhbm5vdCB1cGRhdGUgSUxMRUdBTCBhcnR3b3JrAwkBASEBCQELaXNBcnRNaW50ZWQCBQZjYWxsZXIFBHR4aWQECnR4VG9DYWxsZXIDBQtpc1Nwb25zb3JlZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUGY2FsbGVyAAAFBHVuaXQFA25pbAUDbmlsCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBB2tleU5hbWUCBQZjYWxsZXIFBHR4aWQFBG5hbWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBB2tleURlc2MCBQZjYWxsZXIFBHR4aWQFC2Rlc2NyaXB0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlEaXNwbGF5Q2lkAgUGY2FsbGVyBQR0eGlkBQpjaWREaXNwbGF5CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlFeHBvcnRDaWQCBQZjYWxsZXIFBHR4aWQFCWNpZEV4cG9ydAkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5RXhwb3J0SGFzaAIFBmNhbGxlcgUEdHhpZAUMc2hhMjU2RXhwb3J0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlMaWNlbmNlQ2lkAgUGY2FsbGVyBQR0eGlkBQpsaWNlbmNlQ0lECQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlMaWNlbmNlSGFzaAIFBmNhbGxlcgUEdHhpZAULbGljZW5jZUhhc2gJAMwIAgkBC1N0cmluZ0VudHJ5AgkBB2tleVRhZ3MCBQZjYWxsZXIFBHR4aWQFBHRhZ3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBB2tleVR5cGUCBQZjYWxsZXIFBHR4aWQFBHR5cGUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBCmtleUNyYXdsZXICBQZjYWxsZXIFBHR4aWQFB2NyYXdsZXIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQxrZXlSb3lhbHRpZXMCBQZjYWxsZXIFBHR4aWQFCXJveWFsdGllcwUDbmlsBQp0eFRvQ2FsbGVyCQACAQIOQWxyZWFkeSBtaW50ZWQBaQELZmxhZ0FydHdvcmsEBWFydElkBGFkZHIEZmxhZwRub3RlBA0kdDAyNTc2NjI1ODAwCQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQ0kdDAyNTc2NjI1ODAwAl8xBAZjYWxsZXIIBQ0kdDAyNTc2NjI1ODAwAl8yAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUFY2hyaXMJAMwIAgkApQgBBQR0aGlzBQNuaWwFBmNhbGxlcgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAICB0NPTlNFTlQJAMwIAgIACQDMCAICD0NIQU5HRV9SRVFVSVJFRAkAzAgCAgdGTEFHR0VECQDMCAICB0lMTEVHQUwFA25pbAUEZmxhZwkAzAgCCQELU3RyaW5nRW50cnkCCQEHa2V5RmxhZwIFBGFkZHIFBWFydElkBQRmbGFnCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlOb3RlAgUEYWRkcgUFYXJ0SWQFBG5vdGUFA25pbAkAAgEJAKwCAgIOVW5rbm93IHN0YXR1cyAFBGZsYWcJAAIBAhNZb3UgYXJlIG5vdCBhbGxvd2VkAWkBDWRlbGV0ZUFydHdvcmsCBWFydElkBGFkZHIEDSR0MDI2MjM2MjYyNzAJAQxpZENhbGxlckRhdGUBBQFpBAJpZAgFDSR0MDI2MjM2MjYyNzACXzEEBmNhbGxlcggFDSR0MDI2MjM2MjYyNzACXzIECWFkZHJUb1VzZQMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIFBGFkZHIFBmNhbGxlcgQKZW50cnlFeGlzdAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQEOZ2V0U3RyaW5nQnlLZXkBCQEHa2V5TmFtZQIFCWFkZHJUb1VzZQUFYXJ0SWQCIE5vIGFydCBtYXRjaGluZyBmb3IgdGhpcyBhZGRyZXNzAwkAAAIFCmVudHJ5RXhpc3QCAAkAAgECIE5vIGFydCBtYXRjaGluZyBmb3IgdGhpcyBhZGRyZXNzBApzaGEyNTZIYXNoCQEOZ2V0U3RyaW5nQnlLZXkBCQERa2V5SGFzaEJ5VHhpZEFkZHICBQlhZGRyVG9Vc2UFBWFydElkBAZzaWduSUQDCQECIT0CBQpzaGEyNTZIYXNoAgAJAQ5nZXRTdHJpbmdCeUtleQEJAQlrZXlTaWduSUQCBQlhZGRyVG9Vc2UFBWFydElkAgAEDXNpZ25JRF9sZWdhY3kDCQAAAgUGc2lnbklEAgAFA25pbAkAzAgCCQELRGVsZXRlRW50cnkBCQENa2V5aWRCeVNpZ25pZAIFCWFkZHJUb1VzZQUGc2lnbklEBQNuaWwEDGRhdGFUb0RlbGV0ZQkAzggCCQDMCAIJAQtEZWxldGVFbnRyeQEJAQdrZXlEYXRlAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEHa2V5TmFtZQIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBB2tleURlc2MCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ1rZXlEaXNwbGF5Q2lkAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEMa2V5RXhwb3J0Q2lkAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQENa2V5RXhwb3J0SGFzaAIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDmtleUxpY2VuY2VIYXNoAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQENa2V5TGljZW5jZUNpZAIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBB2tleVR5cGUCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQdrZXlUYWdzAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEKa2V5TWF4TWludAIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBCWtleVNpZ25JRAIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBCWtleUlzc3VlZAIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBCWtleU9uU2FsZQIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBB2tleUZsYWcCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQhrZXlQcmljZQIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBEmtleUFzc2V0SWRBY2NlcHRlZAIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDmtleU93bmVyQnlIYXNoAQUKc2hhMjU2SGFzaAkAzAgCCQELRGVsZXRlRW50cnkBCQEKa2V5RW5kU2FsZQIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBB2tleU5vdGUCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQprZXlDcmF3bGVyAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEMa2V5Um95YWx0aWVzAgUJYWRkclRvVXNlBQVhcnRJZAUDbmlsBQ1zaWduSURfbGVnYWN5AwkBASEBCQELaXNBcnRNaW50ZWQCBQlhZGRyVG9Vc2UFBWFydElkAwkBASEBBQtkYXBwUnVubmluZwkAAgEFDm1haW50ZW5hbmNlTVNHBQxkYXRhVG9EZWxldGUDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQVjaHJpcwkAzAgCCQClCAEFBHRoaXMFA25pbAUGY2FsbGVyBQxkYXRhVG9EZWxldGUJAAIBAihBcnQgYWxyZWFkeSBtaW50ZWQsIHlvdSBjYW5ub3QgZGVsZXRlIGl0AWkBC3NlbGxBcnR3b3JrBgVhcnRJZAVwcmljZQdtYXhNaW50B2Fzc2V0SWQIYmxvY2tFbmQGcHViS2V5BA0kdDAyOTA0OTI5MTE5CQEVaWRDYWxsZXJEYXRlU3BvbnNvcmVkAgUBaQUGcHViS2V5BAJpZAgFDSR0MDI5MDQ5MjkxMTkCXzEEBmNhbGxlcggFDSR0MDI5MDQ5MjkxMTkCXzIEBGRhdGUIBQ0kdDAyOTA0OTI5MTE5Al8zBAtpc1Nwb25zb3JlZAgFDSR0MDI5MDQ5MjkxMTkCXzQEC2FydHdvcmtOYW1lCQEOZ2V0U3RyaW5nQnlLZXkBCQEHa2V5TmFtZQIFBmNhbGxlcgUFYXJ0SWQDCQAAAgULYXJ0d29ya05hbWUCAAkAAgECI1RoaXMgYXJ0IGRvZXNuJ3QgbWF0Y2ggeW91ciBhY2NvdW50BARmbGFnCQEOZ2V0U3RyaW5nQnlLZXkBCQEHa2V5RmxhZwIFBmNhbGxlcgUFYXJ0SWQDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCAg9DSEFOR0VfUkVRVUlSRUQJAMwIAgIHRkxBR0dFRAkAzAgCAgdJTExFR0FMBQNuaWwFBGZsYWcJAAIBAg9GbGFnZ2VkIGFydHdvcmsEBmJpZE5icgkBD2dldEludGVnZXJCeUtleQEJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQVhcnRJZAMJAGYCAAAFCGJsb2NrRW5kCQACAQIMTmVnYXRpdmUgZW5kAwMJAGYCBQhibG9ja0VuZAAAAwkBAiE9AgUHbWF4TWludAABBgkBAiE9AgUFcHJpY2UAAAcJAAIBAjpUaW1lZCBvZmZlciBvbmx5IGFsbG93ZWQgZm9yIHVuaXF1ZSBlZGl0aW9uIGFuZCBvZmZlciBvbmx5BApiYXNlSGVpZ2h0AwkAAAIFCGJsb2NrRW5kAAAAAAUGaGVpZ2h0AwkBASEBCQEQYWNjZXB0ZWRBc3NldElkcwEFB2Fzc2V0SWQJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEDCQEBIQEJAQ92YWxpZGF0ZU1pblNlbGwBBQVwcmljZQkAAgECFVNvbWV0aGluZyB3ZW50IHdyb25nIQQJY2hlY2tVc2VyCQEMdmFsaWRhdGVVc2VyAQUGY2FsbGVyAwkBAiE9AgUJY2hlY2tVc2VyAgAJAAIBBQljaGVja1VzZXIECmFtb3VudFNvbGQJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEJa2V5SXNzdWVkAgUGY2FsbGVyBQVhcnRJZAQKbWF4Q2FuU2VsbAkBD2dldEludGVnZXJCeUtleQEJAQprZXlNYXhNaW50AgUGY2FsbGVyBQVhcnRJZAMJAGYCBQdtYXhNaW50AGQJAAIBAhwxMDAgZWRpdGlvbnMgbWF4IHBlciBhcnR3b3JrAwMJAQIhPQIFCmFtb3VudFNvbGQAAAkAAAIFCmFtb3VudFNvbGQFCm1heENhblNlbGwHCQACAQIUTWF4IGVkaXRpb24gcmVhY2hlZC4DAwkAZgIFCmFtb3VudFNvbGQAAAkBAiE9AgUKbWF4Q2FuU2VsbAUHbWF4TWludAcJAAIBAiZDYW5ub3QgY2hhbmdlIG1heGltdW0gaXNzdWFibGUgYW55bW9yZQMDCQBmAgUGYmlkTmJyAAAJAQIhPQIFCm1heENhblNlbGwFB21heE1pbnQHCQACAQIxQ2Fubm90IGNoYW5nZSBtYXhpbXVtIGlzc3VhYmxlIHdpdGggYWN0aXZlIG9yZGVycwQKc2VsbFN0YXR1cwMDCQBmAgUFcHJpY2UAAAkAZgIFB21heE1pbnQAAAcGBwQKdHhUb0NhbGxlcgMFC2lzU3BvbnNvcmVkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQZjYWxsZXIAAAUEdW5pdAUDbmlsBQNuaWwJAM4IAgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBCWtleU9uU2FsZQIFBmNhbGxlcgUFYXJ0SWQFCnNlbGxTdGF0dXMJAMwIAgkBDEludGVnZXJFbnRyeQIJAQhrZXlQcmljZQIFBmNhbGxlcgUFYXJ0SWQFBXByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEKa2V5TWF4TWludAIFBmNhbGxlcgUFYXJ0SWQFB21heE1pbnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEmtleUFzc2V0SWRBY2NlcHRlZAIFBmNhbGxlcgUFYXJ0SWQFB2Fzc2V0SWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQprZXlFbmRTYWxlAgUGY2FsbGVyBQVhcnRJZAkAZAIFCmJhc2VIZWlnaHQFCGJsb2NrRW5kBQNuaWwFCnR4VG9DYWxsZXIBaQEKYnV5QXJ0d29yawIFYXJ0SWQGaXNzdWVyCQEHYnV5TWludAYFAWkFBWFydElkBQZpc3N1ZXICAAIAAgABaQEGc2V0QmlkAgVhcnRJZAZpc3N1ZXIEDSR0MDMxNDkyMzE1MzIJAQxpZENhbGxlckRhdGUBBQFpBAJpZAgFDSR0MDMxNDkyMzE1MzICXzEEBmNhbGxlcggFDSR0MDMxNDkyMzE1MzICXzIEBGRhdGUIBQ0kdDAzMTQ5MjMxNTMyAl8zBA0kdDAzMTUzNzMxNTczCQEJaXNQYXltZW50AQUBaQQHcGF5bWVudAgFDSR0MDMxNTM3MzE1NzMCXzEEBmFtb3VudAgFDSR0MDMxNTM3MzE1NzMCXzIEB2Fzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCAUHcGF5bWVudAdhc3NldElkAgVXQVZFUwkA2AQBCQEFdmFsdWUBCAUHcGF5bWVudAdhc3NldElkBAhibG9ja0VuZAkBD2dldEludGVnZXJCeUtleQEJAQprZXlFbmRTYWxlAgUGaXNzdWVyBQVhcnRJZAMDCQECIT0CBQhibG9ja0VuZAAACQBnAgUGaGVpZ2h0BQhibG9ja0VuZAcJAAIBAgtTYWxlIGVuZGVkLgQGYmlkTmJyCQEPZ2V0SW50ZWdlckJ5S2V5AQkArAICAhJjdXJyZW50X2JpZGFtb3VudF8FBWFydElkAwkBASEBCQEQYWNjZXB0ZWRBc3NldElkcwEFB2Fzc2V0SWQJAAIBAhJhc3NldCBub3QgYWNjZXB0ZWQDCQEBIQEJAQ92YWxpZGF0ZU1pblNlbGwBBQZhbW91bnQJAAIBAg5Xcm9uZyBtaW4gc2VsbAQKYW1vdW50U29sZAkBD2dldEludGVnZXJCeUtleQEJAQlrZXlJc3N1ZWQCBQZpc3N1ZXIFBWFydElkBAptYXhDYW5TZWxsCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCmtleU1heE1pbnQCBQZpc3N1ZXIFBWFydElkAwkAZwIAAAUKbWF4Q2FuU2VsbAkAAgECI05vIG1heCBlZGl0aW9uIHNldCBmb3IgdGhpcyBhcnR3b3JrAwkAZwIFCmFtb3VudFNvbGQFCm1heENhblNlbGwJAAIBAhhTb2xkIG91dCwgeW91IGNhbm5vdCBiaWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICBGJpZF8FBWFydElkAgFfBQZpc3N1ZXICAV8FBmNhbGxlcgIBXwUCaWQCBV9PUEVOCQCsAgIJAKwCAgkArAICCQCsAgIFB2Fzc2V0SWQCAV8JAKQDAQUGYW1vdW50AgFfCQCkAwEFBGRhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQVhcnRJZAkAZAIFBmJpZE5icgABBQNuaWwBaQEJYWNjZXB0QmlkBQVhcnRJZAZpc3N1ZXIFYmlkSWQIYmlkT3duZXIGcHViS2V5CQEHYnV5TWludAYFAWkFBWFydElkBQZpc3N1ZXIFBWJpZElkBQhiaWRPd25lcgUGcHViS2V5AWkBCWNhbmNlbEJpZAQFYXJ0SWQGaXNzdWVyBWJpZElkCGJpZE93bmVyBA0kdDAzMjg5NzMyOTU4CQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQ0kdDAzMjg5NzMyOTU4Al8xBAZjYWxsZXIIBQ0kdDAzMjg5NzMyOTU4Al8yBARkYXRlCAUNJHQwMzI4OTczMjk1OAJfMwMDCQECIT0CBQZjYWxsZXIFCGJpZE93bmVyCQECIT0CBQZjYWxsZXIFBmlzc3VlcgcJAAIBAhlZb3UgY2Fubm90IGRvIHRoaXMgYWN0aW9uBA1yZXR1cm5Nb25leVRvAwkAAAIFBmNhbGxlcgUGaXNzdWVyBQhiaWRPd25lcgUGY2FsbGVyBAZiaWROYnIJAQ9nZXRJbnRlZ2VyQnlLZXkBCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUFYXJ0SWQECmJpZERhdGFLZXkJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIEYmlkXwUFYXJ0SWQCAV8FBmlzc3VlcgIBXwUIYmlkT3duZXICAV8FBWJpZElkBAdiaWREYXRhCQEOZ2V0U3RyaW5nQnlLZXkBCQCsAgIFCmJpZERhdGFLZXkCBV9PUEVOAwkAAAIFB2JpZERhdGECAAkAAgECDUJpZCBub3QgZm91bmQECmJpZERhdGFBcnIJALUJAgUHYmlkRGF0YQIBXwQHYXNzZXRJZAkBDWdldEJpZEFzc2V0SWQBCQCRAwIFCmJpZERhdGFBcnIAAAQJYmlkU3RhdHVzAghDQU5DRUxFRAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFCmJpZERhdGFLZXkCBV9PUEVOCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQpiaWREYXRhS2V5AgFfBQliaWRTdGF0dXMJAKwCAgkArAICBQdiaWREYXRhAgFfCQCkAwEFBGRhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQVhcnRJZAkAZQIFBmJpZE5icgABCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQ1yZXR1cm5Nb25leVRvCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKYmlkRGF0YUFycgABBQdhc3NldElkBQNuaWwBAnR4AQh2ZXJpZmllcgAEByRtYXRjaDAFAnR4AwkAAQIFByRtYXRjaDACF0ludm9rZVNjcmlwdFRyYW5zYWN0aW9uBANpbnYFByRtYXRjaDADAwMDCQAAAggFA2ludghmdW5jdGlvbgIKYWRkQXJ0d29yawkAAAIIBQNpbnYEZEFwcAUEdGhpcwcJAAACCAUDaW52A2ZlZQCgwh4HCQAAAggFA2ludgpmZWVBc3NldElkBQR1bml0BwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAkA2QQBCQEIYXNTdHJpbmcBCQCRAwIIBQNpbnYEYXJncwALAwMDAwkAAAIIBQNpbnYIZnVuY3Rpb24CDXVwZGF0ZUFydHdvcmsJAAACCAUDaW52BGRBcHAFBHRoaXMHCQAAAggFA2ludgNmZWUAoMIeBwkAAAIIBQNpbnYKZmVlQXNzZXRJZAUEdW5pdAcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAJANkEAQkBCGFzU3RyaW5nAQkAkQMCCAUDaW52BGFyZ3MADAMDAwMJAAACCAUDaW52CGZ1bmN0aW9uAgtzZWxsQXJ0d29yawkAAAIIBQNpbnYEZEFwcAUEdGhpcwcJAAACCAUDaW52A2ZlZQCgwh4HCQAAAggFA2ludgpmZWVBc3NldElkBQR1bml0BwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAkA2QQBCQEIYXNTdHJpbmcBCQCRAwIIBQNpbnYEYXJncwAFAwMDAwkAAAIIBQNpbnYIZnVuY3Rpb24CCWFjY2VwdEJpZAkAAAIIBQNpbnYEZEFwcAUEdGhpcwcJAAACCAUDaW52A2ZlZQCgwh4HCQAAAggFA2ludgpmZWVBc3NldElkBQR1bml0BwkAyBMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAkA2QQBCQEIYXNTdHJpbmcBCQCRAwIIBQNpbnYEYXJncwAECQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5CQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5hE7jJw==", "height": 2793421, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7TRsmnzD9TyY2ZXyBn6zHDSGRShpLa6iB6JE4nPVqFjU Next: GG5LzJ6W65sEEqBviQzd2XtFNMnatCuy7xbqpKfRCuet Diff:
OldNewDifferences
527527 then {
528528 let cr = bC(s)
529529 if ((cr == cr))
530- then {
531- let cs = if ((bZ != 0))
532- then [ScriptTransfer(Address(fromBase58String(g)), if ((be == s))
533- then (bY - bZ)
534- else (cr - cp), s), ScriptTransfer(Address(fromBase58String(bT)), bZ, be)]
535- else [ScriptTransfer(Address(fromBase58String(g)), if ((be == s))
536- then bY
537- else (cr - cp), s)]
538- let ct = if ((ca != 0))
539- then [ScriptTransfer(Address(fromBase58String(bV)), ca, be), ScriptTransfer(Address(fromBase58String(bE)), (cb - ca), be)]
540- else [ScriptTransfer(Address(fromBase58String(bE)), cb, be)]
541- let cu = if (bz)
542- then [ScriptTransfer(Address(fromBase58String(V)), 0, unit)]
543- else nil
544- let cv = ((([IntegerEntry(af(bE, X), cc), StringEntry(("nft_" + toBase58String(cf)), cl), IntegerEntry("total_nft_issued", (bN + 1)), IntegerEntry(ap(bE, X), 0), BooleanEntry(ag(bE, X), cg), ce, ScriptTransfer(ch, 1, cf)] ++ cs) ++ ct) ++ cu)
545- if (bK)
546- then [cn, ck, cj] :: cv
547- else cn :: cv
548- }
530+ then if (true)
531+ then throw(((((((((((((("assetid received = " + toBase58String(value(be))) + "amount received = ") + toString(bb)) + " amount_commission_for_sign_to_swap = ") + toString(co)) + " amountForSign = ") + toString(bY)) + " amountForAgent = ") + toString(bZ)) + " amountForCreator = ") + toString(cb)) + " amountForPublicAgent = ") + toString(ca)))
532+ else {
533+ let cs = if ((bZ != 0))
534+ then [ScriptTransfer(Address(fromBase58String(g)), if ((be == s))
535+ then (bY - bZ)
536+ else (cr - cp), s), ScriptTransfer(Address(fromBase58String(bT)), bZ, be)]
537+ else [ScriptTransfer(Address(fromBase58String(g)), if ((be == s))
538+ then bY
539+ else (cr - cp), s)]
540+ let ct = if ((ca != 0))
541+ then [ScriptTransfer(Address(fromBase58String(bV)), ca, be), ScriptTransfer(Address(fromBase58String(bE)), (cb - ca), be)]
542+ else [ScriptTransfer(Address(fromBase58String(bE)), cb, be)]
543+ let cu = if (bz)
544+ then [ScriptTransfer(Address(fromBase58String(V)), 0, unit)]
545+ else nil
546+ let cv = ((([IntegerEntry(af(bE, X), cc), StringEntry(("nft_" + toBase58String(cf)), cl), IntegerEntry("total_nft_issued", (bN + 1)), IntegerEntry(ap(bE, X), 0), BooleanEntry(ag(bE, X), cg), ce, ScriptTransfer(ch, 1, cf)] ++ cs) ++ ct) ++ cu)
547+ if (bK)
548+ then [cn, ck, cj] :: cv
549+ else cn :: cv
550+ }
549551 else throw("Strict value is not equal to itself.")
550552 }
551553 else throw("Strict value is not equal to itself.")
687689 then throw("No art matching for this address")
688690 else {
689691 let aA = b(ax(bg, X))
690- let cR = if ((aA == ""))
692+ let cR = if ((aA != ""))
691693 then b(ae(bg, X))
692694 else ""
693695 let cS = if ((cR == ""))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "2.0.0"
55
66 func b (c) = valueOrElse(getString(this, c), "")
77
88
99 let d = false
1010
1111 let e = value(addressFromString(b("conf_oracle_fee")))
1212
1313 let f = value(addressFromString(b("conf_signweb_dapp")))
1414
1515 let g = b("conf_fee_receiver")
1616
1717 let h = if (d)
1818 then value(addressFromString("3Mt4RGMEyjSWYAocTPqd55wdHQQB3PU2UCm"))
1919 else value(addressFromString(b("conf_users_dapp")))
2020
2121 let i = value(addressFromString(b("conf_whitelist_dapp")))
2222
2323 let j = b("conf_puzzle_art_pool")
2424
2525 let k = b("conf_accepted_asset_USDT_PP")
2626
2727 let l = b("conf_accepted_asset_ART")
2828
2929 let m = b("conf_accepted_asset_USDC_PP")
3030
3131 let n = b("conf_accepted_asset_EAST")
3232
3333 let o = b("conf_accepted_asset_PUZZLE")
3434
3535 let p = b("conf_accepted_asset_ETH_PP")
3636
3737 let q = "WAVES"
3838
3939 let r = fromBase58String(k)
4040
4141 let s = fromBase58String(l)
4242
4343 let t = fromBase58String(m)
4444
4545 let u = fromBase58String(n)
4646
4747 let v = fromBase58String(o)
4848
4949 let w = fromBase58String(p)
5050
5151 let x = base58''
5252
5353 let y = [k, l, m, n, o, q, p]
5454
5555 let z = b("conf_admin_1")
5656
5757 func A (c) = valueOrErrorMessage(getInteger(e, c), "Integer undefine or 0 in oracle")
5858
5959
6060 func B (c) = valueOrElse(getInteger(this, c), 0)
6161
6262
6363 func C (c) = valueOrElse(getInteger(i, c), 0)
6464
6565
6666 func D (c) = valueOrElse(getBoolean(this, c), false)
6767
6868
6969 let E = 8
7070
7171 let F = b("conf_default_licence")
7272
7373 let G = b("conf_default_licence_hash")
7474
7575 let H = valueOrElse(getBoolean(h, "conf_dapp_is_running"), true)
7676
7777 let I = valueOrElse(getString(h, "conf_maintenance_msg"), "")
7878
7979 let J = "SUSPENDED"
8080
8181 let K = "REMOVED"
8282
8383 let L = "UNREGISTERED"
8484
8585 let M = "ALLOWED"
8686
8787 let N = A(("certification_fee_" + toBase58String(s)))
8888
8989 let O = A(("mint_fee_" + toBase58String(s)))
9090
9191 func P (c) = valueOrElse(getInteger(this, c), 1000)
9292
9393
9494 func Q (R) = if (contains(R, "/"))
9595 then if (if ((76 > size(R)))
9696 then (size(split(R, "/")[0]) == 59)
9797 else false)
9898 then (16 > size(split(R, "/")[1]))
9999 else false
100100 else false
101101
102102
103103 func S (T) = (size(T) == 64)
104104
105105
106106 func U (V) = ("user_status_" + V)
107107
108108
109109 func W (V,X) = ((("art_date_" + X) + "_") + V)
110110
111111
112112 func Y (V,X) = ((("art_name_" + X) + "_") + V)
113113
114114
115115 func Z (V,X) = ((("art_desc_" + X) + "_") + V)
116116
117117
118118 func aa (V,X) = ((("art_display_cid_" + X) + "_") + V)
119119
120120
121121 func ab (V,X) = ((("art_export_hash_" + X) + "_") + V)
122122
123123
124124 func ac (V,X) = ((("art_export_cid_" + X) + "_") + V)
125125
126126
127127 func ad (V,X) = ((("art_maxmint_" + X) + "_") + V)
128128
129129
130130 func ae (V,X) = ((("art_signid_" + X) + "_") + V)
131131
132132
133133 func af (V,X) = ((("art_issued_" + X) + "_") + V)
134134
135135
136136 func ag (V,X) = ((("art_onsale_" + X) + "_") + V)
137137
138138
139139 func ah (V,X) = ((("art_licence_hash_" + X) + "_") + V)
140140
141141
142142 func ai (V,X) = ((("art_licence_cid_" + X) + "_") + V)
143143
144144
145145 func aj (V,X) = ((("art_tags_" + X) + "_") + V)
146146
147147
148148 func ak (V,X) = ((("art_type_" + X) + "_") + V)
149149
150150
151151 func al (V,X) = ((("art_note_" + X) + "_") + V)
152152
153153
154154 func am (V,X) = ((("art_crawler_cid_" + X) + "_") + V)
155155
156156
157157 func an (V,X) = ((("art_royalties_" + X) + "_") + V)
158158
159159
160160 func ao (V,X) = ((("art_price_" + X) + "_") + V)
161161
162162
163163 func ap (V,X) = ((("art_endsale_" + X) + "_") + V)
164164
165165
166166 func aq (V,X) = ((("art_assetAccepted_" + X) + "_") + V)
167167
168168
169169 func ar (V,X) = ((("art_flag_" + X) + "_") + V)
170170
171171
172172 func as (at) = ("artist_agent_" + at)
173173
174174
175175 func au (at) = ("artist_agent_primary_" + at)
176176
177177
178178 func av (at) = ("artist_public_agent_" + at)
179179
180180
181181 func aw (at) = ("artist_public_agent_primary_" + at)
182182
183183
184184 func ax (V,ay) = ((("get_hashbytxidaddr_" + ay) + "_") + V)
185185
186186
187187 func az (aA) = ("get_owner_by_hash_" + aA)
188188
189189
190190 func aB (V,aC) = ((("get_artidbysignid_" + aC) + "_") + V)
191191
192192
193193 func aD (aE,aF,aG) = if (!(Q(aE)))
194194 then throw("Wrong Display CID")
195195 else if (!(Q(aF)))
196196 then throw("Wrong Export CID")
197197 else if (if ((aG != ""))
198198 then !(Q(aG))
199199 else false)
200200 then throw("Wrong Licence CID")
201201 else true
202202
203203
204204 func aH (aI,aJ) = if (!(S(aI)))
205205 then throw("Export Hash 64 char. max")
206206 else if (!(S(aJ)))
207207 then throw("Licence Hash 64 char. max")
208208 else true
209209
210210
211211 func aK (aL,aM) = if ((size(aL) == 0))
212212 then throw("Field cannot be is empty")
213213 else if ((size(aL) > aM))
214214 then throw((aL + " is too long"))
215215 else true
216216
217217
218218 func aN (V) = {
219219 let aO = valueOrElse(getString(h, U(V)), L)
220220 if (if ((aO == L))
221221 then true
222222 else (aO == M))
223223 then "Register this account first with \"Account\" tab"
224224 else if ((aO == J))
225225 then "Account suspended"
226226 else if ((aO == K))
227227 then "Account removed"
228228 else ""
229229 }
230230
231231
232232 func aP (aG,aJ) = {
233233 let R = if ((size(aG) == 0))
234234 then F
235235 else aG
236236 let T = if ((size(aJ) == 0))
237237 then G
238238 else aJ
239239 $Tuple2(R, T)
240240 }
241241
242242
243243 func aQ (V,aE,aF,aR,aI,aS,aT,aU,aV,aW) = {
244244 let aX = aN(V)
245245 if ((aX != ""))
246246 then throw(aX)
247247 else if ((size(aE) == 0))
248248 then throw("Display CID cannot be empty")
249249 else if (!(aD(aE, aF, aR)))
250250 then throw("Problem with CID")
251251 else if (!(aH(aI, aS)))
252252 then throw("Problem with Hashes")
253253 else if (!(aK(aT, 100)))
254254 then throw("100 Char. max name")
255255 else if (!(aK(aU, 1000)))
256256 then throw("1000 Char. max description")
257257 else if (if ((0 > aW))
258258 then true
259259 else (aW > 1000))
260260 then throw("Royalties cannot be less than 0% or higher than 10%")
261261 else if ((size(split(aV, ",")) > 5))
262262 then throw("5 tags max.")
263263 else ""
264264 }
265265
266266
267267 func aY (aZ) = if ((size(aZ.payments) == 0))
268268 then throw("No payment attached")
269269 else {
270270 let ba = value(aZ.payments[0])
271271 let bb = value(ba.amount)
272272 $Tuple2(ba, bb)
273273 }
274274
275275
276276 func bc (aZ) = {
277277 let bd = aY(aZ)
278278 let ba = bd._1
279279 let bb = bd._2
280280 let be = if (if (isDefined(ba.assetId))
281281 then (ba.assetId == s)
282282 else false)
283283 then ba.assetId
284284 else throw("Only SIGN token accepted as transaction fee")
285285 if ((bb != N))
286286 then throw(("Payment amount should be " + toString(N)))
287287 else $Tuple2(bb, be)
288288 }
289289
290290
291291 func bf (bg,X) = {
292292 let bh = getInteger(this, af(bg, X))
293293 if ($isInstanceOf(bh, "Int"))
294294 then {
295295 let bi = bh
296296 if ((bi != 0))
297297 then true
298298 else false
299299 }
300300 else false
301301 }
302302
303303
304304 func bj (aZ,bk,bl) = {
305305 let bm = aY(aZ)
306306 let ba = bm._1
307307 let bb = bm._2
308308 let be = if (!(isDefined(ba.assetId)))
309309 then unit
310310 else if (if ((size(bk) > 0))
311311 then (toBase58String(value(ba.assetId)) == bk)
312312 else false)
313313 then ba.assetId
314314 else throw("Wrong asset id")
315315 if (if ((be == unit))
316316 then (bk != "")
317317 else false)
318318 then throw("Wrong asset id")
319319 else if ((bl != bb))
320320 then throw("Payment don't match")
321321 else $Tuple2(bb, be)
322322 }
323323
324324
325325 func bn (be) = if (!(containsElement(y, be)))
326326 then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted")
327327 else true
328328
329329
330330 func bo (bp) = if ((0 >= bp))
331331 then throw("Wrong minimum sell price")
332332 else true
333333
334334
335335 func bq (be) = if ((be == "WAVES"))
336336 then unit
337337 else fromBase58String(be)
338338
339339
340340 func br (bs) = {
341341 let bt = b((bs + "_OPEN"))
342342 if ((bt == ""))
343343 then throw("Bid not found")
344344 else {
345345 let bu = split(bt, "_")
346346 let bv = parseIntValue(bu[1])
347347 let bw = bq(bu[0])
348348 if ((0 >= bv))
349349 then throw("Wrong amount")
350350 else $Tuple2(bv, bw)
351351 }
352352 }
353353
354354
355355 func bx (aZ,by) = if (!(H))
356356 then throw(I)
357357 else {
358358 let bz = if ((by != ""))
359359 then valueOrElse(C((toString(addressFromPublicKey(fromBase58String(by))) + "_free_txs")), 0)
360360 else 0
361361 let V = if (if ((toBase58String(aZ.caller.bytes) == toString(this)))
362362 then (bz > 0)
363363 else false)
364364 then toString(addressFromPublicKey(fromBase58String(by)))
365365 else toBase58String(aZ.caller.bytes)
366366 let bA = if (if ((by != ""))
367367 then (bz > 0)
368368 else false)
369369 then invoke(i, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(by)))], nil)
370370 else unit
371371 if ((bA == bA))
372372 then $Tuple4(toBase58String(aZ.transactionId), V, lastBlock.timestamp, (bz > 0))
373373 else throw("Strict value is not equal to itself.")
374374 }
375375
376376
377377 func bB (aZ) = if (!(H))
378378 then throw(I)
379379 else $Tuple3(toBase58String(aZ.transactionId), toBase58String(aZ.caller.bytes), lastBlock.timestamp)
380380
381381
382382 func bC (be) = {
383383 let bh = be
384384 if ($isInstanceOf(bh, "ByteVector"))
385385 then {
386386 let bi = bh
387387 assetBalance(this, bi)
388388 }
389389 else wavesBalance(this).available
390390 }
391391
392392
393393 func bD (aZ,X,bE,bF,bG,by) = {
394394 let bH = bx(aZ, by)
395395 let bI = bH._1
396396 let V = bH._2
397397 let bJ = bH._3
398398 let bz = bH._4
399399 let bK = if (if (if ((V == bE))
400400 then (bG != "")
401401 else false)
402402 then (bF != "")
403403 else false)
404404 then true
405405 else false
406406 if (if (bK)
407407 then (V != bE)
408408 else false)
409409 then throw("You cannot do this action")
410410 else {
411411 let bL = B(ap(V, X))
412412 if (if (if ((bL != 0))
413413 then (height >= bL)
414414 else false)
415415 then !(bK)
416416 else false)
417417 then throw("Sale ended.")
418418 else {
419419 let bM = (V == bE)
420420 let bN = B("total_nft_issued")
421421 let bO = b(Y(bE, X))
422422 if ((bO == ""))
423423 then throw("Art doesn't exist")
424424 else {
425425 let bP = D(ag(bE, X))
426426 let bQ = B(af(bE, X))
427427 let bl = if (bM)
428428 then O
429429 else B(ao(bE, X))
430430 let bk = if (bM)
431431 then toBase58String(s)
432432 else b(aq(bE, X))
433433 let bR = B(ad(bE, X))
434434 if (if (if (!(bK))
435435 then !(bM)
436436 else false)
437437 then if (if ((0 >= bl))
438438 then true
439439 else !(bP))
440440 then true
441441 else (0 >= bR)
442442 else false)
443443 then throw("Art not for sale")
444444 else if (if (if (!(bK))
445445 then bM
446446 else false)
447447 then (0 >= bR)
448448 else false)
449449 then throw("Max issuable not set")
450450 else {
451451 let aX = aN(bE)
452452 if (if (bK)
453453 then (aX != "")
454454 else false)
455455 then throw(aX)
456456 else {
457457 let bs = ((((((("bid_" + X) + "_") + bE) + "_") + bG) + "_") + bF)
458458 let bS = if (bK)
459459 then br(bs)
460460 else bj(aZ, bk, bl)
461461 let bb = bS._1
462462 let be = bS._2
463463 let bT = valueOrElse(getString(h, as(bE)), g)
464464 let bU = valueOrElse(getInteger(h, au(bE)), 0)
465465 let bV = valueOrElse(getString(h, av(bE)), g)
466466 let bW = valueOrElse(getInteger(h, aw(bE)), 0)
467467 let bX = C(bE)
468468 let bY = fraction(bb, E, 100)
469469 let bZ = if (if (if ((bT != g))
470470 then (bU > 0)
471471 else false)
472472 then (height > bX)
473473 else false)
474474 then fraction(bb, bU, 10000)
475475 else 0
476476 let ca = if (if (if ((bV != g))
477477 then (bW > 0)
478478 else false)
479479 then (height > bX)
480480 else false)
481481 then fraction(bb, bW, 10000)
482482 else 0
483483 let cb = (bb - bY)
484484 if ((bQ == bR))
485485 then throw("Art sold out")
486486 else {
487487 let cc = (bQ + 1)
488488 let cd = ((((((((("Creator: " + bE) + ",
489489 ArtID: ") + X) + ",
490490 Artwork name: ") + bO) + ",
491491 Issue: ") + toString(cc)) + "/") + toString(bR))
492492 let ce = Issue(("SA_" + toString((bN + 1))), cd, 1, 0, false)
493493 let cf = calculateAssetId(ce)
494494 let cg = if (if ((cc == bR))
495495 then true
496496 else !(bP))
497497 then false
498498 else true
499499 let ch = if (if (if ((V == bE))
500500 then (bG != "")
501501 else false)
502502 then (bF != "")
503503 else false)
504504 then addressFromStringValue(bG)
505505 else aZ.caller
506506 let ci = if (!(isDefined(be)))
507507 then "WAVES"
508508 else toBase58String(value(be))
509509 let bt = b((bs + "_OPEN"))
510510 let cj = DeleteEntry((bs + "_OPEN"))
511511 let ck = StringEntry((bs + "_CLOSED"), ((bt + "_") + toString(bJ)))
512512 let cl = ((((((("art_sold_" + toString(cc)) + "_of_") + toString(bR)) + "_") + X) + "_") + bE)
513513 let cm = if (!(bK))
514514 then ((((((((((V + "_") + toString(bJ)) + "_") + bI) + "_") + toString(bl)) + "_") + bk) + "_") + toBase58String(cf))
515515 else ((((((((((toString(ch) + "_") + toString(bJ)) + "_") + bI) + "_") + toString(bb)) + "_") + ci) + "_") + toBase58String(cf))
516516 let cn = StringEntry(cl, cm)
517517 let co = if ((bZ != 0))
518518 then (bY - bZ)
519519 else bY
520520 let cp = bC(s)
521521 if ((cp == cp))
522522 then {
523523 let cq = if ((be != s))
524524 then invoke(Address(fromBase58String(j)), "swap", [l, 1], [AttachedPayment(be, co)])
525525 else unit
526526 if ((cq == cq))
527527 then {
528528 let cr = bC(s)
529529 if ((cr == cr))
530- then {
531- let cs = if ((bZ != 0))
532- then [ScriptTransfer(Address(fromBase58String(g)), if ((be == s))
533- then (bY - bZ)
534- else (cr - cp), s), ScriptTransfer(Address(fromBase58String(bT)), bZ, be)]
535- else [ScriptTransfer(Address(fromBase58String(g)), if ((be == s))
536- then bY
537- else (cr - cp), s)]
538- let ct = if ((ca != 0))
539- then [ScriptTransfer(Address(fromBase58String(bV)), ca, be), ScriptTransfer(Address(fromBase58String(bE)), (cb - ca), be)]
540- else [ScriptTransfer(Address(fromBase58String(bE)), cb, be)]
541- let cu = if (bz)
542- then [ScriptTransfer(Address(fromBase58String(V)), 0, unit)]
543- else nil
544- let cv = ((([IntegerEntry(af(bE, X), cc), StringEntry(("nft_" + toBase58String(cf)), cl), IntegerEntry("total_nft_issued", (bN + 1)), IntegerEntry(ap(bE, X), 0), BooleanEntry(ag(bE, X), cg), ce, ScriptTransfer(ch, 1, cf)] ++ cs) ++ ct) ++ cu)
545- if (bK)
546- then [cn, ck, cj] :: cv
547- else cn :: cv
548- }
530+ then if (true)
531+ then throw(((((((((((((("assetid received = " + toBase58String(value(be))) + "amount received = ") + toString(bb)) + " amount_commission_for_sign_to_swap = ") + toString(co)) + " amountForSign = ") + toString(bY)) + " amountForAgent = ") + toString(bZ)) + " amountForCreator = ") + toString(cb)) + " amountForPublicAgent = ") + toString(ca)))
532+ else {
533+ let cs = if ((bZ != 0))
534+ then [ScriptTransfer(Address(fromBase58String(g)), if ((be == s))
535+ then (bY - bZ)
536+ else (cr - cp), s), ScriptTransfer(Address(fromBase58String(bT)), bZ, be)]
537+ else [ScriptTransfer(Address(fromBase58String(g)), if ((be == s))
538+ then bY
539+ else (cr - cp), s)]
540+ let ct = if ((ca != 0))
541+ then [ScriptTransfer(Address(fromBase58String(bV)), ca, be), ScriptTransfer(Address(fromBase58String(bE)), (cb - ca), be)]
542+ else [ScriptTransfer(Address(fromBase58String(bE)), cb, be)]
543+ let cu = if (bz)
544+ then [ScriptTransfer(Address(fromBase58String(V)), 0, unit)]
545+ else nil
546+ let cv = ((([IntegerEntry(af(bE, X), cc), StringEntry(("nft_" + toBase58String(cf)), cl), IntegerEntry("total_nft_issued", (bN + 1)), IntegerEntry(ap(bE, X), 0), BooleanEntry(ag(bE, X), cg), ce, ScriptTransfer(ch, 1, cf)] ++ cs) ++ ct) ++ cu)
547+ if (bK)
548+ then [cn, ck, cj] :: cv
549+ else cn :: cv
550+ }
549551 else throw("Strict value is not equal to itself.")
550552 }
551553 else throw("Strict value is not equal to itself.")
552554 }
553555 else throw("Strict value is not equal to itself.")
554556 }
555557 }
556558 }
557559 }
558560 }
559561 }
560562 }
561563
562564
563565 func cw (cx) = {
564566 let bh = cx
565567 if ($isInstanceOf(bh, "String"))
566568 then {
567569 let cy = bh
568570 cy
569571 }
570572 else throw("Sponsored Public Key String expected")
571573 }
572574
573575
574576 @Callable(cz)
575577 func setConf (c,cA) = {
576578 let V = toString(cz.caller)
577579 if (containsElement([z, toString(this)], V))
578580 then if (contains(c, "conf_"))
579581 then [StringEntry(c, cA)]
580582 else throw("Entries starting with conf_ only")
581583 else throw("You are not allowed to change this")
582584 }
583585
584586
585587
586588 @Callable(aZ)
587589 func addArtwork (aT,aU,aV,cB,aE,aI,aF,aJ,aG,cC,aW,by) = {
588590 let cD = bx(aZ, by)
589591 let X = cD._1
590592 let V = cD._2
591593 let bJ = cD._3
592594 let bz = cD._4
593595 let cE = aP(aG, aJ)
594596 let aR = cE._1
595597 let aS = cE._2
596598 let cF = aQ(V, aE, aF, aR, aI, aS, aT, aU, aV, aW)
597599 if ((cF != ""))
598600 then throw("Something went wrong!")
599601 else {
600602 let cG = (C((V + "_free_drops")) > 0)
601603 let cH = if (cG)
602604 then $Tuple2(0, s)
603605 else bc(aZ)
604606 let bb = cH._1
605607 let be = cH._2
606608 if (!(isDefined(bb)))
607609 then throw("Something went wrong")
608610 else {
609611 let cI = if (cG)
610612 then invoke(i, "useFreeDrop", [V], nil)
611613 else unit
612614 if ((cI == cI))
613615 then {
614616 let cu = if (bz)
615617 then [ScriptTransfer(Address(fromBase58String(V)), 0, unit)]
616618 else nil
617619 ([IntegerEntry(W(V, X), bJ), StringEntry(Y(V, X), aT), StringEntry(Z(V, X), aU), StringEntry(aa(V, X), aE), StringEntry(ac(V, X), aF), StringEntry(ab(V, X), aI), StringEntry(ah(V, X), aS), StringEntry(ai(V, X), aR), StringEntry(ak(V, X), cB), StringEntry(aj(V, X), aV), IntegerEntry(ad(V, X), 0), IntegerEntry(af(V, X), 0), BooleanEntry(ag(V, X), false), StringEntry(am(V, X), cC), IntegerEntry(an(V, X), aW), ScriptTransfer(Address(fromBase58String(g)), bb, s)] ++ cu)
618620 }
619621 else throw("Strict value is not equal to itself.")
620622 }
621623 }
622624 }
623625
624626
625627
626628 @Callable(aZ)
627629 func updateArtwork (ay,aT,aU,aV,cB,aE,aI,aF,aJ,aG,cC,aW,by) = if (!(H))
628630 then throw(I)
629631 else {
630632 let cJ = bx(aZ, by)
631633 let bI = cJ._1
632634 let V = cJ._2
633635 let bJ = cJ._3
634636 let bz = cJ._4
635637 let cK = aP(aG, aJ)
636638 let aR = cK._1
637639 let aS = cK._2
638640 let cF = aQ(V, aE, aF, aR, aI, aS, aT, aU, aV, aW)
639641 if ((cF != ""))
640642 then throw("Something went wrong!")
641643 else {
642644 let cL = b(Y(V, ay))
643645 if ((cL == ""))
644646 then throw("Entry not found")
645647 else {
646648 let cM = b(ar(V, ay))
647649 if ((cM == "ILLEGAL"))
648650 then throw("Cannot update ILLEGAL artwork")
649651 else if (!(bf(V, ay)))
650652 then {
651653 let cu = if (bz)
652654 then [ScriptTransfer(Address(fromBase58String(V)), 0, unit)]
653655 else nil
654656 ([StringEntry(Y(V, ay), aT), StringEntry(Z(V, ay), aU), StringEntry(aa(V, ay), aE), StringEntry(ac(V, ay), aF), StringEntry(ab(V, ay), aI), StringEntry(ai(V, ay), aR), StringEntry(ah(V, ay), aS), StringEntry(aj(V, ay), aV), StringEntry(ak(V, ay), cB), StringEntry(am(V, ay), cC), IntegerEntry(an(V, ay), aW)] ++ cu)
655657 }
656658 else throw("Already minted")
657659 }
658660 }
659661 }
660662
661663
662664
663665 @Callable(aZ)
664666 func flagArtwork (X,cN,cM,cO) = {
665667 let cP = bB(aZ)
666668 let bI = cP._1
667669 let V = cP._2
668670 if (containsElement([z, toString(this)], V))
669671 then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cM))
670672 then [StringEntry(ar(cN, X), cM), StringEntry(al(cN, X), cO)]
671673 else throw(("Unknow status " + cM))
672674 else throw("You are not allowed")
673675 }
674676
675677
676678
677679 @Callable(aZ)
678680 func deleteArtwork (X,cN) = {
679681 let cQ = bB(aZ)
680682 let bI = cQ._1
681683 let V = cQ._2
682684 let bg = if (containsElement([z, toString(this)], V))
683685 then cN
684686 else V
685687 let cL = valueOrErrorMessage(b(Y(bg, X)), "No art matching for this address")
686688 if ((cL == ""))
687689 then throw("No art matching for this address")
688690 else {
689691 let aA = b(ax(bg, X))
690- let cR = if ((aA == ""))
692+ let cR = if ((aA != ""))
691693 then b(ae(bg, X))
692694 else ""
693695 let cS = if ((cR == ""))
694696 then nil
695697 else [DeleteEntry(aB(bg, cR))]
696698 let cT = ([DeleteEntry(W(bg, X)), DeleteEntry(Y(bg, X)), DeleteEntry(Z(bg, X)), DeleteEntry(aa(bg, X)), DeleteEntry(ac(bg, X)), DeleteEntry(ab(bg, X)), DeleteEntry(ah(bg, X)), DeleteEntry(ai(bg, X)), DeleteEntry(ak(bg, X)), DeleteEntry(aj(bg, X)), DeleteEntry(ad(bg, X)), DeleteEntry(ae(bg, X)), DeleteEntry(af(bg, X)), DeleteEntry(ag(bg, X)), DeleteEntry(ar(bg, X)), DeleteEntry(ao(bg, X)), DeleteEntry(aq(bg, X)), DeleteEntry(az(aA)), DeleteEntry(ap(bg, X)), DeleteEntry(al(bg, X)), DeleteEntry(am(bg, X)), DeleteEntry(an(bg, X))] ++ cS)
697699 if (!(bf(bg, X)))
698700 then if (!(H))
699701 then throw(I)
700702 else cT
701703 else if (containsElement([z, toString(this)], V))
702704 then cT
703705 else throw("Art already minted, you cannot delete it")
704706 }
705707 }
706708
707709
708710
709711 @Callable(aZ)
710712 func sellArtwork (X,bp,cU,be,bL,by) = {
711713 let cV = bx(aZ, by)
712714 let bI = cV._1
713715 let V = cV._2
714716 let bJ = cV._3
715717 let bz = cV._4
716718 let bO = b(Y(V, X))
717719 if ((bO == ""))
718720 then throw("This art doesn't match your account")
719721 else {
720722 let cM = b(ar(V, X))
721723 if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cM))
722724 then throw("Flagged artwork")
723725 else {
724726 let cW = B(("current_bidamount_" + X))
725727 if ((0 > bL))
726728 then throw("Negative end")
727729 else if (if ((bL > 0))
728730 then if ((cU != 1))
729731 then true
730732 else (bp != 0)
731733 else false)
732734 then throw("Timed offer only allowed for unique edition and offer only")
733735 else {
734736 let cX = if ((bL == 0))
735737 then 0
736738 else height
737739 if (!(bn(be)))
738740 then throw("Something went wrong!")
739741 else if (!(bo(bp)))
740742 then throw("Something went wrong!")
741743 else {
742744 let aX = aN(V)
743745 if ((aX != ""))
744746 then throw(aX)
745747 else {
746748 let bQ = B(af(V, X))
747749 let bR = B(ad(V, X))
748750 if ((cU > 100))
749751 then throw("100 editions max per artwork")
750752 else if (if ((bQ != 0))
751753 then (bQ == bR)
752754 else false)
753755 then throw("Max edition reached.")
754756 else if (if ((bQ > 0))
755757 then (bR != cU)
756758 else false)
757759 then throw("Cannot change maximum issuable anymore")
758760 else if (if ((cW > 0))
759761 then (bR != cU)
760762 else false)
761763 then throw("Cannot change maximum issuable with active orders")
762764 else {
763765 let cg = if (if ((bp > 0))
764766 then (cU > 0)
765767 else false)
766768 then true
767769 else false
768770 let cu = if (bz)
769771 then [ScriptTransfer(Address(fromBase58String(V)), 0, unit)]
770772 else nil
771773 ([BooleanEntry(ag(V, X), cg), IntegerEntry(ao(V, X), bp), IntegerEntry(ad(V, X), cU), StringEntry(aq(V, X), be), IntegerEntry(ap(V, X), (cX + bL))] ++ cu)
772774 }
773775 }
774776 }
775777 }
776778 }
777779 }
778780 }
779781
780782
781783
782784 @Callable(aZ)
783785 func buyArtwork (X,bE) = bD(aZ, X, bE, "", "", "")
784786
785787
786788
787789 @Callable(aZ)
788790 func setBid (X,bE) = {
789791 let cY = bB(aZ)
790792 let bI = cY._1
791793 let V = cY._2
792794 let bJ = cY._3
793795 let cZ = aY(aZ)
794796 let ba = cZ._1
795797 let bb = cZ._2
796798 let be = if (!(isDefined(ba.assetId)))
797799 then "WAVES"
798800 else toBase58String(value(ba.assetId))
799801 let bL = B(ap(bE, X))
800802 if (if ((bL != 0))
801803 then (height >= bL)
802804 else false)
803805 then throw("Sale ended.")
804806 else {
805807 let cW = B(("current_bidamount_" + X))
806808 if (!(bn(be)))
807809 then throw("asset not accepted")
808810 else if (!(bo(bb)))
809811 then throw("Wrong min sell")
810812 else {
811813 let bQ = B(af(bE, X))
812814 let bR = B(ad(bE, X))
813815 if ((0 >= bR))
814816 then throw("No max edition set for this artwork")
815817 else if ((bQ >= bR))
816818 then throw("Sold out, you cannot bid")
817819 else [StringEntry((((((((("bid_" + X) + "_") + bE) + "_") + V) + "_") + bI) + "_OPEN"), ((((be + "_") + toString(bb)) + "_") + toString(bJ))), IntegerEntry(("current_bidamount_" + X), (cW + 1))]
818820 }
819821 }
820822 }
821823
822824
823825
824826 @Callable(aZ)
825827 func acceptBid (X,bE,bF,bG,by) = bD(aZ, X, bE, bF, bG, by)
826828
827829
828830
829831 @Callable(aZ)
830832 func cancelBid (X,bE,bF,bG) = {
831833 let da = bB(aZ)
832834 let bI = da._1
833835 let V = da._2
834836 let bJ = da._3
835837 if (if ((V != bG))
836838 then (V != bE)
837839 else false)
838840 then throw("You cannot do this action")
839841 else {
840842 let db = if ((V == bE))
841843 then bG
842844 else V
843845 let cW = B(("current_bidamount_" + X))
844846 let bs = ((((((("bid_" + X) + "_") + bE) + "_") + bG) + "_") + bF)
845847 let bt = b((bs + "_OPEN"))
846848 if ((bt == ""))
847849 then throw("Bid not found")
848850 else {
849851 let bu = split(bt, "_")
850852 let be = bq(bu[0])
851853 let dc = "CANCELED"
852854 [DeleteEntry((bs + "_OPEN")), StringEntry(((bs + "_") + dc), ((bt + "_") + toString(bJ))), IntegerEntry(("current_bidamount_" + X), (cW - 1)), ScriptTransfer(Address(fromBase58String(db)), parseIntValue(bu[1]), be)]
853855 }
854856 }
855857 }
856858
857859
858860 @Verifier(dd)
859861 func de () = {
860862 let bh = dd
861863 if ($isInstanceOf(bh, "InvokeScriptTransaction"))
862864 then {
863865 let df = bh
864866 if (if (if (if ((df.function == "addArtwork"))
865867 then (df.dApp == this)
866868 else false)
867869 then (df.fee == 500000)
868870 else false)
869871 then (df.feeAssetId == unit)
870872 else false)
871873 then sigVerify(dd.bodyBytes, dd.proofs[0], fromBase58String(cw(df.args[11])))
872874 else if (if (if (if ((df.function == "updateArtwork"))
873875 then (df.dApp == this)
874876 else false)
875877 then (df.fee == 500000)
876878 else false)
877879 then (df.feeAssetId == unit)
878880 else false)
879881 then sigVerify(dd.bodyBytes, dd.proofs[0], fromBase58String(cw(df.args[12])))
880882 else if (if (if (if ((df.function == "sellArtwork"))
881883 then (df.dApp == this)
882884 else false)
883885 then (df.fee == 500000)
884886 else false)
885887 then (df.feeAssetId == unit)
886888 else false)
887889 then sigVerify(dd.bodyBytes, dd.proofs[0], fromBase58String(cw(df.args[5])))
888890 else if (if (if (if ((df.function == "acceptBid"))
889891 then (df.dApp == this)
890892 else false)
891893 then (df.fee == 500000)
892894 else false)
893895 then (df.feeAssetId == unit)
894896 else false)
895897 then sigVerify_128Kb(dd.bodyBytes, dd.proofs[0], fromBase58String(cw(df.args[4])))
896898 else sigVerify(dd.bodyBytes, dd.proofs[0], dd.senderPublicKey)
897899 }
898900 else sigVerify(dd.bodyBytes, dd.proofs[0], dd.senderPublicKey)
899901 }
900902

github/deemru/w8io/873ac7e 
89.02 ms