tx · QbnTx68yL38nvVb4JpdRV3ojkoZM7rqE5wLRYvgBWgc

3N3dmyiBdj7pmjnQrzTTvmfzKSqndSzCMmk:  -0.01600000 Waves

2022.10.09 00:20 [2263883] smart account 3N3dmyiBdj7pmjnQrzTTvmfzKSqndSzCMmk > SELF 0.00000000 Waves

{ "type": 13, "id": "QbnTx68yL38nvVb4JpdRV3ojkoZM7rqE5wLRYvgBWgc", "fee": 1600000, "feeAssetId": null, "timestamp": 1665264074043, "version": 2, "chainId": 84, "sender": "3N3dmyiBdj7pmjnQrzTTvmfzKSqndSzCMmk", "senderPublicKey": "AR4BeE6hYADMvKxgRQs4ADN3krEqb2j8WE3WfJxzL3zE", "proofs": [ "3WZrf1hxCmumx1Zs3fsCkwyc6QkP6aEJKQ6GWxhYAhdhCXUQHhKghKL7FN3U3dZx1C4xubNS1KQcwmMN9KwrNtQE" ], "script": "base64:BgJFCAISAwoBCBIAEgMKAQgSAwoBCBIDCgEIEgcKBQgIAQEIEgMKAQgSBAoCCAgSBQoDCAgBEgMKAQgSABIFCgMICAgSABIAJgAFd2F2ZXMAgMLXLwAOdGlja2V0UHJpY2VJbnQAwIQ9AAt0aWNrZXRQcmljZQUOdGlja2V0UHJpY2VJbnQABmludkZlZQCgwh4AEndpdGhkcmF3RmVlUGVyY2VudAAFABZmZWVDb2xsZWN0b3JBZGRyZXNzS2V5AhNmZWVDb2xsZWN0b3JBZGRyZXNzABl0b3VybmFtZW50QnV5SW5GZWVQZXJjZW50AAoADmRlcG9zaXRBc3NldElkAiw1dWUxZml1VjZqNlVCcjZYZjI4UW1zNnk1RnF6S3RxdmF4eGh3dTdoVFE1OAENdHJ5R2V0SW50ZWdlcgEDa2V5BAckbWF0Y2gwCQCaCAIFBHRoaXMFA2tleQMJAAECBQckbWF0Y2gwAgNJbnQEAWIFByRtYXRjaDAFAWIAAAESZ2V0VGlja2V0c0NvdW50S2V5AQ1hZGRyZXNzU3RyaW5nCQCsAgIFDWFkZHJlc3NTdHJpbmcCDV90aWNrZXRzQ291bnQBImJ1eUluQW1vdW50Rm9yVG91cm5hbWVudEZvckFjY291bnQCDHRvdXJuYW1lbnRJZAdhY2NvdW50CQCsAgIJAKwCAgUMdG91cm5hbWVudElkAhdfYnV5SW5BbW91bnRGb3JBY2NvdW50XwUHYWNjb3VudAEjYnV5SW5Bc3NldElkRm9yVG91cm5hbWVudEZvckFjY291bnQCDHRvdXJuYW1lbnRJZAdhY2NvdW50CQCsAgIJAKwCAgUMdG91cm5hbWVudElkAhhfYnV5SW5Bc3NldElkRm9yQWNjb3VudF8FB2FjY291bnQBHXRpY2tldEZvclRvdXJuYW1lbnRGb3JBY2NvdW50Agx0b3VybmFtZW50SWQHYWNjb3VudAkArAICCQCsAgIFDHRvdXJuYW1lbnRJZAISX3RpY2tldEZvckFjY291bnRfBQdhY2NvdW50ASZ0b3VybmFtZW50VG90YWxCdXlJbkNvbGxlY3RlZEFtb3VudEtleQEMdG91cm5hbWVudElkCQCsAgIFDHRvdXJuYW1lbnRJZAIkX3RvdXJuYW1lbnRUb3RhbEJ1eUluQ29sbGVjdGVkQW1vdW50AS90b3VybmFtZW50VG90YWxCdXlJbkNvbGxlY3RlZEFtb3VudE1pbnVzRmVlc0tleQEMdG91cm5hbWVudElkCQCsAgIFDHRvdXJuYW1lbnRJZAItX3RvdXJuYW1lbnRUb3RhbEJ1eUluQ29sbGVjdGVkQW1vdW50TWludXNGZWVzARR0b3VybmFtZW50Q3JlYXRvcktleQEMdG91cm5hbWVudElkCQCsAgIFDHRvdXJuYW1lbnRJZAISX3RvdXJuYW1lbnRDcmVhdG9yARF0b3VybmFtZW50TmFtZUtleQEMdG91cm5hbWVudElkCQCsAgIFDHRvdXJuYW1lbnRJZAIPX3RvdXJuYW1lbnROYW1lARh0b3VybmFtZW50UHJpemVBbW91bnRLZXkBDHRvdXJuYW1lbnRJZAkArAICBQx0b3VybmFtZW50SWQCFl90b3VybmFtZW50UHJpemVBbW91bnQBHHRvdXJuYW1lbnRNYXhQbGF5ZXJzQ291bnRLZXkBDHRvdXJuYW1lbnRJZAkArAICBQx0b3VybmFtZW50SWQCGl90b3VybmFtZW50TWF4UGxheWVyc0NvdW50ARl0b3VybmFtZW50UGxheWVyc0NvdW50S2V5AQx0b3VybmFtZW50SWQJAKwCAgUMdG91cm5hbWVudElkAhdfdG91cm5hbWVudFBsYXllcnNDb3VudAEZdG91cm5hbWVudFByaXplQXNzZXRJZEtleQEMdG91cm5hbWVudElkCQCsAgIFDHRvdXJuYW1lbnRJZAIXX3RvdXJuYW1lbnRQcml6ZUFzc2V0SWQBG3RvdXJuYW1lbnRQcml6ZUFzc2V0TmFtZUtleQEMdG91cm5hbWVudElkCQCsAgIFDHRvdXJuYW1lbnRJZAIZX3RvdXJuYW1lbnRQcml6ZUFzc2V0TmFtZQEYdG91cm5hbWVudEJ1eUluQW1vdW50S2V5AQx0b3VybmFtZW50SWQJAKwCAgUMdG91cm5hbWVudElkAhZfdG91cm5hbWVudEJ1eUluQW1vdW50ARl0b3VybmFtZW50QnV5SW5Bc3NldElkS2V5AQx0b3VybmFtZW50SWQJAKwCAgUMdG91cm5hbWVudElkAhdfdG91cm5hbWVudEJ1eUluQXNzZXRJZAEbdG91cm5hbWVudEJ1eUluQXNzZXROYW1lS2V5AQx0b3VybmFtZW50SWQJAKwCAgUMdG91cm5hbWVudElkAhlfdG91cm5hbWVudEJ1eUluQXNzZXROYW1lAR90b3VybmFtZW50QnV5SW5Bc3NldERlY2ltYWxzS2V5AQx0b3VybmFtZW50SWQJAKwCAgUMdG91cm5hbWVudElkAh1fdG91cm5hbWVudEJ1eUluQXNzZXREZWNpbWFscwEfdG91cm5hbWVudFByaXplQXNzZXREZWNpbWFsc0tleQEMdG91cm5hbWVudElkCQCsAgIFDHRvdXJuYW1lbnRJZAIdX3RvdXJuYW1lbnRQcml6ZUFzc2V0RGVjaW1hbHMBE3RvdXJuYW1lbnRTdGF0dXNLZXkBDHRvdXJuYW1lbnRJZAkArAICBQx0b3VybmFtZW50SWQCEV90b3VybmFtZW50U3RhdHVzAR50b3VybmFtZW50QnV5SW5GZWVDb2xsZWN0ZWRLZXkBDHRvdXJuYW1lbnRJZAkArAICBQx0b3VybmFtZW50SWQCHF90b3VybmFtZW50QnV5SW5GZWVDb2xsZWN0ZWQBIXRvdXJuYW1lbnRXaW5uaW5nVHJhbnNhY3Rpb25JZEtleQEMdG91cm5hbWVudElkCQCsAgIFDHRvdXJuYW1lbnRJZAIfX3RvdXJuYW1lbnRXaW5uaW5nVHJhbnNhY3Rpb25JZAENZ2FtZVdpbm5lcktleQEGZ2FtZUlkCQCsAgIFBmdhbWVJZAIHX3dpbm5lcgEYYWRkcmVzc0F2YWlsYWJsZUZ1bmRzS2V5AQdhZGRyZXNzCQCsAgIFB2FkZHJlc3MCD19hdmFpbGFibGVGdW5kcwEaYWRkcmVzc1RvdGFsTG9ja2VkRnVuZHNLZXkBB2FkZHJlc3MJAKwCAgUHYWRkcmVzcwIRX3RvdGFsTG9ja2VkRnVuZHMBIWFkZHJlc3NMb2NrZWRGdW5kc1RvdGFsSGlzdG9yeUtleQEHYWRkcmVzcwkArAICBQdhZGRyZXNzAhhfbG9ja2VkRnVuZHNUb3RhbEhpc3RvcnkBHGFkZHJlc3NMb2NrZWRGdW5kc0ZvckdhbWVLZXkCB2FkZHJlc3MGZ2FtZUlkCQCsAgIJAKwCAgUHYWRkcmVzcwINX2xvY2tlZEZ1bmRzXwUGZ2FtZUlkARphZGRyZXNzQXZhaWxhYmxlUmV3YXJkc0tleQEHYWRkcmVzcwkArAICBQdhZGRyZXNzAhFfYXZhaWxhYmxlUmV3YXJkcwEPZ2V0VGlja2V0c0NvdW50AQ1hZGRyZXNzU3RyaW5nCQENdHJ5R2V0SW50ZWdlcgEJARJnZXRUaWNrZXRzQ291bnRLZXkBBQ1hZGRyZXNzU3RyaW5nAQ1jb25zdW1lVGlja2V0AQpwbGF5ZXJBZGRyBBJjdXJyZW50VGlja2V0Q291bnQJAQ9nZXRUaWNrZXRzQ291bnQBBQpwbGF5ZXJBZGRyBBVuZXdDdXJyZW50VGlja2V0Q291bnQJAGUCBRJjdXJyZW50VGlja2V0Q291bnQAAQMJAGYCAAAFFW5ld0N1cnJlbnRUaWNrZXRDb3VudAAABRVuZXdDdXJyZW50VGlja2V0Q291bnQOAWkBFnNldEZlZUNvbGxlY3RvckFkZHJlc3MBDWNvbGxlY3RvckFkZHIDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAgpBZG1pbiBPbmx5CQDMCAIJAQtTdHJpbmdFbnRyeQIFFmZlZUNvbGxlY3RvckFkZHJlc3NLZXkFDWNvbGxlY3RvckFkZHIFA25pbAFpAQxkZXBvc2l0RnVuZHMABANwbXQDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABCQCRAwIIBQFpCHBheW1lbnRzAAAJAAIBAiFQbGVhc2UgYXR0YWNoIGV4YWN0bHkgb25lIHBheW1lbnQDCQECIT0CCAUDcG10B2Fzc2V0SWQJANkEAQUOZGVwb3NpdEFzc2V0SWQJAAIBAhlZb3UgY2FuIG9ubHkgZGVwb3NpdCBVU0ROBA1jYWxsZXJBZGRyU3RyCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEFWN1cnJlbnRBdmFpbGFibGVGdW5kcwkBDXRyeUdldEludGVnZXIBCQEYYWRkcmVzc0F2YWlsYWJsZUZ1bmRzS2V5AQUNY2FsbGVyQWRkclN0cgkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEYYWRkcmVzc0F2YWlsYWJsZUZ1bmRzS2V5AQUNY2FsbGVyQWRkclN0cgkAZAIFFWN1cnJlbnRBdmFpbGFibGVGdW5kcwgFA3BtdAZhbW91bnQFA25pbAABAWkBGGNhbmNlbFNpZ25VcFRvVG91cm5hbWVudAEMdG91cm5hbWVudElkBBB0b3VybmFtZW50U3RhdHVzCQERQGV4dHJOYXRpdmUoMTA1OCkBCQETdG91cm5hbWVudFN0YXR1c0tleQEFDHRvdXJuYW1lbnRJZAMJAQIhPQIFEHRvdXJuYW1lbnRTdGF0dXMCDHJlZ2lzdHJhdGlvbgkAAgECKFRvdXJuYW1lbnQgaXMgbm90IGluIHJlZ2lzdHJhdGlvbiBwaGFzZSEEDWNhbGxlckFkZHJTdHIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQPcGFpZEJ1eUluQW1vdW50CQERQGV4dHJOYXRpdmUoMTA1NSkBCQEiYnV5SW5BbW91bnRGb3JUb3VybmFtZW50Rm9yQWNjb3VudAIFDHRvdXJuYW1lbnRJZAUNY2FsbGVyQWRkclN0cgQQcGFpZEJ1eUluQXNzZXRJZAkBEUBleHRyTmF0aXZlKDEwNTgpAQkBI2J1eUluQXNzZXRJZEZvclRvdXJuYW1lbnRGb3JBY2NvdW50AgUMdG91cm5hbWVudElkBQ1jYWxsZXJBZGRyU3RyBB1hbHJlYWR5UmVnaXN0ZXJlZFBsYXllcnNDb3VudAkBDXRyeUdldEludGVnZXIBCQEZdG91cm5hbWVudFBsYXllcnNDb3VudEtleQEFDHRvdXJuYW1lbnRJZAQZdG90YWxCdXlJbkNvbGxlY3RlZEFtb3VudAkAZQIJAQ10cnlHZXRJbnRlZ2VyAQkBJnRvdXJuYW1lbnRUb3RhbEJ1eUluQ29sbGVjdGVkQW1vdW50S2V5AQUMdG91cm5hbWVudElkBQ9wYWlkQnV5SW5BbW91bnQECWZlZXNUYWtlbgkAawMFGXRvdGFsQnV5SW5Db2xsZWN0ZWRBbW91bnQFGXRvdXJuYW1lbnRCdXlJbkZlZVBlcmNlbnQAZAkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFDWNhbGxlckFkZHJTdHIFD3BhaWRCdXlJbkFtb3VudAkA2QQBBRBwYWlkQnV5SW5Bc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAR10aWNrZXRGb3JUb3VybmFtZW50Rm9yQWNjb3VudAIFDHRvdXJuYW1lbnRJZAUNY2FsbGVyQWRkclN0cgkAzAgCCQELRGVsZXRlRW50cnkBCQEiYnV5SW5BbW91bnRGb3JUb3VybmFtZW50Rm9yQWNjb3VudAIFDHRvdXJuYW1lbnRJZAUNY2FsbGVyQWRkclN0cgkAzAgCCQELRGVsZXRlRW50cnkBCQEjYnV5SW5Bc3NldElkRm9yVG91cm5hbWVudEZvckFjY291bnQCBQx0b3VybmFtZW50SWQFDWNhbGxlckFkZHJTdHIJAMwIAgkBDEludGVnZXJFbnRyeQIJARl0b3VybmFtZW50UGxheWVyc0NvdW50S2V5AQUMdG91cm5hbWVudElkCQBlAgUdYWxyZWFkeVJlZ2lzdGVyZWRQbGF5ZXJzQ291bnQAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBJnRvdXJuYW1lbnRUb3RhbEJ1eUluQ29sbGVjdGVkQW1vdW50S2V5AQUMdG91cm5hbWVudElkBRl0b3RhbEJ1eUluQ29sbGVjdGVkQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEvdG91cm5hbWVudFRvdGFsQnV5SW5Db2xsZWN0ZWRBbW91bnRNaW51c0ZlZXNLZXkBBQx0b3VybmFtZW50SWQJAGUCBRl0b3RhbEJ1eUluQ29sbGVjdGVkQW1vdW50BQlmZWVzVGFrZW4FA25pbAABAWkBEnNpZ25VcFRvVG91cm5hbWVudAEMdG91cm5hbWVudElkBA9tYXhQbGF5ZXJzQ291bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJARx0b3VybmFtZW50TWF4UGxheWVyc0NvdW50S2V5AQUMdG91cm5hbWVudElkBB1hbHJlYWR5UmVnaXN0ZXJlZFBsYXllcnNDb3VudAkBDXRyeUdldEludGVnZXIBCQEZdG91cm5hbWVudFBsYXllcnNDb3VudEtleQEFDHRvdXJuYW1lbnRJZAQQdG91cm5hbWVudFN0YXR1cwkBEUBleHRyTmF0aXZlKDEwNTgpAQkBE3RvdXJuYW1lbnRTdGF0dXNLZXkBBQx0b3VybmFtZW50SWQDCQECIT0CBRB0b3VybmFtZW50U3RhdHVzAgxyZWdpc3RyYXRpb24JAAIBAihUb3VybmFtZW50IGlzIG5vdCBpbiByZWdpc3RyYXRpb24gcGhhc2UhAwkAAAIFHWFscmVhZHlSZWdpc3RlcmVkUGxheWVyc0NvdW50BQ9tYXhQbGF5ZXJzQ291bnQJAAIBAjVUb3VybmFtZW50IGlzIGN1cnJlbnRseSBmdWxsLCBwbGVhc2UgdHJ5IGFnYWluIGxhdGVyIQQDcG10AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQkAkQMCCAUBaQhwYXltZW50cwAACQACAQIhUGxlYXNlIGF0dGFjaCBleGFjdGx5IG9uZSBwYXltZW50BAxidXlJbkFzc2V0aWQEByRtYXRjaDAIBQNwbXQHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgRVbml0BAFiBQckbWF0Y2gwAgADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYgUHJG1hdGNoMAkA2AQBBQFiCQACAQILTWF0Y2ggZXJyb3IEE2J1eUluUmVxdWlyZWRBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJARh0b3VybmFtZW50QnV5SW5BbW91bnRLZXkBBQx0b3VybmFtZW50SWQEFGJ1eUluUmVxdWlyZWRBc3NldElkCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQEZdG91cm5hbWVudEJ1eUluQXNzZXRJZEtleQEFDHRvdXJuYW1lbnRJZAMJAQIhPQIFE2J1eUluUmVxdWlyZWRBbW91bnQIBQNwbXQGYW1vdW50CQACAQkArAICAixBdHRhY2hlZCBwYXltZW50IGFtb3VudCBpcyBpbnZhbGlkLCBtdXN0IGJlIAkApAMBBRNidXlJblJlcXVpcmVkQW1vdW50AwkBAiE9AgUUYnV5SW5SZXF1aXJlZEFzc2V0SWQFDGJ1eUluQXNzZXRpZAkAAgEJAKwCAgIuQXR0YWNoZWQgcGF5bWVudCBhc3NldCBpZCBpcyBpbnZhbGlkLCBtdXN0IGJlIAUUYnV5SW5SZXF1aXJlZEFzc2V0SWQEDWNhbGxlckFkZHJTdHIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQZdG90YWxCdXlJbkNvbGxlY3RlZEFtb3VudAkAZAIJAQ10cnlHZXRJbnRlZ2VyAQkBJnRvdXJuYW1lbnRUb3RhbEJ1eUluQ29sbGVjdGVkQW1vdW50S2V5AQUMdG91cm5hbWVudElkCAUDcG10BmFtb3VudAQJZmVlc1Rha2VuCQBrAwUZdG90YWxCdXlJbkNvbGxlY3RlZEFtb3VudAUZdG91cm5hbWVudEJ1eUluRmVlUGVyY2VudABkCQCUCgIJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAR10aWNrZXRGb3JUb3VybmFtZW50Rm9yQWNjb3VudAIFDHRvdXJuYW1lbnRJZAUNY2FsbGVyQWRkclN0cgYJAMwIAgkBDEludGVnZXJFbnRyeQIJASJidXlJbkFtb3VudEZvclRvdXJuYW1lbnRGb3JBY2NvdW50AgUMdG91cm5hbWVudElkBQ1jYWxsZXJBZGRyU3RyCAUDcG10BmFtb3VudAkAzAgCCQELU3RyaW5nRW50cnkCCQEjYnV5SW5Bc3NldElkRm9yVG91cm5hbWVudEZvckFjY291bnQCBQx0b3VybmFtZW50SWQFDWNhbGxlckFkZHJTdHIFDGJ1eUluQXNzZXRpZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGXRvdXJuYW1lbnRQbGF5ZXJzQ291bnRLZXkBBQx0b3VybmFtZW50SWQJAGQCBR1hbHJlYWR5UmVnaXN0ZXJlZFBsYXllcnNDb3VudAABCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEmdG91cm5hbWVudFRvdGFsQnV5SW5Db2xsZWN0ZWRBbW91bnRLZXkBBQx0b3VybmFtZW50SWQFGXRvdGFsQnV5SW5Db2xsZWN0ZWRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAS90b3VybmFtZW50VG90YWxCdXlJbkNvbGxlY3RlZEFtb3VudE1pbnVzRmVlc0tleQEFDHRvdXJuYW1lbnRJZAkAZQIFGXRvdGFsQnV5SW5Db2xsZWN0ZWRBbW91bnQFCWZlZXNUYWtlbgUDbmlsAAEBaQEQY2FuY2VsVG91cm5hbWVudAEMdG91cm5hbWVudElkBA1jYWxsZXJBZGRyU3RyCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEEXRvdXJuYW1lbnRDcmVhdG9yCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEUdG91cm5hbWVudENyZWF0b3JLZXkBBQx0b3VybmFtZW50SWQEDGNyZWF0b3JDaGVjawMJAAACBRF0b3VybmFtZW50Q3JlYXRvcgUNY2FsbGVyQWRkclN0cgYDCQAAAggFAWkGY2FsbGVyBQR0aGlzBgkAAgECJk9ubHkgdG91cm5hbWVudCBjcmVhdG9yIGNhbiBjYW5jZWwgaXQhAwkAAAIFDGNyZWF0b3JDaGVjawUMY3JlYXRvckNoZWNrBBB0b3VybmFtZW50U3RhdHVzCQERQGV4dHJOYXRpdmUoMTA1OCkBCQETdG91cm5hbWVudFN0YXR1c0tleQEFDHRvdXJuYW1lbnRJZAMJAQIhPQIFEHRvdXJuYW1lbnRTdGF0dXMCDHJlZ2lzdHJhdGlvbgkAAgECKFRvdXJuYW1lbnQgaXMgbm90IGluIHJlZ2lzdHJhdGlvbiBwaGFzZSEEHWFscmVhZHlSZWdpc3RlcmVkUGxheWVyc0NvdW50CQENdHJ5R2V0SW50ZWdlcgEJARl0b3VybmFtZW50UGxheWVyc0NvdW50S2V5AQUMdG91cm5hbWVudElkAwkAZgIFHWFscmVhZHlSZWdpc3RlcmVkUGxheWVyc0NvdW50AAAJAAIBAkVDYW5ub3QgY2FuY2VsIGEgdG91cm5hbWVudCB3aGVuIHBsYXllcnMgYXJlIGFscmVhZHkgcmVnaXN0ZXJlZCB0byBpdCEEFXRvdXJuYW1lbnRQcml6ZUFtb3VudAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBGHRvdXJuYW1lbnRQcml6ZUFtb3VudEtleQEFDHRvdXJuYW1lbnRJZAQWdG91cm5hbWVudFByaXplQXNzZXRJZAkBEUBleHRyTmF0aXZlKDEwNTgpAQkBGXRvdXJuYW1lbnRQcml6ZUFzc2V0SWRLZXkBBQx0b3VybmFtZW50SWQJAJQKAgkAzAgCCQELRGVsZXRlRW50cnkBCQEYdG91cm5hbWVudFByaXplQW1vdW50S2V5AQUMdG91cm5hbWVudElkCQDMCAIJAQtEZWxldGVFbnRyeQEJARl0b3VybmFtZW50UGxheWVyc0NvdW50S2V5AQUMdG91cm5hbWVudElkCQDMCAIJAQtEZWxldGVFbnRyeQEJARx0b3VybmFtZW50TWF4UGxheWVyc0NvdW50S2V5AQUMdG91cm5hbWVudElkCQDMCAIJAQtEZWxldGVFbnRyeQEJARl0b3VybmFtZW50UHJpemVBc3NldElkS2V5AQUMdG91cm5hbWVudElkCQDMCAIJAQtEZWxldGVFbnRyeQEJARt0b3VybmFtZW50UHJpemVBc3NldE5hbWVLZXkBBQx0b3VybmFtZW50SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBH3RvdXJuYW1lbnRQcml6ZUFzc2V0RGVjaW1hbHNLZXkBBQx0b3VybmFtZW50SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBE3RvdXJuYW1lbnRTdGF0dXNLZXkBBQx0b3VybmFtZW50SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGHRvdXJuYW1lbnRCdXlJbkFtb3VudEtleQEFDHRvdXJuYW1lbnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEbdG91cm5hbWVudEJ1eUluQXNzZXROYW1lS2V5AQUMdG91cm5hbWVudElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAR90b3VybmFtZW50QnV5SW5Bc3NldERlY2ltYWxzS2V5AQUMdG91cm5hbWVudElkCQDMCAIJAQtEZWxldGVFbnRyeQEJARl0b3VybmFtZW50QnV5SW5Bc3NldElkS2V5AQUMdG91cm5hbWVudElkCQDMCAIJAQtEZWxldGVFbnRyeQEJARF0b3VybmFtZW50TmFtZUtleQEFDHRvdXJuYW1lbnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEUdG91cm5hbWVudENyZWF0b3JLZXkBBQx0b3VybmFtZW50SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQURdG91cm5hbWVudENyZWF0b3IFFXRvdXJuYW1lbnRQcml6ZUFtb3VudAkA2QQBBRZ0b3VybmFtZW50UHJpemVBc3NldElkBQNuaWwAAQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARBjcmVhdGVUb3VybmFtZW50BQx0b3VybmFtZW50SWQEbmFtZQxwbGF5ZXJzQ291bnQLYnV5SW5BbW91bnQMYnV5SW5Bc3NldElkBANwbXQDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABCQCRAwIIBQFpCHBheW1lbnRzAAAJAAIBAiFQbGVhc2UgYXR0YWNoIGV4YWN0bHkgb25lIHBheW1lbnQEEXRvdXJuYW1lbnRDcmVhdG9yBAckbWF0Y2gwCQCiCAEJARR0b3VybmFtZW50Q3JlYXRvcktleQEFDHRvdXJuYW1lbnRJZAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEB2NyZWF0b3IFByRtYXRjaDAJAAIBCQCsAgICJ1RvdXJuYW1lbnQgYWxyZWFkeSBleGlzdHMgd2l0aCB0aGlzIGlkIAUMdG91cm5hbWVudElkBQR1bml0AwkAAAIFEXRvdXJuYW1lbnRDcmVhdG9yBRF0b3VybmFtZW50Q3JlYXRvcgQMcHJpemVBc3NldElkBAckbWF0Y2gwCAUDcG10B2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIEVW5pdAQBYgUHJG1hdGNoMAIAAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAWIFByRtYXRjaDAJANgEAQUBYgkAAgECC01hdGNoIGVycm9yBAxhc3NldERldGFpbHMEByRtYXRjaDAIBQNwbXQHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgRVbml0BAFiBQckbWF0Y2gwCQDMCAICBVdhdmVzCQDMCAIACAUDbmlsAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAWIFByRtYXRjaDAEByRtYXRjaDEJAOwHAQUBYgMJAAECBQckbWF0Y2gxAgVBc3NldAQFYXNzZXQFByRtYXRjaDEJAMwIAggFBWFzc2V0BG5hbWUJAMwIAggFBWFzc2V0CGRlY2ltYWxzBQNuaWwJAAIBAhBDYW4ndCBmaW5kIGFzc2V0CQACAQILTWF0Y2ggZXJyb3IECmJ1eUluQXNzZXQEByRtYXRjaDAJAOwHAQkA2QQBBQxidXlJbkFzc2V0SWQDCQABAgUHJG1hdGNoMAIFQXNzZXQEBWFzc2V0BQckbWF0Y2gwCQDMCAIIBQVhc3NldARuYW1lCQDMCAIIBQVhc3NldAhkZWNpbWFscwUDbmlsCQDMCAICAAkAzAgCAAAFA25pbAQNY2FsbGVyQWRkclN0cgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJARh0b3VybmFtZW50UHJpemVBbW91bnRLZXkBBQx0b3VybmFtZW50SWQIBQNwbXQGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEZdG91cm5hbWVudFBsYXllcnNDb3VudEtleQEFDHRvdXJuYW1lbnRJZAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEcdG91cm5hbWVudE1heFBsYXllcnNDb3VudEtleQEFDHRvdXJuYW1lbnRJZAUMcGxheWVyc0NvdW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJARl0b3VybmFtZW50UHJpemVBc3NldElkS2V5AQUMdG91cm5hbWVudElkBQxwcml6ZUFzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBG3RvdXJuYW1lbnRQcml6ZUFzc2V0TmFtZUtleQEFDHRvdXJuYW1lbnRJZAoAAUAJAJEDAgUMYXNzZXREZXRhaWxzAAADCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEfdG91cm5hbWVudFByaXplQXNzZXREZWNpbWFsc0tleQEFDHRvdXJuYW1lbnRJZAoAAUAJAJEDAgUMYXNzZXREZXRhaWxzAAEDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJARN0b3VybmFtZW50U3RhdHVzS2V5AQUMdG91cm5hbWVudElkAgxyZWdpc3RyYXRpb24JAMwIAgkBDEludGVnZXJFbnRyeQIJARh0b3VybmFtZW50QnV5SW5BbW91bnRLZXkBBQx0b3VybmFtZW50SWQFC2J1eUluQW1vdW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJARt0b3VybmFtZW50QnV5SW5Bc3NldE5hbWVLZXkBBQx0b3VybmFtZW50SWQKAAFACQCRAwIFCmJ1eUluQXNzZXQAAAMJAAECBQFAAgZTdHJpbmcFAUAJAAIBCQCsAgIJAAMBBQFAAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcJAMwIAgkBDEludGVnZXJFbnRyeQIJAR90b3VybmFtZW50QnV5SW5Bc3NldERlY2ltYWxzS2V5AQUMdG91cm5hbWVudElkCgABQAkAkQMCBQpidXlJbkFzc2V0AAEDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJARl0b3VybmFtZW50QnV5SW5Bc3NldElkS2V5AQUMdG91cm5hbWVudElkBQxidXlJbkFzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEXRvdXJuYW1lbnROYW1lS2V5AQUMdG91cm5hbWVudElkBQRuYW1lCQDMCAIJAQtTdHJpbmdFbnRyeQIJARR0b3VybmFtZW50Q3JlYXRvcktleQEFDHRvdXJuYW1lbnRJZAUNY2FsbGVyQWRkclN0cgUDbmlsAAEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEPc3RhcnRUb3VybmFtZW50AQx0b3VybmFtZW50SWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAgpBZG1pbiBPbmx5CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBE3RvdXJuYW1lbnRTdGF0dXNLZXkBBQx0b3VybmFtZW50SWQCB3N0YXJ0ZWQFA25pbAABAWkBEGZpbmlzaFRvdXJuYW1lbnQCDHRvdXJuYW1lbnRJZB13aW5uaW5nVHJhbnNmZXJ0VHJhbnNhY3Rpb25JZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECCkFkbWluIE9ubHkEEXRvdXJuYW1lbnRDcmVhdG9yCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEUdG91cm5hbWVudENyZWF0b3JLZXkBBQx0b3VybmFtZW50SWQEGnRvdXJuYW1lbnRUb3RhbEJ1eUluQW1vdW50CQENdHJ5R2V0SW50ZWdlcgEJASZ0b3VybmFtZW50VG90YWxCdXlJbkNvbGxlY3RlZEFtb3VudEtleQEFDHRvdXJuYW1lbnRJZAQVdG91cm5hbWVudEJ1eUluQW1vdW50CQERQGV4dHJOYXRpdmUoMTA1NSkBCQEYdG91cm5hbWVudEJ1eUluQW1vdW50S2V5AQUMdG91cm5hbWVudElkBBZ0b3VybmFtZW50QnV5SW5Bc3NldElkBAckbWF0Y2gwCQCiCAEJARl0b3VybmFtZW50QnV5SW5Bc3NldElkS2V5AQUMdG91cm5hbWVudElkAwkAAQIFByRtYXRjaDACBlN0cmluZwQCaWQFByRtYXRjaDADCQAAAgUCaWQCAAUEdW5pdAkA2QQBBQJpZAUEdW5pdAQSdG91cm5hbWVudEJ1eUluRmVlCQBrAwUadG91cm5hbWVudFRvdGFsQnV5SW5BbW91bnQFGXRvdXJuYW1lbnRCdXlJbkZlZVBlcmNlbnQAZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJASF0b3VybmFtZW50V2lubmluZ1RyYW5zYWN0aW9uSWRLZXkBBQx0b3VybmFtZW50SWQFHXdpbm5pbmdUcmFuc2ZlcnRUcmFuc2FjdGlvbklkCQDMCAIJAQtTdHJpbmdFbnRyeQIJARN0b3VybmFtZW50U3RhdHVzS2V5AQUMdG91cm5hbWVudElkAghmaW5pc2hlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHnRvdXJuYW1lbnRCdXlJbkZlZUNvbGxlY3RlZEtleQEFDHRvdXJuYW1lbnRJZAUSdG91cm5hbWVudEJ1eUluRmVlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFEXRvdXJuYW1lbnRDcmVhdG9yCQBlAgUadG91cm5hbWVudFRvdGFsQnV5SW5BbW91bnQFEnRvdXJuYW1lbnRCdXlJbkZlZQUWdG91cm5hbWVudEJ1eUluQXNzZXRJZAUDbmlsAAEBaQEOcGxheWVyRXhpdEdhbWUDBmdhbWVJZApwbGF5ZXJBZGRyD2V4aXRTdGFja0Ftb3VudAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECCkFkbWluIE9ubHkEF2N1cnJlbnRUb3RhbExvY2tlZEZ1bmRzCQENdHJ5R2V0SW50ZWdlcgEJARphZGRyZXNzVG90YWxMb2NrZWRGdW5kc0tleQEFCnBsYXllckFkZHIEIGN1cnJlbnRHYW1lTG9ja2VkQW1vdW50Rm9yUGxheWVyCQENdHJ5R2V0SW50ZWdlcgEJARxhZGRyZXNzTG9ja2VkRnVuZHNGb3JHYW1lS2V5AgUKcGxheWVyQWRkcgUGZ2FtZUlkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJARphZGRyZXNzVG90YWxMb2NrZWRGdW5kc0tleQEFCnBsYXllckFkZHIJAGUCBRdjdXJyZW50VG90YWxMb2NrZWRGdW5kcwUgY3VycmVudEdhbWVMb2NrZWRBbW91bnRGb3JQbGF5ZXIJAMwIAgkBDEludGVnZXJFbnRyeQIJARxhZGRyZXNzTG9ja2VkRnVuZHNGb3JHYW1lS2V5AgUKcGxheWVyQWRkcgUGZ2FtZUlkAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUKcGxheWVyQWRkcgUPZXhpdFN0YWNrQW1vdW50CQDZBAEFDmRlcG9zaXRBc3NldElkBQNuaWwAAQFpARBsb2NrRnVuZHNGb3JHYW1lAQZnYW1lSWQEA3BtdAMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAEJAJEDAggFAWkIcGF5bWVudHMAAAkAAgECIVBsZWFzZSBhdHRhY2ggZXhhY3RseSBvbmUgcGF5bWVudAMJAQIhPQIIBQNwbXQHYXNzZXRJZAkA2QQBBQ5kZXBvc2l0QXNzZXRJZAkAAgECGVlvdSBjYW4gb25seSBkZXBvc2l0IFVTRE4EDWNhbGxlckFkZHJTdHIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQXY3VycmVudFRvdGFsTG9ja2VkRnVuZHMJAQ10cnlHZXRJbnRlZ2VyAQkBGmFkZHJlc3NUb3RhbExvY2tlZEZ1bmRzS2V5AQUNY2FsbGVyQWRkclN0cgQeY3VycmVudExvY2tlZEZ1bmRzVG90YWxIaXN0b3J5CQENdHJ5R2V0SW50ZWdlcgEJASFhZGRyZXNzTG9ja2VkRnVuZHNUb3RhbEhpc3RvcnlLZXkBBQ1jYWxsZXJBZGRyU3RyCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJARphZGRyZXNzVG90YWxMb2NrZWRGdW5kc0tleQEFDWNhbGxlckFkZHJTdHIJAGQCBRdjdXJyZW50VG90YWxMb2NrZWRGdW5kcwgFA3BtdAZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJASFhZGRyZXNzTG9ja2VkRnVuZHNUb3RhbEhpc3RvcnlLZXkBBQ1jYWxsZXJBZGRyU3RyCQBkAgUeY3VycmVudExvY2tlZEZ1bmRzVG90YWxIaXN0b3J5CAUDcG10BmFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHGFkZHJlc3NMb2NrZWRGdW5kc0ZvckdhbWVLZXkCBQ1jYWxsZXJBZGRyU3RyBQZnYW1lSWQIBQNwbXQGYW1vdW50BQNuaWwAAQFpAQ13aXRoZHJhd0Z1bmRzAAQNY2FsbGVyQWRkclN0cgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBBBmZWVDb2xsZWN0b3JBZGRyCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1OCkBBRZmZWVDb2xsZWN0b3JBZGRyZXNzS2V5BBVjdXJyZW50QXZhaWxhYmxlRnVuZHMJAQ10cnlHZXRJbnRlZ2VyAQkBGGFkZHJlc3NBdmFpbGFibGVGdW5kc0tleQEFDWNhbGxlckFkZHJTdHIEC3dpdGhkcmF3RmVlCQBrAwUVY3VycmVudEF2YWlsYWJsZUZ1bmRzBRJ3aXRoZHJhd0ZlZVBlcmNlbnQAZAQUYWN0dWFsQXZhaWxhYmxlRnVuZHMJAGUCBRVjdXJyZW50QXZhaWxhYmxlRnVuZHMFC3dpdGhkcmF3RmVlAwkAZwIAAAUUYWN0dWFsQXZhaWxhYmxlRnVuZHMJAAIBAh5ObyBhdmFpbGFibGUgZnVuZHMgdG8gd2l0aGRyYXcJAMwIAgkBDEludGVnZXJFbnRyeQIJARhhZGRyZXNzQXZhaWxhYmxlRnVuZHNLZXkBBQ1jYWxsZXJBZGRyU3RyAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBRRhY3R1YWxBdmFpbGFibGVGdW5kcwkA2QQBBQ5kZXBvc2l0QXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRBmZWVDb2xsZWN0b3JBZGRyBQt3aXRoZHJhd0ZlZQkA2QQBBQ5kZXBvc2l0QXNzZXRJZAUDbmlsAWkBEHNldFdpbm5lckhlYWRzVXADBmdhbWVJZA13aW5uZXJBZGRyU3RyD290aGVyUGxheWVyQWRkcgMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECCkFkbWluIE9ubHkEE2F2YWlsYWJsZVJld2FyZHNLZXkJARphZGRyZXNzQXZhaWxhYmxlUmV3YXJkc0tleQEFDXdpbm5lckFkZHJTdHIEF2N1cnJlbnRBdmFpbGFibGVSZXdhcmRzCQENdHJ5R2V0SW50ZWdlcgEFE2F2YWlsYWJsZVJld2FyZHNLZXkEFG5ld1RpY2tldENvdW50V2lubmVyCQENY29uc3VtZVRpY2tldAEFDXdpbm5lckFkZHJTdHIEGW5ld1RpY2tldENvdW50T3RoZXJQbGF5ZXIJAQ1jb25zdW1lVGlja2V0AQUPb3RoZXJQbGF5ZXJBZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1nYW1lV2lubmVyS2V5AQUGZ2FtZUlkBQ13aW5uZXJBZGRyU3RyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNhdmFpbGFibGVSZXdhcmRzS2V5CQBkAgUXY3VycmVudEF2YWlsYWJsZVJld2FyZHMJAGgCBQt0aWNrZXRQcmljZQACCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESZ2V0VGlja2V0c0NvdW50S2V5AQUNd2lubmVyQWRkclN0cgUUbmV3VGlja2V0Q291bnRXaW5uZXIJAMwIAgkBDEludGVnZXJFbnRyeQIJARJnZXRUaWNrZXRzQ291bnRLZXkBBQ9vdGhlclBsYXllckFkZHIFGW5ld1RpY2tldENvdW50T3RoZXJQbGF5ZXIFA25pbAFpAQ93aXRoZHJhd1Jld2FyZHMABA1jYWxsZXJBZGRyU3RyCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEEGZlZUNvbGxlY3RvckFkZHIJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDU4KQEFFmZlZUNvbGxlY3RvckFkZHJlc3NLZXkEF2N1cnJlbnRBdmFpbGFibGVSZXdhcmRzCQENdHJ5R2V0SW50ZWdlcgEJARphZGRyZXNzQXZhaWxhYmxlUmV3YXJkc0tleQEFDWNhbGxlckFkZHJTdHIEC3dpdGhkcmF3RmVlCQBrAwUXY3VycmVudEF2YWlsYWJsZVJld2FyZHMFEndpdGhkcmF3RmVlUGVyY2VudABkBBZhY3R1YWxBdmFpbGFibGVSZXdhcmRzCQBlAgkAZQIFF2N1cnJlbnRBdmFpbGFibGVSZXdhcmRzBQZpbnZGZWUFC3dpdGhkcmF3RmVlAwkAZwIAAAUXY3VycmVudEF2YWlsYWJsZVJld2FyZHMJAAIBAiBObyBhdmFpbGFibGUgcmV3YXJkcyB0byB3aXRoZHJhdwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGmFkZHJlc3NBdmFpbGFibGVSZXdhcmRzS2V5AQUNY2FsbGVyQWRkclN0cgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUWYWN0dWFsQXZhaWxhYmxlUmV3YXJkcwUEdW5pdAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRBmZWVDb2xsZWN0b3JBZGRyBQt3aXRoZHJhd0ZlZQUEdW5pdAUDbmlsAWkBCmJ1eVRpY2tldHMABANwbXQDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABCQCRAwIIBQFpCHBheW1lbnRzAAAJAAIBAiFQbGVhc2UgYXR0YWNoIGV4YWN0bHkgb25lIHBheW1lbnQDCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkCQACAQInVGlja2V0cyBjYW4gb25seSBpYmUgcHVyY2hhc2VkIGluIFdhdmVzAwkBAiE9AggFA3BtdAZhbW91bnQFC3RpY2tldFByaWNlCQACAQkArAICCQCsAgICH1RoZSBwYXltZW50IG11c3QgYmUgb2YgZXhhY3RseSAJAKQDAQUOdGlja2V0UHJpY2VJbnQCBiB3YXZlcwQNY2FsbGVyQWRkclN0cgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBBNjdXJyZW50VGlja2V0c0NvdW50CQENdHJ5R2V0SW50ZWdlcgEJARJnZXRUaWNrZXRzQ291bnRLZXkBBQ1jYWxsZXJBZGRyU3RyCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJARJnZXRUaWNrZXRzQ291bnRLZXkBBQ1jYWxsZXJBZGRyU3RyCQBkAgUTY3VycmVudFRpY2tldHNDb3VudAABBQNuaWwAAQECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXnOVCu/", "height": 2263883, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: H5vptWcjz4WPsYBEns1hEzCtjeDRsetyRaRc5U3gLDme Next: BBN1dZSuqf9cuCTqhWWjhN1nHDw8aUxhNuNe7agtgDhY Diff:
OldNewDifferences
4343 func t (p) = (p + "_tournamentTotalBuyInCollectedAmount")
4444
4545
46-func u (p) = (p + "_tournamentCreator")
46+func u (p) = (p + "_tournamentTotalBuyInCollectedAmountMinusFees")
4747
4848
49-func v (p) = (p + "_tournamentName")
49+func v (p) = (p + "_tournamentCreator")
5050
5151
52-func w (p) = (p + "_tournamentPrizeAmount")
52+func w (p) = (p + "_tournamentName")
5353
5454
55-func x (p) = (p + "_tournamentMaxPlayersCount")
55+func x (p) = (p + "_tournamentPrizeAmount")
5656
5757
58-func y (p) = (p + "_tournamentPlayersCount")
58+func y (p) = (p + "_tournamentMaxPlayersCount")
5959
6060
61-func z (p) = (p + "_tournamentPrizeAssetId")
61+func z (p) = (p + "_tournamentPlayersCount")
6262
6363
64-func A (p) = (p + "_tournamentPrizeAssetName")
64+func A (p) = (p + "_tournamentPrizeAssetId")
6565
6666
67-func B (p) = (p + "_tournamentBuyInAmount")
67+func B (p) = (p + "_tournamentPrizeAssetName")
6868
6969
70-func C (p) = (p + "_tournamentBuyInAssetId")
70+func C (p) = (p + "_tournamentBuyInAmount")
7171
7272
73-func D (p) = (p + "_tournamentBuyInAssetName")
73+func D (p) = (p + "_tournamentBuyInAssetId")
7474
7575
76-func E (p) = (p + "_tournamentBuyInAssetDecimals")
76+func E (p) = (p + "_tournamentBuyInAssetName")
7777
7878
79-func F (p) = (p + "_tournamentPrizeAssetDecimals")
79+func F (p) = (p + "_tournamentBuyInAssetDecimals")
8080
8181
82-func G (p) = (p + "_tournamentStatus")
82+func G (p) = (p + "_tournamentPrizeAssetDecimals")
8383
8484
85-func H (p) = (p + "_tournamentBuyInFeeCollected")
85+func H (p) = (p + "_tournamentStatus")
8686
8787
88-func I (p) = (p + "_tournamentWinningTransactionId")
88+func I (p) = (p + "_tournamentBuyInFeeCollected")
8989
9090
91-func J (K) = (K + "_winner")
91+func J (p) = (p + "_tournamentWinningTransactionId")
9292
9393
94-func L (M) = (M + "_availableFunds")
94+func K (L) = (L + "_winner")
9595
9696
97-func N (M) = (M + "_totalLockedFunds")
97+func M (N) = (N + "_availableFunds")
9898
9999
100-func O (M) = (M + "_lockedFundsTotalHistory")
100+func O (N) = (N + "_totalLockedFunds")
101101
102102
103-func P (M,K) = ((M + "_lockedFunds_") + K)
103+func P (N) = (N + "_lockedFundsTotalHistory")
104104
105105
106-func Q (M) = (M + "_availableRewards")
106+func Q (N,L) = ((N + "_lockedFunds_") + L)
107107
108108
109-func R (n) = i(m(n))
109+func R (N) = (N + "_availableRewards")
110110
111111
112-func S (T) = {
113- let U = R(T)
114- let V = (U - 1)
115- if ((0 > V))
112+func S (n) = i(m(n))
113+
114+
115+func T (U) = {
116+ let V = S(U)
117+ let W = (V - 1)
118+ if ((0 > W))
116119 then 0
117- else V
120+ else W
118121 }
119122
120123
121-@Callable(W)
122-func setFeeCollectorAddress (X) = if ((W.caller != this))
124+@Callable(X)
125+func setFeeCollectorAddress (Y) = if ((X.caller != this))
123126 then throw("Admin Only")
124- else [StringEntry(f, X)]
127+ else [StringEntry(f, Y)]
125128
126129
127130
128-@Callable(W)
131+@Callable(X)
129132 func depositFunds () = {
130- let Y = if ((size(W.payments) == 1))
131- then W.payments[0]
133+ let Z = if ((size(X.payments) == 1))
134+ then X.payments[0]
132135 else throw("Please attach exactly one payment")
133- if ((Y.assetId != fromBase58String(h)))
136+ if ((Z.assetId != fromBase58String(h)))
134137 then throw("You can only deposit USDN")
135138 else {
136- let Z = toBase58String(W.caller.bytes)
137- let aa = i(L(Z))
138- $Tuple2([IntegerEntry(L(Z), (aa + Y.amount))], 1)
139+ let aa = toBase58String(X.caller.bytes)
140+ let ab = i(M(aa))
141+ $Tuple2([IntegerEntry(M(aa), (ab + Z.amount))], 1)
139142 }
140143 }
141144
142145
143146
144-@Callable(W)
147+@Callable(X)
145148 func cancelSignUpToTournament (p) = {
146- let ab = getStringValue(G(p))
147- if ((ab != "registration"))
149+ let ac = getStringValue(H(p))
150+ if ((ac != "registration"))
148151 then throw("Tournament is not in registration phase!")
149152 else {
150- let Z = toBase58String(W.caller.bytes)
151- let ac = getIntegerValue(o(p, Z))
152- let ad = getStringValue(r(p, Z))
153- let ae = i(y(p))
154- let af = i(t(p))
155- $Tuple2([ScriptTransfer(addressFromStringValue(Z), ac, fromBase58String(ad)), DeleteEntry(s(p, Z)), DeleteEntry(o(p, Z)), DeleteEntry(r(p, Z)), IntegerEntry(y(p), (ae - 1)), IntegerEntry(t(p), (af - ac))], 1)
153+ let aa = toBase58String(X.caller.bytes)
154+ let ad = getIntegerValue(o(p, aa))
155+ let ae = getStringValue(r(p, aa))
156+ let af = i(z(p))
157+ let ag = (i(t(p)) - ad)
158+ let ah = fraction(ag, g, 100)
159+ $Tuple2([ScriptTransfer(addressFromStringValue(aa), ad, fromBase58String(ae)), DeleteEntry(s(p, aa)), DeleteEntry(o(p, aa)), DeleteEntry(r(p, aa)), IntegerEntry(z(p), (af - 1)), IntegerEntry(t(p), ag), IntegerEntry(u(p), (ag - ah))], 1)
156160 }
157161 }
158162
159163
160164
161-@Callable(W)
165+@Callable(X)
162166 func signUpToTournament (p) = {
163- let ag = getIntegerValue(this, x(p))
164- let ae = i(y(p))
165- let ab = getStringValue(G(p))
166- if ((ab != "registration"))
167+ let ai = getIntegerValue(this, y(p))
168+ let af = i(z(p))
169+ let ac = getStringValue(H(p))
170+ if ((ac != "registration"))
167171 then throw("Tournament is not in registration phase!")
168- else if ((ae == ag))
172+ else if ((af == ai))
169173 then throw("Tournament is currently full, please try again later!")
170174 else {
171- let Y = if ((size(W.payments) == 1))
172- then W.payments[0]
175+ let Z = if ((size(X.payments) == 1))
176+ then X.payments[0]
173177 else throw("Please attach exactly one payment")
174- let ah = {
175- let k = Y.assetId
178+ let aj = {
179+ let k = Z.assetId
176180 if ($isInstanceOf(k, "Unit"))
177181 then {
178182 let l = k
185189 }
186190 else throw("Match error")
187191 }
188- let ai = getIntegerValue(this, B(p))
189- let aj = getStringValue(this, C(p))
190- if ((ai != Y.amount))
191- then throw(("Attached payment amount is invalid, must be " + toString(ai)))
192- else if ((aj != ah))
193- then throw(("Attached payment asset id is invalid, must be " + aj))
192+ let ak = getIntegerValue(this, C(p))
193+ let al = getStringValue(this, D(p))
194+ if ((ak != Z.amount))
195+ then throw(("Attached payment amount is invalid, must be " + toString(ak)))
196+ else if ((al != aj))
197+ then throw(("Attached payment asset id is invalid, must be " + al))
194198 else {
195- let Z = toBase58String(W.caller.bytes)
196- let af = i(t(p))
197- $Tuple2([BooleanEntry(s(p, Z), true), IntegerEntry(o(p, Z), Y.amount), StringEntry(r(p, Z), ah), IntegerEntry(y(p), (ae + 1)), IntegerEntry(t(p), (af + Y.amount))], 1)
199+ let aa = toBase58String(X.caller.bytes)
200+ let ag = (i(t(p)) + Z.amount)
201+ let ah = fraction(ag, g, 100)
202+ $Tuple2([BooleanEntry(s(p, aa), true), IntegerEntry(o(p, aa), Z.amount), StringEntry(r(p, aa), aj), IntegerEntry(z(p), (af + 1)), IntegerEntry(t(p), ag), IntegerEntry(u(p), (ag - ah))], 1)
198203 }
199204 }
200205 }
201206
202207
203208
204-@Callable(W)
209+@Callable(X)
205210 func cancelTournament (p) = {
206- let Z = toBase58String(W.caller.bytes)
207- let ak = getStringValue(u(p))
208- let al = if ((ak == Z))
211+ let aa = toBase58String(X.caller.bytes)
212+ let am = getStringValue(v(p))
213+ let an = if ((am == aa))
209214 then true
210- else if ((W.caller == this))
215+ else if ((X.caller == this))
211216 then true
212217 else throw("Only tournament creator can cancel it!")
213- if ((al == al))
218+ if ((an == an))
214219 then {
215- let ab = getStringValue(G(p))
216- if ((ab != "registration"))
220+ let ac = getStringValue(H(p))
221+ if ((ac != "registration"))
217222 then throw("Tournament is not in registration phase!")
218223 else {
219- let ae = i(y(p))
220- if ((ae > 0))
224+ let af = i(z(p))
225+ if ((af > 0))
221226 then throw("Cannot cancel a tournament when players are already registered to it!")
222227 else {
223- let am = getIntegerValue(w(p))
224- let an = getStringValue(z(p))
225- $Tuple2([DeleteEntry(w(p)), DeleteEntry(y(p)), DeleteEntry(x(p)), DeleteEntry(z(p)), DeleteEntry(A(p)), DeleteEntry(F(p)), DeleteEntry(G(p)), DeleteEntry(B(p)), DeleteEntry(D(p)), DeleteEntry(E(p)), DeleteEntry(C(p)), DeleteEntry(v(p)), DeleteEntry(u(p)), ScriptTransfer(addressFromStringValue(ak), am, fromBase58String(an))], 1)
228+ let ao = getIntegerValue(x(p))
229+ let ap = getStringValue(A(p))
230+ $Tuple2([DeleteEntry(x(p)), DeleteEntry(z(p)), DeleteEntry(y(p)), DeleteEntry(A(p)), DeleteEntry(B(p)), DeleteEntry(G(p)), DeleteEntry(H(p)), DeleteEntry(C(p)), DeleteEntry(E(p)), DeleteEntry(F(p)), DeleteEntry(D(p)), DeleteEntry(w(p)), DeleteEntry(v(p)), ScriptTransfer(addressFromStringValue(am), ao, fromBase58String(ap))], 1)
226231 }
227232 }
228233 }
231236
232237
233238
234-@Callable(W)
235-func createTournament (p,ao,ap,aq,ar) = {
236- let Y = if ((size(W.payments) == 1))
237- then W.payments[0]
239+@Callable(X)
240+func createTournament (p,aq,ar,as,at) = {
241+ let Z = if ((size(X.payments) == 1))
242+ then X.payments[0]
238243 else throw("Please attach exactly one payment")
239- let ak = {
240- let k = getString(u(p))
244+ let am = {
245+ let k = getString(v(p))
241246 if ($isInstanceOf(k, "String"))
242247 then {
243- let as = k
248+ let au = k
244249 throw(("Tournament already exists with this id " + p))
245250 }
246251 else unit
247252 }
248- if ((ak == ak))
253+ if ((am == am))
249254 then {
250- let at = {
251- let k = Y.assetId
255+ let av = {
256+ let k = Z.assetId
252257 if ($isInstanceOf(k, "Unit"))
253258 then {
254259 let l = k
261266 }
262267 else throw("Match error")
263268 }
264- let au = {
265- let k = Y.assetId
269+ let aw = {
270+ let k = Z.assetId
266271 if ($isInstanceOf(k, "Unit"))
267272 then {
268273 let l = k
271276 else if ($isInstanceOf(k, "ByteVector"))
272277 then {
273278 let l = k
274- let av = assetInfo(l)
275- if ($isInstanceOf(av, "Asset"))
279+ let ax = assetInfo(l)
280+ if ($isInstanceOf(ax, "Asset"))
276281 then {
277- let aw = av
278-[aw.name, aw.decimals]
282+ let ay = ax
283+[ay.name, ay.decimals]
279284 }
280285 else throw("Can't find asset")
281286 }
282287 else throw("Match error")
283288 }
284- let ax = {
285- let k = assetInfo(fromBase58String(ar))
289+ let az = {
290+ let k = assetInfo(fromBase58String(at))
286291 if ($isInstanceOf(k, "Asset"))
287292 then {
288- let aw = k
289-[aw.name, aw.decimals]
293+ let ay = k
294+[ay.name, ay.decimals]
290295 }
291296 else ["", 0]
292297 }
293- let Z = toBase58String(W.caller.bytes)
294- $Tuple2([IntegerEntry(w(p), Y.amount), IntegerEntry(y(p), 0), IntegerEntry(x(p), ap), StringEntry(z(p), at), StringEntry(A(p), {
295- let ay = au[0]
296- if ($isInstanceOf(ay, "String"))
297- then ay
298- else throw(($getType(ay) + " couldn't be cast to String"))
298+ let aa = toBase58String(X.caller.bytes)
299+ $Tuple2([IntegerEntry(x(p), Z.amount), IntegerEntry(z(p), 0), IntegerEntry(y(p), ar), StringEntry(A(p), av), StringEntry(B(p), {
300+ let aA = aw[0]
301+ if ($isInstanceOf(aA, "String"))
302+ then aA
303+ else throw(($getType(aA) + " couldn't be cast to String"))
304+ }), IntegerEntry(G(p), {
305+ let aA = aw[1]
306+ if ($isInstanceOf(aA, "Int"))
307+ then aA
308+ else throw(($getType(aA) + " couldn't be cast to Int"))
309+ }), StringEntry(H(p), "registration"), IntegerEntry(C(p), as), StringEntry(E(p), {
310+ let aA = az[0]
311+ if ($isInstanceOf(aA, "String"))
312+ then aA
313+ else throw(($getType(aA) + " couldn't be cast to String"))
299314 }), IntegerEntry(F(p), {
300- let ay = au[1]
301- if ($isInstanceOf(ay, "Int"))
302- then ay
303- else throw(($getType(ay) + " couldn't be cast to Int"))
304- }), StringEntry(G(p), "registration"), IntegerEntry(B(p), aq), StringEntry(D(p), {
305- let ay = ax[0]
306- if ($isInstanceOf(ay, "String"))
307- then ay
308- else throw(($getType(ay) + " couldn't be cast to String"))
309- }), IntegerEntry(E(p), {
310- let ay = ax[1]
311- if ($isInstanceOf(ay, "Int"))
312- then ay
313- else throw(($getType(ay) + " couldn't be cast to Int"))
314- }), StringEntry(C(p), ar), StringEntry(v(p), ao), StringEntry(u(p), Z)], 1)
315+ let aA = az[1]
316+ if ($isInstanceOf(aA, "Int"))
317+ then aA
318+ else throw(($getType(aA) + " couldn't be cast to Int"))
319+ }), StringEntry(D(p), at), StringEntry(w(p), aq), StringEntry(v(p), aa)], 1)
315320 }
316321 else throw("Strict value is not equal to itself.")
317322 }
318323
319324
320325
321-@Callable(W)
322-func finishTournament (p,az) = if ((W.caller != this))
326+@Callable(X)
327+func startTournament (p) = if ((X.caller != this))
328+ then throw("Admin Only")
329+ else $Tuple2([StringEntry(H(p), "started")], 1)
330+
331+
332+
333+@Callable(X)
334+func finishTournament (p,aB) = if ((X.caller != this))
323335 then throw("Admin Only")
324336 else {
325- let ak = getStringValue(u(p))
326- let aA = i(t(p))
327- let aB = getIntegerValue(B(p))
328- let aC = {
329- let k = getString(C(p))
337+ let am = getStringValue(v(p))
338+ let aC = i(t(p))
339+ let aD = getIntegerValue(C(p))
340+ let aE = {
341+ let k = getString(D(p))
330342 if ($isInstanceOf(k, "String"))
331343 then {
332- let aD = k
333- if ((aD == ""))
344+ let aF = k
345+ if ((aF == ""))
334346 then unit
335- else fromBase58String(aD)
347+ else fromBase58String(aF)
336348 }
337349 else unit
338350 }
339- let aE = fraction(aA, g, 100)
340- $Tuple2([StringEntry(I(p), az), StringEntry(G(p), "finished"), IntegerEntry(H(p), aE), ScriptTransfer(addressFromStringValue(ak), (aA - aE), aC)], 1)
351+ let aG = fraction(aC, g, 100)
352+ $Tuple2([StringEntry(J(p), aB), StringEntry(H(p), "finished"), IntegerEntry(I(p), aG), ScriptTransfer(addressFromStringValue(am), (aC - aG), aE)], 1)
341353 }
342354
343355
344356
345-@Callable(W)
346-func playerExitGame (K,T,aF) = if ((W.caller != this))
357+@Callable(X)
358+func playerExitGame (L,U,aH) = if ((X.caller != this))
347359 then throw("Admin Only")
348360 else {
349- let aG = i(N(T))
350- let aH = i(P(T, K))
351- $Tuple2([IntegerEntry(N(T), (aG - aH)), IntegerEntry(P(T, K), 0), ScriptTransfer(addressFromStringValue(T), aF, fromBase58String(h))], 1)
361+ let aI = i(O(U))
362+ let aJ = i(Q(U, L))
363+ $Tuple2([IntegerEntry(O(U), (aI - aJ)), IntegerEntry(Q(U, L), 0), ScriptTransfer(addressFromStringValue(U), aH, fromBase58String(h))], 1)
352364 }
353365
354366
355367
356-@Callable(W)
357-func lockFundsForGame (K) = {
358- let Y = if ((size(W.payments) == 1))
359- then W.payments[0]
368+@Callable(X)
369+func lockFundsForGame (L) = {
370+ let Z = if ((size(X.payments) == 1))
371+ then X.payments[0]
360372 else throw("Please attach exactly one payment")
361- if ((Y.assetId != fromBase58String(h)))
373+ if ((Z.assetId != fromBase58String(h)))
362374 then throw("You can only deposit USDN")
363375 else {
364- let Z = toBase58String(W.caller.bytes)
365- let aG = i(N(Z))
366- let aI = i(O(Z))
367- $Tuple2([IntegerEntry(N(Z), (aG + Y.amount)), IntegerEntry(O(Z), (aI + Y.amount)), IntegerEntry(P(Z, K), Y.amount)], 1)
376+ let aa = toBase58String(X.caller.bytes)
377+ let aI = i(O(aa))
378+ let aK = i(P(aa))
379+ $Tuple2([IntegerEntry(O(aa), (aI + Z.amount)), IntegerEntry(P(aa), (aK + Z.amount)), IntegerEntry(Q(aa, L), Z.amount)], 1)
368380 }
369381 }
370382
371383
372384
373-@Callable(W)
385+@Callable(X)
374386 func withdrawFunds () = {
375- let Z = toBase58String(W.caller.bytes)
376- let aJ = addressFromStringValue(getStringValue(f))
377- let aa = i(L(Z))
378- let aK = fraction(aa, e, 100)
379- let aL = (aa - aK)
380- if ((0 >= aL))
387+ let aa = toBase58String(X.caller.bytes)
388+ let aL = addressFromStringValue(getStringValue(f))
389+ let ab = i(M(aa))
390+ let aM = fraction(ab, e, 100)
391+ let aN = (ab - aM)
392+ if ((0 >= aN))
381393 then throw("No available funds to withdraw")
382- else [IntegerEntry(L(Z), 0), ScriptTransfer(W.caller, aL, fromBase58String(h)), ScriptTransfer(aJ, aK, fromBase58String(h))]
394+ else [IntegerEntry(M(aa), 0), ScriptTransfer(X.caller, aN, fromBase58String(h)), ScriptTransfer(aL, aM, fromBase58String(h))]
383395 }
384396
385397
386398
387-@Callable(W)
388-func setWinnerHeadsUp (K,aM,aN) = if ((W.caller != this))
399+@Callable(X)
400+func setWinnerHeadsUp (L,aO,aP) = if ((X.caller != this))
389401 then throw("Admin Only")
390402 else {
391- let aO = Q(aM)
392- let aP = i(aO)
393- let aQ = S(aM)
394- let aR = S(aN)
395-[StringEntry(J(K), aM), IntegerEntry(aO, (aP + (c * 2))), IntegerEntry(m(aM), aQ), IntegerEntry(m(aN), aR)]
403+ let aQ = R(aO)
404+ let aR = i(aQ)
405+ let aS = T(aO)
406+ let aT = T(aP)
407+[StringEntry(K(L), aO), IntegerEntry(aQ, (aR + (c * 2))), IntegerEntry(m(aO), aS), IntegerEntry(m(aP), aT)]
396408 }
397409
398410
399411
400-@Callable(W)
412+@Callable(X)
401413 func withdrawRewards () = {
402- let Z = toBase58String(W.caller.bytes)
403- let aJ = addressFromStringValue(getStringValue(f))
404- let aP = i(Q(Z))
405- let aK = fraction(aP, e, 100)
406- let aS = ((aP - d) - aK)
407- if ((0 >= aP))
414+ let aa = toBase58String(X.caller.bytes)
415+ let aL = addressFromStringValue(getStringValue(f))
416+ let aR = i(R(aa))
417+ let aM = fraction(aR, e, 100)
418+ let aU = ((aR - d) - aM)
419+ if ((0 >= aR))
408420 then throw("No available rewards to withdraw")
409- else [IntegerEntry(Q(Z), 0), ScriptTransfer(W.caller, aS, unit), ScriptTransfer(aJ, aK, unit)]
421+ else [IntegerEntry(R(aa), 0), ScriptTransfer(X.caller, aU, unit), ScriptTransfer(aL, aM, unit)]
410422 }
411423
412424
413425
414-@Callable(W)
426+@Callable(X)
415427 func buyTickets () = {
416- let Y = if ((size(W.payments) == 1))
417- then W.payments[0]
428+ let Z = if ((size(X.payments) == 1))
429+ then X.payments[0]
418430 else throw("Please attach exactly one payment")
419- if (isDefined(Y.assetId))
431+ if (isDefined(Z.assetId))
420432 then throw("Tickets can only ibe purchased in Waves")
421- else if ((Y.amount != c))
433+ else if ((Z.amount != c))
422434 then throw((("The payment must be of exactly " + toString(b)) + " waves"))
423435 else {
424- let Z = toBase58String(W.caller.bytes)
425- let aT = i(m(Z))
426- $Tuple2([IntegerEntry(m(Z), (aT + 1))], 1)
436+ let aa = toBase58String(X.caller.bytes)
437+ let aV = i(m(aa))
438+ $Tuple2([IntegerEntry(m(aa), (aV + 1))], 1)
427439 }
428440 }
429441
430442
431-@Verifier(aU)
432-func aV () = sigVerify(aU.bodyBytes, aU.proofs[0], aU.senderPublicKey)
443+@Verifier(aW)
444+func aX () = sigVerify(aW.bodyBytes, aW.proofs[0], aW.senderPublicKey)
433445
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = 1000000
77
88 let c = b
99
1010 let d = 500000
1111
1212 let e = 5
1313
1414 let f = "feeCollectorAddress"
1515
1616 let g = 10
1717
1818 let h = "5ue1fiuV6j6UBr6Xf28Qms6y5FqzKtqvaxxhwu7hTQ58"
1919
2020 func i (j) = {
2121 let k = getInteger(this, j)
2222 if ($isInstanceOf(k, "Int"))
2323 then {
2424 let l = k
2525 l
2626 }
2727 else 0
2828 }
2929
3030
3131 func m (n) = (n + "_ticketsCount")
3232
3333
3434 func o (p,q) = ((p + "_buyInAmountForAccount_") + q)
3535
3636
3737 func r (p,q) = ((p + "_buyInAssetIdForAccount_") + q)
3838
3939
4040 func s (p,q) = ((p + "_ticketForAccount_") + q)
4141
4242
4343 func t (p) = (p + "_tournamentTotalBuyInCollectedAmount")
4444
4545
46-func u (p) = (p + "_tournamentCreator")
46+func u (p) = (p + "_tournamentTotalBuyInCollectedAmountMinusFees")
4747
4848
49-func v (p) = (p + "_tournamentName")
49+func v (p) = (p + "_tournamentCreator")
5050
5151
52-func w (p) = (p + "_tournamentPrizeAmount")
52+func w (p) = (p + "_tournamentName")
5353
5454
55-func x (p) = (p + "_tournamentMaxPlayersCount")
55+func x (p) = (p + "_tournamentPrizeAmount")
5656
5757
58-func y (p) = (p + "_tournamentPlayersCount")
58+func y (p) = (p + "_tournamentMaxPlayersCount")
5959
6060
61-func z (p) = (p + "_tournamentPrizeAssetId")
61+func z (p) = (p + "_tournamentPlayersCount")
6262
6363
64-func A (p) = (p + "_tournamentPrizeAssetName")
64+func A (p) = (p + "_tournamentPrizeAssetId")
6565
6666
67-func B (p) = (p + "_tournamentBuyInAmount")
67+func B (p) = (p + "_tournamentPrizeAssetName")
6868
6969
70-func C (p) = (p + "_tournamentBuyInAssetId")
70+func C (p) = (p + "_tournamentBuyInAmount")
7171
7272
73-func D (p) = (p + "_tournamentBuyInAssetName")
73+func D (p) = (p + "_tournamentBuyInAssetId")
7474
7575
76-func E (p) = (p + "_tournamentBuyInAssetDecimals")
76+func E (p) = (p + "_tournamentBuyInAssetName")
7777
7878
79-func F (p) = (p + "_tournamentPrizeAssetDecimals")
79+func F (p) = (p + "_tournamentBuyInAssetDecimals")
8080
8181
82-func G (p) = (p + "_tournamentStatus")
82+func G (p) = (p + "_tournamentPrizeAssetDecimals")
8383
8484
85-func H (p) = (p + "_tournamentBuyInFeeCollected")
85+func H (p) = (p + "_tournamentStatus")
8686
8787
88-func I (p) = (p + "_tournamentWinningTransactionId")
88+func I (p) = (p + "_tournamentBuyInFeeCollected")
8989
9090
91-func J (K) = (K + "_winner")
91+func J (p) = (p + "_tournamentWinningTransactionId")
9292
9393
94-func L (M) = (M + "_availableFunds")
94+func K (L) = (L + "_winner")
9595
9696
97-func N (M) = (M + "_totalLockedFunds")
97+func M (N) = (N + "_availableFunds")
9898
9999
100-func O (M) = (M + "_lockedFundsTotalHistory")
100+func O (N) = (N + "_totalLockedFunds")
101101
102102
103-func P (M,K) = ((M + "_lockedFunds_") + K)
103+func P (N) = (N + "_lockedFundsTotalHistory")
104104
105105
106-func Q (M) = (M + "_availableRewards")
106+func Q (N,L) = ((N + "_lockedFunds_") + L)
107107
108108
109-func R (n) = i(m(n))
109+func R (N) = (N + "_availableRewards")
110110
111111
112-func S (T) = {
113- let U = R(T)
114- let V = (U - 1)
115- if ((0 > V))
112+func S (n) = i(m(n))
113+
114+
115+func T (U) = {
116+ let V = S(U)
117+ let W = (V - 1)
118+ if ((0 > W))
116119 then 0
117- else V
120+ else W
118121 }
119122
120123
121-@Callable(W)
122-func setFeeCollectorAddress (X) = if ((W.caller != this))
124+@Callable(X)
125+func setFeeCollectorAddress (Y) = if ((X.caller != this))
123126 then throw("Admin Only")
124- else [StringEntry(f, X)]
127+ else [StringEntry(f, Y)]
125128
126129
127130
128-@Callable(W)
131+@Callable(X)
129132 func depositFunds () = {
130- let Y = if ((size(W.payments) == 1))
131- then W.payments[0]
133+ let Z = if ((size(X.payments) == 1))
134+ then X.payments[0]
132135 else throw("Please attach exactly one payment")
133- if ((Y.assetId != fromBase58String(h)))
136+ if ((Z.assetId != fromBase58String(h)))
134137 then throw("You can only deposit USDN")
135138 else {
136- let Z = toBase58String(W.caller.bytes)
137- let aa = i(L(Z))
138- $Tuple2([IntegerEntry(L(Z), (aa + Y.amount))], 1)
139+ let aa = toBase58String(X.caller.bytes)
140+ let ab = i(M(aa))
141+ $Tuple2([IntegerEntry(M(aa), (ab + Z.amount))], 1)
139142 }
140143 }
141144
142145
143146
144-@Callable(W)
147+@Callable(X)
145148 func cancelSignUpToTournament (p) = {
146- let ab = getStringValue(G(p))
147- if ((ab != "registration"))
149+ let ac = getStringValue(H(p))
150+ if ((ac != "registration"))
148151 then throw("Tournament is not in registration phase!")
149152 else {
150- let Z = toBase58String(W.caller.bytes)
151- let ac = getIntegerValue(o(p, Z))
152- let ad = getStringValue(r(p, Z))
153- let ae = i(y(p))
154- let af = i(t(p))
155- $Tuple2([ScriptTransfer(addressFromStringValue(Z), ac, fromBase58String(ad)), DeleteEntry(s(p, Z)), DeleteEntry(o(p, Z)), DeleteEntry(r(p, Z)), IntegerEntry(y(p), (ae - 1)), IntegerEntry(t(p), (af - ac))], 1)
153+ let aa = toBase58String(X.caller.bytes)
154+ let ad = getIntegerValue(o(p, aa))
155+ let ae = getStringValue(r(p, aa))
156+ let af = i(z(p))
157+ let ag = (i(t(p)) - ad)
158+ let ah = fraction(ag, g, 100)
159+ $Tuple2([ScriptTransfer(addressFromStringValue(aa), ad, fromBase58String(ae)), DeleteEntry(s(p, aa)), DeleteEntry(o(p, aa)), DeleteEntry(r(p, aa)), IntegerEntry(z(p), (af - 1)), IntegerEntry(t(p), ag), IntegerEntry(u(p), (ag - ah))], 1)
156160 }
157161 }
158162
159163
160164
161-@Callable(W)
165+@Callable(X)
162166 func signUpToTournament (p) = {
163- let ag = getIntegerValue(this, x(p))
164- let ae = i(y(p))
165- let ab = getStringValue(G(p))
166- if ((ab != "registration"))
167+ let ai = getIntegerValue(this, y(p))
168+ let af = i(z(p))
169+ let ac = getStringValue(H(p))
170+ if ((ac != "registration"))
167171 then throw("Tournament is not in registration phase!")
168- else if ((ae == ag))
172+ else if ((af == ai))
169173 then throw("Tournament is currently full, please try again later!")
170174 else {
171- let Y = if ((size(W.payments) == 1))
172- then W.payments[0]
175+ let Z = if ((size(X.payments) == 1))
176+ then X.payments[0]
173177 else throw("Please attach exactly one payment")
174- let ah = {
175- let k = Y.assetId
178+ let aj = {
179+ let k = Z.assetId
176180 if ($isInstanceOf(k, "Unit"))
177181 then {
178182 let l = k
179183 ""
180184 }
181185 else if ($isInstanceOf(k, "ByteVector"))
182186 then {
183187 let l = k
184188 toBase58String(l)
185189 }
186190 else throw("Match error")
187191 }
188- let ai = getIntegerValue(this, B(p))
189- let aj = getStringValue(this, C(p))
190- if ((ai != Y.amount))
191- then throw(("Attached payment amount is invalid, must be " + toString(ai)))
192- else if ((aj != ah))
193- then throw(("Attached payment asset id is invalid, must be " + aj))
192+ let ak = getIntegerValue(this, C(p))
193+ let al = getStringValue(this, D(p))
194+ if ((ak != Z.amount))
195+ then throw(("Attached payment amount is invalid, must be " + toString(ak)))
196+ else if ((al != aj))
197+ then throw(("Attached payment asset id is invalid, must be " + al))
194198 else {
195- let Z = toBase58String(W.caller.bytes)
196- let af = i(t(p))
197- $Tuple2([BooleanEntry(s(p, Z), true), IntegerEntry(o(p, Z), Y.amount), StringEntry(r(p, Z), ah), IntegerEntry(y(p), (ae + 1)), IntegerEntry(t(p), (af + Y.amount))], 1)
199+ let aa = toBase58String(X.caller.bytes)
200+ let ag = (i(t(p)) + Z.amount)
201+ let ah = fraction(ag, g, 100)
202+ $Tuple2([BooleanEntry(s(p, aa), true), IntegerEntry(o(p, aa), Z.amount), StringEntry(r(p, aa), aj), IntegerEntry(z(p), (af + 1)), IntegerEntry(t(p), ag), IntegerEntry(u(p), (ag - ah))], 1)
198203 }
199204 }
200205 }
201206
202207
203208
204-@Callable(W)
209+@Callable(X)
205210 func cancelTournament (p) = {
206- let Z = toBase58String(W.caller.bytes)
207- let ak = getStringValue(u(p))
208- let al = if ((ak == Z))
211+ let aa = toBase58String(X.caller.bytes)
212+ let am = getStringValue(v(p))
213+ let an = if ((am == aa))
209214 then true
210- else if ((W.caller == this))
215+ else if ((X.caller == this))
211216 then true
212217 else throw("Only tournament creator can cancel it!")
213- if ((al == al))
218+ if ((an == an))
214219 then {
215- let ab = getStringValue(G(p))
216- if ((ab != "registration"))
220+ let ac = getStringValue(H(p))
221+ if ((ac != "registration"))
217222 then throw("Tournament is not in registration phase!")
218223 else {
219- let ae = i(y(p))
220- if ((ae > 0))
224+ let af = i(z(p))
225+ if ((af > 0))
221226 then throw("Cannot cancel a tournament when players are already registered to it!")
222227 else {
223- let am = getIntegerValue(w(p))
224- let an = getStringValue(z(p))
225- $Tuple2([DeleteEntry(w(p)), DeleteEntry(y(p)), DeleteEntry(x(p)), DeleteEntry(z(p)), DeleteEntry(A(p)), DeleteEntry(F(p)), DeleteEntry(G(p)), DeleteEntry(B(p)), DeleteEntry(D(p)), DeleteEntry(E(p)), DeleteEntry(C(p)), DeleteEntry(v(p)), DeleteEntry(u(p)), ScriptTransfer(addressFromStringValue(ak), am, fromBase58String(an))], 1)
228+ let ao = getIntegerValue(x(p))
229+ let ap = getStringValue(A(p))
230+ $Tuple2([DeleteEntry(x(p)), DeleteEntry(z(p)), DeleteEntry(y(p)), DeleteEntry(A(p)), DeleteEntry(B(p)), DeleteEntry(G(p)), DeleteEntry(H(p)), DeleteEntry(C(p)), DeleteEntry(E(p)), DeleteEntry(F(p)), DeleteEntry(D(p)), DeleteEntry(w(p)), DeleteEntry(v(p)), ScriptTransfer(addressFromStringValue(am), ao, fromBase58String(ap))], 1)
226231 }
227232 }
228233 }
229234 else throw("Strict value is not equal to itself.")
230235 }
231236
232237
233238
234-@Callable(W)
235-func createTournament (p,ao,ap,aq,ar) = {
236- let Y = if ((size(W.payments) == 1))
237- then W.payments[0]
239+@Callable(X)
240+func createTournament (p,aq,ar,as,at) = {
241+ let Z = if ((size(X.payments) == 1))
242+ then X.payments[0]
238243 else throw("Please attach exactly one payment")
239- let ak = {
240- let k = getString(u(p))
244+ let am = {
245+ let k = getString(v(p))
241246 if ($isInstanceOf(k, "String"))
242247 then {
243- let as = k
248+ let au = k
244249 throw(("Tournament already exists with this id " + p))
245250 }
246251 else unit
247252 }
248- if ((ak == ak))
253+ if ((am == am))
249254 then {
250- let at = {
251- let k = Y.assetId
255+ let av = {
256+ let k = Z.assetId
252257 if ($isInstanceOf(k, "Unit"))
253258 then {
254259 let l = k
255260 ""
256261 }
257262 else if ($isInstanceOf(k, "ByteVector"))
258263 then {
259264 let l = k
260265 toBase58String(l)
261266 }
262267 else throw("Match error")
263268 }
264- let au = {
265- let k = Y.assetId
269+ let aw = {
270+ let k = Z.assetId
266271 if ($isInstanceOf(k, "Unit"))
267272 then {
268273 let l = k
269274 ["Waves", 8]
270275 }
271276 else if ($isInstanceOf(k, "ByteVector"))
272277 then {
273278 let l = k
274- let av = assetInfo(l)
275- if ($isInstanceOf(av, "Asset"))
279+ let ax = assetInfo(l)
280+ if ($isInstanceOf(ax, "Asset"))
276281 then {
277- let aw = av
278-[aw.name, aw.decimals]
282+ let ay = ax
283+[ay.name, ay.decimals]
279284 }
280285 else throw("Can't find asset")
281286 }
282287 else throw("Match error")
283288 }
284- let ax = {
285- let k = assetInfo(fromBase58String(ar))
289+ let az = {
290+ let k = assetInfo(fromBase58String(at))
286291 if ($isInstanceOf(k, "Asset"))
287292 then {
288- let aw = k
289-[aw.name, aw.decimals]
293+ let ay = k
294+[ay.name, ay.decimals]
290295 }
291296 else ["", 0]
292297 }
293- let Z = toBase58String(W.caller.bytes)
294- $Tuple2([IntegerEntry(w(p), Y.amount), IntegerEntry(y(p), 0), IntegerEntry(x(p), ap), StringEntry(z(p), at), StringEntry(A(p), {
295- let ay = au[0]
296- if ($isInstanceOf(ay, "String"))
297- then ay
298- else throw(($getType(ay) + " couldn't be cast to String"))
298+ let aa = toBase58String(X.caller.bytes)
299+ $Tuple2([IntegerEntry(x(p), Z.amount), IntegerEntry(z(p), 0), IntegerEntry(y(p), ar), StringEntry(A(p), av), StringEntry(B(p), {
300+ let aA = aw[0]
301+ if ($isInstanceOf(aA, "String"))
302+ then aA
303+ else throw(($getType(aA) + " couldn't be cast to String"))
304+ }), IntegerEntry(G(p), {
305+ let aA = aw[1]
306+ if ($isInstanceOf(aA, "Int"))
307+ then aA
308+ else throw(($getType(aA) + " couldn't be cast to Int"))
309+ }), StringEntry(H(p), "registration"), IntegerEntry(C(p), as), StringEntry(E(p), {
310+ let aA = az[0]
311+ if ($isInstanceOf(aA, "String"))
312+ then aA
313+ else throw(($getType(aA) + " couldn't be cast to String"))
299314 }), IntegerEntry(F(p), {
300- let ay = au[1]
301- if ($isInstanceOf(ay, "Int"))
302- then ay
303- else throw(($getType(ay) + " couldn't be cast to Int"))
304- }), StringEntry(G(p), "registration"), IntegerEntry(B(p), aq), StringEntry(D(p), {
305- let ay = ax[0]
306- if ($isInstanceOf(ay, "String"))
307- then ay
308- else throw(($getType(ay) + " couldn't be cast to String"))
309- }), IntegerEntry(E(p), {
310- let ay = ax[1]
311- if ($isInstanceOf(ay, "Int"))
312- then ay
313- else throw(($getType(ay) + " couldn't be cast to Int"))
314- }), StringEntry(C(p), ar), StringEntry(v(p), ao), StringEntry(u(p), Z)], 1)
315+ let aA = az[1]
316+ if ($isInstanceOf(aA, "Int"))
317+ then aA
318+ else throw(($getType(aA) + " couldn't be cast to Int"))
319+ }), StringEntry(D(p), at), StringEntry(w(p), aq), StringEntry(v(p), aa)], 1)
315320 }
316321 else throw("Strict value is not equal to itself.")
317322 }
318323
319324
320325
321-@Callable(W)
322-func finishTournament (p,az) = if ((W.caller != this))
326+@Callable(X)
327+func startTournament (p) = if ((X.caller != this))
328+ then throw("Admin Only")
329+ else $Tuple2([StringEntry(H(p), "started")], 1)
330+
331+
332+
333+@Callable(X)
334+func finishTournament (p,aB) = if ((X.caller != this))
323335 then throw("Admin Only")
324336 else {
325- let ak = getStringValue(u(p))
326- let aA = i(t(p))
327- let aB = getIntegerValue(B(p))
328- let aC = {
329- let k = getString(C(p))
337+ let am = getStringValue(v(p))
338+ let aC = i(t(p))
339+ let aD = getIntegerValue(C(p))
340+ let aE = {
341+ let k = getString(D(p))
330342 if ($isInstanceOf(k, "String"))
331343 then {
332- let aD = k
333- if ((aD == ""))
344+ let aF = k
345+ if ((aF == ""))
334346 then unit
335- else fromBase58String(aD)
347+ else fromBase58String(aF)
336348 }
337349 else unit
338350 }
339- let aE = fraction(aA, g, 100)
340- $Tuple2([StringEntry(I(p), az), StringEntry(G(p), "finished"), IntegerEntry(H(p), aE), ScriptTransfer(addressFromStringValue(ak), (aA - aE), aC)], 1)
351+ let aG = fraction(aC, g, 100)
352+ $Tuple2([StringEntry(J(p), aB), StringEntry(H(p), "finished"), IntegerEntry(I(p), aG), ScriptTransfer(addressFromStringValue(am), (aC - aG), aE)], 1)
341353 }
342354
343355
344356
345-@Callable(W)
346-func playerExitGame (K,T,aF) = if ((W.caller != this))
357+@Callable(X)
358+func playerExitGame (L,U,aH) = if ((X.caller != this))
347359 then throw("Admin Only")
348360 else {
349- let aG = i(N(T))
350- let aH = i(P(T, K))
351- $Tuple2([IntegerEntry(N(T), (aG - aH)), IntegerEntry(P(T, K), 0), ScriptTransfer(addressFromStringValue(T), aF, fromBase58String(h))], 1)
361+ let aI = i(O(U))
362+ let aJ = i(Q(U, L))
363+ $Tuple2([IntegerEntry(O(U), (aI - aJ)), IntegerEntry(Q(U, L), 0), ScriptTransfer(addressFromStringValue(U), aH, fromBase58String(h))], 1)
352364 }
353365
354366
355367
356-@Callable(W)
357-func lockFundsForGame (K) = {
358- let Y = if ((size(W.payments) == 1))
359- then W.payments[0]
368+@Callable(X)
369+func lockFundsForGame (L) = {
370+ let Z = if ((size(X.payments) == 1))
371+ then X.payments[0]
360372 else throw("Please attach exactly one payment")
361- if ((Y.assetId != fromBase58String(h)))
373+ if ((Z.assetId != fromBase58String(h)))
362374 then throw("You can only deposit USDN")
363375 else {
364- let Z = toBase58String(W.caller.bytes)
365- let aG = i(N(Z))
366- let aI = i(O(Z))
367- $Tuple2([IntegerEntry(N(Z), (aG + Y.amount)), IntegerEntry(O(Z), (aI + Y.amount)), IntegerEntry(P(Z, K), Y.amount)], 1)
376+ let aa = toBase58String(X.caller.bytes)
377+ let aI = i(O(aa))
378+ let aK = i(P(aa))
379+ $Tuple2([IntegerEntry(O(aa), (aI + Z.amount)), IntegerEntry(P(aa), (aK + Z.amount)), IntegerEntry(Q(aa, L), Z.amount)], 1)
368380 }
369381 }
370382
371383
372384
373-@Callable(W)
385+@Callable(X)
374386 func withdrawFunds () = {
375- let Z = toBase58String(W.caller.bytes)
376- let aJ = addressFromStringValue(getStringValue(f))
377- let aa = i(L(Z))
378- let aK = fraction(aa, e, 100)
379- let aL = (aa - aK)
380- if ((0 >= aL))
387+ let aa = toBase58String(X.caller.bytes)
388+ let aL = addressFromStringValue(getStringValue(f))
389+ let ab = i(M(aa))
390+ let aM = fraction(ab, e, 100)
391+ let aN = (ab - aM)
392+ if ((0 >= aN))
381393 then throw("No available funds to withdraw")
382- else [IntegerEntry(L(Z), 0), ScriptTransfer(W.caller, aL, fromBase58String(h)), ScriptTransfer(aJ, aK, fromBase58String(h))]
394+ else [IntegerEntry(M(aa), 0), ScriptTransfer(X.caller, aN, fromBase58String(h)), ScriptTransfer(aL, aM, fromBase58String(h))]
383395 }
384396
385397
386398
387-@Callable(W)
388-func setWinnerHeadsUp (K,aM,aN) = if ((W.caller != this))
399+@Callable(X)
400+func setWinnerHeadsUp (L,aO,aP) = if ((X.caller != this))
389401 then throw("Admin Only")
390402 else {
391- let aO = Q(aM)
392- let aP = i(aO)
393- let aQ = S(aM)
394- let aR = S(aN)
395-[StringEntry(J(K), aM), IntegerEntry(aO, (aP + (c * 2))), IntegerEntry(m(aM), aQ), IntegerEntry(m(aN), aR)]
403+ let aQ = R(aO)
404+ let aR = i(aQ)
405+ let aS = T(aO)
406+ let aT = T(aP)
407+[StringEntry(K(L), aO), IntegerEntry(aQ, (aR + (c * 2))), IntegerEntry(m(aO), aS), IntegerEntry(m(aP), aT)]
396408 }
397409
398410
399411
400-@Callable(W)
412+@Callable(X)
401413 func withdrawRewards () = {
402- let Z = toBase58String(W.caller.bytes)
403- let aJ = addressFromStringValue(getStringValue(f))
404- let aP = i(Q(Z))
405- let aK = fraction(aP, e, 100)
406- let aS = ((aP - d) - aK)
407- if ((0 >= aP))
414+ let aa = toBase58String(X.caller.bytes)
415+ let aL = addressFromStringValue(getStringValue(f))
416+ let aR = i(R(aa))
417+ let aM = fraction(aR, e, 100)
418+ let aU = ((aR - d) - aM)
419+ if ((0 >= aR))
408420 then throw("No available rewards to withdraw")
409- else [IntegerEntry(Q(Z), 0), ScriptTransfer(W.caller, aS, unit), ScriptTransfer(aJ, aK, unit)]
421+ else [IntegerEntry(R(aa), 0), ScriptTransfer(X.caller, aU, unit), ScriptTransfer(aL, aM, unit)]
410422 }
411423
412424
413425
414-@Callable(W)
426+@Callable(X)
415427 func buyTickets () = {
416- let Y = if ((size(W.payments) == 1))
417- then W.payments[0]
428+ let Z = if ((size(X.payments) == 1))
429+ then X.payments[0]
418430 else throw("Please attach exactly one payment")
419- if (isDefined(Y.assetId))
431+ if (isDefined(Z.assetId))
420432 then throw("Tickets can only ibe purchased in Waves")
421- else if ((Y.amount != c))
433+ else if ((Z.amount != c))
422434 then throw((("The payment must be of exactly " + toString(b)) + " waves"))
423435 else {
424- let Z = toBase58String(W.caller.bytes)
425- let aT = i(m(Z))
426- $Tuple2([IntegerEntry(m(Z), (aT + 1))], 1)
436+ let aa = toBase58String(X.caller.bytes)
437+ let aV = i(m(aa))
438+ $Tuple2([IntegerEntry(m(aa), (aV + 1))], 1)
427439 }
428440 }
429441
430442
431-@Verifier(aU)
432-func aV () = sigVerify(aU.bodyBytes, aU.proofs[0], aU.senderPublicKey)
443+@Verifier(aW)
444+func aX () = sigVerify(aW.bodyBytes, aW.proofs[0], aW.senderPublicKey)
433445

github/deemru/w8io/169f3d6 
125.21 ms