occam-languages 3.0.36 → 3.0.37
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.
|
@@ -18,6 +18,9 @@ _export(exports, {
|
|
|
18
18
|
get backwardsForEach () {
|
|
19
19
|
return backwardsForEach;
|
|
20
20
|
},
|
|
21
|
+
get cut () {
|
|
22
|
+
return cut;
|
|
23
|
+
},
|
|
21
24
|
get default () {
|
|
22
25
|
return _default;
|
|
23
26
|
},
|
|
@@ -70,6 +73,12 @@ _export(exports, {
|
|
|
70
73
|
return some;
|
|
71
74
|
}
|
|
72
75
|
});
|
|
76
|
+
function cut(forward, back) {
|
|
77
|
+
return (...forwardArguments)=>{
|
|
78
|
+
forwardArguments.pop(); ///
|
|
79
|
+
return forward(...forwardArguments, back);
|
|
80
|
+
};
|
|
81
|
+
}
|
|
73
82
|
function one(array, callback, ...initialArguments) {
|
|
74
83
|
const back = initialArguments.pop(), forward = initialArguments.pop(), length = array.length;
|
|
75
84
|
function next(index, count, ...nextArguments) {
|
|
@@ -287,14 +296,14 @@ function resolve(array, callback, ...initialArguments) {
|
|
|
287
296
|
return find(arrayA, (element, ...callbackArguments)=>{
|
|
288
297
|
const index = callbackArguments.pop(), back = callbackArguments.pop(), forward = callbackArguments.pop();
|
|
289
298
|
return callback(element, ...callbackArguments, (...forwardArguments)=>{
|
|
290
|
-
const
|
|
291
|
-
return forward(
|
|
299
|
+
const passed = true;
|
|
300
|
+
return forward(passed, ...forwardArguments);
|
|
292
301
|
}, (exception)=>{
|
|
293
302
|
if (exception) {
|
|
294
303
|
return back(exception);
|
|
295
304
|
}
|
|
296
|
-
const
|
|
297
|
-
return forward(
|
|
305
|
+
const passed = false;
|
|
306
|
+
return forward(passed, ...callbackArguments, back);
|
|
298
307
|
}, index);
|
|
299
308
|
}, ...nextArguments, (elements, ...forwardArguments)=>{
|
|
300
309
|
const elementsLength = elements.length;
|
|
@@ -398,6 +407,7 @@ function exists(callbacks, ...initialArguments) {
|
|
|
398
407
|
}, ...initialArguments);
|
|
399
408
|
}
|
|
400
409
|
const _default = {
|
|
410
|
+
cut,
|
|
401
411
|
one,
|
|
402
412
|
some,
|
|
403
413
|
each,
|
|
@@ -419,4 +429,4 @@ const _default = {
|
|
|
419
429
|
exists
|
|
420
430
|
};
|
|
421
431
|
|
|
422
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udGludWF0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gb25lKGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4LCBjb3VudCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgICBpZiAoY291bnQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZvcndhcmQoLi4ubmV4dEFyZ3VtZW50cywgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhcbiAgICAgIGVsZW1lbnQsXG4gICAgICAuLi5pbml0aWFsQXJndW1lbnRzLFxuICAgICAgKC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgaWYgKGNvdW50ID09PSAxKSB7XG4gICAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvcndhcmRBcmd1bWVudHMucG9wKCk7IC8vL1xuXG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgY291bnQgKyAxLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICAgIGlmIChleGNlcHRpb24pIHtcbiAgICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5leHQoaW5kZXggKyAxLCBjb3VudCwgLi4ubmV4dEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5kZXggPSAwLFxuICAgICAgICBjb3VudCA9IDA7XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIGNvdW50KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNvbWUoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgpIHtcbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudCxcbiAgICAgIC4uLmluaXRpYWxBcmd1bWVudHMsXG4gICAgICBmb3J3YXJkLFxuICAgICAgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgICBpZiAoZXhjZXB0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIGJhY2soZXhjZXB0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSk7XG4gICAgICB9LFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5kZXggPSAwO1xuXG4gIHJldHVybiBuZXh0KGluZGV4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVhY2goYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIGNvdW50LCAuLi5uZXh0QXJndW1lbnRzKSB7XG4gICAgY29uc3QgYmFjayA9IG5leHRBcmd1bWVudHMucG9wKCk7XG5cbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgaWYgKGNvdW50ID09PSAwKSB7XG4gICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgICguLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgY291bnQgKyAxLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBiYWNrLFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5kZXggPSAwLFxuICAgICAgICBjb3VudCA9IDA7XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIGNvdW50LCAuLi5pbml0aWFsQXJndW1lbnRzLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV2ZXJ5KGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4LCAuLi5uZXh0QXJndW1lbnRzKSB7XG4gICAgY29uc3QgYmFjayA9IG5leHRBcmd1bWVudHMucG9wKCk7XG5cbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoLi4ubmV4dEFyZ3VtZW50cywgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhcbiAgICAgIGVsZW1lbnQsXG4gICAgICAuLi5uZXh0QXJndW1lbnRzLFxuICAgICAgKC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgcmV0dXJuIG5leHQoaW5kZXggKyAxLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBiYWNrLFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5kZXggPSAwO1xuXG4gIHJldHVybiBuZXh0KGluZGV4LCAuLi5pbml0aWFsQXJndW1lbnRzLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcChhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBhcnJheUEgPSBhcnJheSwgLy8vXG4gICAgICAgIGFycmF5QiA9IFtdLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgYXJyYXlCLCAuLi5uZXh0QXJndW1lbnRzKSB7XG4gICAgY29uc3QgYmFjayA9IG5leHRBcmd1bWVudHMucG9wKCk7XG5cbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoYXJyYXlCLCAuLi5uZXh0QXJndW1lbnRzLCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50QSA9IGFycmF5QVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50QSxcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAoZWxlbWVudEIsIC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgcmV0dXJuIG5leHQoaW5kZXggKyAxLCBbIC4uLmFycmF5QiwgZWxlbWVudEIgXSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gMDtcblxuICByZXR1cm4gbmV4dChpbmRleCwgYXJyYXlCLCAuLi5pbml0aWFsQXJndW1lbnRzLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZHVjZShhcnJheSwgaW5pdGlhbFZhbHVlLCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4LCB2YWx1ZSwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKHZhbHVlLCAuLi5uZXh0QXJndW1lbnRzLCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudCxcbiAgICAgIHZhbHVlLFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgICh2YWx1ZSwgLi4uZm9yd2FyZEFyZ3VtZW50cykgPT4ge1xuICAgICAgICByZXR1cm4gbmV4dChpbmRleCArIDEsIHZhbHVlLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBiYWNrLFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5kZXggPSAwO1xuXG4gIHJldHVybiBuZXh0KGluZGV4LCBpbml0aWFsVmFsdWUsIC4uLmluaXRpYWxBcmd1bWVudHMsIGJhY2spO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yRWFjaChhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgICguLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gMDtcblxuICByZXR1cm4gbmV4dChpbmRleCwgLi4uaW5pdGlhbEFyZ3VtZW50cywgYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXIoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZGVsZXRlZEVsZW1lbnRzID0gW10sXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4LCAuLi5uZXh0QXJndW1lbnRzKSB7XG4gICAgY29uc3QgYmFjayA9IG5leHRBcmd1bWVudHMucG9wKCk7XG5cbiAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZChkZWxldGVkRWxlbWVudHMsIC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgIChwYXNzZWQsIC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICBjb25zdCBzdGFydEluZGV4ID0gaW5kZXgsIC8vL1xuICAgICAgICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMSxcbiAgICAgICAgICAgICAgICBkZWxldGVkRWxlbWVudCA9IGVsZW1lbnQ7IC8vL1xuXG4gICAgICAgICAgYXJyYXkuc3BsaWNlKHN0YXJ0SW5kZXgsIGRlbGV0ZUNvdW50KTtcblxuICAgICAgICAgIGRlbGV0ZWRFbGVtZW50cy51bnNoaWZ0KGRlbGV0ZWRFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4IC0gMSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gbGVuZ3RoIC0gMTtcblxuICByZXR1cm4gbmV4dChpbmRleCwgLi4uaW5pdGlhbEFyZ3VtZW50cywgYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcnVuZShhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIGNvbnN0IGRlbGV0ZWRFbGVtZW50ID0gdW5kZWZpbmVkO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChkZWxldGVkRWxlbWVudCwgLi4ubmV4dEFyZ3VtZW50cywgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhcbiAgICAgIGVsZW1lbnQsXG4gICAgICAuLi5uZXh0QXJndW1lbnRzLFxuICAgICAgKHBhc3NlZCwgLi4uZm9yd2FyZEFyZ3VtZW50cykgPT4ge1xuICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBpbmRleCwgLy8vXG4gICAgICAgICAgICAgICAgZGVsZXRlQ291bnQgPSAxLFxuICAgICAgICAgICAgICAgIGRlbGV0ZWRFbGVtZW50ID0gZWxlbWVudDsgLy8vXG5cbiAgICAgICAgICBhcnJheS5zcGxpY2Uoc3RhcnRJbmRleCwgZGVsZXRlQ291bnQpO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoZGVsZXRlZEVsZW1lbnQsIC4uLmZvcndhcmRBcmd1bWVudHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5leHQoaW5kZXggKyAxLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBiYWNrLFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5kZXggPSAwO1xuXG4gIHJldHVybiBuZXh0KGluZGV4LCAuLi5pbml0aWFsQXJndW1lbnRzLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3QoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIC4uLm5leHRBcmd1bWVudHMpIHtcbiAgICBjb25zdCBiYWNrID0gbmV4dEFyZ3VtZW50cy5wb3AoKTtcblxuICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgICBjb25zdCBkZWxldGVkRWxlbWVudCA9IHVuZGVmaW5lZDtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoZGVsZXRlZEVsZW1lbnQsIC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgIChwYXNzZWQsIC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBpbmRleCwgLy8vXG4gICAgICAgICAgICAgICAgZGVsZXRlQ291bnQgPSAxLFxuICAgICAgICAgICAgICAgIGRlbGV0ZWRFbGVtZW50ID0gZWxlbWVudDsgLy8vXG5cbiAgICAgICAgICBhcnJheS5zcGxpY2Uoc3RhcnRJbmRleCwgZGVsZXRlQ291bnQpO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoZGVsZXRlZEVsZW1lbnQsIC4uLmZvcndhcmRBcmd1bWVudHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5leHQoaW5kZXggKyAxLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBiYWNrLFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5kZXggPSAwO1xuXG4gIHJldHVybiBuZXh0KGluZGV4LCAuLi5pbml0aWFsQXJndW1lbnRzLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmQoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZWxlbWVudHMgPSBbXSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIGVsZW1lbnRzLCAuLi5uZXh0QXJndW1lbnRzKSB7XG4gICAgY29uc3QgYmFjayA9IG5leHRBcmd1bWVudHMucG9wKCk7XG5cbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoZWxlbWVudHMsIC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgIChwYXNzZWQsIC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgWyAuLi5lbGVtZW50cywgZWxlbWVudCBdLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgZWxlbWVudHMsIC4uLmZvcndhcmRBcmd1bWVudHMpO1xuICAgICAgfSxcbiAgICAgIGJhY2ssXG4gICAgICBpbmRleFxuICAgICk7XG4gIH1cblxuICBjb25zdCBpbmRleCA9IDA7XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIGVsZW1lbnRzLCAuLi5pbml0aWFsQXJndW1lbnRzLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmUoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgYXJyYXlBID0gYXJyYXksIC8vL1xuICAgICAgICBhcnJheUIgPSBbXTtcblxuICBmdW5jdGlvbiBuZXh0KGFycmF5QSwgYXJyYXlCLCAuLi5uZXh0QXJndW1lbnRzKSB7XG4gICAgY29uc3QgYmFjayA9IG5leHRBcmd1bWVudHMucG9wKCksXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXlBLmxlbmd0aDtcblxuICAgIGlmIChsZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKGFycmF5QiwgLi4ubmV4dEFyZ3VtZW50cywgYmFjayk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbmQoXG4gICAgICBhcnJheUEsXG4gICAgICAoZWxlbWVudCwgLi4uY2FsbGJhY2tBcmd1bWVudHMpID0+IHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBjYWxsYmFja0FyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgICAgICAgYmFjayA9IGNhbGxiYWNrQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICAgICAgICBmb3J3YXJkID0gY2FsbGJhY2tBcmd1bWVudHMucG9wKCk7XG5cbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgLi4uY2FsbGJhY2tBcmd1bWVudHMsXG4gICAgICAgICAgKC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSB0cnVlO1xuXG4gICAgICAgICAgICByZXR1cm4gZm9yd2FyZChzdWNjZXNzLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIChleGNlcHRpb24pID0+IHtcbiAgICAgICAgICAgIGlmIChleGNlcHRpb24pIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGJhY2soZXhjZXB0aW9uKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgICAgICByZXR1cm4gZm9yd2FyZChzdWNjZXNzLCAuLi5jYWxsYmFja0FyZ3VtZW50cywgYmFjayk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBpbmRleFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAoZWxlbWVudHMsIC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudHNMZW5ndGggPSBlbGVtZW50cy5sZW5ndGg7XG5cbiAgICAgICAgaWYgKGVsZW1lbnRzTGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0KFxuICAgICAgICAgIGFycmF5QS5maWx0ZXIoKGVsZW1lbnQpID0+ICFlbGVtZW50cy5pbmNsdWRlcyhlbGVtZW50KSksXG4gICAgICAgICAgWyAuLi5hcnJheUIsIC4uLmVsZW1lbnRzIF0sXG4gICAgICAgICAgLi4uZm9yd2FyZEFyZ3VtZW50c1xuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIGJhY2tcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG5leHQoYXJyYXlBLCBhcnJheUIsIC4uLmluaXRpYWxBcmd1bWVudHMsIGJhY2spO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2goYXJyYXlBLCBhcnJheUIsIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgYXJyYXlBTGVuZ3RoID0gYXJyYXlBLmxlbmd0aCxcbiAgICAgICAgYXJyYXlCTGVuZ3RoID0gYXJyYXlCLmxlbmd0aCxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXlBTGVuZ3RoOyAgLy8vXG5cbiAgaWYgKGFycmF5QUxlbmd0aCAhPT0gYXJyYXlCTGVuZ3RoKSB7XG4gICAgcmV0dXJuIGJhY2soKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIC4uLm5leHRBcmd1bWVudHMpIHtcbiAgICBjb25zdCBiYWNrID0gbmV4dEFyZ3VtZW50cy5wb3AoKTtcblxuICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZCguLi5uZXh0QXJndW1lbnRzLCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50QSA9IGFycmF5QVtpbmRleF0sXG4gICAgICAgICAgZWxlbWVudEIgPSBhcnJheUJbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudEEsXG4gICAgICBlbGVtZW50QixcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAoLi4uZm9yd2FyZEFyZ3VtZW50cykgPT4ge1xuICAgICAgICByZXR1cm4gbmV4dChpbmRleCArIDEsIC4uLmZvcndhcmRBcmd1bWVudHMpO1xuICAgICAgfSxcbiAgICAgIGJhY2ssXG4gICAgICBpbmRleFxuICAgICk7XG4gIH1cblxuICBjb25zdCBpbmRleCA9IDA7XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIC4uLmluaXRpYWxBcmd1bWVudHMsIGJhY2spO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNFdmVyeShhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgICguLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gMDtcblxuICByZXR1cm4gbmV4dChpbmRleCwgLi4uaW5pdGlhbEFyZ3VtZW50cywgYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNFdmVyeShhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoLi4ubmV4dEFyZ3VtZW50cywgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhcbiAgICAgIGVsZW1lbnQsXG4gICAgICAuLi5uZXh0QXJndW1lbnRzLFxuICAgICAgKC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgcmV0dXJuIG5leHQoaW5kZXggLSAxLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBiYWNrLFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5kZXggPSBsZW5ndGggLSAxO1xuXG4gIHJldHVybiBuZXh0KGluZGV4LCAuLi5pbml0aWFsQXJndW1lbnRzLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcndhcmRzRm9yRWFjaChhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgICguLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gMDtcblxuICByZXR1cm4gbmV4dChpbmRleCwgLi4uaW5pdGlhbEFyZ3VtZW50cywgYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNGb3JFYWNoKGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4LCAuLi5uZXh0QXJndW1lbnRzKSB7XG4gICAgY29uc3QgYmFjayA9IG5leHRBcmd1bWVudHMucG9wKCk7XG5cbiAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZCguLi5uZXh0QXJndW1lbnRzLCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudCxcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAoLi4uZm9yd2FyZEFyZ3VtZW50cykgPT4ge1xuICAgICAgICByZXR1cm4gbmV4dChpbmRleCAtIDEsIC4uLmZvcndhcmRBcmd1bWVudHMpO1xuICAgICAgfSxcbiAgICAgIGJhY2ssXG4gICAgICBpbmRleFxuICAgICk7XG4gIH1cblxuICBjb25zdCBpbmRleCA9IGxlbmd0aCAtIDE7XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIC4uLmluaXRpYWxBcmd1bWVudHMsIGJhY2spO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxsKGNhbGxiYWNrcywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICByZXR1cm4gZXZlcnkoY2FsbGJhY2tzLCAoY2FsbGJhY2ssIC4uLmNhbGxiYWNrQXJndW1lbnRzKSA9PiB7XG4gICAgcmV0dXJuIGNhbGxiYWNrKC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbiAgfSwgLi4uaW5pdGlhbEFyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleGlzdHMoY2FsbGJhY2tzLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIHJldHVybiBzb21lKGNhbGxiYWNrcywgKGNhbGxiYWNrLCAuLi5jYWxsYmFja0FyZ3VtZW50cykgPT4ge1xuICAgIHJldHVybiBjYWxsYmFjayguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG4gIH0sIC4uLmluaXRpYWxBcmd1bWVudHMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG9uZSxcbiAgc29tZSxcbiAgZWFjaCxcbiAgZXZlcnksXG4gIG1hcCxcbiAgcmVkdWNlLFxuICBmb3JFYWNoLFxuICBmaWx0ZXIsXG4gIHBydW5lLFxuICBleHRyYWN0LFxuICBmaW5kLFxuICByZXNvbHZlLFxuICBtYXRjaCxcbiAgZm9yd2FyZHNFdmVyeSxcbiAgYmFja3dhcmRzRXZlcnksXG4gIGZvcndhcmRzRm9yRWFjaCxcbiAgYmFja3dhcmRzRm9yRWFjaCxcbiAgYWxsLFxuICBleGlzdHNcbn07XG4iXSwibmFtZXMiOlsiYWxsIiwiYmFja3dhcmRzRXZlcnkiLCJiYWNrd2FyZHNGb3JFYWNoIiwiZWFjaCIsImV2ZXJ5IiwiZXhpc3RzIiwiZXh0cmFjdCIsImZpbHRlciIsImZpbmQiLCJmb3JFYWNoIiwiZm9yd2FyZHNFdmVyeSIsImZvcndhcmRzRm9yRWFjaCIsIm1hcCIsIm1hdGNoIiwib25lIiwicHJ1bmUiLCJyZWR1Y2UiLCJyZXNvbHZlIiwic29tZSIsImFycmF5IiwiY2FsbGJhY2siLCJpbml0aWFsQXJndW1lbnRzIiwiYmFjayIsInBvcCIsImZvcndhcmQiLCJsZW5ndGgiLCJuZXh0IiwiaW5kZXgiLCJjb3VudCIsIm5leHRBcmd1bWVudHMiLCJlbGVtZW50IiwiZm9yd2FyZEFyZ3VtZW50cyIsImV4Y2VwdGlvbiIsImFycmF5QSIsImFycmF5QiIsImVsZW1lbnRBIiwiZWxlbWVudEIiLCJpbml0aWFsVmFsdWUiLCJ2YWx1ZSIsImRlbGV0ZWRFbGVtZW50cyIsInBhc3NlZCIsInN0YXJ0SW5kZXgiLCJkZWxldGVDb3VudCIsImRlbGV0ZWRFbGVtZW50Iiwic3BsaWNlIiwidW5zaGlmdCIsInVuZGVmaW5lZCIsImVsZW1lbnRzIiwiY2FsbGJhY2tBcmd1bWVudHMiLCJzdWNjZXNzIiwiZWxlbWVudHNMZW5ndGgiLCJpbmNsdWRlcyIsImFycmF5QUxlbmd0aCIsImFycmF5Qkxlbmd0aCIsImNhbGxiYWNrcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBeW1CZ0JBO2VBQUFBOztRQTFGQUM7ZUFBQUE7O1FBNERBQztlQUFBQTs7UUEwQ2hCO2VBQUE7O1FBdGlCZ0JDO2VBQUFBOztRQW1DQUM7ZUFBQUE7O1FBNmZBQztlQUFBQTs7UUEvU0FDO2VBQUFBOztRQW5GQUM7ZUFBQUE7O1FBNkhBQztlQUFBQTs7UUEzSkFDO2VBQUFBOztRQWtTQUM7ZUFBQUE7O1FBNERBQztlQUFBQTs7UUE3WkFDO2VBQUFBOztRQTJUQUM7ZUFBQUE7O1FBemNBQztlQUFBQTs7UUFvUkFDO2VBQUFBOztRQXRHQUM7ZUFBQUE7O1FBNk5BQztlQUFBQTs7UUE5VkFDO2VBQUFBOzs7QUE3Q1QsU0FBU0osSUFBSUssS0FBSyxFQUFFQyxRQUFRLEVBQUUsR0FBR0MsZ0JBQWdCO0lBQ3RELE1BQU1DLE9BQU9ELGlCQUFpQkUsR0FBRyxJQUMzQkMsVUFBVUgsaUJBQWlCRSxHQUFHLElBQzlCRSxTQUFTTixNQUFNTSxNQUFNO0lBRTNCLFNBQVNDLEtBQUtDLEtBQUssRUFBRUMsS0FBSyxFQUFFLEdBQUdDLGFBQWE7UUFDMUMsSUFBSUYsVUFBVUYsUUFBUTtZQUNwQixJQUFJRyxVQUFVLEdBQUc7Z0JBQ2YsT0FBT047WUFDVDtZQUVBLE9BQU9F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
|
|
432
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udGludWF0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3V0KGZvcndhcmQsIGJhY2spIHtcbiAgcmV0dXJuICguLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgZm9yd2FyZEFyZ3VtZW50cy5wb3AoKTsgLy8vXG5cbiAgICByZXR1cm4gZm9yd2FyZCguLi5mb3J3YXJkQXJndW1lbnRzLCBiYWNrKTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9uZShhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgY291bnQsIC4uLm5leHRBcmd1bWVudHMpIHtcbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgaWYgKGNvdW50ID09PSAwKSB7XG4gICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4uaW5pdGlhbEFyZ3VtZW50cyxcbiAgICAgICguLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIGlmIChjb3VudCA9PT0gMSkge1xuICAgICAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3J3YXJkQXJndW1lbnRzLnBvcCgpOyAvLy9cblxuICAgICAgICByZXR1cm4gbmV4dChpbmRleCArIDEsIGNvdW50ICsgMSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgICBpZiAoZXhjZXB0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIGJhY2soZXhjZXB0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgY291bnQsIC4uLm5leHRBcmd1bWVudHMpO1xuICAgICAgfSxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gMCxcbiAgICAgICAgY291bnQgPSAwO1xuXG4gIHJldHVybiBuZXh0KGluZGV4LCBjb3VudCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzb21lKGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4KSB7XG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhcbiAgICAgIGVsZW1lbnQsXG4gICAgICAuLi5pbml0aWFsQXJndW1lbnRzLFxuICAgICAgZm9yd2FyZCxcbiAgICAgIChleGNlcHRpb24pID0+IHtcbiAgICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV4dChpbmRleCArIDEpO1xuICAgICAgfSxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gMDtcblxuICByZXR1cm4gbmV4dChpbmRleCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlYWNoKGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4LCBjb3VudCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIGlmIChjb3VudCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gYmFjaygpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm9yd2FyZCguLi5uZXh0QXJndW1lbnRzLCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudCxcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAoLi4uZm9yd2FyZEFyZ3VtZW50cykgPT4ge1xuICAgICAgICByZXR1cm4gbmV4dChpbmRleCArIDEsIGNvdW50ICsgMSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gMCxcbiAgICAgICAgY291bnQgPSAwO1xuXG4gIHJldHVybiBuZXh0KGluZGV4LCBjb3VudCwgLi4uaW5pdGlhbEFyZ3VtZW50cywgYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBldmVyeShhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgICguLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gMDtcblxuICByZXR1cm4gbmV4dChpbmRleCwgLi4uaW5pdGlhbEFyZ3VtZW50cywgYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXAoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgYXJyYXlBID0gYXJyYXksIC8vL1xuICAgICAgICBhcnJheUIgPSBbXSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIGFycmF5QiwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKGFycmF5QiwgLi4ubmV4dEFyZ3VtZW50cywgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudEEgPSBhcnJheUFbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudEEsXG4gICAgICAuLi5uZXh0QXJndW1lbnRzLFxuICAgICAgKGVsZW1lbnRCLCAuLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgWyAuLi5hcnJheUIsIGVsZW1lbnRCIF0sIC4uLmZvcndhcmRBcmd1bWVudHMpO1xuICAgICAgfSxcbiAgICAgIGJhY2ssXG4gICAgICBpbmRleFxuICAgICk7XG4gIH1cblxuICBjb25zdCBpbmRleCA9IDA7XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIGFycmF5QiwgLi4uaW5pdGlhbEFyZ3VtZW50cywgYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWR1Y2UoYXJyYXksIGluaXRpYWxWYWx1ZSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgdmFsdWUsIC4uLm5leHRBcmd1bWVudHMpIHtcbiAgICBjb25zdCBiYWNrID0gbmV4dEFyZ3VtZW50cy5wb3AoKTtcblxuICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZCh2YWx1ZSwgLi4ubmV4dEFyZ3VtZW50cywgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhcbiAgICAgIGVsZW1lbnQsXG4gICAgICB2YWx1ZSxcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAodmFsdWUsIC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgcmV0dXJuIG5leHQoaW5kZXggKyAxLCB2YWx1ZSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gMDtcblxuICByZXR1cm4gbmV4dChpbmRleCwgaW5pdGlhbFZhbHVlLCAuLi5pbml0aWFsQXJndW1lbnRzLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvckVhY2goYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIC4uLm5leHRBcmd1bWVudHMpIHtcbiAgICBjb25zdCBiYWNrID0gbmV4dEFyZ3VtZW50cy5wb3AoKTtcblxuICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZCguLi5uZXh0QXJndW1lbnRzLCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudCxcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAoLi4uZm9yd2FyZEFyZ3VtZW50cykgPT4ge1xuICAgICAgICByZXR1cm4gbmV4dChpbmRleCArIDEsIC4uLmZvcndhcmRBcmd1bWVudHMpO1xuICAgICAgfSxcbiAgICAgIGJhY2ssXG4gICAgICBpbmRleFxuICAgICk7XG4gIH1cblxuICBjb25zdCBpbmRleCA9IDA7XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIC4uLmluaXRpYWxBcmd1bWVudHMsIGJhY2spO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyKGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGRlbGV0ZWRFbGVtZW50cyA9IFtdLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoZGVsZXRlZEVsZW1lbnRzLCAuLi5uZXh0QXJndW1lbnRzLCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudCxcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAocGFzc2VkLCAuLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgY29uc3Qgc3RhcnRJbmRleCA9IGluZGV4LCAvLy9cbiAgICAgICAgICAgICAgICBkZWxldGVDb3VudCA9IDEsXG4gICAgICAgICAgICAgICAgZGVsZXRlZEVsZW1lbnQgPSBlbGVtZW50OyAvLy9cblxuICAgICAgICAgIGFycmF5LnNwbGljZShzdGFydEluZGV4LCBkZWxldGVDb3VudCk7XG5cbiAgICAgICAgICBkZWxldGVkRWxlbWVudHMudW5zaGlmdChkZWxldGVkRWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV4dChpbmRleCAtIDEsIC4uLmZvcndhcmRBcmd1bWVudHMpO1xuICAgICAgfSxcbiAgICAgIGJhY2ssXG4gICAgICBpbmRleFxuICAgICk7XG4gIH1cblxuICBjb25zdCBpbmRleCA9IGxlbmd0aCAtIDE7XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIC4uLmluaXRpYWxBcmd1bWVudHMsIGJhY2spO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJ1bmUoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIC4uLm5leHRBcmd1bWVudHMpIHtcbiAgICBjb25zdCBiYWNrID0gbmV4dEFyZ3VtZW50cy5wb3AoKTtcblxuICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgICBjb25zdCBkZWxldGVkRWxlbWVudCA9IHVuZGVmaW5lZDtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoZGVsZXRlZEVsZW1lbnQsIC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgIChwYXNzZWQsIC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICBjb25zdCBzdGFydEluZGV4ID0gaW5kZXgsIC8vL1xuICAgICAgICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMSxcbiAgICAgICAgICAgICAgICBkZWxldGVkRWxlbWVudCA9IGVsZW1lbnQ7IC8vL1xuXG4gICAgICAgICAgYXJyYXkuc3BsaWNlKHN0YXJ0SW5kZXgsIGRlbGV0ZUNvdW50KTtcblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGRlbGV0ZWRFbGVtZW50LCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gMDtcblxuICByZXR1cm4gbmV4dChpbmRleCwgLi4uaW5pdGlhbEFyZ3VtZW50cywgYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0KGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4LCAuLi5uZXh0QXJndW1lbnRzKSB7XG4gICAgY29uc3QgYmFjayA9IG5leHRBcmd1bWVudHMucG9wKCk7XG5cbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgY29uc3QgZGVsZXRlZEVsZW1lbnQgPSB1bmRlZmluZWQ7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGRlbGV0ZWRFbGVtZW50LCAuLi5uZXh0QXJndW1lbnRzLCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudCxcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAocGFzc2VkLCAuLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIGlmIChwYXNzZWQpIHtcbiAgICAgICAgICBjb25zdCBzdGFydEluZGV4ID0gaW5kZXgsIC8vL1xuICAgICAgICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMSxcbiAgICAgICAgICAgICAgICBkZWxldGVkRWxlbWVudCA9IGVsZW1lbnQ7IC8vL1xuXG4gICAgICAgICAgYXJyYXkuc3BsaWNlKHN0YXJ0SW5kZXgsIGRlbGV0ZUNvdW50KTtcblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGRlbGV0ZWRFbGVtZW50LCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gMDtcblxuICByZXR1cm4gbmV4dChpbmRleCwgLi4uaW5pdGlhbEFyZ3VtZW50cywgYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kKGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGVsZW1lbnRzID0gW10sXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4LCBlbGVtZW50cywgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKGVsZW1lbnRzLCAuLi5uZXh0QXJndW1lbnRzLCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudCxcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAocGFzc2VkLCAuLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIGlmIChwYXNzZWQpIHtcbiAgICAgICAgICByZXR1cm4gbmV4dChpbmRleCArIDEsIFsgLi4uZWxlbWVudHMsIGVsZW1lbnQgXSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV4dChpbmRleCArIDEsIGVsZW1lbnRzLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBiYWNrLFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5kZXggPSAwO1xuXG4gIHJldHVybiBuZXh0KGluZGV4LCBlbGVtZW50cywgLi4uaW5pdGlhbEFyZ3VtZW50cywgYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlKGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGFycmF5QSA9IGFycmF5LCAvLy9cbiAgICAgICAgYXJyYXlCID0gW107XG5cbiAgZnVuY3Rpb24gbmV4dChhcnJheUEsIGFycmF5QiwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5QS5sZW5ndGg7XG5cbiAgICBpZiAobGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZChhcnJheUIsIC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIHJldHVybiBmaW5kKFxuICAgICAgYXJyYXlBLFxuICAgICAgKGVsZW1lbnQsIC4uLmNhbGxiYWNrQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gY2FsbGJhY2tBcmd1bWVudHMucG9wKCksXG4gICAgICAgICAgICAgIGJhY2sgPSBjYWxsYmFja0FyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgICAgICAgZm9yd2FyZCA9IGNhbGxiYWNrQXJndW1lbnRzLnBvcCgpO1xuXG4gICAgICAgIHJldHVybiBjYWxsYmFjayhcbiAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgIC4uLmNhbGxiYWNrQXJndW1lbnRzLFxuICAgICAgICAgICguLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXNzZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICByZXR1cm4gZm9yd2FyZChwYXNzZWQsIC4uLmZvcndhcmRBcmd1bWVudHMpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBwYXNzZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgcmV0dXJuIGZvcndhcmQocGFzc2VkLCAuLi5jYWxsYmFja0FyZ3VtZW50cywgYmFjayk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBpbmRleFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAoZWxlbWVudHMsIC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudHNMZW5ndGggPSBlbGVtZW50cy5sZW5ndGg7XG5cbiAgICAgICAgaWYgKGVsZW1lbnRzTGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0KFxuICAgICAgICAgIGFycmF5QS5maWx0ZXIoKGVsZW1lbnQpID0+ICFlbGVtZW50cy5pbmNsdWRlcyhlbGVtZW50KSksXG4gICAgICAgICAgWyAuLi5hcnJheUIsIC4uLmVsZW1lbnRzIF0sXG4gICAgICAgICAgLi4uZm9yd2FyZEFyZ3VtZW50c1xuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIGJhY2tcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG5leHQoYXJyYXlBLCBhcnJheUIsIC4uLmluaXRpYWxBcmd1bWVudHMsIGJhY2spO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2goYXJyYXlBLCBhcnJheUIsIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGJhY2sgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBmb3J3YXJkID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgYXJyYXlBTGVuZ3RoID0gYXJyYXlBLmxlbmd0aCxcbiAgICAgICAgYXJyYXlCTGVuZ3RoID0gYXJyYXlCLmxlbmd0aCxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXlBTGVuZ3RoOyAgLy8vXG5cbiAgaWYgKGFycmF5QUxlbmd0aCAhPT0gYXJyYXlCTGVuZ3RoKSB7XG4gICAgcmV0dXJuIGJhY2soKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG5leHQoaW5kZXgsIC4uLm5leHRBcmd1bWVudHMpIHtcbiAgICBjb25zdCBiYWNrID0gbmV4dEFyZ3VtZW50cy5wb3AoKTtcblxuICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZCguLi5uZXh0QXJndW1lbnRzLCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50QSA9IGFycmF5QVtpbmRleF0sXG4gICAgICAgICAgZWxlbWVudEIgPSBhcnJheUJbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudEEsXG4gICAgICBlbGVtZW50QixcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAoLi4uZm9yd2FyZEFyZ3VtZW50cykgPT4ge1xuICAgICAgICByZXR1cm4gbmV4dChpbmRleCArIDEsIC4uLmZvcndhcmRBcmd1bWVudHMpO1xuICAgICAgfSxcbiAgICAgIGJhY2ssXG4gICAgICBpbmRleFxuICAgICk7XG4gIH1cblxuICBjb25zdCBpbmRleCA9IDA7XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIC4uLmluaXRpYWxBcmd1bWVudHMsIGJhY2spO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNFdmVyeShhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgICguLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gMDtcblxuICByZXR1cm4gbmV4dChpbmRleCwgLi4uaW5pdGlhbEFyZ3VtZW50cywgYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNFdmVyeShhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoLi4ubmV4dEFyZ3VtZW50cywgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhcbiAgICAgIGVsZW1lbnQsXG4gICAgICAuLi5uZXh0QXJndW1lbnRzLFxuICAgICAgKC4uLmZvcndhcmRBcmd1bWVudHMpID0+IHtcbiAgICAgICAgcmV0dXJuIG5leHQoaW5kZXggLSAxLCAuLi5mb3J3YXJkQXJndW1lbnRzKTtcbiAgICAgIH0sXG4gICAgICBiYWNrLFxuICAgICAgaW5kZXhcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5kZXggPSBsZW5ndGggLSAxO1xuXG4gIHJldHVybiBuZXh0KGluZGV4LCAuLi5pbml0aWFsQXJndW1lbnRzLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcndhcmRzRm9yRWFjaChhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgYmFjayA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGZvcndhcmQgPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChpbmRleCwgLi4ubmV4dEFyZ3VtZW50cykge1xuICAgIGNvbnN0IGJhY2sgPSBuZXh0QXJndW1lbnRzLnBvcCgpO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBmb3J3YXJkKC4uLm5leHRBcmd1bWVudHMsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soXG4gICAgICBlbGVtZW50LFxuICAgICAgLi4ubmV4dEFyZ3VtZW50cyxcbiAgICAgICguLi5mb3J3YXJkQXJndW1lbnRzKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXh0KGluZGV4ICsgMSwgLi4uZm9yd2FyZEFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgYmFjayxcbiAgICAgIGluZGV4XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluZGV4ID0gMDtcblxuICByZXR1cm4gbmV4dChpbmRleCwgLi4uaW5pdGlhbEFyZ3VtZW50cywgYmFjayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNGb3JFYWNoKGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBiYWNrID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgZm9yd2FyZCA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmdW5jdGlvbiBuZXh0KGluZGV4LCAuLi5uZXh0QXJndW1lbnRzKSB7XG4gICAgY29uc3QgYmFjayA9IG5leHRBcmd1bWVudHMucG9wKCk7XG5cbiAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZCguLi5uZXh0QXJndW1lbnRzLCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKFxuICAgICAgZWxlbWVudCxcbiAgICAgIC4uLm5leHRBcmd1bWVudHMsXG4gICAgICAoLi4uZm9yd2FyZEFyZ3VtZW50cykgPT4ge1xuICAgICAgICByZXR1cm4gbmV4dChpbmRleCAtIDEsIC4uLmZvcndhcmRBcmd1bWVudHMpO1xuICAgICAgfSxcbiAgICAgIGJhY2ssXG4gICAgICBpbmRleFxuICAgICk7XG4gIH1cblxuICBjb25zdCBpbmRleCA9IGxlbmd0aCAtIDE7XG5cbiAgcmV0dXJuIG5leHQoaW5kZXgsIC4uLmluaXRpYWxBcmd1bWVudHMsIGJhY2spO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxsKGNhbGxiYWNrcywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICByZXR1cm4gZXZlcnkoY2FsbGJhY2tzLCAoY2FsbGJhY2ssIC4uLmNhbGxiYWNrQXJndW1lbnRzKSA9PiB7XG4gICAgcmV0dXJuIGNhbGxiYWNrKC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbiAgfSwgLi4uaW5pdGlhbEFyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleGlzdHMoY2FsbGJhY2tzLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIHJldHVybiBzb21lKGNhbGxiYWNrcywgKGNhbGxiYWNrLCAuLi5jYWxsYmFja0FyZ3VtZW50cykgPT4ge1xuICAgIHJldHVybiBjYWxsYmFjayguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG4gIH0sIC4uLmluaXRpYWxBcmd1bWVudHMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGN1dCxcbiAgb25lLFxuICBzb21lLFxuICBlYWNoLFxuICBldmVyeSxcbiAgbWFwLFxuICByZWR1Y2UsXG4gIGZvckVhY2gsXG4gIGZpbHRlcixcbiAgcHJ1bmUsXG4gIGV4dHJhY3QsXG4gIGZpbmQsXG4gIHJlc29sdmUsXG4gIG1hdGNoLFxuICBmb3J3YXJkc0V2ZXJ5LFxuICBiYWNrd2FyZHNFdmVyeSxcbiAgZm9yd2FyZHNGb3JFYWNoLFxuICBiYWNrd2FyZHNGb3JFYWNoLFxuICBhbGwsXG4gIGV4aXN0c1xufTtcbiJdLCJuYW1lcyI6WyJhbGwiLCJiYWNrd2FyZHNFdmVyeSIsImJhY2t3YXJkc0ZvckVhY2giLCJjdXQiLCJlYWNoIiwiZXZlcnkiLCJleGlzdHMiLCJleHRyYWN0IiwiZmlsdGVyIiwiZmluZCIsImZvckVhY2giLCJmb3J3YXJkc0V2ZXJ5IiwiZm9yd2FyZHNGb3JFYWNoIiwibWFwIiwibWF0Y2giLCJvbmUiLCJwcnVuZSIsInJlZHVjZSIsInJlc29sdmUiLCJzb21lIiwiZm9yd2FyZCIsImJhY2siLCJmb3J3YXJkQXJndW1lbnRzIiwicG9wIiwiYXJyYXkiLCJjYWxsYmFjayIsImluaXRpYWxBcmd1bWVudHMiLCJsZW5ndGgiLCJuZXh0IiwiaW5kZXgiLCJjb3VudCIsIm5leHRBcmd1bWVudHMiLCJlbGVtZW50IiwiZXhjZXB0aW9uIiwiYXJyYXlBIiwiYXJyYXlCIiwiZWxlbWVudEEiLCJlbGVtZW50QiIsImluaXRpYWxWYWx1ZSIsInZhbHVlIiwiZGVsZXRlZEVsZW1lbnRzIiwicGFzc2VkIiwic3RhcnRJbmRleCIsImRlbGV0ZUNvdW50IiwiZGVsZXRlZEVsZW1lbnQiLCJzcGxpY2UiLCJ1bnNoaWZ0IiwidW5kZWZpbmVkIiwiZWxlbWVudHMiLCJjYWxsYmFja0FyZ3VtZW50cyIsImVsZW1lbnRzTGVuZ3RoIiwiaW5jbHVkZXMiLCJhcnJheUFMZW5ndGgiLCJhcnJheUJMZW5ndGgiLCJjYWxsYmFja3MiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQWluQmdCQTtlQUFBQTs7UUExRkFDO2VBQUFBOztRQTREQUM7ZUFBQUE7O1FBamxCQUM7ZUFBQUE7O1FBMm5CaEI7ZUFBQTs7UUF0aUJnQkM7ZUFBQUE7O1FBbUNBQztlQUFBQTs7UUE2ZkFDO2VBQUFBOztRQS9TQUM7ZUFBQUE7O1FBbkZBQztlQUFBQTs7UUE2SEFDO2VBQUFBOztRQTNKQUM7ZUFBQUE7O1FBa1NBQztlQUFBQTs7UUE0REFDO2VBQUFBOztRQTdaQUM7ZUFBQUE7O1FBMlRBQztlQUFBQTs7UUF6Y0FDO2VBQUFBOztRQW9SQUM7ZUFBQUE7O1FBdEdBQztlQUFBQTs7UUE2TkFDO2VBQUFBOztRQTlWQUM7ZUFBQUE7OztBQXJEVCxTQUFTaEIsSUFBSWlCLE9BQU8sRUFBRUMsSUFBSTtJQUMvQixPQUFPLENBQUMsR0FBR0M7UUFDVEEsaUJBQWlC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
|
package/lib/utilities/verify.js
CHANGED
|
@@ -21,7 +21,7 @@ const _continuation = require("../utilities/continuation");
|
|
|
21
21
|
const { first, filter, compress } = _necessary.arrayUtilities;
|
|
22
22
|
function verifyFileContexts(fileContexts, forward, back) {
|
|
23
23
|
return (0, _continuation.resolve)(fileContexts, (fileContext, forward, back)=>{
|
|
24
|
-
return fileContext.verify(forward, back);
|
|
24
|
+
return fileContext.verify((0, _continuation.cut)(forward, back), back);
|
|
25
25
|
}, forward, back);
|
|
26
26
|
}
|
|
27
27
|
function verifyTypePrefixes(typePrefixes, releaseContext) {
|
|
@@ -50,4 +50,4 @@ function verifyTypePrefixes(typePrefixes, releaseContext) {
|
|
|
50
50
|
return typePrefixesVerify;
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdmVyaWZ5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgY3V0LCByZXNvbHZlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250aW51YXRpb25cIjtcblxuY29uc3QgeyBmaXJzdCwgZmlsdGVyLCBjb21wcmVzcyB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlGaWxlQ29udGV4dHMoZmlsZUNvbnRleHRzLCBmb3J3YXJkLCBiYWNrKSB7XG4gIHJldHVybiByZXNvbHZlKGZpbGVDb250ZXh0cywgKGZpbGVDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgcmV0dXJuIGZpbGVDb250ZXh0LnZlcmlmeShjdXQoZm9yd2FyZCwgYmFjayksIGJhY2spO1xuICB9LCBmb3J3YXJkLCBiYWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVR5cGVQcmVmaXhlcyh0eXBlUHJlZml4ZXMsIHJlbGVhc2VDb250ZXh0KSB7XG4gIGxldCB0eXBlUHJlZml4ZXNWZXJpZnkgPSB0cnVlO1xuXG4gIGNvbnN0IHR5cGVQcmVmaXhlc0xlbmd0aCA9IHR5cGVQcmVmaXhlcy5sZW5ndGgsXG4gICAgICAgIGNvbXByZXNzZWRUeXBlUHJlZml4ZXMgPSBbICAvLy9cbiAgICAgICAgICAuLi50eXBlUHJlZml4ZXMsXG4gICAgICAgIF07XG5cbiAgY29tcHJlc3MoY29tcHJlc3NlZFR5cGVQcmVmaXhlcywgKHR5cGVQcmVmaXhBLCB0eXBlUHJlZml4QikgPT4ge1xuICAgIGNvbnN0IHR5cGVQcmVmaXhBTmFtZSA9IHR5cGVQcmVmaXhBLmdldE5hbWUoKSxcbiAgICAgICAgICB0eXBlUHJlZml4Qk5hbWUgPSB0eXBlUHJlZml4Qi5nZXROYW1lKCk7XG5cbiAgICBpZiAodHlwZVByZWZpeEFOYW1lICE9PSB0eXBlUHJlZml4Qk5hbWUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgY29tcHJlc3NUeXBlUHJlZml4ZXNMZW5ndGggPSBjb21wcmVzc2VkVHlwZVByZWZpeGVzLmxlbmd0aDtcblxuICBpZiAodHlwZVByZWZpeGVzTGVuZ3RoID4gY29tcHJlc3NUeXBlUHJlZml4ZXNMZW5ndGgpIHtcbiAgICBmaWx0ZXIoY29tcHJlc3NlZFR5cGVQcmVmaXhlcywgKHR5cGVQcmVmaXgpID0+IHtcbiAgICAgIGNvbnN0IHR5cGVQcmVmaXhlc0luY2x1ZGVzVHlwZVByZWZpeCA9IHR5cGVQcmVmaXhlcy5pbmNsdWRlcyh0eXBlUHJlZml4KTtcblxuICAgICAgaWYgKCF0eXBlUHJlZml4ZXNJbmNsdWRlc1R5cGVQcmVmaXgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBmaXJzdFR5cGVQcmVmaXggPSBmaXJzdCh0eXBlUHJlZml4ZXMpLFxuICAgICAgICAgIHR5cGVQcmVmaXggPSBmaXJzdFR5cGVQcmVmaXgsIC8vL1xuICAgICAgICAgIHR5cGVQcmVmaXhTdHJpbmcgPSB0eXBlUHJlZml4LmdldFN0cmluZygpO1xuXG4gICAgcmVsZWFzZUNvbnRleHQuaW5mbyhgVGhlICcke3R5cGVQcmVmaXhTdHJpbmd9JyB0eXBlIHByZWZpeCBpcyBkdXBsaWNhdGVkLmApXG5cbiAgICB0eXBlUHJlZml4ZXNWZXJpZnkgPSBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0eXBlUHJlZml4ZXNWZXJpZnk7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5RmlsZUNvbnRleHRzIiwidmVyaWZ5VHlwZVByZWZpeGVzIiwiZmlyc3QiLCJmaWx0ZXIiLCJjb21wcmVzcyIsImFycmF5VXRpbGl0aWVzIiwiZmlsZUNvbnRleHRzIiwiZm9yd2FyZCIsImJhY2siLCJyZXNvbHZlIiwiZmlsZUNvbnRleHQiLCJ2ZXJpZnkiLCJjdXQiLCJ0eXBlUHJlZml4ZXMiLCJyZWxlYXNlQ29udGV4dCIsInR5cGVQcmVmaXhlc1ZlcmlmeSIsInR5cGVQcmVmaXhlc0xlbmd0aCIsImxlbmd0aCIsImNvbXByZXNzZWRUeXBlUHJlZml4ZXMiLCJ0eXBlUHJlZml4QSIsInR5cGVQcmVmaXhCIiwidHlwZVByZWZpeEFOYW1lIiwiZ2V0TmFtZSIsInR5cGVQcmVmaXhCTmFtZSIsImNvbXByZXNzVHlwZVByZWZpeGVzTGVuZ3RoIiwidHlwZVByZWZpeCIsInR5cGVQcmVmaXhlc0luY2x1ZGVzVHlwZVByZWZpeCIsImluY2x1ZGVzIiwiZmlyc3RUeXBlUHJlZml4IiwidHlwZVByZWZpeFN0cmluZyIsImdldFN0cmluZyIsImluZm8iXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQVFnQkE7ZUFBQUE7O1FBTUFDO2VBQUFBOzs7MkJBWmU7OEJBRUY7QUFFN0IsTUFBTSxFQUFFQyxLQUFLLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxFQUFFLEdBQUdDLHlCQUFjO0FBRTNDLFNBQVNMLG1CQUFtQk0sWUFBWSxFQUFFQyxPQUFPLEVBQUVDLElBQUk7SUFDNUQsT0FBT0MsSUFBQUEscUJBQU8sRUFBQ0gsY0FBYyxDQUFDSSxhQUFhSCxTQUFTQztRQUNsRCxPQUFPRSxZQUFZQyxNQUFNLENBQUNDLElBQUFBLGlCQUFHLEVBQUNMLFNBQVNDLE9BQU9BO0lBQ2hELEdBQUdELFNBQVNDO0FBQ2Q7QUFFTyxTQUFTUCxtQkFBbUJZLFlBQVksRUFBRUMsY0FBYztJQUM3RCxJQUFJQyxxQkFBcUI7SUFFekIsTUFBTUMscUJBQXFCSCxhQUFhSSxNQUFNLEVBQ3hDQyx5QkFBeUI7V0FDcEJMO0tBQ0o7SUFFUFQsU0FBU2Msd0JBQXdCLENBQUNDLGFBQWFDO1FBQzdDLE1BQU1DLGtCQUFrQkYsWUFBWUcsT0FBTyxJQUNyQ0Msa0JBQWtCSCxZQUFZRSxPQUFPO1FBRTNDLElBQUlELG9CQUFvQkUsaUJBQWlCO1lBQ3ZDLE9BQU87UUFDVDtJQUNGO0lBRUEsTUFBTUMsNkJBQTZCTix1QkFBdUJELE1BQU07SUFFaEUsSUFBSUQscUJBQXFCUSw0QkFBNEI7UUFDbkRyQixPQUFPZSx3QkFBd0IsQ0FBQ087WUFDOUIsTUFBTUMsaUNBQWlDYixhQUFhYyxRQUFRLENBQUNGO1lBRTdELElBQUksQ0FBQ0MsZ0NBQWdDO2dCQUNuQyxPQUFPO1lBQ1Q7UUFDRjtRQUVBLE1BQU1FLGtCQUFrQjFCLE1BQU1XLGVBQ3hCWSxhQUFhRyxpQkFDYkMsbUJBQW1CSixXQUFXSyxTQUFTO1FBRTdDaEIsZUFBZWlCLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRUYsaUJBQWlCLDRCQUE0QixDQUFDO1FBRTFFZCxxQkFBcUI7SUFDdkI7SUFFQSxPQUFPQTtBQUNUIn0=
|
package/package.json
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
export function cut(forward, back) {
|
|
4
|
+
return (...forwardArguments) => {
|
|
5
|
+
forwardArguments.pop(); ///
|
|
6
|
+
|
|
7
|
+
return forward(...forwardArguments, back);
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
|
|
3
11
|
export function one(array, callback, ...initialArguments) {
|
|
4
12
|
const back = initialArguments.pop(),
|
|
5
13
|
forward = initialArguments.pop(),
|
|
@@ -420,18 +428,18 @@ export function resolve(array, callback, ...initialArguments) {
|
|
|
420
428
|
element,
|
|
421
429
|
...callbackArguments,
|
|
422
430
|
(...forwardArguments) => {
|
|
423
|
-
const
|
|
431
|
+
const passed = true;
|
|
424
432
|
|
|
425
|
-
return forward(
|
|
433
|
+
return forward(passed, ...forwardArguments);
|
|
426
434
|
},
|
|
427
435
|
(exception) => {
|
|
428
436
|
if (exception) {
|
|
429
437
|
return back(exception);
|
|
430
438
|
}
|
|
431
439
|
|
|
432
|
-
const
|
|
440
|
+
const passed = false;
|
|
433
441
|
|
|
434
|
-
return forward(
|
|
442
|
+
return forward(passed, ...callbackArguments, back);
|
|
435
443
|
},
|
|
436
444
|
index
|
|
437
445
|
);
|
|
@@ -628,6 +636,7 @@ export function exists(callbacks, ...initialArguments) {
|
|
|
628
636
|
}
|
|
629
637
|
|
|
630
638
|
export default {
|
|
639
|
+
cut,
|
|
631
640
|
one,
|
|
632
641
|
some,
|
|
633
642
|
each,
|
package/src/utilities/verify.js
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
import { arrayUtilities } from "necessary";
|
|
4
4
|
|
|
5
|
-
import { resolve } from "../utilities/continuation";
|
|
5
|
+
import { cut, resolve } from "../utilities/continuation";
|
|
6
6
|
|
|
7
7
|
const { first, filter, compress } = arrayUtilities;
|
|
8
8
|
|
|
9
9
|
export function verifyFileContexts(fileContexts, forward, back) {
|
|
10
10
|
return resolve(fileContexts, (fileContext, forward, back) => {
|
|
11
|
-
return fileContext.verify(forward, back);
|
|
11
|
+
return fileContext.verify(cut(forward, back), back);
|
|
12
12
|
}, forward, back);
|
|
13
13
|
}
|
|
14
14
|
|