tx · 3d1nkXyWqyi5hpsfoh6uLaB2ox2AG1FGc2g94b4s3LJu

3P4m4beJ6p1pMPHqCQMAXEdquUuXJz72CMe:  -0.03800000 Waves

2022.11.11 13:34 [3377751] smart account 3P4m4beJ6p1pMPHqCQMAXEdquUuXJz72CMe > SELF 0.00000000 Waves

{ "type": 13, "id": "3d1nkXyWqyi5hpsfoh6uLaB2ox2AG1FGc2g94b4s3LJu", "fee": 3800000, "feeAssetId": null, "timestamp": 1668162941673, "version": 2, "chainId": 87, "sender": "3P4m4beJ6p1pMPHqCQMAXEdquUuXJz72CMe", "senderPublicKey": "FEt6j4pK9wxVdSAm4KYW3VgCc3ncqq8aJvHM6vC37R64", "proofs": [ "3WqC8KDWGmvq5cyWbv3zz2V3RiL7r5W7qv8QewwLzru8A31dwQfsHXHFZa56vGFifCWrhCeayy8F2Zo8M88xifw4" ], "script": "base64:BgJOCAISAwoBCBIDCgEIEgMKAQgSBQoDCAEBEgUKAwEIERIFCgMBCBESBgoEAQgBERIDCgEIEgASFwoVCAgIAQEBARgICAgICAgIGBgYGBgYDQAUbmZ0X2NyZWF0aW9uX2FkZHJlc3MJAQdBZGRyZXNzAQEaAVeT3cTSF+cgCv33IRJO8PB2ZyaDA3jUXEwAFXByaWNlX2luY3JlYXNlX3BlcmlvZAAKAA9taW50X2NvbGxlY3Rpb24CEkNsZWYgZ2VuZXNpcyBzb25ncwAQbWludF9kZXNjcmlwdGlvbgJkR2VuZXNpcyBDbGVmIHNvbmcuIFRoaXMgbWVsb2R5IGlzIGNyYWZ0ZWQgdG8gYmVjb21lIHlvdXIgZWxlY3Ryb25pYyBqYW0uIFVzZSBpdCBvbiBjbGVmLm9uZSDwn5Ka8J+kjQARaHlicmlkX2NvbGxlY3Rpb24CCkNsZWYgbWl4ZXMAEmh5YnJpZF9kZXNjcmlwdGlvbgJXQ2xlZiBtaXguIFRoaXMgbWVsb2R5IHdhcyBjcmVhdGVkIGJ5IGFuIGFsZ29yaXRobS4gRW5qb3kgdGhpcyBqYW0gb3IgdXNlIGl0IG9uIGNsZWYub25lAQZ0b19rZXkBAW4JANgEAQkAmgMBBQFuAQx1bmlxdWVfYnl0ZXMBAWkJAMsBAgkAywECCQDLAQIJAMsBAggFAWkNdHJhbnNhY3Rpb25JZAgFAWkPY2FsbGVyUHVibGljS2V5CAUJbGFzdEJsb2NrE2dlbmVyYXRpb25TaWduYXR1cmUJAJoDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAJoDAQgFCWxhc3RCbG9jawZoZWlnaHQBC3JhbmRvbV91aW50AgVieXRlcwVub25jZQQBbgkAsQkBCQDUFgEJAMsBAgUFYnl0ZXMJAJoDAQUFbm9uY2UDCQBmAgAABQFuCQEBLQEFAW4FAW4BCHBpY2tfb25lBAVrZXlfMAVrZXlfMQhyYW5kX2ludAliaXRfcG93ZXIDCQAAAgkAagIJAGkCBQhyYW5kX2ludAUJYml0X3Bvd2VyAAIAAAUFa2V5XzAFBWtleV8xARdoeWJyaWRfY2FsY3VsYXRlX2NoYW5nZQMBaQV0b2tlbgZhbW91bnQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEA////////////AQQBcAkAkQMCCAUBaQhwYXltZW50cwAABAdwX3Rva2VuBAckbWF0Y2gwCAUBcAdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAmlkBQckbWF0Y2gwCQDYBAEFAmlkAgADCQECIT0CBQdwX3Rva2VuBQV0b2tlbgD///////////8BCQBlAggFAXAGYW1vdW50BQZhbW91bnQBDm1ha2VfaHlicmlkX3R4AwFpBnNvbmdfMAZzb25nXzEEAW4EByRtYXRjaDAJAJ8IAQIFY291bnQDCQABAgUHJG1hdGNoMAIDSW50BAFqBQckbWF0Y2gwBQFqAAAECm5hbWVfc2hvcnQJAK8CAgkArAICAgVDbGVmIAkApAMBBQFuABAEC2Rlc2NyaXB0aW9uBRJoeWJyaWRfZGVzY3JpcHRpb24ECmNvbGxlY3Rpb24FEWh5YnJpZF9jb2xsZWN0aW9uBAJpZAQHJG1hdGNoMAkA/AcEBRRuZnRfY3JlYXRpb25fYWRkcmVzcwIJY3JlYXRlTkZUCQDMCAIFCm5hbWVfc2hvcnQJAMwIAgULZGVzY3JpcHRpb24JAMwIAgkBEUBleHRyTmF0aXZlKDEwNTgpAQIRbWFya2V0X2ltYWdlX2xpbmsJAMwIAgUKY29sbGVjdGlvbgUDbmlsBQNuaWwDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAF4BQckbWF0Y2gwBQF4CQACAQITTkZUIGNyZWF0aW9uIGZhaWxlZAMJAAACBQJpZAUCaWQEBGlkX2IJANkEAQUCaWQEA2tleQkBBnRvX2tleQEFAW4EBWJ5dGVzCQEMdW5pcXVlX2J5dGVzAQUBaQQGcmFuZF8wCQELcmFuZG9tX3VpbnQCBQVieXRlcwAABAZyYW5kXzEJAQtyYW5kb21fdWludAIFBWJ5dGVzAAEJAMwIAgkBDEludGVnZXJFbnRyeQICBWNvdW50CQBkAgUBbgABCQDMCAIJAQtTdHJpbmdFbnRyeQIFAmlkBQNrZXkJAMwIAgkBC1N0cmluZ0VudHJ5AgUDa2V5BQJpZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCAl9HCQBkAgkAlgMBCQDMCAIJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAKwCAgUGc29uZ18wAgJfRwkAzAgCCQERQGV4dHJOYXRpdmUoMTA1NSkBCQCsAgIFBnNvbmdfMQICX0cFA25pbAABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgNfU0wCAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCA19TTgUGcmFuZF8wCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU1AwBQZzb25nXzAJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TUDEFBnNvbmdfMQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCBF9TQjAJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMAABAgRfU0IwCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFA2tleQIEX1NCMQkBEUBleHRyTmF0aXZlKDEwNTUpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wAAICBF9TQjEJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfU0IyCQERQGV4dHJOYXRpdmUoMTA1NSkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAABAIEX1NCMgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCA19TVAkBEUBleHRyTmF0aXZlKDEwNTUpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wAAgCA19TVAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIEX1NDMAkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wABACBF9TQzAJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TQzEJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMAAgAgRfU0MxCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0MyCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAAQAIEX1NDMgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIEX1NDMwkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wAIABAgRfU0MzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0M0CQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAAgAQCBF9TQzQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TQzUJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMACACAIEX1NDNQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIEX1NDNgkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wAIAQAgRfU0M2CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0M3CQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAAgCACBF9TQzcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCA19TQQkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wAIBAAgNfU0EJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TSTAJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMACAgAECBF9TSTAJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TSTEJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMACAgAICBF9TSTEJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TSTIJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMACAgAQCBF9TSTIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TSTMJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMACAgAgCBF9TSTMJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TSTQJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMACAgBACBF9TSTQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TSTUJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMACAgCACBF9TSTUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTUwCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAAgIBAAgVfU0k1MAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNTEJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMACAgIABAgVfU0k1MQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNTIJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMACAgIACAgVfU0k1MgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNTMJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMACAgIAEAgVfU0k1MwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNTQJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMACAgIAIAgVfU0k1NAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNTUJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMACAgIAQAgVfU0k1NQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNTYJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMACAgIAgAgVfU0k1NgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNTcJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMACAgIBAAgVfU0k1NwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMDAJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMACAgICAAQIFX1NJMDAJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTAxCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAAgICAgAICBV9TSTAxCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kwMgkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wAICAgIAEAgVfU0kwMgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMDMJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMACAgICACAIFX1NJMDMJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTA0CQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzAAgICAgBACBV9TSTA0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kwNQkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8wAICAgIAgAgVfU0kwNQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMDYJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQABAgVfU0kwNgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMDcJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQACAgVfU0kwNwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMTAJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQAEAgVfU0kxMAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMTEJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQAIAgVfU0kxMQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMTIJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQAQAgVfU0kxMgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMTMJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQAgAgVfU0kxMwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMTQJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQBAAgVfU0kxNAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMTUJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQCAAQIFX1NJMTUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTE2CQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEAgAICBV9TSTE2CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kxNwkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xAIAEAgVfU0kxNwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMjAJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQCACAIFX1NJMjAJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTIxCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEAgBACBV9TSTIxCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kyMgkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xAIAgAgVfU0kyMgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMjMJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQCAQAIFX1NJMjMJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTI0CQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEAgIABAgVfU0kyNAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMjUJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQCAgAICBV9TSTI1CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kyNgkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xAICABAIFX1NJMjYJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTI3CQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEAgIAIAgVfU0kyNwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMzAJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQCAgBACBV9TSTMwCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kzMQkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xAICAIAIFX1NJMzEJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTMyCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEAgIBAAgVfU0kzMgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMzMJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQCAgIABAgVfU0kzMwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMzQJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQCAgIACAgVfU0kzNAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMzUJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQCAgIAEAgVfU0kzNQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMzYJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQCAgIAIAgVfU0kzNgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMzcJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQCAgIAQAgVfU0kzNwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNDAJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQCAgIAgAgVfU0k0MAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNDEJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQCAgIBAAgVfU0k0MQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNDIJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQCAgICAAQIFX1NJNDIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTQzCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEAgICAgAICBV9TSTQzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0k0NAkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xAICAgIAEAgVfU0k0NAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNDUJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkBCHBpY2tfb25lBAUGc29uZ18wBQZzb25nXzEFBnJhbmRfMQCAgICACAIFX1NJNDUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTQ2CQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAQhwaWNrX29uZQQFBnNvbmdfMAUGc29uZ18xBQZyYW5kXzEAgICAgBACBV9TSTQ2CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0k0NwkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQEIcGlja19vbmUEBQZzb25nXzAFBnNvbmdfMQUGcmFuZF8xAICAgIAgAgVfU0k0NwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEICAUBaQZjYWxsZXIFYnl0ZXMAAQUEaWRfYgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQ9jaGVja193aGl0ZWxpc3QBBmNhbGxlcgMJAAACBQR0aGlzBQZjYWxsZXIGBAckbWF0Y2gwCQCgCAEJAKwCAgICV18JANgEAQgFBmNhbGxlcgVieXRlcwMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAF4BQckbWF0Y2gwBQF4BwoBaQENd2hpdGVsaXN0X2FkZAEEdXNlcgMJAQIhPQIFBHRoaXMIBQFpBmNhbGxlcgkAAgECGENhbGxlciBpcyBub3QgZEFwcCBvd25lcgkAlAoCCQDMCAIJAQxCb29sZWFuRW50cnkCCQCsAgICAldfBQR1c2VyBgUDbmlsBQR1bml0AWkBEHdoaXRlbGlzdF9yZW1vdmUBBHVzZXIDCQECIT0CBQR0aGlzCAUBaQZjYWxsZXIJAAIBAhhDYWxsZXIgaXMgbm90IGRBcHAgb3duZXIJAJQKAgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgICAldfBQR1c2VyBQNuaWwFBHVuaXQBaQEQc2V0X21hcmtldF9pbWFnZQEDdXJsAwkBASEBCQEPY2hlY2tfd2hpdGVsaXN0AQgFAWkGY2FsbGVyCQACAQIXQ2FsbGVyIG5vdCBpbiB3aGl0ZWxpc3QJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCAhFtYXJrZXRfaW1hZ2VfbGluawUDdXJsBQNuaWwFBHVuaXQBaQEQc2V0X3ByaWNlX2h5YnJpZAMFdG9rZW4GYW1vdW50CWluY3JlbWVudAMJAQEhAQkBD2NoZWNrX3doaXRlbGlzdAEIBQFpBmNhbGxlcgkAAgECF0NhbGxlciBub3QgaW4gd2hpdGVsaXN0CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgIScHJpY2VfaHlicmlkX3Rva2VuBQV0b2tlbgkAzAgCCQEMSW50ZWdlckVudHJ5AgITcHJpY2VfaHlicmlkX2Ftb3VudAUGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCAhZwcmljZV9oeWJyaWRfaW5jcmVtZW50BQlpbmNyZW1lbnQFA25pbAUEdW5pdAFpAQptaW50X2Nob3JkAwVpbmRleARuYW1lBW5vdGVzAwkBASEBCQEPY2hlY2tfd2hpdGVsaXN0AQgFAWkGY2FsbGVyCQACAQIXQ2FsbGVyIG5vdCBpbiB3aGl0ZWxpc3QDCQECIT0CCQCQAwEFBW5vdGVzAAUJAAIBAhBXcm9uZyBub3RlcyBzaXplBAFuBAckbWF0Y2gwCQCfCAECBWNvdW50AwkAAQIFByRtYXRjaDACA0ludAQBagUHJG1hdGNoMAUBagAABANrZXkJAQZ0b19rZXkBBQVpbmRleAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCAgVjb3VudAkAlgMBCQDMCAIJAGQCBQVpbmRleAABCQDMCAIFAW4FA25pbAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIDX0NMBQRuYW1lCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFA2tleQIDX0MwCQCRAwIFBW5vdGVzAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgNfQzEJAJEDAgUFbm90ZXMAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCA19DMgkAkQMCBQVub3RlcwACCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFA2tleQIDX0MzCQCRAwIFBW5vdGVzAAMJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgNfQzQJAJEDAgUFbm90ZXMABAUDbmlsBQR1bml0AWkBDW1pbnRfYXJwZWdnaW8DBWluZGV4BG5hbWUFbm90ZXMDCQEBIQEJAQ9jaGVja193aGl0ZWxpc3QBCAUBaQZjYWxsZXIJAAIBAhdDYWxsZXIgbm90IGluIHdoaXRlbGlzdAMJAQIhPQIJAJADAQUFbm90ZXMAEAkAAgECEFdyb25nIG5vdGVzIHNpemUEAW4EByRtYXRjaDAJAJ8IAQIFY291bnQDCQABAgUHJG1hdGNoMAIDSW50BAFqBQckbWF0Y2gwBQFqAAAEA2tleQkBBnRvX2tleQEFBWluZGV4CQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQICBWNvdW50CQCWAwEJAMwIAgkAZAIFBWluZGV4AAEJAMwIAgUBbgUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgNfQUwFBG5hbWUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfQTAwCQCRAwIFBW5vdGVzAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfQTAxCQCRAwIFBW5vdGVzAAEJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfQTAyCQCRAwIFBW5vdGVzAAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfQTAzCQCRAwIFBW5vdGVzAAMJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfQTA0CQCRAwIFBW5vdGVzAAQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfQTA1CQCRAwIFBW5vdGVzAAUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfQTA2CQCRAwIFBW5vdGVzAAYJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfQTA3CQCRAwIFBW5vdGVzAAcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfQTA4CQCRAwIFBW5vdGVzAAgJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfQTA5CQCRAwIFBW5vdGVzAAkJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfQTEwCQCRAwIFBW5vdGVzAAoJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfQTExCQCRAwIFBW5vdGVzAAsJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfQTEyCQCRAwIFBW5vdGVzAAwJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfQTEzCQCRAwIFBW5vdGVzAA0JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfQTE0CQCRAwIFBW5vdGVzAA4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfQTE1CQCRAwIFBW5vdGVzAA8FA25pbAUEdW5pdAFpAQttaW50X3JoeXRobQQFaW5kZXgEbmFtZQVzY2FsZQVub3RlcwMJAQEhAQkBD2NoZWNrX3doaXRlbGlzdAEIBQFpBmNhbGxlcgkAAgECF0NhbGxlciBub3QgaW4gd2hpdGVsaXN0AwkBAiE9AgkAkAMBBQVub3RlcwAQCQACAQIQV3Jvbmcgbm90ZXMgc2l6ZQQBbgQHJG1hdGNoMAkAnwgBAgVjb3VudAMJAAECBQckbWF0Y2gwAgNJbnQEAWoFByRtYXRjaDAFAWoAAAQDa2V5CQEGdG9fa2V5AQUFaW5kZXgJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgIFY291bnQJAJYDAQkAzAgCCQBkAgUFaW5kZXgAAQkAzAgCBQFuBQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCA19STAUEbmFtZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQNrZXkCA19SUwUFc2NhbGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfUjAwCQCRAwIFBW5vdGVzAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfUjAxCQCRAwIFBW5vdGVzAAEJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfUjAyCQCRAwIFBW5vdGVzAAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfUjAzCQCRAwIFBW5vdGVzAAMJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfUjA0CQCRAwIFBW5vdGVzAAQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfUjA1CQCRAwIFBW5vdGVzAAUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfUjA2CQCRAwIFBW5vdGVzAAYJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfUjA3CQCRAwIFBW5vdGVzAAcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfUjA4CQCRAwIFBW5vdGVzAAgJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfUjA5CQCRAwIFBW5vdGVzAAkJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfUjEwCQCRAwIFBW5vdGVzAAoJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfUjExCQCRAwIFBW5vdGVzAAsJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfUjEyCQCRAwIFBW5vdGVzAAwJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfUjEzCQCRAwIFBW5vdGVzAA0JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfUjE0CQCRAwIFBW5vdGVzAA4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfUjE1CQCRAwIFBW5vdGVzAA8FA25pbAUEdW5pdAFpAQ1idXJuX2ludGVybmFsAQhhc3NldF9pZAMJAQEhAQkBD2NoZWNrX3doaXRlbGlzdAEIBQFpBmNhbGxlcgkAAgECF0NhbGxlciBub3QgaW4gd2hpdGVsaXN0BAVidXJuMAkA/AcEBRRuZnRfY3JlYXRpb25fYWRkcmVzcwIHYnVybk5GVAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFCGFzc2V0X2lkAAEFA25pbAMJAAACBQVidXJuMAUFYnVybjAJAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBGJ1cm4AAwkBASEBCQEPY2hlY2tfd2hpdGVsaXN0AQgFAWkGY2FsbGVyCQACAQIXQ2FsbGVyIG5vdCBpbiB3aGl0ZWxpc3QEBWJ1cm4wCQD8BwQFFG5mdF9jcmVhdGlvbl9hZGRyZXNzAgdidXJuTkZUBQNuaWwJAMwIAgkAkQMCCAUBaQhwYXltZW50cwAABQNuaWwDCQAAAgUFYnVybjAFBWJ1cm4wCQCUCgIFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQltaW50X3NvbmcVBG5hbWUIcGFyZW50XzAIcGFyZW50XzEDYnBtCGJhcl9zaXplCWJlYXRfc2l6ZQh0b25hbGl0eQZjaG9yZHMIYXJwZWdnaW8Pa2lja19pbnN0cnVtZW50EHNuYXJlX2luc3RydW1lbnQQaGloYXRfaW5zdHJ1bWVudA9iYXNzX2luc3RydW1lbnQPYmFja19pbnN0cnVtZW50D2xlYWRfaW5zdHJ1bWVudAxraWNrX3JoeXRobXMNc25hcmVfcmh5dGhtcw1oaWhhdF9yaHl0aG1zDGJhc3Nfcmh5dGhtcwxiYWNrX3JoeXRobXMMbGVhZF9yaHl0aG1zAwkBASEBCQEPY2hlY2tfd2hpdGVsaXN0AQgFAWkGY2FsbGVyCQACAQIXQ2FsbGVyIG5vdCBpbiB3aGl0ZWxpc3QDCQECIT0CCQCQAwEFBmNob3JkcwAICQACAQIRV3JvbmcgY2hvcmRzIHNpemUDCQECIT0CCQCQAwEFDGtpY2tfcmh5dGhtcwAICQACAQIXV3Jvbmcga2ljayByaHl0aG1zIHNpemUDCQECIT0CCQCQAwEFDXNuYXJlX3JoeXRobXMACAkAAgECGFdyb25nIHNuYXJlIHJoeXRobXMgc2l6ZQMJAQIhPQIJAJADAQUNaGloYXRfcmh5dGhtcwAICQACAQIYV3JvbmcgaGloYXQgcmh5dGhtcyBzaXplAwkBAiE9AgkAkAMBBQxiYXNzX3JoeXRobXMACAkAAgECF1dyb25nIGJhc3Mgcmh5dGhtcyBzaXplAwkBAiE9AgkAkAMBBQxiYWNrX3JoeXRobXMACAkAAgECF1dyb25nIGJhY2sgcmh5dGhtcyBzaXplAwkBAiE9AgkAkAMBBQxsZWFkX3JoeXRobXMACAkAAgECF1dyb25nIGxlYWQgcmh5dGhtcyBzaXplBAFuBAckbWF0Y2gwCQCfCAECBWNvdW50AwkAAQIFByRtYXRjaDACA0ludAQBagUHJG1hdGNoMAUBagAABApuYW1lX3Nob3J0CQCvAgIFBG5hbWUAEAQLZGVzY3JpcHRpb24FEG1pbnRfZGVzY3JpcHRpb24ECmNvbGxlY3Rpb24FD21pbnRfY29sbGVjdGlvbgQCaWQEByRtYXRjaDAJAPwHBAUUbmZ0X2NyZWF0aW9uX2FkZHJlc3MCCWNyZWF0ZU5GVAkAzAgCBQpuYW1lX3Nob3J0CQDMCAIFC2Rlc2NyaXB0aW9uCQDMCAIJARFAZXh0ck5hdGl2ZSgxMDU4KQECEW1hcmtldF9pbWFnZV9saW5rCQDMCAIFCmNvbGxlY3Rpb24FA25pbAUDbmlsAwkAAQIFByRtYXRjaDACBlN0cmluZwQBeAUHJG1hdGNoMAUBeAkAAgECE05GVCBjcmVhdGlvbiBmYWlsZWQDCQAAAgUCaWQFAmlkBANrZXkJAQZ0b19rZXkBBQFuBAt0eF90cmFuc2ZlcgMJAQIhPQIFBHRoaXMIBQFpBmNhbGxlcgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEICAUBaQZjYWxsZXIFYnl0ZXMAAQkA2QQBBQJpZAUDbmlsBQNuaWwJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCAgVjb3VudAkAZAIFAW4AAQkAzAgCCQELU3RyaW5nRW50cnkCBQJpZAUDa2V5CQDMCAIJAQtTdHJpbmdFbnRyeQIFA2tleQUCaWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgJfRwABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgNfU0wFBG5hbWUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgNfU04AAAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIEX1NQMAUIcGFyZW50XzAJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TUDEFCHBhcmVudF8xCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFA2tleQIEX1NCMAUDYnBtCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFA2tleQIEX1NCMQUIYmFyX3NpemUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgRfU0IyBQliZWF0X3NpemUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUDa2V5AgNfU1QFCHRvbmFsaXR5CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0MwCQCRAwIFBmNob3JkcwAACQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0MxCQCRAwIFBmNob3JkcwABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0MyCQCRAwIFBmNob3JkcwACCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0MzCQCRAwIFBmNob3JkcwADCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0M0CQCRAwIFBmNob3JkcwAECQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0M1CQCRAwIFBmNob3JkcwAFCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0M2CQCRAwIFBmNob3JkcwAGCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0M3CQCRAwIFBmNob3JkcwAHCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgNfU0EFCGFycGVnZ2lvCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0kwBQ9raWNrX2luc3RydW1lbnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TSTEFEHNuYXJlX2luc3RydW1lbnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TSTIFEGhpaGF0X2luc3RydW1lbnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBF9TSTMFD2Jhc3NfaW5zdHJ1bWVudAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIEX1NJNAUPYmFja19pbnN0cnVtZW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgRfU0k1BQ9sZWFkX2luc3RydW1lbnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTAwCQCRAwIFDGtpY2tfcmh5dGhtcwAACQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kwMQkAkQMCBQxraWNrX3JoeXRobXMAAQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMDIJAJEDAgUMa2lja19yaHl0aG1zAAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTAzCQCRAwIFDGtpY2tfcmh5dGhtcwADCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kwNAkAkQMCBQxraWNrX3JoeXRobXMABAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMDUJAJEDAgUMa2lja19yaHl0aG1zAAUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTA2CQCRAwIFDGtpY2tfcmh5dGhtcwAGCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kwNwkAkQMCBQxraWNrX3JoeXRobXMABwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMTAJAJEDAgUNc25hcmVfcmh5dGhtcwAACQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kxMQkAkQMCBQ1zbmFyZV9yaHl0aG1zAAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTEyCQCRAwIFDXNuYXJlX3JoeXRobXMAAgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMTMJAJEDAgUNc25hcmVfcmh5dGhtcwADCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kxNAkAkQMCBQ1zbmFyZV9yaHl0aG1zAAQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTE1CQCRAwIFDXNuYXJlX3JoeXRobXMABQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMTYJAJEDAgUNc25hcmVfcmh5dGhtcwAGCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kxNwkAkQMCBQ1zbmFyZV9yaHl0aG1zAAcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTIwCQCRAwIFDWhpaGF0X3JoeXRobXMAAAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMjEJAJEDAgUNaGloYXRfcmh5dGhtcwABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kyMgkAkQMCBQ1oaWhhdF9yaHl0aG1zAAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTIzCQCRAwIFDWhpaGF0X3JoeXRobXMAAwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMjQJAJEDAgUNaGloYXRfcmh5dGhtcwAECQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kyNQkAkQMCBQ1oaWhhdF9yaHl0aG1zAAUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTI2CQCRAwIFDWhpaGF0X3JoeXRobXMABgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMjcJAJEDAgUNaGloYXRfcmh5dGhtcwAHCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kzMAkAkQMCBQxiYXNzX3JoeXRobXMAAAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMzEJAJEDAgUMYmFzc19yaHl0aG1zAAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTMyCQCRAwIFDGJhc3Nfcmh5dGhtcwACCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kzMwkAkQMCBQxiYXNzX3JoeXRobXMAAwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMzQJAJEDAgUMYmFzc19yaHl0aG1zAAQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTM1CQCRAwIFDGJhc3Nfcmh5dGhtcwAFCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0kzNgkAkQMCBQxiYXNzX3JoeXRobXMABgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJMzcJAJEDAgUMYmFzc19yaHl0aG1zAAcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTQwCQCRAwIFDGJhY2tfcmh5dGhtcwAACQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0k0MQkAkQMCBQxiYWNrX3JoeXRobXMAAQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNDIJAJEDAgUMYmFja19yaHl0aG1zAAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTQzCQCRAwIFDGJhY2tfcmh5dGhtcwADCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0k0NAkAkQMCBQxiYWNrX3JoeXRobXMABAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNDUJAJEDAgUMYmFja19yaHl0aG1zAAUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTQ2CQCRAwIFDGJhY2tfcmh5dGhtcwAGCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0k0NwkAkQMCBQxiYWNrX3JoeXRobXMABwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNTAJAJEDAgUMbGVhZF9yaHl0aG1zAAAJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTUxCQCRAwIFDGxlYWRfcmh5dGhtcwABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0k1MgkAkQMCBQxsZWFkX3JoeXRobXMAAgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNTMJAJEDAgUMbGVhZF9yaHl0aG1zAAMJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTU0CQCRAwIFDGxlYWRfcmh5dGhtcwAECQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUDa2V5AgVfU0k1NQkAkQMCBQxsZWFkX3JoeXRobXMABQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFA2tleQIFX1NJNTYJAJEDAgUMbGVhZF9yaHl0aG1zAAYJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQNrZXkCBV9TSTU3CQCRAwIFDGxlYWRfcmh5dGhtcwAHBQNuaWwFC3R4X3RyYW5zZmVyBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAJOTpVQ=", "height": 3377751, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4EBKauyk2MXwBmTPgAu4vpdAK2ThxmFhKVeNe7vdZWwA Next: 9bRfAs8GEqNahjWqv5eYPXMcYP3FSxyRXopdx7Qffwth Diff:
OldNewDifferences
238238 }
239239
240240
241-
242-@Callable(i)
243-func mint_hybrid (song_0,song_1) = {
244- let caller_addr = Address(i.caller.bytes)
245- let song_0_id = fromBase58String(getStringValue(song_0))
246- let song_1_id = fromBase58String(getStringValue(song_1))
247- let price_amount = getIntegerValue("price_hybrid_amount")
248- let price_token = getStringValue("price_hybrid_token")
249- let price_change = hybrid_calculate_change(i, price_token, price_amount)
250- if ((0 > price_change))
251- then throw("Wrong payment")
252- else if ((song_0_id == song_1_id))
253- then throw("Songs should be different")
254- else if ((1 > assetBalance(caller_addr, song_0_id)))
255- then throw("Caller do not own first song")
256- else if ((1 > assetBalance(caller_addr, song_1_id)))
257- then throw("Caller do not own second song")
258- else {
259- let mint_count = match getInteger("mint_count") {
260- case j: Int =>
261- j
262- case _ =>
263- 0
264- }
265- let price_count_inc = IntegerEntry("mint_count", (mint_count + 1))
266- let price_increase = if (((mint_count % price_increase_period) == (price_increase_period - 1)))
267- then [price_count_inc, IntegerEntry("price_hybrid_amount", (price_amount + getIntegerValue("price_hybrid_increment")))]
268- else [price_count_inc]
269- if ((price_change > 0))
270- then $Tuple2(((make_hybrid_tx(i, song_0, song_1) ++ price_increase) ++ [ScriptTransfer(Address(i.caller.bytes), price_change, if ((price_token == ""))
271- then unit
272- else fromBase58String(price_token))]), unit)
273- else $Tuple2((make_hybrid_tx(i, song_0, song_1) ++ price_increase), unit)
274- }
275- }
276-
277-
278-
279-@Callable(i)
280-func mint_hybrid_and_burn () = if (if (if ((size(i.payments) != 2))
281- then true
282- else (i.payments[0].amount != 1))
283- then true
284- else (i.payments[1].amount != 1))
285- then throw("Wrong payment")
286- else {
287- let song_0_id = match i.payments[0].assetId {
288- case b: ByteVector =>
289- b
290- case _ =>
291- throw("Wrong payment")
292- }
293- let song_1_id = match i.payments[1].assetId {
294- case b: ByteVector =>
295- b
296- case _ =>
297- throw("Wrong payment")
298- }
299- if ((song_0_id == song_1_id))
300- then throw("Songs should be different")
301- else {
302- let song_0 = getStringValue(toBase58String(song_0_id))
303- let song_1 = getStringValue(toBase58String(song_1_id))
304- let burn0 = invoke(nft_creation_address, "burnNFT", nil, [i.payments[0]])
305- if ((burn0 == burn0))
306- then {
307- let burn1 = invoke(nft_creation_address, "burnNFT", nil, [i.payments[1]])
308- if ((burn1 == burn1))
309- then $Tuple2(make_hybrid_tx(i, song_0, song_1), unit)
310- else throw("Strict value is not equal to itself.")
311- }
312- else throw("Strict value is not equal to itself.")
313- }
314- }
315-
316-
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let nft_creation_address = Address(base58'3PFQjjDMiZKQZdu5JqTHD7HwgSXyp9Rw9By')
55
66 let price_increase_period = 10
77
88 let mint_collection = "Clef genesis songs"
99
1010 let mint_description = "Genesis Clef song. This melody is crafted to become your electronic jam. Use it on clef.one 💚🤍"
1111
1212 let hybrid_collection = "Clef mixes"
1313
1414 let hybrid_description = "Clef mix. This melody was created by an algorithm. Enjoy this jam or use it on clef.one"
1515
1616 func to_key (n) = toBase58String(toBytes(n))
1717
1818
1919 func unique_bytes (i) = ((((i.transactionId + i.callerPublicKey) + lastBlock.generationSignature) + toBytes(lastBlock.timestamp)) + toBytes(lastBlock.height))
2020
2121
2222 func random_uint (bytes,nonce) = {
2323 let n = toInt(sha256_16Kb((bytes + toBytes(nonce))))
2424 if ((0 > n))
2525 then -(n)
2626 else n
2727 }
2828
2929
3030 func pick_one (key_0,key_1,rand_int,bit_power) = if ((((rand_int / bit_power) % 2) == 0))
3131 then key_0
3232 else key_1
3333
3434
3535 func hybrid_calculate_change (i,token,amount) = if ((size(i.payments) != 1))
3636 then -1
3737 else {
3838 let p = i.payments[0]
3939 let p_token = match p.assetId {
4040 case id: ByteVector =>
4141 toBase58String(id)
4242 case _ =>
4343 ""
4444 }
4545 if ((p_token != token))
4646 then -1
4747 else (p.amount - amount)
4848 }
4949
5050
5151 func make_hybrid_tx (i,song_0,song_1) = {
5252 let n = match getInteger("count") {
5353 case j: Int =>
5454 j
5555 case _ =>
5656 0
5757 }
5858 let name_short = take(("Clef " + toString(n)), 16)
5959 let description = hybrid_description
6060 let collection = hybrid_collection
6161 let id = match invoke(nft_creation_address, "createNFT", [name_short, description, getStringValue("market_image_link"), collection], nil) {
6262 case x: String =>
6363 x
6464 case _ =>
6565 throw("NFT creation failed")
6666 }
6767 if ((id == id))
6868 then {
6969 let id_b = fromBase58String(id)
7070 let key = to_key(n)
7171 let bytes = unique_bytes(i)
7272 let rand_0 = random_uint(bytes, 0)
7373 let rand_1 = random_uint(bytes, 1)
7474 [IntegerEntry("count", (n + 1)), StringEntry(id, key), StringEntry(key, id), IntegerEntry((key + "_G"), (max([getIntegerValue((song_0 + "_G")), getIntegerValue((song_1 + "_G"))]) + 1)), StringEntry((key + "_SL"), ""), IntegerEntry((key + "_SN"), rand_0), StringEntry((key + "_SP0"), song_0), StringEntry((key + "_SP1"), song_1), IntegerEntry((key + "_SB0"), getIntegerValue((pick_one(song_0, song_1, rand_0, 1) + "_SB0"))), IntegerEntry((key + "_SB1"), getIntegerValue((pick_one(song_0, song_1, rand_0, 2) + "_SB1"))), IntegerEntry((key + "_SB2"), getIntegerValue((pick_one(song_0, song_1, rand_0, 4) + "_SB2"))), IntegerEntry((key + "_ST"), getIntegerValue((pick_one(song_0, song_1, rand_0, 8) + "_ST"))), StringEntry((key + "_SC0"), getStringValue((pick_one(song_0, song_1, rand_0, 16) + "_SC0"))), StringEntry((key + "_SC1"), getStringValue((pick_one(song_0, song_1, rand_0, 32) + "_SC1"))), StringEntry((key + "_SC2"), getStringValue((pick_one(song_0, song_1, rand_0, 64) + "_SC2"))), StringEntry((key + "_SC3"), getStringValue((pick_one(song_0, song_1, rand_0, 128) + "_SC3"))), StringEntry((key + "_SC4"), getStringValue((pick_one(song_0, song_1, rand_0, 512) + "_SC4"))), StringEntry((key + "_SC5"), getStringValue((pick_one(song_0, song_1, rand_0, 1024) + "_SC5"))), StringEntry((key + "_SC6"), getStringValue((pick_one(song_0, song_1, rand_0, 2048) + "_SC6"))), StringEntry((key + "_SC7"), getStringValue((pick_one(song_0, song_1, rand_0, 4096) + "_SC7"))), StringEntry((key + "_SA"), getStringValue((pick_one(song_0, song_1, rand_0, 8192) + "_SA"))), StringEntry((key + "_SI0"), getStringValue((pick_one(song_0, song_1, rand_0, 16384) + "_SI0"))), StringEntry((key + "_SI1"), getStringValue((pick_one(song_0, song_1, rand_0, 32768) + "_SI1"))), StringEntry((key + "_SI2"), getStringValue((pick_one(song_0, song_1, rand_0, 65536) + "_SI2"))), StringEntry((key + "_SI3"), getStringValue((pick_one(song_0, song_1, rand_0, 131072) + "_SI3"))), StringEntry((key + "_SI4"), getStringValue((pick_one(song_0, song_1, rand_0, 262144) + "_SI4"))), StringEntry((key + "_SI5"), getStringValue((pick_one(song_0, song_1, rand_0, 524288) + "_SI5"))), StringEntry((key + "_SI50"), getStringValue((pick_one(song_0, song_1, rand_0, 1048576) + "_SI50"))), StringEntry((key + "_SI51"), getStringValue((pick_one(song_0, song_1, rand_0, 2097152) + "_SI51"))), StringEntry((key + "_SI52"), getStringValue((pick_one(song_0, song_1, rand_0, 4194304) + "_SI52"))), StringEntry((key + "_SI53"), getStringValue((pick_one(song_0, song_1, rand_0, 8388608) + "_SI53"))), StringEntry((key + "_SI54"), getStringValue((pick_one(song_0, song_1, rand_0, 16777216) + "_SI54"))), StringEntry((key + "_SI55"), getStringValue((pick_one(song_0, song_1, rand_0, 33554432) + "_SI55"))), StringEntry((key + "_SI56"), getStringValue((pick_one(song_0, song_1, rand_0, 67108864) + "_SI56"))), StringEntry((key + "_SI57"), getStringValue((pick_one(song_0, song_1, rand_0, 134217728) + "_SI57"))), StringEntry((key + "_SI00"), getStringValue((pick_one(song_0, song_1, rand_0, 268435456) + "_SI00"))), StringEntry((key + "_SI01"), getStringValue((pick_one(song_0, song_1, rand_0, 536870912) + "_SI01"))), StringEntry((key + "_SI02"), getStringValue((pick_one(song_0, song_1, rand_0, 1073741824) + "_SI02"))), StringEntry((key + "_SI03"), getStringValue((pick_one(song_0, song_1, rand_0, 2147483648) + "_SI03"))), StringEntry((key + "_SI04"), getStringValue((pick_one(song_0, song_1, rand_0, 4294967296) + "_SI04"))), StringEntry((key + "_SI05"), getStringValue((pick_one(song_0, song_1, rand_0, 8589934592) + "_SI05"))), StringEntry((key + "_SI06"), getStringValue((pick_one(song_0, song_1, rand_1, 1) + "_SI06"))), StringEntry((key + "_SI07"), getStringValue((pick_one(song_0, song_1, rand_1, 2) + "_SI07"))), StringEntry((key + "_SI10"), getStringValue((pick_one(song_0, song_1, rand_1, 4) + "_SI10"))), StringEntry((key + "_SI11"), getStringValue((pick_one(song_0, song_1, rand_1, 8) + "_SI11"))), StringEntry((key + "_SI12"), getStringValue((pick_one(song_0, song_1, rand_1, 16) + "_SI12"))), StringEntry((key + "_SI13"), getStringValue((pick_one(song_0, song_1, rand_1, 32) + "_SI13"))), StringEntry((key + "_SI14"), getStringValue((pick_one(song_0, song_1, rand_1, 64) + "_SI14"))), StringEntry((key + "_SI15"), getStringValue((pick_one(song_0, song_1, rand_1, 128) + "_SI15"))), StringEntry((key + "_SI16"), getStringValue((pick_one(song_0, song_1, rand_1, 256) + "_SI16"))), StringEntry((key + "_SI17"), getStringValue((pick_one(song_0, song_1, rand_1, 512) + "_SI17"))), StringEntry((key + "_SI20"), getStringValue((pick_one(song_0, song_1, rand_1, 1024) + "_SI20"))), StringEntry((key + "_SI21"), getStringValue((pick_one(song_0, song_1, rand_1, 2048) + "_SI21"))), StringEntry((key + "_SI22"), getStringValue((pick_one(song_0, song_1, rand_1, 4096) + "_SI22"))), StringEntry((key + "_SI23"), getStringValue((pick_one(song_0, song_1, rand_1, 8192) + "_SI23"))), StringEntry((key + "_SI24"), getStringValue((pick_one(song_0, song_1, rand_1, 16384) + "_SI24"))), StringEntry((key + "_SI25"), getStringValue((pick_one(song_0, song_1, rand_1, 32768) + "_SI25"))), StringEntry((key + "_SI26"), getStringValue((pick_one(song_0, song_1, rand_1, 65536) + "_SI26"))), StringEntry((key + "_SI27"), getStringValue((pick_one(song_0, song_1, rand_1, 131072) + "_SI27"))), StringEntry((key + "_SI30"), getStringValue((pick_one(song_0, song_1, rand_1, 262144) + "_SI30"))), StringEntry((key + "_SI31"), getStringValue((pick_one(song_0, song_1, rand_1, 524288) + "_SI31"))), StringEntry((key + "_SI32"), getStringValue((pick_one(song_0, song_1, rand_1, 1048576) + "_SI32"))), StringEntry((key + "_SI33"), getStringValue((pick_one(song_0, song_1, rand_1, 2097152) + "_SI33"))), StringEntry((key + "_SI34"), getStringValue((pick_one(song_0, song_1, rand_1, 4194304) + "_SI34"))), StringEntry((key + "_SI35"), getStringValue((pick_one(song_0, song_1, rand_1, 8388608) + "_SI35"))), StringEntry((key + "_SI36"), getStringValue((pick_one(song_0, song_1, rand_1, 16777216) + "_SI36"))), StringEntry((key + "_SI37"), getStringValue((pick_one(song_0, song_1, rand_1, 33554432) + "_SI37"))), StringEntry((key + "_SI40"), getStringValue((pick_one(song_0, song_1, rand_1, 67108864) + "_SI40"))), StringEntry((key + "_SI41"), getStringValue((pick_one(song_0, song_1, rand_1, 134217728) + "_SI41"))), StringEntry((key + "_SI42"), getStringValue((pick_one(song_0, song_1, rand_1, 268435456) + "_SI42"))), StringEntry((key + "_SI43"), getStringValue((pick_one(song_0, song_1, rand_1, 536870912) + "_SI43"))), StringEntry((key + "_SI44"), getStringValue((pick_one(song_0, song_1, rand_1, 1073741824) + "_SI44"))), StringEntry((key + "_SI45"), getStringValue((pick_one(song_0, song_1, rand_1, 2147483648) + "_SI45"))), StringEntry((key + "_SI46"), getStringValue((pick_one(song_0, song_1, rand_1, 4294967296) + "_SI46"))), StringEntry((key + "_SI47"), getStringValue((pick_one(song_0, song_1, rand_1, 8589934592) + "_SI47"))), ScriptTransfer(Address(i.caller.bytes), 1, id_b)]
7575 }
7676 else throw("Strict value is not equal to itself.")
7777 }
7878
7979
8080 func check_whitelist (caller) = if ((this == caller))
8181 then true
8282 else match getBoolean(("W_" + toBase58String(caller.bytes))) {
8383 case x: Boolean =>
8484 x
8585 case _ =>
8686 false
8787 }
8888
8989
9090 @Callable(i)
9191 func whitelist_add (user) = if ((this != i.caller))
9292 then throw("Caller is not dApp owner")
9393 else $Tuple2([BooleanEntry(("W_" + user), true)], unit)
9494
9595
9696
9797 @Callable(i)
9898 func whitelist_remove (user) = if ((this != i.caller))
9999 then throw("Caller is not dApp owner")
100100 else $Tuple2([DeleteEntry(("W_" + user))], unit)
101101
102102
103103
104104 @Callable(i)
105105 func set_market_image (url) = if (!(check_whitelist(i.caller)))
106106 then throw("Caller not in whitelist")
107107 else $Tuple2([StringEntry("market_image_link", url)], unit)
108108
109109
110110
111111 @Callable(i)
112112 func set_price_hybrid (token,amount,increment) = if (!(check_whitelist(i.caller)))
113113 then throw("Caller not in whitelist")
114114 else $Tuple2([StringEntry("price_hybrid_token", token), IntegerEntry("price_hybrid_amount", amount), IntegerEntry("price_hybrid_increment", increment)], unit)
115115
116116
117117
118118 @Callable(i)
119119 func mint_chord (index,name,notes) = if (!(check_whitelist(i.caller)))
120120 then throw("Caller not in whitelist")
121121 else if ((size(notes) != 5))
122122 then throw("Wrong notes size")
123123 else {
124124 let n = match getInteger("count") {
125125 case j: Int =>
126126 j
127127 case _ =>
128128 0
129129 }
130130 let key = to_key(index)
131131 $Tuple2([IntegerEntry("count", max([(index + 1), n])), StringEntry((key + "_CL"), name), IntegerEntry((key + "_C0"), notes[0]), IntegerEntry((key + "_C1"), notes[1]), IntegerEntry((key + "_C2"), notes[2]), IntegerEntry((key + "_C3"), notes[3]), IntegerEntry((key + "_C4"), notes[4])], unit)
132132 }
133133
134134
135135
136136 @Callable(i)
137137 func mint_arpeggio (index,name,notes) = if (!(check_whitelist(i.caller)))
138138 then throw("Caller not in whitelist")
139139 else if ((size(notes) != 16))
140140 then throw("Wrong notes size")
141141 else {
142142 let n = match getInteger("count") {
143143 case j: Int =>
144144 j
145145 case _ =>
146146 0
147147 }
148148 let key = to_key(index)
149149 $Tuple2([IntegerEntry("count", max([(index + 1), n])), StringEntry((key + "_AL"), name), IntegerEntry((key + "_A00"), notes[0]), IntegerEntry((key + "_A01"), notes[1]), IntegerEntry((key + "_A02"), notes[2]), IntegerEntry((key + "_A03"), notes[3]), IntegerEntry((key + "_A04"), notes[4]), IntegerEntry((key + "_A05"), notes[5]), IntegerEntry((key + "_A06"), notes[6]), IntegerEntry((key + "_A07"), notes[7]), IntegerEntry((key + "_A08"), notes[8]), IntegerEntry((key + "_A09"), notes[9]), IntegerEntry((key + "_A10"), notes[10]), IntegerEntry((key + "_A11"), notes[11]), IntegerEntry((key + "_A12"), notes[12]), IntegerEntry((key + "_A13"), notes[13]), IntegerEntry((key + "_A14"), notes[14]), IntegerEntry((key + "_A15"), notes[15])], unit)
150150 }
151151
152152
153153
154154 @Callable(i)
155155 func mint_rhythm (index,name,scale,notes) = if (!(check_whitelist(i.caller)))
156156 then throw("Caller not in whitelist")
157157 else if ((size(notes) != 16))
158158 then throw("Wrong notes size")
159159 else {
160160 let n = match getInteger("count") {
161161 case j: Int =>
162162 j
163163 case _ =>
164164 0
165165 }
166166 let key = to_key(index)
167167 $Tuple2([IntegerEntry("count", max([(index + 1), n])), StringEntry((key + "_RL"), name), IntegerEntry((key + "_RS"), scale), IntegerEntry((key + "_R00"), notes[0]), IntegerEntry((key + "_R01"), notes[1]), IntegerEntry((key + "_R02"), notes[2]), IntegerEntry((key + "_R03"), notes[3]), IntegerEntry((key + "_R04"), notes[4]), IntegerEntry((key + "_R05"), notes[5]), IntegerEntry((key + "_R06"), notes[6]), IntegerEntry((key + "_R07"), notes[7]), IntegerEntry((key + "_R08"), notes[8]), IntegerEntry((key + "_R09"), notes[9]), IntegerEntry((key + "_R10"), notes[10]), IntegerEntry((key + "_R11"), notes[11]), IntegerEntry((key + "_R12"), notes[12]), IntegerEntry((key + "_R13"), notes[13]), IntegerEntry((key + "_R14"), notes[14]), IntegerEntry((key + "_R15"), notes[15])], unit)
168168 }
169169
170170
171171
172172 @Callable(i)
173173 func burn_internal (asset_id) = if (!(check_whitelist(i.caller)))
174174 then throw("Caller not in whitelist")
175175 else {
176176 let burn0 = invoke(nft_creation_address, "burnNFT", nil, [AttachedPayment(fromBase58String(asset_id), 1)])
177177 if ((burn0 == burn0))
178178 then $Tuple2(nil, unit)
179179 else throw("Strict value is not equal to itself.")
180180 }
181181
182182
183183
184184 @Callable(i)
185185 func burn () = if (!(check_whitelist(i.caller)))
186186 then throw("Caller not in whitelist")
187187 else {
188188 let burn0 = invoke(nft_creation_address, "burnNFT", nil, [i.payments[0]])
189189 if ((burn0 == burn0))
190190 then $Tuple2(nil, unit)
191191 else throw("Strict value is not equal to itself.")
192192 }
193193
194194
195195
196196 @Callable(i)
197197 func mint_song (name,parent_0,parent_1,bpm,bar_size,beat_size,tonality,chords,arpeggio,kick_instrument,snare_instrument,hihat_instrument,bass_instrument,back_instrument,lead_instrument,kick_rhythms,snare_rhythms,hihat_rhythms,bass_rhythms,back_rhythms,lead_rhythms) = if (!(check_whitelist(i.caller)))
198198 then throw("Caller not in whitelist")
199199 else if ((size(chords) != 8))
200200 then throw("Wrong chords size")
201201 else if ((size(kick_rhythms) != 8))
202202 then throw("Wrong kick rhythms size")
203203 else if ((size(snare_rhythms) != 8))
204204 then throw("Wrong snare rhythms size")
205205 else if ((size(hihat_rhythms) != 8))
206206 then throw("Wrong hihat rhythms size")
207207 else if ((size(bass_rhythms) != 8))
208208 then throw("Wrong bass rhythms size")
209209 else if ((size(back_rhythms) != 8))
210210 then throw("Wrong back rhythms size")
211211 else if ((size(lead_rhythms) != 8))
212212 then throw("Wrong lead rhythms size")
213213 else {
214214 let n = match getInteger("count") {
215215 case j: Int =>
216216 j
217217 case _ =>
218218 0
219219 }
220220 let name_short = take(name, 16)
221221 let description = mint_description
222222 let collection = mint_collection
223223 let id = match invoke(nft_creation_address, "createNFT", [name_short, description, getStringValue("market_image_link"), collection], nil) {
224224 case x: String =>
225225 x
226226 case _ =>
227227 throw("NFT creation failed")
228228 }
229229 if ((id == id))
230230 then {
231231 let key = to_key(n)
232232 let tx_transfer = if ((this != i.caller))
233233 then [ScriptTransfer(Address(i.caller.bytes), 1, fromBase58String(id))]
234234 else nil
235235 $Tuple2(([IntegerEntry("count", (n + 1)), StringEntry(id, key), StringEntry(key, id), IntegerEntry((key + "_G"), 1), StringEntry((key + "_SL"), name), IntegerEntry((key + "_SN"), 0), StringEntry((key + "_SP0"), parent_0), StringEntry((key + "_SP1"), parent_1), IntegerEntry((key + "_SB0"), bpm), IntegerEntry((key + "_SB1"), bar_size), IntegerEntry((key + "_SB2"), beat_size), IntegerEntry((key + "_ST"), tonality), StringEntry((key + "_SC0"), chords[0]), StringEntry((key + "_SC1"), chords[1]), StringEntry((key + "_SC2"), chords[2]), StringEntry((key + "_SC3"), chords[3]), StringEntry((key + "_SC4"), chords[4]), StringEntry((key + "_SC5"), chords[5]), StringEntry((key + "_SC6"), chords[6]), StringEntry((key + "_SC7"), chords[7]), StringEntry((key + "_SA"), arpeggio), StringEntry((key + "_SI0"), kick_instrument), StringEntry((key + "_SI1"), snare_instrument), StringEntry((key + "_SI2"), hihat_instrument), StringEntry((key + "_SI3"), bass_instrument), StringEntry((key + "_SI4"), back_instrument), StringEntry((key + "_SI5"), lead_instrument), StringEntry((key + "_SI00"), kick_rhythms[0]), StringEntry((key + "_SI01"), kick_rhythms[1]), StringEntry((key + "_SI02"), kick_rhythms[2]), StringEntry((key + "_SI03"), kick_rhythms[3]), StringEntry((key + "_SI04"), kick_rhythms[4]), StringEntry((key + "_SI05"), kick_rhythms[5]), StringEntry((key + "_SI06"), kick_rhythms[6]), StringEntry((key + "_SI07"), kick_rhythms[7]), StringEntry((key + "_SI10"), snare_rhythms[0]), StringEntry((key + "_SI11"), snare_rhythms[1]), StringEntry((key + "_SI12"), snare_rhythms[2]), StringEntry((key + "_SI13"), snare_rhythms[3]), StringEntry((key + "_SI14"), snare_rhythms[4]), StringEntry((key + "_SI15"), snare_rhythms[5]), StringEntry((key + "_SI16"), snare_rhythms[6]), StringEntry((key + "_SI17"), snare_rhythms[7]), StringEntry((key + "_SI20"), hihat_rhythms[0]), StringEntry((key + "_SI21"), hihat_rhythms[1]), StringEntry((key + "_SI22"), hihat_rhythms[2]), StringEntry((key + "_SI23"), hihat_rhythms[3]), StringEntry((key + "_SI24"), hihat_rhythms[4]), StringEntry((key + "_SI25"), hihat_rhythms[5]), StringEntry((key + "_SI26"), hihat_rhythms[6]), StringEntry((key + "_SI27"), hihat_rhythms[7]), StringEntry((key + "_SI30"), bass_rhythms[0]), StringEntry((key + "_SI31"), bass_rhythms[1]), StringEntry((key + "_SI32"), bass_rhythms[2]), StringEntry((key + "_SI33"), bass_rhythms[3]), StringEntry((key + "_SI34"), bass_rhythms[4]), StringEntry((key + "_SI35"), bass_rhythms[5]), StringEntry((key + "_SI36"), bass_rhythms[6]), StringEntry((key + "_SI37"), bass_rhythms[7]), StringEntry((key + "_SI40"), back_rhythms[0]), StringEntry((key + "_SI41"), back_rhythms[1]), StringEntry((key + "_SI42"), back_rhythms[2]), StringEntry((key + "_SI43"), back_rhythms[3]), StringEntry((key + "_SI44"), back_rhythms[4]), StringEntry((key + "_SI45"), back_rhythms[5]), StringEntry((key + "_SI46"), back_rhythms[6]), StringEntry((key + "_SI47"), back_rhythms[7]), StringEntry((key + "_SI50"), lead_rhythms[0]), StringEntry((key + "_SI51"), lead_rhythms[1]), StringEntry((key + "_SI52"), lead_rhythms[2]), StringEntry((key + "_SI53"), lead_rhythms[3]), StringEntry((key + "_SI54"), lead_rhythms[4]), StringEntry((key + "_SI55"), lead_rhythms[5]), StringEntry((key + "_SI56"), lead_rhythms[6]), StringEntry((key + "_SI57"), lead_rhythms[7])] ++ tx_transfer), unit)
236236 }
237237 else throw("Strict value is not equal to itself.")
238238 }
239239
240240
241-
242-@Callable(i)
243-func mint_hybrid (song_0,song_1) = {
244- let caller_addr = Address(i.caller.bytes)
245- let song_0_id = fromBase58String(getStringValue(song_0))
246- let song_1_id = fromBase58String(getStringValue(song_1))
247- let price_amount = getIntegerValue("price_hybrid_amount")
248- let price_token = getStringValue("price_hybrid_token")
249- let price_change = hybrid_calculate_change(i, price_token, price_amount)
250- if ((0 > price_change))
251- then throw("Wrong payment")
252- else if ((song_0_id == song_1_id))
253- then throw("Songs should be different")
254- else if ((1 > assetBalance(caller_addr, song_0_id)))
255- then throw("Caller do not own first song")
256- else if ((1 > assetBalance(caller_addr, song_1_id)))
257- then throw("Caller do not own second song")
258- else {
259- let mint_count = match getInteger("mint_count") {
260- case j: Int =>
261- j
262- case _ =>
263- 0
264- }
265- let price_count_inc = IntegerEntry("mint_count", (mint_count + 1))
266- let price_increase = if (((mint_count % price_increase_period) == (price_increase_period - 1)))
267- then [price_count_inc, IntegerEntry("price_hybrid_amount", (price_amount + getIntegerValue("price_hybrid_increment")))]
268- else [price_count_inc]
269- if ((price_change > 0))
270- then $Tuple2(((make_hybrid_tx(i, song_0, song_1) ++ price_increase) ++ [ScriptTransfer(Address(i.caller.bytes), price_change, if ((price_token == ""))
271- then unit
272- else fromBase58String(price_token))]), unit)
273- else $Tuple2((make_hybrid_tx(i, song_0, song_1) ++ price_increase), unit)
274- }
275- }
276-
277-
278-
279-@Callable(i)
280-func mint_hybrid_and_burn () = if (if (if ((size(i.payments) != 2))
281- then true
282- else (i.payments[0].amount != 1))
283- then true
284- else (i.payments[1].amount != 1))
285- then throw("Wrong payment")
286- else {
287- let song_0_id = match i.payments[0].assetId {
288- case b: ByteVector =>
289- b
290- case _ =>
291- throw("Wrong payment")
292- }
293- let song_1_id = match i.payments[1].assetId {
294- case b: ByteVector =>
295- b
296- case _ =>
297- throw("Wrong payment")
298- }
299- if ((song_0_id == song_1_id))
300- then throw("Songs should be different")
301- else {
302- let song_0 = getStringValue(toBase58String(song_0_id))
303- let song_1 = getStringValue(toBase58String(song_1_id))
304- let burn0 = invoke(nft_creation_address, "burnNFT", nil, [i.payments[0]])
305- if ((burn0 == burn0))
306- then {
307- let burn1 = invoke(nft_creation_address, "burnNFT", nil, [i.payments[1]])
308- if ((burn1 == burn1))
309- then $Tuple2(make_hybrid_tx(i, song_0, song_1), unit)
310- else throw("Strict value is not equal to itself.")
311- }
312- else throw("Strict value is not equal to itself.")
313- }
314- }
315-
316-

github/deemru/w8io/3ef1775 
64.70 ms