@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.
Files changed (45) hide show
  1. package/FrcsPlotFile.d.ts +1 -1
  2. package/FrcsPlotShot.d.ts +1 -1
  3. package/FrcsShot.d.ts +1 -1
  4. package/FrcsShot.js +2 -3
  5. package/FrcsSurveyFile.d.ts +1 -1
  6. package/FrcsTrip.d.ts +2 -2
  7. package/FrcsTripSummary.d.ts +1 -1
  8. package/FrcsTripSummaryFile.d.ts +1 -1
  9. package/formatFrcsShot.js +7 -6
  10. package/index.js +11 -11
  11. package/node/index.js +6 -9
  12. package/package.json +30 -124
  13. package/parseFrcsPlotFile.js +4 -3
  14. package/parseFrcsSurveyFile.js +13 -12
  15. package/parseFrcsTripSummaryFile.js +5 -4
  16. package/string/index.js +8 -11
  17. package/web/index.d.ts +12 -0
  18. package/web/index.js +71 -0
  19. package/es/FrcsPlotFile.js +0 -6
  20. package/es/FrcsPlotShot.js +0 -6
  21. package/es/FrcsShot.js +0 -14
  22. package/es/FrcsSurveyFile.js +0 -6
  23. package/es/FrcsTrip.js +0 -6
  24. package/es/FrcsTripSummary.js +0 -6
  25. package/es/FrcsTripSummaryFile.js +0 -6
  26. package/es/formatFrcsShot.js +0 -75
  27. package/es/formatFrcsShot.spec.js +0 -141
  28. package/es/index.js +0 -96
  29. package/es/node/index.js +0 -20
  30. package/es/node/parseFrcsPlotFile.spec.js +0 -167
  31. package/es/node/parseFrcsSurveyFile.spec.js +0 -314
  32. package/es/node/parseFrcsTripSummaryFile.spec.js +0 -78
  33. package/es/parseFrcsPlotFile.js +0 -135
  34. package/es/parseFrcsSurveyFile.js +0 -503
  35. package/es/parseFrcsTripSummaryFile.js +0 -73
  36. package/es/string/index.js +0 -21
  37. package/es/string/parseFrcsPlotFile.spec.js +0 -179
  38. package/es/string/parseFrcsSurveyFile.spec.js +0 -646
  39. package/formatFrcsShot.spec.js +0 -139
  40. package/node/parseFrcsPlotFile.spec.js +0 -181
  41. package/node/parseFrcsSurveyFile.spec.js +0 -328
  42. package/node/parseFrcsTripSummaryFile.spec.js +0 -104
  43. package/string/parseFrcsPlotFile.spec.js +0 -182
  44. package/string/parseFrcsSurveyFile.spec.js +0 -673
  45. 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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