tx · RBc1d7tquVPDujPCr74Le64N5dHzHujQ1riwBEPfPXn

3N8qV3cjfyQC6D7BFdcBrDRgvJkF8j68Gft:  -0.03000000 Waves

2023.02.15 13:41 [2450614] smart account 3N8qV3cjfyQC6D7BFdcBrDRgvJkF8j68Gft > SELF 0.00000000 Waves

{ "type": 13, "id": "RBc1d7tquVPDujPCr74Le64N5dHzHujQ1riwBEPfPXn", "fee": 3000000, "feeAssetId": null, "timestamp": 1676457696827, "version": 2, "chainId": 84, "sender": "3N8qV3cjfyQC6D7BFdcBrDRgvJkF8j68Gft", "senderPublicKey": "Dwq9QnZbnZDWTiYELd4ztRaExuWzcd8g7ALtnFjtJXXj", "proofs": [ "MWF59ty7FaM3g7gXQnC29NkGMwaoKPGP9qJtDSge31Vitkyp2LdrGQkr9ffbo1r7AGGawDLPKCkJn73isnVoFVf" ], "script": "base64:BgKfAQgCEgASBAoCCAgSAwoBCBIKCggICAgICAgIARIDCgEIEgYKBAgICAgSBAoCCBgSAwoBCBIECgIIGBIDCgEIEgASAwoBGBIKCggICAgICAEICBIECgIIARIDCgEBEgMKAQESBAoCCAESBgoECAgICBIECgIICBIECgIICBIECgIICBIDCgEIEgMKAQgSAwoBCBIDCgEIEgMKAQgSAwoBCGYABlNDQUxFOAAIAAVNVUxUOACAwtcvAAdTQ0FMRTE4ABIABk1VTFQxOAkAtgIBAICAkLu61q3wDQAOUE9PTFdFSUdIVE1VTFQFBU1VTFQ4AA5HV1h2aXJ0dWFsUE9PTAIOR1dYdmlydHVhbFBPT0wADGxhYmVsUG9vbHNMcAIIUE9PTFNfTFAADWRlZmF1bHRTcHJlYWQAgIl6ABFkZWNpbWFsc011bHRQcmljZQkAaAIJAGgCAGQA6AcA6AcAA1NFUAICX18ABUVNUFRZAgAAClBvb2xBY3RpdmUAAQAPUG9vbFB1dERpc2FibGVkAAIAE1Bvb2xNYXRjaGVyRGlzYWJsZWQAAwAMUG9vbFNodXRkb3duAAQAEmlkeEludGVybmFsQXNzZXRJZAABAA9pZHhSZXN1dEFjdGlvbnMAAgAgaWR4SWZBc3NldElkQ2FsY3VsYXRpb25QZXJmb3JtZWQAAwAOaWR4UG9vbEFkZHJlc3MAAQANaWR4UG9vbFN0YXR1cwACABBpZHhQb29sTFBBc3NldElkAAMADWlkeEFtdEFzc2V0SWQABAAPaWR4UHJpY2VBc3NldElkAAUADmlkeEFtdEFzc2V0RGNtAAYAEGlkeFByaWNlQXNzZXREY20ABwAOaWR4SUFtdEFzc2V0SWQACAAQaWR4SVByaWNlQXNzZXRJZAAJAA1pZHhMUEFzc2V0RGNtAAoAC2lkeFBvb2xUeXBlAAsAE3Bvb2xMYWJlbFd4RW1pc3Npb24CC1dYX0VNSVNTSU9OAA92YWxpZFBvb2xMYWJlbHMJAMwIAgUTcG9vbExhYmVsV3hFbWlzc2lvbgUDbmlsARZrZXlBbGxvd2VkTHBTY3JpcHRIYXNoAAIXJXNfX2FsbG93ZWRMcFNjcmlwdEhhc2gBHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gAAh0lc19fYWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaAEha2V5QWxsb3dlZExwU3RhYmxlQWRkb25TY3JpcHRIYXNoAAIiJXNfX2FsbG93ZWRMcFN0YWJsZUFkZG9uU2NyaXB0SGFzaAEMc3dhcENvbnRyYWN0AAIQJXNfX3N3YXBDb250cmFjdAEQa2V5RmFjdG9yeUNvbmZpZwACESVzX19mYWN0b3J5Q29uZmlnAQ9rZXlMcFRva2Vuc0xpc3QAAhAlc19fbHBUb2tlbnNMaXN0ARFrZXlQb29sU2NyaXB0SGFzaAACFiVzJXNfX3Bvb2xfX3NjcmlwdEhhc2gBDWtleU1hdGNoZXJQdWIAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBGGtleUxlZ2FjeUZhY3RvcnlDb250cmFjdAACGSVzX19sZWdhY3lGYWN0b3J5Q29udHJhY3QBDmtleUxlZ2FjeVBvb2xzAAIPJXNfX2xlZ2FjeVBvb2xzARNrZXlNYW5hZ2VyUHVibGljS2V5AAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQ9rZXlBZG1pblB1YktleXMAAhAlc19fYWRtaW5QdWJLZXlzARZrZXlBc3NldHNTdG9yZUNvbnRyYWN0AAIXJXNfX2Fzc2V0c1N0b3JlQ29udHJhY3QBGWtleVZvdGluZ0VtaXNzaW9uQ29udHJhY3QAAholc19fdm90aW5nRW1pc3Npb25Db250cmFjdAEOa2V5UHJpY2VBc3NldHMACQC5CQIJAMwIAgICJXMJAMwIAgILcHJpY2VBc3NldHMFA25pbAUDU0VQARBrZXlQcmljZURlY2ltYWxzAAIRJXNfX3ByaWNlRGVjaW1hbHMBE2tleUFsbFBvb2xzU2h1dGRvd24AAgwlc19fc2h1dGRvd24BFmtleU5leHRJbnRlcm5hbEFzc2V0SWQAAhclc19fbmV4dEludGVybmFsQXNzZXRJZAEPa2V5UG9vbFRvV2VpZ2h0AQtwb29sQWRkcmVzcwkArAICAhIlcyVzX19wb29sV2VpZ2h0X18FC3Bvb2xBZGRyZXNzARZrZXlQb29sVG9XZWlnaHRIaXN0b3J5Agtwb29sQWRkcmVzcwNudW0JAKwCAgkArAICCQCsAgICEiVzJXNfX3Bvb2xXZWlnaHRfXwULcG9vbEFkZHJlc3MCAl9fCQCkAwEFA251bQEfa2V5TWFwcGluZ3NJbnRlcm5hbDJiYXNlQXNzZXRJZAERaW50ZXJuYWxCYXNlQXNzZXQJAKwCAgIoJXMlcyVkX19tYXBwaW5nc19faW50ZXJuYWwyYmFzZUFzc2V0SWRfXwkApAMBBRFpbnRlcm5hbEJhc2VBc3NldAEfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAEMYmFzZUFzc2V0U3RyCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FDGJhc2VBc3NldFN0cgENa2V5UG9vbENvbmZpZwITYW1vdW50QXNzZXRJbnRlcm5hbBJwcmljZUFzc2V0SW50ZXJuYWwJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FE2Ftb3VudEFzc2V0SW50ZXJuYWwCAl9fBRJwcmljZUFzc2V0SW50ZXJuYWwCCF9fY29uZmlnASFrZXlQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQBDmFzc2V0c0ludGVybmFsBAskdDAzNzAwMzc2MgUOYXNzZXRzSW50ZXJuYWwEE2Ftb3VudEFzc2V0SW50ZXJuYWwIBQskdDAzNzAwMzc2MgJfMQQScHJpY2VBc3NldEludGVybmFsCAULJHQwMzcwMDM3NjICXzIJALkJAgkAzAgCAgYlZCVkJXMJAMwIAgkApAMBBRNhbW91bnRBc3NldEludGVybmFsCQDMCAIJAKQDAQUScHJpY2VBc3NldEludGVybmFsCQDMCAICGm9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkBQNuaWwFA1NFUAEla2V5QWxsUG9vbHNPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZAAJALkJAgkAzAgCAgIlcwkAzAgCAhpvbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZAUDbmlsBQNTRVABHWtleU1hcHBpbmdMcEFzc2V0VG9Qb29sQXNzZXRzAQpscEFzc2V0U3RyCQCsAgIJAKwCAgIIJXMlcyVzX18FCmxwQXNzZXRTdHICGF9fbWFwcGluZ3NfX2xwQXNzZXQyUG9vbAEda2V5TWFwcGluZ1Bvb2xBc3NldHNUb0xwYXNzZXQCGGludGVybmFsQW1vdW50QXNzZXRJZFN0chdpbnRlcm5hbFByaWNlQXNzZXRJZFN0cgkArAICCQCsAgIJAKwCAgkArAICAgolZCVkJXMlc19fBRhpbnRlcm5hbEFtb3VudEFzc2V0SWRTdHICAl9fBRdpbnRlcm5hbFByaWNlQXNzZXRJZFN0cgIeX19tYXBwaW5nc19fUG9vbEFzc2V0czJMcEFzc2V0AQ1rZXlQb29sU3ByZWFkAQtwb29sQWRkcmVzcwkArAICAg4lcyVzX19zcHJlYWRfXwULcG9vbEFkZHJlc3MBKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzARNwb29sQ29udHJhY3RBZGRyZXNzCQCsAgIJAKwCAgIIJXMlcyVzX18FE3Bvb2xDb250cmFjdEFkZHJlc3MCI19fbWFwcGluZ3NfX3Bvb2xDb250cmFjdDJQb29sQXNzZXRzASlrZXlNYXBwaW5nUG9vbEFzc2V0c1RvUG9vbENvbnRyYWN0QWRkcmVzcwIYaW50ZXJuYWxBbW91bnRBc3NldElkU3RyF2ludGVybmFsUHJpY2VBc3NldElkU3RyCQCsAgIJAKwCAgkArAICCQCsAgICCiVkJWQlcyVzX18JAKQDAQUYaW50ZXJuYWxBbW91bnRBc3NldElkU3RyAgJfXwkApAMBBRdpbnRlcm5hbFByaWNlQXNzZXRJZFN0cgIjX19tYXBwaW5nc19fcG9vbEFzc2V0czJQb29sQ29udHJhY3QBH2tleU1hcHBpbmdQb29sQ29udHJhY3RUb0xQQXNzZXQBE3Bvb2xDb250cmFjdEFkZHJlc3MJAKwCAgkArAICAgglcyVzJXNfXwUTcG9vbENvbnRyYWN0QWRkcmVzcwIgX19tYXBwaW5nc19fcG9vbENvbnRyYWN0MkxwQXNzZXQBKmtleU1hcHBpbmdQb29sTFBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcwEKbHBBc3NldFN0cgkArAICCQCsAgICCCVzJXMlc19fBQpscEFzc2V0U3RyAiBfX21hcHBpbmdzX19scEFzc2V0MlBvb2xDb250cmFjdAENa2V5V3hFbWlzc2lvbgINYW1vdW50QXNzZXRJZAxwcmljZUFzc2V0SWQJAKwCAgkArAICCQCsAgICFCVzJXMlc19fd3hFbWlzc2lvbl9fBQ1hbW91bnRBc3NldElkAgJfXwUMcHJpY2VBc3NldElkAQhrZXlJbkZlZQELcG9vbEFkZHJlc3MJAKwCAgINJXMlc19faW5GZWVfXwULcG9vbEFkZHJlc3MBD2tleUluRmVlRGVmYXVsdAACECVzX19pbkZlZURlZmF1bHQBCWtleU91dEZlZQELcG9vbEFkZHJlc3MJAKwCAgIOJXMlc19fb3V0RmVlX18FC3Bvb2xBZGRyZXNzARBrZXlPdXRGZWVEZWZhdWx0AAIRJXNfX291dEZlZURlZmF1bHQBD2dldFN0cmluZ09yRmFpbAEDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUDa2V5CQCsAgICFU5vIGRhdGEgZm9yIHRoaXMua2V5PQUDa2V5ARBnZXRCb29sZWFuT3JGYWlsAQNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmwgCBQR0aGlzBQNrZXkJAKwCAgIVTm8gZGF0YSBmb3IgdGhpcy5rZXk9BQNrZXkBDGdldEludE9yRmFpbAEDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwUDa2V5CQCsAgICFU5vIGRhdGEgZm9yIHRoaXMua2V5PQUDa2V5ABhJZHhGYWN0b3J5Q2ZnU3Rha2luZ0RhcHAAAQAZSWR4RmFjdG9yeUNmZ0Jvb3N0aW5nRGFwcAACABRJZHhGYWN0b3J5Q2ZnSWRvRGFwcAADABVJZHhGYWN0b3J5Q2ZnVGVhbURhcHAABAAZSWR4RmFjdG9yeUNmZ0VtaXNzaW9uRGFwcAAFABVJZHhGYWN0b3J5Q2ZnUmVzdERhcHAABgAZSWR4RmFjdG9yeUNmZ1NsaXBwYWdlRGFwcAAHABRJZHhGYWN0b3J5Q2ZnRGFvRGFwcAAIABpJZHhGYWN0b3J5Q2ZnTWFya2V0aW5nRGFwcAAJABpJZHhGYWN0b3J5Q2ZnR3d4UmV3YXJkRGFwcAAKABZJZHhGYWN0b3J5Q2ZnQmlyZHNEYXBwAAsBGGdldEJvb3N0aW5nQWRkcmVzc09yRmFpbAEKZmFjdG9yeUNmZwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQpmYWN0b3J5Q2ZnBRlJZHhGYWN0b3J5Q2ZnQm9vc3RpbmdEYXBwARhnZXRFbWlzc2lvbkFkZHJlc3NPckZhaWwBCmZhY3RvcnlDZmcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUKZmFjdG9yeUNmZwUZSWR4RmFjdG9yeUNmZ0VtaXNzaW9uRGFwcAEXZ2V0U3Rha2luZ0FkZHJlc3NPckZhaWwBCmZhY3RvcnlDZmcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUKZmFjdG9yeUNmZwUYSWR4RmFjdG9yeUNmZ1N0YWtpbmdEYXBwARlnZXRHd3hSZXdhcmRBZGRyZXNzT3JGYWlsAQpmYWN0b3J5Q2ZnCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFCmZhY3RvcnlDZmcFGklkeEZhY3RvcnlDZmdHd3hSZXdhcmREYXBwAQ5nZXRQcmljZUFzc2V0cwAEByRtYXRjaDAJAKIIAQkBDmtleVByaWNlQXNzZXRzAAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDADCQAAAgkAsQIBBQFzAAAFA25pbAkAtQkCBQFzBQNTRVAFA25pbAEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAAEByRtYXRjaDAJAKIIAQkBE2tleU1hbmFnZXJQdWJsaWNLZXkAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgEdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQABAckbWF0Y2gwCQCiCAEJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yABVwZXJtaXNzaW9uRGVuaWVkRXJyb3IJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAAJdGVzdEVycm9yCQACAQIPVGVzdCBlcnJvciBoZXJlAQhtdXN0VGhpcwEBaQMJAAACCAUBaQZjYWxsZXIFBHRoaXMGBRVwZXJtaXNzaW9uRGVuaWVkRXJyb3IBC211c3RNYW5hZ2VyAQFpBAckbWF0Y2gwCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDADCQAAAggFAWkPY2FsbGVyUHVibGljS2V5BQJwawYFFXBlcm1pc3Npb25EZW5pZWRFcnJvcgMJAAECBQckbWF0Y2gwAgRVbml0CQEIbXVzdFRoaXMBBQFpCQACAQILTWF0Y2ggZXJyb3IBEGRhdGFGYWN0b3J5Q2ZnVjMLDnN0YWtpbmdBZGRyZXNzD2Jvb3N0aW5nQWRkcmVzcwtpZG9Db250cmFjdAx0ZWFtQ29udHJhY3QQZW1pc3Npb25Db250cmFjdAxyZXN0Q29udHJhY3QQc2xpcHBhZ2VDb250cmFjdAtkYW9Db250cmFjdBFtYXJrZXRpbmdDb250cmFjdBJnd3hSZXdhcmRzQ29udHJhY3QNYmlyZHNDb250cmFjdAkAuQkCCQDMCAICFiVzJXMlcyVzJXMlcyVzJXMlcyVzJXMJAMwIAgUOc3Rha2luZ0FkZHJlc3MJAMwIAgUPYm9vc3RpbmdBZGRyZXNzCQDMCAIFC2lkb0NvbnRyYWN0CQDMCAIFDHRlYW1Db250cmFjdAkAzAgCBRBlbWlzc2lvbkNvbnRyYWN0CQDMCAIFDHJlc3RDb250cmFjdAkAzAgCBRBzbGlwcGFnZUNvbnRyYWN0CQDMCAIFC2Rhb0NvbnRyYWN0CQDMCAIFEW1hcmtldGluZ0NvbnRyYWN0CQDMCAIFEmd3eFJld2FyZHNDb250cmFjdAkAzAgCBQ1iaXJkc0NvbnRyYWN0BQNuaWwFA1NFUAEOZGF0YUZhY3RvcnlDZmcHDnN0YWtpbmdBZGRyZXNzD2Jvb3N0aW5nQWRkcmVzcwtpZG9Db250cmFjdAx0ZWFtQ29udHJhY3QQZW1pc3Npb25Db250cmFjdAxyZXN0Q29udHJhY3QQc2xpcHBhZ2VDb250cmFjdAkAuQkCCQDMCAICDCVzJXMlcyVzJXMlcwkAzAgCBQ5zdGFraW5nQWRkcmVzcwkAzAgCBQ9ib29zdGluZ0FkZHJlc3MJAMwIAgULaWRvQ29udHJhY3QJAMwIAgUMdGVhbUNvbnRyYWN0CQDMCAIFEGVtaXNzaW9uQ29udHJhY3QJAMwIAgUMcmVzdENvbnRyYWN0CQDMCAIFEHNsaXBwYWdlQ29udHJhY3QFA25pbAUDU0VQAQtkYXRhUG9vbENmZwsLcG9vbEFkZHJlc3MKcG9vbFN0YXR1cwlscEFzc2V0SWQOYW1vdW50QXNzZXRTdHINcHJpY2VBc3NldFN0chNhbW91bnRBc3NldERlY2ltYWxzEnByaWNlQXNzZXREZWNpbWFscxVhbW91bnRBc3NldEludGVybmFsSWQUcHJpY2VBc3NldEludGVybmFsSWQPbHBBc3NldERlY2ltYWxzCHBvb2xUeXBlCQC5CQIJAMwIAgIWJXMlZCVzJXMlcyVkJWQlZCVkJWQlcwkAzAgCBQtwb29sQWRkcmVzcwkAzAgCBQpwb29sU3RhdHVzCQDMCAIFCWxwQXNzZXRJZAkAzAgCBQ5hbW91bnRBc3NldFN0cgkAzAgCBQ1wcmljZUFzc2V0U3RyCQDMCAIJAKQDAQUTYW1vdW50QXNzZXREZWNpbWFscwkAzAgCCQCkAwEFEnByaWNlQXNzZXREZWNpbWFscwkAzAgCCQCkAwEFFWFtb3VudEFzc2V0SW50ZXJuYWxJZAkAzAgCCQCkAwEFFHByaWNlQXNzZXRJbnRlcm5hbElkCQDMCAIJAKQDAQUPbHBBc3NldERlY2ltYWxzCQDMCAIFCHBvb2xUeXBlBQNuaWwFA1NFUAEVZGF0YU1hcHBpbmdQb29sQXNzZXRzAhZpbnRlcm5hbEFtb3VudEFzc2V0U3RyFWludGVybmFsUHJpY2VBc3NldFN0cgkAuQkCCQDMCAICBCVkJWQJAMwIAgkApAMBBRZpbnRlcm5hbEFtb3VudEFzc2V0U3RyCQDMCAIJAKQDAQUVaW50ZXJuYWxQcmljZUFzc2V0U3RyBQNuaWwFA1NFUAENZ2V0UG9vbENvbmZpZwELcG9vbEFkZHJlc3MECnBvb2xBc3NldHMJALUJAgkBD2dldFN0cmluZ09yRmFpbAEJASlrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cwEFC3Bvb2xBZGRyZXNzBQNTRVAEE2Ftb3VudEFzc2V0SW50ZXJuYWwJAJEDAgUKcG9vbEFzc2V0cwABBBJwcmljZUFzc2V0SW50ZXJuYWwJAJEDAgUKcG9vbEFzc2V0cwACCQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwBCQENa2V5UG9vbENvbmZpZwIFE2Ftb3VudEFzc2V0SW50ZXJuYWwFEnByaWNlQXNzZXRJbnRlcm5hbAUDU0VQARpnZXRJbnRlcm5hbEFzc2V0SWRPckNyZWF0ZQIKYXNzZXRJZFN0cgtpbmNyZW1lbnRvcgQPaW50ZXJuYWxBc3NldElkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAR9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAQUKYXNzZXRJZFN0cgAABBhjdXJyZW50SW5kZXhPZkludGVybmFsSWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBFmtleU5leHRJbnRlcm5hbEFzc2V0SWQAAAAEBnJlc3VsdAMJAAACBQ9pbnRlcm5hbEFzc2V0SWQAAAQSbmV3SW50ZXJuYWxBc3NldElkCQBkAgUYY3VycmVudEluZGV4T2ZJbnRlcm5hbElkBQtpbmNyZW1lbnRvcgkAlQoDBRJuZXdJbnRlcm5hbEFzc2V0SWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlOZXh0SW50ZXJuYWxBc3NldElkAAUSbmV3SW50ZXJuYWxBc3NldElkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAEFCmFzc2V0SWRTdHIFEm5ld0ludGVybmFsQXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQEfa2V5TWFwcGluZ3NJbnRlcm5hbDJiYXNlQXNzZXRJZAEFEm5ld0ludGVybmFsQXNzZXRJZAUKYXNzZXRJZFN0cgUDbmlsBgkAlQoDBQ9pbnRlcm5hbEFzc2V0SWQFA25pbAcFBnJlc3VsdAEJbXVzdEFkbWluAQFpBAhhZG1pblBLcwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJAQ9rZXlBZG1pblB1YktleXMABQVFTVBUWQUDU0VQAwkBD2NvbnRhaW5zRWxlbWVudAIFCGFkbWluUEtzCQDYBAEIBQFpD2NhbGxlclB1YmxpY0tleQYECWlzTWFuYWdlcgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQlpc01hbmFnZXIFCWlzTWFuYWdlcgYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BFmludE9yRGVmYXVsdE9yRmFsbGJhY2sDA2tleQprZXlEZWZhdWx0DXZhbHVlRmFsbGJhY2sJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUDa2V5CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFCmtleURlZmF1bHQFDXZhbHVlRmFsbGJhY2sbAWkBF2dldFN3YXBDb250cmFjdFJFQURPTkxZAAkAlAoCBQNuaWwJAQ9nZXRTdHJpbmdPckZhaWwBCQEMc3dhcENvbnRyYWN0AAFpASBnZXRMcEFzc2V0RnJvbVBvb2xBc3NldHNSRUFET05MWQIGYXNzZXQxBmFzc2V0MgMDCQAAAgUGYXNzZXQxAiw4TFFXOGY3UDVkNVBaTTdHdFpFQmdhcVJQR1N6UzNEZlB1aVhyVVJKNEFKUwkAAAIFBmFzc2V0MgIFV0FWRVMHCQCUCgIFA25pbAUEdW5pdAQJYXNzZXROdW0xCQEFdmFsdWUBCQCaCAIFBHRoaXMJAR9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAQUGYXNzZXQxBAlhc3NldE51bTIJAQV2YWx1ZQEJAJoIAgUEdGhpcwkBH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQBBQZhc3NldDIEAmVlCQCdCAIFBHRoaXMJAR1rZXlNYXBwaW5nUG9vbEFzc2V0c1RvTHBhc3NldAIJAKQDAQUJYXNzZXROdW0xCQCkAwEFCWFzc2V0TnVtMgQDcmVzAwkAAAIFAmVlBQR1bml0BQR1bml0CQCwAgIJAQV2YWx1ZQEFAmVlAAQJAJQKAgUDbmlsBQNyZXMBaQEhZ2V0UG9vbEFkZHJlc3NGcm9tTHBBc3NldFJFQURPTkxZAQJscAkAlAoCBQNuaWwJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBKmtleU1hcHBpbmdQb29sTFBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcwEFAmxwAgABaQELY29uc3RydWN0b3IID3N0YWtpbmdDb250cmFjdBBib29zdGluZ0NvbnRyYWN0C2lkb0NvbnRyYWN0DHRlYW1Db250cmFjdBBlbWlzc2lvbkNvbnRyYWN0DHJlc3RDb250cmFjdBBzbHBpcGFnZUNvbnRyYWN0DXByaWNlRGVjaW1hbHMEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5RmFjdG9yeUNvbmZpZwAJAQ5kYXRhRmFjdG9yeUNmZwcFD3N0YWtpbmdDb250cmFjdAUQYm9vc3RpbmdDb250cmFjdAULaWRvQ29udHJhY3QFDHRlYW1Db250cmFjdAUQZW1pc3Npb25Db250cmFjdAUMcmVzdENvbnRyYWN0BRBzbHBpcGFnZUNvbnRyYWN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEQa2V5UHJpY2VEZWNpbWFscwAFDXByaWNlRGVjaW1hbHMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ1jb25zdHJ1Y3RvclYyARBtYXRoY2hlclB1YjU4U3RyBAtjaGVja0NhbGxlcgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIECm1hdGhjZXJQdWIJAKcIAQkA2QQBBRBtYXRoY2hlclB1YjU4U3RyAwkAAAIFCm1hdGhjZXJQdWIFCm1hdGhjZXJQdWIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleU1hdGNoZXJQdWIABRBtYXRoY2hlclB1YjU4U3RyBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENY29uc3RydWN0b3JWMwQLZGFvQ29udHJhY3QRbWFya2V0aW5nQ29udHJhY3QSZ3d4UmV3YXJkc0NvbnRyYWN0DWJpcmRzQ29udHJhY3QEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQKZmFjdG9yeUNmZwkAtQkCCQEPZ2V0U3RyaW5nT3JGYWlsAQkBEGtleUZhY3RvcnlDb25maWcABQNTRVAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleUZhY3RvcnlDb25maWcACQEQZGF0YUZhY3RvcnlDZmdWMwsJAJEDAgUKZmFjdG9yeUNmZwABCQCRAwIFCmZhY3RvcnlDZmcAAgkAkQMCBQpmYWN0b3J5Q2ZnAAMJAJEDAgUKZmFjdG9yeUNmZwAECQCRAwIFCmZhY3RvcnlDZmcABQkAkQMCBQpmYWN0b3J5Q2ZnAAYJAJEDAgUKZmFjdG9yeUNmZwAHBQtkYW9Db250cmFjdAURbWFya2V0aW5nQ29udHJhY3QFEmd3eFJld2FyZHNDb250cmFjdAUNYmlyZHNDb250cmFjdAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDWNvbnN0cnVjdG9yVjQCFWxlZ2FjeUZhY3RvcnlDb250cmFjdAtsZWdhY3lQb29scwQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARhrZXlMZWdhY3lGYWN0b3J5Q29udHJhY3QABRVsZWdhY3lGYWN0b3J5Q29udHJhY3QJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleUxlZ2FjeVBvb2xzAAkAuQkCBQtsZWdhY3lQb29scwUDU0VQBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENY29uc3RydWN0b3JWNQETYXNzZXRzU3RvcmVDb250cmFjdAQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlBc3NldHNTdG9yZUNvbnRyYWN0AAUTYXNzZXRzU3RvcmVDb250cmFjdAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDWNvbnN0cnVjdG9yVjYCFnZvdGluZ0VtaXNzaW9uQ29udHJhY3QLcHJpY2VBc3NldHMEBWNoZWtzCQDMCAIJAQttdXN0TWFuYWdlcgEFAWkJAMwIAgMJAQIhPQIJAKYIAQUWdm90aW5nRW1pc3Npb25Db250cmFjdAUEdW5pdAYCKGludmFsaWQgdm90aW5nIGVtaXNzaW9uIGNvbnRyYWN0IGFkZHJlc3MFA25pbAMJAAACBQVjaGVrcwUFY2hla3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBGWtleVZvdGluZ0VtaXNzaW9uQ29udHJhY3QABRZ2b3RpbmdFbWlzc2lvbkNvbnRyYWN0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlQcmljZUFzc2V0cwAJALkJAgULcHJpY2VBc3NldHMFA1NFUAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCnNldE1hbmFnZXIBF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BAtjaGVja0NhbGxlcgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIEFWNoZWNrTWFuYWdlclB1YmxpY0tleQkA2QQBBRdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQMJAAACBRVjaGVja01hbmFnZXJQdWJsaWNLZXkFFWNoZWNrTWFuYWdlclB1YmxpY0tleQkAzAgCCQELU3RyaW5nRW50cnkCCQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkABRdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDmNvbmZpcm1NYW5hZ2VyAAQCcG0JAR1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdAAEBWhhc1BNAwkBCWlzRGVmaW5lZAEFAnBtBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQVoYXNQTQUFaGFzUE0EB2NoZWNrUE0DCQAAAggFAWkPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJwbQYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUHY2hlY2tQTQUHY2hlY2tQTQkAzAgCCQELU3RyaW5nRW50cnkCCQETa2V5TWFuYWdlclB1YmxpY0tleQAJANgEAQkBBXZhbHVlAQUCcG0JAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCXNldEFkbWlucwEMYWRtaW5QdWJLZXlzBAtjaGVja0NhbGxlcgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD2tleUFkbWluUHViS2V5cwAJALkJAgUMYWRtaW5QdWJLZXlzBQNTRVAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ9hY3RpdmF0ZU5ld1Bvb2wIC3Bvb2xBZGRyZXNzDmFtb3VudEFzc2V0U3RyDXByaWNlQXNzZXRTdHILbHBBc3NldE5hbWUMbHBBc3NldERlc2NyCnBvb2xXZWlnaHQIcG9vbFR5cGUEbG9nbwQLY2hlY2tDYWxsZXIJAQltdXN0QWRtaW4BBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgMJAQlpc0RlZmluZWQBCQCiCAEJASlrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cwEFC3Bvb2xBZGRyZXNzCQACAQkArAICCQCsAgICDVBvb2wgYWRkcmVzcyAFC3Bvb2xBZGRyZXNzAhQgYWxyZWFkeSByZWdpc3RlcmVkLgQXaW50ZXJuYWxBbW91bnRBc3NldERhdGEJARpnZXRJbnRlcm5hbEFzc2V0SWRPckNyZWF0ZQIFDmFtb3VudEFzc2V0U3RyAAEEFWludGVybmFsQW1vdW50QXNzZXRJZAgFF2ludGVybmFsQW1vdW50QXNzZXREYXRhAl8xBBZpbnRlcm5hbFByaWNlQXNzZXREYXRhCQEaZ2V0SW50ZXJuYWxBc3NldElkT3JDcmVhdGUCBQ1wcmljZUFzc2V0U3RyAwgFF2ludGVybmFsQW1vdW50QXNzZXREYXRhAl8zAAIAAQQUaW50ZXJuYWxQcmljZUFzc2V0SWQIBRZpbnRlcm5hbFByaWNlQXNzZXREYXRhAl8xBBVwb29sQWNjb3VudFNjcmlwdEhhc2gJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA8QcBCQERQGV4dHJOYXRpdmUoMTA2MikBBQtwb29sQWRkcmVzcwkArAICAilObyBzY3JpcHQgaGFzIGJlZW4gZm91bmQgb24gcG9vbCBhY2NvdW50IAULcG9vbEFkZHJlc3MEHGV0aGFsb25Qb29sQWNjb3VudFNjcmlwdEhhc2gJARFAZXh0ck5hdGl2ZSgxMDU3KQEJARFrZXlQb29sU2NyaXB0SGFzaAAECnBvb2xDb25maWcJAJ0IAgUEdGhpcwkBDWtleVBvb2xDb25maWcCCQCkAwEFFWludGVybmFsQW1vdW50QXNzZXRJZAkApAMBBRRpbnRlcm5hbFByaWNlQXNzZXRJZAMJAQlpc0RlZmluZWQBBQpwb29sQ29uZmlnCQACAQkArAICCQCsAgIJAKwCAgkArAICAgVQb29sIAUOYW1vdW50QXNzZXRTdHICAS8FDXByaWNlQXNzZXRTdHICHCBoYXMgYWxyZWFkeSBiZWVuIGFjdGl2YXRlZC4ED3Bvb2xDb25maWdWYWx1ZQkBBXZhbHVlAQkAnQgCBQR0aGlzCQENa2V5UG9vbENvbmZpZwIJAKQDAQUVaW50ZXJuYWxBbW91bnRBc3NldElkCQCkAwEFFGludGVybmFsUHJpY2VBc3NldElkBBRhbW91bnRBc3NldHNEZWNpbWFscwMJAAACBQ5hbW91bnRBc3NldFN0cgIFV0FWRVMFEWRlY2ltYWxzTXVsdFByaWNlCQBsBgAKAAAICQEFdmFsdWUBCQDsBwEJANkEAQUOYW1vdW50QXNzZXRTdHIIZGVjaW1hbHMAAAAABQRET1dOBBNwcmljZUFzc2V0c0RlY2ltYWxzAwkAAAIFDXByaWNlQXNzZXRTdHICBVdBVkVTBRFkZWNpbWFsc011bHRQcmljZQkAbAYACgAACAkBBXZhbHVlAQkA7AcBCQDZBAEFDXByaWNlQXNzZXRTdHIIZGVjaW1hbHMAAAAABQRET1dOBBJscEFzc2V0SXNzdWVBY3Rpb24JAMIIBQULbHBBc3NldE5hbWUFDGxwQXNzZXREZXNjcgABAAgGBAlscEFzc2V0SWQJALgIAQUSbHBBc3NldElzc3VlQWN0aW9uBAxscEFzc2V0SWRTdHIJANgEAQUJbHBBc3NldElkBBhwb29sQWN0aXZhdGVJbnZva2VSZXN1bHQJAPwHBAkBEUBleHRyTmF0aXZlKDEwNjIpAQULcG9vbEFkZHJlc3MCCGFjdGl2YXRlCQDMCAIFDmFtb3VudEFzc2V0U3RyCQDMCAIFDXByaWNlQXNzZXRTdHIFA25pbAUDbmlsAwkAAAIFGHBvb2xBY3RpdmF0ZUludm9rZVJlc3VsdAUYcG9vbEFjdGl2YXRlSW52b2tlUmVzdWx0AwkBAiE9AgUYcG9vbEFjdGl2YXRlSW52b2tlUmVzdWx0AgdzdWNjZXNzCQACAQIjUG9vbCBpbml0aWFsaXNhdGlvbiBlcnJvciBoYXBwZW5lZC4EE2Fzc2V0c1N0b3JlQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQ9nZXRTdHJpbmdPckZhaWwBCQEWa2V5QXNzZXRzU3RvcmVDb250cmFjdAAEGGNyZWF0ZU9yVXBkYXRlTHBBc3NldEludgkA/AcEBRNhc3NldHNTdG9yZUNvbnRyYWN0Ag5jcmVhdGVPclVwZGF0ZQkAzAgCBQxscEFzc2V0SWRTdHIJAMwIAgULbHBBc3NldE5hbWUJAMwIAgcFA25pbAUDbmlsAwkAAAIFGGNyZWF0ZU9yVXBkYXRlTHBBc3NldEludgUYY3JlYXRlT3JVcGRhdGVMcEFzc2V0SW52BBJhZGRQb29sc0xwTGFiZWxJbnYJAPwHBAUTYXNzZXRzU3RvcmVDb250cmFjdAIIYWRkTGFiZWwJAMwIAgUMbHBBc3NldElkU3RyCQDMCAIFDGxhYmVsUG9vbHNMcAUDbmlsBQNuaWwDCQAAAgUSYWRkUG9vbHNMcExhYmVsSW52BRJhZGRQb29sc0xwTGFiZWxJbnYECnNldExvZ29JbnYJAPwHBAUTYXNzZXRzU3RvcmVDb250cmFjdAIHc2V0TG9nbwkAzAgCBQxscEFzc2V0SWRTdHIJAMwIAgUEbG9nbwUDbmlsBQNuaWwDCQAAAgUKc2V0TG9nb0ludgUKc2V0TG9nb0ludgQQYWRkQXNzZXRzTGlua0ludgkA/AcEBRNhc3NldHNTdG9yZUNvbnRyYWN0Ag1hZGRBc3NldHNMaW5rCQDMCAIFDmFtb3VudEFzc2V0U3RyCQDMCAIFDXByaWNlQXNzZXRTdHIJAMwIAgUMbHBBc3NldElkU3RyBQNuaWwFA25pbAMJAAACBRBhZGRBc3NldHNMaW5rSW52BRBhZGRBc3NldHNMaW5rSW52BBtpbmNyZWFzZUFzc2V0UG9vbHNOdW1iZXJJbnYJAPwHBAUTYXNzZXRzU3RvcmVDb250cmFjdAIYaW5jcmVhc2VBc3NldFBvb2xzTnVtYmVyCQDMCAIFDmFtb3VudEFzc2V0U3RyBQNuaWwFA25pbAMJAAACBRtpbmNyZWFzZUFzc2V0UG9vbHNOdW1iZXJJbnYFG2luY3JlYXNlQXNzZXRQb29sc051bWJlckludgkAlAoCCQDOCAIJAM4IAggFF2ludGVybmFsQW1vdW50QXNzZXREYXRhAl8yCAUWaW50ZXJuYWxQcmljZUFzc2V0RGF0YQJfMgkAzAgCBRJscEFzc2V0SXNzdWVBY3Rpb24JAMwIAgkBBEJ1cm4CBQlscEFzc2V0SWQAAQkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5UG9vbENvbmZpZwIJAKQDAQUVaW50ZXJuYWxBbW91bnRBc3NldElkCQCkAwEFFGludGVybmFsUHJpY2VBc3NldElkCQELZGF0YVBvb2xDZmcLBQtwb29sQWRkcmVzcwkApAMBBQpQb29sQWN0aXZlBQxscEFzc2V0SWRTdHIFDmFtb3VudEFzc2V0U3RyBQ1wcmljZUFzc2V0U3RyBRRhbW91bnRBc3NldHNEZWNpbWFscwUTcHJpY2VBc3NldHNEZWNpbWFscwUVaW50ZXJuYWxBbW91bnRBc3NldElkBRRpbnRlcm5hbFByaWNlQXNzZXRJZAURZGVjaW1hbHNNdWx0UHJpY2UFCHBvb2xUeXBlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAR1rZXlNYXBwaW5nTHBBc3NldFRvUG9vbEFzc2V0cwEFDGxwQXNzZXRJZFN0cgkBFWRhdGFNYXBwaW5nUG9vbEFzc2V0cwIFFWludGVybmFsQW1vdW50QXNzZXRJZAUUaW50ZXJuYWxQcmljZUFzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBHWtleU1hcHBpbmdQb29sQXNzZXRzVG9McGFzc2V0AgkApAMBBRVpbnRlcm5hbEFtb3VudEFzc2V0SWQJAKQDAQUUaW50ZXJuYWxQcmljZUFzc2V0SWQJAKwCAgIEJXNfXwUMbHBBc3NldElkU3RyCQDMCAIJAQtTdHJpbmdFbnRyeQIJASlrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cwEFC3Bvb2xBZGRyZXNzCQEVZGF0YU1hcHBpbmdQb29sQXNzZXRzAgUVaW50ZXJuYWxBbW91bnRBc3NldElkBRRpbnRlcm5hbFByaWNlQXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQEpa2V5TWFwcGluZ1Bvb2xBc3NldHNUb1Bvb2xDb250cmFjdEFkZHJlc3MCBRVpbnRlcm5hbEFtb3VudEFzc2V0SWQFFGludGVybmFsUHJpY2VBc3NldElkBQtwb29sQWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQEqa2V5TWFwcGluZ1Bvb2xMUEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAQUMbHBBc3NldElkU3RyBQtwb29sQWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQEfa2V5TWFwcGluZ1Bvb2xDb250cmFjdFRvTFBBc3NldAEFC3Bvb2xBZGRyZXNzBQxscEFzc2V0SWRTdHIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ9rZXlQb29sVG9XZWlnaHQBBQtwb29sQWRkcmVzcwUKcG9vbFdlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDWtleVBvb2xTcHJlYWQBBQtwb29sQWRkcmVzcwUNZGVmYXVsdFNwcmVhZAUDbmlsBQxscEFzc2V0SWRTdHIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKbWFuYWdlUG9vbAILcG9vbEFkZHJlc3MJbmV3U3RhdHVzBAtjaGVja0NhbGxlcgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIECnBvb2xDb25maWcJAQ1nZXRQb29sQ29uZmlnAQULcG9vbEFkZHJlc3MECnBvb2xTdGF0dXMJAJEDAgUKcG9vbENvbmZpZwUNaWR4UG9vbFN0YXR1cwQMbHBBc3NldElkU3RyCQCRAwIFCnBvb2xDb25maWcFEGlkeFBvb2xMUEFzc2V0SWQEDmFtb3VudEFzc2V0U3RyCQCRAwIFCnBvb2xDb25maWcFDWlkeEFtdEFzc2V0SWQEDXByaWNlQXNzZXRTdHIJAJEDAgUKcG9vbENvbmZpZwUPaWR4UHJpY2VBc3NldElkBBRhbW91bnRBc3NldHNEZWNpbWFscwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnBvb2xDb25maWcFDmlkeEFtdEFzc2V0RGNtBBNwcmljZUFzc2V0c0RlY2ltYWxzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKcG9vbENvbmZpZwUQaWR4UHJpY2VBc3NldERjbQQVaW50ZXJuYWxBbW91bnRBc3NldElkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKcG9vbENvbmZpZwUOaWR4SUFtdEFzc2V0SWQEFGludGVybmFsUHJpY2VBc3NldElkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKcG9vbENvbmZpZwUQaWR4SVByaWNlQXNzZXRJZAQKbHBBc3NldERjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnBvb2xDb25maWcFDWlkeExQQXNzZXREY20ECHBvb2xUeXBlCQCRAwIFCnBvb2xDb25maWcFC2lkeFBvb2xUeXBlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlQb29sQ29uZmlnAgkApAMBBRVpbnRlcm5hbEFtb3VudEFzc2V0SWQJAKQDAQUUaW50ZXJuYWxQcmljZUFzc2V0SWQJAQtkYXRhUG9vbENmZwsFC3Bvb2xBZGRyZXNzCQCkAwEFCW5ld1N0YXR1cwUMbHBBc3NldElkU3RyBQ5hbW91bnRBc3NldFN0cgUNcHJpY2VBc3NldFN0cgUUYW1vdW50QXNzZXRzRGVjaW1hbHMFE3ByaWNlQXNzZXRzRGVjaW1hbHMFFWludGVybmFsQW1vdW50QXNzZXRJZAUUaW50ZXJuYWxQcmljZUFzc2V0SWQFCmxwQXNzZXREY20FCHBvb2xUeXBlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEEZW1pdAEMYW1vdW50VG9FbWl0BAZjYWxsZXIIBQFpBmNhbGxlcgQMb3JpZ2luQ2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIEEGxwQXNzZXRSZXF1ZXN0ZWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEfa2V5TWFwcGluZ1Bvb2xDb250cmFjdFRvTFBBc3NldAEJAKUIAQUGY2FsbGVyAh1JbnZhbGlkIExQIGFkZHJlc3MgY2FsbGVkIG1lLgQHbHBBc3NldAkA2QQBBRBscEFzc2V0UmVxdWVzdGVkBAtsZWdhY3lQb29scwkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJAQ5rZXlMZWdhY3lQb29scwAFBUVNUFRZBQNTRVAEFWxlZ2FjeUZhY3RvcnlDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARhrZXlMZWdhY3lGYWN0b3J5Q29udHJhY3QAAihMZWdhY3kgZmFjdG9yeSBjb250cmFjdCBkb2VzIG5vdCBleGlzdHMuAwkAZwIAAAUMYW1vdW50VG9FbWl0BQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgULbGVnYWN5UG9vbHMJAKUIAQUGY2FsbGVyCQCUCgIFA25pbAUVbGVnYWN5RmFjdG9yeUNvbnRyYWN0CQCUCgIJAMwIAgkBB1JlaXNzdWUDBQdscEFzc2V0BQxhbW91bnRUb0VtaXQGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUMYW1vdW50VG9FbWl0BQdscEFzc2V0BQNuaWwCB3N1Y2Nlc3MBaQEEYnVybgEMYW1vdW50VG9CdXJuBAZjYWxsZXIIBQFpBmNhbGxlcgQMb3JpZ2luQ2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIEB3BheW1lbnQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQNcGF5bWVudEFtb3VudAkBBXZhbHVlAQgFB3BheW1lbnQGYW1vdW50BA9pbkFtb3VudEFzc2V0SWQJANgEAQkBBXZhbHVlAQgFB3BheW1lbnQHYXNzZXRJZAQabHBBc3NldFJlcXVlc3RlZEZvckJ1cm5pbmcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEfa2V5TWFwcGluZ1Bvb2xDb250cmFjdFRvTFBBc3NldAEJAKUIAQUGY2FsbGVyAh1JbnZhbGlkIExQIGFkZHJlc3MgY2FsbGVkIG1lLgMJAQIhPQIFD2luQW1vdW50QXNzZXRJZAUabHBBc3NldFJlcXVlc3RlZEZvckJ1cm5pbmcJAAIBAhVJbnZhbGlkIGFzc2V0IHBhc3NlZC4DCQECIT0CBQxhbW91bnRUb0J1cm4FDXBheW1lbnRBbW91bnQJAAIBAhZJbnZhbGlkIGFtb3VudCBwYXNzZWQuBAdscEFzc2V0CQDZBAEFGmxwQXNzZXRSZXF1ZXN0ZWRGb3JCdXJuaW5nCQCUCgIJAMwIAgkBBEJ1cm4CBQdscEFzc2V0BQxhbW91bnRUb0J1cm4FA25pbAIHc3VjY2VzcwFpAQxtb2RpZnlXZWlnaHQCCWxwQXNzZXRJZAVzaGFyZQQLY2hlY2tDYWxsZXIDCQAAAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJARlrZXlWb3RpbmdFbWlzc2lvbkNvbnRyYWN0AAIABgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIEE3Bvb2xDb250cmFjdEFkZHJlc3MJAQ9nZXRTdHJpbmdPckZhaWwBCQEqa2V5TWFwcGluZ1Bvb2xMUEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAQUJbHBBc3NldElkBA1wb29sV2VpZ2h0S2V5CQEPa2V5UG9vbFRvV2VpZ2h0AQUTcG9vbENvbnRyYWN0QWRkcmVzcwQMZ3d4V2VpZ2h0S2V5CQEPa2V5UG9vbFRvV2VpZ2h0AQUOR1dYdmlydHVhbFBPT0wECWd3eFdlaWdodAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQxnd3hXZWlnaHRLZXkAAAQKcG9vbFdlaWdodAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ1wb29sV2VpZ2h0S2V5AAAEDXBvb2xXZWlnaHROZXcFBXNoYXJlBApmYWN0b3J5Q2ZnCQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwBCQEQa2V5RmFjdG9yeUNvbmZpZwAFA1NFUAQPc3Rha2luZ0NvbnRyYWN0CQEXZ2V0U3Rha2luZ0FkZHJlc3NPckZhaWwBBQpmYWN0b3J5Q2ZnBBFvbk1vZGlmeVdlaWdodEludgkA/AcEBQ9zdGFraW5nQ29udHJhY3QCDm9uTW9kaWZ5V2VpZ2h0CQDMCAIFCWxwQXNzZXRJZAkAzAgCBRNwb29sQ29udHJhY3RBZGRyZXNzBQNuaWwFA25pbAMJAAACBRFvbk1vZGlmeVdlaWdodEludgURb25Nb2RpZnlXZWlnaHRJbnYEFWd3eFZpcnR1YWxQb29sQWN0aW9ucwMJAAACBQlnd3hXZWlnaHQAAAUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQxnd3hXZWlnaHRLZXkAAAUDbmlsBBRwb29sV2VpZ2h0SGlzdG9yeUtleQkBFmtleVBvb2xUb1dlaWdodEhpc3RvcnkCBRNwb29sQ29udHJhY3RBZGRyZXNzAAAEF3Bvb2xXZWlnaHRIaXN0b3J5T3JVbml0CQCfCAEFFHBvb2xXZWlnaHRIaXN0b3J5S2V5BBhwb29sV2VpZ2h0SGlzdG9yeUFjdGlvbnMDCQAAAgUXcG9vbFdlaWdodEhpc3RvcnlPclVuaXQFBHVuaXQFA25pbAkAzAgCCQELRGVsZXRlRW50cnkBBRRwb29sV2VpZ2h0SGlzdG9yeUtleQUDbmlsCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUNcG9vbFdlaWdodEtleQUNcG9vbFdlaWdodE5ldwUDbmlsBRVnd3hWaXJ0dWFsUG9vbEFjdGlvbnMFGHBvb2xXZWlnaHRIaXN0b3J5QWN0aW9ucwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ1tb2RpZnlXZWlnaHRzBA5idGNQb29sQWRkcmVzcw5ldGhQb29sQWRkcmVzcxFldGhCdGNQb29sQWRkcmVzcxN1c2RjVXNkdFBvb2xBZGRyZXNzBAtjaGVja0NhbGxlcgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIED2V0aEJ0Y1dlaWdodE5ldwkAaQIJAGgCAAUFDlBPT0xXRUlHSFRNVUxUAGQEEXVzZGNVc2R0V2VpZ2h0TmV3CQBpAgkAaAIABQUOUE9PTFdFSUdIVE1VTFQAZAQPd2VpZ2h0RGVjcmVtZW50CQBpAgkAaAIABQUOUE9PTFdFSUdIVE1VTFQAZAQKZmFjdG9yeUNmZwkAtQkCCQEPZ2V0U3RyaW5nT3JGYWlsAQkBEGtleUZhY3RvcnlDb25maWcABQNTRVAEC3N0YWtpbmdEYXBwCQEXZ2V0U3Rha2luZ0FkZHJlc3NPckZhaWwBBQpmYWN0b3J5Q2ZnBA1nd3hSZXdhcmREYXBwCQEZZ2V0R3d4UmV3YXJkQWRkcmVzc09yRmFpbAEFCmZhY3RvcnlDZmcEDGJ0Y1dlaWdodEtFWQkBD2tleVBvb2xUb1dlaWdodAEFDmJ0Y1Bvb2xBZGRyZXNzBAxldGhXZWlnaHRLRVkJAQ9rZXlQb29sVG9XZWlnaHQBBQ5ldGhQb29sQWRkcmVzcwQPZXRoQnRjV2VpZ2h0S0VZCQEPa2V5UG9vbFRvV2VpZ2h0AQURZXRoQnRjUG9vbEFkZHJlc3MEEXVzZGNVc2R0V2VpZ2h0S0VZCQEPa2V5UG9vbFRvV2VpZ2h0AQUTdXNkY1VzZHRQb29sQWRkcmVzcwQJYnRjV2VpZ2h0CQEMZ2V0SW50T3JGYWlsAQUMYnRjV2VpZ2h0S0VZBAlldGhXZWlnaHQJAQxnZXRJbnRPckZhaWwBBQxldGhXZWlnaHRLRVkEDGJ0Y1dlaWdodE5ldwkAZQIFCWJ0Y1dlaWdodAUPd2VpZ2h0RGVjcmVtZW50BAxldGhXZWlnaHROZXcJAGUCBQlldGhXZWlnaHQFD3dlaWdodERlY3JlbWVudAMJAGcCAAAFDGJ0Y1dlaWdodE5ldwkAAgEJAKwCAgIWaW52YWxpZCBidGNXZWlnaHROZXc6IAkApAMBBQxidGNXZWlnaHROZXcDCQBnAgAABQxldGhXZWlnaHROZXcJAAIBCQCsAgICFmludmFsaWQgZXRoV2VpZ2h0TmV3OiAJAKQDAQUMZXRoV2VpZ2h0TmV3BA9idGNMcEFzc2V0SWRTdHIJAQ9nZXRTdHJpbmdPckZhaWwBCQEfa2V5TWFwcGluZ1Bvb2xDb250cmFjdFRvTFBBc3NldAEFDmJ0Y1Bvb2xBZGRyZXNzBA9ldGhMcEFzc2V0SWRTdHIJAQ9nZXRTdHJpbmdPckZhaWwBCQEfa2V5TWFwcGluZ1Bvb2xDb250cmFjdFRvTFBBc3NldAEFDmV0aFBvb2xBZGRyZXNzBBJldGhCdGNMcEFzc2V0SWRTdHIJAQ9nZXRTdHJpbmdPckZhaWwBCQEfa2V5TWFwcGluZ1Bvb2xDb250cmFjdFRvTFBBc3NldAEFEWV0aEJ0Y1Bvb2xBZGRyZXNzBBR1c2RjVXNkdExwQXNzZXRJZFN0cgkBD2dldFN0cmluZ09yRmFpbAEJAR9rZXlNYXBwaW5nUG9vbENvbnRyYWN0VG9MUEFzc2V0AQUTdXNkY1VzZHRQb29sQWRkcmVzcwQRb25Nb2RpZnlXZWlnaHRCdGMJAPwHBAULc3Rha2luZ0RhcHACDm9uTW9kaWZ5V2VpZ2h0CQDMCAIFD2J0Y0xwQXNzZXRJZFN0cgkAzAgCBQ5idGNQb29sQWRkcmVzcwUDbmlsBQNuaWwDCQAAAgURb25Nb2RpZnlXZWlnaHRCdGMFEW9uTW9kaWZ5V2VpZ2h0QnRjBBFvbk1vZGlmeVdlaWdodEV0aAkA/AcEBQtzdGFraW5nRGFwcAIOb25Nb2RpZnlXZWlnaHQJAMwIAgUPZXRoTHBBc3NldElkU3RyCQDMCAIFDmV0aFBvb2xBZGRyZXNzBQNuaWwFA25pbAMJAAACBRFvbk1vZGlmeVdlaWdodEV0aAURb25Nb2RpZnlXZWlnaHRFdGgEFG9uTW9kaWZ5V2VpZ2h0RXRoQnRjCQD8BwQFC3N0YWtpbmdEYXBwAg5vbk1vZGlmeVdlaWdodAkAzAgCBRJldGhCdGNMcEFzc2V0SWRTdHIJAMwIAgURZXRoQnRjUG9vbEFkZHJlc3MFA25pbAUDbmlsAwkAAAIFFG9uTW9kaWZ5V2VpZ2h0RXRoQnRjBRRvbk1vZGlmeVdlaWdodEV0aEJ0YwQWb25Nb2RpZnlXZWlnaHRVc2RjVXNkdAkA/AcEBQtzdGFraW5nRGFwcAIOb25Nb2RpZnlXZWlnaHQJAMwIAgUUdXNkY1VzZHRMcEFzc2V0SWRTdHIJAMwIAgUTdXNkY1VzZHRQb29sQWRkcmVzcwUDbmlsBQNuaWwDCQAAAgUWb25Nb2RpZnlXZWlnaHRVc2RjVXNkdAUWb25Nb2RpZnlXZWlnaHRVc2RjVXNkdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUMYnRjV2VpZ2h0S0VZBQxidGNXZWlnaHROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIFDGV0aFdlaWdodEtFWQUMZXRoV2VpZ2h0TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9ldGhCdGNXZWlnaHRLRVkFD2V0aEJ0Y1dlaWdodE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgURdXNkY1VzZHRXZWlnaHRLRVkFEXVzZGNVc2R0V2VpZ2h0TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5UG9vbFRvV2VpZ2h0SGlzdG9yeQIFDmJ0Y1Bvb2xBZGRyZXNzAAAFCWJ0Y1dlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVBvb2xUb1dlaWdodEhpc3RvcnkCBQ5ldGhQb29sQWRkcmVzcwAABQlldGhXZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlQb29sVG9XZWlnaHRIaXN0b3J5AgURZXRoQnRjUG9vbEFkZHJlc3MAAAUPZXRoQnRjV2VpZ2h0TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5UG9vbFRvV2VpZ2h0SGlzdG9yeQIFE3VzZGNVc2R0UG9vbEFkZHJlc3MAAAURdXNkY1VzZHRXZWlnaHROZXcFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARhjaGVja1d4RW1pc3Npb25Qb29sTGFiZWwCDWFtb3VudEFzc2V0SWQMcHJpY2VBc3NldElkBAloYXZlTGFiZWwEByRtYXRjaDAJAKAIAQkBDWtleVd4RW1pc3Npb24CBQ1hbW91bnRBc3NldElkBQxwcmljZUFzc2V0SWQDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQBYgUHJG1hdGNoMAUBYgcJAJQKAgUDbmlsBQloYXZlTGFiZWwBaQEWc2V0V3hFbWlzc2lvblBvb2xMYWJlbAINYW1vdW50QXNzZXRJZAxwcmljZUFzc2V0SWQEC2NoZWNrQ2FsbGVyCQEJbXVzdEFkbWluAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIJAJQKAgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBDWtleVd4RW1pc3Npb24CBQ1hbW91bnRBc3NldElkBQxwcmljZUFzc2V0SWQGBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEZZGVsZXRlV3hFbWlzc2lvblBvb2xMYWJlbAINYW1vdW50QXNzZXRJZAxwcmljZUFzc2V0SWQEC2NoZWNrQ2FsbGVyAwkBCG11c3RUaGlzAQUBaQYJAQltdXN0QWRtaW4BBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgkAlAoCCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ1rZXlXeEVtaXNzaW9uAgUNYW1vdW50QXNzZXRJZAUMcHJpY2VBc3NldElkBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQESb25WZXJpZmljYXRpb25Mb3NzAQdhc3NldElkBAtjaGVja0NhbGxlcgMJAAACCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBFmtleUFzc2V0c1N0b3JlQ29udHJhY3QAAgAGCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQLcHJpY2VBc3NldHMJAQ5nZXRQcmljZUFzc2V0cwAEFGNoZWNrUHJpY2VBc3NldHNTaXplAwkAZgIJAJADAQULcHJpY2VBc3NldHMAAAYJAAIBAhRpbnZhbGlkIHByaWNlIGFzc2V0cwMJAAACBRRjaGVja1ByaWNlQXNzZXRzU2l6ZQUUY2hlY2tQcmljZUFzc2V0c1NpemUKAQJjYgIDYWNjCnByaWNlQXNzZXQEAXIJAPwHBAUEdGhpcwIZZGVsZXRlV3hFbWlzc2lvblBvb2xMYWJlbAkAzAgCBQdhc3NldElkCQDMCAIFCnByaWNlQXNzZXQFA25pbAUDbmlsAwkAAAIFAXIFAXIFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EB2FjdGlvbnMKAAIkbAULcHJpY2VBc3NldHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQR1bml0CgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQJjYgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgMQkBBSRmMF8yAgkBBSRmMF8xAgUFJGFjYzAAAAABAwkAAAIFB2FjdGlvbnMFB2FjdGlvbnMJAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkBC3Bvb2xBZGRyZXNzBApwb29sQ29uZmlnCQENZ2V0UG9vbENvbmZpZwEFC3Bvb2xBZGRyZXNzBA5hc3NldHNJbnRlcm5hbAkAlAoCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKcG9vbENvbmZpZwUOaWR4SUFtdEFzc2V0SWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpwb29sQ29uZmlnBRBpZHhJUHJpY2VBc3NldElkBB5wb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQJAQt2YWx1ZU9yRWxzZQIJAKAIAQkBIWtleVBvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZAEFDmFzc2V0c0ludGVybmFsBwQiYWxsUG9vbHNPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZAkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEla2V5QWxsUG9vbHNPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZAAHCQCUCgIFA25pbAMFImFsbFBvb2xzT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQGBR5wb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQBaQEQZ2V0SW5GZWVSRUFET05MWQELcG9vbEFkZHJlc3MEA2ZlZQkBFmludE9yRGVmYXVsdE9yRmFsbGJhY2sDCQEIa2V5SW5GZWUBBQtwb29sQWRkcmVzcwkBD2tleUluRmVlRGVmYXVsdAAAAAkAlAoCBQNuaWwFA2ZlZQFpARFnZXRPdXRGZWVSRUFET05MWQELcG9vbEFkZHJlc3MEA2ZlZQkBFmludE9yRGVmYXVsdE9yRmFsbGJhY2sDCQEJa2V5T3V0RmVlAQULcG9vbEFkZHJlc3MJARBrZXlPdXRGZWVEZWZhdWx0AAkAawMACgUFTVVMVDgAkE4JAJQKAgUDbmlsBQNmZWUBaQEVZ2V0UG9vbFN0YXR1c1JFQURPTkxZAQtwb29sQWRkcmVzcwQKcG9vbEFzc2V0cwkAtQkCCQEPZ2V0U3RyaW5nT3JGYWlsAQkBKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzAQULcG9vbEFkZHJlc3MFA1NFUAQTYW1vdW50QXNzZXRJbnRlcm5hbAkAkQMCBQpwb29sQXNzZXRzAAEEEnByaWNlQXNzZXRJbnRlcm5hbAkAkQMCBQpwb29sQXNzZXRzAAIEA2NmZwkAtQkCCQEPZ2V0U3RyaW5nT3JGYWlsAQkBDWtleVBvb2xDb25maWcCBRNhbW91bnRBc3NldEludGVybmFsBRJwcmljZUFzc2V0SW50ZXJuYWwFA1NFUAkAlAoCBQNuaWwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFBvb2xTdGF0dXMBaQEYZ2V0UG9vbEFzc2V0c0J5THBBc3NldElkAQxscEFzc2V0SWRTdHIECnBvb2xBc3NldHMJALUJAgkBD2dldFN0cmluZ09yRmFpbAEJAR1rZXlNYXBwaW5nTHBBc3NldFRvUG9vbEFzc2V0cwEFDGxwQXNzZXRJZFN0cgUDU0VQBBNhbW91bnRBc3NldEludGVybmFsCQCRAwIFCnBvb2xBc3NldHMAAQQScHJpY2VBc3NldEludGVybmFsCQCRAwIFCnBvb2xBc3NldHMAAgQDY2ZnCQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwBCQENa2V5UG9vbENvbmZpZwIFE2Ftb3VudEFzc2V0SW50ZXJuYWwFEnByaWNlQXNzZXRJbnRlcm5hbAUDU0VQCQCUCgIFA25pbAUDY2ZnAQJ0eAEGdmVyaWZ5AAQPdGFyZ2V0UHVibGljS2V5BAckbWF0Y2gwCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDAFAnBrAwkAAQIFByRtYXRjaDACBFVuaXQIBQJ0eA9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUPdGFyZ2V0UHVibGljS2V5Byi/rg==", "height": 2450614, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DeMmbEUsUfPMeFWYt5PvE8zJkPT1dcWo22TjoHFcsXXX Next: 7vkxsNQfvLGVZHaRnq2gEWyBMTBfuYEiTyc7o7U9vGvE Diff:
OldNewDifferences
7272 func H () = "%s__allowedLpStableAddonScriptHash"
7373
7474
75-func I () = "%s__factoryConfig"
75+func I () = "%s__swapContract"
7676
7777
78-func J () = "%s__lpTokensList"
78+func J () = "%s__factoryConfig"
7979
8080
81-func K () = "%s%s__pool__scriptHash"
81+func K () = "%s__lpTokensList"
8282
8383
84-func L () = "%s%s__matcher__publicKey"
84+func L () = "%s%s__pool__scriptHash"
8585
8686
87-func M () = "%s__legacyFactoryContract"
87+func M () = "%s%s__matcher__publicKey"
8888
8989
90-func N () = "%s__legacyPools"
90+func N () = "%s__legacyFactoryContract"
9191
9292
93-func O () = "%s__managerPublicKey"
93+func O () = "%s__legacyPools"
9494
9595
96-func P () = "%s__pendingManagerPublicKey"
96+func P () = "%s__managerPublicKey"
9797
9898
99-func Q () = "%s__adminPubKeys"
99+func Q () = "%s__pendingManagerPublicKey"
100100
101101
102-func R () = "%s__assetsStoreContract"
102+func R () = "%s__adminPubKeys"
103103
104104
105-func S () = "%s__votingEmissionContract"
105+func S () = "%s__assetsStoreContract"
106106
107107
108-func T () = makeString(["%s", "priceAssets"], j)
108+func T () = "%s__votingEmissionContract"
109109
110110
111-func U () = "%s__priceDecimals"
111+func U () = makeString(["%s", "priceAssets"], j)
112112
113113
114-func V () = "%s__shutdown"
114+func V () = "%s__priceDecimals"
115115
116116
117-func W () = "%s__nextInternalAssetId"
117+func W () = "%s__shutdown"
118118
119119
120-func X (Y) = ("%s%s__poolWeight__" + Y)
120+func X () = "%s__nextInternalAssetId"
121121
122122
123-func Z (Y,aa) = ((("%s%s__poolWeight__" + Y) + "__") + toString(aa))
123+func Y (Z) = ("%s%s__poolWeight__" + Z)
124124
125125
126-func ab (ac) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(ac))
126+func aa (Z,ab) = ((("%s%s__poolWeight__" + Z) + "__") + toString(ab))
127127
128128
129-func ad (ae) = ("%s%s%s__mappings__baseAsset2internalId__" + ae)
129+func ac (ad) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(ad))
130130
131131
132-func af (ag,ah) = (((("%d%d%s__" + ag) + "__") + ah) + "__config")
132+func ae (af) = ("%s%s%s__mappings__baseAsset2internalId__" + af)
133133
134134
135-func ai (aj) = {
136- let ak = aj
137- let ag = ak._1
138- let ah = ak._2
139- makeString(["%d%d%s", toString(ag), toString(ah), "oneTokenOperationsDisabled"], j)
135+func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
136+
137+
138+func aj (ak) = {
139+ let al = ak
140+ let ah = al._1
141+ let ai = al._2
142+ makeString(["%d%d%s", toString(ah), toString(ai), "oneTokenOperationsDisabled"], j)
140143 }
141144
142145
143-func al () = makeString(["%s", "oneTokenOperationsDisabled"], j)
146+func am () = makeString(["%s", "oneTokenOperationsDisabled"], j)
144147
145148
146-func am (an) = (("%s%s%s__" + an) + "__mappings__lpAsset2Pool")
149+func an (ao) = (("%s%s%s__" + ao) + "__mappings__lpAsset2Pool")
147150
148151
149-func ao (ap,aq) = (((("%d%d%s%s__" + ap) + "__") + aq) + "__mappings__PoolAssets2LpAsset")
152+func ap (aq,ar) = (((("%d%d%s%s__" + aq) + "__") + ar) + "__mappings__PoolAssets2LpAsset")
150153
151154
152-func ar (Y) = ("%s%s__spread__" + Y)
155+func as (Z) = ("%s%s__spread__" + Z)
153156
154157
155-func as (at) = (("%s%s%s__" + at) + "__mappings__poolContract2PoolAssets")
158+func at (au) = (("%s%s%s__" + au) + "__mappings__poolContract2PoolAssets")
156159
157160
158-func au (ap,aq) = (((("%d%d%s%s__" + toString(ap)) + "__") + toString(aq)) + "__mappings__poolAssets2PoolContract")
161+func av (aq,ar) = (((("%d%d%s%s__" + toString(aq)) + "__") + toString(ar)) + "__mappings__poolAssets2PoolContract")
159162
160163
161-func av (at) = (("%s%s%s__" + at) + "__mappings__poolContract2LpAsset")
164+func aw (au) = (("%s%s%s__" + au) + "__mappings__poolContract2LpAsset")
162165
163166
164-func aw (an) = (("%s%s%s__" + an) + "__mappings__lpAsset2PoolContract")
167+func ax (ao) = (("%s%s%s__" + ao) + "__mappings__lpAsset2PoolContract")
165168
166169
167-func ax (ay,az) = ((("%s%s%s__wxEmission__" + ay) + "__") + az)
170+func ay (az,aA) = ((("%s%s%s__wxEmission__" + az) + "__") + aA)
168171
169172
170-func aA (Y) = ("%s%s__inFee__" + Y)
173+func aB (Z) = ("%s%s__inFee__" + Z)
171174
172175
173-func aB () = "%s__inFeeDefault"
176+func aC () = "%s__inFeeDefault"
174177
175178
176-func aC (Y) = ("%s%s__outFee__" + Y)
179+func aD (Z) = ("%s%s__outFee__" + Z)
177180
178181
179-func aD () = "%s__outFeeDefault"
182+func aE () = "%s__outFeeDefault"
180183
181184
182-func aE (aF) = valueOrErrorMessage(getString(this, aF), ("No data for this.key=" + aF))
185+func aF (aG) = valueOrErrorMessage(getString(this, aG), ("No data for this.key=" + aG))
183186
184187
185-func aG (aF) = valueOrErrorMessage(getBoolean(this, aF), ("No data for this.key=" + aF))
188+func aH (aG) = valueOrErrorMessage(getBoolean(this, aG), ("No data for this.key=" + aG))
186189
187190
188-func aH (aF) = valueOrErrorMessage(getInteger(this, aF), ("No data for this.key=" + aF))
191+func aI (aG) = valueOrErrorMessage(getInteger(this, aG), ("No data for this.key=" + aG))
189192
190193
191-let aI = 1
194+let aJ = 1
192195
193-let aJ = 2
196+let aK = 2
194197
195-let aK = 3
198+let aL = 3
196199
197-let aL = 4
200+let aM = 4
198201
199-let aM = 5
202+let aN = 5
200203
201-let aN = 6
204+let aO = 6
202205
203-let aO = 7
206+let aP = 7
204207
205-let aP = 8
208+let aQ = 8
206209
207-let aQ = 9
210+let aR = 9
208211
209-let aR = 10
212+let aS = 10
210213
211-let aS = 11
214+let aT = 11
212215
213-func aT (aU) = addressFromStringValue(aU[aJ])
216+func aU (aV) = addressFromStringValue(aV[aK])
214217
215218
216-func aV (aU) = addressFromStringValue(aU[aM])
219+func aW (aV) = addressFromStringValue(aV[aN])
217220
218221
219-func aW (aU) = addressFromStringValue(aU[aI])
222+func aX (aV) = addressFromStringValue(aV[aJ])
220223
221224
222-func aX (aU) = addressFromStringValue(aU[aR])
225+func aY (aV) = addressFromStringValue(aV[aS])
223226
224227
225-func aY () = {
226- let aZ = getString(T())
227- if ($isInstanceOf(aZ, "String"))
228+func aZ () = {
229+ let ba = getString(U())
230+ if ($isInstanceOf(ba, "String"))
228231 then {
229- let ba = aZ
230- if ((size(ba) == 0))
232+ let bb = ba
233+ if ((size(bb) == 0))
231234 then nil
232- else split(ba, j)
235+ else split(bb, j)
233236 }
234237 else nil
235238 }
236239
237240
238-func bb () = {
239- let aZ = getString(O())
240- if ($isInstanceOf(aZ, "String"))
241+func bc () = {
242+ let ba = getString(P())
243+ if ($isInstanceOf(ba, "String"))
241244 then {
242- let ba = aZ
243- fromBase58String(ba)
245+ let bb = ba
246+ fromBase58String(bb)
244247 }
245- else if ($isInstanceOf(aZ, "Unit"))
248+ else if ($isInstanceOf(ba, "Unit"))
246249 then unit
247250 else throw("Match error")
248251 }
249252
250253
251-func bc () = {
252- let aZ = getString(P())
253- if ($isInstanceOf(aZ, "String"))
254+func bd () = {
255+ let ba = getString(Q())
256+ if ($isInstanceOf(ba, "String"))
254257 then {
255- let ba = aZ
256- fromBase58String(ba)
258+ let bb = ba
259+ fromBase58String(bb)
257260 }
258- else if ($isInstanceOf(aZ, "Unit"))
261+ else if ($isInstanceOf(ba, "Unit"))
259262 then unit
260263 else throw("Match error")
261264 }
262265
263266
264-let bd = throw("Permission denied")
267+let be = throw("Permission denied")
265268
266-func be (bf) = if ((bf.caller == this))
269+let bf = throw("Test error here")
270+
271+func bg (bh) = if ((bh.caller == this))
267272 then true
268- else bd
273+ else be
269274
270275
271-func bg (bf) = {
272- let aZ = bb()
273- if ($isInstanceOf(aZ, "ByteVector"))
276+func bi (bh) = {
277+ let ba = bc()
278+ if ($isInstanceOf(ba, "ByteVector"))
274279 then {
275- let bh = aZ
276- if ((bf.callerPublicKey == bh))
280+ let bj = ba
281+ if ((bh.callerPublicKey == bj))
277282 then true
278- else bd
283+ else be
279284 }
280- else if ($isInstanceOf(aZ, "Unit"))
281- then be(bf)
285+ else if ($isInstanceOf(ba, "Unit"))
286+ then bg(bh)
282287 else throw("Match error")
283288 }
284289
285290
286-func bi (bj,bk,bl,bm,bn,bo,bp,bq,br,bs,bt) = makeString(["%s%s%s%s%s%s%s%s%s%s%s", bj, bk, bl, bm, bn, bo, bp, bq, br, bs, bt], j)
291+func bk (bl,bm,bn,bo,bp,bq,br,bs,bt,bu,bv) = makeString(["%s%s%s%s%s%s%s%s%s%s%s", bl, bm, bn, bo, bp, bq, br, bs, bt, bu, bv], j)
287292
288293
289-func bu (bj,bk,bl,bm,bn,bo,bp) = makeString(["%s%s%s%s%s%s", bj, bk, bl, bm, bn, bo, bp], j)
294+func bw (bl,bm,bn,bo,bp,bq,br) = makeString(["%s%s%s%s%s%s", bl, bm, bn, bo, bp, bq, br], j)
290295
291296
292-func bv (Y,bw,bx,by,bz,bA,bB,bC,bD,bE,bF) = makeString(["%s%d%s%s%s%d%d%d%d%d%s", Y, bw, bx, by, bz, toString(bA), toString(bB), toString(bC), toString(bD), toString(bE), bF], j)
297+func bx (Z,by,bz,bA,bB,bC,bD,bE,bF,bG,bH) = makeString(["%s%d%s%s%s%d%d%d%d%d%s", Z, by, bz, bA, bB, toString(bC), toString(bD), toString(bE), toString(bF), toString(bG), bH], j)
293298
294299
295-func bG (bH,bI) = makeString(["%d%d", toString(bH), toString(bI)], j)
300+func bI (bJ,bK) = makeString(["%d%d", toString(bJ), toString(bK)], j)
296301
297302
298-func bJ (Y) = {
299- let bK = split(aE(as(Y)), j)
300- let ag = bK[1]
301- let ah = bK[2]
302- split(aE(af(ag, ah)), j)
303+func bL (Z) = {
304+ let bM = split(aF(at(Z)), j)
305+ let ah = bM[1]
306+ let ai = bM[2]
307+ split(aF(ag(ah, ai)), j)
303308 }
304309
305310
306-func bL (bM,bN) = {
307- let bO = valueOrElse(getInteger(this, ad(bM)), 0)
308- let bP = valueOrElse(getInteger(this, W()), 0)
309- let bQ = if ((bO == 0))
311+func bN (bO,bP) = {
312+ let bQ = valueOrElse(getInteger(this, ae(bO)), 0)
313+ let bR = valueOrElse(getInteger(this, X()), 0)
314+ let bS = if ((bQ == 0))
310315 then {
311- let bR = (bP + bN)
312- $Tuple3(bR, [IntegerEntry(W(), bR), IntegerEntry(ad(bM), bR), StringEntry(ab(bR), bM)], true)
316+ let bT = (bR + bP)
317+ $Tuple3(bT, [IntegerEntry(X(), bT), IntegerEntry(ae(bO), bT), StringEntry(ac(bT), bO)], true)
313318 }
314- else $Tuple3(bO, nil, false)
315- bQ
319+ else $Tuple3(bQ, nil, false)
320+ bS
316321 }
317322
318323
319-func bS (bf) = {
320- let bT = split(valueOrElse(getString(Q()), k), j)
321- if (containsElement(bT, toBase58String(bf.callerPublicKey)))
324+func bU (bh) = {
325+ let bV = split(valueOrElse(getString(R()), k), j)
326+ if (containsElement(bV, toBase58String(bh.callerPublicKey)))
322327 then true
323328 else {
324- let bU = bg(bf)
325- if ((bU == bU))
329+ let bW = bi(bh)
330+ if ((bW == bW))
326331 then true
327332 else throw("Strict value is not equal to itself.")
328333 }
329334 }
330335
331336
332-func bV (aF,bW,bX) = valueOrElse(getInteger(this, aF), valueOrElse(getInteger(this, bW), bX))
337+func bX (aG,bY,bZ) = valueOrElse(getInteger(this, aG), valueOrElse(getInteger(this, bY), bZ))
333338
334339
335-@Callable(bf)
336-func constructor (bY,bZ,bl,bm,bn,bo,ca,cb) = {
337- let cc = bg(bf)
338- if ((cc == cc))
339- then [StringEntry(I(), bu(bY, bZ, bl, bm, bn, bo, ca)), IntegerEntry(U(), cb)]
340+@Callable(bh)
341+func getSwapContractREADONLY () = $Tuple2(nil, aF(I()))
342+
343+
344+
345+@Callable(bh)
346+func getLpAssetFromPoolAssetsREADONLY (ca,cb) = if (if ((ca == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
347+ then (cb == "WAVES")
348+ else false)
349+ then $Tuple2(nil, unit)
350+ else {
351+ let cc = value(getInteger(this, ae(ca)))
352+ let cd = value(getInteger(this, ae(cb)))
353+ let ce = getString(this, ap(toString(cc), toString(cd)))
354+ let cf = if ((ce == unit))
355+ then unit
356+ else drop(value(ce), 4)
357+ $Tuple2(nil, cf)
358+ }
359+
360+
361+
362+@Callable(bh)
363+func getPoolAddressFromLpAssetREADONLY (cg) = $Tuple2(nil, valueOrElse(getString(this, ax(cg)), ""))
364+
365+
366+
367+@Callable(bh)
368+func constructor (ch,ci,bn,bo,bp,bq,cj,ck) = {
369+ let cl = bi(bh)
370+ if ((cl == cl))
371+ then [StringEntry(J(), bw(ch, ci, bn, bo, bp, bq, cj)), IntegerEntry(V(), ck)]
340372 else throw("Strict value is not equal to itself.")
341373 }
342374
343375
344376
345-@Callable(bf)
346-func constructorV2 (cd) = {
347- let cc = bg(bf)
348- if ((cc == cc))
377+@Callable(bh)
378+func constructorV2 (cm) = {
379+ let cl = bi(bh)
380+ if ((cl == cl))
349381 then {
350- let ce = addressFromPublicKey(fromBase58String(cd))
351- if ((ce == ce))
352- then [StringEntry(L(), cd)]
382+ let cn = addressFromPublicKey(fromBase58String(cm))
383+ if ((cn == cn))
384+ then [StringEntry(M(), cm)]
353385 else throw("Strict value is not equal to itself.")
354386 }
355387 else throw("Strict value is not equal to itself.")
357389
358390
359391
360-@Callable(bf)
361-func constructorV3 (bq,br,bs,bt) = {
362- let cc = bg(bf)
363- if ((cc == cc))
392+@Callable(bh)
393+func constructorV3 (bs,bt,bu,bv) = {
394+ let cl = bi(bh)
395+ if ((cl == cl))
364396 then {
365- let aU = split(aE(I()), j)
366-[StringEntry(I(), bi(aU[1], aU[2], aU[3], aU[4], aU[5], aU[6], aU[7], bq, br, bs, bt))]
397+ let aV = split(aF(J()), j)
398+[StringEntry(J(), bk(aV[1], aV[2], aV[3], aV[4], aV[5], aV[6], aV[7], bs, bt, bu, bv))]
367399 }
368400 else throw("Strict value is not equal to itself.")
369401 }
370402
371403
372404
373-@Callable(bf)
374-func constructorV4 (cf,cg) = {
375- let cc = bg(bf)
376- if ((cc == cc))
377- then [StringEntry(M(), cf), StringEntry(N(), makeString(cg, j))]
405+@Callable(bh)
406+func constructorV4 (co,cp) = {
407+ let cl = bi(bh)
408+ if ((cl == cl))
409+ then [StringEntry(N(), co), StringEntry(O(), makeString(cp, j))]
378410 else throw("Strict value is not equal to itself.")
379411 }
380412
381413
382414
383-@Callable(bf)
384-func constructorV5 (ch) = {
385- let cc = bg(bf)
386- if ((cc == cc))
387- then [StringEntry(R(), ch)]
415+@Callable(bh)
416+func constructorV5 (cq) = {
417+ let cl = bi(bh)
418+ if ((cl == cl))
419+ then [StringEntry(S(), cq)]
388420 else throw("Strict value is not equal to itself.")
389421 }
390422
391423
392424
393-@Callable(bf)
394-func constructorV6 (ci,cj) = {
395- let ck = [bg(bf), if ((addressFromString(ci) != unit))
425+@Callable(bh)
426+func constructorV6 (cr,cs) = {
427+ let ct = [bi(bh), if ((addressFromString(cr) != unit))
396428 then true
397429 else "invalid voting emission contract address"]
398- if ((ck == ck))
399- then [StringEntry(S(), ci), StringEntry(T(), makeString(cj, j))]
430+ if ((ct == ct))
431+ then [StringEntry(T(), cr), StringEntry(U(), makeString(cs, j))]
400432 else throw("Strict value is not equal to itself.")
401433 }
402434
403435
404436
405-@Callable(bf)
406-func setManager (cl) = {
407- let cc = bg(bf)
408- if ((cc == cc))
437+@Callable(bh)
438+func setManager (cu) = {
439+ let cl = bi(bh)
440+ if ((cl == cl))
409441 then {
410- let cm = fromBase58String(cl)
411- if ((cm == cm))
412- then [StringEntry(P(), cl)]
442+ let cv = fromBase58String(cu)
443+ if ((cv == cv))
444+ then [StringEntry(Q(), cu)]
413445 else throw("Strict value is not equal to itself.")
414446 }
415447 else throw("Strict value is not equal to itself.")
417449
418450
419451
420-@Callable(bf)
452+@Callable(bh)
421453 func confirmManager () = {
422- let cn = bc()
423- let co = if (isDefined(cn))
454+ let cw = bd()
455+ let cx = if (isDefined(cw))
424456 then true
425457 else throw("No pending manager")
426- if ((co == co))
458+ if ((cx == cx))
427459 then {
428- let cp = if ((bf.callerPublicKey == value(cn)))
460+ let cy = if ((bh.callerPublicKey == value(cw)))
429461 then true
430462 else throw("You are not pending manager")
431- if ((cp == cp))
432- then [StringEntry(O(), toBase58String(value(cn))), DeleteEntry(P())]
463+ if ((cy == cy))
464+ then [StringEntry(P(), toBase58String(value(cw))), DeleteEntry(Q())]
433465 else throw("Strict value is not equal to itself.")
434466 }
435467 else throw("Strict value is not equal to itself.")
437469
438470
439471
440-@Callable(bf)
441-func setAdmins (cq) = {
442- let cc = bg(bf)
443- if ((cc == cc))
444- then [StringEntry(Q(), makeString(cq, j))]
472+@Callable(bh)
473+func setAdmins (cz) = {
474+ let cl = bi(bh)
475+ if ((cl == cl))
476+ then [StringEntry(R(), makeString(cz, j))]
445477 else throw("Strict value is not equal to itself.")
446478 }
447479
448480
449481
450-@Callable(bf)
451-func activateNewPool (Y,by,bz,cr,cs,ct,bF,cu) = {
452- let cc = bS(bf)
453- if ((cc == cc))
454- then if (isDefined(getString(as(Y))))
455- then throw((("Pool address " + Y) + " already registered."))
482+@Callable(bh)
483+func activateNewPool (Z,bA,bB,cA,cB,cC,bH,cD) = {
484+ let cl = bU(bh)
485+ if ((cl == cl))
486+ then if (isDefined(getString(at(Z))))
487+ then throw((("Pool address " + Z) + " already registered."))
456488 else {
457- let cv = bL(by, 1)
458- let cw = cv._1
459- let cx = bL(bz, if (cv._3)
489+ let cE = bN(bA, 1)
490+ let cF = cE._1
491+ let cG = bN(bB, if (cE._3)
460492 then 2
461493 else 1)
462- let cy = cx._1
463- let cz = valueOrErrorMessage(scriptHash(addressFromStringValue(Y)), ("No script has been found on pool account " + Y))
464- let cA = getBinaryValue(K())
465- let cB = getString(this, af(toString(cw), toString(cy)))
466- if (isDefined(cB))
467- then throw((((("Pool " + by) + "/") + bz) + " has already been activated."))
494+ let cH = cG._1
495+ let cI = valueOrErrorMessage(scriptHash(addressFromStringValue(Z)), ("No script has been found on pool account " + Z))
496+ let cJ = getBinaryValue(L())
497+ let cK = getString(this, ag(toString(cF), toString(cH)))
498+ if (isDefined(cK))
499+ then throw((((("Pool " + bA) + "/") + bB) + " has already been activated."))
468500 else {
469- let cC = value(getString(this, af(toString(cw), toString(cy))))
470- let cD = if ((by == "WAVES"))
501+ let cL = value(getString(this, ag(toString(cF), toString(cH))))
502+ let cM = if ((bA == "WAVES"))
471503 then i
472- else pow(10, 0, value(assetInfo(fromBase58String(by))).decimals, 0, 0, DOWN)
473- let cE = if ((bz == "WAVES"))
504+ else pow(10, 0, value(assetInfo(fromBase58String(bA))).decimals, 0, 0, DOWN)
505+ let cN = if ((bB == "WAVES"))
474506 then i
475- else pow(10, 0, value(assetInfo(fromBase58String(bz))).decimals, 0, 0, DOWN)
476- let cF = Issue(cr, cs, 1, 8, true)
477- let bx = calculateAssetId(cF)
478- let cG = toBase58String(bx)
479- let cH = invoke(addressFromStringValue(Y), "activate", [by, bz], nil)
480- if ((cH == cH))
481- then if ((cH != "success"))
507+ else pow(10, 0, value(assetInfo(fromBase58String(bB))).decimals, 0, 0, DOWN)
508+ let cO = Issue(cA, cB, 1, 8, true)
509+ let bz = calculateAssetId(cO)
510+ let cP = toBase58String(bz)
511+ let cQ = invoke(addressFromStringValue(Z), "activate", [bA, bB], nil)
512+ if ((cQ == cQ))
513+ then if ((cQ != "success"))
482514 then throw("Pool initialisation error happened.")
483515 else {
484- let ch = addressFromStringValue(aE(R()))
485- let cI = invoke(ch, "createOrUpdate", [cG, cr, false], nil)
486- if ((cI == cI))
516+ let cq = addressFromStringValue(aF(S()))
517+ let cR = invoke(cq, "createOrUpdate", [cP, cA, false], nil)
518+ if ((cR == cR))
487519 then {
488- let cJ = invoke(ch, "addLabel", [cG, g], nil)
489- if ((cJ == cJ))
520+ let cS = invoke(cq, "addLabel", [cP, g], nil)
521+ if ((cS == cS))
490522 then {
491- let cK = invoke(ch, "setLogo", [cG, cu], nil)
492- if ((cK == cK))
523+ let cT = invoke(cq, "setLogo", [cP, cD], nil)
524+ if ((cT == cT))
493525 then {
494- let cL = invoke(ch, "addAssetsLink", [by, bz, cG], nil)
495- if ((cL == cL))
526+ let cU = invoke(cq, "addAssetsLink", [bA, bB, cP], nil)
527+ if ((cU == cU))
496528 then {
497- let cM = invoke(ch, "increaseAssetPoolsNumber", [by], nil)
498- if ((cM == cM))
499- then $Tuple2(((cv._2 ++ cx._2) ++ [cF, Burn(bx, 1), StringEntry(af(toString(cw), toString(cy)), bv(Y, toString(l), cG, by, bz, cD, cE, cw, cy, i, bF)), StringEntry(am(cG), bG(cw, cy)), StringEntry(ao(toString(cw), toString(cy)), ("%s__" + cG)), StringEntry(as(Y), bG(cw, cy)), StringEntry(au(cw, cy), Y), StringEntry(aw(cG), Y), StringEntry(av(Y), cG), IntegerEntry(X(Y), ct), IntegerEntry(ar(Y), h)]), cG)
529+ let cV = invoke(cq, "increaseAssetPoolsNumber", [bA], nil)
530+ if ((cV == cV))
531+ then $Tuple2(((cE._2 ++ cG._2) ++ [cO, Burn(bz, 1), StringEntry(ag(toString(cF), toString(cH)), bx(Z, toString(l), cP, bA, bB, cM, cN, cF, cH, i, bH)), StringEntry(an(cP), bI(cF, cH)), StringEntry(ap(toString(cF), toString(cH)), ("%s__" + cP)), StringEntry(at(Z), bI(cF, cH)), StringEntry(av(cF, cH), Z), StringEntry(ax(cP), Z), StringEntry(aw(Z), cP), IntegerEntry(Y(Z), cC), IntegerEntry(as(Z), h)]), cP)
500532 else throw("Strict value is not equal to itself.")
501533 }
502534 else throw("Strict value is not equal to itself.")
515547
516548
517549
518-@Callable(bf)
519-func managePool (Y,cN) = {
520- let cc = bg(bf)
521- if ((cc == cc))
550+@Callable(bh)
551+func managePool (Z,cW) = {
552+ let cl = bi(bh)
553+ if ((cl == cl))
522554 then {
523- let cB = bJ(Y)
524- let bw = cB[t]
525- let cG = cB[u]
526- let by = cB[v]
527- let bz = cB[w]
528- let cD = parseIntValue(cB[x])
529- let cE = parseIntValue(cB[y])
530- let cw = parseIntValue(cB[z])
531- let cy = parseIntValue(cB[A])
532- let cO = parseIntValue(cB[B])
533- let bF = cB[C]
534-[StringEntry(af(toString(cw), toString(cy)), bv(Y, toString(cN), cG, by, bz, cD, cE, cw, cy, cO, bF))]
555+ let cK = bL(Z)
556+ let by = cK[t]
557+ let cP = cK[u]
558+ let bA = cK[v]
559+ let bB = cK[w]
560+ let cM = parseIntValue(cK[x])
561+ let cN = parseIntValue(cK[y])
562+ let cF = parseIntValue(cK[z])
563+ let cH = parseIntValue(cK[A])
564+ let cX = parseIntValue(cK[B])
565+ let bH = cK[C]
566+[StringEntry(ag(toString(cF), toString(cH)), bx(Z, toString(cW), cP, bA, bB, cM, cN, cF, cH, cX, bH))]
535567 }
536568 else throw("Strict value is not equal to itself.")
537569 }
538570
539571
540572
541-@Callable(bf)
542-func emit (cP) = {
543- let cQ = bf.caller
544- let cR = bf.originCaller
545- let cS = valueOrErrorMessage(getString(av(toString(cQ))), "Invalid LP address called me.")
546- let cT = fromBase58String(cS)
547- let cg = split(valueOrElse(getString(N()), k), j)
548- let cf = addressFromStringValue(valueOrErrorMessage(getString(M()), "Legacy factory contract does not exists."))
549- if ((0 >= cP))
573+@Callable(bh)
574+func emit (cY) = {
575+ let cZ = bh.caller
576+ let da = bh.originCaller
577+ let db = valueOrErrorMessage(getString(aw(toString(cZ))), "Invalid LP address called me.")
578+ let dc = fromBase58String(db)
579+ let cp = split(valueOrElse(getString(O()), k), j)
580+ let co = addressFromStringValue(valueOrErrorMessage(getString(N()), "Legacy factory contract does not exists."))
581+ if ((0 >= cY))
550582 then nil
551- else if (containsElement(cg, toString(cQ)))
552- then $Tuple2(nil, cf)
553- else $Tuple2([Reissue(cT, cP, true), ScriptTransfer(bf.caller, cP, cT)], "success")
583+ else if (containsElement(cp, toString(cZ)))
584+ then $Tuple2(nil, co)
585+ else $Tuple2([Reissue(dc, cY, true), ScriptTransfer(bh.caller, cY, dc)], "success")
554586 }
555587
556588
557589
558-@Callable(bf)
559-func burn (cU) = {
560- let cQ = bf.caller
561- let cR = bf.originCaller
562- let cV = value(bf.payments[0])
563- let cW = value(cV.amount)
564- let cX = toBase58String(value(cV.assetId))
565- let cY = valueOrErrorMessage(getString(av(toString(cQ))), "Invalid LP address called me.")
566- if ((cX != cY))
590+@Callable(bh)
591+func burn (dd) = {
592+ let cZ = bh.caller
593+ let da = bh.originCaller
594+ let de = value(bh.payments[0])
595+ let df = value(de.amount)
596+ let dg = toBase58String(value(de.assetId))
597+ let dh = valueOrErrorMessage(getString(aw(toString(cZ))), "Invalid LP address called me.")
598+ if ((dg != dh))
567599 then throw("Invalid asset passed.")
568- else if ((cU != cW))
600+ else if ((dd != df))
569601 then throw("Invalid amount passed.")
570602 else {
571- let cT = fromBase58String(cY)
572- $Tuple2([Burn(cT, cU)], "success")
603+ let dc = fromBase58String(dh)
604+ $Tuple2([Burn(dc, dd)], "success")
573605 }
574606 }
575607
576608
577609
578-@Callable(bf)
579-func modifyWeight (bx,cZ) = {
580- let cc = if ((toBase58String(bf.caller.bytes) == valueOrElse(getString(this, S()), "")))
610+@Callable(bh)
611+func modifyWeight (bz,di) = {
612+ let cl = if ((toBase58String(bh.caller.bytes) == valueOrElse(getString(this, T()), "")))
581613 then true
582- else bg(bf)
583- if ((cc == cc))
614+ else bi(bh)
615+ if ((cl == cl))
584616 then {
585- let at = aE(aw(bx))
586- let da = X(at)
587- let db = X(f)
588- let dc = valueOrElse(getInteger(db), 0)
589- let ct = valueOrElse(getInteger(da), 0)
590- let dd = cZ
591- let aU = split(aE(I()), j)
592- let bY = aW(aU)
593- let de = invoke(bY, "onModifyWeight", [bx, at], nil)
594- if ((de == de))
617+ let au = aF(ax(bz))
618+ let dj = Y(au)
619+ let dk = Y(f)
620+ let dl = valueOrElse(getInteger(dk), 0)
621+ let cC = valueOrElse(getInteger(dj), 0)
622+ let dm = di
623+ let aV = split(aF(J()), j)
624+ let ch = aX(aV)
625+ let dn = invoke(ch, "onModifyWeight", [bz, au], nil)
626+ if ((dn == dn))
595627 then {
596- let df = if ((dc == 0))
628+ let do = if ((dl == 0))
597629 then nil
598- else [IntegerEntry(db, 0)]
599- let dg = Z(at, 0)
600- let dh = getInteger(dg)
601- let di = if ((dh == unit))
630+ else [IntegerEntry(dk, 0)]
631+ let dp = aa(au, 0)
632+ let dq = getInteger(dp)
633+ let dr = if ((dq == unit))
602634 then nil
603- else [DeleteEntry(dg)]
604- (([IntegerEntry(da, dd)] ++ df) ++ di)
635+ else [DeleteEntry(dp)]
636+ (([IntegerEntry(dj, dm)] ++ do) ++ dr)
605637 }
606638 else throw("Strict value is not equal to itself.")
607639 }
610642
611643
612644
613-@Callable(bf)
614-func modifyWeights (dj,dk,dl,dm) = {
615- let cc = bg(bf)
616- if ((cc == cc))
645+@Callable(bh)
646+func modifyWeights (ds,dt,du,dv) = {
647+ let cl = bi(bh)
648+ if ((cl == cl))
617649 then {
618- let dn = ((5 * e) / 100)
619- let do = ((5 * e) / 100)
620- let dp = ((5 * e) / 100)
621- let aU = split(aE(I()), j)
622- let dq = aW(aU)
623- let dr = aX(aU)
624- let ds = X(dj)
625- let dt = X(dk)
626- let du = X(dl)
627- let dv = X(dm)
628- let dw = aH(ds)
629- let dx = aH(dt)
630- let dy = (dw - dp)
631- let dz = (dx - dp)
632- if ((0 >= dy))
633- then throw(("invalid btcWeightNew: " + toString(dy)))
634- else if ((0 >= dz))
635- then throw(("invalid ethWeightNew: " + toString(dz)))
650+ let dw = ((5 * e) / 100)
651+ let dx = ((5 * e) / 100)
652+ let dy = ((5 * e) / 100)
653+ let aV = split(aF(J()), j)
654+ let dz = aX(aV)
655+ let dA = aY(aV)
656+ let dB = Y(ds)
657+ let dC = Y(dt)
658+ let dD = Y(du)
659+ let dE = Y(dv)
660+ let dF = aI(dB)
661+ let dG = aI(dC)
662+ let dH = (dF - dy)
663+ let dI = (dG - dy)
664+ if ((0 >= dH))
665+ then throw(("invalid btcWeightNew: " + toString(dH)))
666+ else if ((0 >= dI))
667+ then throw(("invalid ethWeightNew: " + toString(dI)))
636668 else {
637- let dA = aE(av(dj))
638- let dB = aE(av(dk))
639- let dC = aE(av(dl))
640- let dD = aE(av(dm))
641- let dE = invoke(dq, "onModifyWeight", [dA, dj], nil)
642- if ((dE == dE))
669+ let dJ = aF(aw(ds))
670+ let dK = aF(aw(dt))
671+ let dL = aF(aw(du))
672+ let dM = aF(aw(dv))
673+ let dN = invoke(dz, "onModifyWeight", [dJ, ds], nil)
674+ if ((dN == dN))
643675 then {
644- let dF = invoke(dq, "onModifyWeight", [dB, dk], nil)
645- if ((dF == dF))
676+ let dO = invoke(dz, "onModifyWeight", [dK, dt], nil)
677+ if ((dO == dO))
646678 then {
647- let dG = invoke(dq, "onModifyWeight", [dC, dl], nil)
648- if ((dG == dG))
679+ let dP = invoke(dz, "onModifyWeight", [dL, du], nil)
680+ if ((dP == dP))
649681 then {
650- let dH = invoke(dq, "onModifyWeight", [dD, dm], nil)
651- if ((dH == dH))
652- then [IntegerEntry(ds, dy), IntegerEntry(dt, dz), IntegerEntry(du, dn), IntegerEntry(dv, do), IntegerEntry(Z(dj, 0), dw), IntegerEntry(Z(dk, 0), dx), IntegerEntry(Z(dl, 0), dn), IntegerEntry(Z(dm, 0), do)]
682+ let dQ = invoke(dz, "onModifyWeight", [dM, dv], nil)
683+ if ((dQ == dQ))
684+ then [IntegerEntry(dB, dH), IntegerEntry(dC, dI), IntegerEntry(dD, dw), IntegerEntry(dE, dx), IntegerEntry(aa(ds, 0), dF), IntegerEntry(aa(dt, 0), dG), IntegerEntry(aa(du, 0), dw), IntegerEntry(aa(dv, 0), dx)]
653685 else throw("Strict value is not equal to itself.")
654686 }
655687 else throw("Strict value is not equal to itself.")
664696
665697
666698
667-@Callable(bf)
668-func checkWxEmissionPoolLabel (ay,az) = {
669- let dI = {
670- let aZ = getBoolean(ax(ay, az))
671- if ($isInstanceOf(aZ, "Boolean"))
699+@Callable(bh)
700+func checkWxEmissionPoolLabel (az,aA) = {
701+ let dR = {
702+ let ba = getBoolean(ay(az, aA))
703+ if ($isInstanceOf(ba, "Boolean"))
672704 then {
673- let dJ = aZ
674- dJ
705+ let dS = ba
706+ dS
675707 }
676708 else false
677709 }
678- $Tuple2(nil, dI)
710+ $Tuple2(nil, dR)
679711 }
680712
681713
682714
683-@Callable(bf)
684-func setWxEmissionPoolLabel (ay,az) = {
685- let cc = bS(bf)
686- if ((cc == cc))
687- then $Tuple2([BooleanEntry(ax(ay, az), true)], unit)
715+@Callable(bh)
716+func setWxEmissionPoolLabel (az,aA) = {
717+ let cl = bU(bh)
718+ if ((cl == cl))
719+ then $Tuple2([BooleanEntry(ay(az, aA), true)], unit)
688720 else throw("Strict value is not equal to itself.")
689721 }
690722
691723
692724
693-@Callable(bf)
694-func deleteWxEmissionPoolLabel (ay,az) = {
695- let cc = if (be(bf))
725+@Callable(bh)
726+func deleteWxEmissionPoolLabel (az,aA) = {
727+ let cl = if (bg(bh))
696728 then true
697- else bS(bf)
698- if ((cc == cc))
699- then $Tuple2([DeleteEntry(ax(ay, az))], unit)
729+ else bU(bh)
730+ if ((cl == cl))
731+ then $Tuple2([DeleteEntry(ay(az, aA))], unit)
700732 else throw("Strict value is not equal to itself.")
701733 }
702734
703735
704736
705-@Callable(bf)
706-func onVerificationLoss (dK) = {
707- let cc = if ((toBase58String(bf.caller.bytes) == valueOrElse(getString(this, R()), "")))
737+@Callable(bh)
738+func onVerificationLoss (dT) = {
739+ let cl = if ((toBase58String(bh.caller.bytes) == valueOrElse(getString(this, S()), "")))
708740 then true
709- else bg(bf)
710- if ((cc == cc))
741+ else bi(bh)
742+ if ((cl == cl))
711743 then {
712- let cj = aY()
713- let dL = if ((size(cj) > 0))
744+ let cs = aZ()
745+ let dU = if ((size(cs) > 0))
714746 then true
715747 else throw("invalid price assets")
716- if ((dL == dL))
748+ if ((dU == dU))
717749 then {
718- func dM (dN,dO) = {
719- let dP = invoke(this, "deleteWxEmissionPoolLabel", [dK, dO], nil)
720- if ((dP == dP))
750+ func dV (dW,dX) = {
751+ let dY = invoke(this, "deleteWxEmissionPoolLabel", [dT, dX], nil)
752+ if ((dY == dY))
721753 then unit
722754 else throw("Strict value is not equal to itself.")
723755 }
724756
725- let dQ = {
726- let dR = cj
727- let dS = size(dR)
728- let dT = unit
729- func dU (dV,dW) = if ((dW >= dS))
730- then dV
731- else dM(dV, dR[dW])
757+ let dZ = {
758+ let ea = cs
759+ let eb = size(ea)
760+ let ec = unit
761+ func ed (ee,ef) = if ((ef >= eb))
762+ then ee
763+ else dV(ee, ea[ef])
732764
733- func dX (dV,dW) = if ((dW >= dS))
734- then dV
765+ func eg (ee,ef) = if ((ef >= eb))
766+ then ee
735767 else throw("List size exceeds 1")
736768
737- dX(dU(dT, 0), 1)
769+ eg(ed(ec, 0), 1)
738770 }
739- if ((dQ == dQ))
771+ if ((dZ == dZ))
740772 then $Tuple2(nil, unit)
741773 else throw("Strict value is not equal to itself.")
742774 }
747779
748780
749781
750-@Callable(bf)
751-func isPoolOneTokenOperationsDisabledREADONLY (Y) = {
752- let cB = bJ(Y)
753- let aj = $Tuple2(parseIntValue(cB[z]), parseIntValue(cB[A]))
754- let dY = valueOrElse(getBoolean(ai(aj)), false)
755- let dZ = valueOrElse(getBoolean(al()), false)
756- $Tuple2(nil, if (dZ)
782+@Callable(bh)
783+func isPoolOneTokenOperationsDisabledREADONLY (Z) = {
784+ let cK = bL(Z)
785+ let ak = $Tuple2(parseIntValue(cK[z]), parseIntValue(cK[A]))
786+ let eh = valueOrElse(getBoolean(aj(ak)), false)
787+ let ei = valueOrElse(getBoolean(am()), false)
788+ $Tuple2(nil, if (ei)
757789 then true
758- else dY)
790+ else eh)
759791 }
760792
761793
762794
763-@Callable(bf)
764-func getInFeeREADONLY (Y) = {
765- let ea = bV(aA(Y), aB(), 0)
766- $Tuple2(nil, ea)
795+@Callable(bh)
796+func getInFeeREADONLY (Z) = {
797+ let ej = bX(aB(Z), aC(), 0)
798+ $Tuple2(nil, ej)
767799 }
768800
769801
770802
771-@Callable(bf)
772-func getOutFeeREADONLY (Y) = {
773- let ea = bV(aC(Y), aD(), fraction(10, b, 10000))
774- $Tuple2(nil, ea)
803+@Callable(bh)
804+func getOutFeeREADONLY (Z) = {
805+ let ej = bX(aD(Z), aE(), fraction(10, b, 10000))
806+ $Tuple2(nil, ej)
775807 }
776808
777809
778810
779-@Callable(bf)
780-func getPoolStatusREADONLY (Y) = {
781- let bK = split(aE(as(Y)), j)
782- let ag = bK[1]
783- let ah = bK[2]
784- let eb = split(aE(af(ag, ah)), j)
785- $Tuple2(nil, parseIntValue(eb[t]))
811+@Callable(bh)
812+func getPoolStatusREADONLY (Z) = {
813+ let bM = split(aF(at(Z)), j)
814+ let ah = bM[1]
815+ let ai = bM[2]
816+ let ek = split(aF(ag(ah, ai)), j)
817+ $Tuple2(nil, parseIntValue(ek[t]))
786818 }
787819
788820
789-@Verifier(ec)
790-func ed () = {
791- let ee = {
792- let aZ = bb()
793- if ($isInstanceOf(aZ, "ByteVector"))
821+
822+@Callable(bh)
823+func getPoolAssetsByLpAssetId (cP) = {
824+ let bM = split(aF(an(cP)), j)
825+ let ah = bM[1]
826+ let ai = bM[2]
827+ let ek = split(aF(ag(ah, ai)), j)
828+ $Tuple2(nil, ek)
829+ }
830+
831+
832+@Verifier(el)
833+func em () = {
834+ let en = {
835+ let ba = bc()
836+ if ($isInstanceOf(ba, "ByteVector"))
794837 then {
795- let bh = aZ
796- bh
838+ let bj = ba
839+ bj
797840 }
798- else if ($isInstanceOf(aZ, "Unit"))
799- then ec.senderPublicKey
841+ else if ($isInstanceOf(ba, "Unit"))
842+ then el.senderPublicKey
800843 else throw("Match error")
801844 }
802- sigVerify(ec.bodyBytes, ec.proofs[0], ee)
845+ sigVerify(el.bodyBytes, el.proofs[0], en)
803846 }
804847
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = 18
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = b
1313
1414 let f = "GWXvirtualPOOL"
1515
1616 let g = "POOLS_LP"
1717
1818 let h = 2000000
1919
2020 let i = ((100 * 1000) * 1000)
2121
2222 let j = "__"
2323
2424 let k = ""
2525
2626 let l = 1
2727
2828 let m = 2
2929
3030 let n = 3
3131
3232 let o = 4
3333
3434 let p = 1
3535
3636 let q = 2
3737
3838 let r = 3
3939
4040 let s = 1
4141
4242 let t = 2
4343
4444 let u = 3
4545
4646 let v = 4
4747
4848 let w = 5
4949
5050 let x = 6
5151
5252 let y = 7
5353
5454 let z = 8
5555
5656 let A = 9
5757
5858 let B = 10
5959
6060 let C = 11
6161
6262 let D = "WX_EMISSION"
6363
6464 let E = [D]
6565
6666 func F () = "%s__allowedLpScriptHash"
6767
6868
6969 func G () = "%s__allowedLpStableScriptHash"
7070
7171
7272 func H () = "%s__allowedLpStableAddonScriptHash"
7373
7474
75-func I () = "%s__factoryConfig"
75+func I () = "%s__swapContract"
7676
7777
78-func J () = "%s__lpTokensList"
78+func J () = "%s__factoryConfig"
7979
8080
81-func K () = "%s%s__pool__scriptHash"
81+func K () = "%s__lpTokensList"
8282
8383
84-func L () = "%s%s__matcher__publicKey"
84+func L () = "%s%s__pool__scriptHash"
8585
8686
87-func M () = "%s__legacyFactoryContract"
87+func M () = "%s%s__matcher__publicKey"
8888
8989
90-func N () = "%s__legacyPools"
90+func N () = "%s__legacyFactoryContract"
9191
9292
93-func O () = "%s__managerPublicKey"
93+func O () = "%s__legacyPools"
9494
9595
96-func P () = "%s__pendingManagerPublicKey"
96+func P () = "%s__managerPublicKey"
9797
9898
99-func Q () = "%s__adminPubKeys"
99+func Q () = "%s__pendingManagerPublicKey"
100100
101101
102-func R () = "%s__assetsStoreContract"
102+func R () = "%s__adminPubKeys"
103103
104104
105-func S () = "%s__votingEmissionContract"
105+func S () = "%s__assetsStoreContract"
106106
107107
108-func T () = makeString(["%s", "priceAssets"], j)
108+func T () = "%s__votingEmissionContract"
109109
110110
111-func U () = "%s__priceDecimals"
111+func U () = makeString(["%s", "priceAssets"], j)
112112
113113
114-func V () = "%s__shutdown"
114+func V () = "%s__priceDecimals"
115115
116116
117-func W () = "%s__nextInternalAssetId"
117+func W () = "%s__shutdown"
118118
119119
120-func X (Y) = ("%s%s__poolWeight__" + Y)
120+func X () = "%s__nextInternalAssetId"
121121
122122
123-func Z (Y,aa) = ((("%s%s__poolWeight__" + Y) + "__") + toString(aa))
123+func Y (Z) = ("%s%s__poolWeight__" + Z)
124124
125125
126-func ab (ac) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(ac))
126+func aa (Z,ab) = ((("%s%s__poolWeight__" + Z) + "__") + toString(ab))
127127
128128
129-func ad (ae) = ("%s%s%s__mappings__baseAsset2internalId__" + ae)
129+func ac (ad) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(ad))
130130
131131
132-func af (ag,ah) = (((("%d%d%s__" + ag) + "__") + ah) + "__config")
132+func ae (af) = ("%s%s%s__mappings__baseAsset2internalId__" + af)
133133
134134
135-func ai (aj) = {
136- let ak = aj
137- let ag = ak._1
138- let ah = ak._2
139- makeString(["%d%d%s", toString(ag), toString(ah), "oneTokenOperationsDisabled"], j)
135+func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
136+
137+
138+func aj (ak) = {
139+ let al = ak
140+ let ah = al._1
141+ let ai = al._2
142+ makeString(["%d%d%s", toString(ah), toString(ai), "oneTokenOperationsDisabled"], j)
140143 }
141144
142145
143-func al () = makeString(["%s", "oneTokenOperationsDisabled"], j)
146+func am () = makeString(["%s", "oneTokenOperationsDisabled"], j)
144147
145148
146-func am (an) = (("%s%s%s__" + an) + "__mappings__lpAsset2Pool")
149+func an (ao) = (("%s%s%s__" + ao) + "__mappings__lpAsset2Pool")
147150
148151
149-func ao (ap,aq) = (((("%d%d%s%s__" + ap) + "__") + aq) + "__mappings__PoolAssets2LpAsset")
152+func ap (aq,ar) = (((("%d%d%s%s__" + aq) + "__") + ar) + "__mappings__PoolAssets2LpAsset")
150153
151154
152-func ar (Y) = ("%s%s__spread__" + Y)
155+func as (Z) = ("%s%s__spread__" + Z)
153156
154157
155-func as (at) = (("%s%s%s__" + at) + "__mappings__poolContract2PoolAssets")
158+func at (au) = (("%s%s%s__" + au) + "__mappings__poolContract2PoolAssets")
156159
157160
158-func au (ap,aq) = (((("%d%d%s%s__" + toString(ap)) + "__") + toString(aq)) + "__mappings__poolAssets2PoolContract")
161+func av (aq,ar) = (((("%d%d%s%s__" + toString(aq)) + "__") + toString(ar)) + "__mappings__poolAssets2PoolContract")
159162
160163
161-func av (at) = (("%s%s%s__" + at) + "__mappings__poolContract2LpAsset")
164+func aw (au) = (("%s%s%s__" + au) + "__mappings__poolContract2LpAsset")
162165
163166
164-func aw (an) = (("%s%s%s__" + an) + "__mappings__lpAsset2PoolContract")
167+func ax (ao) = (("%s%s%s__" + ao) + "__mappings__lpAsset2PoolContract")
165168
166169
167-func ax (ay,az) = ((("%s%s%s__wxEmission__" + ay) + "__") + az)
170+func ay (az,aA) = ((("%s%s%s__wxEmission__" + az) + "__") + aA)
168171
169172
170-func aA (Y) = ("%s%s__inFee__" + Y)
173+func aB (Z) = ("%s%s__inFee__" + Z)
171174
172175
173-func aB () = "%s__inFeeDefault"
176+func aC () = "%s__inFeeDefault"
174177
175178
176-func aC (Y) = ("%s%s__outFee__" + Y)
179+func aD (Z) = ("%s%s__outFee__" + Z)
177180
178181
179-func aD () = "%s__outFeeDefault"
182+func aE () = "%s__outFeeDefault"
180183
181184
182-func aE (aF) = valueOrErrorMessage(getString(this, aF), ("No data for this.key=" + aF))
185+func aF (aG) = valueOrErrorMessage(getString(this, aG), ("No data for this.key=" + aG))
183186
184187
185-func aG (aF) = valueOrErrorMessage(getBoolean(this, aF), ("No data for this.key=" + aF))
188+func aH (aG) = valueOrErrorMessage(getBoolean(this, aG), ("No data for this.key=" + aG))
186189
187190
188-func aH (aF) = valueOrErrorMessage(getInteger(this, aF), ("No data for this.key=" + aF))
191+func aI (aG) = valueOrErrorMessage(getInteger(this, aG), ("No data for this.key=" + aG))
189192
190193
191-let aI = 1
194+let aJ = 1
192195
193-let aJ = 2
196+let aK = 2
194197
195-let aK = 3
198+let aL = 3
196199
197-let aL = 4
200+let aM = 4
198201
199-let aM = 5
202+let aN = 5
200203
201-let aN = 6
204+let aO = 6
202205
203-let aO = 7
206+let aP = 7
204207
205-let aP = 8
208+let aQ = 8
206209
207-let aQ = 9
210+let aR = 9
208211
209-let aR = 10
212+let aS = 10
210213
211-let aS = 11
214+let aT = 11
212215
213-func aT (aU) = addressFromStringValue(aU[aJ])
216+func aU (aV) = addressFromStringValue(aV[aK])
214217
215218
216-func aV (aU) = addressFromStringValue(aU[aM])
219+func aW (aV) = addressFromStringValue(aV[aN])
217220
218221
219-func aW (aU) = addressFromStringValue(aU[aI])
222+func aX (aV) = addressFromStringValue(aV[aJ])
220223
221224
222-func aX (aU) = addressFromStringValue(aU[aR])
225+func aY (aV) = addressFromStringValue(aV[aS])
223226
224227
225-func aY () = {
226- let aZ = getString(T())
227- if ($isInstanceOf(aZ, "String"))
228+func aZ () = {
229+ let ba = getString(U())
230+ if ($isInstanceOf(ba, "String"))
228231 then {
229- let ba = aZ
230- if ((size(ba) == 0))
232+ let bb = ba
233+ if ((size(bb) == 0))
231234 then nil
232- else split(ba, j)
235+ else split(bb, j)
233236 }
234237 else nil
235238 }
236239
237240
238-func bb () = {
239- let aZ = getString(O())
240- if ($isInstanceOf(aZ, "String"))
241+func bc () = {
242+ let ba = getString(P())
243+ if ($isInstanceOf(ba, "String"))
241244 then {
242- let ba = aZ
243- fromBase58String(ba)
245+ let bb = ba
246+ fromBase58String(bb)
244247 }
245- else if ($isInstanceOf(aZ, "Unit"))
248+ else if ($isInstanceOf(ba, "Unit"))
246249 then unit
247250 else throw("Match error")
248251 }
249252
250253
251-func bc () = {
252- let aZ = getString(P())
253- if ($isInstanceOf(aZ, "String"))
254+func bd () = {
255+ let ba = getString(Q())
256+ if ($isInstanceOf(ba, "String"))
254257 then {
255- let ba = aZ
256- fromBase58String(ba)
258+ let bb = ba
259+ fromBase58String(bb)
257260 }
258- else if ($isInstanceOf(aZ, "Unit"))
261+ else if ($isInstanceOf(ba, "Unit"))
259262 then unit
260263 else throw("Match error")
261264 }
262265
263266
264-let bd = throw("Permission denied")
267+let be = throw("Permission denied")
265268
266-func be (bf) = if ((bf.caller == this))
269+let bf = throw("Test error here")
270+
271+func bg (bh) = if ((bh.caller == this))
267272 then true
268- else bd
273+ else be
269274
270275
271-func bg (bf) = {
272- let aZ = bb()
273- if ($isInstanceOf(aZ, "ByteVector"))
276+func bi (bh) = {
277+ let ba = bc()
278+ if ($isInstanceOf(ba, "ByteVector"))
274279 then {
275- let bh = aZ
276- if ((bf.callerPublicKey == bh))
280+ let bj = ba
281+ if ((bh.callerPublicKey == bj))
277282 then true
278- else bd
283+ else be
279284 }
280- else if ($isInstanceOf(aZ, "Unit"))
281- then be(bf)
285+ else if ($isInstanceOf(ba, "Unit"))
286+ then bg(bh)
282287 else throw("Match error")
283288 }
284289
285290
286-func bi (bj,bk,bl,bm,bn,bo,bp,bq,br,bs,bt) = makeString(["%s%s%s%s%s%s%s%s%s%s%s", bj, bk, bl, bm, bn, bo, bp, bq, br, bs, bt], j)
291+func bk (bl,bm,bn,bo,bp,bq,br,bs,bt,bu,bv) = makeString(["%s%s%s%s%s%s%s%s%s%s%s", bl, bm, bn, bo, bp, bq, br, bs, bt, bu, bv], j)
287292
288293
289-func bu (bj,bk,bl,bm,bn,bo,bp) = makeString(["%s%s%s%s%s%s", bj, bk, bl, bm, bn, bo, bp], j)
294+func bw (bl,bm,bn,bo,bp,bq,br) = makeString(["%s%s%s%s%s%s", bl, bm, bn, bo, bp, bq, br], j)
290295
291296
292-func bv (Y,bw,bx,by,bz,bA,bB,bC,bD,bE,bF) = makeString(["%s%d%s%s%s%d%d%d%d%d%s", Y, bw, bx, by, bz, toString(bA), toString(bB), toString(bC), toString(bD), toString(bE), bF], j)
297+func bx (Z,by,bz,bA,bB,bC,bD,bE,bF,bG,bH) = makeString(["%s%d%s%s%s%d%d%d%d%d%s", Z, by, bz, bA, bB, toString(bC), toString(bD), toString(bE), toString(bF), toString(bG), bH], j)
293298
294299
295-func bG (bH,bI) = makeString(["%d%d", toString(bH), toString(bI)], j)
300+func bI (bJ,bK) = makeString(["%d%d", toString(bJ), toString(bK)], j)
296301
297302
298-func bJ (Y) = {
299- let bK = split(aE(as(Y)), j)
300- let ag = bK[1]
301- let ah = bK[2]
302- split(aE(af(ag, ah)), j)
303+func bL (Z) = {
304+ let bM = split(aF(at(Z)), j)
305+ let ah = bM[1]
306+ let ai = bM[2]
307+ split(aF(ag(ah, ai)), j)
303308 }
304309
305310
306-func bL (bM,bN) = {
307- let bO = valueOrElse(getInteger(this, ad(bM)), 0)
308- let bP = valueOrElse(getInteger(this, W()), 0)
309- let bQ = if ((bO == 0))
311+func bN (bO,bP) = {
312+ let bQ = valueOrElse(getInteger(this, ae(bO)), 0)
313+ let bR = valueOrElse(getInteger(this, X()), 0)
314+ let bS = if ((bQ == 0))
310315 then {
311- let bR = (bP + bN)
312- $Tuple3(bR, [IntegerEntry(W(), bR), IntegerEntry(ad(bM), bR), StringEntry(ab(bR), bM)], true)
316+ let bT = (bR + bP)
317+ $Tuple3(bT, [IntegerEntry(X(), bT), IntegerEntry(ae(bO), bT), StringEntry(ac(bT), bO)], true)
313318 }
314- else $Tuple3(bO, nil, false)
315- bQ
319+ else $Tuple3(bQ, nil, false)
320+ bS
316321 }
317322
318323
319-func bS (bf) = {
320- let bT = split(valueOrElse(getString(Q()), k), j)
321- if (containsElement(bT, toBase58String(bf.callerPublicKey)))
324+func bU (bh) = {
325+ let bV = split(valueOrElse(getString(R()), k), j)
326+ if (containsElement(bV, toBase58String(bh.callerPublicKey)))
322327 then true
323328 else {
324- let bU = bg(bf)
325- if ((bU == bU))
329+ let bW = bi(bh)
330+ if ((bW == bW))
326331 then true
327332 else throw("Strict value is not equal to itself.")
328333 }
329334 }
330335
331336
332-func bV (aF,bW,bX) = valueOrElse(getInteger(this, aF), valueOrElse(getInteger(this, bW), bX))
337+func bX (aG,bY,bZ) = valueOrElse(getInteger(this, aG), valueOrElse(getInteger(this, bY), bZ))
333338
334339
335-@Callable(bf)
336-func constructor (bY,bZ,bl,bm,bn,bo,ca,cb) = {
337- let cc = bg(bf)
338- if ((cc == cc))
339- then [StringEntry(I(), bu(bY, bZ, bl, bm, bn, bo, ca)), IntegerEntry(U(), cb)]
340+@Callable(bh)
341+func getSwapContractREADONLY () = $Tuple2(nil, aF(I()))
342+
343+
344+
345+@Callable(bh)
346+func getLpAssetFromPoolAssetsREADONLY (ca,cb) = if (if ((ca == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
347+ then (cb == "WAVES")
348+ else false)
349+ then $Tuple2(nil, unit)
350+ else {
351+ let cc = value(getInteger(this, ae(ca)))
352+ let cd = value(getInteger(this, ae(cb)))
353+ let ce = getString(this, ap(toString(cc), toString(cd)))
354+ let cf = if ((ce == unit))
355+ then unit
356+ else drop(value(ce), 4)
357+ $Tuple2(nil, cf)
358+ }
359+
360+
361+
362+@Callable(bh)
363+func getPoolAddressFromLpAssetREADONLY (cg) = $Tuple2(nil, valueOrElse(getString(this, ax(cg)), ""))
364+
365+
366+
367+@Callable(bh)
368+func constructor (ch,ci,bn,bo,bp,bq,cj,ck) = {
369+ let cl = bi(bh)
370+ if ((cl == cl))
371+ then [StringEntry(J(), bw(ch, ci, bn, bo, bp, bq, cj)), IntegerEntry(V(), ck)]
340372 else throw("Strict value is not equal to itself.")
341373 }
342374
343375
344376
345-@Callable(bf)
346-func constructorV2 (cd) = {
347- let cc = bg(bf)
348- if ((cc == cc))
377+@Callable(bh)
378+func constructorV2 (cm) = {
379+ let cl = bi(bh)
380+ if ((cl == cl))
349381 then {
350- let ce = addressFromPublicKey(fromBase58String(cd))
351- if ((ce == ce))
352- then [StringEntry(L(), cd)]
382+ let cn = addressFromPublicKey(fromBase58String(cm))
383+ if ((cn == cn))
384+ then [StringEntry(M(), cm)]
353385 else throw("Strict value is not equal to itself.")
354386 }
355387 else throw("Strict value is not equal to itself.")
356388 }
357389
358390
359391
360-@Callable(bf)
361-func constructorV3 (bq,br,bs,bt) = {
362- let cc = bg(bf)
363- if ((cc == cc))
392+@Callable(bh)
393+func constructorV3 (bs,bt,bu,bv) = {
394+ let cl = bi(bh)
395+ if ((cl == cl))
364396 then {
365- let aU = split(aE(I()), j)
366-[StringEntry(I(), bi(aU[1], aU[2], aU[3], aU[4], aU[5], aU[6], aU[7], bq, br, bs, bt))]
397+ let aV = split(aF(J()), j)
398+[StringEntry(J(), bk(aV[1], aV[2], aV[3], aV[4], aV[5], aV[6], aV[7], bs, bt, bu, bv))]
367399 }
368400 else throw("Strict value is not equal to itself.")
369401 }
370402
371403
372404
373-@Callable(bf)
374-func constructorV4 (cf,cg) = {
375- let cc = bg(bf)
376- if ((cc == cc))
377- then [StringEntry(M(), cf), StringEntry(N(), makeString(cg, j))]
405+@Callable(bh)
406+func constructorV4 (co,cp) = {
407+ let cl = bi(bh)
408+ if ((cl == cl))
409+ then [StringEntry(N(), co), StringEntry(O(), makeString(cp, j))]
378410 else throw("Strict value is not equal to itself.")
379411 }
380412
381413
382414
383-@Callable(bf)
384-func constructorV5 (ch) = {
385- let cc = bg(bf)
386- if ((cc == cc))
387- then [StringEntry(R(), ch)]
415+@Callable(bh)
416+func constructorV5 (cq) = {
417+ let cl = bi(bh)
418+ if ((cl == cl))
419+ then [StringEntry(S(), cq)]
388420 else throw("Strict value is not equal to itself.")
389421 }
390422
391423
392424
393-@Callable(bf)
394-func constructorV6 (ci,cj) = {
395- let ck = [bg(bf), if ((addressFromString(ci) != unit))
425+@Callable(bh)
426+func constructorV6 (cr,cs) = {
427+ let ct = [bi(bh), if ((addressFromString(cr) != unit))
396428 then true
397429 else "invalid voting emission contract address"]
398- if ((ck == ck))
399- then [StringEntry(S(), ci), StringEntry(T(), makeString(cj, j))]
430+ if ((ct == ct))
431+ then [StringEntry(T(), cr), StringEntry(U(), makeString(cs, j))]
400432 else throw("Strict value is not equal to itself.")
401433 }
402434
403435
404436
405-@Callable(bf)
406-func setManager (cl) = {
407- let cc = bg(bf)
408- if ((cc == cc))
437+@Callable(bh)
438+func setManager (cu) = {
439+ let cl = bi(bh)
440+ if ((cl == cl))
409441 then {
410- let cm = fromBase58String(cl)
411- if ((cm == cm))
412- then [StringEntry(P(), cl)]
442+ let cv = fromBase58String(cu)
443+ if ((cv == cv))
444+ then [StringEntry(Q(), cu)]
413445 else throw("Strict value is not equal to itself.")
414446 }
415447 else throw("Strict value is not equal to itself.")
416448 }
417449
418450
419451
420-@Callable(bf)
452+@Callable(bh)
421453 func confirmManager () = {
422- let cn = bc()
423- let co = if (isDefined(cn))
454+ let cw = bd()
455+ let cx = if (isDefined(cw))
424456 then true
425457 else throw("No pending manager")
426- if ((co == co))
458+ if ((cx == cx))
427459 then {
428- let cp = if ((bf.callerPublicKey == value(cn)))
460+ let cy = if ((bh.callerPublicKey == value(cw)))
429461 then true
430462 else throw("You are not pending manager")
431- if ((cp == cp))
432- then [StringEntry(O(), toBase58String(value(cn))), DeleteEntry(P())]
463+ if ((cy == cy))
464+ then [StringEntry(P(), toBase58String(value(cw))), DeleteEntry(Q())]
433465 else throw("Strict value is not equal to itself.")
434466 }
435467 else throw("Strict value is not equal to itself.")
436468 }
437469
438470
439471
440-@Callable(bf)
441-func setAdmins (cq) = {
442- let cc = bg(bf)
443- if ((cc == cc))
444- then [StringEntry(Q(), makeString(cq, j))]
472+@Callable(bh)
473+func setAdmins (cz) = {
474+ let cl = bi(bh)
475+ if ((cl == cl))
476+ then [StringEntry(R(), makeString(cz, j))]
445477 else throw("Strict value is not equal to itself.")
446478 }
447479
448480
449481
450-@Callable(bf)
451-func activateNewPool (Y,by,bz,cr,cs,ct,bF,cu) = {
452- let cc = bS(bf)
453- if ((cc == cc))
454- then if (isDefined(getString(as(Y))))
455- then throw((("Pool address " + Y) + " already registered."))
482+@Callable(bh)
483+func activateNewPool (Z,bA,bB,cA,cB,cC,bH,cD) = {
484+ let cl = bU(bh)
485+ if ((cl == cl))
486+ then if (isDefined(getString(at(Z))))
487+ then throw((("Pool address " + Z) + " already registered."))
456488 else {
457- let cv = bL(by, 1)
458- let cw = cv._1
459- let cx = bL(bz, if (cv._3)
489+ let cE = bN(bA, 1)
490+ let cF = cE._1
491+ let cG = bN(bB, if (cE._3)
460492 then 2
461493 else 1)
462- let cy = cx._1
463- let cz = valueOrErrorMessage(scriptHash(addressFromStringValue(Y)), ("No script has been found on pool account " + Y))
464- let cA = getBinaryValue(K())
465- let cB = getString(this, af(toString(cw), toString(cy)))
466- if (isDefined(cB))
467- then throw((((("Pool " + by) + "/") + bz) + " has already been activated."))
494+ let cH = cG._1
495+ let cI = valueOrErrorMessage(scriptHash(addressFromStringValue(Z)), ("No script has been found on pool account " + Z))
496+ let cJ = getBinaryValue(L())
497+ let cK = getString(this, ag(toString(cF), toString(cH)))
498+ if (isDefined(cK))
499+ then throw((((("Pool " + bA) + "/") + bB) + " has already been activated."))
468500 else {
469- let cC = value(getString(this, af(toString(cw), toString(cy))))
470- let cD = if ((by == "WAVES"))
501+ let cL = value(getString(this, ag(toString(cF), toString(cH))))
502+ let cM = if ((bA == "WAVES"))
471503 then i
472- else pow(10, 0, value(assetInfo(fromBase58String(by))).decimals, 0, 0, DOWN)
473- let cE = if ((bz == "WAVES"))
504+ else pow(10, 0, value(assetInfo(fromBase58String(bA))).decimals, 0, 0, DOWN)
505+ let cN = if ((bB == "WAVES"))
474506 then i
475- else pow(10, 0, value(assetInfo(fromBase58String(bz))).decimals, 0, 0, DOWN)
476- let cF = Issue(cr, cs, 1, 8, true)
477- let bx = calculateAssetId(cF)
478- let cG = toBase58String(bx)
479- let cH = invoke(addressFromStringValue(Y), "activate", [by, bz], nil)
480- if ((cH == cH))
481- then if ((cH != "success"))
507+ else pow(10, 0, value(assetInfo(fromBase58String(bB))).decimals, 0, 0, DOWN)
508+ let cO = Issue(cA, cB, 1, 8, true)
509+ let bz = calculateAssetId(cO)
510+ let cP = toBase58String(bz)
511+ let cQ = invoke(addressFromStringValue(Z), "activate", [bA, bB], nil)
512+ if ((cQ == cQ))
513+ then if ((cQ != "success"))
482514 then throw("Pool initialisation error happened.")
483515 else {
484- let ch = addressFromStringValue(aE(R()))
485- let cI = invoke(ch, "createOrUpdate", [cG, cr, false], nil)
486- if ((cI == cI))
516+ let cq = addressFromStringValue(aF(S()))
517+ let cR = invoke(cq, "createOrUpdate", [cP, cA, false], nil)
518+ if ((cR == cR))
487519 then {
488- let cJ = invoke(ch, "addLabel", [cG, g], nil)
489- if ((cJ == cJ))
520+ let cS = invoke(cq, "addLabel", [cP, g], nil)
521+ if ((cS == cS))
490522 then {
491- let cK = invoke(ch, "setLogo", [cG, cu], nil)
492- if ((cK == cK))
523+ let cT = invoke(cq, "setLogo", [cP, cD], nil)
524+ if ((cT == cT))
493525 then {
494- let cL = invoke(ch, "addAssetsLink", [by, bz, cG], nil)
495- if ((cL == cL))
526+ let cU = invoke(cq, "addAssetsLink", [bA, bB, cP], nil)
527+ if ((cU == cU))
496528 then {
497- let cM = invoke(ch, "increaseAssetPoolsNumber", [by], nil)
498- if ((cM == cM))
499- then $Tuple2(((cv._2 ++ cx._2) ++ [cF, Burn(bx, 1), StringEntry(af(toString(cw), toString(cy)), bv(Y, toString(l), cG, by, bz, cD, cE, cw, cy, i, bF)), StringEntry(am(cG), bG(cw, cy)), StringEntry(ao(toString(cw), toString(cy)), ("%s__" + cG)), StringEntry(as(Y), bG(cw, cy)), StringEntry(au(cw, cy), Y), StringEntry(aw(cG), Y), StringEntry(av(Y), cG), IntegerEntry(X(Y), ct), IntegerEntry(ar(Y), h)]), cG)
529+ let cV = invoke(cq, "increaseAssetPoolsNumber", [bA], nil)
530+ if ((cV == cV))
531+ then $Tuple2(((cE._2 ++ cG._2) ++ [cO, Burn(bz, 1), StringEntry(ag(toString(cF), toString(cH)), bx(Z, toString(l), cP, bA, bB, cM, cN, cF, cH, i, bH)), StringEntry(an(cP), bI(cF, cH)), StringEntry(ap(toString(cF), toString(cH)), ("%s__" + cP)), StringEntry(at(Z), bI(cF, cH)), StringEntry(av(cF, cH), Z), StringEntry(ax(cP), Z), StringEntry(aw(Z), cP), IntegerEntry(Y(Z), cC), IntegerEntry(as(Z), h)]), cP)
500532 else throw("Strict value is not equal to itself.")
501533 }
502534 else throw("Strict value is not equal to itself.")
503535 }
504536 else throw("Strict value is not equal to itself.")
505537 }
506538 else throw("Strict value is not equal to itself.")
507539 }
508540 else throw("Strict value is not equal to itself.")
509541 }
510542 else throw("Strict value is not equal to itself.")
511543 }
512544 }
513545 else throw("Strict value is not equal to itself.")
514546 }
515547
516548
517549
518-@Callable(bf)
519-func managePool (Y,cN) = {
520- let cc = bg(bf)
521- if ((cc == cc))
550+@Callable(bh)
551+func managePool (Z,cW) = {
552+ let cl = bi(bh)
553+ if ((cl == cl))
522554 then {
523- let cB = bJ(Y)
524- let bw = cB[t]
525- let cG = cB[u]
526- let by = cB[v]
527- let bz = cB[w]
528- let cD = parseIntValue(cB[x])
529- let cE = parseIntValue(cB[y])
530- let cw = parseIntValue(cB[z])
531- let cy = parseIntValue(cB[A])
532- let cO = parseIntValue(cB[B])
533- let bF = cB[C]
534-[StringEntry(af(toString(cw), toString(cy)), bv(Y, toString(cN), cG, by, bz, cD, cE, cw, cy, cO, bF))]
555+ let cK = bL(Z)
556+ let by = cK[t]
557+ let cP = cK[u]
558+ let bA = cK[v]
559+ let bB = cK[w]
560+ let cM = parseIntValue(cK[x])
561+ let cN = parseIntValue(cK[y])
562+ let cF = parseIntValue(cK[z])
563+ let cH = parseIntValue(cK[A])
564+ let cX = parseIntValue(cK[B])
565+ let bH = cK[C]
566+[StringEntry(ag(toString(cF), toString(cH)), bx(Z, toString(cW), cP, bA, bB, cM, cN, cF, cH, cX, bH))]
535567 }
536568 else throw("Strict value is not equal to itself.")
537569 }
538570
539571
540572
541-@Callable(bf)
542-func emit (cP) = {
543- let cQ = bf.caller
544- let cR = bf.originCaller
545- let cS = valueOrErrorMessage(getString(av(toString(cQ))), "Invalid LP address called me.")
546- let cT = fromBase58String(cS)
547- let cg = split(valueOrElse(getString(N()), k), j)
548- let cf = addressFromStringValue(valueOrErrorMessage(getString(M()), "Legacy factory contract does not exists."))
549- if ((0 >= cP))
573+@Callable(bh)
574+func emit (cY) = {
575+ let cZ = bh.caller
576+ let da = bh.originCaller
577+ let db = valueOrErrorMessage(getString(aw(toString(cZ))), "Invalid LP address called me.")
578+ let dc = fromBase58String(db)
579+ let cp = split(valueOrElse(getString(O()), k), j)
580+ let co = addressFromStringValue(valueOrErrorMessage(getString(N()), "Legacy factory contract does not exists."))
581+ if ((0 >= cY))
550582 then nil
551- else if (containsElement(cg, toString(cQ)))
552- then $Tuple2(nil, cf)
553- else $Tuple2([Reissue(cT, cP, true), ScriptTransfer(bf.caller, cP, cT)], "success")
583+ else if (containsElement(cp, toString(cZ)))
584+ then $Tuple2(nil, co)
585+ else $Tuple2([Reissue(dc, cY, true), ScriptTransfer(bh.caller, cY, dc)], "success")
554586 }
555587
556588
557589
558-@Callable(bf)
559-func burn (cU) = {
560- let cQ = bf.caller
561- let cR = bf.originCaller
562- let cV = value(bf.payments[0])
563- let cW = value(cV.amount)
564- let cX = toBase58String(value(cV.assetId))
565- let cY = valueOrErrorMessage(getString(av(toString(cQ))), "Invalid LP address called me.")
566- if ((cX != cY))
590+@Callable(bh)
591+func burn (dd) = {
592+ let cZ = bh.caller
593+ let da = bh.originCaller
594+ let de = value(bh.payments[0])
595+ let df = value(de.amount)
596+ let dg = toBase58String(value(de.assetId))
597+ let dh = valueOrErrorMessage(getString(aw(toString(cZ))), "Invalid LP address called me.")
598+ if ((dg != dh))
567599 then throw("Invalid asset passed.")
568- else if ((cU != cW))
600+ else if ((dd != df))
569601 then throw("Invalid amount passed.")
570602 else {
571- let cT = fromBase58String(cY)
572- $Tuple2([Burn(cT, cU)], "success")
603+ let dc = fromBase58String(dh)
604+ $Tuple2([Burn(dc, dd)], "success")
573605 }
574606 }
575607
576608
577609
578-@Callable(bf)
579-func modifyWeight (bx,cZ) = {
580- let cc = if ((toBase58String(bf.caller.bytes) == valueOrElse(getString(this, S()), "")))
610+@Callable(bh)
611+func modifyWeight (bz,di) = {
612+ let cl = if ((toBase58String(bh.caller.bytes) == valueOrElse(getString(this, T()), "")))
581613 then true
582- else bg(bf)
583- if ((cc == cc))
614+ else bi(bh)
615+ if ((cl == cl))
584616 then {
585- let at = aE(aw(bx))
586- let da = X(at)
587- let db = X(f)
588- let dc = valueOrElse(getInteger(db), 0)
589- let ct = valueOrElse(getInteger(da), 0)
590- let dd = cZ
591- let aU = split(aE(I()), j)
592- let bY = aW(aU)
593- let de = invoke(bY, "onModifyWeight", [bx, at], nil)
594- if ((de == de))
617+ let au = aF(ax(bz))
618+ let dj = Y(au)
619+ let dk = Y(f)
620+ let dl = valueOrElse(getInteger(dk), 0)
621+ let cC = valueOrElse(getInteger(dj), 0)
622+ let dm = di
623+ let aV = split(aF(J()), j)
624+ let ch = aX(aV)
625+ let dn = invoke(ch, "onModifyWeight", [bz, au], nil)
626+ if ((dn == dn))
595627 then {
596- let df = if ((dc == 0))
628+ let do = if ((dl == 0))
597629 then nil
598- else [IntegerEntry(db, 0)]
599- let dg = Z(at, 0)
600- let dh = getInteger(dg)
601- let di = if ((dh == unit))
630+ else [IntegerEntry(dk, 0)]
631+ let dp = aa(au, 0)
632+ let dq = getInteger(dp)
633+ let dr = if ((dq == unit))
602634 then nil
603- else [DeleteEntry(dg)]
604- (([IntegerEntry(da, dd)] ++ df) ++ di)
635+ else [DeleteEntry(dp)]
636+ (([IntegerEntry(dj, dm)] ++ do) ++ dr)
605637 }
606638 else throw("Strict value is not equal to itself.")
607639 }
608640 else throw("Strict value is not equal to itself.")
609641 }
610642
611643
612644
613-@Callable(bf)
614-func modifyWeights (dj,dk,dl,dm) = {
615- let cc = bg(bf)
616- if ((cc == cc))
645+@Callable(bh)
646+func modifyWeights (ds,dt,du,dv) = {
647+ let cl = bi(bh)
648+ if ((cl == cl))
617649 then {
618- let dn = ((5 * e) / 100)
619- let do = ((5 * e) / 100)
620- let dp = ((5 * e) / 100)
621- let aU = split(aE(I()), j)
622- let dq = aW(aU)
623- let dr = aX(aU)
624- let ds = X(dj)
625- let dt = X(dk)
626- let du = X(dl)
627- let dv = X(dm)
628- let dw = aH(ds)
629- let dx = aH(dt)
630- let dy = (dw - dp)
631- let dz = (dx - dp)
632- if ((0 >= dy))
633- then throw(("invalid btcWeightNew: " + toString(dy)))
634- else if ((0 >= dz))
635- then throw(("invalid ethWeightNew: " + toString(dz)))
650+ let dw = ((5 * e) / 100)
651+ let dx = ((5 * e) / 100)
652+ let dy = ((5 * e) / 100)
653+ let aV = split(aF(J()), j)
654+ let dz = aX(aV)
655+ let dA = aY(aV)
656+ let dB = Y(ds)
657+ let dC = Y(dt)
658+ let dD = Y(du)
659+ let dE = Y(dv)
660+ let dF = aI(dB)
661+ let dG = aI(dC)
662+ let dH = (dF - dy)
663+ let dI = (dG - dy)
664+ if ((0 >= dH))
665+ then throw(("invalid btcWeightNew: " + toString(dH)))
666+ else if ((0 >= dI))
667+ then throw(("invalid ethWeightNew: " + toString(dI)))
636668 else {
637- let dA = aE(av(dj))
638- let dB = aE(av(dk))
639- let dC = aE(av(dl))
640- let dD = aE(av(dm))
641- let dE = invoke(dq, "onModifyWeight", [dA, dj], nil)
642- if ((dE == dE))
669+ let dJ = aF(aw(ds))
670+ let dK = aF(aw(dt))
671+ let dL = aF(aw(du))
672+ let dM = aF(aw(dv))
673+ let dN = invoke(dz, "onModifyWeight", [dJ, ds], nil)
674+ if ((dN == dN))
643675 then {
644- let dF = invoke(dq, "onModifyWeight", [dB, dk], nil)
645- if ((dF == dF))
676+ let dO = invoke(dz, "onModifyWeight", [dK, dt], nil)
677+ if ((dO == dO))
646678 then {
647- let dG = invoke(dq, "onModifyWeight", [dC, dl], nil)
648- if ((dG == dG))
679+ let dP = invoke(dz, "onModifyWeight", [dL, du], nil)
680+ if ((dP == dP))
649681 then {
650- let dH = invoke(dq, "onModifyWeight", [dD, dm], nil)
651- if ((dH == dH))
652- then [IntegerEntry(ds, dy), IntegerEntry(dt, dz), IntegerEntry(du, dn), IntegerEntry(dv, do), IntegerEntry(Z(dj, 0), dw), IntegerEntry(Z(dk, 0), dx), IntegerEntry(Z(dl, 0), dn), IntegerEntry(Z(dm, 0), do)]
682+ let dQ = invoke(dz, "onModifyWeight", [dM, dv], nil)
683+ if ((dQ == dQ))
684+ then [IntegerEntry(dB, dH), IntegerEntry(dC, dI), IntegerEntry(dD, dw), IntegerEntry(dE, dx), IntegerEntry(aa(ds, 0), dF), IntegerEntry(aa(dt, 0), dG), IntegerEntry(aa(du, 0), dw), IntegerEntry(aa(dv, 0), dx)]
653685 else throw("Strict value is not equal to itself.")
654686 }
655687 else throw("Strict value is not equal to itself.")
656688 }
657689 else throw("Strict value is not equal to itself.")
658690 }
659691 else throw("Strict value is not equal to itself.")
660692 }
661693 }
662694 else throw("Strict value is not equal to itself.")
663695 }
664696
665697
666698
667-@Callable(bf)
668-func checkWxEmissionPoolLabel (ay,az) = {
669- let dI = {
670- let aZ = getBoolean(ax(ay, az))
671- if ($isInstanceOf(aZ, "Boolean"))
699+@Callable(bh)
700+func checkWxEmissionPoolLabel (az,aA) = {
701+ let dR = {
702+ let ba = getBoolean(ay(az, aA))
703+ if ($isInstanceOf(ba, "Boolean"))
672704 then {
673- let dJ = aZ
674- dJ
705+ let dS = ba
706+ dS
675707 }
676708 else false
677709 }
678- $Tuple2(nil, dI)
710+ $Tuple2(nil, dR)
679711 }
680712
681713
682714
683-@Callable(bf)
684-func setWxEmissionPoolLabel (ay,az) = {
685- let cc = bS(bf)
686- if ((cc == cc))
687- then $Tuple2([BooleanEntry(ax(ay, az), true)], unit)
715+@Callable(bh)
716+func setWxEmissionPoolLabel (az,aA) = {
717+ let cl = bU(bh)
718+ if ((cl == cl))
719+ then $Tuple2([BooleanEntry(ay(az, aA), true)], unit)
688720 else throw("Strict value is not equal to itself.")
689721 }
690722
691723
692724
693-@Callable(bf)
694-func deleteWxEmissionPoolLabel (ay,az) = {
695- let cc = if (be(bf))
725+@Callable(bh)
726+func deleteWxEmissionPoolLabel (az,aA) = {
727+ let cl = if (bg(bh))
696728 then true
697- else bS(bf)
698- if ((cc == cc))
699- then $Tuple2([DeleteEntry(ax(ay, az))], unit)
729+ else bU(bh)
730+ if ((cl == cl))
731+ then $Tuple2([DeleteEntry(ay(az, aA))], unit)
700732 else throw("Strict value is not equal to itself.")
701733 }
702734
703735
704736
705-@Callable(bf)
706-func onVerificationLoss (dK) = {
707- let cc = if ((toBase58String(bf.caller.bytes) == valueOrElse(getString(this, R()), "")))
737+@Callable(bh)
738+func onVerificationLoss (dT) = {
739+ let cl = if ((toBase58String(bh.caller.bytes) == valueOrElse(getString(this, S()), "")))
708740 then true
709- else bg(bf)
710- if ((cc == cc))
741+ else bi(bh)
742+ if ((cl == cl))
711743 then {
712- let cj = aY()
713- let dL = if ((size(cj) > 0))
744+ let cs = aZ()
745+ let dU = if ((size(cs) > 0))
714746 then true
715747 else throw("invalid price assets")
716- if ((dL == dL))
748+ if ((dU == dU))
717749 then {
718- func dM (dN,dO) = {
719- let dP = invoke(this, "deleteWxEmissionPoolLabel", [dK, dO], nil)
720- if ((dP == dP))
750+ func dV (dW,dX) = {
751+ let dY = invoke(this, "deleteWxEmissionPoolLabel", [dT, dX], nil)
752+ if ((dY == dY))
721753 then unit
722754 else throw("Strict value is not equal to itself.")
723755 }
724756
725- let dQ = {
726- let dR = cj
727- let dS = size(dR)
728- let dT = unit
729- func dU (dV,dW) = if ((dW >= dS))
730- then dV
731- else dM(dV, dR[dW])
757+ let dZ = {
758+ let ea = cs
759+ let eb = size(ea)
760+ let ec = unit
761+ func ed (ee,ef) = if ((ef >= eb))
762+ then ee
763+ else dV(ee, ea[ef])
732764
733- func dX (dV,dW) = if ((dW >= dS))
734- then dV
765+ func eg (ee,ef) = if ((ef >= eb))
766+ then ee
735767 else throw("List size exceeds 1")
736768
737- dX(dU(dT, 0), 1)
769+ eg(ed(ec, 0), 1)
738770 }
739- if ((dQ == dQ))
771+ if ((dZ == dZ))
740772 then $Tuple2(nil, unit)
741773 else throw("Strict value is not equal to itself.")
742774 }
743775 else throw("Strict value is not equal to itself.")
744776 }
745777 else throw("Strict value is not equal to itself.")
746778 }
747779
748780
749781
750-@Callable(bf)
751-func isPoolOneTokenOperationsDisabledREADONLY (Y) = {
752- let cB = bJ(Y)
753- let aj = $Tuple2(parseIntValue(cB[z]), parseIntValue(cB[A]))
754- let dY = valueOrElse(getBoolean(ai(aj)), false)
755- let dZ = valueOrElse(getBoolean(al()), false)
756- $Tuple2(nil, if (dZ)
782+@Callable(bh)
783+func isPoolOneTokenOperationsDisabledREADONLY (Z) = {
784+ let cK = bL(Z)
785+ let ak = $Tuple2(parseIntValue(cK[z]), parseIntValue(cK[A]))
786+ let eh = valueOrElse(getBoolean(aj(ak)), false)
787+ let ei = valueOrElse(getBoolean(am()), false)
788+ $Tuple2(nil, if (ei)
757789 then true
758- else dY)
790+ else eh)
759791 }
760792
761793
762794
763-@Callable(bf)
764-func getInFeeREADONLY (Y) = {
765- let ea = bV(aA(Y), aB(), 0)
766- $Tuple2(nil, ea)
795+@Callable(bh)
796+func getInFeeREADONLY (Z) = {
797+ let ej = bX(aB(Z), aC(), 0)
798+ $Tuple2(nil, ej)
767799 }
768800
769801
770802
771-@Callable(bf)
772-func getOutFeeREADONLY (Y) = {
773- let ea = bV(aC(Y), aD(), fraction(10, b, 10000))
774- $Tuple2(nil, ea)
803+@Callable(bh)
804+func getOutFeeREADONLY (Z) = {
805+ let ej = bX(aD(Z), aE(), fraction(10, b, 10000))
806+ $Tuple2(nil, ej)
775807 }
776808
777809
778810
779-@Callable(bf)
780-func getPoolStatusREADONLY (Y) = {
781- let bK = split(aE(as(Y)), j)
782- let ag = bK[1]
783- let ah = bK[2]
784- let eb = split(aE(af(ag, ah)), j)
785- $Tuple2(nil, parseIntValue(eb[t]))
811+@Callable(bh)
812+func getPoolStatusREADONLY (Z) = {
813+ let bM = split(aF(at(Z)), j)
814+ let ah = bM[1]
815+ let ai = bM[2]
816+ let ek = split(aF(ag(ah, ai)), j)
817+ $Tuple2(nil, parseIntValue(ek[t]))
786818 }
787819
788820
789-@Verifier(ec)
790-func ed () = {
791- let ee = {
792- let aZ = bb()
793- if ($isInstanceOf(aZ, "ByteVector"))
821+
822+@Callable(bh)
823+func getPoolAssetsByLpAssetId (cP) = {
824+ let bM = split(aF(an(cP)), j)
825+ let ah = bM[1]
826+ let ai = bM[2]
827+ let ek = split(aF(ag(ah, ai)), j)
828+ $Tuple2(nil, ek)
829+ }
830+
831+
832+@Verifier(el)
833+func em () = {
834+ let en = {
835+ let ba = bc()
836+ if ($isInstanceOf(ba, "ByteVector"))
794837 then {
795- let bh = aZ
796- bh
838+ let bj = ba
839+ bj
797840 }
798- else if ($isInstanceOf(aZ, "Unit"))
799- then ec.senderPublicKey
841+ else if ($isInstanceOf(ba, "Unit"))
842+ then el.senderPublicKey
800843 else throw("Match error")
801844 }
802- sigVerify(ec.bodyBytes, ec.proofs[0], ee)
845+ sigVerify(el.bodyBytes, el.proofs[0], en)
803846 }
804847

github/deemru/w8io/03bedc9 
288.27 ms