tx · G5hdor2oDRP8bt23XKE2N1gLSpT8h3kKNBghcTz4hfnt

3N3dmyiBdj7pmjnQrzTTvmfzKSqndSzCMmk:  -0.01700000 Waves

2022.10.13 00:55 [2269700] smart account 3N3dmyiBdj7pmjnQrzTTvmfzKSqndSzCMmk > SELF 0.00000000 Waves

{ "type": 13, "id": "G5hdor2oDRP8bt23XKE2N1gLSpT8h3kKNBghcTz4hfnt", "fee": 1700000, "feeAssetId": null, "timestamp": 1665611766817, "version": 2, "chainId": 84, "sender": "3N3dmyiBdj7pmjnQrzTTvmfzKSqndSzCMmk", "senderPublicKey": "AR4BeE6hYADMvKxgRQs4ADN3krEqb2j8WE3WfJxzL3zE", "proofs": [ "3T6Ep6i4rJC11QSxskRp3J1yFcqFjppGiBMX6LeBNaL7VMMq3GMDBLmzoeC2oLa4YiR9k1E1qdqF6DMgkTjwgyBe" ], "script": "base64:BgJFCAISAwoBCBIAEgMKAQgSAwoBCBIDCgEIEgcKBQgIAQEIEgMKAQgSBAoCCAgSBQoDCAgBEgMKAQgSABIFCgMICAgSABIAJwAFd2F2ZXMAgMLXLwAOdGlja2V0UHJpY2VJbnQAwIQ9AAt0aWNrZXRQcmljZQUOdGlja2V0UHJpY2VJbnQABmludkZlZQCgwh4AEndpdGhkcmF3RmVlUGVyY2VudAAFABZmZWVDb2xsZWN0b3JBZGRyZXNzS2V5AhNmZWVDb2xsZWN0b3JBZGRyZXNzABl0b3VybmFtZW50QnV5SW5GZWVQZXJjZW50AAoADmRlcG9zaXRBc3NldElkAiw1dWUxZml1VjZqNlVCcjZYZjI4UW1zNnk1RnF6S3RxdmF4eGh3dTdoVFE1OAAfYWxsb3dlZFNwZWNpYWxUb3VybmFtZW50Q3JlYXRvcgIjM05BZUJXQ1pGYkJERkxZbzlHTkpOb0U1aFEzYU1zVjVLc04BDXRyeUdldEludGVnZXIBA2tleQQHJG1hdGNoMAkAmggCBQR0aGlzBQNrZXkDCQABAgUHJG1hdGNoMAIDSW50BAFiBQckbWF0Y2gwBQFiAAABEmdldFRpY2tldHNDb3VudEtleQENYWRkcmVzc1N0cmluZwkArAICBQ1hZGRyZXNzU3RyaW5nAg1fdGlja2V0c0NvdW50ASJidXlJbkFtb3VudEZvclRvdXJuYW1lbnRGb3JBY2NvdW50Agx0b3VybmFtZW50SWQHYWNjb3VudAkArAICCQCsAgIFDHRvdXJuYW1lbnRJZAIXX2J1eUluQW1vdW50Rm9yQWNjb3VudF8FB2FjY291bnQBI2J1eUluQXNzZXRJZEZvclRvdXJuYW1lbnRGb3JBY2NvdW50Agx0b3VybmFtZW50SWQHYWNjb3VudAkArAICCQCsAgIFDHRvdXJuYW1lbnRJZAIYX2J1eUluQXNzZXRJZEZvckFjY291bnRfBQdhY2NvdW50AR10aWNrZXRGb3JUb3VybmFtZW50Rm9yQWNjb3VudAIMdG91cm5hbWVudElkB2FjY291bnQJAKwCAgkArAICBQx0b3VybmFtZW50SWQCEl90aWNrZXRGb3JBY2NvdW50XwUHYWNjb3VudAEmdG91cm5hbWVudFRvdGFsQnV5SW5Db2xsZWN0ZWRBbW91bnRLZXkBDHRvdXJuYW1lbnRJZAkArAICBQx0b3VybmFtZW50SWQCJF90b3VybmFtZW50VG90YWxCdXlJbkNvbGxlY3RlZEFtb3VudAEvdG91cm5hbWVudFRvdGFsQnV5SW5Db2xsZWN0ZWRBbW91bnRNaW51c0ZlZXNLZXkBDHRvdXJuYW1lbnRJZAkArAICBQx0b3VybmFtZW50SWQCLV90b3VybmFtZW50VG90YWxCdXlJbkNvbGxlY3RlZEFtb3VudE1pbnVzRmVlcwEUdG91cm5hbWVudENyZWF0b3JLZXkBDHRvdXJuYW1lbnRJZAkArAICBQx0b3VybmFtZW50SWQCEl90b3VybmFtZW50Q3JlYXRvcgERdG91cm5hbWVudE5hbWVLZXkBDHRvdXJuYW1lbnRJZAkArAICBQx0b3VybmFtZW50SWQCD190b3VybmFtZW50TmFtZQEYdG91cm5hbWVudFByaXplQW1vdW50S2V5AQx0b3VybmFtZW50SWQJAKwCAgUMdG91cm5hbWVudElkAhZfdG91cm5hbWVudFByaXplQW1vdW50ARx0b3VybmFtZW50TWF4UGxheWVyc0NvdW50S2V5AQx0b3VybmFtZW50SWQJAKwCAgUMdG91cm5hbWVudElkAhpfdG91cm5hbWVudE1heFBsYXllcnNDb3VudAEZdG91cm5hbWVudFBsYXllcnNDb3VudEtleQEMdG91cm5hbWVudElkCQCsAgIFDHRvdXJuYW1lbnRJZAIXX3RvdXJuYW1lbnRQbGF5ZXJzQ291bnQBGXRvdXJuYW1lbnRQcml6ZUFzc2V0SWRLZXkBDHRvdXJuYW1lbnRJZAkArAICBQx0b3VybmFtZW50SWQCF190b3VybmFtZW50UHJpemVBc3NldElkARt0b3VybmFtZW50UHJpemVBc3NldE5hbWVLZXkBDHRvdXJuYW1lbnRJZAkArAICBQx0b3VybmFtZW50SWQCGV90b3VybmFtZW50UHJpemVBc3NldE5hbWUBGHRvdXJuYW1lbnRCdXlJbkFtb3VudEtleQEMdG91cm5hbWVudElkCQCsAgIFDHRvdXJuYW1lbnRJZAIWX3RvdXJuYW1lbnRCdXlJbkFtb3VudAEZdG91cm5hbWVudEJ1eUluQXNzZXRJZEtleQEMdG91cm5hbWVudElkCQCsAgIFDHRvdXJuYW1lbnRJZAIXX3RvdXJuYW1lbnRCdXlJbkFzc2V0SWQBG3RvdXJuYW1lbnRCdXlJbkFzc2V0TmFtZUtleQEMdG91cm5hbWVudElkCQCsAgIFDHRvdXJuYW1lbnRJZAIZX3RvdXJuYW1lbnRCdXlJbkFzc2V0TmFtZQEfdG91cm5hbWVudEJ1eUluQXNzZXREZWNpbWFsc0tleQEMdG91cm5hbWVudElkCQCsAgIFDHRvdXJuYW1lbnRJZAIdX3RvdXJuYW1lbnRCdXlJbkFzc2V0RGVjaW1hbHMBH3RvdXJuYW1lbnRQcml6ZUFzc2V0RGVjaW1hbHNLZXkBDHRvdXJuYW1lbnRJZAkArAICBQx0b3VybmFtZW50SWQCHV90b3VybmFtZW50UHJpemVBc3NldERlY2ltYWxzARN0b3VybmFtZW50U3RhdHVzS2V5AQx0b3VybmFtZW50SWQJAKwCAgUMdG91cm5hbWVudElkAhFfdG91cm5hbWVudFN0YXR1cwEedG91cm5hbWVudEJ1eUluRmVlQ29sbGVjdGVkS2V5AQx0b3VybmFtZW50SWQJAKwCAgUMdG91cm5hbWVudElkAhxfdG91cm5hbWVudEJ1eUluRmVlQ29sbGVjdGVkASF0b3VybmFtZW50V2lubmluZ1RyYW5zYWN0aW9uSWRLZXkBDHRvdXJuYW1lbnRJZAkArAICBQx0b3VybmFtZW50SWQCH190b3VybmFtZW50V2lubmluZ1RyYW5zYWN0aW9uSWQBDWdhbWVXaW5uZXJLZXkBBmdhbWVJZAkArAICBQZnYW1lSWQCB193aW5uZXIBGGFkZHJlc3NBdmFpbGFibGVGdW5kc0tleQEHYWRkcmVzcwkArAICBQdhZGRyZXNzAg9fYXZhaWxhYmxlRnVuZHMBGmFkZHJlc3NUb3RhbExvY2tlZEZ1bmRzS2V5AQdhZGRyZXNzCQCsAgIFB2FkZHJlc3MCEV90b3RhbExvY2tlZEZ1bmRzASFhZGRyZXNzTG9ja2VkRnVuZHNUb3RhbEhpc3RvcnlLZXkBB2FkZHJlc3MJAKwCAgUHYWRkcmVzcwIYX2xvY2tlZEZ1bmRzVG90YWxIaXN0b3J5ARxhZGRyZXNzTG9ja2VkRnVuZHNGb3JHYW1lS2V5AgdhZGRyZXNzBmdhbWVJZAkArAICCQCsAgIFB2FkZHJlc3MCDV9sb2NrZWRGdW5kc18FBmdhbWVJZAEaYWRkcmVzc0F2YWlsYWJsZVJld2FyZHNLZXkBB2FkZHJlc3MJAKwCAgUHYWRkcmVzcwIRX2F2YWlsYWJsZVJld2FyZHMBD2dldFRpY2tldHNDb3VudAENYWRkcmVzc1N0cmluZwkBDXRyeUdldEludGVnZXIBCQESZ2V0VGlja2V0c0NvdW50S2V5AQUNYWRkcmVzc1N0cmluZwENY29uc3VtZVRpY2tldAEKcGxheWVyQWRkcgQSY3VycmVudFRpY2tldENvdW50CQEPZ2V0VGlja2V0c0NvdW50AQUKcGxheWVyQWRkcgQVbmV3Q3VycmVudFRpY2tldENvdW50CQBlAgUSY3VycmVudFRpY2tldENvdW50AAEDCQBmAgAABRVuZXdDdXJyZW50VGlja2V0Q291bnQAAAUVbmV3Q3VycmVudFRpY2tldENvdW50DgFpARZzZXRGZWVDb2xsZWN0b3JBZGRyZXNzAQ1jb2xsZWN0b3JBZGRyAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIKQWRtaW4gT25seQkAzAgCCQELU3RyaW5nRW50cnkCBRZmZWVDb2xsZWN0b3JBZGRyZXNzS2V5BQ1jb2xsZWN0b3JBZGRyBQNuaWwBaQEMZGVwb3NpdEZ1bmRzAAQDcG10AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQkAkQMCCAUBaQhwYXltZW50cwAACQACAQIhUGxlYXNlIGF0dGFjaCBleGFjdGx5IG9uZSBwYXltZW50AwkBAiE9AggFA3BtdAdhc3NldElkCQDZBAEFDmRlcG9zaXRBc3NldElkCQACAQIZWW91IGNhbiBvbmx5IGRlcG9zaXQgVVNETgQNY2FsbGVyQWRkclN0cgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBBVjdXJyZW50QXZhaWxhYmxlRnVuZHMJAQ10cnlHZXRJbnRlZ2VyAQkBGGFkZHJlc3NBdmFpbGFibGVGdW5kc0tleQEFDWNhbGxlckFkZHJTdHIJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGGFkZHJlc3NBdmFpbGFibGVGdW5kc0tleQEFDWNhbGxlckFkZHJTdHIJAGQCBRVjdXJyZW50QXZhaWxhYmxlRnVuZHMIBQNwbXQGYW1vdW50BQNuaWwAAQFpARhjYW5jZWxTaWduVXBUb1RvdXJuYW1lbnQBDHRvdXJuYW1lbnRJZAQQdG91cm5hbWVudFN0YXR1cwkBEUBleHRyTmF0aXZlKDEwNTgpAQkBE3RvdXJuYW1lbnRTdGF0dXNLZXkBBQx0b3VybmFtZW50SWQDCQECIT0CBRB0b3VybmFtZW50U3RhdHVzAgxyZWdpc3RyYXRpb24JAAIBAihUb3VybmFtZW50IGlzIG5vdCBpbiByZWdpc3RyYXRpb24gcGhhc2UhBA1jYWxsZXJBZGRyU3RyCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMED3BhaWRCdXlJbkFtb3VudAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBImJ1eUluQW1vdW50Rm9yVG91cm5hbWVudEZvckFjY291bnQCBQx0b3VybmFtZW50SWQFDWNhbGxlckFkZHJTdHIEEHBhaWRCdXlJbkFzc2V0SWQJARFAZXh0ck5hdGl2ZSgxMDU4KQEJASNidXlJbkFzc2V0SWRGb3JUb3VybmFtZW50Rm9yQWNjb3VudAIFDHRvdXJuYW1lbnRJZAUNY2FsbGVyQWRkclN0cgQdYWxyZWFkeVJlZ2lzdGVyZWRQbGF5ZXJzQ291bnQJAQ10cnlHZXRJbnRlZ2VyAQkBGXRvdXJuYW1lbnRQbGF5ZXJzQ291bnRLZXkBBQx0b3VybmFtZW50SWQEGXRvdGFsQnV5SW5Db2xsZWN0ZWRBbW91bnQJAGUCCQENdHJ5R2V0SW50ZWdlcgEJASZ0b3VybmFtZW50VG90YWxCdXlJbkNvbGxlY3RlZEFtb3VudEtleQEFDHRvdXJuYW1lbnRJZAUPcGFpZEJ1eUluQW1vdW50BAlmZWVzVGFrZW4JAGsDBRl0b3RhbEJ1eUluQ29sbGVjdGVkQW1vdW50BRl0b3VybmFtZW50QnV5SW5GZWVQZXJjZW50AGQJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQ1jYWxsZXJBZGRyU3RyBQ9wYWlkQnV5SW5BbW91bnQJANkEAQUQcGFpZEJ1eUluQXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEddGlja2V0Rm9yVG91cm5hbWVudEZvckFjY291bnQCBQx0b3VybmFtZW50SWQFDWNhbGxlckFkZHJTdHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImJ1eUluQW1vdW50Rm9yVG91cm5hbWVudEZvckFjY291bnQCBQx0b3VybmFtZW50SWQFDWNhbGxlckFkZHJTdHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBI2J1eUluQXNzZXRJZEZvclRvdXJuYW1lbnRGb3JBY2NvdW50AgUMdG91cm5hbWVudElkBQ1jYWxsZXJBZGRyU3RyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEZdG91cm5hbWVudFBsYXllcnNDb3VudEtleQEFDHRvdXJuYW1lbnRJZAkAZQIFHWFscmVhZHlSZWdpc3RlcmVkUGxheWVyc0NvdW50AAEJAMwIAgkBDEludGVnZXJFbnRyeQIJASZ0b3VybmFtZW50VG90YWxCdXlJbkNvbGxlY3RlZEFtb3VudEtleQEFDHRvdXJuYW1lbnRJZAUZdG90YWxCdXlJbkNvbGxlY3RlZEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBL3RvdXJuYW1lbnRUb3RhbEJ1eUluQ29sbGVjdGVkQW1vdW50TWludXNGZWVzS2V5AQUMdG91cm5hbWVudElkCQBlAgUZdG90YWxCdXlJbkNvbGxlY3RlZEFtb3VudAUJZmVlc1Rha2VuBQNuaWwAAQFpARJzaWduVXBUb1RvdXJuYW1lbnQBDHRvdXJuYW1lbnRJZAQPbWF4UGxheWVyc0NvdW50CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQEcdG91cm5hbWVudE1heFBsYXllcnNDb3VudEtleQEFDHRvdXJuYW1lbnRJZAQdYWxyZWFkeVJlZ2lzdGVyZWRQbGF5ZXJzQ291bnQJAQ10cnlHZXRJbnRlZ2VyAQkBGXRvdXJuYW1lbnRQbGF5ZXJzQ291bnRLZXkBBQx0b3VybmFtZW50SWQEEHRvdXJuYW1lbnRTdGF0dXMJARFAZXh0ck5hdGl2ZSgxMDU4KQEJARN0b3VybmFtZW50U3RhdHVzS2V5AQUMdG91cm5hbWVudElkAwMJAQIhPQIFEHRvdXJuYW1lbnRTdGF0dXMCDHJlZ2lzdHJhdGlvbgkBAiE9AgUQdG91cm5hbWVudFN0YXR1cwIHc3RhcnRlZAcJAAIBAihUb3VybmFtZW50IGlzIG5vdCBpbiByZWdpc3RyYXRpb24gcGhhc2UhAwkAAAIFHWFscmVhZHlSZWdpc3RlcmVkUGxheWVyc0NvdW50BQ9tYXhQbGF5ZXJzQ291bnQJAAIBAjVUb3VybmFtZW50IGlzIGN1cnJlbnRseSBmdWxsLCBwbGVhc2UgdHJ5IGFnYWluIGxhdGVyIQQDcG10AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQkAkQMCCAUBaQhwYXltZW50cwAACQACAQIhUGxlYXNlIGF0dGFjaCBleGFjdGx5IG9uZSBwYXltZW50BAxidXlJbkFzc2V0aWQEByRtYXRjaDAIBQNwbXQHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgRVbml0BAFiBQckbWF0Y2gwAgADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYgUHJG1hdGNoMAkA2AQBBQFiCQACAQILTWF0Y2ggZXJyb3IEE2J1eUluUmVxdWlyZWRBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJARh0b3VybmFtZW50QnV5SW5BbW91bnRLZXkBBQx0b3VybmFtZW50SWQEFGJ1eUluUmVxdWlyZWRBc3NldElkCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQEZdG91cm5hbWVudEJ1eUluQXNzZXRJZEtleQEFDHRvdXJuYW1lbnRJZAMJAQIhPQIFE2J1eUluUmVxdWlyZWRBbW91bnQIBQNwbXQGYW1vdW50CQACAQkArAICAixBdHRhY2hlZCBwYXltZW50IGFtb3VudCBpcyBpbnZhbGlkLCBtdXN0IGJlIAkApAMBBRNidXlJblJlcXVpcmVkQW1vdW50AwkBAiE9AgUUYnV5SW5SZXF1aXJlZEFzc2V0SWQFDGJ1eUluQXNzZXRpZAkAAgEJAKwCAgIuQXR0YWNoZWQgcGF5bWVudCBhc3NldCBpZCBpcyBpbnZhbGlkLCBtdXN0IGJlIAUUYnV5SW5SZXF1aXJlZEFzc2V0SWQEDWNhbGxlckFkZHJTdHIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQZdG90YWxCdXlJbkNvbGxlY3RlZEFtb3VudAkAZAIJAQ10cnlHZXRJbnRlZ2VyAQkBJnRvdXJuYW1lbnRUb3RhbEJ1eUluQ29sbGVjdGVkQW1vdW50S2V5AQUMdG91cm5hbWVudElkCAUDcG10BmFtb3VudAQJZmVlc1Rha2VuCQBrAwUZdG90YWxCdXlJbkNvbGxlY3RlZEFtb3VudAUZdG91cm5hbWVudEJ1eUluRmVlUGVyY2VudABkCQCUCgIJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAR10aWNrZXRGb3JUb3VybmFtZW50Rm9yQWNjb3VudAIFDHRvdXJuYW1lbnRJZAUNY2FsbGVyQWRkclN0cgYJAMwIAgkBDEludGVnZXJFbnRyeQIJASJidXlJbkFtb3VudEZvclRvdXJuYW1lbnRGb3JBY2NvdW50AgUMdG91cm5hbWVudElkBQ1jYWxsZXJBZGRyU3RyCAUDcG10BmFtb3VudAkAzAgCCQELU3RyaW5nRW50cnkCCQEjYnV5SW5Bc3NldElkRm9yVG91cm5hbWVudEZvckFjY291bnQCBQx0b3VybmFtZW50SWQFDWNhbGxlckFkZHJTdHIFDGJ1eUluQXNzZXRpZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGXRvdXJuYW1lbnRQbGF5ZXJzQ291bnRLZXkBBQx0b3VybmFtZW50SWQJAGQCBR1hbHJlYWR5UmVnaXN0ZXJlZFBsYXllcnNDb3VudAABCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEmdG91cm5hbWVudFRvdGFsQnV5SW5Db2xsZWN0ZWRBbW91bnRLZXkBBQx0b3VybmFtZW50SWQFGXRvdGFsQnV5SW5Db2xsZWN0ZWRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAS90b3VybmFtZW50VG90YWxCdXlJbkNvbGxlY3RlZEFtb3VudE1pbnVzRmVlc0tleQEFDHRvdXJuYW1lbnRJZAkAZQIFGXRvdGFsQnV5SW5Db2xsZWN0ZWRBbW91bnQFCWZlZXNUYWtlbgUDbmlsAAEBaQEQY2FuY2VsVG91cm5hbWVudAEMdG91cm5hbWVudElkBA1jYWxsZXJBZGRyU3RyCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEEXRvdXJuYW1lbnRDcmVhdG9yCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEUdG91cm5hbWVudENyZWF0b3JLZXkBBQx0b3VybmFtZW50SWQEDGNyZWF0b3JDaGVjawMJAAACBRF0b3VybmFtZW50Q3JlYXRvcgUNY2FsbGVyQWRkclN0cgYDCQAAAggFAWkGY2FsbGVyBQR0aGlzBgkAAgECJk9ubHkgdG91cm5hbWVudCBjcmVhdG9yIGNhbiBjYW5jZWwgaXQhAwkAAAIFDGNyZWF0b3JDaGVjawUMY3JlYXRvckNoZWNrBBB0b3VybmFtZW50U3RhdHVzCQERQGV4dHJOYXRpdmUoMTA1OCkBCQETdG91cm5hbWVudFN0YXR1c0tleQEFDHRvdXJuYW1lbnRJZAMDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAQIhPQIFEHRvdXJuYW1lbnRTdGF0dXMCDHJlZ2lzdHJhdGlvbgcJAAIBAihUb3VybmFtZW50IGlzIG5vdCBpbiByZWdpc3RyYXRpb24gcGhhc2UhBB1hbHJlYWR5UmVnaXN0ZXJlZFBsYXllcnNDb3VudAkBDXRyeUdldEludGVnZXIBCQEZdG91cm5hbWVudFBsYXllcnNDb3VudEtleQEFDHRvdXJuYW1lbnRJZAMJAGYCBR1hbHJlYWR5UmVnaXN0ZXJlZFBsYXllcnNDb3VudAAACQACAQJFQ2Fubm90IGNhbmNlbCBhIHRvdXJuYW1lbnQgd2hlbiBwbGF5ZXJzIGFyZSBhbHJlYWR5IHJlZ2lzdGVyZWQgdG8gaXQhBBV0b3VybmFtZW50UHJpemVBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDU1KQEJARh0b3VybmFtZW50UHJpemVBbW91bnRLZXkBBQx0b3VybmFtZW50SWQEFnRvdXJuYW1lbnRQcml6ZUFzc2V0SWQJARFAZXh0ck5hdGl2ZSgxMDU4KQEJARl0b3VybmFtZW50UHJpemVBc3NldElkS2V5AQUMdG91cm5hbWVudElkCQCUCgIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGHRvdXJuYW1lbnRQcml6ZUFtb3VudEtleQEFDHRvdXJuYW1lbnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEZdG91cm5hbWVudFBsYXllcnNDb3VudEtleQEFDHRvdXJuYW1lbnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEcdG91cm5hbWVudE1heFBsYXllcnNDb3VudEtleQEFDHRvdXJuYW1lbnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEZdG91cm5hbWVudFByaXplQXNzZXRJZEtleQEFDHRvdXJuYW1lbnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEbdG91cm5hbWVudFByaXplQXNzZXROYW1lS2V5AQUMdG91cm5hbWVudElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAR90b3VybmFtZW50UHJpemVBc3NldERlY2ltYWxzS2V5AQUMdG91cm5hbWVudElkCQDMCAIJAQtEZWxldGVFbnRyeQEJARN0b3VybmFtZW50U3RhdHVzS2V5AQUMdG91cm5hbWVudElkCQDMCAIJAQtEZWxldGVFbnRyeQEJARh0b3VybmFtZW50QnV5SW5BbW91bnRLZXkBBQx0b3VybmFtZW50SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBG3RvdXJuYW1lbnRCdXlJbkFzc2V0TmFtZUtleQEFDHRvdXJuYW1lbnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEfdG91cm5hbWVudEJ1eUluQXNzZXREZWNpbWFsc0tleQEFDHRvdXJuYW1lbnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEZdG91cm5hbWVudEJ1eUluQXNzZXRJZEtleQEFDHRvdXJuYW1lbnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQERdG91cm5hbWVudE5hbWVLZXkBBQx0b3VybmFtZW50SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBFHRvdXJuYW1lbnRDcmVhdG9yS2V5AQUMdG91cm5hbWVudElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFEXRvdXJuYW1lbnRDcmVhdG9yBRV0b3VybmFtZW50UHJpemVBbW91bnQJANkEAQUWdG91cm5hbWVudFByaXplQXNzZXRJZAUDbmlsAAEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEQY3JlYXRlVG91cm5hbWVudAUMdG91cm5hbWVudElkBG5hbWUMcGxheWVyc0NvdW50C2J1eUluQW1vdW50DGJ1eUluQXNzZXRJZAQDcG10AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQkAkQMCCAUBaQhwYXltZW50cwAABA1jYWxsZXJBZGRyU3RyCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMDCQAAAgUNY2FsbGVyQWRkclN0cgUfYWxsb3dlZFNwZWNpYWxUb3VybmFtZW50Q3JlYXRvcgkBD0F0dGFjaGVkUGF5bWVudAIFBHVuaXQAAAkAAgECIVBsZWFzZSBhdHRhY2ggZXhhY3RseSBvbmUgcGF5bWVudAQRdG91cm5hbWVudENyZWF0b3IEByRtYXRjaDAJAKIIAQkBFHRvdXJuYW1lbnRDcmVhdG9yS2V5AQUMdG91cm5hbWVudElkAwkAAQIFByRtYXRjaDACBlN0cmluZwQHY3JlYXRvcgUHJG1hdGNoMAkAAgEJAKwCAgInVG91cm5hbWVudCBhbHJlYWR5IGV4aXN0cyB3aXRoIHRoaXMgaWQgBQx0b3VybmFtZW50SWQFBHVuaXQDCQAAAgURdG91cm5hbWVudENyZWF0b3IFEXRvdXJuYW1lbnRDcmVhdG9yBAxwcml6ZUFzc2V0SWQEByRtYXRjaDAIBQNwbXQHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgRVbml0BAFiBQckbWF0Y2gwAgADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYgUHJG1hdGNoMAkA2AQBBQFiCQACAQILTWF0Y2ggZXJyb3IEDGFzc2V0RGV0YWlscwQHJG1hdGNoMAgFA3BtdAdhc3NldElkAwkAAQIFByRtYXRjaDACBFVuaXQEAWIFByRtYXRjaDAJAMwIAgIFV2F2ZXMJAMwIAgAIBQNuaWwDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYgUHJG1hdGNoMAQHJG1hdGNoMQkA7AcBBQFiAwkAAQIFByRtYXRjaDECBUFzc2V0BAVhc3NldAUHJG1hdGNoMQkAzAgCCAUFYXNzZXQEbmFtZQkAzAgCCAUFYXNzZXQIZGVjaW1hbHMFA25pbAkAAgECEENhbid0IGZpbmQgYXNzZXQJAAIBAgtNYXRjaCBlcnJvcgQKYnV5SW5Bc3NldAQHJG1hdGNoMAkA7AcBCQDZBAEFDGJ1eUluQXNzZXRJZAMJAAECBQckbWF0Y2gwAgVBc3NldAQFYXNzZXQFByRtYXRjaDAJAMwIAggFBWFzc2V0BG5hbWUJAMwIAggFBWFzc2V0CGRlY2ltYWxzBQNuaWwJAMwIAgIACQDMCAIAAAUDbmlsBA1jYWxsZXJBZGRyU3RyCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGHRvdXJuYW1lbnRQcml6ZUFtb3VudEtleQEFDHRvdXJuYW1lbnRJZAgFA3BtdAZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJARl0b3VybmFtZW50UGxheWVyc0NvdW50S2V5AQUMdG91cm5hbWVudElkAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJARx0b3VybmFtZW50TWF4UGxheWVyc0NvdW50S2V5AQUMdG91cm5hbWVudElkBQxwbGF5ZXJzQ291bnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBGXRvdXJuYW1lbnRQcml6ZUFzc2V0SWRLZXkBBQx0b3VybmFtZW50SWQFDHByaXplQXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQEbdG91cm5hbWVudFByaXplQXNzZXROYW1lS2V5AQUMdG91cm5hbWVudElkCgABQAkAkQMCBQxhc3NldERldGFpbHMAAAMJAAECBQFAAgZTdHJpbmcFAUAJAAIBCQCsAgIJAAMBBQFAAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcJAMwIAgkBDEludGVnZXJFbnRyeQIJAR90b3VybmFtZW50UHJpemVBc3NldERlY2ltYWxzS2V5AQUMdG91cm5hbWVudElkCgABQAkAkQMCBQxhc3NldERldGFpbHMAAQMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBE3RvdXJuYW1lbnRTdGF0dXNLZXkBBQx0b3VybmFtZW50SWQCDHJlZ2lzdHJhdGlvbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGHRvdXJuYW1lbnRCdXlJbkFtb3VudEtleQEFDHRvdXJuYW1lbnRJZAULYnV5SW5BbW91bnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBG3RvdXJuYW1lbnRCdXlJbkFzc2V0TmFtZUtleQEFDHRvdXJuYW1lbnRJZAoAAUAJAJEDAgUKYnV5SW5Bc3NldAAAAwkAAQIFAUACBlN0cmluZwUBQAkAAgEJAKwCAgkAAwEFAUACGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBH3RvdXJuYW1lbnRCdXlJbkFzc2V0RGVjaW1hbHNLZXkBBQx0b3VybmFtZW50SWQKAAFACQCRAwIFCmJ1eUluQXNzZXQAAQMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBGXRvdXJuYW1lbnRCdXlJbkFzc2V0SWRLZXkBBQx0b3VybmFtZW50SWQFDGJ1eUluQXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQERdG91cm5hbWVudE5hbWVLZXkBBQx0b3VybmFtZW50SWQFBG5hbWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFHRvdXJuYW1lbnRDcmVhdG9yS2V5AQUMdG91cm5hbWVudElkBQ1jYWxsZXJBZGRyU3RyBQNuaWwAAQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ9zdGFydFRvdXJuYW1lbnQBDHRvdXJuYW1lbnRJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECCkFkbWluIE9ubHkJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQETdG91cm5hbWVudFN0YXR1c0tleQEFDHRvdXJuYW1lbnRJZAIHc3RhcnRlZAUDbmlsAAEBaQEQZmluaXNoVG91cm5hbWVudAIMdG91cm5hbWVudElkHXdpbm5pbmdUcmFuc2ZlcnRUcmFuc2FjdGlvbklkAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIKQWRtaW4gT25seQQRdG91cm5hbWVudENyZWF0b3IJARFAZXh0ck5hdGl2ZSgxMDU4KQEJARR0b3VybmFtZW50Q3JlYXRvcktleQEFDHRvdXJuYW1lbnRJZAQadG91cm5hbWVudFRvdGFsQnV5SW5BbW91bnQJAQ10cnlHZXRJbnRlZ2VyAQkBJnRvdXJuYW1lbnRUb3RhbEJ1eUluQ29sbGVjdGVkQW1vdW50S2V5AQUMdG91cm5hbWVudElkBBV0b3VybmFtZW50QnV5SW5BbW91bnQJARFAZXh0ck5hdGl2ZSgxMDU1KQEJARh0b3VybmFtZW50QnV5SW5BbW91bnRLZXkBBQx0b3VybmFtZW50SWQEFnRvdXJuYW1lbnRCdXlJbkFzc2V0SWQEByRtYXRjaDAJAKIIAQkBGXRvdXJuYW1lbnRCdXlJbkFzc2V0SWRLZXkBBQx0b3VybmFtZW50SWQDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAJpZAUHJG1hdGNoMAMJAAACBQJpZAIABQR1bml0CQDZBAEFAmlkBQR1bml0BBJ0b3VybmFtZW50QnV5SW5GZWUJAGsDBRp0b3VybmFtZW50VG90YWxCdXlJbkFtb3VudAUZdG91cm5hbWVudEJ1eUluRmVlUGVyY2VudABkBBV0b3VybmFtZW50UHJpemVBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDU1KQEJARh0b3VybmFtZW50UHJpemVBbW91bnRLZXkBBQx0b3VybmFtZW50SWQDCQBmAgUVdG91cm5hbWVudFByaXplQW1vdW50AAAJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQEhdG91cm5hbWVudFdpbm5pbmdUcmFuc2FjdGlvbklkS2V5AQUMdG91cm5hbWVudElkBR13aW5uaW5nVHJhbnNmZXJ0VHJhbnNhY3Rpb25JZAkAzAgCCQELU3RyaW5nRW50cnkCCQETdG91cm5hbWVudFN0YXR1c0tleQEFDHRvdXJuYW1lbnRJZAIIZmluaXNoZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAR50b3VybmFtZW50QnV5SW5GZWVDb2xsZWN0ZWRLZXkBBQx0b3VybmFtZW50SWQFEnRvdXJuYW1lbnRCdXlJbkZlZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBRF0b3VybmFtZW50Q3JlYXRvcgkAZQIFGnRvdXJuYW1lbnRUb3RhbEJ1eUluQW1vdW50BRJ0b3VybmFtZW50QnV5SW5GZWUFFnRvdXJuYW1lbnRCdXlJbkFzc2V0SWQFA25pbAABBApzZXJ2aWNlRmVlCQBrAwUSdG91cm5hbWVudEJ1eUluRmVlABQAZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJASF0b3VybmFtZW50V2lubmluZ1RyYW5zYWN0aW9uSWRLZXkBBQx0b3VybmFtZW50SWQFHXdpbm5pbmdUcmFuc2ZlcnRUcmFuc2FjdGlvbklkCQDMCAIJAQtTdHJpbmdFbnRyeQIJARN0b3VybmFtZW50U3RhdHVzS2V5AQUMdG91cm5hbWVudElkAghmaW5pc2hlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHnRvdXJuYW1lbnRCdXlJbkZlZUNvbGxlY3RlZEtleQEFDHRvdXJuYW1lbnRJZAUSdG91cm5hbWVudEJ1eUluRmVlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFEXRvdXJuYW1lbnRDcmVhdG9yCQBlAgUSdG91cm5hbWVudEJ1eUluRmVlBQpzZXJ2aWNlRmVlBRZ0b3VybmFtZW50QnV5SW5Bc3NldElkBQNuaWwAAQFpAQ5wbGF5ZXJFeGl0R2FtZQMGZ2FtZUlkCnBsYXllckFkZHIPZXhpdFN0YWNrQW1vdW50AwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIKQWRtaW4gT25seQQXY3VycmVudFRvdGFsTG9ja2VkRnVuZHMJAQ10cnlHZXRJbnRlZ2VyAQkBGmFkZHJlc3NUb3RhbExvY2tlZEZ1bmRzS2V5AQUKcGxheWVyQWRkcgQgY3VycmVudEdhbWVMb2NrZWRBbW91bnRGb3JQbGF5ZXIJAQ10cnlHZXRJbnRlZ2VyAQkBHGFkZHJlc3NMb2NrZWRGdW5kc0ZvckdhbWVLZXkCBQpwbGF5ZXJBZGRyBQZnYW1lSWQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGmFkZHJlc3NUb3RhbExvY2tlZEZ1bmRzS2V5AQUKcGxheWVyQWRkcgkAZQIFF2N1cnJlbnRUb3RhbExvY2tlZEZ1bmRzBSBjdXJyZW50R2FtZUxvY2tlZEFtb3VudEZvclBsYXllcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHGFkZHJlc3NMb2NrZWRGdW5kc0ZvckdhbWVLZXkCBQpwbGF5ZXJBZGRyBQZnYW1lSWQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQpwbGF5ZXJBZGRyBQ9leGl0U3RhY2tBbW91bnQJANkEAQUOZGVwb3NpdEFzc2V0SWQFA25pbAABAWkBEGxvY2tGdW5kc0ZvckdhbWUBBmdhbWVJZAQDcG10AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQkAkQMCCAUBaQhwYXltZW50cwAACQACAQIhUGxlYXNlIGF0dGFjaCBleGFjdGx5IG9uZSBwYXltZW50AwkBAiE9AggFA3BtdAdhc3NldElkCQDZBAEFDmRlcG9zaXRBc3NldElkCQACAQIZWW91IGNhbiBvbmx5IGRlcG9zaXQgVVNETgQNY2FsbGVyQWRkclN0cgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBBdjdXJyZW50VG90YWxMb2NrZWRGdW5kcwkBDXRyeUdldEludGVnZXIBCQEaYWRkcmVzc1RvdGFsTG9ja2VkRnVuZHNLZXkBBQ1jYWxsZXJBZGRyU3RyBB5jdXJyZW50TG9ja2VkRnVuZHNUb3RhbEhpc3RvcnkJAQ10cnlHZXRJbnRlZ2VyAQkBIWFkZHJlc3NMb2NrZWRGdW5kc1RvdGFsSGlzdG9yeUtleQEFDWNhbGxlckFkZHJTdHIJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGmFkZHJlc3NUb3RhbExvY2tlZEZ1bmRzS2V5AQUNY2FsbGVyQWRkclN0cgkAZAIFF2N1cnJlbnRUb3RhbExvY2tlZEZ1bmRzCAUDcG10BmFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBIWFkZHJlc3NMb2NrZWRGdW5kc1RvdGFsSGlzdG9yeUtleQEFDWNhbGxlckFkZHJTdHIJAGQCBR5jdXJyZW50TG9ja2VkRnVuZHNUb3RhbEhpc3RvcnkIBQNwbXQGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEcYWRkcmVzc0xvY2tlZEZ1bmRzRm9yR2FtZUtleQIFDWNhbGxlckFkZHJTdHIFBmdhbWVJZAgFA3BtdAZhbW91bnQFA25pbAABAWkBDXdpdGhkcmF3RnVuZHMABA1jYWxsZXJBZGRyU3RyCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEEGZlZUNvbGxlY3RvckFkZHIJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDU4KQEFFmZlZUNvbGxlY3RvckFkZHJlc3NLZXkEFWN1cnJlbnRBdmFpbGFibGVGdW5kcwkBDXRyeUdldEludGVnZXIBCQEYYWRkcmVzc0F2YWlsYWJsZUZ1bmRzS2V5AQUNY2FsbGVyQWRkclN0cgQLd2l0aGRyYXdGZWUJAGsDBRVjdXJyZW50QXZhaWxhYmxlRnVuZHMFEndpdGhkcmF3RmVlUGVyY2VudABkBBRhY3R1YWxBdmFpbGFibGVGdW5kcwkAZQIFFWN1cnJlbnRBdmFpbGFibGVGdW5kcwULd2l0aGRyYXdGZWUDCQBnAgAABRRhY3R1YWxBdmFpbGFibGVGdW5kcwkAAgECHk5vIGF2YWlsYWJsZSBmdW5kcyB0byB3aXRoZHJhdwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGGFkZHJlc3NBdmFpbGFibGVGdW5kc0tleQEFDWNhbGxlckFkZHJTdHIAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFFGFjdHVhbEF2YWlsYWJsZUZ1bmRzCQDZBAEFDmRlcG9zaXRBc3NldElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFEGZlZUNvbGxlY3RvckFkZHIFC3dpdGhkcmF3RmVlCQDZBAEFDmRlcG9zaXRBc3NldElkBQNuaWwBaQEQc2V0V2lubmVySGVhZHNVcAMGZ2FtZUlkDXdpbm5lckFkZHJTdHIPb3RoZXJQbGF5ZXJBZGRyAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIKQWRtaW4gT25seQQTYXZhaWxhYmxlUmV3YXJkc0tleQkBGmFkZHJlc3NBdmFpbGFibGVSZXdhcmRzS2V5AQUNd2lubmVyQWRkclN0cgQXY3VycmVudEF2YWlsYWJsZVJld2FyZHMJAQ10cnlHZXRJbnRlZ2VyAQUTYXZhaWxhYmxlUmV3YXJkc0tleQQUbmV3VGlja2V0Q291bnRXaW5uZXIJAQ1jb25zdW1lVGlja2V0AQUNd2lubmVyQWRkclN0cgQZbmV3VGlja2V0Q291bnRPdGhlclBsYXllcgkBDWNvbnN1bWVUaWNrZXQBBQ9vdGhlclBsYXllckFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWdhbWVXaW5uZXJLZXkBBQZnYW1lSWQFDXdpbm5lckFkZHJTdHIJAMwIAgkBDEludGVnZXJFbnRyeQIFE2F2YWlsYWJsZVJld2FyZHNLZXkJAGQCBRdjdXJyZW50QXZhaWxhYmxlUmV3YXJkcwkAaAIFC3RpY2tldFByaWNlAAIJAMwIAgkBDEludGVnZXJFbnRyeQIJARJnZXRUaWNrZXRzQ291bnRLZXkBBQ13aW5uZXJBZGRyU3RyBRRuZXdUaWNrZXRDb3VudFdpbm5lcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmdldFRpY2tldHNDb3VudEtleQEFD290aGVyUGxheWVyQWRkcgUZbmV3VGlja2V0Q291bnRPdGhlclBsYXllcgUDbmlsAWkBD3dpdGhkcmF3UmV3YXJkcwAEDWNhbGxlckFkZHJTdHIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQQZmVlQ29sbGVjdG9yQWRkcgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTgpAQUWZmVlQ29sbGVjdG9yQWRkcmVzc0tleQQXY3VycmVudEF2YWlsYWJsZVJld2FyZHMJAQ10cnlHZXRJbnRlZ2VyAQkBGmFkZHJlc3NBdmFpbGFibGVSZXdhcmRzS2V5AQUNY2FsbGVyQWRkclN0cgQLd2l0aGRyYXdGZWUJAGsDBRdjdXJyZW50QXZhaWxhYmxlUmV3YXJkcwUSd2l0aGRyYXdGZWVQZXJjZW50AGQEFmFjdHVhbEF2YWlsYWJsZVJld2FyZHMJAGUCCQBlAgUXY3VycmVudEF2YWlsYWJsZVJld2FyZHMFBmludkZlZQULd2l0aGRyYXdGZWUDCQBnAgAABRdjdXJyZW50QXZhaWxhYmxlUmV3YXJkcwkAAgECIE5vIGF2YWlsYWJsZSByZXdhcmRzIHRvIHdpdGhkcmF3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEaYWRkcmVzc0F2YWlsYWJsZVJld2FyZHNLZXkBBQ1jYWxsZXJBZGRyU3RyAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBRZhY3R1YWxBdmFpbGFibGVSZXdhcmRzBQR1bml0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFEGZlZUNvbGxlY3RvckFkZHIFC3dpdGhkcmF3RmVlBQR1bml0BQNuaWwBaQEKYnV5VGlja2V0cwAEA3BtdAMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAEJAJEDAggFAWkIcGF5bWVudHMAAAkAAgECIVBsZWFzZSBhdHRhY2ggZXhhY3RseSBvbmUgcGF5bWVudAMJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQJAAIBAidUaWNrZXRzIGNhbiBvbmx5IGliZSBwdXJjaGFzZWQgaW4gV2F2ZXMDCQECIT0CCAUDcG10BmFtb3VudAULdGlja2V0UHJpY2UJAAIBCQCsAgIJAKwCAgIfVGhlIHBheW1lbnQgbXVzdCBiZSBvZiBleGFjdGx5IAkApAMBBQ50aWNrZXRQcmljZUludAIGIHdhdmVzBA1jYWxsZXJBZGRyU3RyCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEE2N1cnJlbnRUaWNrZXRzQ291bnQJAQ10cnlHZXRJbnRlZ2VyAQkBEmdldFRpY2tldHNDb3VudEtleQEFDWNhbGxlckFkZHJTdHIJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmdldFRpY2tldHNDb3VudEtleQEFDWNhbGxlckFkZHJTdHIJAGQCBRNjdXJyZW50VGlja2V0c0NvdW50AAEFA25pbAABAQJ0eAEGdmVyaWZ5AAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tledrstLg=", "height": 2269700, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EetVfLRTc6AprVomR3jMvM3bX7o3vitiphjCR6xzEt81 Next: mqaXQwJjaKyyzQCzr264a4H3HpWDgULRGVkPpirXzhT Diff:
OldNewDifferences
1717
1818 let h = "5ue1fiuV6j6UBr6Xf28Qms6y5FqzKtqvaxxhwu7hTQ58"
1919
20-func i (j) = {
21- let k = getInteger(this, j)
22- if ($isInstanceOf(k, "Int"))
20+let i = "3NAeBWCZFbBDFLYo9GNJNoE5hQ3aMsV5KsN"
21+
22+func j (k) = {
23+ let l = getInteger(this, k)
24+ if ($isInstanceOf(l, "Int"))
2325 then {
24- let l = k
25- l
26+ let m = l
27+ m
2628 }
2729 else 0
2830 }
2931
3032
31-func m (n) = (n + "_ticketsCount")
33+func n (o) = (o + "_ticketsCount")
3234
3335
34-func o (p,q) = ((p + "_buyInAmountForAccount_") + q)
36+func p (q,r) = ((q + "_buyInAmountForAccount_") + r)
3537
3638
37-func r (p,q) = ((p + "_buyInAssetIdForAccount_") + q)
39+func s (q,r) = ((q + "_buyInAssetIdForAccount_") + r)
3840
3941
40-func s (p,q) = ((p + "_ticketForAccount_") + q)
42+func t (q,r) = ((q + "_ticketForAccount_") + r)
4143
4244
43-func t (p) = (p + "_tournamentTotalBuyInCollectedAmount")
45+func u (q) = (q + "_tournamentTotalBuyInCollectedAmount")
4446
4547
46-func u (p) = (p + "_tournamentTotalBuyInCollectedAmountMinusFees")
48+func v (q) = (q + "_tournamentTotalBuyInCollectedAmountMinusFees")
4749
4850
49-func v (p) = (p + "_tournamentCreator")
51+func w (q) = (q + "_tournamentCreator")
5052
5153
52-func w (p) = (p + "_tournamentName")
54+func x (q) = (q + "_tournamentName")
5355
5456
55-func x (p) = (p + "_tournamentPrizeAmount")
57+func y (q) = (q + "_tournamentPrizeAmount")
5658
5759
58-func y (p) = (p + "_tournamentMaxPlayersCount")
60+func z (q) = (q + "_tournamentMaxPlayersCount")
5961
6062
61-func z (p) = (p + "_tournamentPlayersCount")
63+func A (q) = (q + "_tournamentPlayersCount")
6264
6365
64-func A (p) = (p + "_tournamentPrizeAssetId")
66+func B (q) = (q + "_tournamentPrizeAssetId")
6567
6668
67-func B (p) = (p + "_tournamentPrizeAssetName")
69+func C (q) = (q + "_tournamentPrizeAssetName")
6870
6971
70-func C (p) = (p + "_tournamentBuyInAmount")
72+func D (q) = (q + "_tournamentBuyInAmount")
7173
7274
73-func D (p) = (p + "_tournamentBuyInAssetId")
75+func E (q) = (q + "_tournamentBuyInAssetId")
7476
7577
76-func E (p) = (p + "_tournamentBuyInAssetName")
78+func F (q) = (q + "_tournamentBuyInAssetName")
7779
7880
79-func F (p) = (p + "_tournamentBuyInAssetDecimals")
81+func G (q) = (q + "_tournamentBuyInAssetDecimals")
8082
8183
82-func G (p) = (p + "_tournamentPrizeAssetDecimals")
84+func H (q) = (q + "_tournamentPrizeAssetDecimals")
8385
8486
85-func H (p) = (p + "_tournamentStatus")
87+func I (q) = (q + "_tournamentStatus")
8688
8789
88-func I (p) = (p + "_tournamentBuyInFeeCollected")
90+func J (q) = (q + "_tournamentBuyInFeeCollected")
8991
9092
91-func J (p) = (p + "_tournamentWinningTransactionId")
93+func K (q) = (q + "_tournamentWinningTransactionId")
9294
9395
94-func K (L) = (L + "_winner")
96+func L (M) = (M + "_winner")
9597
9698
97-func M (N) = (N + "_availableFunds")
99+func N (O) = (O + "_availableFunds")
98100
99101
100-func O (N) = (N + "_totalLockedFunds")
102+func P (O) = (O + "_totalLockedFunds")
101103
102104
103-func P (N) = (N + "_lockedFundsTotalHistory")
105+func Q (O) = (O + "_lockedFundsTotalHistory")
104106
105107
106-func Q (N,L) = ((N + "_lockedFunds_") + L)
108+func R (O,M) = ((O + "_lockedFunds_") + M)
107109
108110
109-func R (N) = (N + "_availableRewards")
111+func S (O) = (O + "_availableRewards")
110112
111113
112-func S (n) = i(m(n))
114+func T (o) = j(n(o))
113115
114116
115-func T (U) = {
116- let V = S(U)
117- let W = (V - 1)
118- if ((0 > W))
117+func U (V) = {
118+ let W = T(V)
119+ let X = (W - 1)
120+ if ((0 > X))
119121 then 0
120- else W
122+ else X
121123 }
122124
123125
124-@Callable(X)
125-func setFeeCollectorAddress (Y) = if ((X.caller != this))
126+@Callable(Y)
127+func setFeeCollectorAddress (Z) = if ((Y.caller != this))
126128 then throw("Admin Only")
127- else [StringEntry(f, Y)]
129+ else [StringEntry(f, Z)]
128130
129131
130132
131-@Callable(X)
133+@Callable(Y)
132134 func depositFunds () = {
133- let Z = if ((size(X.payments) == 1))
134- then X.payments[0]
135+ let aa = if ((size(Y.payments) == 1))
136+ then Y.payments[0]
135137 else throw("Please attach exactly one payment")
136- if ((Z.assetId != fromBase58String(h)))
138+ if ((aa.assetId != fromBase58String(h)))
137139 then throw("You can only deposit USDN")
138140 else {
139- let aa = toBase58String(X.caller.bytes)
140- let ab = i(M(aa))
141- $Tuple2([IntegerEntry(M(aa), (ab + Z.amount))], 1)
141+ let ab = toBase58String(Y.caller.bytes)
142+ let ac = j(N(ab))
143+ $Tuple2([IntegerEntry(N(ab), (ac + aa.amount))], 1)
142144 }
143145 }
144146
145147
146148
147-@Callable(X)
148-func cancelSignUpToTournament (p) = {
149- let ac = getStringValue(H(p))
150- if ((ac != "registration"))
149+@Callable(Y)
150+func cancelSignUpToTournament (q) = {
151+ let ad = getStringValue(I(q))
152+ if ((ad != "registration"))
151153 then throw("Tournament is not in registration phase!")
152154 else {
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)
155+ let ab = toBase58String(Y.caller.bytes)
156+ let ae = getIntegerValue(p(q, ab))
157+ let af = getStringValue(s(q, ab))
158+ let ag = j(A(q))
159+ let ah = (j(u(q)) - ae)
160+ let ai = fraction(ah, g, 100)
161+ $Tuple2([ScriptTransfer(addressFromStringValue(ab), ae, fromBase58String(af)), DeleteEntry(t(q, ab)), DeleteEntry(p(q, ab)), DeleteEntry(s(q, ab)), IntegerEntry(A(q), (ag - 1)), IntegerEntry(u(q), ah), IntegerEntry(v(q), (ah - ai))], 1)
160162 }
161163 }
162164
163165
164166
165-@Callable(X)
166-func signUpToTournament (p) = {
167- let ai = getIntegerValue(this, y(p))
168- let af = i(z(p))
169- let ac = getStringValue(H(p))
170- if (if ((ac != "registration"))
171- then (ac != "started")
167+@Callable(Y)
168+func signUpToTournament (q) = {
169+ let aj = getIntegerValue(this, z(q))
170+ let ag = j(A(q))
171+ let ad = getStringValue(I(q))
172+ if (if ((ad != "registration"))
173+ then (ad != "started")
172174 else false)
173175 then throw("Tournament is not in registration phase!")
174- else if ((af == ai))
176+ else if ((ag == aj))
175177 then throw("Tournament is currently full, please try again later!")
176178 else {
177- let Z = if ((size(X.payments) == 1))
178- then X.payments[0]
179+ let aa = if ((size(Y.payments) == 1))
180+ then Y.payments[0]
179181 else throw("Please attach exactly one payment")
180- let aj = {
181- let k = Z.assetId
182- if ($isInstanceOf(k, "Unit"))
182+ let ak = {
183+ let l = aa.assetId
184+ if ($isInstanceOf(l, "Unit"))
183185 then {
184- let l = k
186+ let m = l
185187 ""
186188 }
187- else if ($isInstanceOf(k, "ByteVector"))
189+ else if ($isInstanceOf(l, "ByteVector"))
188190 then {
189- let l = k
190- toBase58String(l)
191+ let m = l
192+ toBase58String(m)
191193 }
192194 else throw("Match error")
193195 }
194- let ak = getIntegerValue(this, C(p))
195- let al = getStringValue(this, D(p))
196- if ((ak != Z.amount))
197- then throw(("Attached payment amount is invalid, must be " + toString(ak)))
198- else if ((al != aj))
199- then throw(("Attached payment asset id is invalid, must be " + al))
196+ let al = getIntegerValue(this, D(q))
197+ let am = getStringValue(this, E(q))
198+ if ((al != aa.amount))
199+ then throw(("Attached payment amount is invalid, must be " + toString(al)))
200+ else if ((am != ak))
201+ then throw(("Attached payment asset id is invalid, must be " + am))
200202 else {
201- let aa = toBase58String(X.caller.bytes)
202- let ag = (i(t(p)) + Z.amount)
203- let ah = fraction(ag, g, 100)
204- $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)
203+ let ab = toBase58String(Y.caller.bytes)
204+ let ah = (j(u(q)) + aa.amount)
205+ let ai = fraction(ah, g, 100)
206+ $Tuple2([BooleanEntry(t(q, ab), true), IntegerEntry(p(q, ab), aa.amount), StringEntry(s(q, ab), ak), IntegerEntry(A(q), (ag + 1)), IntegerEntry(u(q), ah), IntegerEntry(v(q), (ah - ai))], 1)
205207 }
206208 }
207209 }
208210
209211
210212
211-@Callable(X)
212-func cancelTournament (p) = {
213- let aa = toBase58String(X.caller.bytes)
214- let am = getStringValue(v(p))
215- let an = if ((am == aa))
213+@Callable(Y)
214+func cancelTournament (q) = {
215+ let ab = toBase58String(Y.caller.bytes)
216+ let an = getStringValue(w(q))
217+ let ao = if ((an == ab))
216218 then true
217- else if ((X.caller == this))
219+ else if ((Y.caller == this))
218220 then true
219221 else throw("Only tournament creator can cancel it!")
220- if ((an == an))
222+ if ((ao == ao))
221223 then {
222- let ac = getStringValue(H(p))
223- if (if ((X.caller != this))
224- then (ac != "registration")
224+ let ad = getStringValue(I(q))
225+ if (if ((Y.caller != this))
226+ then (ad != "registration")
225227 else false)
226228 then throw("Tournament is not in registration phase!")
227229 else {
228- let af = i(z(p))
229- if ((af > 0))
230+ let ag = j(A(q))
231+ if ((ag > 0))
230232 then throw("Cannot cancel a tournament when players are already registered to it!")
231233 else {
232- let ao = getIntegerValue(x(p))
233- let ap = getStringValue(A(p))
234- $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)
234+ let ap = getIntegerValue(y(q))
235+ let aq = getStringValue(B(q))
236+ $Tuple2([DeleteEntry(y(q)), DeleteEntry(A(q)), DeleteEntry(z(q)), DeleteEntry(B(q)), DeleteEntry(C(q)), DeleteEntry(H(q)), DeleteEntry(I(q)), DeleteEntry(D(q)), DeleteEntry(F(q)), DeleteEntry(G(q)), DeleteEntry(E(q)), DeleteEntry(x(q)), DeleteEntry(w(q)), ScriptTransfer(addressFromStringValue(an), ap, fromBase58String(aq))], 1)
235237 }
236238 }
237239 }
240242
241243
242244
243-@Callable(X)
244-func createTournament (p,aq,ar,as,at) = {
245- let Z = if ((size(X.payments) == 1))
246- then X.payments[0]
247- else throw("Please attach exactly one payment")
248- let am = {
249- let k = getString(v(p))
250- if ($isInstanceOf(k, "String"))
245+@Callable(Y)
246+func createTournament (q,ar,as,at,au) = {
247+ let aa = if ((size(Y.payments) == 1))
248+ then Y.payments[0]
249+ else {
250+ let ab = toBase58String(Y.caller.bytes)
251+ if ((ab == i))
252+ then AttachedPayment(unit, 0)
253+ else throw("Please attach exactly one payment")
254+ }
255+ let an = {
256+ let l = getString(w(q))
257+ if ($isInstanceOf(l, "String"))
251258 then {
252- let au = k
253- throw(("Tournament already exists with this id " + p))
259+ let av = l
260+ throw(("Tournament already exists with this id " + q))
254261 }
255262 else unit
256263 }
257- if ((am == am))
264+ if ((an == an))
258265 then {
259- let av = {
260- let k = Z.assetId
261- if ($isInstanceOf(k, "Unit"))
266+ let aw = {
267+ let l = aa.assetId
268+ if ($isInstanceOf(l, "Unit"))
262269 then {
263- let l = k
270+ let m = l
264271 ""
265272 }
266- else if ($isInstanceOf(k, "ByteVector"))
273+ else if ($isInstanceOf(l, "ByteVector"))
267274 then {
268- let l = k
269- toBase58String(l)
275+ let m = l
276+ toBase58String(m)
270277 }
271278 else throw("Match error")
272279 }
273- let aw = {
274- let k = Z.assetId
275- if ($isInstanceOf(k, "Unit"))
280+ let ax = {
281+ let l = aa.assetId
282+ if ($isInstanceOf(l, "Unit"))
276283 then {
277- let l = k
284+ let m = l
278285 ["Waves", 8]
279286 }
280- else if ($isInstanceOf(k, "ByteVector"))
287+ else if ($isInstanceOf(l, "ByteVector"))
281288 then {
282- let l = k
283- let ax = assetInfo(l)
284- if ($isInstanceOf(ax, "Asset"))
289+ let m = l
290+ let ay = assetInfo(m)
291+ if ($isInstanceOf(ay, "Asset"))
285292 then {
286- let ay = ax
287-[ay.name, ay.decimals]
293+ let az = ay
294+[az.name, az.decimals]
288295 }
289296 else throw("Can't find asset")
290297 }
291298 else throw("Match error")
292299 }
293- let az = {
294- let k = assetInfo(fromBase58String(at))
295- if ($isInstanceOf(k, "Asset"))
300+ let aA = {
301+ let l = assetInfo(fromBase58String(au))
302+ if ($isInstanceOf(l, "Asset"))
296303 then {
297- let ay = k
298-[ay.name, ay.decimals]
304+ let az = l
305+[az.name, az.decimals]
299306 }
300307 else ["", 0]
301308 }
302- let aa = toBase58String(X.caller.bytes)
303- $Tuple2([IntegerEntry(x(p), Z.amount), IntegerEntry(z(p), 0), IntegerEntry(y(p), ar), StringEntry(A(p), av), StringEntry(B(p), {
304- let aA = aw[0]
305- if ($isInstanceOf(aA, "String"))
306- then aA
307- else throw(($getType(aA) + " couldn't be cast to String"))
308- }), IntegerEntry(G(p), {
309- let aA = aw[1]
310- if ($isInstanceOf(aA, "Int"))
311- then aA
312- else throw(($getType(aA) + " couldn't be cast to Int"))
313- }), StringEntry(H(p), "registration"), IntegerEntry(C(p), as), StringEntry(E(p), {
314- let aA = az[0]
315- if ($isInstanceOf(aA, "String"))
316- then aA
317- else throw(($getType(aA) + " couldn't be cast to String"))
318- }), IntegerEntry(F(p), {
319- let aA = az[1]
320- if ($isInstanceOf(aA, "Int"))
321- then aA
322- else throw(($getType(aA) + " couldn't be cast to Int"))
323- }), StringEntry(D(p), at), StringEntry(w(p), aq), StringEntry(v(p), aa)], 1)
309+ let ab = toBase58String(Y.caller.bytes)
310+ $Tuple2([IntegerEntry(y(q), aa.amount), IntegerEntry(A(q), 0), IntegerEntry(z(q), as), StringEntry(B(q), aw), StringEntry(C(q), {
311+ let aB = ax[0]
312+ if ($isInstanceOf(aB, "String"))
313+ then aB
314+ else throw(($getType(aB) + " couldn't be cast to String"))
315+ }), IntegerEntry(H(q), {
316+ let aB = ax[1]
317+ if ($isInstanceOf(aB, "Int"))
318+ then aB
319+ else throw(($getType(aB) + " couldn't be cast to Int"))
320+ }), StringEntry(I(q), "registration"), IntegerEntry(D(q), at), StringEntry(F(q), {
321+ let aB = aA[0]
322+ if ($isInstanceOf(aB, "String"))
323+ then aB
324+ else throw(($getType(aB) + " couldn't be cast to String"))
325+ }), IntegerEntry(G(q), {
326+ let aB = aA[1]
327+ if ($isInstanceOf(aB, "Int"))
328+ then aB
329+ else throw(($getType(aB) + " couldn't be cast to Int"))
330+ }), StringEntry(E(q), au), StringEntry(x(q), ar), StringEntry(w(q), ab)], 1)
324331 }
325332 else throw("Strict value is not equal to itself.")
326333 }
327334
328335
329336
330-@Callable(X)
331-func startTournament (p) = if ((X.caller != this))
337+@Callable(Y)
338+func startTournament (q) = if ((Y.caller != this))
332339 then throw("Admin Only")
333- else $Tuple2([StringEntry(H(p), "started")], 1)
340+ else $Tuple2([StringEntry(I(q), "started")], 1)
334341
335342
336343
337-@Callable(X)
338-func finishTournament (p,aB) = if ((X.caller != this))
344+@Callable(Y)
345+func finishTournament (q,aC) = if ((Y.caller != this))
339346 then throw("Admin Only")
340347 else {
341- let am = getStringValue(v(p))
342- let aC = i(t(p))
343- let aD = getIntegerValue(C(p))
344- let aE = {
345- let k = getString(D(p))
346- if ($isInstanceOf(k, "String"))
348+ let an = getStringValue(w(q))
349+ let aD = j(u(q))
350+ let aE = getIntegerValue(D(q))
351+ let aF = {
352+ let l = getString(E(q))
353+ if ($isInstanceOf(l, "String"))
347354 then {
348- let aF = k
349- if ((aF == ""))
355+ let aG = l
356+ if ((aG == ""))
350357 then unit
351- else fromBase58String(aF)
358+ else fromBase58String(aG)
352359 }
353360 else unit
354361 }
355- let aG = fraction(aC, g, 100)
356- $Tuple2([StringEntry(J(p), aB), StringEntry(H(p), "finished"), IntegerEntry(I(p), aG), ScriptTransfer(addressFromStringValue(am), (aC - aG), aE)], 1)
362+ let aH = fraction(aD, g, 100)
363+ let ap = getIntegerValue(y(q))
364+ if ((ap > 0))
365+ then $Tuple2([StringEntry(K(q), aC), StringEntry(I(q), "finished"), IntegerEntry(J(q), aH), ScriptTransfer(addressFromStringValue(an), (aD - aH), aF)], 1)
366+ else {
367+ let aI = fraction(aH, 20, 100)
368+ $Tuple2([StringEntry(K(q), aC), StringEntry(I(q), "finished"), IntegerEntry(J(q), aH), ScriptTransfer(addressFromStringValue(an), (aH - aI), aF)], 1)
369+ }
357370 }
358371
359372
360373
361-@Callable(X)
362-func playerExitGame (L,U,aH) = if ((X.caller != this))
374+@Callable(Y)
375+func playerExitGame (M,V,aJ) = if ((Y.caller != this))
363376 then throw("Admin Only")
364377 else {
365- let aI = i(O(U))
366- let aJ = i(Q(U, L))
367- $Tuple2([IntegerEntry(O(U), (aI - aJ)), IntegerEntry(Q(U, L), 0), ScriptTransfer(addressFromStringValue(U), aH, fromBase58String(h))], 1)
378+ let aK = j(P(V))
379+ let aL = j(R(V, M))
380+ $Tuple2([IntegerEntry(P(V), (aK - aL)), IntegerEntry(R(V, M), 0), ScriptTransfer(addressFromStringValue(V), aJ, fromBase58String(h))], 1)
368381 }
369382
370383
371384
372-@Callable(X)
373-func lockFundsForGame (L) = {
374- let Z = if ((size(X.payments) == 1))
375- then X.payments[0]
385+@Callable(Y)
386+func lockFundsForGame (M) = {
387+ let aa = if ((size(Y.payments) == 1))
388+ then Y.payments[0]
376389 else throw("Please attach exactly one payment")
377- if ((Z.assetId != fromBase58String(h)))
390+ if ((aa.assetId != fromBase58String(h)))
378391 then throw("You can only deposit USDN")
379392 else {
380- let aa = toBase58String(X.caller.bytes)
381- let aI = i(O(aa))
382- let aK = i(P(aa))
383- $Tuple2([IntegerEntry(O(aa), (aI + Z.amount)), IntegerEntry(P(aa), (aK + Z.amount)), IntegerEntry(Q(aa, L), Z.amount)], 1)
393+ let ab = toBase58String(Y.caller.bytes)
394+ let aK = j(P(ab))
395+ let aM = j(Q(ab))
396+ $Tuple2([IntegerEntry(P(ab), (aK + aa.amount)), IntegerEntry(Q(ab), (aM + aa.amount)), IntegerEntry(R(ab, M), aa.amount)], 1)
384397 }
385398 }
386399
387400
388401
389-@Callable(X)
402+@Callable(Y)
390403 func withdrawFunds () = {
391- let aa = toBase58String(X.caller.bytes)
392- let aL = addressFromStringValue(getStringValue(f))
393- let ab = i(M(aa))
394- let aM = fraction(ab, e, 100)
395- let aN = (ab - aM)
396- if ((0 >= aN))
404+ let ab = toBase58String(Y.caller.bytes)
405+ let aN = addressFromStringValue(getStringValue(f))
406+ let ac = j(N(ab))
407+ let aO = fraction(ac, e, 100)
408+ let aP = (ac - aO)
409+ if ((0 >= aP))
397410 then throw("No available funds to withdraw")
398- else [IntegerEntry(M(aa), 0), ScriptTransfer(X.caller, aN, fromBase58String(h)), ScriptTransfer(aL, aM, fromBase58String(h))]
411+ else [IntegerEntry(N(ab), 0), ScriptTransfer(Y.caller, aP, fromBase58String(h)), ScriptTransfer(aN, aO, fromBase58String(h))]
399412 }
400413
401414
402415
403-@Callable(X)
404-func setWinnerHeadsUp (L,aO,aP) = if ((X.caller != this))
416+@Callable(Y)
417+func setWinnerHeadsUp (M,aQ,aR) = if ((Y.caller != this))
405418 then throw("Admin Only")
406419 else {
407- let aQ = R(aO)
408- let aR = i(aQ)
409- let aS = T(aO)
410- let aT = T(aP)
411-[StringEntry(K(L), aO), IntegerEntry(aQ, (aR + (c * 2))), IntegerEntry(m(aO), aS), IntegerEntry(m(aP), aT)]
420+ let aS = S(aQ)
421+ let aT = j(aS)
422+ let aU = U(aQ)
423+ let aV = U(aR)
424+[StringEntry(L(M), aQ), IntegerEntry(aS, (aT + (c * 2))), IntegerEntry(n(aQ), aU), IntegerEntry(n(aR), aV)]
412425 }
413426
414427
415428
416-@Callable(X)
429+@Callable(Y)
417430 func withdrawRewards () = {
418- let aa = toBase58String(X.caller.bytes)
419- let aL = addressFromStringValue(getStringValue(f))
420- let aR = i(R(aa))
421- let aM = fraction(aR, e, 100)
422- let aU = ((aR - d) - aM)
423- if ((0 >= aR))
431+ let ab = toBase58String(Y.caller.bytes)
432+ let aN = addressFromStringValue(getStringValue(f))
433+ let aT = j(S(ab))
434+ let aO = fraction(aT, e, 100)
435+ let aW = ((aT - d) - aO)
436+ if ((0 >= aT))
424437 then throw("No available rewards to withdraw")
425- else [IntegerEntry(R(aa), 0), ScriptTransfer(X.caller, aU, unit), ScriptTransfer(aL, aM, unit)]
438+ else [IntegerEntry(S(ab), 0), ScriptTransfer(Y.caller, aW, unit), ScriptTransfer(aN, aO, unit)]
426439 }
427440
428441
429442
430-@Callable(X)
443+@Callable(Y)
431444 func buyTickets () = {
432- let Z = if ((size(X.payments) == 1))
433- then X.payments[0]
445+ let aa = if ((size(Y.payments) == 1))
446+ then Y.payments[0]
434447 else throw("Please attach exactly one payment")
435- if (isDefined(Z.assetId))
448+ if (isDefined(aa.assetId))
436449 then throw("Tickets can only ibe purchased in Waves")
437- else if ((Z.amount != c))
450+ else if ((aa.amount != c))
438451 then throw((("The payment must be of exactly " + toString(b)) + " waves"))
439452 else {
440- let aa = toBase58String(X.caller.bytes)
441- let aV = i(m(aa))
442- $Tuple2([IntegerEntry(m(aa), (aV + 1))], 1)
453+ let ab = toBase58String(Y.caller.bytes)
454+ let aX = j(n(ab))
455+ $Tuple2([IntegerEntry(n(ab), (aX + 1))], 1)
443456 }
444457 }
445458
446459
447-@Verifier(aW)
448-func aX () = sigVerify(aW.bodyBytes, aW.proofs[0], aW.senderPublicKey)
460+@Verifier(aY)
461+func aZ () = sigVerify(aY.bodyBytes, aY.proofs[0], aY.senderPublicKey)
449462
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
20-func i (j) = {
21- let k = getInteger(this, j)
22- if ($isInstanceOf(k, "Int"))
20+let i = "3NAeBWCZFbBDFLYo9GNJNoE5hQ3aMsV5KsN"
21+
22+func j (k) = {
23+ let l = getInteger(this, k)
24+ if ($isInstanceOf(l, "Int"))
2325 then {
24- let l = k
25- l
26+ let m = l
27+ m
2628 }
2729 else 0
2830 }
2931
3032
31-func m (n) = (n + "_ticketsCount")
33+func n (o) = (o + "_ticketsCount")
3234
3335
34-func o (p,q) = ((p + "_buyInAmountForAccount_") + q)
36+func p (q,r) = ((q + "_buyInAmountForAccount_") + r)
3537
3638
37-func r (p,q) = ((p + "_buyInAssetIdForAccount_") + q)
39+func s (q,r) = ((q + "_buyInAssetIdForAccount_") + r)
3840
3941
40-func s (p,q) = ((p + "_ticketForAccount_") + q)
42+func t (q,r) = ((q + "_ticketForAccount_") + r)
4143
4244
43-func t (p) = (p + "_tournamentTotalBuyInCollectedAmount")
45+func u (q) = (q + "_tournamentTotalBuyInCollectedAmount")
4446
4547
46-func u (p) = (p + "_tournamentTotalBuyInCollectedAmountMinusFees")
48+func v (q) = (q + "_tournamentTotalBuyInCollectedAmountMinusFees")
4749
4850
49-func v (p) = (p + "_tournamentCreator")
51+func w (q) = (q + "_tournamentCreator")
5052
5153
52-func w (p) = (p + "_tournamentName")
54+func x (q) = (q + "_tournamentName")
5355
5456
55-func x (p) = (p + "_tournamentPrizeAmount")
57+func y (q) = (q + "_tournamentPrizeAmount")
5658
5759
58-func y (p) = (p + "_tournamentMaxPlayersCount")
60+func z (q) = (q + "_tournamentMaxPlayersCount")
5961
6062
61-func z (p) = (p + "_tournamentPlayersCount")
63+func A (q) = (q + "_tournamentPlayersCount")
6264
6365
64-func A (p) = (p + "_tournamentPrizeAssetId")
66+func B (q) = (q + "_tournamentPrizeAssetId")
6567
6668
67-func B (p) = (p + "_tournamentPrizeAssetName")
69+func C (q) = (q + "_tournamentPrizeAssetName")
6870
6971
70-func C (p) = (p + "_tournamentBuyInAmount")
72+func D (q) = (q + "_tournamentBuyInAmount")
7173
7274
73-func D (p) = (p + "_tournamentBuyInAssetId")
75+func E (q) = (q + "_tournamentBuyInAssetId")
7476
7577
76-func E (p) = (p + "_tournamentBuyInAssetName")
78+func F (q) = (q + "_tournamentBuyInAssetName")
7779
7880
79-func F (p) = (p + "_tournamentBuyInAssetDecimals")
81+func G (q) = (q + "_tournamentBuyInAssetDecimals")
8082
8183
82-func G (p) = (p + "_tournamentPrizeAssetDecimals")
84+func H (q) = (q + "_tournamentPrizeAssetDecimals")
8385
8486
85-func H (p) = (p + "_tournamentStatus")
87+func I (q) = (q + "_tournamentStatus")
8688
8789
88-func I (p) = (p + "_tournamentBuyInFeeCollected")
90+func J (q) = (q + "_tournamentBuyInFeeCollected")
8991
9092
91-func J (p) = (p + "_tournamentWinningTransactionId")
93+func K (q) = (q + "_tournamentWinningTransactionId")
9294
9395
94-func K (L) = (L + "_winner")
96+func L (M) = (M + "_winner")
9597
9698
97-func M (N) = (N + "_availableFunds")
99+func N (O) = (O + "_availableFunds")
98100
99101
100-func O (N) = (N + "_totalLockedFunds")
102+func P (O) = (O + "_totalLockedFunds")
101103
102104
103-func P (N) = (N + "_lockedFundsTotalHistory")
105+func Q (O) = (O + "_lockedFundsTotalHistory")
104106
105107
106-func Q (N,L) = ((N + "_lockedFunds_") + L)
108+func R (O,M) = ((O + "_lockedFunds_") + M)
107109
108110
109-func R (N) = (N + "_availableRewards")
111+func S (O) = (O + "_availableRewards")
110112
111113
112-func S (n) = i(m(n))
114+func T (o) = j(n(o))
113115
114116
115-func T (U) = {
116- let V = S(U)
117- let W = (V - 1)
118- if ((0 > W))
117+func U (V) = {
118+ let W = T(V)
119+ let X = (W - 1)
120+ if ((0 > X))
119121 then 0
120- else W
122+ else X
121123 }
122124
123125
124-@Callable(X)
125-func setFeeCollectorAddress (Y) = if ((X.caller != this))
126+@Callable(Y)
127+func setFeeCollectorAddress (Z) = if ((Y.caller != this))
126128 then throw("Admin Only")
127- else [StringEntry(f, Y)]
129+ else [StringEntry(f, Z)]
128130
129131
130132
131-@Callable(X)
133+@Callable(Y)
132134 func depositFunds () = {
133- let Z = if ((size(X.payments) == 1))
134- then X.payments[0]
135+ let aa = if ((size(Y.payments) == 1))
136+ then Y.payments[0]
135137 else throw("Please attach exactly one payment")
136- if ((Z.assetId != fromBase58String(h)))
138+ if ((aa.assetId != fromBase58String(h)))
137139 then throw("You can only deposit USDN")
138140 else {
139- let aa = toBase58String(X.caller.bytes)
140- let ab = i(M(aa))
141- $Tuple2([IntegerEntry(M(aa), (ab + Z.amount))], 1)
141+ let ab = toBase58String(Y.caller.bytes)
142+ let ac = j(N(ab))
143+ $Tuple2([IntegerEntry(N(ab), (ac + aa.amount))], 1)
142144 }
143145 }
144146
145147
146148
147-@Callable(X)
148-func cancelSignUpToTournament (p) = {
149- let ac = getStringValue(H(p))
150- if ((ac != "registration"))
149+@Callable(Y)
150+func cancelSignUpToTournament (q) = {
151+ let ad = getStringValue(I(q))
152+ if ((ad != "registration"))
151153 then throw("Tournament is not in registration phase!")
152154 else {
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)
155+ let ab = toBase58String(Y.caller.bytes)
156+ let ae = getIntegerValue(p(q, ab))
157+ let af = getStringValue(s(q, ab))
158+ let ag = j(A(q))
159+ let ah = (j(u(q)) - ae)
160+ let ai = fraction(ah, g, 100)
161+ $Tuple2([ScriptTransfer(addressFromStringValue(ab), ae, fromBase58String(af)), DeleteEntry(t(q, ab)), DeleteEntry(p(q, ab)), DeleteEntry(s(q, ab)), IntegerEntry(A(q), (ag - 1)), IntegerEntry(u(q), ah), IntegerEntry(v(q), (ah - ai))], 1)
160162 }
161163 }
162164
163165
164166
165-@Callable(X)
166-func signUpToTournament (p) = {
167- let ai = getIntegerValue(this, y(p))
168- let af = i(z(p))
169- let ac = getStringValue(H(p))
170- if (if ((ac != "registration"))
171- then (ac != "started")
167+@Callable(Y)
168+func signUpToTournament (q) = {
169+ let aj = getIntegerValue(this, z(q))
170+ let ag = j(A(q))
171+ let ad = getStringValue(I(q))
172+ if (if ((ad != "registration"))
173+ then (ad != "started")
172174 else false)
173175 then throw("Tournament is not in registration phase!")
174- else if ((af == ai))
176+ else if ((ag == aj))
175177 then throw("Tournament is currently full, please try again later!")
176178 else {
177- let Z = if ((size(X.payments) == 1))
178- then X.payments[0]
179+ let aa = if ((size(Y.payments) == 1))
180+ then Y.payments[0]
179181 else throw("Please attach exactly one payment")
180- let aj = {
181- let k = Z.assetId
182- if ($isInstanceOf(k, "Unit"))
182+ let ak = {
183+ let l = aa.assetId
184+ if ($isInstanceOf(l, "Unit"))
183185 then {
184- let l = k
186+ let m = l
185187 ""
186188 }
187- else if ($isInstanceOf(k, "ByteVector"))
189+ else if ($isInstanceOf(l, "ByteVector"))
188190 then {
189- let l = k
190- toBase58String(l)
191+ let m = l
192+ toBase58String(m)
191193 }
192194 else throw("Match error")
193195 }
194- let ak = getIntegerValue(this, C(p))
195- let al = getStringValue(this, D(p))
196- if ((ak != Z.amount))
197- then throw(("Attached payment amount is invalid, must be " + toString(ak)))
198- else if ((al != aj))
199- then throw(("Attached payment asset id is invalid, must be " + al))
196+ let al = getIntegerValue(this, D(q))
197+ let am = getStringValue(this, E(q))
198+ if ((al != aa.amount))
199+ then throw(("Attached payment amount is invalid, must be " + toString(al)))
200+ else if ((am != ak))
201+ then throw(("Attached payment asset id is invalid, must be " + am))
200202 else {
201- let aa = toBase58String(X.caller.bytes)
202- let ag = (i(t(p)) + Z.amount)
203- let ah = fraction(ag, g, 100)
204- $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)
203+ let ab = toBase58String(Y.caller.bytes)
204+ let ah = (j(u(q)) + aa.amount)
205+ let ai = fraction(ah, g, 100)
206+ $Tuple2([BooleanEntry(t(q, ab), true), IntegerEntry(p(q, ab), aa.amount), StringEntry(s(q, ab), ak), IntegerEntry(A(q), (ag + 1)), IntegerEntry(u(q), ah), IntegerEntry(v(q), (ah - ai))], 1)
205207 }
206208 }
207209 }
208210
209211
210212
211-@Callable(X)
212-func cancelTournament (p) = {
213- let aa = toBase58String(X.caller.bytes)
214- let am = getStringValue(v(p))
215- let an = if ((am == aa))
213+@Callable(Y)
214+func cancelTournament (q) = {
215+ let ab = toBase58String(Y.caller.bytes)
216+ let an = getStringValue(w(q))
217+ let ao = if ((an == ab))
216218 then true
217- else if ((X.caller == this))
219+ else if ((Y.caller == this))
218220 then true
219221 else throw("Only tournament creator can cancel it!")
220- if ((an == an))
222+ if ((ao == ao))
221223 then {
222- let ac = getStringValue(H(p))
223- if (if ((X.caller != this))
224- then (ac != "registration")
224+ let ad = getStringValue(I(q))
225+ if (if ((Y.caller != this))
226+ then (ad != "registration")
225227 else false)
226228 then throw("Tournament is not in registration phase!")
227229 else {
228- let af = i(z(p))
229- if ((af > 0))
230+ let ag = j(A(q))
231+ if ((ag > 0))
230232 then throw("Cannot cancel a tournament when players are already registered to it!")
231233 else {
232- let ao = getIntegerValue(x(p))
233- let ap = getStringValue(A(p))
234- $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)
234+ let ap = getIntegerValue(y(q))
235+ let aq = getStringValue(B(q))
236+ $Tuple2([DeleteEntry(y(q)), DeleteEntry(A(q)), DeleteEntry(z(q)), DeleteEntry(B(q)), DeleteEntry(C(q)), DeleteEntry(H(q)), DeleteEntry(I(q)), DeleteEntry(D(q)), DeleteEntry(F(q)), DeleteEntry(G(q)), DeleteEntry(E(q)), DeleteEntry(x(q)), DeleteEntry(w(q)), ScriptTransfer(addressFromStringValue(an), ap, fromBase58String(aq))], 1)
235237 }
236238 }
237239 }
238240 else throw("Strict value is not equal to itself.")
239241 }
240242
241243
242244
243-@Callable(X)
244-func createTournament (p,aq,ar,as,at) = {
245- let Z = if ((size(X.payments) == 1))
246- then X.payments[0]
247- else throw("Please attach exactly one payment")
248- let am = {
249- let k = getString(v(p))
250- if ($isInstanceOf(k, "String"))
245+@Callable(Y)
246+func createTournament (q,ar,as,at,au) = {
247+ let aa = if ((size(Y.payments) == 1))
248+ then Y.payments[0]
249+ else {
250+ let ab = toBase58String(Y.caller.bytes)
251+ if ((ab == i))
252+ then AttachedPayment(unit, 0)
253+ else throw("Please attach exactly one payment")
254+ }
255+ let an = {
256+ let l = getString(w(q))
257+ if ($isInstanceOf(l, "String"))
251258 then {
252- let au = k
253- throw(("Tournament already exists with this id " + p))
259+ let av = l
260+ throw(("Tournament already exists with this id " + q))
254261 }
255262 else unit
256263 }
257- if ((am == am))
264+ if ((an == an))
258265 then {
259- let av = {
260- let k = Z.assetId
261- if ($isInstanceOf(k, "Unit"))
266+ let aw = {
267+ let l = aa.assetId
268+ if ($isInstanceOf(l, "Unit"))
262269 then {
263- let l = k
270+ let m = l
264271 ""
265272 }
266- else if ($isInstanceOf(k, "ByteVector"))
273+ else if ($isInstanceOf(l, "ByteVector"))
267274 then {
268- let l = k
269- toBase58String(l)
275+ let m = l
276+ toBase58String(m)
270277 }
271278 else throw("Match error")
272279 }
273- let aw = {
274- let k = Z.assetId
275- if ($isInstanceOf(k, "Unit"))
280+ let ax = {
281+ let l = aa.assetId
282+ if ($isInstanceOf(l, "Unit"))
276283 then {
277- let l = k
284+ let m = l
278285 ["Waves", 8]
279286 }
280- else if ($isInstanceOf(k, "ByteVector"))
287+ else if ($isInstanceOf(l, "ByteVector"))
281288 then {
282- let l = k
283- let ax = assetInfo(l)
284- if ($isInstanceOf(ax, "Asset"))
289+ let m = l
290+ let ay = assetInfo(m)
291+ if ($isInstanceOf(ay, "Asset"))
285292 then {
286- let ay = ax
287-[ay.name, ay.decimals]
293+ let az = ay
294+[az.name, az.decimals]
288295 }
289296 else throw("Can't find asset")
290297 }
291298 else throw("Match error")
292299 }
293- let az = {
294- let k = assetInfo(fromBase58String(at))
295- if ($isInstanceOf(k, "Asset"))
300+ let aA = {
301+ let l = assetInfo(fromBase58String(au))
302+ if ($isInstanceOf(l, "Asset"))
296303 then {
297- let ay = k
298-[ay.name, ay.decimals]
304+ let az = l
305+[az.name, az.decimals]
299306 }
300307 else ["", 0]
301308 }
302- let aa = toBase58String(X.caller.bytes)
303- $Tuple2([IntegerEntry(x(p), Z.amount), IntegerEntry(z(p), 0), IntegerEntry(y(p), ar), StringEntry(A(p), av), StringEntry(B(p), {
304- let aA = aw[0]
305- if ($isInstanceOf(aA, "String"))
306- then aA
307- else throw(($getType(aA) + " couldn't be cast to String"))
308- }), IntegerEntry(G(p), {
309- let aA = aw[1]
310- if ($isInstanceOf(aA, "Int"))
311- then aA
312- else throw(($getType(aA) + " couldn't be cast to Int"))
313- }), StringEntry(H(p), "registration"), IntegerEntry(C(p), as), StringEntry(E(p), {
314- let aA = az[0]
315- if ($isInstanceOf(aA, "String"))
316- then aA
317- else throw(($getType(aA) + " couldn't be cast to String"))
318- }), IntegerEntry(F(p), {
319- let aA = az[1]
320- if ($isInstanceOf(aA, "Int"))
321- then aA
322- else throw(($getType(aA) + " couldn't be cast to Int"))
323- }), StringEntry(D(p), at), StringEntry(w(p), aq), StringEntry(v(p), aa)], 1)
309+ let ab = toBase58String(Y.caller.bytes)
310+ $Tuple2([IntegerEntry(y(q), aa.amount), IntegerEntry(A(q), 0), IntegerEntry(z(q), as), StringEntry(B(q), aw), StringEntry(C(q), {
311+ let aB = ax[0]
312+ if ($isInstanceOf(aB, "String"))
313+ then aB
314+ else throw(($getType(aB) + " couldn't be cast to String"))
315+ }), IntegerEntry(H(q), {
316+ let aB = ax[1]
317+ if ($isInstanceOf(aB, "Int"))
318+ then aB
319+ else throw(($getType(aB) + " couldn't be cast to Int"))
320+ }), StringEntry(I(q), "registration"), IntegerEntry(D(q), at), StringEntry(F(q), {
321+ let aB = aA[0]
322+ if ($isInstanceOf(aB, "String"))
323+ then aB
324+ else throw(($getType(aB) + " couldn't be cast to String"))
325+ }), IntegerEntry(G(q), {
326+ let aB = aA[1]
327+ if ($isInstanceOf(aB, "Int"))
328+ then aB
329+ else throw(($getType(aB) + " couldn't be cast to Int"))
330+ }), StringEntry(E(q), au), StringEntry(x(q), ar), StringEntry(w(q), ab)], 1)
324331 }
325332 else throw("Strict value is not equal to itself.")
326333 }
327334
328335
329336
330-@Callable(X)
331-func startTournament (p) = if ((X.caller != this))
337+@Callable(Y)
338+func startTournament (q) = if ((Y.caller != this))
332339 then throw("Admin Only")
333- else $Tuple2([StringEntry(H(p), "started")], 1)
340+ else $Tuple2([StringEntry(I(q), "started")], 1)
334341
335342
336343
337-@Callable(X)
338-func finishTournament (p,aB) = if ((X.caller != this))
344+@Callable(Y)
345+func finishTournament (q,aC) = if ((Y.caller != this))
339346 then throw("Admin Only")
340347 else {
341- let am = getStringValue(v(p))
342- let aC = i(t(p))
343- let aD = getIntegerValue(C(p))
344- let aE = {
345- let k = getString(D(p))
346- if ($isInstanceOf(k, "String"))
348+ let an = getStringValue(w(q))
349+ let aD = j(u(q))
350+ let aE = getIntegerValue(D(q))
351+ let aF = {
352+ let l = getString(E(q))
353+ if ($isInstanceOf(l, "String"))
347354 then {
348- let aF = k
349- if ((aF == ""))
355+ let aG = l
356+ if ((aG == ""))
350357 then unit
351- else fromBase58String(aF)
358+ else fromBase58String(aG)
352359 }
353360 else unit
354361 }
355- let aG = fraction(aC, g, 100)
356- $Tuple2([StringEntry(J(p), aB), StringEntry(H(p), "finished"), IntegerEntry(I(p), aG), ScriptTransfer(addressFromStringValue(am), (aC - aG), aE)], 1)
362+ let aH = fraction(aD, g, 100)
363+ let ap = getIntegerValue(y(q))
364+ if ((ap > 0))
365+ then $Tuple2([StringEntry(K(q), aC), StringEntry(I(q), "finished"), IntegerEntry(J(q), aH), ScriptTransfer(addressFromStringValue(an), (aD - aH), aF)], 1)
366+ else {
367+ let aI = fraction(aH, 20, 100)
368+ $Tuple2([StringEntry(K(q), aC), StringEntry(I(q), "finished"), IntegerEntry(J(q), aH), ScriptTransfer(addressFromStringValue(an), (aH - aI), aF)], 1)
369+ }
357370 }
358371
359372
360373
361-@Callable(X)
362-func playerExitGame (L,U,aH) = if ((X.caller != this))
374+@Callable(Y)
375+func playerExitGame (M,V,aJ) = if ((Y.caller != this))
363376 then throw("Admin Only")
364377 else {
365- let aI = i(O(U))
366- let aJ = i(Q(U, L))
367- $Tuple2([IntegerEntry(O(U), (aI - aJ)), IntegerEntry(Q(U, L), 0), ScriptTransfer(addressFromStringValue(U), aH, fromBase58String(h))], 1)
378+ let aK = j(P(V))
379+ let aL = j(R(V, M))
380+ $Tuple2([IntegerEntry(P(V), (aK - aL)), IntegerEntry(R(V, M), 0), ScriptTransfer(addressFromStringValue(V), aJ, fromBase58String(h))], 1)
368381 }
369382
370383
371384
372-@Callable(X)
373-func lockFundsForGame (L) = {
374- let Z = if ((size(X.payments) == 1))
375- then X.payments[0]
385+@Callable(Y)
386+func lockFundsForGame (M) = {
387+ let aa = if ((size(Y.payments) == 1))
388+ then Y.payments[0]
376389 else throw("Please attach exactly one payment")
377- if ((Z.assetId != fromBase58String(h)))
390+ if ((aa.assetId != fromBase58String(h)))
378391 then throw("You can only deposit USDN")
379392 else {
380- let aa = toBase58String(X.caller.bytes)
381- let aI = i(O(aa))
382- let aK = i(P(aa))
383- $Tuple2([IntegerEntry(O(aa), (aI + Z.amount)), IntegerEntry(P(aa), (aK + Z.amount)), IntegerEntry(Q(aa, L), Z.amount)], 1)
393+ let ab = toBase58String(Y.caller.bytes)
394+ let aK = j(P(ab))
395+ let aM = j(Q(ab))
396+ $Tuple2([IntegerEntry(P(ab), (aK + aa.amount)), IntegerEntry(Q(ab), (aM + aa.amount)), IntegerEntry(R(ab, M), aa.amount)], 1)
384397 }
385398 }
386399
387400
388401
389-@Callable(X)
402+@Callable(Y)
390403 func withdrawFunds () = {
391- let aa = toBase58String(X.caller.bytes)
392- let aL = addressFromStringValue(getStringValue(f))
393- let ab = i(M(aa))
394- let aM = fraction(ab, e, 100)
395- let aN = (ab - aM)
396- if ((0 >= aN))
404+ let ab = toBase58String(Y.caller.bytes)
405+ let aN = addressFromStringValue(getStringValue(f))
406+ let ac = j(N(ab))
407+ let aO = fraction(ac, e, 100)
408+ let aP = (ac - aO)
409+ if ((0 >= aP))
397410 then throw("No available funds to withdraw")
398- else [IntegerEntry(M(aa), 0), ScriptTransfer(X.caller, aN, fromBase58String(h)), ScriptTransfer(aL, aM, fromBase58String(h))]
411+ else [IntegerEntry(N(ab), 0), ScriptTransfer(Y.caller, aP, fromBase58String(h)), ScriptTransfer(aN, aO, fromBase58String(h))]
399412 }
400413
401414
402415
403-@Callable(X)
404-func setWinnerHeadsUp (L,aO,aP) = if ((X.caller != this))
416+@Callable(Y)
417+func setWinnerHeadsUp (M,aQ,aR) = if ((Y.caller != this))
405418 then throw("Admin Only")
406419 else {
407- let aQ = R(aO)
408- let aR = i(aQ)
409- let aS = T(aO)
410- let aT = T(aP)
411-[StringEntry(K(L), aO), IntegerEntry(aQ, (aR + (c * 2))), IntegerEntry(m(aO), aS), IntegerEntry(m(aP), aT)]
420+ let aS = S(aQ)
421+ let aT = j(aS)
422+ let aU = U(aQ)
423+ let aV = U(aR)
424+[StringEntry(L(M), aQ), IntegerEntry(aS, (aT + (c * 2))), IntegerEntry(n(aQ), aU), IntegerEntry(n(aR), aV)]
412425 }
413426
414427
415428
416-@Callable(X)
429+@Callable(Y)
417430 func withdrawRewards () = {
418- let aa = toBase58String(X.caller.bytes)
419- let aL = addressFromStringValue(getStringValue(f))
420- let aR = i(R(aa))
421- let aM = fraction(aR, e, 100)
422- let aU = ((aR - d) - aM)
423- if ((0 >= aR))
431+ let ab = toBase58String(Y.caller.bytes)
432+ let aN = addressFromStringValue(getStringValue(f))
433+ let aT = j(S(ab))
434+ let aO = fraction(aT, e, 100)
435+ let aW = ((aT - d) - aO)
436+ if ((0 >= aT))
424437 then throw("No available rewards to withdraw")
425- else [IntegerEntry(R(aa), 0), ScriptTransfer(X.caller, aU, unit), ScriptTransfer(aL, aM, unit)]
438+ else [IntegerEntry(S(ab), 0), ScriptTransfer(Y.caller, aW, unit), ScriptTransfer(aN, aO, unit)]
426439 }
427440
428441
429442
430-@Callable(X)
443+@Callable(Y)
431444 func buyTickets () = {
432- let Z = if ((size(X.payments) == 1))
433- then X.payments[0]
445+ let aa = if ((size(Y.payments) == 1))
446+ then Y.payments[0]
434447 else throw("Please attach exactly one payment")
435- if (isDefined(Z.assetId))
448+ if (isDefined(aa.assetId))
436449 then throw("Tickets can only ibe purchased in Waves")
437- else if ((Z.amount != c))
450+ else if ((aa.amount != c))
438451 then throw((("The payment must be of exactly " + toString(b)) + " waves"))
439452 else {
440- let aa = toBase58String(X.caller.bytes)
441- let aV = i(m(aa))
442- $Tuple2([IntegerEntry(m(aa), (aV + 1))], 1)
453+ let ab = toBase58String(Y.caller.bytes)
454+ let aX = j(n(ab))
455+ $Tuple2([IntegerEntry(n(ab), (aX + 1))], 1)
443456 }
444457 }
445458
446459
447-@Verifier(aW)
448-func aX () = sigVerify(aW.bodyBytes, aW.proofs[0], aW.senderPublicKey)
460+@Verifier(aY)
461+func aZ () = sigVerify(aY.bodyBytes, aY.proofs[0], aY.senderPublicKey)
449462

github/deemru/w8io/873ac7e 
248.93 ms