tx · BmDbqDcii4DuYXKGDirE8GrhnHc2JThSMNAaLeGXyP8L

3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT:  -0.01400000 Waves

2021.12.29 23:40 [1855997] smart account 3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT > SELF 0.00000000 Waves

{ "type": 13, "id": "BmDbqDcii4DuYXKGDirE8GrhnHc2JThSMNAaLeGXyP8L", "fee": 1400000, "feeAssetId": null, "timestamp": 1640810466217, "version": 1, "sender": "3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT", "senderPublicKey": "D1BL65meykxFZTCuq7jq9HSGLLnWvQamQPUNrguW5w39", "proofs": [ "5eanEWv8QAMa13mdMd9sMjozMmogvU1ieZY2bJSCfANja52CW3rD6oRdfm2e4DUasYJn4bAXUUWmNPtodebL1dtx" ], "script": "base64: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DXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAALaWR4QW10QXNEY20EAAAABXByRGNtCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAAA1pZHhQcmljZUFzRGNtBAAAAANzdHMJAAGRAAAAAgUAAAADY2ZnBQAAAAlpZHhQb29sU3QEAAAAB2xwRW1pc3MICQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAPsAAAAAQkAAlkAAAABBQAAAARscElkAgAAAAtXcm9uZyBMUCBpZAAAAAhxdWFudGl0eQMJAQAAAAIhPQAAAAIFAAAABGxwSWQFAAAACnBtdEFzc2V0SWQJAAACAAAAAQIAAAAPV3JvbmcgcG10IGFzc2V0BAAAAAlhbUJhbGFuY2UJAQAAAA1nZXRBY2NCYWxhbmNlAAAAAQUAAAAEYW1JZAQAAAAMYW1CYWxhbmNlWDE4CQEAAAAFdG9YMTgAAAACBQAAAAlhbUJhbGFuY2UFAAAABWFtRGNtBAAAAAlwckJhbGFuY2UJAQAAAA1nZXRBY2NCYWxhbmNlAAAAAQUAAAAEcHJJZAQAAAAMcHJCYWxhbmNlWDE4CQEAAAAFdG9YMTgAAAACBQAAAAlwckJhbGFuY2UFAAAABXByRGNtBAAAAAtjdXJQcmljZVgxOAkBAAAAD2NhbGNQcmljZUJpZ0ludAAAAAIFAAAADHByQmFsYW5jZVgxOAUAAAAMYW1CYWxhbmNlWDE4BAAAAAhjdXJQcmljZQkBAAAAB2Zyb21YMTgAAAACBQAAAAtjdXJQcmljZVgxOAUAAAAGc2NhbGU4BAAAAAtwbXRMcEFtdFgxOAkBAAAABXRvWDE4AAAAAgUAAAAIcG10THBBbXQFAAAABnNjYWxlOAQAAAAKbHBFbWlzc1gxOAkBAAAABXRvWDE4AAAAAgUAAAAHbHBFbWlzcwUAAAAGc2NhbGU4BAAAAAtvdXRBbUFtdFgxOAkAATwAAAADBQAAAAxhbUJhbGFuY2VYMTgFAAAAC3BtdExwQW10WDE4BQAAAApscEVtaXNzWDE4BAAAAAtvdXRQckFtdFgxOAkAATwAAAADBQAAAAxwckJhbGFuY2VYMTgFAAAAC3BtdExwQW10WDE4BQAAAApscEVtaXNz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AAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAdhbUlkU3RyBQAAAAdpbkFtQW10BAAAAAlwckJhbGFuY2UDBQAAAAZpc0V2YWwJAQAAAA1nZXRBY2NCYWxhbmNlAAAAAQUAAAAHcHJJZFN0cgMDBQAAAAppc09uZUFzc2V0CQAAAAAAAAIFAAAABXBtdElkBQAAAAdwcklkU3RyBwkAAGUAAAACCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAAB3BySWRTdHIFAAAABnBtdEFtdAMFAAAACmlzT25lQXNzZXQJAQAAAA1nZXRBY2NCYWxhbmNlAAAAAQUAAAAHcHJJZFN0cgkAAGUAAAACCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAAB3BySWRTdHIFAAAAB2luUHJBbXQEAAAAD2luQW1Bc3NldEFtdFgxOAkBAAAABXRvWDE4AAAAAgUAAAAHaW5BbUFtdAUAAAAGYW10RGNtBAAAAA9pblByQXNzZXRBbXRYMTgJAQAAAAV0b1gxOAAAAAIFAAAAB2luUHJBbXQFAAAACHByaWNlRGNtBAAAAAx1c2VyUHJpY2VYMTgJAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACBQAAAA9pblByQXNzZXRBbXRYMTgFAAAAD2luQW1Bc3NldEFtdFgxOAQAAAAMYW1CYWxhbmNlWDE4CQEAAAAFdG9YMTgAAAACBQAAAAlhbUJhbGFuY2UFAAAABmFtdERjbQQAAAAMcHJCYWxhbmNlWDE4CQEAAAAFdG9YMTgAAAACBQAAAAlwckJhbGFuY2UFAAAACHByaWNlRGNtBAAAAANyZXMDCQAAAAAAAAIFAAAABGxwRW0AAAAAAAAAAAAEAAAAC2N1clByaWNlWDE4BQAAAAp6ZXJvQmlnSW50BAAAAAtzbGlwcGFnZVgxOAUAAAAKemVyb0JpZ0ludAQAAAAIbHBBbXRYMTgJAAB2AAAABgkAATkAAAACBQAAAA9pbkFtQXNzZXRBbXRYMTgFAAAAD2luUHJBc3NldEFtdFgxOAAAAAAAAAAAAAkAATYAAAABAAAAAAAAAAAFAAAAAAAAAAABAAAAAAAAAAAABQAAAARET1dOCQAFFwAAAAUJAQAAAAdmcm9tWDE4AAAAAgUAAAAIbHBBbXRYMTgFAAAABnNjYWxlOAkBAAAAB2Zyb21YMTgAAAACBQAAAA9pbkFtQXNzZXRBbXRYMTgFAAAABmFtdERjbQkBAAAAB2Zyb21YMTgAAAACBQAAAA9pblByQXNzZXRBbXRYMTgFAAAACHByaWNlRGNtCQEAAAAPY2FsY1ByaWNlQmlnSW50AAAAAgkAATcAAAACBQAAAAxwckJhbGFuY2VYMTgFAAAAD2luUHJBc3NldEFtdFgxOAkAATcAAAACBQAAAAxhbUJhbGFuY2VYMTgFAAAAD2luQW1Bc3NldEFtdFgxOAUAAAALc2xpcHBhZ2VYMTgEAAAAC2N1clByaWNlWDE4CQEAAAAPY2FsY1ByaWNlQmlnSW50AAAAAgUAAAAMcHJCYWxhbmNlWDE4BQAAAAxhbUJhbGFuY2VYMTgEAAAAD3NsaXBwYWdlUmVhbFgxOAkAATwAAAADCQEAAAADYWJzAAAAAQkAATgAAAACBQAAAAtjdXJQcmljZVgxOAUAAAAMdXNlclByaWNlWDE4BQAAAAdzY2FsZTE4BQAAAAtjdXJQcmljZVgxOAQAAAALc2xpcHBhZ2VYMTgJAQAAAAV0b1gxOAAAAAIFAAAACHNsaXBwYWdlBQAAAAZzY2FsZTgDAwkBAAAAAiE9AAAAAgUAAAALY3VyUHJpY2VYMTgFAAAACnplcm9CaWdJbnQJAAE/AAAAAgUAAAAPc2xpcHBhZ2VSZWFsWDE4BQAAAAtzbGlwcGFnZVgxOAcJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAPUHJpY2Ugc2xpcHBhZ2UgCQABpgAAAAEFAAAAD3NsaXBwYWdlUmVhbFgxOAIAAAADID4gCQABpgAAAAEFAAAAC3NsaXBwYWdlWDE4BAAAAA1scEVtaXNzaW9uWDE4CQEAAAAFdG9YMTgAAAACBQAAAARscEVtBQAAAAZzY2FsZTgEAAAACnByVmlhQW1YMTgJAAE8AAAAAwUAAAAPaW5BbUFzc2V0QW10WDE4BQAAAAtjdXJQcmljZVgxOAUAAAAHc2NhbGUxOAQAAAAKYW1WaWFQclgxOAkAATwAAAADBQAAAA9pblByQXNzZXRBbXRYMTgFAAAAB3NjYWxlMTgFAAAAC2N1clByaWNlWDE4BAAAAAxleHBlY3RlZEFtdHMDCQABPwAAAAIFAAAACnByVmlhQW1YMTgFAAAAD2luUHJBc3NldEFtdFgxOAkABRQAAAACBQAAAAphbVZpYVByWDE4BQAAAA9pblByQXNzZXRBbXRYMTgJAAUUAAAAAgUAAAAPaW5BbUFzc2V0QW10WDE4BQAAAApwclZpYUFtWDE4BAAAABFleHBBbXRBc3NldEFtdFgxOAgFAAAADGV4cGVjdGVkQW10cwAAAAJfMQQAAAATZXhwUHJpY2VBc3NldEFtdFgxOAgFAAAADGV4cGVjdGVkQW10cwAAAAJfMgQAAAAIbHBBbXRYMTgJAAE8AAAAAwUAAAANbHBFbWlzc2lvblgxOAUAAAATZXhwUHJpY2VBc3NldEFtdFgxOAUAAAAMcHJCYWxhbmNlWDE4CQAFFwAAAAUJAQAAAAdmcm9tWDE4AAAAAgUAAAAIbHBBbXRYMTgFAAAABnNjYWxlOAkBAAAAB2Zyb21YMTgAAAACBQAAABFleHBBbXRBc3NldEFtdFgxOAUAAAAGYW10RGNtCQEAAAAHZnJvbVgxOAAAAAIFAAAAE2V4cFByaWNlQXNzZXRBbXRYMTgFAAAACHByaWNlRGNtBQAAAAtjdXJQcmljZVgxOAUAAAALc2xpcHBhZ2VYMTgEAAAACWNhbGNMcEFtdAgFAAAAA3JlcwAAAAJfMQQAAAAOY2FsY0FtQXNzZXRQbXQIBQAAAANyZXMAAAACXzIEAAAADmNhbGNQckFzc2V0UG10CAUAAAADcmVzAAAAAl8zBAAAAAhjdXJQcmljZQkBAAAAB2Zyb21YMTgAAAACCAUAAAADcmVzAAAAAl80BQAAAAZzY2FsZTgEAAAADHNsaXBwYWdlQ2FsYwkBAAAAB2Zyb21YMTgAAAACCAUAAAADcmVzAAAAAl81BQAAAAZzY2FsZTgDCQAAZwAAAAIAAAAAAAAAAAAFAAAACWNhbGNMcEFtdAkAAAIAAAABAgAAAAdMUCA8PSAwBAAAAAllbWl0THBBbXQDCQEAAAABIQAAAAEFAAAABmVtaXRMcAAAAAAAAAAAAAUAAAAJY2FsY0xwQW10BAAAAAZhbURpZmYJAABlAAAAAgUAAAAHaW5BbUFtdAUAAAAOY2FsY0FtQXNzZXRQbXQEAAAABnByRGlmZgkAAGUAAAACBQAAAAdpblByQW10BQAAAA5jYWxjUHJBc3NldFBtdAQAAAANJHQwMTU4MjIxNjE2NwMDBQAAAAppc09uZUFzc2V0CQAAAAAAAAIFAAAABXBtdElkBQAAAAdhbUlkU3RyBwkABRQAAAACBQAAAAZwbXRBbXQAAAAAAAAAAAADAwUAAAAKaXNPbmVBc3NldAkAAAAAAAACBQAAAAVwbXRJZAUAAAAHcHJJZFN0cgcJAAUUAAAAAgAAAAAAAAAAAAUAAAAGcG10QW10CQAFFAAAAAIFAAAADmNhbGNBbUFzc2V0UG10BQAAAA5jYWxjUHJBc3NldFBtdAQAAAAKd3JpdGVBbUFtdAgFAAAADSR0MDE1ODIyMTYxNjcAAAACXzEEAAAACndyaXRlUHJBbXQIBQAAAA0kdDAxNTgyMjE2MTY3AAAAAl8yBAAAAAtjb21tb25TdGF0ZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAADGtleVByaWNlTGFzdAAAAAAFAAAACGN1clByaWNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAPa2V5UHJpY2VIaXN0b3J5AAAAAgUAAAAGaGVpZ2h0CAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAUAAAAIY3VyUHJpY2UJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEmtleVB1dEFjdGlvbkJ5VXNlcgAAAAIFAAAAC3VzZXJBZGRyZXNzBQAAAAZ0eElkNTgJAQAAABFkYXRhUHV0QWN0aW9uSW5mbwAAAAoFAAAACndyaXRlQW1BbXQFAAAACndyaXRlUHJBbXQFAAAACWVtaXRMcEFtdAUAAAAIY3VyUHJpY2UFAAAACHNsaXBwYWdlBQAAAAxzbGlwcGFnZUNhbGMFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAFAAAABmFtRGlmZgUAAAAGcHJEaWZmBQAAAANuaWwJAAUfAAAADQUAAAAJY2FsY0xwQW10BQAAAAllbWl0THBBbXQFAAAACGN1clByaWNlBQAAAAlhbUJhbGFuY2UFAAAACXByQmFsYW5jZQUAAAAEbHBFbQUAAAAEbHBJZAUAAAADc3RzBQAAAAtjb21tb25TdGF0ZQUAAAAGYW1EaWZmBQAAAAZwckRpZmYFAAAABmluQW1JZAUAAAAGaW5QcklkAQAAABt2YWxpZGF0ZU1hdGNoZXJPcmRlckFsbG93ZWQAAAABAAAABW9yZGVyBAAAAANjZmcJAQAAAA1nZXRQb29sQ29uZmlnAAAAAAQAAAAHYW10QXNJZAkAAZEAAAACBQAAAANjZmcFAAAACWlkeEFtQXNJZAQAAAAGcHJBc0lkCQABkQAAAAIFAAAAA2NmZwUAAAAJaWR4UHJBc0lkBAAAAANzdHMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAACWlkeFBvb2xTdAQAAAAIYW10QXNEY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAAC2lkeEFtdEFzRGNtBAAAAAdwckFzRGNtCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAAA1pZHhQcmljZUFzRGNtBAAAAA9hY2NBbXRBc0JhbGFuY2UJAQAAAA1nZXRBY2NCYWxhbmNlAAAAAQUAAAAHYW10QXNJZAQAAAAOYWNjUHJBc0JhbGFuY2UJAQAAAA1nZXRBY2NCYWxhbmNlAAAAAQUAAAAGcHJBc0lkBAAAAAtjdXJQcmljZVgxOAMJAAAAAAAAAggFAAAABW9yZGVyAAAACW9yZGVyVHlwZQUAAAADQnV5CQEAAAAQcHJpdmF0ZUNhbGNQcmljZQAAAAQFAAAACGFtdEFzRGNtBQAAAAdwckFzRGNtCQAAZAAAAAIFAAAAD2FjY0FtdEFzQmFsYW5jZQgFAAAABW9yZGVyAAAABmFtb3VudAUAAAAOYWNjUHJBc0JhbGFuY2UJAQAAABBwcml2YXRlQ2FsY1ByaWNlAAAABAUAAAAIYW10QXNEY20FAAAAB3ByQXNEY20JAABlAAAAAgUAAAAPYWNjQW10QXNCYWxhbmNlCAUAAAAFb3JkZXIAAAAGYW1vdW50BQAAAA5hY2NQckFzQmFsYW5jZQQAAAAIY3VyUHJpY2UJAQAAAAdmcm9tWDE4AAAAAgUAAAALY3VyUHJpY2VYMTgFAAAABnNjYWxlOAMDAwkBAAAAEGlzR2xvYmFsU2h1dGRvd24AAAAABgkAAAAAAAACBQAAAANzdHMFAAAADlBvb2xNYXRjaGVyRGlzBgkAAAAAAAAC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", "chainId": 84, "height": 1855997, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Cr2hSsru69Kqjj8vPAssGrwFKhnjLBhTuk7BFagJPDfE Next: 64s5FeBxUQTDRk72ghvDti8uTwaY3dXHAdjgHfTUVSg6 Diff:
OldNewDifferences
179179
180180 func bc (bd,be,bf) = {
181181 let ba = fraction(be, b, bd)
182- let bb = (bf >= ba)
183- if (if (bb)
182+ let bg = (bf > ba)
183+ if (if (bg)
184184 then true
185185 else (be > bd))
186186 then throw(((((((toString(be) + " : ") + toString(bd)) + " ") + toString(ba)) + " ") + toString(bf)))
187- else bb
187+ else bg
188188 }
189189
190190
191-func bg (bh,bi,bj,bk) = {
192- let bl = A(bj, bh)
191+func bh (bi,bj,bk,bl) = {
193192 let bm = A(bk, bi)
194- aT(bm, bl)
193+ let bn = A(bl, bj)
194+ aT(bn, bm)
195195 }
196196
197197
198-func bn (bj,bk,bo) = {
199- let bp = ax()
200- let bq = parseIntValue(bp[t])
201- let br = parseIntValue(bp[u])
202- let bs = bg(bq, br, bj, bk)
203- let aV = A(bj, bq)
204- let aU = A(bk, br)
205- let bt = A(bo, a)
206- let bu = aT(aV, bt)
207- let bv = aT(aU, bt)
208-[bs, bu, bv]
198+func bo (bk,bl,bp) = {
199+ let bq = ax()
200+ let br = parseIntValue(bq[t])
201+ let bs = parseIntValue(bq[u])
202+ let bt = bh(br, bs, bk, bl)
203+ let aV = A(bk, br)
204+ let aU = A(bl, bs)
205+ let bu = A(bp, a)
206+ let bv = aT(aV, bu)
207+ let bw = aT(aU, bu)
208+[bt, bv, bw]
209209 }
210210
211211
212-func bw (bj,bk,bo) = {
213- let ah = bn(bj, bk, bo)
212+func bx (bk,bl,bp) = {
213+ let ah = bo(bk, bl, bp)
214214 [D(ah[0], a), D(ah[1], a), D(ah[2], a)]
215215 }
216216
217217
218-func bx (by,bz,bA,bB) = {
219- let bp = ax()
220- let bC = bp[q]
221- let bD = bp[r]
222- let bE = bp[s]
223- let bF = parseIntValue(bp[t])
224- let bG = parseIntValue(bp[u])
225- let bH = bp[p]
226- let bI = valueOrErrorMessage(assetInfo(fromBase58String(bC)), "Wrong LP id").quantity
227- if ((bC != bz))
218+func by (bz,bA,bB,bC) = {
219+ let bq = ax()
220+ let bD = bq[q]
221+ let bE = bq[r]
222+ let bF = bq[s]
223+ let bG = parseIntValue(bq[t])
224+ let bH = parseIntValue(bq[u])
225+ let bI = bq[p]
226+ let bJ = valueOrErrorMessage(assetInfo(fromBase58String(bD)), "Wrong LP id").quantity
227+ if ((bD != bA))
228228 then throw("Wrong pmt asset")
229229 else {
230- let bJ = aR(bD)
231- let bK = A(bJ, bF)
232- let bL = aR(bE)
233- let bM = A(bL, bG)
234- let bN = aT(bM, bK)
235- let bO = D(bN, a)
236- let bP = A(bA, a)
237- let bQ = A(bI, a)
238- let bR = fraction(bK, bP, bQ)
239- let bS = fraction(bM, bP, bQ)
240- let bT = D(bR, bF)
230+ let bK = aR(bE)
231+ let bL = A(bK, bG)
232+ let bM = aR(bF)
233+ let bN = A(bM, bH)
234+ let bO = aT(bN, bL)
235+ let bP = D(bO, a)
236+ let bQ = A(bB, a)
237+ let bR = A(bJ, a)
238+ let bS = fraction(bL, bQ, bR)
239+ let bT = fraction(bN, bQ, bR)
241240 let bU = D(bS, bG)
242- let bV = if ((by == ""))
241+ let bV = D(bT, bH)
242+ let bW = if ((bz == ""))
243243 then nil
244- else [ScriptTransfer(bB, bT, if ((bD == "WAVES"))
244+ else [ScriptTransfer(bC, bU, if ((bE == "WAVES"))
245245 then unit
246- else fromBase58String(bD)), ScriptTransfer(bB, bU, if ((bE == "WAVES"))
246+ else fromBase58String(bE)), ScriptTransfer(bC, bV, if ((bF == "WAVES"))
247247 then unit
248- else fromBase58String(bE)), StringEntry(U(toString(bB), by), aN(bT, bU, bA, bO, height, lastBlock.timestamp)), IntegerEntry(N(), bO), IntegerEntry(O(height, lastBlock.timestamp), bO)]
249- $Tuple10(bT, bU, bD, bE, bJ, bL, bI, bN, bH, bV)
248+ else fromBase58String(bF)), StringEntry(U(toString(bC), bz), aN(bU, bV, bB, bP, height, lastBlock.timestamp)), IntegerEntry(N(), bP), IntegerEntry(O(height, lastBlock.timestamp), bP)]
249+ $Tuple10(bU, bV, bE, bF, bK, bM, bJ, bO, bI, bW)
250250 }
251251 }
252252
253253
254-func bW (by,aZ,bX,bY,bZ,ca,bB,cb,cc,cd,ce,cf) = {
255- let bp = ax()
256- let bC = fromBase58String(bp[q])
257- let cg = bp[r]
258- let ch = bp[s]
259- let ci = bp[v]
260- let cj = bp[w]
261- let ck = parseIntValue(bp[t])
262- let cl = parseIntValue(bp[u])
263- let bH = bp[p]
264- let cm = valueOrErrorMessage(assetInfo(bC), "Wr lp as").quantity
265- let bJ = if (cb)
266- then aR(cg)
267- else if (if (cd)
268- then (cf == cg)
254+func bX (bz,aZ,bY,bZ,ca,cb,bC,cc,cd,ce,cf,cg) = {
255+ let bq = ax()
256+ let bD = fromBase58String(bq[q])
257+ let ch = bq[r]
258+ let ci = bq[s]
259+ let cj = bq[v]
260+ let ck = bq[w]
261+ let cl = parseIntValue(bq[t])
262+ let cm = parseIntValue(bq[u])
263+ let bI = bq[p]
264+ let cn = valueOrErrorMessage(assetInfo(bD), "Wr lp as").quantity
265+ let bK = if (cc)
266+ then aR(ch)
267+ else if (if (ce)
268+ then (cg == ch)
269269 else false)
270- then (aR(cg) - ce)
271- else if (cd)
272- then aR(cg)
273- else (aR(cg) - bX)
274- let bL = if (cb)
275- then aR(ch)
276- else if (if (cd)
277- then (cf == ch)
270+ then (aR(ch) - cf)
271+ else if (ce)
272+ then aR(ch)
273+ else (aR(ch) - bY)
274+ let bM = if (cc)
275+ then aR(ci)
276+ else if (if (ce)
277+ then (cg == ci)
278278 else false)
279- then (aR(ch) - ce)
280- else if (cd)
281- then aR(ch)
282- else (aR(ch) - bZ)
283- let cn = A(bX, ck)
284- let co = A(bZ, cl)
285- let cp = aT(co, cn)
286- let bK = A(bJ, ck)
287- let bM = A(bL, cl)
288- let cq = if ((cm == 0))
279+ then (aR(ci) - cf)
280+ else if (ce)
281+ then aR(ci)
282+ else (aR(ci) - ca)
283+ let co = A(bY, cl)
284+ let cp = A(ca, cm)
285+ let cq = aT(cp, co)
286+ let bL = A(bK, cl)
287+ let bN = A(bM, cm)
288+ let cr = if ((cn == 0))
289289 then {
290- let bN = d
291- let cr = d
292- let bt = pow((cn * co), 0, toBigInt(5), 1, 0, DOWN)
293- $Tuple5(D(bt, a), D(cn, ck), D(co, cl), aT((bM + co), (bK + cn)), cr)
290+ let bO = d
291+ let cs = d
292+ let bu = pow((co * cp), 0, toBigInt(5), 1, 0, DOWN)
293+ $Tuple5(D(bu, a), D(co, cl), D(cp, cm), aT((bN + cp), (bL + co)), cs)
294294 }
295295 else {
296- let bN = aT(bM, bK)
297- let cs = fraction(K((bN - cp)), c, bN)
298- let cr = A(aZ, a)
299- if (if ((bN != d))
300- then (cs > cr)
296+ let bO = aT(bN, bL)
297+ let ct = fraction(K((bO - cq)), c, bO)
298+ let cs = A(aZ, a)
299+ if (if ((bO != d))
300+ then (ct > cs)
301301 else false)
302- then throw(((("Price slippage " + toString(cs)) + " > ") + toString(cr)))
302+ then throw(((("Price slippage " + toString(ct)) + " > ") + toString(cs)))
303303 else {
304- let ct = A(cm, a)
305- let cu = fraction(cn, bN, c)
306- let cv = fraction(co, c, bN)
307- let cw = if ((cu > co))
308- then $Tuple2(cv, co)
309- else $Tuple2(cn, cu)
310- let cx = cw._1
311- let cy = cw._2
312- let bt = fraction(ct, cy, bM)
313- $Tuple5(D(bt, a), D(cx, ck), D(cy, cl), bN, cr)
304+ let cu = A(cn, a)
305+ let cv = fraction(co, bO, c)
306+ let cw = fraction(cp, c, bO)
307+ let cx = if ((cv > cp))
308+ then $Tuple2(cw, cp)
309+ else $Tuple2(co, cv)
310+ let cy = cx._1
311+ let cz = cx._2
312+ let bu = fraction(cu, cz, bN)
313+ $Tuple5(D(bu, a), D(cy, cl), D(cz, cm), bO, cs)
314314 }
315315 }
316- let cz = cq._1
317- let cA = cq._2
318- let cB = cq._3
319- let bO = D(cq._4, a)
320- let cC = D(cq._5, a)
321- if ((0 >= cz))
316+ let cA = cr._1
317+ let cB = cr._2
318+ let cC = cr._3
319+ let bP = D(cr._4, a)
320+ let cD = D(cr._5, a)
321+ if ((0 >= cA))
322322 then throw("LP <= 0")
323323 else {
324- let cD = if (!(cc))
324+ let cE = if (!(cd))
325325 then 0
326- else cz
327- let cE = (bX - cA)
328- let cF = (bZ - cB)
329- let cG = if (if (cd)
330- then (cf == cg)
326+ else cA
327+ let cF = (bY - cB)
328+ let cG = (ca - cC)
329+ let cH = if (if (ce)
330+ then (cg == ch)
331331 else false)
332- then $Tuple2(ce, 0)
333- else if (if (cd)
334- then (cf == ch)
332+ then $Tuple2(cf, 0)
333+ else if (if (ce)
334+ then (cg == ci)
335335 else false)
336- then $Tuple2(0, ce)
337- else $Tuple2(cA, cB)
338- let cH = cG._1
339- let cI = cG._2
340- let cJ = [IntegerEntry(N(), bO), IntegerEntry(O(height, lastBlock.timestamp), bO), StringEntry(R(bB, by), aC(cH, cI, cD, bO, aZ, cC, height, lastBlock.timestamp, cE, cF))]
341- $Tuple13(cz, cD, bO, bJ, bL, cm, bC, bH, cJ, cE, cF, bY, ca)
336+ then $Tuple2(0, cf)
337+ else $Tuple2(cB, cC)
338+ let cI = cH._1
339+ let cJ = cH._2
340+ let cK = [IntegerEntry(N(), bP), IntegerEntry(O(height, lastBlock.timestamp), bP), StringEntry(R(bC, bz), aC(cI, cJ, cE, bP, aZ, cD, height, lastBlock.timestamp, cF, cG))]
341+ $Tuple13(cA, cE, bP, bK, bM, cn, bD, bI, cK, cF, cG, bZ, cb)
342342 }
343343 }
344344
345345
346-func cK (cL) = {
347- let bp = ax()
348- let cM = bp[r]
349- let cN = bp[s]
350- let bH = parseIntValue(bp[p])
351- let bq = parseIntValue(bp[t])
352- let br = parseIntValue(bp[u])
353- let cO = aR(cM)
346+func cL (cM) = {
347+ let bq = ax()
348+ let cN = bq[r]
349+ let cO = bq[s]
350+ let bI = parseIntValue(bq[p])
351+ let br = parseIntValue(bq[t])
352+ let bs = parseIntValue(bq[u])
354353 let cP = aR(cN)
355- let bN = if ((cL.orderType == Buy))
356- then bg(bq, br, (cO + cL.amount), cP)
357- else bg(bq, br, (cO - cL.amount), cP)
358- let bO = D(bN, a)
354+ let cQ = aR(cO)
355+ let bO = if ((cM.orderType == Buy))
356+ then bh(br, bs, (cP + cM.amount), cQ)
357+ else bh(br, bs, (cP - cM.amount), cQ)
358+ let bP = D(bO, a)
359359 if (if (if (av())
360360 then true
361- else (bH == m))
361+ else (bI == m))
362362 then true
363- else (bH == n))
363+ else (bI == n))
364364 then throw("Admin blocked")
365365 else {
366- let cQ = cL.assetPair.amountAsset
367- let cR = if ((cQ == unit))
366+ let cR = cM.assetPair.amountAsset
367+ let cS = if ((cR == unit))
368368 then "WAVES"
369- else toBase58String(value(cQ))
370- let cS = cL.assetPair.priceAsset
371- let cT = if ((cS == unit))
369+ else toBase58String(value(cR))
370+ let cT = cM.assetPair.priceAsset
371+ let cU = if ((cT == unit))
372372 then "WAVES"
373- else toBase58String(value(cS))
374- if (if ((cR != cM))
373+ else toBase58String(value(cT))
374+ if (if ((cS != cN))
375375 then true
376- else (cT != cN))
376+ else (cU != cO))
377377 then throw("Wr assets")
378378 else {
379- let cU = cL.price
380- let cl = fraction(a, br, bq)
381- let cV = G(cU, a, cl)
382- let cW = if ((cL.orderType == Buy))
383- then (bO >= cV)
384- else (cV >= bO)
379+ let cV = cM.price
380+ let cm = fraction(a, bs, br)
381+ let cW = G(cV, a, cm)
382+ let cX = if ((cM.orderType == Buy))
383+ then (bP >= cW)
384+ else (cW >= bP)
385385 true
386386 }
387387 }
388388 }
389389
390390
391-func cX (cY) = if ((size(cY.payments) != 1))
391+func cY (cZ) = if ((size(cZ.payments) != 1))
392392 then throw("1 pmnt exp")
393393 else {
394- let cZ = value(cY.payments[0])
395- let bz = value(cZ.assetId)
396- let ce = cZ.amount
397- let cq = bx(toBase58String(cY.transactionId), toBase58String(bz), ce, cY.caller)
398- let bT = cq._1
399- let bU = cq._2
400- let bH = parseIntValue(cq._9)
401- let bV = cq._10
394+ let da = value(cZ.payments[0])
395+ let bA = value(da.assetId)
396+ let cf = da.amount
397+ let cr = by(toBase58String(cZ.transactionId), toBase58String(bA), cf, cZ.caller)
398+ let bU = cr._1
399+ let bV = cr._2
400+ let bI = parseIntValue(cr._9)
401+ let bW = cr._10
402402 if (if (av())
403403 then true
404- else (bH == n))
405- then throw(("Admin blocked: " + toString(bH)))
406- else $Tuple5(bT, bU, ce, bz, bV)
404+ else (bI == n))
405+ then throw(("Admin blocked: " + toString(bI)))
406+ else $Tuple5(bU, bV, cf, bA, bW)
407407 }
408408
409409
410-func da (db,T,dc,dd,aZ,cc,cd,ce,cf) = {
411- let de = bW(T, aZ, value(dc).amount, value(dc).assetId, value(dd).amount, value(dd).assetId, db, false, cc, cd, ce, cf)
412- let bH = parseIntValue(de._8)
410+func db (dc,T,dd,de,aZ,cd,ce,cf,cg) = {
411+ let df = bX(T, aZ, value(dd).amount, value(dd).assetId, value(de).amount, value(de).assetId, dc, false, cd, ce, cf, cg)
412+ let bI = parseIntValue(df._8)
413413 if (if (if (av())
414414 then true
415- else (bH == l))
415+ else (bI == l))
416416 then true
417- else (bH == n))
418- then throw(("Blocked:" + toString(bH)))
419- else de
417+ else (bI == n))
418+ then throw(("Blocked:" + toString(bI)))
419+ else df
420420 }
421421
422422
423-@Callable(cY)
424-func constructor (at,df) = if ((cY.caller != this))
423+@Callable(cZ)
424+func constructor (at,dg) = if ((cZ.caller != this))
425425 then throw("denied")
426- else [StringEntry(L(), at), StringEntry(M(), df)]
426+ else [StringEntry(L(), at), StringEntry(M(), dg)]
427427
428428
429429
430-@Callable(cY)
431-func put (dg,dh) = {
432- let di = aB()
433- let dj = valueOrErrorMessage(addressFromString(di[x]), "Wr st addr")
434- let dk = valueOrErrorMessage(addressFromString(di[y]), "Wr sl addr")
435- if ((0 > dg))
430+@Callable(cZ)
431+func put (dh,di) = {
432+ let dj = aB()
433+ let dk = valueOrErrorMessage(addressFromString(dj[x]), "Wr st addr")
434+ let dl = valueOrErrorMessage(addressFromString(dj[y]), "Wr sl addr")
435+ if ((0 > dh))
436436 then throw("Wrong slippage")
437- else if ((size(cY.payments) != 2))
437+ else if ((size(cZ.payments) != 2))
438438 then throw("2 pmnts expd")
439439 else {
440- let dl = da(toString(cY.caller), toBase58String(cY.transactionId), AttachedPayment(value(cY.payments[0]).assetId, value(cY.payments[0]).amount), cY.payments[1], dg, true, false, 0, "")
441- let cD = dl._2
442- let dm = dl._7
443- let bV = dl._9
444- let cE = dl._10
445- let cF = dl._11
446- let bD = dl._12
447- let bE = dl._13
448- let dn = invoke(at, "emit", [cD], nil)
449- if ((dn == dn))
440+ let dm = db(toString(cZ.caller), toBase58String(cZ.transactionId), AttachedPayment(value(cZ.payments[0]).assetId, value(cZ.payments[0]).amount), cZ.payments[1], dh, true, false, 0, "")
441+ let cE = dm._2
442+ let dn = dm._7
443+ let bW = dm._9
444+ let cF = dm._10
445+ let cG = dm._11
446+ let bE = dm._12
447+ let bF = dm._13
448+ let do = invoke(at, "emit", [cE], nil)
449+ if ((do == do))
450450 then {
451- let do = if ((cE > 0))
452- then invoke(dk, "put", nil, [AttachedPayment(bD, cE)])
451+ let dp = if ((cF > 0))
452+ then invoke(dl, "put", nil, [AttachedPayment(bE, cF)])
453453 else nil
454- if ((do == do))
454+ if ((dp == dp))
455455 then {
456- let dp = if ((cF > 0))
457- then invoke(dk, "put", nil, [AttachedPayment(bE, cF)])
456+ let dq = if ((cG > 0))
457+ then invoke(dl, "put", nil, [AttachedPayment(bF, cG)])
458458 else nil
459- if ((dp == dp))
459+ if ((dq == dq))
460460 then {
461- let dq = if (dh)
461+ let dr = if (di)
462462 then {
463- let dr = invoke(dj, "stake", nil, [AttachedPayment(dm, cD)])
464- if ((dr == dr))
463+ let ds = invoke(dk, "stake", nil, [AttachedPayment(dn, cE)])
464+ if ((ds == ds))
465465 then nil
466466 else throw("Strict value is not equal to itself.")
467467 }
468- else [ScriptTransfer(cY.caller, cD, dm)]
469- (bV ++ dq)
468+ else [ScriptTransfer(cZ.caller, cE, dn)]
469+ (bW ++ dr)
470470 }
471471 else throw("Strict value is not equal to itself.")
472472 }
478478
479479
480480
481-@Callable(cY)
482-func putOneTkn (ds,dt,du,aZ,dh) = {
483- let bp = aB()
484- let dj = valueOrErrorMessage(addressFromString(bp[x]), "Wr st addr")
485- let dk = valueOrErrorMessage(addressFromString(bp[y]), "Wr sl addr")
486- let dv = valueOrErrorMessage(addressFromString(bp[z]), "Wr gwx addr")
487- let dw = ax()
488- let bD = dw[r]
489- let bE = dw[s]
490- let bF = parseIntValue(dw[t])
491- let bG = parseIntValue(dw[u])
481+@Callable(cZ)
482+func putOneTkn (dt,du,dv,aZ,di) = {
483+ let bq = aB()
484+ let dk = valueOrErrorMessage(addressFromString(bq[x]), "Wr st addr")
485+ let dl = valueOrErrorMessage(addressFromString(bq[y]), "Wr sl addr")
486+ let dw = valueOrErrorMessage(addressFromString(bq[z]), "Wr gwx addr")
487+ let dx = ax()
488+ let bE = dx[r]
489+ let bF = dx[s]
490+ let bG = parseIntValue(dx[t])
491+ let bH = parseIntValue(dx[u])
492492 if (if (if (if ((0 >= aZ))
493- then true
494- else (0 >= ds))
495493 then true
496494 else (0 >= dt))
497495 then true
498496 else (0 >= du))
497+ then true
498+ else (0 >= dv))
499499 then throw("Wrong params")
500- else if ((size(cY.payments) != 1))
500+ else if ((size(cZ.payments) != 1))
501501 then throw("1 pmnt expd")
502502 else {
503- let cZ = value(cY.payments[0])
504- let bz = toBase58String(value(cZ.assetId))
505- let ce = cZ.amount
506- if (if (if ((ds > ce))
503+ let da = value(cZ.payments[0])
504+ let bA = toBase58String(value(da.assetId))
505+ let cf = da.amount
506+ if (if (if ((dt > cf))
507507 then true
508- else (dt > ce))
508+ else (du > cf))
509509 then true
510- else (10000000 > ce))
510+ else (10000000 > cf))
511511 then throw("Wrong pmt amt")
512512 else {
513- let bJ = aR(bD)
514- let bL = aR(bE)
515- let dx = if ((bz == bD))
516- then $Tuple6((bJ - ce), bL, (ce - ds), dt, 0, 0)
517- else if ((bz == bE))
518- then $Tuple6(bJ, (bL - ce), 0, 0, (ce - dt), ds)
513+ let bK = aR(bE)
514+ let bM = aR(bF)
515+ let dy = if ((bA == bE))
516+ then $Tuple6((bK - cf), bM, (cf - dt), du, 0, 0)
517+ else if ((bA == bF))
518+ then $Tuple6(bK, (bM - cf), 0, 0, (cf - du), dt)
519519 else throw("wrong pmtAssetId")
520- let dy = dx._1
521- let dz = dx._2
522- let dA = dx._3
523- let dB = dx._4
524- let dC = dx._5
525- let dD = dx._6
526- let be = invoke(dv, "calcD", [toString(dy), toString(dz), au, g, h], nil)
527- let bd = invoke(dv, "calcD", [toString(toBigInt(((dy + dA) - dD))), toString(toBigInt(((dz + dC) - dB))), au, g, h], nil)
528- let dE = bc(parseBigIntValue(am(bd)), parseBigIntValue(am(be)), f)
529- if ((dE == dE))
520+ let dz = dy._1
521+ let dA = dy._2
522+ let dB = dy._3
523+ let dC = dy._4
524+ let dD = dy._5
525+ let dE = dy._6
526+ let be = invoke(dw, "calcD", [toString(dz), toString(dA), au, g, h], nil)
527+ let bd = invoke(dw, "calcD", [toString(toBigInt(((dz + dB) - dE))), toString(toBigInt(((dA + dD) - dC))), au, g, h], nil)
528+ let dF = bc(parseBigIntValue(am(bd)), parseBigIntValue(am(be)), f)
529+ if ((dF == dF))
530530 then {
531- let dl = da(toString(cY.caller), toBase58String(cY.transactionId), AttachedPayment(fromBase58String(bD), ds), AttachedPayment(fromBase58String(bE), dt), 50000000000, true, true, ce, bz)
532- let dF = dl._2
533- let dm = dl._7
534- let bV = dl._9
535- let cE = dl._10
536- let cF = dl._11
537- let dG = aW(toBigInt(dF), toBigInt(du), toBigInt(aZ))
538- let cD = toInt(dG._2)
539- let dn = invoke(at, "emit", [cD], nil)
540- if ((dn == dn))
531+ let dm = db(toString(cZ.caller), toBase58String(cZ.transactionId), AttachedPayment(fromBase58String(bE), dt), AttachedPayment(fromBase58String(bF), du), 50000000000, true, true, cf, bA)
532+ let dG = dm._2
533+ let dn = dm._7
534+ let bW = dm._9
535+ let cF = dm._10
536+ let cG = dm._11
537+ let dH = aW(toBigInt(dG), toBigInt(dv), toBigInt(aZ))
538+ let cE = toInt(dH._2)
539+ let do = invoke(at, "emit", [cE], nil)
540+ if ((do == do))
541541 then {
542- let do = if ((cE > 0))
543- then invoke(dk, "put", nil, [AttachedPayment(fromBase58String(bD), cE)])
542+ let dp = if ((cF > 0))
543+ then invoke(dl, "put", nil, [AttachedPayment(fromBase58String(bE), cF)])
544544 else nil
545- if ((do == do))
545+ if ((dp == dp))
546546 then {
547- let dp = if ((cF > 0))
548- then invoke(dk, "put", nil, [AttachedPayment(fromBase58String(bE), cF)])
547+ let dq = if ((cG > 0))
548+ then invoke(dl, "put", nil, [AttachedPayment(fromBase58String(bF), cG)])
549549 else nil
550- if ((dp == dp))
550+ if ((dq == dq))
551551 then {
552- let dq = if (dh)
552+ let dr = if (di)
553553 then {
554- let dr = invoke(dj, "stake", nil, [AttachedPayment(dm, cD)])
555- if ((dr == dr))
554+ let ds = invoke(dk, "stake", nil, [AttachedPayment(dn, cE)])
555+ if ((ds == ds))
556556 then nil
557557 else throw("Strict value is not equal to itself.")
558558 }
559- else [ScriptTransfer(cY.caller, cD, dm)]
560- (bV ++ dq)
559+ else [ScriptTransfer(cZ.caller, cE, dn)]
560+ (bW ++ dr)
561561 }
562562 else throw("Strict value is not equal to itself.")
563563 }
572572
573573
574574
575-@Callable(cY)
576-func putForFree (dH) = if ((0 > dH))
575+@Callable(cZ)
576+func putForFree (dI) = if ((0 > dI))
577577 then throw("Wrong slpg")
578- else if ((size(cY.payments) != 2))
578+ else if ((size(cZ.payments) != 2))
579579 then throw("2 pmnts expd")
580580 else {
581- let dl = da(toString(cY.caller), toBase58String(cY.transactionId), AttachedPayment(value(cY.payments[0]).assetId, value(cY.payments[0]).amount), cY.payments[1], dH, false, false, 0, "")
582- dl._9
581+ let dm = db(toString(cZ.caller), toBase58String(cZ.transactionId), AttachedPayment(value(cZ.payments[0]).assetId, value(cZ.payments[0]).amount), cZ.payments[1], dI, false, false, 0, "")
582+ dm._9
583583 }
584584
585585
586586
587-@Callable(cY)
587+@Callable(cZ)
588588 func get () = {
589- let cq = cX(cY)
590- let dI = cq._1
591- let bU = cq._2
592- let ce = cq._3
593- let bz = cq._4
594- let bV = cq._5
595- let dJ = invoke(at, "burn", [ce], [AttachedPayment(bz, ce)])
596- if ((dJ == dJ))
597- then bV
589+ let cr = cY(cZ)
590+ let dJ = cr._1
591+ let bV = cr._2
592+ let cf = cr._3
593+ let bA = cr._4
594+ let bW = cr._5
595+ let dK = invoke(at, "burn", [cf], [AttachedPayment(bA, cf)])
596+ if ((dK == dK))
597+ then bW
598598 else throw("Strict value is not equal to itself.")
599599 }
600600
601601
602602
603-@Callable(cY)
604-func getOneTkn (dK,dL,dM,dN,aZ) = if ((size(cY.payments) != 1))
603+@Callable(cZ)
604+func getOneTkn (dL,dM,dN,dO,aZ) = if ((size(cZ.payments) != 1))
605605 then throw("1 pmnt expd")
606606 else {
607- let bp = ax()
608- let bC = bp[q]
609- let bD = bp[r]
610- let bE = bp[s]
611- let bF = parseIntValue(bp[t])
612- let bG = parseIntValue(bp[u])
613- let bH = bp[p]
614- let dO = aB()
615- let dv = valueOrErrorMessage(addressFromString(dO[z]), "Wr sl addr")
616- let cZ = value(cY.payments[0])
617- let bB = cY.caller
618- let by = toBase58String(cY.transactionId)
619- let bz = value(cZ.assetId)
620- let ce = cZ.amount
607+ let bq = ax()
608+ let bD = bq[q]
609+ let bE = bq[r]
610+ let bF = bq[s]
611+ let bG = parseIntValue(bq[t])
612+ let bH = parseIntValue(bq[u])
613+ let bI = bq[p]
614+ let dP = aB()
615+ let dw = valueOrErrorMessage(addressFromString(dP[z]), "Wr sl addr")
616+ let da = value(cZ.payments[0])
617+ let bC = cZ.caller
618+ let bz = toBase58String(cZ.transactionId)
619+ let bA = value(da.assetId)
620+ let cf = da.amount
621621 if (if (if (if ((0 > aZ))
622- then true
623- else (0 > dK))
624622 then true
625623 else (0 > dL))
626624 then true
627625 else (0 > dM))
626+ then true
627+ else (0 > dN))
628628 then throw("Wrong params")
629- else if ((bC != toBase58String(bz)))
629+ else if ((bD != toBase58String(bA)))
630630 then throw("Wrong LP")
631631 else {
632- let de = bx(toBase58String(cY.transactionId), toBase58String(bz), ce, cY.caller)
633- let dP = de._1
634- let dQ = de._2
635- let bJ = aR(bD)
636- let bL = aR(bE)
637- let dR = if ((dN == bD))
638- then $Tuple7((bJ - dP), (bL - dQ), (dM - dP), dL, 0, 0, (dP + dK))
639- else if ((dN == bE))
640- then $Tuple7((bJ - dP), (bL - dQ), 0, 0, (dM - dQ), dK, (dQ + dL))
632+ let df = by(toBase58String(cZ.transactionId), toBase58String(bA), cf, cZ.caller)
633+ let dQ = df._1
634+ let dR = df._2
635+ let bK = aR(bE)
636+ let bM = aR(bF)
637+ let dS = if ((dO == bE))
638+ then $Tuple7((bK - dQ), (bM - dR), (dN - dQ), dM, 0, 0, (dQ + dL))
639+ else if ((dO == bF))
640+ then $Tuple7((bK - dQ), (bM - dR), 0, 0, (dN - dR), dL, (dR + dM))
641641 else throw("wrong outAssetId")
642- let dy = dR._1
643- let dz = dR._2
644- let dA = dR._3
645- let dB = dR._4
646- let dC = dR._5
647- let dD = dR._6
648- let dS = dR._7
649- if (if ((0 > dA))
642+ let dz = dS._1
643+ let dA = dS._2
644+ let dB = dS._3
645+ let dC = dS._4
646+ let dD = dS._5
647+ let dE = dS._6
648+ let dT = dS._7
649+ if (if ((0 > dB))
650650 then true
651- else (0 > dC))
651+ else (0 > dD))
652652 then throw("Wrong calc")
653653 else {
654- let be = invoke(dv, "calcD", [toString(dy), toString(dz), au, g, h], nil)
655- let bd = invoke(dv, "calcD", [toString(((dy - dA) + dD)), toString(((dz + dB) - dC)), au, g, h], nil)
656- let dE = bc(parseBigIntValue(am(bd)), parseBigIntValue(am(be)), f)
657- if ((dE == dE))
654+ let be = invoke(dw, "calcD", [toString(dz), toString(dA), au, g, h], nil)
655+ let bd = invoke(dw, "calcD", [toString(((dz - dB) + dE)), toString(((dA + dC) - dD)), au, g, h], nil)
656+ let dF = bc(parseBigIntValue(am(bd)), parseBigIntValue(am(be)), f)
657+ if ((dF == dF))
658658 then {
659- let dT = aW(toBigInt(dS), toBigInt(dM), toBigInt(aZ))
660- if ((dT == dT))
659+ let dU = aW(toBigInt(dT), toBigInt(dN), toBigInt(aZ))
660+ if ((dU == dU))
661661 then {
662- let dU = if ((dN == bD))
663- then $Tuple2(toInt(dT._2), 0)
664- else $Tuple2(0, toInt(dT._2))
665- let dV = dU._1
666- let dW = dU._2
667- let bN = aT(A(bL, bG), A(bJ, bF))
668- let bO = D(bN, a)
669- let bV = [ScriptTransfer(bB, (dV + dW), if ((dN == "WAVES"))
662+ let dV = if ((dO == bE))
663+ then $Tuple2(toInt(dU._2), 0)
664+ else $Tuple2(0, toInt(dU._2))
665+ let dW = dV._1
666+ let dX = dV._2
667+ let bO = aT(A(bM, bH), A(bK, bG))
668+ let bP = D(bO, a)
669+ let bW = [ScriptTransfer(bC, (dW + dX), if ((dO == "WAVES"))
670670 then unit
671- else fromBase58String(dN)), StringEntry(U(toString(bB), by), aN(dV, dW, ce, bO, height, lastBlock.timestamp)), IntegerEntry(N(), bO), IntegerEntry(O(height, lastBlock.timestamp), bO)]
672- if ((bV == bV))
671+ else fromBase58String(dO)), StringEntry(U(toString(bC), bz), aN(dW, dX, cf, bP, height, lastBlock.timestamp)), IntegerEntry(N(), bP), IntegerEntry(O(height, lastBlock.timestamp), bP)]
672+ if ((bW == bW))
673673 then {
674- let dX = invoke(at, "burn", [ce], [AttachedPayment(bz, ce)])
675- if ((dX == dX))
676- then bV
674+ let dY = invoke(at, "burn", [cf], [AttachedPayment(bA, cf)])
675+ if ((dY == dY))
676+ then bW
677677 else throw("Strict value is not equal to itself.")
678678 }
679679 else throw("Strict value is not equal to itself.")
687687
688688
689689
690-@Callable(cY)
691-func getNoLess (dY,dZ) = {
692- let cq = cX(cY)
693- let bT = cq._1
694- let bU = cq._2
695- let ce = cq._3
696- let bz = cq._4
697- let bV = cq._5
698- if ((dY > bT))
699- then throw(((("Failed: " + toString(bT)) + " < ") + toString(dY)))
700- else if ((dZ > bU))
701- then throw(((("Failed: " + toString(bU)) + " < ") + toString(dZ)))
690+@Callable(cZ)
691+func getNoLess (dZ,ea) = {
692+ let cr = cY(cZ)
693+ let bU = cr._1
694+ let bV = cr._2
695+ let cf = cr._3
696+ let bA = cr._4
697+ let bW = cr._5
698+ if ((dZ > bU))
699+ then throw(((("Failed: " + toString(bU)) + " < ") + toString(dZ)))
700+ else if ((ea > bV))
701+ then throw(((("Failed: " + toString(bV)) + " < ") + toString(ea)))
702702 else {
703- let dJ = invoke(at, "burn", [ce], [AttachedPayment(bz, ce)])
704- if ((dJ == dJ))
705- then bV
703+ let dK = invoke(at, "burn", [cf], [AttachedPayment(bA, cf)])
704+ if ((dK == dK))
705+ then bW
706706 else throw("Strict value is not equal to itself.")
707707 }
708708 }
709709
710710
711711
712-@Callable(cY)
713-func unstakeAndGet (ea) = {
714- let eb = if ((size(cY.payments) != 0))
712+@Callable(cZ)
713+func unstakeAndGet (eb) = {
714+ let ec = if ((size(cZ.payments) != 0))
715715 then throw("No pmnts expd")
716716 else true
717- if ((eb == eb))
717+ if ((ec == ec))
718718 then {
719- let bp = ax()
720- let ec = aB()
721- let dm = fromBase58String(bp[q])
722- let ed = valueOrErrorMessage(addressFromString(ec[x]), "Wr st addr")
723- let ee = invoke(ed, "unstake", [toBase58String(dm), ea], nil)
724- if ((ee == ee))
719+ let bq = ax()
720+ let ed = aB()
721+ let dn = fromBase58String(bq[q])
722+ let ee = valueOrErrorMessage(addressFromString(ed[x]), "Wr st addr")
723+ let ef = invoke(ee, "unstake", [toBase58String(dn), eb], nil)
724+ if ((ef == ef))
725725 then {
726- let de = bx(toBase58String(cY.transactionId), toBase58String(dm), ea, cY.caller)
727- let bH = parseIntValue(de._9)
728- let bV = de._10
729- let ef = if (if (av())
726+ let df = by(toBase58String(cZ.transactionId), toBase58String(dn), eb, cZ.caller)
727+ let bI = parseIntValue(df._9)
728+ let bW = df._10
729+ let eg = if (if (av())
730730 then true
731- else (bH == n))
732- then throw(("Blocked: " + toString(bH)))
731+ else (bI == n))
732+ then throw(("Blocked: " + toString(bI)))
733733 else true
734- if ((ef == ef))
734+ if ((eg == eg))
735735 then {
736- let dJ = invoke(at, "burn", [ea], [AttachedPayment(dm, ea)])
737- if ((dJ == dJ))
738- then bV
736+ let dK = invoke(at, "burn", [eb], [AttachedPayment(dn, eb)])
737+ if ((dK == dK))
738+ then bW
739739 else throw("Strict value is not equal to itself.")
740740 }
741741 else throw("Strict value is not equal to itself.")
747747
748748
749749
750-@Callable(cY)
751-func activate (eg,eh) = if ((toString(cY.caller) != toString(at)))
750+@Callable(cZ)
751+func activate (eh,ei) = if ((toString(cZ.caller) != toString(at)))
752752 then throw("denied")
753- else $Tuple2([StringEntry(V(), eg), StringEntry(W(), eh)], "success")
753+ else $Tuple2([StringEntry(V(), eh), StringEntry(W(), ei)], "success")
754754
755755
756756
757-@Callable(cY)
757+@Callable(cZ)
758758 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, ax())
759759
760760
761761
762-@Callable(cY)
762+@Callable(cZ)
763763 func getAccBalanceWrapperREADONLY (aS) = $Tuple2(nil, aR(aS))
764764
765765
766766
767-@Callable(cY)
768-func calcPricesWrapperREADONLY (bj,bk,bo) = {
769- let ei = bn(bj, bk, bo)
770- $Tuple2(nil, [toString(ei[0]), toString(ei[1]), toString(ei[2])])
767+@Callable(cZ)
768+func calcPricesWrapperREADONLY (bk,bl,bp) = {
769+ let ej = bo(bk, bl, bp)
770+ $Tuple2(nil, [toString(ej[0]), toString(ej[1]), toString(ej[2])])
771771 }
772772
773773
774774
775-@Callable(cY)
775+@Callable(cZ)
776776 func fromX18WrapperREADONLY (E,F) = $Tuple2(nil, D(parseBigIntValue(E), F))
777777
778778
779779
780-@Callable(cY)
780+@Callable(cZ)
781781 func toX18WrapperREADONLY (B,C) = $Tuple2(nil, toString(A(B, C)))
782782
783783
784784
785-@Callable(cY)
785+@Callable(cZ)
786786 func calcPriceBigIntWrapperREADONLY (aU,aV) = $Tuple2(nil, toString(aT(parseBigIntValue(aU), parseBigIntValue(aV))))
787787
788788
789789
790-@Callable(cY)
791-func estimatePutOperationWrapperREADONLY (by,aZ,bX,bY,bZ,ca,ej,cb,cc) = $Tuple2(nil, bW(by, aZ, bX, bY, bZ, ca, ej, cb, cc, false, 0, ""))
790+@Callable(cZ)
791+func estimatePutOperationWrapperREADONLY (bz,aZ,bY,bZ,ca,cb,ek,cc,cd) = $Tuple2(nil, bX(bz, aZ, bY, bZ, ca, cb, ek, cc, cd, false, 0, ""))
792792
793793
794794
795-@Callable(cY)
796-func estimateGetOperationWrapperREADONLY (by,ek,bA,ej) = {
797- let cq = bx(by, ek, bA, addressFromStringValue(ej))
798- $Tuple2(nil, $Tuple10(cq._1, cq._2, cq._3, cq._4, cq._5, cq._6, cq._7, toString(cq._8), cq._9, cq._10))
795+@Callable(cZ)
796+func estimateGetOperationWrapperREADONLY (bz,el,bB,ek) = {
797+ let cr = by(bz, el, bB, addressFromStringValue(ek))
798+ $Tuple2(nil, $Tuple10(cr._1, cr._2, cr._3, cr._4, cr._5, cr._6, cr._7, toString(cr._8), cr._9, cr._10))
799799 }
800800
801801
802-@Verifier(el)
803-func em () = {
804- let an = el
802+@Verifier(em)
803+func en () = {
804+ let an = em
805805 if ($isInstanceOf(an, "Order"))
806806 then {
807- let cL = an
808- let en = aw()
809- let aj = cK(cL)
810- let eo = sigVerify(cL.bodyBytes, cL.proofs[0], cL.senderPublicKey)
811- let ep = sigVerify(cL.bodyBytes, cL.proofs[1], en)
807+ let cM = an
808+ let eo = aw()
809+ let aj = cL(cM)
810+ let ep = sigVerify(cM.bodyBytes, cM.proofs[0], cM.senderPublicKey)
811+ let eq = sigVerify(cM.bodyBytes, cM.proofs[1], eo)
812812 if (if (if (aj)
813- then eo
814- else false)
815813 then ep
816814 else false)
815+ then eq
816+ else false)
817817 then true
818- else ai(aj, eo, ep)
818+ else ai(aj, ep, eq)
819819 }
820820 else {
821- let eq = valueOrElse(getString(this, M()), j)
822- if ((eq == j))
823- then sigVerify(el.bodyBytes, el.proofs[0], el.senderPublicKey)
824- else sigVerify(el.bodyBytes, el.proofs[0], fromBase58String(eq))
821+ let er = valueOrElse(getString(this, M()), j)
822+ if ((er == j))
823+ then sigVerify(em.bodyBytes, em.proofs[0], em.senderPublicKey)
824+ else sigVerify(em.bodyBytes, em.proofs[0], fromBase58String(er))
825825 }
826826 }
827827
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
1010 let d = toBigInt(0)
1111
1212 let e = toBigInt(1)
1313
1414 let f = toBigInt((a - ((a * 1) / a)))
1515
1616 let g = "100"
1717
1818 let h = "1"
1919
2020 let i = "__"
2121
2222 let j = ""
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 1
5151
5252 let y = 7
5353
5454 let z = 10
5555
5656 func A (B,C) = fraction(toBigInt(B), c, toBigInt(C))
5757
5858
5959 func D (E,F) = toInt(fraction(E, toBigInt(F), c))
6060
6161
6262 func G (H,I,J) = fraction(H, I, J)
6363
6464
6565 func K (E) = if ((d > E))
6666 then -(E)
6767 else E
6868
6969
7070 func L () = "%s__factoryContract"
7171
7272
7373 func M () = "%s__managerPublicKey"
7474
7575
7676 func N () = "%s%s__price__last"
7777
7878
7979 func O (P,Q) = makeString(["%s%s%d%d__price__history", toString(P), toString(Q)], i)
8080
8181
8282 func R (S,T) = ((("%s%s%s__P__" + S) + "__") + T)
8383
8484
8585 func U (S,T) = ((("%s%s%s__G__" + S) + "__") + T)
8686
8787
8888 func V () = "%s__amountAsset"
8989
9090
9191 func W () = "%s__priceAsset"
9292
9393
9494 func X () = "%s__amp"
9595
9696
9797 func Y () = "%s__factoryConfig"
9898
9999
100100 func Z () = "%s%s__matcher__publicKey"
101101
102102
103103 func aa (ab,ac) = (((("%d%d%s__" + ab) + "__") + ac) + "__config")
104104
105105
106106 func ad (ae) = ("%s%s%s__mappings__baseAsset2internalId__" + ae)
107107
108108
109109 func af () = "%s__shutdown"
110110
111111
112112 func ag (ah) = ("%s%s__poolWeight__" + ah)
113113
114114
115115 func ai (aj,ak,al) = throw(((((("Failed: ordValid=" + toString(aj)) + " sndrValid=") + toString(ak)) + " mtchrValid=") + toString(al)))
116116
117117
118118 func am (E) = {
119119 let an = E
120120 if ($isInstanceOf(an, "String"))
121121 then {
122122 let ao = an
123123 ao
124124 }
125125 else throw("fail cast to String")
126126 }
127127
128128
129129 func ap (aq,ar) = valueOrErrorMessage(getString(aq, ar), makeString(["mandatory ", toString(aq), ".", ar, " not defined"], ""))
130130
131131
132132 func as (aq,ar) = valueOrErrorMessage(getInteger(aq, ar), makeString(["mandatory ", toString(aq), ".", ar, " not defined"], ""))
133133
134134
135135 let at = addressFromStringValue(ap(this, L()))
136136
137137 let au = ap(this, X())
138138
139139 func av () = valueOrElse(getBoolean(at, af()), false)
140140
141141
142142 func aw () = fromBase58String(ap(at, Z()))
143143
144144
145145 func ax () = {
146146 let ay = ap(this, V())
147147 let az = ap(this, W())
148148 let aA = as(at, ad(az))
149149 let ab = as(at, ad(ay))
150150 split(ap(at, aa(toString(ab), toString(aA))), i)
151151 }
152152
153153
154154 func aB () = split(ap(at, Y()), i)
155155
156156
157157 func aC (aD,aE,aF,aG,aH,aI,aJ,aK,aL,aM) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aD), toString(aE), toString(aF), toString(aG), toString(aH), toString(aI), toString(aJ), toString(aK), toString(aL), toString(aM)], i)
158158
159159
160160 func aN (aO,aP,aQ,aG,aJ,aK) = makeString(["%d%d%d%d%d%d", toString(aO), toString(aP), toString(aQ), toString(aG), toString(aJ), toString(aK)], i)
161161
162162
163163 func aR (aS) = if ((aS == "WAVES"))
164164 then wavesBalance(this).available
165165 else assetBalance(this, fromBase58String(aS))
166166
167167
168168 func aT (aU,aV) = fraction(aU, c, aV)
169169
170170
171171 func aW (aX,aY,aZ) = {
172172 let ba = fraction((aX - aY), b, aY)
173173 let bb = ((aZ - K(ba)) > d)
174174 if (!(bb))
175175 then throw(("Big slpg: " + toString(ba)))
176176 else $Tuple2(bb, min([aX, aY]))
177177 }
178178
179179
180180 func bc (bd,be,bf) = {
181181 let ba = fraction(be, b, bd)
182- let bb = (bf >= ba)
183- if (if (bb)
182+ let bg = (bf > ba)
183+ if (if (bg)
184184 then true
185185 else (be > bd))
186186 then throw(((((((toString(be) + " : ") + toString(bd)) + " ") + toString(ba)) + " ") + toString(bf)))
187- else bb
187+ else bg
188188 }
189189
190190
191-func bg (bh,bi,bj,bk) = {
192- let bl = A(bj, bh)
191+func bh (bi,bj,bk,bl) = {
193192 let bm = A(bk, bi)
194- aT(bm, bl)
193+ let bn = A(bl, bj)
194+ aT(bn, bm)
195195 }
196196
197197
198-func bn (bj,bk,bo) = {
199- let bp = ax()
200- let bq = parseIntValue(bp[t])
201- let br = parseIntValue(bp[u])
202- let bs = bg(bq, br, bj, bk)
203- let aV = A(bj, bq)
204- let aU = A(bk, br)
205- let bt = A(bo, a)
206- let bu = aT(aV, bt)
207- let bv = aT(aU, bt)
208-[bs, bu, bv]
198+func bo (bk,bl,bp) = {
199+ let bq = ax()
200+ let br = parseIntValue(bq[t])
201+ let bs = parseIntValue(bq[u])
202+ let bt = bh(br, bs, bk, bl)
203+ let aV = A(bk, br)
204+ let aU = A(bl, bs)
205+ let bu = A(bp, a)
206+ let bv = aT(aV, bu)
207+ let bw = aT(aU, bu)
208+[bt, bv, bw]
209209 }
210210
211211
212-func bw (bj,bk,bo) = {
213- let ah = bn(bj, bk, bo)
212+func bx (bk,bl,bp) = {
213+ let ah = bo(bk, bl, bp)
214214 [D(ah[0], a), D(ah[1], a), D(ah[2], a)]
215215 }
216216
217217
218-func bx (by,bz,bA,bB) = {
219- let bp = ax()
220- let bC = bp[q]
221- let bD = bp[r]
222- let bE = bp[s]
223- let bF = parseIntValue(bp[t])
224- let bG = parseIntValue(bp[u])
225- let bH = bp[p]
226- let bI = valueOrErrorMessage(assetInfo(fromBase58String(bC)), "Wrong LP id").quantity
227- if ((bC != bz))
218+func by (bz,bA,bB,bC) = {
219+ let bq = ax()
220+ let bD = bq[q]
221+ let bE = bq[r]
222+ let bF = bq[s]
223+ let bG = parseIntValue(bq[t])
224+ let bH = parseIntValue(bq[u])
225+ let bI = bq[p]
226+ let bJ = valueOrErrorMessage(assetInfo(fromBase58String(bD)), "Wrong LP id").quantity
227+ if ((bD != bA))
228228 then throw("Wrong pmt asset")
229229 else {
230- let bJ = aR(bD)
231- let bK = A(bJ, bF)
232- let bL = aR(bE)
233- let bM = A(bL, bG)
234- let bN = aT(bM, bK)
235- let bO = D(bN, a)
236- let bP = A(bA, a)
237- let bQ = A(bI, a)
238- let bR = fraction(bK, bP, bQ)
239- let bS = fraction(bM, bP, bQ)
240- let bT = D(bR, bF)
230+ let bK = aR(bE)
231+ let bL = A(bK, bG)
232+ let bM = aR(bF)
233+ let bN = A(bM, bH)
234+ let bO = aT(bN, bL)
235+ let bP = D(bO, a)
236+ let bQ = A(bB, a)
237+ let bR = A(bJ, a)
238+ let bS = fraction(bL, bQ, bR)
239+ let bT = fraction(bN, bQ, bR)
241240 let bU = D(bS, bG)
242- let bV = if ((by == ""))
241+ let bV = D(bT, bH)
242+ let bW = if ((bz == ""))
243243 then nil
244- else [ScriptTransfer(bB, bT, if ((bD == "WAVES"))
244+ else [ScriptTransfer(bC, bU, if ((bE == "WAVES"))
245245 then unit
246- else fromBase58String(bD)), ScriptTransfer(bB, bU, if ((bE == "WAVES"))
246+ else fromBase58String(bE)), ScriptTransfer(bC, bV, if ((bF == "WAVES"))
247247 then unit
248- else fromBase58String(bE)), StringEntry(U(toString(bB), by), aN(bT, bU, bA, bO, height, lastBlock.timestamp)), IntegerEntry(N(), bO), IntegerEntry(O(height, lastBlock.timestamp), bO)]
249- $Tuple10(bT, bU, bD, bE, bJ, bL, bI, bN, bH, bV)
248+ else fromBase58String(bF)), StringEntry(U(toString(bC), bz), aN(bU, bV, bB, bP, height, lastBlock.timestamp)), IntegerEntry(N(), bP), IntegerEntry(O(height, lastBlock.timestamp), bP)]
249+ $Tuple10(bU, bV, bE, bF, bK, bM, bJ, bO, bI, bW)
250250 }
251251 }
252252
253253
254-func bW (by,aZ,bX,bY,bZ,ca,bB,cb,cc,cd,ce,cf) = {
255- let bp = ax()
256- let bC = fromBase58String(bp[q])
257- let cg = bp[r]
258- let ch = bp[s]
259- let ci = bp[v]
260- let cj = bp[w]
261- let ck = parseIntValue(bp[t])
262- let cl = parseIntValue(bp[u])
263- let bH = bp[p]
264- let cm = valueOrErrorMessage(assetInfo(bC), "Wr lp as").quantity
265- let bJ = if (cb)
266- then aR(cg)
267- else if (if (cd)
268- then (cf == cg)
254+func bX (bz,aZ,bY,bZ,ca,cb,bC,cc,cd,ce,cf,cg) = {
255+ let bq = ax()
256+ let bD = fromBase58String(bq[q])
257+ let ch = bq[r]
258+ let ci = bq[s]
259+ let cj = bq[v]
260+ let ck = bq[w]
261+ let cl = parseIntValue(bq[t])
262+ let cm = parseIntValue(bq[u])
263+ let bI = bq[p]
264+ let cn = valueOrErrorMessage(assetInfo(bD), "Wr lp as").quantity
265+ let bK = if (cc)
266+ then aR(ch)
267+ else if (if (ce)
268+ then (cg == ch)
269269 else false)
270- then (aR(cg) - ce)
271- else if (cd)
272- then aR(cg)
273- else (aR(cg) - bX)
274- let bL = if (cb)
275- then aR(ch)
276- else if (if (cd)
277- then (cf == ch)
270+ then (aR(ch) - cf)
271+ else if (ce)
272+ then aR(ch)
273+ else (aR(ch) - bY)
274+ let bM = if (cc)
275+ then aR(ci)
276+ else if (if (ce)
277+ then (cg == ci)
278278 else false)
279- then (aR(ch) - ce)
280- else if (cd)
281- then aR(ch)
282- else (aR(ch) - bZ)
283- let cn = A(bX, ck)
284- let co = A(bZ, cl)
285- let cp = aT(co, cn)
286- let bK = A(bJ, ck)
287- let bM = A(bL, cl)
288- let cq = if ((cm == 0))
279+ then (aR(ci) - cf)
280+ else if (ce)
281+ then aR(ci)
282+ else (aR(ci) - ca)
283+ let co = A(bY, cl)
284+ let cp = A(ca, cm)
285+ let cq = aT(cp, co)
286+ let bL = A(bK, cl)
287+ let bN = A(bM, cm)
288+ let cr = if ((cn == 0))
289289 then {
290- let bN = d
291- let cr = d
292- let bt = pow((cn * co), 0, toBigInt(5), 1, 0, DOWN)
293- $Tuple5(D(bt, a), D(cn, ck), D(co, cl), aT((bM + co), (bK + cn)), cr)
290+ let bO = d
291+ let cs = d
292+ let bu = pow((co * cp), 0, toBigInt(5), 1, 0, DOWN)
293+ $Tuple5(D(bu, a), D(co, cl), D(cp, cm), aT((bN + cp), (bL + co)), cs)
294294 }
295295 else {
296- let bN = aT(bM, bK)
297- let cs = fraction(K((bN - cp)), c, bN)
298- let cr = A(aZ, a)
299- if (if ((bN != d))
300- then (cs > cr)
296+ let bO = aT(bN, bL)
297+ let ct = fraction(K((bO - cq)), c, bO)
298+ let cs = A(aZ, a)
299+ if (if ((bO != d))
300+ then (ct > cs)
301301 else false)
302- then throw(((("Price slippage " + toString(cs)) + " > ") + toString(cr)))
302+ then throw(((("Price slippage " + toString(ct)) + " > ") + toString(cs)))
303303 else {
304- let ct = A(cm, a)
305- let cu = fraction(cn, bN, c)
306- let cv = fraction(co, c, bN)
307- let cw = if ((cu > co))
308- then $Tuple2(cv, co)
309- else $Tuple2(cn, cu)
310- let cx = cw._1
311- let cy = cw._2
312- let bt = fraction(ct, cy, bM)
313- $Tuple5(D(bt, a), D(cx, ck), D(cy, cl), bN, cr)
304+ let cu = A(cn, a)
305+ let cv = fraction(co, bO, c)
306+ let cw = fraction(cp, c, bO)
307+ let cx = if ((cv > cp))
308+ then $Tuple2(cw, cp)
309+ else $Tuple2(co, cv)
310+ let cy = cx._1
311+ let cz = cx._2
312+ let bu = fraction(cu, cz, bN)
313+ $Tuple5(D(bu, a), D(cy, cl), D(cz, cm), bO, cs)
314314 }
315315 }
316- let cz = cq._1
317- let cA = cq._2
318- let cB = cq._3
319- let bO = D(cq._4, a)
320- let cC = D(cq._5, a)
321- if ((0 >= cz))
316+ let cA = cr._1
317+ let cB = cr._2
318+ let cC = cr._3
319+ let bP = D(cr._4, a)
320+ let cD = D(cr._5, a)
321+ if ((0 >= cA))
322322 then throw("LP <= 0")
323323 else {
324- let cD = if (!(cc))
324+ let cE = if (!(cd))
325325 then 0
326- else cz
327- let cE = (bX - cA)
328- let cF = (bZ - cB)
329- let cG = if (if (cd)
330- then (cf == cg)
326+ else cA
327+ let cF = (bY - cB)
328+ let cG = (ca - cC)
329+ let cH = if (if (ce)
330+ then (cg == ch)
331331 else false)
332- then $Tuple2(ce, 0)
333- else if (if (cd)
334- then (cf == ch)
332+ then $Tuple2(cf, 0)
333+ else if (if (ce)
334+ then (cg == ci)
335335 else false)
336- then $Tuple2(0, ce)
337- else $Tuple2(cA, cB)
338- let cH = cG._1
339- let cI = cG._2
340- let cJ = [IntegerEntry(N(), bO), IntegerEntry(O(height, lastBlock.timestamp), bO), StringEntry(R(bB, by), aC(cH, cI, cD, bO, aZ, cC, height, lastBlock.timestamp, cE, cF))]
341- $Tuple13(cz, cD, bO, bJ, bL, cm, bC, bH, cJ, cE, cF, bY, ca)
336+ then $Tuple2(0, cf)
337+ else $Tuple2(cB, cC)
338+ let cI = cH._1
339+ let cJ = cH._2
340+ let cK = [IntegerEntry(N(), bP), IntegerEntry(O(height, lastBlock.timestamp), bP), StringEntry(R(bC, bz), aC(cI, cJ, cE, bP, aZ, cD, height, lastBlock.timestamp, cF, cG))]
341+ $Tuple13(cA, cE, bP, bK, bM, cn, bD, bI, cK, cF, cG, bZ, cb)
342342 }
343343 }
344344
345345
346-func cK (cL) = {
347- let bp = ax()
348- let cM = bp[r]
349- let cN = bp[s]
350- let bH = parseIntValue(bp[p])
351- let bq = parseIntValue(bp[t])
352- let br = parseIntValue(bp[u])
353- let cO = aR(cM)
346+func cL (cM) = {
347+ let bq = ax()
348+ let cN = bq[r]
349+ let cO = bq[s]
350+ let bI = parseIntValue(bq[p])
351+ let br = parseIntValue(bq[t])
352+ let bs = parseIntValue(bq[u])
354353 let cP = aR(cN)
355- let bN = if ((cL.orderType == Buy))
356- then bg(bq, br, (cO + cL.amount), cP)
357- else bg(bq, br, (cO - cL.amount), cP)
358- let bO = D(bN, a)
354+ let cQ = aR(cO)
355+ let bO = if ((cM.orderType == Buy))
356+ then bh(br, bs, (cP + cM.amount), cQ)
357+ else bh(br, bs, (cP - cM.amount), cQ)
358+ let bP = D(bO, a)
359359 if (if (if (av())
360360 then true
361- else (bH == m))
361+ else (bI == m))
362362 then true
363- else (bH == n))
363+ else (bI == n))
364364 then throw("Admin blocked")
365365 else {
366- let cQ = cL.assetPair.amountAsset
367- let cR = if ((cQ == unit))
366+ let cR = cM.assetPair.amountAsset
367+ let cS = if ((cR == unit))
368368 then "WAVES"
369- else toBase58String(value(cQ))
370- let cS = cL.assetPair.priceAsset
371- let cT = if ((cS == unit))
369+ else toBase58String(value(cR))
370+ let cT = cM.assetPair.priceAsset
371+ let cU = if ((cT == unit))
372372 then "WAVES"
373- else toBase58String(value(cS))
374- if (if ((cR != cM))
373+ else toBase58String(value(cT))
374+ if (if ((cS != cN))
375375 then true
376- else (cT != cN))
376+ else (cU != cO))
377377 then throw("Wr assets")
378378 else {
379- let cU = cL.price
380- let cl = fraction(a, br, bq)
381- let cV = G(cU, a, cl)
382- let cW = if ((cL.orderType == Buy))
383- then (bO >= cV)
384- else (cV >= bO)
379+ let cV = cM.price
380+ let cm = fraction(a, bs, br)
381+ let cW = G(cV, a, cm)
382+ let cX = if ((cM.orderType == Buy))
383+ then (bP >= cW)
384+ else (cW >= bP)
385385 true
386386 }
387387 }
388388 }
389389
390390
391-func cX (cY) = if ((size(cY.payments) != 1))
391+func cY (cZ) = if ((size(cZ.payments) != 1))
392392 then throw("1 pmnt exp")
393393 else {
394- let cZ = value(cY.payments[0])
395- let bz = value(cZ.assetId)
396- let ce = cZ.amount
397- let cq = bx(toBase58String(cY.transactionId), toBase58String(bz), ce, cY.caller)
398- let bT = cq._1
399- let bU = cq._2
400- let bH = parseIntValue(cq._9)
401- let bV = cq._10
394+ let da = value(cZ.payments[0])
395+ let bA = value(da.assetId)
396+ let cf = da.amount
397+ let cr = by(toBase58String(cZ.transactionId), toBase58String(bA), cf, cZ.caller)
398+ let bU = cr._1
399+ let bV = cr._2
400+ let bI = parseIntValue(cr._9)
401+ let bW = cr._10
402402 if (if (av())
403403 then true
404- else (bH == n))
405- then throw(("Admin blocked: " + toString(bH)))
406- else $Tuple5(bT, bU, ce, bz, bV)
404+ else (bI == n))
405+ then throw(("Admin blocked: " + toString(bI)))
406+ else $Tuple5(bU, bV, cf, bA, bW)
407407 }
408408
409409
410-func da (db,T,dc,dd,aZ,cc,cd,ce,cf) = {
411- let de = bW(T, aZ, value(dc).amount, value(dc).assetId, value(dd).amount, value(dd).assetId, db, false, cc, cd, ce, cf)
412- let bH = parseIntValue(de._8)
410+func db (dc,T,dd,de,aZ,cd,ce,cf,cg) = {
411+ let df = bX(T, aZ, value(dd).amount, value(dd).assetId, value(de).amount, value(de).assetId, dc, false, cd, ce, cf, cg)
412+ let bI = parseIntValue(df._8)
413413 if (if (if (av())
414414 then true
415- else (bH == l))
415+ else (bI == l))
416416 then true
417- else (bH == n))
418- then throw(("Blocked:" + toString(bH)))
419- else de
417+ else (bI == n))
418+ then throw(("Blocked:" + toString(bI)))
419+ else df
420420 }
421421
422422
423-@Callable(cY)
424-func constructor (at,df) = if ((cY.caller != this))
423+@Callable(cZ)
424+func constructor (at,dg) = if ((cZ.caller != this))
425425 then throw("denied")
426- else [StringEntry(L(), at), StringEntry(M(), df)]
426+ else [StringEntry(L(), at), StringEntry(M(), dg)]
427427
428428
429429
430-@Callable(cY)
431-func put (dg,dh) = {
432- let di = aB()
433- let dj = valueOrErrorMessage(addressFromString(di[x]), "Wr st addr")
434- let dk = valueOrErrorMessage(addressFromString(di[y]), "Wr sl addr")
435- if ((0 > dg))
430+@Callable(cZ)
431+func put (dh,di) = {
432+ let dj = aB()
433+ let dk = valueOrErrorMessage(addressFromString(dj[x]), "Wr st addr")
434+ let dl = valueOrErrorMessage(addressFromString(dj[y]), "Wr sl addr")
435+ if ((0 > dh))
436436 then throw("Wrong slippage")
437- else if ((size(cY.payments) != 2))
437+ else if ((size(cZ.payments) != 2))
438438 then throw("2 pmnts expd")
439439 else {
440- let dl = da(toString(cY.caller), toBase58String(cY.transactionId), AttachedPayment(value(cY.payments[0]).assetId, value(cY.payments[0]).amount), cY.payments[1], dg, true, false, 0, "")
441- let cD = dl._2
442- let dm = dl._7
443- let bV = dl._9
444- let cE = dl._10
445- let cF = dl._11
446- let bD = dl._12
447- let bE = dl._13
448- let dn = invoke(at, "emit", [cD], nil)
449- if ((dn == dn))
440+ let dm = db(toString(cZ.caller), toBase58String(cZ.transactionId), AttachedPayment(value(cZ.payments[0]).assetId, value(cZ.payments[0]).amount), cZ.payments[1], dh, true, false, 0, "")
441+ let cE = dm._2
442+ let dn = dm._7
443+ let bW = dm._9
444+ let cF = dm._10
445+ let cG = dm._11
446+ let bE = dm._12
447+ let bF = dm._13
448+ let do = invoke(at, "emit", [cE], nil)
449+ if ((do == do))
450450 then {
451- let do = if ((cE > 0))
452- then invoke(dk, "put", nil, [AttachedPayment(bD, cE)])
451+ let dp = if ((cF > 0))
452+ then invoke(dl, "put", nil, [AttachedPayment(bE, cF)])
453453 else nil
454- if ((do == do))
454+ if ((dp == dp))
455455 then {
456- let dp = if ((cF > 0))
457- then invoke(dk, "put", nil, [AttachedPayment(bE, cF)])
456+ let dq = if ((cG > 0))
457+ then invoke(dl, "put", nil, [AttachedPayment(bF, cG)])
458458 else nil
459- if ((dp == dp))
459+ if ((dq == dq))
460460 then {
461- let dq = if (dh)
461+ let dr = if (di)
462462 then {
463- let dr = invoke(dj, "stake", nil, [AttachedPayment(dm, cD)])
464- if ((dr == dr))
463+ let ds = invoke(dk, "stake", nil, [AttachedPayment(dn, cE)])
464+ if ((ds == ds))
465465 then nil
466466 else throw("Strict value is not equal to itself.")
467467 }
468- else [ScriptTransfer(cY.caller, cD, dm)]
469- (bV ++ dq)
468+ else [ScriptTransfer(cZ.caller, cE, dn)]
469+ (bW ++ dr)
470470 }
471471 else throw("Strict value is not equal to itself.")
472472 }
473473 else throw("Strict value is not equal to itself.")
474474 }
475475 else throw("Strict value is not equal to itself.")
476476 }
477477 }
478478
479479
480480
481-@Callable(cY)
482-func putOneTkn (ds,dt,du,aZ,dh) = {
483- let bp = aB()
484- let dj = valueOrErrorMessage(addressFromString(bp[x]), "Wr st addr")
485- let dk = valueOrErrorMessage(addressFromString(bp[y]), "Wr sl addr")
486- let dv = valueOrErrorMessage(addressFromString(bp[z]), "Wr gwx addr")
487- let dw = ax()
488- let bD = dw[r]
489- let bE = dw[s]
490- let bF = parseIntValue(dw[t])
491- let bG = parseIntValue(dw[u])
481+@Callable(cZ)
482+func putOneTkn (dt,du,dv,aZ,di) = {
483+ let bq = aB()
484+ let dk = valueOrErrorMessage(addressFromString(bq[x]), "Wr st addr")
485+ let dl = valueOrErrorMessage(addressFromString(bq[y]), "Wr sl addr")
486+ let dw = valueOrErrorMessage(addressFromString(bq[z]), "Wr gwx addr")
487+ let dx = ax()
488+ let bE = dx[r]
489+ let bF = dx[s]
490+ let bG = parseIntValue(dx[t])
491+ let bH = parseIntValue(dx[u])
492492 if (if (if (if ((0 >= aZ))
493- then true
494- else (0 >= ds))
495493 then true
496494 else (0 >= dt))
497495 then true
498496 else (0 >= du))
497+ then true
498+ else (0 >= dv))
499499 then throw("Wrong params")
500- else if ((size(cY.payments) != 1))
500+ else if ((size(cZ.payments) != 1))
501501 then throw("1 pmnt expd")
502502 else {
503- let cZ = value(cY.payments[0])
504- let bz = toBase58String(value(cZ.assetId))
505- let ce = cZ.amount
506- if (if (if ((ds > ce))
503+ let da = value(cZ.payments[0])
504+ let bA = toBase58String(value(da.assetId))
505+ let cf = da.amount
506+ if (if (if ((dt > cf))
507507 then true
508- else (dt > ce))
508+ else (du > cf))
509509 then true
510- else (10000000 > ce))
510+ else (10000000 > cf))
511511 then throw("Wrong pmt amt")
512512 else {
513- let bJ = aR(bD)
514- let bL = aR(bE)
515- let dx = if ((bz == bD))
516- then $Tuple6((bJ - ce), bL, (ce - ds), dt, 0, 0)
517- else if ((bz == bE))
518- then $Tuple6(bJ, (bL - ce), 0, 0, (ce - dt), ds)
513+ let bK = aR(bE)
514+ let bM = aR(bF)
515+ let dy = if ((bA == bE))
516+ then $Tuple6((bK - cf), bM, (cf - dt), du, 0, 0)
517+ else if ((bA == bF))
518+ then $Tuple6(bK, (bM - cf), 0, 0, (cf - du), dt)
519519 else throw("wrong pmtAssetId")
520- let dy = dx._1
521- let dz = dx._2
522- let dA = dx._3
523- let dB = dx._4
524- let dC = dx._5
525- let dD = dx._6
526- let be = invoke(dv, "calcD", [toString(dy), toString(dz), au, g, h], nil)
527- let bd = invoke(dv, "calcD", [toString(toBigInt(((dy + dA) - dD))), toString(toBigInt(((dz + dC) - dB))), au, g, h], nil)
528- let dE = bc(parseBigIntValue(am(bd)), parseBigIntValue(am(be)), f)
529- if ((dE == dE))
520+ let dz = dy._1
521+ let dA = dy._2
522+ let dB = dy._3
523+ let dC = dy._4
524+ let dD = dy._5
525+ let dE = dy._6
526+ let be = invoke(dw, "calcD", [toString(dz), toString(dA), au, g, h], nil)
527+ let bd = invoke(dw, "calcD", [toString(toBigInt(((dz + dB) - dE))), toString(toBigInt(((dA + dD) - dC))), au, g, h], nil)
528+ let dF = bc(parseBigIntValue(am(bd)), parseBigIntValue(am(be)), f)
529+ if ((dF == dF))
530530 then {
531- let dl = da(toString(cY.caller), toBase58String(cY.transactionId), AttachedPayment(fromBase58String(bD), ds), AttachedPayment(fromBase58String(bE), dt), 50000000000, true, true, ce, bz)
532- let dF = dl._2
533- let dm = dl._7
534- let bV = dl._9
535- let cE = dl._10
536- let cF = dl._11
537- let dG = aW(toBigInt(dF), toBigInt(du), toBigInt(aZ))
538- let cD = toInt(dG._2)
539- let dn = invoke(at, "emit", [cD], nil)
540- if ((dn == dn))
531+ let dm = db(toString(cZ.caller), toBase58String(cZ.transactionId), AttachedPayment(fromBase58String(bE), dt), AttachedPayment(fromBase58String(bF), du), 50000000000, true, true, cf, bA)
532+ let dG = dm._2
533+ let dn = dm._7
534+ let bW = dm._9
535+ let cF = dm._10
536+ let cG = dm._11
537+ let dH = aW(toBigInt(dG), toBigInt(dv), toBigInt(aZ))
538+ let cE = toInt(dH._2)
539+ let do = invoke(at, "emit", [cE], nil)
540+ if ((do == do))
541541 then {
542- let do = if ((cE > 0))
543- then invoke(dk, "put", nil, [AttachedPayment(fromBase58String(bD), cE)])
542+ let dp = if ((cF > 0))
543+ then invoke(dl, "put", nil, [AttachedPayment(fromBase58String(bE), cF)])
544544 else nil
545- if ((do == do))
545+ if ((dp == dp))
546546 then {
547- let dp = if ((cF > 0))
548- then invoke(dk, "put", nil, [AttachedPayment(fromBase58String(bE), cF)])
547+ let dq = if ((cG > 0))
548+ then invoke(dl, "put", nil, [AttachedPayment(fromBase58String(bF), cG)])
549549 else nil
550- if ((dp == dp))
550+ if ((dq == dq))
551551 then {
552- let dq = if (dh)
552+ let dr = if (di)
553553 then {
554- let dr = invoke(dj, "stake", nil, [AttachedPayment(dm, cD)])
555- if ((dr == dr))
554+ let ds = invoke(dk, "stake", nil, [AttachedPayment(dn, cE)])
555+ if ((ds == ds))
556556 then nil
557557 else throw("Strict value is not equal to itself.")
558558 }
559- else [ScriptTransfer(cY.caller, cD, dm)]
560- (bV ++ dq)
559+ else [ScriptTransfer(cZ.caller, cE, dn)]
560+ (bW ++ dr)
561561 }
562562 else throw("Strict value is not equal to itself.")
563563 }
564564 else throw("Strict value is not equal to itself.")
565565 }
566566 else throw("Strict value is not equal to itself.")
567567 }
568568 else throw("Strict value is not equal to itself.")
569569 }
570570 }
571571 }
572572
573573
574574
575-@Callable(cY)
576-func putForFree (dH) = if ((0 > dH))
575+@Callable(cZ)
576+func putForFree (dI) = if ((0 > dI))
577577 then throw("Wrong slpg")
578- else if ((size(cY.payments) != 2))
578+ else if ((size(cZ.payments) != 2))
579579 then throw("2 pmnts expd")
580580 else {
581- let dl = da(toString(cY.caller), toBase58String(cY.transactionId), AttachedPayment(value(cY.payments[0]).assetId, value(cY.payments[0]).amount), cY.payments[1], dH, false, false, 0, "")
582- dl._9
581+ let dm = db(toString(cZ.caller), toBase58String(cZ.transactionId), AttachedPayment(value(cZ.payments[0]).assetId, value(cZ.payments[0]).amount), cZ.payments[1], dI, false, false, 0, "")
582+ dm._9
583583 }
584584
585585
586586
587-@Callable(cY)
587+@Callable(cZ)
588588 func get () = {
589- let cq = cX(cY)
590- let dI = cq._1
591- let bU = cq._2
592- let ce = cq._3
593- let bz = cq._4
594- let bV = cq._5
595- let dJ = invoke(at, "burn", [ce], [AttachedPayment(bz, ce)])
596- if ((dJ == dJ))
597- then bV
589+ let cr = cY(cZ)
590+ let dJ = cr._1
591+ let bV = cr._2
592+ let cf = cr._3
593+ let bA = cr._4
594+ let bW = cr._5
595+ let dK = invoke(at, "burn", [cf], [AttachedPayment(bA, cf)])
596+ if ((dK == dK))
597+ then bW
598598 else throw("Strict value is not equal to itself.")
599599 }
600600
601601
602602
603-@Callable(cY)
604-func getOneTkn (dK,dL,dM,dN,aZ) = if ((size(cY.payments) != 1))
603+@Callable(cZ)
604+func getOneTkn (dL,dM,dN,dO,aZ) = if ((size(cZ.payments) != 1))
605605 then throw("1 pmnt expd")
606606 else {
607- let bp = ax()
608- let bC = bp[q]
609- let bD = bp[r]
610- let bE = bp[s]
611- let bF = parseIntValue(bp[t])
612- let bG = parseIntValue(bp[u])
613- let bH = bp[p]
614- let dO = aB()
615- let dv = valueOrErrorMessage(addressFromString(dO[z]), "Wr sl addr")
616- let cZ = value(cY.payments[0])
617- let bB = cY.caller
618- let by = toBase58String(cY.transactionId)
619- let bz = value(cZ.assetId)
620- let ce = cZ.amount
607+ let bq = ax()
608+ let bD = bq[q]
609+ let bE = bq[r]
610+ let bF = bq[s]
611+ let bG = parseIntValue(bq[t])
612+ let bH = parseIntValue(bq[u])
613+ let bI = bq[p]
614+ let dP = aB()
615+ let dw = valueOrErrorMessage(addressFromString(dP[z]), "Wr sl addr")
616+ let da = value(cZ.payments[0])
617+ let bC = cZ.caller
618+ let bz = toBase58String(cZ.transactionId)
619+ let bA = value(da.assetId)
620+ let cf = da.amount
621621 if (if (if (if ((0 > aZ))
622- then true
623- else (0 > dK))
624622 then true
625623 else (0 > dL))
626624 then true
627625 else (0 > dM))
626+ then true
627+ else (0 > dN))
628628 then throw("Wrong params")
629- else if ((bC != toBase58String(bz)))
629+ else if ((bD != toBase58String(bA)))
630630 then throw("Wrong LP")
631631 else {
632- let de = bx(toBase58String(cY.transactionId), toBase58String(bz), ce, cY.caller)
633- let dP = de._1
634- let dQ = de._2
635- let bJ = aR(bD)
636- let bL = aR(bE)
637- let dR = if ((dN == bD))
638- then $Tuple7((bJ - dP), (bL - dQ), (dM - dP), dL, 0, 0, (dP + dK))
639- else if ((dN == bE))
640- then $Tuple7((bJ - dP), (bL - dQ), 0, 0, (dM - dQ), dK, (dQ + dL))
632+ let df = by(toBase58String(cZ.transactionId), toBase58String(bA), cf, cZ.caller)
633+ let dQ = df._1
634+ let dR = df._2
635+ let bK = aR(bE)
636+ let bM = aR(bF)
637+ let dS = if ((dO == bE))
638+ then $Tuple7((bK - dQ), (bM - dR), (dN - dQ), dM, 0, 0, (dQ + dL))
639+ else if ((dO == bF))
640+ then $Tuple7((bK - dQ), (bM - dR), 0, 0, (dN - dR), dL, (dR + dM))
641641 else throw("wrong outAssetId")
642- let dy = dR._1
643- let dz = dR._2
644- let dA = dR._3
645- let dB = dR._4
646- let dC = dR._5
647- let dD = dR._6
648- let dS = dR._7
649- if (if ((0 > dA))
642+ let dz = dS._1
643+ let dA = dS._2
644+ let dB = dS._3
645+ let dC = dS._4
646+ let dD = dS._5
647+ let dE = dS._6
648+ let dT = dS._7
649+ if (if ((0 > dB))
650650 then true
651- else (0 > dC))
651+ else (0 > dD))
652652 then throw("Wrong calc")
653653 else {
654- let be = invoke(dv, "calcD", [toString(dy), toString(dz), au, g, h], nil)
655- let bd = invoke(dv, "calcD", [toString(((dy - dA) + dD)), toString(((dz + dB) - dC)), au, g, h], nil)
656- let dE = bc(parseBigIntValue(am(bd)), parseBigIntValue(am(be)), f)
657- if ((dE == dE))
654+ let be = invoke(dw, "calcD", [toString(dz), toString(dA), au, g, h], nil)
655+ let bd = invoke(dw, "calcD", [toString(((dz - dB) + dE)), toString(((dA + dC) - dD)), au, g, h], nil)
656+ let dF = bc(parseBigIntValue(am(bd)), parseBigIntValue(am(be)), f)
657+ if ((dF == dF))
658658 then {
659- let dT = aW(toBigInt(dS), toBigInt(dM), toBigInt(aZ))
660- if ((dT == dT))
659+ let dU = aW(toBigInt(dT), toBigInt(dN), toBigInt(aZ))
660+ if ((dU == dU))
661661 then {
662- let dU = if ((dN == bD))
663- then $Tuple2(toInt(dT._2), 0)
664- else $Tuple2(0, toInt(dT._2))
665- let dV = dU._1
666- let dW = dU._2
667- let bN = aT(A(bL, bG), A(bJ, bF))
668- let bO = D(bN, a)
669- let bV = [ScriptTransfer(bB, (dV + dW), if ((dN == "WAVES"))
662+ let dV = if ((dO == bE))
663+ then $Tuple2(toInt(dU._2), 0)
664+ else $Tuple2(0, toInt(dU._2))
665+ let dW = dV._1
666+ let dX = dV._2
667+ let bO = aT(A(bM, bH), A(bK, bG))
668+ let bP = D(bO, a)
669+ let bW = [ScriptTransfer(bC, (dW + dX), if ((dO == "WAVES"))
670670 then unit
671- else fromBase58String(dN)), StringEntry(U(toString(bB), by), aN(dV, dW, ce, bO, height, lastBlock.timestamp)), IntegerEntry(N(), bO), IntegerEntry(O(height, lastBlock.timestamp), bO)]
672- if ((bV == bV))
671+ else fromBase58String(dO)), StringEntry(U(toString(bC), bz), aN(dW, dX, cf, bP, height, lastBlock.timestamp)), IntegerEntry(N(), bP), IntegerEntry(O(height, lastBlock.timestamp), bP)]
672+ if ((bW == bW))
673673 then {
674- let dX = invoke(at, "burn", [ce], [AttachedPayment(bz, ce)])
675- if ((dX == dX))
676- then bV
674+ let dY = invoke(at, "burn", [cf], [AttachedPayment(bA, cf)])
675+ if ((dY == dY))
676+ then bW
677677 else throw("Strict value is not equal to itself.")
678678 }
679679 else throw("Strict value is not equal to itself.")
680680 }
681681 else throw("Strict value is not equal to itself.")
682682 }
683683 else throw("Strict value is not equal to itself.")
684684 }
685685 }
686686 }
687687
688688
689689
690-@Callable(cY)
691-func getNoLess (dY,dZ) = {
692- let cq = cX(cY)
693- let bT = cq._1
694- let bU = cq._2
695- let ce = cq._3
696- let bz = cq._4
697- let bV = cq._5
698- if ((dY > bT))
699- then throw(((("Failed: " + toString(bT)) + " < ") + toString(dY)))
700- else if ((dZ > bU))
701- then throw(((("Failed: " + toString(bU)) + " < ") + toString(dZ)))
690+@Callable(cZ)
691+func getNoLess (dZ,ea) = {
692+ let cr = cY(cZ)
693+ let bU = cr._1
694+ let bV = cr._2
695+ let cf = cr._3
696+ let bA = cr._4
697+ let bW = cr._5
698+ if ((dZ > bU))
699+ then throw(((("Failed: " + toString(bU)) + " < ") + toString(dZ)))
700+ else if ((ea > bV))
701+ then throw(((("Failed: " + toString(bV)) + " < ") + toString(ea)))
702702 else {
703- let dJ = invoke(at, "burn", [ce], [AttachedPayment(bz, ce)])
704- if ((dJ == dJ))
705- then bV
703+ let dK = invoke(at, "burn", [cf], [AttachedPayment(bA, cf)])
704+ if ((dK == dK))
705+ then bW
706706 else throw("Strict value is not equal to itself.")
707707 }
708708 }
709709
710710
711711
712-@Callable(cY)
713-func unstakeAndGet (ea) = {
714- let eb = if ((size(cY.payments) != 0))
712+@Callable(cZ)
713+func unstakeAndGet (eb) = {
714+ let ec = if ((size(cZ.payments) != 0))
715715 then throw("No pmnts expd")
716716 else true
717- if ((eb == eb))
717+ if ((ec == ec))
718718 then {
719- let bp = ax()
720- let ec = aB()
721- let dm = fromBase58String(bp[q])
722- let ed = valueOrErrorMessage(addressFromString(ec[x]), "Wr st addr")
723- let ee = invoke(ed, "unstake", [toBase58String(dm), ea], nil)
724- if ((ee == ee))
719+ let bq = ax()
720+ let ed = aB()
721+ let dn = fromBase58String(bq[q])
722+ let ee = valueOrErrorMessage(addressFromString(ed[x]), "Wr st addr")
723+ let ef = invoke(ee, "unstake", [toBase58String(dn), eb], nil)
724+ if ((ef == ef))
725725 then {
726- let de = bx(toBase58String(cY.transactionId), toBase58String(dm), ea, cY.caller)
727- let bH = parseIntValue(de._9)
728- let bV = de._10
729- let ef = if (if (av())
726+ let df = by(toBase58String(cZ.transactionId), toBase58String(dn), eb, cZ.caller)
727+ let bI = parseIntValue(df._9)
728+ let bW = df._10
729+ let eg = if (if (av())
730730 then true
731- else (bH == n))
732- then throw(("Blocked: " + toString(bH)))
731+ else (bI == n))
732+ then throw(("Blocked: " + toString(bI)))
733733 else true
734- if ((ef == ef))
734+ if ((eg == eg))
735735 then {
736- let dJ = invoke(at, "burn", [ea], [AttachedPayment(dm, ea)])
737- if ((dJ == dJ))
738- then bV
736+ let dK = invoke(at, "burn", [eb], [AttachedPayment(dn, eb)])
737+ if ((dK == dK))
738+ then bW
739739 else throw("Strict value is not equal to itself.")
740740 }
741741 else throw("Strict value is not equal to itself.")
742742 }
743743 else throw("Strict value is not equal to itself.")
744744 }
745745 else throw("Strict value is not equal to itself.")
746746 }
747747
748748
749749
750-@Callable(cY)
751-func activate (eg,eh) = if ((toString(cY.caller) != toString(at)))
750+@Callable(cZ)
751+func activate (eh,ei) = if ((toString(cZ.caller) != toString(at)))
752752 then throw("denied")
753- else $Tuple2([StringEntry(V(), eg), StringEntry(W(), eh)], "success")
753+ else $Tuple2([StringEntry(V(), eh), StringEntry(W(), ei)], "success")
754754
755755
756756
757-@Callable(cY)
757+@Callable(cZ)
758758 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, ax())
759759
760760
761761
762-@Callable(cY)
762+@Callable(cZ)
763763 func getAccBalanceWrapperREADONLY (aS) = $Tuple2(nil, aR(aS))
764764
765765
766766
767-@Callable(cY)
768-func calcPricesWrapperREADONLY (bj,bk,bo) = {
769- let ei = bn(bj, bk, bo)
770- $Tuple2(nil, [toString(ei[0]), toString(ei[1]), toString(ei[2])])
767+@Callable(cZ)
768+func calcPricesWrapperREADONLY (bk,bl,bp) = {
769+ let ej = bo(bk, bl, bp)
770+ $Tuple2(nil, [toString(ej[0]), toString(ej[1]), toString(ej[2])])
771771 }
772772
773773
774774
775-@Callable(cY)
775+@Callable(cZ)
776776 func fromX18WrapperREADONLY (E,F) = $Tuple2(nil, D(parseBigIntValue(E), F))
777777
778778
779779
780-@Callable(cY)
780+@Callable(cZ)
781781 func toX18WrapperREADONLY (B,C) = $Tuple2(nil, toString(A(B, C)))
782782
783783
784784
785-@Callable(cY)
785+@Callable(cZ)
786786 func calcPriceBigIntWrapperREADONLY (aU,aV) = $Tuple2(nil, toString(aT(parseBigIntValue(aU), parseBigIntValue(aV))))
787787
788788
789789
790-@Callable(cY)
791-func estimatePutOperationWrapperREADONLY (by,aZ,bX,bY,bZ,ca,ej,cb,cc) = $Tuple2(nil, bW(by, aZ, bX, bY, bZ, ca, ej, cb, cc, false, 0, ""))
790+@Callable(cZ)
791+func estimatePutOperationWrapperREADONLY (bz,aZ,bY,bZ,ca,cb,ek,cc,cd) = $Tuple2(nil, bX(bz, aZ, bY, bZ, ca, cb, ek, cc, cd, false, 0, ""))
792792
793793
794794
795-@Callable(cY)
796-func estimateGetOperationWrapperREADONLY (by,ek,bA,ej) = {
797- let cq = bx(by, ek, bA, addressFromStringValue(ej))
798- $Tuple2(nil, $Tuple10(cq._1, cq._2, cq._3, cq._4, cq._5, cq._6, cq._7, toString(cq._8), cq._9, cq._10))
795+@Callable(cZ)
796+func estimateGetOperationWrapperREADONLY (bz,el,bB,ek) = {
797+ let cr = by(bz, el, bB, addressFromStringValue(ek))
798+ $Tuple2(nil, $Tuple10(cr._1, cr._2, cr._3, cr._4, cr._5, cr._6, cr._7, toString(cr._8), cr._9, cr._10))
799799 }
800800
801801
802-@Verifier(el)
803-func em () = {
804- let an = el
802+@Verifier(em)
803+func en () = {
804+ let an = em
805805 if ($isInstanceOf(an, "Order"))
806806 then {
807- let cL = an
808- let en = aw()
809- let aj = cK(cL)
810- let eo = sigVerify(cL.bodyBytes, cL.proofs[0], cL.senderPublicKey)
811- let ep = sigVerify(cL.bodyBytes, cL.proofs[1], en)
807+ let cM = an
808+ let eo = aw()
809+ let aj = cL(cM)
810+ let ep = sigVerify(cM.bodyBytes, cM.proofs[0], cM.senderPublicKey)
811+ let eq = sigVerify(cM.bodyBytes, cM.proofs[1], eo)
812812 if (if (if (aj)
813- then eo
814- else false)
815813 then ep
816814 else false)
815+ then eq
816+ else false)
817817 then true
818- else ai(aj, eo, ep)
818+ else ai(aj, ep, eq)
819819 }
820820 else {
821- let eq = valueOrElse(getString(this, M()), j)
822- if ((eq == j))
823- then sigVerify(el.bodyBytes, el.proofs[0], el.senderPublicKey)
824- else sigVerify(el.bodyBytes, el.proofs[0], fromBase58String(eq))
821+ let er = valueOrElse(getString(this, M()), j)
822+ if ((er == j))
823+ then sigVerify(em.bodyBytes, em.proofs[0], em.senderPublicKey)
824+ else sigVerify(em.bodyBytes, em.proofs[0], fromBase58String(er))
825825 }
826826 }
827827

github/deemru/w8io/169f3d6 
257.68 ms