tx · 7rodGGGNeBx6DZ5H97unpj5vRfr3HFt9mb4C1Mnkn7Eg 3MyVvNfXht9piazyf1e5BVFsqv1R7z5cWJL: -0.03300000 Waves 2022.06.21 16:49 [2106239] smart account 3MyVvNfXht9piazyf1e5BVFsqv1R7z5cWJL > SELF 0.00000000 Waves
{ "type": 13, "id": "7rodGGGNeBx6DZ5H97unpj5vRfr3HFt9mb4C1Mnkn7Eg", "fee": 3300000, "feeAssetId": null, "timestamp": 1655819415146, "version": 1, "sender": "3MyVvNfXht9piazyf1e5BVFsqv1R7z5cWJL", "senderPublicKey": "DnPyGWCgpQChvoQrnXQRcC9FtN32mPGrcog2wcKHdkVn", "proofs": [ "5dGDSdrBFq2EjyDUKkbwUjen1ccKdzQyEvr2cZwaU5Q67QYH1LtFWVyAuMvSjkdatfr5cYoStMGUUapoxsFnSB3n" ], "script": "base64:AAIFAAAAAAAAAF8IAhIDCgEIEgASBAoCCAESBgoECAgIARIECgIICBIFCgMICAESBAoCCAgSAwoBARIDCgEBEgQKAggIEgMKAQgSABIDCgEBEgASAwoBCBIECgIICBIECgIICBIECgIICAAAAC4AAAAACXNlcGFyYXRvcgIAAAACX18AAAAADnBvb2xXZWlnaHRNdWx0AAAAAAAF9eEAAAAAAA9tYXhEZXB0aERlZmF1bHQAAAAAAAAAAAoAAAAAFmZpbmFsaXphdGlvblN0YWdlVG90YWwAAAAAAAAAAAAAAAAAF2ZpbmFsaXphdGlvblN0YWdlU2hhcmVzAAAAAAAAAAABAAAAAA5rZXlFcG9jaExlbmd0aAkABLkAAAACCQAETAAAAAICAAAAAiVzCQAETAAAAAICAAAAC2Vwb2NoTGVuZ3RoBQAAAANuaWwFAAAACXNlcGFyYXRvcgAAAAAPa2V5Q3VycmVudEVwb2NoCQAEuQAAAAIJAARMAAAAAgIAAAACJXMJAARMAAAAAgIAAAAMY3VycmVudEVwb2NoBQAAAANuaWwFAAAACXNlcGFyYXRvcgAAAAALa2V5TWF4RGVwdGgJAAS5AAAAAgkABEwAAAACAgAAAAIlcwkABEwAAAACAgAAAAhtYXhEZXB0aAUAAAADbmlsBQAAAAlzZXBhcmF0b3IAAAAAImtleVZvdGluZ0VtaXNzaW9uQ2FuZGlkYXRlQ29udHJhY3QJAAS5AAAAAgkABEwAAAACAgAAAAIlcwkABEwAAAACAgAAAB92b3RpbmdFbWlzc2lvbkNhbmRpZGF0ZUNvbnRyYWN0BQAAAANuaWwFAAAACXNlcGFyYXRvcgAAAAASa2V5RmFjdG9yeUNvbnRyYWN0CQAEuQAAAAIJAARMAAAAAgIAAAACJXMJAARMAAAAAgIAAAAPZmFjdG9yeUNvbnRyYWN0BQAAAANuaWwFAAAACXNlcGFyYXRvcgAAAAATa2V5Qm9vc3RpbmdDb250cmFjdAkABLkAAAACCQAETAAAAAICAAAAAiVzCQAETAAAAAICAAAAEGJvb3N0aW5nQ29udHJhY3QFAAAAA25pbAUAAAAJc2VwYXJhdG9yAAAAABRrZXlGaW5hbGl6YXRpb25TdGFnZQkABLkAAAACCQAETAAAAAICAAAAAiVzCQAETAAAAAICAAAAEWZpbmFsaXphdGlvblN0YWdlBQAAAANuaWwFAAAACXNlcGFyYXRvcgAAAAALa2V5TmV4dFBvb2wJAAS5AAAAAgkABEwAAAACAgAAAAIlcwkABEwAAAACAgAAAAhuZXh0UG9vbAUAAAADbmlsBQAAAAlzZXBhcmF0b3IAAAAAC2tleU5leHRVc2VyCQAEuQAAAAIJAARMAAAAAgIAAAACJXMJAARMAAAAAgIAAAAIbmV4dFVzZXIFAAAAA25pbAUAAAAJc2VwYXJhdG9yAAAAAA5rZXlTdGFydEhlaWdodAkABLkAAAACCQAETAAAAAICAAAAAiVzCQAETAAAAAICAAAAC3N0YXJ0SGVpZ2h0BQAAAANuaWwFAAAACXNlcGFyYXRvcgAAAAARa2V5Q3VycmVudEVwb2NoVWkJAAS5AAAAAgkABEwAAAACAgAAAAIlcwkABEwAAAACAgAAAA5jdXJyZW50RXBvY2hVaQUAAAADbmlsBQAAAAlzZXBhcmF0b3IAAAAAEGtleVN0YXJ0SGVpZ2h0VWkJAAS5AAAAAgkABEwAAAACAgAAAAIlcwkABEwAAAACAgAAAA1zdGFydEhlaWdodFVpBQAAAANuaWwFAAAACXNlcGFyYXRvcgEAAAAVa2V5U3RhcnRIZWlnaHRCeUVwb2NoAAAAAQAAAAVlcG9jaAkABLkAAAACCQAETAAAAAICAAAABCVzJWQJAARMAAAAAgIAAAALc3RhcnRIZWlnaHQJAARMAAAAAgkAAaQAAAABBQAAAAVlcG9jaAUAAAADbmlsBQAAAAlzZXBhcmF0b3IBAAAADGtleUZpbmFsaXplZAAAAAEAAAAFZXBvY2gJAAS5AAAAAgkABEwAAAACAgAAAAQlcyVkCQAETAAAAAICAAAACWZpbmFsaXplZAkABEwAAAACCQABpAAAAAEFAAAABWVwb2NoBQAAAANuaWwFAAAACXNlcGFyYXRvcgEAAAAJa2V5SW5MaXN0AAAAAQAAAARwb29sBAAAAAskdDAxMzYzMTQwMwUAAAAEcG9vbAQAAAANYW1vdW50QXNzZXRJZAgFAAAACyR0MDEzNjMxNDAzAAAAAl8xBAAAAAxwcmljZUFzc2V0SWQIBQAAAAskdDAxMzYzMTQwMwAAAAJfMgkABLkAAAACCQAETAAAAAICAAAABiVzJXMlcwkABEwAAAACAgAAAAZpbkxpc3QJAARMAAAAAgUAAAANYW1vdW50QXNzZXRJZAkABEwAAAACBQAAAAxwcmljZUFzc2V0SWQFAAAAA25pbAUAAAAJc2VwYXJhdG9yAQAAAAdrZXlVc2VkAAAAAgAAAAdhZGRyZXNzAAAABWVwb2NoCQAEuQAAAAIJAARMAAAAAgIAAAAGJXMlcyVkCQAETAAAAAICAAAABHVzZWQJAARMAAAAAgkABCUAAAABBQAAAAdhZGRyZXNzCQAETAAAAAIJAAGkAAAAAQUAAAAFZXBvY2gFAAAAA25pbAUAAAAJc2VwYXJhdG9yAQAAAAdrZXlWb3RlAAAAAwAAAARwb29sAAAAB2FkZHJlc3MAAAAFZXBvY2gEAAAACyR0MDE2NzcxNzE3BQAAAARwb29sBAAAAA1hbW91bnRBc3NldElkCAUAAAALJHQwMTY3NzE3MTcAAAACXzEEAAAADHByaWNlQXNzZXRJZAgFAAAACyR0MDE2NzcxNzE3AAAAAl8yCQAEuQAAAAIJAARMAAAAAgIAAAAKJXMlcyVzJXMlZAkABEwAAAACAgAAAAR2b3RlCQAETAAAAAIFAAAADWFtb3VudEFzc2V0SWQJAARMAAAAAgUAAAAMcHJpY2VBc3NldElkCQAETAAAAAIJAAQlAAAAAQUAAAAHYWRkcmVzcwkABEwAAAACCQABpAAAAAEFAAAABWVwb2NoBQAAAANuaWwFAAAACXNlcGFyYXRvcgEAAAAPa2V5Vm90aW5nUmVzdWx0AAAAAgAAAARwb29sAAAABWVwb2NoBAAAAAskdDAxODk5MTkzOQUAAAAEcG9vbAQAAAANYW1vdW50QXNzZXRJZAgFAAAACyR0MDE4OTkxOTM5AAAAAl8xBAAAAAxwcmljZUFzc2V0SWQIBQAAAAskdDAxODk5MTkzOQAAAAJfMgkABLkAAAACCQAETAAAAAICAAAACCVzJXMlcyVkCQAETAAAAAICAAAADHZvdGluZ1Jlc3VsdAkABEwAAAACBQAAAA1hbW91bnRBc3NldElkCQAETAAAAAIFAAAADHByaWNlQXNzZXRJZAkABEwAAAACCQABpAAAAAEFAAAABWVwb2NoBQAAAANuaWwFAAAACXNlcGFyYXRvcgEAAAAMa2V5UG9vbFNoYXJlAAAAAgAAAARwb29sAAAABWVwb2NoBAAAAAskdDAyMTA0MjE0NAUAAAAEcG9vbAQAAAANYW1vdW50QXNzZXRJZAgFAAAACyR0MDIxMDQyMTQ0AAAAAl8xBAAAAAxwcmljZUFzc2V0SWQIBQAAAAskdDAyMTA0MjE0NAAAAAJfMgkABLkAAAACCQAETAAAAAICAAAACCVzJXMlcyVkCQAETAAAAAICAAAACXBvb2xTaGFyZQkABEwAAAACBQAAAA1hbW91bnRBc3NldElkCQAETAAAAAIFAAAADHByaWNlQXNzZXRJZAkABEwAAAACCQABpAAAAAEFAAAABWVwb2NoBQAAAANuaWwFAAAACXNlcGFyYXRvcgEAAAANa2V5VG90YWxWb3RlcwAAAAEAAAAFZXBvY2gJAAS5AAAAAgkABEwAAAACAgAAAAQlcyVkCQAETAAAAAICAAAACnRvdGFsVm90ZXMJAARMAAAAAgkAAaQAAAABBQAAAAVlcG9jaAUAAAADbmlsBQAAAAlzZXBhcmF0b3IBAAAADmdldFZhbHVlT3JGYWlsAAAAAwAAAAdhZGRyZXNzAAAAA2tleQAAAAR0eXBlBAAAAAVlcnJvcgkABLkAAAACCQAETAAAAAICAAAACm1hbmRhdG9yeSAJAARMAAAAAgkABCUAAAABBQAAAAdhZGRyZXNzCQAETAAAAAICAAAAAS4JAARMAAAAAgUAAAADa2V5CQAETAAAAAICAAAADyBpcyBub3QgZGVmaW5lZAUAAAADbmlsAgAAAAAJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgQAAAAHJG1hdGNoMAUAAAAEdHlwZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAANzdHIFAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAA2ludAUAAAAHJG1hdGNoMAkABBoAAAACBQAAAAdhZGRyZXNzBQAAAANrZXkJAAACAAAAAQIAAAASaW52YWxpZCBlbnRyeSB0eXBlBQAAAAVlcnJvcgEAAAAMZ2V0U3RyT3JGYWlsAAAAAgAAAAdhZGRyZXNzAAAAA2tleQoAAAAAAUAJAQAAAA5nZXRWYWx1ZU9yRmFpbAAAAAMFAAAAB2FkZHJlc3MFAAAAA2tleQIAAAAAAwkAAAEAAAACBQAAAAFAAgAAAAZTdHJpbmcFAAAAAUAJAAACAAAAAQIAAAAiQ291bGRuJ3QgY2FzdCBJbnR8U3RyaW5nIHRvIFN0cmluZwEAAAAMZ2V0SW50T3JGYWlsAAAAAgAAAAdhZGRyZXNzAAAAA2tleQoAAAAAAUAJAQAAAA5nZXRWYWx1ZU9yRmFpbAAAAAMFAAAAB2FkZHJlc3MFAAAAA2tleQAAAAAAAAAAAAMJAAABAAAAAgUAAAABQAIAAAADSW50BQAAAAFACQAAAgAAAAECAAAAH0NvdWxkbid0IGNhc3QgSW50fFN0cmluZyB0byBJbnQBAAAADHBvb2xUb1N0cmluZwAAAAEAAAAEcG9vbAkAASwAAAACCQABLAAAAAIIBQAAAARwb29sAAAAAl8xBQAAAAlzZXBhcmF0b3IIBQAAAARwb29sAAAAAl8yAQAAAAxzdHJpbmdUb1Bvb2wAAAABAAAAA3N0cgQAAAAFcGFydHMJAAS1AAAAAgUAAAADc3RyBQAAAAlzZXBhcmF0b3IDCQAAAAAAAAIJAAGQAAAAAQUAAAAFcGFydHMAAAAAAAAAAAIJAAUUAAAAAgkAAZEAAAACBQAAAAVwYXJ0cwAAAAAAAAAAAAkAAZEAAAACBQAAAAVwYXJ0cwAAAAAAAAAAAQkAAAIAAAABAgAAABNpbnZhbGlkIHBvb2wgc3RyaW5nAAAAAA1wb29sc0xpc3ROYW1lAgAAAAVwb29scwEAAAAQZ2V0Vm90ZXNMaXN0TmFtZQAAAAEAAAAEcG9vbAQAAAALJHQwMzI1MDMyOTAFAAAABHBvb2wEAAAADWFtb3VudEFzc2V0SWQIBQAAAAskdDAzMjUwMzI5MAAAAAJfMQQAAAAMcHJpY2VBc3NldElkCAUAAAALJHQwMzI1MDMyOTAAAAACXzIJAAS5AAAAAgkABEwAAAACAgAAAAV2b3RlcwkABEwAAAACBQAAAA1hbW91bnRBc3NldElkCQAETAAAAAIFAAAADHByaWNlQXNzZXRJZAUAAAADbmlsBQAAAAlzZXBhcmF0b3IBAAAAC2tleUxpc3RIZWFkAAAAAQAAAAhsaXN0TmFtZQQAAAAEbWV0YQMJAAAAAAAAAgUAAAAIbGlzdE5hbWUFAAAADXBvb2xzTGlzdE5hbWUCAAAABCVzJXMCAAAACCVzJXMlcyVzCQAEuQAAAAIJAARMAAAAAgUAAAAEbWV0YQkABEwAAAACBQAAAAhsaXN0TmFtZQkABEwAAAACAgAAAARoZWFkBQAAAANuaWwFAAAACXNlcGFyYXRvcgEAAAALa2V5TGlzdFNpemUAAAABAAAACGxpc3ROYW1lBAAAAARtZXRhAwkAAAAAAAACBQAAAAhsaXN0TmFtZQUAAAANcG9vbHNMaXN0TmFtZQIAAAAEJXMlcwIAAAAIJXMlcyVzJXMJAAS5AAAAAgkABEwAAAACBQAAAARtZXRhCQAETAAAAAIFAAAACGxpc3ROYW1lCQAETAAAAAICAAAABHNpemUFAAAAA25pbAUAAAAJc2VwYXJhdG9yAQAAAAtrZXlMaXN0UHJldgAAAAIAAAAIbGlzdE5hbWUAAAACaWQEAAAABG1ldGEDCQAAAAAAAAIFAAAACGxpc3ROYW1lBQAAAA1wb29sc0xpc3ROYW1lAgAAAAglcyVzJXMlcwIAAAAKJXMlcyVzJXMlcwkABLkAAAACCQAETAAAAAIFAAAABG1ldGEJAARMAAAAAgUAAAAIbGlzdE5hbWUJAARMAAAAAgUAAAACaWQJAARMAAAAAgIAAAAEcHJldgUAAAADbmlsBQAAAAlzZXBhcmF0b3IBAAAAC2tleUxpc3ROZXh0AAAAAgAAAAhsaXN0TmFtZQAAAAJpZAQAAAAEbWV0YQMJAAAAAAAAAgUAAAAIbGlzdE5hbWUFAAAADXBvb2xzTGlzdE5hbWUCAAAACCVzJXMlcyVzAgAAAAolcyVzJXMlcyVzCQAEuQAAAAIJAARMAAAAAgUAAAAEbWV0YQkABEwAAAACBQAAAAhsaXN0TmFtZQkABEwAAAACBQAAAAJpZAkABEwAAAACAgAAAARuZXh0BQAAAANuaWwFAAAACXNlcGFyYXRvcgEAAAAMY29udGFpbnNOb2RlAAAAAgAAAAhsaXN0TmFtZQAAAAJpZAQAAAAKaGVhZE9yVW5pdAkABB0AAAACBQAAAAR0aGlzCQEAAAALa2V5TGlzdEhlYWQAAAABBQAAAAhsaXN0TmFtZQQAAAAKcHJldk9yVW5pdAkABB0AAAACBQAAAAR0aGlzCQEAAAALa2V5TGlzdFByZXYAAAACBQAAAAhsaXN0TmFtZQUAAAACaWQEAAAACm5leHRPclVuaXQJAAQdAAAAAgUAAAAEdGhpcwkBAAAAC2tleUxpc3ROZXh0AAAAAgUAAAAIbGlzdE5hbWUFAAAAAmlkAwMJAAAAAAAAAgUAAAACaWQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIFAAAACmhlYWRPclVuaXQCAAAAAAYJAQAAAAIhPQAAAAIFAAAACnByZXZPclVuaXQFAAAABHVuaXQGCQEAAAACIT0AAAACBQAAAApuZXh0T3JVbml0BQAAAAR1bml0AQAAABFpbnNlcnROb2RlQWN0aW9ucwAAAAIAAAAIbGlzdE5hbWUAAAACaWQEAAAACmhlYWRPclVuaXQJAAQdAAAAAgUAAAAEdGhpcwkBAAAAC2tleUxpc3RIZWFkAAAAAQUAAAAIbGlzdE5hbWUEAAAACGxpc3RTaXplCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAAAtrZXlMaXN0U2l6ZQAAAAEFAAAACGxpc3ROYW1lAAAAAAAAAAAABAAAAAljaGVja05vZGUDCQEAAAABIQAAAAEJAQAAAAxjb250YWluc05vZGUAAAACBQAAAAhsaXN0TmFtZQUAAAACaWQGCQAAAgAAAAECAAAAC05vZGUgZXhpc3RzAwkAAAAAAAACBQAAAAljaGVja05vZGUFAAAACWNoZWNrTm9kZQkABE4AAAACCQAETgAAAAIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAtrZXlMaXN0U2l6ZQAAAAEFAAAACGxpc3ROYW1lCQAAZAAAAAIFAAAACGxpc3RTaXplAAAAAAAAAAABBQAAAANuaWwDCQEAAAACIT0AAAACBQAAAApoZWFkT3JVbml0BQAAAAR1bml0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAtrZXlMaXN0TmV4dAAAAAIFAAAACGxpc3ROYW1lBQAAAAJpZAkBAAAABXZhbHVlAAAAAQUAAAAKaGVhZE9yVW5pdAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAALa2V5TGlzdFByZXYAAAACBQAAAAhsaXN0TmFtZQkBAAAABXZhbHVlAAAAAQUAAAAKaGVhZE9yVW5pdAUAAAACaWQFAAAAA25pbAUAAAADbmlsCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAtrZXlMaXN0SGVhZAAAAAEFAAAACGxpc3ROYW1lBQAAAAJpZAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEAAAARZGVsZXRlTm9kZUFjdGlvbnMAAAACAAAACGxpc3ROYW1lAAAAAmlkBAAAAApoZWFkT3JVbml0CQAEHQAAAAIFAAAABHRoaXMJAQAAAAtrZXlMaXN0SGVhZAAAAAEFAAAACGxpc3ROYW1lBAAAAAhsaXN0U2l6ZQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQEAAAALa2V5TGlzdFNpemUAAAABBQAAAAhsaXN0TmFtZQAAAAAAAAAAAAQAAAAKcHJldk9yVW5pdAkABB0AAAACBQAAAAR0aGlzCQEAAAALa2V5TGlzdFByZXYAAAACBQAAAAhsaXN0TmFtZQUAAAACaWQEAAAACm5leHRPclVuaXQJAAQdAAAAAgUAAAAEdGhpcwkBAAAAC2tleUxpc3ROZXh0AAAAAgUAAAAIbGlzdE5hbWUFAAAAAmlkCQAETgAAAAIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAtrZXlMaXN0U2l6ZQAAAAEFAAAACGxpc3ROYW1lCQAAZQAAAAIFAAAACGxpc3RTaXplAAAAAAAAAAABBQAAAANuaWwDAwkBAAAAAiE9AAAAAgUAAAAKcHJldk9yVW5pdAUAAAAEdW5pdAkBAAAAAiE9AAAAAgUAAAAKbmV4dE9yVW5pdAUAAAAEdW5pdAcJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAC2tleUxpc3ROZXh0AAAAAgUAAAAIbGlzdE5hbWUJAQAAAAV2YWx1ZQAAAAEFAAAACnByZXZPclVuaXQJAQAAAAV2YWx1ZQAAAAEFAAAACm5leHRPclVuaXQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAC2tleUxpc3RQcmV2AAAAAgUAAAAIbGlzdE5hbWUJAQAAAAV2YWx1ZQAAAAEFAAAACm5leHRPclVuaXQJAQAAAAV2YWx1ZQAAAAEFAAAACnByZXZPclVuaXQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAC2tleUxpc3RQcmV2AAAAAgUAAAAIbGlzdE5hbWUFAAAAAmlkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAtrZXlMaXN0TmV4dAAAAAIFAAAACGxpc3ROYW1lBQAAAAJpZAUAAAADbmlsAwkBAAAAAiE9AAAAAgUAAAAKbmV4dE9yVW5pdAUAAAAEdW5pdAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAALa2V5TGlzdEhlYWQAAAABBQAAAAhsaXN0TmFtZQkBAAAABXZhbHVlAAAAAQUAAAAKbmV4dE9yVW5pdAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAALa2V5TGlzdE5leHQAAAACBQAAAAhsaXN0TmFtZQUAAAACaWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAC2tleUxpc3RQcmV2AAAAAgUAAAAIbGlzdE5hbWUJAQAAAAV2YWx1ZQAAAAEFAAAACm5leHRPclVuaXQFAAAAA25pbAMJAQAAAAIhPQAAAAIFAAAACnByZXZPclVuaXQFAAAABHVuaXQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAC2tleUxpc3RQcmV2AAAAAgUAAAAIbGlzdE5hbWUFAAAAAmlkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAtrZXlMaXN0TmV4dAAAAAIFAAAACGxpc3ROYW1lCQEAAAAFdmFsdWUAAAABBQAAAApwcmV2T3JVbml0BQAAAANuaWwDCQAAAAAAAAIFAAAAAmlkCQEAAAALdmFsdWVPckVsc2UAAAACBQAAAApoZWFkT3JVbml0AgAAAAAJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAC2tleUxpc3RIZWFkAAAAAQUAAAAIbGlzdE5hbWUFAAAAA25pbAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA5pbnZhbGlkIG5vZGU6IAUAAAAIbGlzdE5hbWUCAAAAAS4FAAAAAmlkAQAAABNrZXlNYW5hZ2VyUHVibGljS2V5AAAAAAIAAAAUJXNfX21hbmFnZXJQdWJsaWNLZXkBAAAAGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAAAAAIAAAAbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQAAABZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAAAAAQAAAAHJG1hdGNoMAkABCIAAAABCQEAAAATa2V5TWFuYWdlclB1YmxpY0tleQAAAAADCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABcwUAAAAHJG1hdGNoMAkAAlkAAAABBQAAAAFzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BQAAAAR1bml0CQAAAgAAAAECAAAAC01hdGNoIGVycm9yAQAAAB1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdAAAAAAEAAAAByRtYXRjaDAJAAQiAAAAAQkBAAAAGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAAAAAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwCQACWQAAAAEFAAAAAXMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQFAAAABHVuaXQJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IAAAAAFXBlcm1pc3Npb25EZW5pZWRFcnJvcgkAAAIAAAABAgAAABFQZXJtaXNzaW9uIGRlbmllZAEAAAAIbXVzdFRoaXMAAAABAAAAAWkDCQAAAAAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwYFAAAAFXBlcm1pc3Npb25EZW5pZWRFcnJvcgEAAAALbXVzdE1hbmFnZXIAAAABAAAAAWkEAAAAByRtYXRjaDAJAQAAABZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAAAAAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAACcGsFAAAAByRtYXRjaDADCQAAAAAAAAIIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQUAAAACcGsGBQAAABVwZXJtaXNzaW9uRGVuaWVkRXJyb3IDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQJAQAAAAhtdXN0VGhpcwAAAAEFAAAAAWkJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IAAAASAAAAAWkBAAAACnNldE1hbmFnZXIAAAABAAAAF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BAAAAAtjaGVja0NhbGxlcgkBAAAAC211c3RNYW5hZ2VyAAAAAQUAAAABaQMJAAAAAAAAAgUAAAALY2hlY2tDYWxsZXIFAAAAC2NoZWNrQ2FsbGVyBAAAABVjaGVja01hbmFnZXJQdWJsaWNLZXkJAAJZAAAAAQUAAAAXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkDCQAAAAAAAAIFAAAAFWNoZWNrTWFuYWdlclB1YmxpY0tleQUAAAAVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAAAAAFAAAAF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAA5jb25maXJtTWFuYWdlcgAAAAAEAAAAAnBtCQEAAAAdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQAAAAABAAAAAVoYXNQTQMJAQAAAAlpc0RlZmluZWQAAAABBQAAAAJwbQYJAAACAAAAAQIAAAASTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAAAAAACBQAAAAVoYXNQTQUAAAAFaGFzUE0EAAAAB2NoZWNrUE0DCQAAAAAAAAIIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQkBAAAABXZhbHVlAAAAAQUAAAACcG0GCQAAAgAAAAECAAAAG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAAAAAAAAgUAAAAHY2hlY2tQTQUAAAAHY2hlY2tQTQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAATa2V5TWFuYWdlclB1YmxpY0tleQAAAAAJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQUAAAACcG0JAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAAAAAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0AAAAAgAAAAt1c2VyQWRkcmVzcwAAAAx0YXJnZXRIZWlnaHQEAAAAF2Jvb3N0aW5nQ29udHJhY3RBZGRyZXNzCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQkBAAAADGdldFN0ck9yRmFpbAAAAAIFAAAABHRoaXMFAAAAE2tleUJvb3N0aW5nQ29udHJhY3QCAAAAIWludmFsaWQgYm9vc3RpbmcgY29udHJhY3QgYWRkcmVzcwkABRQAAAACBQAAAANuaWwKAAAAAAFACQAD/AAAAAQFAAAAF2Jvb3N0aW5nQ29udHJhY3RBZGRyZXNzAgAAACBnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHRSRUFET05MWQkABEwAAAACBQAAAAt1c2VyQWRkcmVzcwkABEwAAAACBQAAAAx0YXJnZXRIZWlnaHQFAAAAA25pbAUAAAADbmlsAwkAAAEAAAACBQAAAAFAAgAAAANJbnQFAAAAAUAJAAACAAAAAQIAAAAYQ291bGRuJ3QgY2FzdCBBbnkgdG8gSW50AAAAAWkBAAAAC2NvbnN0cnVjdG9yAAAABAAAAA9mYWN0b3J5Q29udHJhY3QAAAAfdm90aW5nRW1pc3Npb25DYW5kaWRhdGVDb250cmFjdAAAABBib29zdGluZ0NvbnRyYWN0AAAAC2Vwb2NoTGVuZ3RoBAAAAAVjaGVrcwkABEwAAAACCQEAAAALbXVzdE1hbmFnZXIAAAABBQAAAAFpCQAETAAAAAIDCQEAAAACIT0AAAACCQAEJgAAAAEFAAAAD2ZhY3RvcnlDb250cmFjdAUAAAAEdW5pdAYCAAAAIGludmFsaWQgZmFjdG9yeSBjb250cmFjdCBhZGRyZXNzCQAETAAAAAIDCQEAAAACIT0AAAACCQAEJgAAAAEFAAAAH3ZvdGluZ0VtaXNzaW9uQ2FuZGlkYXRlQ29udHJhY3QFAAAABHVuaXQGAgAAADJpbnZhbGlkIHZvdGluZyBlbWlzc2lvbiBjYW5kaWRhdGUgY29udHJhY3QgYWRkcmVzcwkABEwAAAACAwkBAAAAAiE9AAAAAgkABCYAAAABBQAAABBib29zdGluZ0NvbnRyYWN0BQAAAAR1bml0BgIAAAAhaW52YWxpZCBib29zdGluZyBjb250cmFjdCBhZGRyZXNzCQAETAAAAAIDCQAAZgAAAAIFAAAAC2Vwb2NoTGVuZ3RoAAAAAAAAAAAABgkAAAIAAAABAgAAABRpbnZhbGlkIGVwb2NoIGxlbmd0aAUAAAADbmlsAwkAAAAAAAACBQAAAAVjaGVrcwUAAAAFY2hla3MJAAUUAAAAAgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABJrZXlGYWN0b3J5Q29udHJhY3QFAAAAD2ZhY3RvcnlDb250cmFjdAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAACJrZXlWb3RpbmdFbWlzc2lvbkNhbmRpZGF0ZUNvbnRyYWN0BQAAAB92b3RpbmdFbWlzc2lvbkNhbmRpZGF0ZUNvbnRyYWN0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAE2tleUJvb3N0aW5nQ29udHJhY3QFAAAAEGJvb3N0aW5nQ29udHJhY3QJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADmtleUVwb2NoTGVuZ3RoBQAAAAtlcG9jaExlbmd0aAUAAAADbmlsBQAAAAR1bml0CQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAAZjcmVhdGUAAAACAAAADWFtb3VudEFzc2V0SWQAAAAMcHJpY2VBc3NldElkBAAAAAZjaGVja3MJAARMAAAAAgMJAAAAAAAAAgkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAAImtleVZvdGluZ0VtaXNzaW9uQ2FuZGlkYXRlQ29udHJhY3QCAAAAAAYJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkFAAAAA25pbAMJAAAAAAAAAgUAAAAGY2hlY2tzBQAAAAZjaGVja3MEAAAABHBvb2wJAAUUAAAAAgUAAAANYW1vdW50QXNzZXRJZAUAAAAMcHJpY2VBc3NldElkBAAAAA1pbkxpc3RBY3Rpb25zCQAETgAAAAIJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAQAAAAlrZXlJbkxpc3QAAAABBQAAAARwb29sBgUAAAADbmlsCQEAAAARaW5zZXJ0Tm9kZUFjdGlvbnMAAAACBQAAAA1wb29sc0xpc3ROYW1lCQEAAAAMcG9vbFRvU3RyaW5nAAAAAQUAAAAEcG9vbAQAAAAYY3VycmVudEVwb2NoSXNOb3REZWZpbmVkCQAAAAAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAAPa2V5Q3VycmVudEVwb2NoBQAAAAR1bml0BAAAABJzdGFydEhlaWdodEFjdGlvbnMDBQAAABhjdXJyZW50RXBvY2hJc05vdERlZmluZWQEAAAABWVwb2NoAAAAAAAAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA9rZXlDdXJyZW50RXBvY2gFAAAABWVwb2NoCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAVa2V5U3RhcnRIZWlnaHRCeUVwb2NoAAAAAQUAAAAFZXBvY2gFAAAABmhlaWdodAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAOa2V5U3RhcnRIZWlnaHQFAAAABmhlaWdodAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAARa2V5Q3VycmVudEVwb2NoVWkFAAAABWVwb2NoCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABBrZXlTdGFydEhlaWdodFVpBQAAAAZoZWlnaHQFAAAAA25pbAUAAAADbmlsCQAFFAAAAAIJAAROAAAAAgUAAAANaW5MaXN0QWN0aW9ucwUAAAASc3RhcnRIZWlnaHRBY3Rpb25zBQAAAAR1bml0CQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAAR2b3RlAAAAAwAAAA1hbW91bnRBc3NldElkAAAADHByaWNlQXNzZXRJZAAAAAZhbW91bnQEAAAABHBvb2wJAAUUAAAAAgUAAAANYW1vdW50QXNzZXRJZAUAAAAMcHJpY2VBc3NldElkBAAAAAVlcG9jaAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAA9rZXlDdXJyZW50RXBvY2gAAAAAAAAAAAAEAAAAC3N0YXJ0SGVpZ2h0CQEAAAAMZ2V0SW50T3JGYWlsAAAAAgUAAAAEdGhpcwkBAAAAFWtleVN0YXJ0SGVpZ2h0QnlFcG9jaAAAAAEFAAAABWVwb2NoBAAAAAtlcG9jaExlbmd0aAkBAAAADGdldEludE9yRmFpbAAAAAIFAAAABHRoaXMFAAAADmtleUVwb2NoTGVuZ3RoBAAAAAllbmRIZWlnaHQJAABkAAAAAgUAAAALc3RhcnRIZWlnaHQFAAAAC2Vwb2NoTGVuZ3RoBAAAABdmaW5hbGl6YXRpb25TdGFnZU9yVW5pdAkABBoAAAACBQAAAAR0aGlzBQAAABRrZXlGaW5hbGl6YXRpb25TdGFnZQQAAAAEdXNlZAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQEAAAAHa2V5VXNlZAAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAFZXBvY2gAAAAAAAAAAAAEAAAABHZvdGUJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkBAAAAB2tleVZvdGUAAAADBQAAAARwb29sCAUAAAABaQAAAAZjYWxsZXIFAAAABWVwb2NoAAAAAAAAAAAABAAAAApwb29sUmVzdWx0CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAAA9rZXlWb3RpbmdSZXN1bHQAAAACBQAAAARwb29sBQAAAAVlcG9jaAAAAAAAAAAAAAQAAAAKdG90YWxWb3RlcwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQEAAAANa2V5VG90YWxWb3RlcwAAAAEFAAAABWVwb2NoAAAA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Y2gEAAAADWVwb2NoUHJldmlvdXMJAABlAAAAAgUAAAAFZXBvY2gAAAAAAAAAAAEEAAAAC2Vwb2NoTGVuZ3RoCQEAAAAMZ2V0SW50T3JGYWlsAAAAAgUAAAAEdGhpcwUAAAAOa2V5RXBvY2hMZW5ndGgEAAAAC3N0YXJ0SGVpZ2h0CQEAAAAMZ2V0SW50T3JGYWlsAAAAAgUAAAAEdGhpcwkBAAAAFWtleVN0YXJ0SGVpZ2h0QnlFcG9jaAAAAAEFAAAABWVwb2NoBAAAAAllbmRIZWlnaHQJAABkAAAAAgUAAAALc3RhcnRIZWlnaHQFAAAAC2Vwb2NoTGVuZ3RoBAAAABNzdGFydEhlaWdodFByZXZpb3VzCQEAAAAMZ2V0SW50T3JGYWlsAAAAAgUAAAAEdGhpcwkBAAAAFWtleVN0YXJ0SGVpZ2h0QnlFcG9jaAAAAAEFAAAADWVwb2NoUHJldmlvdXMEAAAAEWVuZEhlaWdodFByZXZpb3VzCQAAZAAAAAIFAAAAE3N0YXJ0SGVpZ2h0UHJldmlvdXMFAAAAC2Vwb2NoTGVuZ3RoBAAAABBjaGVja1RhcmdldEVwb2NoAwkAAGcAAAACBQAAAA1lcG9jaFByZXZpb3VzAAAAAAAAAAAABgkAAAIAAAABAgAAACtwcm9jZXNzVm90ZUlOVEVSTkFMOiBpbnZhbGlkIHByZXZpb3VzIGVwb2NoAwkAAAAAAAACBQAAABBjaGVja1RhcmdldEVwb2NoBQAAABBjaGVja1RhcmdldEVwb2NoBAAAAARwb29sCQEAAAAMc3RyaW5nVG9Qb29sAAAAAQUAAAAHcG9vbFN0cgQAAAATZ3d4QW1vdW50QXRFbmRUb3RhbAoAAAAAAUAJAAP8AAAABAUAAAAEdGhpcwIAAAAYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0CQAETAAAAAIFAAAADnVzZXJBZGRyZXNzU3RyCQAETAAAAAIFAAAACWVuZEhlaWdodAUAAAADbmlsBQAAAANuaWwDCQAAAQAAAAIFAAAAAUACAAAAA0ludAUAAAABQAkAAAIAAAABAgAAABhDb3VsZG4ndCBjYXN0IEFueSB0byBJbnQEAAAAG2d3eEFtb3VudEF0RW5kVG90YWxQcmV2aW91cwoAAAAAAUAJAAP8AAAABAUAAAAEdGhpcwIAAAAYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0CQAETAAAAAIFAAAADnVzZXJBZGRyZXNzU3RyCQAETAAAAAIFAAAAEWVuZEhlaWdodFByZXZpb3VzBQAAAANuaWwFAAAAA25pbAMJAAABAAAAAgUAAAABQAIAAAADSW50BQAAAAFACQAAAgAAAAECAAAAGENvdWxkbid0IGNhc3QgQW55IHRvIEludAQAAAAKdG90YWxWb3RlcwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB8AAAABCQEAAAANa2V5VG90YWxWb3RlcwAAAAEFAAAABWVwb2NoAAAAAAAAAAAABAAAAAx2b3RpbmdSZXN1bHQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQfAAAAAQkBAAAAD2tleVZvdGluZ1Jlc3VsdAAAAAIFAAAABHBvb2wFAAAABWVwb2NoAAAAAAAAAAAABAAAAAx2b3RlUHJldmlvdXMJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB8AAAABCQEAAAAHa2V5Vm90ZQAAAAMFAAAABHBvb2wFAAAAC3VzZXJBZGRyZXNzBQAAAA1lcG9jaFByZXZpb3VzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAFHByb2Nlc3NWb3RlSU5URVJOQUwgBQAAAAdwb29sU3RyAgAAAAEgBQAAAA51c2VyQWRkcmVzc1N0cgIAAAASOiBubyBwcmV2aW91cyB2b3RlBAAAAAR1c2VkCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAAAdrZXlVc2VkAAAAAgUAAAALdXNlckFkZHJlc3MFAAAABWVwb2NoAAAAAAAAAAAABAAAAAduZXdWb3RlCQAAawAAAAMFAAAADHZvdGVQcmV2aW91cwUAAAATZ3d4QW1vdW50QXRFbmRUb3RhbAUAAAAbZ3d4QW1vdW50QXRFbmRUb3RhbFByZXZpb3VzBAAAAAdhY3Rpb25zAwkAAGYAAAACBQAAAAduZXdWb3RlAAAAAAAAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAHa2V5Vm90ZQAAAAMFAAAABHBvb2wFAAAAC3VzZXJBZGRyZXNzBQAAAAVlcG9jaAUAAAAHbmV3Vm90ZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAADWtleVRvdGFsVm90ZXMAAAABBQAAAAVlcG9jaAkAAGQAAAACBQAAAAp0b3RhbFZvdGVzBQAAAAduZXdWb3RlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAPa2V5Vm90aW5nUmVzdWx0AAAAAgUAAAAEcG9vbAUAAAAFZXBvY2gJAABkAAAAAgUAAAAMdm90aW5nUmVzdWx0BQAAAAduZXdWb3RlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAHa2V5VXNlZAAAAAIFAAAAC3VzZXJBZGRyZXNzBQAAAAVlcG9jaAkAAGQAAAACBQAAAAR1c2VkBQAAAAduZXdWb3RlBQAAAANuaWwJAQAAABFkZWxldGVOb2RlQWN0aW9ucwAAAAIJAQAAABBnZXRWb3Rlc0xpc3ROYW1lAAAAAQUAAAAEcG9vbAUAAAAOdXNlckFkZHJlc3NTdHIJAAUUAAAAAgUAAAAHYWN0aW9ucwUAAAAEdW5pdAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAE3Byb2Nlc3NQb29sSU5URVJOQUwAAAABAAAAB3Bvb2xTdHIEAAAAC2NoZWNrQ2FsbGVyCQEAAAAIbXVzdFRoaXMAAAABBQAAAAFpAwkAAAAAAAACBQAAAAtjaGVja0NhbGxlcgUAAAALY2hlY2tDYWxsZXIEAAAAC3RhcmdldEVwb2NoCQAAZQAAAAIJAQAAAAxnZXRJbnRPckZhaWwAAAACBQAAAAR0aGlzBQAAAA9rZXlDdXJyZW50RXBvY2gAAAAAAAAAAAEEAAAAEGNoZWNrVGFyZ2V0RXBvY2gDCQAAZwAAAAIFAAAAC3RhcmdldEVwb2NoAAAAAAAAAAAABgkAAAIAAAABAgAAAClwcm9jZXNzUG9vbElOVEVSTkFMOiBpbnZhbGlkIHRhcmdldCBlcG9jaAMJAAAAAAAAAgUAAAAQY2hlY2tUYXJnZXRFcG9jaAUAAAAQY2hlY2tUYXJnZXRFcG9jaAQAAAAEcG9vbAkBAAAADHN0cmluZ1RvUG9vbAAAAAEFAAAAB3Bvb2xTdHIEAAAADSR0MDE2Nzg3MTY4MjcFAAAABHBvb2wEAAAADWFtb3VudEFzc2V0SWQIBQAAAA0kdDAxNjc4NzE2ODI3AAAAAl8xBAAAAAxwcmljZUFzc2V0SWQIBQAAAA0kdDAxNjc4NzE2ODI3AAAAAl8yBAAAAAp0b3RhbFZvdGVzCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAAA1rZXlUb3RhbFZvdGVzAAAAAQUAAAALdGFyZ2V0RXBvY2gAAAAAAAAAAAAEAAAADHZvdGluZ1Jlc3VsdAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQEAAAAPa2V5Vm90aW5nUmVzdWx0AAAAAgUAAAAEcG9vbAUAAAALdGFyZ2V0RXBvY2gAAAAAAAAAAAAEAAAABXNoYXJlAwkAAAAAAAACBQAAAAp0b3RhbFZvdGVzAAAAAAAAAAAAAAAAAAAAAAAACQAAawAAAAMFAAAADHZvdGluZ1Jlc3VsdAUAAAAOcG9vbFdlaWdodE11bHQFAAAACnRvdGFsVm90ZXMEAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAADGdldFN0ck9yRmFpbAAAAAIFAAAABHRoaXMFAAAAEmtleUZhY3RvcnlDb250cmFjdAQAAAAPbW9kaWZ5V2VpZ2h0SW52CQAD/AAAAAQFAAAAD2ZhY3RvcnlDb250cmFjdAIAAAAMbW9kaWZ5V2VpZ2h0CQAETAAAAAIFAAAADWFtb3VudEFzc2V0SWQJAARMAAAAAgUAAAAMcHJpY2VBc3NldElkCQAETAAAAAIFAAAABXNoYXJlBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAPbW9kaWZ5V2VpZ2h0SW52BQAAAA9tb2RpZnlXZWlnaHRJbnYJAAUUAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAADGtleVBvb2xTaGFyZQAAAAIFAAAABHBvb2wFAAAAC3RhcmdldEVwb2NoBQAAAAVzaGFyZQUAAAADbmlsBQAAAAR1bml0CQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAADmZpbmFsaXplSGVscGVyAAAAAAQAAAAFZXBvY2gJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAAPa2V5Q3VycmVudEVwb2NoAAAAAAAAAAAABAAAAA1wcmV2aW91c0Vwb2NoCQAAZQAAAAIFAAAABWVwb2NoAAAAAAAAAAABBAAAAAtzdGFydEhlaWdodAkBAAAADGdldEludE9yRmFpbAAAAAIFAAAABHRoaXMJAQAAABVrZXlTdGFydEhlaWdodEJ5RXBvY2gAAAABBQAAAAVlcG9jaAQAAAALZXBvY2hMZW5ndGgJAQAAAAxnZXRJbnRPckZhaWwAAAACBQAAAAR0aGlzBQAAAA5rZXlFcG9jaExlbmd0aAQAAAAJZW5kSGVpZ2h0CQAAZAAAAAIFAAAAC3N0YXJ0SGVpZ2h0BQAAAAtlcG9jaExlbmd0aAQAAAAXZmluYWxpemF0aW9uU3RhZ2VPclVuaXQJAAQaAAAAAgUAAAAEdGhpcwUAAAAUa2V5RmluYWxpemF0aW9uU3RhZ2UDCQAAZwAAAAIFAAAABmhlaWdodAUAAAAJZW5kSGVpZ2h0BAAAAAhuZXdFcG9jaAkAAGQAAAACBQAAAAVlcG9jaAAAAAAAAAAAAQkABRQAAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAVa2V5U3RhcnRIZWlnaHRCeUVwb2NoAAAAAQUAAAAIbmV3RXBvY2gFAAAABmhlaWdodAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAOa2V5U3RhcnRIZWlnaHQFAAAABmhlaWdodAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAPa2V5Q3VycmVudEVwb2NoBQAAAAhuZXdFcG9jaAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAUa2V5RmluYWxpemF0aW9uU3RhZ2UFAAAAFmZpbmFsaXphdGlvblN0YWdlVG90YWwFAAAAA25pbAYDCQAAAAAAAAIFAAAAF2ZpbmFsaXphdGlvblN0YWdlT3JVbml0BQAAAAR1bml0CQAFFAAAAAIFAAAAA25pbAcDCQAAAAAAAAIFAAAAF2ZpbmFsaXphdGlvblN0YWdlT3JVbml0BQAAABZmaW5hbGl6YXRpb25TdGFnZVRvdGFsBAAAAApwb29sT3JVbml0CQAEIgAAAAEFAAAAC2tleU5leHRQb29sBAAAAAp1c2VyT3JVbml0CQAEIgAAAAEFAAAAC2tleU5leHRVc2VyBAAAAAckbWF0Y2gwBQAAAApwb29sT3JVbml0AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BAAAAAckbWF0Y2gxCQAEIgAAAAEJAQAAAAtrZXlMaXN0SGVhZAAAAAEFAAAADXBvb2xzTGlzdE5hbWUDCQAAAQAAAAIFAAAAByRtYXRjaDECAAAABFVuaXQJAAUUAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAUa2V5RmluYWxpemF0aW9uU3RhZ2UFAAAAF2ZpbmFsaXphdGlvblN0YWdlU2hhcmVzCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAAC2tleU5leHRQb29sCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAAC2tleU5leHRVc2VyBQAAAANuaWwGAwkAAAEAAAACBQAAAAckbWF0Y2gxAgAAAAZTdHJpbmcEAAAADHBvb2xzSGVhZFN0cgUAAAAHJG1hdGNoMQkABRQAAAACCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAC2tleU5leHRQb29sBQAAAAxwb29sc0hlYWRTdHIFAAAAA25pbAYJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAAHcG9vbFN0cgUAAAAHJG1hdGNoMAQAAAAEcG9vbAkBAAAADHN0cmluZ1RvUG9vbAAAAAEFAAAAB3Bvb2xTdHIEAAAADm5leHRVc2VyT3JVbml0BAAAAAckbWF0Y2gxBQAAAAp1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", "chainId": 84, "height": 2106239, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: F1CtiBMh5o2FxEiNM1pSobsrtP98N9R1JW5sxkJFuTx5 Next: ELK4b5o9ABp9H6iJxgTtC9s365ch86usH4mwKL82yXw2 Diff:
Old | New | Differences | |
---|---|---|---|
19 | 19 | ||
20 | 20 | let i = makeString(["%s", "votingEmissionCandidateContract"], a) | |
21 | 21 | ||
22 | - | let j = makeString(["%s", " | |
22 | + | let j = makeString(["%s", "factoryContract"], a) | |
23 | 23 | ||
24 | - | let k = makeString(["%s", " | |
24 | + | let k = makeString(["%s", "boostingContract"], a) | |
25 | 25 | ||
26 | - | let l = makeString(["%s", " | |
26 | + | let l = makeString(["%s", "finalizationStage"], a) | |
27 | 27 | ||
28 | - | let m = makeString(["%s", " | |
28 | + | let m = makeString(["%s", "nextPool"], a) | |
29 | 29 | ||
30 | - | let n = makeString(["%s", " | |
30 | + | let n = makeString(["%s", "nextUser"], a) | |
31 | 31 | ||
32 | - | let o = makeString(["%s", " | |
32 | + | let o = makeString(["%s", "startHeight"], a) | |
33 | 33 | ||
34 | - | let p = makeString(["%s", " | |
34 | + | let p = makeString(["%s", "currentEpochUi"], a) | |
35 | 35 | ||
36 | - | func q (r) = makeString(["%s%d", "startHeight", toString(r)], a) | |
36 | + | let q = makeString(["%s", "startHeightUi"], a) | |
37 | + | ||
38 | + | func r (s) = makeString(["%s%d", "startHeight", toString(s)], a) | |
37 | 39 | ||
38 | 40 | ||
39 | - | func | |
41 | + | func t (s) = makeString(["%s%d", "finalized", toString(s)], a) | |
40 | 42 | ||
41 | 43 | ||
42 | - | func | |
43 | - | let | |
44 | - | let | |
45 | - | let | |
46 | - | makeString(["%s%s%s", "inList", | |
44 | + | func u (v) = { | |
45 | + | let w = v | |
46 | + | let x = w._1 | |
47 | + | let y = w._2 | |
48 | + | makeString(["%s%s%s", "inList", x, y], a) | |
47 | 49 | } | |
48 | 50 | ||
49 | 51 | ||
50 | - | func | |
52 | + | func z (A,s) = makeString(["%s%s%d", "used", toString(A), toString(s)], a) | |
51 | 53 | ||
52 | 54 | ||
53 | - | func | |
54 | - | let | |
55 | - | let | |
56 | - | let | |
57 | - | makeString(["%s%s%s%s%d", "vote", | |
55 | + | func B (v,A,s) = { | |
56 | + | let C = v | |
57 | + | let x = C._1 | |
58 | + | let y = C._2 | |
59 | + | makeString(["%s%s%s%s%d", "vote", x, y, toString(A), toString(s)], a) | |
58 | 60 | } | |
59 | 61 | ||
60 | 62 | ||
61 | - | func | |
62 | - | let | |
63 | - | let | |
64 | - | let | |
65 | - | makeString(["%s%s%s%d", "votingResult", | |
63 | + | func D (v,s) = { | |
64 | + | let E = v | |
65 | + | let x = E._1 | |
66 | + | let y = E._2 | |
67 | + | makeString(["%s%s%s%d", "votingResult", x, y, toString(s)], a) | |
66 | 68 | } | |
67 | 69 | ||
68 | 70 | ||
69 | - | func | |
70 | - | let | |
71 | - | let | |
72 | - | let | |
73 | - | makeString(["%s%s%s%d", "poolShare", | |
71 | + | func F (v,s) = { | |
72 | + | let G = v | |
73 | + | let x = G._1 | |
74 | + | let y = G._2 | |
75 | + | makeString(["%s%s%s%d", "poolShare", x, y, toString(s)], a) | |
74 | 76 | } | |
75 | 77 | ||
76 | 78 | ||
77 | - | func | |
79 | + | func H (s) = makeString(["%s%d", "totalVotes", toString(s)], a) | |
78 | 80 | ||
79 | 81 | ||
80 | - | func | |
81 | - | let | |
82 | + | func I (A,J,K) = { | |
83 | + | let L = makeString(["mandatory ", toString(A), ".", J, " is not defined"], "") | |
82 | 84 | valueOrErrorMessage({ | |
83 | - | let | |
84 | - | if ($isInstanceOf( | |
85 | + | let M = K | |
86 | + | if ($isInstanceOf(M, "String")) | |
85 | 87 | then { | |
86 | - | let | |
87 | - | getString( | |
88 | + | let N = M | |
89 | + | getString(A, J) | |
88 | 90 | } | |
89 | - | else if ($isInstanceOf( | |
91 | + | else if ($isInstanceOf(M, "Int")) | |
90 | 92 | then { | |
91 | - | let | |
92 | - | getInteger( | |
93 | + | let O = M | |
94 | + | getInteger(A, J) | |
93 | 95 | } | |
94 | 96 | else throw("invalid entry type") | |
95 | - | }, | |
97 | + | }, L) | |
96 | 98 | } | |
97 | 99 | ||
98 | 100 | ||
99 | - | func | |
100 | - | let | |
101 | - | if ($isInstanceOf( | |
102 | - | then | |
101 | + | func P (A,J) = { | |
102 | + | let Q = I(A, J, "") | |
103 | + | if ($isInstanceOf(Q, "String")) | |
104 | + | then Q | |
103 | 105 | else throw("Couldn't cast Int|String to String") | |
104 | 106 | } | |
105 | 107 | ||
106 | 108 | ||
107 | - | func | |
108 | - | let | |
109 | - | if ($isInstanceOf( | |
110 | - | then | |
109 | + | func R (A,J) = { | |
110 | + | let Q = I(A, J, 0) | |
111 | + | if ($isInstanceOf(Q, "Int")) | |
112 | + | then Q | |
111 | 113 | else throw("Couldn't cast Int|String to Int") | |
112 | 114 | } | |
113 | 115 | ||
114 | 116 | ||
115 | - | func | |
117 | + | func S (v) = ((v._1 + a) + v._2) | |
116 | 118 | ||
117 | 119 | ||
118 | - | func | |
119 | - | let | |
120 | - | if ((size( | |
121 | - | then $Tuple2( | |
120 | + | func T (N) = { | |
121 | + | let U = split(N, a) | |
122 | + | if ((size(U) == 2)) | |
123 | + | then $Tuple2(U[0], U[1]) | |
122 | 124 | else throw("invalid pool string") | |
123 | 125 | } | |
124 | 126 | ||
125 | 127 | ||
126 | - | let | |
128 | + | let V = "pools" | |
127 | 129 | ||
128 | - | func | |
129 | - | let | |
130 | - | let | |
131 | - | let | |
132 | - | makeString(["votes", | |
130 | + | func W (v) = { | |
131 | + | let X = v | |
132 | + | let x = X._1 | |
133 | + | let y = X._2 | |
134 | + | makeString(["votes", x, y], a) | |
133 | 135 | } | |
134 | 136 | ||
135 | 137 | ||
136 | - | func | |
137 | - | let | |
138 | + | func Y (Z) = { | |
139 | + | let aa = if ((Z == V)) | |
138 | 140 | then "%s%s" | |
139 | 141 | else "%s%s%s%s" | |
140 | - | makeString([ | |
142 | + | makeString([aa, Z, "head"], a) | |
141 | 143 | } | |
142 | 144 | ||
143 | 145 | ||
144 | - | func | |
145 | - | let | |
146 | + | func ab (Z) = { | |
147 | + | let aa = if ((Z == V)) | |
146 | 148 | then "%s%s" | |
147 | 149 | else "%s%s%s%s" | |
148 | - | makeString([ | |
150 | + | makeString([aa, Z, "size"], a) | |
149 | 151 | } | |
150 | 152 | ||
151 | 153 | ||
152 | - | func | |
153 | - | let | |
154 | + | func ac (Z,ad) = { | |
155 | + | let aa = if ((Z == V)) | |
154 | 156 | then "%s%s%s%s" | |
155 | 157 | else "%s%s%s%s%s" | |
156 | - | makeString([Z, | |
158 | + | makeString([aa, Z, ad, "prev"], a) | |
157 | 159 | } | |
158 | 160 | ||
159 | 161 | ||
160 | - | func | |
161 | - | let | |
162 | + | func ae (Z,ad) = { | |
163 | + | let aa = if ((Z == V)) | |
162 | 164 | then "%s%s%s%s" | |
163 | 165 | else "%s%s%s%s%s" | |
164 | - | makeString([Z, | |
166 | + | makeString([aa, Z, ad, "next"], a) | |
165 | 167 | } | |
166 | 168 | ||
167 | 169 | ||
168 | - | func | |
169 | - | let | |
170 | - | let | |
171 | - | let | |
172 | - | if (if (( | |
170 | + | func af (Z,ad) = { | |
171 | + | let ag = getString(this, Y(Z)) | |
172 | + | let ah = getString(this, ac(Z, ad)) | |
173 | + | let ai = getString(this, ae(Z, ad)) | |
174 | + | if (if ((ad == valueOrElse(ag, ""))) | |
173 | 175 | then true | |
174 | - | else ( | |
176 | + | else (ah != unit)) | |
175 | 177 | then true | |
176 | - | else ( | |
178 | + | else (ai != unit) | |
177 | 179 | } | |
178 | 180 | ||
179 | 181 | ||
180 | - | func | |
181 | - | let | |
182 | - | let | |
183 | - | let | |
182 | + | func aj (Z,ad) = { | |
183 | + | let ag = getString(this, Y(Z)) | |
184 | + | let ak = valueOrElse(getInteger(this, ab(Z)), 0) | |
185 | + | let al = if (!(af(Z, ad))) | |
184 | 186 | then true | |
185 | 187 | else throw("Node exists") | |
186 | - | if (( | |
187 | - | then (([IntegerEntry( | |
188 | - | then [StringEntry( | |
189 | - | else nil)) ++ [StringEntry( | |
188 | + | if ((al == al)) | |
189 | + | then (([IntegerEntry(ab(Z), (ak + 1))] ++ (if ((ag != unit)) | |
190 | + | then [StringEntry(ae(Z, ad), value(ag)), StringEntry(ac(Z, value(ag)), ad)] | |
191 | + | else nil)) ++ [StringEntry(Y(Z), ad)]) | |
190 | 192 | else throw("Strict value is not equal to itself.") | |
191 | 193 | } | |
192 | 194 | ||
193 | 195 | ||
194 | - | func | |
195 | - | let | |
196 | - | let | |
197 | - | let | |
198 | - | let | |
199 | - | ([IntegerEntry( | |
200 | - | then ( | |
196 | + | func am (Z,ad) = { | |
197 | + | let ag = getString(this, Y(Z)) | |
198 | + | let ak = valueOrElse(getInteger(this, ab(Z)), 0) | |
199 | + | let ah = getString(this, ac(Z, ad)) | |
200 | + | let ai = getString(this, ae(Z, ad)) | |
201 | + | ([IntegerEntry(ab(Z), (ak - 1))] ++ (if (if ((ah != unit)) | |
202 | + | then (ai != unit) | |
201 | 203 | else false) | |
202 | - | then [StringEntry( | |
203 | - | else if (( | |
204 | - | then [StringEntry( | |
205 | - | else if (( | |
206 | - | then [DeleteEntry( | |
207 | - | else if (( | |
208 | - | then [DeleteEntry( | |
209 | - | else throw(((("invalid node: " + | |
204 | + | then [StringEntry(ae(Z, value(ah)), value(ai)), StringEntry(ac(Z, value(ai)), value(ah)), DeleteEntry(ac(Z, ad)), DeleteEntry(ae(Z, ad))] | |
205 | + | else if ((ai != unit)) | |
206 | + | then [StringEntry(Y(Z), value(ai)), DeleteEntry(ae(Z, ad)), DeleteEntry(ac(Z, value(ai)))] | |
207 | + | else if ((ah != unit)) | |
208 | + | then [DeleteEntry(ac(Z, ad)), DeleteEntry(ae(Z, value(ah)))] | |
209 | + | else if ((ad == valueOrElse(ag, ""))) | |
210 | + | then [DeleteEntry(Y(Z))] | |
211 | + | else throw(((("invalid node: " + Z) + ".") + ad)))) | |
210 | 212 | } | |
211 | 213 | ||
212 | 214 | ||
213 | - | func | |
215 | + | func an () = "%s__managerPublicKey" | |
214 | 216 | ||
215 | 217 | ||
216 | - | func | |
218 | + | func ao () = "%s__pendingManagerPublicKey" | |
217 | 219 | ||
218 | 220 | ||
219 | - | func | |
220 | - | let | |
221 | - | if ($isInstanceOf( | |
221 | + | func ap () = { | |
222 | + | let M = getString(an()) | |
223 | + | if ($isInstanceOf(M, "String")) | |
222 | 224 | then { | |
223 | - | let | |
224 | - | fromBase58String( | |
225 | + | let aq = M | |
226 | + | fromBase58String(aq) | |
225 | 227 | } | |
226 | - | else if ($isInstanceOf( | |
228 | + | else if ($isInstanceOf(M, "Unit")) | |
227 | 229 | then unit | |
228 | 230 | else throw("Match error") | |
229 | 231 | } | |
230 | 232 | ||
231 | 233 | ||
232 | - | func | |
233 | - | let | |
234 | - | if ($isInstanceOf( | |
234 | + | func ar () = { | |
235 | + | let M = getString(ao()) | |
236 | + | if ($isInstanceOf(M, "String")) | |
235 | 237 | then { | |
236 | - | let | |
237 | - | fromBase58String( | |
238 | + | let aq = M | |
239 | + | fromBase58String(aq) | |
238 | 240 | } | |
239 | - | else if ($isInstanceOf( | |
241 | + | else if ($isInstanceOf(M, "Unit")) | |
240 | 242 | then unit | |
241 | 243 | else throw("Match error") | |
242 | 244 | } | |
243 | 245 | ||
244 | 246 | ||
245 | - | let | |
247 | + | let as = throw("Permission denied") | |
246 | 248 | ||
247 | - | func | |
249 | + | func at (au) = if ((au.caller == this)) | |
248 | 250 | then true | |
249 | - | else | |
251 | + | else as | |
250 | 252 | ||
251 | 253 | ||
252 | - | func | |
253 | - | let | |
254 | - | if ($isInstanceOf( | |
254 | + | func av (au) = { | |
255 | + | let M = ap() | |
256 | + | if ($isInstanceOf(M, "ByteVector")) | |
255 | 257 | then { | |
256 | - | let | |
257 | - | if (( | |
258 | + | let aw = M | |
259 | + | if ((au.callerPublicKey == aw)) | |
258 | 260 | then true | |
259 | - | else | |
261 | + | else as | |
260 | 262 | } | |
261 | - | else if ($isInstanceOf( | |
262 | - | then | |
263 | + | else if ($isInstanceOf(M, "Unit")) | |
264 | + | then at(au) | |
263 | 265 | else throw("Match error") | |
264 | 266 | } | |
265 | 267 | ||
266 | 268 | ||
267 | - | @Callable( | |
268 | - | func setManager ( | |
269 | - | let | |
270 | - | if (( | |
269 | + | @Callable(au) | |
270 | + | func setManager (ax) = { | |
271 | + | let ay = av(au) | |
272 | + | if ((ay == ay)) | |
271 | 273 | then { | |
272 | - | let | |
273 | - | if (( | |
274 | - | then [StringEntry( | |
274 | + | let az = fromBase58String(ax) | |
275 | + | if ((az == az)) | |
276 | + | then [StringEntry(ao(), ax)] | |
275 | 277 | else throw("Strict value is not equal to itself.") | |
276 | 278 | } | |
277 | 279 | else throw("Strict value is not equal to itself.") | |
279 | 281 | ||
280 | 282 | ||
281 | 283 | ||
282 | - | @Callable( | |
284 | + | @Callable(au) | |
283 | 285 | func confirmManager () = { | |
284 | - | let | |
285 | - | let | |
286 | + | let aA = ar() | |
287 | + | let aB = if (isDefined(aA)) | |
286 | 288 | then true | |
287 | 289 | else throw("No pending manager") | |
288 | - | if (( | |
290 | + | if ((aB == aB)) | |
289 | 291 | then { | |
290 | - | let | |
292 | + | let aC = if ((au.callerPublicKey == value(aA))) | |
291 | 293 | then true | |
292 | 294 | else throw("You are not pending manager") | |
293 | - | if (( | |
294 | - | then [StringEntry( | |
295 | + | if ((aC == aC)) | |
296 | + | then [StringEntry(an(), toBase58String(value(aA))), DeleteEntry(ao())] | |
295 | 297 | else throw("Strict value is not equal to itself.") | |
296 | 298 | } | |
297 | 299 | else throw("Strict value is not equal to itself.") | |
299 | 301 | ||
300 | 302 | ||
301 | 303 | ||
302 | - | @Callable( | |
303 | - | func getUserGwxAmountAtHeight ( | |
304 | - | let | |
304 | + | @Callable(au) | |
305 | + | func getUserGwxAmountAtHeight (aD,aE) = { | |
306 | + | let aF = valueOrErrorMessage(addressFromString(P(this, k)), "invalid boosting contract address") | |
305 | 307 | $Tuple2(nil, { | |
306 | - | let | |
307 | - | if ($isInstanceOf( | |
308 | - | then | |
308 | + | let Q = invoke(aF, "getUserGwxAmountAtHeightREADONLY", [aD, aE], nil) | |
309 | + | if ($isInstanceOf(Q, "Int")) | |
310 | + | then Q | |
309 | 311 | else throw("Couldn't cast Any to Int") | |
310 | 312 | }) | |
311 | 313 | } | |
312 | 314 | ||
313 | 315 | ||
314 | 316 | ||
315 | - | @Callable( | |
316 | - | func constructor ( | |
317 | - | let | |
317 | + | @Callable(au) | |
318 | + | func constructor (aG,aH,aI,aJ) = { | |
319 | + | let aK = [av(au), if ((addressFromString(aG) != unit)) | |
318 | 320 | then true | |
319 | - | else "invalid | |
321 | + | else "invalid factory contract address", if ((addressFromString(aH) != unit)) | |
320 | 322 | then true | |
321 | - | else "invalid boosting contract address", if ((aH > 0)) | |
323 | + | else "invalid voting emission candidate contract address", if ((addressFromString(aI) != unit)) | |
324 | + | then true | |
325 | + | else "invalid boosting contract address", if ((aJ > 0)) | |
322 | 326 | then true | |
323 | 327 | else throw("invalid epoch length")] | |
324 | - | if (( | |
325 | - | then $Tuple2([StringEntry( | |
328 | + | if ((aK == aK)) | |
329 | + | then $Tuple2([StringEntry(j, aG), StringEntry(i, aH), StringEntry(k, aI), IntegerEntry(f, aJ)], unit) | |
326 | 330 | else throw("Strict value is not equal to itself.") | |
327 | 331 | } | |
328 | 332 | ||
329 | 333 | ||
330 | 334 | ||
331 | - | @Callable( | |
332 | - | func create ( | |
333 | - | let | |
335 | + | @Callable(au) | |
336 | + | func create (x,y) = { | |
337 | + | let aL = [if ((toBase58String(au.caller.bytes) == valueOrElse(getString(this, i), ""))) | |
334 | 338 | then true | |
335 | - | else au | |
336 | - | if (( | |
339 | + | else av(au)] | |
340 | + | if ((aL == aL)) | |
337 | 341 | then { | |
338 | - | let | |
339 | - | let | |
340 | - | let | |
341 | - | let | |
342 | + | let v = $Tuple2(x, y) | |
343 | + | let aM = ([BooleanEntry(u(v), true)] ++ aj(V, S(v))) | |
344 | + | let aN = (getInteger(this, g) == unit) | |
345 | + | let aO = if (aN) | |
342 | 346 | then { | |
343 | - | let | |
344 | - | [IntegerEntry(g, | |
347 | + | let s = 0 | |
348 | + | [IntegerEntry(g, s), IntegerEntry(r(s), height), IntegerEntry(o, height), IntegerEntry(p, s), IntegerEntry(q, height)] | |
345 | 349 | } | |
346 | 350 | else nil | |
347 | - | $Tuple2(( | |
351 | + | $Tuple2((aM ++ aO), unit) | |
348 | 352 | } | |
349 | 353 | else throw("Strict value is not equal to itself.") | |
350 | 354 | } | |
351 | 355 | ||
352 | 356 | ||
353 | 357 | ||
354 | - | @Callable( | |
355 | - | func vote ( | |
356 | - | let | |
357 | - | let | |
358 | - | let | |
359 | - | let | |
360 | - | let | |
361 | - | let | |
362 | - | let | |
363 | - | let | |
364 | - | let | |
365 | - | let | |
366 | - | let | |
367 | - | let | |
368 | - | if ($isInstanceOf( | |
369 | - | then | |
358 | + | @Callable(au) | |
359 | + | func vote (x,y,aP) = { | |
360 | + | let v = $Tuple2(x, y) | |
361 | + | let s = valueOrElse(getInteger(this, g), 0) | |
362 | + | let aQ = R(this, r(s)) | |
363 | + | let aJ = R(this, f) | |
364 | + | let aR = (aQ + aJ) | |
365 | + | let aS = getInteger(this, l) | |
366 | + | let aT = valueOrElse(getInteger(this, z(au.caller, s)), 0) | |
367 | + | let aU = valueOrElse(getInteger(this, B(v, au.caller, s)), 0) | |
368 | + | let aV = valueOrElse(getInteger(this, D(v, s)), 0) | |
369 | + | let aW = valueOrElse(getInteger(this, H(s)), 0) | |
370 | + | let aX = { | |
371 | + | let Q = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(au.caller.bytes), aR], nil) | |
372 | + | if ($isInstanceOf(Q, "Int")) | |
373 | + | then Q | |
370 | 374 | else throw("Couldn't cast Any to Int") | |
371 | 375 | } | |
372 | - | let | |
373 | - | let | |
374 | - | let | |
376 | + | let aY = (aX - aT) | |
377 | + | let aZ = (aU + aP) | |
378 | + | let aL = [if ((getBoolean(u(v)) != unit)) | |
375 | 379 | then true | |
376 | - | else throw("invalid assets"), if (( | |
380 | + | else throw("invalid assets"), if ((aR > height)) | |
377 | 381 | then true | |
378 | - | else throw("invalid height"), if (( | |
382 | + | else throw("invalid height"), if ((aS == unit)) | |
379 | 383 | then true | |
380 | - | else throw("finalization in progress"), if (( | |
384 | + | else throw("finalization in progress"), if ((aX > 0)) | |
381 | 385 | then true | |
382 | - | else throw("you do not have gWX"), if (if (( | |
383 | - | then ( | |
386 | + | else throw("you do not have gWX"), if (if ((aP > 0)) | |
387 | + | then (aY >= aP) | |
384 | 388 | else false) | |
385 | 389 | then true | |
386 | 390 | else throw("invalid amount")] | |
387 | - | if (( | |
391 | + | if ((aL == aL)) | |
388 | 392 | then { | |
389 | - | let | |
390 | - | let | |
391 | - | let | |
393 | + | let ba = W(v) | |
394 | + | let bb = toString(au.caller) | |
395 | + | let bc = if (af(ba, bb)) | |
392 | 396 | then nil | |
393 | - | else | |
394 | - | $Tuple2(([IntegerEntry( | |
397 | + | else aj(ba, bb) | |
398 | + | $Tuple2(([IntegerEntry(z(au.caller, s), (aT + aP)), IntegerEntry(B(v, au.caller, s), aZ), IntegerEntry(D(v, s), (aV + aP)), IntegerEntry(H(s), (aW + aP))] ++ bc), unit) | |
395 | 399 | } | |
396 | 400 | else throw("Strict value is not equal to itself.") | |
397 | 401 | } | |
398 | 402 | ||
399 | 403 | ||
400 | 404 | ||
401 | - | @Callable( | |
402 | - | func cancelVote ( | |
403 | - | let | |
404 | - | let | |
405 | - | let | |
406 | - | let | |
407 | - | let | |
408 | - | let | |
409 | - | let | |
410 | - | let | |
411 | - | let | |
412 | - | let | |
413 | - | let | |
405 | + | @Callable(au) | |
406 | + | func cancelVote (x,y) = { | |
407 | + | let v = $Tuple2(x, y) | |
408 | + | let s = valueOrElse(getInteger(this, g), 0) | |
409 | + | let aQ = R(this, r(s)) | |
410 | + | let aJ = R(this, f) | |
411 | + | let aR = (aQ + aJ) | |
412 | + | let aS = getInteger(this, l) | |
413 | + | let aT = valueOrElse(getInteger(this, z(au.caller, s)), 0) | |
414 | + | let aU = valueOrElse(getInteger(this, B(v, au.caller, s)), 0) | |
415 | + | let aV = valueOrElse(getInteger(this, D(v, s)), 0) | |
416 | + | let aW = valueOrElse(getInteger(this, H(s)), 0) | |
417 | + | let aL = [if ((getBoolean(u(v)) != unit)) | |
414 | 418 | then true | |
415 | - | else throw("invalid assets"), if (( | |
419 | + | else throw("invalid assets"), if ((aR > height)) | |
416 | 420 | then true | |
417 | - | else throw("invalid height"), if (( | |
421 | + | else throw("invalid height"), if ((aS == unit)) | |
418 | 422 | then true | |
419 | - | else throw("finalization in progress"), if (( | |
423 | + | else throw("finalization in progress"), if ((aU > 0)) | |
420 | 424 | then true | |
421 | 425 | else throw("no vote")] | |
422 | - | if (( | |
426 | + | if ((aL == aL)) | |
423 | 427 | then { | |
424 | - | let | |
425 | - | let | |
426 | - | $Tuple2(([IntegerEntry( | |
428 | + | let ba = W(v) | |
429 | + | let bb = toString(au.caller) | |
430 | + | $Tuple2(([IntegerEntry(z(au.caller, s), max([(aT - aU), 0])), DeleteEntry(B(v, au.caller, s)), IntegerEntry(D(v, s), (aV - aU)), IntegerEntry(H(s), (aW - aU))] ++ am(ba, bb)), unit) | |
427 | 431 | } | |
428 | 432 | else throw("Strict value is not equal to itself.") | |
429 | 433 | } | |
430 | 434 | ||
431 | 435 | ||
432 | 436 | ||
433 | - | @Callable( | |
434 | - | func setEpochLength ( | |
435 | - | let | |
437 | + | @Callable(au) | |
438 | + | func setEpochLength (bd) = { | |
439 | + | let aK = [av(au), if ((bd > 0)) | |
436 | 440 | then true | |
437 | 441 | else throw("invalid epoch length")] | |
438 | - | if (( | |
439 | - | then $Tuple2([IntegerEntry(f, | |
442 | + | if ((aK == aK)) | |
443 | + | then $Tuple2([IntegerEntry(f, bd)], unit) | |
440 | 444 | else throw("Strict value is not equal to itself.") | |
441 | 445 | } | |
442 | 446 | ||
443 | 447 | ||
444 | 448 | ||
445 | - | @Callable( | |
446 | - | func setMaxDepth ( | |
447 | - | let | |
449 | + | @Callable(au) | |
450 | + | func setMaxDepth (be) = { | |
451 | + | let aK = [av(au), if ((be > 0)) | |
448 | 452 | then true | |
449 | 453 | else throw("invalid max depth")] | |
450 | - | if (( | |
451 | - | then $Tuple2([IntegerEntry(h, | |
454 | + | if ((aK == aK)) | |
455 | + | then $Tuple2([IntegerEntry(h, be)], unit) | |
452 | 456 | else throw("Strict value is not equal to itself.") | |
453 | 457 | } | |
454 | 458 | ||
455 | 459 | ||
456 | 460 | ||
457 | - | @Callable( | |
458 | - | func processVoteINTERNAL ( | |
459 | - | let | |
460 | - | if (( | |
461 | + | @Callable(au) | |
462 | + | func processVoteINTERNAL (bf,bb) = { | |
463 | + | let ay = at(au) | |
464 | + | if ((ay == ay)) | |
461 | 465 | then { | |
462 | - | let | |
463 | - | let | |
464 | - | let | |
465 | - | let | |
466 | - | let | |
467 | - | let | |
468 | - | let | |
469 | - | let | |
470 | - | let | |
466 | + | let aD = valueOrErrorMessage(addressFromString(bb), ("processVoteINTERNAL: invalid user address " + bb)) | |
467 | + | let s = R(this, g) | |
468 | + | let bg = (s - 1) | |
469 | + | let aJ = R(this, f) | |
470 | + | let aQ = R(this, r(s)) | |
471 | + | let aR = (aQ + aJ) | |
472 | + | let bh = R(this, r(bg)) | |
473 | + | let bi = (bh + aJ) | |
474 | + | let bj = if ((bg >= 0)) | |
471 | 475 | then true | |
472 | 476 | else throw("processVoteINTERNAL: invalid previous epoch") | |
473 | - | if (( | |
477 | + | if ((bj == bj)) | |
474 | 478 | then { | |
475 | - | let | |
476 | - | let | |
477 | - | let | |
478 | - | if ($isInstanceOf( | |
479 | - | then | |
479 | + | let v = T(bf) | |
480 | + | let aX = { | |
481 | + | let Q = invoke(this, "getUserGwxAmountAtHeight", [bb, aR], nil) | |
482 | + | if ($isInstanceOf(Q, "Int")) | |
483 | + | then Q | |
480 | 484 | else throw("Couldn't cast Any to Int") | |
481 | 485 | } | |
482 | - | let | |
483 | - | let | |
484 | - | if ($isInstanceOf( | |
485 | - | then | |
486 | + | let bk = { | |
487 | + | let Q = invoke(this, "getUserGwxAmountAtHeight", [bb, bi], nil) | |
488 | + | if ($isInstanceOf(Q, "Int")) | |
489 | + | then Q | |
486 | 490 | else throw("Couldn't cast Any to Int") | |
487 | 491 | } | |
488 | - | let | |
489 | - | let | |
490 | - | let | |
491 | - | let | |
492 | - | let | |
493 | - | let | |
494 | - | then [IntegerEntry( | |
495 | - | else | |
496 | - | $Tuple2( | |
492 | + | let aW = valueOrElse(getInteger(H(s)), 0) | |
493 | + | let bl = valueOrElse(getInteger(D(v, s)), 0) | |
494 | + | let bm = valueOrErrorMessage(getInteger(B(v, aD, bg)), (((("processVoteINTERNAL " + bf) + " ") + bb) + ": no previous vote")) | |
495 | + | let aT = valueOrElse(getInteger(this, z(aD, s)), 0) | |
496 | + | let aZ = fraction(bm, aX, bk) | |
497 | + | let bn = if ((aZ > 0)) | |
498 | + | then [IntegerEntry(B(v, aD, s), aZ), IntegerEntry(H(s), (aW + aZ)), IntegerEntry(D(v, s), (bl + aZ)), IntegerEntry(z(aD, s), (aT + aZ))] | |
499 | + | else am(W(v), bb) | |
500 | + | $Tuple2(bn, unit) | |
497 | 501 | } | |
498 | 502 | else throw("Strict value is not equal to itself.") | |
499 | 503 | } | |
502 | 506 | ||
503 | 507 | ||
504 | 508 | ||
505 | - | @Callable( | |
506 | - | func processPoolINTERNAL ( | |
507 | - | let | |
508 | - | if (( | |
509 | + | @Callable(au) | |
510 | + | func processPoolINTERNAL (bf) = { | |
511 | + | let ay = at(au) | |
512 | + | if ((ay == ay)) | |
509 | 513 | then { | |
510 | - | let | |
511 | - | let | |
514 | + | let bo = (R(this, g) - 1) | |
515 | + | let bj = if ((bo >= 0)) | |
512 | 516 | then true | |
513 | 517 | else throw("processPoolINTERNAL: invalid target epoch") | |
514 | - | if (( | |
518 | + | if ((bj == bj)) | |
515 | 519 | then { | |
516 | - | let u = S(bd) | |
517 | - | let aU = valueOrElse(getInteger(this, G(bm)), 0) | |
518 | - | let bj = valueOrElse(getInteger(this, C(u, bm)), 0) | |
519 | - | let bn = if ((aU == 0)) | |
520 | + | let v = T(bf) | |
521 | + | let bp = v | |
522 | + | let x = bp._1 | |
523 | + | let y = bp._2 | |
524 | + | let aW = valueOrElse(getInteger(this, H(bo)), 0) | |
525 | + | let bl = valueOrElse(getInteger(this, D(v, bo)), 0) | |
526 | + | let bq = if ((aW == 0)) | |
520 | 527 | then 0 | |
521 | - | else fraction(bj, b, aU) | |
522 | - | $Tuple2([IntegerEntry(E(u, bm), bn)], unit) | |
528 | + | else fraction(bl, b, aW) | |
529 | + | let aG = addressFromStringValue(P(this, j)) | |
530 | + | let br = invoke(aG, "modifyWeight", [x, y, bq], nil) | |
531 | + | if ((br == br)) | |
532 | + | then $Tuple2([IntegerEntry(F(v, bo), bq)], unit) | |
533 | + | else throw("Strict value is not equal to itself.") | |
523 | 534 | } | |
524 | 535 | else throw("Strict value is not equal to itself.") | |
525 | 536 | } | |
528 | 539 | ||
529 | 540 | ||
530 | 541 | ||
531 | - | @Callable( | |
542 | + | @Callable(au) | |
532 | 543 | func finalizeHelper () = { | |
533 | - | let | |
534 | - | let | |
535 | - | let | |
536 | - | let | |
537 | - | let | |
538 | - | let | |
539 | - | if ((height >= | |
544 | + | let s = valueOrElse(getInteger(this, g), 0) | |
545 | + | let bs = (s - 1) | |
546 | + | let aQ = R(this, r(s)) | |
547 | + | let aJ = R(this, f) | |
548 | + | let aR = (aQ + aJ) | |
549 | + | let aS = getInteger(this, l) | |
550 | + | if ((height >= aR)) | |
540 | 551 | then { | |
541 | - | let | |
542 | - | $Tuple2([IntegerEntry( | |
552 | + | let bt = (s + 1) | |
553 | + | $Tuple2([IntegerEntry(r(bt), height), IntegerEntry(o, height), IntegerEntry(g, bt), IntegerEntry(l, d)], true) | |
543 | 554 | } | |
544 | - | else if (( | |
555 | + | else if ((aS == unit)) | |
545 | 556 | then $Tuple2(nil, false) | |
546 | - | else if (( | |
557 | + | else if ((aS == d)) | |
547 | 558 | then { | |
548 | - | let | |
549 | - | let | |
550 | - | let | |
551 | - | if ($isInstanceOf( | |
559 | + | let bu = getString(m) | |
560 | + | let bv = getString(n) | |
561 | + | let M = bu | |
562 | + | if ($isInstanceOf(M, "Unit")) | |
552 | 563 | then { | |
553 | - | let | |
554 | - | if ($isInstanceOf( | |
555 | - | then $Tuple2([IntegerEntry( | |
556 | - | else if ($isInstanceOf( | |
564 | + | let bw = getString(Y(V)) | |
565 | + | if ($isInstanceOf(bw, "Unit")) | |
566 | + | then $Tuple2([IntegerEntry(l, e), DeleteEntry(m), DeleteEntry(n)], true) | |
567 | + | else if ($isInstanceOf(bw, "String")) | |
557 | 568 | then { | |
558 | - | let | |
559 | - | $Tuple2([StringEntry( | |
569 | + | let bx = bw | |
570 | + | $Tuple2([StringEntry(m, bx)], true) | |
560 | 571 | } | |
561 | 572 | else throw("Match error") | |
562 | 573 | } | |
563 | - | else if ($isInstanceOf( | |
574 | + | else if ($isInstanceOf(M, "String")) | |
564 | 575 | then { | |
565 | - | let | |
566 | - | let | |
567 | - | let | |
568 | - | let | |
569 | - | if ($isInstanceOf( | |
570 | - | then getString( | |
571 | - | else if ($isInstanceOf( | |
576 | + | let bf = M | |
577 | + | let v = T(bf) | |
578 | + | let by = { | |
579 | + | let bw = bv | |
580 | + | if ($isInstanceOf(bw, "Unit")) | |
581 | + | then getString(Y(W(v))) | |
582 | + | else if ($isInstanceOf(bw, "String")) | |
572 | 583 | then { | |
573 | - | let | |
574 | - | let | |
575 | - | if (( | |
576 | - | then getString( | |
584 | + | let bz = bw | |
585 | + | let bA = invoke(this, "processVoteINTERNAL", [bf, bz], nil) | |
586 | + | if ((bA == bA)) | |
587 | + | then getString(ae(W(v), bz)) | |
577 | 588 | else throw("Strict value is not equal to itself.") | |
578 | 589 | } | |
579 | 590 | else throw("Match error") | |
580 | 591 | } | |
581 | - | let | |
582 | - | if ($isInstanceOf( | |
592 | + | let bw = by | |
593 | + | if ($isInstanceOf(bw, "Unit")) | |
583 | 594 | then { | |
584 | - | let | |
585 | - | let | |
586 | - | if ($isInstanceOf( | |
587 | - | then $Tuple2([IntegerEntry( | |
588 | - | else if ($isInstanceOf( | |
595 | + | let bB = getString(ae(V, bf)) | |
596 | + | let bC = bB | |
597 | + | if ($isInstanceOf(bC, "Unit")) | |
598 | + | then $Tuple2([IntegerEntry(l, e), DeleteEntry(m), DeleteEntry(n)], true) | |
599 | + | else if ($isInstanceOf(bC, "String")) | |
589 | 600 | then { | |
590 | - | let | |
591 | - | $Tuple2([StringEntry( | |
601 | + | let aq = bC | |
602 | + | $Tuple2([StringEntry(m, aq), DeleteEntry(n)], true) | |
592 | 603 | } | |
593 | 604 | else throw("Match error") | |
594 | 605 | } | |
595 | - | else if ($isInstanceOf( | |
606 | + | else if ($isInstanceOf(bw, "String")) | |
596 | 607 | then { | |
597 | - | let | |
598 | - | $Tuple2([StringEntry( | |
608 | + | let bD = bw | |
609 | + | $Tuple2([StringEntry(n, bD)], true) | |
599 | 610 | } | |
600 | 611 | else throw("Match error") | |
601 | 612 | } | |
602 | 613 | else throw("Match error") | |
603 | 614 | } | |
604 | - | else if (( | |
615 | + | else if ((aS == e)) | |
605 | 616 | then { | |
606 | - | let | |
607 | - | let | |
608 | - | if ($isInstanceOf( | |
617 | + | let bu = getString(m) | |
618 | + | let M = bu | |
619 | + | if ($isInstanceOf(M, "Unit")) | |
609 | 620 | then { | |
610 | - | let | |
611 | - | if ($isInstanceOf( | |
612 | - | then $Tuple2([DeleteEntry( | |
613 | - | else if ($isInstanceOf( | |
621 | + | let bw = getString(Y(V)) | |
622 | + | if ($isInstanceOf(bw, "Unit")) | |
623 | + | then $Tuple2([DeleteEntry(l), BooleanEntry(t(bs), true), IntegerEntry(p, s), IntegerEntry(q, aQ)], true) | |
624 | + | else if ($isInstanceOf(bw, "String")) | |
614 | 625 | then { | |
615 | - | let | |
616 | - | $Tuple2([StringEntry( | |
626 | + | let bE = bw | |
627 | + | $Tuple2([StringEntry(m, bE)], true) | |
617 | 628 | } | |
618 | 629 | else throw("Match error") | |
619 | 630 | } | |
620 | - | else if ($isInstanceOf( | |
631 | + | else if ($isInstanceOf(M, "String")) | |
621 | 632 | then { | |
622 | - | let | |
623 | - | let | |
624 | - | if (( | |
633 | + | let bf = M | |
634 | + | let bF = invoke(this, "processPoolINTERNAL", [bf], nil) | |
635 | + | if ((bF == bF)) | |
625 | 636 | then { | |
626 | - | let | |
627 | - | let | |
628 | - | if ($isInstanceOf( | |
629 | - | then $Tuple2([DeleteEntry( | |
630 | - | else if ($isInstanceOf( | |
637 | + | let bB = getString(ae(V, bf)) | |
638 | + | let bw = bB | |
639 | + | if ($isInstanceOf(bw, "Unit")) | |
640 | + | then $Tuple2([DeleteEntry(l), BooleanEntry(t(bs), true), IntegerEntry(p, s), IntegerEntry(q, aQ), DeleteEntry(m)], true) | |
641 | + | else if ($isInstanceOf(bw, "String")) | |
631 | 642 | then { | |
632 | - | let | |
633 | - | $Tuple2([StringEntry( | |
643 | + | let bE = bw | |
644 | + | $Tuple2([StringEntry(m, bE)], true) | |
634 | 645 | } | |
635 | 646 | else throw("Match error") | |
636 | 647 | } | |
643 | 654 | ||
644 | 655 | ||
645 | 656 | ||
646 | - | @Callable( | |
647 | - | func finalizeWrapper ( | |
648 | - | let | |
649 | - | let | |
650 | - | if ($isInstanceOf( | |
651 | - | then | |
657 | + | @Callable(au) | |
658 | + | func finalizeWrapper (bG) = { | |
659 | + | let bH = { | |
660 | + | let Q = invoke(this, "finalizeHelper", nil, nil) | |
661 | + | if ($isInstanceOf(Q, "Boolean")) | |
662 | + | then Q | |
652 | 663 | else throw("Couldn't cast Any to Boolean") | |
653 | 664 | } | |
654 | - | if (( | |
655 | - | then if (!( | |
656 | - | then if (( | |
665 | + | if ((bH == bH)) | |
666 | + | then if (!(bH)) | |
667 | + | then if ((bG == 0)) | |
657 | 668 | then throw("Current voting is not over yet") | |
658 | 669 | else $Tuple2(nil, unit) | |
659 | 670 | else { | |
660 | - | let | |
661 | - | if (( | |
671 | + | let bI = valueOrElse(getInteger(this, h), c) | |
672 | + | if ((bI > bG)) | |
662 | 673 | then { | |
663 | - | let | |
664 | - | if (( | |
674 | + | let bJ = invoke(this, "finalizeWrapper", [(bG + 1)], nil) | |
675 | + | if ((bJ == bJ)) | |
665 | 676 | then $Tuple2(nil, unit) | |
666 | 677 | else throw("Strict value is not equal to itself.") | |
667 | 678 | } | |
672 | 683 | ||
673 | 684 | ||
674 | 685 | ||
675 | - | @Callable( | |
686 | + | @Callable(au) | |
676 | 687 | func finalize () = { | |
677 | - | let | |
678 | - | if (( | |
688 | + | let bJ = invoke(this, "finalizeWrapper", [0], nil) | |
689 | + | if ((bJ == bJ)) | |
679 | 690 | then $Tuple2(nil, unit) | |
680 | 691 | else throw("Strict value is not equal to itself.") | |
681 | 692 | } | |
682 | 693 | ||
683 | 694 | ||
684 | 695 | ||
685 | - | @Callable( | |
686 | - | func onVerificationLoss ( | |
696 | + | @Callable(au) | |
697 | + | func onVerificationLoss (bK) = $Tuple2(nil, unit) | |
687 | 698 | ||
688 | 699 | ||
689 | 700 | ||
690 | - | @Callable( | |
691 | - | func containsNodeREADONLY ( | |
701 | + | @Callable(au) | |
702 | + | func containsNodeREADONLY (Z,ad) = $Tuple2(nil, af(Z, ad)) | |
692 | 703 | ||
693 | 704 | ||
694 | 705 | ||
695 | - | @Callable( | |
696 | - | func insertNode ( | |
697 | - | let | |
698 | - | if (( | |
699 | - | then $Tuple2( | |
706 | + | @Callable(au) | |
707 | + | func insertNode (Z,ad) = { | |
708 | + | let ay = av(au) | |
709 | + | if ((ay == ay)) | |
710 | + | then $Tuple2(aj(Z, ad), unit) | |
700 | 711 | else throw("Strict value is not equal to itself.") | |
701 | 712 | } | |
702 | 713 | ||
703 | 714 | ||
704 | 715 | ||
705 | - | @Callable( | |
706 | - | func deleteNode ( | |
707 | - | let | |
708 | - | if (( | |
709 | - | then $Tuple2( | |
716 | + | @Callable(au) | |
717 | + | func deleteNode (Z,ad) = { | |
718 | + | let ay = av(au) | |
719 | + | if ((ay == ay)) | |
720 | + | then $Tuple2(am(Z, ad), unit) | |
710 | 721 | else throw("Strict value is not equal to itself.") | |
711 | 722 | } | |
712 | 723 | ||
713 | 724 | ||
714 | - | @Verifier( | |
715 | - | func | |
716 | - | let | |
717 | - | let | |
718 | - | if ($isInstanceOf( | |
725 | + | @Verifier(bL) | |
726 | + | func bM () = { | |
727 | + | let bN = { | |
728 | + | let M = ap() | |
729 | + | if ($isInstanceOf(M, "ByteVector")) | |
719 | 730 | then { | |
720 | - | let | |
721 | - | | |
731 | + | let aw = M | |
732 | + | aw | |
722 | 733 | } | |
723 | - | else if ($isInstanceOf( | |
724 | - | then | |
734 | + | else if ($isInstanceOf(M, "Unit")) | |
735 | + | then bL.senderPublicKey | |
725 | 736 | else throw("Match error") | |
726 | 737 | } | |
727 | - | sigVerify( | |
738 | + | sigVerify(bL.bodyBytes, bL.proofs[0], bN) | |
728 | 739 | } | |
729 | 740 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = "__" | |
5 | 5 | ||
6 | 6 | let b = 100000000 | |
7 | 7 | ||
8 | 8 | let c = 10 | |
9 | 9 | ||
10 | 10 | let d = 0 | |
11 | 11 | ||
12 | 12 | let e = 1 | |
13 | 13 | ||
14 | 14 | let f = makeString(["%s", "epochLength"], a) | |
15 | 15 | ||
16 | 16 | let g = makeString(["%s", "currentEpoch"], a) | |
17 | 17 | ||
18 | 18 | let h = makeString(["%s", "maxDepth"], a) | |
19 | 19 | ||
20 | 20 | let i = makeString(["%s", "votingEmissionCandidateContract"], a) | |
21 | 21 | ||
22 | - | let j = makeString(["%s", " | |
22 | + | let j = makeString(["%s", "factoryContract"], a) | |
23 | 23 | ||
24 | - | let k = makeString(["%s", " | |
24 | + | let k = makeString(["%s", "boostingContract"], a) | |
25 | 25 | ||
26 | - | let l = makeString(["%s", " | |
26 | + | let l = makeString(["%s", "finalizationStage"], a) | |
27 | 27 | ||
28 | - | let m = makeString(["%s", " | |
28 | + | let m = makeString(["%s", "nextPool"], a) | |
29 | 29 | ||
30 | - | let n = makeString(["%s", " | |
30 | + | let n = makeString(["%s", "nextUser"], a) | |
31 | 31 | ||
32 | - | let o = makeString(["%s", " | |
32 | + | let o = makeString(["%s", "startHeight"], a) | |
33 | 33 | ||
34 | - | let p = makeString(["%s", " | |
34 | + | let p = makeString(["%s", "currentEpochUi"], a) | |
35 | 35 | ||
36 | - | func q (r) = makeString(["%s%d", "startHeight", toString(r)], a) | |
36 | + | let q = makeString(["%s", "startHeightUi"], a) | |
37 | + | ||
38 | + | func r (s) = makeString(["%s%d", "startHeight", toString(s)], a) | |
37 | 39 | ||
38 | 40 | ||
39 | - | func | |
41 | + | func t (s) = makeString(["%s%d", "finalized", toString(s)], a) | |
40 | 42 | ||
41 | 43 | ||
42 | - | func | |
43 | - | let | |
44 | - | let | |
45 | - | let | |
46 | - | makeString(["%s%s%s", "inList", | |
44 | + | func u (v) = { | |
45 | + | let w = v | |
46 | + | let x = w._1 | |
47 | + | let y = w._2 | |
48 | + | makeString(["%s%s%s", "inList", x, y], a) | |
47 | 49 | } | |
48 | 50 | ||
49 | 51 | ||
50 | - | func | |
52 | + | func z (A,s) = makeString(["%s%s%d", "used", toString(A), toString(s)], a) | |
51 | 53 | ||
52 | 54 | ||
53 | - | func | |
54 | - | let | |
55 | - | let | |
56 | - | let | |
57 | - | makeString(["%s%s%s%s%d", "vote", | |
55 | + | func B (v,A,s) = { | |
56 | + | let C = v | |
57 | + | let x = C._1 | |
58 | + | let y = C._2 | |
59 | + | makeString(["%s%s%s%s%d", "vote", x, y, toString(A), toString(s)], a) | |
58 | 60 | } | |
59 | 61 | ||
60 | 62 | ||
61 | - | func | |
62 | - | let | |
63 | - | let | |
64 | - | let | |
65 | - | makeString(["%s%s%s%d", "votingResult", | |
63 | + | func D (v,s) = { | |
64 | + | let E = v | |
65 | + | let x = E._1 | |
66 | + | let y = E._2 | |
67 | + | makeString(["%s%s%s%d", "votingResult", x, y, toString(s)], a) | |
66 | 68 | } | |
67 | 69 | ||
68 | 70 | ||
69 | - | func | |
70 | - | let | |
71 | - | let | |
72 | - | let | |
73 | - | makeString(["%s%s%s%d", "poolShare", | |
71 | + | func F (v,s) = { | |
72 | + | let G = v | |
73 | + | let x = G._1 | |
74 | + | let y = G._2 | |
75 | + | makeString(["%s%s%s%d", "poolShare", x, y, toString(s)], a) | |
74 | 76 | } | |
75 | 77 | ||
76 | 78 | ||
77 | - | func | |
79 | + | func H (s) = makeString(["%s%d", "totalVotes", toString(s)], a) | |
78 | 80 | ||
79 | 81 | ||
80 | - | func | |
81 | - | let | |
82 | + | func I (A,J,K) = { | |
83 | + | let L = makeString(["mandatory ", toString(A), ".", J, " is not defined"], "") | |
82 | 84 | valueOrErrorMessage({ | |
83 | - | let | |
84 | - | if ($isInstanceOf( | |
85 | + | let M = K | |
86 | + | if ($isInstanceOf(M, "String")) | |
85 | 87 | then { | |
86 | - | let | |
87 | - | getString( | |
88 | + | let N = M | |
89 | + | getString(A, J) | |
88 | 90 | } | |
89 | - | else if ($isInstanceOf( | |
91 | + | else if ($isInstanceOf(M, "Int")) | |
90 | 92 | then { | |
91 | - | let | |
92 | - | getInteger( | |
93 | + | let O = M | |
94 | + | getInteger(A, J) | |
93 | 95 | } | |
94 | 96 | else throw("invalid entry type") | |
95 | - | }, | |
97 | + | }, L) | |
96 | 98 | } | |
97 | 99 | ||
98 | 100 | ||
99 | - | func | |
100 | - | let | |
101 | - | if ($isInstanceOf( | |
102 | - | then | |
101 | + | func P (A,J) = { | |
102 | + | let Q = I(A, J, "") | |
103 | + | if ($isInstanceOf(Q, "String")) | |
104 | + | then Q | |
103 | 105 | else throw("Couldn't cast Int|String to String") | |
104 | 106 | } | |
105 | 107 | ||
106 | 108 | ||
107 | - | func | |
108 | - | let | |
109 | - | if ($isInstanceOf( | |
110 | - | then | |
109 | + | func R (A,J) = { | |
110 | + | let Q = I(A, J, 0) | |
111 | + | if ($isInstanceOf(Q, "Int")) | |
112 | + | then Q | |
111 | 113 | else throw("Couldn't cast Int|String to Int") | |
112 | 114 | } | |
113 | 115 | ||
114 | 116 | ||
115 | - | func | |
117 | + | func S (v) = ((v._1 + a) + v._2) | |
116 | 118 | ||
117 | 119 | ||
118 | - | func | |
119 | - | let | |
120 | - | if ((size( | |
121 | - | then $Tuple2( | |
120 | + | func T (N) = { | |
121 | + | let U = split(N, a) | |
122 | + | if ((size(U) == 2)) | |
123 | + | then $Tuple2(U[0], U[1]) | |
122 | 124 | else throw("invalid pool string") | |
123 | 125 | } | |
124 | 126 | ||
125 | 127 | ||
126 | - | let | |
128 | + | let V = "pools" | |
127 | 129 | ||
128 | - | func | |
129 | - | let | |
130 | - | let | |
131 | - | let | |
132 | - | makeString(["votes", | |
130 | + | func W (v) = { | |
131 | + | let X = v | |
132 | + | let x = X._1 | |
133 | + | let y = X._2 | |
134 | + | makeString(["votes", x, y], a) | |
133 | 135 | } | |
134 | 136 | ||
135 | 137 | ||
136 | - | func | |
137 | - | let | |
138 | + | func Y (Z) = { | |
139 | + | let aa = if ((Z == V)) | |
138 | 140 | then "%s%s" | |
139 | 141 | else "%s%s%s%s" | |
140 | - | makeString([ | |
142 | + | makeString([aa, Z, "head"], a) | |
141 | 143 | } | |
142 | 144 | ||
143 | 145 | ||
144 | - | func | |
145 | - | let | |
146 | + | func ab (Z) = { | |
147 | + | let aa = if ((Z == V)) | |
146 | 148 | then "%s%s" | |
147 | 149 | else "%s%s%s%s" | |
148 | - | makeString([ | |
150 | + | makeString([aa, Z, "size"], a) | |
149 | 151 | } | |
150 | 152 | ||
151 | 153 | ||
152 | - | func | |
153 | - | let | |
154 | + | func ac (Z,ad) = { | |
155 | + | let aa = if ((Z == V)) | |
154 | 156 | then "%s%s%s%s" | |
155 | 157 | else "%s%s%s%s%s" | |
156 | - | makeString([Z, | |
158 | + | makeString([aa, Z, ad, "prev"], a) | |
157 | 159 | } | |
158 | 160 | ||
159 | 161 | ||
160 | - | func | |
161 | - | let | |
162 | + | func ae (Z,ad) = { | |
163 | + | let aa = if ((Z == V)) | |
162 | 164 | then "%s%s%s%s" | |
163 | 165 | else "%s%s%s%s%s" | |
164 | - | makeString([Z, | |
166 | + | makeString([aa, Z, ad, "next"], a) | |
165 | 167 | } | |
166 | 168 | ||
167 | 169 | ||
168 | - | func | |
169 | - | let | |
170 | - | let | |
171 | - | let | |
172 | - | if (if (( | |
170 | + | func af (Z,ad) = { | |
171 | + | let ag = getString(this, Y(Z)) | |
172 | + | let ah = getString(this, ac(Z, ad)) | |
173 | + | let ai = getString(this, ae(Z, ad)) | |
174 | + | if (if ((ad == valueOrElse(ag, ""))) | |
173 | 175 | then true | |
174 | - | else ( | |
176 | + | else (ah != unit)) | |
175 | 177 | then true | |
176 | - | else ( | |
178 | + | else (ai != unit) | |
177 | 179 | } | |
178 | 180 | ||
179 | 181 | ||
180 | - | func | |
181 | - | let | |
182 | - | let | |
183 | - | let | |
182 | + | func aj (Z,ad) = { | |
183 | + | let ag = getString(this, Y(Z)) | |
184 | + | let ak = valueOrElse(getInteger(this, ab(Z)), 0) | |
185 | + | let al = if (!(af(Z, ad))) | |
184 | 186 | then true | |
185 | 187 | else throw("Node exists") | |
186 | - | if (( | |
187 | - | then (([IntegerEntry( | |
188 | - | then [StringEntry( | |
189 | - | else nil)) ++ [StringEntry( | |
188 | + | if ((al == al)) | |
189 | + | then (([IntegerEntry(ab(Z), (ak + 1))] ++ (if ((ag != unit)) | |
190 | + | then [StringEntry(ae(Z, ad), value(ag)), StringEntry(ac(Z, value(ag)), ad)] | |
191 | + | else nil)) ++ [StringEntry(Y(Z), ad)]) | |
190 | 192 | else throw("Strict value is not equal to itself.") | |
191 | 193 | } | |
192 | 194 | ||
193 | 195 | ||
194 | - | func | |
195 | - | let | |
196 | - | let | |
197 | - | let | |
198 | - | let | |
199 | - | ([IntegerEntry( | |
200 | - | then ( | |
196 | + | func am (Z,ad) = { | |
197 | + | let ag = getString(this, Y(Z)) | |
198 | + | let ak = valueOrElse(getInteger(this, ab(Z)), 0) | |
199 | + | let ah = getString(this, ac(Z, ad)) | |
200 | + | let ai = getString(this, ae(Z, ad)) | |
201 | + | ([IntegerEntry(ab(Z), (ak - 1))] ++ (if (if ((ah != unit)) | |
202 | + | then (ai != unit) | |
201 | 203 | else false) | |
202 | - | then [StringEntry( | |
203 | - | else if (( | |
204 | - | then [StringEntry( | |
205 | - | else if (( | |
206 | - | then [DeleteEntry( | |
207 | - | else if (( | |
208 | - | then [DeleteEntry( | |
209 | - | else throw(((("invalid node: " + | |
204 | + | then [StringEntry(ae(Z, value(ah)), value(ai)), StringEntry(ac(Z, value(ai)), value(ah)), DeleteEntry(ac(Z, ad)), DeleteEntry(ae(Z, ad))] | |
205 | + | else if ((ai != unit)) | |
206 | + | then [StringEntry(Y(Z), value(ai)), DeleteEntry(ae(Z, ad)), DeleteEntry(ac(Z, value(ai)))] | |
207 | + | else if ((ah != unit)) | |
208 | + | then [DeleteEntry(ac(Z, ad)), DeleteEntry(ae(Z, value(ah)))] | |
209 | + | else if ((ad == valueOrElse(ag, ""))) | |
210 | + | then [DeleteEntry(Y(Z))] | |
211 | + | else throw(((("invalid node: " + Z) + ".") + ad)))) | |
210 | 212 | } | |
211 | 213 | ||
212 | 214 | ||
213 | - | func | |
215 | + | func an () = "%s__managerPublicKey" | |
214 | 216 | ||
215 | 217 | ||
216 | - | func | |
218 | + | func ao () = "%s__pendingManagerPublicKey" | |
217 | 219 | ||
218 | 220 | ||
219 | - | func | |
220 | - | let | |
221 | - | if ($isInstanceOf( | |
221 | + | func ap () = { | |
222 | + | let M = getString(an()) | |
223 | + | if ($isInstanceOf(M, "String")) | |
222 | 224 | then { | |
223 | - | let | |
224 | - | fromBase58String( | |
225 | + | let aq = M | |
226 | + | fromBase58String(aq) | |
225 | 227 | } | |
226 | - | else if ($isInstanceOf( | |
228 | + | else if ($isInstanceOf(M, "Unit")) | |
227 | 229 | then unit | |
228 | 230 | else throw("Match error") | |
229 | 231 | } | |
230 | 232 | ||
231 | 233 | ||
232 | - | func | |
233 | - | let | |
234 | - | if ($isInstanceOf( | |
234 | + | func ar () = { | |
235 | + | let M = getString(ao()) | |
236 | + | if ($isInstanceOf(M, "String")) | |
235 | 237 | then { | |
236 | - | let | |
237 | - | fromBase58String( | |
238 | + | let aq = M | |
239 | + | fromBase58String(aq) | |
238 | 240 | } | |
239 | - | else if ($isInstanceOf( | |
241 | + | else if ($isInstanceOf(M, "Unit")) | |
240 | 242 | then unit | |
241 | 243 | else throw("Match error") | |
242 | 244 | } | |
243 | 245 | ||
244 | 246 | ||
245 | - | let | |
247 | + | let as = throw("Permission denied") | |
246 | 248 | ||
247 | - | func | |
249 | + | func at (au) = if ((au.caller == this)) | |
248 | 250 | then true | |
249 | - | else | |
251 | + | else as | |
250 | 252 | ||
251 | 253 | ||
252 | - | func | |
253 | - | let | |
254 | - | if ($isInstanceOf( | |
254 | + | func av (au) = { | |
255 | + | let M = ap() | |
256 | + | if ($isInstanceOf(M, "ByteVector")) | |
255 | 257 | then { | |
256 | - | let | |
257 | - | if (( | |
258 | + | let aw = M | |
259 | + | if ((au.callerPublicKey == aw)) | |
258 | 260 | then true | |
259 | - | else | |
261 | + | else as | |
260 | 262 | } | |
261 | - | else if ($isInstanceOf( | |
262 | - | then | |
263 | + | else if ($isInstanceOf(M, "Unit")) | |
264 | + | then at(au) | |
263 | 265 | else throw("Match error") | |
264 | 266 | } | |
265 | 267 | ||
266 | 268 | ||
267 | - | @Callable( | |
268 | - | func setManager ( | |
269 | - | let | |
270 | - | if (( | |
269 | + | @Callable(au) | |
270 | + | func setManager (ax) = { | |
271 | + | let ay = av(au) | |
272 | + | if ((ay == ay)) | |
271 | 273 | then { | |
272 | - | let | |
273 | - | if (( | |
274 | - | then [StringEntry( | |
274 | + | let az = fromBase58String(ax) | |
275 | + | if ((az == az)) | |
276 | + | then [StringEntry(ao(), ax)] | |
275 | 277 | else throw("Strict value is not equal to itself.") | |
276 | 278 | } | |
277 | 279 | else throw("Strict value is not equal to itself.") | |
278 | 280 | } | |
279 | 281 | ||
280 | 282 | ||
281 | 283 | ||
282 | - | @Callable( | |
284 | + | @Callable(au) | |
283 | 285 | func confirmManager () = { | |
284 | - | let | |
285 | - | let | |
286 | + | let aA = ar() | |
287 | + | let aB = if (isDefined(aA)) | |
286 | 288 | then true | |
287 | 289 | else throw("No pending manager") | |
288 | - | if (( | |
290 | + | if ((aB == aB)) | |
289 | 291 | then { | |
290 | - | let | |
292 | + | let aC = if ((au.callerPublicKey == value(aA))) | |
291 | 293 | then true | |
292 | 294 | else throw("You are not pending manager") | |
293 | - | if (( | |
294 | - | then [StringEntry( | |
295 | + | if ((aC == aC)) | |
296 | + | then [StringEntry(an(), toBase58String(value(aA))), DeleteEntry(ao())] | |
295 | 297 | else throw("Strict value is not equal to itself.") | |
296 | 298 | } | |
297 | 299 | else throw("Strict value is not equal to itself.") | |
298 | 300 | } | |
299 | 301 | ||
300 | 302 | ||
301 | 303 | ||
302 | - | @Callable( | |
303 | - | func getUserGwxAmountAtHeight ( | |
304 | - | let | |
304 | + | @Callable(au) | |
305 | + | func getUserGwxAmountAtHeight (aD,aE) = { | |
306 | + | let aF = valueOrErrorMessage(addressFromString(P(this, k)), "invalid boosting contract address") | |
305 | 307 | $Tuple2(nil, { | |
306 | - | let | |
307 | - | if ($isInstanceOf( | |
308 | - | then | |
308 | + | let Q = invoke(aF, "getUserGwxAmountAtHeightREADONLY", [aD, aE], nil) | |
309 | + | if ($isInstanceOf(Q, "Int")) | |
310 | + | then Q | |
309 | 311 | else throw("Couldn't cast Any to Int") | |
310 | 312 | }) | |
311 | 313 | } | |
312 | 314 | ||
313 | 315 | ||
314 | 316 | ||
315 | - | @Callable( | |
316 | - | func constructor ( | |
317 | - | let | |
317 | + | @Callable(au) | |
318 | + | func constructor (aG,aH,aI,aJ) = { | |
319 | + | let aK = [av(au), if ((addressFromString(aG) != unit)) | |
318 | 320 | then true | |
319 | - | else "invalid | |
321 | + | else "invalid factory contract address", if ((addressFromString(aH) != unit)) | |
320 | 322 | then true | |
321 | - | else "invalid boosting contract address", if ((aH > 0)) | |
323 | + | else "invalid voting emission candidate contract address", if ((addressFromString(aI) != unit)) | |
324 | + | then true | |
325 | + | else "invalid boosting contract address", if ((aJ > 0)) | |
322 | 326 | then true | |
323 | 327 | else throw("invalid epoch length")] | |
324 | - | if (( | |
325 | - | then $Tuple2([StringEntry( | |
328 | + | if ((aK == aK)) | |
329 | + | then $Tuple2([StringEntry(j, aG), StringEntry(i, aH), StringEntry(k, aI), IntegerEntry(f, aJ)], unit) | |
326 | 330 | else throw("Strict value is not equal to itself.") | |
327 | 331 | } | |
328 | 332 | ||
329 | 333 | ||
330 | 334 | ||
331 | - | @Callable( | |
332 | - | func create ( | |
333 | - | let | |
335 | + | @Callable(au) | |
336 | + | func create (x,y) = { | |
337 | + | let aL = [if ((toBase58String(au.caller.bytes) == valueOrElse(getString(this, i), ""))) | |
334 | 338 | then true | |
335 | - | else au | |
336 | - | if (( | |
339 | + | else av(au)] | |
340 | + | if ((aL == aL)) | |
337 | 341 | then { | |
338 | - | let | |
339 | - | let | |
340 | - | let | |
341 | - | let | |
342 | + | let v = $Tuple2(x, y) | |
343 | + | let aM = ([BooleanEntry(u(v), true)] ++ aj(V, S(v))) | |
344 | + | let aN = (getInteger(this, g) == unit) | |
345 | + | let aO = if (aN) | |
342 | 346 | then { | |
343 | - | let | |
344 | - | [IntegerEntry(g, | |
347 | + | let s = 0 | |
348 | + | [IntegerEntry(g, s), IntegerEntry(r(s), height), IntegerEntry(o, height), IntegerEntry(p, s), IntegerEntry(q, height)] | |
345 | 349 | } | |
346 | 350 | else nil | |
347 | - | $Tuple2(( | |
351 | + | $Tuple2((aM ++ aO), unit) | |
348 | 352 | } | |
349 | 353 | else throw("Strict value is not equal to itself.") | |
350 | 354 | } | |
351 | 355 | ||
352 | 356 | ||
353 | 357 | ||
354 | - | @Callable( | |
355 | - | func vote ( | |
356 | - | let | |
357 | - | let | |
358 | - | let | |
359 | - | let | |
360 | - | let | |
361 | - | let | |
362 | - | let | |
363 | - | let | |
364 | - | let | |
365 | - | let | |
366 | - | let | |
367 | - | let | |
368 | - | if ($isInstanceOf( | |
369 | - | then | |
358 | + | @Callable(au) | |
359 | + | func vote (x,y,aP) = { | |
360 | + | let v = $Tuple2(x, y) | |
361 | + | let s = valueOrElse(getInteger(this, g), 0) | |
362 | + | let aQ = R(this, r(s)) | |
363 | + | let aJ = R(this, f) | |
364 | + | let aR = (aQ + aJ) | |
365 | + | let aS = getInteger(this, l) | |
366 | + | let aT = valueOrElse(getInteger(this, z(au.caller, s)), 0) | |
367 | + | let aU = valueOrElse(getInteger(this, B(v, au.caller, s)), 0) | |
368 | + | let aV = valueOrElse(getInteger(this, D(v, s)), 0) | |
369 | + | let aW = valueOrElse(getInteger(this, H(s)), 0) | |
370 | + | let aX = { | |
371 | + | let Q = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(au.caller.bytes), aR], nil) | |
372 | + | if ($isInstanceOf(Q, "Int")) | |
373 | + | then Q | |
370 | 374 | else throw("Couldn't cast Any to Int") | |
371 | 375 | } | |
372 | - | let | |
373 | - | let | |
374 | - | let | |
376 | + | let aY = (aX - aT) | |
377 | + | let aZ = (aU + aP) | |
378 | + | let aL = [if ((getBoolean(u(v)) != unit)) | |
375 | 379 | then true | |
376 | - | else throw("invalid assets"), if (( | |
380 | + | else throw("invalid assets"), if ((aR > height)) | |
377 | 381 | then true | |
378 | - | else throw("invalid height"), if (( | |
382 | + | else throw("invalid height"), if ((aS == unit)) | |
379 | 383 | then true | |
380 | - | else throw("finalization in progress"), if (( | |
384 | + | else throw("finalization in progress"), if ((aX > 0)) | |
381 | 385 | then true | |
382 | - | else throw("you do not have gWX"), if (if (( | |
383 | - | then ( | |
386 | + | else throw("you do not have gWX"), if (if ((aP > 0)) | |
387 | + | then (aY >= aP) | |
384 | 388 | else false) | |
385 | 389 | then true | |
386 | 390 | else throw("invalid amount")] | |
387 | - | if (( | |
391 | + | if ((aL == aL)) | |
388 | 392 | then { | |
389 | - | let | |
390 | - | let | |
391 | - | let | |
393 | + | let ba = W(v) | |
394 | + | let bb = toString(au.caller) | |
395 | + | let bc = if (af(ba, bb)) | |
392 | 396 | then nil | |
393 | - | else | |
394 | - | $Tuple2(([IntegerEntry( | |
397 | + | else aj(ba, bb) | |
398 | + | $Tuple2(([IntegerEntry(z(au.caller, s), (aT + aP)), IntegerEntry(B(v, au.caller, s), aZ), IntegerEntry(D(v, s), (aV + aP)), IntegerEntry(H(s), (aW + aP))] ++ bc), unit) | |
395 | 399 | } | |
396 | 400 | else throw("Strict value is not equal to itself.") | |
397 | 401 | } | |
398 | 402 | ||
399 | 403 | ||
400 | 404 | ||
401 | - | @Callable( | |
402 | - | func cancelVote ( | |
403 | - | let | |
404 | - | let | |
405 | - | let | |
406 | - | let | |
407 | - | let | |
408 | - | let | |
409 | - | let | |
410 | - | let | |
411 | - | let | |
412 | - | let | |
413 | - | let | |
405 | + | @Callable(au) | |
406 | + | func cancelVote (x,y) = { | |
407 | + | let v = $Tuple2(x, y) | |
408 | + | let s = valueOrElse(getInteger(this, g), 0) | |
409 | + | let aQ = R(this, r(s)) | |
410 | + | let aJ = R(this, f) | |
411 | + | let aR = (aQ + aJ) | |
412 | + | let aS = getInteger(this, l) | |
413 | + | let aT = valueOrElse(getInteger(this, z(au.caller, s)), 0) | |
414 | + | let aU = valueOrElse(getInteger(this, B(v, au.caller, s)), 0) | |
415 | + | let aV = valueOrElse(getInteger(this, D(v, s)), 0) | |
416 | + | let aW = valueOrElse(getInteger(this, H(s)), 0) | |
417 | + | let aL = [if ((getBoolean(u(v)) != unit)) | |
414 | 418 | then true | |
415 | - | else throw("invalid assets"), if (( | |
419 | + | else throw("invalid assets"), if ((aR > height)) | |
416 | 420 | then true | |
417 | - | else throw("invalid height"), if (( | |
421 | + | else throw("invalid height"), if ((aS == unit)) | |
418 | 422 | then true | |
419 | - | else throw("finalization in progress"), if (( | |
423 | + | else throw("finalization in progress"), if ((aU > 0)) | |
420 | 424 | then true | |
421 | 425 | else throw("no vote")] | |
422 | - | if (( | |
426 | + | if ((aL == aL)) | |
423 | 427 | then { | |
424 | - | let | |
425 | - | let | |
426 | - | $Tuple2(([IntegerEntry( | |
428 | + | let ba = W(v) | |
429 | + | let bb = toString(au.caller) | |
430 | + | $Tuple2(([IntegerEntry(z(au.caller, s), max([(aT - aU), 0])), DeleteEntry(B(v, au.caller, s)), IntegerEntry(D(v, s), (aV - aU)), IntegerEntry(H(s), (aW - aU))] ++ am(ba, bb)), unit) | |
427 | 431 | } | |
428 | 432 | else throw("Strict value is not equal to itself.") | |
429 | 433 | } | |
430 | 434 | ||
431 | 435 | ||
432 | 436 | ||
433 | - | @Callable( | |
434 | - | func setEpochLength ( | |
435 | - | let | |
437 | + | @Callable(au) | |
438 | + | func setEpochLength (bd) = { | |
439 | + | let aK = [av(au), if ((bd > 0)) | |
436 | 440 | then true | |
437 | 441 | else throw("invalid epoch length")] | |
438 | - | if (( | |
439 | - | then $Tuple2([IntegerEntry(f, | |
442 | + | if ((aK == aK)) | |
443 | + | then $Tuple2([IntegerEntry(f, bd)], unit) | |
440 | 444 | else throw("Strict value is not equal to itself.") | |
441 | 445 | } | |
442 | 446 | ||
443 | 447 | ||
444 | 448 | ||
445 | - | @Callable( | |
446 | - | func setMaxDepth ( | |
447 | - | let | |
449 | + | @Callable(au) | |
450 | + | func setMaxDepth (be) = { | |
451 | + | let aK = [av(au), if ((be > 0)) | |
448 | 452 | then true | |
449 | 453 | else throw("invalid max depth")] | |
450 | - | if (( | |
451 | - | then $Tuple2([IntegerEntry(h, | |
454 | + | if ((aK == aK)) | |
455 | + | then $Tuple2([IntegerEntry(h, be)], unit) | |
452 | 456 | else throw("Strict value is not equal to itself.") | |
453 | 457 | } | |
454 | 458 | ||
455 | 459 | ||
456 | 460 | ||
457 | - | @Callable( | |
458 | - | func processVoteINTERNAL ( | |
459 | - | let | |
460 | - | if (( | |
461 | + | @Callable(au) | |
462 | + | func processVoteINTERNAL (bf,bb) = { | |
463 | + | let ay = at(au) | |
464 | + | if ((ay == ay)) | |
461 | 465 | then { | |
462 | - | let | |
463 | - | let | |
464 | - | let | |
465 | - | let | |
466 | - | let | |
467 | - | let | |
468 | - | let | |
469 | - | let | |
470 | - | let | |
466 | + | let aD = valueOrErrorMessage(addressFromString(bb), ("processVoteINTERNAL: invalid user address " + bb)) | |
467 | + | let s = R(this, g) | |
468 | + | let bg = (s - 1) | |
469 | + | let aJ = R(this, f) | |
470 | + | let aQ = R(this, r(s)) | |
471 | + | let aR = (aQ + aJ) | |
472 | + | let bh = R(this, r(bg)) | |
473 | + | let bi = (bh + aJ) | |
474 | + | let bj = if ((bg >= 0)) | |
471 | 475 | then true | |
472 | 476 | else throw("processVoteINTERNAL: invalid previous epoch") | |
473 | - | if (( | |
477 | + | if ((bj == bj)) | |
474 | 478 | then { | |
475 | - | let | |
476 | - | let | |
477 | - | let | |
478 | - | if ($isInstanceOf( | |
479 | - | then | |
479 | + | let v = T(bf) | |
480 | + | let aX = { | |
481 | + | let Q = invoke(this, "getUserGwxAmountAtHeight", [bb, aR], nil) | |
482 | + | if ($isInstanceOf(Q, "Int")) | |
483 | + | then Q | |
480 | 484 | else throw("Couldn't cast Any to Int") | |
481 | 485 | } | |
482 | - | let | |
483 | - | let | |
484 | - | if ($isInstanceOf( | |
485 | - | then | |
486 | + | let bk = { | |
487 | + | let Q = invoke(this, "getUserGwxAmountAtHeight", [bb, bi], nil) | |
488 | + | if ($isInstanceOf(Q, "Int")) | |
489 | + | then Q | |
486 | 490 | else throw("Couldn't cast Any to Int") | |
487 | 491 | } | |
488 | - | let | |
489 | - | let | |
490 | - | let | |
491 | - | let | |
492 | - | let | |
493 | - | let | |
494 | - | then [IntegerEntry( | |
495 | - | else | |
496 | - | $Tuple2( | |
492 | + | let aW = valueOrElse(getInteger(H(s)), 0) | |
493 | + | let bl = valueOrElse(getInteger(D(v, s)), 0) | |
494 | + | let bm = valueOrErrorMessage(getInteger(B(v, aD, bg)), (((("processVoteINTERNAL " + bf) + " ") + bb) + ": no previous vote")) | |
495 | + | let aT = valueOrElse(getInteger(this, z(aD, s)), 0) | |
496 | + | let aZ = fraction(bm, aX, bk) | |
497 | + | let bn = if ((aZ > 0)) | |
498 | + | then [IntegerEntry(B(v, aD, s), aZ), IntegerEntry(H(s), (aW + aZ)), IntegerEntry(D(v, s), (bl + aZ)), IntegerEntry(z(aD, s), (aT + aZ))] | |
499 | + | else am(W(v), bb) | |
500 | + | $Tuple2(bn, unit) | |
497 | 501 | } | |
498 | 502 | else throw("Strict value is not equal to itself.") | |
499 | 503 | } | |
500 | 504 | else throw("Strict value is not equal to itself.") | |
501 | 505 | } | |
502 | 506 | ||
503 | 507 | ||
504 | 508 | ||
505 | - | @Callable( | |
506 | - | func processPoolINTERNAL ( | |
507 | - | let | |
508 | - | if (( | |
509 | + | @Callable(au) | |
510 | + | func processPoolINTERNAL (bf) = { | |
511 | + | let ay = at(au) | |
512 | + | if ((ay == ay)) | |
509 | 513 | then { | |
510 | - | let | |
511 | - | let | |
514 | + | let bo = (R(this, g) - 1) | |
515 | + | let bj = if ((bo >= 0)) | |
512 | 516 | then true | |
513 | 517 | else throw("processPoolINTERNAL: invalid target epoch") | |
514 | - | if (( | |
518 | + | if ((bj == bj)) | |
515 | 519 | then { | |
516 | - | let u = S(bd) | |
517 | - | let aU = valueOrElse(getInteger(this, G(bm)), 0) | |
518 | - | let bj = valueOrElse(getInteger(this, C(u, bm)), 0) | |
519 | - | let bn = if ((aU == 0)) | |
520 | + | let v = T(bf) | |
521 | + | let bp = v | |
522 | + | let x = bp._1 | |
523 | + | let y = bp._2 | |
524 | + | let aW = valueOrElse(getInteger(this, H(bo)), 0) | |
525 | + | let bl = valueOrElse(getInteger(this, D(v, bo)), 0) | |
526 | + | let bq = if ((aW == 0)) | |
520 | 527 | then 0 | |
521 | - | else fraction(bj, b, aU) | |
522 | - | $Tuple2([IntegerEntry(E(u, bm), bn)], unit) | |
528 | + | else fraction(bl, b, aW) | |
529 | + | let aG = addressFromStringValue(P(this, j)) | |
530 | + | let br = invoke(aG, "modifyWeight", [x, y, bq], nil) | |
531 | + | if ((br == br)) | |
532 | + | then $Tuple2([IntegerEntry(F(v, bo), bq)], unit) | |
533 | + | else throw("Strict value is not equal to itself.") | |
523 | 534 | } | |
524 | 535 | else throw("Strict value is not equal to itself.") | |
525 | 536 | } | |
526 | 537 | else throw("Strict value is not equal to itself.") | |
527 | 538 | } | |
528 | 539 | ||
529 | 540 | ||
530 | 541 | ||
531 | - | @Callable( | |
542 | + | @Callable(au) | |
532 | 543 | func finalizeHelper () = { | |
533 | - | let | |
534 | - | let | |
535 | - | let | |
536 | - | let | |
537 | - | let | |
538 | - | let | |
539 | - | if ((height >= | |
544 | + | let s = valueOrElse(getInteger(this, g), 0) | |
545 | + | let bs = (s - 1) | |
546 | + | let aQ = R(this, r(s)) | |
547 | + | let aJ = R(this, f) | |
548 | + | let aR = (aQ + aJ) | |
549 | + | let aS = getInteger(this, l) | |
550 | + | if ((height >= aR)) | |
540 | 551 | then { | |
541 | - | let | |
542 | - | $Tuple2([IntegerEntry( | |
552 | + | let bt = (s + 1) | |
553 | + | $Tuple2([IntegerEntry(r(bt), height), IntegerEntry(o, height), IntegerEntry(g, bt), IntegerEntry(l, d)], true) | |
543 | 554 | } | |
544 | - | else if (( | |
555 | + | else if ((aS == unit)) | |
545 | 556 | then $Tuple2(nil, false) | |
546 | - | else if (( | |
557 | + | else if ((aS == d)) | |
547 | 558 | then { | |
548 | - | let | |
549 | - | let | |
550 | - | let | |
551 | - | if ($isInstanceOf( | |
559 | + | let bu = getString(m) | |
560 | + | let bv = getString(n) | |
561 | + | let M = bu | |
562 | + | if ($isInstanceOf(M, "Unit")) | |
552 | 563 | then { | |
553 | - | let | |
554 | - | if ($isInstanceOf( | |
555 | - | then $Tuple2([IntegerEntry( | |
556 | - | else if ($isInstanceOf( | |
564 | + | let bw = getString(Y(V)) | |
565 | + | if ($isInstanceOf(bw, "Unit")) | |
566 | + | then $Tuple2([IntegerEntry(l, e), DeleteEntry(m), DeleteEntry(n)], true) | |
567 | + | else if ($isInstanceOf(bw, "String")) | |
557 | 568 | then { | |
558 | - | let | |
559 | - | $Tuple2([StringEntry( | |
569 | + | let bx = bw | |
570 | + | $Tuple2([StringEntry(m, bx)], true) | |
560 | 571 | } | |
561 | 572 | else throw("Match error") | |
562 | 573 | } | |
563 | - | else if ($isInstanceOf( | |
574 | + | else if ($isInstanceOf(M, "String")) | |
564 | 575 | then { | |
565 | - | let | |
566 | - | let | |
567 | - | let | |
568 | - | let | |
569 | - | if ($isInstanceOf( | |
570 | - | then getString( | |
571 | - | else if ($isInstanceOf( | |
576 | + | let bf = M | |
577 | + | let v = T(bf) | |
578 | + | let by = { | |
579 | + | let bw = bv | |
580 | + | if ($isInstanceOf(bw, "Unit")) | |
581 | + | then getString(Y(W(v))) | |
582 | + | else if ($isInstanceOf(bw, "String")) | |
572 | 583 | then { | |
573 | - | let | |
574 | - | let | |
575 | - | if (( | |
576 | - | then getString( | |
584 | + | let bz = bw | |
585 | + | let bA = invoke(this, "processVoteINTERNAL", [bf, bz], nil) | |
586 | + | if ((bA == bA)) | |
587 | + | then getString(ae(W(v), bz)) | |
577 | 588 | else throw("Strict value is not equal to itself.") | |
578 | 589 | } | |
579 | 590 | else throw("Match error") | |
580 | 591 | } | |
581 | - | let | |
582 | - | if ($isInstanceOf( | |
592 | + | let bw = by | |
593 | + | if ($isInstanceOf(bw, "Unit")) | |
583 | 594 | then { | |
584 | - | let | |
585 | - | let | |
586 | - | if ($isInstanceOf( | |
587 | - | then $Tuple2([IntegerEntry( | |
588 | - | else if ($isInstanceOf( | |
595 | + | let bB = getString(ae(V, bf)) | |
596 | + | let bC = bB | |
597 | + | if ($isInstanceOf(bC, "Unit")) | |
598 | + | then $Tuple2([IntegerEntry(l, e), DeleteEntry(m), DeleteEntry(n)], true) | |
599 | + | else if ($isInstanceOf(bC, "String")) | |
589 | 600 | then { | |
590 | - | let | |
591 | - | $Tuple2([StringEntry( | |
601 | + | let aq = bC | |
602 | + | $Tuple2([StringEntry(m, aq), DeleteEntry(n)], true) | |
592 | 603 | } | |
593 | 604 | else throw("Match error") | |
594 | 605 | } | |
595 | - | else if ($isInstanceOf( | |
606 | + | else if ($isInstanceOf(bw, "String")) | |
596 | 607 | then { | |
597 | - | let | |
598 | - | $Tuple2([StringEntry( | |
608 | + | let bD = bw | |
609 | + | $Tuple2([StringEntry(n, bD)], true) | |
599 | 610 | } | |
600 | 611 | else throw("Match error") | |
601 | 612 | } | |
602 | 613 | else throw("Match error") | |
603 | 614 | } | |
604 | - | else if (( | |
615 | + | else if ((aS == e)) | |
605 | 616 | then { | |
606 | - | let | |
607 | - | let | |
608 | - | if ($isInstanceOf( | |
617 | + | let bu = getString(m) | |
618 | + | let M = bu | |
619 | + | if ($isInstanceOf(M, "Unit")) | |
609 | 620 | then { | |
610 | - | let | |
611 | - | if ($isInstanceOf( | |
612 | - | then $Tuple2([DeleteEntry( | |
613 | - | else if ($isInstanceOf( | |
621 | + | let bw = getString(Y(V)) | |
622 | + | if ($isInstanceOf(bw, "Unit")) | |
623 | + | then $Tuple2([DeleteEntry(l), BooleanEntry(t(bs), true), IntegerEntry(p, s), IntegerEntry(q, aQ)], true) | |
624 | + | else if ($isInstanceOf(bw, "String")) | |
614 | 625 | then { | |
615 | - | let | |
616 | - | $Tuple2([StringEntry( | |
626 | + | let bE = bw | |
627 | + | $Tuple2([StringEntry(m, bE)], true) | |
617 | 628 | } | |
618 | 629 | else throw("Match error") | |
619 | 630 | } | |
620 | - | else if ($isInstanceOf( | |
631 | + | else if ($isInstanceOf(M, "String")) | |
621 | 632 | then { | |
622 | - | let | |
623 | - | let | |
624 | - | if (( | |
633 | + | let bf = M | |
634 | + | let bF = invoke(this, "processPoolINTERNAL", [bf], nil) | |
635 | + | if ((bF == bF)) | |
625 | 636 | then { | |
626 | - | let | |
627 | - | let | |
628 | - | if ($isInstanceOf( | |
629 | - | then $Tuple2([DeleteEntry( | |
630 | - | else if ($isInstanceOf( | |
637 | + | let bB = getString(ae(V, bf)) | |
638 | + | let bw = bB | |
639 | + | if ($isInstanceOf(bw, "Unit")) | |
640 | + | then $Tuple2([DeleteEntry(l), BooleanEntry(t(bs), true), IntegerEntry(p, s), IntegerEntry(q, aQ), DeleteEntry(m)], true) | |
641 | + | else if ($isInstanceOf(bw, "String")) | |
631 | 642 | then { | |
632 | - | let | |
633 | - | $Tuple2([StringEntry( | |
643 | + | let bE = bw | |
644 | + | $Tuple2([StringEntry(m, bE)], true) | |
634 | 645 | } | |
635 | 646 | else throw("Match error") | |
636 | 647 | } | |
637 | 648 | else throw("Strict value is not equal to itself.") | |
638 | 649 | } | |
639 | 650 | else throw("Match error") | |
640 | 651 | } | |
641 | 652 | else throw("finalization is broken") | |
642 | 653 | } | |
643 | 654 | ||
644 | 655 | ||
645 | 656 | ||
646 | - | @Callable( | |
647 | - | func finalizeWrapper ( | |
648 | - | let | |
649 | - | let | |
650 | - | if ($isInstanceOf( | |
651 | - | then | |
657 | + | @Callable(au) | |
658 | + | func finalizeWrapper (bG) = { | |
659 | + | let bH = { | |
660 | + | let Q = invoke(this, "finalizeHelper", nil, nil) | |
661 | + | if ($isInstanceOf(Q, "Boolean")) | |
662 | + | then Q | |
652 | 663 | else throw("Couldn't cast Any to Boolean") | |
653 | 664 | } | |
654 | - | if (( | |
655 | - | then if (!( | |
656 | - | then if (( | |
665 | + | if ((bH == bH)) | |
666 | + | then if (!(bH)) | |
667 | + | then if ((bG == 0)) | |
657 | 668 | then throw("Current voting is not over yet") | |
658 | 669 | else $Tuple2(nil, unit) | |
659 | 670 | else { | |
660 | - | let | |
661 | - | if (( | |
671 | + | let bI = valueOrElse(getInteger(this, h), c) | |
672 | + | if ((bI > bG)) | |
662 | 673 | then { | |
663 | - | let | |
664 | - | if (( | |
674 | + | let bJ = invoke(this, "finalizeWrapper", [(bG + 1)], nil) | |
675 | + | if ((bJ == bJ)) | |
665 | 676 | then $Tuple2(nil, unit) | |
666 | 677 | else throw("Strict value is not equal to itself.") | |
667 | 678 | } | |
668 | 679 | else $Tuple2(nil, unit) | |
669 | 680 | } | |
670 | 681 | else throw("Strict value is not equal to itself.") | |
671 | 682 | } | |
672 | 683 | ||
673 | 684 | ||
674 | 685 | ||
675 | - | @Callable( | |
686 | + | @Callable(au) | |
676 | 687 | func finalize () = { | |
677 | - | let | |
678 | - | if (( | |
688 | + | let bJ = invoke(this, "finalizeWrapper", [0], nil) | |
689 | + | if ((bJ == bJ)) | |
679 | 690 | then $Tuple2(nil, unit) | |
680 | 691 | else throw("Strict value is not equal to itself.") | |
681 | 692 | } | |
682 | 693 | ||
683 | 694 | ||
684 | 695 | ||
685 | - | @Callable( | |
686 | - | func onVerificationLoss ( | |
696 | + | @Callable(au) | |
697 | + | func onVerificationLoss (bK) = $Tuple2(nil, unit) | |
687 | 698 | ||
688 | 699 | ||
689 | 700 | ||
690 | - | @Callable( | |
691 | - | func containsNodeREADONLY ( | |
701 | + | @Callable(au) | |
702 | + | func containsNodeREADONLY (Z,ad) = $Tuple2(nil, af(Z, ad)) | |
692 | 703 | ||
693 | 704 | ||
694 | 705 | ||
695 | - | @Callable( | |
696 | - | func insertNode ( | |
697 | - | let | |
698 | - | if (( | |
699 | - | then $Tuple2( | |
706 | + | @Callable(au) | |
707 | + | func insertNode (Z,ad) = { | |
708 | + | let ay = av(au) | |
709 | + | if ((ay == ay)) | |
710 | + | then $Tuple2(aj(Z, ad), unit) | |
700 | 711 | else throw("Strict value is not equal to itself.") | |
701 | 712 | } | |
702 | 713 | ||
703 | 714 | ||
704 | 715 | ||
705 | - | @Callable( | |
706 | - | func deleteNode ( | |
707 | - | let | |
708 | - | if (( | |
709 | - | then $Tuple2( | |
716 | + | @Callable(au) | |
717 | + | func deleteNode (Z,ad) = { | |
718 | + | let ay = av(au) | |
719 | + | if ((ay == ay)) | |
720 | + | then $Tuple2(am(Z, ad), unit) | |
710 | 721 | else throw("Strict value is not equal to itself.") | |
711 | 722 | } | |
712 | 723 | ||
713 | 724 | ||
714 | - | @Verifier( | |
715 | - | func | |
716 | - | let | |
717 | - | let | |
718 | - | if ($isInstanceOf( | |
725 | + | @Verifier(bL) | |
726 | + | func bM () = { | |
727 | + | let bN = { | |
728 | + | let M = ap() | |
729 | + | if ($isInstanceOf(M, "ByteVector")) | |
719 | 730 | then { | |
720 | - | let | |
721 | - | | |
731 | + | let aw = M | |
732 | + | aw | |
722 | 733 | } | |
723 | - | else if ($isInstanceOf( | |
724 | - | then | |
734 | + | else if ($isInstanceOf(M, "Unit")) | |
735 | + | then bL.senderPublicKey | |
725 | 736 | else throw("Match error") | |
726 | 737 | } | |
727 | - | sigVerify( | |
738 | + | sigVerify(bL.bodyBytes, bL.proofs[0], bN) | |
728 | 739 | } | |
729 | 740 |
github/deemru/w8io/169f3d6 249.52 ms ◑