@speleotica/frcsdata 4.0.3 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/FrcsPlotFile.d.ts +1 -1
- package/FrcsPlotShot.d.ts +1 -1
- package/FrcsShot.d.ts +1 -1
- package/FrcsShot.js +2 -3
- package/FrcsSurveyFile.d.ts +1 -1
- package/FrcsTrip.d.ts +2 -2
- package/FrcsTripSummary.d.ts +1 -1
- package/FrcsTripSummaryFile.d.ts +1 -1
- package/formatFrcsShot.js +7 -6
- package/index.js +11 -11
- package/node/index.js +6 -9
- package/package.json +30 -124
- package/parseFrcsPlotFile.js +4 -3
- package/parseFrcsSurveyFile.js +13 -12
- package/parseFrcsTripSummaryFile.js +5 -4
- package/string/index.js +8 -11
- package/web/index.d.ts +12 -0
- package/web/index.js +71 -0
- package/es/FrcsPlotFile.js +0 -6
- package/es/FrcsPlotShot.js +0 -6
- package/es/FrcsShot.js +0 -14
- package/es/FrcsSurveyFile.js +0 -6
- package/es/FrcsTrip.js +0 -6
- package/es/FrcsTripSummary.js +0 -6
- package/es/FrcsTripSummaryFile.js +0 -6
- package/es/formatFrcsShot.js +0 -75
- package/es/formatFrcsShot.spec.js +0 -141
- package/es/index.js +0 -96
- package/es/node/index.js +0 -20
- package/es/node/parseFrcsPlotFile.spec.js +0 -167
- package/es/node/parseFrcsSurveyFile.spec.js +0 -314
- package/es/node/parseFrcsTripSummaryFile.spec.js +0 -78
- package/es/parseFrcsPlotFile.js +0 -135
- package/es/parseFrcsSurveyFile.js +0 -503
- package/es/parseFrcsTripSummaryFile.js +0 -73
- package/es/string/index.js +0 -21
- package/es/string/parseFrcsPlotFile.spec.js +0 -179
- package/es/string/parseFrcsSurveyFile.spec.js +0 -646
- package/formatFrcsShot.spec.js +0 -139
- package/node/parseFrcsPlotFile.spec.js +0 -181
- package/node/parseFrcsSurveyFile.spec.js +0 -328
- package/node/parseFrcsTripSummaryFile.spec.js +0 -104
- package/string/parseFrcsPlotFile.spec.js +0 -182
- package/string/parseFrcsSurveyFile.spec.js +0 -673
- package/yarn.lock +0 -9542
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _mocha = require("mocha");
|
|
4
|
-
var _chai = require("chai");
|
|
5
|
-
var _index = require("./index");
|
|
6
|
-
var _unitized = require("@speleotica/unitized");
|
|
7
|
-
(0, _mocha.describe)('parseFrcsTripSummaryFile', function () {
|
|
8
|
-
(0, _mocha.it)('basic test', async function () {
|
|
9
|
-
const parsed = await (0, _index.parseFrcsTripSummaryFile)(require.resolve('./STAT_sum.txt'));
|
|
10
|
-
(0, _chai.expect)(parsed).to.deep.equal({
|
|
11
|
-
errors: [],
|
|
12
|
-
tripSummaries: [{
|
|
13
|
-
tripNumber: 1,
|
|
14
|
-
tripIndex: 0,
|
|
15
|
-
date: new Date(81, 1, 15),
|
|
16
|
-
totalLength: _unitized.Unitize.feet(258.6),
|
|
17
|
-
numShots: 17,
|
|
18
|
-
name: 'ENTRANCE DROPS, JOE\'S "I LOVE MY WIFE TRAVERSE", TRICKY TRAVERSE',
|
|
19
|
-
excludedLength: _unitized.Unitize.feet(0),
|
|
20
|
-
numExcludedShots: 0,
|
|
21
|
-
team: ['Peter Quick', 'Keith Ortiz'],
|
|
22
|
-
shots: ['A1', 'AD1-AD3', 'AE1', 'AE1 SIDE', 'AE9 SIDE', 'AE10-AE9', 'AE13 SIDE', 'AE15 SIDE', 'AE20-AE11']
|
|
23
|
-
}, {
|
|
24
|
-
tripNumber: 2,
|
|
25
|
-
tripIndex: 1,
|
|
26
|
-
date: new Date(81, 1, 14),
|
|
27
|
-
totalLength: _unitized.Unitize.feet(1133.75),
|
|
28
|
-
numShots: 55,
|
|
29
|
-
name: 'TRICKY TRAVERSE AND THEN FIRST SURVEY IN UPPER CROWLWAY',
|
|
30
|
-
excludedLength: _unitized.Unitize.feet(0),
|
|
31
|
-
numExcludedShots: 0,
|
|
32
|
-
team: ['Dan Crowl', 'Keith Ortiz', 'Chip Hopper', 'Peter Quick', 'Larry Bean'],
|
|
33
|
-
shots: ['A1-A56']
|
|
34
|
-
}, {
|
|
35
|
-
tripNumber: 3,
|
|
36
|
-
tripIndex: 2,
|
|
37
|
-
date: new Date(81, 2, 6),
|
|
38
|
-
totalLength: _unitized.Unitize.feet(2371.2),
|
|
39
|
-
numShots: 61,
|
|
40
|
-
name: "DOUG'S DEMISE (50 FT DROP), CHRIS CROSS, CRAWL ABOVE DROP",
|
|
41
|
-
excludedLength: _unitized.Unitize.feet(0),
|
|
42
|
-
numExcludedShots: 0,
|
|
43
|
-
team: ['Peter Quick', 'Chris Gerace', 'Phil Oden', 'Chip Hopper'],
|
|
44
|
-
shots: ['A13 SIDE', 'B1-B5', 'B2 SIDE', 'B3 SIDE', 'B6-B18', 'B17 SIDE', 'B19-B38', 'B32 SIDE', 'BS1-BS5', 'C1-C18']
|
|
45
|
-
}]
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
(0, _mocha.it)('old format', async function () {
|
|
49
|
-
const parsed = await (0, _index.parseFrcsTripSummaryFile)(require.resolve('./STAT_sum_old.txt'));
|
|
50
|
-
(0, _chai.expect)(parsed).to.deep.equal({
|
|
51
|
-
errors: [],
|
|
52
|
-
tripSummaries: [{
|
|
53
|
-
tripNumber: 1,
|
|
54
|
-
tripIndex: 0,
|
|
55
|
-
date: new Date(81, 1, 15),
|
|
56
|
-
totalLength: _unitized.Unitize.feet(258.6),
|
|
57
|
-
numShots: 17,
|
|
58
|
-
name: 'ENTRANCE DROPS, JOE\'S "I LOVE MY WIFE TRAVERSE", TRICKY TRAVERSE',
|
|
59
|
-
excludedLength: _unitized.Unitize.feet(0),
|
|
60
|
-
numExcludedShots: 0,
|
|
61
|
-
team: ['Peter Quick', 'Keith Ortiz'],
|
|
62
|
-
shots: ['A1', 'AD1-AD3', 'AE1', 'AE1 SIDE', 'AE9 SIDE', 'AE10-AE9', 'AE13 SIDE', 'AE15 SIDE', 'AE20-AE11']
|
|
63
|
-
}, undefined, {
|
|
64
|
-
tripNumber: 3,
|
|
65
|
-
tripIndex: 2,
|
|
66
|
-
date: new Date(81, 2, 6),
|
|
67
|
-
totalLength: _unitized.Unitize.feet(2371.2),
|
|
68
|
-
numShots: 61,
|
|
69
|
-
name: "DOUG'S DEMISE (50 FT DROP), CHRIS CROSS, CRAWL ABOVE DROP",
|
|
70
|
-
excludedLength: _unitized.Unitize.feet(0),
|
|
71
|
-
numExcludedShots: 0,
|
|
72
|
-
team: ['Peter Quick', 'Chris Gerace', 'Phil Oden', 'Chip Hopper'],
|
|
73
|
-
shots: ['A13 SIDE', 'B1-B5', 'B2 SIDE', 'B3 SIDE', 'B6-B18', 'B17 SIDE', 'B19-B38', 'B32 SIDE', 'BS1-BS5', 'C1-C18']
|
|
74
|
-
}]
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9jaGEiLCJyZXF1aXJlIiwiX2NoYWkiLCJfaW5kZXgiLCJfdW5pdGl6ZWQiLCJkZXNjcmliZSIsIml0IiwicGFyc2VkIiwicGFyc2VGcmNzVHJpcFN1bW1hcnlGaWxlIiwicmVzb2x2ZSIsImV4cGVjdCIsInRvIiwiZGVlcCIsImVxdWFsIiwiZXJyb3JzIiwidHJpcFN1bW1hcmllcyIsInRyaXBOdW1iZXIiLCJ0cmlwSW5kZXgiLCJkYXRlIiwiRGF0ZSIsInRvdGFsTGVuZ3RoIiwiVW5pdGl6ZSIsImZlZXQiLCJudW1TaG90cyIsIm5hbWUiLCJleGNsdWRlZExlbmd0aCIsIm51bUV4Y2x1ZGVkU2hvdHMiLCJ0ZWFtIiwic2hvdHMiLCJ1bmRlZmluZWQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbm9kZS9wYXJzZUZyY3NUcmlwU3VtbWFyeUZpbGUuc3BlYy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXNjcmliZSwgaXQgfSBmcm9tICdtb2NoYSdcbmltcG9ydCB7IGV4cGVjdCB9IGZyb20gJ2NoYWknXG5pbXBvcnQgeyBwYXJzZUZyY3NUcmlwU3VtbWFyeUZpbGUgfSBmcm9tICcuL2luZGV4J1xuaW1wb3J0IHsgVW5pdGl6ZSB9IGZyb20gJ0BzcGVsZW90aWNhL3VuaXRpemVkJ1xuXG5kZXNjcmliZSgncGFyc2VGcmNzVHJpcFN1bW1hcnlGaWxlJywgZnVuY3Rpb24oKSB7XG4gIGl0KCdiYXNpYyB0ZXN0JywgYXN5bmMgZnVuY3Rpb24oKSB7XG4gICAgY29uc3QgcGFyc2VkID0gYXdhaXQgcGFyc2VGcmNzVHJpcFN1bW1hcnlGaWxlKFxuICAgICAgcmVxdWlyZS5yZXNvbHZlKCcuL1NUQVRfc3VtLnR4dCcpXG4gICAgKVxuICAgIGV4cGVjdChwYXJzZWQpLnRvLmRlZXAuZXF1YWwoe1xuICAgICAgZXJyb3JzOiBbXSxcbiAgICAgIHRyaXBTdW1tYXJpZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHRyaXBOdW1iZXI6IDEsXG4gICAgICAgICAgdHJpcEluZGV4OiAwLFxuICAgICAgICAgIGRhdGU6IG5ldyBEYXRlKDgxLCAxLCAxNSksXG4gICAgICAgICAgdG90YWxMZW5ndGg6IFVuaXRpemUuZmVldCgyNTguNiksXG4gICAgICAgICAgbnVtU2hvdHM6IDE3LFxuICAgICAgICAgIG5hbWU6XG4gICAgICAgICAgICAnRU5UUkFOQ0UgRFJPUFMsIEpPRVxcJ1MgXCJJIExPVkUgTVkgV0lGRSBUUkFWRVJTRVwiLCBUUklDS1kgVFJBVkVSU0UnLFxuICAgICAgICAgIGV4Y2x1ZGVkTGVuZ3RoOiBVbml0aXplLmZlZXQoMCksXG4gICAgICAgICAgbnVtRXhjbHVkZWRTaG90czogMCxcbiAgICAgICAgICB0ZWFtOiBbJ1BldGVyIFF1aWNrJywgJ0tlaXRoIE9ydGl6J10sXG4gICAgICAgICAgc2hvdHM6IFtcbiAgICAgICAgICAgICdBMScsXG4gICAgICAgICAgICAnQUQxLUFEMycsXG4gICAgICAgICAgICAnQUUxJyxcbiAgICAgICAgICAgICdBRTEgU0lERScsXG4gICAgICAgICAgICAnQUU5IFNJREUnLFxuICAgICAgICAgICAgJ0FFMTAtQUU5JyxcbiAgICAgICAgICAgICdBRTEzIFNJREUnLFxuICAgICAgICAgICAgJ0FFMTUgU0lERScsXG4gICAgICAgICAgICAnQUUyMC1BRTExJyxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHJpcE51bWJlcjogMixcbiAgICAgICAgICB0cmlwSW5kZXg6IDEsXG4gICAgICAgICAgZGF0ZTogbmV3IERhdGUoODEsIDEsIDE0KSxcbiAgICAgICAgICB0b3RhbExlbmd0aDogVW5pdGl6ZS5mZWV0KDExMzMuNzUpLFxuICAgICAgICAgIG51bVNob3RzOiA1NSxcbiAgICAgICAgICBuYW1lOiAnVFJJQ0tZIFRSQVZFUlNFIEFORCBUSEVOIEZJUlNUIFNVUlZFWSBJTiBVUFBFUiBDUk9XTFdBWScsXG4gICAgICAgICAgZXhjbHVkZWRMZW5ndGg6IFVuaXRpemUuZmVldCgwKSxcbiAgICAgICAgICBudW1FeGNsdWRlZFNob3RzOiAwLFxuICAgICAgICAgIHRlYW06IFtcbiAgICAgICAgICAgICdEYW4gQ3Jvd2wnLFxuICAgICAgICAgICAgJ0tlaXRoIE9ydGl6JyxcbiAgICAgICAgICAgICdDaGlwIEhvcHBlcicsXG4gICAgICAgICAgICAnUGV0ZXIgUXVpY2snLFxuICAgICAgICAgICAgJ0xhcnJ5IEJlYW4nLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgc2hvdHM6IFsnQTEtQTU2J10sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0cmlwTnVtYmVyOiAzLFxuICAgICAgICAgIHRyaXBJbmRleDogMixcbiAgICAgICAgICBkYXRlOiBuZXcgRGF0ZSg4MSwgMiwgNiksXG4gICAgICAgICAgdG90YWxMZW5ndGg6IFVuaXRpemUuZmVldCgyMzcxLjIpLFxuICAgICAgICAgIG51bVNob3RzOiA2MSxcbiAgICAgICAgICBuYW1lOiBcIkRPVUcnUyBERU1JU0UgKDUwIEZUIERST1ApLCBDSFJJUyBDUk9TUywgQ1JBV0wgQUJPVkUgRFJPUFwiLFxuICAgICAgICAgIGV4Y2x1ZGVkTGVuZ3RoOiBVbml0aXplLmZlZXQoMCksXG4gICAgICAgICAgbnVtRXhjbHVkZWRTaG90czogMCxcbiAgICAgICAgICB0ZWFtOiBbJ1BldGVyIFF1aWNrJywgJ0NocmlzIEdlcmFjZScsICdQaGlsIE9kZW4nLCAnQ2hpcCBIb3BwZXInXSxcbiAgICAgICAgICBzaG90czogW1xuICAgICAgICAgICAgJ0ExMyBTSURFJyxcbiAgICAgICAgICAgICdCMS1CNScsXG4gICAgICAgICAgICAnQjIgU0lERScsXG4gICAgICAgICAgICAnQjMgU0lERScsXG4gICAgICAgICAgICAnQjYtQjE4JyxcbiAgICAgICAgICAgICdCMTcgU0lERScsXG4gICAgICAgICAgICAnQjE5LUIzOCcsXG4gICAgICAgICAgICAnQjMyIFNJREUnLFxuICAgICAgICAgICAgJ0JTMS1CUzUnLFxuICAgICAgICAgICAgJ0MxLUMxOCcsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSlcbiAgfSlcbiAgaXQoJ29sZCBmb3JtYXQnLCBhc3luYyBmdW5jdGlvbigpIHtcbiAgICBjb25zdCBwYXJzZWQgPSBhd2FpdCBwYXJzZUZyY3NUcmlwU3VtbWFyeUZpbGUoXG4gICAgICByZXF1aXJlLnJlc29sdmUoJy4vU1RBVF9zdW1fb2xkLnR4dCcpXG4gICAgKVxuICAgIGV4cGVjdChwYXJzZWQpLnRvLmRlZXAuZXF1YWwoe1xuICAgICAgZXJyb3JzOiBbXSxcbiAgICAgIHRyaXBTdW1tYXJpZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHRyaXBOdW1iZXI6IDEsXG4gICAgICAgICAgdHJpcEluZGV4OiAwLFxuICAgICAgICAgIGRhdGU6IG5ldyBEYXRlKDgxLCAxLCAxNSksXG4gICAgICAgICAgdG90YWxMZW5ndGg6IFVuaXRpemUuZmVldCgyNTguNiksXG4gICAgICAgICAgbnVtU2hvdHM6IDE3LFxuICAgICAgICAgIG5hbWU6XG4gICAgICAgICAgICAnRU5UUkFOQ0UgRFJPUFMsIEpPRVxcJ1MgXCJJIExPVkUgTVkgV0lGRSBUUkFWRVJTRVwiLCBUUklDS1kgVFJBVkVSU0UnLFxuICAgICAgICAgIGV4Y2x1ZGVkTGVuZ3RoOiBVbml0aXplLmZlZXQoMCksXG4gICAgICAgICAgbnVtRXhjbHVkZWRTaG90czogMCxcbiAgICAgICAgICB0ZWFtOiBbJ1BldGVyIFF1aWNrJywgJ0tlaXRoIE9ydGl6J10sXG4gICAgICAgICAgc2hvdHM6IFtcbiAgICAgICAgICAgICdBMScsXG4gICAgICAgICAgICAnQUQxLUFEMycsXG4gICAgICAgICAgICAnQUUxJyxcbiAgICAgICAgICAgICdBRTEgU0lERScsXG4gICAgICAgICAgICAnQUU5IFNJREUnLFxuICAgICAgICAgICAgJ0FFMTAtQUU5JyxcbiAgICAgICAgICAgICdBRTEzIFNJREUnLFxuICAgICAgICAgICAgJ0FFMTUgU0lERScsXG4gICAgICAgICAgICAnQUUyMC1BRTExJyxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIHtcbiAgICAgICAgICB0cmlwTnVtYmVyOiAzLFxuICAgICAgICAgIHRyaXBJbmRleDogMixcbiAgICAgICAgICBkYXRlOiBuZXcgRGF0ZSg4MSwgMiwgNiksXG4gICAgICAgICAgdG90YWxMZW5ndGg6IFVuaXRpemUuZmVldCgyMzcxLjIpLFxuICAgICAgICAgIG51bVNob3RzOiA2MSxcbiAgICAgICAgICBuYW1lOiBcIkRPVUcnUyBERU1JU0UgKDUwIEZUIERST1ApLCBDSFJJUyBDUk9TUywgQ1JBV0wgQUJPVkUgRFJPUFwiLFxuICAgICAgICAgIGV4Y2x1ZGVkTGVuZ3RoOiBVbml0aXplLmZlZXQoMCksXG4gICAgICAgICAgbnVtRXhjbHVkZWRTaG90czogMCxcbiAgICAgICAgICB0ZWFtOiBbJ1BldGVyIFF1aWNrJywgJ0NocmlzIEdlcmFjZScsICdQaGlsIE9kZW4nLCAnQ2hpcCBIb3BwZXInXSxcbiAgICAgICAgICBzaG90czogW1xuICAgICAgICAgICAgJ0ExMyBTSURFJyxcbiAgICAgICAgICAgICdCMS1CNScsXG4gICAgICAgICAgICAnQjIgU0lERScsXG4gICAgICAgICAgICAnQjMgU0lERScsXG4gICAgICAgICAgICAnQjYtQjE4JyxcbiAgICAgICAgICAgICdCMTcgU0lERScsXG4gICAgICAgICAgICAnQjE5LUIzOCcsXG4gICAgICAgICAgICAnQjMyIFNJREUnLFxuICAgICAgICAgICAgJ0JTMS1CUzUnLFxuICAgICAgICAgICAgJ0MxLUMxOCcsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSlcbiAgfSlcbn0pXG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsTUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsU0FBQSxHQUFBSCxPQUFBO0FBRUEsSUFBQUksZUFBUSxFQUFDLDBCQUEwQixFQUFFLFlBQVc7RUFDOUMsSUFBQUMsU0FBRSxFQUFDLFlBQVksRUFBRSxrQkFBaUI7SUFDaEMsTUFBTUMsTUFBTSxHQUFHLE1BQU0sSUFBQUMsK0JBQXdCLEVBQzNDUCxPQUFPLENBQUNRLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FDbEMsQ0FBQztJQUNELElBQUFDLFlBQU0sRUFBQ0gsTUFBTSxDQUFDLENBQUNJLEVBQUUsQ0FBQ0MsSUFBSSxDQUFDQyxLQUFLLENBQUM7TUFDM0JDLE1BQU0sRUFBRSxFQUFFO01BQ1ZDLGFBQWEsRUFBRSxDQUNiO1FBQ0VDLFVBQVUsRUFBRSxDQUFDO1FBQ2JDLFNBQVMsRUFBRSxDQUFDO1FBQ1pDLElBQUksRUFBRSxJQUFJQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDekJDLFdBQVcsRUFBRUMsaUJBQU8sQ0FBQ0MsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNoQ0MsUUFBUSxFQUFFLEVBQUU7UUFDWkMsSUFBSSxFQUNGLG1FQUFtRTtRQUNyRUMsY0FBYyxFQUFFSixpQkFBTyxDQUFDQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQy9CSSxnQkFBZ0IsRUFBRSxDQUFDO1FBQ25CQyxJQUFJLEVBQUUsQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDO1FBQ3BDQyxLQUFLLEVBQUUsQ0FDTCxJQUFJLEVBQ0osU0FBUyxFQUNULEtBQUssRUFDTCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFVBQVUsRUFDVixXQUFXLEVBQ1gsV0FBVyxFQUNYLFdBQVc7TUFFZixDQUFDLEVBQ0Q7UUFDRVosVUFBVSxFQUFFLENBQUM7UUFDYkMsU0FBUyxFQUFFLENBQUM7UUFDWkMsSUFBSSxFQUFFLElBQUlDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUN6QkMsV0FBVyxFQUFFQyxpQkFBTyxDQUFDQyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ2xDQyxRQUFRLEVBQUUsRUFBRTtRQUNaQyxJQUFJLEVBQUUseURBQXlEO1FBQy9EQyxjQUFjLEVBQUVKLGlCQUFPLENBQUNDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDL0JJLGdCQUFnQixFQUFFLENBQUM7UUFDbkJDLElBQUksRUFBRSxDQUNKLFdBQVcsRUFDWCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGFBQWEsRUFDYixZQUFZLENBQ2I7UUFDREMsS0FBSyxFQUFFLENBQUMsUUFBUTtNQUNsQixDQUFDLEVBQ0Q7UUFDRVosVUFBVSxFQUFFLENBQUM7UUFDYkMsU0FBUyxFQUFFLENBQUM7UUFDWkMsSUFBSSxFQUFFLElBQUlDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QkMsV0FBVyxFQUFFQyxpQkFBTyxDQUFDQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ2pDQyxRQUFRLEVBQUUsRUFBRTtRQUNaQyxJQUFJLEVBQUUsMkRBQTJEO1FBQ2pFQyxjQUFjLEVBQUVKLGlCQUFPLENBQUNDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDL0JJLGdCQUFnQixFQUFFLENBQUM7UUFDbkJDLElBQUksRUFBRSxDQUFDLGFBQWEsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLGFBQWEsQ0FBQztRQUNqRUMsS0FBSyxFQUFFLENBQ0wsVUFBVSxFQUNWLE9BQU8sRUFDUCxTQUFTLEVBQ1QsU0FBUyxFQUNULFFBQVEsRUFDUixVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDVixTQUFTLEVBQ1QsUUFBUTtNQUVaLENBQUM7SUFFTCxDQUFDLENBQUM7RUFDSixDQUFDLENBQUM7RUFDRixJQUFBdEIsU0FBRSxFQUFDLFlBQVksRUFBRSxrQkFBaUI7SUFDaEMsTUFBTUMsTUFBTSxHQUFHLE1BQU0sSUFBQUMsK0JBQXdCLEVBQzNDUCxPQUFPLENBQUNRLE9BQU8sQ0FBQyxvQkFBb0IsQ0FDdEMsQ0FBQztJQUNELElBQUFDLFlBQU0sRUFBQ0gsTUFBTSxDQUFDLENBQUNJLEVBQUUsQ0FBQ0MsSUFBSSxDQUFDQyxLQUFLLENBQUM7TUFDM0JDLE1BQU0sRUFBRSxFQUFFO01BQ1ZDLGFBQWEsRUFBRSxDQUNiO1FBQ0VDLFVBQVUsRUFBRSxDQUFDO1FBQ2JDLFNBQVMsRUFBRSxDQUFDO1FBQ1pDLElBQUksRUFBRSxJQUFJQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDekJDLFdBQVcsRUFBRUMsaUJBQU8sQ0FBQ0MsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNoQ0MsUUFBUSxFQUFFLEVBQUU7UUFDWkMsSUFBSSxFQUNGLG1FQUFtRTtRQUNyRUMsY0FBYyxFQUFFSixpQkFBTyxDQUFDQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQy9CSSxnQkFBZ0IsRUFBRSxDQUFDO1FBQ25CQyxJQUFJLEVBQUUsQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDO1FBQ3BDQyxLQUFLLEVBQUUsQ0FDTCxJQUFJLEVBQ0osU0FBUyxFQUNULEtBQUssRUFDTCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFVBQVUsRUFDVixXQUFXLEVBQ1gsV0FBVyxFQUNYLFdBQVc7TUFFZixDQUFDLEVBQ0RDLFNBQVMsRUFDVDtRQUNFYixVQUFVLEVBQUUsQ0FBQztRQUNiQyxTQUFTLEVBQUUsQ0FBQztRQUNaQyxJQUFJLEVBQUUsSUFBSUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hCQyxXQUFXLEVBQUVDLGlCQUFPLENBQUNDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDakNDLFFBQVEsRUFBRSxFQUFFO1FBQ1pDLElBQUksRUFBRSwyREFBMkQ7UUFDakVDLGNBQWMsRUFBRUosaUJBQU8sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMvQkksZ0JBQWdCLEVBQUUsQ0FBQztRQUNuQkMsSUFBSSxFQUFFLENBQUMsYUFBYSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsYUFBYSxDQUFDO1FBQ2pFQyxLQUFLLEVBQUUsQ0FDTCxVQUFVLEVBQ1YsT0FBTyxFQUNQLFNBQVMsRUFDVCxTQUFTLEVBQ1QsUUFBUSxFQUNSLFVBQVUsRUFDVixTQUFTLEVBQ1QsVUFBVSxFQUNWLFNBQVMsRUFDVCxRQUFRO01BRVosQ0FBQztJQUVMLENBQUMsQ0FBQztFQUNKLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyJ9
|
package/es/parseFrcsPlotFile.js
DELETED
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = parseFrcsPlotFile;
|
|
7
|
-
var _unitized = require("@speleotica/unitized");
|
|
8
|
-
var _parseSegment = require("parse-segment");
|
|
9
|
-
/**
|
|
10
|
-
* Parses data from a calculated survey file. These look like so:
|
|
11
|
-
<pre> 123.182259
|
|
12
|
-
AE20 1 1 0 0 0 153 -257 -51 85 0 20 1
|
|
13
|
-
AE19 1 2 653 402 -548 1046 -587 -174 97 0 200 1
|
|
14
|
-
AE18 2 3 669 449 -3002 995 94 -597 -56 250 0 1
|
|
15
|
-
AE17 3 4 539 1217 -2770 497 47 -298 -28 0 0 1
|
|
16
|
-
AE16 4 5 544 1230 -3441 411 -284 -246 170 60 10 1
|
|
17
|
-
AE15 5 6 1679 1663 -3833 0 0 -282 283 20 10 1
|
|
18
|
-
AE14 6 7 2026 2617 -3730 446 225 -446 -225 0 30 1
|
|
19
|
-
AE13 7 8 391 3152 -5788 -111 691 0 0 200 50 1
|
|
20
|
-
AE12 8 9 -1019 2175 -4630 -369 336 221 -201 40 40 1
|
|
21
|
-
AE11 9 10 -1516 1289 -3919 -348 195 610 -342 50 10 1</pre>
|
|
22
|
-
*/
|
|
23
|
-
async function parseFrcsPlotFile(file, lines) {
|
|
24
|
-
let totalLength = _unitized.Unitize.feet(NaN);
|
|
25
|
-
const shots = [];
|
|
26
|
-
const errors = [];
|
|
27
|
-
let lineNumber = 0;
|
|
28
|
-
const error = (message, line, startColumn, endColumn) => {
|
|
29
|
-
errors.push(new _parseSegment.SegmentParseError(message, new _parseSegment.Segment({
|
|
30
|
-
value: line,
|
|
31
|
-
source: file,
|
|
32
|
-
startLine: lineNumber - 1,
|
|
33
|
-
startCol: 0
|
|
34
|
-
}).substring(startColumn, endColumn)));
|
|
35
|
-
};
|
|
36
|
-
function parseUint(line, startColumn, endColumn, fieldName) {
|
|
37
|
-
const str = line.substring(startColumn, endColumn);
|
|
38
|
-
if (!/\S/.test(str)) {
|
|
39
|
-
error(`Missing ${fieldName}`, line, startColumn, endColumn);
|
|
40
|
-
return null;
|
|
41
|
-
}
|
|
42
|
-
if (!/^\s*\d+\s*$/.test(str)) {
|
|
43
|
-
error(`Invalid ${fieldName}`, line, startColumn, endColumn);
|
|
44
|
-
return null;
|
|
45
|
-
}
|
|
46
|
-
return parseInt(str);
|
|
47
|
-
}
|
|
48
|
-
function parseOptionalUint(line, startColumn, endColumn, fieldName) {
|
|
49
|
-
const str = line.substring(startColumn, endColumn);
|
|
50
|
-
if (!/\S/.test(str)) {
|
|
51
|
-
return null;
|
|
52
|
-
}
|
|
53
|
-
if (!/^\s*\d+\s*$/.test(str)) {
|
|
54
|
-
error(`Invalid ${fieldName}`, line, startColumn, endColumn);
|
|
55
|
-
return null;
|
|
56
|
-
}
|
|
57
|
-
return parseInt(str);
|
|
58
|
-
}
|
|
59
|
-
function parseLength(line, startColumn, endColumn, fieldName, divisor) {
|
|
60
|
-
const str = line.substring(startColumn, endColumn);
|
|
61
|
-
if (!/^\s*-?\d+\s*$/.test(str)) {
|
|
62
|
-
error(`Invalid ${fieldName}`, line, startColumn, endColumn);
|
|
63
|
-
return null;
|
|
64
|
-
}
|
|
65
|
-
const value = parseFloat(str);
|
|
66
|
-
if (isNaN(value)) {
|
|
67
|
-
error(`Missing ${fieldName}`, line, startColumn, endColumn);
|
|
68
|
-
return null;
|
|
69
|
-
}
|
|
70
|
-
return _unitized.Unitize.feet(value / divisor);
|
|
71
|
-
}
|
|
72
|
-
for await (const line of lines) {
|
|
73
|
-
lineNumber++;
|
|
74
|
-
if (lineNumber === 1) {
|
|
75
|
-
totalLength = _unitized.Unitize.feet(parseFloat(line));
|
|
76
|
-
continue;
|
|
77
|
-
}
|
|
78
|
-
if (!/\S/.test(line)) continue;
|
|
79
|
-
const toName = line.substring(0, 6).trim();
|
|
80
|
-
if (!toName) {
|
|
81
|
-
error('Invalid to station name', line, 0, 6);
|
|
82
|
-
continue;
|
|
83
|
-
}
|
|
84
|
-
if (/[^ S]/.test(line[6])) {
|
|
85
|
-
error('Invalid flag', line, 6, 7);
|
|
86
|
-
continue;
|
|
87
|
-
}
|
|
88
|
-
const isSurface = line[6] === 'S';
|
|
89
|
-
const fromNumber = parseUint(line, 7, 12, 'from station number');
|
|
90
|
-
if (fromNumber == null) continue;
|
|
91
|
-
const toNumber = parseUint(line, 12, 17, 'to station number');
|
|
92
|
-
if (toNumber == null) continue;
|
|
93
|
-
const easting = parseLength(line, 17, 25, 'easting', 100);
|
|
94
|
-
if (!easting) continue;
|
|
95
|
-
const northing = parseLength(line, 25, 33, 'northing', 100);
|
|
96
|
-
if (!northing) continue;
|
|
97
|
-
const elevation = parseLength(line, 33, 40, 'elevation', 100);
|
|
98
|
-
if (!elevation) continue;
|
|
99
|
-
const leftEasting = parseLength(line, 40, 46, 'left wall easting', 100);
|
|
100
|
-
if (!leftEasting) continue;
|
|
101
|
-
const leftNorthing = parseLength(line, 46, 52, 'left wall northing', 100);
|
|
102
|
-
if (!leftNorthing) continue;
|
|
103
|
-
const rightEasting = parseLength(line, 52, 58, 'right wall easting', 100);
|
|
104
|
-
if (!rightEasting) continue;
|
|
105
|
-
const rightNorthing = parseLength(line, 58, 64, 'right wall northing', 100);
|
|
106
|
-
if (!rightNorthing) continue;
|
|
107
|
-
const up = parseLength(line, 64, 68, 'up', 10);
|
|
108
|
-
if (!up) continue;
|
|
109
|
-
const down = parseLength(line, 68, 72, 'down', 10);
|
|
110
|
-
if (!down) continue;
|
|
111
|
-
const tripNumber = parseOptionalUint(line, 72, 78, 'trip number');
|
|
112
|
-
shots.push({
|
|
113
|
-
toName,
|
|
114
|
-
isSurface,
|
|
115
|
-
fromNumber,
|
|
116
|
-
toNumber,
|
|
117
|
-
easting,
|
|
118
|
-
northing,
|
|
119
|
-
elevation,
|
|
120
|
-
leftEasting,
|
|
121
|
-
leftNorthing,
|
|
122
|
-
rightEasting,
|
|
123
|
-
rightNorthing,
|
|
124
|
-
up,
|
|
125
|
-
down,
|
|
126
|
-
tripNumber
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
return {
|
|
130
|
-
totalLength,
|
|
131
|
-
shots,
|
|
132
|
-
errors
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdW5pdGl6ZWQiLCJyZXF1aXJlIiwiX3BhcnNlU2VnbWVudCIsInBhcnNlRnJjc1Bsb3RGaWxlIiwiZmlsZSIsImxpbmVzIiwidG90YWxMZW5ndGgiLCJVbml0aXplIiwiZmVldCIsIk5hTiIsInNob3RzIiwiZXJyb3JzIiwibGluZU51bWJlciIsImVycm9yIiwibWVzc2FnZSIsImxpbmUiLCJzdGFydENvbHVtbiIsImVuZENvbHVtbiIsInB1c2giLCJTZWdtZW50UGFyc2VFcnJvciIsIlNlZ21lbnQiLCJ2YWx1ZSIsInNvdXJjZSIsInN0YXJ0TGluZSIsInN0YXJ0Q29sIiwic3Vic3RyaW5nIiwicGFyc2VVaW50IiwiZmllbGROYW1lIiwic3RyIiwidGVzdCIsInBhcnNlSW50IiwicGFyc2VPcHRpb25hbFVpbnQiLCJwYXJzZUxlbmd0aCIsImRpdmlzb3IiLCJwYXJzZUZsb2F0IiwiaXNOYU4iLCJ0b05hbWUiLCJ0cmltIiwiaXNTdXJmYWNlIiwiZnJvbU51bWJlciIsInRvTnVtYmVyIiwiZWFzdGluZyIsIm5vcnRoaW5nIiwiZWxldmF0aW9uIiwibGVmdEVhc3RpbmciLCJsZWZ0Tm9ydGhpbmciLCJyaWdodEVhc3RpbmciLCJyaWdodE5vcnRoaW5nIiwidXAiLCJkb3duIiwidHJpcE51bWJlciJdLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJzZUZyY3NQbG90RmlsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGcmNzUGxvdFNob3QgfSBmcm9tICcuL0ZyY3NQbG90U2hvdCdcbmltcG9ydCB7IEZyY3NQbG90RmlsZSB9IGZyb20gJy4vRnJjc1Bsb3RGaWxlJ1xuaW1wb3J0IHsgTGVuZ3RoLCBVbml0aXplZE51bWJlciwgVW5pdGl6ZSB9IGZyb20gJ0BzcGVsZW90aWNhL3VuaXRpemVkJ1xuaW1wb3J0IHsgU2VnbWVudCwgU2VnbWVudFBhcnNlRXJyb3IgfSBmcm9tICdwYXJzZS1zZWdtZW50J1xuXG4vKipcbiAqIFBhcnNlcyBkYXRhIGZyb20gYSBjYWxjdWxhdGVkIHN1cnZleSBmaWxlLiAgVGhlc2UgbG9vayBsaWtlIHNvOlxuPHByZT4gIDEyMy4xODIyNTlcbiAgQUUyMCAgICAgMSAgICAxICAgICAgIDAgICAgICAgMCAgICAgIDAgICAxNTMgIC0yNTcgICAtNTEgICAgODUgICAwICAyMCAgICAgMVxuICBBRTE5ICAgICAxICAgIDIgICAgIDY1MyAgICAgNDAyICAgLTU0OCAgMTA0NiAgLTU4NyAgLTE3NCAgICA5NyAgIDAgMjAwICAgICAxXG4gIEFFMTggICAgIDIgICAgMyAgICAgNjY5ICAgICA0NDkgIC0zMDAyICAgOTk1ICAgIDk0ICAtNTk3ICAgLTU2IDI1MCAgIDAgICAgIDFcbiAgQUUxNyAgICAgMyAgICA0ICAgICA1MzkgICAgMTIxNyAgLTI3NzAgICA0OTcgICAgNDcgIC0yOTggICAtMjggICAwICAgMCAgICAgMVxuICBBRTE2ICAgICA0ICAgIDUgICAgIDU0NCAgICAxMjMwICAtMzQ0MSAgIDQxMSAgLTI4NCAgLTI0NiAgIDE3MCAgNjAgIDEwICAgICAxXG4gIEFFMTUgICAgIDUgICAgNiAgICAxNjc5ICAgIDE2NjMgIC0zODMzICAgICAwICAgICAwICAtMjgyICAgMjgzICAyMCAgMTAgICAgIDFcbiAgQUUxNCAgICAgNiAgICA3ICAgIDIwMjYgICAgMjYxNyAgLTM3MzAgICA0NDYgICAyMjUgIC00NDYgIC0yMjUgICAwICAzMCAgICAgMVxuICBBRTEzICAgICA3ICAgIDggICAgIDM5MSAgICAzMTUyICAtNTc4OCAgLTExMSAgIDY5MSAgICAgMCAgICAgMCAyMDAgIDUwICAgICAxXG4gIEFFMTIgICAgIDggICAgOSAgIC0xMDE5ICAgIDIxNzUgIC00NjMwICAtMzY5ICAgMzM2ICAgMjIxICAtMjAxICA0MCAgNDAgICAgIDFcbiAgQUUxMSAgICAgOSAgIDEwICAgLTE1MTYgICAgMTI4OSAgLTM5MTkgIC0zNDggICAxOTUgICA2MTAgIC0zNDIgIDUwICAxMCAgICAgMTwvcHJlPlxuICovXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBwYXJzZUZyY3NQbG90RmlsZShcbiAgZmlsZTogc3RyaW5nLFxuICBsaW5lczogQXN5bmNJdGVyYWJsZTxzdHJpbmc+XG4pOiBQcm9taXNlPEZyY3NQbG90RmlsZT4ge1xuICBsZXQgdG90YWxMZW5ndGg6IFVuaXRpemVkTnVtYmVyPExlbmd0aD4gPSBVbml0aXplLmZlZXQoTmFOKVxuICBjb25zdCBzaG90czogQXJyYXk8RnJjc1Bsb3RTaG90PiA9IFtdXG4gIGNvbnN0IGVycm9yczogQXJyYXk8U2VnbWVudFBhcnNlRXJyb3I+ID0gW11cblxuICBsZXQgbGluZU51bWJlciA9IDBcblxuICBjb25zdCBlcnJvciA9IChcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgbGluZTogc3RyaW5nLFxuICAgIHN0YXJ0Q29sdW1uOiBudW1iZXIsXG4gICAgZW5kQ29sdW1uOiBudW1iZXJcbiAgKTogdm9pZCA9PiB7XG4gICAgZXJyb3JzLnB1c2goXG4gICAgICBuZXcgU2VnbWVudFBhcnNlRXJyb3IoXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIG5ldyBTZWdtZW50KHtcbiAgICAgICAgICB2YWx1ZTogbGluZSxcbiAgICAgICAgICBzb3VyY2U6IGZpbGUsXG4gICAgICAgICAgc3RhcnRMaW5lOiBsaW5lTnVtYmVyIC0gMSxcbiAgICAgICAgICBzdGFydENvbDogMCxcbiAgICAgICAgfSkuc3Vic3RyaW5nKHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pXG4gICAgICApXG4gICAgKVxuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VVaW50KFxuICAgIGxpbmU6IHN0cmluZyxcbiAgICBzdGFydENvbHVtbjogbnVtYmVyLFxuICAgIGVuZENvbHVtbjogbnVtYmVyLFxuICAgIGZpZWxkTmFtZTogc3RyaW5nXG4gICk6IG51bWJlciB8IG51bGwge1xuICAgIGNvbnN0IHN0ciA9IGxpbmUuc3Vic3RyaW5nKHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pXG4gICAgaWYgKCEvXFxTLy50ZXN0KHN0cikpIHtcbiAgICAgIGVycm9yKGBNaXNzaW5nICR7ZmllbGROYW1lfWAsIGxpbmUsIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pXG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICBpZiAoIS9eXFxzKlxcZCtcXHMqJC8udGVzdChzdHIpKSB7XG4gICAgICBlcnJvcihgSW52YWxpZCAke2ZpZWxkTmFtZX1gLCBsaW5lLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uKVxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlSW50KHN0cilcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlT3B0aW9uYWxVaW50KFxuICAgIGxpbmU6IHN0cmluZyxcbiAgICBzdGFydENvbHVtbjogbnVtYmVyLFxuICAgIGVuZENvbHVtbjogbnVtYmVyLFxuICAgIGZpZWxkTmFtZTogc3RyaW5nXG4gICk6IG51bWJlciB8IG51bGwge1xuICAgIGNvbnN0IHN0ciA9IGxpbmUuc3Vic3RyaW5nKHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pXG4gICAgaWYgKCEvXFxTLy50ZXN0KHN0cikpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIGlmICghL15cXHMqXFxkK1xccyokLy50ZXN0KHN0cikpIHtcbiAgICAgIGVycm9yKGBJbnZhbGlkICR7ZmllbGROYW1lfWAsIGxpbmUsIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pXG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICByZXR1cm4gcGFyc2VJbnQoc3RyKVxuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VMZW5ndGgoXG4gICAgbGluZTogc3RyaW5nLFxuICAgIHN0YXJ0Q29sdW1uOiBudW1iZXIsXG4gICAgZW5kQ29sdW1uOiBudW1iZXIsXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXG4gICAgZGl2aXNvcjogbnVtYmVyXG4gICk6IFVuaXRpemVkTnVtYmVyPExlbmd0aD4gfCBudWxsIHtcbiAgICBjb25zdCBzdHIgPSBsaW5lLnN1YnN0cmluZyhzdGFydENvbHVtbiwgZW5kQ29sdW1uKVxuICAgIGlmICghL15cXHMqLT9cXGQrXFxzKiQvLnRlc3Qoc3RyKSkge1xuICAgICAgZXJyb3IoYEludmFsaWQgJHtmaWVsZE5hbWV9YCwgbGluZSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbilcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIGNvbnN0IHZhbHVlID0gcGFyc2VGbG9hdChzdHIpXG4gICAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgICAgZXJyb3IoYE1pc3NpbmcgJHtmaWVsZE5hbWV9YCwgbGluZSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbilcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiBVbml0aXplLmZlZXQodmFsdWUgLyBkaXZpc29yKVxuICB9XG5cbiAgZm9yIGF3YWl0IChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgbGluZU51bWJlcisrXG4gICAgaWYgKGxpbmVOdW1iZXIgPT09IDEpIHtcbiAgICAgIHRvdGFsTGVuZ3RoID0gVW5pdGl6ZS5mZWV0KHBhcnNlRmxvYXQobGluZSkpXG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBpZiAoIS9cXFMvLnRlc3QobGluZSkpIGNvbnRpbnVlXG4gICAgY29uc3QgdG9OYW1lID0gbGluZS5zdWJzdHJpbmcoMCwgNikudHJpbSgpXG4gICAgaWYgKCF0b05hbWUpIHtcbiAgICAgIGVycm9yKCdJbnZhbGlkIHRvIHN0YXRpb24gbmFtZScsIGxpbmUsIDAsIDYpXG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBpZiAoL1teIFNdLy50ZXN0KGxpbmVbNl0pKSB7XG4gICAgICBlcnJvcignSW52YWxpZCBmbGFnJywgbGluZSwgNiwgNylcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGNvbnN0IGlzU3VyZmFjZSA9IGxpbmVbNl0gPT09ICdTJ1xuICAgIGNvbnN0IGZyb21OdW1iZXIgPSBwYXJzZVVpbnQobGluZSwgNywgMTIsICdmcm9tIHN0YXRpb24gbnVtYmVyJylcbiAgICBpZiAoZnJvbU51bWJlciA9PSBudWxsKSBjb250aW51ZVxuICAgIGNvbnN0IHRvTnVtYmVyID0gcGFyc2VVaW50KGxpbmUsIDEyLCAxNywgJ3RvIHN0YXRpb24gbnVtYmVyJylcbiAgICBpZiAodG9OdW1iZXIgPT0gbnVsbCkgY29udGludWVcbiAgICBjb25zdCBlYXN0aW5nID0gcGFyc2VMZW5ndGgobGluZSwgMTcsIDI1LCAnZWFzdGluZycsIDEwMClcbiAgICBpZiAoIWVhc3RpbmcpIGNvbnRpbnVlXG4gICAgY29uc3Qgbm9ydGhpbmcgPSBwYXJzZUxlbmd0aChsaW5lLCAyNSwgMzMsICdub3J0aGluZycsIDEwMClcbiAgICBpZiAoIW5vcnRoaW5nKSBjb250aW51ZVxuICAgIGNvbnN0IGVsZXZhdGlvbiA9IHBhcnNlTGVuZ3RoKGxpbmUsIDMzLCA0MCwgJ2VsZXZhdGlvbicsIDEwMClcbiAgICBpZiAoIWVsZXZhdGlvbikgY29udGludWVcbiAgICBjb25zdCBsZWZ0RWFzdGluZyA9IHBhcnNlTGVuZ3RoKGxpbmUsIDQwLCA0NiwgJ2xlZnQgd2FsbCBlYXN0aW5nJywgMTAwKVxuICAgIGlmICghbGVmdEVhc3RpbmcpIGNvbnRpbnVlXG4gICAgY29uc3QgbGVmdE5vcnRoaW5nID0gcGFyc2VMZW5ndGgobGluZSwgNDYsIDUyLCAnbGVmdCB3YWxsIG5vcnRoaW5nJywgMTAwKVxuICAgIGlmICghbGVmdE5vcnRoaW5nKSBjb250aW51ZVxuICAgIGNvbnN0IHJpZ2h0RWFzdGluZyA9IHBhcnNlTGVuZ3RoKGxpbmUsIDUyLCA1OCwgJ3JpZ2h0IHdhbGwgZWFzdGluZycsIDEwMClcbiAgICBpZiAoIXJpZ2h0RWFzdGluZykgY29udGludWVcbiAgICBjb25zdCByaWdodE5vcnRoaW5nID0gcGFyc2VMZW5ndGgobGluZSwgNTgsIDY0LCAncmlnaHQgd2FsbCBub3J0aGluZycsIDEwMClcbiAgICBpZiAoIXJpZ2h0Tm9ydGhpbmcpIGNvbnRpbnVlXG4gICAgY29uc3QgdXAgPSBwYXJzZUxlbmd0aChsaW5lLCA2NCwgNjgsICd1cCcsIDEwKVxuICAgIGlmICghdXApIGNvbnRpbnVlXG4gICAgY29uc3QgZG93biA9IHBhcnNlTGVuZ3RoKGxpbmUsIDY4LCA3MiwgJ2Rvd24nLCAxMClcbiAgICBpZiAoIWRvd24pIGNvbnRpbnVlXG4gICAgY29uc3QgdHJpcE51bWJlciA9IHBhcnNlT3B0aW9uYWxVaW50KGxpbmUsIDcyLCA3OCwgJ3RyaXAgbnVtYmVyJylcblxuICAgIHNob3RzLnB1c2goe1xuICAgICAgdG9OYW1lLFxuICAgICAgaXNTdXJmYWNlLFxuICAgICAgZnJvbU51bWJlcixcbiAgICAgIHRvTnVtYmVyLFxuICAgICAgZWFzdGluZyxcbiAgICAgIG5vcnRoaW5nLFxuICAgICAgZWxldmF0aW9uLFxuICAgICAgbGVmdEVhc3RpbmcsXG4gICAgICBsZWZ0Tm9ydGhpbmcsXG4gICAgICByaWdodEVhc3RpbmcsXG4gICAgICByaWdodE5vcnRoaW5nLFxuICAgICAgdXAsXG4gICAgICBkb3duLFxuICAgICAgdHJpcE51bWJlcixcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0b3RhbExlbmd0aCxcbiAgICBzaG90cyxcbiAgICBlcnJvcnMsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsSUFBQUEsU0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsYUFBQSxHQUFBRCxPQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlLGVBQWVFLGlCQUFpQkEsQ0FDN0NDLElBQVksRUFDWkMsS0FBNEIsRUFDTDtFQUN2QixJQUFJQyxXQUFtQyxHQUFHQyxpQkFBTyxDQUFDQyxJQUFJLENBQUNDLEdBQUcsQ0FBQztFQUMzRCxNQUFNQyxLQUEwQixHQUFHLEVBQUU7RUFDckMsTUFBTUMsTUFBZ0MsR0FBRyxFQUFFO0VBRTNDLElBQUlDLFVBQVUsR0FBRyxDQUFDO0VBRWxCLE1BQU1DLEtBQUssR0FBR0EsQ0FDWkMs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
|