tx · 9wNALryRHbvVdvYgPVX7w4vGaoXZQLuQt8cmdKQu1BjK

3Mp3nG9T5fKGziHW8mcCqx3jMFx3towh3WA:  -0.02200000 Waves

2023.02.15 16:01 [2450756] smart account 3Mp3nG9T5fKGziHW8mcCqx3jMFx3towh3WA > SELF 0.00000000 Waves

{ "type": 13, "id": "9wNALryRHbvVdvYgPVX7w4vGaoXZQLuQt8cmdKQu1BjK", "fee": 2200000, "feeAssetId": null, "timestamp": 1676466088205, "version": 2, "chainId": 84, "sender": "3Mp3nG9T5fKGziHW8mcCqx3jMFx3towh3WA", "senderPublicKey": "D46gQxzmdzdCTYRg6dMcwFoUrc6ZmxF6GKd5ZoTkvzp1", "proofs": [ "3Hq9aYeybzweYASwR3ACuwstiiiYyLeSBhMExRR2t1Jw6yf9Do4zPKUuNkrc79ayYKvr3hUZx8KGge32p6q3kj7s" ], "script": "base64:BgLJFAgCEgMKAQgSABIECgIIARIHCgUICAgIARIECgIICBIFCgMICAESBAoCCAgSAwoBARIDCgEBEgQKAggIEgQKAggEEgASAwoBARIAEgQKAggIEgQKAggIEgQKAggIIglzZXBhcmF0b3IiDnBvb2xXZWlnaHRNdWx0Ig9tYXhEZXB0aERlZmF1bHQiFmZpbmFsaXphdGlvblN0YWdlVG90YWwiF2ZpbmFsaXphdGlvblN0YWdlU2hhcmVzIg5rZXlFcG9jaExlbmd0aCIRa2V5RXBvY2hMZW5ndGhOZXciFWtleUVwb2NoTGVuZ3RoQnlFcG9jaCIFZXBvY2giD2tleUN1cnJlbnRFcG9jaCILa2V5TWF4RGVwdGgiImtleVZvdGluZ0VtaXNzaW9uQ2FuZGlkYXRlQ29udHJhY3QiEmtleUZhY3RvcnlDb250cmFjdCITa2V5Qm9vc3RpbmdDb250cmFjdCISa2V5U3Rha2luZ0NvbnRyYWN0IhRrZXlGaW5hbGl6YXRpb25TdGFnZSILa2V5TmV4dFBvb2wiC2tleU5leHRVc2VyIg5rZXlTdGFydEhlaWdodCIRa2V5Q3VycmVudEVwb2NoVWkiEGtleVN0YXJ0SGVpZ2h0VWkiHWtleUZpbmFsaXphdGlvblNob3VsZEJlRm9yY2VkIhVrZXlTdGFydEhlaWdodEJ5RXBvY2giDGtleUZpbmFsaXplZCIJa2V5SW5MaXN0IgRwb29sIgskdDAxNjkzMTczMyINYW1vdW50QXNzZXRJZCIMcHJpY2VBc3NldElkIgdrZXlVc2VkIgdhZGRyZXNzIgdrZXlWb3RlIgskdDAyMDA3MjA0NyIPa2V5Vm90aW5nUmVzdWx0IgskdDAyMjI5MjI2OSIMa2V5UG9vbFNoYXJlIgskdDAyNDM0MjQ3NCINa2V5VG90YWxWb3RlcyIHd3JhcEVyciIDbXNnIgh0aHJvd0VyciIOZ2V0VmFsdWVPckZhaWwiA2tleSIEdHlwZSIFZXJyb3IiByRtYXRjaDAiA3N0ciIDaW50IgxnZXRTdHJPckZhaWwiAUAiDGdldEludE9yRmFpbCIMcG9vbFRvU3RyaW5nIgxzdHJpbmdUb1Bvb2wiBXBhcnRzIhZnZXRMcEFzc2V0QnlQb29sQXNzZXRzIh9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkIgxiYXNlQXNzZXRTdHIiKWtleU1hcHBpbmdQb29sQXNzZXRzVG9Qb29sQ29udHJhY3RBZGRyZXNzIhhpbnRlcm5hbEFtb3VudEFzc2V0SWRTdHIiF2ludGVybmFsUHJpY2VBc3NldElkU3RyIh9rZXlNYXBwaW5nUG9vbENvbnRyYWN0VG9MUEFzc2V0IhNwb29sQ29udHJhY3RBZGRyZXNzIg9mYWN0b3J5Q29udHJhY3QiFWFtb3VudEFzc2V0SW50ZXJuYWxJZCIUcHJpY2VBc3NldEludGVybmFsSWQiCWxwQXNzZXRJZCIYY2hlY2tXeEVtaXNzaW9uUG9vbExhYmVsIgskdDA0ODQzNDg4MyINcG9vbHNMaXN0TmFtZSIQZ2V0Vm90ZXNMaXN0TmFtZSILJHQwNTE4NDUyMjQiC2tleUxpc3RIZWFkIghsaXN0TmFtZSIEbWV0YSILa2V5TGlzdFNpemUiC2tleUxpc3RQcmV2IgJpZCILa2V5TGlzdE5leHQiDGNvbnRhaW5zTm9kZSIKaGVhZE9yVW5pdCIKcHJldk9yVW5pdCIKbmV4dE9yVW5pdCIRaW5zZXJ0Tm9kZUFjdGlvbnMiCGxpc3RTaXplIgljaGVja05vZGUiEWRlbGV0ZU5vZGVBY3Rpb25zIhNrZXlNYW5hZ2VyUHVibGljS2V5IhprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleSIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCIBcyIdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQiFXBlcm1pc3Npb25EZW5pZWRFcnJvciIIbXVzdFRoaXMiAWkiC211c3RNYW5hZ2VyIgJwayIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiC2NoZWNrQ2FsbGVyIhVjaGVja01hbmFnZXJQdWJsaWNLZXkiAnBtIgVoYXNQTSIHY2hlY2tQTSILdXNlckFkZHJlc3MiDHRhcmdldEhlaWdodCIXYm9vc3RpbmdDb250cmFjdEFkZHJlc3MiH3ZvdGluZ0VtaXNzaW9uQ2FuZGlkYXRlQ29udHJhY3QiEGJvb3N0aW5nQ29udHJhY3QiD3N0YWtpbmdDb250cmFjdCILZXBvY2hMZW5ndGgiBmNoZWNrcyINaW5MaXN0QWN0aW9ucyIYY3VycmVudEVwb2NoSXNOb3REZWZpbmVkIhJzdGFydEhlaWdodEFjdGlvbnMiBmFtb3VudCILc3RhcnRIZWlnaHQiCWVuZEhlaWdodCIXZmluYWxpemF0aW9uU3RhZ2VPclVuaXQiBHVzZWQiBHZvdGUiCnBvb2xSZXN1bHQiCnRvdGFsVm90ZXMiE2d3eEFtb3VudEF0RW5kVG90YWwiCWF2YWlsYWJsZSIHbmV3Vm90ZSIKd3hFbWlzc2lvbiINdm90ZXNMaXN0TmFtZSIOdXNlckFkZHJlc3NTdHIiEHZvdGVzTGlzdEFjdGlvbnMiDm5ld0Vwb2NoTGVuZ3RoIgtuZXdNYXhEZXB0aCIHcG9vbFN0ciINZXBvY2hQcmV2aW91cyITc3RhcnRIZWlnaHRQcmV2aW91cyITZXBvY2hMZW5ndGhQcmV2aW91cyIRZW5kSGVpZ2h0UHJldmlvdXMiEGNoZWNrVGFyZ2V0RXBvY2giDSR0MDE3Njc1MTc3MTUiG2d3eEFtb3VudEF0RW5kVG90YWxQcmV2aW91cyIMdm90aW5nUmVzdWx0Igx2b3RlUHJldmlvdXMiB2FjdGlvbnMiBWZvcmNlIgt0YXJnZXRFcG9jaCIMY3VycmVudEVwb2NoIg0kdDAxOTQ0MTE5NDgxIgFyIgVzaGFyZSIPbW9kaWZ5V2VpZ2h0SW52IhBwb29sc0xpc3RBY3Rpb25zIg1wcmV2aW91c0Vwb2NoIghuZXdFcG9jaCIUbmV3RXBvY2hMZW5ndGhPcHRpb24iFW5ld0Vwb2NoTGVuZ3RoQWN0aW9ucyIKcG9vbE9yVW5pdCIKdXNlck9yVW5pdCIHJG1hdGNoMSIMcG9vbHNIZWFkU3RyIg5uZXh0VXNlck9yVW5pdCIEdXNlciIEbmV4dCIOcHJvY2Vzc1ZvdGVJbnYiDm5leHRQb29sT3JVbml0IgckbWF0Y2gyIghuZXh0VXNlciILbmV4dFBvb2xTdHIiB2NvdW50ZXIiBnJlc3VsdCIIbWF4RGVwdGgiA2ludiICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5NgABYQICX18AAWIAgMLXLwABYwAKAAFkAAAAAWUAAQABZgkAuQkCCQDMCAICAiVzCQDMCAICC2Vwb2NoTGVuZ3RoBQNuaWwFAWEAAWcJALkJAgkAzAgCAgQlcyVzCQDMCAICEGVwb2NoTGVuZ3RoX19uZXcFA25pbAUBYQEBaAEBaQkAuQkCCQDMCAICBCVzJWQJAMwIAgILZXBvY2hMZW5ndGgJAMwIAgkApAMBBQFpBQNuaWwFAWEAAWoJALkJAgkAzAgCAgIlcwkAzAgCAgxjdXJyZW50RXBvY2gFA25pbAUBYQABawkAuQkCCQDMCAICAiVzCQDMCAICCG1heERlcHRoBQNuaWwFAWEAAWwJALkJAgkAzAgCAgIlcwkAzAgCAh92b3RpbmdFbWlzc2lvbkNhbmRpZGF0ZUNvbnRyYWN0BQNuaWwFAWEAAW0JALkJAgkAzAgCAgIlcwkAzAgCAg9mYWN0b3J5Q29udHJhY3QFA25pbAUBYQABbgkAuQkCCQDMCAICAiVzCQDMCAICEGJvb3N0aW5nQ29udHJhY3QFA25pbAUBYQABbwkAuQkCCQDMCAICAiVzCQDMCAICD3N0YWtpbmdDb250cmFjdAUDbmlsBQFhAAFwCQC5CQIJAMwIAgICJXMJAMwIAgIRZmluYWxpemF0aW9uU3RhZ2UFA25pbAUBYQABcQkAuQkCCQDMCAICAiVzCQDMCAICCG5leHRQb29sBQNuaWwFAWEAAXIJALkJAgkAzAgCAgIlcwkAzAgCAghuZXh0VXNlcgUDbmlsBQFhAAFzCQC5CQIJAMwIAgICJXMJAMwIAgILc3RhcnRIZWlnaHQFA25pbAUBYQABdAkAuQkCCQDMCAICAiVzCQDMCAICDmN1cnJlbnRFcG9jaFVpBQNuaWwFAWEAAXUJALkJAgkAzAgCAgIlcwkAzAgCAg1zdGFydEhlaWdodFVpBQNuaWwFAWEAAXYJALkJAgkAzAgCAgIlcwkAzAgCAgVmb3JjZQUDbmlsBQFhAQF3AQFpCQC5CQIJAMwIAgIEJXMlZAkAzAgCAgtzdGFydEhlaWdodAkAzAgCCQCkAwEFAWkFA25pbAUBYQEBeAEBaQkAuQkCCQDMCAICBCVzJWQJAMwIAgIJZmluYWxpemVkCQDMCAIJAKQDAQUBaQUDbmlsBQFhAQF5AQF6BAFBBQF6BAFCCAUBQQJfMQQBQwgFAUECXzIJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIGaW5MaXN0CQDMCAIFAUIJAMwIAgUBQwUDbmlsBQFhAQFEAgFFAWkJALkJAgkAzAgCAgYlcyVzJWQJAMwIAgIEdXNlZAkAzAgCCQClCAEFAUUJAMwIAgkApAMBBQFpBQNuaWwFAWEBAUYDAXoBRQFpBAFHBQF6BAFCCAUBRwJfMQQBQwgFAUcCXzIJALkJAgkAzAgCAgolcyVzJXMlcyVkCQDMCAICBHZvdGUJAMwIAgUBQgkAzAgCBQFDCQDMCAIJAKUIAQUBRQkAzAgCCQCkAwEFAWkFA25pbAUBYQEBSAIBegFpBAFJBQF6BAFCCAUBSQJfMQQBQwgFAUkCXzIJALkJAgkAzAgCAgglcyVzJXMlZAkAzAgCAgx2b3RpbmdSZXN1bHQJAMwIAgUBQgkAzAgCBQFDCQDMCAIJAKQDAQUBaQUDbmlsBQFhAQFKAgF6AWkEAUsFAXoEAUIIBQFLAl8xBAFDCAUBSwJfMgkAuQkCCQDMCAICCCVzJXMlcyVkCQDMCAICCXBvb2xTaGFyZQkAzAgCBQFCCQDMCAIFAUMJAMwIAgkApAMBBQFpBQNuaWwFAWEBAUwBAWkJALkJAgkAzAgCAgQlcyVkCQDMCAICCnRvdGFsVm90ZXMJAMwIAgkApAMBBQFpBQNuaWwFAWEBAU0BAU4JALkJAgkAzAgCAhV2b3RpbmdfZW1pc3Npb24ucmlkZToJAMwIAgUBTgUDbmlsAgEgAQFPAQFOCQACAQkBAU0BBQFOAQFQAwFFAVEBUgQBUwkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQFFCQDMCAICAS4JAMwIAgUBUQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIACQETdmFsdWVPckVycm9yTWVzc2FnZQIEAVQFAVIDCQABAgUBVAIGU3RyaW5nBAFVBQFUCQCdCAIFAUUFAVEDCQABAgUBVAIDSW50BAFWBQFUCQCaCAIFAUUFAVEJAAIBAhJpbnZhbGlkIGVudHJ5IHR5cGUFAVMBAVcCAUUBUQoAAVgJAQFQAwUBRQUBUQIAAwkAAQIFAVgCBlN0cmluZwUBWAkAAgEJAKwCAgkAAwEFAVgCGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwEBWQIBRQFRCgABWAkBAVADBQFFBQFRAAADCQABAgUBWAIDSW50BQFYCQACAQkArAICCQADAQUBWAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AQFaAQF6CQCsAgIJAKwCAggFAXoCXzEFAWEIBQF6Al8yAQJhYQEBVQQCYWIJALUJAgUBVQUBYQMJAAACCQCQAwEFAmFiAAIJAJQKAgkAkQMCBQJhYgAACQCRAwIFAmFiAAEJAAIBAhNpbnZhbGlkIHBvb2wgc3RyaW5nAQJhYwIBQgFDCgECYWQBAmFlCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmFlCgECYWYCAmFnAmFoCQCsAgIJAKwCAgkArAICCQCsAgICCiVkJWQlcyVzX18JAKQDAQUCYWcCAl9fCQCkAwEFAmFoAiNfX21hcHBpbmdzX19wb29sQXNzZXRzMlBvb2xDb250cmFjdAoBAmFpAQJhagkArAICCQCsAgICCCVzJXMlc19fBQJhagIgX19tYXBwaW5nc19fcG9vbENvbnRyYWN0MkxwQXNzZXQEAmFrCQERQGV4dHJOYXRpdmUoMTA2MikBCQEBVwIFBHRoaXMFAW0EAmFsCQEBWQIFAmFrCQECYWQBBQFCBAJhbQkBAVkCBQJhawkBAmFkAQUBQwQCYWoJAQFXAgUCYWsJAQJhZgIFAmFsBQJhbQQCYW4JAQFXAgUCYWsJAQJhaQEFAmFqBQJhbgECYW8BAXoEAmFwBQF6BAFCCAUCYXACXzEEAUMIBQJhcAJfMgQCYWsJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQFXAgUEdGhpcwUBbQoAAVgJAPwHBAUCYWsCGGNoZWNrV3hFbWlzc2lvblBvb2xMYWJlbAkAzAgCBQFCCQDMCAIFAUMFA25pbAUDbmlsAwkAAQIFAVgCB0Jvb2xlYW4FAVgJAAIBCQCsAgIJAAMBBQFYAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuAAJhcQIFcG9vbHMBAmFyAQF6BAJhcwUBegQBQggFAmFzAl8xBAFDCAUCYXMCXzIJALkJAgkAzAgCAgV2b3RlcwkAzAgCBQFCCQDMCAIFAUMFA25pbAUBYQECYXQBAmF1BAJhdgMJAAACBQJhdQUCYXECBCVzJXMCCCVzJXMlcyVzCQC5CQIJAMwIAgUCYXYJAMwIAgUCYXUJAMwIAgIEaGVhZAUDbmlsBQFhAQJhdwECYXUEAmF2AwkAAAIFAmF1BQJhcQIEJXMlcwIIJXMlcyVzJXMJALkJAgkAzAgCBQJhdgkAzAgCBQJhdQkAzAgCAgRzaXplBQNuaWwFAWEBAmF4AgJhdQJheQQCYXYDCQAAAgUCYXUFAmFxAgglcyVzJXMlcwIKJXMlcyVzJXMlcwkAuQkCCQDMCAIFAmF2CQDMCAIFAmF1CQDMCAIFAmF5CQDMCAICBHByZXYFA25pbAUBYQECYXoCAmF1AmF5BAJhdgMJAAACBQJhdQUCYXECCCVzJXMlcyVzAgolcyVzJXMlcyVzCQC5CQIJAMwIAgUCYXYJAMwIAgUCYXUJAMwIAgUCYXkJAMwIAgIEbmV4dAUDbmlsBQFhAQJhQQICYXUCYXkEAmFCCQCdCAIFBHRoaXMJAQJhdAEFAmF1BAJhQwkAnQgCBQR0aGlzCQECYXgCBQJhdQUCYXkEAmFECQCdCAIFBHRoaXMJAQJhegIFAmF1BQJheQMDCQAAAgUCYXkJAQt2YWx1ZU9yRWxzZQIFAmFCAgAGCQECIT0CBQJhQwUEdW5pdAYJAQIhPQIFAmFEBQR1bml0AQJhRQICYXUCYXkEAmFCCQCdCAIFBHRoaXMJAQJhdAEFAmF1BAJhRgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYXcBBQJhdQAABAJhRwMJAQEhAQkBAmFBAgUCYXUFAmF5BgkAAgECC05vZGUgZXhpc3RzAwkAAAIFAmFHBQJhRwkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhdwEFAmF1CQBkAgUCYUYAAQUDbmlsAwkBAiE9AgUCYUIFBHVuaXQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmF6AgUCYXUFAmF5CQEFdmFsdWUBBQJhQgkAzAgCCQELU3RyaW5nRW50cnkCCQECYXgCBQJhdQkBBXZhbHVlAQUCYUIFAmF5BQNuaWwFA25pbAkAzAgCCQELU3RyaW5nRW50cnkCCQECYXQBBQJhdQUCYXkFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECYUgCAmF1AmF5BAJhQgkAnQgCBQR0aGlzCQECYXQBBQJhdQQCYUYJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmF3AQUCYXUAAAQCYUMJAJ0IAgUEdGhpcwkBAmF4AgUCYXUFAmF5BAJhRAkAnQgCBQR0aGlzCQECYXoCBQJhdQUCYXkJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmF3AQUCYXUJAGUCBQJhRgABBQNuaWwDAwkBAiE9AgUCYUMFBHVuaXQJAQIhPQIFAmFEBQR1bml0BwkAzAgCCQELU3RyaW5nRW50cnkCCQECYXoCBQJhdQkBBXZhbHVlAQUCYUMJAQV2YWx1ZQEFAmFECQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJheAIFAmF1CQEFdmFsdWUBBQJhRAkBBXZhbHVlAQUCYUMJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmF4AgUCYXUFAmF5CQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhegIFAmF1BQJheQUDbmlsAwkBAiE9AgUCYUQFBHVuaXQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmF0AQUCYXUJAQV2YWx1ZQEFAmFECQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhegIFAmF1BQJheQkAzAgCCQELRGVsZXRlRW50cnkBCQECYXgCBQJhdQkBBXZhbHVlAQUCYUQFA25pbAMJAQIhPQIFAmFDBQR1bml0CQDMCAIJAQtEZWxldGVFbnRyeQEJAQJheAIFAmF1BQJheQkAzAgCCQELRGVsZXRlRW50cnkBCQECYXoCBQJhdQkBBXZhbHVlAQUCYUMFA25pbAMJAAACBQJheQkBC3ZhbHVlT3JFbHNlAgUCYUICAAkAzAgCCQELRGVsZXRlRW50cnkBCQECYXQBBQJhdQUDbmlsCQACAQkArAICCQCsAgIJAKwCAgIOaW52YWxpZCBub2RlOiAFAmF1AgEuBQJheQECYUkAAhQlc19fbWFuYWdlclB1YmxpY0tleQECYUoAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAmFLAAQBVAkAoggBCQECYUkAAwkAAQIFAVQCBlN0cmluZwQCYUwFAVQJANkEAQUCYUwDCQABAgUBVAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJhTQAEAVQJAKIIAQkBAmFKAAMJAAECBQFUAgZTdHJpbmcEAmFMBQFUCQDZBAEFAmFMAwkAAQIFAVQCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgACYU4JAAIBAhFQZXJtaXNzaW9uIGRlbmllZAECYU8BAmFQAwkAAAIIBQJhUAZjYWxsZXIFBHRoaXMGBQJhTgECYVEBAmFQBAFUCQECYUsAAwkAAQIFAVQCCkJ5dGVWZWN0b3IEAmFSBQFUAwkAAAIIBQJhUA9jYWxsZXJQdWJsaWNLZXkFAmFSBgUCYU4DCQABAgUBVAIEVW5pdAkBAmFPAQUCYVAJAAIBAgtNYXRjaCBlcnJvchECYVABCnNldE1hbmFnZXIBAmFTBAJhVAkBAmFRAQUCYVADCQAAAgUCYVQFAmFUBAJhVQkA2QQBBQJhUwMJAAACBQJhVQUCYVUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFKAAUCYVMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhUAEOY29uZmlybU1hbmFnZXIABAJhVgkBAmFNAAQCYVcDCQEJaXNEZWZpbmVkAQUCYVYGCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmFXBQJhVwQCYVgDCQAAAggFAmFQD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCYVYGCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmFYBQJhWAkAzAgCCQELU3RyaW5nRW50cnkCCQECYUkACQDYBAEJAQV2YWx1ZQEFAmFWCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhSgAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhUAEYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0AgJhWQJhWgQCYmEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQEBVwIFBHRoaXMFAW4CIWludmFsaWQgYm9vc3RpbmcgY29udHJhY3QgYWRkcmVzcwkAlAoCBQNuaWwKAAFYCQD8BwQFAmJhAiBnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHRSRUFET05MWQkAzAgCBQJhWQkAzAgCBQJhWgUDbmlsBQNuaWwDCQABAgUBWAIDSW50BQFYCQACAQkArAICCQADAQUBWAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AmFQAQtjb25zdHJ1Y3RvcgUCYWsCYmICYmMCYmQCYmUEAmJmCQDMCAIJAQJhUQEFAmFQCQDMCAIDCQECIT0CCQCmCAEFAmFrBQR1bml0BgIgaW52YWxpZCBmYWN0b3J5IGNvbnRyYWN0IGFkZHJlc3MJAMwIAgMJAQIhPQIJAKYIAQUCYmIFBHVuaXQGAjJpbnZhbGlkIHZvdGluZyBlbWlzc2lvbiBjYW5kaWRhdGUgY29udHJhY3QgYWRkcmVzcwkAzAgCAwkBAiE9AgkApggBBQJiYwUEdW5pdAYCIWludmFsaWQgYm9vc3RpbmcgY29udHJhY3QgYWRkcmVzcwkAzAgCAwkBAiE9AgkApggBBQJiZAUEdW5pdAYCIGludmFsaWQgc3Rha2luZyBjb250cmFjdCBhZGRyZXNzCQDMCAIDCQBmAgUCYmUAAAYJAAIBAhRpbnZhbGlkIGVwb2NoIGxlbmd0aAUDbmlsAwkAAAIFAmJmBQJiZgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFAW0FAmFrCQDMCAIJAQtTdHJpbmdFbnRyeQIFAWwFAmJiCQDMCAIJAQtTdHJpbmdFbnRyeQIFAW4FAmJjCQDMCAIJAQtTdHJpbmdFbnRyeQIFAW8FAmJkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFmBQJiZQUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFQAQZjcmVhdGUCAUIBQwQCYmYJAMwIAgMJAAACCQDYBAEICAUCYVAGY2FsbGVyBWJ5dGVzCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAWwCAAYJAQJhUQEFAmFQBQNuaWwDCQAAAgUCYmYFAmJmBAF6CQCUCgIFAUIFAUMEAmJnCQDOCAIJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQF5AQUBegYFA25pbAkBAmFFAgUCYXEJAQFaAQUBegQCYmgJAAACCQCaCAIFBHRoaXMFAWoFBHVuaXQEAmJpAwUCYmgEAWkAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUBagUBaQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAXcBBQFpBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFAXMFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUBdAUBaQkAzAgCCQEMSW50ZWdlckVudHJ5AgUBdQUGaGVpZ2h0BQNuaWwFA25pbAkAlAoCCQDOCAIFAmJnBQJiaQUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhUAEEdm90ZQMBQgFDAmJqBAF6CQCUCgIFAUIFAUMEAWkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUBagAABAJiawkBAVkCBQR0aGlzCQEBdwEFAWkEAmJlCQEBWQIFBHRoaXMFAWYEAmJsCQBkAgUCYmsFAmJlBAJibQkAmggCBQR0aGlzBQFwBAJibgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEBRAIIBQJhUAZjYWxsZXIFAWkAAAQCYm8JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAUYDBQF6CAUCYVAGY2FsbGVyBQFpAAAEAmJwCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFIAgUBegUBaQAABAJicQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEBTAEFAWkAAAQCYnIKAAFYCQD8BwQFBHRoaXMCGGdldFVzZXJHd3hBbW91bnRBdEhlaWdodAkAzAgCCQDYBAEICAUCYVAGY2FsbGVyBWJ5dGVzCQDMCAIFAmJsBQNuaWwFA25pbAMJAAECBQFYAgNJbnQFAVgJAAIBCQCsAgIJAAMBBQFYAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEAmJzCQBlAgUCYnIFAmJuBAJidAkAZAIFAmJvBQJiagQCYnUJAQJhbwEFAXoEAmJmCQDMCAIDCQECIT0CCQCgCAEJAQF5AQUBegUEdW5pdAYJAAIBAg5pbnZhbGlkIGFzc2V0cwkAzAgCAwkAZgIFAmJsBQZoZWlnaHQGCQACAQIOaW52YWxpZCBoZWlnaHQJAMwIAgMJAAACBQJibQUEdW5pdAYJAAIBAhhmaW5hbGl6YXRpb24gaW4gcHJvZ3Jlc3MJAMwIAgMJAGYCBQJicgAABgkAAgECE3lvdSBkbyBub3QgaGF2ZSBnV1gJAMwIAgMDCQBmAgUCYmoAAAkAZwIFAmJzBQJiagcGCQACAQIOaW52YWxpZCBhbW91bnQJAMwIAgMFAmJ1BgkAAgECHXBvb2wgaGFzbid0IFdYX0VNSVNTSU9OIGxhYmVsBQNuaWwDCQAAAgUCYmYFAmJmBAJidgkBAmFyAQUBegQCYncJAKUIAQgFAmFQBmNhbGxlcgQCYngDCQECYUECBQJidgUCYncFA25pbAkBAmFFAgUCYnYFAmJ3CQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAUQCCAUCYVAGY2FsbGVyBQFpCQBkAgUCYm4FAmJqCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBRgMFAXoIBQJhUAZjYWxsZXIFAWkFAmJ0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBSAIFAXoFAWkJAGQCBQJicAUCYmoJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFMAQUBaQkAZAIFAmJxBQJiagUDbmlsBQJieAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhUAEKY2FuY2VsVm90ZQIBQgFDBAF6CQCUCgIFAUIFAUMEAWkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUBagAABAJiawkBAVkCBQR0aGlzCQEBdwEFAWkEAmJlCQEBWQIFBHRoaXMFAWYEAmJsCQBkAgUCYmsFAmJlBAJibQkAmggCBQR0aGlzBQFwBAJibgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEBRAIIBQJhUAZjYWxsZXIFAWkAAAQCYm8JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAUYDBQF6CAUCYVAGY2FsbGVyBQFpAAAEAmJwCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFIAgUBegUBaQAABAJicQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEBTAEFAWkAAAQCYmYJAMwIAgMJAQIhPQIJAKAIAQkBAXkBBQF6BQR1bml0BgkAAgECDmludmFsaWQgYXNzZXRzCQDMCAIDCQBmAgUCYmwFBmhlaWdodAYJAAIBAg5pbnZhbGlkIGhlaWdodAkAzAgCAwkAAAIFAmJtBQR1bml0BgkAAgECGGZpbmFsaXphdGlvbiBpbiBwcm9ncmVzcwkAzAgCAwkAZgIFAmJvAAAGCQACAQIHbm8gdm90ZQUDbmlsAwkAAAIFAmJmBQJiZgQCYnYJAQJhcgEFAXoEAmJ3CQClCAEIBQJhUAZjYWxsZXIJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBRAIIBQJhUAZjYWxsZXIFAWkJAJYDAQkAzAgCCQBlAgUCYm4FAmJvCQDMCAIAAAUDbmlsCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFGAwUBeggFAmFQBmNhbGxlcgUBaQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAUgCBQF6BQFpCQBlAgUCYnAFAmJvCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBTAEFAWkJAGUCBQJicQUCYm8FA25pbAkBAmFIAgUCYnYFAmJ3BQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFQAQ5zZXRFcG9jaExlbmd0aAECYnkEAmJmCQDMCAIJAQJhUQEFAmFQCQDMCAIDCQBmAgUCYnkAAAYJAAIBAhRpbnZhbGlkIGVwb2NoIGxlbmd0aAUDbmlsAwkAAAIFAmJmBQJiZgkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFnBQJieQUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFQAQtzZXRNYXhEZXB0aAECYnoEAmJmCQDMCAIJAQJhUQEFAmFQCQDMCAIDCQBmAgUCYnoAAAYJAAIBAhFpbnZhbGlkIG1heCBkZXB0aAUDbmlsAwkAAAIFAmJmBQJiZgkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFrBQJiegUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFQARNwcm9jZXNzVm90ZUlOVEVSTkFMAgJiQQJidwQCYVQJAQJhTwEFAmFQAwkAAAIFAmFUBQJhVAQCYVkJARN2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awMFAmJJBQFiBQJicQQCYlIJAPwHBAUCYWsCDG1vZGlmeVdlaWdodAkAzAgCBQJhbgkAzAgCBQJiUQUDbmlsBQNuaWwDCQAAAgUCYlIFAmJSBAJiUwMDBQJidQYFAmJMBQNuaWwJAM4IAgkAzAgCCQELRGVsZXRlRW50cnkBCQEBeQEFAXoFA25pbAkBAmFIAgUCYXEFAmJBCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAUoCBQF6BQJiTQUCYlEFA25pbAUCYlMHCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFQAQ5maW5hbGl6ZUhlbHBlcgAEAmJMCQELdmFsdWVPckVsc2UCCQCgCAEFAXYHBAFpCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAWoAAAQCYlQJAGUCBQFpAAEEAmJrCQEBWQIFBHRoaXMJAQF3AQUBaQQCYmUJAQFZAgUEdGhpcwUBZgQCYmwJAGQCBQJiawUCYmUEAmJtCQCaCAIFBHRoaXMFAXADAwMJAGcCBQZoZWlnaHQFAmJsCQAAAgUCYm0FBHVuaXQHCQEBIQEFAmJMBwQCYlUJAGQCBQFpAAEEAmJWCQCaCAIFBHRoaXMFAWcEAmJXBAFUBQJiVgMJAAECBQFUAgNJbnQEAmJ5BQFUCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFmBQJieQkAzAgCCQELRGVsZXRlRW50cnkBBQFnBQNuaWwDCQABAgUBVAIEVW5pdAUDbmlsCQACAQILTWF0Y2ggZXJyb3IJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBdwEFAmJVBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFAXMFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUBagUCYlUJAMwIAgkBDEludGVnZXJFbnRyeQIFAXAFAWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFoAQUBaQUCYmUFA25pbAUCYlcGAwMFAmJMCQAAAgUCYm0FBHVuaXQHCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFAXAFAWUFA25pbAYDCQAAAgUCYm0FBHVuaXQJAJQKAgUDbmlsBwMJAAACBQJibQUBZAQCYlgJAKIIAQUBcQQCYlkJAKIIAQUBcgQBVAUCYlgDCQABAgUBVAIEVW5pdAQCYloJAKIIAQkBAmF0AQUCYXEDCQABAgUCYloCBFVuaXQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUBcAUBZQkAzAgCCQELRGVsZXRlRW50cnkBBQFxCQDMCAIJAQtEZWxldGVFbnRyeQEFAXIFA25pbAYDCQABAgUCYloCBlN0cmluZwQCY2EFAmJaCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUBcQUCY2EFA25pbAYJAAIBAgtNYXRjaCBlcnJvcgMJAAECBQFUAgZTdHJpbmcEAmJBBQFUBAF6CQECYWEBBQJiQQQCY2IEAmJaBQJiWQMJAAECBQJiWgIEVW5pdAkAoggBCQECYXQBCQECYXIBBQF6AwkAAQIFAmJaAgZTdHJpbmcEAmNjBQJiWgQCY2QJAKIIAQkBAmF6AgkBAmFyAQUBegUCY2MDCQAAAgUCY2QFAmNkBAJjZQkA/AcEBQR0aGlzAhNwcm9jZXNzVm90ZUlOVEVSTkFMCQDMCAIFAmJBCQDMCAIFAmNjBQNuaWwFA25pbAMJAAACBQJjZQUCY2UFAmNkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQILTWF0Y2ggZXJyb3IEAmJaBQJjYgMJAAECBQJiWgIEVW5pdAQCY2YJAKIIAQkBAmF6AgUCYXEFAmJBBAJjZwUCY2YDCQABAgUCY2cCBFVuaXQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUBcAUBZQkAzAgCCQELRGVsZXRlRW50cnkBBQFxCQDMCAIJAQtEZWxldGVFbnRyeQEFAXIFA25pbAYDCQABAgUCY2cCBlN0cmluZwQCYUwFAmNnCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUBcQUCYUwJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBcgUDbmlsBgkAAgECC01hdGNoIGVycm9yAwkAAQIFAmJaAgZTdHJpbmcEAmNoBQJiWgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFAXIFAmNoBQNuaWwGCQACAQILTWF0Y2ggZXJyb3IJAAIBAgtNYXRjaCBlcnJvcgMJAAACBQJibQUBZQQCYlgJAKIIAQUBcQQBVAUCYlgDCQABAgUBVAIEVW5pdAQCYloJAKIIAQkBAmF0AQUCYXEDCQABAgUCYloCBFVuaXQEAmJLAwUCYkwJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBcAkAzAgCCQELRGVsZXRlRW50cnkBBQF2BQNuaWwJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBcAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBAXgBBQJiVAYJAMwIAgkBDEludGVnZXJFbnRyeQIFAXQFAWkJAMwIAgkBDEludGVnZXJFbnRyeQIFAXUFAmJrBQNuaWwJAJQKAgUCYksGAwkAAQIFAmJaAgZTdHJpbmcEAmNpBQJiWgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFAXEFAmNpBQNuaWwGCQACAQILTWF0Y2ggZXJyb3IDCQABAgUBVAIGU3RyaW5nBAJiQQUBVAQCY2YJAKIIAQkBAmF6AgUCYXEFAmJBAwkAAAIFAmNmBQJjZgQCYlAKAAFYCQD8BwQFBHRoaXMCE3Byb2Nlc3NQb29sSU5URVJOQUwJAMwIAgUCYkEJAMwIAgUCYkwFA25pbAUDbmlsAwkAAQIFAVgCB0Jvb2xlYW4FAVgJAAIBCQCsAgIJAAMBBQFYAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuAwkAAAIFAmJQBQJiUAMFAmJQCQCUCgIFA25pbAYEAmJaBQJjZgMJAAECBQJiWgIEVW5pdAQCYksDBQJiTAkAzAgCCQELRGVsZXRlRW50cnkBBQFwCQDMCAIJAQtEZWxldGVFbnRyeQEFAXYJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBcQUDbmlsCQDMCAIJAQtEZWxldGVFbnRyeQEFAXAJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQF4AQUCYlQGCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQF0BQFpCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQF1BQJiawkAzAgCCQELRGVsZXRlRW50cnkBBQFxBQNuaWwJAJQKAgUCYksGAwkAAQIFAmJaAgZTdHJpbmcEAmNpBQJiWgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFAXEFAmNpBQNuaWwGCQACAQILTWF0Y2ggZXJyb3IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAgtNYXRjaCBlcnJvcgkAAgECFmZpbmFsaXphdGlvbiBpcyBicm9rZW4CYVABD2ZpbmFsaXplV3JhcHBlcgECY2oEAmNrCgABWAkA/AcEBQR0aGlzAg5maW5hbGl6ZUhlbHBlcgUDbmlsBQNuaWwDCQABAgUBWAIHQm9vbGVhbgUBWAkAAgEJAKwCAgkAAwEFAVgCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4DCQAAAgUCY2sFAmNrAwkBASEBBQJjawMJAAACBQJjagAACQACAQIeQ3VycmVudCB2b3RpbmcgaXMgbm90IG92ZXIgeWV0CQCUCgIFA25pbAUEdW5pdAQCY2wJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUBawUBYwMJAGYCBQJjbAUCY2oEAmNtCQD8BwQFBHRoaXMCD2ZpbmFsaXplV3JhcHBlcgkAzAgCCQBkAgUCY2oAAQUDbmlsBQNuaWwDCQAAAgUCY20FAmNtCQCUCgIFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAlAoCBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYVABCGZpbmFsaXplAAQCY20JAPwHBAUEdGhpcwIPZmluYWxpemVXcmFwcGVyCQDMCAIAAAUDbmlsBQNuaWwDCQAAAgUCY20FAmNtCQCUCgIFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhUAEUY29udGFpbnNOb2RlUkVBRE9OTFkCAmF1AmF5CQCUCgIFA25pbAkBAmFBAgUCYXUFAmF5AmFQAQppbnNlcnROb2RlAgJhdQJheQQCYVQJAQJhUQEFAmFQAwkAAAIFAmFUBQJhVAkAlAoCCQECYUUCBQJhdQUCYXkFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYVABCmRlbGV0ZU5vZGUCAmF1AmF5BAJhVAkBAmFRAQUCYVADCQAAAgUCYVQFAmFUCQCUCgIJAQJhSAIFAmF1BQJheQUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECY24BAmNvAAQCY3AEAVQJAQJhSwADCQABAgUBVAIKQnl0ZVZlY3RvcgQCYVIFAVQFAmFSAwkAAQIFAVQCBFVuaXQIBQJjbg9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgkA9AMDCAUCY24JYm9keUJ5dGVzCQCRAwIIBQJjbgZwcm9vZnMAAAUCY3B/mryz", "height": 2450756, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9WWceSDgNsALAgLzTKevALZyJJ7rXd3XQJFnFqMLtzmA Next: J5xk3tv5ZG3ejqi8Nb7LUtAzqNrUxLQh2U7ek9ud6Pa3 Diff:
OldNewDifferences
850850 }
851851
852852
853-
854-@Callable(aP)
855-func getVoteInfoREADONLY (cn,bw) = {
856- let aY = addressFromStringValue(bw)
857- let ak = addressFromStringValue(W(this, m))
858- let co = 4
859- let cp = 5
860- let cq = {
861- let X = invoke(ak, "getPoolConfigByLpAssetId", [cn], nil)
862- if ($isInstanceOf(X, "List[Any]"))
863- then X
864- else throw(($getType(X) + " couldn't be cast to List[Any]"))
865- }
866- let B = {
867- let X = cq[co]
868- if ($isInstanceOf(X, "String"))
869- then X
870- else throw(($getType(X) + " couldn't be cast to String"))
871- }
872- let C = {
873- let X = cq[cp]
874- if ($isInstanceOf(X, "String"))
875- then X
876- else throw(($getType(X) + " couldn't be cast to String"))
877- }
878- let cr = {
879- let i = (value(getInteger(this, j)) - 1)
880- if ((0 > i))
881- then O("invalid epoch")
882- else i
883- }
884- let z = $Tuple2(B, C)
885- let cs = valueOrElse(getInteger(this, F(z, aY, cr)), 0)
886- let bp = valueOrElse(getInteger(this, H(z, cr)), 0)
887- $Tuple2(nil, $Tuple2(cs, bp))
888- }
889-
890-
891-@Verifier(ct)
892-func cu () = {
893- let cv = {
853+@Verifier(cn)
854+func co () = {
855+ let cp = {
894856 let T = aK()
895857 if ($isInstanceOf(T, "ByteVector"))
896858 then {
898860 aR
899861 }
900862 else if ($isInstanceOf(T, "Unit"))
901- then ct.senderPublicKey
863+ then cn.senderPublicKey
902864 else throw("Match error")
903865 }
904- sigVerify(ct.bodyBytes, ct.proofs[0], cv)
866+ sigVerify(cn.bodyBytes, cn.proofs[0], cp)
905867 }
906868
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 100000000
77
88 let c = 10
99
1010 let d = 0
1111
1212 let e = 1
1313
1414 let f = makeString(["%s", "epochLength"], a)
1515
1616 let g = makeString(["%s%s", "epochLength__new"], a)
1717
1818 func h (i) = makeString(["%s%d", "epochLength", toString(i)], a)
1919
2020
2121 let j = makeString(["%s", "currentEpoch"], a)
2222
2323 let k = makeString(["%s", "maxDepth"], a)
2424
2525 let l = makeString(["%s", "votingEmissionCandidateContract"], a)
2626
2727 let m = makeString(["%s", "factoryContract"], a)
2828
2929 let n = makeString(["%s", "boostingContract"], a)
3030
3131 let o = makeString(["%s", "stakingContract"], a)
3232
3333 let p = makeString(["%s", "finalizationStage"], a)
3434
3535 let q = makeString(["%s", "nextPool"], a)
3636
3737 let r = makeString(["%s", "nextUser"], a)
3838
3939 let s = makeString(["%s", "startHeight"], a)
4040
4141 let t = makeString(["%s", "currentEpochUi"], a)
4242
4343 let u = makeString(["%s", "startHeightUi"], a)
4444
4545 let v = makeString(["%s", "force"], a)
4646
4747 func w (i) = makeString(["%s%d", "startHeight", toString(i)], a)
4848
4949
5050 func x (i) = makeString(["%s%d", "finalized", toString(i)], a)
5151
5252
5353 func y (z) = {
5454 let A = z
5555 let B = A._1
5656 let C = A._2
5757 makeString(["%s%s%s", "inList", B, C], a)
5858 }
5959
6060
6161 func D (E,i) = makeString(["%s%s%d", "used", toString(E), toString(i)], a)
6262
6363
6464 func F (z,E,i) = {
6565 let G = z
6666 let B = G._1
6767 let C = G._2
6868 makeString(["%s%s%s%s%d", "vote", B, C, toString(E), toString(i)], a)
6969 }
7070
7171
7272 func H (z,i) = {
7373 let I = z
7474 let B = I._1
7575 let C = I._2
7676 makeString(["%s%s%s%d", "votingResult", B, C, toString(i)], a)
7777 }
7878
7979
8080 func J (z,i) = {
8181 let K = z
8282 let B = K._1
8383 let C = K._2
8484 makeString(["%s%s%s%d", "poolShare", B, C, toString(i)], a)
8585 }
8686
8787
8888 func L (i) = makeString(["%s%d", "totalVotes", toString(i)], a)
8989
9090
9191 func M (N) = makeString(["voting_emission.ride:", N], " ")
9292
9393
9494 func O (N) = throw(M(N))
9595
9696
9797 func P (E,Q,R) = {
9898 let S = makeString(["mandatory ", toString(E), ".", Q, " is not defined"], "")
9999 valueOrErrorMessage({
100100 let T = R
101101 if ($isInstanceOf(T, "String"))
102102 then {
103103 let U = T
104104 getString(E, Q)
105105 }
106106 else if ($isInstanceOf(T, "Int"))
107107 then {
108108 let V = T
109109 getInteger(E, Q)
110110 }
111111 else throw("invalid entry type")
112112 }, S)
113113 }
114114
115115
116116 func W (E,Q) = {
117117 let X = P(E, Q, "")
118118 if ($isInstanceOf(X, "String"))
119119 then X
120120 else throw(($getType(X) + " couldn't be cast to String"))
121121 }
122122
123123
124124 func Y (E,Q) = {
125125 let X = P(E, Q, 0)
126126 if ($isInstanceOf(X, "Int"))
127127 then X
128128 else throw(($getType(X) + " couldn't be cast to Int"))
129129 }
130130
131131
132132 func Z (z) = ((z._1 + a) + z._2)
133133
134134
135135 func aa (U) = {
136136 let ab = split(U, a)
137137 if ((size(ab) == 2))
138138 then $Tuple2(ab[0], ab[1])
139139 else throw("invalid pool string")
140140 }
141141
142142
143143 func ac (B,C) = {
144144 func ad (ae) = ("%s%s%s__mappings__baseAsset2internalId__" + ae)
145145
146146 func af (ag,ah) = (((("%d%d%s%s__" + toString(ag)) + "__") + toString(ah)) + "__mappings__poolAssets2PoolContract")
147147
148148 func ai (aj) = (("%s%s%s__" + aj) + "__mappings__poolContract2LpAsset")
149149
150150 let ak = addressFromStringValue(W(this, m))
151151 let al = Y(ak, ad(B))
152152 let am = Y(ak, ad(C))
153153 let aj = W(ak, af(al, am))
154154 let an = W(ak, ai(aj))
155155 an
156156 }
157157
158158
159159 func ao (z) = {
160160 let ap = z
161161 let B = ap._1
162162 let C = ap._2
163163 let ak = addressFromStringValue(W(this, m))
164164 let X = invoke(ak, "checkWxEmissionPoolLabel", [B, C], nil)
165165 if ($isInstanceOf(X, "Boolean"))
166166 then X
167167 else throw(($getType(X) + " couldn't be cast to Boolean"))
168168 }
169169
170170
171171 let aq = "pools"
172172
173173 func ar (z) = {
174174 let as = z
175175 let B = as._1
176176 let C = as._2
177177 makeString(["votes", B, C], a)
178178 }
179179
180180
181181 func at (au) = {
182182 let av = if ((au == aq))
183183 then "%s%s"
184184 else "%s%s%s%s"
185185 makeString([av, au, "head"], a)
186186 }
187187
188188
189189 func aw (au) = {
190190 let av = if ((au == aq))
191191 then "%s%s"
192192 else "%s%s%s%s"
193193 makeString([av, au, "size"], a)
194194 }
195195
196196
197197 func ax (au,ay) = {
198198 let av = if ((au == aq))
199199 then "%s%s%s%s"
200200 else "%s%s%s%s%s"
201201 makeString([av, au, ay, "prev"], a)
202202 }
203203
204204
205205 func az (au,ay) = {
206206 let av = if ((au == aq))
207207 then "%s%s%s%s"
208208 else "%s%s%s%s%s"
209209 makeString([av, au, ay, "next"], a)
210210 }
211211
212212
213213 func aA (au,ay) = {
214214 let aB = getString(this, at(au))
215215 let aC = getString(this, ax(au, ay))
216216 let aD = getString(this, az(au, ay))
217217 if (if ((ay == valueOrElse(aB, "")))
218218 then true
219219 else (aC != unit))
220220 then true
221221 else (aD != unit)
222222 }
223223
224224
225225 func aE (au,ay) = {
226226 let aB = getString(this, at(au))
227227 let aF = valueOrElse(getInteger(this, aw(au)), 0)
228228 let aG = if (!(aA(au, ay)))
229229 then true
230230 else throw("Node exists")
231231 if ((aG == aG))
232232 then (([IntegerEntry(aw(au), (aF + 1))] ++ (if ((aB != unit))
233233 then [StringEntry(az(au, ay), value(aB)), StringEntry(ax(au, value(aB)), ay)]
234234 else nil)) ++ [StringEntry(at(au), ay)])
235235 else throw("Strict value is not equal to itself.")
236236 }
237237
238238
239239 func aH (au,ay) = {
240240 let aB = getString(this, at(au))
241241 let aF = valueOrElse(getInteger(this, aw(au)), 0)
242242 let aC = getString(this, ax(au, ay))
243243 let aD = getString(this, az(au, ay))
244244 ([IntegerEntry(aw(au), (aF - 1))] ++ (if (if ((aC != unit))
245245 then (aD != unit)
246246 else false)
247247 then [StringEntry(az(au, value(aC)), value(aD)), StringEntry(ax(au, value(aD)), value(aC)), DeleteEntry(ax(au, ay)), DeleteEntry(az(au, ay))]
248248 else if ((aD != unit))
249249 then [StringEntry(at(au), value(aD)), DeleteEntry(az(au, ay)), DeleteEntry(ax(au, value(aD)))]
250250 else if ((aC != unit))
251251 then [DeleteEntry(ax(au, ay)), DeleteEntry(az(au, value(aC)))]
252252 else if ((ay == valueOrElse(aB, "")))
253253 then [DeleteEntry(at(au))]
254254 else throw(((("invalid node: " + au) + ".") + ay))))
255255 }
256256
257257
258258 func aI () = "%s__managerPublicKey"
259259
260260
261261 func aJ () = "%s__pendingManagerPublicKey"
262262
263263
264264 func aK () = {
265265 let T = getString(aI())
266266 if ($isInstanceOf(T, "String"))
267267 then {
268268 let aL = T
269269 fromBase58String(aL)
270270 }
271271 else if ($isInstanceOf(T, "Unit"))
272272 then unit
273273 else throw("Match error")
274274 }
275275
276276
277277 func aM () = {
278278 let T = getString(aJ())
279279 if ($isInstanceOf(T, "String"))
280280 then {
281281 let aL = T
282282 fromBase58String(aL)
283283 }
284284 else if ($isInstanceOf(T, "Unit"))
285285 then unit
286286 else throw("Match error")
287287 }
288288
289289
290290 let aN = throw("Permission denied")
291291
292292 func aO (aP) = if ((aP.caller == this))
293293 then true
294294 else aN
295295
296296
297297 func aQ (aP) = {
298298 let T = aK()
299299 if ($isInstanceOf(T, "ByteVector"))
300300 then {
301301 let aR = T
302302 if ((aP.callerPublicKey == aR))
303303 then true
304304 else aN
305305 }
306306 else if ($isInstanceOf(T, "Unit"))
307307 then aO(aP)
308308 else throw("Match error")
309309 }
310310
311311
312312 @Callable(aP)
313313 func setManager (aS) = {
314314 let aT = aQ(aP)
315315 if ((aT == aT))
316316 then {
317317 let aU = fromBase58String(aS)
318318 if ((aU == aU))
319319 then [StringEntry(aJ(), aS)]
320320 else throw("Strict value is not equal to itself.")
321321 }
322322 else throw("Strict value is not equal to itself.")
323323 }
324324
325325
326326
327327 @Callable(aP)
328328 func confirmManager () = {
329329 let aV = aM()
330330 let aW = if (isDefined(aV))
331331 then true
332332 else throw("No pending manager")
333333 if ((aW == aW))
334334 then {
335335 let aX = if ((aP.callerPublicKey == value(aV)))
336336 then true
337337 else throw("You are not pending manager")
338338 if ((aX == aX))
339339 then [StringEntry(aI(), toBase58String(value(aV))), DeleteEntry(aJ())]
340340 else throw("Strict value is not equal to itself.")
341341 }
342342 else throw("Strict value is not equal to itself.")
343343 }
344344
345345
346346
347347 @Callable(aP)
348348 func getUserGwxAmountAtHeight (aY,aZ) = {
349349 let ba = valueOrErrorMessage(addressFromString(W(this, n)), "invalid boosting contract address")
350350 $Tuple2(nil, {
351351 let X = invoke(ba, "getUserGwxAmountAtHeightREADONLY", [aY, aZ], nil)
352352 if ($isInstanceOf(X, "Int"))
353353 then X
354354 else throw(($getType(X) + " couldn't be cast to Int"))
355355 })
356356 }
357357
358358
359359
360360 @Callable(aP)
361361 func constructor (ak,bb,bc,bd,be) = {
362362 let bf = [aQ(aP), if ((addressFromString(ak) != unit))
363363 then true
364364 else "invalid factory contract address", if ((addressFromString(bb) != unit))
365365 then true
366366 else "invalid voting emission candidate contract address", if ((addressFromString(bc) != unit))
367367 then true
368368 else "invalid boosting contract address", if ((addressFromString(bd) != unit))
369369 then true
370370 else "invalid staking contract address", if ((be > 0))
371371 then true
372372 else throw("invalid epoch length")]
373373 if ((bf == bf))
374374 then $Tuple2([StringEntry(m, ak), StringEntry(l, bb), StringEntry(n, bc), StringEntry(o, bd), IntegerEntry(f, be)], unit)
375375 else throw("Strict value is not equal to itself.")
376376 }
377377
378378
379379
380380 @Callable(aP)
381381 func create (B,C) = {
382382 let bf = [if ((toBase58String(aP.caller.bytes) == valueOrElse(getString(this, l), "")))
383383 then true
384384 else aQ(aP)]
385385 if ((bf == bf))
386386 then {
387387 let z = $Tuple2(B, C)
388388 let bg = ([BooleanEntry(y(z), true)] ++ aE(aq, Z(z)))
389389 let bh = (getInteger(this, j) == unit)
390390 let bi = if (bh)
391391 then {
392392 let i = 0
393393 [IntegerEntry(j, i), IntegerEntry(w(i), height), IntegerEntry(s, height), IntegerEntry(t, i), IntegerEntry(u, height)]
394394 }
395395 else nil
396396 $Tuple2((bg ++ bi), unit)
397397 }
398398 else throw("Strict value is not equal to itself.")
399399 }
400400
401401
402402
403403 @Callable(aP)
404404 func vote (B,C,bj) = {
405405 let z = $Tuple2(B, C)
406406 let i = valueOrElse(getInteger(this, j), 0)
407407 let bk = Y(this, w(i))
408408 let be = Y(this, f)
409409 let bl = (bk + be)
410410 let bm = getInteger(this, p)
411411 let bn = valueOrElse(getInteger(this, D(aP.caller, i)), 0)
412412 let bo = valueOrElse(getInteger(this, F(z, aP.caller, i)), 0)
413413 let bp = valueOrElse(getInteger(this, H(z, i)), 0)
414414 let bq = valueOrElse(getInteger(this, L(i)), 0)
415415 let br = {
416416 let X = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(aP.caller.bytes), bl], nil)
417417 if ($isInstanceOf(X, "Int"))
418418 then X
419419 else throw(($getType(X) + " couldn't be cast to Int"))
420420 }
421421 let bs = (br - bn)
422422 let bt = (bo + bj)
423423 let bu = ao(z)
424424 let bf = [if ((getBoolean(y(z)) != unit))
425425 then true
426426 else throw("invalid assets"), if ((bl > height))
427427 then true
428428 else throw("invalid height"), if ((bm == unit))
429429 then true
430430 else throw("finalization in progress"), if ((br > 0))
431431 then true
432432 else throw("you do not have gWX"), if (if ((bj > 0))
433433 then (bs >= bj)
434434 else false)
435435 then true
436436 else throw("invalid amount"), if (bu)
437437 then true
438438 else throw("pool hasn't WX_EMISSION label")]
439439 if ((bf == bf))
440440 then {
441441 let bv = ar(z)
442442 let bw = toString(aP.caller)
443443 let bx = if (aA(bv, bw))
444444 then nil
445445 else aE(bv, bw)
446446 $Tuple2(([IntegerEntry(D(aP.caller, i), (bn + bj)), IntegerEntry(F(z, aP.caller, i), bt), IntegerEntry(H(z, i), (bp + bj)), IntegerEntry(L(i), (bq + bj))] ++ bx), unit)
447447 }
448448 else throw("Strict value is not equal to itself.")
449449 }
450450
451451
452452
453453 @Callable(aP)
454454 func cancelVote (B,C) = {
455455 let z = $Tuple2(B, C)
456456 let i = valueOrElse(getInteger(this, j), 0)
457457 let bk = Y(this, w(i))
458458 let be = Y(this, f)
459459 let bl = (bk + be)
460460 let bm = getInteger(this, p)
461461 let bn = valueOrElse(getInteger(this, D(aP.caller, i)), 0)
462462 let bo = valueOrElse(getInteger(this, F(z, aP.caller, i)), 0)
463463 let bp = valueOrElse(getInteger(this, H(z, i)), 0)
464464 let bq = valueOrElse(getInteger(this, L(i)), 0)
465465 let bf = [if ((getBoolean(y(z)) != unit))
466466 then true
467467 else throw("invalid assets"), if ((bl > height))
468468 then true
469469 else throw("invalid height"), if ((bm == unit))
470470 then true
471471 else throw("finalization in progress"), if ((bo > 0))
472472 then true
473473 else throw("no vote")]
474474 if ((bf == bf))
475475 then {
476476 let bv = ar(z)
477477 let bw = toString(aP.caller)
478478 $Tuple2(([IntegerEntry(D(aP.caller, i), max([(bn - bo), 0])), DeleteEntry(F(z, aP.caller, i)), IntegerEntry(H(z, i), (bp - bo)), IntegerEntry(L(i), (bq - bo))] ++ aH(bv, bw)), unit)
479479 }
480480 else throw("Strict value is not equal to itself.")
481481 }
482482
483483
484484
485485 @Callable(aP)
486486 func setEpochLength (by) = {
487487 let bf = [aQ(aP), if ((by > 0))
488488 then true
489489 else throw("invalid epoch length")]
490490 if ((bf == bf))
491491 then $Tuple2([IntegerEntry(g, by)], unit)
492492 else throw("Strict value is not equal to itself.")
493493 }
494494
495495
496496
497497 @Callable(aP)
498498 func setMaxDepth (bz) = {
499499 let bf = [aQ(aP), if ((bz > 0))
500500 then true
501501 else throw("invalid max depth")]
502502 if ((bf == bf))
503503 then $Tuple2([IntegerEntry(k, bz)], unit)
504504 else throw("Strict value is not equal to itself.")
505505 }
506506
507507
508508
509509 @Callable(aP)
510510 func processVoteINTERNAL (bA,bw) = {
511511 let aT = aO(aP)
512512 if ((aT == aT))
513513 then {
514514 let aY = valueOrErrorMessage(addressFromString(bw), ("processVoteINTERNAL: invalid user address " + bw))
515515 let i = Y(this, j)
516516 let bB = (i - 1)
517517 let be = Y(this, f)
518518 let bk = Y(this, w(i))
519519 let bl = (bk + be)
520520 let bC = Y(this, w(bB))
521521 let bD = Y(this, h(bB))
522522 let bE = (bC + bD)
523523 let bF = if ((bB >= 0))
524524 then true
525525 else throw("processVoteINTERNAL: invalid previous epoch")
526526 if ((bF == bF))
527527 then {
528528 let z = aa(bA)
529529 let bG = z
530530 let B = bG._1
531531 let C = bG._2
532532 let bu = ao(z)
533533 let br = {
534534 let X = invoke(this, "getUserGwxAmountAtHeight", [bw, bl], nil)
535535 if ($isInstanceOf(X, "Int"))
536536 then X
537537 else throw(($getType(X) + " couldn't be cast to Int"))
538538 }
539539 let bH = {
540540 let X = invoke(this, "getUserGwxAmountAtHeight", [bw, bE], nil)
541541 if ($isInstanceOf(X, "Int"))
542542 then X
543543 else throw(($getType(X) + " couldn't be cast to Int"))
544544 }
545545 let bq = valueOrElse(getInteger(L(i)), 0)
546546 let bI = valueOrElse(getInteger(H(z, i)), 0)
547547 let bJ = valueOrErrorMessage(getInteger(F(z, aY, bB)), (((("processVoteINTERNAL " + bA) + " ") + bw) + ": no previous vote"))
548548 let bn = valueOrElse(getInteger(this, D(aY, i)), 0)
549549 let bt = if ((bH > 0))
550550 then fraction(bJ, br, bH)
551551 else 0
552552 let bK = if (if ((bt > 0))
553553 then bu
554554 else false)
555555 then [IntegerEntry(F(z, aY, i), bt), IntegerEntry(L(i), (bq + bt)), IntegerEntry(H(z, i), (bI + bt)), IntegerEntry(D(aY, i), (bn + bt))]
556556 else aH(ar(z), bw)
557557 $Tuple2(bK, unit)
558558 }
559559 else throw("Strict value is not equal to itself.")
560560 }
561561 else throw("Strict value is not equal to itself.")
562562 }
563563
564564
565565
566566 @Callable(aP)
567567 func processPoolINTERNAL (bA,bL) = {
568568 let aT = aO(aP)
569569 if ((aT == aT))
570570 then {
571571 let bM = {
572572 let bN = Y(this, j)
573573 if (bL)
574574 then bN
575575 else (bN - 1)
576576 }
577577 let bF = if ((bM >= 0))
578578 then true
579579 else throw("processPoolINTERNAL: invalid target epoch")
580580 if ((bF == bF))
581581 then {
582582 let z = aa(bA)
583583 let bO = z
584584 let B = bO._1
585585 let C = bO._2
586586 let bd = addressFromStringValue(W(this, o))
587587 let ak = addressFromStringValue(W(this, m))
588588 let an = ac(B, C)
589589 let bP = {
590590 let X = invoke(bd, "usersListTraversal", [an], nil)
591591 if ($isInstanceOf(X, "Boolean"))
592592 then X
593593 else throw(($getType(X) + " couldn't be cast to Boolean"))
594594 }
595595 if ((bP == bP))
596596 then if (bP)
597597 then $Tuple2(nil, true)
598598 else {
599599 let bu = ao(z)
600600 let bq = valueOrElse(getInteger(this, L(bM)), 0)
601601 let bI = valueOrElse(getInteger(this, H(z, bM)), 0)
602602 let bQ = if (if ((bq == 0))
603603 then true
604604 else !(bu))
605605 then 0
606606 else fraction(bI, b, bq)
607607 let bR = invoke(ak, "modifyWeight", [an, bQ], nil)
608608 if ((bR == bR))
609609 then {
610610 let bS = if (if (bu)
611611 then true
612612 else bL)
613613 then nil
614614 else ([DeleteEntry(y(z))] ++ aH(aq, bA))
615615 $Tuple2(([IntegerEntry(J(z, bM), bQ)] ++ bS), false)
616616 }
617617 else throw("Strict value is not equal to itself.")
618618 }
619619 else throw("Strict value is not equal to itself.")
620620 }
621621 else throw("Strict value is not equal to itself.")
622622 }
623623 else throw("Strict value is not equal to itself.")
624624 }
625625
626626
627627
628628 @Callable(aP)
629629 func finalizeHelper () = {
630630 let bL = valueOrElse(getBoolean(v), false)
631631 let i = valueOrElse(getInteger(this, j), 0)
632632 let bT = (i - 1)
633633 let bk = Y(this, w(i))
634634 let be = Y(this, f)
635635 let bl = (bk + be)
636636 let bm = getInteger(this, p)
637637 if (if (if ((height >= bl))
638638 then (bm == unit)
639639 else false)
640640 then !(bL)
641641 else false)
642642 then {
643643 let bU = (i + 1)
644644 let bV = getInteger(this, g)
645645 let bW = {
646646 let T = bV
647647 if ($isInstanceOf(T, "Int"))
648648 then {
649649 let by = T
650650 [IntegerEntry(f, by), DeleteEntry(g)]
651651 }
652652 else if ($isInstanceOf(T, "Unit"))
653653 then nil
654654 else throw("Match error")
655655 }
656656 $Tuple2(([IntegerEntry(w(bU), height), IntegerEntry(s, height), IntegerEntry(j, bU), IntegerEntry(p, d), IntegerEntry(h(i), be)] ++ bW), true)
657657 }
658658 else if (if (bL)
659659 then (bm == unit)
660660 else false)
661661 then $Tuple2([IntegerEntry(p, e)], true)
662662 else if ((bm == unit))
663663 then $Tuple2(nil, false)
664664 else if ((bm == d))
665665 then {
666666 let bX = getString(q)
667667 let bY = getString(r)
668668 let T = bX
669669 if ($isInstanceOf(T, "Unit"))
670670 then {
671671 let bZ = getString(at(aq))
672672 if ($isInstanceOf(bZ, "Unit"))
673673 then $Tuple2([IntegerEntry(p, e), DeleteEntry(q), DeleteEntry(r)], true)
674674 else if ($isInstanceOf(bZ, "String"))
675675 then {
676676 let ca = bZ
677677 $Tuple2([StringEntry(q, ca)], true)
678678 }
679679 else throw("Match error")
680680 }
681681 else if ($isInstanceOf(T, "String"))
682682 then {
683683 let bA = T
684684 let z = aa(bA)
685685 let cb = {
686686 let bZ = bY
687687 if ($isInstanceOf(bZ, "Unit"))
688688 then getString(at(ar(z)))
689689 else if ($isInstanceOf(bZ, "String"))
690690 then {
691691 let cc = bZ
692692 let cd = getString(az(ar(z), cc))
693693 if ((cd == cd))
694694 then {
695695 let ce = invoke(this, "processVoteINTERNAL", [bA, cc], nil)
696696 if ((ce == ce))
697697 then cd
698698 else throw("Strict value is not equal to itself.")
699699 }
700700 else throw("Strict value is not equal to itself.")
701701 }
702702 else throw("Match error")
703703 }
704704 let bZ = cb
705705 if ($isInstanceOf(bZ, "Unit"))
706706 then {
707707 let cf = getString(az(aq, bA))
708708 let cg = cf
709709 if ($isInstanceOf(cg, "Unit"))
710710 then $Tuple2([IntegerEntry(p, e), DeleteEntry(q), DeleteEntry(r)], true)
711711 else if ($isInstanceOf(cg, "String"))
712712 then {
713713 let aL = cg
714714 $Tuple2([StringEntry(q, aL), DeleteEntry(r)], true)
715715 }
716716 else throw("Match error")
717717 }
718718 else if ($isInstanceOf(bZ, "String"))
719719 then {
720720 let ch = bZ
721721 $Tuple2([StringEntry(r, ch)], true)
722722 }
723723 else throw("Match error")
724724 }
725725 else throw("Match error")
726726 }
727727 else if ((bm == e))
728728 then {
729729 let bX = getString(q)
730730 let T = bX
731731 if ($isInstanceOf(T, "Unit"))
732732 then {
733733 let bZ = getString(at(aq))
734734 if ($isInstanceOf(bZ, "Unit"))
735735 then {
736736 let bK = if (bL)
737737 then [DeleteEntry(p), DeleteEntry(v)]
738738 else [DeleteEntry(p), BooleanEntry(x(bT), true), IntegerEntry(t, i), IntegerEntry(u, bk)]
739739 $Tuple2(bK, true)
740740 }
741741 else if ($isInstanceOf(bZ, "String"))
742742 then {
743743 let ci = bZ
744744 $Tuple2([StringEntry(q, ci)], true)
745745 }
746746 else throw("Match error")
747747 }
748748 else if ($isInstanceOf(T, "String"))
749749 then {
750750 let bA = T
751751 let cf = getString(az(aq, bA))
752752 if ((cf == cf))
753753 then {
754754 let bP = {
755755 let X = invoke(this, "processPoolINTERNAL", [bA, bL], nil)
756756 if ($isInstanceOf(X, "Boolean"))
757757 then X
758758 else throw(($getType(X) + " couldn't be cast to Boolean"))
759759 }
760760 if ((bP == bP))
761761 then if (bP)
762762 then $Tuple2(nil, true)
763763 else {
764764 let bZ = cf
765765 if ($isInstanceOf(bZ, "Unit"))
766766 then {
767767 let bK = if (bL)
768768 then [DeleteEntry(p), DeleteEntry(v), DeleteEntry(q)]
769769 else [DeleteEntry(p), BooleanEntry(x(bT), true), IntegerEntry(t, i), IntegerEntry(u, bk), DeleteEntry(q)]
770770 $Tuple2(bK, true)
771771 }
772772 else if ($isInstanceOf(bZ, "String"))
773773 then {
774774 let ci = bZ
775775 $Tuple2([StringEntry(q, ci)], true)
776776 }
777777 else throw("Match error")
778778 }
779779 else throw("Strict value is not equal to itself.")
780780 }
781781 else throw("Strict value is not equal to itself.")
782782 }
783783 else throw("Match error")
784784 }
785785 else throw("finalization is broken")
786786 }
787787
788788
789789
790790 @Callable(aP)
791791 func finalizeWrapper (cj) = {
792792 let ck = {
793793 let X = invoke(this, "finalizeHelper", nil, nil)
794794 if ($isInstanceOf(X, "Boolean"))
795795 then X
796796 else throw(($getType(X) + " couldn't be cast to Boolean"))
797797 }
798798 if ((ck == ck))
799799 then if (!(ck))
800800 then if ((cj == 0))
801801 then throw("Current voting is not over yet")
802802 else $Tuple2(nil, unit)
803803 else {
804804 let cl = valueOrElse(getInteger(this, k), c)
805805 if ((cl > cj))
806806 then {
807807 let cm = invoke(this, "finalizeWrapper", [(cj + 1)], nil)
808808 if ((cm == cm))
809809 then $Tuple2(nil, unit)
810810 else throw("Strict value is not equal to itself.")
811811 }
812812 else $Tuple2(nil, unit)
813813 }
814814 else throw("Strict value is not equal to itself.")
815815 }
816816
817817
818818
819819 @Callable(aP)
820820 func finalize () = {
821821 let cm = invoke(this, "finalizeWrapper", [0], nil)
822822 if ((cm == cm))
823823 then $Tuple2(nil, unit)
824824 else throw("Strict value is not equal to itself.")
825825 }
826826
827827
828828
829829 @Callable(aP)
830830 func containsNodeREADONLY (au,ay) = $Tuple2(nil, aA(au, ay))
831831
832832
833833
834834 @Callable(aP)
835835 func insertNode (au,ay) = {
836836 let aT = aQ(aP)
837837 if ((aT == aT))
838838 then $Tuple2(aE(au, ay), unit)
839839 else throw("Strict value is not equal to itself.")
840840 }
841841
842842
843843
844844 @Callable(aP)
845845 func deleteNode (au,ay) = {
846846 let aT = aQ(aP)
847847 if ((aT == aT))
848848 then $Tuple2(aH(au, ay), unit)
849849 else throw("Strict value is not equal to itself.")
850850 }
851851
852852
853-
854-@Callable(aP)
855-func getVoteInfoREADONLY (cn,bw) = {
856- let aY = addressFromStringValue(bw)
857- let ak = addressFromStringValue(W(this, m))
858- let co = 4
859- let cp = 5
860- let cq = {
861- let X = invoke(ak, "getPoolConfigByLpAssetId", [cn], nil)
862- if ($isInstanceOf(X, "List[Any]"))
863- then X
864- else throw(($getType(X) + " couldn't be cast to List[Any]"))
865- }
866- let B = {
867- let X = cq[co]
868- if ($isInstanceOf(X, "String"))
869- then X
870- else throw(($getType(X) + " couldn't be cast to String"))
871- }
872- let C = {
873- let X = cq[cp]
874- if ($isInstanceOf(X, "String"))
875- then X
876- else throw(($getType(X) + " couldn't be cast to String"))
877- }
878- let cr = {
879- let i = (value(getInteger(this, j)) - 1)
880- if ((0 > i))
881- then O("invalid epoch")
882- else i
883- }
884- let z = $Tuple2(B, C)
885- let cs = valueOrElse(getInteger(this, F(z, aY, cr)), 0)
886- let bp = valueOrElse(getInteger(this, H(z, cr)), 0)
887- $Tuple2(nil, $Tuple2(cs, bp))
888- }
889-
890-
891-@Verifier(ct)
892-func cu () = {
893- let cv = {
853+@Verifier(cn)
854+func co () = {
855+ let cp = {
894856 let T = aK()
895857 if ($isInstanceOf(T, "ByteVector"))
896858 then {
897859 let aR = T
898860 aR
899861 }
900862 else if ($isInstanceOf(T, "Unit"))
901- then ct.senderPublicKey
863+ then cn.senderPublicKey
902864 else throw("Match error")
903865 }
904- sigVerify(ct.bodyBytes, ct.proofs[0], cv)
866+ sigVerify(cn.bodyBytes, cn.proofs[0], cp)
905867 }
906868

github/deemru/w8io/fabc49c 
74.97 ms