tx · 7iDDmQpGjNe612aCPhZJuHNE3SQoqGdCqZFrdRbtQ9Ca

3N9Zi6AcWcGbM23jQJ4fnzFsoHoTsxYDznr:  -0.02300000 Waves

2023.09.07 12:28 [2744787] smart account 3N9Zi6AcWcGbM23jQJ4fnzFsoHoTsxYDznr > SELF 0.00000000 Waves

{ "type": 13, "id": "7iDDmQpGjNe612aCPhZJuHNE3SQoqGdCqZFrdRbtQ9Ca", "fee": 2300000, "feeAssetId": null, "timestamp": 1694078884034, "version": 2, "chainId": 84, "sender": "3N9Zi6AcWcGbM23jQJ4fnzFsoHoTsxYDznr", "senderPublicKey": "GFbasS3jufhZkK4xR7tdTjjnP8K33KvJFEDHRtxXDkaJ", "proofs": [ "BXTC1pU5h9orQtxWZRHyJ1sKW69pjaGceHd4fdUtXh12hP2DBseEgLKzc2QdYM4XTGdH2jkvkXWzEw22VRf4p5r" ], "script": "base64:BgLcFggCEgQKAggBEgcKBQgICAgBEgQKAggIEgUKAwgIARIECgIICBIDCgEBEgMKAQESBAoCCAgSBAoCCAQSABIDCgEBEgASBAoCCAgSBAoCCAgSBAoCCAgSABIECgIICBIDCgEIIglzZXBhcmF0b3IiDnBvb2xXZWlnaHRNdWx0Ig9tYXhEZXB0aERlZmF1bHQiFmZpbmFsaXphdGlvblN0YWdlVG90YWwiF2ZpbmFsaXphdGlvblN0YWdlU2hhcmVzIg5rZXlFcG9jaExlbmd0aCIRa2V5RXBvY2hMZW5ndGhOZXciFWtleUVwb2NoTGVuZ3RoQnlFcG9jaCIFZXBvY2giD2tleUN1cnJlbnRFcG9jaCILa2V5TWF4RGVwdGgiImtleVZvdGluZ0VtaXNzaW9uQ2FuZGlkYXRlQ29udHJhY3QiHWtleVZvdGluZ0VtaXNzaW9uUmF0ZUNvbnRyYWN0IhJrZXlGYWN0b3J5Q29udHJhY3QiE2tleUJvb3N0aW5nQ29udHJhY3QiEmtleVN0YWtpbmdDb250cmFjdCIUa2V5RmluYWxpemF0aW9uU3RhZ2UiC2tleU5leHRQb29sIgtrZXlOZXh0VXNlciIOa2V5U3RhcnRIZWlnaHQiEWtleUN1cnJlbnRFcG9jaFVpIhBrZXlTdGFydEhlaWdodFVpIh1rZXlGaW5hbGl6YXRpb25TaG91bGRCZUZvcmNlZCIVa2V5U3RhcnRIZWlnaHRCeUVwb2NoIgxrZXlGaW5hbGl6ZWQiCWtleUluTGlzdCIEcG9vbCILJHQwMTc4ODE4MjgiDWFtb3VudEFzc2V0SWQiDHByaWNlQXNzZXRJZCIHa2V5VXNlZCIHYWRkcmVzcyIHa2V5Vm90ZSILJHQwMjEwMjIxNDIiD2tleVZvdGluZ1Jlc3VsdCILJHQwMjMyNDIzNjQiFWtleVZvdGluZ1Jlc3VsdFN0YWtlZCIMbHBBc3NldElkU3RyIgxrZXlQb29sU2hhcmUiCyR0MDI2ODUyNzI1Ig1rZXlUb3RhbFZvdGVzIg9rZXlTdGFrZWRCeVVzZXIiDnVzZXJBZGRyZXNzU3RyIgd3cmFwRXJyIgNtc2ciCHRocm93RXJyIg5nZXRWYWx1ZU9yRmFpbCIDa2V5IgR0eXBlIgVlcnJvciIHJG1hdGNoMCIDc3RyIgNpbnQiDGdldFN0ck9yRmFpbCIBQCIMZ2V0SW50T3JGYWlsIgxwb29sVG9TdHJpbmciDHN0cmluZ1RvUG9vbCIFcGFydHMiD2ZhY3RvcnlDb250cmFjdCIaSWR4RmFjdG9yeUNmZ0d3eFJld2FyZERhcHAiDWtleUZhY3RvcnlDZmciFHJlYWRGYWN0b3J5Q2ZnT3JGYWlsIgdmYWN0b3J5IhlnZXRHd3hSZXdhcmRBZGRyZXNzT3JGYWlsIgpmYWN0b3J5Q2ZnIhZnZXRMcEFzc2V0QnlQb29sQXNzZXRzIh9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkIgxiYXNlQXNzZXRTdHIiKWtleU1hcHBpbmdQb29sQXNzZXRzVG9Qb29sQ29udHJhY3RBZGRyZXNzIhhpbnRlcm5hbEFtb3VudEFzc2V0SWRTdHIiF2ludGVybmFsUHJpY2VBc3NldElkU3RyIh9rZXlNYXBwaW5nUG9vbENvbnRyYWN0VG9MUEFzc2V0IhNwb29sQ29udHJhY3RBZGRyZXNzIhVhbW91bnRBc3NldEludGVybmFsSWQiFHByaWNlQXNzZXRJbnRlcm5hbElkIglscEFzc2V0SWQiGGNoZWNrV3hFbWlzc2lvblBvb2xMYWJlbCILJHQwNTU2NTU2MDUiDXBvb2xzTGlzdE5hbWUiEGdldFZvdGVzTGlzdE5hbWUiCyR0MDU4MTk1ODU5IgtrZXlMaXN0SGVhZCIIbGlzdE5hbWUiBG1ldGEiC2tleUxpc3RTaXplIgtrZXlMaXN0UHJldiICaWQiC2tleUxpc3ROZXh0Igxjb250YWluc05vZGUiCmhlYWRPclVuaXQiCnByZXZPclVuaXQiCm5leHRPclVuaXQiEWluc2VydE5vZGVBY3Rpb25zIghsaXN0U2l6ZSIJY2hlY2tOb2RlIhFkZWxldGVOb2RlQWN0aW9ucyIWa2V5TWFuYWdlclZhdWx0QWRkcmVzcyITa2V5TWFuYWdlclB1YmxpY0tleSIcZ2V0TWFuYWdlclZhdWx0QWRkcmVzc09yVGhpcyIBcyIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCITbWFuYWdlclZhdWx0QWRkcmVzcyIJaXNNYW5hZ2VyIgFpIgJwayILbXVzdE1hbmFnZXIiCG11c3RUaGlzIgt1c2VyQWRkcmVzcyIMdGFyZ2V0SGVpZ2h0Ihdib29zdGluZ0NvbnRyYWN0QWRkcmVzcyIfdm90aW5nRW1pc3Npb25DYW5kaWRhdGVDb250cmFjdCIQYm9vc3RpbmdDb250cmFjdCIPc3Rha2luZ0NvbnRyYWN0IgtlcG9jaExlbmd0aCIGY2hlY2tzIg1pbkxpc3RBY3Rpb25zIhhjdXJyZW50RXBvY2hJc05vdERlZmluZWQiEnN0YXJ0SGVpZ2h0QWN0aW9ucyIGYW1vdW50IgtzdGFydEhlaWdodCIJZW5kSGVpZ2h0IhdmaW5hbGl6YXRpb25TdGFnZU9yVW5pdCIEdXNlZCIEdm90ZSIKcG9vbFJlc3VsdCIKdG90YWxWb3RlcyITZ3d4QW1vdW50QXRFbmRUb3RhbCIJYXZhaWxhYmxlIgduZXdWb3RlIgp3eEVtaXNzaW9uIg12b3Rlc0xpc3ROYW1lIhB2b3Rlc0xpc3RBY3Rpb25zIg5uZXdFcG9jaExlbmd0aCILbmV3TWF4RGVwdGgiB3Bvb2xTdHIiC2NoZWNrQ2FsbGVyIg1lcG9jaFByZXZpb3VzIhNzdGFydEhlaWdodFByZXZpb3VzIhNlcG9jaExlbmd0aFByZXZpb3VzIhFlbmRIZWlnaHRQcmV2aW91cyIQY2hlY2tUYXJnZXRFcG9jaCINJHQwMTc4NjIxNzkwMiIbZ3d4QW1vdW50QXRFbmRUb3RhbFByZXZpb3VzIgx2b3RpbmdSZXN1bHQiDHZvdGVQcmV2aW91cyIadm90aW5nUmVzdWx0U3Rha2VkUHJldmlvdXMiDHN0YWtlZEJ5VXNlciIZdm90aW5nUmVzdWx0U3Rha2VkQWN0aW9ucyIHYWN0aW9ucyIFZm9yY2UiC3RhcmdldEVwb2NoIgxjdXJyZW50RXBvY2giDSR0MDIwMjU5MjAyOTkiBXNoYXJlIg9tb2RpZnlXZWlnaHRJbnYiEHBvb2xzTGlzdEFjdGlvbnMiDXByZXZpb3VzRXBvY2giCG5ld0Vwb2NoIhRuZXdFcG9jaExlbmd0aE9wdGlvbiIVbmV3RXBvY2hMZW5ndGhBY3Rpb25zIgpwb29sT3JVbml0Igp1c2VyT3JVbml0IgckbWF0Y2gxIgxwb29sc0hlYWRTdHIiDm5leHRVc2VyT3JVbml0IgR1c2VyIgRuZXh0Ig5wcm9jZXNzVm90ZUludiIObmV4dFBvb2xPclVuaXQiByRtYXRjaDIiCG5leHRVc2VyIgtuZXh0UG9vbFN0ciIBciIHY291bnRlciIadm90aW5nRW1pc3Npb25SYXRlQ29udHJhY3QiBnJlc3VsdCIDaW52IghtYXhEZXB0aCIWZmluYWxpemF0aW9uSW5Qcm9ncmVzcyIJZ3d4QW1vdW50IgFuIgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXk+AAFhAgJfXwABYgCAwtcvAAFjAAoAAWQAAAABZQABAAFmCQC5CQIJAMwIAgICJXMJAMwIAgILZXBvY2hMZW5ndGgFA25pbAUBYQABZwkAuQkCCQDMCAICBCVzJXMJAMwIAgIQZXBvY2hMZW5ndGhfX25ldwUDbmlsBQFhAQFoAQFpCQC5CQIJAMwIAgIEJXMlZAkAzAgCAgtlcG9jaExlbmd0aAkAzAgCCQCkAwEFAWkFA25pbAUBYQABagkAuQkCCQDMCAICAiVzCQDMCAICDGN1cnJlbnRFcG9jaAUDbmlsBQFhAAFrCQC5CQIJAMwIAgICJXMJAMwIAgIIbWF4RGVwdGgFA25pbAUBYQABbAkAuQkCCQDMCAICAiVzCQDMCAICH3ZvdGluZ0VtaXNzaW9uQ2FuZGlkYXRlQ29udHJhY3QFA25pbAUBYQABbQkAuQkCCQDMCAICAiVzCQDMCAICGnZvdGluZ0VtaXNzaW9uUmF0ZUNvbnRyYWN0BQNuaWwFAWEAAW4JALkJAgkAzAgCAgIlcwkAzAgCAg9mYWN0b3J5Q29udHJhY3QFA25pbAUBYQABbwkAuQkCCQDMCAICAiVzCQDMCAICEGJvb3N0aW5nQ29udHJhY3QFA25pbAUBYQABcAkAuQkCCQDMCAICAiVzCQDMCAICD3N0YWtpbmdDb250cmFjdAUDbmlsBQFhAAFxCQC5CQIJAMwIAgICJXMJAMwIAgIRZmluYWxpemF0aW9uU3RhZ2UFA25pbAUBYQABcgkAuQkCCQDMCAICAiVzCQDMCAICCG5leHRQb29sBQNuaWwFAWEAAXMJALkJAgkAzAgCAgIlcwkAzAgCAghuZXh0VXNlcgUDbmlsBQFhAAF0CQC5CQIJAMwIAgICJXMJAMwIAgILc3RhcnRIZWlnaHQFA25pbAUBYQABdQkAuQkCCQDMCAICAiVzCQDMCAICDmN1cnJlbnRFcG9jaFVpBQNuaWwFAWEAAXYJALkJAgkAzAgCAgIlcwkAzAgCAg1zdGFydEhlaWdodFVpBQNuaWwFAWEAAXcJALkJAgkAzAgCAgIlcwkAzAgCAgVmb3JjZQUDbmlsBQFhAQF4AQFpCQC5CQIJAMwIAgIEJXMlZAkAzAgCAgtzdGFydEhlaWdodAkAzAgCCQCkAwEFAWkFA25pbAUBYQEBeQEBaQkAuQkCCQDMCAICBCVzJWQJAMwIAgIJZmluYWxpemVkCQDMCAIJAKQDAQUBaQUDbmlsBQFhAQF6AQFBBAFCBQFBBAFDCAUBQgJfMQQBRAgFAUICXzIJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIGaW5MaXN0CQDMCAIFAUMJAMwIAgUBRAUDbmlsBQFhAQFFAgFGAWkJALkJAgkAzAgCAgYlcyVzJWQJAMwIAgIEdXNlZAkAzAgCCQClCAEFAUYJAMwIAgkApAMBBQFpBQNuaWwFAWEBAUcDAUEBRgFpBAFIBQFBBAFDCAUBSAJfMQQBRAgFAUgCXzIJALkJAgkAzAgCAgolcyVzJXMlcyVkCQDMCAICBHZvdGUJAMwIAgUBQwkAzAgCBQFECQDMCAIJAKUIAQUBRgkAzAgCCQCkAwEFAWkFA25pbAUBYQEBSQIBQQFpBAFKBQFBBAFDCAUBSgJfMQQBRAgFAUoCXzIJALkJAgkAzAgCAgglcyVzJXMlZAkAzAgCAgx2b3RpbmdSZXN1bHQJAMwIAgUBQwkAzAgCBQFECQDMCAIJAKQDAQUBaQUDbmlsBQFhAQFLAgFMAWkJALkJAgkAzAgCAgYlcyVzJWQJAMwIAgISdm90aW5nUmVzdWx0U3Rha2VkCQDMCAIFAUwJAMwIAgkApAMBBQFpBQNuaWwFAWEBAU0CAUEBaQQBTgUBQQQBQwgFAU4CXzEEAUQIBQFOAl8yCQC5CQIJAMwIAgIIJXMlcyVzJWQJAMwIAgIJcG9vbFNoYXJlCQDMCAIFAUMJAMwIAgUBRAkAzAgCCQCkAwEFAWkFA25pbAUBYQEBTwEBaQkAuQkCCQDMCAICBCVzJWQJAMwIAgIKdG90YWxWb3RlcwkAzAgCCQCkAwEFAWkFA25pbAUBYQEBUAIBTAFRCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICBnN0YWtlZAkAzAgCBQFRCQDMCAIFAUwFA25pbAUBYQEBUgEBUwkAuQkCCQDMCAICFXZvdGluZ19lbWlzc2lvbi5yaWRlOgkAzAgCBQFTBQNuaWwCASABAVQBAVMJAAIBCQEBUgEFAVMBAVUDAUYBVgFXBAFYCQEBUgEJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUBRgkAzAgCAgEuCQDMCAIFAVYJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBAFZBQFXAwkAAQIFAVkCBlN0cmluZwQBWgUBWQkAnQgCBQFGBQFWAwkAAQIFAVkCA0ludAQCYWEFAVkJAJoIAgUBRgUBVgkBAVQBAhJpbnZhbGlkIGVudHJ5IHR5cGUFAVgBAmFiAgFGAVYKAAJhYwkBAVUDBQFGBQFWAgADCQABAgUCYWMCBlN0cmluZwUCYWMJAAIBCQCsAgIJAAMBBQJhYwIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nAQJhZAIBRgFWCgACYWMJAQFVAwUBRgUBVgAAAwkAAQIFAmFjAgNJbnQFAmFjCQACAQkArAICCQADAQUCYWMCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAECYWUBAUEJAKwCAgkArAICCAUBQQJfMQUBYQgFAUECXzIBAmFmAQFaBAJhZwkAtQkCBQFaBQFhAwkAAAIJAJADAQUCYWcAAgkAlAoCCQCRAwIFAmFnAAAJAJEDAgUCYWcAAQkBAVQBAhNpbnZhbGlkIHBvb2wgc3RyaW5nAAJhaAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFiAgUEdGhpcwUBbgACYWkACgECYWoAAhElc19fZmFjdG9yeUNvbmZpZwECYWsBAmFsCQC1CQIJAQJhYgIFAmFsCQECYWoABQFhAQJhbQECYW4JARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYW4FAmFpAQJhbwIBQwFECgECYXABAmFxCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmFxCgECYXICAmFzAmF0CQCsAgIJAKwCAgkArAIC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ZWxldGVFbnRyeQEJAQJhSwIFAmFGBQJhSgUDbmlsAwkBAiE9AgUCYU8FBHVuaXQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFFAQUCYUYJAQV2YWx1ZQEFAmFPCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhSwIFAmFGBQJhSgkAzAgCCQELRGVsZXRlRW50cnkBCQECYUkCBQJhRgkBBXZhbHVlAQUCYU8FA25pbAMJAQIhPQIFAmFOBQR1bml0CQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhSQIFAmFGBQJhSgkAzAgCCQELRGVsZXRlRW50cnkBCQECYUsCBQJhRgkBBXZhbHVlAQUCYU4FA25pbAMJAAACBQJhSgkBC3ZhbHVlT3JFbHNlAgUCYU0CAAkAzAgCCQELRGVsZXRlRW50cnkBCQECYUUBBQJhRgUDbmlsCQEBVAEJAKwCAgkArAICCQCsAgICDmludmFsaWQgbm9kZTogBQJhRgIBLgUCYUoBAmFUAAIXJXNfX21hbmFnZXJWYXVsdEFkZHJlc3MBAmFVAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAmFWAAQBWQkAoggBCQECYVQAAwkAAQIFAVkCBlN0cmluZwQCYVcFAVkJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmFXBQR0aGlzAQJhWAAEAmFZCQECYVYABAFZCQCdCAIFAmFZCQECYVUAAwkAAQIFAVkCBlN0cmluZwQCYVcFAVkJANkEAQUCYVcDCQABAgUBWQIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJhWgECYmEEAVkJAQJhWAADCQABAgUBWQIKQnl0ZVZlY3RvcgQCYmIFAVkJAAACCAUCYmEPY2FsbGVyUHVibGljS2V5BQJiYgMJAAECBQFZAgRVbml0CQAAAggFAmJhBmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJiYwECYmEDCQECYVoBBQJiYQYJAAIBAhFwZXJtaXNzaW9uIGRlbmllZAECYmQBAmJhAwkAAAIIBQJiYQZjYWxsZXIFBHRoaXMGCQACAQIRcGVybWlzc2lvbiBkZW5pZWQSAmJhARhnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHQCAmJlAmJmBAJiZwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAQJhYgIFBHRoaXMFAW8JAQFSAQIhaW52YWxpZCBib29zdGluZyBjb250cmFjdCBhZGRyZXNzCQCUCgIFA25pbAoAAmFjCQD8BwQFAmJnAiBnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHRSRUFET05MWQkAzAgCBQJiZQkAzAgCBQJiZgUDbmlsBQNuaWwDCQABAgUCYWMCA0ludAUCYWMJAAIBCQCsAgIJAAMBBQJhYwIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AmJhAQtjb25zdHJ1Y3RvcgUCYWgCYmgCYmkCYmoCYmsEAmJsCQDMCAIJAQJiYwEFAmJhCQDMCAIDCQECIT0CCQCmCAEFAmFoBQR1bml0BgIgaW52YWxpZCBmYWN0b3J5IGNvbnRyYWN0IGFkZHJlc3MJAMwIAgMJAQIhPQIJAKYIAQUCYmgFBHVuaXQGAjJpbnZhbGlkIHZvdGluZyBlbWlzc2lvbiBjYW5kaWRhdGUgY29udHJhY3QgYWRkcmVzcwkAzAgCAwkBAiE9AgkApggBBQJiaQUEdW5pdAYCIWludmFsaWQgYm9vc3RpbmcgY29udHJhY3QgYWRkcmVzcwkAzAgCAwkBAiE9AgkApggBBQJiagUEdW5pdAYCIGludmFsaWQgc3Rha2luZyBjb250cmFjdCBhZGRyZXNzCQDMCAIDCQBmAgUCYmsAAAYJAQFUAQIUaW52YWxpZCBlcG9jaCBsZW5ndGgFA25pbAMJAAACBQJibAUCYmwJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQFuBQJhaAkAzAgCCQELU3RyaW5nRW50cnkCBQFsBQJiaAkAzAgCCQELU3RyaW5nRW50cnkCBQFvBQJiaQkAzAgCCQELU3RyaW5nRW50cnkCBQFwBQJiagkAzAgCCQEMSW50ZWdlckVudHJ5AgUBZgUCYmsFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiYQEGY3JlYXRlAgFDAUQEAmJsCQDMCAIDCQAAAgkA2AQBCAgFAmJhBmNhbGxlcgVieXRlcwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQFsAgAGCQECYmMBBQJiYQUDbmlsAwkAAAIFAmJsBQJibAQBQQkAlAoCBQFDBQFEBAJibQkAzggCCQDMCAIJAQxCb29sZWFuRW50cnkCCQEBegEFAUEGBQNuaWwJAQJhUAIFAmFCCQECYWUBBQFBBAJibgkAAAIJAJoIAgUEdGhpcwUBagUEdW5pdAQCYm8DBQJibgQBaQAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFqBQFpCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBeAEFAWkFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUBdAUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQF1BQFpCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQF2BQZoZWlnaHQFA25pbAUDbmlsCQCUCgIJAM4IAgUCYm0FAmJvBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJhAQR2b3RlAwFDAUQCYnAEAUEJAJQKAgUBQwUBRAQBaQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFqAAAEAmJxCQECYWQCBQR0aGlzCQEBeAEFAWkEAmJrCQECYWQCBQR0aGlzBQFmBAJicgkAZAIFAmJxBQJiawQCYnMJAJoIAgUEdGhpcwUBcQQCYnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAUUCCAUCYmEGY2FsbGVyBQFpAAAEAmJ1CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFHAwUBQQgFAmJhBmNhbGxlcgUBaQAABAJidgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEBSQIFAUEFAWkAAAQCYncJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAU8BBQFpAAAEAmJ4CgACYWMJAPwHBAUEdGhpcwIYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0CQDMCAIJANgEAQgIBQJiYQZjYWxsZXIFYnl0ZXMJAMwIAgUCYnIFA25pbAUDbmlsAwkAAQIFAmFjAgNJbnQFAmFjCQACAQkArAICCQADAQUCYWMCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQCYnkJAGUCBQJieAUCYnQEAmJ6CQBkAgUCYnUFAmJwBAJiQQkBAmF6AQUBQQQCYmwJAMwIAgMJAQIhPQIJAKAIAQkBAXoBBQFBBQR1bml0BgkBAVQBAg5pbnZhbGlkIGFzc2V0cwkAzAgCAwkAZgIFAmJyBQZoZWlnaHQGCQEBVAECDmludmFsaWQgaGVpZ2h0CQDMCAIDCQAAAgUCYnMFBHVuaXQGCQEBVAECGGZpbmFsaXphdGlvbiBpbiBwcm9ncmVzcwkAzAgCAwkAZgIFAmJ4AAAGCQEBVAECE3lvdSBkbyBub3QgaGF2ZSBnV1gJAMwIAgMDCQBmAgUCYnAAAAkAZwIFAmJ5BQJicAcGCQEBVAECDmludmFsaWQgYW1vdW50CQDMCAIDBQJiQQYJAQFUAQIdcG9vbCBoYXNuJ3QgV1hfRU1JU1NJT04gbGFiZWwFA25pbAMJAAACBQJibAUCYmwEAmJCCQECYUMBBQFBBAFRCQClCAEIBQJiYQZjYWxsZXIEAmJDAwkBAmFMAgUCYkIFAVEFA25pbAkBAmFQAgUCYkIFAVEJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBRQIIBQJiYQZjYWxsZXIFAWkJAGQCBQJidAUCYnAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFHAwUBQQgFAmJhBmNhbGxlcgUBaQUCYnoJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFJAgUBQQUBaQkAZAIFAmJ2BQJicAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAU8BBQFpCQBkAgUCYncFAmJwBQNuaWwFAmJDBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJhAQpjYW5jZWxWb3RlAgFDAUQEAUEJAJQKAgUBQwUBRAQBaQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFqAAAEAmJxCQECYWQCBQR0aGlzCQEBeAEFAWkEAmJrCQECYWQCBQR0aGlzBQFmBAJicgkAZAIFAmJxBQJiawQCYnMJAJoIAgUEdGhpcwUBcQQCYnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAUUCCAUCYmEGY2FsbGVyBQFpAAAEAmJ1CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFHAwUBQQgFAmJhBmNhbGxlcgUBaQAABAJidgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEBSQIFAUEFAWkAAAQCYncJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAU8BBQFpAAAEAmJsCQDMCAIDCQECIT0CCQCgCAEJAQF6AQUBQQUEdW5pdAYJAQFUAQIOaW52YWxpZCBhc3NldHMJAMwIAgMJAGYCBQJicgUGaGVpZ2h0BgkBAVQBAg5pbnZhbGlkIGhlaWdodAkAzAgCAwkAAAIFAmJzBQR1bml0BgkBAVQBAhhmaW5hbGl6YXRpb24gaW4gcHJvZ3Jlc3MJAMwIAgMJAGYCBQJidQAABgkBAVQBAgdubyB2b3RlBQNuaWwDCQAAAgUCYmwFAmJsBAJiQgkBAmFDAQUBQQQBUQkApQgBCAUCYmEGY2FsbGVyCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAUUCCAUCYmEGY2FsbGVyBQFpCQCWAwEJAMwIAgkAZQIFAmJ0BQJidQkAzAgCAAAFA25pbAkAzAgCCQELRGVsZXRlRW50cnkBCQEBRwMFAUEIBQJiYQZjYWxsZXIFAWkJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFJAgUBQQUBaQkAZQIFAmJ2BQJidQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAU8BBQFpCQBlAgUCYncFAmJ1BQNuaWwJAQJhUwIFAmJCBQFRBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJhAQ5zZXRFcG9jaExlbmd0aAECYkQEAmJsCQDMCAIJAQJiYwEFAmJhCQDMCAIDCQBmAgUCYkQAAAYJAQFUAQIUaW52YWxpZCBlcG9jaCBsZW5ndGgFA25pbAMJAAACBQJibAUCYmwJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUBZwUCYkQFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiYQELc2V0TWF4RGVwdGgBAmJFBAJibAkAzAgCCQECYmMBBQJiYQkAzAgCAwkAZgIFAmJFAAAGCQEBVAECEWludmFsaWQgbWF4IGRlcHRoBQNuaWwDCQAAAgUCYmwFAmJsCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFAWsFAmJFBQNuaWwFBHVuaXQJAAIB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BQFwBAJheQkBAmFvAgUBQwUBRAQCYkEJAQJhegEFAUEEAmJ3CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFPAQUCYlYAAAQCYk8JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAUkCBQFBBQJiVgAABAJiWQMDCQAAAgUCYncAAAYJAQEhAQUCYkEAAAkAawMFAmJPBQFiBQJidwQCYloJAPwHBAUCYWgCDG1vZGlmeVdlaWdodAkAzAgCBQJheQkAzAgCBQJiWQUDbmlsBQNuaWwDCQAAAgUCYloFAmJaBAJjYQMDBQJiQQYFAmJVBQNuaWwJAM4IAgkAzAgCCQELRGVsZXRlRW50cnkBCQEBegEFAUEFA25pbAkBAmFTAgUCYUIFAmJGCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAU0CBQFBBQJiVgUCYlkFA25pbAUCY2EHCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJhAQ5maW5hbGl6ZUhlbHBlcgAEAmJVCQELdmFsdWVPckVsc2UCCQCgCAEFAXcHBAFpCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAWoAAAQCY2IJAGUCBQFpAAEEAmJxCQECYWQCBQR0aGlzCQEBeAEFAWkEAmJrCQECYWQCBQR0aGlzBQFmBAJicgkAZAIFAmJxBQJiawQCYnMJAJoIAgUEdGhpcwUBcQMDAwkAZwIFBmhlaWdodAUCYnIJAAACBQJicwUEdW5pdAcJAQEhAQUCYlUHBAJjYwkAZAIFAWkAAQQCY2QJAJoIAgUEdGhpcwUBZwQCY2UEAVkFAmNkAwkAAQIFAVkCA0ludAQCYkQFAVkJAMwIAgkBDEludGVnZXJFbnRyeQIFAWYFAmJECQDMCAIJAQtEZWxldGVFbnRyeQEFAWcFA25pbAMJAAECBQFZAgRVbml0BQNuaWwJAAIBAgtNYXRjaCBlcnJvcgkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQF4AQUCY2MFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUBdAUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFqBQJjYwkAzAgCCQEMSW50ZWdlckVudHJ5AgUBcQUBZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAWgBBQFpBQJiawUDbmlsBQJjZQYDAwUCYlUJAAACBQJicwUEdW5pdAcJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUBcQUBZQUDbmlsBgMJAAACBQJicwUEdW5pdAkAlAoCBQNuaWwHAwkAAAIFAmJzBQFkBAJjZgkAoggBBQFyBAJjZwkAoggBBQFzBAFZBQJjZgMJAAECBQFZAgRVbml0BAJjaAkAoggBCQECYUUBBQJhQgMJAAECBQJjaAIEVW5pdAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFxBQFlCQDMCAIJAQtEZWxldGVFbnRyeQEFAXIJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBcwUDbmlsBgMJAAECBQJjaAIGU3RyaW5nBAJjaQUCY2gJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQFyBQJjaQUDbmlsBgkAAgECC01hdGNoIGVycm9yAwkAAQIFAVkCBlN0cmluZwQCYkYFAVkEAUEJAQJhZgEFAmJGBAJjagQCY2gFAmNnAwkAAQIFAmNoAgRVbml0CQCiCAEJAQJhRQEJAQJhQwEFAUEDCQABAgUCY2gCBlN0cmluZwQCY2sFAmNoBAJjbAkAoggBCQECYUsCCQECYUMBBQFBBQJjawMJAAACBQJjbAUCY2wEAmNtCQD8BwQFBHRoaXMCE3Byb2Nlc3NWb3RlSU5URVJOQUwJAMwIAgUCYkYJAMwIAgUCY2sFA25pbAUDbmlsAwkAAAIFAmNtBQJjbQUCY2wJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAgtNYXRjaCBlcnJvcgQCY2gFAmNqAwkAAQIFAmNoAgRVbml0BAJjbgkAoggBCQECYUsCBQJhQgUCYkYEAmNvBQJjbgMJAAECBQJjbwIEVW5pdAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFxBQFlCQDMCAIJAQtEZWxldGVFbnRyeQEFAXIJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBcwUDbmlsBgMJAAECBQJjbwIGU3RyaW5nBAJhVwUCY28JAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQFyBQJhVwkAzAgCCQELRGVsZXRlRW50cnkBBQFzBQNuaWwGCQACAQILTWF0Y2ggZXJyb3IDCQABAgUCY2gCBlN0cmluZwQCY3AFAmNoCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUBcwUCY3AFA25pbAYJAAIBAgtNYXRjaCBlcnJvcgkAAgECC01hdGNoIGVycm9yAwkAAAIFAmJzBQFlBAJjZgkAoggBBQFyBAFZBQJjZgMJAAECBQFZAgRVbml0BAJjaAkAoggBCQECYUUBBQJhQgMJAAECBQJjaAIEVW5pdAQCYlQDBQJiVQkAzAgCCQELRGVsZXRlRW50cnkBBQFxCQDMCAIJAQtEZWxldGVFbnRyeQEFAXcFA25pbAkAzAgCCQELRGVsZXRlRW50cnkBBQFxCQDMCAIJAQxCb29sZWFuRW50cnkCCQEBeQEFAmNiBgkAzAgCCQEMSW50ZWdlckVudHJ5AgUBdQUBaQkAzAgCCQEMSW50ZWdlckVudHJ5AgUBdgUCYnEFA25pbAkAlAoCBQJiVAYDCQABAgUCY2gCBlN0cmluZwQCY3EFAmNoCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUBcgUCY3EFA25pbAYJAAIBAgtNYXRjaCBlcnJvcgMJAAECBQFZAgZTdHJpbmcEAmJGBQFZBAJjbgkAoggBCQECYUsCBQJhQgUCYkYDCQAAAgUCY24FAmNuBAJjcgoAAmFjCQD8BwQFBHRoaXMCE3Byb2Nlc3NQb29sSU5URVJOQUwJAMwIAgUCYkYJAMwIAgUCYlUFA25pbAUDbmlsAwkAAQIFAmFjAgdCb29sZWFuBQJhYwkAAgEJAKwCAgkAAwEFAmFjAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuAwkAAAIFAmNyBQJjcgMFAmNyCQCUCgIFA25pbAYEAmNoBQJjbgMJAAECBQJjaAIEVW5pdAQCYlQDBQJiVQkAzAgCCQELRGVsZXRlRW50cnkBBQFxCQDMCAIJAQtEZWxldGVFbnRyeQEFAXcJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBcgUDbmlsCQDMCAIJAQtEZWxldGVFbnRyeQEFAXEJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQF5AQUCY2IGCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQF1BQFpCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQF2BQJicQkAzAgCCQELRGVsZXRlRW50cnkBBQFyBQNuaWwJAJQKAgUCYlQGAwkAAQIFAmNoAgZTdHJpbmcEAmNxBQJjaAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFAXIFAmNxBQNuaWwGCQACAQILTWF0Y2ggZXJyb3IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAgtNYXRjaCBlcnJvcgkBAVQBAhZmaW5hbGl6YXRpb24gaXMgYnJva2VuAmJhAQ9maW5hbGl6ZVdyYXBwZXIBAmNzBAJjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUBbQQCY3UKAAJhYwkA/AcEBQR0aGlzAg5maW5hbGl6ZUhlbHBlcgUDbmlsBQNuaWwDCQABAgUCYWMCB0Jvb2xlYW4FAmFjCQACAQkArAICCQADAQUCYWMCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4DCQAAAgUCY3UFAmN1AwkBASEBBQJjdQMJAAACBQJjcwAACQEBVAECHkN1cnJlbnQgdm90aW5nIGlzIG5vdCBvdmVyIHlldAQCY3YJAPwHBAUCY3QCCGZpbmFsaXplBQNuaWwFA25pbAMJAAACBQJjdgUCY3YJAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAJjdwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFrBQFjAwkAZgIFAmN3BQJjcwQCY3YJAPwHBAUEdGhpcwIPZmluYWxpemVXcmFwcGVyCQDMCAIJAGQCBQJjcwABBQNuaWwFA25pbAMJAAACBQJjdgUCY3YJAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQCUCgIFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiYQEIZmluYWxpemUABAJjdgkA/AcEBQR0aGlzAg9maW5hbGl6ZVdyYXBwZXIJAMwIAgAABQNuaWwFA25pbAMJAAACBQJjdgUCY3YJAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJhARRjb250YWluc05vZGVSRUFET05MWQICYUYCYUoJAJQKAgUDbmlsCQECYUwCBQJhRgUCYUoCYmEBCmluc2VydE5vZGUCAmFGAmFKBAJiRwkBAmJjAQUCYmEDCQAAAgUCYkcFAmJHCQCUCgIJAQJhUAIFAmFGBQJhSgUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiYQEKZGVsZXRlTm9kZQICYUYCYUoEAmJHCQECYmMBBQJiYQMJAAACBQJiRwUCYkcJAJQKAgkBAmFTAgUCYUYFAmFKBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJhARhpc0ZpbmFsaXphdGlvbkluUHJvZ3Jlc3MABAJicwkAmggCBQR0aGlzBQFxBAJjeAkBAiE9AgUCYnMFBHVuaXQJAJQKAgUDbmlsBQJjeAJiYQEKZGVsZXRlUG9vbAIBQwFEBAJiRwMDCQAAAggFAmJhBmNhbGxlcgUCYWgGCQECYmMBBQJiYQYJAQFUAQIRUGVybWlzc2lvbiBkZW5pZWQDCQAAAgUCYkcFAmJHBAJhRgIFcG9vbHMEAUEJAJQKAgUBQwUBRAQCYUoJALkJAgkAzAgCBQFDCQDMCAIFAUQFA25pbAUBYQQCYlQDCQECYUwCBQJhRgUCYUoJAQJhUwIFAmFGBQJhSgUDbmlsCQDOCAIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAXoBBQFBBQNuaWwFAmJUCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJhARJnZXRMb2NrZWRHd3hBbW91bnQBAVEEAmJlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUBUQkBAVIBAhRpbnZhbGlkIHVzZXIgYWRkcmVzcwQBaQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFqAAAEAmN5BAFZCQCaCAIFBHRoaXMJAQFFAgUCYmUFAWkDCQABAgUBWQIEVW5pdAAAAwkAAQIFAVkCA0ludAQCY3oFAVkFAmN6CQACAQILTWF0Y2ggZXJyb3IJAJQKAgUDbmlsBQJjeQECY0EBAmNCAAQCY0MEAVkJAQJhWAADCQABAgUBWQIKQnl0ZVZlY3RvcgQCYmIFAVkFAmJiAwkAAQIFAVkCBFVuaXQIBQJjQQ9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgkA9AMDCAUCY0EJYm9keUJ5dGVzCQCRAwIIBQJjQQZwcm9vZnMAAAUCY0Ntk8qj", "height": 2744787, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FRCajPuTxvXbBg91L5VZtWSXicaY1zvBVYTGPAV18Nsz Next: 6ERM7wMWvxs3puTqwemm9a6mNzznRajbSCWiFEang9N4 Diff:
OldNewDifferences
187187 }
188188
189189
190-func aB () = {
191- let an = ak(ah)
192- let aC = am(an)
193- invoke(aC, "deposit", nil, nil)
194- }
190+let aB = "pools"
195191
196-
197-let aD = "pools"
198-
199-func aE (A) = {
200- let aF = A
201- let C = aF._1
202- let D = aF._2
192+func aC (A) = {
193+ let aD = A
194+ let C = aD._1
195+ let D = aD._2
203196 makeString(["votes", C, D], a)
204197 }
205198
206199
207-func aG (aH) = {
208- let aI = if ((aH == aD))
200+func aE (aF) = {
201+ let aG = if ((aF == aB))
209202 then "%s%s"
210203 else "%s%s%s%s"
211- makeString([aI, aH, "head"], a)
204+ makeString([aG, aF, "head"], a)
212205 }
213206
214207
215-func aJ (aH) = {
216- let aI = if ((aH == aD))
208+func aH (aF) = {
209+ let aG = if ((aF == aB))
217210 then "%s%s"
218211 else "%s%s%s%s"
219- makeString([aI, aH, "size"], a)
212+ makeString([aG, aF, "size"], a)
220213 }
221214
222215
223-func aK (aH,aL) = {
224- let aI = if ((aH == aD))
216+func aI (aF,aJ) = {
217+ let aG = if ((aF == aB))
225218 then "%s%s%s%s"
226219 else "%s%s%s%s%s"
227- makeString([aI, aH, aL, "prev"], a)
220+ makeString([aG, aF, aJ, "prev"], a)
228221 }
229222
230223
231-func aM (aH,aL) = {
232- let aI = if ((aH == aD))
224+func aK (aF,aJ) = {
225+ let aG = if ((aF == aB))
233226 then "%s%s%s%s"
234227 else "%s%s%s%s%s"
235- makeString([aI, aH, aL, "next"], a)
228+ makeString([aG, aF, aJ, "next"], a)
236229 }
237230
238231
239-func aN (aH,aL) = {
240- let aO = getString(this, aG(aH))
241- let aP = getString(this, aK(aH, aL))
242- let aQ = getString(this, aM(aH, aL))
243- if (if ((aL == valueOrElse(aO, "")))
232+func aL (aF,aJ) = {
233+ let aM = getString(this, aE(aF))
234+ let aN = getString(this, aI(aF, aJ))
235+ let aO = getString(this, aK(aF, aJ))
236+ if (if ((aJ == valueOrElse(aM, "")))
244237 then true
245- else (aP != unit))
238+ else (aN != unit))
246239 then true
247- else (aQ != unit)
240+ else (aO != unit)
248241 }
249242
250243
251-func aR (aH,aL) = {
252- let aO = getString(this, aG(aH))
253- let aS = valueOrElse(getInteger(this, aJ(aH)), 0)
254- let aT = if (!(aN(aH, aL)))
244+func aP (aF,aJ) = {
245+ let aM = getString(this, aE(aF))
246+ let aQ = valueOrElse(getInteger(this, aH(aF)), 0)
247+ let aR = if (!(aL(aF, aJ)))
255248 then true
256249 else T("Node exists")
257- if ((aT == aT))
258- then (([IntegerEntry(aJ(aH), (aS + 1))] ++ (if ((aO != unit))
259- then [StringEntry(aM(aH, aL), value(aO)), StringEntry(aK(aH, value(aO)), aL)]
260- else nil)) ++ [StringEntry(aG(aH), aL)])
250+ if ((aR == aR))
251+ then (([IntegerEntry(aH(aF), (aQ + 1))] ++ (if ((aM != unit))
252+ then [StringEntry(aK(aF, aJ), value(aM)), StringEntry(aI(aF, value(aM)), aJ)]
253+ else nil)) ++ [StringEntry(aE(aF), aJ)])
261254 else throw("Strict value is not equal to itself.")
262255 }
263256
264257
265-func aU (aH,aL) = {
266- let aO = getString(this, aG(aH))
267- let aS = valueOrElse(getInteger(this, aJ(aH)), 0)
268- let aP = getString(this, aK(aH, aL))
269- let aQ = getString(this, aM(aH, aL))
270- ([IntegerEntry(aJ(aH), (aS - 1))] ++ (if (if ((aP != unit))
271- then (aQ != unit)
258+func aS (aF,aJ) = {
259+ let aM = getString(this, aE(aF))
260+ let aQ = valueOrElse(getInteger(this, aH(aF)), 0)
261+ let aN = getString(this, aI(aF, aJ))
262+ let aO = getString(this, aK(aF, aJ))
263+ ([IntegerEntry(aH(aF), (aQ - 1))] ++ (if (if ((aN != unit))
264+ then (aO != unit)
272265 else false)
273- then [StringEntry(aM(aH, value(aP)), value(aQ)), StringEntry(aK(aH, value(aQ)), value(aP)), DeleteEntry(aK(aH, aL)), DeleteEntry(aM(aH, aL))]
274- else if ((aQ != unit))
275- then [StringEntry(aG(aH), value(aQ)), DeleteEntry(aM(aH, aL)), DeleteEntry(aK(aH, value(aQ)))]
276- else if ((aP != unit))
277- then [DeleteEntry(aK(aH, aL)), DeleteEntry(aM(aH, value(aP)))]
278- else if ((aL == valueOrElse(aO, "")))
279- then [DeleteEntry(aG(aH))]
280- else T(((("invalid node: " + aH) + ".") + aL))))
266+ then [StringEntry(aK(aF, value(aN)), value(aO)), StringEntry(aI(aF, value(aO)), value(aN)), DeleteEntry(aI(aF, aJ)), DeleteEntry(aK(aF, aJ))]
267+ else if ((aO != unit))
268+ then [StringEntry(aE(aF), value(aO)), DeleteEntry(aK(aF, aJ)), DeleteEntry(aI(aF, value(aO)))]
269+ else if ((aN != unit))
270+ then [DeleteEntry(aI(aF, aJ)), DeleteEntry(aK(aF, value(aN)))]
271+ else if ((aJ == valueOrElse(aM, "")))
272+ then [DeleteEntry(aE(aF))]
273+ else T(((("invalid node: " + aF) + ".") + aJ))))
281274 }
282275
283276
284-func aV () = "%s__managerVaultAddress"
277+func aT () = "%s__managerVaultAddress"
285278
286279
287-func aW () = "%s__managerPublicKey"
280+func aU () = "%s__managerPublicKey"
288281
289282
290-func aX () = {
291- let Y = getString(aV())
283+func aV () = {
284+ let Y = getString(aT())
292285 if ($isInstanceOf(Y, "String"))
293286 then {
294- let aY = Y
295- addressFromStringValue(aY)
287+ let aW = Y
288+ addressFromStringValue(aW)
296289 }
297290 else this
298291 }
299292
300293
301-func aZ () = {
302- let ba = aX()
303- let Y = getString(ba, aW())
294+func aX () = {
295+ let aY = aV()
296+ let Y = getString(aY, aU())
304297 if ($isInstanceOf(Y, "String"))
305298 then {
306- let aY = Y
307- fromBase58String(aY)
299+ let aW = Y
300+ fromBase58String(aW)
308301 }
309302 else if ($isInstanceOf(Y, "Unit"))
310303 then unit
312305 }
313306
314307
315-func bb (bc) = {
316- let Y = aZ()
308+func aZ (ba) = {
309+ let Y = aX()
317310 if ($isInstanceOf(Y, "ByteVector"))
318311 then {
319- let bd = Y
320- (bc.callerPublicKey == bd)
312+ let bb = Y
313+ (ba.callerPublicKey == bb)
321314 }
322315 else if ($isInstanceOf(Y, "Unit"))
323- then (bc.caller == this)
316+ then (ba.caller == this)
324317 else throw("Match error")
325318 }
326319
327320
328-func be (bc) = if (bb(bc))
321+func bc (ba) = if (aZ(ba))
329322 then true
330323 else throw("permission denied")
331324
332325
333-func bf (bc) = if ((bc.caller == this))
326+func bd (ba) = if ((ba.caller == this))
334327 then true
335328 else throw("permission denied")
336329
337330
338-@Callable(bc)
339-func getUserGwxAmountAtHeight (bg,bh) = {
340- let bi = valueOrErrorMessage(addressFromString(ab(this, o)), R("invalid boosting contract address"))
331+@Callable(ba)
332+func getUserGwxAmountAtHeight (be,bf) = {
333+ let bg = valueOrErrorMessage(addressFromString(ab(this, o)), R("invalid boosting contract address"))
341334 $Tuple2(nil, {
342- let ac = invoke(bi, "getUserGwxAmountAtHeightREADONLY", [bg, bh], nil)
335+ let ac = invoke(bg, "getUserGwxAmountAtHeightREADONLY", [be, bf], nil)
343336 if ($isInstanceOf(ac, "Int"))
344337 then ac
345338 else throw(($getType(ac) + " couldn't be cast to Int"))
348341
349342
350343
351-@Callable(bc)
352-func constructor (ah,bj,bk,bl,bm) = {
353- let bn = [be(bc), if ((addressFromString(ah) != unit))
344+@Callable(ba)
345+func constructor (ah,bh,bi,bj,bk) = {
346+ let bl = [bc(ba), if ((addressFromString(ah) != unit))
354347 then true
355- else "invalid factory contract address", if ((addressFromString(bj) != unit))
348+ else "invalid factory contract address", if ((addressFromString(bh) != unit))
356349 then true
357- else "invalid voting emission candidate contract address", if ((addressFromString(bk) != unit))
350+ else "invalid voting emission candidate contract address", if ((addressFromString(bi) != unit))
358351 then true
359- else "invalid boosting contract address", if ((addressFromString(bl) != unit))
352+ else "invalid boosting contract address", if ((addressFromString(bj) != unit))
360353 then true
361- else "invalid staking contract address", if ((bm > 0))
354+ else "invalid staking contract address", if ((bk > 0))
362355 then true
363356 else T("invalid epoch length")]
364- if ((bn == bn))
365- then $Tuple2([StringEntry(n, ah), StringEntry(l, bj), StringEntry(o, bk), StringEntry(p, bl), IntegerEntry(f, bm)], unit)
357+ if ((bl == bl))
358+ then $Tuple2([StringEntry(n, ah), StringEntry(l, bh), StringEntry(o, bi), StringEntry(p, bj), IntegerEntry(f, bk)], unit)
366359 else throw("Strict value is not equal to itself.")
367360 }
368361
369362
370363
371-@Callable(bc)
364+@Callable(ba)
372365 func create (C,D) = {
373- let bn = [if ((toBase58String(bc.caller.bytes) == valueOrElse(getString(this, l), "")))
366+ let bl = [if ((toBase58String(ba.caller.bytes) == valueOrElse(getString(this, l), "")))
374367 then true
375- else be(bc)]
376- if ((bn == bn))
368+ else bc(ba)]
369+ if ((bl == bl))
377370 then {
378371 let A = $Tuple2(C, D)
379- let bo = ([BooleanEntry(z(A), true)] ++ aR(aD, ae(A)))
380- let bp = (getInteger(this, j) == unit)
381- let bq = if (bp)
372+ let bm = ([BooleanEntry(z(A), true)] ++ aP(aB, ae(A)))
373+ let bn = (getInteger(this, j) == unit)
374+ let bo = if (bn)
382375 then {
383376 let i = 0
384377 [IntegerEntry(j, i), IntegerEntry(x(i), height), IntegerEntry(t, height), IntegerEntry(u, i), IntegerEntry(v, height)]
385378 }
386379 else nil
387- $Tuple2((bo ++ bq), unit)
380+ $Tuple2((bm ++ bo), unit)
388381 }
389382 else throw("Strict value is not equal to itself.")
390383 }
391384
392385
393386
394-@Callable(bc)
395-func vote (C,D,br) = {
387+@Callable(ba)
388+func vote (C,D,bp) = {
396389 let A = $Tuple2(C, D)
397390 let i = valueOrElse(getInteger(this, j), 0)
398- let bs = ad(this, x(i))
399- let bm = ad(this, f)
400- let bt = (bs + bm)
401- let bu = getInteger(this, q)
402- let bv = valueOrElse(getInteger(this, E(bc.caller, i)), 0)
403- let bw = valueOrElse(getInteger(this, G(A, bc.caller, i)), 0)
404- let bx = valueOrElse(getInteger(this, I(A, i)), 0)
405- let by = valueOrElse(getInteger(this, O(i)), 0)
406- let bz = {
407- let ac = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(bc.caller.bytes), bt], nil)
391+ let bq = ad(this, x(i))
392+ let bk = ad(this, f)
393+ let br = (bq + bk)
394+ let bs = getInteger(this, q)
395+ let bt = valueOrElse(getInteger(this, E(ba.caller, i)), 0)
396+ let bu = valueOrElse(getInteger(this, G(A, ba.caller, i)), 0)
397+ let bv = valueOrElse(getInteger(this, I(A, i)), 0)
398+ let bw = valueOrElse(getInteger(this, O(i)), 0)
399+ let bx = {
400+ let ac = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(ba.caller.bytes), br], nil)
408401 if ($isInstanceOf(ac, "Int"))
409402 then ac
410403 else throw(($getType(ac) + " couldn't be cast to Int"))
411404 }
412- let bA = (bz - bv)
413- let bB = (bw + br)
414- let bC = az(A)
415- let bn = [if ((getBoolean(z(A)) != unit))
405+ let by = (bx - bt)
406+ let bz = (bu + bp)
407+ let bA = az(A)
408+ let bl = [if ((getBoolean(z(A)) != unit))
416409 then true
417- else T("invalid assets"), if ((bt > height))
410+ else T("invalid assets"), if ((br > height))
418411 then true
419- else T("invalid height"), if ((bu == unit))
412+ else T("invalid height"), if ((bs == unit))
420413 then true
421- else T("finalization in progress"), if ((bz > 0))
414+ else T("finalization in progress"), if ((bx > 0))
422415 then true
423- else T("you do not have gWX"), if (if ((br > 0))
424- then (bA >= br)
416+ else T("you do not have gWX"), if (if ((bp > 0))
417+ then (by >= bp)
425418 else false)
426419 then true
427- else T("invalid amount"), if (bC)
420+ else T("invalid amount"), if (bA)
428421 then true
429422 else T("pool hasn't WX_EMISSION label")]
430- if ((bn == bn))
423+ if ((bl == bl))
431424 then {
432- let bD = aE(A)
433- let Q = toString(bc.caller)
434- let bE = if (aN(bD, Q))
425+ let bB = aC(A)
426+ let Q = toString(ba.caller)
427+ let bC = if (aL(bB, Q))
435428 then nil
436- else aR(bD, Q)
437- $Tuple2(([IntegerEntry(E(bc.caller, i), (bv + br)), IntegerEntry(G(A, bc.caller, i), bB), IntegerEntry(I(A, i), (bx + br)), IntegerEntry(O(i), (by + br))] ++ bE), unit)
429+ else aP(bB, Q)
430+ $Tuple2(([IntegerEntry(E(ba.caller, i), (bt + bp)), IntegerEntry(G(A, ba.caller, i), bz), IntegerEntry(I(A, i), (bv + bp)), IntegerEntry(O(i), (bw + bp))] ++ bC), unit)
438431 }
439432 else throw("Strict value is not equal to itself.")
440433 }
441434
442435
443436
444-@Callable(bc)
437+@Callable(ba)
445438 func cancelVote (C,D) = {
446439 let A = $Tuple2(C, D)
447440 let i = valueOrElse(getInteger(this, j), 0)
448- let bs = ad(this, x(i))
449- let bm = ad(this, f)
450- let bt = (bs + bm)
451- let bu = getInteger(this, q)
452- let bv = valueOrElse(getInteger(this, E(bc.caller, i)), 0)
453- let bw = valueOrElse(getInteger(this, G(A, bc.caller, i)), 0)
454- let bx = valueOrElse(getInteger(this, I(A, i)), 0)
455- let by = valueOrElse(getInteger(this, O(i)), 0)
456- let bn = [if ((getBoolean(z(A)) != unit))
441+ let bq = ad(this, x(i))
442+ let bk = ad(this, f)
443+ let br = (bq + bk)
444+ let bs = getInteger(this, q)
445+ let bt = valueOrElse(getInteger(this, E(ba.caller, i)), 0)
446+ let bu = valueOrElse(getInteger(this, G(A, ba.caller, i)), 0)
447+ let bv = valueOrElse(getInteger(this, I(A, i)), 0)
448+ let bw = valueOrElse(getInteger(this, O(i)), 0)
449+ let bl = [if ((getBoolean(z(A)) != unit))
457450 then true
458- else T("invalid assets"), if ((bt > height))
451+ else T("invalid assets"), if ((br > height))
459452 then true
460- else T("invalid height"), if ((bu == unit))
453+ else T("invalid height"), if ((bs == unit))
461454 then true
462- else T("finalization in progress"), if ((bw > 0))
455+ else T("finalization in progress"), if ((bu > 0))
463456 then true
464457 else T("no vote")]
465- if ((bn == bn))
458+ if ((bl == bl))
466459 then {
467- let bD = aE(A)
468- let Q = toString(bc.caller)
469- $Tuple2(([IntegerEntry(E(bc.caller, i), max([(bv - bw), 0])), DeleteEntry(G(A, bc.caller, i)), IntegerEntry(I(A, i), (bx - bw)), IntegerEntry(O(i), (by - bw))] ++ aU(bD, Q)), unit)
460+ let bB = aC(A)
461+ let Q = toString(ba.caller)
462+ $Tuple2(([IntegerEntry(E(ba.caller, i), max([(bt - bu), 0])), DeleteEntry(G(A, ba.caller, i)), IntegerEntry(I(A, i), (bv - bu)), IntegerEntry(O(i), (bw - bu))] ++ aS(bB, Q)), unit)
470463 }
471464 else throw("Strict value is not equal to itself.")
472465 }
473466
474467
475468
476-@Callable(bc)
477-func setEpochLength (bF) = {
478- let bn = [be(bc), if ((bF > 0))
469+@Callable(ba)
470+func setEpochLength (bD) = {
471+ let bl = [bc(ba), if ((bD > 0))
479472 then true
480473 else T("invalid epoch length")]
481- if ((bn == bn))
482- then $Tuple2([IntegerEntry(g, bF)], unit)
474+ if ((bl == bl))
475+ then $Tuple2([IntegerEntry(g, bD)], unit)
483476 else throw("Strict value is not equal to itself.")
484477 }
485478
486479
487480
488-@Callable(bc)
489-func setMaxDepth (bG) = {
490- let bn = [be(bc), if ((bG > 0))
481+@Callable(ba)
482+func setMaxDepth (bE) = {
483+ let bl = [bc(ba), if ((bE > 0))
491484 then true
492485 else T("invalid max depth")]
493- if ((bn == bn))
494- then $Tuple2([IntegerEntry(k, bG)], unit)
486+ if ((bl == bl))
487+ then $Tuple2([IntegerEntry(k, bE)], unit)
495488 else throw("Strict value is not equal to itself.")
496489 }
497490
498491
499492
500-@Callable(bc)
501-func processVoteINTERNAL (bH,Q) = {
502- let bI = bf(bc)
503- if ((bI == bI))
493+@Callable(ba)
494+func processVoteINTERNAL (bF,Q) = {
495+ let bG = bd(ba)
496+ if ((bG == bG))
504497 then {
505- let bg = valueOrErrorMessage(addressFromString(Q), R(("processVoteINTERNAL: invalid user address " + Q)))
498+ let be = valueOrErrorMessage(addressFromString(Q), R(("processVoteINTERNAL: invalid user address " + Q)))
506499 let i = ad(this, j)
507- let bJ = (i - 1)
508- let bm = ad(this, f)
509- let bs = ad(this, x(i))
510- let bt = (bs + bm)
511- let bK = ad(this, x(bJ))
512- let bL = ad(this, h(bJ))
513- let bM = (bK + bL)
514- let bN = if ((bJ >= 0))
500+ let bH = (i - 1)
501+ let bk = ad(this, f)
502+ let bq = ad(this, x(i))
503+ let br = (bq + bk)
504+ let bI = ad(this, x(bH))
505+ let bJ = ad(this, h(bH))
506+ let bK = (bI + bJ)
507+ let bL = if ((bH >= 0))
515508 then true
516509 else T("processVoteINTERNAL: invalid previous epoch")
517- if ((bN == bN))
510+ if ((bL == bL))
518511 then {
519- let A = af(bH)
520- let bO = A
521- let C = bO._1
522- let D = bO._2
523- let bC = az(A)
524- let bz = {
525- let ac = invoke(this, "getUserGwxAmountAtHeight", [Q, bt], nil)
512+ let A = af(bF)
513+ let bM = A
514+ let C = bM._1
515+ let D = bM._2
516+ let bA = az(A)
517+ let bx = {
518+ let ac = invoke(this, "getUserGwxAmountAtHeight", [Q, br], nil)
526519 if ($isInstanceOf(ac, "Int"))
527520 then ac
528521 else throw(($getType(ac) + " couldn't be cast to Int"))
529522 }
530- let bP = {
531- let ac = invoke(this, "getUserGwxAmountAtHeight", [Q, bM], nil)
523+ let bN = {
524+ let ac = invoke(this, "getUserGwxAmountAtHeight", [Q, bK], nil)
532525 if ($isInstanceOf(ac, "Int"))
533526 then ac
534527 else throw(($getType(ac) + " couldn't be cast to Int"))
535528 }
536- let by = valueOrElse(getInteger(O(i)), 0)
537- let bQ = valueOrElse(getInteger(I(A, i)), 0)
538- let bR = valueOrErrorMessage(getInteger(G(A, bg, bJ)), R((((("processVoteINTERNAL " + bH) + " ") + Q) + ": no previous vote")))
539- let bv = valueOrElse(getInteger(this, E(bg, i)), 0)
529+ let bw = valueOrElse(getInteger(O(i)), 0)
530+ let bO = valueOrElse(getInteger(I(A, i)), 0)
531+ let bP = valueOrErrorMessage(getInteger(G(A, be, bH)), R((((("processVoteINTERNAL " + bF) + " ") + Q) + ": no previous vote")))
532+ let bt = valueOrElse(getInteger(this, E(be, i)), 0)
540533 let L = ao(C, D)
541- let bS = valueOrElse(getInteger(K(L, bJ)), 0)
542- let bl = addressFromStringValue(ab(this, p))
543- let bT = valueOrElse(getInteger(bl, P(L, Q)), 0)
544- let bU = if ((bT == 0))
534+ let bQ = valueOrElse(getInteger(K(L, bH)), 0)
535+ let bj = addressFromStringValue(ab(this, p))
536+ let bR = valueOrElse(getInteger(bj, P(L, Q)), 0)
537+ let bS = if ((bR == 0))
545538 then nil
546- else [IntegerEntry(K(L, bJ), (bS + bR))]
547- let bB = if ((bP > 0))
548- then fraction(bR, bz, bP)
539+ else [IntegerEntry(K(L, bH), (bQ + bP))]
540+ let bz = if ((bN > 0))
541+ then fraction(bP, bx, bN)
549542 else 0
550- let bV = if (if ((bB > 0))
551- then bC
543+ let bT = if (if ((bz > 0))
544+ then bA
552545 else false)
553- then [IntegerEntry(G(A, bg, i), bB), IntegerEntry(O(i), (by + bB)), IntegerEntry(I(A, i), (bQ + bB)), IntegerEntry(E(bg, i), (bv + bB))]
554- else aU(aE(A), Q)
555- $Tuple2((bV ++ bU), unit)
546+ then [IntegerEntry(G(A, be, i), bz), IntegerEntry(O(i), (bw + bz)), IntegerEntry(I(A, i), (bO + bz)), IntegerEntry(E(be, i), (bt + bz))]
547+ else aS(aC(A), Q)
548+ $Tuple2((bT ++ bS), unit)
556549 }
557550 else throw("Strict value is not equal to itself.")
558551 }
561554
562555
563556
564-@Callable(bc)
565-func processPoolINTERNAL (bH,bW) = {
566- let bI = bf(bc)
567- if ((bI == bI))
557+@Callable(ba)
558+func processPoolINTERNAL (bF,bU) = {
559+ let bG = bd(ba)
560+ if ((bG == bG))
568561 then {
569- let bX = {
570- let bY = ad(this, j)
571- if (bW)
572- then bY
573- else (bY - 1)
562+ let bV = {
563+ let bW = ad(this, j)
564+ if (bU)
565+ then bW
566+ else (bW - 1)
574567 }
575- let bN = if ((bX >= 0))
568+ let bL = if ((bV >= 0))
576569 then true
577570 else T("processPoolINTERNAL: invalid target epoch")
578- if ((bN == bN))
571+ if ((bL == bL))
579572 then {
580- let A = af(bH)
581- let bZ = A
582- let C = bZ._1
583- let D = bZ._2
584- let bl = addressFromStringValue(ab(this, p))
573+ let A = af(bF)
574+ let bX = A
575+ let C = bX._1
576+ let D = bX._2
577+ let bj = addressFromStringValue(ab(this, p))
585578 let ay = ao(C, D)
586- let ca = {
587- let ac = invoke(bl, "usersListTraversal", [ay], nil)
588- if ($isInstanceOf(ac, "Boolean"))
589- then ac
590- else throw(($getType(ac) + " couldn't be cast to Boolean"))
591- }
592- if ((ca == ca))
593- then if (ca)
594- then $Tuple2(nil, true)
595- else {
596- let bC = az(A)
597- let by = valueOrElse(getInteger(this, O(bX)), 0)
598- let bQ = valueOrElse(getInteger(this, I(A, bX)), 0)
599- let cb = if (if ((by == 0))
600- then true
601- else !(bC))
602- then 0
603- else fraction(bQ, b, by)
604- let cc = invoke(ah, "modifyWeight", [ay, cb], nil)
605- if ((cc == cc))
606- then {
607- let cd = if (if (bC)
608- then true
609- else bW)
610- then nil
611- else ([DeleteEntry(z(A))] ++ aU(aD, bH))
612- $Tuple2(([IntegerEntry(M(A, bX), cb)] ++ cd), false)
613- }
614- else throw("Strict value is not equal to itself.")
615- }
579+ let bA = az(A)
580+ let bw = valueOrElse(getInteger(this, O(bV)), 0)
581+ let bO = valueOrElse(getInteger(this, I(A, bV)), 0)
582+ let bY = if (if ((bw == 0))
583+ then true
584+ else !(bA))
585+ then 0
586+ else fraction(bO, b, bw)
587+ let bZ = invoke(ah, "modifyWeight", [ay, bY], nil)
588+ if ((bZ == bZ))
589+ then {
590+ let ca = if (if (bA)
591+ then true
592+ else bU)
593+ then nil
594+ else ([DeleteEntry(z(A))] ++ aS(aB, bF))
595+ $Tuple2(([IntegerEntry(M(A, bV), bY)] ++ ca), false)
596+ }
616597 else throw("Strict value is not equal to itself.")
617598 }
618599 else throw("Strict value is not equal to itself.")
622603
623604
624605
625-@Callable(bc)
606+@Callable(ba)
626607 func finalizeHelper () = {
627- let bW = valueOrElse(getBoolean(w), false)
608+ let bU = valueOrElse(getBoolean(w), false)
628609 let i = valueOrElse(getInteger(this, j), 0)
629- let ce = (i - 1)
630- let bs = ad(this, x(i))
631- let bm = ad(this, f)
632- let bt = (bs + bm)
633- let bu = getInteger(this, q)
634- if (if (if ((height >= bt))
635- then (bu == unit)
610+ let cb = (i - 1)
611+ let bq = ad(this, x(i))
612+ let bk = ad(this, f)
613+ let br = (bq + bk)
614+ let bs = getInteger(this, q)
615+ if (if (if ((height >= br))
616+ then (bs == unit)
636617 else false)
637- then !(bW)
618+ then !(bU)
638619 else false)
639620 then {
640- let cf = (i + 1)
641- let cg = getInteger(this, g)
642- let ch = {
643- let Y = cg
621+ let cc = (i + 1)
622+ let cd = getInteger(this, g)
623+ let ce = {
624+ let Y = cd
644625 if ($isInstanceOf(Y, "Int"))
645626 then {
646- let bF = Y
647-[IntegerEntry(f, bF), DeleteEntry(g)]
627+ let bD = Y
628+[IntegerEntry(f, bD), DeleteEntry(g)]
648629 }
649630 else if ($isInstanceOf(Y, "Unit"))
650631 then nil
651632 else throw("Match error")
652633 }
653- $Tuple2(([IntegerEntry(x(cf), height), IntegerEntry(t, height), IntegerEntry(j, cf), IntegerEntry(q, d), IntegerEntry(h(i), bm)] ++ ch), true)
634+ $Tuple2(([IntegerEntry(x(cc), height), IntegerEntry(t, height), IntegerEntry(j, cc), IntegerEntry(q, d), IntegerEntry(h(i), bk)] ++ ce), true)
654635 }
655- else if (if (bW)
656- then (bu == unit)
636+ else if (if (bU)
637+ then (bs == unit)
657638 else false)
658639 then $Tuple2([IntegerEntry(q, e)], true)
659- else if ((bu == unit))
640+ else if ((bs == unit))
660641 then $Tuple2(nil, false)
661- else if ((bu == d))
642+ else if ((bs == d))
662643 then {
663- let ci = getString(r)
664- let cj = getString(s)
665- let Y = ci
644+ let cf = getString(r)
645+ let cg = getString(s)
646+ let Y = cf
666647 if ($isInstanceOf(Y, "Unit"))
667648 then {
668- let ck = getString(aG(aD))
669- if ($isInstanceOf(ck, "Unit"))
649+ let ch = getString(aE(aB))
650+ if ($isInstanceOf(ch, "Unit"))
670651 then $Tuple2([IntegerEntry(q, e), DeleteEntry(r), DeleteEntry(s)], true)
671- else if ($isInstanceOf(ck, "String"))
652+ else if ($isInstanceOf(ch, "String"))
672653 then {
673- let cl = ck
674- $Tuple2([StringEntry(r, cl)], true)
654+ let ci = ch
655+ $Tuple2([StringEntry(r, ci)], true)
675656 }
676657 else throw("Match error")
677658 }
678659 else if ($isInstanceOf(Y, "String"))
679660 then {
680- let bH = Y
681- let A = af(bH)
682- let cm = {
683- let ck = cj
684- if ($isInstanceOf(ck, "Unit"))
685- then getString(aG(aE(A)))
686- else if ($isInstanceOf(ck, "String"))
661+ let bF = Y
662+ let A = af(bF)
663+ let cj = {
664+ let ch = cg
665+ if ($isInstanceOf(ch, "Unit"))
666+ then getString(aE(aC(A)))
667+ else if ($isInstanceOf(ch, "String"))
687668 then {
688- let cn = ck
689- let co = getString(aM(aE(A), cn))
690- if ((co == co))
669+ let ck = ch
670+ let cl = getString(aK(aC(A), ck))
671+ if ((cl == cl))
691672 then {
692- let cp = invoke(this, "processVoteINTERNAL", [bH, cn], nil)
693- if ((cp == cp))
694- then co
673+ let cm = invoke(this, "processVoteINTERNAL", [bF, ck], nil)
674+ if ((cm == cm))
675+ then cl
695676 else throw("Strict value is not equal to itself.")
696677 }
697678 else throw("Strict value is not equal to itself.")
698679 }
699680 else throw("Match error")
700681 }
701- let ck = cm
702- if ($isInstanceOf(ck, "Unit"))
682+ let ch = cj
683+ if ($isInstanceOf(ch, "Unit"))
703684 then {
704- let cq = getString(aM(aD, bH))
705- let cr = cq
706- if ($isInstanceOf(cr, "Unit"))
685+ let cn = getString(aK(aB, bF))
686+ let co = cn
687+ if ($isInstanceOf(co, "Unit"))
707688 then $Tuple2([IntegerEntry(q, e), DeleteEntry(r), DeleteEntry(s)], true)
708- else if ($isInstanceOf(cr, "String"))
689+ else if ($isInstanceOf(co, "String"))
709690 then {
710- let aY = cr
711- $Tuple2([StringEntry(r, aY), DeleteEntry(s)], true)
691+ let aW = co
692+ $Tuple2([StringEntry(r, aW), DeleteEntry(s)], true)
712693 }
713694 else throw("Match error")
714695 }
715- else if ($isInstanceOf(ck, "String"))
696+ else if ($isInstanceOf(ch, "String"))
716697 then {
717- let cs = ck
718- $Tuple2([StringEntry(s, cs)], true)
698+ let cp = ch
699+ $Tuple2([StringEntry(s, cp)], true)
719700 }
720701 else throw("Match error")
721702 }
722703 else throw("Match error")
723704 }
724- else if ((bu == e))
705+ else if ((bs == e))
725706 then {
726- let ci = getString(r)
727- let Y = ci
707+ let cf = getString(r)
708+ let Y = cf
728709 if ($isInstanceOf(Y, "Unit"))
729710 then {
730- let ck = getString(aG(aD))
731- if ($isInstanceOf(ck, "Unit"))
711+ let ch = getString(aE(aB))
712+ if ($isInstanceOf(ch, "Unit"))
732713 then {
733- let bV = if (bW)
714+ let bT = if (bU)
734715 then [DeleteEntry(q), DeleteEntry(w)]
735- else [DeleteEntry(q), BooleanEntry(y(ce), true), IntegerEntry(u, i), IntegerEntry(v, bs)]
736- let ct = aB()
737- if ((ct == ct))
738- then $Tuple2(bV, true)
739- else throw("Strict value is not equal to itself.")
716+ else [DeleteEntry(q), BooleanEntry(y(cb), true), IntegerEntry(u, i), IntegerEntry(v, bq)]
717+ $Tuple2(bT, true)
740718 }
741- else if ($isInstanceOf(ck, "String"))
719+ else if ($isInstanceOf(ch, "String"))
742720 then {
743- let cu = ck
744- $Tuple2([StringEntry(r, cu)], true)
721+ let cq = ch
722+ $Tuple2([StringEntry(r, cq)], true)
745723 }
746724 else throw("Match error")
747725 }
748726 else if ($isInstanceOf(Y, "String"))
749727 then {
750- let bH = Y
751- let cq = getString(aM(aD, bH))
752- if ((cq == cq))
728+ let bF = Y
729+ let cn = getString(aK(aB, bF))
730+ if ((cn == cn))
753731 then {
754- let ca = {
755- let ac = invoke(this, "processPoolINTERNAL", [bH, bW], nil)
732+ let cr = {
733+ let ac = invoke(this, "processPoolINTERNAL", [bF, bU], nil)
756734 if ($isInstanceOf(ac, "Boolean"))
757735 then ac
758736 else throw(($getType(ac) + " couldn't be cast to Boolean"))
759737 }
760- if ((ca == ca))
761- then if (ca)
738+ if ((cr == cr))
739+ then if (cr)
762740 then $Tuple2(nil, true)
763741 else {
764- let ck = cq
765- if ($isInstanceOf(ck, "Unit"))
742+ let ch = cn
743+ if ($isInstanceOf(ch, "Unit"))
766744 then {
767- let bV = if (bW)
745+ let bT = if (bU)
768746 then [DeleteEntry(q), DeleteEntry(w), DeleteEntry(r)]
769- else [DeleteEntry(q), BooleanEntry(y(ce), true), IntegerEntry(u, i), IntegerEntry(v, bs), DeleteEntry(r)]
770- let ct = aB()
771- if ((ct == ct))
772- then $Tuple2(bV, true)
773- else throw("Strict value is not equal to itself.")
747+ else [DeleteEntry(q), BooleanEntry(y(cb), true), IntegerEntry(u, i), IntegerEntry(v, bq), DeleteEntry(r)]
748+ $Tuple2(bT, true)
774749 }
775- else if ($isInstanceOf(ck, "String"))
750+ else if ($isInstanceOf(ch, "String"))
776751 then {
777- let cu = ck
778- $Tuple2([StringEntry(r, cu)], true)
752+ let cq = ch
753+ $Tuple2([StringEntry(r, cq)], true)
779754 }
780755 else throw("Match error")
781756 }
790765
791766
792767
793-@Callable(bc)
794-func finalizeWrapper (cv) = {
795- let cw = addressFromStringValue(getStringValue(this, m))
796- let cx = {
768+@Callable(ba)
769+func finalizeWrapper (cs) = {
770+ let ct = addressFromStringValue(getStringValue(this, m))
771+ let cu = {
797772 let ac = invoke(this, "finalizeHelper", nil, nil)
798773 if ($isInstanceOf(ac, "Boolean"))
799774 then ac
800775 else throw(($getType(ac) + " couldn't be cast to Boolean"))
801776 }
802- if ((cx == cx))
803- then if (!(cx))
804- then if ((cv == 0))
777+ if ((cu == cu))
778+ then if (!(cu))
779+ then if ((cs == 0))
805780 then T("Current voting is not over yet")
806781 else {
807- let cy = invoke(cw, "finalize", nil, nil)
808- if ((cy == cy))
782+ let cv = invoke(ct, "finalize", nil, nil)
783+ if ((cv == cv))
809784 then $Tuple2(nil, unit)
810785 else throw("Strict value is not equal to itself.")
811786 }
812787 else {
813- let cz = valueOrElse(getInteger(this, k), c)
814- if ((cz > cv))
788+ let cw = valueOrElse(getInteger(this, k), c)
789+ if ((cw > cs))
815790 then {
816- let cy = invoke(this, "finalizeWrapper", [(cv + 1)], nil)
817- if ((cy == cy))
791+ let cv = invoke(this, "finalizeWrapper", [(cs + 1)], nil)
792+ if ((cv == cv))
818793 then $Tuple2(nil, unit)
819794 else throw("Strict value is not equal to itself.")
820795 }
825800
826801
827802
828-@Callable(bc)
803+@Callable(ba)
829804 func finalize () = {
830- let cy = invoke(this, "finalizeWrapper", [0], nil)
831- if ((cy == cy))
805+ let cv = invoke(this, "finalizeWrapper", [0], nil)
806+ if ((cv == cv))
832807 then $Tuple2(nil, unit)
833808 else throw("Strict value is not equal to itself.")
834809 }
835810
836811
837812
838-@Callable(bc)
839-func containsNodeREADONLY (aH,aL) = $Tuple2(nil, aN(aH, aL))
813+@Callable(ba)
814+func containsNodeREADONLY (aF,aJ) = $Tuple2(nil, aL(aF, aJ))
840815
841816
842817
843-@Callable(bc)
844-func insertNode (aH,aL) = {
845- let bI = be(bc)
846- if ((bI == bI))
847- then $Tuple2(aR(aH, aL), unit)
818+@Callable(ba)
819+func insertNode (aF,aJ) = {
820+ let bG = bc(ba)
821+ if ((bG == bG))
822+ then $Tuple2(aP(aF, aJ), unit)
848823 else throw("Strict value is not equal to itself.")
849824 }
850825
851826
852827
853-@Callable(bc)
854-func deleteNode (aH,aL) = {
855- let bI = be(bc)
856- if ((bI == bI))
857- then $Tuple2(aU(aH, aL), unit)
828+@Callable(ba)
829+func deleteNode (aF,aJ) = {
830+ let bG = bc(ba)
831+ if ((bG == bG))
832+ then $Tuple2(aS(aF, aJ), unit)
858833 else throw("Strict value is not equal to itself.")
859834 }
860835
861836
862837
863-@Callable(bc)
838+@Callable(ba)
864839 func isFinalizationInProgress () = {
865- let bu = getInteger(this, q)
866- let cA = (bu != unit)
867- $Tuple2(nil, cA)
840+ let bs = getInteger(this, q)
841+ let cx = (bs != unit)
842+ $Tuple2(nil, cx)
868843 }
869844
870845
871846
872-@Callable(bc)
847+@Callable(ba)
873848 func deletePool (C,D) = {
874- let bI = if (if ((bc.caller == ah))
849+ let bG = if (if ((ba.caller == ah))
875850 then true
876- else be(bc))
851+ else bc(ba))
877852 then true
878853 else T("Permission denied")
879- if ((bI == bI))
854+ if ((bG == bG))
880855 then {
881- let aH = "pools"
856+ let aF = "pools"
882857 let A = $Tuple2(C, D)
883- let aL = makeString([C, D], a)
884- let bV = if (aN(aH, aL))
885- then aU(aH, aL)
858+ let aJ = makeString([C, D], a)
859+ let bT = if (aL(aF, aJ))
860+ then aS(aF, aJ)
886861 else nil
887- ([DeleteEntry(z(A))] ++ bV)
862+ ([DeleteEntry(z(A))] ++ bT)
888863 }
889864 else throw("Strict value is not equal to itself.")
890865 }
891866
892867
893-@Verifier(cB)
894-func cC () = {
895- let cD = {
896- let Y = aZ()
868+
869+@Callable(ba)
870+func getLockedGwxAmount (Q) = {
871+ let be = valueOrErrorMessage(addressFromString(Q), R("invalid user address"))
872+ let i = valueOrElse(getInteger(this, j), 0)
873+ let cy = {
874+ let Y = getInteger(this, E(be, i))
875+ if ($isInstanceOf(Y, "Unit"))
876+ then 0
877+ else if ($isInstanceOf(Y, "Int"))
878+ then {
879+ let cz = Y
880+ cz
881+ }
882+ else throw("Match error")
883+ }
884+ $Tuple2(nil, cy)
885+ }
886+
887+
888+@Verifier(cA)
889+func cB () = {
890+ let cC = {
891+ let Y = aX()
897892 if ($isInstanceOf(Y, "ByteVector"))
898893 then {
899- let bd = Y
900- bd
894+ let bb = Y
895+ bb
901896 }
902897 else if ($isInstanceOf(Y, "Unit"))
903- then cB.senderPublicKey
898+ then cA.senderPublicKey
904899 else throw("Match error")
905900 }
906- sigVerify(cB.bodyBytes, cB.proofs[0], cD)
901+ sigVerify(cA.bodyBytes, cA.proofs[0], cC)
907902 }
908903
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 100000000
77
88 let c = 10
99
1010 let d = 0
1111
1212 let e = 1
1313
1414 let f = makeString(["%s", "epochLength"], a)
1515
1616 let g = makeString(["%s%s", "epochLength__new"], a)
1717
1818 func h (i) = makeString(["%s%d", "epochLength", toString(i)], a)
1919
2020
2121 let j = makeString(["%s", "currentEpoch"], a)
2222
2323 let k = makeString(["%s", "maxDepth"], a)
2424
2525 let l = makeString(["%s", "votingEmissionCandidateContract"], a)
2626
2727 let m = makeString(["%s", "votingEmissionRateContract"], a)
2828
2929 let n = makeString(["%s", "factoryContract"], a)
3030
3131 let o = makeString(["%s", "boostingContract"], a)
3232
3333 let p = makeString(["%s", "stakingContract"], a)
3434
3535 let q = makeString(["%s", "finalizationStage"], a)
3636
3737 let r = makeString(["%s", "nextPool"], a)
3838
3939 let s = makeString(["%s", "nextUser"], a)
4040
4141 let t = makeString(["%s", "startHeight"], a)
4242
4343 let u = makeString(["%s", "currentEpochUi"], a)
4444
4545 let v = makeString(["%s", "startHeightUi"], a)
4646
4747 let w = makeString(["%s", "force"], a)
4848
4949 func x (i) = makeString(["%s%d", "startHeight", toString(i)], a)
5050
5151
5252 func y (i) = makeString(["%s%d", "finalized", toString(i)], a)
5353
5454
5555 func z (A) = {
5656 let B = A
5757 let C = B._1
5858 let D = B._2
5959 makeString(["%s%s%s", "inList", C, D], a)
6060 }
6161
6262
6363 func E (F,i) = makeString(["%s%s%d", "used", toString(F), toString(i)], a)
6464
6565
6666 func G (A,F,i) = {
6767 let H = A
6868 let C = H._1
6969 let D = H._2
7070 makeString(["%s%s%s%s%d", "vote", C, D, toString(F), toString(i)], a)
7171 }
7272
7373
7474 func I (A,i) = {
7575 let J = A
7676 let C = J._1
7777 let D = J._2
7878 makeString(["%s%s%s%d", "votingResult", C, D, toString(i)], a)
7979 }
8080
8181
8282 func K (L,i) = makeString(["%s%s%d", "votingResultStaked", L, toString(i)], a)
8383
8484
8585 func M (A,i) = {
8686 let N = A
8787 let C = N._1
8888 let D = N._2
8989 makeString(["%s%s%s%d", "poolShare", C, D, toString(i)], a)
9090 }
9191
9292
9393 func O (i) = makeString(["%s%d", "totalVotes", toString(i)], a)
9494
9595
9696 func P (L,Q) = makeString(["%s%s%s", "staked", Q, L], a)
9797
9898
9999 func R (S) = makeString(["voting_emission.ride:", S], " ")
100100
101101
102102 func T (S) = throw(R(S))
103103
104104
105105 func U (F,V,W) = {
106106 let X = R(makeString(["mandatory ", toString(F), ".", V, " is not defined"], ""))
107107 valueOrErrorMessage({
108108 let Y = W
109109 if ($isInstanceOf(Y, "String"))
110110 then {
111111 let Z = Y
112112 getString(F, V)
113113 }
114114 else if ($isInstanceOf(Y, "Int"))
115115 then {
116116 let aa = Y
117117 getInteger(F, V)
118118 }
119119 else T("invalid entry type")
120120 }, X)
121121 }
122122
123123
124124 func ab (F,V) = {
125125 let ac = U(F, V, "")
126126 if ($isInstanceOf(ac, "String"))
127127 then ac
128128 else throw(($getType(ac) + " couldn't be cast to String"))
129129 }
130130
131131
132132 func ad (F,V) = {
133133 let ac = U(F, V, 0)
134134 if ($isInstanceOf(ac, "Int"))
135135 then ac
136136 else throw(($getType(ac) + " couldn't be cast to Int"))
137137 }
138138
139139
140140 func ae (A) = ((A._1 + a) + A._2)
141141
142142
143143 func af (Z) = {
144144 let ag = split(Z, a)
145145 if ((size(ag) == 2))
146146 then $Tuple2(ag[0], ag[1])
147147 else T("invalid pool string")
148148 }
149149
150150
151151 let ah = addressFromStringValue(ab(this, n))
152152
153153 let ai = 10
154154
155155 func aj () = "%s__factoryConfig"
156156
157157
158158 func ak (al) = split(ab(al, aj()), a)
159159
160160
161161 func am (an) = addressFromStringValue(an[ai])
162162
163163
164164 func ao (C,D) = {
165165 func ap (aq) = ("%s%s%s__mappings__baseAsset2internalId__" + aq)
166166
167167 func ar (as,at) = (((("%d%d%s%s__" + toString(as)) + "__") + toString(at)) + "__mappings__poolAssets2PoolContract")
168168
169169 func au (av) = (("%s%s%s__" + av) + "__mappings__poolContract2LpAsset")
170170
171171 let aw = ad(ah, ap(C))
172172 let ax = ad(ah, ap(D))
173173 let av = ab(ah, ar(aw, ax))
174174 let ay = ab(ah, au(av))
175175 ay
176176 }
177177
178178
179179 func az (A) = {
180180 let aA = A
181181 let C = aA._1
182182 let D = aA._2
183183 let ac = invoke(ah, "checkWxEmissionPoolLabel", [C, D], nil)
184184 if ($isInstanceOf(ac, "Boolean"))
185185 then ac
186186 else throw(($getType(ac) + " couldn't be cast to Boolean"))
187187 }
188188
189189
190-func aB () = {
191- let an = ak(ah)
192- let aC = am(an)
193- invoke(aC, "deposit", nil, nil)
194- }
190+let aB = "pools"
195191
196-
197-let aD = "pools"
198-
199-func aE (A) = {
200- let aF = A
201- let C = aF._1
202- let D = aF._2
192+func aC (A) = {
193+ let aD = A
194+ let C = aD._1
195+ let D = aD._2
203196 makeString(["votes", C, D], a)
204197 }
205198
206199
207-func aG (aH) = {
208- let aI = if ((aH == aD))
200+func aE (aF) = {
201+ let aG = if ((aF == aB))
209202 then "%s%s"
210203 else "%s%s%s%s"
211- makeString([aI, aH, "head"], a)
204+ makeString([aG, aF, "head"], a)
212205 }
213206
214207
215-func aJ (aH) = {
216- let aI = if ((aH == aD))
208+func aH (aF) = {
209+ let aG = if ((aF == aB))
217210 then "%s%s"
218211 else "%s%s%s%s"
219- makeString([aI, aH, "size"], a)
212+ makeString([aG, aF, "size"], a)
220213 }
221214
222215
223-func aK (aH,aL) = {
224- let aI = if ((aH == aD))
216+func aI (aF,aJ) = {
217+ let aG = if ((aF == aB))
225218 then "%s%s%s%s"
226219 else "%s%s%s%s%s"
227- makeString([aI, aH, aL, "prev"], a)
220+ makeString([aG, aF, aJ, "prev"], a)
228221 }
229222
230223
231-func aM (aH,aL) = {
232- let aI = if ((aH == aD))
224+func aK (aF,aJ) = {
225+ let aG = if ((aF == aB))
233226 then "%s%s%s%s"
234227 else "%s%s%s%s%s"
235- makeString([aI, aH, aL, "next"], a)
228+ makeString([aG, aF, aJ, "next"], a)
236229 }
237230
238231
239-func aN (aH,aL) = {
240- let aO = getString(this, aG(aH))
241- let aP = getString(this, aK(aH, aL))
242- let aQ = getString(this, aM(aH, aL))
243- if (if ((aL == valueOrElse(aO, "")))
232+func aL (aF,aJ) = {
233+ let aM = getString(this, aE(aF))
234+ let aN = getString(this, aI(aF, aJ))
235+ let aO = getString(this, aK(aF, aJ))
236+ if (if ((aJ == valueOrElse(aM, "")))
244237 then true
245- else (aP != unit))
238+ else (aN != unit))
246239 then true
247- else (aQ != unit)
240+ else (aO != unit)
248241 }
249242
250243
251-func aR (aH,aL) = {
252- let aO = getString(this, aG(aH))
253- let aS = valueOrElse(getInteger(this, aJ(aH)), 0)
254- let aT = if (!(aN(aH, aL)))
244+func aP (aF,aJ) = {
245+ let aM = getString(this, aE(aF))
246+ let aQ = valueOrElse(getInteger(this, aH(aF)), 0)
247+ let aR = if (!(aL(aF, aJ)))
255248 then true
256249 else T("Node exists")
257- if ((aT == aT))
258- then (([IntegerEntry(aJ(aH), (aS + 1))] ++ (if ((aO != unit))
259- then [StringEntry(aM(aH, aL), value(aO)), StringEntry(aK(aH, value(aO)), aL)]
260- else nil)) ++ [StringEntry(aG(aH), aL)])
250+ if ((aR == aR))
251+ then (([IntegerEntry(aH(aF), (aQ + 1))] ++ (if ((aM != unit))
252+ then [StringEntry(aK(aF, aJ), value(aM)), StringEntry(aI(aF, value(aM)), aJ)]
253+ else nil)) ++ [StringEntry(aE(aF), aJ)])
261254 else throw("Strict value is not equal to itself.")
262255 }
263256
264257
265-func aU (aH,aL) = {
266- let aO = getString(this, aG(aH))
267- let aS = valueOrElse(getInteger(this, aJ(aH)), 0)
268- let aP = getString(this, aK(aH, aL))
269- let aQ = getString(this, aM(aH, aL))
270- ([IntegerEntry(aJ(aH), (aS - 1))] ++ (if (if ((aP != unit))
271- then (aQ != unit)
258+func aS (aF,aJ) = {
259+ let aM = getString(this, aE(aF))
260+ let aQ = valueOrElse(getInteger(this, aH(aF)), 0)
261+ let aN = getString(this, aI(aF, aJ))
262+ let aO = getString(this, aK(aF, aJ))
263+ ([IntegerEntry(aH(aF), (aQ - 1))] ++ (if (if ((aN != unit))
264+ then (aO != unit)
272265 else false)
273- then [StringEntry(aM(aH, value(aP)), value(aQ)), StringEntry(aK(aH, value(aQ)), value(aP)), DeleteEntry(aK(aH, aL)), DeleteEntry(aM(aH, aL))]
274- else if ((aQ != unit))
275- then [StringEntry(aG(aH), value(aQ)), DeleteEntry(aM(aH, aL)), DeleteEntry(aK(aH, value(aQ)))]
276- else if ((aP != unit))
277- then [DeleteEntry(aK(aH, aL)), DeleteEntry(aM(aH, value(aP)))]
278- else if ((aL == valueOrElse(aO, "")))
279- then [DeleteEntry(aG(aH))]
280- else T(((("invalid node: " + aH) + ".") + aL))))
266+ then [StringEntry(aK(aF, value(aN)), value(aO)), StringEntry(aI(aF, value(aO)), value(aN)), DeleteEntry(aI(aF, aJ)), DeleteEntry(aK(aF, aJ))]
267+ else if ((aO != unit))
268+ then [StringEntry(aE(aF), value(aO)), DeleteEntry(aK(aF, aJ)), DeleteEntry(aI(aF, value(aO)))]
269+ else if ((aN != unit))
270+ then [DeleteEntry(aI(aF, aJ)), DeleteEntry(aK(aF, value(aN)))]
271+ else if ((aJ == valueOrElse(aM, "")))
272+ then [DeleteEntry(aE(aF))]
273+ else T(((("invalid node: " + aF) + ".") + aJ))))
281274 }
282275
283276
284-func aV () = "%s__managerVaultAddress"
277+func aT () = "%s__managerVaultAddress"
285278
286279
287-func aW () = "%s__managerPublicKey"
280+func aU () = "%s__managerPublicKey"
288281
289282
290-func aX () = {
291- let Y = getString(aV())
283+func aV () = {
284+ let Y = getString(aT())
292285 if ($isInstanceOf(Y, "String"))
293286 then {
294- let aY = Y
295- addressFromStringValue(aY)
287+ let aW = Y
288+ addressFromStringValue(aW)
296289 }
297290 else this
298291 }
299292
300293
301-func aZ () = {
302- let ba = aX()
303- let Y = getString(ba, aW())
294+func aX () = {
295+ let aY = aV()
296+ let Y = getString(aY, aU())
304297 if ($isInstanceOf(Y, "String"))
305298 then {
306- let aY = Y
307- fromBase58String(aY)
299+ let aW = Y
300+ fromBase58String(aW)
308301 }
309302 else if ($isInstanceOf(Y, "Unit"))
310303 then unit
311304 else throw("Match error")
312305 }
313306
314307
315-func bb (bc) = {
316- let Y = aZ()
308+func aZ (ba) = {
309+ let Y = aX()
317310 if ($isInstanceOf(Y, "ByteVector"))
318311 then {
319- let bd = Y
320- (bc.callerPublicKey == bd)
312+ let bb = Y
313+ (ba.callerPublicKey == bb)
321314 }
322315 else if ($isInstanceOf(Y, "Unit"))
323- then (bc.caller == this)
316+ then (ba.caller == this)
324317 else throw("Match error")
325318 }
326319
327320
328-func be (bc) = if (bb(bc))
321+func bc (ba) = if (aZ(ba))
329322 then true
330323 else throw("permission denied")
331324
332325
333-func bf (bc) = if ((bc.caller == this))
326+func bd (ba) = if ((ba.caller == this))
334327 then true
335328 else throw("permission denied")
336329
337330
338-@Callable(bc)
339-func getUserGwxAmountAtHeight (bg,bh) = {
340- let bi = valueOrErrorMessage(addressFromString(ab(this, o)), R("invalid boosting contract address"))
331+@Callable(ba)
332+func getUserGwxAmountAtHeight (be,bf) = {
333+ let bg = valueOrErrorMessage(addressFromString(ab(this, o)), R("invalid boosting contract address"))
341334 $Tuple2(nil, {
342- let ac = invoke(bi, "getUserGwxAmountAtHeightREADONLY", [bg, bh], nil)
335+ let ac = invoke(bg, "getUserGwxAmountAtHeightREADONLY", [be, bf], nil)
343336 if ($isInstanceOf(ac, "Int"))
344337 then ac
345338 else throw(($getType(ac) + " couldn't be cast to Int"))
346339 })
347340 }
348341
349342
350343
351-@Callable(bc)
352-func constructor (ah,bj,bk,bl,bm) = {
353- let bn = [be(bc), if ((addressFromString(ah) != unit))
344+@Callable(ba)
345+func constructor (ah,bh,bi,bj,bk) = {
346+ let bl = [bc(ba), if ((addressFromString(ah) != unit))
354347 then true
355- else "invalid factory contract address", if ((addressFromString(bj) != unit))
348+ else "invalid factory contract address", if ((addressFromString(bh) != unit))
356349 then true
357- else "invalid voting emission candidate contract address", if ((addressFromString(bk) != unit))
350+ else "invalid voting emission candidate contract address", if ((addressFromString(bi) != unit))
358351 then true
359- else "invalid boosting contract address", if ((addressFromString(bl) != unit))
352+ else "invalid boosting contract address", if ((addressFromString(bj) != unit))
360353 then true
361- else "invalid staking contract address", if ((bm > 0))
354+ else "invalid staking contract address", if ((bk > 0))
362355 then true
363356 else T("invalid epoch length")]
364- if ((bn == bn))
365- then $Tuple2([StringEntry(n, ah), StringEntry(l, bj), StringEntry(o, bk), StringEntry(p, bl), IntegerEntry(f, bm)], unit)
357+ if ((bl == bl))
358+ then $Tuple2([StringEntry(n, ah), StringEntry(l, bh), StringEntry(o, bi), StringEntry(p, bj), IntegerEntry(f, bk)], unit)
366359 else throw("Strict value is not equal to itself.")
367360 }
368361
369362
370363
371-@Callable(bc)
364+@Callable(ba)
372365 func create (C,D) = {
373- let bn = [if ((toBase58String(bc.caller.bytes) == valueOrElse(getString(this, l), "")))
366+ let bl = [if ((toBase58String(ba.caller.bytes) == valueOrElse(getString(this, l), "")))
374367 then true
375- else be(bc)]
376- if ((bn == bn))
368+ else bc(ba)]
369+ if ((bl == bl))
377370 then {
378371 let A = $Tuple2(C, D)
379- let bo = ([BooleanEntry(z(A), true)] ++ aR(aD, ae(A)))
380- let bp = (getInteger(this, j) == unit)
381- let bq = if (bp)
372+ let bm = ([BooleanEntry(z(A), true)] ++ aP(aB, ae(A)))
373+ let bn = (getInteger(this, j) == unit)
374+ let bo = if (bn)
382375 then {
383376 let i = 0
384377 [IntegerEntry(j, i), IntegerEntry(x(i), height), IntegerEntry(t, height), IntegerEntry(u, i), IntegerEntry(v, height)]
385378 }
386379 else nil
387- $Tuple2((bo ++ bq), unit)
380+ $Tuple2((bm ++ bo), unit)
388381 }
389382 else throw("Strict value is not equal to itself.")
390383 }
391384
392385
393386
394-@Callable(bc)
395-func vote (C,D,br) = {
387+@Callable(ba)
388+func vote (C,D,bp) = {
396389 let A = $Tuple2(C, D)
397390 let i = valueOrElse(getInteger(this, j), 0)
398- let bs = ad(this, x(i))
399- let bm = ad(this, f)
400- let bt = (bs + bm)
401- let bu = getInteger(this, q)
402- let bv = valueOrElse(getInteger(this, E(bc.caller, i)), 0)
403- let bw = valueOrElse(getInteger(this, G(A, bc.caller, i)), 0)
404- let bx = valueOrElse(getInteger(this, I(A, i)), 0)
405- let by = valueOrElse(getInteger(this, O(i)), 0)
406- let bz = {
407- let ac = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(bc.caller.bytes), bt], nil)
391+ let bq = ad(this, x(i))
392+ let bk = ad(this, f)
393+ let br = (bq + bk)
394+ let bs = getInteger(this, q)
395+ let bt = valueOrElse(getInteger(this, E(ba.caller, i)), 0)
396+ let bu = valueOrElse(getInteger(this, G(A, ba.caller, i)), 0)
397+ let bv = valueOrElse(getInteger(this, I(A, i)), 0)
398+ let bw = valueOrElse(getInteger(this, O(i)), 0)
399+ let bx = {
400+ let ac = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(ba.caller.bytes), br], nil)
408401 if ($isInstanceOf(ac, "Int"))
409402 then ac
410403 else throw(($getType(ac) + " couldn't be cast to Int"))
411404 }
412- let bA = (bz - bv)
413- let bB = (bw + br)
414- let bC = az(A)
415- let bn = [if ((getBoolean(z(A)) != unit))
405+ let by = (bx - bt)
406+ let bz = (bu + bp)
407+ let bA = az(A)
408+ let bl = [if ((getBoolean(z(A)) != unit))
416409 then true
417- else T("invalid assets"), if ((bt > height))
410+ else T("invalid assets"), if ((br > height))
418411 then true
419- else T("invalid height"), if ((bu == unit))
412+ else T("invalid height"), if ((bs == unit))
420413 then true
421- else T("finalization in progress"), if ((bz > 0))
414+ else T("finalization in progress"), if ((bx > 0))
422415 then true
423- else T("you do not have gWX"), if (if ((br > 0))
424- then (bA >= br)
416+ else T("you do not have gWX"), if (if ((bp > 0))
417+ then (by >= bp)
425418 else false)
426419 then true
427- else T("invalid amount"), if (bC)
420+ else T("invalid amount"), if (bA)
428421 then true
429422 else T("pool hasn't WX_EMISSION label")]
430- if ((bn == bn))
423+ if ((bl == bl))
431424 then {
432- let bD = aE(A)
433- let Q = toString(bc.caller)
434- let bE = if (aN(bD, Q))
425+ let bB = aC(A)
426+ let Q = toString(ba.caller)
427+ let bC = if (aL(bB, Q))
435428 then nil
436- else aR(bD, Q)
437- $Tuple2(([IntegerEntry(E(bc.caller, i), (bv + br)), IntegerEntry(G(A, bc.caller, i), bB), IntegerEntry(I(A, i), (bx + br)), IntegerEntry(O(i), (by + br))] ++ bE), unit)
429+ else aP(bB, Q)
430+ $Tuple2(([IntegerEntry(E(ba.caller, i), (bt + bp)), IntegerEntry(G(A, ba.caller, i), bz), IntegerEntry(I(A, i), (bv + bp)), IntegerEntry(O(i), (bw + bp))] ++ bC), unit)
438431 }
439432 else throw("Strict value is not equal to itself.")
440433 }
441434
442435
443436
444-@Callable(bc)
437+@Callable(ba)
445438 func cancelVote (C,D) = {
446439 let A = $Tuple2(C, D)
447440 let i = valueOrElse(getInteger(this, j), 0)
448- let bs = ad(this, x(i))
449- let bm = ad(this, f)
450- let bt = (bs + bm)
451- let bu = getInteger(this, q)
452- let bv = valueOrElse(getInteger(this, E(bc.caller, i)), 0)
453- let bw = valueOrElse(getInteger(this, G(A, bc.caller, i)), 0)
454- let bx = valueOrElse(getInteger(this, I(A, i)), 0)
455- let by = valueOrElse(getInteger(this, O(i)), 0)
456- let bn = [if ((getBoolean(z(A)) != unit))
441+ let bq = ad(this, x(i))
442+ let bk = ad(this, f)
443+ let br = (bq + bk)
444+ let bs = getInteger(this, q)
445+ let bt = valueOrElse(getInteger(this, E(ba.caller, i)), 0)
446+ let bu = valueOrElse(getInteger(this, G(A, ba.caller, i)), 0)
447+ let bv = valueOrElse(getInteger(this, I(A, i)), 0)
448+ let bw = valueOrElse(getInteger(this, O(i)), 0)
449+ let bl = [if ((getBoolean(z(A)) != unit))
457450 then true
458- else T("invalid assets"), if ((bt > height))
451+ else T("invalid assets"), if ((br > height))
459452 then true
460- else T("invalid height"), if ((bu == unit))
453+ else T("invalid height"), if ((bs == unit))
461454 then true
462- else T("finalization in progress"), if ((bw > 0))
455+ else T("finalization in progress"), if ((bu > 0))
463456 then true
464457 else T("no vote")]
465- if ((bn == bn))
458+ if ((bl == bl))
466459 then {
467- let bD = aE(A)
468- let Q = toString(bc.caller)
469- $Tuple2(([IntegerEntry(E(bc.caller, i), max([(bv - bw), 0])), DeleteEntry(G(A, bc.caller, i)), IntegerEntry(I(A, i), (bx - bw)), IntegerEntry(O(i), (by - bw))] ++ aU(bD, Q)), unit)
460+ let bB = aC(A)
461+ let Q = toString(ba.caller)
462+ $Tuple2(([IntegerEntry(E(ba.caller, i), max([(bt - bu), 0])), DeleteEntry(G(A, ba.caller, i)), IntegerEntry(I(A, i), (bv - bu)), IntegerEntry(O(i), (bw - bu))] ++ aS(bB, Q)), unit)
470463 }
471464 else throw("Strict value is not equal to itself.")
472465 }
473466
474467
475468
476-@Callable(bc)
477-func setEpochLength (bF) = {
478- let bn = [be(bc), if ((bF > 0))
469+@Callable(ba)
470+func setEpochLength (bD) = {
471+ let bl = [bc(ba), if ((bD > 0))
479472 then true
480473 else T("invalid epoch length")]
481- if ((bn == bn))
482- then $Tuple2([IntegerEntry(g, bF)], unit)
474+ if ((bl == bl))
475+ then $Tuple2([IntegerEntry(g, bD)], unit)
483476 else throw("Strict value is not equal to itself.")
484477 }
485478
486479
487480
488-@Callable(bc)
489-func setMaxDepth (bG) = {
490- let bn = [be(bc), if ((bG > 0))
481+@Callable(ba)
482+func setMaxDepth (bE) = {
483+ let bl = [bc(ba), if ((bE > 0))
491484 then true
492485 else T("invalid max depth")]
493- if ((bn == bn))
494- then $Tuple2([IntegerEntry(k, bG)], unit)
486+ if ((bl == bl))
487+ then $Tuple2([IntegerEntry(k, bE)], unit)
495488 else throw("Strict value is not equal to itself.")
496489 }
497490
498491
499492
500-@Callable(bc)
501-func processVoteINTERNAL (bH,Q) = {
502- let bI = bf(bc)
503- if ((bI == bI))
493+@Callable(ba)
494+func processVoteINTERNAL (bF,Q) = {
495+ let bG = bd(ba)
496+ if ((bG == bG))
504497 then {
505- let bg = valueOrErrorMessage(addressFromString(Q), R(("processVoteINTERNAL: invalid user address " + Q)))
498+ let be = valueOrErrorMessage(addressFromString(Q), R(("processVoteINTERNAL: invalid user address " + Q)))
506499 let i = ad(this, j)
507- let bJ = (i - 1)
508- let bm = ad(this, f)
509- let bs = ad(this, x(i))
510- let bt = (bs + bm)
511- let bK = ad(this, x(bJ))
512- let bL = ad(this, h(bJ))
513- let bM = (bK + bL)
514- let bN = if ((bJ >= 0))
500+ let bH = (i - 1)
501+ let bk = ad(this, f)
502+ let bq = ad(this, x(i))
503+ let br = (bq + bk)
504+ let bI = ad(this, x(bH))
505+ let bJ = ad(this, h(bH))
506+ let bK = (bI + bJ)
507+ let bL = if ((bH >= 0))
515508 then true
516509 else T("processVoteINTERNAL: invalid previous epoch")
517- if ((bN == bN))
510+ if ((bL == bL))
518511 then {
519- let A = af(bH)
520- let bO = A
521- let C = bO._1
522- let D = bO._2
523- let bC = az(A)
524- let bz = {
525- let ac = invoke(this, "getUserGwxAmountAtHeight", [Q, bt], nil)
512+ let A = af(bF)
513+ let bM = A
514+ let C = bM._1
515+ let D = bM._2
516+ let bA = az(A)
517+ let bx = {
518+ let ac = invoke(this, "getUserGwxAmountAtHeight", [Q, br], nil)
526519 if ($isInstanceOf(ac, "Int"))
527520 then ac
528521 else throw(($getType(ac) + " couldn't be cast to Int"))
529522 }
530- let bP = {
531- let ac = invoke(this, "getUserGwxAmountAtHeight", [Q, bM], nil)
523+ let bN = {
524+ let ac = invoke(this, "getUserGwxAmountAtHeight", [Q, bK], nil)
532525 if ($isInstanceOf(ac, "Int"))
533526 then ac
534527 else throw(($getType(ac) + " couldn't be cast to Int"))
535528 }
536- let by = valueOrElse(getInteger(O(i)), 0)
537- let bQ = valueOrElse(getInteger(I(A, i)), 0)
538- let bR = valueOrErrorMessage(getInteger(G(A, bg, bJ)), R((((("processVoteINTERNAL " + bH) + " ") + Q) + ": no previous vote")))
539- let bv = valueOrElse(getInteger(this, E(bg, i)), 0)
529+ let bw = valueOrElse(getInteger(O(i)), 0)
530+ let bO = valueOrElse(getInteger(I(A, i)), 0)
531+ let bP = valueOrErrorMessage(getInteger(G(A, be, bH)), R((((("processVoteINTERNAL " + bF) + " ") + Q) + ": no previous vote")))
532+ let bt = valueOrElse(getInteger(this, E(be, i)), 0)
540533 let L = ao(C, D)
541- let bS = valueOrElse(getInteger(K(L, bJ)), 0)
542- let bl = addressFromStringValue(ab(this, p))
543- let bT = valueOrElse(getInteger(bl, P(L, Q)), 0)
544- let bU = if ((bT == 0))
534+ let bQ = valueOrElse(getInteger(K(L, bH)), 0)
535+ let bj = addressFromStringValue(ab(this, p))
536+ let bR = valueOrElse(getInteger(bj, P(L, Q)), 0)
537+ let bS = if ((bR == 0))
545538 then nil
546- else [IntegerEntry(K(L, bJ), (bS + bR))]
547- let bB = if ((bP > 0))
548- then fraction(bR, bz, bP)
539+ else [IntegerEntry(K(L, bH), (bQ + bP))]
540+ let bz = if ((bN > 0))
541+ then fraction(bP, bx, bN)
549542 else 0
550- let bV = if (if ((bB > 0))
551- then bC
543+ let bT = if (if ((bz > 0))
544+ then bA
552545 else false)
553- then [IntegerEntry(G(A, bg, i), bB), IntegerEntry(O(i), (by + bB)), IntegerEntry(I(A, i), (bQ + bB)), IntegerEntry(E(bg, i), (bv + bB))]
554- else aU(aE(A), Q)
555- $Tuple2((bV ++ bU), unit)
546+ then [IntegerEntry(G(A, be, i), bz), IntegerEntry(O(i), (bw + bz)), IntegerEntry(I(A, i), (bO + bz)), IntegerEntry(E(be, i), (bt + bz))]
547+ else aS(aC(A), Q)
548+ $Tuple2((bT ++ bS), unit)
556549 }
557550 else throw("Strict value is not equal to itself.")
558551 }
559552 else throw("Strict value is not equal to itself.")
560553 }
561554
562555
563556
564-@Callable(bc)
565-func processPoolINTERNAL (bH,bW) = {
566- let bI = bf(bc)
567- if ((bI == bI))
557+@Callable(ba)
558+func processPoolINTERNAL (bF,bU) = {
559+ let bG = bd(ba)
560+ if ((bG == bG))
568561 then {
569- let bX = {
570- let bY = ad(this, j)
571- if (bW)
572- then bY
573- else (bY - 1)
562+ let bV = {
563+ let bW = ad(this, j)
564+ if (bU)
565+ then bW
566+ else (bW - 1)
574567 }
575- let bN = if ((bX >= 0))
568+ let bL = if ((bV >= 0))
576569 then true
577570 else T("processPoolINTERNAL: invalid target epoch")
578- if ((bN == bN))
571+ if ((bL == bL))
579572 then {
580- let A = af(bH)
581- let bZ = A
582- let C = bZ._1
583- let D = bZ._2
584- let bl = addressFromStringValue(ab(this, p))
573+ let A = af(bF)
574+ let bX = A
575+ let C = bX._1
576+ let D = bX._2
577+ let bj = addressFromStringValue(ab(this, p))
585578 let ay = ao(C, D)
586- let ca = {
587- let ac = invoke(bl, "usersListTraversal", [ay], nil)
588- if ($isInstanceOf(ac, "Boolean"))
589- then ac
590- else throw(($getType(ac) + " couldn't be cast to Boolean"))
591- }
592- if ((ca == ca))
593- then if (ca)
594- then $Tuple2(nil, true)
595- else {
596- let bC = az(A)
597- let by = valueOrElse(getInteger(this, O(bX)), 0)
598- let bQ = valueOrElse(getInteger(this, I(A, bX)), 0)
599- let cb = if (if ((by == 0))
600- then true
601- else !(bC))
602- then 0
603- else fraction(bQ, b, by)
604- let cc = invoke(ah, "modifyWeight", [ay, cb], nil)
605- if ((cc == cc))
606- then {
607- let cd = if (if (bC)
608- then true
609- else bW)
610- then nil
611- else ([DeleteEntry(z(A))] ++ aU(aD, bH))
612- $Tuple2(([IntegerEntry(M(A, bX), cb)] ++ cd), false)
613- }
614- else throw("Strict value is not equal to itself.")
615- }
579+ let bA = az(A)
580+ let bw = valueOrElse(getInteger(this, O(bV)), 0)
581+ let bO = valueOrElse(getInteger(this, I(A, bV)), 0)
582+ let bY = if (if ((bw == 0))
583+ then true
584+ else !(bA))
585+ then 0
586+ else fraction(bO, b, bw)
587+ let bZ = invoke(ah, "modifyWeight", [ay, bY], nil)
588+ if ((bZ == bZ))
589+ then {
590+ let ca = if (if (bA)
591+ then true
592+ else bU)
593+ then nil
594+ else ([DeleteEntry(z(A))] ++ aS(aB, bF))
595+ $Tuple2(([IntegerEntry(M(A, bV), bY)] ++ ca), false)
596+ }
616597 else throw("Strict value is not equal to itself.")
617598 }
618599 else throw("Strict value is not equal to itself.")
619600 }
620601 else throw("Strict value is not equal to itself.")
621602 }
622603
623604
624605
625-@Callable(bc)
606+@Callable(ba)
626607 func finalizeHelper () = {
627- let bW = valueOrElse(getBoolean(w), false)
608+ let bU = valueOrElse(getBoolean(w), false)
628609 let i = valueOrElse(getInteger(this, j), 0)
629- let ce = (i - 1)
630- let bs = ad(this, x(i))
631- let bm = ad(this, f)
632- let bt = (bs + bm)
633- let bu = getInteger(this, q)
634- if (if (if ((height >= bt))
635- then (bu == unit)
610+ let cb = (i - 1)
611+ let bq = ad(this, x(i))
612+ let bk = ad(this, f)
613+ let br = (bq + bk)
614+ let bs = getInteger(this, q)
615+ if (if (if ((height >= br))
616+ then (bs == unit)
636617 else false)
637- then !(bW)
618+ then !(bU)
638619 else false)
639620 then {
640- let cf = (i + 1)
641- let cg = getInteger(this, g)
642- let ch = {
643- let Y = cg
621+ let cc = (i + 1)
622+ let cd = getInteger(this, g)
623+ let ce = {
624+ let Y = cd
644625 if ($isInstanceOf(Y, "Int"))
645626 then {
646- let bF = Y
647-[IntegerEntry(f, bF), DeleteEntry(g)]
627+ let bD = Y
628+[IntegerEntry(f, bD), DeleteEntry(g)]
648629 }
649630 else if ($isInstanceOf(Y, "Unit"))
650631 then nil
651632 else throw("Match error")
652633 }
653- $Tuple2(([IntegerEntry(x(cf), height), IntegerEntry(t, height), IntegerEntry(j, cf), IntegerEntry(q, d), IntegerEntry(h(i), bm)] ++ ch), true)
634+ $Tuple2(([IntegerEntry(x(cc), height), IntegerEntry(t, height), IntegerEntry(j, cc), IntegerEntry(q, d), IntegerEntry(h(i), bk)] ++ ce), true)
654635 }
655- else if (if (bW)
656- then (bu == unit)
636+ else if (if (bU)
637+ then (bs == unit)
657638 else false)
658639 then $Tuple2([IntegerEntry(q, e)], true)
659- else if ((bu == unit))
640+ else if ((bs == unit))
660641 then $Tuple2(nil, false)
661- else if ((bu == d))
642+ else if ((bs == d))
662643 then {
663- let ci = getString(r)
664- let cj = getString(s)
665- let Y = ci
644+ let cf = getString(r)
645+ let cg = getString(s)
646+ let Y = cf
666647 if ($isInstanceOf(Y, "Unit"))
667648 then {
668- let ck = getString(aG(aD))
669- if ($isInstanceOf(ck, "Unit"))
649+ let ch = getString(aE(aB))
650+ if ($isInstanceOf(ch, "Unit"))
670651 then $Tuple2([IntegerEntry(q, e), DeleteEntry(r), DeleteEntry(s)], true)
671- else if ($isInstanceOf(ck, "String"))
652+ else if ($isInstanceOf(ch, "String"))
672653 then {
673- let cl = ck
674- $Tuple2([StringEntry(r, cl)], true)
654+ let ci = ch
655+ $Tuple2([StringEntry(r, ci)], true)
675656 }
676657 else throw("Match error")
677658 }
678659 else if ($isInstanceOf(Y, "String"))
679660 then {
680- let bH = Y
681- let A = af(bH)
682- let cm = {
683- let ck = cj
684- if ($isInstanceOf(ck, "Unit"))
685- then getString(aG(aE(A)))
686- else if ($isInstanceOf(ck, "String"))
661+ let bF = Y
662+ let A = af(bF)
663+ let cj = {
664+ let ch = cg
665+ if ($isInstanceOf(ch, "Unit"))
666+ then getString(aE(aC(A)))
667+ else if ($isInstanceOf(ch, "String"))
687668 then {
688- let cn = ck
689- let co = getString(aM(aE(A), cn))
690- if ((co == co))
669+ let ck = ch
670+ let cl = getString(aK(aC(A), ck))
671+ if ((cl == cl))
691672 then {
692- let cp = invoke(this, "processVoteINTERNAL", [bH, cn], nil)
693- if ((cp == cp))
694- then co
673+ let cm = invoke(this, "processVoteINTERNAL", [bF, ck], nil)
674+ if ((cm == cm))
675+ then cl
695676 else throw("Strict value is not equal to itself.")
696677 }
697678 else throw("Strict value is not equal to itself.")
698679 }
699680 else throw("Match error")
700681 }
701- let ck = cm
702- if ($isInstanceOf(ck, "Unit"))
682+ let ch = cj
683+ if ($isInstanceOf(ch, "Unit"))
703684 then {
704- let cq = getString(aM(aD, bH))
705- let cr = cq
706- if ($isInstanceOf(cr, "Unit"))
685+ let cn = getString(aK(aB, bF))
686+ let co = cn
687+ if ($isInstanceOf(co, "Unit"))
707688 then $Tuple2([IntegerEntry(q, e), DeleteEntry(r), DeleteEntry(s)], true)
708- else if ($isInstanceOf(cr, "String"))
689+ else if ($isInstanceOf(co, "String"))
709690 then {
710- let aY = cr
711- $Tuple2([StringEntry(r, aY), DeleteEntry(s)], true)
691+ let aW = co
692+ $Tuple2([StringEntry(r, aW), DeleteEntry(s)], true)
712693 }
713694 else throw("Match error")
714695 }
715- else if ($isInstanceOf(ck, "String"))
696+ else if ($isInstanceOf(ch, "String"))
716697 then {
717- let cs = ck
718- $Tuple2([StringEntry(s, cs)], true)
698+ let cp = ch
699+ $Tuple2([StringEntry(s, cp)], true)
719700 }
720701 else throw("Match error")
721702 }
722703 else throw("Match error")
723704 }
724- else if ((bu == e))
705+ else if ((bs == e))
725706 then {
726- let ci = getString(r)
727- let Y = ci
707+ let cf = getString(r)
708+ let Y = cf
728709 if ($isInstanceOf(Y, "Unit"))
729710 then {
730- let ck = getString(aG(aD))
731- if ($isInstanceOf(ck, "Unit"))
711+ let ch = getString(aE(aB))
712+ if ($isInstanceOf(ch, "Unit"))
732713 then {
733- let bV = if (bW)
714+ let bT = if (bU)
734715 then [DeleteEntry(q), DeleteEntry(w)]
735- else [DeleteEntry(q), BooleanEntry(y(ce), true), IntegerEntry(u, i), IntegerEntry(v, bs)]
736- let ct = aB()
737- if ((ct == ct))
738- then $Tuple2(bV, true)
739- else throw("Strict value is not equal to itself.")
716+ else [DeleteEntry(q), BooleanEntry(y(cb), true), IntegerEntry(u, i), IntegerEntry(v, bq)]
717+ $Tuple2(bT, true)
740718 }
741- else if ($isInstanceOf(ck, "String"))
719+ else if ($isInstanceOf(ch, "String"))
742720 then {
743- let cu = ck
744- $Tuple2([StringEntry(r, cu)], true)
721+ let cq = ch
722+ $Tuple2([StringEntry(r, cq)], true)
745723 }
746724 else throw("Match error")
747725 }
748726 else if ($isInstanceOf(Y, "String"))
749727 then {
750- let bH = Y
751- let cq = getString(aM(aD, bH))
752- if ((cq == cq))
728+ let bF = Y
729+ let cn = getString(aK(aB, bF))
730+ if ((cn == cn))
753731 then {
754- let ca = {
755- let ac = invoke(this, "processPoolINTERNAL", [bH, bW], nil)
732+ let cr = {
733+ let ac = invoke(this, "processPoolINTERNAL", [bF, bU], nil)
756734 if ($isInstanceOf(ac, "Boolean"))
757735 then ac
758736 else throw(($getType(ac) + " couldn't be cast to Boolean"))
759737 }
760- if ((ca == ca))
761- then if (ca)
738+ if ((cr == cr))
739+ then if (cr)
762740 then $Tuple2(nil, true)
763741 else {
764- let ck = cq
765- if ($isInstanceOf(ck, "Unit"))
742+ let ch = cn
743+ if ($isInstanceOf(ch, "Unit"))
766744 then {
767- let bV = if (bW)
745+ let bT = if (bU)
768746 then [DeleteEntry(q), DeleteEntry(w), DeleteEntry(r)]
769- else [DeleteEntry(q), BooleanEntry(y(ce), true), IntegerEntry(u, i), IntegerEntry(v, bs), DeleteEntry(r)]
770- let ct = aB()
771- if ((ct == ct))
772- then $Tuple2(bV, true)
773- else throw("Strict value is not equal to itself.")
747+ else [DeleteEntry(q), BooleanEntry(y(cb), true), IntegerEntry(u, i), IntegerEntry(v, bq), DeleteEntry(r)]
748+ $Tuple2(bT, true)
774749 }
775- else if ($isInstanceOf(ck, "String"))
750+ else if ($isInstanceOf(ch, "String"))
776751 then {
777- let cu = ck
778- $Tuple2([StringEntry(r, cu)], true)
752+ let cq = ch
753+ $Tuple2([StringEntry(r, cq)], true)
779754 }
780755 else throw("Match error")
781756 }
782757 else throw("Strict value is not equal to itself.")
783758 }
784759 else throw("Strict value is not equal to itself.")
785760 }
786761 else throw("Match error")
787762 }
788763 else T("finalization is broken")
789764 }
790765
791766
792767
793-@Callable(bc)
794-func finalizeWrapper (cv) = {
795- let cw = addressFromStringValue(getStringValue(this, m))
796- let cx = {
768+@Callable(ba)
769+func finalizeWrapper (cs) = {
770+ let ct = addressFromStringValue(getStringValue(this, m))
771+ let cu = {
797772 let ac = invoke(this, "finalizeHelper", nil, nil)
798773 if ($isInstanceOf(ac, "Boolean"))
799774 then ac
800775 else throw(($getType(ac) + " couldn't be cast to Boolean"))
801776 }
802- if ((cx == cx))
803- then if (!(cx))
804- then if ((cv == 0))
777+ if ((cu == cu))
778+ then if (!(cu))
779+ then if ((cs == 0))
805780 then T("Current voting is not over yet")
806781 else {
807- let cy = invoke(cw, "finalize", nil, nil)
808- if ((cy == cy))
782+ let cv = invoke(ct, "finalize", nil, nil)
783+ if ((cv == cv))
809784 then $Tuple2(nil, unit)
810785 else throw("Strict value is not equal to itself.")
811786 }
812787 else {
813- let cz = valueOrElse(getInteger(this, k), c)
814- if ((cz > cv))
788+ let cw = valueOrElse(getInteger(this, k), c)
789+ if ((cw > cs))
815790 then {
816- let cy = invoke(this, "finalizeWrapper", [(cv + 1)], nil)
817- if ((cy == cy))
791+ let cv = invoke(this, "finalizeWrapper", [(cs + 1)], nil)
792+ if ((cv == cv))
818793 then $Tuple2(nil, unit)
819794 else throw("Strict value is not equal to itself.")
820795 }
821796 else $Tuple2(nil, unit)
822797 }
823798 else throw("Strict value is not equal to itself.")
824799 }
825800
826801
827802
828-@Callable(bc)
803+@Callable(ba)
829804 func finalize () = {
830- let cy = invoke(this, "finalizeWrapper", [0], nil)
831- if ((cy == cy))
805+ let cv = invoke(this, "finalizeWrapper", [0], nil)
806+ if ((cv == cv))
832807 then $Tuple2(nil, unit)
833808 else throw("Strict value is not equal to itself.")
834809 }
835810
836811
837812
838-@Callable(bc)
839-func containsNodeREADONLY (aH,aL) = $Tuple2(nil, aN(aH, aL))
813+@Callable(ba)
814+func containsNodeREADONLY (aF,aJ) = $Tuple2(nil, aL(aF, aJ))
840815
841816
842817
843-@Callable(bc)
844-func insertNode (aH,aL) = {
845- let bI = be(bc)
846- if ((bI == bI))
847- then $Tuple2(aR(aH, aL), unit)
818+@Callable(ba)
819+func insertNode (aF,aJ) = {
820+ let bG = bc(ba)
821+ if ((bG == bG))
822+ then $Tuple2(aP(aF, aJ), unit)
848823 else throw("Strict value is not equal to itself.")
849824 }
850825
851826
852827
853-@Callable(bc)
854-func deleteNode (aH,aL) = {
855- let bI = be(bc)
856- if ((bI == bI))
857- then $Tuple2(aU(aH, aL), unit)
828+@Callable(ba)
829+func deleteNode (aF,aJ) = {
830+ let bG = bc(ba)
831+ if ((bG == bG))
832+ then $Tuple2(aS(aF, aJ), unit)
858833 else throw("Strict value is not equal to itself.")
859834 }
860835
861836
862837
863-@Callable(bc)
838+@Callable(ba)
864839 func isFinalizationInProgress () = {
865- let bu = getInteger(this, q)
866- let cA = (bu != unit)
867- $Tuple2(nil, cA)
840+ let bs = getInteger(this, q)
841+ let cx = (bs != unit)
842+ $Tuple2(nil, cx)
868843 }
869844
870845
871846
872-@Callable(bc)
847+@Callable(ba)
873848 func deletePool (C,D) = {
874- let bI = if (if ((bc.caller == ah))
849+ let bG = if (if ((ba.caller == ah))
875850 then true
876- else be(bc))
851+ else bc(ba))
877852 then true
878853 else T("Permission denied")
879- if ((bI == bI))
854+ if ((bG == bG))
880855 then {
881- let aH = "pools"
856+ let aF = "pools"
882857 let A = $Tuple2(C, D)
883- let aL = makeString([C, D], a)
884- let bV = if (aN(aH, aL))
885- then aU(aH, aL)
858+ let aJ = makeString([C, D], a)
859+ let bT = if (aL(aF, aJ))
860+ then aS(aF, aJ)
886861 else nil
887- ([DeleteEntry(z(A))] ++ bV)
862+ ([DeleteEntry(z(A))] ++ bT)
888863 }
889864 else throw("Strict value is not equal to itself.")
890865 }
891866
892867
893-@Verifier(cB)
894-func cC () = {
895- let cD = {
896- let Y = aZ()
868+
869+@Callable(ba)
870+func getLockedGwxAmount (Q) = {
871+ let be = valueOrErrorMessage(addressFromString(Q), R("invalid user address"))
872+ let i = valueOrElse(getInteger(this, j), 0)
873+ let cy = {
874+ let Y = getInteger(this, E(be, i))
875+ if ($isInstanceOf(Y, "Unit"))
876+ then 0
877+ else if ($isInstanceOf(Y, "Int"))
878+ then {
879+ let cz = Y
880+ cz
881+ }
882+ else throw("Match error")
883+ }
884+ $Tuple2(nil, cy)
885+ }
886+
887+
888+@Verifier(cA)
889+func cB () = {
890+ let cC = {
891+ let Y = aX()
897892 if ($isInstanceOf(Y, "ByteVector"))
898893 then {
899- let bd = Y
900- bd
894+ let bb = Y
895+ bb
901896 }
902897 else if ($isInstanceOf(Y, "Unit"))
903- then cB.senderPublicKey
898+ then cA.senderPublicKey
904899 else throw("Match error")
905900 }
906- sigVerify(cB.bodyBytes, cB.proofs[0], cD)
901+ sigVerify(cA.bodyBytes, cA.proofs[0], cC)
907902 }
908903

github/deemru/w8io/169f3d6 
272.09 ms