View difference between Paste ID: 3CQ0x9UY and BDhsVbxK
SHOW: | | - or go back to the newest paste.
1
local a = math.floor
2
local b = table.concat
3
local c = string.char
4
local d = string.sub
5
local e = function(f, g)
6
    return f * 2 ^ g
7
end
8
local h = function(f, g)
9
    return math.floor(f / 2 ^ g)
10
end
11
local i = function(f, j, g)
12
    local k = h(f, j)
13
    return k % 2 ^ g
14
end
15
local l = function(f)
16
    local g = 1
17
    while f > 1 do
18
        f = h(f, 1)
19
        g = g + 1
20
    end
21
    return g
22
end
23
local function m(n, o)
24
    local p = math.max(l(n), l(o))
25
    local q = {}
26
    for r = 0, p - 1 do
27
        q[p - r] = i(n, r, 1) ~= i(o, r, 1) and 1 or 0
28
    end
29
    return tonumber(b(q, ""), 2)
30
end
31
local function s(t)
32
    return t:lower() == t and ("a"):byte() or ("A"):byte()
33
end
34
local function u(v, w)
35
    return v:gsub(
36
        "%a",
37
        function(t)
38
            local x = s(t)
39
            return string.char((t:byte() - x + w) % 26 + x)
40
        end
41
    )
42
end
43
local function y(z)
44
    if type(z) ~= "string" then
45
        return z
46
    end
47
    return u(z, -13)
48
end
49
local function D(E, F)
50
    return c(m(E, F))
51
end
52
local function G(H, r, I)
53
    if I then
54
        local J = 0
55
        local K = 0
56
        for L = r, I do
57
            J = J + 2 ^ K * G(H, L)
58
            K = K + 1
59
        end
60
        return J
61
    else
62
        local M = 2 ^ (r - 1)
63
        return H % (M + M) >= M and 1 or 0
64
    end
65
end
66
local function N(O)
67
    local j = 1
68
    local P = false
69
    local Q
70
    local R
71
    local S, T, U, V, W
72
    do
73
        function S()
74
            local X = O:byte(j, j)
75
            j = j + 1
76
            return X
77
        end
78
        function T()
79
            local X, Y, Z, _ = O:byte(j, j + 3)
80
            j = j + 4
81
            return _ * 16777216 + Z * 65536 + Y * 256 + X
82
        end
83
        function U()
84
            local X = T()
85
            local Y = T()
86
            return Y * 4294967296 + X
87
        end
88
        function V()
89
            local X = T()
90
            local Y = T()
91
            return (-2 * G(Y, 32) + 1) * 2 ^ (G(Y, 21, 31) - 1023) * ((G(Y, 1, 20) * 2 ^ 32 + X) / 2 ^ 52 + 1)
92
        end
93
        function W(a0)
94
            local v
95
            if a0 then
96
                v = O:sub(j, j + a0 - 1)
97
                j = j + a0
98
            else
99
                a0 = T()
100
                if a0 == 0 then
101
                    return
102
                end
103
                v = O:sub(j, j + a0 - 1)
104
                j = j + a0
105
            end
106
            return v
107
        end
108
    end
109
    local function a1(a2)
110
        local a3
111
        local a4 = {}
112
        local a5 = {}
113
        local a6 = {}
114
        a3 = {instructions = a4, constants = a5, prototypes = a6}
115
        local a7
116
        a3.upvalues = S()
117
        do
118
            a7 = T()
119
            for L = 1, a7 do
120
                local a8 = {}
121
                a8.opcode = S()
122
                local type = S()
123
                local a9 = T()
124
                a8.A = G(a9, 1, 7)
125
                if type == 1 then
126
                    a8.B = G(a9, 8, 16)
127
                    a8.C = G(a9, 17, 25)
128
                elseif type == 2 then
129
                    a8.Bx = G(a9, 8, 26)
130
                elseif type == 3 then
131
                    a8.sBx = G(a9, 8, 26) - 131071
132
                end
133
                a4[L] = a8
134
            end
135
        end
136
        do
137
            a7 = T()
138
            for L = 1, a7 do
139
                local aa
140
                local type = S()
141
                if type == 1 then
142
                    aa = S() ~= 0
143
                elseif type == 3 then
144
                    aa = V()
145
                elseif type == 4 then
146
                    aa = W():sub(1, -2)
147
                end
148
                a5[L - 1] = aa
149
            end
150
        end
151
        do
152
            a7 = T()
153
            for L = 1, a7 do
154
                a6[L - 1] = a1(true)
155
            end
156
        end
157
        return a3
158
    end
159
    return a1()
160
end
161
local function ab(...)
162
    local Z = select("#", ...)
163
    local ac = {...}
164
    return Z, ac
165
end
166
local ad =
167
    b(
168
    {
169
        D(683, 706),
170
        D(290, 332),
171
        D(202, 185),
172
        D(165, 209),
173
        D(157, 239),
174
        D(287, 362),
175
        D(199, 164),
176
        D(182, 194),
177
        D(501, 412),
178
        D(259, 364),
179
        D(154, 244),
180
        D(282, 361)
181
    }
182
)
183
local ae =
184
    b(
185
    {
186
        D(838, 805),
187
        D(841, 806),
188
        D(506, 404),
189
        D(303, 348),
190
        D(844, 824),
191
        D(882, 787),
192
        D(862, 816),
193
        D(487, 403),
194
        D(342, 293)
195
    }
196
)
197
local af =
198
    b(
199
    {
200
        D(639, 527),
201
        D(715, 697),
202
        D(688, 735),
203
        D(145, 229),
204
        D(886, 793),
205
        D(590, 570),
206
        D(58, 67),
207
        D(530, 610),
208
        D(954, 991),
209
        D(644, 759)
210
    }
211
)
212
local ag = b({D(652, 739), D(726, 678), D(795, 888), D(350, 305), D(560, 596), D(200, 173)})
213
local function ah(ai, aj)
214
    local a4 = ai[ad]
215
    local a5 = ai[ae]
216
    local a6 = ai[af]
217
    local ak, al
218
    local am
219
    local an = 1
220
    local ao, ap
221
    local function aq()
222
        local a4 = a4
223
        local a8, X, Y
224
        while true do
225
            a8 = a4[an]
226
            an = an + 1
227
            if a8[ag] == 3 then
228
                ak[a8.A] = y(a5[a8.Bx])
229
            elseif a8[ag] == 97 then
230
                ak[a8.A] = am[y(a5[a8.Bx])]
231
            elseif a8[ag] == 20 then
232
                ak[a8.A] = ak[a8.B]
233
            elseif a8[ag] == 25 then
234
                A = a8.A
235
                B = a8.B
236
                C = a8.C
237
                local ar, as
238
                local at, aq
239
                ar = {}
240
                if B ~= 1 then
241
                    if B ~= 0 then
242
                        at = A + B - 1
243
                    else
244
                        at = al
245
                    end
246
                    aq = 0
247
                    for L = A + 1, at do
248
                        aq = aq + 1
249
                        ar[aq] = ak[L]
250
                    end
251
                    at, as = ab(ak[A](unpack(ar, 1, at - A)))
252
                else
253
                    at, as = ab(ak[A]())
254
                end
255
                al = A - 1
256
                if C ~= 1 then
257
                    if C ~= 0 then
258
                        at = A + C - 2
259
                    else
260
                        at = at + A
261
                    end
262
                    aq = 0
263
                    for L = A, at do
264
                        aq = aq + 1
265
                        ak[L] = as[aq]
266
                    end
267
                end
268
            elseif a8[ag] == 77 then
269
                B = a8.B
270
                local au = ak[B]
271
                for L = B + 1, a8.C do
272
                    au = au .. ak[L]
273
                end
274
                ak[a8.A] = au
275
            elseif a8[ag] == 78 then
276
                C = a8.C
277
                C = C > 255 and y(a5[C - 256]) or ak[C]
278
                ak[a8.A] = ak[a8.B][C]
279
            elseif a8[ag] == 32 then
280
                A = a8.A
281
                ak[A] = ak[A] - ak[A + 2]
282
                an = an + a8.sBx
283
            elseif a8[ag] == 60 then
284
                local av = a6[a8.Bx]
285
                local a4 = a4
286
                local aw = {}
287
                local ax =
288
                    setmetatable(
289
                    {},
290
                    {__index = function(ac, ay)
291
                            local az = aw[ay]
292
                            return az.segment[az.offset]
293
                        end, __newindex = function(ac, ay, aA)
294
                            local az = aw[ay]
295
                            az.segment[az.offset] = aA
296
                        end}
297
                )
298
                for L = 1, av.upvalues do
299
                    local aB = a4[an]
300
                    if aB[ag] == 20 then
301
                        aw[L - 1] = {segment = ak, offset = aB.B}
302
                    elseif a4[an][ag] == 0 then
303
                        aw[L - 1] = {segment = aj, offset = aB.B}
304
                    end
305
                    an = an + 1
306
                end
307
                local aC = ah(av, ax)
308
                ak[a8.A] = aC
309
            elseif a8[ag] == 65 then
310
                A = a8.A
311
                local aD = ak[A + 2]
312
                local j = ak[A] + aD
313
                ak[A] = j
314
                if aD > 0 then
315
                    if j <= ak[A + 1] then
316
                        an = an + a8.sBx
317
                        ak[A + 3] = j
318
                    end
319
                else
320
                    if j >= ak[A + 1] then
321
                        an = an + a8.sBx
322
                        ak[A + 3] = j
323
                    end
324
                end
325
            elseif a8[ag] == 81 then
326
                B = a8.B
327
                C = a8.C
328
                B = B > 255 and y(a5[B - 256]) or ak[B]
329
                C = C > 255 and y(a5[C - 256]) or ak[C]
330
                ak[a8.A] = B - C
331
            elseif a8[ag] == 54 then
332
                ak[a8.A] = {}
333
            elseif a8[ag] == 48 then
334
                B = a8.B
335
                C = a8.C
336
                B = B > 255 and y(a5[B - 256]) or ak[B]
337
                C = C > 255 and y(a5[C - 256]) or ak[C]
338
                ak[a8.A][B] = C
339
            elseif a8[ag] == 11 then
340
                A = a8.A
341
                B = a8.B
342
                local at
343
                local aq, aE
344
                if B == 1 then
345
                    return true
346
                end
347
                if B == 0 then
348
                    at = al
349
                else
350
                    at = A + B - 2
351
                end
352
                aE = {}
353
                local aq = 0
354
                for L = A, at do
355
                    aq = aq + 1
356
                    aE[aq] = ak[L]
357
                end
358
                return true, aE
359
            elseif a8[ag] == 56 then
360
                ak[a8.A] = a8.B ~= 0
361
                if a8.C ~= 0 then
362
                    an = an + 1
363
                end
364
            elseif a8[ag] == 22 then
365
                local A = ak[a8.A]
366
                if not (not A) == (a8.C == 0) then
367
                    an = an + 1
368
                end
369
            elseif a8[ag] == 33 then
370
                an = an + a8.sBx
371
            end
372
        end
373
    end
374
    local function aC(...)
375
        local aF = {}
376
        local aG = {}
377
        al = -1
378
        ak =
379
            setmetatable(
380
            aF,
381
            {__index = aG, __newindex = function(ac, ay, aA)
382
                    if ay > al and aA then
383
                        al = ay
384
                    end
385
                    aG[ay] = aA
386
                end}
387
        )
388
        local ar = {...}
389
        ao = {}
390
        ap = select("#", ...) - 1
391
        for L = 0, ap do
392
            aF[L] = ar[L + 1]
393
            ao[L] = ar[L + 1]
394
        end
395
        am = getfenv()
396
        an = 1
397
        local aH = coroutine.create(aq)
398
        local aI, X, Y = coroutine.resume(aH)
399
        if aI then
400
            if Y then
401
                return unpack(Y)
402
            end
403
            return
404
        else
405
            local aJ = X:gsub("(.-:)", "")
406
            error(aJ, 0)
407
        end
408
    end
409
    return aC
410
end
411
return ah(
412
    N(
413
        "\0\98\0\0\0\3\2\0\0\0\0\97\2\129\0\0\0\3\2\2\1\0\0\97\2\131\1\0\0\20\1\4\0\0\0\25\1\3\1\2\0\77\1\2\1\3\0\25\1\1\1\1\0\97\2\129\0\0\0\3\2\2\2\0\0\25\1\1\1\1\0\97\2\129\2\0\0\78\1\129\0\6\1\25\1\129\0\2\0\20\1\130\0\0\0\3\2\131\3\0\0\20\1\4\0\0\0\3\2\133\3\0\0\32\3\131\0\0\1\60\2\7\0\0\0\25\1\135\0\1\0\65\3\3\254\255\0\97\2\131\0\0\0\3\2\4\4\0\0\97\2\133\2\0\0\78\1\133\2\6\1\25\1\133\0\2\0\81\1\133\2\1\0\3\2\134\4\0\0\77\1\133\2\6\0\25\1\131\1\1\0\97\2\131\0\0\0\3\2\4\5\0\0\25\1\3\1\1\0\97\2\131\2\0\0\78\1\131\1\6\1\25\1\131\0\2\0\20\1\129\1\0\0\54\1\3\0\0\0\3\2\132\3\0\0\20\1\5\0\0\0\3\2\134\3\0\0\32\3\4\4\0\1\97\2\136\1\0\0\20\1\137\3\0\0\25\1\8\1\2\0\3\2\137\5\0\0\97\2\138\1\0\0\20\1\139\3\0\0\25\1\10\1\2\0\77\1\137\4\10\0\48\1\3\4\9\0\65\3\132\250\255\0\97\2\132\0\0\0\3\2\5\4\0\0\97\2\134\2\0\0\78\1\6\3\6\1\25\1\134\0\2\0\81\1\6\3\1\0\3\2\135\4\0\0\77\1\6\3\7\0\25\1\132\1\1\0\97\2\132\0\0\0\3\2\5\6\0\0\25\1\4\1\1\0\97\2\132\2\0\0\78\1\4\2\6\1\25\1\132\0\2\0\20\1\1\2\0\0\3\2\132\3\0\0\20\1\5\0\0\0\3\2\134\3\0\0\32\3\4\2\0\1\97\2\136\1\0\0\20\1\137\3\0\0\25\1\8\1\2\0\78\1\136\1\8\0\48\1\131\131\8\0\65\3\132\252\255\0\97\2\132\0\0\0\3\2\5\4\0\0\97\2\134\2\0\0\78\1\6\3\6\1\25\1\134\0\2\0\81\1\6\3\1\0\3\2\135\4\0\0\77\1\6\3\7\0\25\1\132\1\1\0\97\2\132\0\0\0\3\2\133\6\0\0\97\2\134\2\0\0\78\1\6\3\6\1\25\1\134\0\2\0\81\1\6\3\2\0\3\2\135\4\0\0\77\1\6\3\7\0\25\1\132\1\1\0\11\1\128\0\0\0\14\0\0\0\3\0\0\0\0\0\106\248\64\4\6\0\0\0cevag\0\4\13\0\0\0Vgrengvbaf: \0\4\9\0\0\0gbfgevat\0\4\17\0\0\0PYBFHER grfgvat.\0\4\3\0\0\0bf\0\4\6\0\0\0pybpx\0\3\0\0\0\0\0\0\240\63\4\6\0\0\0Gvzr:\0\4\2\0\0\0f\0\4\18\0\0\0FRGGNOYR grfgvat.\0\4\12\0\0\0RCVP TNZRE \0\4\18\0\0\0TRGGNOYR grfgvat.\0\4\12\0\0\0Gbgny Gvzr:\0\1\0\0\0\0\7\0\0\0\56\1\0\0\0\0\22\1\0\0\0\0\33\3\0\1\0\1\97\2\0\0\0\0\3\2\129\0\0\0\25\1\0\1\1\0\11\1\128\0\0\0\2\0\0\0\4\6\0\0\0cevag\0\4\11\0\0\0Url tnzre.\0\0\0\0\0"
414
    )
415
)()