@speleotica/frcsdata 3.0.1 → 4.0.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/FrcsPlotFile.js +5 -1
- package/FrcsPlotShot.js +5 -1
- package/FrcsShot.d.ts +25 -4
- package/FrcsShot.js +4 -5
- package/FrcsSurveyFile.js +5 -1
- package/FrcsTrip.js +5 -1
- package/FrcsTripSummary.js +5 -1
- package/FrcsTripSummaryFile.js +5 -1
- package/es/FrcsPlotFile.js +5 -1
- package/es/FrcsPlotShot.js +5 -1
- package/es/FrcsShot.js +5 -6
- package/es/FrcsSurveyFile.js +5 -1
- package/es/FrcsTrip.js +5 -1
- package/es/FrcsTripSummary.js +5 -1
- package/es/FrcsTripSummaryFile.js +5 -1
- package/es/formatFrcsShot.js +75 -0
- package/es/formatFrcsShot.spec.js +141 -0
- package/es/index.js +24 -28
- package/es/node/index.js +2 -10
- package/es/node/parseFrcsPlotFile.spec.js +1 -5
- package/es/node/parseFrcsSurveyFile.spec.js +115 -69
- package/es/node/parseFrcsTripSummaryFile.spec.js +1 -5
- package/es/parseFrcsPlotFile.js +1 -26
- package/es/parseFrcsSurveyFile.js +75 -103
- package/es/parseFrcsTripSummaryFile.js +1 -12
- package/es/string/index.js +2 -9
- package/es/string/parseFrcsPlotFile.spec.js +1 -5
- package/es/string/parseFrcsSurveyFile.spec.js +205 -109
- package/formatFrcsShot.d.ts +3 -0
- package/formatFrcsShot.js +72 -0
- package/formatFrcsShot.spec.js +139 -0
- package/index.d.ts +2 -1
- package/index.js +24 -28
- package/node/index.js +1 -9
- package/node/parseFrcsPlotFile.spec.js +165 -180
- package/node/parseFrcsSurveyFile.spec.js +270 -235
- package/node/parseFrcsTripSummaryFile.spec.js +83 -106
- package/package.json +15 -15
- package/parseFrcsPlotFile.js +224 -318
- package/parseFrcsSurveyFile.js +422 -431
- package/parseFrcsTripSummaryFile.js +102 -142
- package/string/index.js +10 -27
- package/string/parseFrcsPlotFile.spec.js +165 -180
- package/string/parseFrcsSurveyFile.spec.js +545 -541
- package/yarn.lock +1285 -702
package/es/parseFrcsPlotFile.js
CHANGED
|
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = parseFrcsPlotFile;
|
|
7
|
-
|
|
8
7
|
var _unitized = require("@speleotica/unitized");
|
|
9
|
-
|
|
10
8
|
var _parseSegment = require("parse-segment");
|
|
11
|
-
|
|
12
9
|
/**
|
|
13
10
|
* Parses data from a calculated survey file. These look like so:
|
|
14
11
|
<pre> 123.182259
|
|
@@ -25,11 +22,9 @@ var _parseSegment = require("parse-segment");
|
|
|
25
22
|
*/
|
|
26
23
|
async function parseFrcsPlotFile(file, lines) {
|
|
27
24
|
let totalLength = _unitized.Unitize.feet(NaN);
|
|
28
|
-
|
|
29
25
|
const shots = [];
|
|
30
26
|
const errors = [];
|
|
31
27
|
let lineNumber = 0;
|
|
32
|
-
|
|
33
28
|
const error = (message, line, startColumn, endColumn) => {
|
|
34
29
|
errors.push(new _parseSegment.SegmentParseError(message, new _parseSegment.Segment({
|
|
35
30
|
value: line,
|
|
@@ -38,77 +33,58 @@ async function parseFrcsPlotFile(file, lines) {
|
|
|
38
33
|
startCol: 0
|
|
39
34
|
}).substring(startColumn, endColumn)));
|
|
40
35
|
};
|
|
41
|
-
|
|
42
36
|
function parseUint(line, startColumn, endColumn, fieldName) {
|
|
43
37
|
const str = line.substring(startColumn, endColumn);
|
|
44
|
-
|
|
45
38
|
if (!/\S/.test(str)) {
|
|
46
39
|
error(`Missing ${fieldName}`, line, startColumn, endColumn);
|
|
47
40
|
return null;
|
|
48
41
|
}
|
|
49
|
-
|
|
50
42
|
if (!/^\s*\d+\s*$/.test(str)) {
|
|
51
43
|
error(`Invalid ${fieldName}`, line, startColumn, endColumn);
|
|
52
44
|
return null;
|
|
53
45
|
}
|
|
54
|
-
|
|
55
46
|
return parseInt(str);
|
|
56
47
|
}
|
|
57
|
-
|
|
58
48
|
function parseOptionalUint(line, startColumn, endColumn, fieldName) {
|
|
59
49
|
const str = line.substring(startColumn, endColumn);
|
|
60
|
-
|
|
61
50
|
if (!/\S/.test(str)) {
|
|
62
51
|
return null;
|
|
63
52
|
}
|
|
64
|
-
|
|
65
53
|
if (!/^\s*\d+\s*$/.test(str)) {
|
|
66
54
|
error(`Invalid ${fieldName}`, line, startColumn, endColumn);
|
|
67
55
|
return null;
|
|
68
56
|
}
|
|
69
|
-
|
|
70
57
|
return parseInt(str);
|
|
71
58
|
}
|
|
72
|
-
|
|
73
59
|
function parseLength(line, startColumn, endColumn, fieldName, divisor) {
|
|
74
60
|
const str = line.substring(startColumn, endColumn);
|
|
75
|
-
|
|
76
61
|
if (!/^\s*-?\d+\s*$/.test(str)) {
|
|
77
62
|
error(`Invalid ${fieldName}`, line, startColumn, endColumn);
|
|
78
63
|
return null;
|
|
79
64
|
}
|
|
80
|
-
|
|
81
65
|
const value = parseFloat(str);
|
|
82
|
-
|
|
83
66
|
if (isNaN(value)) {
|
|
84
67
|
error(`Missing ${fieldName}`, line, startColumn, endColumn);
|
|
85
68
|
return null;
|
|
86
69
|
}
|
|
87
|
-
|
|
88
70
|
return _unitized.Unitize.feet(value / divisor);
|
|
89
71
|
}
|
|
90
|
-
|
|
91
72
|
for await (const line of lines) {
|
|
92
73
|
lineNumber++;
|
|
93
|
-
|
|
94
74
|
if (lineNumber === 1) {
|
|
95
75
|
totalLength = _unitized.Unitize.feet(parseFloat(line));
|
|
96
76
|
continue;
|
|
97
77
|
}
|
|
98
|
-
|
|
99
78
|
if (!/\S/.test(line)) continue;
|
|
100
79
|
const toName = line.substring(0, 6).trim();
|
|
101
|
-
|
|
102
80
|
if (!toName) {
|
|
103
81
|
error('Invalid to station name', line, 0, 6);
|
|
104
82
|
continue;
|
|
105
83
|
}
|
|
106
|
-
|
|
107
84
|
if (/[^ S]/.test(line[6])) {
|
|
108
85
|
error('Invalid flag', line, 6, 7);
|
|
109
86
|
continue;
|
|
110
87
|
}
|
|
111
|
-
|
|
112
88
|
const isSurface = line[6] === 'S';
|
|
113
89
|
const fromNumber = parseUint(line, 7, 12, 'from station number');
|
|
114
90
|
if (fromNumber == null) continue;
|
|
@@ -150,11 +126,10 @@ async function parseFrcsPlotFile(file, lines) {
|
|
|
150
126
|
tripNumber
|
|
151
127
|
});
|
|
152
128
|
}
|
|
153
|
-
|
|
154
129
|
return {
|
|
155
130
|
totalLength,
|
|
156
131
|
shots,
|
|
157
132
|
errors
|
|
158
133
|
};
|
|
159
134
|
}
|
|
160
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJzZUZyY3NQbG90RmlsZS50cyJdLCJuYW1lcyI6WyJwYXJzZUZyY3NQbG90RmlsZSIsImZpbGUiLCJsaW5lcyIsInRvdGFsTGVuZ3RoIiwiVW5pdGl6ZSIsImZlZXQiLCJOYU4iLCJzaG90cyIsImVycm9ycyIsImxpbmVOdW1iZXIiLCJlcnJvciIsIm1lc3NhZ2UiLCJsaW5lIiwic3RhcnRDb2x1bW4iLCJlbmRDb2x1bW4iLCJwdXNoIiwiU2VnbWVudFBhcnNlRXJyb3IiLCJTZWdtZW50IiwidmFsdWUiLCJzb3VyY2UiLCJzdGFydExpbmUiLCJzdGFydENvbCIsInN1YnN0cmluZyIsInBhcnNlVWludCIsImZpZWxkTmFtZSIsInN0ciIsInRlc3QiLCJwYXJzZUludCIsInBhcnNlT3B0aW9uYWxVaW50IiwicGFyc2VMZW5ndGgiLCJkaXZpc29yIiwicGFyc2VGbG9hdCIsImlzTmFOIiwidG9OYW1lIiwidHJpbSIsImlzU3VyZmFjZSIsImZyb21OdW1iZXIiLCJ0b051bWJlciIsImVhc3RpbmciLCJub3J0aGluZyIsImVsZXZhdGlvbiIsImxlZnRFYXN0aW5nIiwibGVmdE5vcnRoaW5nIiwicmlnaHRFYXN0aW5nIiwicmlnaHROb3J0aGluZyIsInVwIiwiZG93biIsInRyaXBOdW1iZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFFQTs7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7QUFjZSxlQUFlQSxpQkFBZixDQUNiQyxJQURhLEVBRWJDLEtBRmEsRUFHVTtBQUN2QixNQUFJQyxXQUFtQyxHQUFHQyxrQkFBUUMsSUFBUixDQUFhQyxHQUFiLENBQTFDOztBQUNBLFFBQU1DLEtBQTBCLEdBQUcsRUFBbkM7QUFDQSxRQUFNQyxNQUFnQyxHQUFHLEVBQXpDO0FBRUEsTUFBSUMsVUFBVSxHQUFHLENBQWpCOztBQUVBLFFBQU1DLEtBQUssR0FBRyxDQUNaQyxPQURZLEVBRVpDLElBRlksRUFHWkMsV0FIWSxFQUlaQyxTQUpZLEtBS0g7QUFDVE4sSUFB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QU8sRUFBUCxFQUFXLEVBQVgsRUFBZSxhQUFmLENBQXBDO0FBRUFMLElBQUFBLEtBQUssQ0FBQ1EsSUFBTixDQUFXO0FBQ1RrQixNQUFBQSxNQURTO0FBRVRFLE1BQUFBLFNBRlM7QUFHVEMsTUFBQUEsVUFIUztBQUlUQyxNQUFBQSxRQUpTO0FBS1RDLE1BQUFBLE9BTFM7QUFNVEMsTUFBQUEsUUFOUztBQU9UQyxNQUFBQSxTQVBTO0FBUVRDLE1BQUFBLFdBUlM7QUFTVEMsTUFBQUEsWUFUUztBQVVUQyxNQUFBQSxZQVZTO0FBV1RDLE1BQUFBLGFBWFM7QUFZVEMsTUFBQUEsRUFaUztBQWFUQyxNQUFBQSxJQWJTO0FBY1RDLE1BQUFBO0FBZFMsS0FBWDtBQWdCRDs7QUFFRCxTQUFPO0FBQ0w1QyxJQUFBQSxXQURLO0FBRUxJLElBQUFBLEtBRks7QUFHTEMsSUFBQUE7QUFISyxHQUFQO0FBS0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGcmNzUGxvdFNob3QgfSBmcm9tICcuL0ZyY3NQbG90U2hvdCdcbmltcG9ydCB7IEZyY3NQbG90RmlsZSB9IGZyb20gJy4vRnJjc1Bsb3RGaWxlJ1xuaW1wb3J0IHsgTGVuZ3RoLCBVbml0aXplZE51bWJlciwgVW5pdGl6ZSB9IGZyb20gJ0BzcGVsZW90aWNhL3VuaXRpemVkJ1xuaW1wb3J0IHsgU2VnbWVudCwgU2VnbWVudFBhcnNlRXJyb3IgfSBmcm9tICdwYXJzZS1zZWdtZW50J1xuXG4vKipcbiAqIFBhcnNlcyBkYXRhIGZyb20gYSBjYWxjdWxhdGVkIHN1cnZleSBmaWxlLiAgVGhlc2UgbG9vayBsaWtlIHNvOlxuPHByZT4gIDEyMy4xODIyNTlcbiAgQUUyMCAgICAgMSAgICAxICAgICAgIDAgICAgICAgMCAgICAgIDAgICAxNTMgIC0yNTcgICAtNTEgICAgODUgICAwICAyMCAgICAgMVxuICBBRTE5ICAgICAxICAgIDIgICAgIDY1MyAgICAgNDAyICAgLTU0OCAgMTA0NiAgLTU4NyAgLTE3NCAgICA5NyAgIDAgMjAwICAgICAxXG4gIEFFMTggICAgIDIgICAgMyAgICAgNjY5ICAgICA0NDkgIC0zMDAyICAgOTk1ICAgIDk0ICAtNTk3ICAgLTU2IDI1MCAgIDAgICAgIDFcbiAgQUUxNyAgICAgMyAgICA0ICAgICA1MzkgICAgMTIxNyAgLTI3NzAgICA0OTcgICAgNDcgIC0yOTggICAtMjggICAwICAgMCAgICAgMVxuICBBRTE2ICAgICA0ICAgIDUgICAgIDU0NCAgICAxMjMwICAtMzQ0MSAgIDQxMSAgLTI4NCAgLTI0NiAgIDE3MCAgNjAgIDEwICAgICAxXG4gIEFFMTUgICAgIDUgICAgNiAgICAxNjc5ICAgIDE2NjMgIC0zODMzICAgICAwICAgICAwICAtMjgyICAgMjgzICAyMCAgMTAgICAgIDFcbiAgQUUxNCAgICAgNiAgICA3ICAgIDIwMjYgICAgMjYxNyAgLTM3MzAgICA0NDYgICAyMjUgIC00NDYgIC0yMjUgICAwICAzMCAgICAgMVxuICBBRTEzICAgICA3ICAgIDggICAgIDM5MSAgICAzMTUyICAtNTc4OCAgLTExMSAgIDY5MSAgICAgMCAgICAgMCAyMDAgIDUwICAgICAxXG4gIEFFMTIgICAgIDggICAgOSAgIC0xMDE5ICAgIDIxNzUgIC00NjMwICAtMzY5ICAgMzM2ICAgMjIxICAtMjAxICA0MCAgNDAgICAgIDFcbiAgQUUxMSAgICAgOSAgIDEwICAgLTE1MTYgICAgMTI4OSAgLTM5MTkgIC0zNDggICAxOTUgICA2MTAgIC0zNDIgIDUwICAxMCAgICAgMTwvcHJlPlxuICovXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBwYXJzZUZyY3NQbG90RmlsZShcbiAgZmlsZTogc3RyaW5nLFxuICBsaW5lczogQXN5bmNJdGVyYWJsZTxzdHJpbmc+XG4pOiBQcm9taXNlPEZyY3NQbG90RmlsZT4ge1xuICBsZXQgdG90YWxMZW5ndGg6IFVuaXRpemVkTnVtYmVyPExlbmd0aD4gPSBVbml0aXplLmZlZXQoTmFOKVxuICBjb25zdCBzaG90czogQXJyYXk8RnJjc1Bsb3RTaG90PiA9IFtdXG4gIGNvbnN0IGVycm9yczogQXJyYXk8U2VnbWVudFBhcnNlRXJyb3I+ID0gW11cblxuICBsZXQgbGluZU51bWJlciA9IDBcblxuICBjb25zdCBlcnJvciA9IChcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgbGluZTogc3RyaW5nLFxuICAgIHN0YXJ0Q29sdW1uOiBudW1iZXIsXG4gICAgZW5kQ29sdW1uOiBudW1iZXJcbiAgKTogdm9pZCA9PiB7XG4gICAgZXJyb3JzLnB1c2goXG4gICAgICBuZXcgU2VnbWVudFBhcnNlRXJyb3IoXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIG5ldyBTZWdtZW50KHtcbiAgICAgICAgICB2YWx1ZTogbGluZSxcbiAgICAgICAgICBzb3VyY2U6IGZpbGUsXG4gICAgICAgICAgc3RhcnRMaW5lOiBsaW5lTnVtYmVyIC0gMSxcbiAgICAgICAgICBzdGFydENvbDogMCxcbiAgICAgICAgfSkuc3Vic3RyaW5nKHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pXG4gICAgICApXG4gICAgKVxuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VVaW50KFxuICAgIGxpbmU6IHN0cmluZyxcbiAgICBzdGFydENvbHVtbjogbnVtYmVyLFxuICAgIGVuZENvbHVtbjogbnVtYmVyLFxuICAgIGZpZWxkTmFtZTogc3RyaW5nXG4gICk6IG51bWJlciB8IG51bGwge1xuICAgIGNvbnN0IHN0ciA9IGxpbmUuc3Vic3RyaW5nKHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pXG4gICAgaWYgKCEvXFxTLy50ZXN0KHN0cikpIHtcbiAgICAgIGVycm9yKGBNaXNzaW5nICR7ZmllbGROYW1lfWAsIGxpbmUsIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pXG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICBpZiAoIS9eXFxzKlxcZCtcXHMqJC8udGVzdChzdHIpKSB7XG4gICAgICBlcnJvcihgSW52YWxpZCAke2ZpZWxkTmFtZX1gLCBsaW5lLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uKVxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlSW50KHN0cilcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlT3B0aW9uYWxVaW50KFxuICAgIGxpbmU6IHN0cmluZyxcbiAgICBzdGFydENvbHVtbjogbnVtYmVyLFxuICAgIGVuZENvbHVtbjogbnVtYmVyLFxuICAgIGZpZWxkTmFtZTogc3RyaW5nXG4gICk6IG51bWJlciB8IG51bGwge1xuICAgIGNvbnN0IHN0ciA9IGxpbmUuc3Vic3RyaW5nKHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pXG4gICAgaWYgKCEvXFxTLy50ZXN0KHN0cikpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIGlmICghL15cXHMqXFxkK1xccyokLy50ZXN0KHN0cikpIHtcbiAgICAgIGVycm9yKGBJbnZhbGlkICR7ZmllbGROYW1lfWAsIGxpbmUsIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pXG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICByZXR1cm4gcGFyc2VJbnQoc3RyKVxuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VMZW5ndGgoXG4gICAgbGluZTogc3RyaW5nLFxuICAgIHN0YXJ0Q29sdW1uOiBudW1iZXIsXG4gICAgZW5kQ29sdW1uOiBudW1iZXIsXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXG4gICAgZGl2aXNvcjogbnVtYmVyXG4gICk6IFVuaXRpemVkTnVtYmVyPExlbmd0aD4gfCBudWxsIHtcbiAgICBjb25zdCBzdHIgPSBsaW5lLnN1YnN0cmluZyhzdGFydENvbHVtbiwgZW5kQ29sdW1uKVxuICAgIGlmICghL15cXHMqLT9cXGQrXFxzKiQvLnRlc3Qoc3RyKSkge1xuICAgICAgZXJyb3IoYEludmFsaWQgJHtmaWVsZE5hbWV9YCwgbGluZSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbilcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIGNvbnN0IHZhbHVlID0gcGFyc2VGbG9hdChzdHIpXG4gICAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgICAgZXJyb3IoYE1pc3NpbmcgJHtmaWVsZE5hbWV9YCwgbGluZSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbilcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiBVbml0aXplLmZlZXQodmFsdWUgLyBkaXZpc29yKVxuICB9XG5cbiAgZm9yIGF3YWl0IChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgbGluZU51bWJlcisrXG4gICAgaWYgKGxpbmVOdW1iZXIgPT09IDEpIHtcbiAgICAgIHRvdGFsTGVuZ3RoID0gVW5pdGl6ZS5mZWV0KHBhcnNlRmxvYXQobGluZSkpXG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBpZiAoIS9cXFMvLnRlc3QobGluZSkpIGNvbnRpbnVlXG4gICAgY29uc3QgdG9OYW1lID0gbGluZS5zdWJzdHJpbmcoMCwgNikudHJpbSgpXG4gICAgaWYgKCF0b05hbWUpIHtcbiAgICAgIGVycm9yKCdJbnZhbGlkIHRvIHN0YXRpb24gbmFtZScsIGxpbmUsIDAsIDYpXG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBpZiAoL1teIFNdLy50ZXN0KGxpbmVbNl0pKSB7XG4gICAgICBlcnJvcignSW52YWxpZCBmbGFnJywgbGluZSwgNiwgNylcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGNvbnN0IGlzU3VyZmFjZSA9IGxpbmVbNl0gPT09ICdTJ1xuICAgIGNvbnN0IGZyb21OdW1iZXIgPSBwYXJzZVVpbnQobGluZSwgNywgMTIsICdmcm9tIHN0YXRpb24gbnVtYmVyJylcbiAgICBpZiAoZnJvbU51bWJlciA9PSBudWxsKSBjb250aW51ZVxuICAgIGNvbnN0IHRvTnVtYmVyID0gcGFyc2VVaW50KGxpbmUsIDEyLCAxNywgJ3RvIHN0YXRpb24gbnVtYmVyJylcbiAgICBpZiAodG9OdW1iZXIgPT0gbnVsbCkgY29udGludWVcbiAgICBjb25zdCBlYXN0aW5nID0gcGFyc2VMZW5ndGgobGluZSwgMTcsIDI1LCAnZWFzdGluZycsIDEwMClcbiAgICBpZiAoIWVhc3RpbmcpIGNvbnRpbnVlXG4gICAgY29uc3Qgbm9ydGhpbmcgPSBwYXJzZUxlbmd0aChsaW5lLCAyNSwgMzMsICdub3J0aGluZycsIDEwMClcbiAgICBpZiAoIW5vcnRoaW5nKSBjb250aW51ZVxuICAgIGNvbnN0IGVsZXZhdGlvbiA9IHBhcnNlTGVuZ3RoKGxpbmUsIDMzLCA0MCwgJ2VsZXZhdGlvbicsIDEwMClcbiAgICBpZiAoIWVsZXZhdGlvbikgY29udGludWVcbiAgICBjb25zdCBsZWZ0RWFzdGluZyA9IHBhcnNlTGVuZ3RoKGxpbmUsIDQwLCA0NiwgJ2xlZnQgd2FsbCBlYXN0aW5nJywgMTAwKVxuICAgIGlmICghbGVmdEVhc3RpbmcpIGNvbnRpbnVlXG4gICAgY29uc3QgbGVmdE5vcnRoaW5nID0gcGFyc2VMZW5ndGgobGluZSwgNDYsIDUyLCAnbGVmdCB3YWxsIG5vcnRoaW5nJywgMTAwKVxuICAgIGlmICghbGVmdE5vcnRoaW5nKSBjb250aW51ZVxuICAgIGNvbnN0IHJpZ2h0RWFzdGluZyA9IHBhcnNlTGVuZ3RoKGxpbmUsIDUyLCA1OCwgJ3JpZ2h0IHdhbGwgZWFzdGluZycsIDEwMClcbiAgICBpZiAoIXJpZ2h0RWFzdGluZykgY29udGludWVcbiAgICBjb25zdCByaWdodE5vcnRoaW5nID0gcGFyc2VMZW5ndGgobGluZSwgNTgsIDY0LCAncmlnaHQgd2FsbCBub3J0aGluZycsIDEwMClcbiAgICBpZiAoIXJpZ2h0Tm9ydGhpbmcpIGNvbnRpbnVlXG4gICAgY29uc3QgdXAgPSBwYXJzZUxlbmd0aChsaW5lLCA2NCwgNjgsICd1cCcsIDEwKVxuICAgIGlmICghdXApIGNvbnRpbnVlXG4gICAgY29uc3QgZG93biA9IHBhcnNlTGVuZ3RoKGxpbmUsIDY4LCA3MiwgJ2Rvd24nLCAxMClcbiAgICBpZiAoIWRvd24pIGNvbnRpbnVlXG4gICAgY29uc3QgdHJpcE51bWJlciA9IHBhcnNlT3B0aW9uYWxVaW50KGxpbmUsIDcyLCA3OCwgJ3RyaXAgbnVtYmVyJylcblxuICAgIHNob3RzLnB1c2goe1xuICAgICAgdG9OYW1lLFxuICAgICAgaXNTdXJmYWNlLFxuICAgICAgZnJvbU51bWJlcixcbiAgICAgIHRvTnVtYmVyLFxuICAgICAgZWFzdGluZyxcbiAgICAgIG5vcnRoaW5nLFxuICAgICAgZWxldmF0aW9uLFxuICAgICAgbGVmdEVhc3RpbmcsXG4gICAgICBsZWZ0Tm9ydGhpbmcsXG4gICAgICByaWdodEVhc3RpbmcsXG4gICAgICByaWdodE5vcnRoaW5nLFxuICAgICAgdXAsXG4gICAgICBkb3duLFxuICAgICAgdHJpcE51bWJlcixcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0b3RhbExlbmd0aCxcbiAgICBzaG90cyxcbiAgICBlcnJvcnMsXG4gIH1cbn1cbiJdfQ==
|
|
135
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdW5pdGl6ZWQiLCJyZXF1aXJlIiwiX3BhcnNlU2VnbWVudCIsInBhcnNlRnJjc1Bsb3RGaWxlIiwiZmlsZSIsImxpbmVzIiwidG90YWxMZW5ndGgiLCJVbml0aXplIiwiZmVldCIsIk5hTiIsInNob3RzIiwiZXJyb3JzIiwibGluZU51bWJlciIsImVycm9yIiwibWVzc2FnZSIsImxpbmUiLCJzdGFydENvbHVtbiIsImVuZENvbHVtbiIsInB1c2giLCJTZWdtZW50UGFyc2VFcnJvciIsIlNlZ21lbnQiLCJ2YWx1ZSIsInNvdXJjZSIsInN0YXJ0TGluZSIsInN0YXJ0Q29sIiwic3Vic3RyaW5nIiwicGFyc2VVaW50IiwiZmllbGROYW1lIiwic3RyIiwidGVzdCIsInBhcnNlSW50IiwicGFyc2VPcHRpb25hbFVpbnQiLCJwYXJzZUxlbmd0aCIsImRpdmlzb3IiLCJwYXJzZUZsb2F0IiwiaXNOYU4iLCJ0b05hbWUiLCJ0cmltIiwiaXNTdXJmYWNlIiwiZnJvbU51bWJlciIsInRvTnVtYmVyIiwiZWFzdGluZyIsIm5vcnRoaW5nIiwiZWxldmF0aW9uIiwibGVmdEVhc3RpbmciLCJsZWZ0Tm9ydGhpbmciLCJyaWdodEVhc3RpbmciLCJyaWdodE5vcnRoaW5nIiwidXAiLCJkb3duIiwidHJpcE51bWJlciJdLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJzZUZyY3NQbG90RmlsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGcmNzUGxvdFNob3QgfSBmcm9tICcuL0ZyY3NQbG90U2hvdCdcbmltcG9ydCB7IEZyY3NQbG90RmlsZSB9IGZyb20gJy4vRnJjc1Bsb3RGaWxlJ1xuaW1wb3J0IHsgTGVuZ3RoLCBVbml0aXplZE51bWJlciwgVW5pdGl6ZSB9IGZyb20gJ0BzcGVsZW90aWNhL3VuaXRpemVkJ1xuaW1wb3J0IHsgU2VnbWVudCwgU2VnbWVudFBhcnNlRXJyb3IgfSBmcm9tICdwYXJzZS1zZWdtZW50J1xuXG4vKipcbiAqIFBhcnNlcyBkYXRhIGZyb20gYSBjYWxjdWxhdGVkIHN1cnZleSBmaWxlLiAgVGhlc2UgbG9vayBsaWtlIHNvOlxuPHByZT4gIDEyMy4xODIyNTlcbiAgQUUyMCAgICAgMSAgICAxICAgICAgIDAgICAgICAgMCAgICAgIDAgICAxNTMgIC0yNTcgICAtNTEgICAgODUgICAwICAyMCAgICAgMVxuICBBRTE5ICAgICAxICAgIDIgICAgIDY1MyAgICAgNDAyICAgLTU0OCAgMTA0NiAgLTU4NyAgLTE3NCAgICA5NyAgIDAgMjAwICAgICAxXG4gIEFFMTggICAgIDIgICAgMyAgICAgNjY5ICAgICA0NDkgIC0zMDAyICAgOTk1ICAgIDk0ICAtNTk3ICAgLTU2IDI1MCAgIDAgICAgIDFcbiAgQUUxNyAgICAgMyAgICA0ICAgICA1MzkgICAgMTIxNyAgLTI3NzAgICA0OTcgICAgNDcgIC0yOTggICAtMjggICAwICAgMCAgICAgMVxuICBBRTE2ICAgICA0ICAgIDUgICAgIDU0NCAgICAxMjMwICAtMzQ0MSAgIDQxMSAgLTI4NCAgLTI0NiAgIDE3MCAgNjAgIDEwICAgICAxXG4gIEFFMTUgICAgIDUgICAgNiAgICAxNjc5ICAgIDE2NjMgIC0zODMzICAgICAwICAgICAwICAtMjgyICAgMjgzICAyMCAgMTAgICAgIDFcbiAgQUUxNCAgICAgNiAgICA3ICAgIDIwMjYgICAgMjYxNyAgLTM3MzAgICA0NDYgICAyMjUgIC00NDYgIC0yMjUgICAwICAzMCAgICAgMVxuICBBRTEzICAgICA3ICAgIDggICAgIDM5MSAgICAzMTUyICAtNTc4OCAgLTExMSAgIDY5MSAgICAgMCAgICAgMCAyMDAgIDUwICAgICAxXG4gIEFFMTIgICAgIDggICAgOSAgIC0xMDE5ICAgIDIxNzUgIC00NjMwICAtMzY5ICAgMzM2ICAgMjIxICAtMjAxICA0MCAgNDAgICAgIDFcbiAgQUUxMSAgICAgOSAgIDEwICAgLTE1MTYgICAgMTI4OSAgLTM5MTkgIC0zNDggICAxOTUgICA2MTAgIC0zNDIgIDUwICAxMCAgICAgMTwvcHJlPlxuICovXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBwYXJzZUZyY3NQbG90RmlsZShcbiAgZmlsZTogc3RyaW5nLFxuICBsaW5lczogQXN5bmNJdGVyYWJsZTxzdHJpbmc+XG4pOiBQcm9taXNlPEZyY3NQbG90RmlsZT4ge1xuICBsZXQgdG90YWxMZW5ndGg6IFVuaXRpemVkTnVtYmVyPExlbmd0aD4gPSBVbml0aXplLmZlZXQoTmFOKVxuICBjb25zdCBzaG90czogQXJyYXk8RnJjc1Bsb3RTaG90PiA9IFtdXG4gIGNvbnN0IGVycm9yczogQXJyYXk8U2VnbWVudFBhcnNlRXJyb3I+ID0gW11cblxuICBsZXQgbGluZU51bWJlciA9IDBcblxuICBjb25zdCBlcnJvciA9IChcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgbGluZTogc3RyaW5nLFxuICAgIHN0YXJ0Q29sdW1uOiBudW1iZXIsXG4gICAgZW5kQ29sdW1uOiBudW1iZXJcbiAgKTogdm9pZCA9PiB7XG4gICAgZXJyb3JzLnB1c2goXG4gICAgICBuZXcgU2VnbWVudFBhcnNlRXJyb3IoXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIG5ldyBTZWdtZW50KHtcbiAgICAgICAgICB2YWx1ZTogbGluZSxcbiAgICAgICAgICBzb3VyY2U6IGZpbGUsXG4gICAgICAgICAgc3RhcnRMaW5lOiBsaW5lTnVtYmVyIC0gMSxcbiAgICAgICAgICBzdGFydENvbDogMCxcbiAgICAgICAgfSkuc3Vic3RyaW5nKHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pXG4gICAgICApXG4gICAgKVxuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VVaW50KFxuICAgIGxpbmU6IHN0cmluZyxcbiAgICBzdGFydENvbHVtbjogbnVtYmVyLFxuICAgIGVuZENvbHVtbjogbnVtYmVyLFxuICAgIGZpZWxkTmFtZTogc3RyaW5nXG4gICk6IG51bWJlciB8IG51bGwge1xuICAgIGNvbnN0IHN0ciA9IGxpbmUuc3Vic3RyaW5nKHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pXG4gICAgaWYgKCEvXFxTLy50ZXN0KHN0cikpIHtcbiAgICAgIGVycm9yKGBNaXNzaW5nICR7ZmllbGROYW1lfWAsIGxpbmUsIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pXG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICBpZiAoIS9eXFxzKlxcZCtcXHMqJC8udGVzdChzdHIpKSB7XG4gICAgICBlcnJvcihgSW52YWxpZCAke2ZpZWxkTmFtZX1gLCBsaW5lLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uKVxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlSW50KHN0cilcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlT3B0aW9uYWxVaW50KFxuICAgIGxpbmU6IHN0cmluZyxcbiAgICBzdGFydENvbHVtbjogbnVtYmVyLFxuICAgIGVuZENvbHVtbjogbnVtYmVyLFxuICAgIGZpZWxkTmFtZTogc3RyaW5nXG4gICk6IG51bWJlciB8IG51bGwge1xuICAgIGNvbnN0IHN0ciA9IGxpbmUuc3Vic3RyaW5nKHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pXG4gICAgaWYgKCEvXFxTLy50ZXN0KHN0cikpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIGlmICghL15cXHMqXFxkK1xccyokLy50ZXN0KHN0cikpIHtcbiAgICAgIGVycm9yKGBJbnZhbGlkICR7ZmllbGROYW1lfWAsIGxpbmUsIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pXG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICByZXR1cm4gcGFyc2VJbnQoc3RyKVxuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VMZW5ndGgoXG4gICAgbGluZTogc3RyaW5nLFxuICAgIHN0YXJ0Q29sdW1uOiBudW1iZXIsXG4gICAgZW5kQ29sdW1uOiBudW1iZXIsXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXG4gICAgZGl2aXNvcjogbnVtYmVyXG4gICk6IFVuaXRpemVkTnVtYmVyPExlbmd0aD4gfCBudWxsIHtcbiAgICBjb25zdCBzdHIgPSBsaW5lLnN1YnN0cmluZyhzdGFydENvbHVtbiwgZW5kQ29sdW1uKVxuICAgIGlmICghL15cXHMqLT9cXGQrXFxzKiQvLnRlc3Qoc3RyKSkge1xuICAgICAgZXJyb3IoYEludmFsaWQgJHtmaWVsZE5hbWV9YCwgbGluZSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbilcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIGNvbnN0IHZhbHVlID0gcGFyc2VGbG9hdChzdHIpXG4gICAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgICAgZXJyb3IoYE1pc3NpbmcgJHtmaWVsZE5hbWV9YCwgbGluZSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbilcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiBVbml0aXplLmZlZXQodmFsdWUgLyBkaXZpc29yKVxuICB9XG5cbiAgZm9yIGF3YWl0IChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgbGluZU51bWJlcisrXG4gICAgaWYgKGxpbmVOdW1iZXIgPT09IDEpIHtcbiAgICAgIHRvdGFsTGVuZ3RoID0gVW5pdGl6ZS5mZWV0KHBhcnNlRmxvYXQobGluZSkpXG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBpZiAoIS9cXFMvLnRlc3QobGluZSkpIGNvbnRpbnVlXG4gICAgY29uc3QgdG9OYW1lID0gbGluZS5zdWJzdHJpbmcoMCwgNikudHJpbSgpXG4gICAgaWYgKCF0b05hbWUpIHtcbiAgICAgIGVycm9yKCdJbnZhbGlkIHRvIHN0YXRpb24gbmFtZScsIGxpbmUsIDAsIDYpXG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBpZiAoL1teIFNdLy50ZXN0KGxpbmVbNl0pKSB7XG4gICAgICBlcnJvcignSW52YWxpZCBmbGFnJywgbGluZSwgNiwgNylcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGNvbnN0IGlzU3VyZmFjZSA9IGxpbmVbNl0gPT09ICdTJ1xuICAgIGNvbnN0IGZyb21OdW1iZXIgPSBwYXJzZVVpbnQobGluZSwgNywgMTIsICdmcm9tIHN0YXRpb24gbnVtYmVyJylcbiAgICBpZiAoZnJvbU51bWJlciA9PSBudWxsKSBjb250aW51ZVxuICAgIGNvbnN0IHRvTnVtYmVyID0gcGFyc2VVaW50KGxpbmUsIDEyLCAxNywgJ3RvIHN0YXRpb24gbnVtYmVyJylcbiAgICBpZiAodG9OdW1iZXIgPT0gbnVsbCkgY29udGludWVcbiAgICBjb25zdCBlYXN0aW5nID0gcGFyc2VMZW5ndGgobGluZSwgMTcsIDI1LCAnZWFzdGluZycsIDEwMClcbiAgICBpZiAoIWVhc3RpbmcpIGNvbnRpbnVlXG4gICAgY29uc3Qgbm9ydGhpbmcgPSBwYXJzZUxlbmd0aChsaW5lLCAyNSwgMzMsICdub3J0aGluZycsIDEwMClcbiAgICBpZiAoIW5vcnRoaW5nKSBjb250aW51ZVxuICAgIGNvbnN0IGVsZXZhdGlvbiA9IHBhcnNlTGVuZ3RoKGxpbmUsIDMzLCA0MCwgJ2VsZXZhdGlvbicsIDEwMClcbiAgICBpZiAoIWVsZXZhdGlvbikgY29udGludWVcbiAgICBjb25zdCBsZWZ0RWFzdGluZyA9IHBhcnNlTGVuZ3RoKGxpbmUsIDQwLCA0NiwgJ2xlZnQgd2FsbCBlYXN0aW5nJywgMTAwKVxuICAgIGlmICghbGVmdEVhc3RpbmcpIGNvbnRpbnVlXG4gICAgY29uc3QgbGVmdE5vcnRoaW5nID0gcGFyc2VMZW5ndGgobGluZSwgNDYsIDUyLCAnbGVmdCB3YWxsIG5vcnRoaW5nJywgMTAwKVxuICAgIGlmICghbGVmdE5vcnRoaW5nKSBjb250aW51ZVxuICAgIGNvbnN0IHJpZ2h0RWFzdGluZyA9IHBhcnNlTGVuZ3RoKGxpbmUsIDUyLCA1OCwgJ3JpZ2h0IHdhbGwgZWFzdGluZycsIDEwMClcbiAgICBpZiAoIXJpZ2h0RWFzdGluZykgY29udGludWVcbiAgICBjb25zdCByaWdodE5vcnRoaW5nID0gcGFyc2VMZW5ndGgobGluZSwgNTgsIDY0LCAncmlnaHQgd2FsbCBub3J0aGluZycsIDEwMClcbiAgICBpZiAoIXJpZ2h0Tm9ydGhpbmcpIGNvbnRpbnVlXG4gICAgY29uc3QgdXAgPSBwYXJzZUxlbmd0aChsaW5lLCA2NCwgNjgsICd1cCcsIDEwKVxuICAgIGlmICghdXApIGNvbnRpbnVlXG4gICAgY29uc3QgZG93biA9IHBhcnNlTGVuZ3RoKGxpbmUsIDY4LCA3MiwgJ2Rvd24nLCAxMClcbiAgICBpZiAoIWRvd24pIGNvbnRpbnVlXG4gICAgY29uc3QgdHJpcE51bWJlciA9IHBhcnNlT3B0aW9uYWxVaW50KGxpbmUsIDcyLCA3OCwgJ3RyaXAgbnVtYmVyJylcblxuICAgIHNob3RzLnB1c2goe1xuICAgICAgdG9OYW1lLFxuICAgICAgaXNTdXJmYWNlLFxuICAgICAgZnJvbU51bWJlcixcbiAgICAgIHRvTnVtYmVyLFxuICAgICAgZWFzdGluZyxcbiAgICAgIG5vcnRoaW5nLFxuICAgICAgZWxldmF0aW9uLFxuICAgICAgbGVmdEVhc3RpbmcsXG4gICAgICBsZWZ0Tm9ydGhpbmcsXG4gICAgICByaWdodEVhc3RpbmcsXG4gICAgICByaWdodE5vcnRoaW5nLFxuICAgICAgdXAsXG4gICAgICBkb3duLFxuICAgICAgdHJpcE51bWJlcixcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0b3RhbExlbmd0aCxcbiAgICBzaG90cyxcbiAgICBlcnJvcnMsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsSUFBQUEsU0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsYUFBQSxHQUFBRCxPQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLGVBQWVFLGlCQUFpQkEsQ0FDN0NDLElBQVksRUFDWkMsS0FBNEIsRUFDTDtFQUN2QixJQUFJQyxXQUFtQyxHQUFHQyxpQkFBTyxDQUFDQyxJQUFJLENBQUNDLEdBQUcsQ0FBQztFQUMzRCxNQUFNQyxLQUEwQixHQUFHLEVBQUU7RUFDckMsTUFBTUMsTUFBZ0MsR0FBRyxFQUFFO0VBRTNDLElBQUlDLFVBQVUsR0FBRyxDQUFDO0VBRWxCLE1BQU1DLEtBQUssR0FBR0EsQ0FDWkMs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
|