@datagrok-libraries/bio 5.3.0 → 5.4.1
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.
- package/package.json +1 -1
- package/src/utils/atomic-works.d.ts +2 -0
- package/src/utils/atomic-works.d.ts.map +1 -0
- package/src/utils/atomic-works.js +354 -0
- package/src/utils/const.d.ts +48 -0
- package/src/utils/const.d.ts.map +1 -0
- package/src/utils/const.js +29 -0
- package/src/utils/macromolecule.js +2 -2
- package/src/utils/monomer-library.d.ts +43 -0
- package/src/utils/monomer-library.d.ts.map +1 -0
- package/src/utils/monomer-library.js +154 -0
- package/src/utils/monomer-utils.d.ts +10 -0
- package/src/utils/monomer-utils.d.ts.map +1 -0
- package/src/utils/monomer-utils.js +125 -0
- package/src/utils/notation-converter.d.ts.map +1 -1
- package/src/utils/notation-converter.js +5 -1
- package/src/utils/to-atomic-level.d.ts +4 -0
- package/src/utils/to-atomic-level.d.ts.map +1 -0
- package/src/utils/to-atomic-level.js +1095 -0
- package/src/utils/units-handler.d.ts +4 -0
- package/src/utils/units-handler.d.ts.map +1 -1
- package/src/utils/units-handler.js +6 -8
- package/tsconfig.json +1 -1
|
@@ -15,7 +15,7 @@ export function getStats(seqCol, minLength, splitter) {
|
|
|
15
15
|
firstLength = mSeq.length;
|
|
16
16
|
else if (mSeq.length !== firstLength)
|
|
17
17
|
sameLength = false;
|
|
18
|
-
if (mSeq.length
|
|
18
|
+
if (mSeq.length >= minLength) {
|
|
19
19
|
for (const m of mSeq) {
|
|
20
20
|
if (!(m in freq))
|
|
21
21
|
freq[m] = 0;
|
|
@@ -187,4 +187,4 @@ export function pickUpSeqCol(df) {
|
|
|
187
187
|
resCol = semTypeColList[0];
|
|
188
188
|
return resCol;
|
|
189
189
|
}
|
|
190
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFjcm9tb2xlY3VsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1hY3JvbW9sZWN1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV0QyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0saURBQWlELENBQUM7QUFDdkUsT0FBTyxFQUFDLFlBQVksRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBWS9GLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxLQUFLLEdBQUcsTUFBTSxhQUFhLENBQUM7QUFzQmxDLENBQUM7QUFNRixNQUFNLFVBQVUsUUFBUSxDQUFDLE1BQWlCLEVBQUUsU0FBaUIsRUFBRSxRQUFzQjtJQUNuRixNQUFNLElBQUksR0FBNEIsRUFBRSxDQUFDO0lBQ3pDLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQztJQUN0QixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFFdkIsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFO1FBQ25DLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUzQixJQUFJLFdBQVcsSUFBSSxJQUFJO1lBQ3JCLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO2FBQ3ZCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxXQUFXO1lBQ2xDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFFckIsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsRUFBRTtZQUMzQixLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRTtnQkFDcEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztvQkFDZCxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNkLElBQUks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Q3JCLEtBQUssSUFBSTtZQUNQLE9BQU8sR0FBRyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQztRQUMzQyxLQUFLLElBQUksQ0FBQztRQUNWLEtBQUssS0FBSyxDQUFDO1FBQ1gsS0FBSyxLQUFLO1lBQ1IsT0FBTyxHQUFHLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUFDO1FBQzVDLFFBQVE7UUFDVjtZQUNFLE9BQU8sR0FBRyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQztLQUNyQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLEVBQWdCOztJQUMzQyxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3pFLElBQUksTUFBTSxHQUFxQixNQUFBLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUN6RCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNyRCxDQUFDLENBQUMsbUNBQUksSUFBSSxDQUFDO0lBQ1gsSUFBSSxDQUFDLE1BQU0sSUFBSSxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUM7UUFDdEMsTUFBTSxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcblxuaW1wb3J0IHtWZWN0b3J9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3R5cGUtZGVjbGFyYXRpb25zJztcbmltcG9ydCB7dmVjdG9yTGVuZ3RoLCB2ZWN0b3JEb3RQcm9kdWN0fSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucyc7XG5cbi8qKiBTdGF0cyBvZiBzZXF1ZW5jZXMgd2l0aCBzcGVjaWZpZWQgc3BsaXR0ZXIgZnVuYywgcmV0dXJucyB7IGZyZXEsIHNhbWVMZW5ndGggfS5cbiAqIEBwYXJhbSB7REcuQ29sdW1ufSBzZXFDb2xcbiAqIEBwYXJhbSB7bnVtYmVyfSBtaW5MZW5ndGhcbiAqIEBwYXJhbSB7U3BsaXR0ZXJGdW5jfSBzcGxpdHRlclxuICogQHJldHVybiB7IFNlcUNvbFN0YXRzIH0sIHNhbWVMZW5ndGg6IGJvb2xlYW4gfSBzdGF0cyBvZiBjb2x1bW4gc2VxdWVuY2VzXG4gKi9cbmltcG9ydCB7U2VxUGFsZXR0ZX0gZnJvbSAnLi4vc2VxLXBhbGV0dGVzJztcbmltcG9ydCB7QW1pbm9hY2lkcywgQW1pbm9hY2lkc1BhbGV0dGVzfSBmcm9tICcuLi9hbWlub2FjaWRzJztcbmltcG9ydCB7TnVjbGVvdGlkZXMsIE51Y2xlb3RpZGVzUGFsZXR0ZXN9IGZyb20gJy4uL251Y2xlb3RpZGVzJztcbmltcG9ydCB7VW5rbm93blNlcVBhbGV0dGVzfSBmcm9tICcuLi91bmtub3duJztcbmltcG9ydCB3dSBmcm9tICd3dSc7XG5pbXBvcnQge1VuaXRzSGFuZGxlcn0gZnJvbSAnLi4vdXRpbHMvdW5pdHMtaGFuZGxlcic7XG5pbXBvcnQgKiBhcyBiaW8gZnJvbSAnLi4vLi4vaW5kZXgnO1xuXG4vKiogZW51bSB0eXBlIHRvIHNpbXBsaWZ5IHNldHRpbmcgXCJ1c2VyLWZyaWVuZGx5XCIgbm90YXRpb24gaWYgbmVjZXNzYXJ5ICovXG5leHBvcnQgY29uc3QgZW51bSBOT1RBVElPTiB7XG4gIEZBU1RBID0gJ2Zhc3RhJyxcbiAgU0VQQVJBVE9SID0gJ3NlcGFyYXRvcicsXG4gIEhFTE0gPSAnaGVsbScsXG59XG5cbmV4cG9ydCBjb25zdCBlbnVtIEFMUEhBQkVUIHtcbiAgRE5BID0gJ0ROQScsXG4gIFJOQSA9ICdSTkEnLFxuICBQVCA9ICdQVCcsXG4gIFVOID0gJ1VOJyxcbn1cblxuZXhwb3J0IGNvbnN0IGVudW0gVEFHUyB7XG4gIGFsaWduZWQgPSAnYWxpZ25lZCcsXG4gIGFscGhhYmV0ID0gJ2FscGhhYmV0JyxcbiAgYWxwaGFiZXRTaXplID0gJy5hbHBoYWJldFNpemUnLFxuICBhbHBoYWJldElzTXVsdGljaGFyID0gJy5hbHBoYWJldElzTXVsdGljaGFyJyxcbiAgc2VwYXJhdG9yID0gJ3NlcGFyYXRvcicsXG59O1xuXG5leHBvcnQgdHlwZSBTZXFDb2xTdGF0cyA9IHsgZnJlcTogTW9ub21lckZyZXFzLCBzYW1lTGVuZ3RoOiBib29sZWFuIH1cbmV4cG9ydCB0eXBlIFNwbGl0dGVyRnVuYyA9IChzZXE6IHN0cmluZykgPT4gc3RyaW5nW107XG5leHBvcnQgdHlwZSBNb25vbWVyRnJlcXMgPSB7IFttOiBzdHJpbmddOiBudW1iZXIgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXRzKHNlcUNvbDogREcuQ29sdW1uLCBtaW5MZW5ndGg6IG51bWJlciwgc3BsaXR0ZXI6IFNwbGl0dGVyRnVuYyk6IFNlcUNvbFN0YXRzIHtcbiAgY29uc3QgZnJlcTogeyBbbTogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcbiAgbGV0IHNhbWVMZW5ndGggPSB0cnVlO1xuICBsZXQgZmlyc3RMZW5ndGggPSBudWxsO1xuXG4gIGZvciAoY29uc3Qgc2VxIG9mIHNlcUNvbC5jYXRlZ29yaWVzKSB7XG4gICAgY29uc3QgbVNlcSA9IHNwbGl0dGVyKHNlcSk7XG5cbiAgICBpZiAoZmlyc3RMZW5ndGggPT0gbnVsbClcbiAgICAgIGZpcnN0TGVuZ3RoID0gbVNlcS5sZW5ndGg7XG4gICAgZWxzZSBpZiAobVNlcS5sZW5ndGggIT09IGZpcnN0TGVuZ3RoKVxuICAgICAgc2FtZUxlbmd0aCA9IGZhbHNlO1xuXG4gICAgaWYgKG1TZXEubGVuZ3RoID4gbWluTGVuZ3RoKSB7XG4gICAgICBmb3IgKGNvbnN0IG0gb2YgbVNlcSkge1xuICAgICAgICBpZiAoIShtIGluIGZyZXEpKVxuICAgICAgICAgIGZyZXFbbV0gPSAwO1xuICAgICAgICBmcmVxW21dICs9IDE7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB7ZnJlcTogZnJlcSwgc2FtZUxlbmd0aDogc2FtZUxlbmd0aH07XG59XG5cbmV4cG9ydCBjb25zdCBtb25vbWVyUmU6IFJlZ0V4cCA9IC9cXFsoXFx3KylcXF18KFxcdyl8KC0pL2c7XG5cbi8qKiBTcGxpdCBzZXF1ZW5jZSBmb3Igc2luZ2xlIGNoYXJhY3RlciBtb25vbWVycywgc3F1YXJlIGJyYWNrZXRzIG11bHRpY2hhciBtb25vbWVyIG5hbWVzIG9yIGdhcCBzeW1ib2wuXG4gKiBAcGFyYW0ge2FueX0gc2VxIG9iamVjdCB3aXRoIHNlcXVlbmNlXG4gKiBAcmV0dXJuIHtzdHJpbmdbXX0gYXJyYXkgb2YgbW9ub21lcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0dGVyQXNGYXN0YShzZXE6IGFueSk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIHd1PFJlZ0V4cE1hdGNoQXJyYXk+KHNlcS50b1N0cmluZygpLm1hdGNoQWxsKG1vbm9tZXJSZSkpXG4gICAgLm1hcCgobWE6IFJlZ0V4cE1hdGNoQXJyYXkpID0+IHtcbiAgICAgIGxldCBtUmVzOiBzdHJpbmc7XG4gICAgICBjb25zdCBtOiBzdHJpbmcgPSBtYVswXTtcbiAgICAgIGlmIChtLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgbVJlcyA9IG1hWzFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbVJlcyA9IG07XG4gICAgICB9XG4gICAgICByZXR1cm4gbVJlcztcbiAgICB9KS50b0FycmF5KCk7XG59XG5cbi8qKiBHZXRzIG1ldGhvZCB0byBzcGxpdCBzZXF1ZW5jZSBieSBzZXBhcmF0b3JcbiAqIEBwYXJhbSB7c3RyaW5nfSBzZXBhcmF0b3JcbiAqIEBwYXJhbSBsaW1pdFxuICogQHJldHVybiB7U3BsaXR0ZXJGdW5jfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3BsaXR0ZXJXaXRoU2VwYXJhdG9yKHNlcGFyYXRvcjogc3RyaW5nLCBsaW1pdDogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkKTogU3BsaXR0ZXJGdW5jIHtcbiAgcmV0dXJuIChzZXE6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiBzZXEuc3BsaXQoc2VwYXJhdG9yLCBsaW1pdCk7XG4gIH07XG59XG5cbmNvbnN0IGhlbG1SZTogUmVnRXhwID0gLyhQRVBUSURFMXxETkExfFJOQTEpXFx7KFtefV0rKX0vZztcbmNvbnN0IGhlbG1QcDFSZTogUmVnRXhwID0gL1xcWyhbXlxcW1xcXV0rKV0vZztcblxuXG4vKiogU3BsaXRzIEhlbG0gc3RyaW5nIHRvIG1vbm9tZXJzLCBidXQgZG9lcyBub3QgcmVwbGFjZSBtb25vbWVyIG5hbWVzIHRvIG90aGVyIG5vdGF0aW9uIChlLmcuIGZvciBSTkEpLlxuICogT25seSBmb3IgbGluZWFyIHBvbHltZXJzLCBkb2VzIG5vdCBzcGxpdCBSTkEgZm9yIHJpYm9zZSBhbmQgcGhvc3BoYXRlIG1vbm9tZXJzLlxuICogQHBhcmFtIHtzdHJpbmd9IHNlcSBTb3VyY2Ugc3RyaW5nIG9mIEhFTE0gbm90YXRpb25cbiAqIEByZXR1cm4ge3N0cmluZ1tdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3BsaXR0ZXJBc0hlbG0oc2VxOiBhbnkpOiBzdHJpbmdbXSB7XG4gIGhlbG1SZS5sYXN0SW5kZXggPSAwO1xuICBjb25zdCBlYTogUmVnRXhwRXhlY0FycmF5IHwgbnVsbCA9IGhlbG1SZS5leGVjKHNlcS50b1N0cmluZygpKTtcbiAgY29uc3QgaW5TZXE6IHN0cmluZyB8IG51bGwgPSBlYSA/IGVhWzJdIDogbnVsbDtcblxuICBjb25zdCBtbVBvc3RQcm9jZXNzID0gKG1tOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgIGhlbG1QcDFSZS5sYXN0SW5kZXggPSAwO1xuICAgIGNvbnN0IHBwMU0gPSBoZWxtUHAxUmUuZXhlYyhtbSk7XG4gICAgaWYgKHBwMU0gJiYgcHAxTS5sZW5ndGggPj0gMilcbiAgICAgIHJldHVybiBwcDFNWzFdO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiBtbTtcbiAgfTtcblxuICBjb25zdCBtbUxpc3Q6IHN0cmluZ1tdID0gaW5TZXEgPyBpblNlcS5zcGxpdCgnLicpIDogW107XG4gIHJldHVybiBtbUxpc3QubWFwKG1tUG9zdFByb2Nlc3MpO1xufVxuXG4vKiogR2V0IHNwbGl0dGVyIG1ldGhvZCB0byBzcGxpdCBzZXF1ZW5jZXMgdG8gbW9ub21lcnNcbiAqIEBwYXJhbSB7c3RyaW5nfSB1bml0c1xuICogQHBhcmFtIHtzdHJpbmd9IHNlcGFyYXRvclxuICogQHBhcmFtIGxpbWl0XG4gKiBAcmV0dXJuIHtTcGxpdHRlckZ1bmN9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTcGxpdHRlcih1bml0czogc3RyaW5nLCBzZXBhcmF0b3I6IHN0cmluZywgbGltaXQ6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCk6IFNwbGl0dGVyRnVuYyB7XG4gIGlmICh1bml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoTk9UQVRJT04uRkFTVEEpKVxuICAgIHJldHVybiBzcGxpdHRlckFzRmFzdGE7XG4gIGVsc2UgaWYgKHVuaXRzLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChOT1RBVElPTi5TRVBBUkFUT1IpKVxuICAgIHJldHVybiBnZXRTcGxpdHRlcldpdGhTZXBhcmF0b3Ioc2VwYXJhdG9yLCBsaW1pdCk7XG4gIGVsc2UgaWYgKHVuaXRzLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChOT1RBVElPTi5IRUxNKSlcbiAgICByZXR1cm4gc3BsaXR0ZXJBc0hlbG07XG4gIGVsc2VcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgdW5pdHMgJHt1bml0c30gLmApO1xuXG4gIC8vIFRPRE86IFNwbGl0dGVyIGZvciBIRUxNXG59XG5cbi8qKiBHZW5lcmF0ZSBzcGxpdHRlciBmdW5jdGlvbiBmb3Igc2VxdWVuY2UgY29sdW1uXG4gKiBAcGFyYW0ge0RHLkNvbHVtbn0gY29sXG4gKiBAcmV0dXJuIHtTcGxpdHRlckZ1bmN9IFNwbGl0dGVyIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTcGxpdHRlckZvckNvbHVtbihjb2w6IERHLkNvbHVtbik6IFNwbGl0dGVyRnVuYyB7XG4gIGlmIChjb2wuc2VtVHlwZSAhPT0gREcuU0VNVFlQRS5NQUNST01PTEVDVUxFKVxuICAgIHRocm93IG5ldyBFcnJvcihgR2V0IHNwbGl0dGVyIGZvciBzZW1UeXBlIFwiJHtERy5TRU1UWVBFLk1BQ1JPTU9MRUNVTEV9XCIgb25seS5gKTtcblxuICBjb25zdCB1bml0cyA9IGNvbC5nZXRUYWcoREcuVEFHUy5VTklUUyk7XG4gIGNvbnN0IHNlcGFyYXRvciA9IGNvbC5nZXRUYWcoVEFHUy5zZXBhcmF0b3IpO1xuICByZXR1cm4gZ2V0U3BsaXR0ZXIodW5pdHMsIHNlcGFyYXRvcik7XG59XG5cbmNvbnN0IGxvbmdNb25vbWVyUGFydFJlOiBSZWdFeHAgPSAvKFxcdyspL2c7XG5cbi8qKiBDb252ZXJ0IGxvbmcgbW9ub21lciBuYW1lcyB0byBzaG9ydCBvbmVzICovXG5leHBvcnQgZnVuY3Rpb24gbW9ub21lclRvU2hvcnQoYW1pbm86IHN0cmluZywgbWF4TGVuZ3RoT2ZNb25vbWVyOiBudW1iZXIpOiBzdHJpbmcge1xuICBjb25zdCBzaG9ydEFtaW5vTWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXkgfCBudWxsID0gYW1pbm8ubWF0Y2gobG9uZ01vbm9tZXJQYXJ0UmUpO1xuICBjb25zdCBuZWVkQWRkRG90czogYm9vbGVhbiA9IGFtaW5vLmxlbmd0aCA+IG1heExlbmd0aE9mTW9ub21lciB8fCAoc2hvcnRBbWlub01hdGNoPy5sZW5ndGggPz8gMCkgPiAxO1xuICBjb25zdCBzaG9ydEFtaW5vID0gc2hvcnRBbWlub01hdGNoPy5bMF0gPz8gJyAnO1xuICByZXR1cm4gIW5lZWRBZGREb3RzID8gc2hvcnRBbWlubyA6IHNob3J0QW1pbm8uc3Vic3RyaW5nKDAsIG1heExlbmd0aE9mTW9ub21lcikgKyAn4oCmJztcbn1cblxuLyoqIENhbGN1bGF0ZSBzaW1pbGFyaXR5IGluIGN1cnJlbnQgc2VxdWVuY2UgYW5kIGFscGhhYmV0LlxuICogQHBhcmFtIHtNb25vbWVyRnJlcXN9IGZyZXFcbiAqIEBwYXJhbSB7U2V0PHN0cmluZz59IGFscGhhYmV0XG4gKiBAcGFyYW0ge3N0cmluZ30gZ2FwU3ltYm9sXG4gKiBAcmV0dXJuIHtudW1iZXJ9IENvc2luZSBzaW1pbGFyaXR5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbHBoYWJldFNpbWlsYXJpdHkoZnJlcTogTW9ub21lckZyZXFzLCBhbHBoYWJldDogU2V0PHN0cmluZz4sIGdhcFN5bWJvbDogc3RyaW5nID0gJy0nKTogbnVtYmVyIHtcbiAgY29uc3Qga2V5cyA9IG5ldyBTZXQ8c3RyaW5nPihbLi4ubmV3IFNldChPYmplY3Qua2V5cyhmcmVxKSksIC4uLmFscGhhYmV0XSk7XG4gIGtleXMuZGVsZXRlKGdhcFN5bWJvbCk7XG5cbiAgY29uc3QgZnJlcUE6IG51bWJlcltdID0gW107XG4gIGNvbnN0IGFscGhhYmV0QTogbnVtYmVyW10gPSBbXTtcbiAgZm9yIChjb25zdCBtIG9mIGtleXMpIHtcbiAgICBmcmVxQS5wdXNoKG0gaW4gZnJlcSA/IGZyZXFbbV0gOiAwKTtcbiAgICBhbHBoYWJldEEucHVzaChhbHBoYWJldC5oYXMobSkgPyAxIDogMCk7XG4gIH1cbiAgLyogVGhlcmUgd2VyZSBhIGZldyBpZGVhczogY2hpLXNxdWFyZWQsIHBlYXJzb24gY29ycmVsYXRpb24gKHZhcmlhbmNlPyksIHNjYWxhciBwcm9kdWN0ICovXG4gIGNvbnN0IGZyZXFWOiBWZWN0b3IgPSBuZXcgVmVjdG9yKGZyZXFBKTtcbiAgY29uc3QgYWxwaGFiZXRWOiBWZWN0b3IgPSBuZXcgVmVjdG9yKGFscGhhYmV0QSk7XG4gIHJldHVybiB2ZWN0b3JEb3RQcm9kdWN0KGZyZXFWLCBhbHBoYWJldFYpIC8gKHZlY3Rvckxlbmd0aChmcmVxVikgKiB2ZWN0b3JMZW5ndGgoYWxwaGFiZXRWKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXRlY3RBbHBoYWJldChzdGF0czogU2VxQ29sU3RhdHMpOiBzdHJpbmcge1xuICBjb25zdCBhbHBoYWJldENhbmRpZGF0ZXM6IFtzdHJpbmcsIFNldDxzdHJpbmc+XVtdID0gW1xuICAgIFtBTFBIQUJFVC5QVCwgVW5pdHNIYW5kbGVyLlBlcHRpZGVGYXN0YUFscGhhYmV0XSxcbiAgICBbQUxQSEFCRVQuRE5BLCBVbml0c0hhbmRsZXIuRG5hRmFzdGFBbHBoYWJldF0sXG4gICAgW0FMUEhBQkVULlJOQSwgVW5pdHNIYW5kbGVyLlJuYUZhc3RhQWxwaGFiZXRdLFxuICBdO1xuXG4gIC8vIENhbGN1bGF0ZSBsaWtlbGlob29kcyBmb3IgYWxwaGFiZXRfY2FuZGlkYXRlc1xuICBjb25zdCBhbHBoYWJldENhbmRpZGF0ZXNTaW06IG51bWJlcltdID0gYWxwaGFiZXRDYW5kaWRhdGVzLm1hcChcbiAgICAoYykgPT4gZ2V0QWxwaGFiZXRTaW1pbGFyaXR5KHN0YXRzLmZyZXEsIGNbMV0pKTtcbiAgY29uc3QgbWF4Q29zID0gTWF0aC5tYXgoLi4uYWxwaGFiZXRDYW5kaWRhdGVzU2ltKTtcbiAgY29uc3QgYWxwaGFiZXQgPSBtYXhDb3MgPiAwLjY1ID8gYWxwaGFiZXRDYW5kaWRhdGVzW2FscGhhYmV0Q2FuZGlkYXRlc1NpbS5pbmRleE9mKG1heENvcyldWzBdIDogJ1VOJztcbiAgcmV0dXJuIGFscGhhYmV0O1xufVxuXG4vKiogU2VsZWN0cyBhIHN1aXRhYmxlIHBhbGV0dGUgYmFzZWQgb24gY29sdW1uIGRhdGFcbiAqIEBwYXJhbSB7REcuQ29sdW1ufSBzZXFDb2wgQ29sdW1uIHRvIGxvb2sgZm9yIGEgcGFsZXR0ZVxuICogQHBhcmFtIHtudW1iZXJ9ICBtaW5MZW5ndGggbWluaW11bSBsZW5ndGggb2Ygc2VxdWVuY2UgdG8gZGV0ZWN0IHBhbGV0dGUgKGVtcHR5IHN0cmluZ3MgYXJlIGFsbG93ZWQpXG4gKiBAcmV0dXJuIHtTZXFQYWxldHRlfSBQYWxldHRlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFscGhhYmV0IG9mIHRoZSBzZXF1ZW5jZXMgaW4gdGhlIGNvbHVtblxuICovXG5leHBvcnQgZnVuY3Rpb24gcGlja1VwUGFsZXR0ZShzZXFDb2w6IERHLkNvbHVtbiwgbWluTGVuZ3RoOiBudW1iZXIgPSA1KTogU2VxUGFsZXR0ZSB7XG4gIGxldCBhbHBoYWJldDogc3RyaW5nO1xuICBpZiAoc2VxQ29sLnNlbVR5cGUgPT0gREcuU0VNVFlQRS5NQUNST01PTEVDVUxFKSB7XG4gICAgY29uc3QgdWg6IFVuaXRzSGFuZGxlciA9IG5ldyBVbml0c0hhbmRsZXIoc2VxQ29sKTtcbiAgICBhbHBoYWJldCA9IHVoLmFscGhhYmV0O1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHN0YXRzOiBTZXFDb2xTdGF0cyA9IGdldFN0YXRzKHNlcUNvbCwgbWluTGVuZ3RoLCBzcGxpdHRlckFzRmFzdGEpO1xuICAgIGFscGhhYmV0ID0gZGV0ZWN0QWxwaGFiZXQoc3RhdHMpO1xuICB9XG5cbiAgY29uc3QgcmVzID0gZ2V0UGFsZXR0ZUJ5VHlwZShhbHBoYWJldCk7XG4gIHJldHVybiByZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYWxldHRlQnlUeXBlKHBhbGV0dGVUeXBlOiBzdHJpbmcpOiBiaW8uU2VxUGFsZXR0ZSB7XG4gIHN3aXRjaCAocGFsZXR0ZVR5cGUpIHtcbiAgY2FzZSAnUFQnOlxuICAgIHJldHVybiBiaW8uQW1pbm9hY2lkc1BhbGV0dGVzLkdyb2tHcm91cHM7XG4gIGNhc2UgJ05UJzpcbiAgY2FzZSAnRE5BJzpcbiAgY2FzZSAnUk5BJzpcbiAgICByZXR1cm4gYmlvLk51Y2xlb3RpZGVzUGFsZXR0ZXMuQ2hyb21hdG9ncmFtO1xuICAgIC8vIG90aGVyXG4gIGRlZmF1bHQ6XG4gICAgcmV0dXJuIGJpby5Vbmtub3duU2VxUGFsZXR0ZXMuQ29sb3I7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBpY2tVcFNlcUNvbChkZjogREcuRGF0YUZyYW1lKTogREcuQ29sdW1uIHwgbnVsbCB7XG4gIGNvbnN0IHNlbVR5cGVDb2xMaXN0ID0gZGYuY29sdW1ucy5ieVNlbVR5cGVBbGwoREcuU0VNVFlQRS5NQUNST01PTEVDVUxFKTtcbiAgbGV0IHJlc0NvbDogREcuQ29sdW1uIHwgbnVsbCA9IHNlbVR5cGVDb2xMaXN0LmZpbmQoKGNvbCkgPT4ge1xuICAgIGNvbnN0IHVuaXRzID0gY29sLmdldFRhZyhERy5UQUdTLlVOSVRTKTtcbiAgICByZXR1cm4gdW5pdHMgPyB1bml0cy5pbmRleE9mKCdNU0EnKSAhPT0gLTEgOiBmYWxzZTtcbiAgfSkgPz8gbnVsbDtcbiAgaWYgKCFyZXNDb2wgJiYgc2VtVHlwZUNvbExpc3QubGVuZ3RoID4gMClcbiAgICByZXNDb2wgPSBzZW1UeXBlQ29sTGlzdFswXTtcbiAgcmV0dXJuIHJlc0NvbDtcbn1cbiJdfQ==
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFjcm9tb2xlY3VsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1hY3JvbW9sZWN1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV0QyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0saURBQWlELENBQUM7QUFDdkUsT0FBTyxFQUFDLFlBQVksRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBWS9GLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxLQUFLLEdBQUcsTUFBTSxhQUFhLENBQUM7QUFzQmxDLENBQUM7QUFNRixNQUFNLFVBQVUsUUFBUSxDQUFDLE1BQWlCLEVBQUUsU0FBaUIsRUFBRSxRQUFzQjtJQUNuRixNQUFNLElBQUksR0FBNEIsRUFBRSxDQUFDO0lBQ3pDLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQztJQUN0QixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFFdkIsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFO1FBQ25DLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUzQixJQUFJLFdBQVcsSUFBSSxJQUFJO1lBQ3JCLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO2FBQ3ZCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxXQUFXO1lBQ2xDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFFckIsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRTtZQUM1QixLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRTtnQkFDcEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztvQkFDZCxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNkLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDZDtTQUNGO0tBQ0Y7SUFDRCxPQUFPLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFDLENBQUM7QUFDOUMsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBVyxxQkFBcUIsQ0FBQztBQUV2RDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLEdBQVE7SUFDdEMsT0FBTyxFQUFFLENBQW1CLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDNUQsR0FBRyxDQUFDLENBQUMsRUFBb0IsRUFBRSxFQUFFO1FBQzVCLElBQUksSUFBWSxDQUFDO1FBQ2pCLE1BQU0sQ0FBQyxHQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2hCLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDZDthQUFNO1lBQ0wsSUFBSSxHQUFHLENBQUMsQ0FBQztTQUNWO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUNqQixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxTQUFpQixFQUFFLFFBQTRCLFNBQVM7SUFDL0YsT0FBTyxDQUFDLEdBQVcsRUFBRSxFQUFFO1FBQ3JCLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sTUFBTSxHQUFXLGlDQUFpQyxDQUFDO0FBQ3pELE1BQU0sU0FBUyxHQUFXLGdCQUFnQixDQUFDO0FBRzNDOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLEdBQVE7SUFDckMsTUFBTSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDckIsTUFBTSxFQUFFLEdBQTJCLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDL0QsTUFBTSxLQUFLLEdBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFFL0MsTUFBTSxhQUFhLEdBQUcsQ0FBQyxFQUFVLEVBQVUsRUFBRTtRQUMzQyxTQUFTLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUN4QixNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQztZQUMxQixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzs7WUFFZixPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUMsQ0FBQztJQUVGLE1BQU0sTUFBTSxHQUFhLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3ZELE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLEtBQWEsRUFBRSxTQUFpQixFQUFFLFFBQTRCLFNBQVM7SUFDakcsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSw4QkFBZ0I7UUFDaEQsT0FBTyxlQUFlLENBQUM7U0FDcEIsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxzQ0FBb0I7UUFDekQsT0FBTyx3QkFBd0IsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDL0MsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSw0QkFBZTtRQUNwRCxPQUFPLGNBQWMsQ0FBQzs7UUFFdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsS0FBSyxJQUFJLENBQUMsQ0FBQztJQUVqRCwwQkFBMEI7QUFDNUIsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxHQUFjO0lBQ2pELElBQUksR0FBRyxDQUFDLE9BQU8sS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLGFBQWE7UUFDMUMsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsRUFBRSxDQUFDLE9BQU8sQ0FBQyxhQUFhLFNBQVMsQ0FBQyxDQUFDO0lBRWxGLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsTUFBTSxrQ0FBZ0IsQ0FBQztJQUM3QyxPQUFPLFdBQVcsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDdkMsQ0FBQztBQUVELE1BQU0saUJBQWlCLEdBQVcsUUFBUSxDQUFDO0FBRTNDLCtDQUErQztBQUMvQyxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQWEsRUFBRSxrQkFBMEI7O0lBQ3RFLE1BQU0sZUFBZSxHQUE0QixLQUFLLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDaEYsTUFBTSxXQUFXLEdBQVksS0FBSyxDQUFDLE1BQU0sR0FBRyxrQkFBa0IsSUFBSSxDQUFDLE1BQUEsZUFBZSxhQUFmLGVBQWUsdUJBQWYsZUFBZSxDQUFFLE1BQU0sbUNBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JHLE1BQU0sVUFBVSxHQUFHLE1BQUEsZUFBZSxhQUFmLGVBQWUsdUJBQWYsZUFBZSxDQUFHLENBQUMsQ0FBQyxtQ0FBSSxHQUFHLENBQUM7SUFDL0MsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUN2RixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQUMsSUFBa0IsRUFBRSxRQUFxQixFQUFFLFlBQW9CLEdBQUc7SUFDdEcsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQVMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDM0UsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUV2QixNQUFNLEtBQUssR0FBYSxFQUFFLENBQUM7SUFDM0IsTUFBTSxTQUFTLEdBQWEsRUFBRSxDQUFDO0lBQy9CLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFO1FBQ3BCLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDekM7SUFDRCwwRkFBMEY7SUFDMUYsTUFBTSxLQUFLLEdBQVcsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsTUFBTSxTQUFTLEdBQVcsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEQsT0FBTyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDOUYsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsS0FBa0I7SUFDL0MsTUFBTSxrQkFBa0IsR0FBNEI7UUFDbEQseUJBQWMsWUFBWSxDQUFDLG9CQUFvQixDQUFDO1FBQ2hELDJCQUFlLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQztRQUM3QywyQkFBZSxZQUFZLENBQUMsZ0JBQWdCLENBQUM7S0FDOUMsQ0FBQztJQUVGLGdEQUFnRDtJQUNoRCxNQUFNLHFCQUFxQixHQUFhLGtCQUFrQixDQUFDLEdBQUcsQ0FDNUQsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcscUJBQXFCLENBQUMsQ0FBQztJQUNsRCxNQUFNLFFBQVEsR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3JHLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxNQUFpQixFQUFFLFlBQW9CLENBQUM7SUFDcEUsSUFBSSxRQUFnQixDQUFDO0lBQ3JCLElBQUksTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRTtRQUM5QyxNQUFNLEVBQUUsR0FBaUIsSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEQsUUFBUSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUM7S0FDeEI7U0FBTTtRQUNMLE1BQU0sS0FBSyxHQUFnQixRQUFRLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUN4RSxRQUFRLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ2xDO0lBRUQsTUFBTSxHQUFHLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkMsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLFdBQW1CO0lBQ2xELFFBQVEsV0FBVyxFQUFFO1FBQ3JCLEtBQUssSUFBSTtZQUNQLE9BQU8sR0FBRyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQztRQUMzQyxLQUFLLElBQUksQ0FBQztRQUNWLEtBQUssS0FBSyxDQUFDO1FBQ1gsS0FBSyxLQUFLO1lBQ1IsT0FBTyxHQUFHLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUFDO1FBQzVDLFFBQVE7UUFDVjtZQUNFLE9BQU8sR0FBRyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQztLQUNyQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLEVBQWdCOztJQUMzQyxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3pFLElBQUksTUFBTSxHQUFxQixNQUFBLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUN6RCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNyRCxDQUFDLENBQUMsbUNBQUksSUFBSSxDQUFDO0lBQ1gsSUFBSSxDQUFDLE1BQU0sSUFBSSxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUM7UUFDdEMsTUFBTSxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcblxuaW1wb3J0IHtWZWN0b3J9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3R5cGUtZGVjbGFyYXRpb25zJztcbmltcG9ydCB7dmVjdG9yTGVuZ3RoLCB2ZWN0b3JEb3RQcm9kdWN0fSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucyc7XG5cbi8qKiBTdGF0cyBvZiBzZXF1ZW5jZXMgd2l0aCBzcGVjaWZpZWQgc3BsaXR0ZXIgZnVuYywgcmV0dXJucyB7IGZyZXEsIHNhbWVMZW5ndGggfS5cbiAqIEBwYXJhbSB7REcuQ29sdW1ufSBzZXFDb2xcbiAqIEBwYXJhbSB7bnVtYmVyfSBtaW5MZW5ndGhcbiAqIEBwYXJhbSB7U3BsaXR0ZXJGdW5jfSBzcGxpdHRlclxuICogQHJldHVybiB7IFNlcUNvbFN0YXRzIH0sIHNhbWVMZW5ndGg6IGJvb2xlYW4gfSBzdGF0cyBvZiBjb2x1bW4gc2VxdWVuY2VzXG4gKi9cbmltcG9ydCB7U2VxUGFsZXR0ZX0gZnJvbSAnLi4vc2VxLXBhbGV0dGVzJztcbmltcG9ydCB7QW1pbm9hY2lkcywgQW1pbm9hY2lkc1BhbGV0dGVzfSBmcm9tICcuLi9hbWlub2FjaWRzJztcbmltcG9ydCB7TnVjbGVvdGlkZXMsIE51Y2xlb3RpZGVzUGFsZXR0ZXN9IGZyb20gJy4uL251Y2xlb3RpZGVzJztcbmltcG9ydCB7VW5rbm93blNlcVBhbGV0dGVzfSBmcm9tICcuLi91bmtub3duJztcbmltcG9ydCB3dSBmcm9tICd3dSc7XG5pbXBvcnQge1VuaXRzSGFuZGxlcn0gZnJvbSAnLi4vdXRpbHMvdW5pdHMtaGFuZGxlcic7XG5pbXBvcnQgKiBhcyBiaW8gZnJvbSAnLi4vLi4vaW5kZXgnO1xuXG4vKiogZW51bSB0eXBlIHRvIHNpbXBsaWZ5IHNldHRpbmcgXCJ1c2VyLWZyaWVuZGx5XCIgbm90YXRpb24gaWYgbmVjZXNzYXJ5ICovXG5leHBvcnQgY29uc3QgZW51bSBOT1RBVElPTiB7XG4gIEZBU1RBID0gJ2Zhc3RhJyxcbiAgU0VQQVJBVE9SID0gJ3NlcGFyYXRvcicsXG4gIEhFTE0gPSAnaGVsbScsXG59XG5cbmV4cG9ydCBjb25zdCBlbnVtIEFMUEhBQkVUIHtcbiAgRE5BID0gJ0ROQScsXG4gIFJOQSA9ICdSTkEnLFxuICBQVCA9ICdQVCcsXG4gIFVOID0gJ1VOJyxcbn1cblxuZXhwb3J0IGNvbnN0IGVudW0gVEFHUyB7XG4gIGFsaWduZWQgPSAnYWxpZ25lZCcsXG4gIGFscGhhYmV0ID0gJ2FscGhhYmV0JyxcbiAgYWxwaGFiZXRTaXplID0gJy5hbHBoYWJldFNpemUnLFxuICBhbHBoYWJldElzTXVsdGljaGFyID0gJy5hbHBoYWJldElzTXVsdGljaGFyJyxcbiAgc2VwYXJhdG9yID0gJ3NlcGFyYXRvcicsXG59O1xuXG5leHBvcnQgdHlwZSBTZXFDb2xTdGF0cyA9IHsgZnJlcTogTW9ub21lckZyZXFzLCBzYW1lTGVuZ3RoOiBib29sZWFuIH1cbmV4cG9ydCB0eXBlIFNwbGl0dGVyRnVuYyA9IChzZXE6IHN0cmluZykgPT4gc3RyaW5nW107XG5leHBvcnQgdHlwZSBNb25vbWVyRnJlcXMgPSB7IFttOiBzdHJpbmddOiBudW1iZXIgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXRzKHNlcUNvbDogREcuQ29sdW1uLCBtaW5MZW5ndGg6IG51bWJlciwgc3BsaXR0ZXI6IFNwbGl0dGVyRnVuYyk6IFNlcUNvbFN0YXRzIHtcbiAgY29uc3QgZnJlcTogeyBbbTogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcbiAgbGV0IHNhbWVMZW5ndGggPSB0cnVlO1xuICBsZXQgZmlyc3RMZW5ndGggPSBudWxsO1xuXG4gIGZvciAoY29uc3Qgc2VxIG9mIHNlcUNvbC5jYXRlZ29yaWVzKSB7XG4gICAgY29uc3QgbVNlcSA9IHNwbGl0dGVyKHNlcSk7XG5cbiAgICBpZiAoZmlyc3RMZW5ndGggPT0gbnVsbClcbiAgICAgIGZpcnN0TGVuZ3RoID0gbVNlcS5sZW5ndGg7XG4gICAgZWxzZSBpZiAobVNlcS5sZW5ndGggIT09IGZpcnN0TGVuZ3RoKVxuICAgICAgc2FtZUxlbmd0aCA9IGZhbHNlO1xuXG4gICAgaWYgKG1TZXEubGVuZ3RoID49IG1pbkxlbmd0aCkge1xuICAgICAgZm9yIChjb25zdCBtIG9mIG1TZXEpIHtcbiAgICAgICAgaWYgKCEobSBpbiBmcmVxKSlcbiAgICAgICAgICBmcmVxW21dID0gMDtcbiAgICAgICAgZnJlcVttXSArPSAxO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4ge2ZyZXE6IGZyZXEsIHNhbWVMZW5ndGg6IHNhbWVMZW5ndGh9O1xufVxuXG5leHBvcnQgY29uc3QgbW9ub21lclJlOiBSZWdFeHAgPSAvXFxbKFxcdyspXFxdfChcXHcpfCgtKS9nO1xuXG4vKiogU3BsaXQgc2VxdWVuY2UgZm9yIHNpbmdsZSBjaGFyYWN0ZXIgbW9ub21lcnMsIHNxdWFyZSBicmFja2V0cyBtdWx0aWNoYXIgbW9ub21lciBuYW1lcyBvciBnYXAgc3ltYm9sLlxuICogQHBhcmFtIHthbnl9IHNlcSBvYmplY3Qgd2l0aCBzZXF1ZW5jZVxuICogQHJldHVybiB7c3RyaW5nW119IGFycmF5IG9mIG1vbm9tZXJzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdHRlckFzRmFzdGEoc2VxOiBhbnkpOiBzdHJpbmdbXSB7XG4gIHJldHVybiB3dTxSZWdFeHBNYXRjaEFycmF5PihzZXEudG9TdHJpbmcoKS5tYXRjaEFsbChtb25vbWVyUmUpKVxuICAgIC5tYXAoKG1hOiBSZWdFeHBNYXRjaEFycmF5KSA9PiB7XG4gICAgICBsZXQgbVJlczogc3RyaW5nO1xuICAgICAgY29uc3QgbTogc3RyaW5nID0gbWFbMF07XG4gICAgICBpZiAobS5sZW5ndGggPiAxKSB7XG4gICAgICAgIG1SZXMgPSBtYVsxXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1SZXMgPSBtO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1SZXM7XG4gICAgfSkudG9BcnJheSgpO1xufVxuXG4vKiogR2V0cyBtZXRob2QgdG8gc3BsaXQgc2VxdWVuY2UgYnkgc2VwYXJhdG9yXG4gKiBAcGFyYW0ge3N0cmluZ30gc2VwYXJhdG9yXG4gKiBAcGFyYW0gbGltaXRcbiAqIEByZXR1cm4ge1NwbGl0dGVyRnVuY31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNwbGl0dGVyV2l0aFNlcGFyYXRvcihzZXBhcmF0b3I6IHN0cmluZywgbGltaXQ6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCk6IFNwbGl0dGVyRnVuYyB7XG4gIHJldHVybiAoc2VxOiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gc2VxLnNwbGl0KHNlcGFyYXRvciwgbGltaXQpO1xuICB9O1xufVxuXG5jb25zdCBoZWxtUmU6IFJlZ0V4cCA9IC8oUEVQVElERTF8RE5BMXxSTkExKVxceyhbXn1dKyl9L2c7XG5jb25zdCBoZWxtUHAxUmU6IFJlZ0V4cCA9IC9cXFsoW15cXFtcXF1dKyldL2c7XG5cblxuLyoqIFNwbGl0cyBIZWxtIHN0cmluZyB0byBtb25vbWVycywgYnV0IGRvZXMgbm90IHJlcGxhY2UgbW9ub21lciBuYW1lcyB0byBvdGhlciBub3RhdGlvbiAoZS5nLiBmb3IgUk5BKS5cbiAqIE9ubHkgZm9yIGxpbmVhciBwb2x5bWVycywgZG9lcyBub3Qgc3BsaXQgUk5BIGZvciByaWJvc2UgYW5kIHBob3NwaGF0ZSBtb25vbWVycy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBzZXEgU291cmNlIHN0cmluZyBvZiBIRUxNIG5vdGF0aW9uXG4gKiBAcmV0dXJuIHtzdHJpbmdbXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0dGVyQXNIZWxtKHNlcTogYW55KTogc3RyaW5nW10ge1xuICBoZWxtUmUubGFzdEluZGV4ID0gMDtcbiAgY29uc3QgZWE6IFJlZ0V4cEV4ZWNBcnJheSB8IG51bGwgPSBoZWxtUmUuZXhlYyhzZXEudG9TdHJpbmcoKSk7XG4gIGNvbnN0IGluU2VxOiBzdHJpbmcgfCBudWxsID0gZWEgPyBlYVsyXSA6IG51bGw7XG5cbiAgY29uc3QgbW1Qb3N0UHJvY2VzcyA9IChtbTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgICBoZWxtUHAxUmUubGFzdEluZGV4ID0gMDtcbiAgICBjb25zdCBwcDFNID0gaGVsbVBwMVJlLmV4ZWMobW0pO1xuICAgIGlmIChwcDFNICYmIHBwMU0ubGVuZ3RoID49IDIpXG4gICAgICByZXR1cm4gcHAxTVsxXTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gbW07XG4gIH07XG5cbiAgY29uc3QgbW1MaXN0OiBzdHJpbmdbXSA9IGluU2VxID8gaW5TZXEuc3BsaXQoJy4nKSA6IFtdO1xuICByZXR1cm4gbW1MaXN0Lm1hcChtbVBvc3RQcm9jZXNzKTtcbn1cblxuLyoqIEdldCBzcGxpdHRlciBtZXRob2QgdG8gc3BsaXQgc2VxdWVuY2VzIHRvIG1vbm9tZXJzXG4gKiBAcGFyYW0ge3N0cmluZ30gdW5pdHNcbiAqIEBwYXJhbSB7c3RyaW5nfSBzZXBhcmF0b3JcbiAqIEBwYXJhbSBsaW1pdFxuICogQHJldHVybiB7U3BsaXR0ZXJGdW5jfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3BsaXR0ZXIodW5pdHM6IHN0cmluZywgc2VwYXJhdG9yOiBzdHJpbmcsIGxpbWl0OiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQpOiBTcGxpdHRlckZ1bmMge1xuICBpZiAodW5pdHMudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKE5PVEFUSU9OLkZBU1RBKSlcbiAgICByZXR1cm4gc3BsaXR0ZXJBc0Zhc3RhO1xuICBlbHNlIGlmICh1bml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoTk9UQVRJT04uU0VQQVJBVE9SKSlcbiAgICByZXR1cm4gZ2V0U3BsaXR0ZXJXaXRoU2VwYXJhdG9yKHNlcGFyYXRvciwgbGltaXQpO1xuICBlbHNlIGlmICh1bml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoTk9UQVRJT04uSEVMTSkpXG4gICAgcmV0dXJuIHNwbGl0dGVyQXNIZWxtO1xuICBlbHNlXG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHVuaXRzICR7dW5pdHN9IC5gKTtcblxuICAvLyBUT0RPOiBTcGxpdHRlciBmb3IgSEVMTVxufVxuXG4vKiogR2VuZXJhdGUgc3BsaXR0ZXIgZnVuY3Rpb24gZm9yIHNlcXVlbmNlIGNvbHVtblxuICogQHBhcmFtIHtERy5Db2x1bW59IGNvbFxuICogQHJldHVybiB7U3BsaXR0ZXJGdW5jfSBTcGxpdHRlciBmdW5jdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3BsaXR0ZXJGb3JDb2x1bW4oY29sOiBERy5Db2x1bW4pOiBTcGxpdHRlckZ1bmMge1xuICBpZiAoY29sLnNlbVR5cGUgIT09IERHLlNFTVRZUEUuTUFDUk9NT0xFQ1VMRSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEdldCBzcGxpdHRlciBmb3Igc2VtVHlwZSBcIiR7REcuU0VNVFlQRS5NQUNST01PTEVDVUxFfVwiIG9ubHkuYCk7XG5cbiAgY29uc3QgdW5pdHMgPSBjb2wuZ2V0VGFnKERHLlRBR1MuVU5JVFMpO1xuICBjb25zdCBzZXBhcmF0b3IgPSBjb2wuZ2V0VGFnKFRBR1Muc2VwYXJhdG9yKTtcbiAgcmV0dXJuIGdldFNwbGl0dGVyKHVuaXRzLCBzZXBhcmF0b3IpO1xufVxuXG5jb25zdCBsb25nTW9ub21lclBhcnRSZTogUmVnRXhwID0gLyhcXHcrKS9nO1xuXG4vKiogQ29udmVydCBsb25nIG1vbm9tZXIgbmFtZXMgdG8gc2hvcnQgb25lcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vbm9tZXJUb1Nob3J0KGFtaW5vOiBzdHJpbmcsIG1heExlbmd0aE9mTW9ub21lcjogbnVtYmVyKTogc3RyaW5nIHtcbiAgY29uc3Qgc2hvcnRBbWlub01hdGNoOiBSZWdFeHBNYXRjaEFycmF5IHwgbnVsbCA9IGFtaW5vLm1hdGNoKGxvbmdNb25vbWVyUGFydFJlKTtcbiAgY29uc3QgbmVlZEFkZERvdHM6IGJvb2xlYW4gPSBhbWluby5sZW5ndGggPiBtYXhMZW5ndGhPZk1vbm9tZXIgfHwgKHNob3J0QW1pbm9NYXRjaD8ubGVuZ3RoID8/IDApID4gMTtcbiAgY29uc3Qgc2hvcnRBbWlubyA9IHNob3J0QW1pbm9NYXRjaD8uWzBdID8/ICcgJztcbiAgcmV0dXJuICFuZWVkQWRkRG90cyA/IHNob3J0QW1pbm8gOiBzaG9ydEFtaW5vLnN1YnN0cmluZygwLCBtYXhMZW5ndGhPZk1vbm9tZXIpICsgJ+KApic7XG59XG5cbi8qKiBDYWxjdWxhdGUgc2ltaWxhcml0eSBpbiBjdXJyZW50IHNlcXVlbmNlIGFuZCBhbHBoYWJldC5cbiAqIEBwYXJhbSB7TW9ub21lckZyZXFzfSBmcmVxXG4gKiBAcGFyYW0ge1NldDxzdHJpbmc+fSBhbHBoYWJldFxuICogQHBhcmFtIHtzdHJpbmd9IGdhcFN5bWJvbFxuICogQHJldHVybiB7bnVtYmVyfSBDb3NpbmUgc2ltaWxhcml0eVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxwaGFiZXRTaW1pbGFyaXR5KGZyZXE6IE1vbm9tZXJGcmVxcywgYWxwaGFiZXQ6IFNldDxzdHJpbmc+LCBnYXBTeW1ib2w6IHN0cmluZyA9ICctJyk6IG51bWJlciB7XG4gIGNvbnN0IGtleXMgPSBuZXcgU2V0PHN0cmluZz4oWy4uLm5ldyBTZXQoT2JqZWN0LmtleXMoZnJlcSkpLCAuLi5hbHBoYWJldF0pO1xuICBrZXlzLmRlbGV0ZShnYXBTeW1ib2wpO1xuXG4gIGNvbnN0IGZyZXFBOiBudW1iZXJbXSA9IFtdO1xuICBjb25zdCBhbHBoYWJldEE6IG51bWJlcltdID0gW107XG4gIGZvciAoY29uc3QgbSBvZiBrZXlzKSB7XG4gICAgZnJlcUEucHVzaChtIGluIGZyZXEgPyBmcmVxW21dIDogMCk7XG4gICAgYWxwaGFiZXRBLnB1c2goYWxwaGFiZXQuaGFzKG0pID8gMSA6IDApO1xuICB9XG4gIC8qIFRoZXJlIHdlcmUgYSBmZXcgaWRlYXM6IGNoaS1zcXVhcmVkLCBwZWFyc29uIGNvcnJlbGF0aW9uICh2YXJpYW5jZT8pLCBzY2FsYXIgcHJvZHVjdCAqL1xuICBjb25zdCBmcmVxVjogVmVjdG9yID0gbmV3IFZlY3RvcihmcmVxQSk7XG4gIGNvbnN0IGFscGhhYmV0VjogVmVjdG9yID0gbmV3IFZlY3RvcihhbHBoYWJldEEpO1xuICByZXR1cm4gdmVjdG9yRG90UHJvZHVjdChmcmVxViwgYWxwaGFiZXRWKSAvICh2ZWN0b3JMZW5ndGgoZnJlcVYpICogdmVjdG9yTGVuZ3RoKGFscGhhYmV0VikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGV0ZWN0QWxwaGFiZXQoc3RhdHM6IFNlcUNvbFN0YXRzKTogc3RyaW5nIHtcbiAgY29uc3QgYWxwaGFiZXRDYW5kaWRhdGVzOiBbc3RyaW5nLCBTZXQ8c3RyaW5nPl1bXSA9IFtcbiAgICBbQUxQSEFCRVQuUFQsIFVuaXRzSGFuZGxlci5QZXB0aWRlRmFzdGFBbHBoYWJldF0sXG4gICAgW0FMUEhBQkVULkROQSwgVW5pdHNIYW5kbGVyLkRuYUZhc3RhQWxwaGFiZXRdLFxuICAgIFtBTFBIQUJFVC5STkEsIFVuaXRzSGFuZGxlci5SbmFGYXN0YUFscGhhYmV0XSxcbiAgXTtcblxuICAvLyBDYWxjdWxhdGUgbGlrZWxpaG9vZHMgZm9yIGFscGhhYmV0X2NhbmRpZGF0ZXNcbiAgY29uc3QgYWxwaGFiZXRDYW5kaWRhdGVzU2ltOiBudW1iZXJbXSA9IGFscGhhYmV0Q2FuZGlkYXRlcy5tYXAoXG4gICAgKGMpID0+IGdldEFscGhhYmV0U2ltaWxhcml0eShzdGF0cy5mcmVxLCBjWzFdKSk7XG4gIGNvbnN0IG1heENvcyA9IE1hdGgubWF4KC4uLmFscGhhYmV0Q2FuZGlkYXRlc1NpbSk7XG4gIGNvbnN0IGFscGhhYmV0ID0gbWF4Q29zID4gMC42NSA/IGFscGhhYmV0Q2FuZGlkYXRlc1thbHBoYWJldENhbmRpZGF0ZXNTaW0uaW5kZXhPZihtYXhDb3MpXVswXSA6ICdVTic7XG4gIHJldHVybiBhbHBoYWJldDtcbn1cblxuLyoqIFNlbGVjdHMgYSBzdWl0YWJsZSBwYWxldHRlIGJhc2VkIG9uIGNvbHVtbiBkYXRhXG4gKiBAcGFyYW0ge0RHLkNvbHVtbn0gc2VxQ29sIENvbHVtbiB0byBsb29rIGZvciBhIHBhbGV0dGVcbiAqIEBwYXJhbSB7bnVtYmVyfSAgbWluTGVuZ3RoIG1pbmltdW0gbGVuZ3RoIG9mIHNlcXVlbmNlIHRvIGRldGVjdCBwYWxldHRlIChlbXB0eSBzdHJpbmdzIGFyZSBhbGxvd2VkKVxuICogQHJldHVybiB7U2VxUGFsZXR0ZX0gUGFsZXR0ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbHBoYWJldCBvZiB0aGUgc2VxdWVuY2VzIGluIHRoZSBjb2x1bW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBpY2tVcFBhbGV0dGUoc2VxQ29sOiBERy5Db2x1bW4sIG1pbkxlbmd0aDogbnVtYmVyID0gNSk6IFNlcVBhbGV0dGUge1xuICBsZXQgYWxwaGFiZXQ6IHN0cmluZztcbiAgaWYgKHNlcUNvbC5zZW1UeXBlID09IERHLlNFTVRZUEUuTUFDUk9NT0xFQ1VMRSkge1xuICAgIGNvbnN0IHVoOiBVbml0c0hhbmRsZXIgPSBuZXcgVW5pdHNIYW5kbGVyKHNlcUNvbCk7XG4gICAgYWxwaGFiZXQgPSB1aC5hbHBoYWJldDtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBzdGF0czogU2VxQ29sU3RhdHMgPSBnZXRTdGF0cyhzZXFDb2wsIG1pbkxlbmd0aCwgc3BsaXR0ZXJBc0Zhc3RhKTtcbiAgICBhbHBoYWJldCA9IGRldGVjdEFscGhhYmV0KHN0YXRzKTtcbiAgfVxuXG4gIGNvbnN0IHJlcyA9IGdldFBhbGV0dGVCeVR5cGUoYWxwaGFiZXQpO1xuICByZXR1cm4gcmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFsZXR0ZUJ5VHlwZShwYWxldHRlVHlwZTogc3RyaW5nKTogYmlvLlNlcVBhbGV0dGUge1xuICBzd2l0Y2ggKHBhbGV0dGVUeXBlKSB7XG4gIGNhc2UgJ1BUJzpcbiAgICByZXR1cm4gYmlvLkFtaW5vYWNpZHNQYWxldHRlcy5Hcm9rR3JvdXBzO1xuICBjYXNlICdOVCc6XG4gIGNhc2UgJ0ROQSc6XG4gIGNhc2UgJ1JOQSc6XG4gICAgcmV0dXJuIGJpby5OdWNsZW90aWRlc1BhbGV0dGVzLkNocm9tYXRvZ3JhbTtcbiAgICAvLyBvdGhlclxuICBkZWZhdWx0OlxuICAgIHJldHVybiBiaW8uVW5rbm93blNlcVBhbGV0dGVzLkNvbG9yO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwaWNrVXBTZXFDb2woZGY6IERHLkRhdGFGcmFtZSk6IERHLkNvbHVtbiB8IG51bGwge1xuICBjb25zdCBzZW1UeXBlQ29sTGlzdCA9IGRmLmNvbHVtbnMuYnlTZW1UeXBlQWxsKERHLlNFTVRZUEUuTUFDUk9NT0xFQ1VMRSk7XG4gIGxldCByZXNDb2w6IERHLkNvbHVtbiB8IG51bGwgPSBzZW1UeXBlQ29sTGlzdC5maW5kKChjb2wpID0+IHtcbiAgICBjb25zdCB1bml0cyA9IGNvbC5nZXRUYWcoREcuVEFHUy5VTklUUyk7XG4gICAgcmV0dXJuIHVuaXRzID8gdW5pdHMuaW5kZXhPZignTVNBJykgIT09IC0xIDogZmFsc2U7XG4gIH0pID8/IG51bGw7XG4gIGlmICghcmVzQ29sICYmIHNlbVR5cGVDb2xMaXN0Lmxlbmd0aCA+IDApXG4gICAgcmVzQ29sID0gc2VtVHlwZUNvbExpc3RbMF07XG4gIHJldHVybiByZXNDb2w7XG59XG4iXX0=
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export declare type MonomerEntry = {
|
|
2
|
+
mol: string;
|
|
3
|
+
type: string;
|
|
4
|
+
analogueCode: string;
|
|
5
|
+
linkages: {
|
|
6
|
+
[link: string]: {
|
|
7
|
+
atomNumber: number;
|
|
8
|
+
type: string;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
export declare type MonomerEntries = {
|
|
13
|
+
[name: string]: MonomerEntry;
|
|
14
|
+
};
|
|
15
|
+
export declare type LinkData = {
|
|
16
|
+
[link: string]: {
|
|
17
|
+
atomNumber: number;
|
|
18
|
+
type: string;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
/** HELM associated sdf libraries with monomer processing*/
|
|
22
|
+
export declare class MonomerLibrary {
|
|
23
|
+
static libName: string;
|
|
24
|
+
private monomerFields;
|
|
25
|
+
private library;
|
|
26
|
+
private monomers;
|
|
27
|
+
constructor(sdf: string);
|
|
28
|
+
/** getting full monomer information from monomer library
|
|
29
|
+
* @param {string} name
|
|
30
|
+
* @return {MonomerEntry}
|
|
31
|
+
*/
|
|
32
|
+
getMonomerEntry(name: string): MonomerEntry;
|
|
33
|
+
/** getting mol as string for monomer
|
|
34
|
+
* @param {string} name
|
|
35
|
+
* @return {string}
|
|
36
|
+
*/
|
|
37
|
+
getMonomerMol(name: string): string;
|
|
38
|
+
/** getting the list of the minomers available in library*/
|
|
39
|
+
get monomerNames(): string[];
|
|
40
|
+
static get id(): string;
|
|
41
|
+
private getLinkData;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=monomer-library.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monomer-library.d.ts","sourceRoot":"","sources":["monomer-library.ts"],"names":[],"mappings":"AAAA,oBAAY,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAA;CACnE,CAAC;AACF,oBAAY,cAAc,GAAG;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAA;CAAE,CAAC;AAC9D,oBAAY,QAAQ,GAAG;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAEhF,2DAA2D;AAC3D,qBAAa,cAAc;IACzB,MAAM,CAAC,OAAO,SAAoB;IAElC,OAAO,CAAC,aAAa,CAEnB;IAEF,OAAO,CAAC,OAAO,CAAsB;IAErC,OAAO,CAAC,QAAQ,CAAgB;gBAEpB,GAAG,EAAE,MAAM;IA2BvB;;;OAGG;IACI,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY;IAOlD;;;OAGG;IACI,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAiB1C,2DAA2D;IAC3D,IAAI,YAAY,IAAI,MAAM,EAAE,CAE3B;IAED,MAAM,KAAK,EAAE,IAAI,MAAM,CAEtB;IAED,OAAO,CAAC,WAAW;CAiCpB"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/** HELM associated sdf libraries with monomer processing*/
|
|
2
|
+
export class MonomerLibrary {
|
|
3
|
+
constructor(sdf) {
|
|
4
|
+
this.monomerFields = [
|
|
5
|
+
'molecule', 'MonomerType', 'MonomerNaturalAnalogCode', 'MonomerName', 'MonomerCode', 'MonomerCaps', 'BranchMonomer',
|
|
6
|
+
];
|
|
7
|
+
this.library = {};
|
|
8
|
+
this.monomers = [];
|
|
9
|
+
const sdfReader = new SDFReader();
|
|
10
|
+
const data = sdfReader.getColls(sdf);
|
|
11
|
+
this.monomerFields.forEach((f) => {
|
|
12
|
+
if (!(f in data))
|
|
13
|
+
throw new Error(`Monomer library was not compiled: ${f} field is absent in provided file`);
|
|
14
|
+
if (data[f].length != data.molecule.length)
|
|
15
|
+
throw new Error(`Monomer library was not compiled: ${f} field is not presented for each monomer`);
|
|
16
|
+
});
|
|
17
|
+
for (let i = 0; i < data.molecule.length; i++) {
|
|
18
|
+
const linkData = this.getLinkData(data.molecule[i], data.MonomerCaps[i], data.MonomerName[i]);
|
|
19
|
+
const entry = {
|
|
20
|
+
mol: data.molecule[i],
|
|
21
|
+
type: 'Peptide',
|
|
22
|
+
code: data.MonomerCode[i],
|
|
23
|
+
analogueCode: data.MonomerNaturalAnalogCode[i],
|
|
24
|
+
linkages: linkData,
|
|
25
|
+
};
|
|
26
|
+
const name = data.MonomerCode[i] !== '.' ? data.MonomerCode[i] : data.MonomerName[i];
|
|
27
|
+
this.library[name] = entry;
|
|
28
|
+
this.monomers.push(name);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/** getting full monomer information from monomer library
|
|
32
|
+
* @param {string} name
|
|
33
|
+
* @return {MonomerEntry}
|
|
34
|
+
*/
|
|
35
|
+
getMonomerEntry(name) {
|
|
36
|
+
if (!this.monomers.includes(name))
|
|
37
|
+
throw new Error(`Monomer library do not contain ${name} monomer`);
|
|
38
|
+
return this.library[name];
|
|
39
|
+
}
|
|
40
|
+
/** getting mol as string for monomer
|
|
41
|
+
* @param {string} name
|
|
42
|
+
* @return {string}
|
|
43
|
+
*/
|
|
44
|
+
getMonomerMol(name) {
|
|
45
|
+
if (!this.monomers.includes(name))
|
|
46
|
+
throw new Error(`Monomer library do not contain ${name} monomer`);
|
|
47
|
+
const entry = this.library[name];
|
|
48
|
+
let monomerMol = entry.mol.replace(/M RGP .+\n/, '');
|
|
49
|
+
//order matters
|
|
50
|
+
const links = Object.keys(entry.linkages);
|
|
51
|
+
for (const link of links)
|
|
52
|
+
monomerMol = monomerMol.replace('R#', entry.linkages[link].type + ' ');
|
|
53
|
+
return monomerMol;
|
|
54
|
+
}
|
|
55
|
+
/** getting the list of the minomers available in library*/
|
|
56
|
+
get monomerNames() {
|
|
57
|
+
return this.monomers;
|
|
58
|
+
}
|
|
59
|
+
static get id() {
|
|
60
|
+
return MonomerLibrary.libName;
|
|
61
|
+
}
|
|
62
|
+
getLinkData(mol, caps, name) {
|
|
63
|
+
var _a;
|
|
64
|
+
const rawData = mol.match(/M RGP .+/);
|
|
65
|
+
if (rawData === null)
|
|
66
|
+
throw new Error(`Monomer library was not compiled: ${name} entry has no RGP`);
|
|
67
|
+
const types = {};
|
|
68
|
+
(_a = caps.split('\n')) === null || _a === void 0 ? void 0 : _a.forEach((e) => {
|
|
69
|
+
types[e.match(/\d+/)[0]] = e.match(/(?<=\])\w+/)[0];
|
|
70
|
+
});
|
|
71
|
+
const data = rawData[0].replace('M RGP ', '').split(/\s+/);
|
|
72
|
+
const res = {};
|
|
73
|
+
for (let i = 0; i < parseInt(data[0]); i++) {
|
|
74
|
+
const code = parseInt(data[2 * i + 2]);
|
|
75
|
+
let type = '';
|
|
76
|
+
switch (code) {
|
|
77
|
+
case 1:
|
|
78
|
+
type = 'N-terminal';
|
|
79
|
+
break;
|
|
80
|
+
case 2:
|
|
81
|
+
type = 'C-terminal';
|
|
82
|
+
break;
|
|
83
|
+
case 3:
|
|
84
|
+
type = 'branch';
|
|
85
|
+
break;
|
|
86
|
+
default:
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
res[type] = { atomNumber: parseInt(data[2 * i + 1]), type: types[code] };
|
|
90
|
+
}
|
|
91
|
+
return res;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
MonomerLibrary.libName = 'monomerLibrary';
|
|
95
|
+
//TODO: merge with Chem version
|
|
96
|
+
class SDFReader {
|
|
97
|
+
constructor() {
|
|
98
|
+
this.dataColls = { 'molecule': [] };
|
|
99
|
+
}
|
|
100
|
+
getColls(content) {
|
|
101
|
+
this.read(content);
|
|
102
|
+
return this.dataColls;
|
|
103
|
+
}
|
|
104
|
+
read(content) {
|
|
105
|
+
content = content.replaceAll('\r', ''); //equalize old and new sdf standards
|
|
106
|
+
let startIndex = content.indexOf('$$$$', 0);
|
|
107
|
+
this.parse(content, 0, startIndex, (name, val) => {
|
|
108
|
+
this.dataColls[name] = [];
|
|
109
|
+
this.dataColls[name].push(val);
|
|
110
|
+
});
|
|
111
|
+
startIndex += 5;
|
|
112
|
+
while (startIndex > -1 && startIndex < content.length)
|
|
113
|
+
startIndex = this.readNext(content, startIndex);
|
|
114
|
+
}
|
|
115
|
+
readNext(content, startIndex) {
|
|
116
|
+
const nextStartIndex = content.indexOf('$$$$', startIndex);
|
|
117
|
+
if (nextStartIndex === -1) {
|
|
118
|
+
return -1;
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
this.parse(content, startIndex, nextStartIndex, (name, val) => {
|
|
122
|
+
this.dataColls[name].push(val);
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
if (nextStartIndex > -1)
|
|
126
|
+
return nextStartIndex + 5;
|
|
127
|
+
return nextStartIndex;
|
|
128
|
+
}
|
|
129
|
+
parse(content, start, end, handler) {
|
|
130
|
+
const molEnd = +content.indexOf('M END\n', start) + 7;
|
|
131
|
+
let localEnd = start;
|
|
132
|
+
this.dataColls['molecule'].push(content.substring(start, molEnd));
|
|
133
|
+
start = molEnd;
|
|
134
|
+
while (localEnd < end) {
|
|
135
|
+
start = content.indexOf('> <', localEnd);
|
|
136
|
+
if (start === -1)
|
|
137
|
+
return;
|
|
138
|
+
start += 3;
|
|
139
|
+
localEnd = content.indexOf('>\n', start);
|
|
140
|
+
if (localEnd === -1)
|
|
141
|
+
return;
|
|
142
|
+
const propertyName = content.substring(start, localEnd);
|
|
143
|
+
start = localEnd + 2;
|
|
144
|
+
localEnd = content.indexOf('\n', start);
|
|
145
|
+
if (localEnd === -1)
|
|
146
|
+
localEnd = end;
|
|
147
|
+
else if (content[localEnd + 1] != '\n')
|
|
148
|
+
localEnd = content.indexOf('\n', localEnd + 1);
|
|
149
|
+
handler(propertyName, content.substring(start, localEnd));
|
|
150
|
+
localEnd += 2;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ub21lci1saWJyYXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibW9ub21lci1saWJyYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLDJEQUEyRDtBQUMzRCxNQUFNLE9BQU8sY0FBYztJQVd6QixZQUFZLEdBQVc7UUFSZixrQkFBYSxHQUFhO1lBQ2hDLFVBQVUsRUFBRSxhQUFhLEVBQUUsMEJBQTBCLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsZUFBZTtTQUNwSCxDQUFDO1FBRU0sWUFBTyxHQUFtQixFQUFFLENBQUM7UUFFN0IsYUFBUSxHQUFhLEVBQUUsQ0FBQztRQUc5QixNQUFNLFNBQVMsR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUMvQixJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO2dCQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLENBQUMsbUNBQW1DLENBQUMsQ0FBQztZQUU3RixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNO2dCQUN4QyxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7UUFDdEcsQ0FBQyxDQUFDLENBQUM7UUFFSCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDN0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlGLE1BQU0sS0FBSyxHQUFHO2dCQUNaLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDckIsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUN6QixZQUFZLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQztnQkFDOUMsUUFBUSxFQUFFLFFBQVE7YUFDbkIsQ0FBQztZQUVGLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JGLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGVBQWUsQ0FBQyxJQUFZO1FBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsSUFBSSxVQUFVLENBQUMsQ0FBQztRQUVwRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGFBQWEsQ0FBQyxJQUFZO1FBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsSUFBSSxVQUFVLENBQUMsQ0FBQztRQUdwRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUV2RCxlQUFlO1FBQ2YsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLO1lBQ3RCLFVBQVUsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztRQUd6RSxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQsMkRBQTJEO0lBQzNELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsTUFBTSxLQUFLLEVBQUU7UUFDWCxPQUFPLGNBQWMsQ0FBQyxPQUFPLENBQUM7SUFDaEMsQ0FBQztJQUVPLFdBQVcsQ0FBQyxHQUFXLEVBQUUsSUFBWSxFQUFFLElBQVk7O1FBQ3pELE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEMsSUFBSSxPQUFPLEtBQUssSUFBSTtZQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxJQUFJLG1CQUFtQixDQUFDLENBQUM7UUFFaEYsTUFBTSxLQUFLLEdBQStCLEVBQUUsQ0FBQztRQUM3QyxNQUFBLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLDBDQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzlCLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3RCxNQUFNLEdBQUcsR0FBYSxFQUFFLENBQUM7UUFDekIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMxQyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QyxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7WUFDZCxRQUFRLElBQUksRUFBRTtnQkFDZCxLQUFLLENBQUM7b0JBQ0osSUFBSSxHQUFHLFlBQVksQ0FBQztvQkFDcEIsTUFBTTtnQkFDUixLQUFLLENBQUM7b0JBQ0osSUFBSSxHQUFHLFlBQVksQ0FBQztvQkFDcEIsTUFBTTtnQkFDUixLQUFLLENBQUM7b0JBQ0osSUFBSSxHQUFHLFFBQVEsQ0FBQztvQkFDaEIsTUFBTTtnQkFDUjtvQkFDRSxNQUFNO2FBQ1A7WUFDRCxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDO1NBQ3hFO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDOztBQTlHTSxzQkFBTyxHQUFHLGdCQUFnQixDQUFDO0FBaUhwQywrQkFBK0I7QUFDL0IsTUFBTSxTQUFTO0lBR2I7UUFDRSxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUMsVUFBVSxFQUFFLEVBQUUsRUFBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxRQUFRLENBQUMsT0FBZTtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQWU7UUFDbEIsT0FBTyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsb0NBQW9DO1FBQzVFLElBQUksVUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxJQUFZLEVBQUUsR0FBVyxFQUFRLEVBQUU7WUFDckUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7UUFDSCxVQUFVLElBQUksQ0FBQyxDQUFDO1FBQ2hCLE9BQU8sVUFBVSxHQUFHLENBQUMsQ0FBQyxJQUFJLFVBQVUsR0FBRyxPQUFPLENBQUMsTUFBTTtZQUNuRCxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUFlLEVBQUUsVUFBa0I7UUFDMUMsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDM0QsSUFBSSxjQUFjLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDekIsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUNYO2FBQU07WUFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUM1QyxDQUFDLElBQVksRUFBRSxHQUFXLEVBQVEsRUFBRTtnQkFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDakMsQ0FBQyxDQUFDLENBQUM7U0FDTjtRQUVELElBQUksY0FBYyxHQUFHLENBQUMsQ0FBQztZQUNyQixPQUFPLGNBQWMsR0FBRyxDQUFDLENBQUM7UUFHNUIsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFlLEVBQUUsS0FBYSxFQUFFLEdBQVcsRUFBRSxPQUE0QztRQUM3RixNQUFNLE1BQU0sR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2RCxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUVsRSxLQUFLLEdBQUcsTUFBTSxDQUFDO1FBQ2YsT0FBTyxRQUFRLEdBQUcsR0FBRyxFQUFFO1lBQ3JCLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztZQUN6QyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUM7Z0JBQ2QsT0FBTztZQUdULEtBQUssSUFBSSxDQUFDLENBQUM7WUFDWCxRQUFRLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDekMsSUFBSSxRQUFRLEtBQUssQ0FBQyxDQUFDO2dCQUNqQixPQUFPO1lBR1QsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDeEQsS0FBSyxHQUFHLFFBQVEsR0FBRyxDQUFDLENBQUM7WUFFckIsUUFBUSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3hDLElBQUksUUFBUSxLQUFLLENBQUMsQ0FBQztnQkFDakIsUUFBUSxHQUFHLEdBQUcsQ0FBQztpQkFDWixJQUFJLE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSTtnQkFDcEMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUVqRCxPQUFPLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDMUQsUUFBUSxJQUFJLENBQUMsQ0FBQztTQUNmO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgTW9ub21lckVudHJ5ID0ge1xuICBtb2w6IHN0cmluZyxcbiAgdHlwZTogc3RyaW5nLFxuICBhbmFsb2d1ZUNvZGU6IHN0cmluZyxcbiAgbGlua2FnZXM6IHsgW2xpbms6IHN0cmluZ106IHsgYXRvbU51bWJlcjogbnVtYmVyLCB0eXBlOiBzdHJpbmcgfSB9XG59O1xuZXhwb3J0IHR5cGUgTW9ub21lckVudHJpZXMgPSB7IFtuYW1lOiBzdHJpbmddOiBNb25vbWVyRW50cnkgfTtcbmV4cG9ydCB0eXBlIExpbmtEYXRhID0geyBbbGluazogc3RyaW5nXTogeyBhdG9tTnVtYmVyOiBudW1iZXIsIHR5cGU6IHN0cmluZyB9IH07XG5cbi8qKiBIRUxNIGFzc29jaWF0ZWQgc2RmIGxpYnJhcmllcyB3aXRoIG1vbm9tZXIgcHJvY2Vzc2luZyovXG5leHBvcnQgY2xhc3MgTW9ub21lckxpYnJhcnkge1xuICBzdGF0aWMgbGliTmFtZSA9ICdtb25vbWVyTGlicmFyeSc7XG5cbiAgcHJpdmF0ZSBtb25vbWVyRmllbGRzOiBzdHJpbmdbXSA9IFtcbiAgICAnbW9sZWN1bGUnLCAnTW9ub21lclR5cGUnLCAnTW9ub21lck5hdHVyYWxBbmFsb2dDb2RlJywgJ01vbm9tZXJOYW1lJywgJ01vbm9tZXJDb2RlJywgJ01vbm9tZXJDYXBzJywgJ0JyYW5jaE1vbm9tZXInLFxuICBdO1xuXG4gIHByaXZhdGUgbGlicmFyeTogTW9ub21lckVudHJpZXMgPSB7fTtcblxuICBwcml2YXRlIG1vbm9tZXJzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHNkZjogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2RmUmVhZGVyID0gbmV3IFNERlJlYWRlcigpO1xuICAgIGNvbnN0IGRhdGEgPSBzZGZSZWFkZXIuZ2V0Q29sbHMoc2RmKTtcbiAgICB0aGlzLm1vbm9tZXJGaWVsZHMuZm9yRWFjaCgoZikgPT4ge1xuICAgICAgaWYgKCEoZiBpbiBkYXRhKSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNb25vbWVyIGxpYnJhcnkgd2FzIG5vdCBjb21waWxlZDogJHtmfSBmaWVsZCBpcyBhYnNlbnQgaW4gcHJvdmlkZWQgZmlsZWApO1xuXG4gICAgICBpZiAoZGF0YVtmXS5sZW5ndGggIT0gZGF0YS5tb2xlY3VsZS5sZW5ndGgpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTW9ub21lciBsaWJyYXJ5IHdhcyBub3QgY29tcGlsZWQ6ICR7Zn0gZmllbGQgaXMgbm90IHByZXNlbnRlZCBmb3IgZWFjaCBtb25vbWVyYCk7XG4gICAgfSk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubW9sZWN1bGUubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGxpbmtEYXRhID0gdGhpcy5nZXRMaW5rRGF0YShkYXRhLm1vbGVjdWxlW2ldLCBkYXRhLk1vbm9tZXJDYXBzW2ldLCBkYXRhLk1vbm9tZXJOYW1lW2ldKTtcbiAgICAgIGNvbnN0IGVudHJ5ID0ge1xuICAgICAgICBtb2w6IGRhdGEubW9sZWN1bGVbaV0sXG4gICAgICAgIHR5cGU6ICdQZXB0aWRlJyxcbiAgICAgICAgY29kZTogZGF0YS5Nb25vbWVyQ29kZVtpXSxcbiAgICAgICAgYW5hbG9ndWVDb2RlOiBkYXRhLk1vbm9tZXJOYXR1cmFsQW5hbG9nQ29kZVtpXSxcbiAgICAgICAgbGlua2FnZXM6IGxpbmtEYXRhLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgbmFtZSA9IGRhdGEuTW9ub21lckNvZGVbaV0gIT09ICcuJyA/IGRhdGEuTW9ub21lckNvZGVbaV0gOiBkYXRhLk1vbm9tZXJOYW1lW2ldO1xuICAgICAgdGhpcy5saWJyYXJ5W25hbWVdID0gZW50cnk7XG4gICAgICB0aGlzLm1vbm9tZXJzLnB1c2gobmFtZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIGdldHRpbmcgZnVsbCBtb25vbWVyIGluZm9ybWF0aW9uIGZyb20gbW9ub21lciBsaWJyYXJ5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEByZXR1cm4ge01vbm9tZXJFbnRyeX1cbiAgICovXG4gIHB1YmxpYyBnZXRNb25vbWVyRW50cnkobmFtZTogc3RyaW5nKTogTW9ub21lckVudHJ5IHtcbiAgICBpZiAoIXRoaXMubW9ub21lcnMuaW5jbHVkZXMobmFtZSkpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1vbm9tZXIgbGlicmFyeSBkbyBub3QgY29udGFpbiAke25hbWV9IG1vbm9tZXJgKTtcblxuICAgIHJldHVybiB0aGlzLmxpYnJhcnlbbmFtZV07XG4gIH1cblxuICAvKiogZ2V0dGluZyBtb2wgYXMgc3RyaW5nIGZvciBtb25vbWVyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHB1YmxpYyBnZXRNb25vbWVyTW9sKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLm1vbm9tZXJzLmluY2x1ZGVzKG5hbWUpKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNb25vbWVyIGxpYnJhcnkgZG8gbm90IGNvbnRhaW4gJHtuYW1lfSBtb25vbWVyYCk7XG5cblxuICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5saWJyYXJ5W25hbWVdO1xuICAgIGxldCBtb25vbWVyTW9sID0gZW50cnkubW9sLnJlcGxhY2UoL00gIFJHUCAgLitcXG4vLCAnJyk7XG5cbiAgICAvL29yZGVyIG1hdHRlcnNcbiAgICBjb25zdCBsaW5rcyA9IE9iamVjdC5rZXlzKGVudHJ5LmxpbmthZ2VzKTtcbiAgICBmb3IgKGNvbnN0IGxpbmsgb2YgbGlua3MpXG4gICAgICBtb25vbWVyTW9sID0gbW9ub21lck1vbC5yZXBsYWNlKCdSIycsIGVudHJ5LmxpbmthZ2VzW2xpbmtdLnR5cGUgKyAnICcpO1xuXG5cbiAgICByZXR1cm4gbW9ub21lck1vbDtcbiAgfVxuXG4gIC8qKiBnZXR0aW5nIHRoZSBsaXN0IG9mIHRoZSBtaW5vbWVycyBhdmFpbGFibGUgaW4gbGlicmFyeSovXG4gIGdldCBtb25vbWVyTmFtZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLm1vbm9tZXJzO1xuICB9XG5cbiAgc3RhdGljIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBNb25vbWVyTGlicmFyeS5saWJOYW1lO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMaW5rRGF0YShtb2w6IHN0cmluZywgY2Fwczogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBMaW5rRGF0YSB7XG4gICAgY29uc3QgcmF3RGF0YSA9IG1vbC5tYXRjaCgvTSAgUkdQICAuKy8pO1xuICAgIGlmIChyYXdEYXRhID09PSBudWxsKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNb25vbWVyIGxpYnJhcnkgd2FzIG5vdCBjb21waWxlZDogJHtuYW1lfSBlbnRyeSBoYXMgbm8gUkdQYCk7XG5cbiAgICBjb25zdCB0eXBlczogeyBbY29kZTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICBjYXBzLnNwbGl0KCdcXG4nKT8uZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgdHlwZXNbZS5tYXRjaCgvXFxkKy8pIVswXV0gPSBlLm1hdGNoKC8oPzw9XFxdKVxcdysvKSFbMF07XG4gICAgfSk7XG5cbiAgICBjb25zdCBkYXRhID0gcmF3RGF0YVswXS5yZXBsYWNlKCdNICBSR1AgICcsICcnKS5zcGxpdCgvXFxzKy8pO1xuICAgIGNvbnN0IHJlczogTGlua0RhdGEgPSB7fTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcnNlSW50KGRhdGFbMF0pOyBpKyspIHtcbiAgICAgIGNvbnN0IGNvZGUgPSBwYXJzZUludChkYXRhWzIgKiBpICsgMl0pO1xuICAgICAgbGV0IHR5cGUgPSAnJztcbiAgICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgY2FzZSAxOlxuICAgICAgICB0eXBlID0gJ04tdGVybWluYWwnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgdHlwZSA9ICdDLXRlcm1pbmFsJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIHR5cGUgPSAnYnJhbmNoJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHJlc1t0eXBlXSA9IHthdG9tTnVtYmVyOiBwYXJzZUludChkYXRhWzIgKiBpICsgMV0pLCB0eXBlOiB0eXBlc1tjb2RlXX07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfVxufVxuXG4vL1RPRE86IG1lcmdlIHdpdGggQ2hlbSB2ZXJzaW9uXG5jbGFzcyBTREZSZWFkZXIge1xuICBkYXRhQ29sbHM6IHsgW186IHN0cmluZ106IHN0cmluZyBbXSB9O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuZGF0YUNvbGxzID0geydtb2xlY3VsZSc6IFtdfTtcbiAgfVxuXG4gIGdldENvbGxzKGNvbnRlbnQ6IHN0cmluZyk6IHsgW186IHN0cmluZ106IHN0cmluZ1tdIH0ge1xuICAgIHRoaXMucmVhZChjb250ZW50KTtcbiAgICByZXR1cm4gdGhpcy5kYXRhQ29sbHM7XG4gIH1cblxuICByZWFkKGNvbnRlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2VBbGwoJ1xccicsICcnKTsgLy9lcXVhbGl6ZSBvbGQgYW5kIG5ldyBzZGYgc3RhbmRhcmRzXG4gICAgbGV0IHN0YXJ0SW5kZXggPSBjb250ZW50LmluZGV4T2YoJyQkJCQnLCAwKTtcbiAgICB0aGlzLnBhcnNlKGNvbnRlbnQsIDAsIHN0YXJ0SW5kZXgsIChuYW1lOiBzdHJpbmcsIHZhbDogc3RyaW5nKTogdm9pZCA9PiB7IC8vIFRPRE86IHR5cGVcbiAgICAgIHRoaXMuZGF0YUNvbGxzW25hbWVdID0gW107XG4gICAgICB0aGlzLmRhdGFDb2xsc1tuYW1lXS5wdXNoKHZhbCk7XG4gICAgfSk7XG4gICAgc3RhcnRJbmRleCArPSA1O1xuICAgIHdoaWxlIChzdGFydEluZGV4ID4gLTEgJiYgc3RhcnRJbmRleCA8IGNvbnRlbnQubGVuZ3RoKVxuICAgICAgc3RhcnRJbmRleCA9IHRoaXMucmVhZE5leHQoY29udGVudCwgc3RhcnRJbmRleCk7XG4gIH1cblxuICByZWFkTmV4dChjb250ZW50OiBzdHJpbmcsIHN0YXJ0SW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgbmV4dFN0YXJ0SW5kZXggPSBjb250ZW50LmluZGV4T2YoJyQkJCQnLCBzdGFydEluZGV4KTtcbiAgICBpZiAobmV4dFN0YXJ0SW5kZXggPT09IC0xKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGFyc2UoY29udGVudCwgc3RhcnRJbmRleCwgbmV4dFN0YXJ0SW5kZXgsXG4gICAgICAgIChuYW1lOiBzdHJpbmcsIHZhbDogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgICAgICAgdGhpcy5kYXRhQ29sbHNbbmFtZV0ucHVzaCh2YWwpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAobmV4dFN0YXJ0SW5kZXggPiAtMSlcbiAgICAgIHJldHVybiBuZXh0U3RhcnRJbmRleCArIDU7XG5cblxuICAgIHJldHVybiBuZXh0U3RhcnRJbmRleDtcbiAgfVxuXG4gIHBhcnNlKGNvbnRlbnQ6IHN0cmluZywgc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIsIGhhbmRsZXI6IChuYW1lOiBzdHJpbmcsIHZhbDogc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgY29uc3QgbW9sRW5kID0gK2NvbnRlbnQuaW5kZXhPZignTSAgRU5EXFxuJywgc3RhcnQpICsgNztcbiAgICBsZXQgbG9jYWxFbmQgPSBzdGFydDtcbiAgICB0aGlzLmRhdGFDb2xsc1snbW9sZWN1bGUnXS5wdXNoKGNvbnRlbnQuc3Vic3RyaW5nKHN0YXJ0LCBtb2xFbmQpKTtcblxuICAgIHN0YXJ0ID0gbW9sRW5kO1xuICAgIHdoaWxlIChsb2NhbEVuZCA8IGVuZCkge1xuICAgICAgc3RhcnQgPSBjb250ZW50LmluZGV4T2YoJz4gPCcsIGxvY2FsRW5kKTtcbiAgICAgIGlmIChzdGFydCA9PT0gLTEpXG4gICAgICAgIHJldHVybjtcblxuXG4gICAgICBzdGFydCArPSAzO1xuICAgICAgbG9jYWxFbmQgPSBjb250ZW50LmluZGV4T2YoJz5cXG4nLCBzdGFydCk7XG4gICAgICBpZiAobG9jYWxFbmQgPT09IC0xKVxuICAgICAgICByZXR1cm47XG5cblxuICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gY29udGVudC5zdWJzdHJpbmcoc3RhcnQsIGxvY2FsRW5kKTtcbiAgICAgIHN0YXJ0ID0gbG9jYWxFbmQgKyAyO1xuXG4gICAgICBsb2NhbEVuZCA9IGNvbnRlbnQuaW5kZXhPZignXFxuJywgc3RhcnQpO1xuICAgICAgaWYgKGxvY2FsRW5kID09PSAtMSlcbiAgICAgICAgbG9jYWxFbmQgPSBlbmQ7XG4gICAgICBlbHNlIGlmIChjb250ZW50W2xvY2FsRW5kICsgMV0gIT0gJ1xcbicpXG4gICAgICAgIGxvY2FsRW5kID0gY29udGVudC5pbmRleE9mKCdcXG4nLCBsb2NhbEVuZCArIDEpO1xuXG4gICAgICBoYW5kbGVyKHByb3BlcnR5TmFtZSwgY29udGVudC5zdWJzdHJpbmcoc3RhcnQsIGxvY2FsRW5kKSk7XG4gICAgICBsb2NhbEVuZCArPSAyO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as DG from 'datagrok-api/dg';
|
|
2
|
+
export declare const HELM_CORE_LIB_FILENAME = "/data/HELMCoreLibrary.json";
|
|
3
|
+
export declare function encodeMonomers(col: DG.Column): DG.Column | null;
|
|
4
|
+
export declare function getMolfilesFromSeq(col: DG.Column, monomersLibObject: any[]): any[][] | null;
|
|
5
|
+
export declare function getMolfilesFromSingleSeq(cell: DG.Cell, monomersLibObject: any[]): any[][] | null;
|
|
6
|
+
export declare function createMomomersMolDict(lib: any[]): {
|
|
7
|
+
[key: string]: string | any;
|
|
8
|
+
};
|
|
9
|
+
export declare function createJsonMonomerLibFromSdf(table: DG.DataFrame): any;
|
|
10
|
+
//# sourceMappingURL=monomer-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monomer-utils.d.ts","sourceRoot":"","sources":["monomer-utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAUtC,eAAO,MAAM,sBAAsB,+BAA+B,CAAC;AAEnE,wBAAgB,cAAc,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,GAAG,IAAI,CAwB/D;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,IAAI,CAuB3F;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,IAAI,CAoBhG;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,CAAA;CAAE,CAYjF;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,GAAG,GAAG,CA8BpE"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
// import * as ui from 'datagrok-api/ui';
|
|
2
|
+
import * as DG from 'datagrok-api/dg';
|
|
3
|
+
import * as grok from 'datagrok-api/grok';
|
|
4
|
+
// import {WebLogo, SplitterFunc} from '../../src/viewers/web-logo';
|
|
5
|
+
import { HELM_CORE_FIELDS, jsonSdfMonomerLibDict, MONOMER_ENCODE_MAX, MONOMER_ENCODE_MIN, SDF_MONOMER_NAME } from './const';
|
|
6
|
+
// import {UnitsHandler} from './units-handler';
|
|
7
|
+
import * as bio from '../../index';
|
|
8
|
+
export const HELM_CORE_LIB_FILENAME = '/data/HELMCoreLibrary.json';
|
|
9
|
+
export function encodeMonomers(col) {
|
|
10
|
+
let encodeSymbol = MONOMER_ENCODE_MIN;
|
|
11
|
+
const monomerSymbolDict = {};
|
|
12
|
+
const units = col.tags[DG.TAGS.UNITS];
|
|
13
|
+
const sep = col.getTag("separator" /* bio.TAGS.separator */);
|
|
14
|
+
const splitterFunc = bio.getSplitter(units, sep);
|
|
15
|
+
const encodedStringArray = [];
|
|
16
|
+
for (let i = 0; i < col.length; ++i) {
|
|
17
|
+
let encodedMonomerStr = '';
|
|
18
|
+
const monomers = splitterFunc(col.get(i));
|
|
19
|
+
monomers.forEach((m) => {
|
|
20
|
+
if (!monomerSymbolDict[m]) {
|
|
21
|
+
if (encodeSymbol > MONOMER_ENCODE_MAX) {
|
|
22
|
+
grok.shell.error(`Not enough symbols to encode monomers`);
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
monomerSymbolDict[m] = encodeSymbol;
|
|
26
|
+
encodeSymbol++;
|
|
27
|
+
}
|
|
28
|
+
encodedMonomerStr += String.fromCodePoint(monomerSymbolDict[m]);
|
|
29
|
+
});
|
|
30
|
+
encodedStringArray.push(encodedMonomerStr);
|
|
31
|
+
}
|
|
32
|
+
return DG.Column.fromStrings('encodedMolecules', encodedStringArray);
|
|
33
|
+
}
|
|
34
|
+
export function getMolfilesFromSeq(col, monomersLibObject) {
|
|
35
|
+
const units = col.tags[DG.TAGS.UNITS];
|
|
36
|
+
const sep = col.getTag('separator');
|
|
37
|
+
const splitterFunc = bio.getSplitter(units, sep);
|
|
38
|
+
const monomersDict = createMomomersMolDict(monomersLibObject);
|
|
39
|
+
const molFiles = [];
|
|
40
|
+
for (let i = 0; i < col.length; ++i) {
|
|
41
|
+
const macroMolecule = col.get(i);
|
|
42
|
+
const monomers = splitterFunc(macroMolecule);
|
|
43
|
+
const molFilesForSeq = [];
|
|
44
|
+
for (let j = 0; j < monomers.length; ++j) {
|
|
45
|
+
if (monomers[j]) {
|
|
46
|
+
if (!monomersDict[monomers[j]]) {
|
|
47
|
+
grok.shell.warning(`Monomer ${monomers[j]} is missing in HELM library. Structure cannot be created`);
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
// what is the reason of double conversion?
|
|
51
|
+
molFilesForSeq.push(JSON.parse(JSON.stringify(monomersDict[monomers[j]])));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
molFiles.push(molFilesForSeq);
|
|
55
|
+
}
|
|
56
|
+
return molFiles;
|
|
57
|
+
}
|
|
58
|
+
export function getMolfilesFromSingleSeq(cell, monomersLibObject) {
|
|
59
|
+
const units = cell.column.tags[DG.TAGS.UNITS];
|
|
60
|
+
const sep = cell.column.getTag('separator');
|
|
61
|
+
const splitterFunc = bio.getSplitter(units, sep);
|
|
62
|
+
const monomersDict = createMomomersMolDict(monomersLibObject);
|
|
63
|
+
const molFiles = [];
|
|
64
|
+
const macroMolecule = cell.value;
|
|
65
|
+
const monomers = splitterFunc(macroMolecule);
|
|
66
|
+
const molFilesForSeq = [];
|
|
67
|
+
for (let j = 0; j < monomers.length; ++j) {
|
|
68
|
+
if (monomers[j]) {
|
|
69
|
+
if (!monomersDict[monomers[j]]) {
|
|
70
|
+
grok.shell.warning(`Monomer ${monomers[j]} is missing in HELM library. Structure cannot be created`);
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
molFilesForSeq.push(JSON.parse(JSON.stringify(monomersDict[monomers[j]])));
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
molFiles.push(molFilesForSeq);
|
|
77
|
+
return molFiles;
|
|
78
|
+
}
|
|
79
|
+
export function createMomomersMolDict(lib) {
|
|
80
|
+
const dict = {};
|
|
81
|
+
lib.forEach((it) => {
|
|
82
|
+
if (it['polymerType'] === 'PEPTIDE') {
|
|
83
|
+
const monomerObject = {};
|
|
84
|
+
HELM_CORE_FIELDS.forEach((field) => {
|
|
85
|
+
monomerObject[field] = it[field];
|
|
86
|
+
});
|
|
87
|
+
dict[it["symbol" /* HELM_FIELDS.SYMBOL */]] = monomerObject;
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
return dict;
|
|
91
|
+
}
|
|
92
|
+
export function createJsonMonomerLibFromSdf(table) {
|
|
93
|
+
const resultLib = [];
|
|
94
|
+
for (let i = 0; i < table.rowCount; i++) {
|
|
95
|
+
const monomer = {};
|
|
96
|
+
Object.keys(jsonSdfMonomerLibDict).forEach((key) => {
|
|
97
|
+
if (key === "symbol" /* HELM_FIELDS.SYMBOL */) {
|
|
98
|
+
const monomerSymbol = table.get(jsonSdfMonomerLibDict[key], i);
|
|
99
|
+
monomer[key] = monomerSymbol === '.' ? table.get(SDF_MONOMER_NAME, i) : monomerSymbol;
|
|
100
|
+
}
|
|
101
|
+
else if (key === "rgroups" /* HELM_FIELDS.RGROUPS */) {
|
|
102
|
+
const rgroups = table.get(jsonSdfMonomerLibDict[key], i).split('\n');
|
|
103
|
+
const jsonRgroups = [];
|
|
104
|
+
rgroups.forEach((g) => {
|
|
105
|
+
const rgroup = {};
|
|
106
|
+
const altAtom = g.substring(g.lastIndexOf(']') + 1);
|
|
107
|
+
const radicalNum = g.match(/\[R(\d+)\]/)[1];
|
|
108
|
+
rgroup["capGroupSmiles" /* RGROUP_FIELDS.CAP_GROUP_SMILES */] = altAtom === 'H' ? `[*:${radicalNum}][H]` : `O[*:${radicalNum}]`;
|
|
109
|
+
rgroup["alternateId" /* RGROUP_FIELDS.ALTER_ID */] = altAtom === 'H' ? `R${radicalNum}-H` : `R${radicalNum}-OH`;
|
|
110
|
+
rgroup["capGroupName" /* RGROUP_FIELDS.CAP_GROUP_NAME */] = altAtom === 'H' ? `H` : `OH`;
|
|
111
|
+
rgroup["label" /* RGROUP_FIELDS.LABEL */] = `R${radicalNum}`;
|
|
112
|
+
jsonRgroups.push(rgroup);
|
|
113
|
+
});
|
|
114
|
+
monomer[key] = jsonRgroups;
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
if (jsonSdfMonomerLibDict[key])
|
|
118
|
+
monomer[key] = table.get(jsonSdfMonomerLibDict[key], i);
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
resultLib.push(monomer);
|
|
122
|
+
}
|
|
123
|
+
return resultLib;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ub21lci11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1vbm9tZXItdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseUNBQXlDO0FBQ3pDLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxLQUFLLElBQUksTUFBTSxtQkFBbUIsQ0FBQztBQUUxQyxvRUFBb0U7QUFDcEUsT0FBTyxFQUFjLGdCQUFnQixFQUFpQixxQkFBcUIsRUFDekUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFDM0UsZ0RBQWdEO0FBRWhELE9BQU8sS0FBSyxHQUFHLE1BQU0sYUFBYSxDQUFDO0FBRW5DLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLDRCQUE0QixDQUFDO0FBRW5FLE1BQU0sVUFBVSxjQUFjLENBQUMsR0FBYztJQUMzQyxJQUFJLFlBQVksR0FBRyxrQkFBa0IsQ0FBQztJQUN0QyxNQUFNLGlCQUFpQixHQUE4QixFQUFFLENBQUM7SUFDeEQsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLHNDQUFvQixDQUFDO0lBQzNDLE1BQU0sWUFBWSxHQUFxQixHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNuRSxNQUFNLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztJQUM5QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRTtRQUNuQyxJQUFJLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUMzQixNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxD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Y2VzQ29udGVudCI6WyIvLyBpbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuXG4vLyBpbXBvcnQge1dlYkxvZ28sIFNwbGl0dGVyRnVuY30gZnJvbSAnLi4vLi4vc3JjL3ZpZXdlcnMvd2ViLWxvZ28nO1xuaW1wb3J0IHtIRUxNX0ZJRUxEUywgSEVMTV9DT1JFX0ZJRUxEUywgUkdST1VQX0ZJRUxEUywganNvblNkZk1vbm9tZXJMaWJEaWN0LFxuICBNT05PTUVSX0VOQ09ERV9NQVgsIE1PTk9NRVJfRU5DT0RFX01JTiwgU0RGX01PTk9NRVJfTkFNRX0gZnJvbSAnLi9jb25zdCc7XG4vLyBpbXBvcnQge1VuaXRzSGFuZGxlcn0gZnJvbSAnLi91bml0cy1oYW5kbGVyJztcblxuaW1wb3J0ICogYXMgYmlvIGZyb20gJy4uLy4uL2luZGV4JztcblxuZXhwb3J0IGNvbnN0IEhFTE1fQ09SRV9MSUJfRklMRU5BTUUgPSAnL2RhdGEvSEVMTUNvcmVMaWJyYXJ5Lmpzb24nO1xuXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlTW9ub21lcnMoY29sOiBERy5Db2x1bW4pOiBERy5Db2x1bW4gfCBudWxsIHtcbiAgbGV0IGVuY29kZVN5bWJvbCA9IE1PTk9NRVJfRU5DT0RFX01JTjtcbiAgY29uc3QgbW9ub21lclN5bWJvbERpY3Q6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcbiAgY29uc3QgdW5pdHMgPSBjb2wudGFnc1tERy5UQUdTLlVOSVRTXTtcbiAgY29uc3Qgc2VwID0gY29sLmdldFRhZyhiaW8uVEFHUy5zZXBhcmF0b3IpO1xuICBjb25zdCBzcGxpdHRlckZ1bmM6IGJpby5TcGxpdHRlckZ1bmMgPSBiaW8uZ2V0U3BsaXR0ZXIodW5pdHMsIHNlcCk7XG4gIGNvbnN0IGVuY29kZWRTdHJpbmdBcnJheSA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbC5sZW5ndGg7ICsraSkge1xuICAgIGxldCBlbmNvZGVkTW9ub21lclN0ciA9ICcnO1xuICAgIGNvbnN0IG1vbm9tZXJzID0gc3BsaXR0ZXJGdW5jKGNvbC5nZXQoaSkpO1xuICAgIG1vbm9tZXJzLmZvckVhY2goKG0pID0+IHtcbiAgICAgIGlmICghbW9ub21lclN5bWJvbERpY3RbbV0pIHtcbiAgICAgICAgaWYgKGVuY29kZVN5bWJvbCA+IE1PTk9NRVJfRU5DT0RFX01BWCkge1xuICAgICAgICAgIGdyb2suc2hlbGwuZXJyb3IoYE5vdCBlbm91Z2ggc3ltYm9scyB0byBlbmNvZGUgbW9ub21lcnNgKTtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBtb25vbWVyU3ltYm9sRGljdFttXSA9IGVuY29kZVN5bWJvbDtcbiAgICAgICAgZW5jb2RlU3ltYm9sKys7XG4gICAgICB9XG4gICAgICBlbmNvZGVkTW9ub21lclN0ciArPSBTdHJpbmcuZnJvbUNvZGVQb2ludChtb25vbWVyU3ltYm9sRGljdFttXSk7XG4gICAgfSk7XG4gICAgZW5jb2RlZFN0cmluZ0FycmF5LnB1c2goZW5jb2RlZE1vbm9tZXJTdHIpO1xuICB9XG4gIHJldHVybiBERy5Db2x1bW4uZnJvbVN0cmluZ3MoJ2VuY29kZWRNb2xlY3VsZXMnLCBlbmNvZGVkU3RyaW5nQXJyYXkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TW9sZmlsZXNGcm9tU2VxKGNvbDogREcuQ29sdW1uLCBtb25vbWVyc0xpYk9iamVjdDogYW55W10pOiBhbnlbXVtdIHwgbnVsbCB7XG4gIGNvbnN0IHVuaXRzID0gY29sLnRhZ3NbREcuVEFHUy5VTklUU107XG4gIGNvbnN0IHNlcCA9IGNvbC5nZXRUYWcoJ3NlcGFyYXRvcicpO1xuICBjb25zdCBzcGxpdHRlckZ1bmM6IGJpby5TcGxpdHRlckZ1bmMgPSBiaW8uZ2V0U3BsaXR0ZXIodW5pdHMsIHNlcCk7XG4gIGNvbnN0IG1vbm9tZXJzRGljdCA9IGNyZWF0ZU1vbW9tZXJzTW9sRGljdChtb25vbWVyc0xpYk9iamVjdCk7XG4gIGNvbnN0IG1vbEZpbGVzID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY29sLmxlbmd0aDsgKytpKSB7XG4gICAgY29uc3QgbWFjcm9Nb2xlY3VsZSA9IGNvbC5nZXQoaSk7XG4gICAgY29uc3QgbW9ub21lcnMgPSBzcGxpdHRlckZ1bmMobWFjcm9Nb2xlY3VsZSk7XG4gICAgY29uc3QgbW9sRmlsZXNGb3JTZXEgPSBbXTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1vbm9tZXJzLmxlbmd0aDsgKytqKSB7XG4gICAgICBpZiAobW9ub21lcnNbal0pIHtcbiAgICAgICAgaWYgKCFtb25vbWVyc0RpY3RbbW9ub21lcnNbal1dKSB7XG4gICAgICAgICAgZ3Jvay5zaGVsbC53YXJuaW5nKGBNb25vbWVyICR7bW9ub21lcnNbal19IGlzIG1pc3NpbmcgaW4gSEVMTSBsaWJyYXJ5LiBTdHJ1Y3R1cmUgY2Fubm90IGJlIGNyZWF0ZWRgKTtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICAvLyB3aGF0IGlzIHRoZSByZWFzb24gb2YgZG91YmxlIGNvbnZlcnNpb24/XG4gICAgICAgIG1vbEZpbGVzRm9yU2VxLnB1c2goSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShtb25vbWVyc0RpY3RbbW9ub21lcnNbal1dKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICBtb2xGaWxlcy5wdXNoKG1vbEZpbGVzRm9yU2VxKTtcbiAgfVxuICByZXR1cm4gbW9sRmlsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNb2xmaWxlc0Zyb21TaW5nbGVTZXEoY2VsbDogREcuQ2VsbCwgbW9ub21lcnNMaWJPYmplY3Q6IGFueVtdKTogYW55W11bXSB8IG51bGwge1xuICBjb25zdCB1bml0cyA9IGNlbGwuY29sdW1uLnRhZ3NbREcuVEFHUy5VTklUU107XG4gIGNvbnN0IHNlcCA9IGNlbGwuY29sdW1uIS5nZXRUYWcoJ3NlcGFyYXRvcicpO1xuICBjb25zdCBzcGxpdHRlckZ1bmM6IGJpby5TcGxpdHRlckZ1bmMgPSBiaW8uZ2V0U3BsaXR0ZXIodW5pdHMsIHNlcCk7XG4gIGNvbnN0IG1vbm9tZXJzRGljdCA9IGNyZWF0ZU1vbW9tZXJzTW9sRGljdChtb25vbWVyc0xpYk9iamVjdCk7XG4gIGNvbnN0IG1vbEZpbGVzID0gW107XG4gIGNvbnN0IG1hY3JvTW9sZWN1bGUgPSBjZWxsLnZhbHVlO1xuICBjb25zdCBtb25vbWVycyA9IHNwbGl0dGVyRnVuYyhtYWNyb01vbGVjdWxlKTtcbiAgY29uc3QgbW9sRmlsZXNGb3JTZXEgPSBbXTtcbiAgZm9yIChsZXQgaiA9IDA7IGogPCBtb25vbWVycy5sZW5ndGg7ICsraikge1xuICAgIGlmIChtb25vbWVyc1tqXSkge1xuICAgICAgaWYgKCFtb25vbWVyc0RpY3RbbW9ub21lcnNbal1dKSB7XG4gICAgICAgIGdyb2suc2hlbGwud2FybmluZyhgTW9ub21lciAke21vbm9tZXJzW2pdfSBpcyBtaXNzaW5nIGluIEhFTE0gbGlicmFyeS4gU3RydWN0dXJlIGNhbm5vdCBiZSBjcmVhdGVkYCk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgbW9sRmlsZXNGb3JTZXEucHVzaChKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG1vbm9tZXJzRGljdFttb25vbWVyc1tqXV0pKSk7XG4gICAgfVxuICB9XG4gIG1vbEZpbGVzLnB1c2gobW9sRmlsZXNGb3JTZXEpO1xuICByZXR1cm4gbW9sRmlsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNb21vbWVyc01vbERpY3QobGliOiBhbnlbXSk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgYW55IH0ge1xuICBjb25zdCBkaWN0OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IGFueSB9ID0ge307XG4gIGxpYi5mb3JFYWNoKChpdCkgPT4ge1xuICAgIGlmIChpdFsncG9seW1lclR5cGUnXSA9PT0gJ1BFUFRJREUnKSB7XG4gICAgICBjb25zdCBtb25vbWVyT2JqZWN0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG4gICAgICBIRUxNX0NPUkVfRklFTERTLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgIG1vbm9tZXJPYmplY3RbZmllbGRdID0gaXRbZmllbGRdO1xuICAgICAgfSk7XG4gICAgICBkaWN0W2l0W0hFTE1fRklFTERTLlNZTUJPTF1dID0gbW9ub21lck9iamVjdDtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gZGljdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUpzb25Nb25vbWVyTGliRnJvbVNkZih0YWJsZTogREcuRGF0YUZyYW1lKTogYW55IHtcbiAgY29uc3QgcmVzdWx0TGliID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdGFibGUucm93Q291bnQ7IGkrKykge1xuICAgIGNvbnN0IG1vbm9tZXI6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgYW55IH0gPSB7fTtcbiAgICBPYmplY3Qua2V5cyhqc29uU2RmTW9ub21lckxpYkRpY3QpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgaWYgKGtleSA9PT0gSEVMTV9GSUVMRFMuU1lNQk9MKSB7XG4gICAgICAgIGNvbnN0IG1vbm9tZXJTeW1ib2wgPSB0YWJsZS5nZXQoanNvblNkZk1vbm9tZXJMaWJEaWN0W2tleV0sIGkpO1xuICAgICAgICBtb25vbWVyW2tleV0gPSBtb25vbWVyU3ltYm9sID09PSAnLicgPyB0YWJsZS5nZXQoU0RGX01PTk9NRVJfTkFNRSwgaSkgOiBtb25vbWVyU3ltYm9sO1xuICAgICAgfSBlbHNlIGlmIChrZXkgPT09IEhFTE1fRklFTERTLlJHUk9VUFMpIHtcbiAgICAgICAgY29uc3Qgcmdyb3VwcyA9IHRhYmxlLmdldChqc29uU2RmTW9ub21lckxpYkRpY3Rba2V5XSwgaSkuc3BsaXQoJ1xcbicpO1xuICAgICAgICBjb25zdCBqc29uUmdyb3VwczogYW55W10gPSBbXTtcbiAgICAgICAgcmdyb3Vwcy5mb3JFYWNoKChnOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBjb25zdCByZ3JvdXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgYW55IH0gPSB7fTtcbiAgICAgICAgICBjb25zdCBhbHRBdG9tID0gZy5zdWJzdHJpbmcoZy5sYXN0SW5kZXhPZignXScpICsgMSk7XG4gICAgICAgICAgY29uc3QgcmFkaWNhbE51bSA9IGcubWF0Y2goL1xcW1IoXFxkKylcXF0vKSFbMV07XG4gICAgICAgICAgcmdyb3VwW1JHUk9VUF9GSUVMRFMuQ0FQX0dST1VQX1NNSUxFU10gPSBhbHRBdG9tID09PSAnSCcgPyBgWyo6JHtyYWRpY2FsTnVtfV1bSF1gIDogYE9bKjoke3JhZGljYWxOdW19XWA7XG4gICAgICAgICAgcmdyb3VwW1JHUk9VUF9GSUVMRFMuQUxURVJfSURdID0gYWx0QXRvbSA9PT0gJ0gnID8gYFIke3JhZGljYWxOdW19LUhgIDogYFIke3JhZGljYWxOdW19LU9IYDtcbiAgICAgICAgICByZ3JvdXBbUkdST1VQX0ZJRUxEUy5DQVBfR1JPVVBfTkFNRV0gPSBhbHRBdG9tID09PSAnSCcgPyBgSGAgOiBgT0hgO1xuICAgICAgICAgIHJncm91cFtSR1JPVVBfRklFTERTLkxBQkVMXSA9IGBSJHtyYWRpY2FsTnVtfWA7XG4gICAgICAgICAganNvblJncm91cHMucHVzaChyZ3JvdXApO1xuICAgICAgICB9KTtcbiAgICAgICAgbW9ub21lcltrZXldID0ganNvblJncm91cHM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoKGpzb25TZGZNb25vbWVyTGliRGljdCBhcyB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IGFueSB9KVtrZXldKVxuICAgICAgICAgIG1vbm9tZXJba2V5XSA9IHRhYmxlLmdldCgoanNvblNkZk1vbm9tZXJMaWJEaWN0IGFzIHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgYW55IH0pW2tleV0sIGkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJlc3VsdExpYi5wdXNoKG1vbm9tZXIpO1xuICB9XG4gIHJldHVybiByZXN1bHRMaWI7XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notation-converter.d.ts","sourceRoot":"","sources":["notation-converter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAiC,QAAQ,EAAe,YAAY,EAAO,MAAM,iBAAiB,CAAC;AAE1G,iFAAiF;AACjF,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,OAAO,CAAC,SAAS,CAA6B;IAE9C,SAAS,KAAK,QAAQ,IAAI,YAAY,CAIrC;IAEM,OAAO,CAAC,cAAc,EAAE,QAAQ,GAAG,OAAO;IAE1C,WAAW,CAAC,cAAc,EAAE,QAAQ,GAAG,OAAO;IAE9C,MAAM,CAAC,cAAc,EAAE,QAAQ,GAAG,OAAO;IAEhD;;;;;;OAMG;IACH,OAAO,CAAC,uBAAuB;
|
|
1
|
+
{"version":3,"file":"notation-converter.d.ts","sourceRoot":"","sources":["notation-converter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAiC,QAAQ,EAAe,YAAY,EAAO,MAAM,iBAAiB,CAAC;AAE1G,iFAAiF;AACjF,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,OAAO,CAAC,SAAS,CAA6B;IAE9C,SAAS,KAAK,QAAQ,IAAI,YAAY,CAIrC;IAEM,OAAO,CAAC,cAAc,EAAE,QAAQ,GAAG,OAAO;IAE1C,WAAW,CAAC,cAAc,EAAE,QAAQ,GAAG,OAAO;IAE9C,MAAM,CAAC,cAAc,EAAE,QAAQ,GAAG,OAAO;IAEhD;;;;;;OAMG;IACH,OAAO,CAAC,uBAAuB;IAoB/B;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,mBAAmB;IAkB3B;;;;;;;OAOG;IACI,mBAAmB,CACxB,aAAa,EAAE,MAAM,EACrB,eAAe,GAAE,MAAM,GAAG,IAAW,GACpC,MAAM;IAOT;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAgBrB;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IA6B/B;;;;;;;;OAQG;IACH,OAAO,CAAC,WAAW;IAwDnB,OAAO,CAAC,sBAAsB;IAK9B;;;;;OAKG;IACI,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,GAAE,MAAM,GAAG,IAAW,GAAG,EAAE,CAAC,MAAM;gBAmBjE,GAAG,EAAE,EAAE,CAAC,MAAM;CAGlC"}
|