tx · 7nVaCgHAvWx5BaWpcG9zPpdM5Pap14irzetJBqwAcTkP

3PBLPmkM3ThytNj6QeJyLTX154if8S6Cea5:  -0.02200000 Waves

2023.11.20 15:36 [3917592] smart account 3PBLPmkM3ThytNj6QeJyLTX154if8S6Cea5 > SELF 0.00000000 Waves

{ "type": 13, "id": "7nVaCgHAvWx5BaWpcG9zPpdM5Pap14irzetJBqwAcTkP", "fee": 2200000, "feeAssetId": null, "timestamp": 1700483776158, "version": 1, "sender": "3PBLPmkM3ThytNj6QeJyLTX154if8S6Cea5", "senderPublicKey": "4EgWP2ePsBhKdAXQtnLEV8kwUiDaJmz4McAiVAS4CVjo", "proofs": [ "8ZZBa39WLi6UiPor6mK2gKLBCjeuJFsngXQmW12EVEmAtEUksX7qbNYuABC2ec2gPtmhySuqPPiyygLVJQY15LM" ], "script": "base64:BgJ4CAISDAoKCAEBAQEBAQgICBIECgIIARIECgIICBIECgIICBIECgIICBIFCgMICAESAwoBCBIDCgEIEgMKAQgSBQoDCAEBEgMKAQgSBAoCCAESBAoCCAgSAwoBCBIDCgEIEgQKAggIEgQKAggIEgMKAQgSAwoBCBIAOQEQd3JpdGVDb25zdFN0cmluZwIDa2V5BXZhbHVlAwkBASEBCQEJaXNEZWZpbmVkAQkAnQgCBQR0aGlzBQNrZXkJAQtTdHJpbmdFbnRyeQIFA2tleQUFdmFsdWUJAAIBCQCsAgICFWFscmVhZHkgaW5pdGlhbGl6ZWQ6IAUDa2V5AQh3cml0ZUludAIDa2V5BXZhbHVlAwkAZgIAAAUFdmFsdWUJAAIBCQCsAgIJAKwCAgkArAICAhd3cml0aW5nIG5lZ2F0aXZlIHZhbHVlIAkApAMBBQV2YWx1ZQIJIGZvciBrZXkgBQNrZXkJAQxJbnRlZ2VyRW50cnkCBQNrZXkFBXZhbHVlAQhjaGFuZ2VCeQIDa2V5BXZhbHVlCQEId3JpdGVJbnQCBQNrZXkJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQAABQV2YWx1ZQEFYXNJbnQBBXZhbHVlBAckbWF0Y2gwBQV2YWx1ZQMJAAECBQckbWF0Y2gwAgNJbnQEA2ludAUHJG1hdGNoMAUDaW50CQACAQIZd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IEludAEHYXNzZXRJZAEDc3RyAwkAAAIFA3N0cgIFV0FWRVMFBHVuaXQJANkEAQUDc3RyABJjb25maWdBZGRyZXNzU3RvcmUCBmNvbmZpZwANY29uZmlnQWRkcmVzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBRJjb25maWdBZGRyZXNzU3RvcmUCImNoaWxkcmVuOiBjb25maWcgYWRkcmVzcyBub3QgZm91bmQCFmludmFsaWQgY29uZmlnIGFkZHJlc3MBB2FsbG93ZWQBAm9wCQD8BwQFDWNvbmZpZ0FkZHJlc3MCCW9wQWxsb3dlZAkAzAgCBQJvcAUDbmlsBQNuaWwABkhFSUdIVAUGaGVpZ2h0AApwd3JBc3NldElkCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ1jb25maWdBZGRyZXNzAgxwb3dlckFzc2V0SWQCFnB3ciBhc3NldCBpZCBub3QgZm91bmQACHNsYXNoZXJzCQELdmFsdWVPckVsc2UCCQCdCAIFDWNvbmZpZ0FkZHJlc3MJAKwCAgkApQgBBQR0aGlzAglfc2xhc2hlcnMCAAANbWFpbkFkZHJlc3NlcwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ1jb25maWdBZGRyZXNzAg5tYWluX2FkZHJlc3NlcwIAAQtwZXJpb2RTdG9yZQEFY2hpbGQJAKwCAgIHcGVyaW9kXwUFY2hpbGQBBnBlcmlvZAEFY2hpbGQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBC3BlcmlvZFN0b3JlAQUFY2hpbGQAAAEKb3duZXJTdG9yZQEFY2hpbGQJAKwCAgIGb3duZXJfBQVjaGlsZAENdHJlYXN1cnlTdG9yZQEFY2hpbGQJAKwCAgIJdHJlYXN1cnlfBQVjaGlsZAENbG9ja1RpbWVTdG9yZQEFY2hpbGQJAKwCAgIJbG9ja1RpbWVfBQVjaGlsZAETcGVyaW9kTG9ja1RpbWVTdG9yZQIFY2hpbGQGcGVyaW9kCQCsAgIJAKwCAgkArAICAgdwZXJpb2RfCQCkAwEFBnBlcmlvZAIKX2xvY2tUaW1lXwUFY2hpbGQBEXNraW5SZXF1aXJlZFN0b3JlAQVjaGlsZAkArAICAg5za2luX3JlcXVpcmVkXwUFY2hpbGQBDHNraW5NYXhTdG9yZQEFY2hpbGQJAKwCAgIJc2tpbl9tYXhfBQVjaGlsZAETaW52ZXN0bWVudHNNYXhTdG9yZQEFY2hpbGQJAKwCAgIQaW52ZXN0bWVudHNfbWF4XwUFY2hpbGQBEm1pbkNvbW1pdG1lbnRTdG9yZQEFY2hpbGQJAKwCAgIObWluX2NvbW1pdG1lbnQFBWNoaWxkAQ5za2luVG90YWxTdG9yZQEFY2hpbGQJAKwCAgILc2tpbl90b3RhbF8FBWNoaWxkAA1wd3JUb3RhbFN0b3JlAglwd3JfdG90YWwBGGludmVzdG1lbnRzUmVxdWlyZWRTdG9yZQEFY2hpbGQJAKwCAgIVaW52ZXN0bWVudHNfcmVxdWlyZWRfBQVjaGlsZAEVaW52ZXN0bWVudHNUb3RhbFN0b3JlAQVjaGlsZAkArAICAhJpbnZlc3RtZW50c190b3RhbF8FBWNoaWxkARtpbnZlc3RtZW50c1BlcmlvZFRvdGFsU3RvcmUBBWNoaWxkCQCsAgIJAKwCAgkArAICAgdwZXJpb2RfCQCkAwEJAQZwZXJpb2QBBQVjaGlsZAITX2ludmVzdG1lbnRzX3RvdGFsXwUFY2hpbGQBFWludmVzdG1lbnRzVG9rZW5TdG9yZQEFY2hpbGQJAKwCAgISaW52ZXN0bWVudHNfdG9rZW5fBQVjaGlsZAEQY29tbWl0bWVudHNTdG9yZQEFY2hpbGQJAKwCAgIMY29tbWl0bWVudHNfBQVjaGlsZAERY3JlYXRlSGVpZ2h0U3RvcmUBBWNoaWxkCQCsAgICDmNyZWF0ZV9oZWlnaHRfBQVjaGlsZAEQc3RhcnRIZWlnaHRTdG9yZQEFY2hpbGQJAKwCAgINc3RhcnRfaGVpZ2h0XwUFY2hpbGQBFnN0YXJ0UGVyaW9kSGVpZ2h0U3RvcmUCBWNoaWxkBnBlcmlvZAkArAICCQCsAgIJAKwCAgIHcGVyaW9kXwkApAMBBQZwZXJpb2QCDl9zdGFydF9oZWlnaHRfBQVjaGlsZAEbc3RhcnRQZXJpb2RBZnRlckhlaWdodFN0b3JlAgVjaGlsZAZwZXJpb2QJAKwCAgkArAICCQCsAgICB3BlcmlvZF8JAKQDAQUGcGVyaW9kAhRfc3RhcnRfYWZ0ZXJfaGVpZ2h0XwUFY2hpbGQBHXN0YXJ0Q3VycmVudFBlcmlvZEhlaWdodFN0b3JlAQVjaGlsZAkBFnN0YXJ0UGVyaW9kSGVpZ2h0U3RvcmUCBQVjaGlsZAkBBnBlcmlvZAEFBWNoaWxkARFjYW5jZWxIZWlnaHRTdG9yZQEFY2hpbGQJAKwCAgIOY2FuY2VsX2hlaWdodF8FBWNoaWxkARBpbnZlc3RtZW50c1Rva2VuAQVjaGlsZAkBB2Fzc2V0SWQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWludmVzdG1lbnRzVG9rZW5TdG9yZQEFBWNoaWxkAh5pbnZlc3RtZW50cyBhc3NldCBpZCBub3QgZm91bmQBDXVzZXJTa2luU3RvcmUCBWNoaWxkBHVzZXIJAKwCAgkArAICCQCsAgICBXNraW5fBQVjaGlsZAIBXwUEdXNlcgEZdXNlclNraW5VbmxvY2tQZXJpb2RTdG9yZQIFY2hpbGQEdXNlcgkArAICCQCsAgIJAKwCAgITc2tpbl91bmxvY2tfcGVyaW9kXwUFY2hpbGQCAV8FBHVzZXIBG3VzZXJTa2luRXhpdGVkSW5QZXJpb2RTdG9yZQMFY2hpbGQEdXNlcgZwZXJpb2QJAKwCAgkArAICCQCsAgIJAQ11c2VyU2tpblN0b3JlAgUFY2hpbGQFBHVzZXICCF9wZXJpb2RfCQCkAwEFBnBlcmlvZAIHX2V4aXRlZAENaW52ZXN0b3JTdG9yZQIFY2hpbGQIaW52ZXN0b3IJAKwCAgkArAICCQCsAgICCWludmVzdG9yXwUFY2hpbGQCAV8FCGludmVzdG9yARljb21taXRBZnRlckFkZHJlc3Nlc1N0b3JlAQVjaGlsZAkArAICAhdjb21taXRfYWZ0ZXJfYWRkcmVzc2VzXwUFY2hpbGQBFWludmVzdEFmdGVyU3RhcnRTdG9yZQEFY2hpbGQJAKwCAgIXY2FuX2ludmVzdF9hZnRlcl9zdGFydF8FBWNoaWxkARBhc3NlcnROb3RTdGFydGVkAQVjaGlsZAMJAQlpc0RlZmluZWQBCQCfCAEJARBzdGFydEhlaWdodFN0b3JlAQUFY2hpbGQJAAIBAg9hbHJlYWR5IHN0YXJ0ZWQHAQ9hc3NlcnRJc1N0YXJ0ZWQBBWNoaWxkAwkAAAIJAQlpc0RlZmluZWQBCQCfCAEJARBzdGFydEhlaWdodFN0b3JlAQUFY2hpbGQHCQACAQIPbm90IHlldCBzdGFydGVkBwESYXNzZXJ0Tm90Q2FuY2VsbGVkAQVjaGlsZAMJAQlpc0RlZmluZWQBCQCfCAEJARFjYW5jZWxIZWlnaHRTdG9yZQEFBWNoaWxkCQACAQIQYWxyZWFkeSBjYW5jZWxlZAcBFmFzc2VydE5vdFN0YXJ0ZWRQZXJpb2QBBWNoaWxkAwkAAAIJAQZwZXJpb2QBBQVjaGlsZAAACQEQYXNzZXJ0Tm90U3RhcnRlZAEFBWNoaWxkAwkBCWlzRGVmaW5lZAEJAJ8IAQkBHXN0YXJ0Q3VycmVudFBlcmlvZEhlaWdodFN0b3JlAQUFY2hpbGQJAAIBAhZwZXJpb2QgYWxyZWFkeSBzdGFydGVkBwEOdXNlckNvbW1pdG1lbnQCBWNoaWxkBHVzZXIJAJ8IAQkBDXVzZXJTa2luU3RvcmUCBQVjaGlsZAUEdXNlcgEPY3VycmVudFVzZXJTa2luAgVjaGlsZAR1c2VyCQELdmFsdWVPckVsc2UCCQEOdXNlckNvbW1pdG1lbnQCBQVjaGlsZAUEdXNlcgAAAQhsb2NrVGltZQIFY2hpbGQGcGVyaW9kCQELdmFsdWVPckVsc2UCCQCfCAEJARNwZXJpb2RMb2NrVGltZVN0b3JlAgUFY2hpbGQFBnBlcmlvZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEJAQ1sb2NrVGltZVN0b3JlAQUFY2hpbGQCEW5vIGNoaWxkIGxvY2tUaW1lAQ9jb21wbGV0ZWRQZXJpb2QBBWNoaWxkBAFwCQEGcGVyaW9kAQUFY2hpbGQDCQAAAgUBcAAAAAAEC3BlcmlvZFN0YXJ0CQCfCAEJARZzdGFydFBlcmlvZEhlaWdodFN0b3JlAgUFY2hpbGQFAXADCQEJaXNEZWZpbmVkAQULcGVyaW9kU3RhcnQFAXAJAGUCBQFwAAEBDHVubG9ja0hlaWdodAEFY2hpbGQEAXAJAQ9jb21wbGV0ZWRQZXJpb2QBBQVjaGlsZAQKY2hpbGRTdGFydAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEJARBzdGFydEhlaWdodFN0b3JlAQUFY2hpbGQCFW5vIGNoaWxkIHN0YXJ0IGhlaWdodAkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFnN0YXJ0UGVyaW9kSGVpZ2h0U3RvcmUCBQVjaGlsZAUBcAUKY2hpbGRTdGFydAkBCGxvY2tUaW1lAgUFY2hpbGQFAXABCHRyZWFzdXJ5AQVjaGlsZAkBC3ZhbHVlT3JFbHNlAgkAoggBCQENdHJlYXN1cnlTdG9yZQEFBWNoaWxkBQVjaGlsZAEDaW50AQNrZXkJAKQDAQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQNrZXkAAAEDc3RyAQNrZXkJAQt2YWx1ZU9yRWxzZQIJAKIIAQUDa2V5AgABDWFkdmlzZVByb2plY3QBBWNoaWxkBAFwCQEGcGVyaW9kAQUFY2hpbGQECXBlcmlvZFN0cgkApAMBBQFwCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAghoZWlnaHQ6IAkApAMBBQZIRUlHSFQCCywgcHJvamVjdDogBQVjaGlsZAIJLCBvd25lcjogCQEDc3RyAQkBCm93bmVyU3RvcmUBBQVjaGlsZAIMLCB0cmVhc3VyeTogCQEIdHJlYXN1cnkBBQVjaGlsZAINLCBsb2NrX3RpbWU6IAkBA2ludAEJAQ1sb2NrVGltZVN0b3JlAQUFY2hpbGQCESwgc2tpbl9yZXF1aXJlZDogCQEDaW50AQkBEXNraW5SZXF1aXJlZFN0b3JlAQUFY2hpbGQCDCwgc2tpbl9tYXg6IAkBA2ludAEJAQxza2luTWF4U3RvcmUBBQVjaGlsZAISLCBtaW5fY29tbWl0bWVudDogCQEDaW50AQkBEm1pbkNvbW1pdG1lbnRTdG9yZQEFBWNoaWxkAg4sIHNraW5fdG90YWw6IAkBA2ludAEJAQ5za2luVG90YWxTdG9yZQEFBWNoaWxkAhgsIGludmVzdG1lbnRzX3JlcXVpcmVkOiAJAQNpbnQBCQEYaW52ZXN0bWVudHNSZXF1aXJlZFN0b3JlAQUFY2hpbGQCEywgaW52ZXN0bWVudHNfbWF4OiAJAQNpbnQBCQETaW52ZXN0bWVudHNNYXhTdG9yZQEFBWNoaWxkAhUsIGludmVzdG1lbnRzX3RvdGFsOiAJAQNpbnQBCQEVaW52ZXN0bWVudHNUb3RhbFN0b3JlAQUFY2hpbGQCFSwgaW52ZXN0bWVudHNfdG9rZW46IAkBA3N0cgEJARVpbnZlc3RtZW50c1Rva2VuU3RvcmUBBQVjaGlsZAIPLCBjb21taXRtZW50czogCQEDc3RyAQkBEGNvbW1pdG1lbnRzU3RvcmUBBQVjaGlsZAIRLCBjcmVhdGVfaGVpZ2h0OiAJAQNpbnQBCQERY3JlYXRlSGVpZ2h0U3RvcmUBBQVjaGlsZAIQLCBzdGFydF9oZWlnaHQ6IAkApAMBCQELdmFsdWVPckVsc2UCCQCfCAEJARBzdGFydEhlaWdodFN0b3JlAQUFY2hpbGQA////////////AQIRLCBjYW5jZWxfaGVpZ2h0OiAJAKQDAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQERY2FuY2VsSGVpZ2h0U3RvcmUBBQVjaGlsZAD///////////8BAgosIHBlcmlvZDogBQlwZXJpb2RTdHICCSwgcGVyaW9kXwUJcGVyaW9kU3RyAhVfc3RhcnRfYWZ0ZXJfaGVpZ2h0OiAJAKQDAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEbc3RhcnRQZXJpb2RBZnRlckhlaWdodFN0b3JlAgUFY2hpbGQFAXAA////////////AQIJLCBwZXJpb2RfBQlwZXJpb2RTdHICD19zdGFydF9oZWlnaHQ6IAkApAMBCQELdmFsdWVPckVsc2UCCQCfCAEJAR1zdGFydEN1cnJlbnRQZXJpb2RIZWlnaHRTdG9yZQEFBWNoaWxkAP///////////wECCSwgcGVyaW9kXwUJcGVyaW9kU3RyAgxfbG9ja190aW1lOiAJAKQDAQkBCGxvY2tUaW1lAgUFY2hpbGQFAXACESwgdW5sb2NrX2hlaWdodDogCQCkAwEJAQx1bmxvY2tIZWlnaHQBBQVjaGlsZAIcLCBwZXJpb2RfaW52ZXN0bWVudHNfdG90YWw6IAkBA2ludAEJARtpbnZlc3RtZW50c1BlcmlvZFRvdGFsU3RvcmUBBQVjaGlsZAERYWR2aXNlVXNlclByb2plY3QCBWNoaWxkBHVzZXIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCGhlaWdodDogCQCkAwEFBkhFSUdIVAILLCBwcm9qZWN0OiAFBWNoaWxkAgcsIHNraW46CQCkAwEJAQ9jdXJyZW50VXNlclNraW4CBQVjaGlsZAUEdXNlcgIILCBwb3dlcjoJAKQDAQkBC3ZhbHVlT3JFbHNlAgkBDnVzZXJDb21taXRtZW50AgUFY2hpbGQFBHVzZXIAAAIPLCBpbnZlc3RtZW50czogCQEDaW50AQkBDWludmVzdG9yU3RvcmUCBQVjaGlsZAUEdXNlcgEbY29tbWl0QWZ0ZXJTdGFydEZvckludGVybmFsBAFpBWNoaWxkB2FkZHJlc3MUYWRkaXRpb25hbExvY2tSb3VuZHMEAWEJAQdhbGxvd2VkAQITY29tbWl0QWZ0ZXJTdGFydEZvcgMJAAACBQFhBQFhAwkAZgIAAAUUYWRkaXRpb25hbExvY2tSb3VuZHMJAAIBAhxpbnZhbGlkIGFkZGl0aW9uYWxMb2NrUm91bmRzAwkBASEBCQEIY29udGFpbnMCCQELdmFsdWVPckVsc2UCCQCiCAEJARljb21taXRBZnRlckFkZHJlc3Nlc1N0b3JlAQUFY2hpbGQCAAkApQgBCAUBaQZjYWxsZXIJAAIBAiNjb21taXRBZnRlclN0YXJ0Rm9ySW50ZXJuYWwuIGRlbmllZAQBcAkAkQMCCAUBaQhwYXltZW50cwAAAwMJAQIhPQIIBQFwB2Fzc2V0SWQFCnB3ckFzc2V0SWQGCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAippbnZhbGlkIHBheW1lbnRzOiBvbmx5ICRQV1IgdG9rZW4gZXhwZWN0ZWQECmNvbW1pdG1lbnQIBQFwBmFtb3VudAQEY21kcwkAzAgCCQEIY2hhbmdlQnkCCQENdXNlclNraW5TdG9yZQIFBWNoaWxkBQdhZGRyZXNzBQpjb21taXRtZW50CQDMCAIJAQhjaGFuZ2VCeQIJAQ5za2luVG90YWxTdG9yZQEFBWNoaWxkBQpjb21taXRtZW50CQDMCAIJAQhjaGFuZ2VCeQIFDXB3clRvdGFsU3RvcmUFCmNvbW1pdG1lbnQFA25pbAMJAGYCBRRhZGRpdGlvbmFsTG9ja1JvdW5kcwAABAt1bmxvY2tSb3VuZAkAZAIJAQZwZXJpb2QBBQVjaGlsZAUUYWRkaXRpb25hbExvY2tSb3VuZHMJAMwIAgkBDEludGVnZXJFbnRyeQIJARl1c2VyU2tpblVubG9ja1BlcmlvZFN0b3JlAgUFY2hpbGQFB2FkZHJlc3MFC3VubG9ja1JvdW5kBQRjbWRzBQRjbWRzCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuFAFpAQpwcm9qZWN0Rm9yCgVvd25lcgRza2luB21heFNraW4NbWluQ29tbWl0bWVudAhsb2NrVGltZQtpbnZlc3RtZW50cw5tYXhJbnZlc3RtZW50cxBpbnZlc3RtZW50c1Rva2VuC2NvbW1pdG1lbnRzBWNoaWxkBAFhCQEHYWxsb3dlZAECCnByb2plY3RGb3IDCQAAAgUBYQUBYQMJAQEhAQkBCGNvbnRhaW5zAgUNbWFpbkFkZHJlc3NlcwkApQgBCAUBaQZjYWxsZXIJAAIBAgZkZW5pZWQEAXQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQVjaGlsZAIYaW52YWxpZCB0cmVhc3VyeSBhZGRyZXNzAwkAAAIFAXQFAXQEBXRva2VuCQEHYXNzZXRJZAEFEGludmVzdG1lbnRzVG9rZW4DCQAAAgUFdG9rZW4FBXRva2VuAwMJAGYCBQdtYXhTa2luAAAJAGYCBQRza2luBQdtYXhTa2luBwkAAgECD2ludmFsaWQgbWF4U2tpbgMDCQBmAgUObWF4SW52ZXN0bWVudHMAAAkAZgIFC2ludmVzdG1lbnRzBQ5tYXhJbnZlc3RtZW50cwcJAAIBAhZpbnZhbGlkIG1heEludmVzdG1lbnRzCQDMCAIJARB3cml0ZUNvbnN0U3RyaW5nAgkBCm93bmVyU3RvcmUBBQVjaGlsZAUFb3duZXIJAMwIAgkBCHdyaXRlSW50AgkBEWNyZWF0ZUhlaWdodFN0b3JlAQUFY2hpbGQFBkhFSUdIVAkAzAgCCQEId3JpdGVJbnQCCQERc2tpblJlcXVpcmVkU3RvcmUBBQVjaGlsZAUEc2tpbgkAzAgCCQEId3JpdGVJbnQCCQEMc2tpbk1heFN0b3JlAQUFY2hpbGQFB21heFNraW4JAMwIAgkBCHdyaXRlSW50AgkBEm1pbkNvbW1pdG1lbnRTdG9yZQEFBWNoaWxkBQ1taW5Db21taXRtZW50CQDMCAIJAQh3cml0ZUludAIJAQ1sb2NrVGltZVN0b3JlAQUFY2hpbGQFCGxvY2tUaW1lCQDMCAIJAQh3cml0ZUludAIJARhpbnZlc3RtZW50c1JlcXVpcmVkU3RvcmUBBQVjaGlsZAULaW52ZXN0bWVudHMJAMwIAgkBEHdyaXRlQ29uc3RTdHJpbmcCCQEVaW52ZXN0bWVudHNUb2tlblN0b3JlAQUFY2hpbGQFEGludmVzdG1lbnRzVG9rZW4JAMwIAgkBEHdyaXRlQ29uc3RTdHJpbmcCCQEQY29tbWl0bWVudHNTdG9yZQEFBWNoaWxkBQtjb21taXRtZW50cwkAzAgCCQEQd3JpdGVDb25zdFN0cmluZwIJAQ10cmVhc3VyeVN0b3JlAQUFY2hpbGQFBWNoaWxkCQDMCAIJAQh3cml0ZUludAIJARNpbnZlc3RtZW50c01heFN0b3JlAQUFY2hpbGQFDm1heEludmVzdG1lbnRzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENaW5jcmVyYXNlU2tpbgIFY2hpbGQNc2tpbkluY3JlbWVudAQBYQkBB2FsbG93ZWQBAg1pbmNyZXJhc2VTa2luAwkAAAIFAWEFAWEEAXMDCQEQYXNzZXJ0Tm90U3RhcnRlZAEFBWNoaWxkCQESYXNzZXJ0Tm90Q2FuY2VsbGVkAQUFY2hpbGQHAwkAAAIFAXMFAXMDCQBnAgAABQ1za2luSW5jcmVtZW50CQACAQIyaW52YWxpZCBhcmd1bWVudDogc2tpbkluY3JlbWVudCBzaG91bGQgYmUgcG9zaXRpdmUEBW93bmVyCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEKb3duZXJTdG9yZQEFBWNoaWxkAwkBAiE9AgkApQgBCAUBaQZjYWxsZXIFBW93bmVyCQACAQIGZGVuaWVkCQDMCAIJAQhjaGFuZ2VCeQIJARFza2luUmVxdWlyZWRTdG9yZQEFBWNoaWxkBQ1za2luSW5jcmVtZW50BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJY29tbWl0Rm9yAgVjaGlsZAdhZGRyZXNzBAFhCQEHYWxsb3dlZAECCWNvbW1pdEZvcgMJAAACBQFhBQFhBAFzCQEWYXNzZXJ0Tm90U3RhcnRlZFBlcmlvZAEFBWNoaWxkAwkAAAIFAXMFAXMEAXAJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQFwB2Fzc2V0SWQFCnB3ckFzc2V0SWQJAAIBAi9pbnZhbGlkIGF0dGFjaGVkIHBheW1lbnQ6ICRwb3dlciB0b2tlbiBleHBlY3RlZAQKY29tbWl0bWVudAgFAXAGYW1vdW50BA1taW5Db21taXRtZW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQkBEm1pbkNvbW1pdG1lbnRTdG9yZQEFBWNoaWxkAhNDaGlsZCBEQU8gbm90IGZvdW5kAwkAZgIFDW1pbkNvbW1pdG1lbnQFCmNvbW1pdG1lbnQJAAIBCQCsAgICE01pbi4gY29tbWl0bWVudCBpcyAJAKQDAQUNbWluQ29tbWl0bWVudAQPc2tpblRvdGFsU3RvcmUxCQEOc2tpblRvdGFsU3RvcmUBBQVjaGlsZAQMbmV3U2tpblRvdGFsCQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ9za2luVG90YWxTdG9yZTEAAAUKY29tbWl0bWVudAQHc2tpbk1heAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMc2tpbk1heFN0b3JlAQUFY2hpbGQAAAMDCQBmAgUHc2tpbk1heAAACQBmAgUMbmV3U2tpblRvdGFsBQdza2luTWF4BwkAAgEJAKwCAgIcVG90YWwgbWF4LiBza2luIGlzIHJlYWNoZWQ6IAkApAMBBQdza2luTWF4CQDMCAIJAQhjaGFuZ2VCeQIJAQ11c2VyU2tpblN0b3JlAgUFY2hpbGQFB2FkZHJlc3MFCmNvbW1pdG1lbnQJAMwIAgkBDEludGVnZXJFbnRyeQIFD3NraW5Ub3RhbFN0b3JlMQUMbmV3U2tpblRvdGFsCQDMCAIJAQhjaGFuZ2VCeQIFDXB3clRvdGFsU3RvcmUFCmNvbW1pdG1lbnQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5jb21taXRGb3JNaW5lcgIFY2hpbGQHYWRkcmVzcwQBYQkBB2FsbG93ZWQBAg5jb21taXRGb3JNaW5lcgMJAAACBQFhBQFhAwkBASEBCQEIY29udGFpbnMCBQ1tYWluQWRkcmVzc2VzCQClCAEIBQFpBmNhbGxlcgkAAgECBmRlbmllZAQBcAkAkQMCCAUBaQhwYXltZW50cwAAAwMJAQIhPQIIBQFwB2Fzc2V0SWQFCnB3ckFzc2V0SWQGCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAippbnZhbGlkIHBheW1lbnRzOiBvbmx5ICRQV1IgdG9rZW4gZXhwZWN0ZWQECmNvbW1pdG1lbnQIBQFwBmFtb3VudAkAzAgCCQEIY2hhbmdlQnkCCQENdXNlclNraW5TdG9yZQIFBWNoaWxkBQdhZGRyZXNzBQpjb21taXRtZW50CQDMCAIJAQhjaGFuZ2VCeQIJAQ5za2luVG90YWxTdG9yZQEFBWNoaWxkBQpjb21taXRtZW50CQDMCAIJAQhjaGFuZ2VCeQIFDXB3clRvdGFsU3RvcmUFCmNvbW1pdG1lbnQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARNjb21taXRBZnRlclN0YXJ0Rm9yAgVjaGlsZAdhZGRyZXNzCQEbY29tbWl0QWZ0ZXJTdGFydEZvckludGVybmFsBAUBaQUFY2hpbGQFB2FkZHJlc3MAAAFpASBjb21taXRBZnRlclN0YXJ0V2l0aExvY2tSb3VuZEZvcgMFY2hpbGQHYWRkcmVzcxRhZGRpdGlvbmFsTG9ja1JvdW5kcwkBG2NvbW1pdEFmdGVyU3RhcnRGb3JJbnRlcm5hbAQFAWkFBWNoaWxkBQdhZGRyZXNzBRRhZGRpdGlvbmFsTG9ja1JvdW5kcwFpAQZpbnZlc3QBBWNoaWxkBAFhCQEHYWxsb3dlZAECBmludmVzdAMJAAACBQFhBQFhBAFzCQEWYXNzZXJ0Tm90U3RhcnRlZFBlcmlvZAEFBWNoaWxkAwkAAAIFAXMFAXMEBXRva2VuCQEQaW52ZXN0bWVudHNUb2tlbgEFBWNoaWxkAwkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQV0b2tlbgkAAgECHGludmFsaWQgaW52ZXN0bWVudHMgYXNzZXQgaWQEBmFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEB21heGltdW0JAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2ludmVzdG1lbnRzTWF4U3RvcmUBBQVjaGlsZAAACgEFZGF0YXMBAWEJAMwIAgkBCGNoYW5nZUJ5AgkBDWludmVzdG9yU3RvcmUCBQVjaGlsZAkApQgBCAUBaQZjYWxsZXIFAWEJAMwIAgkBCGNoYW5nZUJ5AgkBFWludmVzdG1lbnRzVG90YWxTdG9yZQEFBWNoaWxkBQFhCQDMCAIJAQhjaGFuZ2VCeQIJARtpbnZlc3RtZW50c1BlcmlvZFRvdGFsU3RvcmUBBQVjaGlsZAUBYQUDbmlsAwkAZgIFB21heGltdW0AAAQKdG90YWxTdG9yZQkBFWludmVzdG1lbnRzVG90YWxTdG9yZQEFBWNoaWxkBAV0b3RhbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQp0b3RhbFN0b3JlAAAECmludmVzdG1lbnMJAJcDAQkAzAgCBQZhbW91bnQJAMwIAgkAZQIFB21heGltdW0FBXRvdGFsBQNuaWwDCQBnAgAABQppbnZlc3RtZW5zCQACAQkArAICAiNUb3RhbCBtYXguIGludmVzdG1lbnRzIGlzIHJlYWNoZWQ6IAkApAMBBQdtYXhpbXVtBApjaGFyZ2VCYWNrCQBlAgUGYW1vdW50BQppbnZlc3RtZW5zAwkAZgIFCmNoYXJnZUJhY2sAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFCmNoYXJnZUJhY2sFBXRva2VuCQEFZGF0YXMBBQppbnZlc3RtZW5zCQEFZGF0YXMBBQppbnZlc3RtZW5zCQEFZGF0YXMBBQZhbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEQaW52ZXN0QWZ0ZXJTdGFydAEFY2hpbGQEAWEJAQdhbGxvd2VkAQIQaW52ZXN0QWZ0ZXJTdGFydAMJAAACBQFhBQFhAwkAAAIJAQt2YWx1ZU9yRWxzZQIJAKAIAQkBFWludmVzdEFmdGVyU3RhcnRTdG9yZQEFBWNoaWxkBwcJAAIBAhlkZW5pZWQgKGludmVzdEFmdGVyU3RhcnQpBAFzCQEPYXNzZXJ0SXNTdGFydGVkAQUFY2hpbGQDCQAAAgUBcwUBcwMJAGYCCQEGcGVyaW9kAQUFY2hpbGQAAAkAAgECFmluaXRpYWwgcm91bmQgaXMgZW5kZWQEBXRva2VuCQEQaW52ZXN0bWVudHNUb2tlbgEFBWNoaWxkAwkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQV0b2tlbgkAAgECHGludmFsaWQgaW52ZXN0bWVudHMgYXNzZXQgaWQEBmFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAMwIAgkBCGNoYW5nZUJ5AgkBDWludmVzdG9yU3RvcmUCBQVjaGlsZAkApQgBCAUBaQZjYWxsZXIFBmFtb3VudAkAzAgCCQEIY2hhbmdlQnkCCQEVaW52ZXN0bWVudHNUb3RhbFN0b3JlAQUFY2hpbGQFBmFtb3VudAkAzAgCCQEIY2hhbmdlQnkCCQEbaW52ZXN0bWVudHNQZXJpb2RUb3RhbFN0b3JlAQUFY2hpbGQFBmFtb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBCQEIdHJlYXN1cnkBBQVjaGlsZAUGYW1vdW50CQEQaW52ZXN0bWVudHNUb2tlbgEFBWNoaWxkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEFc3RhcnQBBWNoaWxkBAZwYXVzZWQJAQdhbGxvd2VkAQIFc3RhcnQDCQAAAgUGcGF1c2VkBQZwYXVzZWQEAXMDCQEQYXNzZXJ0Tm90U3RhcnRlZAEFBWNoaWxkCQESYXNzZXJ0Tm90Q2FuY2VsbGVkAQUFY2hpbGQHAwkAAAIFAXMFAXMECXRvdGFsU2tpbgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEOc2tpblRvdGFsU3RvcmUBBQVjaGlsZAAABAxza2luUmVxdWlyZWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBCQERc2tpblJlcXVpcmVkU3RvcmUBBQVjaGlsZAIUY2hpbGQgbm90IHJlZ2lzdGVyZWQDCQBmAgUMc2tpblJlcXVpcmVkBQl0b3RhbFNraW4JAAIBAhtub3QgZW5vdWdoIHNraW4gaW4gdGhlIGdhbWUEEHRvdGFsSW52ZXN0bWVudHMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFWludmVzdG1lbnRzVG90YWxTdG9yZQEFBWNoaWxkAAADCQBmAgkBEUBleHRyTmF0aXZlKDEwNTUpAQkBGGludmVzdG1lbnRzUmVxdWlyZWRTdG9yZQEFBWNoaWxkBRB0b3RhbEludmVzdG1lbnRzCQACAQIWbm90IGVub3VnaCBpbnZlc3RtZW50cwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEHN0YXJ0SGVpZ2h0U3RvcmUBBQVjaGlsZAUGSEVJR0hUCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQh0cmVhc3VyeQEFBWNoaWxkBRB0b3RhbEludmVzdG1lbnRzCQEQaW52ZXN0bWVudHNUb2tlbgEFBWNoaWxkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOaW5pdE5leHRQZXJpb2QDBWNoaWxkE2Jsb2NrQmV0d2VlblBlcmlvZHMIbG9ja1RpbWUEBnBhdXNlZAkBB2FsbG93ZWQBAg5pbml0TmV4dFBlcmlvZAMJAAACBQZwYXVzZWQFBnBhdXNlZAMDCQECIT0CCQClCAEIBQFpBmNhbGxlcgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBCm93bmVyU3RvcmUBBQVjaGlsZAkBAiE9AggFAWkGY2FsbGVyBQR0aGlzBwkAAgECBmRlbmllZAMJAGYCAAAFE2Jsb2NrQmV0d2VlblBlcmlvZHMJAAIBAi5ibG9ja0JldHdlZW5QZXJpb2RzIHNob3VsZCBiZSBwb3NpdGl2ZSBvciB6ZXJvAwkAZgIAAQUIbG9ja1RpbWUJAAIBAhtsb2NrVGltZSBzaG91bGQgYmUgcG9zaXRpdmUEDXVubG9ja0hlaWdodF8JAQx1bmxvY2tIZWlnaHQBBQVjaGlsZAMJAGYCBQ11bmxvY2tIZWlnaHRfBQZIRUlHSFQJAAIBAh5jdXJyZW50IHBlcmlvZCBpcyBzdGlsbCBhY3RpdmUEAXAJAQZwZXJpb2QBBQVjaGlsZAMDCQBmAgUBcAAACQEBIQEJAQlpc0RlZmluZWQBCQEWc3RhcnRQZXJpb2RIZWlnaHRTdG9yZQIFBWNoaWxkBQFwBwkAAgECH25leHQgcGVyaW9kIGFscmVhZHkgaW5pdGlhbGl6ZWQECW5ld1BlcmlvZAkAZAIFAXAAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBC3BlcmlvZFN0b3JlAQUFY2hpbGQFCW5ld1BlcmlvZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBG3N0YXJ0UGVyaW9kQWZ0ZXJIZWlnaHRTdG9yZQIFBWNoaWxkBQluZXdQZXJpb2QJAGQCBQ11bmxvY2tIZWlnaHRfBRNibG9ja0JldHdlZW5QZXJpb2RzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQETcGVyaW9kTG9ja1RpbWVTdG9yZQIFBWNoaWxkBQluZXdQZXJpb2QFCGxvY2tUaW1lBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQELc3RhcnRQZXJpb2QBBWNoaWxkBAZwYXVzZWQJAQdhbGxvd2VkAQILc3RhcnRQZXJpb2QDCQAAAgUGcGF1c2VkBQZwYXVzZWQEAXMJARZhc3NlcnROb3RTdGFydGVkUGVyaW9kAQUFY2hpbGQDCQAAAgUBcwUBcwQHcGVyaW9kXwkBBnBlcmlvZAEFBWNoaWxkBA9zdGFydEFmdGVyU3RvcmUJARtzdGFydFBlcmlvZEFmdGVySGVpZ2h0U3RvcmUCBQVjaGlsZAUHcGVyaW9kXwQKc3RhcnRBZnRlcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFD3N0YXJ0QWZ0ZXJTdG9yZQkArAICAg9rZXkgbm90IGZvdW5kOiAFD3N0YXJ0QWZ0ZXJTdG9yZQMJAGYCBQpzdGFydEFmdGVyBQZIRUlHSFQJAAIBAgl0b28gZWFybHkECXRvdGFsU2tpbgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEOc2tpblRvdGFsU3RvcmUBBQVjaGlsZAAABAxza2luUmVxdWlyZWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBCQERc2tpblJlcXVpcmVkU3RvcmUBBQVjaGlsZAIUY2hpbGQgbm90IHJlZ2lzdGVyZWQDCQBmAgUMc2tpblJlcXVpcmVkBQl0b3RhbFNraW4JAAIBAhtub3QgZW5vdWdoIHNraW4gaW4gdGhlIGdhbWUEEXBlcmlvZEludmVzdG1lbnRzCQELdmFsdWVPckVsc2UCCQCfCAEJARtpbnZlc3RtZW50c1BlcmlvZFRvdGFsU3RvcmUBBQVjaGlsZAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEdc3RhcnRDdXJyZW50UGVyaW9kSGVpZ2h0U3RvcmUBBQVjaGlsZAUGSEVJR0hUCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBWNoaWxkBRFwZXJpb2RJbnZlc3RtZW50cwkBEGludmVzdG1lbnRzVG9rZW4BBQVjaGlsZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBXNsYXNoAgVjaGlsZAZhbW91bnQEBnBhdXNlZAkBB2FsbG93ZWQBAgEvAwkAAAIFBnBhdXNlZAUGcGF1c2VkAwkBASEBCQEIY29udGFpbnMCBQhzbGFzaGVycwkApQgBCAUBaQZjYWxsZXIJAAIBAgZkZW5pZWQDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEJARBzdGFydEhlaWdodFN0b3JlAQUFY2hpbGQJAAIBAgtub3Qgc3RhcnRlZAkAzAgCCQEIY2hhbmdlQnkCCQEOc2tpblRvdGFsU3RvcmUBBQVjaGlsZAkBAS0BBQZhbW91bnQJAMwIAgkBBEJ1cm4CBQpwd3JBc3NldElkBQZhbW91bnQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQtjb21wbGV0ZUZvcgIFY2hpbGQEdXNlcgMJAQEhAQkBCGNvbnRhaW5zAgUNbWFpbkFkZHJlc3NlcwkApQgBCAUBaQZjYWxsZXIJAAIBAgZkZW5pZWQEDXVubG9ja0hlaWdodF8JAQx1bmxvY2tIZWlnaHQBBQVjaGlsZAMJAGYCBQ11bmxvY2tIZWlnaHRfBQZIRUlHSFQJAAIBAgxzdGlsbCBsb2NrZWQEC2VuZGVkUGVyaW9kCQEPY29tcGxldGVkUGVyaW9kAQUFY2hpbGQEC3VubG9ja1JvdW5kCQELdmFsdWVPckVsc2UCCQCfCAEJARl1c2VyU2tpblVubG9ja1BlcmlvZFN0b3JlAgUFY2hpbGQFBHVzZXIAAAMJAGYCBQt1bmxvY2tSb3VuZAULZW5kZWRQZXJpb2QJAAIBCQCsAgIJAKwCAgISeW91IGNhbiB1bmxvY2sgb24gCQCkAwEFC3VubG9ja1JvdW5kAgYgcm91bmQEBHNraW4JAQ9jdXJyZW50VXNlclNraW4CBQVjaGlsZAUEdXNlcgMJAAACBQRza2luAAAJAAIBAht5b3UgaGFkIG5vIHNraW4gaW4gdGhlIGdhbWUJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFBHNraW4FCnB3ckFzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDXVzZXJTa2luU3RvcmUCBQVjaGlsZAUEdXNlcgkAzAgCCQEIY2hhbmdlQnkCCQEOc2tpblRvdGFsU3RvcmUBBQVjaGlsZAkBAS0BBQRza2luCQDMCAIJAQhjaGFuZ2VCeQIFDXB3clRvdGFsU3RvcmUJAQEtAQUEc2tpbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBG3VzZXJTa2luRXhpdGVkSW5QZXJpb2RTdG9yZQMFBWNoaWxkBQR1c2VyBQtlbmRlZFBlcmlvZAUEc2tpbgUDbmlsBQRza2luAWkBBmNhbmNlbAEFY2hpbGQEBnBhdXNlZAkBB2FsbG93ZWQBAgZjYW5jZWwDCQAAAgUGcGF1c2VkBQZwYXVzZWQEAXMDCQEQYXNzZXJ0Tm90U3RhcnRlZAEFBWNoaWxkBgkBEmFzc2VydE5vdENhbmNlbGxlZAEFBWNoaWxkAwkAAAIFAXMFAXMDCQECIT0CCQClCAEIBQFpBmNhbGxlcgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBCm93bmVyU3RvcmUBBQVjaGlsZAkAAgECFGRlbmllZC4gbm90IGFuIG93bmVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQERY2FuY2VsSGVpZ2h0U3RvcmUBBQVjaGlsZAUGSEVJR0hUBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKdW5kb0ludmVzdAEFY2hpbGQEBnBhdXNlZAkBB2FsbG93ZWQBAgp1bmRvSW52ZXN0AwkAAAIFBnBhdXNlZAUGcGF1c2VkBAFzCQEQYXNzZXJ0Tm90U3RhcnRlZAEFBWNoaWxkAwkAAAIFAXMFAXMEEWludmVzdG1lbnRzU3RvcmUxCQENaW52ZXN0b3JTdG9yZQIFBWNoaWxkCQClCAEIBQFpBmNhbGxlcgQLaW52ZXN0bWVudHMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQURaW52ZXN0bWVudHNTdG9yZTEAAAMJAAACBQtpbnZlc3RtZW50cwAACQACAQIObm8gaW52ZXN0bWVudHMJAMwIAgkBC0RlbGV0ZUVudHJ5AQURaW52ZXN0bWVudHNTdG9yZTEJAMwIAgkBCGNoYW5nZUJ5AgkBFWludmVzdG1lbnRzVG90YWxTdG9yZQEFBWNoaWxkCQEBLQEFC2ludmVzdG1lbnRzCQDMCAIJAQhjaGFuZ2VCeQIJARtpbnZlc3RtZW50c1BlcmlvZFRvdGFsU3RvcmUBBQVjaGlsZAkBAS0BBQtpbnZlc3RtZW50cwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFC2ludmVzdG1lbnRzCQEQaW52ZXN0bWVudHNUb2tlbgEFBWNoaWxkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENdW5kb0NvbW1pdEZvcgIFY2hpbGQHYWRkcmVzcwQGcGF1c2VkCQEHYWxsb3dlZAECDXVuZG9Db21taXRGb3IDCQAAAgUGcGF1c2VkBQZwYXVzZWQDCQEBIQEJAQhjb250YWlucwIFDW1haW5BZGRyZXNzZXMJAKUIAQgFAWkGY2FsbGVyCQACAQIGZGVuaWVkBAFzCQEQYXNzZXJ0Tm90U3RhcnRlZAEFBWNoaWxkAwkAAAIFAXMFAXMEDnVzZXJTa2luU3RvcmUxCQENdXNlclNraW5TdG9yZQIFBWNoaWxkBQdhZGRyZXNzBARza2luCQELdmFsdWVPckVsc2UCCQCfCAEFDnVzZXJTa2luU3RvcmUxAAADCQAAAgUEc2tpbgAACQACAQIHbm8gc2tpbgkAlAoCCQDMCAIJAQtEZWxldGVFbnRyeQEFDnVzZXJTa2luU3RvcmUxCQDMCAIJAQhjaGFuZ2VCeQIJAQ5za2luVG90YWxTdG9yZQEFBWNoaWxkCQEBLQEFBHNraW4JAMwIAgkBCGNoYW5nZUJ5AgUNcHdyVG90YWxTdG9yZQkBAS0BBQRza2luCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUEc2tpbgUKcHdyQXNzZXRJZAUDbmlsBQRza2luCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCXVzZXJQb3dlcgIFY2hpbGQEdXNlcgkAlAoCBQNuaWwJAQt2YWx1ZU9yRWxzZQIJAQ51c2VyQ29tbWl0bWVudAIFBWNoaWxkBQR1c2VyAAABaQEKdG90YWxQb3dlcgEFY2hpbGQJAJQKAgUDbmlsCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQkBDnNraW5Ub3RhbFN0b3JlAQUFY2hpbGQCG3RvdGFsUG93ZXI6IGNoaWxkIG5vdCBmb3VuZAFpAQRpbml0AQRjb25mCQDMCAIJARB3cml0ZUNvbnN0U3RyaW5nAgUSY29uZmlnQWRkcmVzc1N0b3JlBQRjb25mBQNuaWwBaQENcHdyVG9NYW5hZ2VycwADCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAgZkZW5pZWQEDWFtYmFzc2Fkb3JEQU8CIzNQNDhqV0dNYkNTNE5hTGg5eEpuRWhhRFluRllwb0FHaEVUBAhtYW5hZ2VycwkAzAgCAiMzUDRUQndVNGladHZuZkt2RWF2ZzNVV1lnRnVzRWlvTkZkcgkAzAgCAiMzUEt5YzNOVXptZ3hZOHo1a2JOaFVYaGpCUWRZck1YZUV5cQkAzAgCAiMzUDQ2QVdUUWFFVXhGVkVaV3ZUYVFNQXhnVFlVQTVOOVRwUQkAzAgCAiMzUEhQUEdMNzViWVN0M2N4UFdFd1lUVWp6OXlTUUNrUHJGawkAzAgCAiMzUDdMM1JwaldZOGhXNnlFUGczUWNrNWFEbktRR0N2Vzd6VQkAzAgCAiMzUExlSDZzNXRvczlrU2YxdEhCUmZib0JoWXhxd0c5U1o1WAkAzAgCAiMzUDViMXFvVzJXenNldUZlVE1LaWZ6MlczR2dxYXJZUVBYYQkAzAgCAiMzUEFqem5URWR4UlJCR0xKZ2dlWDRIc3c4UmRoZmJDWjJnZAkAzAgCAiMzUE5KOFI1b3pEcVByWTNDTEtIWWl2QVgyZ2h3UlUxSkgxSAkAzAgCAiMzUEd3UmF2UDZWRXRtYXA2bmNnYzNkeFRFS2NUWmJ5YzJQeAkAzAgCAiMzUEM2bkRoVU5mQmJRckNKWlNpYUY4YzR3NjdwNHk4YjFoYwkAzAgCAiMzUEJlZVd2Nmt2dlJRR3l0OWRBNWU4WlhqWkdKa0M5ZVpwZAkAzAgCAiMzUEFTb3BGaEZ5S1VOMTFnaWh4RG9Ec2l3aW44a3BZNnZBZQkAzAgCAiMzUFExRldLY0hSd0JzdlFDVnlXYzRjZ0t1eHJ6NFNBTjhrQwkAzAgCAiMzUExWaTJGV1llRWN5ZEZ6ZUhpalhOYlUyZ1ltTWtYTWk4RwkAzAgCAiMzUEFaRmVvSlFXVUY0M3JtYTJqaVcyc3VpZHJNTXh5VHM5RQkAzAgCAiMzUDVjWEtSbkVuNGdCSlpzVW90OEExTEFyeWdmcWFrcWo5RAkAzAgCAiMzUE5jM2NhWXZhaTNydU1UcUF3OFI5RW9YUFlUb3Q3bkQ2dQkAzAgCAiMzUEhUbXRBeFd5c3djRkFjN2Y2OWZBUDd3V2c2VXl0VVhLcQkAzAgCAiMzUEYzVm9IOUhyNFdHSmFCb1RhZFdqWHM2ZXNnR2UyRmE0cAkAzAgCAiMzUERkaXY3UnFlVjlDcVgzUG9LM2JMaFBVdkwxenY2dFo1ZQkAzAgCAiMzUEVwQnk3WmNYZUJnNm8yTUFoMk1rMUtLeFh1Q0hFaFFEbgkAzAgCAiMzUFB6ZFlhbTdjVE5VV0JEVzhNVlExZkViUGpYcGI3bWg0RAkAzAgCAiMzUEpMN01keWRzTFhDVHN5M2lZV0Jnbzc0YU55OWExa1FQTQkAzAgCAiMzUDNzcmNnVm5pbnBkQzR0ZFpZdTZRS3BVWXdubjlmdHRVMQkAzAgCAiMzUEFOQ2dtZG9HbmNKZW1BakY4dHkydUhEaFY2THNiMUpuSAkAzAgCAiMzUEZUMU1IVWtOTmpQN2FtU2Z0amcyN1RxVVllRUZjZm96UwkAzAgCAiMzUEt4WFJWVTdWdkJoN0hVcVlwVmUxcmY5Mm5zNGY1THFRZwkAzAgCAiMzUDNkRkpYeFNSWkRBQU1CVVByaWR0TUpEWUt2NHg5Q2UzbwkAzAgCAiMzUEVwZUhBWmVtdHdaRHYyUXNiVVpEeTMzd1YyMnN0WjhxZgkAzAgCAiMzUDlxamg0NG1iN0U5OVR3NEpZNE53ZDRXampoNHp2d0ptOQkAzAgCAiMzUDlrNnhrVVlaWmhqUjFtQkdyRmo2WEtkczJiUkdjOGk0bgkAzAgCAiMzUEFLZkdudGN3NU1vR1V6alYzOGRveDVXSHlqZ3g0ZXp0UgkAzAgCAiMzUERMUjlKalBDQnpyVkEzYzN5eWJZTGo1WW9CTnV6dGRNRwkAzAgCAiMzUFF5dTVuclZlTEtBRzcyWUdNajRFZ0R3UDZjNTVBd29xMwkAzAgCAiMzUDdnM2dlNmZpRTNjM0puc05DSHBzM1VDZlhEUEVFbWZMTAkAzAgCAiMzUEFnRllRR3ZmY3J4cm5mWmZiYVVGZGRQSmlzSlhnWmlqRQkAzAgCAiMzUFBCZGlzTWVYNUhFRHBVWXlqZ2RKOVVvaWo1bmhySFlqZgkAzAgCAiMzUEhpRFVFaXc3TUp3Q3BINzhHV2pUdFV0UGdnZzJYb241WgkAzAgCAiMzUEVRWmViRk5ZeVkxdmJMVWtiU0tkODIxY0dvZXBvbzJ5MQkAzAgCAiMzUDd3NFZHckFHU2FWc2RtTG5paXNKSGszbXVodHJmczYzTgkAzAgCAiMzUE1HVGhEdGZlQjFaRHRrTW5oNnF1aXljcnMxWDFmMkZieAkAzAgCAiMzUENXN2p0Vk1Sa3h1OVZuUFZUZmp6OFNzUVhIUkJRZ2F4ZAkAzAgCAiMzUEpoOFRMeFZpdU1SbkV6N1I3a3JWWmtGQXYxaXpKZVgyMQkAzAgCAiMzUEVkNlJ3QlhrUVE3c2R3Tk1rTjh0NXJiVDFRcmNNTDlYSwkAzAgCAiMzUDJDWE5aOXJHM0xQdjZEV1lETTFHNE1oNjVxZlRpR2hEOAkAzAgCAiMzUFFkVk1vUFBpcDExNU1iZGZwZnRkN21IS2hoNml1ZlVMZAkAzAgCAiMzUE43RVpIS3RRaVk5ZU1CblNtbUFnV0w2Wk5HZWlySkdSVAkAzAgCAiMzUEpTS2VjNmdNRjk0NlVDcHo5VnZRaTVocXJXS1VGU3pLcQkAzAgCAiMzUDZreEVDb0F6OGpLYUJuVUszeVhIWmNmdnpoU2RnWkU0QgkAzAgCAiMzUEVXTlZZUTRTeVBWQnpTQ3VWcVVtYVRLRjYyM2hUaVdoaQUDbmlsBBB0b3RhbEFtYmFzc2Fkb3JzCQCQAwEFCG1hbmFnZXJzBApwd3JSZXdhcmRzAMCEPQoBBGZvbGQCBGNtZHMKYW1iYXNzYWRvcgkAzAgCCQEIY2hhbmdlQnkCCQENdXNlclNraW5TdG9yZQIFDWFtYmFzc2Fkb3JEQU8FCmFtYmFzc2Fkb3IFCnB3clJld2FyZHMFBGNtZHMJAMwIAgkBCGNoYW5nZUJ5AgkBDnNraW5Ub3RhbFN0b3JlAQUNYW1iYXNzYWRvckRBTwkAaAIFCnB3clJld2FyZHMFEHRvdGFsQW1iYXNzYWRvcnMKAAIkbAUIbWFuYWdlcnMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBGZvbGQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFUxpc3Qgc2l6ZSBleGNlZWRzIDEwMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkAF0jeuI=", "chainId": 87, "height": 3917592, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 722Ls1wsjcUbFXoof6N3d6EAUyMEJiUGQrKspZ37Dyr1 Next: B4piLtifrViCcX3j2GHUgznojMHa9dmuDfaWYK3NNa7R Diff:
OldNewDifferences
629629 then throw("denied")
630630 else {
631631 let ambassadorDAO = "3P48jWGMbCS4NaLh9xJnEhaDYnFYpoAGhET"
632- let managers = ["3P5d8ebympveZyvrobxYF84CatUbHL1zrBu", "3PJq9uq1YK2DC2maNvoQAZ7KR6L4ZaNLUhH", "3PMTsYsEwvsEc8U1MsEV6gXHT3VWdwxCgwi", "3PGpgZVZYCBSzgHcGN76ipUCFfabHUygxTA", "3PHwVnsTnooz7yLdX9W76yz3KA9g1qTARSd", "3PR9nrEqRyS9Z57dmrX7WSomNPd6mUybYin", "3PBPVZ9HekzgTwmtUQvy36VeCBF5XDGHded", "3P5niFUYuxPUZQuuFzRk5Nqwio7fpqvGGBD", "3PMaQXb1eofSDDSyBAnspQWRAEtcoFZcTiX", "3P9pRYJGrV7W3n1g7mPZMk6GsC6bHshFr1e", "3P9TEuSCFoodSe7sr6YqBLNrKPbyyzjxKTx", "3PHu9esBtYNsmTcoGpePuYEiYw1cC8G9KBM", "3PC1JhvFuuAdFizC2UYBbhxFSTG8ZaJTqy5", "3PEAGv33YqC2ddRazdyeJJbJQrw4rCY5xcz", "3P9pyZJawxR2bKctPvV9X5GAESRMyYb3sia", "3PQWqkTZpkkouUvmHmLNzo9TNBt42vAiTXA", "3PLcvJsBno5TRXkkJ2XH7pBhSSWFNtPtPRA", "3PPidr6yP4KV1AM7RTJv7QmbWtwgtqQ7LXv", "3PGQnpgdoJ3EPepBzepZMAdgxu7NLk3iauC", "3P6kdJFXJop6jrsYvB8T1B43WKHHeZTNrrS", "3P2y2zu1ARGv78RTyZ7syhPvAJxQMz1Y535", "3P62vrPHm8Wd7bKLfAzLVwUFiLzXtvduzTR", "3P72RNeE8r5Ui89RXPYHXAa11k4wHpghkvv", "3P8UG5BeU6PLSyMPQ5fxEtyEZuYRpvovR5e", "3P65wtJnQLy6yx2yuqoWe3i8yvGqZqSFyYp", "3P8J8kfJhiTewkqdrcvAuCtDJz5JKPLMLET", "3PBwHxuHBbMhWPobp5rAbCzhKrtUDJhJjuG", "3PNi4YTMTzsXqFfgrpsZfT6JWv9NepUmPwt", "3P3RDCXNJEK5yhwtNE5ahxBBMYv7wASWt5E", "3PFvTB4Jr1U5UiqVAZrzyLb8SXTKaqjB6W7", "3PPsEdpv8ZcemDUqZzGyR8B4MzXqHBcePPn", "3PKZHgrXPDSU4Lgs5AKYadmgKEbbBaTbYWd", "3PBGgx1bbMkpFVd2CAFcVq1AzavKesF6QDT", "3PJnRp5KUBwUeZ8wFooerYU156mfc92P4Fy", "3PMS1Gx5yE75iTcd5FcDAPTZ6HkHuEoDwtf", "3P26CxpaxmFiEZiqbGd3FQ5nnndmLDJJZUs", "3P5bqWXwLD5tDoYvykm3nZqNVne2UFYhQTF", "3PMjQNJWpZofbJfRZqpVp2rXpcq3k4dav4f", "3PAa3WN5NrKD2J8hDxzcrvbLTCL3KiS7e15", "3PLzWiFNyAzUWXRn4sR67g7ffqGWMvjyjKA", "3PQ558HfgnEAbJ7BDNS38ydVqU4efY4thK3", "3PLfvHhr9Tjat8SksbA6kK8Re6zMMrecGti", "3P7aWedEc3dK1tSyxUpbkMm1qCfJYbSwGYA", "3P2ChPFBfizXaZqHr75TzEgLGpe46YHpr7z", "3P7vXduSDfmfmA9ACqnVeff5BXMr63qYFaZ", "3P4xumt5A4CEeqTk7ww4GhhkVPc6DcYvzNJ", "3PE9ukRjD5vRpxxuGcbyG2zSE2868Mdbk8S", "3PQneqvGaPHNSLCbteoS7Cdctm1kG9fC3Zc", "3PC6SjKdiz84QxjdwhQFT3AYCBwS1vCzWNG", "3PDiQ4P3gaciLzgPMZJPwDVtXs3kAPEgkFJ", "3PMN98aqX5kmZBvJtKb6EY2Z8geXxEG5Poc"]
632+ let managers = ["3P4TBwU4iZtvnfKvEavg3UWYgFusEioNFdr", "3PKyc3NUzmgxY8z5kbNhUXhjBQdYrMXeEyq", "3P46AWTQaEUxFVEZWvTaQMAxgTYUA5N9TpQ", "3PHPPGL75bYSt3cxPWEwYTUjz9ySQCkPrFk", "3P7L3RpjWY8hW6yEPg3Qck5aDnKQGCvW7zU", "3PLeH6s5tos9kSf1tHBRfboBhYxqwG9SZ5X", "3P5b1qoW2WzseuFeTMKifz2W3GgqarYQPXa", "3PAjznTEdxRRBGLJggeX4Hsw8RdhfbCZ2gd", "3PNJ8R5ozDqPrY3CLKHYivAX2ghwRU1JH1H", "3PGwRavP6VEtmap6ncgc3dxTEKcTZbyc2Px", "3PC6nDhUNfBbQrCJZSiaF8c4w67p4y8b1hc", "3PBeeWv6kvvRQGyt9dA5e8ZXjZGJkC9eZpd", "3PASopFhFyKUN11gihxDoDsiwin8kpY6vAe", "3PQ1FWKcHRwBsvQCVyWc4cgKuxrz4SAN8kC", "3PLVi2FWYeEcydFzeHijXNbU2gYmMkXMi8G", "3PAZFeoJQWUF43rma2jiW2suidrMMxyTs9E", "3P5cXKRnEn4gBJZsUot8A1LArygfqakqj9D", "3PNc3caYvai3ruMTqAw8R9EoXPYTot7nD6u", "3PHTmtAxWyswcFAc7f69fAP7wWg6UytUXKq", "3PF3VoH9Hr4WGJaBoTadWjXs6esgGe2Fa4p", "3PDdiv7RqeV9CqX3PoK3bLhPUvL1zv6tZ5e", "3PEpBy7ZcXeBg6o2MAh2Mk1KKxXuCHEhQDn", "3PPzdYam7cTNUWBDW8MVQ1fEbPjXpb7mh4D", "3PJL7MdydsLXCTsy3iYWBgo74aNy9a1kQPM", "3P3srcgVninpdC4tdZYu6QKpUYwnn9fttU1", "3PANCgmdoGncJemAjF8ty2uHDhV6Lsb1JnH", "3PFT1MHUkNNjP7amSftjg27TqUYeEFcfozS", "3PKxXRVU7VvBh7HUqYpVe1rf92ns4f5LqQg", "3P3dFJXxSRZDAAMBUPridtMJDYKv4x9Ce3o", "3PEpeHAZemtwZDv2QsbUZDy33wV22stZ8qf", "3P9qjh44mb7E99Tw4JY4Nwd4Wjjh4zvwJm9", "3P9k6xkUYZZhjR1mBGrFj6XKds2bRGc8i4n", "3PAKfGntcw5MoGUzjV38dox5WHyjgx4eztR", "3PDLR9JjPCBzrVA3c3yybYLj5YoBNuztdMG", "3PQyu5nrVeLKAG72YGMj4EgDwP6c55Awoq3", "3P7g3ge6fiE3c3JnsNCHps3UCfXDPEEmfLL", "3PAgFYQGvfcrxrnfZfbaUFddPJisJXgZijE", "3PPBdisMeX5HEDpUYyjgdJ9Uoij5nhrHYjf", "3PHiDUEiw7MJwCpH78GWjTtUtPggg2Xon5Z", "3PEQZebFNYyY1vbLUkbSKd821cGoepoo2y1", "3P7w4VGrAGSaVsdmLniisJHk3muhtrfs63N", "3PMGThDtfeB1ZDtkMnh6quiycrs1X1f2Fbx", "3PCW7jtVMRkxu9VnPVTfjz8SsQXHRBQgaxd", "3PJh8TLxViuMRnEz7R7krVZkFAv1izJeX21", "3PEd6RwBXkQQ7sdwNMkN8t5rbT1QrcML9XK", "3P2CXNZ9rG3LPv6DWYDM1G4Mh65qfTiGhD8", "3PQdVMoPPip115Mbdfpftd7mHKhh6iufULd", "3PN7EZHKtQiY9eMBnSmmAgWL6ZNGeirJGRT", "3PJSKec6gMF946UCpz9VvQi5hqrWKUFSzKq", "3P6kxECoAz8jKaBnUK3yXHZcfvzhSdgZE4B", "3PEWNVYQ4SyPVBzSCuVqUmaTKF623hTiWhi"]
633633 let totalAmbassadors = size(managers)
634634 let pwrRewards = 1000000
635635 func fold (cmds,ambassador) = changeBy(userSkinStore(ambassadorDAO, ambassador), pwrRewards) :: cmds
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func writeConstString (key,value) = if (!(isDefined(getString(this, key))))
55 then StringEntry(key, value)
66 else throw(("already initialized: " + key))
77
88
99 func writeInt (key,value) = if ((0 > value))
1010 then throw(((("writing negative value " + toString(value)) + " for key ") + key))
1111 else IntegerEntry(key, value)
1212
1313
1414 func changeBy (key,value) = writeInt(key, (valueOrElse(getInteger(this, key), 0) + value))
1515
1616
1717 func asInt (value) = match value {
1818 case int: Int =>
1919 int
2020 case _ =>
2121 throw("wrong type, expected: Int")
2222 }
2323
2424
2525 func assetId (str) = if ((str == "WAVES"))
2626 then unit
2727 else fromBase58String(str)
2828
2929
3030 let configAddressStore = "config"
3131
3232 let configAddress = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, configAddressStore), "children: config address not found")), "invalid config address")
3333
3434 func allowed (op) = invoke(configAddress, "opAllowed", [op], nil)
3535
3636
3737 let HEIGHT = height
3838
3939 let pwrAssetId = fromBase58String(valueOrErrorMessage(getString(configAddress, "powerAssetId"), "pwr asset id not found"))
4040
4141 let slashers = valueOrElse(getString(configAddress, (toString(this) + "_slashers")), "")
4242
4343 let mainAddresses = valueOrElse(getString(configAddress, "main_addresses"), "")
4444
4545 func periodStore (child) = ("period_" + child)
4646
4747
4848 func period (child) = valueOrElse(getInteger(periodStore(child)), 0)
4949
5050
5151 func ownerStore (child) = ("owner_" + child)
5252
5353
5454 func treasuryStore (child) = ("treasury_" + child)
5555
5656
5757 func lockTimeStore (child) = ("lockTime_" + child)
5858
5959
6060 func periodLockTimeStore (child,period) = ((("period_" + toString(period)) + "_lockTime_") + child)
6161
6262
6363 func skinRequiredStore (child) = ("skin_required_" + child)
6464
6565
6666 func skinMaxStore (child) = ("skin_max_" + child)
6767
6868
6969 func investmentsMaxStore (child) = ("investments_max_" + child)
7070
7171
7272 func minCommitmentStore (child) = ("min_commitment" + child)
7373
7474
7575 func skinTotalStore (child) = ("skin_total_" + child)
7676
7777
7878 let pwrTotalStore = "pwr_total"
7979
8080 func investmentsRequiredStore (child) = ("investments_required_" + child)
8181
8282
8383 func investmentsTotalStore (child) = ("investments_total_" + child)
8484
8585
8686 func investmentsPeriodTotalStore (child) = ((("period_" + toString(period(child))) + "_investments_total_") + child)
8787
8888
8989 func investmentsTokenStore (child) = ("investments_token_" + child)
9090
9191
9292 func commitmentsStore (child) = ("commitments_" + child)
9393
9494
9595 func createHeightStore (child) = ("create_height_" + child)
9696
9797
9898 func startHeightStore (child) = ("start_height_" + child)
9999
100100
101101 func startPeriodHeightStore (child,period) = ((("period_" + toString(period)) + "_start_height_") + child)
102102
103103
104104 func startPeriodAfterHeightStore (child,period) = ((("period_" + toString(period)) + "_start_after_height_") + child)
105105
106106
107107 func startCurrentPeriodHeightStore (child) = startPeriodHeightStore(child, period(child))
108108
109109
110110 func cancelHeightStore (child) = ("cancel_height_" + child)
111111
112112
113113 func investmentsToken (child) = assetId(valueOrErrorMessage(getString(investmentsTokenStore(child)), "investments asset id not found"))
114114
115115
116116 func userSkinStore (child,user) = ((("skin_" + child) + "_") + user)
117117
118118
119119 func userSkinUnlockPeriodStore (child,user) = ((("skin_unlock_period_" + child) + "_") + user)
120120
121121
122122 func userSkinExitedInPeriodStore (child,user,period) = (((userSkinStore(child, user) + "_period_") + toString(period)) + "_exited")
123123
124124
125125 func investorStore (child,investor) = ((("investor_" + child) + "_") + investor)
126126
127127
128128 func commitAfterAddressesStore (child) = ("commit_after_addresses_" + child)
129129
130130
131131 func investAfterStartStore (child) = ("can_invest_after_start_" + child)
132132
133133
134134 func assertNotStarted (child) = if (isDefined(getInteger(startHeightStore(child))))
135135 then throw("already started")
136136 else false
137137
138138
139139 func assertIsStarted (child) = if ((isDefined(getInteger(startHeightStore(child))) == false))
140140 then throw("not yet started")
141141 else false
142142
143143
144144 func assertNotCancelled (child) = if (isDefined(getInteger(cancelHeightStore(child))))
145145 then throw("already canceled")
146146 else false
147147
148148
149149 func assertNotStartedPeriod (child) = if ((period(child) == 0))
150150 then assertNotStarted(child)
151151 else if (isDefined(getInteger(startCurrentPeriodHeightStore(child))))
152152 then throw("period already started")
153153 else false
154154
155155
156156 func userCommitment (child,user) = getInteger(userSkinStore(child, user))
157157
158158
159159 func currentUserSkin (child,user) = valueOrElse(userCommitment(child, user), 0)
160160
161161
162162 func lockTime (child,period) = valueOrElse(getInteger(periodLockTimeStore(child, period)), valueOrErrorMessage(getInteger(lockTimeStore(child)), "no child lockTime"))
163163
164164
165165 func completedPeriod (child) = {
166166 let p = period(child)
167167 if ((p == 0))
168168 then 0
169169 else {
170170 let periodStart = getInteger(startPeriodHeightStore(child, p))
171171 if (isDefined(periodStart))
172172 then p
173173 else (p - 1)
174174 }
175175 }
176176
177177
178178 func unlockHeight (child) = {
179179 let p = completedPeriod(child)
180180 let childStart = valueOrErrorMessage(getInteger(startHeightStore(child)), "no child start height")
181181 (valueOrElse(getInteger(startPeriodHeightStore(child, p)), childStart) + lockTime(child, p))
182182 }
183183
184184
185185 func treasury (child) = valueOrElse(getString(treasuryStore(child)), child)
186186
187187
188188 func int (key) = toString(valueOrElse(getInteger(key), 0))
189189
190190
191191 func str (key) = valueOrElse(getString(key), "")
192192
193193
194194 func adviseProject (child) = {
195195 let p = period(child)
196196 let periodStr = toString(p)
197197 ((((((((((((((((((((((((((((((((((((((((((((((((((("height: " + toString(HEIGHT)) + ", project: ") + child) + ", owner: ") + str(ownerStore(child))) + ", treasury: ") + treasury(child)) + ", lock_time: ") + int(lockTimeStore(child))) + ", skin_required: ") + int(skinRequiredStore(child))) + ", skin_max: ") + int(skinMaxStore(child))) + ", min_commitment: ") + int(minCommitmentStore(child))) + ", skin_total: ") + int(skinTotalStore(child))) + ", investments_required: ") + int(investmentsRequiredStore(child))) + ", investments_max: ") + int(investmentsMaxStore(child))) + ", investments_total: ") + int(investmentsTotalStore(child))) + ", investments_token: ") + str(investmentsTokenStore(child))) + ", commitments: ") + str(commitmentsStore(child))) + ", create_height: ") + int(createHeightStore(child))) + ", start_height: ") + toString(valueOrElse(getInteger(startHeightStore(child)), -1))) + ", cancel_height: ") + toString(valueOrElse(getInteger(cancelHeightStore(child)), -1))) + ", period: ") + periodStr) + ", period_") + periodStr) + "_start_after_height: ") + toString(valueOrElse(getInteger(startPeriodAfterHeightStore(child, p)), -1))) + ", period_") + periodStr) + "_start_height: ") + toString(valueOrElse(getInteger(startCurrentPeriodHeightStore(child)), -1))) + ", period_") + periodStr) + "_lock_time: ") + toString(lockTime(child, p))) + ", unlock_height: ") + toString(unlockHeight(child))) + ", period_investments_total: ") + int(investmentsPeriodTotalStore(child)))
198198 }
199199
200200
201201 func adviseUserProject (child,user) = ((((((((("height: " + toString(HEIGHT)) + ", project: ") + child) + ", skin:") + toString(currentUserSkin(child, user))) + ", power:") + toString(valueOrElse(userCommitment(child, user), 0))) + ", investments: ") + int(investorStore(child, user)))
202202
203203
204204 func commitAfterStartForInternal (i,child,address,additionalLockRounds) = {
205205 let a = allowed("commitAfterStartFor")
206206 if ((a == a))
207207 then if ((0 > additionalLockRounds))
208208 then throw("invalid additionalLockRounds")
209209 else if (!(contains(valueOrElse(getString(commitAfterAddressesStore(child)), ""), toString(i.caller))))
210210 then throw("commitAfterStartForInternal. denied")
211211 else {
212212 let p = i.payments[0]
213213 if (if ((p.assetId != pwrAssetId))
214214 then true
215215 else (size(i.payments) != 1))
216216 then throw("invalid payments: only $PWR token expected")
217217 else {
218218 let commitment = p.amount
219219 let cmds = [changeBy(userSkinStore(child, address), commitment), changeBy(skinTotalStore(child), commitment), changeBy(pwrTotalStore, commitment)]
220220 if ((additionalLockRounds > 0))
221221 then {
222222 let unlockRound = (period(child) + additionalLockRounds)
223223 IntegerEntry(userSkinUnlockPeriodStore(child, address), unlockRound) :: cmds
224224 }
225225 else cmds
226226 }
227227 }
228228 else throw("Strict value is not equal to itself.")
229229 }
230230
231231
232232 @Callable(i)
233233 func projectFor (owner,skin,maxSkin,minCommitment,lockTime,investments,maxInvestments,investmentsToken,commitments,child) = {
234234 let a = allowed("projectFor")
235235 if ((a == a))
236236 then if (!(contains(mainAddresses, toString(i.caller))))
237237 then throw("denied")
238238 else {
239239 let t = valueOrErrorMessage(addressFromString(child), "invalid treasury address")
240240 if ((t == t))
241241 then {
242242 let token = assetId(investmentsToken)
243243 if ((token == token))
244244 then if (if ((maxSkin > 0))
245245 then (skin > maxSkin)
246246 else false)
247247 then throw("invalid maxSkin")
248248 else if (if ((maxInvestments > 0))
249249 then (investments > maxInvestments)
250250 else false)
251251 then throw("invalid maxInvestments")
252252 else [writeConstString(ownerStore(child), owner), writeInt(createHeightStore(child), HEIGHT), writeInt(skinRequiredStore(child), skin), writeInt(skinMaxStore(child), maxSkin), writeInt(minCommitmentStore(child), minCommitment), writeInt(lockTimeStore(child), lockTime), writeInt(investmentsRequiredStore(child), investments), writeConstString(investmentsTokenStore(child), investmentsToken), writeConstString(commitmentsStore(child), commitments), writeConstString(treasuryStore(child), child), writeInt(investmentsMaxStore(child), maxInvestments)]
253253 else throw("Strict value is not equal to itself.")
254254 }
255255 else throw("Strict value is not equal to itself.")
256256 }
257257 else throw("Strict value is not equal to itself.")
258258 }
259259
260260
261261
262262 @Callable(i)
263263 func increraseSkin (child,skinIncrement) = {
264264 let a = allowed("increraseSkin")
265265 if ((a == a))
266266 then {
267267 let s = if (assertNotStarted(child))
268268 then assertNotCancelled(child)
269269 else false
270270 if ((s == s))
271271 then if ((0 >= skinIncrement))
272272 then throw("invalid argument: skinIncrement should be positive")
273273 else {
274274 let owner = getStringValue(ownerStore(child))
275275 if ((toString(i.caller) != owner))
276276 then throw("denied")
277277 else [changeBy(skinRequiredStore(child), skinIncrement)]
278278 }
279279 else throw("Strict value is not equal to itself.")
280280 }
281281 else throw("Strict value is not equal to itself.")
282282 }
283283
284284
285285
286286 @Callable(i)
287287 func commitFor (child,address) = {
288288 let a = allowed("commitFor")
289289 if ((a == a))
290290 then {
291291 let s = assertNotStartedPeriod(child)
292292 if ((s == s))
293293 then {
294294 let p = i.payments[0]
295295 if ((p.assetId != pwrAssetId))
296296 then throw("invalid attached payment: $power token expected")
297297 else {
298298 let commitment = p.amount
299299 let minCommitment = valueOrErrorMessage(getInteger(minCommitmentStore(child)), "Child DAO not found")
300300 if ((minCommitment > commitment))
301301 then throw(("Min. commitment is " + toString(minCommitment)))
302302 else {
303303 let skinTotalStore1 = skinTotalStore(child)
304304 let newSkinTotal = (valueOrElse(getInteger(skinTotalStore1), 0) + commitment)
305305 let skinMax = valueOrElse(getInteger(skinMaxStore(child)), 0)
306306 if (if ((skinMax > 0))
307307 then (newSkinTotal > skinMax)
308308 else false)
309309 then throw(("Total max. skin is reached: " + toString(skinMax)))
310310 else [changeBy(userSkinStore(child, address), commitment), IntegerEntry(skinTotalStore1, newSkinTotal), changeBy(pwrTotalStore, commitment)]
311311 }
312312 }
313313 }
314314 else throw("Strict value is not equal to itself.")
315315 }
316316 else throw("Strict value is not equal to itself.")
317317 }
318318
319319
320320
321321 @Callable(i)
322322 func commitForMiner (child,address) = {
323323 let a = allowed("commitForMiner")
324324 if ((a == a))
325325 then if (!(contains(mainAddresses, toString(i.caller))))
326326 then throw("denied")
327327 else {
328328 let p = i.payments[0]
329329 if (if ((p.assetId != pwrAssetId))
330330 then true
331331 else (size(i.payments) != 1))
332332 then throw("invalid payments: only $PWR token expected")
333333 else {
334334 let commitment = p.amount
335335 [changeBy(userSkinStore(child, address), commitment), changeBy(skinTotalStore(child), commitment), changeBy(pwrTotalStore, commitment)]
336336 }
337337 }
338338 else throw("Strict value is not equal to itself.")
339339 }
340340
341341
342342
343343 @Callable(i)
344344 func commitAfterStartFor (child,address) = commitAfterStartForInternal(i, child, address, 0)
345345
346346
347347
348348 @Callable(i)
349349 func commitAfterStartWithLockRoundFor (child,address,additionalLockRounds) = commitAfterStartForInternal(i, child, address, additionalLockRounds)
350350
351351
352352
353353 @Callable(i)
354354 func invest (child) = {
355355 let a = allowed("invest")
356356 if ((a == a))
357357 then {
358358 let s = assertNotStartedPeriod(child)
359359 if ((s == s))
360360 then {
361361 let token = investmentsToken(child)
362362 if ((i.payments[0].assetId != token))
363363 then throw("invalid investments asset id")
364364 else {
365365 let amount = i.payments[0].amount
366366 let maximum = valueOrElse(getInteger(investmentsMaxStore(child)), 0)
367367 func datas (a) = [changeBy(investorStore(child, toString(i.caller)), a), changeBy(investmentsTotalStore(child), a), changeBy(investmentsPeriodTotalStore(child), a)]
368368
369369 if ((maximum > 0))
370370 then {
371371 let totalStore = investmentsTotalStore(child)
372372 let total = valueOrElse(getInteger(totalStore), 0)
373373 let investmens = min([amount, (maximum - total)])
374374 if ((0 >= investmens))
375375 then throw(("Total max. investments is reached: " + toString(maximum)))
376376 else {
377377 let chargeBack = (amount - investmens)
378378 if ((chargeBack > 0))
379379 then [ScriptTransfer(i.caller, chargeBack, token), datas(investmens)]
380380 else datas(investmens)
381381 }
382382 }
383383 else datas(amount)
384384 }
385385 }
386386 else throw("Strict value is not equal to itself.")
387387 }
388388 else throw("Strict value is not equal to itself.")
389389 }
390390
391391
392392
393393 @Callable(i)
394394 func investAfterStart (child) = {
395395 let a = allowed("investAfterStart")
396396 if ((a == a))
397397 then if ((valueOrElse(getBoolean(investAfterStartStore(child)), false) == false))
398398 then throw("denied (investAfterStart)")
399399 else {
400400 let s = assertIsStarted(child)
401401 if ((s == s))
402402 then if ((period(child) > 0))
403403 then throw("initial round is ended")
404404 else {
405405 let token = investmentsToken(child)
406406 if ((i.payments[0].assetId != token))
407407 then throw("invalid investments asset id")
408408 else {
409409 let amount = i.payments[0].amount
410410 [changeBy(investorStore(child, toString(i.caller)), amount), changeBy(investmentsTotalStore(child), amount), changeBy(investmentsPeriodTotalStore(child), amount), ScriptTransfer(addressFromStringValue(treasury(child)), amount, investmentsToken(child))]
411411 }
412412 }
413413 else throw("Strict value is not equal to itself.")
414414 }
415415 else throw("Strict value is not equal to itself.")
416416 }
417417
418418
419419
420420 @Callable(i)
421421 func start (child) = {
422422 let paused = allowed("start")
423423 if ((paused == paused))
424424 then {
425425 let s = if (assertNotStarted(child))
426426 then assertNotCancelled(child)
427427 else false
428428 if ((s == s))
429429 then {
430430 let totalSkin = valueOrElse(getInteger(skinTotalStore(child)), 0)
431431 let skinRequired = valueOrErrorMessage(getInteger(skinRequiredStore(child)), "child not registered")
432432 if ((skinRequired > totalSkin))
433433 then throw("not enough skin in the game")
434434 else {
435435 let totalInvestments = valueOrElse(getInteger(investmentsTotalStore(child)), 0)
436436 if ((getIntegerValue(investmentsRequiredStore(child)) > totalInvestments))
437437 then throw("not enough investments")
438438 else [IntegerEntry(startHeightStore(child), HEIGHT), ScriptTransfer(addressFromStringValue(treasury(child)), totalInvestments, investmentsToken(child))]
439439 }
440440 }
441441 else throw("Strict value is not equal to itself.")
442442 }
443443 else throw("Strict value is not equal to itself.")
444444 }
445445
446446
447447
448448 @Callable(i)
449449 func initNextPeriod (child,blockBetweenPeriods,lockTime) = {
450450 let paused = allowed("initNextPeriod")
451451 if ((paused == paused))
452452 then if (if ((toString(i.caller) != getStringValue(ownerStore(child))))
453453 then (i.caller != this)
454454 else false)
455455 then throw("denied")
456456 else if ((0 > blockBetweenPeriods))
457457 then throw("blockBetweenPeriods should be positive or zero")
458458 else if ((1 > lockTime))
459459 then throw("lockTime should be positive")
460460 else {
461461 let unlockHeight_ = unlockHeight(child)
462462 if ((unlockHeight_ > HEIGHT))
463463 then throw("current period is still active")
464464 else {
465465 let p = period(child)
466466 if (if ((p > 0))
467467 then !(isDefined(startPeriodHeightStore(child, p)))
468468 else false)
469469 then throw("next period already initialized")
470470 else {
471471 let newPeriod = (p + 1)
472472 [IntegerEntry(periodStore(child), newPeriod), IntegerEntry(startPeriodAfterHeightStore(child, newPeriod), (unlockHeight_ + blockBetweenPeriods)), IntegerEntry(periodLockTimeStore(child, newPeriod), lockTime)]
473473 }
474474 }
475475 }
476476 else throw("Strict value is not equal to itself.")
477477 }
478478
479479
480480
481481 @Callable(i)
482482 func startPeriod (child) = {
483483 let paused = allowed("startPeriod")
484484 if ((paused == paused))
485485 then {
486486 let s = assertNotStartedPeriod(child)
487487 if ((s == s))
488488 then {
489489 let period_ = period(child)
490490 let startAfterStore = startPeriodAfterHeightStore(child, period_)
491491 let startAfter = valueOrErrorMessage(getInteger(startAfterStore), ("key not found: " + startAfterStore))
492492 if ((startAfter > HEIGHT))
493493 then throw("too early")
494494 else {
495495 let totalSkin = valueOrElse(getInteger(skinTotalStore(child)), 0)
496496 let skinRequired = valueOrErrorMessage(getInteger(skinRequiredStore(child)), "child not registered")
497497 if ((skinRequired > totalSkin))
498498 then throw("not enough skin in the game")
499499 else {
500500 let periodInvestments = valueOrElse(getInteger(investmentsPeriodTotalStore(child)), 0)
501501 [IntegerEntry(startCurrentPeriodHeightStore(child), HEIGHT), ScriptTransfer(addressFromStringValue(child), periodInvestments, investmentsToken(child))]
502502 }
503503 }
504504 }
505505 else throw("Strict value is not equal to itself.")
506506 }
507507 else throw("Strict value is not equal to itself.")
508508 }
509509
510510
511511
512512 @Callable(i)
513513 func slash (child,amount) = {
514514 let paused = allowed("/")
515515 if ((paused == paused))
516516 then if (!(contains(slashers, toString(i.caller))))
517517 then throw("denied")
518518 else if (!(isDefined(getInteger(startHeightStore(child)))))
519519 then throw("not started")
520520 else [changeBy(skinTotalStore(child), -(amount)), Burn(pwrAssetId, amount)]
521521 else throw("Strict value is not equal to itself.")
522522 }
523523
524524
525525
526526 @Callable(i)
527527 func completeFor (child,user) = if (!(contains(mainAddresses, toString(i.caller))))
528528 then throw("denied")
529529 else {
530530 let unlockHeight_ = unlockHeight(child)
531531 if ((unlockHeight_ > HEIGHT))
532532 then throw("still locked")
533533 else {
534534 let endedPeriod = completedPeriod(child)
535535 let unlockRound = valueOrElse(getInteger(userSkinUnlockPeriodStore(child, user)), 0)
536536 if ((unlockRound > endedPeriod))
537537 then throw((("you can unlock on " + toString(unlockRound)) + " round"))
538538 else {
539539 let skin = currentUserSkin(child, user)
540540 if ((skin == 0))
541541 then throw("you had no skin in the game")
542542 else $Tuple2([ScriptTransfer(i.caller, skin, pwrAssetId), DeleteEntry(userSkinStore(child, user)), changeBy(skinTotalStore(child), -(skin)), changeBy(pwrTotalStore, -(skin)), IntegerEntry(userSkinExitedInPeriodStore(child, user, endedPeriod), skin)], skin)
543543 }
544544 }
545545 }
546546
547547
548548
549549 @Callable(i)
550550 func cancel (child) = {
551551 let paused = allowed("cancel")
552552 if ((paused == paused))
553553 then {
554554 let s = if (assertNotStarted(child))
555555 then true
556556 else assertNotCancelled(child)
557557 if ((s == s))
558558 then if ((toString(i.caller) != getStringValue(ownerStore(child))))
559559 then throw("denied. not an owner")
560560 else [IntegerEntry(cancelHeightStore(child), HEIGHT)]
561561 else throw("Strict value is not equal to itself.")
562562 }
563563 else throw("Strict value is not equal to itself.")
564564 }
565565
566566
567567
568568 @Callable(i)
569569 func undoInvest (child) = {
570570 let paused = allowed("undoInvest")
571571 if ((paused == paused))
572572 then {
573573 let s = assertNotStarted(child)
574574 if ((s == s))
575575 then {
576576 let investmentsStore1 = investorStore(child, toString(i.caller))
577577 let investments = valueOrElse(getInteger(investmentsStore1), 0)
578578 if ((investments == 0))
579579 then throw("no investments")
580580 else [DeleteEntry(investmentsStore1), changeBy(investmentsTotalStore(child), -(investments)), changeBy(investmentsPeriodTotalStore(child), -(investments)), ScriptTransfer(i.caller, investments, investmentsToken(child))]
581581 }
582582 else throw("Strict value is not equal to itself.")
583583 }
584584 else throw("Strict value is not equal to itself.")
585585 }
586586
587587
588588
589589 @Callable(i)
590590 func undoCommitFor (child,address) = {
591591 let paused = allowed("undoCommitFor")
592592 if ((paused == paused))
593593 then if (!(contains(mainAddresses, toString(i.caller))))
594594 then throw("denied")
595595 else {
596596 let s = assertNotStarted(child)
597597 if ((s == s))
598598 then {
599599 let userSkinStore1 = userSkinStore(child, address)
600600 let skin = valueOrElse(getInteger(userSkinStore1), 0)
601601 if ((skin == 0))
602602 then throw("no skin")
603603 else $Tuple2([DeleteEntry(userSkinStore1), changeBy(skinTotalStore(child), -(skin)), changeBy(pwrTotalStore, -(skin)), ScriptTransfer(i.caller, skin, pwrAssetId)], skin)
604604 }
605605 else throw("Strict value is not equal to itself.")
606606 }
607607 else throw("Strict value is not equal to itself.")
608608 }
609609
610610
611611
612612 @Callable(i)
613613 func userPower (child,user) = $Tuple2(nil, valueOrElse(userCommitment(child, user), 0))
614614
615615
616616
617617 @Callable(i)
618618 func totalPower (child) = $Tuple2(nil, valueOrErrorMessage(getInteger(skinTotalStore(child)), "totalPower: child not found"))
619619
620620
621621
622622 @Callable(i)
623623 func init (conf) = [writeConstString(configAddressStore, conf)]
624624
625625
626626
627627 @Callable(i)
628628 func pwrToManagers () = if ((i.caller != this))
629629 then throw("denied")
630630 else {
631631 let ambassadorDAO = "3P48jWGMbCS4NaLh9xJnEhaDYnFYpoAGhET"
632- let managers = ["3P5d8ebympveZyvrobxYF84CatUbHL1zrBu", "3PJq9uq1YK2DC2maNvoQAZ7KR6L4ZaNLUhH", "3PMTsYsEwvsEc8U1MsEV6gXHT3VWdwxCgwi", "3PGpgZVZYCBSzgHcGN76ipUCFfabHUygxTA", "3PHwVnsTnooz7yLdX9W76yz3KA9g1qTARSd", "3PR9nrEqRyS9Z57dmrX7WSomNPd6mUybYin", "3PBPVZ9HekzgTwmtUQvy36VeCBF5XDGHded", "3P5niFUYuxPUZQuuFzRk5Nqwio7fpqvGGBD", "3PMaQXb1eofSDDSyBAnspQWRAEtcoFZcTiX", "3P9pRYJGrV7W3n1g7mPZMk6GsC6bHshFr1e", "3P9TEuSCFoodSe7sr6YqBLNrKPbyyzjxKTx", "3PHu9esBtYNsmTcoGpePuYEiYw1cC8G9KBM", "3PC1JhvFuuAdFizC2UYBbhxFSTG8ZaJTqy5", "3PEAGv33YqC2ddRazdyeJJbJQrw4rCY5xcz", "3P9pyZJawxR2bKctPvV9X5GAESRMyYb3sia", "3PQWqkTZpkkouUvmHmLNzo9TNBt42vAiTXA", "3PLcvJsBno5TRXkkJ2XH7pBhSSWFNtPtPRA", "3PPidr6yP4KV1AM7RTJv7QmbWtwgtqQ7LXv", "3PGQnpgdoJ3EPepBzepZMAdgxu7NLk3iauC", "3P6kdJFXJop6jrsYvB8T1B43WKHHeZTNrrS", "3P2y2zu1ARGv78RTyZ7syhPvAJxQMz1Y535", "3P62vrPHm8Wd7bKLfAzLVwUFiLzXtvduzTR", "3P72RNeE8r5Ui89RXPYHXAa11k4wHpghkvv", "3P8UG5BeU6PLSyMPQ5fxEtyEZuYRpvovR5e", "3P65wtJnQLy6yx2yuqoWe3i8yvGqZqSFyYp", "3P8J8kfJhiTewkqdrcvAuCtDJz5JKPLMLET", "3PBwHxuHBbMhWPobp5rAbCzhKrtUDJhJjuG", "3PNi4YTMTzsXqFfgrpsZfT6JWv9NepUmPwt", "3P3RDCXNJEK5yhwtNE5ahxBBMYv7wASWt5E", "3PFvTB4Jr1U5UiqVAZrzyLb8SXTKaqjB6W7", "3PPsEdpv8ZcemDUqZzGyR8B4MzXqHBcePPn", "3PKZHgrXPDSU4Lgs5AKYadmgKEbbBaTbYWd", "3PBGgx1bbMkpFVd2CAFcVq1AzavKesF6QDT", "3PJnRp5KUBwUeZ8wFooerYU156mfc92P4Fy", "3PMS1Gx5yE75iTcd5FcDAPTZ6HkHuEoDwtf", "3P26CxpaxmFiEZiqbGd3FQ5nnndmLDJJZUs", "3P5bqWXwLD5tDoYvykm3nZqNVne2UFYhQTF", "3PMjQNJWpZofbJfRZqpVp2rXpcq3k4dav4f", "3PAa3WN5NrKD2J8hDxzcrvbLTCL3KiS7e15", "3PLzWiFNyAzUWXRn4sR67g7ffqGWMvjyjKA", "3PQ558HfgnEAbJ7BDNS38ydVqU4efY4thK3", "3PLfvHhr9Tjat8SksbA6kK8Re6zMMrecGti", "3P7aWedEc3dK1tSyxUpbkMm1qCfJYbSwGYA", "3P2ChPFBfizXaZqHr75TzEgLGpe46YHpr7z", "3P7vXduSDfmfmA9ACqnVeff5BXMr63qYFaZ", "3P4xumt5A4CEeqTk7ww4GhhkVPc6DcYvzNJ", "3PE9ukRjD5vRpxxuGcbyG2zSE2868Mdbk8S", "3PQneqvGaPHNSLCbteoS7Cdctm1kG9fC3Zc", "3PC6SjKdiz84QxjdwhQFT3AYCBwS1vCzWNG", "3PDiQ4P3gaciLzgPMZJPwDVtXs3kAPEgkFJ", "3PMN98aqX5kmZBvJtKb6EY2Z8geXxEG5Poc"]
632+ let managers = ["3P4TBwU4iZtvnfKvEavg3UWYgFusEioNFdr", "3PKyc3NUzmgxY8z5kbNhUXhjBQdYrMXeEyq", "3P46AWTQaEUxFVEZWvTaQMAxgTYUA5N9TpQ", "3PHPPGL75bYSt3cxPWEwYTUjz9ySQCkPrFk", "3P7L3RpjWY8hW6yEPg3Qck5aDnKQGCvW7zU", "3PLeH6s5tos9kSf1tHBRfboBhYxqwG9SZ5X", "3P5b1qoW2WzseuFeTMKifz2W3GgqarYQPXa", "3PAjznTEdxRRBGLJggeX4Hsw8RdhfbCZ2gd", "3PNJ8R5ozDqPrY3CLKHYivAX2ghwRU1JH1H", "3PGwRavP6VEtmap6ncgc3dxTEKcTZbyc2Px", "3PC6nDhUNfBbQrCJZSiaF8c4w67p4y8b1hc", "3PBeeWv6kvvRQGyt9dA5e8ZXjZGJkC9eZpd", "3PASopFhFyKUN11gihxDoDsiwin8kpY6vAe", "3PQ1FWKcHRwBsvQCVyWc4cgKuxrz4SAN8kC", "3PLVi2FWYeEcydFzeHijXNbU2gYmMkXMi8G", "3PAZFeoJQWUF43rma2jiW2suidrMMxyTs9E", "3P5cXKRnEn4gBJZsUot8A1LArygfqakqj9D", "3PNc3caYvai3ruMTqAw8R9EoXPYTot7nD6u", "3PHTmtAxWyswcFAc7f69fAP7wWg6UytUXKq", "3PF3VoH9Hr4WGJaBoTadWjXs6esgGe2Fa4p", "3PDdiv7RqeV9CqX3PoK3bLhPUvL1zv6tZ5e", "3PEpBy7ZcXeBg6o2MAh2Mk1KKxXuCHEhQDn", "3PPzdYam7cTNUWBDW8MVQ1fEbPjXpb7mh4D", "3PJL7MdydsLXCTsy3iYWBgo74aNy9a1kQPM", "3P3srcgVninpdC4tdZYu6QKpUYwnn9fttU1", "3PANCgmdoGncJemAjF8ty2uHDhV6Lsb1JnH", "3PFT1MHUkNNjP7amSftjg27TqUYeEFcfozS", "3PKxXRVU7VvBh7HUqYpVe1rf92ns4f5LqQg", "3P3dFJXxSRZDAAMBUPridtMJDYKv4x9Ce3o", "3PEpeHAZemtwZDv2QsbUZDy33wV22stZ8qf", "3P9qjh44mb7E99Tw4JY4Nwd4Wjjh4zvwJm9", "3P9k6xkUYZZhjR1mBGrFj6XKds2bRGc8i4n", "3PAKfGntcw5MoGUzjV38dox5WHyjgx4eztR", "3PDLR9JjPCBzrVA3c3yybYLj5YoBNuztdMG", "3PQyu5nrVeLKAG72YGMj4EgDwP6c55Awoq3", "3P7g3ge6fiE3c3JnsNCHps3UCfXDPEEmfLL", "3PAgFYQGvfcrxrnfZfbaUFddPJisJXgZijE", "3PPBdisMeX5HEDpUYyjgdJ9Uoij5nhrHYjf", "3PHiDUEiw7MJwCpH78GWjTtUtPggg2Xon5Z", "3PEQZebFNYyY1vbLUkbSKd821cGoepoo2y1", "3P7w4VGrAGSaVsdmLniisJHk3muhtrfs63N", "3PMGThDtfeB1ZDtkMnh6quiycrs1X1f2Fbx", "3PCW7jtVMRkxu9VnPVTfjz8SsQXHRBQgaxd", "3PJh8TLxViuMRnEz7R7krVZkFAv1izJeX21", "3PEd6RwBXkQQ7sdwNMkN8t5rbT1QrcML9XK", "3P2CXNZ9rG3LPv6DWYDM1G4Mh65qfTiGhD8", "3PQdVMoPPip115Mbdfpftd7mHKhh6iufULd", "3PN7EZHKtQiY9eMBnSmmAgWL6ZNGeirJGRT", "3PJSKec6gMF946UCpz9VvQi5hqrWKUFSzKq", "3P6kxECoAz8jKaBnUK3yXHZcfvzhSdgZE4B", "3PEWNVYQ4SyPVBzSCuVqUmaTKF623hTiWhi"]
633633 let totalAmbassadors = size(managers)
634634 let pwrRewards = 1000000
635635 func fold (cmds,ambassador) = changeBy(userSkinStore(ambassadorDAO, ambassador), pwrRewards) :: cmds
636636
637637 [changeBy(skinTotalStore(ambassadorDAO), (pwrRewards * totalAmbassadors)), {
638638 let $l = managers
639639 let $s = size($l)
640640 let $acc0 = nil
641641 func $f0_1 ($a,$i) = if (($i >= $s))
642642 then $a
643643 else fold($a, $l[$i])
644644
645645 func $f0_2 ($a,$i) = if (($i >= $s))
646646 then $a
647647 else throw("List size exceeds 100")
648648
649649 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
650650 }]
651651 }
652652
653653

github/deemru/w8io/3ef1775 
150.05 ms