@dashkite/joy
Version:
[](https://firstdonoharm.dev/version/3/0/core.html)
166 lines (165 loc) • 17.1 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: Object.getOwnPropertyDescriptor(all, name).get
});
}
_export(exports, {
get all () {
return all;
},
get any () {
return any;
},
get attempt () {
return attempt;
},
get branch () {
return branch;
},
get negate () {
return negate;
},
get test () {
return test;
}
});
const _function = require("./function");
var _attempt, all, any, attempt, branch, isPromise, negate, test;
negate = function(f) {
return (0, _function.arity)(f.length, function(...ax) {
var r, ref;
if (((ref = r = (0, _function.apply)(f, ax)) != null ? ref.then : void 0) != null) {
return r.then(function(x) {
return !x;
});
} else {
return !r;
}
});
};
// We don't use Promise.all and Promise.any here because we want
// to 'short-circuit' execution as soon as the predicate fails
isPromise = function(value) {
return value instanceof Promise;
};
all = function(px) {
return (0, _function.arity)(px[0].length, function(...ax) {
var i, j, len, p, r;
for(i = j = 0, len = px.length; j < len; i = ++j){
p = px[i];
r = (0, _function.apply)(p, ax);
if (isPromise(r)) {
return r.then(function(r) {
if (r === true) {
if (i === px.length - 1) {
return true;
} else {
return (0, _function.apply)(all(px.slice(i + 1)), ax);
}
} else {
return false;
}
});
} else {
if (r === false) {
return false;
}
}
}
return true;
});
};
any = function(px) {
return (0, _function.arity)(px[0].length, function(...ax) {
var i, j, len, p, r;
for(i = j = 0, len = px.length; j < len; i = ++j){
p = px[i];
r = (0, _function.apply)(p, ax);
if (isPromise(r)) {
return r.then(function(r) {
if (r === true) {
return true;
} else if (i === px.length - 1) {
return false;
} else {
return (0, _function.apply)(any(px.slice(i + 1)), ax);
}
});
} else {
if (r === true) {
return true;
}
}
}
return false;
});
};
test = function(f, g) {
return (0, _function.arity)(g.length, function(...ax) {
var _f, r;
_f = function(r) {
if (r === true) {
(0, _function.apply)(g, ax);
return true;
} else {
return false;
}
};
if ((r = (0, _function.apply)(f, ax)).then != null) {
return r.then(_f);
} else {
return _f(r);
}
});
};
branch = function(fx) {
var f, g;
return any(function() {
var j, len, results;
results = [];
for(j = 0, len = fx.length; j < len; j++){
[f, g] = fx[j];
results.push(test(f, g));
}
return results;
}());
};
_attempt = function(f) {
return function(...ax) {
var r;
try {
r = (0, _function.apply)(f, ax);
if (isPromise(r)) {
return r.then(function() {
return true;
}).catch(function() {
return false;
});
} else {
return true;
}
} catch (error) {
return false;
}
};
};
attempt = function(fx) {
var f;
return any(function() {
var j, len, results;
results = [];
for(j = 0, len = fx.length; j < len; j++){
f = fx[j];
results.push(_attempt(f));
}
return results;
}());
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiL0BkYXNoa2l0ZS9qb3kvc3JjL3ByZWRpY2F0ZS5jb2ZmZWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsSUFBQSxRQUFBLEVBQUEsR0FBQSxFQUFBLEdBQUEsRUFBQSxPQUFBLEVBQUEsTUFBQSxFQUFBLFNBQUEsRUFBQSxNQUFBLEVBQUE7O0FBQUEsT0FBQTtFQUFRLEtBQVI7RUFBZSxLQUFmO0VBQXNCLEdBQXRCO0VBQTJCLEtBQTNCO0NBQUEsTUFBQTs7QUFFQSxNQUFBLEdBQVMsUUFBQSxDQUFDLENBQUQsQ0FBQTtTQUFPLEtBQUEsQ0FBTSxDQUFDLENBQUMsTUFBUixFQUFnQixRQUFBLENBQUEsR0FBQyxFQUFELENBQUE7QUFDaEMsUUFBQSxDQUFBLEVBQUE7SUFBRSxJQUFHLGdFQUFIO2FBQ0UsQ0FBQyxDQUFDLElBQUYsQ0FBTyxRQUFBLENBQUMsQ0FBRCxDQUFBO2VBQU8sQ0FBQztNQUFSLENBQVAsRUFERjtLQUFBLE1BQUE7YUFHRSxDQUFDLEVBSEg7O0VBRDhCLENBQWhCO0FBQVAsRUFGVDs7OztBQVdBLFNBQUEsR0FBWSxRQUFBLENBQUMsS0FBRCxDQUFBO1NBQVcsS0FBQSxZQUFpQjtBQUE1Qjs7QUFFWixHQUFBLEdBQU0sUUFBQSxDQUFDLEVBQUQsQ0FBQTtTQUNKLEtBQUEsQ0FBTSxFQUFFLENBQUMsQ0FBRCxDQUFHLENBQUMsTUFBWixFQUFvQixRQUFBLENBQUEsR0FBQyxFQUFELENBQUE7QUFDdEIsUUFBQSxDQUFBLEVBQUEsQ0FBQSxFQUFBLEdBQUEsRUFBQSxDQUFBLEVBQUE7SUFBSSxLQUFBLDRDQUFBOztNQUNFLENBQUEsR0FBSSxLQUFBLENBQU0sQ0FBTixFQUFTLEVBQVQ7TUFDSixJQUFHLFNBQUEsQ0FBVSxDQUFWLENBQUg7QUFDRSxlQUFPLENBQUMsQ0FBQyxJQUFGLENBQU8sUUFBQSxDQUFDLENBQUQsQ0FBQTtVQUNaLElBQUcsQ0FBQSxLQUFLLElBQVI7WUFDRSxJQUFHLENBQUEsS0FBSyxFQUFFLENBQUMsTUFBSCxHQUFZLENBQXBCO3FCQUNFLEtBREY7YUFBQSxNQUFBO3FCQUdFLEtBQUEsQ0FBTyxHQUFBLENBQUksRUFBRSxlQUFOLENBQVAsRUFBMkIsRUFBM0IsRUFIRjthQURGO1dBQUEsTUFBQTttQkFNRSxNQU5GOztRQURZLENBQVAsRUFEVDtPQUFBLE1BQUE7UUFVRSxJQUFHLENBQUEsS0FBSyxLQUFSO0FBQW1CLGlCQUFPLE1BQTFCO1NBVkY7O0lBRkY7V0FhQTtFQWRrQixDQUFwQjtBQURJOztBQWlCTixHQUFBLEdBQU0sUUFBQSxDQUFDLEVBQUQsQ0FBQTtTQUNKLEtBQUEsQ0FBTSxFQUFFLENBQUMsQ0FBRCxDQUFHLENBQUMsTUFBWixFQUFvQixRQUFBLENBQUEsR0FBQyxFQUFELENBQUE7QUFDdEIsUUFBQSxDQUFBLEVBQUEsQ0FBQSxFQUFBLEdBQUEsRUFBQSxDQUFBLEVBQUE7SUFBSSxLQUFBLDRDQUFBOztNQUNFLENBQUEsR0FBSSxLQUFBLENBQU0sQ0FBTixFQUFTLEVBQVQ7TUFDSixJQUFHLFNBQUEsQ0FBVSxDQUFWLENBQUg7QUFDRSxlQUFPLENBQUMsQ0FBQyxJQUFGLENBQU8sUUFBQSxDQUFDLENBQUQsQ0FBQTtVQUNaLElBQUcsQ0FBQSxLQUFLLElBQVI7bUJBQ0UsS0FERjtXQUFBLE1BRUssSUFBRyxDQUFBLEtBQUssRUFBRSxDQUFDLE1BQUgsR0FBWSxDQUFwQjttQkFDSCxNQURHO1dBQUEsTUFBQTttQkFHSCxLQUFBLENBQU8sR0FBQSxDQUFJLEVBQUUsZUFBTixDQUFQLEVBQTJCLEVBQTNCLEVBSEc7O1FBSE8sQ0FBUCxFQURUO09BQUEsTUFBQTtRQVNFLElBQUcsQ0FBQSxLQUFLLElBQVI7QUFBa0IsaUJBQU8sS0FBekI7U0FURjs7SUFGRjtXQVlBO0VBYmtCLENBQXBCO0FBREk7O0FBZ0JOLElBQUEsR0FBTyxRQUFBLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FBQTtTQUNMLEtBQUEsQ0FBTSxDQUFDLENBQUMsTUFBUixFQUFnQixRQUFBLENBQUEsR0FBQyxFQUFELENBQUE7QUFDbEIsUUFBQSxFQUFBLEVBQUE7SUFBSSxFQUFBLEdBQUssUUFBQSxDQUFDLENBQUQsQ0FBQTtNQUNILElBQUcsQ0FBQSxLQUFLLElBQVI7UUFDRSxLQUFBLENBQU0sQ0FBTixFQUFTLEVBQVQ7ZUFDQSxLQUZGO09BQUEsTUFBQTtlQUlFLE1BSkY7O0lBREc7SUFNTCxJQUFHLCtCQUFIO2FBQWlDLENBQUMsQ0FBQyxJQUFGLENBQU8sRUFBUCxFQUFqQztLQUFBLE1BQUE7YUFBa0QsRUFBQSxDQUFHLENBQUgsRUFBbEQ7O0VBUGMsQ0FBaEI7QUFESzs7QUFVUCxNQUFBLEdBQVMsUUFBQSxDQUFDLEVBQUQsQ0FBQTtBQUFPLE1BQUEsQ0FBQSxFQUFBO1NBQUMsR0FBQTs7QUFBSztJQUFBLEtBQUEsb0NBQUE7TUFBZ0IsQ0FBQyxDQUFELEVBQUksQ0FBSjttQkFBZixJQUFBLENBQUssQ0FBTCxFQUFRLENBQVI7SUFBRCxDQUFBOztNQUFMO0FBQVI7O0FBRVQsUUFBQSxHQUFXLFFBQUEsQ0FBQyxDQUFELENBQUE7U0FDVCxRQUFBLENBQUEsR0FBQyxFQUFELENBQUE7QUFDRixRQUFBO0FBQUk7TUFDRSxDQUFBLEdBQUksS0FBQSxDQUFNLENBQU4sRUFBUyxFQUFUO01BQ0osSUFBRyxTQUFBLENBQVUsQ0FBVixDQUFIO2VBQ0UsQ0FDRSxDQUFDLElBREgsQ0FDUSxRQUFBLENBQUEsQ0FBQTtpQkFBRztRQUFILENBRFIsQ0FFRSxDQUFDLEtBRkgsQ0FFUyxRQUFBLENBQUEsQ0FBQTtpQkFBRztRQUFILENBRlQsRUFERjtPQUFBLE1BQUE7ZUFLRSxLQUxGO09BRkY7S0FRQSxhQUFBO2FBQ0UsTUFERjs7RUFURjtBQURTOztBQWFYLE9BQUEsR0FBVSxRQUFBLENBQUMsRUFBRCxDQUFBO0FBQ1YsTUFBQTtTQUFFLEdBQUE7O0FBQUs7SUFBQSxLQUFBLG9DQUFBOzttQkFBQSxRQUFBLENBQVMsQ0FBVDtJQUFBLENBQUE7O01BQUw7QUFEUTs7QUFJVixPQUFBO0VBQ0UsTUFERjtFQUVFLEdBRkY7RUFHRSxHQUhGO0VBSUUsSUFKRjtFQUtFLE1BTEY7RUFNRSxPQU5GIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthcml0eSwgY3VycnksIHRlZSwgYXBwbHl9IGZyb20gXCIuL2Z1bmN0aW9uXCJcblxubmVnYXRlID0gKGYpIC0+IGFyaXR5IGYubGVuZ3RoLCAoYXguLi4pIC0+XG4gIGlmIChyID0gYXBwbHkgZiwgYXgpPy50aGVuP1xuICAgIHIudGhlbiAoeCkgLT4gIXhcbiAgZWxzZVxuICAgICFyXG5cbiMgV2UgZG9uJ3QgdXNlIFByb21pc2UuYWxsIGFuZCBQcm9taXNlLmFueSBoZXJlIGJlY2F1c2Ugd2Ugd2FudFxuIyB0byAnc2hvcnQtY2lyY3VpdCcgZXhlY3V0aW9uIGFzIHNvb24gYXMgdGhlIHByZWRpY2F0ZSBmYWlsc1xuXG5pc1Byb21pc2UgPSAodmFsdWUpIC0+IHZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZVxuXG5hbGwgPSAocHgpIC0+XG4gIGFyaXR5IHB4WzBdLmxlbmd0aCwgKGF4Li4uKSAtPlxuICAgIGZvciBwLCBpIGluIHB4XG4gICAgICByID0gYXBwbHkgcCwgYXhcbiAgICAgIGlmIGlzUHJvbWlzZSByXG4gICAgICAgIHJldHVybiByLnRoZW4gKHIpIC0+XG4gICAgICAgICAgaWYgciA9PSB0cnVlXG4gICAgICAgICAgICBpZiBpID09IHB4Lmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBhcHBseSAoYWxsIHB4WyhpICsgMSkuLl0pLCBheFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgIGlmIHIgPT0gZmFsc2UgdGhlbiByZXR1cm4gZmFsc2VcbiAgICB0cnVlXG5cbmFueSA9IChweCkgLT5cbiAgYXJpdHkgcHhbMF0ubGVuZ3RoLCAoYXguLi4pIC0+XG4gICAgZm9yIHAsIGkgaW4gcHhcbiAgICAgIHIgPSBhcHBseSBwLCBheFxuICAgICAgaWYgaXNQcm9taXNlIHJcbiAgICAgICAgcmV0dXJuIHIudGhlbiAocikgLT5cbiAgICAgICAgICBpZiByID09IHRydWVcbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgICBlbHNlIGlmIGkgPT0gcHgubGVuZ3RoIC0gMVxuICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBhcHBseSAoYW55IHB4WyhpICsgMSkuLl0pLCBheFxuICAgICAgZWxzZVxuICAgICAgICBpZiByID09IHRydWUgdGhlbiByZXR1cm4gdHJ1ZVxuICAgIGZhbHNlXG5cbnRlc3QgPSAoZiwgZykgLT5cbiAgYXJpdHkgZy5sZW5ndGgsIChheC4uLikgLT5cbiAgICBfZiA9IChyKSAtPlxuICAgICAgaWYgciA9PSB0cnVlXG4gICAgICAgIGFwcGx5IGcsIGF4XG4gICAgICAgIHRydWVcbiAgICAgIGVsc2VcbiAgICAgICAgZmFsc2VcbiAgICBpZiAociA9IGFwcGx5IGYsIGF4KS50aGVuPyB0aGVuIChyLnRoZW4gX2YpIGVsc2UgKF9mIHIpXG5cbmJyYW5jaCA9IChmeCkgLT4gYW55ICgodGVzdCBmLCBnKSBmb3IgW2YsIGddIGluIGZ4KVxuXG5fYXR0ZW1wdCA9IChmKSAtPlxuICAoYXguLi4pIC0+XG4gICAgdHJ5XG4gICAgICByID0gYXBwbHkgZiwgYXhcbiAgICAgIGlmIGlzUHJvbWlzZSByXG4gICAgICAgIHJcbiAgICAgICAgICAudGhlbiAtPiB0cnVlXG4gICAgICAgICAgLmNhdGNoIC0+IGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgIHRydWVcbiAgICBjYXRjaFxuICAgICAgZmFsc2VcbiAgICAgIFxuYXR0ZW1wdCA9IChmeCkgLT5cbiAgYW55IChfYXR0ZW1wdCBmIGZvciBmIGluIGZ4KVxuXG5cbmV4cG9ydCB7XG4gIG5lZ2F0ZVxuICBhbnlcbiAgYWxsXG4gIHRlc3RcbiAgYnJhbmNoXG4gIGF0dGVtcHRcbn1cbiJdfQ==
//# sourceURL=/@dashkite/joy/src/predicate.coffee
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlcyI6WyIvQGRhc2hraXRlL2pveS9zcmMvcHJlZGljYXRlLmNvZmZlZSJdLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthcml0eSwgY3VycnksIHRlZSwgYXBwbHl9IGZyb20gXCIuL2Z1bmN0aW9uXCJcblxubmVnYXRlID0gKGYpIC0+IGFyaXR5IGYubGVuZ3RoLCAoYXguLi4pIC0+XG4gIGlmIChyID0gYXBwbHkgZiwgYXgpPy50aGVuP1xuICAgIHIudGhlbiAoeCkgLT4gIXhcbiAgZWxzZVxuICAgICFyXG5cbiMgV2UgZG9uJ3QgdXNlIFByb21pc2UuYWxsIGFuZCBQcm9taXNlLmFueSBoZXJlIGJlY2F1c2Ugd2Ugd2FudFxuIyB0byAnc2hvcnQtY2lyY3VpdCcgZXhlY3V0aW9uIGFzIHNvb24gYXMgdGhlIHByZWRpY2F0ZSBmYWlsc1xuXG5pc1Byb21pc2UgPSAodmFsdWUpIC0+IHZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZVxuXG5hbGwgPSAocHgpIC0+XG4gIGFyaXR5IHB4WzBdLmxlbmd0aCwgKGF4Li4uKSAtPlxuICAgIGZvciBwLCBpIGluIHB4XG4gICAgICByID0gYXBwbHkgcCwgYXhcbiAgICAgIGlmIGlzUHJvbWlzZSByXG4gICAgICAgIHJldHVybiByLnRoZW4gKHIpIC0+XG4gICAgICAgICAgaWYgciA9PSB0cnVlXG4gICAgICAgICAgICBpZiBpID09IHB4Lmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBhcHBseSAoYWxsIHB4WyhpICsgMSkuLl0pLCBheFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgIGlmIHIgPT0gZmFsc2UgdGhlbiByZXR1cm4gZmFsc2VcbiAgICB0cnVlXG5cbmFueSA9IChweCkgLT5cbiAgYXJpdHkgcHhbMF0ubGVuZ3RoLCAoYXguLi4pIC0+XG4gICAgZm9yIHAsIGkgaW4gcHhcbiAgICAgIHIgPSBhcHBseSBwLCBheFxuICAgICAgaWYgaXNQcm9taXNlIHJcbiAgICAgICAgcmV0dXJuIHIudGhlbiAocikgLT5cbiAgICAgICAgICBpZiByID09IHRydWVcbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgICBlbHNlIGlmIGkgPT0gcHgubGVuZ3RoIC0gMVxuICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBhcHBseSAoYW55IHB4WyhpICsgMSkuLl0pLCBheFxuICAgICAgZWxzZVxuICAgICAgICBpZiByID09IHRydWUgdGhlbiByZXR1cm4gdHJ1ZVxuICAgIGZhbHNlXG5cbnRlc3QgPSAoZiwgZykgLT5cbiAgYXJpdHkgZy5sZW5ndGgsIChheC4uLikgLT5cbiAgICBfZiA9IChyKSAtPlxuICAgICAgaWYgciA9PSB0cnVlXG4gICAgICAgIGFwcGx5IGcsIGF4XG4gICAgICAgIHRydWVcbiAgICAgIGVsc2VcbiAgICAgICAgZmFsc2VcbiAgICBpZiAociA9IGFwcGx5IGYsIGF4KS50aGVuPyB0aGVuIChyLnRoZW4gX2YpIGVsc2UgKF9mIHIpXG5cbmJyYW5jaCA9IChmeCkgLT4gYW55ICgodGVzdCBmLCBnKSBmb3IgW2YsIGddIGluIGZ4KVxuXG5fYXR0ZW1wdCA9IChmKSAtPlxuICAoYXguLi4pIC0+XG4gICAgdHJ5XG4gICAgICByID0gYXBwbHkgZiwgYXhcbiAgICAgIGlmIGlzUHJvbWlzZSByXG4gICAgICAgIHJcbiAgICAgICAgICAudGhlbiAtPiB0cnVlXG4gICAgICAgICAgLmNhdGNoIC0+IGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgIHRydWVcbiAgICBjYXRjaFxuICAgICAgZmFsc2VcbiAgICAgIFxuYXR0ZW1wdCA9IChmeCkgLT5cbiAgYW55IChfYXR0ZW1wdCBmIGZvciBmIGluIGZ4KVxuXG5cbmV4cG9ydCB7XG4gIG5lZ2F0ZVxuICBhbnlcbiAgYWxsXG4gIHRlc3RcbiAgYnJhbmNoXG4gIGF0dGVtcHRcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7ZUE4RUUsR0FIRjs7UUFFRSxHQUZGOzs7O2VBTUUsT0FORjs7UUFLRSxNQUxGOzs7O2VBQ0UsTUFERjs7O2VBSUUsSUFKRjs7OzBCQTNFQTtBQUFBLElBQUEsUUFBQSxFQUFBLEdBQUEsRUFBQSxHQUFBLEVBQUEsT0FBQSxFQUFBLE1BQUEsRUFBQSxTQUFBLEVBQUEsTUFBQSxFQUFBO0FBRUEsTUFBQSxHQUFTLFFBQUEsQ0FBQyxDQUFELENBQUE7ZUFBTyxlQUFBLEVBQU0sQ0FBQyxDQUFDLE1BQVIsRUFBZ0IsUUFBQSxDQUFBLEdBQUMsRUFBRCxDQUFBO1FBQ2hDLElBQUEsQ0FBQSxFQUFBO1FBQUUsSUFBRyxDQUFBLENBQUEsTUFBQSxJQUFBLElBQUEsZUFBQSxFQUFBLEdBQUEsR0FBQSxLQUFBLE9BQUEsSUFBQSxJQUFBLEdBQUEsS0FBQSxDQUFBLEtBQUEsSUFBSCxFQUFBO21CQUNFLENBQUMsQ0FBQyxJQUFGLENBQU8sUUFBQSxDQUFDLENBQUQsQ0FBQTt1QkFBTyxDQUFDO1lBQVIsQ0FBUCxFQURGO1NBQUEsTUFBQTttQkFHRSxDQUFDLEVBSEg7O0lBRDhCLENBQWhCO0FBQVAsRUFGVDs7O0FBV0EsU0FBQSxHQUFZLFFBQUEsQ0FBQyxLQUFELENBQUE7V0FBVyxLQUFBLFlBQWlCO0FBQTVCO0FBRVosR0FBQSxHQUFNLFFBQUEsQ0FBQyxFQUFELENBQUE7V0FDSixtQkFBQSxFQUFNLEVBQUUsQ0FBQyxDQUFELENBQUcsQ0FBQyxNQUFaLEVBQW9CLFFBQUEsQ0FBQSxHQUFDLEVBQUQsQ0FBQTtRQUN0QixJQUFBLENBQUEsRUFBQSxDQUFBLEVBQUEsR0FBQSxFQUFBLENBQUEsRUFBQTtRQUFJLElBQUEsSUFBQSxJQUFBLEdBQUEsTUFBQSxHQUFBLE1BQUEsRUFBQSxJQUFBLEtBQUEsSUFBQSxFQUFBLENBQUEsQ0FBQTs7WUFDRSxDQUFBLE9BQUksZUFBQSxFQUFNLENBQU4sRUFBUyxFQUFUO1lBQ0osSUFBRyxTQUFBLENBQVUsQ0FBVixDQUFILEVBQUE7Z0JBQ0UsT0FBTyxDQUFDLENBQUMsSUFBRixDQUFPLFFBQUEsQ0FBQyxDQUFELENBQUE7b0JBQ1osSUFBRyxDQUFBLEtBQUssSUFBUixFQUFBO3dCQUNFLElBQUcsQ0FBQSxLQUFLLEVBQUUsQ0FBQyxNQUFILEdBQVksQ0FBcEIsRUFBQTttQ0FDRSxLQURGO3lCQUFBLE1BQUE7bUNBR0UsbUJBQUEsRUFBTyxHQUFBLENBQUksRUFBRSxDQUFBLEtBQUEsQ0FBQSxJQUFBLEdBQU4sQ0FBUCxDQUEyQixFQUEzQixFQUhGO3lCQURGO3FCQUFBLE1BQUE7K0JBTUUsTUFORjs7Z0JBRFksQ0FBUCxFQURUO2FBQUEsTUFBQTtnQkFVRSxJQUFHLENBQUEsS0FBSyxLQUFSLEVBQUE7b0JBQW1CLE9BQU8sTUFBMUI7aUJBVkY7O1FBRkY7ZUFhQTtJQWRrQixDQUFwQjtBQURJO0FBaUJOLEdBQUEsR0FBTSxRQUFBLENBQUMsRUFBRCxDQUFBO2VBQ0osZUFBQSxFQUFNLEVBQUUsQ0FBQyxDQUFELENBQUcsQ0FBQyxNQUFaLEVBQW9CLFFBQUEsQ0FBQSxHQUFDLEVBQUQsQ0FBQTtRQUN0QixJQUFBLENBQUEsRUFBQSxDQUFBLEVBQUEsR0FBQSxFQUFBLENBQUEsRUFBQTtRQUFJLElBQUEsSUFBQSxJQUFBLEdBQUEsTUFBQSxHQUFBLE1BQUEsRUFBQSxJQUFBLEtBQUEsSUFBQSxFQUFBLENBQUEsQ0FBQTs7WUFDRSxDQUFBLE9BQUksZUFBQSxFQUFNLENBQU4sRUFBUyxFQUFUO1lBQ0osSUFBRyxTQUFBLENBQVUsQ0FBVixDQUFILEVBQUE7Z0JBQ0UsT0FBTyxDQUFDLENBQUMsSUFBRixDQUFPLFFBQUEsQ0FBQyxDQUFELENBQUE7b0JBQ1osSUFBRyxDQUFBLEtBQUssSUFBUixFQUFBOytCQUNFLEtBREY7cUJBQUEsTUFFSyxJQUFHLENBQUEsS0FBSyxFQUFFLENBQUMsTUFBSCxHQUFZLENBQXBCLEVBQUE7K0JBQ0gsTUFERztxQkFBQSxNQUFBO21DQUdILGVBQUEsRUFBTyxHQUFBLENBQUksRUFBRSxDQUFBLEtBQUEsQ0FBQSxJQUFBLEdBQU4sQ0FBUCxDQUEyQixFQUEzQixFQUhHOztnQkFITyxDQUFQLEVBRFQ7YUFBQSxNQUFBO2dCQVNFLElBQUcsQ0FBQSxLQUFLLElBQVIsRUFBQTtvQkFBa0IsT0FBTyxLQUF6QjtpQkFURjs7UUFGRjtlQVlBO0lBYmtCLENBQXBCO0FBREk7QUFnQk4sSUFBQSxHQUFPLFFBQUEsQ0FBQyxDQUFELEVBQUksQ0FBSixDQUFBO2VBQ0wsZUFBQSxFQUFNLENBQUMsQ0FBQyxNQUFSLEVBQWdCLFFBQUEsQ0FBQSxHQUFDLEVBQUQsQ0FBQTtRQUNsQixJQUFBLEVBQUEsRUFBQTtRQUFJLEVBQUEsR0FBSyxRQUFBLENBQUMsQ0FBRCxDQUFBO1lBQ0gsSUFBRyxDQUFBLEtBQUssSUFBUixFQUFBO29CQUNFLGVBQUEsRUFBTSxDQUFOLEVBQVMsRUFBVDt1QkFDQSxLQUZGO2FBQUEsTUFBQTt1QkFJRSxNQUpGOztRQURHO1FBTUwsSUFBRyxDQUFBLElBQUEsSUFBQSxlQUFBLEVBQUEsR0FBQSxHQUFBLEVBQUEsSUFBQSxJQUFBLElBQUgsRUFBQTttQkFBaUMsQ0FBQyxDQUFDLElBQUYsQ0FBTyxFQUFQLEVBQWpDO1NBQUEsTUFBQTttQkFBa0QsRUFBQSxDQUFHLENBQUgsRUFBbEQ7O0lBUGMsQ0FBaEI7QUFESztBQVVQLE1BQUEsR0FBUyxRQUFBLENBQUMsRUFBRCxDQUFBO0lBQU8sSUFBQSxDQUFBLEVBQUE7V0FBQyxHQUFBLENBQUE7O1FBQUssVUFBQSxFQUFBO1FBQUEsSUFBQSxJQUFBLEdBQUEsTUFBQSxHQUFBLE1BQUEsRUFBQSxJQUFBLEtBQUEsR0FBQSxDQUFBO1lBQWdCLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FBQSxHQUFBLEVBQUEsQ0FBQSxFQUFBO3lCQUFmLElBQUEsQ0FBSyxDQUFMLEVBQVEsQ0FBUjtRQUFELENBQUE7O1FBQUw7QUFBUjtBQUVULFFBQUEsR0FBVyxRQUFBLENBQUMsQ0FBRCxDQUFBO1dBQ1QsUUFBQSxDQUFBLEdBQUMsRUFBRCxDQUFBO1FBQ0YsSUFBQTtRQUFJLElBQUE7WUFDRSxDQUFBLE9BQUksZUFBQSxFQUFNLENBQU4sRUFBUyxFQUFUO1lBQ0osSUFBRyxTQUFBLENBQVUsQ0FBVixDQUFILEVBQUE7dUJBQ0UsQ0FDRSxDQUFDLElBREgsQ0FDUSxRQUFBLENBQUEsQ0FBQTsyQkFBRztnQkFBSCxDQURSLENBRUUsQ0FBQyxLQUZILENBRVMsUUFBQSxDQUFBLENBQUE7MkJBQUc7Z0JBQUgsQ0FGVCxFQURGO2FBQUEsTUFBQTt1QkFLRSxLQUxGO2FBRkY7U0FRQSxDQUFBLE9BQUEsS0FBQSxFQUFBO21CQUNFLE1BREY7O0lBVEY7QUFEUztBQWFYLE9BQUEsR0FBVSxRQUFBLENBQUMsRUFBRCxDQUFBO0lBQ1YsSUFBQTtXQUFFLEdBQUEsQ0FBQTs7UUFBSyxVQUFBLEVBQUE7UUFBQSxJQUFBLElBQUEsR0FBQSxNQUFBLEdBQUEsTUFBQSxFQUFBLElBQUEsS0FBQSxHQUFBLENBQUE7O3lCQUFBLFFBQUEsQ0FBUyxDQUFUO1FBQUEsQ0FBQTs7UUFBTDtBQURRIn0=