@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,646 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _mocha = require("mocha");
|
|
4
|
-
var _index = require("./index");
|
|
5
|
-
var _unitized = require("@speleotica/unitized");
|
|
6
|
-
var _chai = require("chai");
|
|
7
|
-
var _FrcsShot = require("../FrcsShot");
|
|
8
|
-
var _parseSegment = require("parse-segment");
|
|
9
|
-
const data = ` Fisher Ridge Cave System, Hart Co., KY
|
|
10
|
-
ENTRANCE DROPS, JOE'S "I LOVE MY WIFE TRAVERSE", TRICKY TRAVERSE
|
|
11
|
-
PETER QUICK, KEITH ORTIZ - 2-15-81
|
|
12
|
-
This File has Crumps test connected. 11/20/12
|
|
13
|
-
*
|
|
14
|
-
FT C DD A
|
|
15
|
-
AE20 0 1 3 0 2
|
|
16
|
-
* %FS
|
|
17
|
-
* AE20 0 0 0 Bug-can't put before so put after-so can't make 2 fixed 10/28/12
|
|
18
|
-
AE19 AE20 9.3 60.0 60.0-36.0 2 12 0 20
|
|
19
|
-
AE18 AE19 24.5 0.0 0.0-90.0 6 10 25 0
|
|
20
|
-
AE17 AE18 8.0 350.5 350.5 17.0 3 5 0 0
|
|
21
|
-
AE16 AE17 6.7 0.0 0.0-90.0 3 5 6 1
|
|
22
|
-
AE15 AE16 12.6 70.5 71.0-18.0 4 0 2 1
|
|
23
|
-
AE14 AE15 10.0 21.5 20.0 6.0 5 5 0 3
|
|
24
|
-
AE13 AE14 26.8 288.0 286.0-50.0 0 7 20 5
|
|
25
|
-
*
|
|
26
|
-
*SHORT CANYON AT THE BASE OF THE SECOND DROP
|
|
27
|
-
AE12 AE13 20.7 236.0 236.0 34.0 3 5 4 4
|
|
28
|
-
*
|
|
29
|
-
TRICKY TRAVERSE AND THEN FIRST SURVEY IN UPPER CROWLWAY
|
|
30
|
-
DAN CROWL, KEITH ORTIZ, CHIP HOPPER, PETER QUICK, LARRY BEAN 14 FEB 1981
|
|
31
|
-
*
|
|
32
|
-
FI B DD
|
|
33
|
-
*
|
|
34
|
-
* A1 2 7 3 4.5
|
|
35
|
-
*
|
|
36
|
-
* test comment after from station lrud
|
|
37
|
-
A2 A1 48 10 292.0 110.0-42.0 5 10 35 5
|
|
38
|
-
A3 A2 12 5 333.5 153.5 35.0 3 1 15 5
|
|
39
|
-
A4 A3 4 2 0.0 0.0 90.0 3 1 10 10
|
|
40
|
-
*
|
|
41
|
-
DOUG'S DEMISE (50 FT DROP), CHRIS CROSS, CRAWL ABOVE DROP
|
|
42
|
-
PETER QUICK, CHRIS GERACE, PHIL ODEN, CHIP HOPPER - 3-6-81
|
|
43
|
-
*
|
|
44
|
-
FT C DD
|
|
45
|
-
B31 B30 13.7 360.0 360.0 40.0 2 4 6 B30 8 3 5 1.2
|
|
46
|
-
B30sp B30 13.7 s 360.0 360.0 40.0 2 4 6
|
|
47
|
-
`;
|
|
48
|
-
(0, _mocha.describe)('parseFrcsSurveyFile', () => {
|
|
49
|
-
(0, _mocha.it)('basic test', async function () {
|
|
50
|
-
const parsed = await (0, _index.parseFrcsSurveyFile)('cdata.fr', data);
|
|
51
|
-
(0, _chai.expect)(parsed).to.deep.equal({
|
|
52
|
-
cave: 'Fisher Ridge Cave System',
|
|
53
|
-
errors: [],
|
|
54
|
-
location: 'Hart Co., KY',
|
|
55
|
-
trips: [{
|
|
56
|
-
header: {
|
|
57
|
-
name: 'ENTRANCE DROPS, JOE\'S "I LOVE MY WIFE TRAVERSE", TRICKY TRAVERSE',
|
|
58
|
-
comment: 'This File has Crumps test connected. 11/20/12',
|
|
59
|
-
section: undefined,
|
|
60
|
-
date: undefined,
|
|
61
|
-
team: undefined,
|
|
62
|
-
distanceUnit: _unitized.Length.feet,
|
|
63
|
-
azimuthUnit: _unitized.Angle.degrees,
|
|
64
|
-
inclinationUnit: _unitized.Angle.degrees,
|
|
65
|
-
backsightAzimuthCorrected: true,
|
|
66
|
-
backsightInclinationCorrected: false,
|
|
67
|
-
hasBacksightAzimuth: true,
|
|
68
|
-
hasBacksightInclination: false
|
|
69
|
-
},
|
|
70
|
-
shots: [{
|
|
71
|
-
backsightAzimuth: null,
|
|
72
|
-
backsightInclination: null,
|
|
73
|
-
comment: null,
|
|
74
|
-
distance: _unitized.Unitize.feet(0),
|
|
75
|
-
excludeDistance: true,
|
|
76
|
-
from: 'AE20',
|
|
77
|
-
frontsightAzimuth: null,
|
|
78
|
-
frontsightInclination: null,
|
|
79
|
-
kind: _FrcsShot.FrcsShotKind.Normal,
|
|
80
|
-
to: null,
|
|
81
|
-
fromLruds: {
|
|
82
|
-
left: _unitized.Unitize.feet(1),
|
|
83
|
-
right: _unitized.Unitize.feet(3),
|
|
84
|
-
up: _unitized.Unitize.feet(0),
|
|
85
|
-
down: _unitized.Unitize.feet(2)
|
|
86
|
-
}
|
|
87
|
-
}, {
|
|
88
|
-
from: 'AE20',
|
|
89
|
-
to: 'AE19',
|
|
90
|
-
kind: _FrcsShot.FrcsShotKind.Normal,
|
|
91
|
-
distance: _unitized.Unitize.feet(9.3),
|
|
92
|
-
frontsightAzimuth: _unitized.Unitize.degrees(60),
|
|
93
|
-
backsightAzimuth: _unitized.Unitize.degrees(60),
|
|
94
|
-
frontsightInclination: _unitized.Unitize.degrees(-36),
|
|
95
|
-
backsightInclination: null,
|
|
96
|
-
excludeDistance: false,
|
|
97
|
-
comment: "AE20 0 0 0 Bug-can't put before so put after-so can't make 2 fixed 10/28/12",
|
|
98
|
-
toLruds: {
|
|
99
|
-
left: _unitized.Unitize.feet(2),
|
|
100
|
-
right: _unitized.Unitize.feet(12),
|
|
101
|
-
up: _unitized.Unitize.feet(0),
|
|
102
|
-
down: _unitized.Unitize.feet(20)
|
|
103
|
-
}
|
|
104
|
-
}, {
|
|
105
|
-
from: 'AE19',
|
|
106
|
-
to: 'AE18',
|
|
107
|
-
kind: _FrcsShot.FrcsShotKind.Normal,
|
|
108
|
-
distance: _unitized.Unitize.feet(24.5),
|
|
109
|
-
frontsightAzimuth: _unitized.Unitize.degrees(0),
|
|
110
|
-
backsightAzimuth: _unitized.Unitize.degrees(0),
|
|
111
|
-
frontsightInclination: _unitized.Unitize.degrees(-90),
|
|
112
|
-
backsightInclination: null,
|
|
113
|
-
excludeDistance: false,
|
|
114
|
-
comment: null,
|
|
115
|
-
toLruds: {
|
|
116
|
-
left: _unitized.Unitize.feet(6),
|
|
117
|
-
right: _unitized.Unitize.feet(10),
|
|
118
|
-
up: _unitized.Unitize.feet(25),
|
|
119
|
-
down: _unitized.Unitize.feet(0)
|
|
120
|
-
}
|
|
121
|
-
}, {
|
|
122
|
-
from: 'AE18',
|
|
123
|
-
to: 'AE17',
|
|
124
|
-
kind: _FrcsShot.FrcsShotKind.Normal,
|
|
125
|
-
distance: _unitized.Unitize.feet(8),
|
|
126
|
-
frontsightAzimuth: _unitized.Unitize.degrees(350.5),
|
|
127
|
-
backsightAzimuth: _unitized.Unitize.degrees(350.5),
|
|
128
|
-
frontsightInclination: _unitized.Unitize.degrees(17),
|
|
129
|
-
backsightInclination: null,
|
|
130
|
-
excludeDistance: false,
|
|
131
|
-
comment: null,
|
|
132
|
-
toLruds: {
|
|
133
|
-
left: _unitized.Unitize.feet(3),
|
|
134
|
-
right: _unitized.Unitize.feet(5),
|
|
135
|
-
up: _unitized.Unitize.feet(0),
|
|
136
|
-
down: _unitized.Unitize.feet(0)
|
|
137
|
-
}
|
|
138
|
-
}, {
|
|
139
|
-
from: 'AE17',
|
|
140
|
-
to: 'AE16',
|
|
141
|
-
kind: _FrcsShot.FrcsShotKind.Normal,
|
|
142
|
-
distance: _unitized.Unitize.feet(6.7),
|
|
143
|
-
frontsightAzimuth: _unitized.Unitize.degrees(0),
|
|
144
|
-
backsightAzimuth: _unitized.Unitize.degrees(0),
|
|
145
|
-
frontsightInclination: _unitized.Unitize.degrees(-90),
|
|
146
|
-
backsightInclination: null,
|
|
147
|
-
excludeDistance: false,
|
|
148
|
-
comment: null,
|
|
149
|
-
toLruds: {
|
|
150
|
-
left: _unitized.Unitize.feet(3),
|
|
151
|
-
right: _unitized.Unitize.feet(5),
|
|
152
|
-
up: _unitized.Unitize.feet(6),
|
|
153
|
-
down: _unitized.Unitize.feet(1)
|
|
154
|
-
}
|
|
155
|
-
}, {
|
|
156
|
-
from: 'AE16',
|
|
157
|
-
to: 'AE15',
|
|
158
|
-
kind: _FrcsShot.FrcsShotKind.Normal,
|
|
159
|
-
distance: _unitized.Unitize.feet(12.6),
|
|
160
|
-
frontsightAzimuth: _unitized.Unitize.degrees(70.5),
|
|
161
|
-
backsightAzimuth: _unitized.Unitize.degrees(71),
|
|
162
|
-
frontsightInclination: _unitized.Unitize.degrees(-18),
|
|
163
|
-
backsightInclination: null,
|
|
164
|
-
excludeDistance: false,
|
|
165
|
-
comment: null,
|
|
166
|
-
toLruds: {
|
|
167
|
-
left: _unitized.Unitize.feet(4),
|
|
168
|
-
right: _unitized.Unitize.feet(0),
|
|
169
|
-
up: _unitized.Unitize.feet(2),
|
|
170
|
-
down: _unitized.Unitize.feet(1)
|
|
171
|
-
}
|
|
172
|
-
}, {
|
|
173
|
-
from: 'AE15',
|
|
174
|
-
to: 'AE14',
|
|
175
|
-
kind: _FrcsShot.FrcsShotKind.Normal,
|
|
176
|
-
distance: _unitized.Unitize.feet(10),
|
|
177
|
-
frontsightAzimuth: _unitized.Unitize.degrees(21.5),
|
|
178
|
-
backsightAzimuth: _unitized.Unitize.degrees(20),
|
|
179
|
-
frontsightInclination: _unitized.Unitize.degrees(6),
|
|
180
|
-
backsightInclination: null,
|
|
181
|
-
excludeDistance: false,
|
|
182
|
-
comment: null,
|
|
183
|
-
toLruds: {
|
|
184
|
-
left: _unitized.Unitize.feet(5),
|
|
185
|
-
right: _unitized.Unitize.feet(5),
|
|
186
|
-
up: _unitized.Unitize.feet(0),
|
|
187
|
-
down: _unitized.Unitize.feet(3)
|
|
188
|
-
}
|
|
189
|
-
}, {
|
|
190
|
-
from: 'AE14',
|
|
191
|
-
to: 'AE13',
|
|
192
|
-
kind: _FrcsShot.FrcsShotKind.Normal,
|
|
193
|
-
distance: _unitized.Unitize.feet(26.8),
|
|
194
|
-
frontsightAzimuth: _unitized.Unitize.degrees(288),
|
|
195
|
-
backsightAzimuth: _unitized.Unitize.degrees(286),
|
|
196
|
-
frontsightInclination: _unitized.Unitize.degrees(-50),
|
|
197
|
-
backsightInclination: null,
|
|
198
|
-
excludeDistance: false,
|
|
199
|
-
comment: null,
|
|
200
|
-
toLruds: {
|
|
201
|
-
left: _unitized.Unitize.feet(0),
|
|
202
|
-
right: _unitized.Unitize.feet(7),
|
|
203
|
-
up: _unitized.Unitize.feet(20),
|
|
204
|
-
down: _unitized.Unitize.feet(5)
|
|
205
|
-
}
|
|
206
|
-
}, {
|
|
207
|
-
from: 'AE13',
|
|
208
|
-
to: 'AE12',
|
|
209
|
-
kind: _FrcsShot.FrcsShotKind.Normal,
|
|
210
|
-
distance: _unitized.Unitize.feet(20.7),
|
|
211
|
-
frontsightAzimuth: _unitized.Unitize.degrees(236),
|
|
212
|
-
backsightAzimuth: _unitized.Unitize.degrees(236),
|
|
213
|
-
frontsightInclination: _unitized.Unitize.degrees(34),
|
|
214
|
-
backsightInclination: null,
|
|
215
|
-
excludeDistance: false,
|
|
216
|
-
comment: 'SHORT CANYON AT THE BASE OF THE SECOND DROP',
|
|
217
|
-
toLruds: {
|
|
218
|
-
left: _unitized.Unitize.feet(3),
|
|
219
|
-
right: _unitized.Unitize.feet(5),
|
|
220
|
-
up: _unitized.Unitize.feet(4),
|
|
221
|
-
down: _unitized.Unitize.feet(4)
|
|
222
|
-
}
|
|
223
|
-
}]
|
|
224
|
-
}, {
|
|
225
|
-
header: {
|
|
226
|
-
name: 'TRICKY TRAVERSE AND THEN FIRST SURVEY IN UPPER CROWLWAY',
|
|
227
|
-
comment: null,
|
|
228
|
-
section: undefined,
|
|
229
|
-
date: undefined,
|
|
230
|
-
team: undefined,
|
|
231
|
-
distanceUnit: _unitized.Length.inches,
|
|
232
|
-
azimuthUnit: _unitized.Angle.degrees,
|
|
233
|
-
inclinationUnit: _unitized.Angle.degrees,
|
|
234
|
-
backsightAzimuthCorrected: false,
|
|
235
|
-
backsightInclinationCorrected: false,
|
|
236
|
-
hasBacksightAzimuth: true,
|
|
237
|
-
hasBacksightInclination: false
|
|
238
|
-
},
|
|
239
|
-
shots: [{
|
|
240
|
-
from: 'A1',
|
|
241
|
-
to: 'A2',
|
|
242
|
-
kind: _FrcsShot.FrcsShotKind.Normal,
|
|
243
|
-
distance: _unitized.Unitize.inches(48 * 12 + 10),
|
|
244
|
-
frontsightAzimuth: _unitized.Unitize.degrees(292),
|
|
245
|
-
backsightAzimuth: _unitized.Unitize.degrees(110),
|
|
246
|
-
frontsightInclination: _unitized.Unitize.degrees(-42),
|
|
247
|
-
backsightInclination: null,
|
|
248
|
-
excludeDistance: false,
|
|
249
|
-
comment: 'test comment after from station lrud',
|
|
250
|
-
fromLruds: {
|
|
251
|
-
left: _unitized.Unitize.inches(2),
|
|
252
|
-
right: _unitized.Unitize.inches(7),
|
|
253
|
-
up: _unitized.Unitize.inches(3),
|
|
254
|
-
down: _unitized.Unitize.inches(4.5)
|
|
255
|
-
},
|
|
256
|
-
toLruds: {
|
|
257
|
-
left: _unitized.Unitize.feet(5),
|
|
258
|
-
right: _unitized.Unitize.feet(10),
|
|
259
|
-
up: _unitized.Unitize.feet(35),
|
|
260
|
-
down: _unitized.Unitize.feet(5)
|
|
261
|
-
}
|
|
262
|
-
}, {
|
|
263
|
-
from: 'A2',
|
|
264
|
-
to: 'A3',
|
|
265
|
-
kind: _FrcsShot.FrcsShotKind.Normal,
|
|
266
|
-
distance: _unitized.Unitize.inches(12 * 12 + 5),
|
|
267
|
-
frontsightAzimuth: _unitized.Unitize.degrees(333.5),
|
|
268
|
-
backsightAzimuth: _unitized.Unitize.degrees(153.5),
|
|
269
|
-
frontsightInclination: _unitized.Unitize.degrees(35),
|
|
270
|
-
backsightInclination: null,
|
|
271
|
-
excludeDistance: false,
|
|
272
|
-
comment: null,
|
|
273
|
-
toLruds: {
|
|
274
|
-
left: _unitized.Unitize.feet(3),
|
|
275
|
-
right: _unitized.Unitize.feet(1),
|
|
276
|
-
up: _unitized.Unitize.feet(15),
|
|
277
|
-
down: _unitized.Unitize.feet(5)
|
|
278
|
-
}
|
|
279
|
-
}, {
|
|
280
|
-
from: 'A3',
|
|
281
|
-
to: 'A4',
|
|
282
|
-
kind: _FrcsShot.FrcsShotKind.Normal,
|
|
283
|
-
distance: _unitized.Unitize.inches(4 * 12 + 2),
|
|
284
|
-
frontsightAzimuth: _unitized.Unitize.degrees(0),
|
|
285
|
-
backsightAzimuth: _unitized.Unitize.degrees(0),
|
|
286
|
-
frontsightInclination: _unitized.Unitize.degrees(90),
|
|
287
|
-
backsightInclination: null,
|
|
288
|
-
excludeDistance: false,
|
|
289
|
-
comment: null,
|
|
290
|
-
toLruds: {
|
|
291
|
-
left: _unitized.Unitize.feet(3),
|
|
292
|
-
right: _unitized.Unitize.feet(1),
|
|
293
|
-
up: _unitized.Unitize.feet(10),
|
|
294
|
-
down: _unitized.Unitize.feet(10)
|
|
295
|
-
}
|
|
296
|
-
}]
|
|
297
|
-
}, {
|
|
298
|
-
header: {
|
|
299
|
-
azimuthUnit: _unitized.Angle.degrees,
|
|
300
|
-
backsightAzimuthCorrected: true,
|
|
301
|
-
backsightInclinationCorrected: false,
|
|
302
|
-
comment: null,
|
|
303
|
-
date: undefined,
|
|
304
|
-
distanceUnit: _unitized.Length.feet,
|
|
305
|
-
hasBacksightAzimuth: true,
|
|
306
|
-
hasBacksightInclination: false,
|
|
307
|
-
inclinationUnit: _unitized.Angle.degrees,
|
|
308
|
-
name: "DOUG'S DEMISE (50 FT DROP), CHRIS CROSS, CRAWL ABOVE DROP",
|
|
309
|
-
section: undefined,
|
|
310
|
-
team: undefined
|
|
311
|
-
},
|
|
312
|
-
shots: [{
|
|
313
|
-
backsightAzimuth: _unitized.Unitize.degrees(0),
|
|
314
|
-
backsightInclination: null,
|
|
315
|
-
comment: null,
|
|
316
|
-
distance: _unitized.Unitize.feet(13.7),
|
|
317
|
-
excludeDistance: false,
|
|
318
|
-
from: 'B30',
|
|
319
|
-
frontsightAzimuth: _unitized.Unitize.degrees(0),
|
|
320
|
-
frontsightInclination: _unitized.Unitize.degrees(40),
|
|
321
|
-
kind: ' ',
|
|
322
|
-
to: 'B31',
|
|
323
|
-
fromLruds: {
|
|
324
|
-
left: _unitized.Unitize.feet(8),
|
|
325
|
-
right: _unitized.Unitize.feet(3),
|
|
326
|
-
up: _unitized.Unitize.feet(5),
|
|
327
|
-
down: _unitized.Unitize.feet(1.2)
|
|
328
|
-
},
|
|
329
|
-
toLruds: {
|
|
330
|
-
left: _unitized.Unitize.feet(2),
|
|
331
|
-
right: _unitized.Unitize.feet(4),
|
|
332
|
-
up: _unitized.Unitize.feet(6),
|
|
333
|
-
down: null
|
|
334
|
-
}
|
|
335
|
-
}, {
|
|
336
|
-
backsightAzimuth: _unitized.Unitize.degrees(0),
|
|
337
|
-
backsightInclination: null,
|
|
338
|
-
comment: null,
|
|
339
|
-
distance: _unitized.Unitize.feet(13.7),
|
|
340
|
-
excludeDistance: true,
|
|
341
|
-
isSplay: true,
|
|
342
|
-
from: 'B30',
|
|
343
|
-
frontsightAzimuth: _unitized.Unitize.degrees(0),
|
|
344
|
-
frontsightInclination: _unitized.Unitize.degrees(40),
|
|
345
|
-
kind: ' ',
|
|
346
|
-
to: 'B30sp',
|
|
347
|
-
toLruds: {
|
|
348
|
-
left: _unitized.Unitize.feet(2),
|
|
349
|
-
right: _unitized.Unitize.feet(4),
|
|
350
|
-
up: _unitized.Unitize.feet(6),
|
|
351
|
-
down: null
|
|
352
|
-
}
|
|
353
|
-
}]
|
|
354
|
-
}]
|
|
355
|
-
});
|
|
356
|
-
});
|
|
357
|
-
(0, _mocha.it)('horizontal shots', async function () {
|
|
358
|
-
const data = `blah
|
|
359
|
-
*
|
|
360
|
-
*
|
|
361
|
-
TEST
|
|
362
|
-
*
|
|
363
|
-
FT C DD
|
|
364
|
-
E22 E21 36.2H 338.5 340.0 1.0 12 2 15 15
|
|
365
|
-
`;
|
|
366
|
-
const parsed = await (0, _index.parseFrcsSurveyFile)('cdata.fr', data);
|
|
367
|
-
(0, _chai.expect)(parsed.trips[0].shots[0]).to.deep.equal({
|
|
368
|
-
from: 'E21',
|
|
369
|
-
to: 'E22',
|
|
370
|
-
kind: _FrcsShot.FrcsShotKind.Horizontal,
|
|
371
|
-
distance: _unitized.Unitize.feet(Math.sqrt(36.2 * 36.2 + 1)),
|
|
372
|
-
horizontalDistance: _unitized.Unitize.feet(36.2),
|
|
373
|
-
verticalDistance: _unitized.Unitize.feet(1),
|
|
374
|
-
frontsightAzimuth: _unitized.Unitize.degrees(338.5),
|
|
375
|
-
backsightAzimuth: _unitized.Unitize.degrees(340),
|
|
376
|
-
frontsightInclination: _unitized.Angle.atan2(1, 36.2),
|
|
377
|
-
backsightInclination: null,
|
|
378
|
-
excludeDistance: false,
|
|
379
|
-
comment: null,
|
|
380
|
-
toLruds: {
|
|
381
|
-
left: _unitized.Unitize.feet(12),
|
|
382
|
-
right: _unitized.Unitize.feet(2),
|
|
383
|
-
up: _unitized.Unitize.feet(15),
|
|
384
|
-
down: _unitized.Unitize.feet(15)
|
|
385
|
-
}
|
|
386
|
-
});
|
|
387
|
-
});
|
|
388
|
-
(0, _mocha.it)('horizontal feet and inches shots', async function () {
|
|
389
|
-
const data = `blah
|
|
390
|
-
*
|
|
391
|
-
*
|
|
392
|
-
TEST
|
|
393
|
-
*
|
|
394
|
-
FI C DD
|
|
395
|
-
A27 A26 16 9H 345.0 163.0 -1.0 0 3 5 4
|
|
396
|
-
`;
|
|
397
|
-
const parsed = await (0, _index.parseFrcsSurveyFile)('cdata.fr', data);
|
|
398
|
-
(0, _chai.expect)(parsed.trips[0].shots[0]).to.deep.equal({
|
|
399
|
-
from: 'A26',
|
|
400
|
-
to: 'A27',
|
|
401
|
-
kind: _FrcsShot.FrcsShotKind.Horizontal,
|
|
402
|
-
distance: _unitized.Unitize.feet(Math.sqrt(16.75 * 16.75 + 1)),
|
|
403
|
-
horizontalDistance: _unitized.Unitize.inches(16 * 12 + 9),
|
|
404
|
-
verticalDistance: _unitized.Unitize.feet(-1),
|
|
405
|
-
frontsightAzimuth: _unitized.Unitize.degrees(345),
|
|
406
|
-
backsightAzimuth: _unitized.Unitize.degrees(163),
|
|
407
|
-
frontsightInclination: _unitized.Angle.atan2(-1, 16.75),
|
|
408
|
-
backsightInclination: null,
|
|
409
|
-
excludeDistance: false,
|
|
410
|
-
comment: null,
|
|
411
|
-
toLruds: {
|
|
412
|
-
left: _unitized.Unitize.feet(0),
|
|
413
|
-
right: _unitized.Unitize.feet(3),
|
|
414
|
-
up: _unitized.Unitize.feet(5),
|
|
415
|
-
down: _unitized.Unitize.feet(4)
|
|
416
|
-
}
|
|
417
|
-
});
|
|
418
|
-
});
|
|
419
|
-
(0, _mocha.it)('diagonal shots', async function () {
|
|
420
|
-
const data = `blah
|
|
421
|
-
*
|
|
422
|
-
*
|
|
423
|
-
TEST
|
|
424
|
-
*
|
|
425
|
-
FT C DD
|
|
426
|
-
E37 E36 31.6D 231.0 232.0 2.0 3 10 20 32
|
|
427
|
-
`;
|
|
428
|
-
const parsed = await (0, _index.parseFrcsSurveyFile)('cdata.fr', data);
|
|
429
|
-
(0, _chai.expect)(parsed.trips[0].shots[0]).to.deep.equal({
|
|
430
|
-
from: 'E36',
|
|
431
|
-
to: 'E37',
|
|
432
|
-
kind: _FrcsShot.FrcsShotKind.Diagonal,
|
|
433
|
-
distance: _unitized.Unitize.feet(31.6),
|
|
434
|
-
verticalDistance: _unitized.Unitize.feet(2),
|
|
435
|
-
frontsightAzimuth: _unitized.Unitize.degrees(231),
|
|
436
|
-
backsightAzimuth: _unitized.Unitize.degrees(232),
|
|
437
|
-
frontsightInclination: _unitized.Angle.asin(2 / 31.6),
|
|
438
|
-
backsightInclination: null,
|
|
439
|
-
excludeDistance: false,
|
|
440
|
-
comment: null,
|
|
441
|
-
toLruds: {
|
|
442
|
-
left: _unitized.Unitize.feet(3),
|
|
443
|
-
right: _unitized.Unitize.feet(10),
|
|
444
|
-
up: _unitized.Unitize.feet(20),
|
|
445
|
-
down: _unitized.Unitize.feet(32)
|
|
446
|
-
}
|
|
447
|
-
});
|
|
448
|
-
});
|
|
449
|
-
(0, _mocha.it)('invalid distance unit', async function () {
|
|
450
|
-
const data = `blah
|
|
451
|
-
*
|
|
452
|
-
*
|
|
453
|
-
TEST
|
|
454
|
-
*
|
|
455
|
-
FJ C DD
|
|
456
|
-
`;
|
|
457
|
-
(0, _chai.expect)(await (0, _index.parseFrcsSurveyFile)('cdata.fr', data)).to.deep.equal({
|
|
458
|
-
cave: 'blah',
|
|
459
|
-
errors: [new _parseSegment.SegmentParseError('Invalid distance unit', new _parseSegment.Segment({
|
|
460
|
-
value: 'FJ C DD',
|
|
461
|
-
source: 'cdata.fr',
|
|
462
|
-
startLine: 5,
|
|
463
|
-
startCol: 0
|
|
464
|
-
}).substring(0, 2))],
|
|
465
|
-
location: null,
|
|
466
|
-
trips: [{
|
|
467
|
-
header: {
|
|
468
|
-
azimuthUnit: _unitized.Angle.degrees,
|
|
469
|
-
backsightAzimuthCorrected: true,
|
|
470
|
-
backsightInclinationCorrected: false,
|
|
471
|
-
comment: null,
|
|
472
|
-
date: undefined,
|
|
473
|
-
distanceUnit: _unitized.Length.feet,
|
|
474
|
-
hasBacksightAzimuth: true,
|
|
475
|
-
hasBacksightInclination: false,
|
|
476
|
-
inclinationUnit: _unitized.Angle.degrees,
|
|
477
|
-
name: 'TEST',
|
|
478
|
-
section: undefined,
|
|
479
|
-
team: undefined
|
|
480
|
-
},
|
|
481
|
-
shots: []
|
|
482
|
-
}]
|
|
483
|
-
});
|
|
484
|
-
});
|
|
485
|
-
(0, _mocha.it)('meters', async function () {
|
|
486
|
-
const data = `blah
|
|
487
|
-
*
|
|
488
|
-
*
|
|
489
|
-
TEST
|
|
490
|
-
*
|
|
491
|
-
MT CC DD
|
|
492
|
-
E37 E36 31.6 231.0 232.0 2.0 3.0 3 10 20 32
|
|
493
|
-
`;
|
|
494
|
-
(0, _chai.expect)(await (0, _index.parseFrcsSurveyFile)('cdata.fr', data)).to.deep.equal({
|
|
495
|
-
cave: 'blah',
|
|
496
|
-
errors: [],
|
|
497
|
-
location: null,
|
|
498
|
-
trips: [{
|
|
499
|
-
header: {
|
|
500
|
-
azimuthUnit: _unitized.Angle.degrees,
|
|
501
|
-
backsightAzimuthCorrected: true,
|
|
502
|
-
backsightInclinationCorrected: true,
|
|
503
|
-
comment: null,
|
|
504
|
-
date: undefined,
|
|
505
|
-
distanceUnit: _unitized.Length.meters,
|
|
506
|
-
hasBacksightAzimuth: true,
|
|
507
|
-
hasBacksightInclination: true,
|
|
508
|
-
inclinationUnit: _unitized.Angle.degrees,
|
|
509
|
-
name: 'TEST',
|
|
510
|
-
section: undefined,
|
|
511
|
-
team: undefined
|
|
512
|
-
},
|
|
513
|
-
shots: [{
|
|
514
|
-
from: 'E36',
|
|
515
|
-
to: 'E37',
|
|
516
|
-
kind: _FrcsShot.FrcsShotKind.Normal,
|
|
517
|
-
distance: _unitized.Unitize.meters(31.6),
|
|
518
|
-
frontsightAzimuth: _unitized.Unitize.degrees(231),
|
|
519
|
-
backsightAzimuth: _unitized.Unitize.degrees(232),
|
|
520
|
-
frontsightInclination: _unitized.Unitize.degrees(2),
|
|
521
|
-
backsightInclination: _unitized.Unitize.degrees(3),
|
|
522
|
-
excludeDistance: false,
|
|
523
|
-
comment: null,
|
|
524
|
-
toLruds: {
|
|
525
|
-
left: _unitized.Unitize.meters(3),
|
|
526
|
-
right: _unitized.Unitize.meters(10),
|
|
527
|
-
up: _unitized.Unitize.meters(20),
|
|
528
|
-
down: _unitized.Unitize.meters(32)
|
|
529
|
-
}
|
|
530
|
-
}]
|
|
531
|
-
}]
|
|
532
|
-
});
|
|
533
|
-
});
|
|
534
|
-
(0, _mocha.it)('exclude length', async function () {
|
|
535
|
-
const data = `blah
|
|
536
|
-
*
|
|
537
|
-
*
|
|
538
|
-
TEST
|
|
539
|
-
*
|
|
540
|
-
MT CC DD
|
|
541
|
-
E37 E36 31.6 * 231.0 232.0 2.0 3.0 3 10 20 32
|
|
542
|
-
`;
|
|
543
|
-
const parsed = await (0, _index.parseFrcsSurveyFile)('cdata.fr', data);
|
|
544
|
-
(0, _chai.expect)(parsed.trips[0].shots[0]).to.deep.equal({
|
|
545
|
-
from: 'E36',
|
|
546
|
-
to: 'E37',
|
|
547
|
-
kind: _FrcsShot.FrcsShotKind.Normal,
|
|
548
|
-
distance: _unitized.Unitize.meters(31.6),
|
|
549
|
-
frontsightAzimuth: _unitized.Unitize.degrees(231),
|
|
550
|
-
backsightAzimuth: _unitized.Unitize.degrees(232),
|
|
551
|
-
frontsightInclination: _unitized.Unitize.degrees(2),
|
|
552
|
-
backsightInclination: _unitized.Unitize.degrees(3),
|
|
553
|
-
excludeDistance: true,
|
|
554
|
-
comment: null,
|
|
555
|
-
toLruds: {
|
|
556
|
-
left: _unitized.Unitize.meters(3),
|
|
557
|
-
right: _unitized.Unitize.meters(10),
|
|
558
|
-
up: _unitized.Unitize.meters(20),
|
|
559
|
-
down: _unitized.Unitize.meters(32)
|
|
560
|
-
}
|
|
561
|
-
});
|
|
562
|
-
});
|
|
563
|
-
(0, _mocha.it)('negative LRUD', async function () {
|
|
564
|
-
const data = `blah
|
|
565
|
-
*
|
|
566
|
-
*
|
|
567
|
-
TEST
|
|
568
|
-
*
|
|
569
|
-
MT CC DD
|
|
570
|
-
E37 E36 31.6 231.0 232.0 2.0 3.0 -3 10 20 32
|
|
571
|
-
`;
|
|
572
|
-
const parsed = await (0, _index.parseFrcsSurveyFile)('cdata.fr', data);
|
|
573
|
-
(0, _chai.expect)(parsed.trips[0].shots[0]).to.deep.equal({
|
|
574
|
-
from: 'E36',
|
|
575
|
-
to: 'E37',
|
|
576
|
-
kind: _FrcsShot.FrcsShotKind.Normal,
|
|
577
|
-
distance: _unitized.Unitize.meters(31.6),
|
|
578
|
-
frontsightAzimuth: _unitized.Unitize.degrees(231),
|
|
579
|
-
backsightAzimuth: _unitized.Unitize.degrees(232),
|
|
580
|
-
frontsightInclination: _unitized.Unitize.degrees(2),
|
|
581
|
-
backsightInclination: _unitized.Unitize.degrees(3),
|
|
582
|
-
excludeDistance: false,
|
|
583
|
-
comment: null,
|
|
584
|
-
toLruds: {
|
|
585
|
-
left: null,
|
|
586
|
-
right: _unitized.Unitize.meters(10),
|
|
587
|
-
up: _unitized.Unitize.meters(20),
|
|
588
|
-
down: _unitized.Unitize.meters(32)
|
|
589
|
-
}
|
|
590
|
-
});
|
|
591
|
-
});
|
|
592
|
-
(0, _mocha.it)('- for no backsight', async function () {
|
|
593
|
-
const data = `blah
|
|
594
|
-
*
|
|
595
|
-
*
|
|
596
|
-
TEST
|
|
597
|
-
*
|
|
598
|
-
MT B- DD
|
|
599
|
-
`;
|
|
600
|
-
const parsed = await (0, _index.parseFrcsSurveyFile)('cdata.fr', data);
|
|
601
|
-
(0, _chai.expect)(parsed.trips[0].header).to.deep.equal({
|
|
602
|
-
name: 'TEST',
|
|
603
|
-
comment: null,
|
|
604
|
-
section: undefined,
|
|
605
|
-
date: undefined,
|
|
606
|
-
team: undefined,
|
|
607
|
-
distanceUnit: _unitized.Length.meters,
|
|
608
|
-
azimuthUnit: _unitized.Angle.degrees,
|
|
609
|
-
inclinationUnit: _unitized.Angle.degrees,
|
|
610
|
-
backsightAzimuthCorrected: false,
|
|
611
|
-
backsightInclinationCorrected: false,
|
|
612
|
-
hasBacksightAzimuth: true,
|
|
613
|
-
hasBacksightInclination: false
|
|
614
|
-
});
|
|
615
|
-
});
|
|
616
|
-
(0, _mocha.it)('missing both frontsight and backsight inclination', async function () {
|
|
617
|
-
const data = `blah
|
|
618
|
-
*
|
|
619
|
-
*
|
|
620
|
-
TEST
|
|
621
|
-
*
|
|
622
|
-
MT B- DD
|
|
623
|
-
E37 E36 31.6 231.0 232.0 -3 10 20 32
|
|
624
|
-
`;
|
|
625
|
-
const parsed = await (0, _index.parseFrcsSurveyFile)('cdata.fr', data);
|
|
626
|
-
(0, _chai.expect)(parsed.trips[0].shots[0]).to.deep.equal({
|
|
627
|
-
from: 'E36',
|
|
628
|
-
to: 'E37',
|
|
629
|
-
kind: _FrcsShot.FrcsShotKind.Normal,
|
|
630
|
-
distance: _unitized.Unitize.meters(31.6),
|
|
631
|
-
frontsightAzimuth: _unitized.Unitize.degrees(231),
|
|
632
|
-
backsightAzimuth: _unitized.Unitize.degrees(232),
|
|
633
|
-
frontsightInclination: _unitized.Unitize.degrees(0),
|
|
634
|
-
backsightInclination: null,
|
|
635
|
-
excludeDistance: false,
|
|
636
|
-
comment: null,
|
|
637
|
-
toLruds: {
|
|
638
|
-
left: null,
|
|
639
|
-
right: _unitized.Unitize.meters(10),
|
|
640
|
-
up: _unitized.Unitize.meters(20),
|
|
641
|
-
down: _unitized.Unitize.meters(32)
|
|
642
|
-
}
|
|
643
|
-
});
|
|
644
|
-
});
|
|
645
|
-
});
|
|
646
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9jaGEiLCJyZXF1aXJlIiwiX2luZGV4IiwiX3VuaXRpemVkIiwiX2NoYWkiLCJfRnJjc1Nob3QiLCJfcGFyc2VTZWdtZW50IiwiZGF0YSIsImRlc2NyaWJlIiwiaXQiLCJwYXJzZWQiLCJwYXJzZUZyY3NTdXJ2ZXlGaWxlIiwiZXhwZWN0IiwidG8iLCJkZWVwIiwiZXF1YWwiLCJjYXZlIiwiZXJyb3JzIiwibG9jYXRpb24iLCJ0cmlwcyIsImhlYWRlciIsIm5hbWUiLCJjb21tZW50Iiwic2VjdGlvbiIsInVuZGVmaW5lZCIsImRhdGUiLCJ0ZWFtIiwiZGlzdGFuY2VVbml0IiwiTGVuZ3RoIiwiZmVldCIsImF6aW11dGhVbml0IiwiQW5nbGUiLCJkZWdyZWVzIiwiaW5jbGluYXRpb25Vbml0IiwiYmFja3NpZ2h0QXppbXV0aENvcnJlY3RlZCIsImJhY2tzaWdodEluY2xpbmF0aW9uQ29ycmVjdGVkIiwiaGFzQmFja3NpZ2h0QXppbXV0aCIsImhhc0JhY2tzaWdodEluY2xpbmF0aW9uIiwic2hvdHMiLCJiYWNrc2lnaHRBemltdXRoIiwiYmFja3NpZ2h0SW5jbGluYXRpb24iLCJkaXN0YW5jZSIsIlVuaXRpemUiLCJleGNsdWRlRGlzdGFuY2UiLCJmcm9tIiwiZnJvbnRzaWdodEF6aW11dGgiLCJmcm9udHNpZ2h0SW5jbGluYXRpb24iLCJraW5kIiwiRnJjc1Nob3RLaW5kIiwiTm9ybWFsIiwiZnJvbUxydWRzIiwibGVmdCIsInJpZ2h0IiwidXAiLCJkb3duIiwidG9McnVkcyIsImluY2hlcyIsImlzU3BsYXkiLCJIb3Jpem9udGFsIiwiTWF0aCIsInNxcnQiLCJob3Jpem9udGFsRGlzdGFuY2UiLCJ2ZXJ0aWNhbERpc3RhbmNlIiwiYXRhbjIiLCJEaWFnb25hbCIsImFzaW4iLCJTZWdtZW50UGFyc2VFcnJvciIsIlNlZ21lbnQiLCJ2YWx1ZSIsInNvdXJjZSIsInN0YXJ0TGluZSIsInN0YXJ0Q29sIiwic3Vic3RyaW5nIiwibWV0ZXJzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmluZy9wYXJzZUZyY3NTdXJ2ZXlGaWxlLnNwZWMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVzY3JpYmUsIGl0IH0gZnJvbSAnbW9jaGEnXG5pbXBvcnQgeyBwYXJzZUZyY3NTdXJ2ZXlGaWxlIH0gZnJvbSAnLi9pbmRleCdcbmltcG9ydCB7IExlbmd0aCwgQW5nbGUsIFVuaXRpemUgfSBmcm9tICdAc3BlbGVvdGljYS91bml0aXplZCdcbmltcG9ydCB7IGV4cGVjdCB9IGZyb20gJ2NoYWknXG5pbXBvcnQgeyBGcmNzU2hvdEtpbmQgfSBmcm9tICcuLi9GcmNzU2hvdCdcbmltcG9ydCB7IFNlZ21lbnRQYXJzZUVycm9yLCBTZWdtZW50IH0gZnJvbSAncGFyc2Utc2VnbWVudCdcblxuY29uc3QgZGF0YSA9IGAgICAgICBGaXNoZXIgUmlkZ2UgQ2F2ZSBTeXN0ZW0sIEhhcnQgQ28uLCBLWVxuRU5UUkFOQ0UgRFJPUFMsIEpPRSdTIFwiSSBMT1ZFIE1ZIFdJRkUgVFJBVkVSU0VcIiwgVFJJQ0tZIFRSQVZFUlNFXG5QRVRFUiBRVUlDSywgS0VJVEggT1JUSVogICAtICAyLTE1LTgxXG5UaGlzIEZpbGUgaGFzIENydW1wcyB0ZXN0IGNvbm5lY3RlZC4gIDExLzIwLzEyXG4gKlxuRlQgQyAgREQgICAgQVxuICAgICAgQUUyMCAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgMSAgMyAgMCAgMlxuKiAgICAgICVGU1xuKiAgICAgQUUyMCAgICAgMCAgICAgICAgMCAgICAgICAgMCAgICAgICAgQnVnLWNhbid0IHB1dCBiZWZvcmUgc28gcHV0IGFmdGVyLXNvIGNhbid0IG1ha2UgMiBmaXhlZCAxMC8yOC8xMlxuIEFFMTkgQUUyMCAgIDkuMyAgICA2MC4wICA2MC4wLTM2LjAgICAgICAgMiAxMiAgMCAyMFxuIEFFMTggQUUxOSAgMjQuNSAgICAgMC4wICAgMC4wLTkwLjAgICAgICAgNiAxMCAyNSAgMFxuIEFFMTcgQUUxOCAgIDguMCAgIDM1MC41IDM1MC41IDE3LjAgICAgICAgMyAgNSAgMCAgMFxuIEFFMTYgQUUxNyAgIDYuNyAgICAgMC4wICAgMC4wLTkwLjAgICAgICAgMyAgNSAgNiAgMVxuIEFFMTUgQUUxNiAgMTIuNiAgICA3MC41ICA3MS4wLTE4LjAgICAgICAgNCAgMCAgMiAgMVxuIEFFMTQgQUUxNSAgMTAuMCAgICAyMS41ICAyMC4wICA2LjAgICAgICAgNSAgNSAgMCAgM1xuIEFFMTMgQUUxNCAgMjYuOCAgIDI4OC4wIDI4Ni4wLTUwLjAgICAgICAgMCAgNyAyMCAgNVxuKlxuKlNIT1JUIENBTllPTiBBVCBUSEUgQkFTRSBPRiBUSEUgU0VDT05EIERST1BcbiBBRTEyIEFFMTMgIDIwLjcgICAyMzYuMCAyMzYuMCAzNC4wICAgICAgIDMgIDUgIDQgIDRcbiAqXG5UUklDS1kgVFJBVkVSU0UgQU5EIFRIRU4gRklSU1QgU1VSVkVZIElOIFVQUEVSIENST1dMV0FZXG5EQU4gQ1JPV0wsIEtFSVRIIE9SVElaLCBDSElQIEhPUFBFUiwgUEVURVIgUVVJQ0ssIExBUlJZIEJFQU4gICAgMTQgRkVCIDE5ODFcbiAqXG5GSSBCICBERFxuKlxuKiAgIEExICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgIDcgMyA0LjVcbipcbiogdGVzdCBjb21tZW50IGFmdGVyIGZyb20gc3RhdGlvbiBscnVkXG4gICBBMiAgIEExICA0OCAxMCAgMjkyLjAgMTEwLjAtNDIuMCAgICAgICA1IDEwIDM1ICA1XG4gICBBMyAgIEEyICAxMiAgNSAgMzMzLjUgMTUzLjUgMzUuMCAgICAgICAzICAxIDE1ICA1XG4gICBBNCAgIEEzICAgNCAgMiAgICAwLjAgICAwLjAgOTAuMCAgICAgICAzICAxIDEwIDEwXG4gKlxuRE9VRydTIERFTUlTRSAoNTAgRlQgRFJPUCksIENIUklTIENST1NTLCBDUkFXTCBBQk9WRSBEUk9QXG5QRVRFUiBRVUlDSywgQ0hSSVMgR0VSQUNFLCBQSElMIE9ERU4sIENISVAgSE9QUEVSIC0gMy02LTgxXG4gKlxuRlQgQyAgRERcbiAgQjMxICBCMzAgIDEzLjcgICAzNjAuMCAzNjAuMCA0MC4wICAgICAgIDIgIDQgIDYgICAgICAgQjMwIDggMyA1IDEuMlxuQjMwc3AgIEIzMCAgMTMuNyBzIDM2MC4wIDM2MC4wIDQwLjAgICAgICAgMiAgNCAgNiAgXG5gXG5cbmRlc2NyaWJlKCdwYXJzZUZyY3NTdXJ2ZXlGaWxlJywgKCkgPT4ge1xuICBpdCgnYmFzaWMgdGVzdCcsIGFzeW5jIGZ1bmN0aW9uKCkge1xuICAgIGNvbnN0IHBhcnNlZCA9IGF3YWl0IHBhcnNlRnJjc1N1cnZleUZpbGUoJ2NkYXRhLmZyJywgZGF0YSlcbiAgICBleHBlY3QocGFyc2VkKS50by5kZWVwLmVxdWFsKHtcbiAgICAgIGNhdmU6ICdGaXNoZXIgUmlkZ2UgQ2F2ZSBTeXN0ZW0nLFxuICAgICAgZXJyb3JzOiBbXSxcbiAgICAgIGxvY2F0aW9uOiAnSGFydCBDby4sIEtZJyxcbiAgICAgIHRyaXBzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXI6IHtcbiAgICAgICAgICAgIG5hbWU6XG4gICAgICAgICAgICAgICdFTlRSQU5DRSBEUk9QUywgSk9FXFwnUyBcIkkgTE9WRSBNWSBXSUZFIFRSQVZFUlNFXCIsIFRSSUNLWSBUUkFWRVJTRScsXG4gICAgICAgICAgICBjb21tZW50OiAnVGhpcyBGaWxlIGhhcyBDcnVtcHMgdGVzdCBjb25uZWN0ZWQuICAxMS8yMC8xMicsXG4gICAgICAgICAgICBzZWN0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBkYXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB0ZWFtOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBkaXN0YW5jZVVuaXQ6IExlbmd0aC5mZWV0LFxuICAgICAgICAgICAgYXppbXV0aFVuaXQ6IEFuZ2xlLmRlZ3JlZXMsXG4gICAgICAgICAgICBpbmNsaW5hdGlvblVuaXQ6IEFuZ2xlLmRlZ3JlZXMsXG4gICAgICAgICAgICBiYWNrc2lnaHRBemltdXRoQ29ycmVjdGVkOiB0cnVlLFxuICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb25Db3JyZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgaGFzQmFja3NpZ2h0QXppbXV0aDogdHJ1ZSxcbiAgICAgICAgICAgIGhhc0JhY2tzaWdodEluY2xpbmF0aW9uOiBmYWxzZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNob3RzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGJhY2tzaWdodEF6aW11dGg6IG51bGwsXG4gICAgICAgICAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uOiBudWxsLFxuICAgICAgICAgICAgICBjb21tZW50OiBudWxsLFxuICAgICAgICAgICAgICBkaXN0YW5jZTogVW5pdGl6ZS5mZWV0KDApLFxuICAgICAgICAgICAgICBleGNsdWRlRGlzdGFuY2U6IHRydWUsXG4gICAgICAgICAgICAgIGZyb206ICdBRTIwJyxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEF6aW11dGg6IG51bGwsXG4gICAgICAgICAgICAgIGZyb250c2lnaHRJbmNsaW5hdGlvbjogbnVsbCxcbiAgICAgICAgICAgICAga2luZDogRnJjc1Nob3RLaW5kLk5vcm1hbCxcbiAgICAgICAgICAgICAgdG86IG51bGwsXG5cbiAgICAgICAgICAgICAgZnJvbUxydWRzOiB7XG4gICAgICAgICAgICAgICAgbGVmdDogVW5pdGl6ZS5mZWV0KDEpLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBVbml0aXplLmZlZXQoMyksXG4gICAgICAgICAgICAgICAgdXA6IFVuaXRpemUuZmVldCgwKSxcbiAgICAgICAgICAgICAgICBkb3duOiBVbml0aXplLmZlZXQoMiksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBmcm9tOiAnQUUyMCcsXG4gICAgICAgICAgICAgIHRvOiAnQUUxOScsXG4gICAgICAgICAgICAgIGtpbmQ6IEZyY3NTaG90S2luZC5Ob3JtYWwsXG4gICAgICAgICAgICAgIGRpc3RhbmNlOiBVbml0aXplLmZlZXQoOS4zKSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcyg2MCksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcyg2MCksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZS5kZWdyZWVzKC0zNiksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uOiBudWxsLFxuICAgICAgICAgICAgICBleGNsdWRlRGlzdGFuY2U6IGZhbHNlLFxuICAgICAgICAgICAgICBjb21tZW50OlxuICAgICAgICAgICAgICAgIFwiQUUyMCAgICAgMCAgICAgICAgMCAgICAgICAgMCAgICAgICAgQnVnLWNhbid0IHB1dCBiZWZvcmUgc28gcHV0IGFmdGVyLXNvIGNhbid0IG1ha2UgMiBmaXhlZCAxMC8yOC8xMlwiLFxuXG4gICAgICAgICAgICAgIHRvTHJ1ZHM6IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiBVbml0aXplLmZlZXQoMiksXG4gICAgICAgICAgICAgICAgcmlnaHQ6IFVuaXRpemUuZmVldCgxMiksXG4gICAgICAgICAgICAgICAgdXA6IFVuaXRpemUuZmVldCgwKSxcbiAgICAgICAgICAgICAgICBkb3duOiBVbml0aXplLmZlZXQoMjApLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZnJvbTogJ0FFMTknLFxuICAgICAgICAgICAgICB0bzogJ0FFMTgnLFxuICAgICAgICAgICAgICBraW5kOiBGcmNzU2hvdEtpbmQuTm9ybWFsLFxuICAgICAgICAgICAgICBkaXN0YW5jZTogVW5pdGl6ZS5mZWV0KDI0LjUpLFxuICAgICAgICAgICAgICBmcm9udHNpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDApLFxuICAgICAgICAgICAgICBiYWNrc2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMCksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZS5kZWdyZWVzKC05MCksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uOiBudWxsLFxuICAgICAgICAgICAgICBleGNsdWRlRGlzdGFuY2U6IGZhbHNlLFxuICAgICAgICAgICAgICBjb21tZW50OiBudWxsLFxuXG4gICAgICAgICAgICAgIHRvTHJ1ZHM6IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiBVbml0aXplLmZlZXQoNiksXG4gICAgICAgICAgICAgICAgcmlnaHQ6IFVuaXRpemUuZmVldCgxMCksXG4gICAgICAgICAgICAgICAgdXA6IFVuaXRpemUuZmVldCgyNSksXG4gICAgICAgICAgICAgICAgZG93bjogVW5pdGl6ZS5mZWV0KDApLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZnJvbTogJ0FFMTgnLFxuICAgICAgICAgICAgICB0bzogJ0FFMTcnLFxuICAgICAgICAgICAgICBraW5kOiBGcmNzU2hvdEtpbmQuTm9ybWFsLFxuICAgICAgICAgICAgICBkaXN0YW5jZTogVW5pdGl6ZS5mZWV0KDgpLFxuICAgICAgICAgICAgICBmcm9udHNpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDM1MC41KSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDM1MC41KSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBVbml0aXplLmRlZ3JlZXMoMTcpLFxuICAgICAgICAgICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbjogbnVsbCxcbiAgICAgICAgICAgICAgZXhjbHVkZURpc3RhbmNlOiBmYWxzZSxcbiAgICAgICAgICAgICAgY29tbWVudDogbnVsbCxcblxuICAgICAgICAgICAgICB0b0xydWRzOiB7XG4gICAgICAgICAgICAgICAgbGVmdDogVW5pdGl6ZS5mZWV0KDMpLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBVbml0aXplLmZlZXQoNSksXG4gICAgICAgICAgICAgICAgdXA6IFVuaXRpemUuZmVldCgwKSxcbiAgICAgICAgICAgICAgICBkb3duOiBVbml0aXplLmZlZXQoMCksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBmcm9tOiAnQUUxNycsXG4gICAgICAgICAgICAgIHRvOiAnQUUxNicsXG4gICAgICAgICAgICAgIGtpbmQ6IEZyY3NTaG90S2luZC5Ob3JtYWwsXG4gICAgICAgICAgICAgIGRpc3RhbmNlOiBVbml0aXplLmZlZXQoNi43KSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygwKSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDApLFxuICAgICAgICAgICAgICBmcm9udHNpZ2h0SW5jbGluYXRpb246IFVuaXRpemUuZGVncmVlcygtOTApLFxuICAgICAgICAgICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbjogbnVsbCxcbiAgICAgICAgICAgICAgZXhjbHVkZURpc3RhbmNlOiBmYWxzZSxcbiAgICAgICAgICAgICAgY29tbWVudDogbnVsbCxcblxuICAgICAgICAgICAgICB0b0xydWRzOiB7XG4gICAgICAgICAgICAgICAgbGVmdDogVW5pdGl6ZS5mZWV0KDMpLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBVbml0aXplLmZlZXQoNSksXG4gICAgICAgICAgICAgICAgdXA6IFVuaXRpemUuZmVldCg2KSxcbiAgICAgICAgICAgICAgICBkb3duOiBVbml0aXplLmZlZXQoMSksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBmcm9tOiAnQUUxNicsXG4gICAgICAgICAgICAgIHRvOiAnQUUxNScsXG4gICAgICAgICAgICAgIGtpbmQ6IEZyY3NTaG90S2luZC5Ob3JtYWwsXG4gICAgICAgICAgICAgIGRpc3RhbmNlOiBVbml0aXplLmZlZXQoMTIuNiksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoNzAuNSksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcyg3MSksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZS5kZWdyZWVzKC0xOCksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uOiBudWxsLFxuICAgICAgICAgICAgICBleGNsdWRlRGlzdGFuY2U6IGZhbHNlLFxuICAgICAgICAgICAgICBjb21tZW50OiBudWxsLFxuXG4gICAgICAgICAgICAgIHRvTHJ1ZHM6IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiBVbml0aXplLmZlZXQoNCksXG4gICAgICAgICAgICAgICAgcmlnaHQ6IFVuaXRpemUuZmVldCgwKSxcbiAgICAgICAgICAgICAgICB1cDogVW5pdGl6ZS5mZWV0KDIpLFxuICAgICAgICAgICAgICAgIGRvd246IFVuaXRpemUuZmVldCgxKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGZyb206ICdBRTE1JyxcbiAgICAgICAgICAgICAgdG86ICdBRTE0JyxcbiAgICAgICAgICAgICAga2luZDogRnJjc1Nob3RLaW5kLk5vcm1hbCxcbiAgICAgICAgICAgICAgZGlzdGFuY2U6IFVuaXRpemUuZmVldCgxMCksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMjEuNSksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygyMCksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZS5kZWdyZWVzKDYpLFxuICAgICAgICAgICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbjogbnVsbCxcbiAgICAgICAgICAgICAgZXhjbHVkZURpc3RhbmNlOiBmYWxzZSxcbiAgICAgICAgICAgICAgY29tbWVudDogbnVsbCxcblxuICAgICAgICAgICAgICB0b0xydWRzOiB7XG4gICAgICAgICAgICAgICAgbGVmdDogVW5pdGl6ZS5mZWV0KDUpLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBVbml0aXplLmZlZXQoNSksXG4gICAgICAgICAgICAgICAgdXA6IFVuaXRpemUuZmVldCgwKSxcbiAgICAgICAgICAgICAgICBkb3duOiBVbml0aXplLmZlZXQoMyksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBmcm9tOiAnQUUxNCcsXG4gICAgICAgICAgICAgIHRvOiAnQUUxMycsXG4gICAgICAgICAgICAgIGtpbmQ6IEZyY3NTaG90S2luZC5Ob3JtYWwsXG4gICAgICAgICAgICAgIGRpc3RhbmNlOiBVbml0aXplLmZlZXQoMjYuOCksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMjg4KSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDI4NiksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZS5kZWdyZWVzKC01MCksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uOiBudWxsLFxuICAgICAgICAgICAgICBleGNsdWRlRGlzdGFuY2U6IGZhbHNlLFxuICAgICAgICAgICAgICBjb21tZW50OiBudWxsLFxuXG4gICAgICAgICAgICAgIHRvTHJ1ZHM6IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiBVbml0aXplLmZlZXQoMCksXG4gICAgICAgICAgICAgICAgcmlnaHQ6IFVuaXRpemUuZmVldCg3KSxcbiAgICAgICAgICAgICAgICB1cDogVW5pdGl6ZS5mZWV0KDIwKSxcbiAgICAgICAgICAgICAgICBkb3duOiBVbml0aXplLmZlZXQoNSksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBmcm9tOiAnQUUxMycsXG4gICAgICAgICAgICAgIHRvOiAnQUUxMicsXG4gICAgICAgICAgICAgIGtpbmQ6IEZyY3NTaG90S2luZC5Ob3JtYWwsXG4gICAgICAgICAgICAgIGRpc3RhbmNlOiBVbml0aXplLmZlZXQoMjAuNyksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMjM2KSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDIzNiksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZS5kZWdyZWVzKDM0KSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IG51bGwsXG4gICAgICAgICAgICAgIGV4Y2x1ZGVEaXN0YW5jZTogZmFsc2UsXG4gICAgICAgICAgICAgIGNvbW1lbnQ6ICdTSE9SVCBDQU5ZT04gQVQgVEhFIEJBU0UgT0YgVEhFIFNFQ09ORCBEUk9QJyxcblxuICAgICAgICAgICAgICB0b0xydWRzOiB7XG4gICAgICAgICAgICAgICAgbGVmdDogVW5pdGl6ZS5mZWV0KDMpLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBVbml0aXplLmZlZXQoNSksXG4gICAgICAgICAgICAgICAgdXA6IFVuaXRpemUuZmVldCg0KSxcbiAgICAgICAgICAgICAgICBkb3duOiBVbml0aXplLmZlZXQoNCksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXI6IHtcbiAgICAgICAgICAgIG5hbWU6ICdUUklDS1kgVFJBVkVSU0UgQU5EIFRIRU4gRklSU1QgU1VSVkVZIElOIFVQUEVSIENST1dMV0FZJyxcbiAgICAgICAgICAgIGNvbW1lbnQ6IG51bGwsXG4gICAgICAgICAgICBzZWN0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBkYXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB0ZWFtOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBkaXN0YW5jZVVuaXQ6IExlbmd0aC5pbmNoZXMsXG4gICAgICAgICAgICBhemltdXRoVW5pdDogQW5nbGUuZGVncmVlcyxcbiAgICAgICAgICAgIGluY2xpbmF0aW9uVW5pdDogQW5nbGUuZGVncmVlcyxcbiAgICAgICAgICAgIGJhY2tzaWdodEF6aW11dGhDb3JyZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb25Db3JyZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgaGFzQmFja3NpZ2h0QXppbXV0aDogdHJ1ZSxcbiAgICAgICAgICAgIGhhc0JhY2tzaWdodEluY2xpbmF0aW9uOiBmYWxzZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNob3RzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGZyb206ICdBMScsXG4gICAgICAgICAgICAgIHRvOiAnQTInLFxuICAgICAgICAgICAgICBraW5kOiBGcmNzU2hvdEtpbmQuTm9ybWFsLFxuICAgICAgICAgICAgICBkaXN0YW5jZTogVW5pdGl6ZS5pbmNoZXMoNDggKiAxMiArIDEwKSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygyOTIpLFxuICAgICAgICAgICAgICBiYWNrc2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMTEwKSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBVbml0aXplLmRlZ3JlZXMoLTQyKSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IG51bGwsXG4gICAgICAgICAgICAgIGV4Y2x1ZGVEaXN0YW5jZTogZmFsc2UsXG4gICAgICAgICAgICAgIGNvbW1lbnQ6ICd0ZXN0IGNvbW1lbnQgYWZ0ZXIgZnJvbSBzdGF0aW9uIGxydWQnLFxuICAgICAgICAgICAgICBmcm9tTHJ1ZHM6IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiBVbml0aXplLmluY2hlcygyKSxcbiAgICAgICAgICAgICAgICByaWdodDogVW5pdGl6ZS5pbmNoZXMoNyksXG4gICAgICAgICAgICAgICAgdXA6IFVuaXRpemUuaW5jaGVzKDMpLFxuICAgICAgICAgICAgICAgIGRvd246IFVuaXRpemUuaW5jaGVzKDQuNSksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHRvTHJ1ZHM6IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiBVbml0aXplLmZlZXQoNSksXG4gICAgICAgICAgICAgICAgcmlnaHQ6IFVuaXRpemUuZmVldCgxMCksXG4gICAgICAgICAgICAgICAgdXA6IFVuaXRpemUuZmVldCgzNSksXG4gICAgICAgICAgICAgICAgZG93bjogVW5pdGl6ZS5mZWV0KDUpLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZnJvbTogJ0EyJyxcbiAgICAgICAgICAgICAgdG86ICdBMycsXG4gICAgICAgICAgICAgIGtpbmQ6IEZyY3NTaG90S2luZC5Ob3JtYWwsXG4gICAgICAgICAgICAgIGRpc3RhbmNlOiBVbml0aXplLmluY2hlcygxMiAqIDEyICsgNSksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMzMzLjUpLFxuICAgICAgICAgICAgICBiYWNrc2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMTUzLjUpLFxuICAgICAgICAgICAgICBmcm9udHNpZ2h0SW5jbGluYXRpb246IFVuaXRpemUuZGVncmVlcygzNSksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uOiBudWxsLFxuICAgICAgICAgICAgICBleGNsdWRlRGlzdGFuY2U6IGZhbHNlLFxuICAgICAgICAgICAgICBjb21tZW50OiBudWxsLFxuXG4gICAgICAgICAgICAgIHRvTHJ1ZHM6IHtcbiAgICAgICAgICAgICAgICBsZWZ0OiBVbml0aXplLmZlZXQoMyksXG4gICAgICAgICAgICAgICAgcmlnaHQ6IFVuaXRpemUuZmVldCgxKSxcbiAgICAgICAgICAgICAgICB1cDogVW5pdGl6ZS5mZWV0KDE1KSxcbiAgICAgICAgICAgICAgICBkb3duOiBVbml0aXplLmZlZXQoNSksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBmcm9tOiAnQTMnLFxuICAgICAgICAgICAgICB0bzogJ0E0JyxcbiAgICAgICAgICAgICAga2luZDogRnJjc1Nob3RLaW5kLk5vcm1hbCxcbiAgICAgICAgICAgICAgZGlzdGFuY2U6IFVuaXRpemUuaW5jaGVzKDQgKiAxMiArIDIpLFxuICAgICAgICAgICAgICBmcm9udHNpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDApLFxuICAgICAgICAgICAgICBiYWNrc2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMCksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZS5kZWdyZWVzKDkwKSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IG51bGwsXG4gICAgICAgICAgICAgIGV4Y2x1ZGVEaXN0YW5jZTogZmFsc2UsXG4gICAgICAgICAgICAgIGNvbW1lbnQ6IG51bGwsXG5cbiAgICAgICAgICAgICAgdG9McnVkczoge1xuICAgICAgICAgICAgICAgIGxlZnQ6IFVuaXRpemUuZmVldCgzKSxcbiAgICAgICAgICAgICAgICByaWdodDogVW5pdGl6ZS5mZWV0KDEpLFxuICAgICAgICAgICAgICAgIHVwOiBVbml0aXplLmZlZXQoMTApLFxuICAgICAgICAgICAgICAgIGRvd246IFVuaXRpemUuZmVldCgxMCksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXI6IHtcbiAgICAgICAgICAgIGF6aW11dGhVbml0OiBBbmdsZS5kZWdyZWVzLFxuICAgICAgICAgICAgYmFja3NpZ2h0QXppbXV0aENvcnJlY3RlZDogdHJ1ZSxcbiAgICAgICAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uQ29ycmVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbW1lbnQ6IG51bGwsXG4gICAgICAgICAgICBkYXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBkaXN0YW5jZVVuaXQ6IExlbmd0aC5mZWV0LFxuICAgICAgICAgICAgaGFzQmFja3NpZ2h0QXppbXV0aDogdHJ1ZSxcbiAgICAgICAgICAgIGhhc0JhY2tzaWdodEluY2xpbmF0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgIGluY2xpbmF0aW9uVW5pdDogQW5nbGUuZGVncmVlcyxcbiAgICAgICAgICAgIG5hbWU6IFwiRE9VRydTIERFTUlTRSAoNTAgRlQgRFJPUCksIENIUklTIENST1NTLCBDUkFXTCBBQk9WRSBEUk9QXCIsXG4gICAgICAgICAgICBzZWN0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB0ZWFtOiB1bmRlZmluZWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzaG90czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBiYWNrc2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMCksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uOiBudWxsLFxuICAgICAgICAgICAgICBjb21tZW50OiBudWxsLFxuICAgICAgICAgICAgICBkaXN0YW5jZTogVW5pdGl6ZS5mZWV0KDEzLjcpLFxuICAgICAgICAgICAgICBleGNsdWRlRGlzdGFuY2U6IGZhbHNlLFxuICAgICAgICAgICAgICBmcm9tOiAnQjMwJyxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygwKSxcbiAgICAgICAgICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBVbml0aXplLmRlZ3JlZXMoNDApLFxuICAgICAgICAgICAgICBraW5kOiAnICcsXG4gICAgICAgICAgICAgIHRvOiAnQjMxJyxcbiAgICAgICAgICAgICAgZnJvbUxydWRzOiB7XG4gICAgICAgICAgICAgICAgbGVmdDogVW5pdGl6ZS5mZWV0KDgpLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBVbml0aXplLmZlZXQoMyksXG4gICAgICAgICAgICAgICAgdXA6IFVuaXRpemUuZmVldCg1KSxcbiAgICAgICAgICAgICAgICBkb3duOiBVbml0aXplLmZlZXQoMS4yKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdG9McnVkczoge1xuICAgICAgICAgICAgICAgIGxlZnQ6IFVuaXRpemUuZmVldCgyKSxcbiAgICAgICAgICAgICAgICByaWdodDogVW5pdGl6ZS5mZWV0KDQpLFxuICAgICAgICAgICAgICAgIHVwOiBVbml0aXplLmZlZXQoNiksXG4gICAgICAgICAgICAgICAgZG93bjogbnVsbCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGJhY2tzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygwKSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IG51bGwsXG4gICAgICAgICAgICAgIGNvbW1lbnQ6IG51bGwsXG4gICAgICAgICAgICAgIGRpc3RhbmNlOiBVbml0aXplLmZlZXQoMTMuNyksXG4gICAgICAgICAgICAgIGV4Y2x1ZGVEaXN0YW5jZTogdHJ1ZSxcbiAgICAgICAgICAgICAgaXNTcGxheTogdHJ1ZSxcbiAgICAgICAgICAgICAgZnJvbTogJ0IzMCcsXG4gICAgICAgICAgICAgIGZyb250c2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMCksXG4gICAgICAgICAgICAgIGZyb250c2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZS5kZWdyZWVzKDQwKSxcbiAgICAgICAgICAgICAga2luZDogJyAnLFxuICAgICAgICAgICAgICB0bzogJ0IzMHNwJyxcbiAgICAgICAgICAgICAgdG9McnVkczoge1xuICAgICAgICAgICAgICAgIGxlZnQ6IFVuaXRpemUuZmVldCgyKSxcbiAgICAgICAgICAgICAgICByaWdodDogVW5pdGl6ZS5mZWV0KDQpLFxuICAgICAgICAgICAgICAgIHVwOiBVbml0aXplLmZlZXQoNiksXG4gICAgICAgICAgICAgICAgZG93bjogbnVsbCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSlcbiAgfSlcbiAgaXQoJ2hvcml6b250YWwgc2hvdHMnLCBhc3luYyBmdW5jdGlvbigpIHtcbiAgICBjb25zdCBkYXRhID0gYGJsYWhcbiAqXG4gKlxuVEVTVFxuICpcbkZUIEMgIEREXG4gIEUyMiAgRTIxICAzNi4ySCAgMzM4LjUgMzQwLjAgIDEuMCAgICAgIDEyICAyIDE1IDE1XG5gXG4gICAgY29uc3QgcGFyc2VkID0gYXdhaXQgcGFyc2VGcmNzU3VydmV5RmlsZSgnY2RhdGEuZnInLCBkYXRhKVxuICAgIGV4cGVjdChwYXJzZWQudHJpcHNbMF0uc2hvdHNbMF0pLnRvLmRlZXAuZXF1YWwoe1xuICAgICAgZnJvbTogJ0UyMScsXG4gICAgICB0bzogJ0UyMicsXG4gICAgICBraW5kOiBGcmNzU2hvdEtpbmQuSG9yaXpvbnRhbCxcbiAgICAgIGRpc3RhbmNlOiBVbml0aXplLmZlZXQoTWF0aC5zcXJ0KDM2LjIgKiAzNi4yICsgMSkpLFxuICAgICAgaG9yaXpvbnRhbERpc3RhbmNlOiBVbml0aXplLmZlZXQoMzYuMiksXG4gICAgICB2ZXJ0aWNhbERpc3RhbmNlOiBVbml0aXplLmZlZXQoMSksXG4gICAgICBmcm9udHNpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDMzOC41KSxcbiAgICAgIGJhY2tzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygzNDApLFxuICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBBbmdsZS5hdGFuMigxLCAzNi4yKSxcbiAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uOiBudWxsLFxuICAgICAgZXhjbHVkZURpc3RhbmNlOiBmYWxzZSxcbiAgICAgIGNvbW1lbnQ6IG51bGwsXG5cbiAgICAgIHRvTHJ1ZHM6IHtcbiAgICAgICAgbGVmdDogVW5pdGl6ZS5mZWV0KDEyKSxcbiAgICAgICAgcmlnaHQ6IFVuaXRpemUuZmVldCgyKSxcbiAgICAgICAgdXA6IFVuaXRpemUuZmVldCgxNSksXG4gICAgICAgIGRvd246IFVuaXRpemUuZmVldCgxNSksXG4gICAgICB9LFxuICAgIH0pXG4gIH0pXG4gIGl0KCdob3Jpem9udGFsIGZlZXQgYW5kIGluY2hlcyBzaG90cycsIGFzeW5jIGZ1bmN0aW9uKCkge1xuICAgIGNvbnN0IGRhdGEgPSBgYmxhaFxuICpcbiAqXG5URVNUXG4gKlxuRkkgQyAgRERcbiAgQTI3ICBBMjYgIDE2ICA5SCAzNDUuMCAxNjMuMCAtMS4wICAgICAgIDAgIDMgIDUgIDRcbmBcbiAgICBjb25zdCBwYXJzZWQgPSBhd2FpdCBwYXJzZUZyY3NTdXJ2ZXlGaWxlKCdjZGF0YS5mcicsIGRhdGEpXG4gICAgZXhwZWN0KHBhcnNlZC50cmlwc1swXS5zaG90c1swXSkudG8uZGVlcC5lcXVhbCh7XG4gICAgICBmcm9tOiAnQTI2JyxcbiAgICAgIHRvOiAnQTI3JyxcbiAgICAgIGtpbmQ6IEZyY3NTaG90S2luZC5Ib3Jpem9udGFsLFxuICAgICAgZGlzdGFuY2U6IFVuaXRpemUuZmVldChNYXRoLnNxcnQoMTYuNzUgKiAxNi43NSArIDEpKSxcbiAgICAgIGhvcml6b250YWxEaXN0YW5jZTogVW5pdGl6ZS5pbmNoZXMoMTYgKiAxMiArIDkpLFxuICAgICAgdmVydGljYWxEaXN0YW5jZTogVW5pdGl6ZS5mZWV0KC0xKSxcbiAgICAgIGZyb250c2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMzQ1KSxcbiAgICAgIGJhY2tzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygxNjMpLFxuICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBBbmdsZS5hdGFuMigtMSwgMTYuNzUpLFxuICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IG51bGwsXG4gICAgICBleGNsdWRlRGlzdGFuY2U6IGZhbHNlLFxuICAgICAgY29tbWVudDogbnVsbCxcblxuICAgICAgdG9McnVkczoge1xuICAgICAgICBsZWZ0OiBVbml0aXplLmZlZXQoMCksXG4gICAgICAgIHJpZ2h0OiBVbml0aXplLmZlZXQoMyksXG4gICAgICAgIHVwOiBVbml0aXplLmZlZXQoNSksXG4gICAgICAgIGRvd246IFVuaXRpemUuZmVldCg0KSxcbiAgICAgIH0sXG4gICAgfSlcbiAgfSlcbiAgaXQoJ2RpYWdvbmFsIHNob3RzJywgYXN5bmMgZnVuY3Rpb24oKSB7XG4gICAgY29uc3QgZGF0YSA9IGBibGFoXG4gKlxuICpcblRFU1RcbiAqXG5GVCBDICBERFxuICBFMzcgIEUzNiAgMzEuNkQgIDIzMS4wIDIzMi4wICAyLjAgICAgICAgMyAxMCAyMCAzMlxuYFxuICAgIGNvbnN0IHBhcnNlZCA9IGF3YWl0IHBhcnNlRnJjc1N1cnZleUZpbGUoJ2NkYXRhLmZyJywgZGF0YSlcbiAgICBleHBlY3QocGFyc2VkLnRyaXBzWzBdLnNob3RzWzBdKS50by5kZWVwLmVxdWFsKHtcbiAgICAgIGZyb206ICdFMzYnLFxuICAgICAgdG86ICdFMzcnLFxuICAgICAga2luZDogRnJjc1Nob3RLaW5kLkRpYWdvbmFsLFxuICAgICAgZGlzdGFuY2U6IFVuaXRpemUuZmVldCgzMS42KSxcbiAgICAgIHZlcnRpY2FsRGlzdGFuY2U6IFVuaXRpemUuZmVldCgyKSxcbiAgICAgIGZyb250c2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMjMxKSxcbiAgICAgIGJhY2tzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygyMzIpLFxuICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBBbmdsZS5hc2luKDIgLyAzMS42KSxcbiAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uOiBudWxsLFxuICAgICAgZXhjbHVkZURpc3RhbmNlOiBmYWxzZSxcbiAgICAgIGNvbW1lbnQ6IG51bGwsXG5cbiAgICAgIHRvTHJ1ZHM6IHtcbiAgICAgICAgbGVmdDogVW5pdGl6ZS5mZWV0KDMpLFxuICAgICAgICByaWdodDogVW5pdGl6ZS5mZWV0KDEwKSxcbiAgICAgICAgdXA6IFVuaXRpemUuZmVldCgyMCksXG4gICAgICAgIGRvd246IFVuaXRpemUuZmVldCgzMiksXG4gICAgICB9LFxuICAgIH0pXG4gIH0pXG4gIGl0KCdpbnZhbGlkIGRpc3RhbmNlIHVuaXQnLCBhc3luYyBmdW5jdGlvbigpIHtcbiAgICBjb25zdCBkYXRhID0gYGJsYWhcbiAqXG4gKlxuVEVTVFxuICogXG5GSiBDICBERFxuYFxuICAgIGV4cGVjdChhd2FpdCBwYXJzZUZyY3NTdXJ2ZXlGaWxlKCdjZGF0YS5mcicsIGRhdGEpKS50by5kZWVwLmVxdWFsKHtcbiAgICAgIGNhdmU6ICdibGFoJyxcbiAgICAgIGVycm9yczogW1xuICAgICAgICBuZXcgU2VnbWVudFBhcnNlRXJyb3IoXG4gICAgICAgICAgJ0ludmFsaWQgZGlzdGFuY2UgdW5pdCcsXG4gICAgICAgICAgbmV3IFNlZ21lbnQoe1xuICAgICAgICAgICAgdmFsdWU6ICdGSiBDICBERCcsXG4gICAgICAgICAgICBzb3VyY2U6ICdjZGF0YS5mcicsXG4gICAgICAgICAgICBzdGFydExpbmU6IDUsXG4gICAgICAgICAgICBzdGFydENvbDogMCxcbiAgICAgICAgICB9KS5zdWJzdHJpbmcoMCwgMilcbiAgICAgICAgKSxcbiAgICAgIF0sXG4gICAgICBsb2NhdGlvbjogbnVsbCxcbiAgICAgIHRyaXBzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXI6IHtcbiAgICAgICAgICAgIGF6aW11dGhVbml0OiBBbmdsZS5kZWdyZWVzLFxuICAgICAgICAgICAgYmFja3NpZ2h0QXppbXV0aENvcnJlY3RlZDogdHJ1ZSxcbiAgICAgICAgICAgIGJhY2tzaWdodEluY2xpbmF0aW9uQ29ycmVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbW1lbnQ6IG51bGwsXG4gICAgICAgICAgICBkYXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBkaXN0YW5jZVVuaXQ6IExlbmd0aC5mZWV0LFxuICAgICAgICAgICAgaGFzQmFja3NpZ2h0QXppbXV0aDogdHJ1ZSxcbiAgICAgICAgICAgIGhhc0JhY2tzaWdodEluY2xpbmF0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgIGluY2xpbmF0aW9uVW5pdDogQW5nbGUuZGVncmVlcyxcbiAgICAgICAgICAgIG5hbWU6ICdURVNUJyxcbiAgICAgICAgICAgIHNlY3Rpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHRlYW06IHVuZGVmaW5lZCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNob3RzOiBbXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSlcbiAgfSlcbiAgaXQoJ21ldGVycycsIGFzeW5jIGZ1bmN0aW9uKCkge1xuICAgIGNvbnN0IGRhdGEgPSBgYmxhaFxuICpcbiAqXG5URVNUXG4gKiBcbk1UIENDIEREXG4gIEUzNyAgRTM2ICAzMS42ICAgMjMxLjAgMjMyLjAgIDIuMCAgMy4wICAzIDEwIDIwIDMyXG5gXG4gICAgZXhwZWN0KGF3YWl0IHBhcnNlRnJjc1N1cnZleUZpbGUoJ2NkYXRhLmZyJywgZGF0YSkpLnRvLmRlZXAuZXF1YWwoe1xuICAgICAgY2F2ZTogJ2JsYWgnLFxuICAgICAgZXJyb3JzOiBbXSxcbiAgICAgIGxvY2F0aW9uOiBudWxsLFxuICAgICAgdHJpcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcjoge1xuICAgICAgICAgICAgYXppbXV0aFVuaXQ6IEFuZ2xlLmRlZ3JlZXMsXG4gICAgICAgICAgICBiYWNrc2lnaHRBemltdXRoQ29ycmVjdGVkOiB0cnVlLFxuICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb25Db3JyZWN0ZWQ6IHRydWUsXG4gICAgICAgICAgICBjb21tZW50OiBudWxsLFxuICAgICAgICAgICAgZGF0ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgZGlzdGFuY2VVbml0OiBMZW5ndGgubWV0ZXJzLFxuICAgICAgICAgICAgaGFzQmFja3NpZ2h0QXppbXV0aDogdHJ1ZSxcbiAgICAgICAgICAgIGhhc0JhY2tzaWdodEluY2xpbmF0aW9uOiB0cnVlLFxuICAgICAgICAgICAgaW5jbGluYXRpb25Vbml0OiBBbmdsZS5kZWdyZWVzLFxuICAgICAgICAgICAgbmFtZTogJ1RFU1QnLFxuICAgICAgICAgICAgc2VjdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgdGVhbTogdW5kZWZpbmVkLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2hvdHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZnJvbTogJ0UzNicsXG4gICAgICAgICAgICAgIHRvOiAnRTM3JyxcbiAgICAgICAgICAgICAga2luZDogRnJjc1Nob3RLaW5kLk5vcm1hbCxcbiAgICAgICAgICAgICAgZGlzdGFuY2U6IFVuaXRpemUubWV0ZXJzKDMxLjYpLFxuICAgICAgICAgICAgICBmcm9udHNpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDIzMSksXG4gICAgICAgICAgICAgIGJhY2tzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygyMzIpLFxuICAgICAgICAgICAgICBmcm9udHNpZ2h0SW5jbGluYXRpb246IFVuaXRpemUuZGVncmVlcygyKSxcbiAgICAgICAgICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IFVuaXRpemUuZGVncmVlcygzKSxcbiAgICAgICAgICAgICAgZXhjbHVkZURpc3RhbmNlOiBmYWxzZSxcbiAgICAgICAgICAgICAgY29tbWVudDogbnVsbCxcblxuICAgICAgICAgICAgICB0b0xydWRzOiB7XG4gICAgICAgICAgICAgICAgbGVmdDogVW5pdGl6ZS5tZXRlcnMoMyksXG4gICAgICAgICAgICAgICAgcmlnaHQ6IFVuaXRpemUubWV0ZXJzKDEwKSxcbiAgICAgICAgICAgICAgICB1cDogVW5pdGl6ZS5tZXRlcnMoMjApLFxuICAgICAgICAgICAgICAgIGRvd246IFVuaXRpemUubWV0ZXJzKDMyKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSlcbiAgfSlcbiAgaXQoJ2V4Y2x1ZGUgbGVuZ3RoJywgYXN5bmMgZnVuY3Rpb24oKSB7XG4gICAgY29uc3QgZGF0YSA9IGBibGFoXG4gKlxuICpcblRFU1RcbiAqIFxuTVQgQ0MgRERcbiAgRTM3ICBFMzYgIDMxLjYgKiAyMzEuMCAyMzIuMCAgMi4wICAzLjAgIDMgMTAgMjAgMzJcbmBcbiAgICBjb25zdCBwYXJzZWQgPSBhd2FpdCBwYXJzZUZyY3NTdXJ2ZXlGaWxlKCdjZGF0YS5mcicsIGRhdGEpXG4gICAgZXhwZWN0KHBhcnNlZC50cmlwc1swXS5zaG90c1swXSkudG8uZGVlcC5lcXVhbCh7XG4gICAgICBmcm9tOiAnRTM2JyxcbiAgICAgIHRvOiAnRTM3JyxcbiAgICAgIGtpbmQ6IEZyY3NTaG90S2luZC5Ob3JtYWwsXG4gICAgICBkaXN0YW5jZTogVW5pdGl6ZS5tZXRlcnMoMzEuNiksXG4gICAgICBmcm9udHNpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDIzMSksXG4gICAgICBiYWNrc2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMjMyKSxcbiAgICAgIGZyb250c2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZS5kZWdyZWVzKDIpLFxuICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IFVuaXRpemUuZGVncmVlcygzKSxcbiAgICAgIGV4Y2x1ZGVEaXN0YW5jZTogdHJ1ZSxcbiAgICAgIGNvbW1lbnQ6IG51bGwsXG5cbiAgICAgIHRvTHJ1ZHM6IHtcbiAgICAgICAgbGVmdDogVW5pdGl6ZS5tZXRlcnMoMyksXG4gICAgICAgIHJpZ2h0OiBVbml0aXplLm1ldGVycygxMCksXG4gICAgICAgIHVwOiBVbml0aXplLm1ldGVycygyMCksXG4gICAgICAgIGRvd246IFVuaXRpemUubWV0ZXJzKDMyKSxcbiAgICAgIH0sXG4gICAgfSlcbiAgfSlcbiAgaXQoJ25lZ2F0aXZlIExSVUQnLCBhc3luYyBmdW5jdGlvbigpIHtcbiAgICBjb25zdCBkYXRhID0gYGJsYWhcbiAqXG4gKlxuVEVTVFxuICogXG5NVCBDQyBERFxuICBFMzcgIEUzNiAgMzEuNiAgIDIzMS4wIDIzMi4wICAyLjAgIDMuMCAtMyAxMCAyMCAzMlxuYFxuICAgIGNvbnN0IHBhcnNlZCA9IGF3YWl0IHBhcnNlRnJjc1N1cnZleUZpbGUoJ2NkYXRhLmZyJywgZGF0YSlcbiAgICBleHBlY3QocGFyc2VkLnRyaXBzWzBdLnNob3RzWzBdKS50by5kZWVwLmVxdWFsKHtcbiAgICAgIGZyb206ICdFMzYnLFxuICAgICAgdG86ICdFMzcnLFxuICAgICAga2luZDogRnJjc1Nob3RLaW5kLk5vcm1hbCxcbiAgICAgIGRpc3RhbmNlOiBVbml0aXplLm1ldGVycygzMS42KSxcbiAgICAgIGZyb250c2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMjMxKSxcbiAgICAgIGJhY2tzaWdodEF6aW11dGg6IFVuaXRpemUuZGVncmVlcygyMzIpLFxuICAgICAgZnJvbnRzaWdodEluY2xpbmF0aW9uOiBVbml0aXplLmRlZ3JlZXMoMiksXG4gICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZS5kZWdyZWVzKDMpLFxuICAgICAgZXhjbHVkZURpc3RhbmNlOiBmYWxzZSxcbiAgICAgIGNvbW1lbnQ6IG51bGwsXG5cbiAgICAgIHRvTHJ1ZHM6IHtcbiAgICAgICAgbGVmdDogbnVsbCxcbiAgICAgICAgcmlnaHQ6IFVuaXRpemUubWV0ZXJzKDEwKSxcbiAgICAgICAgdXA6IFVuaXRpemUubWV0ZXJzKDIwKSxcbiAgICAgICAgZG93bjogVW5pdGl6ZS5tZXRlcnMoMzIpLFxuICAgICAgfSxcbiAgICB9KVxuICB9KVxuICBpdCgnLSBmb3Igbm8gYmFja3NpZ2h0JywgYXN5bmMgZnVuY3Rpb24oKSB7XG4gICAgY29uc3QgZGF0YSA9IGBibGFoXG4gKlxuICpcblRFU1RcbiAqIFxuTVQgQi0gREQgXG4gIGBcbiAgICBjb25zdCBwYXJzZWQgPSBhd2FpdCBwYXJzZUZyY3NTdXJ2ZXlGaWxlKCdjZGF0YS5mcicsIGRhdGEpXG4gICAgZXhwZWN0KHBhcnNlZC50cmlwc1swXS5oZWFkZXIpLnRvLmRlZXAuZXF1YWwoe1xuICAgICAgbmFtZTogJ1RFU1QnLFxuICAgICAgY29tbWVudDogbnVsbCxcbiAgICAgIHNlY3Rpb246IHVuZGVmaW5lZCxcbiAgICAgIGRhdGU6IHVuZGVmaW5lZCxcbiAgICAgIHRlYW06IHVuZGVmaW5lZCxcbiAgICAgIGRpc3RhbmNlVW5pdDogTGVuZ3RoLm1ldGVycyxcbiAgICAgIGF6aW11dGhVbml0OiBBbmdsZS5kZWdyZWVzLFxuICAgICAgaW5jbGluYXRpb25Vbml0OiBBbmdsZS5kZWdyZWVzLFxuICAgICAgYmFja3NpZ2h0QXppbXV0aENvcnJlY3RlZDogZmFsc2UsXG4gICAgICBiYWNrc2lnaHRJbmNsaW5hdGlvbkNvcnJlY3RlZDogZmFsc2UsXG4gICAgICBoYXNCYWNrc2lnaHRBemltdXRoOiB0cnVlLFxuICAgICAgaGFzQmFja3NpZ2h0SW5jbGluYXRpb246IGZhbHNlLFxuICAgIH0pXG4gIH0pXG4gIGl0KCdtaXNzaW5nIGJvdGggZnJvbnRzaWdodCBhbmQgYmFja3NpZ2h0IGluY2xpbmF0aW9uJywgYXN5bmMgZnVuY3Rpb24oKSB7XG4gICAgY29uc3QgZGF0YSA9IGBibGFoXG4gKlxuICpcblRFU1RcbiAqIFxuTVQgQi0gREQgXG4gIEUzNyAgRTM2ICAzMS42ICAgMjMxLjAgMjMyLjAgICAgICAgICAgIC0zIDEwIDIwIDMyXG4gIGBcbiAgICBjb25zdCBwYXJzZWQgPSBhd2FpdCBwYXJzZUZyY3NTdXJ2ZXlGaWxlKCdjZGF0YS5mcicsIGRhdGEpXG4gICAgZXhwZWN0KHBhcnNlZC50cmlwc1swXS5zaG90c1swXSkudG8uZGVlcC5lcXVhbCh7XG4gICAgICBmcm9tOiAnRTM2JyxcbiAgICAgIHRvOiAnRTM3JyxcbiAgICAgIGtpbmQ6IEZyY3NTaG90S2luZC5Ob3JtYWwsXG4gICAgICBkaXN0YW5jZTogVW5pdGl6ZS5tZXRlcnMoMzEuNiksXG4gICAgICBmcm9udHNpZ2h0QXppbXV0aDogVW5pdGl6ZS5kZWdyZWVzKDIzMSksXG4gICAgICBiYWNrc2lnaHRBemltdXRoOiBVbml0aXplLmRlZ3JlZXMoMjMyKSxcbiAgICAgIGZyb250c2lnaHRJbmNsaW5hdGlvbjogVW5pdGl6ZS5kZWdyZWVzKDApLFxuICAgICAgYmFja3NpZ2h0SW5jbGluYXRpb246IG51bGwsXG4gICAgICBleGNsdWRlRGlzdGFuY2U6IGZhbHNlLFxuICAgICAgY29tbWVudDogbnVsbCxcblxuICAgICAgdG9McnVkczoge1xuICAgICAgICBsZWZ0OiBudWxsLFxuICAgICAgICByaWdodDogVW5pdGl6ZS5tZXRlcnMoMTApLFxuICAgICAgICB1cDogVW5pdGl6ZS5tZXRlcnMoMjApLFxuICAgICAgICBkb3duOiBVbml0aXplLm1ldGVycygzMiksXG4gICAgICB9LFxuICAgIH0pXG4gIH0pXG59KVxuIl0sIm1hcHBpbmdzIjoiOztBQUFBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFNBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLEtBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFNBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLGFBQUEsR0FBQUwsT0FBQTtBQUVBLE1BQU1NLElBQUksR0FBSTtBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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
|