tx · BiJNx6Hva7vMyef9rFF1c7Sdf61hGefjSV28PPDGNb4c 3NAsFvuLwxz1iUtZ9fmhfmSN16r9NEsPqsh: -0.02500000 Waves 2022.10.17 18:22 [2276551] smart account 3NAsFvuLwxz1iUtZ9fmhfmSN16r9NEsPqsh > SELF 0.00000000 Waves
{ "type": 13, "id": "BiJNx6Hva7vMyef9rFF1c7Sdf61hGefjSV28PPDGNb4c", "fee": 2500000, "feeAssetId": null, "timestamp": 1666020140450, "version": 1, "sender": "3NAsFvuLwxz1iUtZ9fmhfmSN16r9NEsPqsh", "senderPublicKey": "33fpjdpM9FMu87RZKePniPardKqQXM96sm7VhAk3JEVQ", "proofs": [ "4d5xUebGEvKuEozwH5vSCYi1ZMzjUgsgJN8NvjnNeWoE58k2WMNze4bqTfPDjKwqhXunx4BU9X6kW91KX7sH4NHu" ], "script": "base64:BgJdCAISBQoDCAgEEgUKAwgYARIHCgURCBgBARIGCgQICAgIEgYKBAgICAISBQoDCAgEEgYKBAgIAQESBAoCCBgSAwoBCBIAEgQKAggIEgMKAQgSBAoCCAgSAwoBCBIAHgAJc2VwYXJhdG9yAgJfXwEMa2V5V3hBc3NldElkAAkAuQkCCQDMCAICAiVzCQDMCAICCXd4QXNzZXRJZAUDbmlsBQlzZXBhcmF0b3IAE2tleUJhY2tlbmRQdWJsaWNLZXkJALkJAgkAzAgCAgIlcwkAzAgCAhBiYWNrZW5kUHVibGljS2V5BQNuaWwFCXNlcGFyYXRvcgEba2V5RXhpc3RzUmVmZXJyZXJUb1JlZmVycmFsAwtwcm9ncmFtTmFtZQ9yZWZlcnJlckFkZHJlc3MPcmVmZXJyYWxBZGRyZXNzCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgIYZXhpc3RzUmVmZXJyZXJUb1JlZmVycmFsCQDMCAIFC3Byb2dyYW1OYW1lCQDMCAIFD3JlZmVycmVyQWRkcmVzcwkAzAgCBQ9yZWZlcnJhbEFkZHJlc3MFA25pbAUJc2VwYXJhdG9yARJrZXlDbGFpbWVkUmVmZXJyZXICC3Byb2dyYW1OYW1lDmNsYWltZXJBZGRyZXNzCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICD2NsYWltZWRSZWZlcnJlcgkAzAgCBQtwcm9ncmFtTmFtZQkAzAgCBQ5jbGFpbWVyQWRkcmVzcwUDbmlsBQlzZXBhcmF0b3IBEmtleUNsYWltZWRSZWZlcnJhbAILcHJvZ3JhbU5hbWUOY2xhaW1lckFkZHJlc3MJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIPY2xhaW1lZFJlZmVycmFsCQDMCAIFC3Byb2dyYW1OYW1lCQDMCAIFDmNsYWltZXJBZGRyZXNzBQNuaWwFCXNlcGFyYXRvcgEUa2V5VW5jbGFpbWVkUmVmZXJyZXICC3Byb2dyYW1OYW1lDmNsYWltZXJBZGRyZXNzCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICEXVuY2xhaW1lZFJlZmVycmVyCQDMCAIFC3Byb2dyYW1OYW1lCQDMCAIFDmNsYWltZXJBZGRyZXNzBQNuaWwFCXNlcGFyYXRvcgEUa2V5VW5jbGFpbWVkUmVmZXJyYWwCC3Byb2dyYW1OYW1lDmNsYWltZXJBZGRyZXNzCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICEXVuY2xhaW1lZFJlZmVycmFsCQDMCAIFC3Byb2dyYW1OYW1lCQDMCAIFDmNsYWltZXJBZGRyZXNzBQNuaWwFCXNlcGFyYXRvcgELa2V5UmVmZXJyZXICC3Byb2dyYW1OYW1lD3JlZmVycmFsQWRkcmVzcwkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAghyZWZlcnJlcgkAzAgCBQtwcm9ncmFtTmFtZQkAzAgCBQ9yZWZlcnJhbEFkZHJlc3MFA25pbAUJc2VwYXJhdG9yAQ5rZXlQcm9ncmFtTmFtZQELcHJvZ3JhbU5hbWUJALkJAgkAzAgCAgQlcyVzCQDMCAICC3Byb2dyYW1OYW1lCQDMCAIFC3Byb2dyYW1OYW1lBQNuaWwFCXNlcGFyYXRvcgEVa2V5VG90YWxSZWZlcnJhbENvdW50Agtwcm9ncmFtTmFtZQ9yZWZlcnJlckFkZHJlc3MJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgISdG90YWxSZWZlcnJhbENvdW50CQDMCAIFC3Byb2dyYW1OYW1lCQDMCAIFD3JlZmVycmVyQWRkcmVzcwUDbmlsBQlzZXBhcmF0b3IBFmtleUFjdGl2ZVJlZmVycmFsQ291bnQCC3Byb2dyYW1OYW1lD3JlZmVycmVyQWRkcmVzcwkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAhNhY3RpdmVSZWZlcnJhbENvdW50CQDMCAIFC3Byb2dyYW1OYW1lCQDMCAIFD3JlZmVycmVyQWRkcmVzcwUDbmlsBQlzZXBhcmF0b3IBE2tleUlzUmVmZXJyYWxBY3RpdmUCC3Byb2dyYW1OYW1lD3JlZmVycmFsQWRkcmVzcwkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAg5hY3RpdmVSZWZlcnJhbAkAzAgCBQtwcm9ncmFtTmFtZQkAzAgCBQ9yZWZlcnJhbEFkZHJlc3MFA25pbAUJc2VwYXJhdG9yARZrZXlDbGFpbWVkVG90YWxBZGRyZXNzAQdhZGRyZXNzCQC5CQIJAMwIAgIEJXMlcwkAzAgCAhNjbGFpbWVkVG90YWxBZGRyZXNzCQDMCAIFB2FkZHJlc3MFA25pbAUJc2VwYXJhdG9yARhrZXlVbmNsYWltZWRUb3RhbEFkZHJlc3MBB2FkZHJlc3MJALkJAgkAzAgCAgQlcyVzCQDMCAICFXVuY2xhaW1lZFRvdGFsQWRkcmVzcwkAzAgCBQdhZGRyZXNzBQNuaWwFCXNlcGFyYXRvcgEPa2V5Q2xhaW1lZFRvdGFsAQtwcm9ncmFtTmFtZQkAuQkCCQDMCAICBCVzJXMJAMwIAgIMY2xhaW1lZFRvdGFsCQDMCAIFC3Byb2dyYW1OYW1lBQNuaWwFCXNlcGFyYXRvcgEPa2V5UmV3YXJkc1RvdGFsAQtwcm9ncmFtTmFtZQkAuQkCCQDMCAICBCVzJXMJAMwIAgIMcmV3YXJkc1RvdGFsCQDMCAIFC3Byb2dyYW1OYW1lBQNuaWwFCXNlcGFyYXRvcgEQa2V5UmV3YXJkQXNzZXRJZAELcHJvZ3JhbU5hbWUJALkJAgkAzAgCAgQlcyVzCQDMCAICDXJld2FyZEFzc2V0SWQJAMwIAgULcHJvZ3JhbU5hbWUFA25pbAUJc2VwYXJhdG9yARNrZXlUcmVhc3VyeUNvbnRyYWN0AQtwcm9ncmFtTmFtZQkAuQkCCQDMCAICBCVzJXMJAMwIAgIQdHJlYXN1cnlDb250cmFjdAkAzAgCBQtwcm9ncmFtTmFtZQUDbmlsBQlzZXBhcmF0b3IBGWtleUltcGxlbWVudGF0aW9uQ29udHJhY3QBC3Byb2dyYW1OYW1lCQC5CQIJAMwIAgIEJXMlcwkAzAgCAhZpbXBsZW1lbnRhdGlvbkNvbnRyYWN0CQDMCAIFC3Byb2dyYW1OYW1lBQNuaWwFCXNlcGFyYXRvcgEWa2V5QWxsUmVmZXJyYWxQcm9ncmFtcwEHYWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgITYWxsUmVmZXJyYWxQcm9ncmFtcwkAzAgCBQdhZGRyZXNzBQNuaWwFCXNlcGFyYXRvcgEna2V5TGFzdEluY1VuY2xhaW1lZFdpdGhQYXltZW50Q2FsbEJsb2NrAQdhZGRyZXNzCQC5CQIJAMwIAgIEJXMlcwkAzAgCAiRsYXN0SW5jVW5jbGFpbWVkV2l0aFBheW1lbnRDYWxsQmxvY2sJAMwIAgUHYWRkcmVzcwUDbmlsBQlzZXBhcmF0b3IBE2tleU1hbmFnZXJQdWJsaWNLZXkAAhQlc19fbWFuYWdlclB1YmxpY0tleQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBD2tleUNsYWltSGlzdG9yeQQLcHJvZ3JhbU5hbWULdXNlckFkZHJlc3MNdHJhbnNhY3Rpb25JZAR0eXBlCQC5CQIJAMwIAgIKJXMlcyVzJXMlcwkAzAgCAgdoaXN0b3J5CQDMCAIFBHR5cGUJAMwIAgULcHJvZ3JhbU5hbWUJAMwIAgULdXNlckFkZHJlc3MJAMwIAgUNdHJhbnNhY3Rpb25JZAUDbmlsBQlzZXBhcmF0b3IBEmZvcm1hdENsYWltSGlzdG9yeQEGYW1vdW50CQC5CQIJAMwIAgIGJWQlZCVkCQDMCAIJAKQDAQgFCWxhc3RCbG9jawZoZWlnaHQJAMwIAgkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQCkAwEFBmFtb3VudAUDbmlsBQlzZXBhcmF0b3IBCHRocm93RXJyAQNtc2cJAAIBCQC5CQIJAMwIAgIOcmVmZXJyYWwucmlkZToJAMwIAgUDbXNnBQNuaWwCASABFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQABAckbWF0Y2gwCQCiCAEJARNrZXlNYW5hZ2VyUHVibGljS2V5AAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJANkEAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAQHJG1hdGNoMAkAoggBCQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgELbXVzdE1hbmFnZXIBAWkEAnBkCQEIdGhyb3dFcnIBAhFwZXJtaXNzaW9uIGRlbmllZAQHJG1hdGNoMAkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQUCcGsGBQJwZAMJAAECBQckbWF0Y2gwAgRVbml0AwkAAAIIBQFpBmNhbGxlcgUEdGhpcwYFAnBkCQACAQILTWF0Y2ggZXJyb3IPAWkBDWNsYWltSW50ZXJuYWwDC3Byb2dyYW1OYW1lDmNsYWltZXJBZGRyZXNzGGlzSW1wbGVtZW50YXRpb25Db250cmFjdAQSY2hlY2tQcm9ncmFtRXhpc3RzAwkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEOa2V5UHJvZ3JhbU5hbWUBBQtwcm9ncmFtTmFtZQcGCQEIdGhyb3dFcnIBAhZwcm9ncmFtIGRvZXMgbm90IGV4aXN0AwkAAAIFEmNoZWNrUHJvZ3JhbUV4aXN0cwUSY2hlY2tQcm9ncmFtRXhpc3RzBAskdDA0MjczNTIxMAMFGGlzSW1wbGVtZW50YXRpb25Db250cmFjdAkAlwoFCQELdmFsdWVPckVsc2UCCQCfCAEJARJrZXlDbGFpbWVkUmVmZXJyYWwCBQtwcm9ncmFtTmFtZQUOY2xhaW1lckFkZHJlc3MAAAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEUa2V5VW5jbGFpbWVkUmVmZXJyYWwCBQtwcm9ncmFtTmFtZQUOY2xhaW1lckFkZHJlc3MAAAkBEmtleUNsYWltZWRSZWZlcnJhbAIFC3Byb2dyYW1OYW1lBQ5jbGFpbWVyQWRkcmVzcwkBFGtleVVuY2xhaW1lZFJlZmVycmFsAgULcHJvZ3JhbU5hbWUFDmNsYWltZXJBZGRyZXNzCQEPa2V5Q2xhaW1IaXN0b3J5BAULcHJvZ3JhbU5hbWUFDmNsYWltZXJBZGRyZXNzCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQCDWNsYWltUmVmZXJyYWwJAJcKBQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5Q2xhaW1lZFJlZmVycmVyAgULcHJvZ3JhbU5hbWUFDmNsYWltZXJBZGRyZXNzAAAJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFGtleVVuY2xhaW1lZFJlZmVycmVyAgULcHJvZ3JhbU5hbWUFDmNsYWltZXJBZGRyZXNzAAAJARJrZXlDbGFpbWVkUmVmZXJyZXICBQtwcm9ncmFtTmFtZQUOY2xhaW1lckFkZHJlc3MJARRrZXlVbmNsYWltZWRSZWZlcnJlcgIFC3Byb2dyYW1OYW1lBQ5jbGFpbWVyQWRkcmVzcwkBD2tleUNsYWltSGlzdG9yeQQFC3Byb2dyYW1OYW1lBQ5jbGFpbWVyQWRkcmVzcwkA2AQBCAUBaQ10cmFuc2FjdGlvbklkAg1jbGFpbVJlZmVycmVyBA5jbGFpbWVyQ2xhaW1lZAgFCyR0MDQyNzM1MjEwAl8xBBBjbGFpbWVyVW5jbGFpbWVkCAULJHQwNDI3MzUyMTACXzIECmtleUNsYWltZWQIBQskdDA0MjczNTIxMAJfMwQMa2V5VW5jbGFpbWVkCAULJHQwNDI3MzUyMTACXzQED2NsYWltSGlzdG9yeUtleQgFCyR0MDQyNzM1MjEwAl81BAxjbGFpbWVkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBD2tleUNsYWltZWRUb3RhbAEFC3Byb2dyYW1OYW1lAAAEEHRyZWFzdXJ5Q29udHJhY3QJAQV2YWx1ZQEJAKYIAQkBBXZhbHVlAQkAoggBCQETa2V5VHJlYXN1cnlDb250cmFjdAEFC3Byb2dyYW1OYW1lBA1yZXdhcmRBc3NldElkCQDZBAEJAQV2YWx1ZQEJAKIIAQkBEGtleVJld2FyZEFzc2V0SWQBBQtwcm9ncmFtTmFtZQQTY2xhaW1lZFRvdGFsQWRkcmVzcwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5Q2xhaW1lZFRvdGFsQWRkcmVzcwEFDmNsYWltZXJBZGRyZXNzAAAEFXVuY2xhaW1lZFRvdGFsQWRkcmVzcwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEYa2V5VW5jbGFpbWVkVG90YWxBZGRyZXNzAQUOY2xhaW1lckFkZHJlc3MAAAMDBRhpc0ltcGxlbWVudGF0aW9uQ29udHJhY3QJAAACBRBjbGFpbWVyVW5jbGFpbWVkAAAHCQCUCgIFA25pbAAABA1jaGVja0NhbkNsYWltAwkAZgIFEGNsYWltZXJVbmNsYWltZWQAAAYJAQh0aHJvd0VycgECEG5vdGhpbmcgdG8gY2xhaW0DCQAAAgUNY2hlY2tDYW5DbGFpbQUNY2hlY2tDYW5DbGFpbQQRbmV3Q2xhaW1lckNsYWltZWQJAGQCBQ5jbGFpbWVyQ2xhaW1lZAUQY2xhaW1lclVuY2xhaW1lZAQPbmV3Q2xhaW1lZFRvdGFsCQBkAgUMY2xhaW1lZFRvdGFsBRBjbGFpbWVyVW5jbGFpbWVkBBZuZXdDbGFpbWVkVG90YWxBZGRyZXNzCQBkAgUTY2xhaW1lZFRvdGFsQWRkcmVzcwUQY2xhaW1lclVuY2xhaW1lZAQYbmV3VW5jbGFpbWVkVG90YWxBZGRyZXNzCQBlAgUVdW5jbGFpbWVkVG90YWxBZGRyZXNzBRBjbGFpbWVyVW5jbGFpbWVkBA1iYWxhbmNlQmVmb3JlCQEFdmFsdWUBCQDwBwIFBHRoaXMFDXJld2FyZEFzc2V0SWQDCQAAAgUNYmFsYW5jZUJlZm9yZQUNYmFsYW5jZUJlZm9yZQQDcmVzCQD8BwQFEHRyZWFzdXJ5Q29udHJhY3QCFndpdGhkcmF3UmVmZXJyYWxSZXdhcmQJAMwIAgUQY2xhaW1lclVuY2xhaW1lZAUDbmlsBQNuaWwDCQAAAgUDcmVzBQNyZXMEDGJhbGFuY2VBZnRlcgkBBXZhbHVlAQkA8AcCBQR0aGlzBQ1yZXdhcmRBc3NldElkAwkAAAIFDGJhbGFuY2VBZnRlcgUMYmFsYW5jZUFmdGVyBAtiYWxhbmNlRGlmZgkAZQIFDGJhbGFuY2VBZnRlcgUNYmFsYW5jZUJlZm9yZQMJAAACBQtiYWxhbmNlRGlmZgULYmFsYW5jZURpZmYEDGNoZWNrQmFsYW5jZQMJAAACBQtiYWxhbmNlRGlmZgUQY2xhaW1lclVuY2xhaW1lZAYJAQh0aHJvd0VycgECKWluc3VmZmljaWVudCBiYWxhbmNlIG9uIHJlZmVycmFsIGNvbnRyYWN0AwkAAAIFDGNoZWNrQmFsYW5jZQUMY2hlY2tCYWxhbmNlCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFCmtleUNsYWltZWQFEW5ld0NsYWltZXJDbGFpbWVkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQxrZXlVbmNsYWltZWQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBD2tleUNsYWltZWRUb3RhbAEFC3Byb2dyYW1OYW1lBQ9uZXdDbGFpbWVkVG90YWwJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlDbGFpbWVkVG90YWxBZGRyZXNzAQUOY2xhaW1lckFkZHJlc3MFFm5ld0NsYWltZWRUb3RhbEFkZHJlc3MJAMwIAgkBDEludGVnZXJFbnRyeQIJARhrZXlVbmNsYWltZWRUb3RhbEFkZHJlc3MBBQ5jbGFpbWVyQWRkcmVzcwUYbmV3VW5jbGFpbWVkVG90YWxBZGRyZXNzCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFDmNsYWltZXJBZGRyZXNzBRBjbGFpbWVyVW5jbGFpbWVkBQ1yZXdhcmRBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIFD2NsYWltSGlzdG9yeUtleQkBEmZvcm1hdENsYWltSGlzdG9yeQEFEGNsYWltZXJVbmNsYWltZWQFA25pbAUQY2xhaW1lclVuY2xhaW1lZAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARFjbGFpbUJ1bGtJbnRlcm5hbAMHY2xhaW1lcgxwcm9ncmFtTmFtZXMLY3VycmVudEl0ZXIEC2NoZWNrQ2FsbGVyAwkAAAIIBQFpBmNhbGxlcgUEdGhpcwYJAQh0aHJvd0VycgECEXBlcm1pc3Npb24gZGVuaWVkAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgMJAAACBQtjdXJyZW50SXRlcgkAkAMBBQxwcm9ncmFtTmFtZXMFA25pbAQLcHJvZ3JhbU5hbWUJAJEDAgUMcHJvZ3JhbU5hbWVzBQtjdXJyZW50SXRlcgQQcHJvZ3JhbVVuY2xhaW1lZAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEUa2V5VW5jbGFpbWVkUmVmZXJyZXICBQtwcm9ncmFtTmFtZQUHY2xhaW1lcgAABA9jbGFpbUhpc3RvcnlLZXkJAQ9rZXlDbGFpbUhpc3RvcnkEBQtwcm9ncmFtTmFtZQUHY2xhaW1lcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkAgljbGFpbUJ1bGsEEWNsYWltQnVsa0ludGVybmFsCQD8BwQFBHRoaXMCEWNsYWltQnVsa0ludGVybmFsCQDMCAIFB2NsYWltZXIJAMwIAgUMcHJvZ3JhbU5hbWVzCQDMCAIJAGQCBQtjdXJyZW50SXRlcgABBQNuaWwFA25pbAMJAAACBRFjbGFpbUJ1bGtJbnRlcm5hbAURY2xhaW1CdWxrSW50ZXJuYWwEEXVuY2xhaW1lZFJlZmVycmVyCQELdmFsdWVPckVsc2UCCQCfCAEJARRrZXlVbmNsYWltZWRSZWZlcnJlcgIFC3Byb2dyYW1OYW1lBQdjbGFpbWVyAAAEBWNsYWltAwkAZgIFEXVuY2xhaW1lZFJlZmVycmVyAAAJAPwHBAUEdGhpcwINY2xhaW1JbnRlcm5hbAkAzAgCBQtwcm9ncmFtTmFtZQkAzAgCBQdjbGFpbWVyCQDMCAIHBQNuaWwFA25pbAUEdW5pdAMJAAACBQVjbGFpbQUFY2xhaW0JAJQKAgUDbmlsCQDMCAIFEWNsYWltQnVsa0ludGVybmFsCQDMCAIFBWNsYWltBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEfaW5jVW5jbGFpbWVkV2l0aFBheW1lbnRJbnRlcm5hbAUOcGF5bWVudEFtb3VudHMLcHJvZ3JhbU5hbWURcmVmZXJyZXJBZGRyZXNzZXMLY3VycmVudEl0ZXIJcmVzQW1vdW50BAtjaGVja0NhbGxlcgMJAAACCAUBaQZjYWxsZXIFBHRoaXMGCQEIdGhyb3dFcnIBAhFwZXJtaXNzaW9uIGRlbmllZAMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIEDmFyZ3NDb21wYXJpc29uCQAAAgkAkAMBBQ5wYXltZW50QW1vdW50cwkAkAMBBRFyZWZlcnJlckFkZHJlc3NlcwQFY2hlY2sDBQ5hcmdzQ29tcGFyaXNvbgYJAQh0aHJvd0VycgECH2xpc3RzIGluIGFyZ3MgbXVzdCBiZSBzYW1lIHNpemUDCQAAAgUFY2hlY2sFBWNoZWNrAwkAAAIFC2N1cnJlbnRJdGVyCQCQAwEFDnBheW1lbnRBbW91bnRzCQCUCgIFA25pbAUJcmVzQW1vdW50BA9yZWZlcnJlckFkZHJlc3MJAJEDAgURcmVmZXJyZXJBZGRyZXNzZXMFC2N1cnJlbnRJdGVyBBV1bmNsYWltZWRUb3RhbEFkZHJlc3MJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBGGtleVVuY2xhaW1lZFRvdGFsQWRkcmVzcwEFD3JlZmVycmVyQWRkcmVzcwAABBFyZWZlcnJlclVuY2xhaW1lZAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEUa2V5VW5jbGFpbWVkUmVmZXJyZXICBQtwcm9ncmFtTmFtZQUPcmVmZXJyZXJBZGRyZXNzAAAEDHJld2FyZHNUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEPa2V5UmV3YXJkc1RvdGFsAQULcHJvZ3JhbU5hbWUAAAQYbmV3VW5jbGFpbWVkVG90YWxBZGRyZXNzCQBkAgUVdW5jbGFpbWVkVG90YWxBZGRyZXNzCQCRAwIFDnBheW1lbnRBbW91bnRzBQtjdXJyZW50SXRlcgQUbmV3UmVmZXJyZXJVbmNsYWltZWQJAGQCBRFyZWZlcnJlclVuY2xhaW1lZAkAkQMCBQ5wYXltZW50QW1vdW50cwULY3VycmVudEl0ZXIEDG5ld1Jlc0Ftb3VudAkAZAIFCXJlc0Ftb3VudAkAkQMCBQ5wYXltZW50QW1vdW50cwULY3VycmVudEl0ZXIEA2ludgkA/AcEBQR0aGlzAh9pbmNVbmNsYWltZWRXaXRoUGF5bWVudEludGVybmFsCQDMCAIFDnBheW1lbnRBbW91bnRzCQDMCAIFC3Byb2dyYW1OYW1lCQDMCAIFEXJlZmVycmVyQWRkcmVzc2VzCQDMCAIJAGQCBQtjdXJyZW50SXRlcgABCQDMCAIFDG5ld1Jlc0Ftb3VudAUDbmlsBQNuaWwDCQAAAgUDaW52BQNpbnYJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGGtleVVuY2xhaW1lZFRvdGFsQWRkcmVzcwEFD3JlZmVycmVyQWRkcmVzcwUYbmV3VW5jbGFpbWVkVG90YWxBZGRyZXNzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEUa2V5VW5jbGFpbWVkUmVmZXJyZXICBQtwcm9ncmFtTmFtZQUPcmVmZXJyZXJBZGRyZXNzBRRuZXdSZWZlcnJlclVuY2xhaW1lZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBD2tleVJld2FyZHNUb3RhbAEFC3Byb2dyYW1OYW1lCQBkAgUMcmV3YXJkc1RvdGFsCQCRAwIFDnBheW1lbnRBbW91bnRzBQtjdXJyZW50SXRlcgUDbmlsBQNpbnYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEVY3JlYXRlUmVmZXJyYWxQcm9ncmFtBAtwcm9ncmFtTmFtZRB0cmVhc3VyeUNvbnRyYWN0FmltcGxlbWVudGF0aW9uQ29udHJhY3QNcmV3YXJkQXNzZXRJZAQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBBBjaGVja1Byb2dyYW1OYW1lAwkAAAIJAKAIAQkBDmtleVByb2dyYW1OYW1lAQULcHJvZ3JhbU5hbWUFBHVuaXQGCQEIdGhyb3dFcnIBAhtwcm9ncmFtIG5hbWUgYWxyZWFkeSBleGlzdHMDCQAAAgUQY2hlY2tQcm9ncmFtTmFtZQUQY2hlY2tQcm9ncmFtTmFtZQQScHJvZ3JhbU5hbWVJc1ZhbGlkAwkBASEBCQEIY29udGFpbnMCBQtwcm9ncmFtTmFtZQUJc2VwYXJhdG9yCQEBIQEJAQhjb250YWlucwIFC3Byb2dyYW1OYW1lAgEgBwQSY2hlY2tQcm9ncmFtRXhpc3RzAwUScHJvZ3JhbU5hbWVJc1ZhbGlkBgkBCHRocm93RXJyAQIUaW52YWxpZCBwcm9ncmFtIG5hbWUDCQAAAgUSY2hlY2tQcm9ncmFtRXhpc3RzBRJjaGVja1Byb2dyYW1FeGlzdHMEEGNoZWNrUmV3YXJkQXNzZXQDCQECIT0CCQDsBwEJANkEAQUNcmV3YXJkQXNzZXRJZAUEdW5pdAYJAQh0aHJvd0VycgECF2ludmFsaWQgcmV3YXJkIGFzc2V0IGlkAwkAAAIFEGNoZWNrUmV3YXJkQXNzZXQFEGNoZWNrUmV3YXJkQXNzZXQJAJQKAgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBDmtleVByb2dyYW1OYW1lAQULcHJvZ3JhbU5hbWUGCQDMCAIJAQtTdHJpbmdFbnRyeQIJARNrZXlUcmVhc3VyeUNvbnRyYWN0AQULcHJvZ3JhbU5hbWUFEHRyZWFzdXJ5Q29udHJhY3QJAMwIAgkBC1N0cmluZ0VudHJ5AgkBGWtleUltcGxlbWVudGF0aW9uQ29udHJhY3QBBQtwcm9ncmFtTmFtZQUWaW1wbGVtZW50YXRpb25Db250cmFjdAkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5UmV3YXJkQXNzZXRJZAEFC3Byb2dyYW1OYW1lBQ1yZXdhcmRBc3NldElkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5UmV3YXJkc1RvdGFsAQULcHJvZ3JhbU5hbWUAAAUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCmNyZWF0ZVBhaXIEC3Byb2dyYW1OYW1lD3JlZmVycmVyQWRkcmVzcw9yZWZlcnJhbEFkZHJlc3MJc2lnbmF0dXJlBBJjaGVja1Byb2dyYW1FeGlzdHMDCQELdmFsdWVPckVsc2UCCQCgCAEJAQ5rZXlQcm9ncmFtTmFtZQEFC3Byb2dyYW1OYW1lBwYJAQh0aHJvd0VycgECFnByb2dyYW0gZG9lcyBub3QgZXhpc3QDCQAAAgUSY2hlY2tQcm9ncmFtRXhpc3RzBRJjaGVja1Byb2dyYW1FeGlzdHMEIHBhaXJSZWZlcnJlclRvUmVmZXJyYWxFeGlzdENoZWNrAwkAAAIJAKAIAQkBG2tleUV4aXN0c1JlZmVycmVyVG9SZWZlcnJhbAMFC3Byb2dyYW1OYW1lBQ9yZWZlcnJlckFkZHJlc3MFD3JlZmVycmFsQWRkcmVzcwUEdW5pdAYJAQh0aHJvd0VycgECE3BhaXIgYWxyZWFkeSBleGlzdHMDCQAAAgUgcGFpclJlZmVycmVyVG9SZWZlcnJhbEV4aXN0Q2hlY2sFIHBhaXJSZWZlcnJlclRvUmVmZXJyYWxFeGlzdENoZWNrBAlub1JlZlNlbGYDCQECIT0CBQ9yZWZlcnJlckFkZHJlc3MFD3JlZmVycmFsQWRkcmVzcwYJAQh0aHJvd0VycgECFGNhbm5vdCByZWZlciB0byBzZWxmAwkAAAIFCW5vUmVmU2VsZgUJbm9SZWZTZWxmBARwYWlyCQCbAwEJALkJAgkAzAgCBQtwcm9ncmFtTmFtZQkAzAgCBQ9yZWZlcnJlckFkZHJlc3MJAMwIAgUPcmVmZXJyYWxBZGRyZXNzBQNuaWwCAToEEGJhY2tlbmRQdWJsaWNLZXkJANkEAQkBBXZhbHVlAQkAoggBBRNrZXlCYWNrZW5kUHVibGljS2V5BBF2YWxpZGF0ZVNpZ25hdHVyZQMJAPQDAwUEcGFpcgUJc2lnbmF0dXJlBRBiYWNrZW5kUHVibGljS2V5BgkBCHRocm93RXJyAQINYmFkIHNpZ25hdHVyZQMJAAACBRF2YWxpZGF0ZVNpZ25hdHVyZQURdmFsaWRhdGVTaWduYXR1cmUEEnRvdGFsUmVmZXJyYWxDb3VudAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEVa2V5VG90YWxSZWZlcnJhbENvdW50AgULcHJvZ3JhbU5hbWUFD3JlZmVycmVyQWRkcmVzcwAABBVuZXdUb3RhbFJlZmVycmFsQ291bnQJAGQCBRJ0b3RhbFJlZmVycmFsQ291bnQAAQQTYWxsUmVmZXJyZXJQcm9ncmFtcwkBC3ZhbHVlT3JFbHNlAgkAoggBCQEWa2V5QWxsUmVmZXJyYWxQcm9ncmFtcwEFD3JlZmVycmVyQWRkcmVzcwIABBZuZXdBbGxSZWZlcnJlclByb2dyYW1zAwkAAAIFE2FsbFJlZmVycmVyUHJvZ3JhbXMCAAULcHJvZ3JhbU5hbWUJALkJAgkAzAgCBRNhbGxSZWZlcnJlclByb2dyYW1zCQDMCAIFC3Byb2dyYW1OYW1lBQNuaWwFCXNlcGFyYXRvcgQTYWxsUmVmZXJyYWxQcm9ncmFtcwkBC3ZhbHVlT3JFbHNlAgkAoggBCQEWa2V5QWxsUmVmZXJyYWxQcm9ncmFtcwEFD3JlZmVycmFsQWRkcmVzcwIABBZuZXdBbGxSZWZlcnJhbFByb2dyYW1zAwkAAAIFE2FsbFJlZmVycmFsUHJvZ3JhbXMCAAULcHJvZ3JhbU5hbWUJALkJAgkAzAgCBRNhbGxSZWZlcnJhbFByb2dyYW1zCQDMCAIFC3Byb2dyYW1OYW1lBQNuaWwFCXNlcGFyYXRvcgkAlAoCCQDMCAIJAQxCb29sZWFuRW50cnkCCQEba2V5RXhpc3RzUmVmZXJyZXJUb1JlZmVycmFsAwULcHJvZ3JhbU5hbWUFD3JlZmVycmVyQWRkcmVzcwUPcmVmZXJyYWxBZGRyZXNzBgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFWtleVRvdGFsUmVmZXJyYWxDb3VudAIFC3Byb2dyYW1OYW1lBQ9yZWZlcnJlckFkZHJlc3MFFW5ld1RvdGFsUmVmZXJyYWxDb3VudAkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5UmVmZXJyZXICBQtwcm9ncmFtTmFtZQUPcmVmZXJyYWxBZGRyZXNzBQ9yZWZlcnJlckFkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFmtleUFsbFJlZmVycmFsUHJvZ3JhbXMBBQ9yZWZlcnJlckFkZHJlc3MFFm5ld0FsbFJlZmVycmVyUHJvZ3JhbXMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFmtleUFsbFJlZmVycmFsUHJvZ3JhbXMBBQ9yZWZlcnJhbEFkZHJlc3MFFm5ld0FsbFJlZmVycmFsUHJvZ3JhbXMFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARZ1cGRhdGVSZWZlcnJhbEFjdGl2aXR5Awtwcm9ncmFtTmFtZQ9yZWZlcnJhbEFkZHJlc3MIaXNBY3RpdmUEFmltcGxlbWVudGF0aW9uQ29udHJhY3QJAQV2YWx1ZQEJAKIIAQkBGWtleUltcGxlbWVudGF0aW9uQ29udHJhY3QBBQtwcm9ncmFtTmFtZQQQaXNSZWZlcnJhbEFjdGl2ZQkBAiE9AgkAoAgBCQETa2V5SXNSZWZlcnJhbEFjdGl2ZQIFC3Byb2dyYW1OYW1lBQ9yZWZlcnJhbEFkZHJlc3MFBHVuaXQED3JlZmVycmVyQWRkcmVzcwkBBXZhbHVlAQkAoggBCQELa2V5UmVmZXJyZXICBQtwcm9ncmFtTmFtZQUPcmVmZXJyYWxBZGRyZXNzBAtjaGVja0NhbGxlcgMJAAACCQClCAEIBQFpBmNhbGxlcgUWaW1wbGVtZW50YXRpb25Db250cmFjdAYJAQh0aHJvd0VycgECEXBlcm1pc3Npb24gZGVuaWVkAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQGdXBkYXRlAwkAAAIFEGlzUmVmZXJyYWxBY3RpdmUFCGlzQWN0aXZlCQCUCgIFA25pbAUEdW5pdAQGdXBkYXRlAwkAAAIFCGlzQWN0aXZlBgQWbmV3QWN0aXZlUmVmZXJyYWxDb3VudAkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUFjdGl2ZVJlZmVycmFsQ291bnQCBQtwcm9ncmFtTmFtZQUPcmVmZXJyZXJBZGRyZXNzAAAAAQkAlAoCCQDMCAIJAQxCb29sZWFuRW50cnkCCQETa2V5SXNSZWZlcnJhbEFjdGl2ZQIFC3Byb2dyYW1OYW1lBQ9yZWZlcnJhbEFkZHJlc3MGCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5QWN0aXZlUmVmZXJyYWxDb3VudAIFC3Byb2dyYW1OYW1lBQ9yZWZlcnJlckFkZHJlc3MFFm5ld0FjdGl2ZVJlZmVycmFsQ291bnQFA25pbAUEdW5pdAQWbmV3QWN0aXZlUmVmZXJyYWxDb3VudAkAZQIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUFjdGl2ZVJlZmVycmFsQ291bnQCBQtwcm9ncmFtTmFtZQUPcmVmZXJyZXJBZGRyZXNzAAAAAQkAlAoCCQDMCAIJAQtEZWxldGVFbnRyeQEJARNrZXlJc1JlZmVycmFsQWN0aXZlAgULcHJvZ3JhbU5hbWUFD3JlZmVycmFsQWRkcmVzcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleUFjdGl2ZVJlZmVycmFsQ291bnQCBQtwcm9ncmFtTmFtZQUPcmVmZXJyZXJBZGRyZXNzBRZuZXdBY3RpdmVSZWZlcnJhbENvdW50BQNuaWwFBHVuaXQFBnVwZGF0ZQUGdXBkYXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDGluY1VuY2xhaW1lZAQLcHJvZ3JhbU5hbWUPcmVmZXJyYWxBZGRyZXNzDnJlZmVycmVyUmV3YXJkDnJlZmVycmFsUmV3YXJkBBZpbXBsZW1lbnRhdGlvbkNvbnRyYWN0CQEFdmFsdWUBCQCiCAEJARlrZXlJbXBsZW1lbnRhdGlvbkNvbnRyYWN0AQULcHJvZ3JhbU5hbWUEC2NoZWNrQ2FsbGVyAwkAAAIJAKUIAQgFAWkGY2FsbGVyBRZpbXBsZW1lbnRhdGlvbkNvbnRyYWN0BgkBCHRocm93RXJyAQIRcGVybWlzc2lvbiBkZW5pZWQDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBA9yZWZlcnJlckFkZHJlc3MJAQV2YWx1ZQEJAKIIAQkBC2tleVJlZmVycmVyAgULcHJvZ3JhbU5hbWUFD3JlZmVycmFsQWRkcmVzcwQWdW5jbGFpbWVkVG90YWxSZWZlcnJlcgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEYa2V5VW5jbGFpbWVkVG90YWxBZGRyZXNzAQUPcmVmZXJyZXJBZGRyZXNzAAAEEXJlZmVycmVyVW5jbGFpbWVkCQELdmFsdWVPckVsc2UCCQCfCAEJARRrZXlVbmNsYWltZWRSZWZlcnJlcgIFC3Byb2dyYW1OYW1lBQ9yZWZlcnJlckFkZHJlc3MAAAQWdW5jbGFpbWVkVG90YWxSZWZlcnJhbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEYa2V5VW5jbGFpbWVkVG90YWxBZGRyZXNzAQUPcmVmZXJyYWxBZGRyZXNzAAAEEXJlZmVycmFsVW5jbGFpbWVkCQELdmFsdWVPckVsc2UCCQCfCAEJARRrZXlVbmNsYWltZWRSZWZlcnJhbAIFC3Byb2dyYW1OYW1lBQ9yZWZlcnJhbEFkZHJlc3MAAAQMcmV3YXJkc1RvdGFsCQELdmFsdWVPckVsc2UCCQCfCAEJAQ9rZXlSZXdhcmRzVG90YWwBBQtwcm9ncmFtTmFtZQAABBluZXdVbmNsYWltZWRUb3RhbFJlZmVycmVyCQBkAgUWdW5jbGFpbWVkVG90YWxSZWZlcnJlcgUOcmVmZXJyZXJSZXdhcmQEFG5ld1JlZmVycmVyVW5jbGFpbWVkCQBkAgURcmVmZXJyZXJVbmNsYWltZWQFDnJlZmVycmVyUmV3YXJkBBluZXdVbmNsYWltZWRUb3RhbFJlZmVycmFsCQBkAgUWdW5jbGFpbWVkVG90YWxSZWZlcnJhbAUOcmVmZXJyYWxSZXdhcmQEFG5ld1JlZmVycmFsVW5jbGFpbWVkCQBkAgURcmVmZXJyYWxVbmNsYWltZWQFDnJlZmVycmFsUmV3YXJkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJARhrZXlVbmNsYWltZWRUb3RhbEFkZHJlc3MBBQ9yZWZlcnJlckFkZHJlc3MFGW5ld1VuY2xhaW1lZFRvdGFsUmVmZXJyZXIJAMwIAgkBDEludGVnZXJFbnRyeQIJARhrZXlVbmNsYWltZWRUb3RhbEFkZHJlc3MBBQ9yZWZlcnJhbEFkZHJlc3MFGW5ld1VuY2xhaW1lZFRvdGFsUmVmZXJyYWwJAMwIAgkBDEludGVnZXJFbnRyeQIJARRrZXlVbmNsYWltZWRSZWZlcnJlcgIFC3Byb2dyYW1OYW1lBQ9yZWZlcnJlckFkZHJlc3MFFG5ld1JlZmVycmVyVW5jbGFpbWVkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEUa2V5VW5jbGFpbWVkUmVmZXJyYWwCBQtwcm9ncmFtTmFtZQUPcmVmZXJyYWxBZGRyZXNzBRRuZXdSZWZlcnJhbFVuY2xhaW1lZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBD2tleVJld2FyZHNUb3RhbAEFC3Byb2dyYW1OYW1lCQBkAgkAZAIFDHJld2FyZHNUb3RhbAUOcmVmZXJyZXJSZXdhcmQFDnJlZmVycmFsUmV3YXJkBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEXaW5jVW5jbGFpbWVkV2l0aFBheW1lbnQCC3Byb2dyYW1OYW1lEXJlZmVycmVyQWRkcmVzc2VzBA1jYWxsZXJBZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQIbGFzdENhbGwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBJ2tleUxhc3RJbmNVbmNsYWltZWRXaXRoUGF5bWVudENhbGxCbG9jawEFDWNhbGxlckFkZHJlc3MAAAQKd2FpdEJsb2NrcwkAZAIJAGUCBQhsYXN0Q2FsbAUGaGVpZ2h0AAMEDWxhc3RDYWxsQ2hlY2sDCQBmAgkAZQIFBmhlaWdodAADBQhsYXN0Q2FsbAYJAQh0aHJvd0VycgEJALkJAgkAzAgCAgR3YWl0CQDMCAIJAKQDAQUKd2FpdEJsb2NrcwkAzAgCAgZibG9ja3MFA25pbAIBIAMJAAACBQ1sYXN0Q2FsbENoZWNrBQ1sYXN0Q2FsbENoZWNrCgEDbWFwAgVhY2N1bQRuZXh0BAxhc3NldElkQ2hlY2sJAAACCQDYBAEJAQV2YWx1ZQEIBQRuZXh0B2Fzc2V0SWQJAQV2YWx1ZQEJAKIIAQkBEGtleVJld2FyZEFzc2V0SWQBBQtwcm9ncmFtTmFtZQQLYW1vdW50Q2hlY2sDBQxhc3NldElkQ2hlY2sGCQEIdGhyb3dFcnIBAhBpbnZhbGlkIGFzc2V0IGlkAwkAAAIFC2Ftb3VudENoZWNrBQthbW91bnRDaGVjawkAzQgCBQVhY2N1bQgFBG5leHQGYW1vdW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAhwYXltZW50cwoAAiRsCAUBaQhwYXltZW50cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEDbWFwAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKBAlyZXNBbW91bnQKAAFACQD8BwQFBHRoaXMCH2luY1VuY2xhaW1lZFdpdGhQYXltZW50SW50ZXJuYWwJAMwIAgUIcGF5bWVudHMJAMwIAgULcHJvZ3JhbU5hbWUJAMwIAgURcmVmZXJyZXJBZGRyZXNzZXMJAMwIAgAACQDMCAIAAAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AwkAAAIFCXJlc0Ftb3VudAUJcmVzQW1vdW50BBB0cmVhc3VyeUNvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQEFdmFsdWUBCQCiCAEJARNrZXlUcmVhc3VyeUNvbnRyYWN0AQULcHJvZ3JhbU5hbWUEDXJld2FyZEFzc2V0SWQJANkEAQkBBXZhbHVlAQkAoggBCQEQa2V5UmV3YXJkQXNzZXRJZAEFC3Byb2dyYW1OYW1lCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFEHRyZWFzdXJ5Q29udHJhY3QFCXJlc0Ftb3VudAUNcmV3YXJkQXNzZXRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBJ2tleUxhc3RJbmNVbmNsYWltZWRXaXRoUGF5bWVudENhbGxCbG9jawEFDWNhbGxlckFkZHJlc3MFBmhlaWdodAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBWNsYWltAQtwcm9ncmFtTmFtZQQSY2hlY2tQcm9ncmFtRXhpc3RzAwkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEOa2V5UHJvZ3JhbU5hbWUBBQtwcm9ncmFtTmFtZQcGCQEIdGhyb3dFcnIBAhZwcm9ncmFtIGRvZXMgbm90IGV4aXN0AwkAAAIFEmNoZWNrUHJvZ3JhbUV4aXN0cwUSY2hlY2tQcm9ncmFtRXhpc3RzBBhpc0ltcGxlbWVudGF0aW9uQ29udHJhY3QJAAACCQClCAEIBQFpBmNhbGxlcgkBBXZhbHVlAQkAoggBCQEZa2V5SW1wbGVtZW50YXRpb25Db250cmFjdAEFC3Byb2dyYW1OYW1lBA5jbGFpbWVyQWRkcmVzcwMFGGlzSW1wbGVtZW50YXRpb25Db250cmFjdAkApQgBCAUBaQxvcmlnaW5DYWxsZXIJAKUIAQgFAWkGY2FsbGVyBA1jbGFpbUludGVybmFsCQD8BwQFBHRoaXMCDWNsYWltSW50ZXJuYWwJAMwIAgULcHJvZ3JhbU5hbWUJAMwIAgUOY2xhaW1lckFkZHJlc3MJAMwIAgUYaXNJbXBsZW1lbnRhdGlvbkNvbnRyYWN0BQNuaWwFA25pbAMJAAACBQ1jbGFpbUludGVybmFsBQ1jbGFpbUludGVybmFsCQCUCgIFA25pbAUNY2xhaW1JbnRlcm5hbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQljbGFpbUJ1bGsABA1jYWxsZXJBZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQRY2FsbGVyUHJvZ3JhbXNTdHIJAKIIAQkBFmtleUFsbFJlZmVycmFsUHJvZ3JhbXMBCQClCAEIBQFpBmNhbGxlcgQOcHJvZ3JhbXNFeGlzdHMDCQEJaXNEZWZpbmVkAQURY2FsbGVyUHJvZ3JhbXNTdHIGCQEIdGhyb3dFcnIBAhRubyByZWZlcnJhbCBwcm9ncmFtcwMJAAACBQ5wcm9ncmFtc0V4aXN0cwUOcHJvZ3JhbXNFeGlzdHMEDmNhbGxlclByb2dyYW1zCQC1CQIJAQV2YWx1ZQEFEWNhbGxlclByb2dyYW1zU3RyAgJfXwQJYnVsa0NsYWltCQD8BwQFBHRoaXMCEWNsYWltQnVsa0ludGVybmFsCQDMCAIFDWNhbGxlckFkZHJlc3MJAMwIAgUOY2FsbGVyUHJvZ3JhbXMJAMwIAgAABQNuaWwFA25pbAMJAAACBQlidWxrQ2xhaW0FCWJ1bGtDbGFpbQkAlAoCBQNuaWwFCWJ1bGtDbGFpbQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ1jbGFpbVJFQURPTkxZAgtwcm9ncmFtTmFtZQt1c2VyQWRkcmVzcwQOY2xhaW1lckNsYWltZWQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleUNsYWltZWRSZWZlcnJlcgIFC3Byb2dyYW1OYW1lBQt1c2VyQWRkcmVzcwAABBBjbGFpbWVyVW5jbGFpbWVkCQELdmFsdWVPckVsc2UCCQCfCAEJARRrZXlVbmNsYWltZWRSZWZlcnJlcgIFC3Byb2dyYW1OYW1lBQt1c2VyQWRkcmVzcwAACQCUCgIFA25pbAkAzAgCBRBjbGFpbWVyVW5jbGFpbWVkCQDMCAIFDmNsYWltZXJDbGFpbWVkBQNuaWwBaQERY2xhaW1CdWxrUkVBRE9OTFkBB2NsYWltZXIEE2NsYWltZWRUb3RhbEFkZHJlc3MJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUNsYWltZWRUb3RhbEFkZHJlc3MBBQdjbGFpbWVyAAAEFXVuY2xhaW1lZFRvdGFsQWRkcmVzcwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEYa2V5VW5jbGFpbWVkVG90YWxBZGRyZXNzAQUHY2xhaW1lcgAACQCUCgIFA25pbAkAzAgCBRV1bmNsYWltZWRUb3RhbEFkZHJlc3MJAMwIAgUTY2xhaW1lZFRvdGFsQWRkcmVzcwUDbmlsAWkBDHNldFRvdGFsS2V5cwILcHJvZ3JhbU5hbWUHYWRkcmVzcwQPY2xhaW1lZFJlZmVycmVyCQELdmFsdWVPckVsc2UCCQCfCAEJARJrZXlDbGFpbWVkUmVmZXJyZXICBQtwcm9ncmFtTmFtZQUHYWRkcmVzcwAABA9jbGFpbWVkUmVmZXJyYWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleUNsYWltZWRSZWZlcnJhbAIFC3Byb2dyYW1OYW1lBQdhZGRyZXNzAAAEEXVuY2xhaW1lZFJlZmVycmVyCQELdmFsdWVPckVsc2UCCQCfCAEJARRrZXlVbmNsYWltZWRSZWZlcnJlcgIFC3Byb2dyYW1OYW1lBQdhZGRyZXNzAAAEEXVuY2xhaW1lZFJlZmVycmFsCQELdmFsdWVPckVsc2UCCQCfCAEJARRrZXlVbmNsYWltZWRSZWZlcnJhbAIFC3Byb2dyYW1OYW1lBQdhZGRyZXNzAAAEE2NsYWltZWRUb3RhbEFkZHJlc3MJAGQCBQ9jbGFpbWVkUmVmZXJyZXIFD2NsYWltZWRSZWZlcnJhbAQVdW5jbGFpbWVkVG90YWxBZGRyZXNzCQBkAgURdW5jbGFpbWVkUmVmZXJyZXIFEXVuY2xhaW1lZFJlZmVycmFsCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlDbGFpbWVkVG90YWxBZGRyZXNzAQUHYWRkcmVzcwUTY2xhaW1lZFRvdGFsQWRkcmVzcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGGtleVVuY2xhaW1lZFRvdGFsQWRkcmVzcwEFB2FkZHJlc3MFFXVuY2xhaW1lZFRvdGFsQWRkcmVzcwUDbmlsBQR1bml0AWkBCnNldE1hbmFnZXIBF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BAtjaGVja0NhbGxlcgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIEFWNoZWNrTWFuYWdlclB1YmxpY0tleQkA2QQBBRdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQMJAAACBRVjaGVja01hbmFnZXJQdWJsaWNLZXkFFWNoZWNrTWFuYWdlclB1YmxpY0tleQkAzAgCCQELU3RyaW5nRW50cnkCCQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkABRdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDmNvbmZpcm1NYW5hZ2VyAAQCcG0JAR1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdAAEBWhhc1BNAwkBCWlzRGVmaW5lZAEFAnBtBgkBCHRocm93RXJyAQISbm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFBWhhc1BNBQVoYXNQTQQHY2hlY2tQTQMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAnBtBgkBCHRocm93RXJyAQIbeW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFB2NoZWNrUE0FB2NoZWNrUE0JAMwIAgkBC1N0cmluZ0VudHJ5AgkBE2tleU1hbmFnZXJQdWJsaWNLZXkACQDYBAEJAQV2YWx1ZQEFAnBtCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAED3RhcmdldFB1YmxpY0tleQQHJG1hdGNoMAkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwBQJwawMJAAECBQckbWF0Y2gwAgRVbml0CAUCdHgPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFD3RhcmdldFB1YmxpY0tleZafPb0=", "chainId": 84, "height": 2276551, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: H3BrL4hndd6dN9Ku7ih6gApYseb2NixTAVyF8tcNK72Y Next: FevnM2FvoUUX7Twhrbtewi2AH6EcknAoa8M9h46yXCsC Diff:
Old | New | Differences | |
---|---|---|---|
62 | 62 | func z (s) = makeString(["%s%s", "allReferralPrograms", s], a) | |
63 | 63 | ||
64 | 64 | ||
65 | - | func A (s) = makeString(["%s%s", " | |
65 | + | func A (s) = makeString(["%s%s", "lastIncUnclaimedWithPaymentCallBlock", s], a) | |
66 | 66 | ||
67 | 67 | ||
68 | 68 | func B () = "%s__managerPublicKey" | |
208 | 208 | let av = invoke(this, "claimBulkInternal", [aq, ar, (as + 1)], nil) | |
209 | 209 | if ((av == av)) | |
210 | 210 | then { | |
211 | - | let aw = invoke(this, "claimInternal", [e, aq, false], nil) | |
212 | - | if ((aw == aw)) | |
213 | - | then $Tuple2(nil, [av, aw]) | |
211 | + | let aw = valueOrElse(getInteger(k(e, aq)), 0) | |
212 | + | let ax = if ((aw > 0)) | |
213 | + | then invoke(this, "claimInternal", [e, aq, false], nil) | |
214 | + | else unit | |
215 | + | if ((ax == ax)) | |
216 | + | then $Tuple2(nil, [av, ax]) | |
214 | 217 | else throw("Strict value is not equal to itself.") | |
215 | 218 | } | |
216 | 219 | else throw("Strict value is not equal to itself.") | |
221 | 224 | ||
222 | 225 | ||
223 | 226 | @Callable(Q) | |
224 | - | func incUnclaimedWithPaymentInternal ( | |
227 | + | func incUnclaimedWithPaymentInternal (ay,e,az,as,aA) = { | |
225 | 228 | let at = if ((Q.caller == this)) | |
226 | 229 | then true | |
227 | 230 | else J("permission denied") | |
228 | 231 | if ((at == at)) | |
229 | 232 | then { | |
230 | - | let | |
231 | - | let | |
233 | + | let aB = (size(ay) == size(az)) | |
234 | + | let aC = if (aB) | |
232 | 235 | then true | |
233 | 236 | else J("lists in args must be same size") | |
234 | - | if (( | |
235 | - | then if ((as == size( | |
236 | - | then $Tuple2(nil, | |
237 | + | if ((aC == aC)) | |
238 | + | then if ((as == size(ay))) | |
239 | + | then $Tuple2(nil, aA) | |
237 | 240 | else { | |
238 | - | let f = | |
241 | + | let f = az[as] | |
239 | 242 | let af = valueOrElse(getInteger(t(f)), 0) | |
240 | - | let | |
241 | - | let | |
242 | - | let ak = (af + | |
243 | - | let | |
244 | - | let | |
245 | - | let | |
246 | - | if (( | |
247 | - | then $Tuple2([IntegerEntry(t(f), ak), IntegerEntry(k(e, f), | |
243 | + | let aD = valueOrElse(getInteger(k(e, f)), 0) | |
244 | + | let aE = valueOrElse(getInteger(v(e)), 0) | |
245 | + | let ak = (af + ay[as]) | |
246 | + | let aF = (aD + ay[as]) | |
247 | + | let aG = (aA + ay[as]) | |
248 | + | let aH = invoke(this, "incUnclaimedWithPaymentInternal", [ay, e, az, (as + 1), aG], nil) | |
249 | + | if ((aH == aH)) | |
250 | + | then $Tuple2([IntegerEntry(t(f), ak), IntegerEntry(k(e, f), aF), IntegerEntry(v(e), (aE + ay[as]))], aH) | |
248 | 251 | else throw("Strict value is not equal to itself.") | |
249 | 252 | } | |
250 | 253 | else throw("Strict value is not equal to itself.") | |
255 | 258 | ||
256 | 259 | ||
257 | 260 | @Callable(Q) | |
258 | - | func createReferralProgram (e,ac, | |
261 | + | func createReferralProgram (e,ac,aI,ad) = { | |
259 | 262 | let at = P(Q) | |
260 | 263 | if ((at == at)) | |
261 | 264 | then { | |
262 | - | let | |
265 | + | let aJ = if ((getBoolean(n(e)) == unit)) | |
263 | 266 | then true | |
264 | 267 | else J("program name already exists") | |
265 | - | if (( | |
268 | + | if ((aJ == aJ)) | |
266 | 269 | then { | |
267 | - | let | |
270 | + | let aK = if (!(contains(e, a))) | |
268 | 271 | then !(contains(e, " ")) | |
269 | 272 | else false | |
270 | - | let U = if ( | |
273 | + | let U = if (aK) | |
271 | 274 | then true | |
272 | 275 | else J("invalid program name") | |
273 | 276 | if ((U == U)) | |
274 | 277 | then { | |
275 | - | let | |
278 | + | let aL = if ((assetInfo(fromBase58String(ad)) != unit)) | |
276 | 279 | then true | |
277 | 280 | else J("invalid reward asset id") | |
278 | - | if (( | |
279 | - | then $Tuple2([BooleanEntry(n(e), true), StringEntry(x(e), ac), StringEntry(y(e), | |
281 | + | if ((aL == aL)) | |
282 | + | then $Tuple2([BooleanEntry(n(e), true), StringEntry(x(e), ac), StringEntry(y(e), aI), StringEntry(w(e), ad), IntegerEntry(v(e), 0)], unit) | |
280 | 283 | else throw("Strict value is not equal to itself.") | |
281 | 284 | } | |
282 | 285 | else throw("Strict value is not equal to itself.") | |
289 | 292 | ||
290 | 293 | ||
291 | 294 | @Callable(Q) | |
292 | - | func createPair (e,f,g, | |
295 | + | func createPair (e,f,g,aM) = { | |
293 | 296 | let U = if (valueOrElse(getBoolean(n(e)), false)) | |
294 | 297 | then true | |
295 | 298 | else J("program does not exist") | |
296 | 299 | if ((U == U)) | |
297 | 300 | then { | |
298 | - | let | |
301 | + | let aN = if ((getBoolean(d(e, f, g)) == unit)) | |
299 | 302 | then true | |
300 | 303 | else J("pair already exists") | |
301 | - | if (( | |
304 | + | if ((aN == aN)) | |
302 | 305 | then { | |
303 | - | let | |
306 | + | let aO = if ((f != g)) | |
304 | 307 | then true | |
305 | 308 | else J("cannot refer to self") | |
306 | - | if (( | |
309 | + | if ((aO == aO)) | |
307 | 310 | then { | |
308 | - | let | |
309 | - | let | |
310 | - | let | |
311 | + | let aP = toBytes(makeString([e, f, g], ":")) | |
312 | + | let aQ = fromBase58String(value(getString(c))) | |
313 | + | let aR = if (sigVerify(aP, aM, aQ)) | |
311 | 314 | then true | |
312 | 315 | else J("bad signature") | |
313 | - | if (( | |
316 | + | if ((aR == aR)) | |
314 | 317 | then { | |
315 | - | let | |
316 | - | let | |
317 | - | let | |
318 | - | let | |
318 | + | let aS = valueOrElse(getInteger(o(e, f)), 0) | |
319 | + | let aT = (aS + 1) | |
320 | + | let aU = valueOrElse(getString(z(f)), "") | |
321 | + | let aV = if ((aU == "")) | |
319 | 322 | then e | |
320 | - | else makeString([ | |
321 | - | let | |
322 | - | let | |
323 | + | else makeString([aU, e], a) | |
324 | + | let aW = valueOrElse(getString(z(g)), "") | |
325 | + | let aX = if ((aW == "")) | |
323 | 326 | then e | |
324 | - | else makeString([ | |
325 | - | $Tuple2([BooleanEntry(d(e, f, g), true), IntegerEntry(o(e, f), | |
327 | + | else makeString([aW, e], a) | |
328 | + | $Tuple2([BooleanEntry(d(e, f, g), true), IntegerEntry(o(e, f), aT), StringEntry(m(e, g), f), StringEntry(z(f), aV), StringEntry(z(g), aX)], unit) | |
326 | 329 | } | |
327 | 330 | else throw("Strict value is not equal to itself.") | |
328 | 331 | } | |
336 | 339 | ||
337 | 340 | ||
338 | 341 | @Callable(Q) | |
339 | - | func updateReferralActivity (e,g, | |
340 | - | let | |
341 | - | let | |
342 | + | func updateReferralActivity (e,g,aY) = { | |
343 | + | let aI = value(getString(y(e))) | |
344 | + | let aZ = (getBoolean(q(e, g)) != unit) | |
342 | 345 | let f = value(getString(m(e, g))) | |
343 | - | let at = if ((toString(Q.caller) == | |
346 | + | let at = if ((toString(Q.caller) == aI)) | |
344 | 347 | then true | |
345 | 348 | else J("permission denied") | |
346 | 349 | if ((at == at)) | |
347 | 350 | then { | |
348 | - | let | |
351 | + | let ba = if ((aZ == aY)) | |
349 | 352 | then $Tuple2(nil, unit) | |
350 | 353 | else { | |
351 | - | let | |
354 | + | let ba = if ((aY == true)) | |
352 | 355 | then { | |
353 | - | let | |
354 | - | $Tuple2([BooleanEntry(q(e, g), true), IntegerEntry(p(e, f), | |
356 | + | let bb = (valueOrElse(getInteger(p(e, f)), 0) + 1) | |
357 | + | $Tuple2([BooleanEntry(q(e, g), true), IntegerEntry(p(e, f), bb)], unit) | |
355 | 358 | } | |
356 | 359 | else { | |
357 | - | let | |
358 | - | $Tuple2([DeleteEntry(q(e, g)), IntegerEntry(p(e, f), | |
360 | + | let bb = (valueOrElse(getInteger(p(e, f)), 0) - 1) | |
361 | + | $Tuple2([DeleteEntry(q(e, g)), IntegerEntry(p(e, f), bb)], unit) | |
359 | 362 | } | |
360 | - | | |
363 | + | ba | |
361 | 364 | } | |
362 | - | | |
365 | + | ba | |
363 | 366 | } | |
364 | 367 | else throw("Strict value is not equal to itself.") | |
365 | 368 | } | |
367 | 370 | ||
368 | 371 | ||
369 | 372 | @Callable(Q) | |
370 | - | func incUnclaimed (e,g, | |
371 | - | let | |
372 | - | let at = if ((toString(Q.caller) == | |
373 | + | func incUnclaimed (e,g,bc,bd) = { | |
374 | + | let aI = value(getString(y(e))) | |
375 | + | let at = if ((toString(Q.caller) == aI)) | |
373 | 376 | then true | |
374 | 377 | else J("permission denied") | |
375 | 378 | if ((at == at)) | |
376 | 379 | then { | |
377 | 380 | let f = value(getString(m(e, g))) | |
378 | - | let bd = valueOrElse(getInteger(t(f)), 0) | |
379 | - | let aC = valueOrElse(getInteger(k(e, f)), 0) | |
380 | - | let be = valueOrElse(getInteger(t(g)), 0) | |
381 | - | let bf = valueOrElse(getInteger(l(e, g)), 0) | |
382 | - | let aD = valueOrElse(getInteger(v(e)), 0) | |
383 | - | let bg = (bd + bb) | |
384 | - | let aE = (aC + bb) | |
381 | + | let be = valueOrElse(getInteger(t(f)), 0) | |
382 | + | let aD = valueOrElse(getInteger(k(e, f)), 0) | |
383 | + | let bf = valueOrElse(getInteger(t(g)), 0) | |
384 | + | let bg = valueOrElse(getInteger(l(e, g)), 0) | |
385 | + | let aE = valueOrElse(getInteger(v(e)), 0) | |
385 | 386 | let bh = (be + bc) | |
386 | - | let bi = (bf + bc) | |
387 | - | $Tuple2([IntegerEntry(t(f), bg), IntegerEntry(t(g), bh), IntegerEntry(k(e, f), aE), IntegerEntry(l(e, g), bi), IntegerEntry(v(e), ((aD + bb) + bc))], unit) | |
387 | + | let aF = (aD + bc) | |
388 | + | let bi = (bf + bd) | |
389 | + | let bj = (bg + bd) | |
390 | + | $Tuple2([IntegerEntry(t(f), bh), IntegerEntry(t(g), bi), IntegerEntry(k(e, f), aF), IntegerEntry(l(e, g), bj), IntegerEntry(v(e), ((aE + bc) + bd))], unit) | |
388 | 391 | } | |
389 | 392 | else throw("Strict value is not equal to itself.") | |
390 | 393 | } | |
392 | 395 | ||
393 | 396 | ||
394 | 397 | @Callable(Q) | |
395 | - | func incUnclaimedWithPayment (e, | |
396 | - | let | |
397 | - | let | |
398 | - | let | |
399 | - | let | |
398 | + | func incUnclaimedWithPayment (e,az) = { | |
399 | + | let bk = toString(Q.caller) | |
400 | + | let bl = valueOrElse(getInteger(A(bk)), 0) | |
401 | + | let bm = ((bl - height) + 3) | |
402 | + | let bn = if (((height - 3) > bl)) | |
400 | 403 | then true | |
401 | - | else J(makeString(["wait", toString( | |
402 | - | if (( | |
404 | + | else J(makeString(["wait", toString(bm), "blocks"], " ")) | |
405 | + | if ((bn == bn)) | |
403 | 406 | then { | |
404 | - | func | |
405 | - | let | |
406 | - | let | |
407 | + | func bo (bp,bq) = { | |
408 | + | let br = (toBase58String(value(bq.assetId)) == value(getString(w(e)))) | |
409 | + | let bs = if (br) | |
407 | 410 | then true | |
408 | 411 | else J("invalid asset id") | |
409 | - | if (( | |
410 | - | then ( | |
412 | + | if ((bs == bs)) | |
413 | + | then (bp :+ bq.amount) | |
411 | 414 | else throw("Strict value is not equal to itself.") | |
412 | 415 | } | |
413 | 416 | ||
414 | - | let | |
415 | - | let | |
416 | - | let | |
417 | - | let | |
418 | - | func | |
419 | - | then | |
420 | - | else | |
417 | + | let bt = { | |
418 | + | let bu = Q.payments | |
419 | + | let bv = size(bu) | |
420 | + | let bw = nil | |
421 | + | func bx (by,bz) = if ((bz >= bv)) | |
422 | + | then by | |
423 | + | else bo(by, bu[bz]) | |
421 | 424 | ||
422 | - | func | |
423 | - | then | |
425 | + | func bA (by,bz) = if ((bz >= bv)) | |
426 | + | then by | |
424 | 427 | else throw("List size exceeds 10") | |
425 | 428 | ||
426 | - | | |
429 | + | bA(bx(bx(bx(bx(bx(bx(bx(bx(bx(bx(bw, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
427 | 430 | } | |
428 | - | let | |
429 | - | let | |
430 | - | if ($isInstanceOf( | |
431 | - | then | |
432 | - | else throw(($getType( | |
431 | + | let aA = { | |
432 | + | let bB = invoke(this, "incUnclaimedWithPaymentInternal", [bt, e, az, 0, 0], nil) | |
433 | + | if ($isInstanceOf(bB, "Int")) | |
434 | + | then bB | |
435 | + | else throw(($getType(bB) + " couldn't be cast to Int")) | |
433 | 436 | } | |
434 | - | if (( | |
437 | + | if ((aA == aA)) | |
435 | 438 | then { | |
436 | 439 | let ac = addressFromStringValue(value(getString(x(e)))) | |
437 | 440 | let ad = fromBase58String(value(getString(w(e)))) | |
438 | - | [ScriptTransfer(ac, | |
441 | + | [ScriptTransfer(ac, aA, ad), IntegerEntry(A(bk), height)] | |
439 | 442 | } | |
440 | 443 | else throw("Strict value is not equal to itself.") | |
441 | 444 | } | |
455 | 458 | let i = if (T) | |
456 | 459 | then toString(Q.originCaller) | |
457 | 460 | else toString(Q.caller) | |
458 | - | let | |
459 | - | if (( | |
460 | - | then $Tuple2(nil, | |
461 | + | let bC = invoke(this, "claimInternal", [e, i, T], nil) | |
462 | + | if ((bC == bC)) | |
463 | + | then $Tuple2(nil, bC) | |
461 | 464 | else throw("Strict value is not equal to itself.") | |
462 | 465 | } | |
463 | 466 | else throw("Strict value is not equal to itself.") | |
467 | 470 | ||
468 | 471 | @Callable(Q) | |
469 | 472 | func claimBulk () = { | |
470 | - | let | |
471 | - | let | |
472 | - | let | |
473 | + | let bk = toString(Q.caller) | |
474 | + | let bD = getString(z(toString(Q.caller))) | |
475 | + | let bE = if (isDefined(bD)) | |
473 | 476 | then true | |
474 | 477 | else J("no referral programs") | |
475 | - | if (( | |
478 | + | if ((bE == bE)) | |
476 | 479 | then { | |
477 | - | let | |
478 | - | let | |
479 | - | if (( | |
480 | - | then $Tuple2( | |
480 | + | let bF = split(value(bD), "__") | |
481 | + | let bG = invoke(this, "claimBulkInternal", [bk, bF, 0], nil) | |
482 | + | if ((bG == bG)) | |
483 | + | then $Tuple2(nil, bG) | |
481 | 484 | else throw("Strict value is not equal to itself.") | |
482 | 485 | } | |
483 | 486 | else throw("Strict value is not equal to itself.") | |
497 | 500 | @Callable(Q) | |
498 | 501 | func claimBulkREADONLY (aq) = { | |
499 | 502 | let ae = valueOrElse(getInteger(r(aq)), 0) | |
500 | - | let | |
501 | - | $Tuple2(nil, [ | |
503 | + | let af = valueOrElse(getInteger(t(aq)), 0) | |
504 | + | $Tuple2(nil, [af, ae]) | |
502 | 505 | } | |
503 | 506 | ||
504 | 507 | ||
505 | 508 | ||
506 | 509 | @Callable(Q) | |
507 | 510 | func setTotalKeys (e,s) = { | |
508 | - | let | |
509 | - | let | |
510 | - | let | |
511 | + | let bH = valueOrElse(getInteger(h(e, s)), 0) | |
512 | + | let bI = valueOrElse(getInteger(j(e, s)), 0) | |
513 | + | let aw = valueOrElse(getInteger(k(e, s)), 0) | |
511 | 514 | let bJ = valueOrElse(getInteger(l(e, s)), 0) | |
512 | - | let ae = ( | |
513 | - | let af = ( | |
515 | + | let ae = (bH + bI) | |
516 | + | let af = (aw + bJ) | |
514 | 517 | $Tuple2([IntegerEntry(r(s), ae), IntegerEntry(t(s), af)], unit) | |
515 | 518 | } | |
516 | 519 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = "__" | |
5 | 5 | ||
6 | 6 | func b () = makeString(["%s", "wxAssetId"], a) | |
7 | 7 | ||
8 | 8 | ||
9 | 9 | let c = makeString(["%s", "backendPublicKey"], a) | |
10 | 10 | ||
11 | 11 | func d (e,f,g) = makeString(["%s%s%s%s", "existsReferrerToReferral", e, f, g], a) | |
12 | 12 | ||
13 | 13 | ||
14 | 14 | func h (e,i) = makeString(["%s%s%s", "claimedReferrer", e, i], a) | |
15 | 15 | ||
16 | 16 | ||
17 | 17 | func j (e,i) = makeString(["%s%s%s", "claimedReferral", e, i], a) | |
18 | 18 | ||
19 | 19 | ||
20 | 20 | func k (e,i) = makeString(["%s%s%s", "unclaimedReferrer", e, i], a) | |
21 | 21 | ||
22 | 22 | ||
23 | 23 | func l (e,i) = makeString(["%s%s%s", "unclaimedReferral", e, i], a) | |
24 | 24 | ||
25 | 25 | ||
26 | 26 | func m (e,g) = makeString(["%s%s%s", "referrer", e, g], a) | |
27 | 27 | ||
28 | 28 | ||
29 | 29 | func n (e) = makeString(["%s%s", "programName", e], a) | |
30 | 30 | ||
31 | 31 | ||
32 | 32 | func o (e,f) = makeString(["%s%s%s", "totalReferralCount", e, f], a) | |
33 | 33 | ||
34 | 34 | ||
35 | 35 | func p (e,f) = makeString(["%s%s%s", "activeReferralCount", e, f], a) | |
36 | 36 | ||
37 | 37 | ||
38 | 38 | func q (e,g) = makeString(["%s%s%s", "activeReferral", e, g], a) | |
39 | 39 | ||
40 | 40 | ||
41 | 41 | func r (s) = makeString(["%s%s", "claimedTotalAddress", s], a) | |
42 | 42 | ||
43 | 43 | ||
44 | 44 | func t (s) = makeString(["%s%s", "unclaimedTotalAddress", s], a) | |
45 | 45 | ||
46 | 46 | ||
47 | 47 | func u (e) = makeString(["%s%s", "claimedTotal", e], a) | |
48 | 48 | ||
49 | 49 | ||
50 | 50 | func v (e) = makeString(["%s%s", "rewardsTotal", e], a) | |
51 | 51 | ||
52 | 52 | ||
53 | 53 | func w (e) = makeString(["%s%s", "rewardAssetId", e], a) | |
54 | 54 | ||
55 | 55 | ||
56 | 56 | func x (e) = makeString(["%s%s", "treasuryContract", e], a) | |
57 | 57 | ||
58 | 58 | ||
59 | 59 | func y (e) = makeString(["%s%s", "implementationContract", e], a) | |
60 | 60 | ||
61 | 61 | ||
62 | 62 | func z (s) = makeString(["%s%s", "allReferralPrograms", s], a) | |
63 | 63 | ||
64 | 64 | ||
65 | - | func A (s) = makeString(["%s%s", " | |
65 | + | func A (s) = makeString(["%s%s", "lastIncUnclaimedWithPaymentCallBlock", s], a) | |
66 | 66 | ||
67 | 67 | ||
68 | 68 | func B () = "%s__managerPublicKey" | |
69 | 69 | ||
70 | 70 | ||
71 | 71 | func C () = "%s__pendingManagerPublicKey" | |
72 | 72 | ||
73 | 73 | ||
74 | 74 | func D (e,E,F,G) = makeString(["%s%s%s%s%s", "history", G, e, E, F], a) | |
75 | 75 | ||
76 | 76 | ||
77 | 77 | func H (I) = makeString(["%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(I)], a) | |
78 | 78 | ||
79 | 79 | ||
80 | 80 | func J (K) = throw(makeString(["referral.ride:", K], " ")) | |
81 | 81 | ||
82 | 82 | ||
83 | 83 | func L () = { | |
84 | 84 | let M = getString(B()) | |
85 | 85 | if ($isInstanceOf(M, "String")) | |
86 | 86 | then { | |
87 | 87 | let N = M | |
88 | 88 | fromBase58String(N) | |
89 | 89 | } | |
90 | 90 | else if ($isInstanceOf(M, "Unit")) | |
91 | 91 | then unit | |
92 | 92 | else throw("Match error") | |
93 | 93 | } | |
94 | 94 | ||
95 | 95 | ||
96 | 96 | func O () = { | |
97 | 97 | let M = getString(C()) | |
98 | 98 | if ($isInstanceOf(M, "String")) | |
99 | 99 | then { | |
100 | 100 | let N = M | |
101 | 101 | fromBase58String(N) | |
102 | 102 | } | |
103 | 103 | else if ($isInstanceOf(M, "Unit")) | |
104 | 104 | then unit | |
105 | 105 | else throw("Match error") | |
106 | 106 | } | |
107 | 107 | ||
108 | 108 | ||
109 | 109 | func P (Q) = { | |
110 | 110 | let R = J("permission denied") | |
111 | 111 | let M = L() | |
112 | 112 | if ($isInstanceOf(M, "ByteVector")) | |
113 | 113 | then { | |
114 | 114 | let S = M | |
115 | 115 | if ((Q.callerPublicKey == S)) | |
116 | 116 | then true | |
117 | 117 | else R | |
118 | 118 | } | |
119 | 119 | else if ($isInstanceOf(M, "Unit")) | |
120 | 120 | then if ((Q.caller == this)) | |
121 | 121 | then true | |
122 | 122 | else R | |
123 | 123 | else throw("Match error") | |
124 | 124 | } | |
125 | 125 | ||
126 | 126 | ||
127 | 127 | @Callable(Q) | |
128 | 128 | func claimInternal (e,i,T) = { | |
129 | 129 | let U = if (valueOrElse(getBoolean(n(e)), false)) | |
130 | 130 | then true | |
131 | 131 | else J("program does not exist") | |
132 | 132 | if ((U == U)) | |
133 | 133 | then { | |
134 | 134 | let V = if (T) | |
135 | 135 | then $Tuple5(valueOrElse(getInteger(j(e, i)), 0), valueOrElse(getInteger(l(e, i)), 0), j(e, i), l(e, i), D(e, i, toBase58String(Q.transactionId), "claimReferral")) | |
136 | 136 | else $Tuple5(valueOrElse(getInteger(h(e, i)), 0), valueOrElse(getInteger(k(e, i)), 0), h(e, i), k(e, i), D(e, i, toBase58String(Q.transactionId), "claimReferrer")) | |
137 | 137 | let W = V._1 | |
138 | 138 | let X = V._2 | |
139 | 139 | let Y = V._3 | |
140 | 140 | let Z = V._4 | |
141 | 141 | let aa = V._5 | |
142 | 142 | let ab = valueOrElse(getInteger(u(e)), 0) | |
143 | 143 | let ac = value(addressFromString(value(getString(x(e))))) | |
144 | 144 | let ad = fromBase58String(value(getString(w(e)))) | |
145 | 145 | let ae = valueOrElse(getInteger(r(i)), 0) | |
146 | 146 | let af = valueOrElse(getInteger(t(i)), 0) | |
147 | 147 | if (if (T) | |
148 | 148 | then (X == 0) | |
149 | 149 | else false) | |
150 | 150 | then $Tuple2(nil, 0) | |
151 | 151 | else { | |
152 | 152 | let ag = if ((X > 0)) | |
153 | 153 | then true | |
154 | 154 | else J("nothing to claim") | |
155 | 155 | if ((ag == ag)) | |
156 | 156 | then { | |
157 | 157 | let ah = (W + X) | |
158 | 158 | let ai = (ab + X) | |
159 | 159 | let aj = (ae + X) | |
160 | 160 | let ak = (af - X) | |
161 | 161 | let al = value(assetBalance(this, ad)) | |
162 | 162 | if ((al == al)) | |
163 | 163 | then { | |
164 | 164 | let am = invoke(ac, "withdrawReferralReward", [X], nil) | |
165 | 165 | if ((am == am)) | |
166 | 166 | then { | |
167 | 167 | let an = value(assetBalance(this, ad)) | |
168 | 168 | if ((an == an)) | |
169 | 169 | then { | |
170 | 170 | let ao = (an - al) | |
171 | 171 | if ((ao == ao)) | |
172 | 172 | then { | |
173 | 173 | let ap = if ((ao == X)) | |
174 | 174 | then true | |
175 | 175 | else J("insufficient balance on referral contract") | |
176 | 176 | if ((ap == ap)) | |
177 | 177 | then $Tuple2([IntegerEntry(Y, ah), IntegerEntry(Z, 0), IntegerEntry(u(e), ai), IntegerEntry(r(i), aj), IntegerEntry(t(i), ak), ScriptTransfer(addressFromStringValue(i), X, ad), StringEntry(aa, H(X))], X) | |
178 | 178 | else throw("Strict value is not equal to itself.") | |
179 | 179 | } | |
180 | 180 | else throw("Strict value is not equal to itself.") | |
181 | 181 | } | |
182 | 182 | else throw("Strict value is not equal to itself.") | |
183 | 183 | } | |
184 | 184 | else throw("Strict value is not equal to itself.") | |
185 | 185 | } | |
186 | 186 | else throw("Strict value is not equal to itself.") | |
187 | 187 | } | |
188 | 188 | else throw("Strict value is not equal to itself.") | |
189 | 189 | } | |
190 | 190 | } | |
191 | 191 | else throw("Strict value is not equal to itself.") | |
192 | 192 | } | |
193 | 193 | ||
194 | 194 | ||
195 | 195 | ||
196 | 196 | @Callable(Q) | |
197 | 197 | func claimBulkInternal (aq,ar,as) = { | |
198 | 198 | let at = if ((Q.caller == this)) | |
199 | 199 | then true | |
200 | 200 | else J("permission denied") | |
201 | 201 | if ((at == at)) | |
202 | 202 | then if ((as == size(ar))) | |
203 | 203 | then nil | |
204 | 204 | else { | |
205 | 205 | let e = ar[as] | |
206 | 206 | let au = valueOrElse(getInteger(k(e, aq)), 0) | |
207 | 207 | let aa = D(e, aq, toBase58String(Q.transactionId), "claimBulk") | |
208 | 208 | let av = invoke(this, "claimBulkInternal", [aq, ar, (as + 1)], nil) | |
209 | 209 | if ((av == av)) | |
210 | 210 | then { | |
211 | - | let aw = invoke(this, "claimInternal", [e, aq, false], nil) | |
212 | - | if ((aw == aw)) | |
213 | - | then $Tuple2(nil, [av, aw]) | |
211 | + | let aw = valueOrElse(getInteger(k(e, aq)), 0) | |
212 | + | let ax = if ((aw > 0)) | |
213 | + | then invoke(this, "claimInternal", [e, aq, false], nil) | |
214 | + | else unit | |
215 | + | if ((ax == ax)) | |
216 | + | then $Tuple2(nil, [av, ax]) | |
214 | 217 | else throw("Strict value is not equal to itself.") | |
215 | 218 | } | |
216 | 219 | else throw("Strict value is not equal to itself.") | |
217 | 220 | } | |
218 | 221 | else throw("Strict value is not equal to itself.") | |
219 | 222 | } | |
220 | 223 | ||
221 | 224 | ||
222 | 225 | ||
223 | 226 | @Callable(Q) | |
224 | - | func incUnclaimedWithPaymentInternal ( | |
227 | + | func incUnclaimedWithPaymentInternal (ay,e,az,as,aA) = { | |
225 | 228 | let at = if ((Q.caller == this)) | |
226 | 229 | then true | |
227 | 230 | else J("permission denied") | |
228 | 231 | if ((at == at)) | |
229 | 232 | then { | |
230 | - | let | |
231 | - | let | |
233 | + | let aB = (size(ay) == size(az)) | |
234 | + | let aC = if (aB) | |
232 | 235 | then true | |
233 | 236 | else J("lists in args must be same size") | |
234 | - | if (( | |
235 | - | then if ((as == size( | |
236 | - | then $Tuple2(nil, | |
237 | + | if ((aC == aC)) | |
238 | + | then if ((as == size(ay))) | |
239 | + | then $Tuple2(nil, aA) | |
237 | 240 | else { | |
238 | - | let f = | |
241 | + | let f = az[as] | |
239 | 242 | let af = valueOrElse(getInteger(t(f)), 0) | |
240 | - | let | |
241 | - | let | |
242 | - | let ak = (af + | |
243 | - | let | |
244 | - | let | |
245 | - | let | |
246 | - | if (( | |
247 | - | then $Tuple2([IntegerEntry(t(f), ak), IntegerEntry(k(e, f), | |
243 | + | let aD = valueOrElse(getInteger(k(e, f)), 0) | |
244 | + | let aE = valueOrElse(getInteger(v(e)), 0) | |
245 | + | let ak = (af + ay[as]) | |
246 | + | let aF = (aD + ay[as]) | |
247 | + | let aG = (aA + ay[as]) | |
248 | + | let aH = invoke(this, "incUnclaimedWithPaymentInternal", [ay, e, az, (as + 1), aG], nil) | |
249 | + | if ((aH == aH)) | |
250 | + | then $Tuple2([IntegerEntry(t(f), ak), IntegerEntry(k(e, f), aF), IntegerEntry(v(e), (aE + ay[as]))], aH) | |
248 | 251 | else throw("Strict value is not equal to itself.") | |
249 | 252 | } | |
250 | 253 | else throw("Strict value is not equal to itself.") | |
251 | 254 | } | |
252 | 255 | else throw("Strict value is not equal to itself.") | |
253 | 256 | } | |
254 | 257 | ||
255 | 258 | ||
256 | 259 | ||
257 | 260 | @Callable(Q) | |
258 | - | func createReferralProgram (e,ac, | |
261 | + | func createReferralProgram (e,ac,aI,ad) = { | |
259 | 262 | let at = P(Q) | |
260 | 263 | if ((at == at)) | |
261 | 264 | then { | |
262 | - | let | |
265 | + | let aJ = if ((getBoolean(n(e)) == unit)) | |
263 | 266 | then true | |
264 | 267 | else J("program name already exists") | |
265 | - | if (( | |
268 | + | if ((aJ == aJ)) | |
266 | 269 | then { | |
267 | - | let | |
270 | + | let aK = if (!(contains(e, a))) | |
268 | 271 | then !(contains(e, " ")) | |
269 | 272 | else false | |
270 | - | let U = if ( | |
273 | + | let U = if (aK) | |
271 | 274 | then true | |
272 | 275 | else J("invalid program name") | |
273 | 276 | if ((U == U)) | |
274 | 277 | then { | |
275 | - | let | |
278 | + | let aL = if ((assetInfo(fromBase58String(ad)) != unit)) | |
276 | 279 | then true | |
277 | 280 | else J("invalid reward asset id") | |
278 | - | if (( | |
279 | - | then $Tuple2([BooleanEntry(n(e), true), StringEntry(x(e), ac), StringEntry(y(e), | |
281 | + | if ((aL == aL)) | |
282 | + | then $Tuple2([BooleanEntry(n(e), true), StringEntry(x(e), ac), StringEntry(y(e), aI), StringEntry(w(e), ad), IntegerEntry(v(e), 0)], unit) | |
280 | 283 | else throw("Strict value is not equal to itself.") | |
281 | 284 | } | |
282 | 285 | else throw("Strict value is not equal to itself.") | |
283 | 286 | } | |
284 | 287 | else throw("Strict value is not equal to itself.") | |
285 | 288 | } | |
286 | 289 | else throw("Strict value is not equal to itself.") | |
287 | 290 | } | |
288 | 291 | ||
289 | 292 | ||
290 | 293 | ||
291 | 294 | @Callable(Q) | |
292 | - | func createPair (e,f,g, | |
295 | + | func createPair (e,f,g,aM) = { | |
293 | 296 | let U = if (valueOrElse(getBoolean(n(e)), false)) | |
294 | 297 | then true | |
295 | 298 | else J("program does not exist") | |
296 | 299 | if ((U == U)) | |
297 | 300 | then { | |
298 | - | let | |
301 | + | let aN = if ((getBoolean(d(e, f, g)) == unit)) | |
299 | 302 | then true | |
300 | 303 | else J("pair already exists") | |
301 | - | if (( | |
304 | + | if ((aN == aN)) | |
302 | 305 | then { | |
303 | - | let | |
306 | + | let aO = if ((f != g)) | |
304 | 307 | then true | |
305 | 308 | else J("cannot refer to self") | |
306 | - | if (( | |
309 | + | if ((aO == aO)) | |
307 | 310 | then { | |
308 | - | let | |
309 | - | let | |
310 | - | let | |
311 | + | let aP = toBytes(makeString([e, f, g], ":")) | |
312 | + | let aQ = fromBase58String(value(getString(c))) | |
313 | + | let aR = if (sigVerify(aP, aM, aQ)) | |
311 | 314 | then true | |
312 | 315 | else J("bad signature") | |
313 | - | if (( | |
316 | + | if ((aR == aR)) | |
314 | 317 | then { | |
315 | - | let | |
316 | - | let | |
317 | - | let | |
318 | - | let | |
318 | + | let aS = valueOrElse(getInteger(o(e, f)), 0) | |
319 | + | let aT = (aS + 1) | |
320 | + | let aU = valueOrElse(getString(z(f)), "") | |
321 | + | let aV = if ((aU == "")) | |
319 | 322 | then e | |
320 | - | else makeString([ | |
321 | - | let | |
322 | - | let | |
323 | + | else makeString([aU, e], a) | |
324 | + | let aW = valueOrElse(getString(z(g)), "") | |
325 | + | let aX = if ((aW == "")) | |
323 | 326 | then e | |
324 | - | else makeString([ | |
325 | - | $Tuple2([BooleanEntry(d(e, f, g), true), IntegerEntry(o(e, f), | |
327 | + | else makeString([aW, e], a) | |
328 | + | $Tuple2([BooleanEntry(d(e, f, g), true), IntegerEntry(o(e, f), aT), StringEntry(m(e, g), f), StringEntry(z(f), aV), StringEntry(z(g), aX)], unit) | |
326 | 329 | } | |
327 | 330 | else throw("Strict value is not equal to itself.") | |
328 | 331 | } | |
329 | 332 | else throw("Strict value is not equal to itself.") | |
330 | 333 | } | |
331 | 334 | else throw("Strict value is not equal to itself.") | |
332 | 335 | } | |
333 | 336 | else throw("Strict value is not equal to itself.") | |
334 | 337 | } | |
335 | 338 | ||
336 | 339 | ||
337 | 340 | ||
338 | 341 | @Callable(Q) | |
339 | - | func updateReferralActivity (e,g, | |
340 | - | let | |
341 | - | let | |
342 | + | func updateReferralActivity (e,g,aY) = { | |
343 | + | let aI = value(getString(y(e))) | |
344 | + | let aZ = (getBoolean(q(e, g)) != unit) | |
342 | 345 | let f = value(getString(m(e, g))) | |
343 | - | let at = if ((toString(Q.caller) == | |
346 | + | let at = if ((toString(Q.caller) == aI)) | |
344 | 347 | then true | |
345 | 348 | else J("permission denied") | |
346 | 349 | if ((at == at)) | |
347 | 350 | then { | |
348 | - | let | |
351 | + | let ba = if ((aZ == aY)) | |
349 | 352 | then $Tuple2(nil, unit) | |
350 | 353 | else { | |
351 | - | let | |
354 | + | let ba = if ((aY == true)) | |
352 | 355 | then { | |
353 | - | let | |
354 | - | $Tuple2([BooleanEntry(q(e, g), true), IntegerEntry(p(e, f), | |
356 | + | let bb = (valueOrElse(getInteger(p(e, f)), 0) + 1) | |
357 | + | $Tuple2([BooleanEntry(q(e, g), true), IntegerEntry(p(e, f), bb)], unit) | |
355 | 358 | } | |
356 | 359 | else { | |
357 | - | let | |
358 | - | $Tuple2([DeleteEntry(q(e, g)), IntegerEntry(p(e, f), | |
360 | + | let bb = (valueOrElse(getInteger(p(e, f)), 0) - 1) | |
361 | + | $Tuple2([DeleteEntry(q(e, g)), IntegerEntry(p(e, f), bb)], unit) | |
359 | 362 | } | |
360 | - | | |
363 | + | ba | |
361 | 364 | } | |
362 | - | | |
365 | + | ba | |
363 | 366 | } | |
364 | 367 | else throw("Strict value is not equal to itself.") | |
365 | 368 | } | |
366 | 369 | ||
367 | 370 | ||
368 | 371 | ||
369 | 372 | @Callable(Q) | |
370 | - | func incUnclaimed (e,g, | |
371 | - | let | |
372 | - | let at = if ((toString(Q.caller) == | |
373 | + | func incUnclaimed (e,g,bc,bd) = { | |
374 | + | let aI = value(getString(y(e))) | |
375 | + | let at = if ((toString(Q.caller) == aI)) | |
373 | 376 | then true | |
374 | 377 | else J("permission denied") | |
375 | 378 | if ((at == at)) | |
376 | 379 | then { | |
377 | 380 | let f = value(getString(m(e, g))) | |
378 | - | let bd = valueOrElse(getInteger(t(f)), 0) | |
379 | - | let aC = valueOrElse(getInteger(k(e, f)), 0) | |
380 | - | let be = valueOrElse(getInteger(t(g)), 0) | |
381 | - | let bf = valueOrElse(getInteger(l(e, g)), 0) | |
382 | - | let aD = valueOrElse(getInteger(v(e)), 0) | |
383 | - | let bg = (bd + bb) | |
384 | - | let aE = (aC + bb) | |
381 | + | let be = valueOrElse(getInteger(t(f)), 0) | |
382 | + | let aD = valueOrElse(getInteger(k(e, f)), 0) | |
383 | + | let bf = valueOrElse(getInteger(t(g)), 0) | |
384 | + | let bg = valueOrElse(getInteger(l(e, g)), 0) | |
385 | + | let aE = valueOrElse(getInteger(v(e)), 0) | |
385 | 386 | let bh = (be + bc) | |
386 | - | let bi = (bf + bc) | |
387 | - | $Tuple2([IntegerEntry(t(f), bg), IntegerEntry(t(g), bh), IntegerEntry(k(e, f), aE), IntegerEntry(l(e, g), bi), IntegerEntry(v(e), ((aD + bb) + bc))], unit) | |
387 | + | let aF = (aD + bc) | |
388 | + | let bi = (bf + bd) | |
389 | + | let bj = (bg + bd) | |
390 | + | $Tuple2([IntegerEntry(t(f), bh), IntegerEntry(t(g), bi), IntegerEntry(k(e, f), aF), IntegerEntry(l(e, g), bj), IntegerEntry(v(e), ((aE + bc) + bd))], unit) | |
388 | 391 | } | |
389 | 392 | else throw("Strict value is not equal to itself.") | |
390 | 393 | } | |
391 | 394 | ||
392 | 395 | ||
393 | 396 | ||
394 | 397 | @Callable(Q) | |
395 | - | func incUnclaimedWithPayment (e, | |
396 | - | let | |
397 | - | let | |
398 | - | let | |
399 | - | let | |
398 | + | func incUnclaimedWithPayment (e,az) = { | |
399 | + | let bk = toString(Q.caller) | |
400 | + | let bl = valueOrElse(getInteger(A(bk)), 0) | |
401 | + | let bm = ((bl - height) + 3) | |
402 | + | let bn = if (((height - 3) > bl)) | |
400 | 403 | then true | |
401 | - | else J(makeString(["wait", toString( | |
402 | - | if (( | |
404 | + | else J(makeString(["wait", toString(bm), "blocks"], " ")) | |
405 | + | if ((bn == bn)) | |
403 | 406 | then { | |
404 | - | func | |
405 | - | let | |
406 | - | let | |
407 | + | func bo (bp,bq) = { | |
408 | + | let br = (toBase58String(value(bq.assetId)) == value(getString(w(e)))) | |
409 | + | let bs = if (br) | |
407 | 410 | then true | |
408 | 411 | else J("invalid asset id") | |
409 | - | if (( | |
410 | - | then ( | |
412 | + | if ((bs == bs)) | |
413 | + | then (bp :+ bq.amount) | |
411 | 414 | else throw("Strict value is not equal to itself.") | |
412 | 415 | } | |
413 | 416 | ||
414 | - | let | |
415 | - | let | |
416 | - | let | |
417 | - | let | |
418 | - | func | |
419 | - | then | |
420 | - | else | |
417 | + | let bt = { | |
418 | + | let bu = Q.payments | |
419 | + | let bv = size(bu) | |
420 | + | let bw = nil | |
421 | + | func bx (by,bz) = if ((bz >= bv)) | |
422 | + | then by | |
423 | + | else bo(by, bu[bz]) | |
421 | 424 | ||
422 | - | func | |
423 | - | then | |
425 | + | func bA (by,bz) = if ((bz >= bv)) | |
426 | + | then by | |
424 | 427 | else throw("List size exceeds 10") | |
425 | 428 | ||
426 | - | | |
429 | + | bA(bx(bx(bx(bx(bx(bx(bx(bx(bx(bx(bw, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
427 | 430 | } | |
428 | - | let | |
429 | - | let | |
430 | - | if ($isInstanceOf( | |
431 | - | then | |
432 | - | else throw(($getType( | |
431 | + | let aA = { | |
432 | + | let bB = invoke(this, "incUnclaimedWithPaymentInternal", [bt, e, az, 0, 0], nil) | |
433 | + | if ($isInstanceOf(bB, "Int")) | |
434 | + | then bB | |
435 | + | else throw(($getType(bB) + " couldn't be cast to Int")) | |
433 | 436 | } | |
434 | - | if (( | |
437 | + | if ((aA == aA)) | |
435 | 438 | then { | |
436 | 439 | let ac = addressFromStringValue(value(getString(x(e)))) | |
437 | 440 | let ad = fromBase58String(value(getString(w(e)))) | |
438 | - | [ScriptTransfer(ac, | |
441 | + | [ScriptTransfer(ac, aA, ad), IntegerEntry(A(bk), height)] | |
439 | 442 | } | |
440 | 443 | else throw("Strict value is not equal to itself.") | |
441 | 444 | } | |
442 | 445 | else throw("Strict value is not equal to itself.") | |
443 | 446 | } | |
444 | 447 | ||
445 | 448 | ||
446 | 449 | ||
447 | 450 | @Callable(Q) | |
448 | 451 | func claim (e) = { | |
449 | 452 | let U = if (valueOrElse(getBoolean(n(e)), false)) | |
450 | 453 | then true | |
451 | 454 | else J("program does not exist") | |
452 | 455 | if ((U == U)) | |
453 | 456 | then { | |
454 | 457 | let T = (toString(Q.caller) == value(getString(y(e)))) | |
455 | 458 | let i = if (T) | |
456 | 459 | then toString(Q.originCaller) | |
457 | 460 | else toString(Q.caller) | |
458 | - | let | |
459 | - | if (( | |
460 | - | then $Tuple2(nil, | |
461 | + | let bC = invoke(this, "claimInternal", [e, i, T], nil) | |
462 | + | if ((bC == bC)) | |
463 | + | then $Tuple2(nil, bC) | |
461 | 464 | else throw("Strict value is not equal to itself.") | |
462 | 465 | } | |
463 | 466 | else throw("Strict value is not equal to itself.") | |
464 | 467 | } | |
465 | 468 | ||
466 | 469 | ||
467 | 470 | ||
468 | 471 | @Callable(Q) | |
469 | 472 | func claimBulk () = { | |
470 | - | let | |
471 | - | let | |
472 | - | let | |
473 | + | let bk = toString(Q.caller) | |
474 | + | let bD = getString(z(toString(Q.caller))) | |
475 | + | let bE = if (isDefined(bD)) | |
473 | 476 | then true | |
474 | 477 | else J("no referral programs") | |
475 | - | if (( | |
478 | + | if ((bE == bE)) | |
476 | 479 | then { | |
477 | - | let | |
478 | - | let | |
479 | - | if (( | |
480 | - | then $Tuple2( | |
480 | + | let bF = split(value(bD), "__") | |
481 | + | let bG = invoke(this, "claimBulkInternal", [bk, bF, 0], nil) | |
482 | + | if ((bG == bG)) | |
483 | + | then $Tuple2(nil, bG) | |
481 | 484 | else throw("Strict value is not equal to itself.") | |
482 | 485 | } | |
483 | 486 | else throw("Strict value is not equal to itself.") | |
484 | 487 | } | |
485 | 488 | ||
486 | 489 | ||
487 | 490 | ||
488 | 491 | @Callable(Q) | |
489 | 492 | func claimREADONLY (e,E) = { | |
490 | 493 | let W = valueOrElse(getInteger(h(e, E)), 0) | |
491 | 494 | let X = valueOrElse(getInteger(k(e, E)), 0) | |
492 | 495 | $Tuple2(nil, [X, W]) | |
493 | 496 | } | |
494 | 497 | ||
495 | 498 | ||
496 | 499 | ||
497 | 500 | @Callable(Q) | |
498 | 501 | func claimBulkREADONLY (aq) = { | |
499 | 502 | let ae = valueOrElse(getInteger(r(aq)), 0) | |
500 | - | let | |
501 | - | $Tuple2(nil, [ | |
503 | + | let af = valueOrElse(getInteger(t(aq)), 0) | |
504 | + | $Tuple2(nil, [af, ae]) | |
502 | 505 | } | |
503 | 506 | ||
504 | 507 | ||
505 | 508 | ||
506 | 509 | @Callable(Q) | |
507 | 510 | func setTotalKeys (e,s) = { | |
508 | - | let | |
509 | - | let | |
510 | - | let | |
511 | + | let bH = valueOrElse(getInteger(h(e, s)), 0) | |
512 | + | let bI = valueOrElse(getInteger(j(e, s)), 0) | |
513 | + | let aw = valueOrElse(getInteger(k(e, s)), 0) | |
511 | 514 | let bJ = valueOrElse(getInteger(l(e, s)), 0) | |
512 | - | let ae = ( | |
513 | - | let af = ( | |
515 | + | let ae = (bH + bI) | |
516 | + | let af = (aw + bJ) | |
514 | 517 | $Tuple2([IntegerEntry(r(s), ae), IntegerEntry(t(s), af)], unit) | |
515 | 518 | } | |
516 | 519 | ||
517 | 520 | ||
518 | 521 | ||
519 | 522 | @Callable(Q) | |
520 | 523 | func setManager (bK) = { | |
521 | 524 | let at = P(Q) | |
522 | 525 | if ((at == at)) | |
523 | 526 | then { | |
524 | 527 | let bL = fromBase58String(bK) | |
525 | 528 | if ((bL == bL)) | |
526 | 529 | then [StringEntry(C(), bK)] | |
527 | 530 | else throw("Strict value is not equal to itself.") | |
528 | 531 | } | |
529 | 532 | else throw("Strict value is not equal to itself.") | |
530 | 533 | } | |
531 | 534 | ||
532 | 535 | ||
533 | 536 | ||
534 | 537 | @Callable(Q) | |
535 | 538 | func confirmManager () = { | |
536 | 539 | let bM = O() | |
537 | 540 | let bN = if (isDefined(bM)) | |
538 | 541 | then true | |
539 | 542 | else J("no pending manager") | |
540 | 543 | if ((bN == bN)) | |
541 | 544 | then { | |
542 | 545 | let bO = if ((Q.callerPublicKey == value(bM))) | |
543 | 546 | then true | |
544 | 547 | else J("you are not pending manager") | |
545 | 548 | if ((bO == bO)) | |
546 | 549 | then [StringEntry(B(), toBase58String(value(bM))), DeleteEntry(C())] | |
547 | 550 | else throw("Strict value is not equal to itself.") | |
548 | 551 | } | |
549 | 552 | else throw("Strict value is not equal to itself.") | |
550 | 553 | } | |
551 | 554 | ||
552 | 555 | ||
553 | 556 | @Verifier(bP) | |
554 | 557 | func bQ () = { | |
555 | 558 | let bR = { | |
556 | 559 | let M = L() | |
557 | 560 | if ($isInstanceOf(M, "ByteVector")) | |
558 | 561 | then { | |
559 | 562 | let S = M | |
560 | 563 | S | |
561 | 564 | } | |
562 | 565 | else if ($isInstanceOf(M, "Unit")) | |
563 | 566 | then bP.senderPublicKey | |
564 | 567 | else throw("Match error") | |
565 | 568 | } | |
566 | 569 | sigVerify(bP.bodyBytes, bP.proofs[0], bR) | |
567 | 570 | } | |
568 | 571 |
github/deemru/w8io/169f3d6 119.62 ms ◑