@dashkite/joy 0.3.15 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,452 +1,367 @@
1
- var _,
2
- apply,
3
- arity,
4
- binary,
5
- bind,
6
- chain,
7
- compose,
8
- curry,
9
- detach,
10
- flip,
11
- flow,
12
- flowWith,
13
- identity,
14
- isPromise,
15
- memoize,
16
- once,
17
- partial,
18
- pipe,
19
- pipeWith,
20
- proxy,
21
- rtee,
22
- send,
23
- spread,
24
- stack,
25
- substitute,
26
- tee,
27
- ternary,
28
- unary,
29
- wait,
30
- wrap,
31
- splice = [].splice;
32
-
33
- identity = function (x) {
34
- return x;
35
- };
36
-
37
- wrap = function (x) {
38
- return function () {
1
+ var _, apply, arity, binary, bind, chain, compose, curry, detach, flip, flow, identity, isPromise, map, memoize, once, partial, pipe, proxy, rtee, send, spread, stack, substitute, tee, ternary, unary, wait, wrap, splice = [].splice;
2
+ identity = function(x) {
39
3
  return x;
40
- };
41
- }; // Based on _arity from Rambda:
42
- // https://github.com/ramda/ramda/blob/v0.26.1/source/internal/_arity.js
43
-
44
-
45
- arity = function (N, f) {
46
- switch (N) {
47
- case 0:
48
- return function () {
49
- for (var _len = arguments.length, ax = new Array(_len), _key = 0; _key < _len; _key++) {
50
- ax[_key] = arguments[_key];
51
- }
52
-
53
- return f.apply(this, ax);
54
- };
55
-
56
- case 1:
57
- return function (a0) {
58
- return f.apply(this, arguments);
59
- };
60
-
61
- case 2:
62
- return function (a0, a1) {
63
- return f.apply(this, arguments);
64
- };
65
-
66
- case 3:
67
- return function (a0, a1, a2) {
68
- return f.apply(this, arguments);
69
- };
70
-
71
- case 4:
72
- return function (a0, a1, a2, a3) {
73
- return f.apply(this, arguments);
74
- };
75
-
76
- case 5:
77
- return function (a0, a1, a2, a3, a4) {
78
- return f.apply(this, arguments);
79
- };
80
-
81
- case 6:
82
- return function (a0, a1, a2, a3, a4, a5) {
83
- return f.apply(this, arguments);
84
- };
85
-
86
- case 7:
87
- return function (a0, a1, a2, a3, a4, a5, a6) {
88
- return f.apply(this, arguments);
89
- };
90
-
91
- case 8:
92
- return function (a0, a1, a2, a3, a4, a5, a6, a7) {
93
- return f.apply(this, arguments);
94
- };
95
-
96
- case 9:
97
- return function (a0, a1, a2, a3, a4, a5, a6, a7, a8) {
98
- return f.apply(this, arguments);
99
- };
100
-
101
- case 10:
102
- return function (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) {
103
- return f.apply(this, arguments);
104
- };
105
-
106
- default:
107
- throw new Error("First argument to arity must be an integer between 0 and 10, inclusive.");
108
- }
109
4
  };
110
-
111
- unary = function (f) {
112
- return arity(1, f);
5
+ wrap = function(x) {
6
+ return function() {
7
+ return x;
8
+ };
113
9
  };
114
-
115
- binary = function (f) {
116
- return arity(2, f);
10
+ // Based on _arity from Rambda:
11
+ // https://github.com/ramda/ramda/blob/v0.26.1/source/internal/_arity.js
12
+ arity = function(N, f) {
13
+ switch(N){
14
+ case 0:
15
+ return function(...ax) {
16
+ return f.apply(this, ax);
17
+ };
18
+ case 1:
19
+ return function(a0) {
20
+ return f.apply(this, arguments);
21
+ };
22
+ case 2:
23
+ return function(a0, a1) {
24
+ return f.apply(this, arguments);
25
+ };
26
+ case 3:
27
+ return function(a0, a1, a2) {
28
+ return f.apply(this, arguments);
29
+ };
30
+ case 4:
31
+ return function(a0, a1, a2, a3) {
32
+ return f.apply(this, arguments);
33
+ };
34
+ case 5:
35
+ return function(a0, a1, a2, a3, a4) {
36
+ return f.apply(this, arguments);
37
+ };
38
+ case 6:
39
+ return function(a0, a1, a2, a3, a4, a5) {
40
+ return f.apply(this, arguments);
41
+ };
42
+ case 7:
43
+ return function(a0, a1, a2, a3, a4, a5, a6) {
44
+ return f.apply(this, arguments);
45
+ };
46
+ case 8:
47
+ return function(a0, a1, a2, a3, a4, a5, a6, a7) {
48
+ return f.apply(this, arguments);
49
+ };
50
+ case 9:
51
+ return function(a0, a1, a2, a3, a4, a5, a6, a7, a8) {
52
+ return f.apply(this, arguments);
53
+ };
54
+ case 10:
55
+ return function(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) {
56
+ return f.apply(this, arguments);
57
+ };
58
+ default:
59
+ throw new Error("First argument to arity must be an integer between 0 and 10, inclusive.");
60
+ }
117
61
  };
118
-
119
- ternary = function (f) {
120
- return arity(3, f);
62
+ unary = function(f) {
63
+ return arity(1, f);
121
64
  };
122
-
123
- flip = function (f) {
124
- switch (f.length) {
125
- case 0:
126
- return f;
127
-
128
- case 1:
129
- return function (a0) {
130
- return f.call(this, a0);
131
- };
132
-
133
- case 2:
134
- return function (a0, a1) {
135
- return f.call(this, a1, a0);
136
- };
137
-
138
- case 3:
139
- return function (a0, a1, a2) {
140
- return f.call(this, a2, a1, a0);
141
- };
142
-
143
- case 4:
144
- return function (a0, a1, a2, a3) {
145
- return f.call(this, a3, a2, a1, a0);
146
- };
147
-
148
- case 5:
149
- return function (a0, a1, a2, a3, a4) {
150
- return f.call(this, a4, a3, a2, a1, a0);
151
- };
152
-
153
- case 6:
154
- return function (a0, a1, a2, a3, a4, a5) {
155
- return f.call(this, a5, a4, a3, a2, a1, a0);
156
- };
157
-
158
- case 7:
159
- return function (a0, a1, a2, a3, a4, a5, a6) {
160
- return f.call(this, a6, a4, a3, a2, a1, a0);
161
- };
162
-
163
- case 8:
164
- return function (a0, a1, a2, a3, a4, a5, a6, a7) {
165
- return f.call(this, a7, a6, a5, a4, a3, a2, a1, a0);
166
- };
167
-
168
- case 9:
169
- return function (a0, a1, a2, a3, a4, a5, a6, a7, a8) {
170
- return f.call(this, a8, a7, a6, a5, a4, a3, a2, a1, a0);
171
- };
172
-
173
- case 10:
174
- return function (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) {
175
- return f.call(this, a9, a8, a7, a6, a5, a4, a3, a2, a1, a0);
176
- };
177
-
178
- default:
179
- return function () {
180
- for (var _len2 = arguments.length, ax = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
181
- ax[_key2] = arguments[_key2];
182
- }
183
-
184
- return f.apply(this, ax.reverse());
185
- };
186
- }
65
+ binary = function(f) {
66
+ return arity(2, f);
187
67
  };
188
-
189
- curry = function (f) {
190
- return arity(f.length, function () {
191
- for (var _len3 = arguments.length, ax = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
192
- ax[_key3] = arguments[_key3];
193
- }
194
-
195
- var length, self;
196
- self = this;
197
-
198
- if (ax.length >= f.length) {
199
- return f.apply(self, ax);
200
- } else {
201
- length = f.length - ax.length;
202
-
203
- if (length === 1) {
204
- return function (x) {
205
- return f.apply(self, [...ax, x]);
206
- };
207
- } else {
208
- return curry(arity(length, function () {
209
- for (var _len4 = arguments.length, bx = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
210
- bx[_key4] = arguments[_key4];
211
- }
212
-
213
- return f.apply(self, [...ax, ...bx]);
214
- }));
215
- }
68
+ ternary = function(f) {
69
+ return arity(3, f);
70
+ };
71
+ flip = function(f) {
72
+ switch(f.length){
73
+ case 0:
74
+ return f;
75
+ case 1:
76
+ return function(a0) {
77
+ return f.call(this, a0);
78
+ };
79
+ case 2:
80
+ return function(a0, a1) {
81
+ return f.call(this, a1, a0);
82
+ };
83
+ case 3:
84
+ return function(a0, a1, a2) {
85
+ return f.call(this, a2, a1, a0);
86
+ };
87
+ case 4:
88
+ return function(a0, a1, a2, a3) {
89
+ return f.call(this, a3, a2, a1, a0);
90
+ };
91
+ case 5:
92
+ return function(a0, a1, a2, a3, a4) {
93
+ return f.call(this, a4, a3, a2, a1, a0);
94
+ };
95
+ case 6:
96
+ return function(a0, a1, a2, a3, a4, a5) {
97
+ return f.call(this, a5, a4, a3, a2, a1, a0);
98
+ };
99
+ case 7:
100
+ return function(a0, a1, a2, a3, a4, a5, a6) {
101
+ return f.call(this, a6, a4, a3, a2, a1, a0);
102
+ };
103
+ case 8:
104
+ return function(a0, a1, a2, a3, a4, a5, a6, a7) {
105
+ return f.call(this, a7, a6, a5, a4, a3, a2, a1, a0);
106
+ };
107
+ case 9:
108
+ return function(a0, a1, a2, a3, a4, a5, a6, a7, a8) {
109
+ return f.call(this, a8, a7, a6, a5, a4, a3, a2, a1, a0);
110
+ };
111
+ case 10:
112
+ return function(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) {
113
+ return f.call(this, a9, a8, a7, a6, a5, a4, a3, a2, a1, a0);
114
+ };
115
+ default:
116
+ return function(...ax) {
117
+ return f.apply(this, ax.reverse());
118
+ };
216
119
  }
217
- });
218
120
  };
219
-
220
- _ = {};
221
- substitute = curry(function (ax, bx) {
222
- var a, i, j, len, results;
223
- i = 0;
224
- results = [];
225
-
226
- for (j = 0, len = ax.length; j < len; j++) {
227
- a = ax[j];
228
-
229
- if (a === _) {
230
- results.push(bx[i++]);
121
+ curry = function(f) {
122
+ if (f.length > 1) {
123
+ return arity(f.length, function(...ax) {
124
+ var length, self;
125
+ self = this;
126
+ if (ax.length >= f.length) {
127
+ return f.apply(self, ax);
128
+ } else {
129
+ length = f.length - ax.length;
130
+ if (length === 1) {
131
+ return function(x) {
132
+ return f.apply(self, [
133
+ ...ax,
134
+ x
135
+ ]);
136
+ };
137
+ } else {
138
+ return curry(arity(length, function(...bx) {
139
+ return f.apply(self, [
140
+ ...ax,
141
+ ...bx
142
+ ]);
143
+ }));
144
+ }
145
+ }
146
+ });
231
147
  } else {
232
- results.push(a);
233
- }
234
- }
235
-
236
- return results;
237
- });
238
-
239
- partial = function (f, ax) {
240
- var a, j, len, n;
241
- n = 0;
242
-
243
- for (j = 0, len = ax.length; j < len; j++) {
244
- a = ax[j];
245
-
246
- if (a === _) {
247
- n++;
148
+ return f;
248
149
  }
249
- }
250
-
251
- return arity(n, function () {
252
- for (var _len5 = arguments.length, bx = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
253
- bx[_key5] = arguments[_key5];
254
- }
255
-
256
- return f(...substitute(ax, bx));
257
- });
258
150
  };
259
-
260
- spread = function (f) {
261
- return function (ax) {
262
- return f(...ax);
263
- };
264
- };
265
-
266
- stack = function (f) {
267
- return function () {
268
- for (var _len6 = arguments.length, ax = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
269
- ax[_key6] = arguments[_key6];
270
- }
271
-
272
- return f(ax);
273
- };
274
- }; // Inspired by Rambda: https://ramdajs.com/docs/#pipeWith
275
-
276
-
277
- pipeWith = curry(function (c, fx) {
278
- var f, gx;
279
-
280
- gx = function () {
281
- var j, len, results;
151
+ _ = {};
152
+ substitute = curry(function(ax, bx) {
153
+ var a, i, j, len, results;
154
+ i = 0;
282
155
  results = [];
283
-
284
- for (j = 0, len = fx.length; j < len; j++) {
285
- f = fx[j];
286
- results.push(c(f));
156
+ for(j = 0, len = ax.length; j < len; j++){
157
+ a = ax[j];
158
+ if (a === _) {
159
+ results.push(bx[i++]);
160
+ } else {
161
+ results.push(a);
162
+ }
287
163
  }
288
-
289
164
  return results;
290
- }();
291
-
292
- return arity(fx[0].length, function () {
293
- for (var _len7 = arguments.length, ax = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
294
- ax[_key7] = arguments[_key7];
295
- }
296
-
297
- var i, j, len;
298
-
299
- for (i = j = 0, len = gx.length; j < len; i = ++j) {
300
- f = gx[i];
301
- ax = [f(...ax)];
302
- }
303
-
304
- return ax[0];
305
- });
306
165
  });
307
- pipe = pipeWith(identity);
308
-
309
- compose = function (fx) {
310
- return pipe(fx.reverse());
311
- };
312
-
313
- wait = function (f) {
314
- return arity(f.length, function () {
315
- for (var _len8 = arguments.length, ax = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {
316
- ax[_key8] = arguments[_key8];
166
+ partial = function(f, ax) {
167
+ var a, j, len, n;
168
+ n = 0;
169
+ for(j = 0, len = ax.length; j < len; j++){
170
+ a = ax[j];
171
+ if (a === _) {
172
+ n++;
173
+ }
317
174
  }
318
-
319
- return Promise.all(ax).then(function (ax) {
320
- return f(...ax);
175
+ return arity(n, function(...bx) {
176
+ return f(...substitute(ax, bx));
321
177
  });
322
- });
323
178
  };
324
-
325
- flow = pipeWith(wait);
326
- flowWith = curry(function (c, fx) {
327
- return pipeWith(pipe([c, wait]), fx);
328
- });
329
-
330
- tee = function (f) {
331
- return arity(Math.max(f.length, 1), function (a) {
332
- var k, ref, self;
333
- self = this;
334
-
335
- for (var _len9 = arguments.length, bx = new Array(_len9 > 1 ? _len9 - 1 : 0), _key9 = 1; _key9 < _len9; _key9++) {
336
- bx[_key9 - 1] = arguments[_key9];
337
- }
338
-
339
- if (((ref = k = f.apply(self, [a, ...bx])) != null ? ref.then : void 0) != null) {
340
- return k.then(function () {
341
- return a;
342
- });
343
- } else {
344
- return a;
345
- }
346
- });
179
+ spread = function(f) {
180
+ return function(ax) {
181
+ return f(...ax);
182
+ };
347
183
  };
348
-
349
- rtee = function (f) {
350
- return arity(Math.max(f.length, 1), function () {
351
- for (var _len10 = arguments.length, ax = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {
352
- ax[_key10] = arguments[_key10];
353
- }
354
-
355
- var b, k, ref, ref1, self;
356
- ref = ax, [...ax] = ref, [b] = splice.call(ax, -1);
357
- self = this;
358
-
359
- if (((ref1 = k = f.apply(self, [...ax, b])) != null ? ref1.then : void 0) != null) {
360
- return k.then(function () {
361
- return b;
362
- });
363
- } else {
364
- return b;
365
- }
366
- });
184
+ stack = function(f) {
185
+ return function(...ax) {
186
+ return f(ax);
187
+ };
367
188
  };
368
-
369
- once = function (f) {
370
- return function (k) {
371
- return arity(f.length, function () {
372
- if (k != null) {
373
- return k;
374
- } else {
375
- for (var _len11 = arguments.length, ax = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) {
376
- ax[_key11] = arguments[_key11];
189
+ pipe = function(fx) {
190
+ return function(n) {
191
+ return arity(n, function(...args) {
192
+ var f, j, len;
193
+ for(j = 0, len = fx.length; j < len; j++){
194
+ f = fx[j];
195
+ args = [
196
+ f(...args)
197
+ ];
198
+ }
199
+ return args[0];
200
+ });
201
+ }(fx[0].length);
202
+ };
203
+ flow = function(fx) {
204
+ return function(n) {
205
+ return arity(n, async function(...args) {
206
+ var f, j, len;
207
+ for(j = 0, len = fx.length; j < len; j++){
208
+ f = fx[j];
209
+ args = [
210
+ await f(...args)
211
+ ];
212
+ }
213
+ return args[0];
214
+ });
215
+ }(fx[0].length);
216
+ };
217
+ compose = function(fx) {
218
+ return pipe(fx.reverse());
219
+ };
220
+ wait = function(f) {
221
+ return arity(f.length, function(...ax) {
222
+ return Promise.all(ax).then(function(ax) {
223
+ return f(...ax);
224
+ });
225
+ });
226
+ };
227
+ tee = function(f) {
228
+ return arity(Math.max(f.length, 1), function(a, ...bx) {
229
+ var k, ref, self;
230
+ self = this;
231
+ if (((ref = k = f.apply(self, [
232
+ a,
233
+ ...bx
234
+ ])) != null ? ref.then : void 0) != null) {
235
+ return k.then(function() {
236
+ return a;
237
+ });
238
+ } else {
239
+ return a;
377
240
  }
378
-
379
- return k = apply(f, ax);
380
- }
381
241
  });
382
- }(void 0);
383
242
  };
384
-
385
- memoize = function (f) {
386
- return function (cache) {
387
- return arity(f.length, function () {
388
- var name1;
389
-
390
- for (var _len12 = arguments.length, ax = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {
391
- ax[_key12] = arguments[_key12];
392
- }
393
-
394
- return cache[name1 = JSON.stringify(ax)] != null ? cache[name1] : cache[name1] = apply(f, ax);
243
+ rtee = function(f) {
244
+ return arity(Math.max(f.length, 1), function(...ax) {
245
+ var b, k, ref, ref1, self;
246
+ ref = ax, [...ax] = ref, [b] = splice.call(ax, -1);
247
+ self = this;
248
+ if (((ref1 = k = f.apply(self, [
249
+ ...ax,
250
+ b
251
+ ])) != null ? ref1.then : void 0) != null) {
252
+ return k.then(function() {
253
+ return b;
254
+ });
255
+ } else {
256
+ return b;
257
+ }
395
258
  });
396
- }({});
397
259
  };
398
-
399
- apply = curry(function (f, ax) {
400
- return f(...ax);
260
+ once = function(f) {
261
+ return function(k) {
262
+ return arity(f.length, function(...ax) {
263
+ if (k != null) {
264
+ return k;
265
+ } else {
266
+ return k = apply(f, ax);
267
+ }
268
+ });
269
+ }(void 0);
270
+ };
271
+ memoize = function(f) {
272
+ return function(cache) {
273
+ return arity(f.length, function(...ax) {
274
+ var name1;
275
+ return cache[name1 = JSON.stringify(ax)] != null ? cache[name1] : cache[name1] = apply(f, ax);
276
+ });
277
+ }({});
278
+ };
279
+ apply = curry(function(f, ax) {
280
+ return f.apply(null, ax);
401
281
  });
402
- bind = curry(function (f, x) {
403
- return f.bind(x);
282
+ bind = curry(function(f, x) {
283
+ return f.bind(x);
404
284
  });
405
-
406
- detach = function (f) {
407
- return arity(f.length + 1, curry(function (x) {
408
- for (var _len13 = arguments.length, args = new Array(_len13 > 1 ? _len13 - 1 : 0), _key13 = 1; _key13 < _len13; _key13++) {
409
- args[_key13 - 1] = arguments[_key13];
410
- }
411
-
412
- return f.apply(x, args);
413
- }));
285
+ detach = function(f) {
286
+ return curry(arity(f.length + 1, function(x, ...args) {
287
+ return f.apply(x, args);
288
+ }));
414
289
  };
415
-
416
- send = curry(function (name, ax, object) {
417
- return object[name].apply(object, ax);
290
+ send = curry(function(name, ax, object) {
291
+ return object[name].apply(object, ax);
418
292
  });
419
-
420
- isPromise = function (k) {
421
- return k instanceof Promise;
293
+ isPromise = function(k) {
294
+ return k instanceof Promise;
422
295
  };
423
-
424
- chain = function (f) {
425
- return arity(Math.max(f.length, 1), function () {
426
- var k, self;
427
- self = this;
428
-
429
- for (var _len14 = arguments.length, ax = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) {
430
- ax[_key14] = arguments[_key14];
431
- }
432
-
433
- if (isPromise(k = f.apply(self, ax))) {
434
- return k.then(function () {
435
- return self;
436
- });
437
- } else {
438
- return self;
439
- }
440
- });
296
+ chain = function(f) {
297
+ return arity(Math.max(f.length, 1), function(...ax) {
298
+ var k, self;
299
+ self = this;
300
+ if (isPromise(k = f.apply(self, ax))) {
301
+ return k.then(function() {
302
+ return self;
303
+ });
304
+ } else {
305
+ return self;
306
+ }
307
+ });
441
308
  };
442
-
443
- proxy = curry(function (name, ax) {
444
- return function () {
445
- for (var _len15 = arguments.length, bx = new Array(_len15), _key15 = 0; _key15 < _len15; _key15++) {
446
- bx[_key15] = arguments[_key15];
447
- }
448
-
449
- return this[name].apply(this, [...ax, ...bx]);
450
- };
309
+ map = function(fx) {
310
+ return function({ lengths, length }) {
311
+ lengths = fx.map(function(f) {
312
+ return f.length;
313
+ });
314
+ length = Math.max(...lengths);
315
+ return arity(length, function(...args) {
316
+ var f, j, len, results;
317
+ results = [];
318
+ for(j = 0, len = fx.length; j < len; j++){
319
+ f = fx[j];
320
+ results.push(f(...args));
321
+ }
322
+ return results;
323
+ });
324
+ }({});
325
+ };
326
+ proxy = curry(function(name, ax) {
327
+ return function(...bx) {
328
+ return this[name].apply(this, [
329
+ ...ax,
330
+ ...bx
331
+ ]);
332
+ };
451
333
  });
452
- export { identity, wrap, arity, unary, binary, ternary, flip, curry, _, substitute, partial, spread, stack, pipeWith, pipe, compose, wait, flow, flowWith, tee, rtee, once, memoize, apply, bind, detach, send, chain, proxy };
334
+ export { identity, wrap, arity, unary, binary, ternary, flip, curry, _, substitute, partial, spread, stack, pipe, compose, wait, flow, tee, rtee, once, memoize, apply, bind, detach, send, chain, map, proxy };
335
+ export default {
336
+ identity,
337
+ wrap,
338
+ arity,
339
+ unary,
340
+ binary,
341
+ ternary,
342
+ flip,
343
+ curry,
344
+ _,
345
+ substitute,
346
+ partial,
347
+ spread,
348
+ stack,
349
+ pipe,
350
+ compose,
351
+ wait,
352
+ flow,
353
+ tee,
354
+ rtee,
355
+ once,
356
+ memoize,
357
+ apply,
358
+ bind,
359
+ detach,
360
+ send,
361
+ chain,
362
+ map,
363
+ proxy
364
+ }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL0BkYXNoa2l0ZS9qb3kvc3JjL2Z1bmN0aW9uLmNvZmZlZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxJQUFBLENBQUEsRUFBQSxLQUFBLEVBQUEsS0FBQSxFQUFBLE1BQUEsRUFBQSxJQUFBLEVBQUEsS0FBQSxFQUFBLE9BQUEsRUFBQSxLQUFBLEVBQUEsTUFBQSxFQUFBLElBQUEsRUFBQSxJQUFBLEVBQUEsUUFBQSxFQUFBLFNBQUEsRUFBQSxHQUFBLEVBQUEsT0FBQSxFQUFBLElBQUEsRUFBQSxPQUFBLEVBQUEsSUFBQSxFQUFBLEtBQUEsRUFBQSxJQUFBLEVBQUEsSUFBQSxFQUFBLE1BQUEsRUFBQSxLQUFBLEVBQUEsVUFBQSxFQUFBLEdBQUEsRUFBQSxPQUFBLEVBQUEsS0FBQSxFQUFBLElBQUEsRUFBQSxJQUFBO0VBQUE7O0FBQUEsUUFBQSxHQUFXLFFBQUEsQ0FBQyxDQUFELENBQUE7U0FBTztBQUFQOztBQUVYLElBQUEsR0FBTyxRQUFBLENBQUMsQ0FBRCxDQUFBO1NBQU8sUUFBQSxDQUFBLENBQUE7V0FBRztFQUFIO0FBQVAsRUFGUDs7OztBQU1BLEtBQUEsR0FBUyxRQUFBLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FBQTtBQUNQLFVBQU8sQ0FBUDtBQUFBLFNBQ08sQ0FEUDthQUVJLFFBQUEsQ0FBQSxHQUFDLEVBQUQsQ0FBQTtlQUFXLENBQUMsQ0FBQyxLQUFGLENBQVEsSUFBUixFQUFXLEVBQVg7TUFBWDtBQUZKLFNBR08sQ0FIUDthQUlJLFFBQUEsQ0FBQyxFQUFELENBQUE7ZUFBUSxDQUFDLENBQUMsS0FBRixDQUFRLElBQVIsRUFBVyxTQUFYO01BQVI7QUFKSixTQUtPLENBTFA7YUFNSSxRQUFBLENBQUMsRUFBRCxFQUFLLEVBQUwsQ0FBQTtlQUFhLENBQUMsQ0FBQyxLQUFGLENBQVEsSUFBUixFQUFXLFNBQVg7TUFBYjtBQU5KLFNBT08sQ0FQUDthQVFJLFFBQUEsQ0FBQyxFQUFE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QTNCYSxFQTRCYixLQTVCYSIsInNvdXJjZXNDb250ZW50IjpbImlkZW50aXR5ID0gKHgpIC0+IHhcblxud3JhcCA9ICh4KSAtPiAtPiB4XG5cbiMgQmFzZWQgb24gX2FyaXR5IGZyb20gUmFtYmRhOlxuIyBodHRwczovL2dpdGh1Yi5jb20vcmFtZGEvcmFtZGEvYmxvYi92MC4yNi4xL3NvdXJjZS9pbnRlcm5hbC9fYXJpdHkuanNcbmFyaXR5ICA9IChOLCBmKSAtPlxuICBzd2l0Y2ggTlxuICAgIHdoZW4gMFxuICAgICAgKGF4Li4uKSAtPiBmLmFwcGx5IEAsIGF4XG4gICAgd2hlbiAxXG4gICAgICAoYTApIC0+IGYuYXBwbHkgQCwgYXJndW1lbnRzXG4gICAgd2hlbiAyXG4gICAgICAoYTAsIGExKSAgLT4gZi5hcHBseSBALCBhcmd1bWVudHNcbiAgICB3aGVuIDNcbiAgICAgIChhMCwgYTEsIGEyKSAtPiBmLmFwcGx5IEAsIGFyZ3VtZW50c1xuICAgIHdoZW4gNFxuICAgICAgKGEwLCBhMSwgYTIsIGEzKSAtPiBmLmFwcGx5IEAsIGFyZ3VtZW50c1xuICAgIHdoZW4gNVxuICAgICAgKGEwLCBhMSwgYTIsIGEzLCBhNCkgLT4gZi5hcHBseSBALCBhcmd1bWVudHNcbiAgICB3aGVuIDZcbiAgICAgIChhMCwgYTEsIGEyLCBhMywgYTQsIGE1KSAtPiBmLmFwcGx5IEAsIGFyZ3VtZW50c1xuICAgIHdoZW4gN1xuICAgICAgKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSAtPiBmLmFwcGx5IEAsIGFyZ3VtZW50c1xuICAgIHdoZW4gOFxuICAgICAgKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNykgLT4gZi5hcHBseSBALCBhcmd1bWVudHNcbiAgICB3aGVuIDlcbiAgICAgIChhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4KSAtPiBmLmFwcGx5IEAsIGFyZ3VtZW50c1xuICAgIHdoZW4gMTBcbiAgICAgIChhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSkgLT4gZi5hcHBseSBALCBhcmd1bWVudHNcbiAgICBlbHNlXG4gICAgICB0aHJvdyBuZXcgRXJyb3IgXCJGaXJzdCBhcmd1bWVudCB0byBhcml0eSBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAwIGFuZCAxMCwgaW5jbHVzaXZlLlwiXG5cbnVuYXJ5ID0gKGYpIC0+IGFyaXR5IDEsIGZcblxuYmluYXJ5ID0gKGYpIC0+IGFyaXR5IDIsIGZcblxudGVybmFyeSA9IChmKSAtPiBhcml0eSAzLCBmXG5cbmZsaXAgPSAoZikgLT5cbiAgc3dpdGNoIGYubGVuZ3RoXG4gICAgd2hlbiAwXG4gICAgICBmXG4gICAgd2hlbiAxXG4gICAgICAoYTApIC0+IGYuY2FsbCBALCBhMFxuICAgIHdoZW4gMlxuICAgICAgKGEwLCBhMSkgIC0+IGYuY2FsbCBALCBhMSwgYTBcbiAgICB3aGVuIDNcbiAgICAgIChhMCwgYTEsIGEyKSAtPiBmLmNhbGwgQCwgYTIsIGExLCBhMFxuICAgIHdoZW4gNFxuICAgICAgKGEwLCBhMSwgYTIsIGEzKSAtPiBmLmNhbGwgQCwgYTMsIGEyLCBhMSwgYTBcbiAgICB3aGVuIDVcbiAgICAgIChhMCwgYTEsIGEyLCBhMywgYTQpIC0+IGYuY2FsbCBALCBhNCwgYTMsIGEyLCBhMSwgYTBcbiAgICB3aGVuIDZcbiAgICAgIChhMCwgYTEsIGEyLCBhMywgYTQsIGE1KSAtPiBmLmNhbGwgQCwgYTUsIGE0LCBhMywgYTIsIGExLCBhMFxuICAgIHdoZW4gN1xuICAgICAgKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSAtPiBmLmNhbGwgQCwgYTYsIGE0LCBhMywgYTIsIGExLCBhMFxuICAgIHdoZW4gOFxuICAgICAgKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNykgLT5cbiAgICAgICAgZi5jYWxsIEAsIGE3LCBhNiwgYTUsIGE0LCBhMywgYTIsIGExLCBhMFxuICAgIHdoZW4gOVxuICAgICAgKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpIC0+XG4gICAgICAgIGYuY2FsbCBALCBhOCwgYTcsIGE2LCBhNSwgYTQsIGEzLCBhMiwgYTEsIGEwXG4gICAgd2hlbiAxMFxuICAgICAgKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KSAtPlxuICAgICAgICBmLmNhbGwgQCwgYTksIGE4LCBhNywgYTYsIGE1LCBhNCwgYTMsIGEyLCBhMSwgYTBcbiAgICBlbHNlXG4gICAgICAoYXguLi4pIC0+IGYuYXBwbHkgQCwgYXgucmV2ZXJzZSgpXG5cbmN1cnJ5ID0gKGYpIC0+XG4gIGlmIGYubGVuZ3RoID4gMVxuICAgIGFyaXR5IGYubGVuZ3RoLCAoYXguLi4pIC0+XG4gICAgICBzZWxmID0gQFxuICAgICAgaWYgYXgubGVuZ3RoID49IGYubGVuZ3RoXG4gICAgICAgIGYuYXBwbHkgc2VsZiwgYXhcbiAgICAgIGVsc2VcbiAgICAgICAgbGVuZ3RoID0gZi5sZW5ndGggLSBheC5sZW5ndGhcbiAgICAgICAgaWYgbGVuZ3RoID09IDFcbiAgICAgICAgICAoeCkgLT4gZi5hcHBseSBzZWxmLCBbIGF4Li4uLCB4IF1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGN1cnJ5IGFyaXR5IGxlbmd0aCwgKGJ4Li4uKSAtPiBmLmFwcGx5IHNlbGYsIFsgYXguLi4sIGJ4Li4uIF1cbiAgZWxzZSBmXG5cbl8gPSB7fVxuXG5zdWJzdGl0dXRlID0gY3VycnkgKGF4LCBieCkgLT5cbiAgaSA9IDBcbiAgZm9yIGEgaW4gYXhcbiAgICBpZiBhID09IF9cbiAgICAgIGJ4W2krK11cbiAgICBlbHNlXG4gICAgICBhXG5cbnBhcnRpYWwgPSAoZiwgYXgpIC0+XG4gIG4gPSAwXG4gIGZvciBhIGluIGF4IHdoZW4gYSA9PSBfXG4gICAgbisrXG4gIGFyaXR5IG4sIChieC4uLikgLT4gZiAoc3Vic3RpdHV0ZSBheCwgYngpLi4uXG5cbnNwcmVhZCA9IChmKSAtPiAoYXgpIC0+IGYgYXguLi5cblxuc3RhY2sgPSAoZikgLT4gKGF4Li4uKSAtPiBmIGF4XG5cbnBpcGUgPSAoIGZ4ICkgLT5cbiAgZG8gKCBuID0gZnhbIDAgXS5sZW5ndGggKSAtPiAgICBcbiAgICBhcml0eSBuLCAoIGFyZ3MuLi4gKSAtPlxuICAgICAgZm9yIGYgaW4gZnhcbiAgICAgICAgYXJncyA9IFsgZiBhcmdzLi4uIF1cbiAgICAgIGFyZ3NbIDAgXVxuXG5mbG93ID0gKCBmeCApIC0+XG4gIGRvICggbiA9IGZ4WyAwIF0ubGVuZ3RoICkgLT4gICAgXG4gICAgYXJpdHkgbiwgKCBhcmdzLi4uICkgLT5cbiAgICAgIGZvciBmIGluIGZ4XG4gICAgICAgIGFyZ3MgPSBbIGF3YWl0IGYgYXJncy4uLiBdXG4gICAgICBhcmdzWyAwIF1cblxuY29tcG9zZSA9IChmeCkgLT4gcGlwZSBmeC5yZXZlcnNlKClcblxud2FpdCA9IChmKSAtPlxuICBhcml0eSBmLmxlbmd0aCwgKGF4Li4uKSAtPlxuICAgIFByb21pc2UuYWxsIGF4XG4gICAgICAudGhlbiAoYXgpIC0+IGYgYXguLi5cblxudGVlID0gKGYpIC0+XG4gIGFyaXR5IChNYXRoLm1heCBmLmxlbmd0aCwgMSksIChhLCBieC4uLikgLT5cbiAgICBzZWxmID0gQFxuICAgIGlmIChrID0gKGYuYXBwbHkgc2VsZiwgWyBhLCBieC4uLiBdKSk/LnRoZW4/XG4gICAgICBrLnRoZW4gLT4gYVxuICAgIGVsc2VcbiAgICAgIGFcblxucnRlZSA9IChmKSAtPlxuICBhcml0eSAoTWF0aC5tYXggZi5sZW5ndGgsIDEpLCAoYXguLi4sIGIpIC0+XG4gICAgc2VsZiA9IEBcbiAgICBpZiAoayA9IChmLmFwcGx5IHNlbGYsIFsgYXguLi4sIGIgXSkpPy50aGVuP1xuICAgICAgay50aGVuIC0+IGJcbiAgICBlbHNlXG4gICAgICBiXG5cbm9uY2UgPSAoZikgLT5cbiAgZG8gKGs9dW5kZWZpbmVkKSAtPlxuICAgIGFyaXR5IGYubGVuZ3RoLFxuICAgICAgKGF4Li4uKSAtPiBpZiBrPyB0aGVuIGsgZWxzZSAoayA9IGFwcGx5IGYsIGF4KVxuXG5tZW1vaXplID0gKGYpIC0+XG4gIGRvIChjYWNoZSA9IHt9KSAtPlxuICAgIGFyaXR5IGYubGVuZ3RoLCAoYXguLi4pIC0+XG4gICAgICBjYWNoZVsgSlNPTi5zdHJpbmdpZnkgYXggXSA/PSBhcHBseSBmLCBheFxuXG5hcHBseSA9IGN1cnJ5IChmLCBheCkgLT4gZi5hcHBseSBudWxsLCBheFxuXG5iaW5kID0gY3VycnkgKGYsIHgpIC0+IGYuYmluZCB4XG5cbmRldGFjaCA9IChmKSAtPlxuICBjdXJyeSBhcml0eSAoZi5sZW5ndGggKyAxKSwgXG4gICAgKHgsIGFyZ3MuLi4pIC0+IGYuYXBwbHkgeCwgYXJnc1xuXG5zZW5kID0gY3VycnkgKG5hbWUsIGF4LCBvYmplY3QpIC0+IG9iamVjdFtuYW1lXS5hcHBseSBvYmplY3QsIGF4XG5cbmlzUHJvbWlzZSA9IChrKSAtPiBrIGluc3RhbmNlb2YgUHJvbWlzZVxuXG5jaGFpbiA9IChmKSAtPlxuICBhcml0eSAoTWF0aC5tYXggZi5sZW5ndGgsIDEpLCAoYXguLi4pIC0+XG4gICAgc2VsZiA9IEBcbiAgICBpZiAoaXNQcm9taXNlIChrID0gKGYuYXBwbHkgc2VsZiwgYXgpKSlcbiAgICAgIGsudGhlbiAtPiBzZWxmXG4gICAgZWxzZVxuICAgICAgc2VsZlxuXG5tYXAgPSAoIGZ4ICkgLT5cbiAgZG8gKHsgbGVuZ3RocywgbGVuZ3RoIH0gPSB7fSkgLT5cbiAgICBsZW5ndGhzID0gZngubWFwICggZiApIC0+IGYubGVuZ3RoXG4gICAgbGVuZ3RoID0gTWF0aC5tYXggbGVuZ3Rocy4uLlxuICAgIGFyaXR5IGxlbmd0aCwgKCBhcmdzLi4uICkgLT5cbiAgICAgICggZiBhcmdzLi4uICkgZm9yIGYgaW4gZnhcblxucHJveHkgPSBjdXJyeSAobmFtZSwgYXgpIC0+XG4gIChieC4uLikgLT4gQFtuYW1lXS5hcHBseSBALCBbIGF4Li4uLCBieC4uLiBdXG5cbmV4cG9ydCB7XG4gIGlkZW50aXR5XG4gIHdyYXBcbiAgYXJpdHlcbiAgdW5hcnlcbiAgYmluYXJ5XG4gIHRlcm5hcnlcbiAgZmxpcFxuICBjdXJyeVxuICBfXG4gIHN1YnN0aXR1dGVcbiAgcGFydGlhbFxuICBzcHJlYWRcbiAgc3RhY2tcbiAgcGlwZVxuICBjb21wb3NlXG4gIHdhaXRcbiAgZmxvd1xuICB0ZWVcbiAgcnRlZVxuICBvbmNlXG4gIG1lbW9pemVcbiAgYXBwbHlcbiAgYmluZFxuICBkZXRhY2hcbiAgc2VuZFxuICBjaGFpblxuICBtYXBcbiAgcHJveHlcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBpZGVudGl0eVxuICB3cmFwXG4gIGFyaXR5XG4gIHVuYXJ5XG4gIGJpbmFyeVxuICB0ZXJuYXJ5XG4gIGZsaXBcbiAgY3VycnlcbiAgX1xuICBzdWJzdGl0dXRlXG4gIHBhcnRpYWxcbiAgc3ByZWFkXG4gIHN0YWNrXG4gIHBpcGVcbiAgY29tcG9zZVxuICB3YWl0XG4gIGZsb3dcbiAgdGVlXG4gIHJ0ZWVcbiAgb25jZVxuICBtZW1vaXplXG4gIGFwcGx5XG4gIGJpbmRcbiAgZGV0YWNoXG4gIHNlbmRcbiAgY2hhaW5cbiAgbWFwXG4gIHByb3h5XG59XG4iXX0=
365
+ //# sourceURL=/@dashkite/joy/src/function.coffee
366
+
367
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9AZGFzaGtpdGUvam95L3NyYy9mdW5jdGlvbi5jb2ZmZWUiXSwic291cmNlc0NvbnRlbnQiOlsiaWRlbnRpdHkgPSAoeCkgLT4geFxuXG53cmFwID0gKHgpIC0+IC0+IHhcblxuIyBCYXNlZCBvbiBfYXJpdHkgZnJvbSBSYW1iZGE6XG4jIGh0dHBzOi8vZ2l0aHViLmNvbS9yYW1kYS9yYW1kYS9ibG9iL3YwLjI2LjEvc291cmNlL2ludGVybmFsL19hcml0eS5qc1xuYXJpdHkgID0gKE4sIGYpIC0+XG4gIHN3aXRjaCBOXG4gICAgd2hlbiAwXG4gICAgICAoYXguLi4pIC0+IGYuYXBwbHkgQCwgYXhcbiAgICB3aGVuIDFcbiAgICAgIChhMCkgLT4gZi5hcHBseSBALCBhcmd1bWVudHNcbiAgICB3aGVuIDJcbiAgICAgIChhMCwgYTEpICAtPiBmLmFwcGx5IEAsIGFyZ3VtZW50c1xuICAgIHdoZW4gM1xuICAgICAgKGEwLCBhMSwgYTIpIC0+IGYuYXBwbHkgQCwgYXJndW1lbnRzXG4gICAgd2hlbiA0XG4gICAgICAoYTAsIGExLCBhMiwgYTMpIC0+IGYuYXBwbHkgQCwgYXJndW1lbnRzXG4gICAgd2hlbiA1XG4gICAgICAoYTAsIGExLCBhMiwgYTMsIGE0KSAtPiBmLmFwcGx5IEAsIGFyZ3VtZW50c1xuICAgIHdoZW4gNlxuICAgICAgKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpIC0+IGYuYXBwbHkgQCwgYXJndW1lbnRzXG4gICAgd2hlbiA3XG4gICAgICAoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpIC0+IGYuYXBwbHkgQCwgYXJndW1lbnRzXG4gICAgd2hlbiA4XG4gICAgICAoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KSAtPiBmLmFwcGx5IEAsIGFyZ3VtZW50c1xuICAgIHdoZW4gOVxuICAgICAgKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgpIC0+IGYuYXBwbHkgQCwgYXJndW1lbnRzXG4gICAgd2hlbiAxMFxuICAgICAgKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KSAtPiBmLmFwcGx5IEAsIGFyZ3VtZW50c1xuICAgIGVsc2VcbiAgICAgIHRocm93IG5ldyBFcnJvciBcIkZpcnN0IGFyZ3VtZW50IHRvIGFyaXR5IG11c3QgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDEwLCBpbmNsdXNpdmUuXCJcblxudW5hcnkgPSAoZikgLT4gYXJpdHkgMSwgZlxuXG5iaW5hcnkgPSAoZikgLT4gYXJpdHkgMiwgZlxuXG50ZXJuYXJ5ID0gKGYpIC0+IGFyaXR5IDMsIGZcblxuZmxpcCA9IChmKSAtPlxuICBzd2l0Y2ggZi5sZW5ndGhcbiAgICB3aGVuIDBcbiAgICAgIGZcbiAgICB3aGVuIDFcbiAgICAgIChhMCkgLT4gZi5jYWxsIEAsIGEwXG4gICAgd2hlbiAyXG4gICAgICAoYTAsIGExKSAgLT4gZi5jYWxsIEAsIGExLCBhMFxuICAgIHdoZW4gM1xuICAgICAgKGEwLCBhMSwgYTIpIC0+IGYuY2FsbCBALCBhMiwgYTEsIGEwXG4gICAgd2hlbiA0XG4gICAgICAoYTAsIGExLCBhMiwgYTMpIC0+IGYuY2FsbCBALCBhMywgYTIsIGExLCBhMFxuICAgIHdoZW4gNVxuICAgICAgKGEwLCBhMSwgYTIsIGEzLCBhNCkgLT4gZi5jYWxsIEAsIGE0LCBhMywgYTIsIGExLCBhMFxuICAgIHdoZW4gNlxuICAgICAgKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpIC0+IGYuY2FsbCBALCBhNSwgYTQsIGEzLCBhMiwgYTEsIGEwXG4gICAgd2hlbiA3XG4gICAgICAoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpIC0+IGYuY2FsbCBALCBhNiwgYTQsIGEzLCBhMiwgYTEsIGEwXG4gICAgd2hlbiA4XG4gICAgICAoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KSAtPlxuICAgICAgICBmLmNhbGwgQCwgYTcsIGE2LCBhNSwgYTQsIGEzLCBhMiwgYTEsIGEwXG4gICAgd2hlbiA5XG4gICAgICAoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCkgLT5cbiAgICAgICAgZi5jYWxsIEAsIGE4LCBhNywgYTYsIGE1LCBhNCwgYTMsIGEyLCBhMSwgYTBcbiAgICB3aGVuIDEwXG4gICAgICAoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpIC0+XG4gICAgICAgIGYuY2FsbCBALCBhOSwgYTgsIGE3LCBhNiwgYTUsIGE0LCBhMywgYTIsIGExLCBhMFxuICAgIGVsc2VcbiAgICAgIChheC4uLikgLT4gZi5hcHBseSBALCBheC5yZXZlcnNlKClcblxuY3VycnkgPSAoZikgLT5cbiAgaWYgZi5sZW5ndGggPiAxXG4gICAgYXJpdHkgZi5sZW5ndGgsIChheC4uLikgLT5cbiAgICAgIHNlbGYgPSBAXG4gICAgICBpZiBheC5sZW5ndGggPj0gZi5sZW5ndGhcbiAgICAgICAgZi5hcHBseSBzZWxmLCBheFxuICAgICAgZWxzZVxuICAgICAgICBsZW5ndGggPSBmLmxlbmd0aCAtIGF4Lmxlbmd0aFxuICAgICAgICBpZiBsZW5ndGggPT0gMVxuICAgICAgICAgICh4KSAtPiBmLmFwcGx5IHNlbGYsIFsgYXguLi4sIHggXVxuICAgICAgICBlbHNlXG4gICAgICAgICAgY3VycnkgYXJpdHkgbGVuZ3RoLCAoYnguLi4pIC0+IGYuYXBwbHkgc2VsZiwgWyBheC4uLiwgYnguLi4gXVxuICBlbHNlIGZcblxuXyA9IHt9XG5cbnN1YnN0aXR1dGUgPSBjdXJyeSAoYXgsIGJ4KSAtPlxuICBpID0gMFxuICBmb3IgYSBpbiBheFxuICAgIGlmIGEgPT0gX1xuICAgICAgYnhbaSsrXVxuICAgIGVsc2VcbiAgICAgIGFcblxucGFydGlhbCA9IChmLCBheCkgLT5cbiAgbiA9IDBcbiAgZm9yIGEgaW4gYXggd2hlbiBhID09IF9cbiAgICBuKytcbiAgYXJpdHkgbiwgKGJ4Li4uKSAtPiBmIChzdWJzdGl0dXRlIGF4LCBieCkuLi5cblxuc3ByZWFkID0gKGYpIC0+IChheCkgLT4gZiBheC4uLlxuXG5zdGFjayA9IChmKSAtPiAoYXguLi4pIC0+IGYgYXhcblxucGlwZSA9ICggZnggKSAtPlxuICBkbyAoIG4gPSBmeFsgMCBdLmxlbmd0aCApIC0+ICAgIFxuICAgIGFyaXR5IG4sICggYXJncy4uLiApIC0+XG4gICAgICBmb3IgZiBpbiBmeFxuICAgICAgICBhcmdzID0gWyBmIGFyZ3MuLi4gXVxuICAgICAgYXJnc1sgMCBdXG5cbmZsb3cgPSAoIGZ4ICkgLT5cbiAgZG8gKCBuID0gZnhbIDAgXS5sZW5ndGggKSAtPiAgICBcbiAgICBhcml0eSBuLCAoIGFyZ3MuLi4gKSAtPlxuICAgICAgZm9yIGYgaW4gZnhcbiAgICAgICAgYXJncyA9IFsgYXdhaXQgZiBhcmdzLi4uIF1cbiAgICAgIGFyZ3NbIDAgXVxuXG5jb21wb3NlID0gKGZ4KSAtPiBwaXBlIGZ4LnJldmVyc2UoKVxuXG53YWl0ID0gKGYpIC0+XG4gIGFyaXR5IGYubGVuZ3RoLCAoYXguLi4pIC0+XG4gICAgUHJvbWlzZS5hbGwgYXhcbiAgICAgIC50aGVuIChheCkgLT4gZiBheC4uLlxuXG50ZWUgPSAoZikgLT5cbiAgYXJpdHkgKE1hdGgubWF4IGYubGVuZ3RoLCAxKSwgKGEsIGJ4Li4uKSAtPlxuICAgIHNlbGYgPSBAXG4gICAgaWYgKGsgPSAoZi5hcHBseSBzZWxmLCBbIGEsIGJ4Li4uIF0pKT8udGhlbj9cbiAgICAgIGsudGhlbiAtPiBhXG4gICAgZWxzZVxuICAgICAgYVxuXG5ydGVlID0gKGYpIC0+XG4gIGFyaXR5IChNYXRoLm1heCBmLmxlbmd0aCwgMSksIChheC4uLiwgYikgLT5cbiAgICBzZWxmID0gQFxuICAgIGlmIChrID0gKGYuYXBwbHkgc2VsZiwgWyBheC4uLiwgYiBdKSk/LnRoZW4/XG4gICAgICBrLnRoZW4gLT4gYlxuICAgIGVsc2VcbiAgICAgIGJcblxub25jZSA9IChmKSAtPlxuICBkbyAoaz11bmRlZmluZWQpIC0+XG4gICAgYXJpdHkgZi5sZW5ndGgsXG4gICAgICAoYXguLi4pIC0+IGlmIGs/IHRoZW4gayBlbHNlIChrID0gYXBwbHkgZiwgYXgpXG5cbm1lbW9pemUgPSAoZikgLT5cbiAgZG8gKGNhY2hlID0ge30pIC0+XG4gICAgYXJpdHkgZi5sZW5ndGgsIChheC4uLikgLT5cbiAgICAgIGNhY2hlWyBKU09OLnN0cmluZ2lmeSBheCBdID89IGFwcGx5IGYsIGF4XG5cbmFwcGx5ID0gY3VycnkgKGYsIGF4KSAtPiBmLmFwcGx5IG51bGwsIGF4XG5cbmJpbmQgPSBjdXJyeSAoZiwgeCkgLT4gZi5iaW5kIHhcblxuZGV0YWNoID0gKGYpIC0+XG4gIGN1cnJ5IGFyaXR5IChmLmxlbmd0aCArIDEpLCBcbiAgICAoeCwgYXJncy4uLikgLT4gZi5hcHBseSB4LCBhcmdzXG5cbnNlbmQgPSBjdXJyeSAobmFtZSwgYXgsIG9iamVjdCkgLT4gb2JqZWN0W25hbWVdLmFwcGx5IG9iamVjdCwgYXhcblxuaXNQcm9taXNlID0gKGspIC0+IGsgaW5zdGFuY2VvZiBQcm9taXNlXG5cbmNoYWluID0gKGYpIC0+XG4gIGFyaXR5IChNYXRoLm1heCBmLmxlbmd0aCwgMSksIChheC4uLikgLT5cbiAgICBzZWxmID0gQFxuICAgIGlmIChpc1Byb21pc2UgKGsgPSAoZi5hcHBseSBzZWxmLCBheCkpKVxuICAgICAgay50aGVuIC0+IHNlbGZcbiAgICBlbHNlXG4gICAgICBzZWxmXG5cbm1hcCA9ICggZnggKSAtPlxuICBkbyAoeyBsZW5ndGhzLCBsZW5ndGggfSA9IHt9KSAtPlxuICAgIGxlbmd0aHMgPSBmeC5tYXAgKCBmICkgLT4gZi5sZW5ndGhcbiAgICBsZW5ndGggPSBNYXRoLm1heCBsZW5ndGhzLi4uXG4gICAgYXJpdHkgbGVuZ3RoLCAoIGFyZ3MuLi4gKSAtPlxuICAgICAgKCBmIGFyZ3MuLi4gKSBmb3IgZiBpbiBmeFxuXG5wcm94eSA9IGN1cnJ5IChuYW1lLCBheCkgLT5cbiAgKGJ4Li4uKSAtPiBAW25hbWVdLmFwcGx5IEAsIFsgYXguLi4sIGJ4Li4uIF1cblxuZXhwb3J0IHtcbiAgaWRlbnRpdHlcbiAgd3JhcFxuICBhcml0eVxuICB1bmFyeVxuICBiaW5hcnlcbiAgdGVybmFyeVxuICBmbGlwXG4gIGN1cnJ5XG4gIF9cbiAgc3Vic3RpdHV0ZVxuICBwYXJ0aWFsXG4gIHNwcmVhZFxuICBzdGFja1xuICBwaXBlXG4gIGNvbXBvc2VcbiAgd2FpdFxuICBmbG93XG4gIHRlZVxuICBydGVlXG4gIG9uY2VcbiAgbWVtb2l6ZVxuICBhcHBseVxuICBiaW5kXG4gIGRldGFjaFxuICBzZW5kXG4gIGNoYWluXG4gIG1hcFxuICBwcm94eVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGlkZW50aXR5XG4gIHdyYXBcbiAgYXJpdHlcbiAgdW5hcnlcbiAgYmluYXJ5XG4gIHRlcm5hcnlcbiAgZmxpcFxuICBjdXJyeVxuICBfXG4gIHN1YnN0aXR1dGVcbiAgcGFydGlhbFxuICBzcHJlYWRcbiAgc3RhY2tcbiAgcGlwZVxuICBjb21wb3NlXG4gIHdhaXRcbiAgZmxvd1xuICB0ZWVcbiAgcnRlZVxuICBvbmNlXG4gIG1lbW9pemVcbiAgYXBwbHlcbiAgYmluZFxuICBkZXRhY2hcbiAgc2VuZFxuICBjaGFpblxuICBtYXBcbiAgcHJveHlcbn1cbiJdLCJuYW1lcyI6WyJfIiwiYXBwbHkiLCJhcml0eSIsImJpbmFyeSIsImJpbmQiLCJjaGFpbiIsImNvbXBvc2UiLCJjdXJyeSIsImRldGFjaCIsImZsaXAiLCJmbG93IiwiaWRlbnRpdHkiLCJpc1Byb21pc2UiLCJtYXAiLCJtZW1vaXplIiwib25jZSIsInBhcnRpYWwiLCJwaXBlIiwicHJveHkiLCJydGVlIiwic2VuZCIsInNwcmVhZCIsInN0YWNrIiwic3Vic3RpdHV0ZSIsInRlZSIsInRlcm5hcnkiLCJ1bmFyeSIsIndhaXQiLCJ3cmFwIiwic3BsaWNlIiwieCIsIk4iLCJmIiwiYXgiLCJhMCIsImFyZ3VtZW50cyIsImExIiwiYTIiLCJhMyIsImE0IiwiYTUiLCJhNiIsImE3IiwiYTgiLCJhOSIsIkVycm9yIiwibGVuZ3RoIiwiY2FsbCIsInJldmVyc2UiLCJzZWxmIiwiYngiLCJhIiwiaSIsImoiLCJsZW4iLCJyZXN1bHRzIiwibiIsImZ4IiwiYXJncyIsIlByb21pc2UiLCJhbGwiLCJ0aGVuIiwiTWF0aCIsIm1heCIsImsiLCJyZWYiLCJiIiwicmVmMSIsImNhY2hlIiwibmFtZTEiLCJuYW1lIiwib2JqZWN0IiwibGVuZ3RocyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBQUEsR0FBQUMsT0FBQUMsT0FBQUMsUUFBQUMsTUFBQUMsT0FBQUMsU0FBQUMsT0FBQUMsUUFBQUMsTUFBQUMsTUFBQUMsVUFBQUMsV0FBQUMsS0FBQUMsU0FBQUMsTUFBQUMsU0FBQUMsTUFBQUMsT0FBQUMsTUFBQUMsTUFBQUMsUUFBQUMsT0FBQUMsWUFBQUMsS0FBQUMsU0FBQUMsT0FBQUMsTUFBQUMsTUFBQUMsU0FBQSxFQUFBLENBQUFBLE1BQUE7QUFBQWxCLFdBQVcsU0FBQ21CLENBQUQ7V0FBT0E7QUFBUDtBQUVYRixPQUFPLFNBQUNFLENBQUQ7V0FBTztlQUFHQTtJQUFIO0FBQVA7OztBQUlQNUIsUUFBUyxTQUFDNkIsQ0FBRCxFQUFJQyxDQUFKO0lBQ1AsT0FBT0Q7UUFBUCxLQUNPO21CQUNILFNBQUEsR0FBQ0UsRUFBRDt1QkFBV0QsRUFBRS9CLEtBQUYsQ0FBUSxJQUFSLEVBQVdnQztZQUF0QjtRQUZKLEtBR087bUJBQ0gsU0FBQ0MsRUFBRDt1QkFBUUYsRUFBRS9CLEtBQUYsQ0FBUSxJQUFSLEVBQVdrQztZQUFuQjtRQUpKLEtBS087bUJBQ0gsU0FBQ0QsRUFBRCxFQUFLRSxFQUFMO3VCQUFhSixFQUFFL0IsS0FBRixDQUFRLElBQVIsRUFBV2tDO1lBQXhCO1FBTkosS0FPTzttQkFDSCxTQUFDRCxFQUFELEVBQUtFLEVBQUwsRUFBU0MsRUFBVDt1QkFBZ0JMLEVBQUUvQixLQUFGLENBQVEsSUFBUixFQUFXa0M7WUFBM0I7UUFSSixLQVNPO21CQUNILFNBQUNELEVBQUQsRUFBS0UsRUFBTCxFQUFTQyxFQUFULEVBQWFDLEVBQWI7dUJBQW9CTixFQUFFL0IsS0FBRixDQUFRLElBQVIsRUFBV2tDO1lBQS9CO1FBVkosS0FX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