@tricoteuses/assemblee 1.7.0 → 1.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -27
- package/lib/bugs/acteur-00010/plugin.test.js +4 -4
- package/lib/bugs/acteur-00010/plugin.test.mjs +1 -1
- package/lib/bugs/acteur-00010.js +15 -16
- package/lib/bugs/acteur-00010.mjs +1 -1
- package/lib/bugs/agenda-00002/plugin.test.js +4 -4
- package/lib/bugs/agenda-00002/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00002.js +27 -28
- package/lib/bugs/agenda-00002.mjs +3 -3
- package/lib/bugs/agenda-00008/plugin.test.js +4 -4
- package/lib/bugs/agenda-00008/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00008.js +15 -16
- package/lib/bugs/agenda-00008.mjs +1 -1
- package/lib/bugs/agenda-00011/plugin.test.js +5 -5
- package/lib/bugs/agenda-00011/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00011.js +21 -22
- package/lib/bugs/agenda-00011.mjs +3 -3
- package/lib/bugs.js +17 -19
- package/lib/bugs.mjs +3 -3
- package/lib/cleaners/actes_legislatifs.js +5 -5
- package/lib/cleaners/acteurs.js +5 -5
- package/lib/cleaners/acteurs.mjs +1 -1
- package/lib/cleaners/amendements.js +5 -5
- package/lib/cleaners/documents.js +5 -5
- package/lib/cleaners/dossiers_legislatifs.js +5 -5
- package/lib/cleaners/organes.js +2 -2
- package/lib/cleaners/reunions.js +5 -5
- package/lib/cleaners/scrutins.js +8 -8
- package/lib/cleaners/xml.js +8 -8
- package/lib/cleaners/xml.mjs +1 -1
- package/lib/datasets.d.ts +2 -2
- package/lib/datasets.js +53 -132
- package/lib/datasets.mjs +40 -118
- package/lib/dates.js +1 -2
- package/lib/dossiers_legislatifs.js +8 -8
- package/lib/file_systems.js +15 -14
- package/lib/file_systems.mjs +3 -3
- package/lib/git.d.ts +1 -0
- package/lib/git.js +21 -5
- package/lib/git.mjs +16 -1
- package/lib/inserters.js +3 -3
- package/lib/loaders.d.ts +14 -40
- package/lib/loaders.js +580 -1086
- package/lib/loaders.mjs +110 -353
- package/lib/parsers/documents.js +10 -10
- package/lib/parsers/documents.mjs +1 -1
- package/lib/parsers/recherche_amendements.js +17 -15
- package/lib/parsers/recherche_amendements.mjs +1 -1
- package/lib/raw_types/acteurs_et_organes.js +9 -9
- package/lib/raw_types/acteurs_et_organes.mjs +1 -1
- package/lib/raw_types/agendas.js +9 -9
- package/lib/raw_types/agendas.mjs +1 -1
- package/lib/raw_types/amendements.js +9 -9
- package/lib/raw_types/amendements.mjs +1 -1
- package/lib/raw_types/debats.d.ts +26 -78
- package/lib/raw_types/debats.js +49 -242
- package/lib/raw_types/debats.mjs +41 -234
- package/lib/raw_types/dossiers_legislatifs.js +9 -9
- package/lib/raw_types/dossiers_legislatifs.mjs +1 -1
- package/lib/raw_types/questions.js +9 -9
- package/lib/raw_types/questions.mjs +1 -1
- package/lib/raw_types/scrutins.js +9 -9
- package/lib/raw_types/scrutins.mjs +1 -1
- package/lib/scripts/bugs_helper.js +17 -18
- package/lib/scripts/bugs_helper.mjs +3 -3
- package/lib/scripts/clean_reorganized_data.js +183 -561
- package/lib/scripts/clean_reorganized_data.mjs +111 -410
- package/lib/scripts/diff_amendements.js +11 -24
- package/lib/scripts/diff_amendements.mjs +3 -17
- package/lib/scripts/document_dossiers_legislatifs.js +24 -27
- package/lib/scripts/document_dossiers_legislatifs.mjs +3 -3
- package/lib/scripts/get_today_reunions.js +5 -8
- package/lib/scripts/get_today_reunions.mjs +3 -7
- package/lib/scripts/merge_scrutins.js +11 -24
- package/lib/scripts/merge_scrutins.mjs +3 -17
- package/lib/scripts/parse_textes_lois.js +8 -38
- package/lib/scripts/parse_textes_lois.mjs +3 -33
- package/lib/scripts/raw_types_from_amendements.js +14 -27
- package/lib/scripts/raw_types_from_amendements.mjs +3 -17
- package/lib/scripts/reorganize_data.js +204 -456
- package/lib/scripts/reorganize_data.mjs +68 -260
- package/lib/scripts/retrieve_deputes_photos.d.ts +3 -1
- package/lib/scripts/retrieve_deputes_photos.js +146 -172
- package/lib/scripts/retrieve_deputes_photos.mjs +74 -98
- package/lib/scripts/retrieve_documents.js +207 -156
- package/lib/scripts/retrieve_documents.mjs +116 -128
- package/lib/scripts/retrieve_open_data.js +272 -249
- package/lib/scripts/retrieve_open_data.mjs +109 -123
- package/lib/scripts/retrieve_pending_amendments.js +16 -67
- package/lib/scripts/retrieve_pending_amendments.mjs +4 -55
- package/lib/scripts/retrieve_senateurs_photos.js +20 -77
- package/lib/scripts/retrieve_senateurs_photos.mjs +5 -61
- package/lib/scripts/retrieve_textes_lois.js +18 -46
- package/lib/scripts/retrieve_textes_lois.mjs +3 -33
- package/lib/scripts/shared/cli_helpers.d.ts +66 -0
- package/lib/scripts/shared/cli_helpers.js +90 -0
- package/lib/scripts/shared/cli_helpers.mjs +72 -0
- package/lib/scripts/test_iter_load.d.ts +1 -0
- package/lib/scripts/test_iter_load.js +154 -0
- package/lib/scripts/test_iter_load.mjs +71 -0
- package/lib/scripts/test_load.js +4 -15
- package/lib/scripts/test_load.mjs +3 -14
- package/lib/scripts/test_load_big_files.js +4 -15
- package/lib/scripts/test_load_big_files.mjs +3 -14
- package/lib/scripts/validate_json.js +15 -16
- package/lib/scripts/validate_json.mjs +3 -3
- package/lib/types/acteurs_et_organes.js +9 -9
- package/lib/types/acteurs_et_organes.mjs +1 -1
- package/lib/types/agendas.js +9 -9
- package/lib/types/agendas.mjs +1 -1
- package/lib/types/amendements.js +9 -9
- package/lib/types/amendements.mjs +1 -1
- package/lib/types/debats.d.ts +27 -79
- package/lib/types/debats.js +48 -241
- package/lib/types/debats.mjs +40 -233
- package/lib/types/dossiers_legislatifs.js +9 -9
- package/lib/types/dossiers_legislatifs.mjs +1 -1
- package/lib/types/legislatures.d.ts +4 -4
- package/lib/types/legislatures.js +5 -5
- package/lib/types/legislatures.mjs +5 -5
- package/lib/types/questions.js +9 -9
- package/lib/types/questions.mjs +1 -1
- package/lib/types/scrutins.js +9 -9
- package/lib/types/scrutins.mjs +1 -1
- package/lib/urls.js +2 -2
- package/lib/urls.mjs +1 -1
- package/package.json +9 -7
package/lib/datasets.mjs
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createHash } from "crypto";
|
|
2
|
+
import assert from "assert";
|
|
2
3
|
import fs from "fs-extra";
|
|
3
4
|
import path from "path";
|
|
4
5
|
import { Legislature } from "./types/legislatures.mjs";
|
|
@@ -20,6 +21,17 @@ export let EnabledDatasets = /*#__PURE__*/function (EnabledDatasets) {
|
|
|
20
21
|
EnabledDatasets[EnabledDatasets["All"] = 255] = "All";
|
|
21
22
|
return EnabledDatasets;
|
|
22
23
|
}({});
|
|
24
|
+
|
|
25
|
+
// The zip files (named NAME.json.zip) usually contain a single subfolder named "json"
|
|
26
|
+
// containing the actual contents
|
|
27
|
+
// We'd rather rename the folder NAME.json
|
|
28
|
+
function repairForJsonSubdirectory(dataset, dataDir) {
|
|
29
|
+
const targetDir = path.join(dataDir, dataset.filename);
|
|
30
|
+
if (fs.existsSync(targetDir)) {
|
|
31
|
+
fs.removeSync(targetDir);
|
|
32
|
+
}
|
|
33
|
+
fs.moveSync(path.join(dataDir, "json"), targetDir);
|
|
34
|
+
}
|
|
23
35
|
export const datasets = {
|
|
24
36
|
acteursEtOrganes: [{
|
|
25
37
|
// AMO10 (XVI)
|
|
@@ -45,13 +57,7 @@ export const datasets = {
|
|
|
45
57
|
filename: "AMO10_deputes_actifs_mandats_actifs_organes_XVI.json",
|
|
46
58
|
ignoreForWeb: true,
|
|
47
59
|
legislature: Legislature.Seize,
|
|
48
|
-
repairZip:
|
|
49
|
-
const targetDir = path.join(dataDir, dataset.filename);
|
|
50
|
-
if (fs.existsSync(targetDir)) {
|
|
51
|
-
fs.removeSync(targetDir);
|
|
52
|
-
}
|
|
53
|
-
fs.moveSync(path.join(dataDir, "json"), targetDir);
|
|
54
|
-
},
|
|
60
|
+
repairZip: repairForJsonSubdirectory,
|
|
55
61
|
structure: DatasetStructure.SegmentedFiles,
|
|
56
62
|
title: "Députés actifs et organes de la XVIème législature",
|
|
57
63
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/16/amo/deputes_actifs_mandats_actifs_organes/AMO10_deputes_actifs_mandats_actifs_organes.json.zip"
|
|
@@ -79,13 +85,7 @@ export const datasets = {
|
|
|
79
85
|
filename: "AMO10_deputes_actifs_mandats_actifs_organes_XV.json",
|
|
80
86
|
ignoreForWeb: true,
|
|
81
87
|
legislature: Legislature.Quinze,
|
|
82
|
-
repairZip:
|
|
83
|
-
const targetDir = path.join(dataDir, dataset.filename);
|
|
84
|
-
if (fs.existsSync(targetDir)) {
|
|
85
|
-
fs.removeSync(targetDir);
|
|
86
|
-
}
|
|
87
|
-
fs.moveSync(path.join(dataDir, "json"), targetDir);
|
|
88
|
-
},
|
|
88
|
+
repairZip: repairForJsonSubdirectory,
|
|
89
89
|
structure: DatasetStructure.SegmentedFiles,
|
|
90
90
|
title: "Députés actifs et organes de la XVème législature",
|
|
91
91
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/15/amo/deputes_actifs_mandats_actifs_organes/AMO10_deputes_actifs_mandats_actifs_organes_XV.json.zip"
|
|
@@ -113,13 +113,7 @@ export const datasets = {
|
|
|
113
113
|
filename: "AMO20_dep_sen_min_tous_mandats_et_organes_XVI.json",
|
|
114
114
|
ignoreForWeb: true,
|
|
115
115
|
legislature: Legislature.Seize,
|
|
116
|
-
repairZip:
|
|
117
|
-
const targetDir = path.join(dataDir, dataset.filename);
|
|
118
|
-
if (fs.existsSync(targetDir)) {
|
|
119
|
-
fs.removeSync(targetDir);
|
|
120
|
-
}
|
|
121
|
-
fs.moveSync(path.join(dataDir, "json"), targetDir);
|
|
122
|
-
},
|
|
116
|
+
repairZip: repairForJsonSubdirectory,
|
|
123
117
|
structure: DatasetStructure.SegmentedFiles,
|
|
124
118
|
title: "Acteurs et organes de la XVIème législature",
|
|
125
119
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/16/amo/deputes_senateurs_ministres_legislature/AMO20_dep_sen_min_tous_mandats_et_organes.json.zip"
|
|
@@ -147,13 +141,7 @@ export const datasets = {
|
|
|
147
141
|
filename: "AMO20_dep_sen_min_tous_mandats_et_organes_XV.json",
|
|
148
142
|
ignoreForWeb: true,
|
|
149
143
|
legislature: Legislature.Quinze,
|
|
150
|
-
repairZip:
|
|
151
|
-
const targetDir = path.join(dataDir, dataset.filename);
|
|
152
|
-
if (fs.existsSync(targetDir)) {
|
|
153
|
-
fs.removeSync(targetDir);
|
|
154
|
-
}
|
|
155
|
-
fs.moveSync(path.join(dataDir, "json"), targetDir);
|
|
156
|
-
},
|
|
144
|
+
repairZip: repairForJsonSubdirectory,
|
|
157
145
|
structure: DatasetStructure.SegmentedFiles,
|
|
158
146
|
title: "Acteurs et organes de la XVème législature",
|
|
159
147
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/15/amo/deputes_senateurs_ministres_legislature/AMO20_dep_sen_min_tous_mandats_et_organes_XV.json.zip"
|
|
@@ -181,13 +169,7 @@ export const datasets = {
|
|
|
181
169
|
// C'est un sur-ensemble des fichiers AMO20.
|
|
182
170
|
filename: "AMO30_tous_acteurs_tous_mandats_tous_organes_historique.json",
|
|
183
171
|
legislature: Legislature.All,
|
|
184
|
-
repairZip:
|
|
185
|
-
const targetDir = path.join(dataDir, dataset.filename);
|
|
186
|
-
if (fs.existsSync(targetDir)) {
|
|
187
|
-
fs.removeSync(targetDir);
|
|
188
|
-
}
|
|
189
|
-
fs.moveSync(path.join(dataDir, "json"), targetDir);
|
|
190
|
-
},
|
|
172
|
+
repairZip: repairForJsonSubdirectory,
|
|
191
173
|
structure: DatasetStructure.SegmentedFiles,
|
|
192
174
|
title: "Historique de tous les acteurs et organes depuis la XIème législature",
|
|
193
175
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/16/amo/tous_acteurs_mandats_organes_xi_legislature/AMO30_tous_acteurs_tous_mandats_tous_organes_historique.json.zip"
|
|
@@ -245,7 +227,11 @@ export const datasets = {
|
|
|
245
227
|
fs.removeSync(targetDir);
|
|
246
228
|
}
|
|
247
229
|
fs.mkdirSync(targetDir);
|
|
248
|
-
fs.
|
|
230
|
+
if (fs.pathExistsSync(path.join(dataDir, "acteur"))) {
|
|
231
|
+
// Note; Le répertoire acteur peut disparaître en fin de législature
|
|
232
|
+
// quand les mandats des députés s'interrompent.
|
|
233
|
+
fs.moveSync(path.join(dataDir, "acteur"), path.join(targetDir, "acteur"));
|
|
234
|
+
}
|
|
249
235
|
fs.moveSync(path.join(dataDir, "organe"), path.join(targetDir, "organe"));
|
|
250
236
|
},
|
|
251
237
|
structure: DatasetStructure.SegmentedFiles,
|
|
@@ -357,26 +343,14 @@ export const datasets = {
|
|
|
357
343
|
agendas: [{
|
|
358
344
|
filename: "Agenda_XVI.json",
|
|
359
345
|
legislature: Legislature.Seize,
|
|
360
|
-
repairZip:
|
|
361
|
-
const targetDir = path.join(dataDir, dataset.filename);
|
|
362
|
-
if (fs.existsSync(targetDir)) {
|
|
363
|
-
fs.removeSync(targetDir);
|
|
364
|
-
}
|
|
365
|
-
fs.moveSync(path.join(dataDir, "json"), targetDir);
|
|
366
|
-
},
|
|
346
|
+
repairZip: repairForJsonSubdirectory,
|
|
367
347
|
structure: DatasetStructure.SegmentedFiles,
|
|
368
348
|
title: "Agenda de la XVIème législature",
|
|
369
349
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/16/vp/reunions/Agenda.json.zip"
|
|
370
350
|
}, {
|
|
371
351
|
filename: "Agenda_XV.json",
|
|
372
352
|
legislature: Legislature.Quinze,
|
|
373
|
-
repairZip:
|
|
374
|
-
const targetDir = path.join(dataDir, dataset.filename);
|
|
375
|
-
if (fs.existsSync(targetDir)) {
|
|
376
|
-
fs.removeSync(targetDir);
|
|
377
|
-
}
|
|
378
|
-
fs.moveSync(path.join(dataDir, "json"), targetDir);
|
|
379
|
-
},
|
|
353
|
+
repairZip: repairForJsonSubdirectory,
|
|
380
354
|
structure: DatasetStructure.SegmentedFiles,
|
|
381
355
|
title: "Agenda de la XVème législature",
|
|
382
356
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/15/vp/reunions/Agenda_XV.json.zip"
|
|
@@ -390,26 +364,14 @@ export const datasets = {
|
|
|
390
364
|
amendements: [{
|
|
391
365
|
filename: "Amendements_XVI.json",
|
|
392
366
|
legislature: Legislature.Seize,
|
|
393
|
-
repairZip:
|
|
394
|
-
const targetDir = path.join(dataDir, dataset.filename);
|
|
395
|
-
if (fs.existsSync(targetDir)) {
|
|
396
|
-
fs.removeSync(targetDir);
|
|
397
|
-
}
|
|
398
|
-
fs.moveSync(path.join(dataDir, "json"), targetDir);
|
|
399
|
-
},
|
|
367
|
+
repairZip: repairForJsonSubdirectory,
|
|
400
368
|
structure: DatasetStructure.SegmentedFiles,
|
|
401
369
|
title: "Amendements de la XVIème législature",
|
|
402
370
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/16/loi/amendements_div_legis/Amendements.json.zip"
|
|
403
371
|
}, {
|
|
404
372
|
filename: "Amendements_XV.json",
|
|
405
373
|
legislature: Legislature.Quinze,
|
|
406
|
-
repairZip:
|
|
407
|
-
const targetDir = path.join(dataDir, dataset.filename);
|
|
408
|
-
if (fs.existsSync(targetDir)) {
|
|
409
|
-
fs.removeSync(targetDir);
|
|
410
|
-
}
|
|
411
|
-
fs.moveSync(path.join(dataDir, "json"), targetDir);
|
|
412
|
-
},
|
|
374
|
+
repairZip: repairForJsonSubdirectory,
|
|
413
375
|
structure: DatasetStructure.SegmentedFiles,
|
|
414
376
|
title: "Amendements de la XVème législature",
|
|
415
377
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/15/loi/amendements_legis/Amendements_XV.json.zip"
|
|
@@ -427,26 +389,14 @@ export const datasets = {
|
|
|
427
389
|
dossiersLegislatifs: [{
|
|
428
390
|
filename: "Dossiers_Legislatifs_XVI.json",
|
|
429
391
|
legislature: Legislature.Seize,
|
|
430
|
-
repairZip:
|
|
431
|
-
const targetDir = path.join(dataDir, dataset.filename);
|
|
432
|
-
if (fs.existsSync(targetDir)) {
|
|
433
|
-
fs.removeSync(targetDir);
|
|
434
|
-
}
|
|
435
|
-
fs.moveSync(path.join(dataDir, "json"), targetDir);
|
|
436
|
-
},
|
|
392
|
+
repairZip: repairForJsonSubdirectory,
|
|
437
393
|
structure: DatasetStructure.SegmentedFiles,
|
|
438
394
|
title: "Dossiers législatifs de la XVIème législature",
|
|
439
395
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/16/loi/dossiers_legislatifs/Dossiers_Legislatifs.json.zip"
|
|
440
396
|
}, {
|
|
441
397
|
filename: "Dossiers_Legislatifs_XV.json",
|
|
442
398
|
legislature: Legislature.Quinze,
|
|
443
|
-
repairZip:
|
|
444
|
-
const targetDir = path.join(dataDir, dataset.filename);
|
|
445
|
-
if (fs.existsSync(targetDir)) {
|
|
446
|
-
fs.removeSync(targetDir);
|
|
447
|
-
}
|
|
448
|
-
fs.moveSync(path.join(dataDir, "json"), targetDir);
|
|
449
|
-
},
|
|
399
|
+
repairZip: repairForJsonSubdirectory,
|
|
450
400
|
structure: DatasetStructure.SegmentedFiles,
|
|
451
401
|
title: "Dossiers législatifs de la XVème législature",
|
|
452
402
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/15/loi/dossiers_legislatifs/Dossiers_Legislatifs_XV.json.zip"
|
|
@@ -460,26 +410,14 @@ export const datasets = {
|
|
|
460
410
|
scrutins: [{
|
|
461
411
|
filename: "Scrutins_XVI.json",
|
|
462
412
|
legislature: Legislature.Seize,
|
|
463
|
-
repairZip:
|
|
464
|
-
const targetDir = path.join(dataDir, dataset.filename);
|
|
465
|
-
if (fs.existsSync(targetDir)) {
|
|
466
|
-
fs.removeSync(targetDir);
|
|
467
|
-
}
|
|
468
|
-
fs.moveSync(path.join(dataDir, "json"), targetDir);
|
|
469
|
-
},
|
|
413
|
+
repairZip: repairForJsonSubdirectory,
|
|
470
414
|
structure: DatasetStructure.SegmentedFiles,
|
|
471
415
|
title: "Scrutins de la XVIème législature",
|
|
472
416
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/16/loi/scrutins/Scrutins.json.zip"
|
|
473
417
|
}, {
|
|
474
418
|
filename: "Scrutins_XV.json",
|
|
475
419
|
legislature: Legislature.Quinze,
|
|
476
|
-
repairZip:
|
|
477
|
-
const targetDir = path.join(dataDir, dataset.filename);
|
|
478
|
-
if (fs.existsSync(targetDir)) {
|
|
479
|
-
fs.removeSync(targetDir);
|
|
480
|
-
}
|
|
481
|
-
fs.moveSync(path.join(dataDir, "json"), targetDir);
|
|
482
|
-
},
|
|
420
|
+
repairZip: repairForJsonSubdirectory,
|
|
483
421
|
structure: DatasetStructure.SegmentedFiles,
|
|
484
422
|
title: "Scrutins de la XVème législature",
|
|
485
423
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/15/loi/scrutins/Scrutins_XV.json.zip"
|
|
@@ -493,39 +431,21 @@ export const datasets = {
|
|
|
493
431
|
questions: [{
|
|
494
432
|
filename: "Questions_ecrites_XVI.json",
|
|
495
433
|
legislature: Legislature.Seize,
|
|
496
|
-
repairZip:
|
|
497
|
-
const targetDir = path.join(dataDir, dataset.filename);
|
|
498
|
-
if (fs.existsSync(targetDir)) {
|
|
499
|
-
fs.removeSync(targetDir);
|
|
500
|
-
}
|
|
501
|
-
fs.moveSync(path.join(dataDir, "json"), targetDir);
|
|
502
|
-
},
|
|
434
|
+
repairZip: repairForJsonSubdirectory,
|
|
503
435
|
structure: DatasetStructure.SegmentedFiles,
|
|
504
436
|
title: "Questions écrites de la XVIème législature",
|
|
505
437
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/16/questions/questions_ecrites/Questions_ecrites.json.zip"
|
|
506
438
|
}, {
|
|
507
439
|
filename: "Questions_gouvernement_XVI.json",
|
|
508
440
|
legislature: Legislature.Seize,
|
|
509
|
-
repairZip:
|
|
510
|
-
const targetDir = path.join(dataDir, dataset.filename);
|
|
511
|
-
if (fs.existsSync(targetDir)) {
|
|
512
|
-
fs.removeSync(targetDir);
|
|
513
|
-
}
|
|
514
|
-
fs.moveSync(path.join(dataDir, "json"), targetDir);
|
|
515
|
-
},
|
|
441
|
+
repairZip: repairForJsonSubdirectory,
|
|
516
442
|
structure: DatasetStructure.SegmentedFiles,
|
|
517
443
|
title: "Questions au gouvernement de la XVIème législature",
|
|
518
444
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/16/questions/questions_gouvernement/Questions_gouvernement.json.zip"
|
|
519
445
|
}, {
|
|
520
446
|
filename: "Questions_orales_XVI.json",
|
|
521
447
|
legislature: Legislature.Seize,
|
|
522
|
-
repairZip:
|
|
523
|
-
const targetDir = path.join(dataDir, dataset.filename);
|
|
524
|
-
if (fs.existsSync(targetDir)) {
|
|
525
|
-
fs.removeSync(targetDir);
|
|
526
|
-
}
|
|
527
|
-
fs.moveSync(path.join(dataDir, "json"), targetDir);
|
|
528
|
-
},
|
|
448
|
+
repairZip: repairForJsonSubdirectory,
|
|
529
449
|
structure: DatasetStructure.SegmentedFiles,
|
|
530
450
|
title: "Questions orales sans débats de la XVIème législature",
|
|
531
451
|
url: "http://data.assemblee-nationale.fr/static/openData/repository/16/questions/questions_orales_sans_debat/Questions_orales_sans_debat.json.zip"
|
|
@@ -611,13 +531,15 @@ export function masterUrl(filename) {
|
|
|
611
531
|
export function filterByLegislature(datasets, legislature) {
|
|
612
532
|
// When a given legislature is 0, it is the same as giving no legislature:
|
|
613
533
|
// It means "every legislatures".
|
|
614
|
-
|
|
615
|
-
if (legislatures !== undefined) {
|
|
616
|
-
const enabledLegislatures = legislatures.map(legislature => legislature.toString());
|
|
534
|
+
if (legislature !== 0 && legislature !== undefined) {
|
|
617
535
|
for (let [key, value] of Object.entries(datasets)) {
|
|
618
|
-
datasets[key] = value.filter(dataset => dataset.legislature === Legislature.All ||
|
|
536
|
+
datasets[key] = value.filter(dataset => dataset.legislature === Legislature.All || legislature === dataset.legislature);
|
|
619
537
|
}
|
|
620
538
|
}
|
|
621
539
|
return datasets;
|
|
622
540
|
}
|
|
623
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVIYXNoIiwiZnMiLCJwYXRoIiwiTGVnaXNsYXR1cmUiLCJEYXRhc2V0U3RydWN0dXJlIiwiRW5hYmxlZERhdGFzZXRzIiwiZGF0YXNldHMiLCJhY3RldXJzRXRPcmdhbmVzIiwiZmlsZW5hbWUiLCJpZ25vcmVGb3JXZWIiLCJsZWdpc2xhdHVyZSIsIlNlaXplIiwicmVwYWlyWmlwIiwiZGF0YXNldCIsImRhdGFEaXIiLCJ0YXJnZXREaXIiLCJqb2luIiwiZXhpc3RzU3luYyIsInJlbW92ZVN5bmMiLCJtb3ZlU3luYyIsInN0cnVjdHVyZSIsIlNlZ21lbnRlZEZpbGVzIiwidGl0bGUiLCJ1cmwiLCJRdWluemUiLCJRdWF0b3J6ZSIsIlNpbmdsZUZpbGUiLCJBbGwiLCJta2RpclN5bmMiLCJhZ2VuZGFzIiwiYW1lbmRlbWVudHMiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzIiwic2NydXRpbnMiLCJxdWVzdGlvbnMiLCJjb21wdGVzUmVuZHVzU2VhbmNlcyIsImRpcmVjdG9yeTJzY2hlbWEiLCJnZXREYXRhc2V0cyIsInZhbGlkRGF0YXNldCIsImRpciIsImluY2x1ZGVzIiwiZ2V0U2NoZW1hcyIsIk9iamVjdCIsInZhbHVlcyIsImRhdGFzZXREaXJlY3RvcnlTY2hlbWEiLCJkaXJlY3RvcmllcyIsInJlc3VsdHMiLCJkaXJlY3RvcnkiLCJyZSIsImtleXMiLCJSZWdFeHAiLCJleGVjIiwicHVzaCIsImZpbGVEYXRhc2V0VXJsIiwibWF0Y2giLCJmaWxlIiwiZGlmZlVwc3RyZWFtIiwiZGF0YXNldFVybCIsInN1bSIsInVwZGF0ZSIsImRpZ2VzdCIsInRvU3RyaW5nIiwibWFzdGVyVXJsIiwiZmlsdGVyQnlMZWdpc2xhdHVyZSIsImxlZ2lzbGF0dXJlcyIsInNvbWUiLCJ1bmRlZmluZWQiLCJlbmFibGVkTGVnaXNsYXR1cmVzIiwibWFwIiwia2V5IiwidmFsdWUiLCJlbnRyaWVzIiwiZmlsdGVyIl0sInNvdXJjZXMiOlsiLi4vc3JjL2RhdGFzZXRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tIFwiY3J5cHRvXCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuXG5pbXBvcnQgeyBMZWdpc2xhdHVyZSB9IGZyb20gXCIuL3R5cGVzL2xlZ2lzbGF0dXJlc1wiXG5cbmludGVyZmFjZSBEYXRhc2V0IHtcbiAgZmlsZW5hbWU6IHN0cmluZ1xuICBpZ25vcmVGb3JXZWI/OiBib29sZWFuXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZVxuICByZXBhaXJaaXA/OiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB2b2lkXG4gIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZVxuICB0aXRsZTogc3RyaW5nXG4gIHVybDogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXNldHMge1xuICBhY3RldXJzRXRPcmdhbmVzOiBEYXRhc2V0W11cbiAgYWdlbmRhczogRGF0YXNldFtdXG4gIGFtZW5kZW1lbnRzOiBEYXRhc2V0W11cbiAgZG9zc2llcnNMZWdpc2xhdGlmczogRGF0YXNldFtdXG4gIHNjcnV0aW5zOiBEYXRhc2V0W11cbiAgcXVlc3Rpb25zOiBEYXRhc2V0W11cbiAgY29tcHRlc1JlbmR1c1NlYW5jZXM6IERhdGFzZXRbXVxufVxuXG5leHBvcnQgZW51bSBEYXRhc2V0U3RydWN0dXJlIHtcbiAgU2luZ2xlRmlsZSxcbiAgU2VnbWVudGVkRmlsZXMsXG59XG5cbmV4cG9ydCBlbnVtIEVuYWJsZWREYXRhc2V0cyB7XG4gIE5vbmUgPSAwLFxuICBBY3RldXJzRXRPcmdhbmVzID0gMSA8PCAwLFxuICBBZ2VuZGFzID0gMSA8PCAxLFxuICBBbWVuZGVtZW50cyA9IDEgPDwgMixcbiAgRG9zc2llcnNMZWdpc2xhdGlmcyA9IDEgPDwgMyxcbiAgUGhvdG9zID0gMSA8PCA0LFxuICBTY3J1dGlucyA9IDEgPDwgNSxcbiAgUXVlc3Rpb25zID0gMSA8PCA2LFxuICBDb21wdGVzUmVuZHVzU2VhbmNlcyA9IDEgPDwgNyxcbiAgQWxsID0gQWN0ZXVyc0V0T3JnYW5lcyB8XG4gICAgQWdlbmRhcyB8XG4gICAgQW1lbmRlbWVudHMgfFxuICAgIERvc3NpZXJzTGVnaXNsYXRpZnMgfFxuICAgIFBob3RvcyB8XG4gICAgU2NydXRpbnMgfFxuICAgIFF1ZXN0aW9ucyB8XG4gICAgQ29tcHRlc1JlbmR1c1NlYW5jZXMsXG59XG5cbmV4cG9ydCBjb25zdCBkYXRhc2V0czogRGF0YXNldHMgPSB7XG4gIGFjdGV1cnNFdE9yZ2FuZXM6IFtcbiAgICB7XG4gICAgICAvLyBBTU8xMCAoWFZJKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGxlcyBkw6lwdXTDqXMgYWN0aWZzXG4gICAgICAvLyAqIGF2ZWMgdG91cyBsZXMgbWFuZGF0cyBlbiBjb3Vyc1xuICAgICAgLy8gKiB5IGNvbXByaXMgYXZlYyBsZXVyIHBhcnRpIHBvbGl0aXF1ZSAodHlwZU9yZ2FuZTogXCJQQVJQT0xcIilcbiAgICAgIC8vICogbWFpcyBzYW5zIGxlcyBtYW5kYXRzIGFjaGV2w6lzICh5IGNvbXByaXMgZGFucyBjZXR0ZSBsw6lnaXNsYXR1cmUpXG4gICAgICAvL1xuICAgICAgLy8gT3JnYW5lcyA6XG4gICAgICAvLyAqIENvbnRpZW50IHNldWxlbWVudCBsZXMgb3JnYW5lcyBjb3JyZXNwb25kYW50cyBhdXggbWFuZGF0cyBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGxlIHhzaVR5cGUgZGUgbCdvcmdhbmVcbiAgICAgIC8vICogYXZlYyBkZXMgY29tbWlzc2lvbnMgc8OpbmF0b3JpYWxlcyAocGVybWFuZW50ZXMgZXQgc3DDqWNpYWxlcykgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZMOpbMOpZ2F0aW9ucyBzw6luYXRvcmlhbGVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIGdyb3VwZXMgc8OpbmF0b3JpYXV4IGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIG1pbmlzdMOocmVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgbGVzIFByw6lzaWRlbmNlcyBkZSBsYSBSw6lwdWJsaXF1ZSAoeSBjb21wcmlzIFNhcmtvenkpXG4gICAgICAvLyAqIGF2ZWMgbGUgQ29uc2VpbCBjb25zdGl0dXRpb25uZWxcbiAgICAgIC8vXG4gICAgICAvLyBDZSBmaWNoaWVyIGVzdCB1biBzb3VzLWVuc2VtYmxlIMOgIHRvdXMgbGVzIG5pdmVhdXggZHUgZmljaGllciBBTU8yMFxuICAgICAgLy8gKHF1aSBlc3QgbHVpIG3Dqm1lIHVuIHNvdXMtZW5zZW1ibGUgZGUgbCdBTU8zMCkuXG4gICAgICAvLyBJbCBuJ2FwcG9ydGUgZG9uYyBhYnNvbHVtZW50IHJpZW4gcGFyIHJhcHBvcnQgw6AgQU1PMjAgb3UgbCdBTU8zMC5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzEwX2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXNfWFZJLmpzb25cIixcbiAgICAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5TZWl6ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1vdmVTeW5jKHBhdGguam9pbihkYXRhRGlyLCBcImpzb25cIiksIHRhcmdldERpcilcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJEw6lwdXTDqXMgYWN0aWZzIGV0IG9yZ2FuZXMgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L2Ftby9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzL0FNTzEwX2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXMuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEFNTzEwIChYVilcbiAgICAgIC8vXG4gICAgICAvLyBDb250aWVudCBsZXMgZMOpcHV0w6lzIGFjdGlmc1xuICAgICAgLy8gKiBhdmVjIHRvdXMgbGVzIG1hbmRhdHMgZW4gY291cnNcbiAgICAgIC8vICogeSBjb21wcmlzIGF2ZWMgbGV1ciBwYXJ0aSBwb2xpdGlxdWUgKHR5cGVPcmdhbmU6IFwiUEFSUE9MXCIpXG4gICAgICAvLyAqIG1haXMgc2FucyBsZXMgbWFuZGF0cyBhY2hldsOpcyAoeSBjb21wcmlzIGRhbnMgY2V0dGUgbMOpZ2lzbGF0dXJlKVxuICAgICAgLy9cbiAgICAgIC8vIE9yZ2FuZXMgOlxuICAgICAgLy8gKiBDb250aWVudCBzZXVsZW1lbnQgbGVzIG9yZ2FuZXMgY29ycmVzcG9uZGFudHMgYXV4IG1hbmRhdHMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBsZSB4c2lUeXBlIGRlIGwnb3JnYW5lXG4gICAgICAvLyAqIGF2ZWMgZGVzIGNvbW1pc3Npb25zIHPDqW5hdG9yaWFsZXMgKHBlcm1hbmVudGVzIGV0IHNww6ljaWFsZXMpIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIGTDqWzDqWdhdGlvbnMgc8OpbmF0b3JpYWxlcyBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGRlcyBncm91cGVzIHPDqW5hdG9yaWF1eCBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGRlcyBtaW5pc3TDqHJlcyBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGxlcyBQcsOpc2lkZW5jZXMgZGUgbGEgUsOpcHVibGlxdWUgKHkgY29tcHJpcyBTYXJrb3p5KVxuICAgICAgLy8gKiBhdmVjIGxlIENvbnNlaWwgY29uc3RpdHV0aW9ubmVsXG4gICAgICAvL1xuICAgICAgLy8gQ2UgZmljaGllciBlc3QgdW4gc291cy1lbnNlbWJsZSDDoCB0b3VzIGxlcyBuaXZlYXV4IGR1IGZpY2hpZXIgQU1PMjBcbiAgICAgIC8vIChxdWkgZXN0IGx1aSBtw6ptZSB1biBzb3VzLWVuc2VtYmxlIGRlIGwnQU1PMzApLlxuICAgICAgLy8gSWwgbidhcHBvcnRlIGRvbmMgYWJzb2x1bWVudCByaWVuIHBhciByYXBwb3J0IMOgIEFNTzIwIG91IGwnQU1PMzAuXG4gICAgICBmaWxlbmFtZTogXCJBTU8xMF9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzX1hWLmpzb25cIixcbiAgICAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWluemUsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5tb3ZlU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJqc29uXCIpLCB0YXJnZXREaXIpXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiRMOpcHV0w6lzIGFjdGlmcyBldCBvcmdhbmVzIGRlIGxhIFhWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE1L2Ftby9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzL0FNTzEwX2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXNfWFYuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEFNTzIwIChYVkkpXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgbGVzIGTDqXB1dMOpcyBkZSBsYSBsw6lnaXNsYXR1cmUsIGFjdGlmcyBvdSBub24gKGludmFsaWTDqXMsIGV0YyksIGxlcyBzw6luYXRldXJzIGFjdHVlbHNcbiAgICAgIC8vIFBvdXIgbGVzIGTDqXB1dMOpcyA6XG4gICAgICAvLyAqIGF2ZWMgdG91cyBsZXVycyBtYW5kYXRzIGRlIGxhIGzDqWdpc2xhdHVyZVxuICAgICAgLy8gKiB5IGNvbXByaXMgbGVzIG1hbmRhdHMgYWNoZXbDqXNcbiAgICAgIC8vICogeSBjb21wcmlzIGxldXJzIHBhcnRpcyBwb2xpdGlxdWVzICAodHlwZU9yZ2FuZTogXCJQQVJQT0xcIilcbiAgICAgIC8vICogbWFpcyBzYW5zIGxlcyBtYW5kYXRzIGRlcyBsw6lnaXNsYXR1cmVzIHByw6ljw6lkZW50ZXMgKHF1aSBzb250IGRhbnMgQU1PNDApXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgdG91cyBsZXMgb3JnYW5lcyByw6lmw6lyZW5jw6lzIHBhciBsZXMgbWFuZGF0c1xuICAgICAgLy8gKiBhdmVjIGxlIHhzaVR5cGUgZGUgbCdvcmdhbmVcbiAgICAgIC8vICogYXZlYyBkZXMgY29tbWlzc2lvbnMgc8OpbmF0b3JpYWxlcyAocGVybWFuZW50ZXMgZXQgc3DDqWNpYWxlcykgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZMOpbMOpZ2F0aW9ucyBzw6luYXRvcmlhbGVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIGdyb3VwZXMgc8OpbmF0b3JpYXV4IGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIG1pbmlzdMOocmVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgbGVzIFByw6lzaWRlbmNlcyBkZSBsYSBSw6lwdWJsaXF1ZSAoeSBjb21wcmlzIFNhcmtvenkpXG4gICAgICAvLyAqIGF2ZWMgbGUgQ29uc2VpbCBjb25zdGl0dXRpb25uZWxcbiAgICAgIC8vXG4gICAgICAvLyBDZSBmaWNoaWVyIGVzdCB1biBzb3VzLWVuc2VtYmxlIMOgIHRvdXMgbGVzIG5pdmVhdXggZHUgZmljaGllciBBTU8zMC5cbiAgICAgIC8vIElsIG4nYXBwb3J0ZSBkb25jIGFic29sdW1lbnQgcmllbiBwYXIgcmFwcG9ydCDDoCBsJ0FNTzMwLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PMjBfZGVwX3Nlbl9taW5fdG91c19tYW5kYXRzX2V0X29yZ2FuZXNfWFZJLmpzb25cIixcbiAgICAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5TZWl6ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1vdmVTeW5jKHBhdGguam9pbihkYXRhRGlyLCBcImpzb25cIiksIHRhcmdldERpcilcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJBY3RldXJzIGV0IG9yZ2FuZXMgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L2Ftby9kZXB1dGVzX3NlbmF0ZXVyc19taW5pc3RyZXNfbGVnaXNsYXR1cmUvQU1PMjBfZGVwX3Nlbl9taW5fdG91c19tYW5kYXRzX2V0X29yZ2FuZXMuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEFNTzIwIChYVilcbiAgICAgIC8vXG4gICAgICAvLyBDb250aWVudCBsZXMgZMOpcHV0w6lzIGRlIGxhIGzDqWdpc2xhdHVyZSwgYWN0aWZzIG91IG5vbiAoaW52YWxpZMOpcywgZXRjKSwgbGVzIHPDqW5hdGV1cnMgYWN0dWVsc1xuICAgICAgLy8gUG91ciBsZXMgZMOpcHV0w6lzIDpcbiAgICAgIC8vICogYXZlYyB0b3VzIGxldXJzIG1hbmRhdHMgZGUgbGEgbMOpZ2lzbGF0dXJlXG4gICAgICAvLyAqIHkgY29tcHJpcyBsZXMgbWFuZGF0cyBhY2hldsOpc1xuICAgICAgLy8gKiB5IGNvbXByaXMgbGV1cnMgcGFydGlzIHBvbGl0aXF1ZXMgICh0eXBlT3JnYW5lOiBcIlBBUlBPTFwiKVxuICAgICAgLy8gKiBtYWlzIHNhbnMgbGVzIG1hbmRhdHMgZGVzIGzDqWdpc2xhdHVyZXMgcHLDqWPDqWRlbnRlcyAocXVpIHNvbnQgZGFucyBBTU80MClcbiAgICAgIC8vXG4gICAgICAvLyBDb250aWVudCB0b3VzIGxlcyBvcmdhbmVzIHLDqWbDqXJlbmPDqXMgcGFyIGxlcyBtYW5kYXRzXG4gICAgICAvLyAqIGF2ZWMgbGUgeHNpVHlwZSBkZSBsJ29yZ2FuZVxuICAgICAgLy8gKiBhdmVjIGRlcyBjb21taXNzaW9ucyBzw6luYXRvcmlhbGVzIChwZXJtYW5lbnRlcyBldCBzcMOpY2lhbGVzKSBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGRlcyBkw6lsw6lnYXRpb25zIHPDqW5hdG9yaWFsZXMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZ3JvdXBlcyBzw6luYXRvcmlhdXggZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgbWluaXN0w6hyZXMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBsZXMgUHLDqXNpZGVuY2VzIGRlIGxhIFLDqXB1YmxpcXVlICh5IGNvbXByaXMgU2Fya296eSlcbiAgICAgIC8vICogYXZlYyBsZSBDb25zZWlsIGNvbnN0aXR1dGlvbm5lbFxuICAgICAgLy9cbiAgICAgIC8vIENlIGZpY2hpZXIgZXN0IHVuIHNvdXMtZW5zZW1ibGUgw6AgdG91cyBsZXMgbml2ZWF1eCBkdSBmaWNoaWVyIEFNTzMwLlxuICAgICAgLy8gSWwgbidhcHBvcnRlIGRvbmMgYWJzb2x1bWVudCByaWVuIHBhciByYXBwb3J0IMOgIGwnQU1PMzAuXG4gICAgICBmaWxlbmFtZTogXCJBTU8yMF9kZXBfc2VuX21pbl90b3VzX21hbmRhdHNfZXRfb3JnYW5lc19YVi5qc29uXCIsXG4gICAgICBpZ25vcmVGb3JXZWI6IHRydWUsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuUXVpbnplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkFjdGV1cnMgZXQgb3JnYW5lcyBkZSBsYSBYVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS9hbW8vZGVwdXRlc19zZW5hdGV1cnNfbWluaXN0cmVzX2xlZ2lzbGF0dXJlL0FNTzIwX2RlcF9zZW5fbWluX3RvdXNfbWFuZGF0c19ldF9vcmdhbmVzX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU8yMCAoWElWKVxuICAgICAgLy9cbiAgICAgIC8vIENvbW1lIEFNTzIwIChYVikgbWFpcyBwb3VyIGxhIFhJVsOobWUgbMOpZ2lzbGF0dXJlXG4gICAgICAvLyBUb3VzIGxlcyBhY3RldXJzIHNhdWYgdW4gKFBBNDI5ODkyKSBzb250IHByw6lzZW50cyBlbiBwbHVzIMOgIGpvdXIgZGFucyBBTU8zMC5cbiAgICAgIC8vIENldCBhY3RldXIgUEE0Mjk4OTIgKGFuY2llbm5lIFPDqW5hdHJpY2UpIG4nZXN0IHByw6lzZW50IGRhbnMgYXVjdW4gZGVzIGF1dHJlc1xuICAgICAgLy8gZmljaGllcnMgQU1PLlxuICAgICAgLy8gVG91cyBsZXMgb3JnYW5lcyBzb250IHByw6lzZW50cyBlbiBwbHVzIGNvbXBsZXRzIGRhbnMgQU1PMzAuXG4gICAgICAvL1xuICAgICAgLy8gQ2UgZmljaGllciBlc3QgZG9uYyDDoCB1biBkw6l0YWlsIHByw6p0IChQQTQyOTg5MikgdW4gc291cy1lbnNlbWJsZSBkJ0FNTzMwLlxuICAgICAgLy8gSWwgbidhcHBvcnRlIGRvbmMgcXVhc2ltZW50IHJpZW4gcGFyIHJhcHBvcnQgw6AgbCdBTU8zMC5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzIwX2RlcF9zZW5fbWluX3RvdXNfbWFuZGF0c19ldF9vcmdhbmVzX1hJVi5qc29uXCIsXG4gICAgICBpZ25vcmVGb3JXZWI6IHRydWUsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuUXVhdG9yemUsXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZSxcbiAgICAgIHRpdGxlOiBcIkFjdGV1cnMgZXQgb3JnYW5lcyBkZSBsYSBYSVbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTQvYW1vL2RlcHV0ZXNfc2VuYXRldXJzX21pbmlzdHJlc19sZWdpc2xhdHVyZXNfWElWL0FNTzIwX2RlcF9zZW5fbWluX3RvdXNfbWFuZGF0c19ldF9vcmdhbmVzX1hJVi5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQU1PMzAgKFhWSSlcbiAgICAgIC8vXG4gICAgICAvLyBDZSBmaWNoaWVyIGNvbnRpZW50IHRvdXMgbGVzIGFjdGV1cnMgZXQgb3JnYW5lcy5cbiAgICAgIC8vIEMnZXN0IHVuIHN1ci1lbnNlbWJsZSBkZXMgZmljaGllcnMgQU1PMjAuXG4gICAgICBmaWxlbmFtZTogXCJBTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5BbGwsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5tb3ZlU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJqc29uXCIpLCB0YXJnZXREaXIpXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6XG4gICAgICAgIFwiSGlzdG9yaXF1ZSBkZSB0b3VzIGxlcyBhY3RldXJzIGV0IG9yZ2FuZXMgZGVwdWlzIGxhIFhJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L2Ftby90b3VzX2FjdGV1cnNfbWFuZGF0c19vcmdhbmVzX3hpX2xlZ2lzbGF0dXJlL0FNTzMwX3RvdXNfYWN0ZXVyc190b3VzX21hbmRhdHNfdG91c19vcmdhbmVzX2hpc3RvcmlxdWUuanNvbi56aXBcIixcbiAgICB9LFxuICAgIC8vIHtcbiAgICAvLyAgIC8vIEFNTzMwIChYVilcbiAgICAvLyAgIC8vXG4gICAgLy8gICAvLyBDZSBmaWNoaWVyIGNvbnRpZW50IHRvdXMgbGVzIGFjdGV1cnMgZXQgb3JnYW5lcy5cbiAgICAvLyAgIC8vIEMnZXN0IHVuIHN1ci1lbnNlbWJsZSBkZXMgZmljaGllcnMgQU1PMjAuXG4gICAgLy8gICBmaWxlbmFtZTogXCJBTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlLmpzb25cIixcbiAgICAvLyAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5BbGwsXG4gICAgLy8gICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAvLyAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgLy8gICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAvLyAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAvLyAgICAgfVxuICAgIC8vICAgICBmcy5tb3ZlU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJqc29uXCIpLCB0YXJnZXREaXIpXG4gICAgLy8gICB9LFxuICAgIC8vICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgIC8vICAgdGl0bGU6XG4gICAgLy8gICAgIFwiSGlzdG9yaXF1ZSBkZSB0b3VzIGxlcyBhY3RldXJzIGV0IG9yZ2FuZXMgZGVwdWlzIGxhIFhJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAvLyAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE1L2Ftby90b3VzX2FjdGV1cnNfbWFuZGF0c19vcmdhbmVzX3hpX2xlZ2lzbGF0dXJlL0FNTzMwX3RvdXNfYWN0ZXVyc190b3VzX21hbmRhdHNfdG91c19vcmdhbmVzX2hpc3RvcmlxdWUuanNvbi56aXBcIixcbiAgICAvLyB9LFxuICAgIHtcbiAgICAgIC8vIEFNTzQwIChYVkkpXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgbGVzIGTDqXB1dMOpcyBhY3RpZnMgKGxlcyBtw6ptZXMgcXUnQU1PMjApXG4gICAgICAvLyAqIGF2ZWMgcHJlc3F1ZSB0b3VzIGxldXJzIG1hbmRhdHNcbiAgICAgIC8vICogeSBjb21wcmlzIGxlcyBtYW5kYXRzIGFjaGV2w6lzIGV0IGNldXggZGVzIGzDqWdpc2xhdHVyZXMgcHLDqWPDqWRlbnRlc1xuICAgICAgLy8gKiB5IGNvbXByaXMgbGV1cnMgcGFydGlzIHBvbGl0aXF1ZXMgcHLDqWPDqWRlbnRzXG4gICAgICAvLyAqIG1haXMgc2FucyBsZXVyIHBhcnRpIHBvbGl0aXF1ZSBhY3R1ZWwgKHR5cGVPcmdhbmU6IFwiUEFSUE9MXCIpXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgYmVhdWNvdXAgZCdvcmdhbmVzIHLDqWbDqXJlbmPDqXMsIHkgY29tcHJpcyBjZXV4IGRlcyBsw6lnaXNsYXR1cmVzXG4gICAgICAvLyBwcsOpY8OpZGVudGVzXG4gICAgICAvLyAqIG1haXMgaWwgbWFucXVlIGxlIHhzaVR5cGUgZGVzIG9yZ2FuZXNcbiAgICAgIC8vICogbmUgY29udGllbnQgcGFzIGxlcyBvcmdhbmVzIHPDqW5hdG9yaWF1eFxuICAgICAgLy8gKiBuZSBjb250aWVudCBwYXMgbGVzIG1pbmlzdMOocmVzXG4gICAgICAvLyAqIG5lIGNvbnRpZW50IHBhcyBsYSBQcsOpc2lkZW5jZSBkZSBsYSBSw6lwdWJsaXF1ZVxuICAgICAgLy8gKiBuZSBjb250aWVudCBwYXMgbGUgQ29uc2VpbCBjb25zdGl0dXRpb25uZWxcbiAgICAgIC8vXG4gICAgICAvLyBQb3VyIGxlcyBhY3RldXJzLCBjZSBkw6lww7R0IGVzdCB1biBzb3VzLWVuc2VtYmxlIHN0cmljdCBkZSBBTU8zMCA6XG4gICAgICAvLyBJbCBhIG1vaW5zIGQnYWN0ZXVycyBldCBpbCBzb250IG1vaW5zIGNvbXBsZXRzLlxuICAgICAgLy9cbiAgICAgIC8vIFBvdXIgbGVzIG9yZ2FuZXMgOlxuICAgICAgLy8gUXVhbmQgbCdvcmdhbmUgZXN0IGF1c3NpIHByw6lzZW50IGRhbnMgQU1PMzAsIGlsIHZhdXQgbWlldXggcHJlbmRyZSBjZWx1aVxuICAgICAgLy8gZCdBTU8zMCwgY2FyIGlsIGNvbnRpZW50IGxlIHhzaVR5cGUgKGMnZXN0IGxhIHNldWxlIGRpZmbDqXJlbmNlIHNlbWJsZS10LWkpLlxuICAgICAgLy8gU2lub24sIGlsIGZhdXQgbGUgcHJlbmRyZSBzZXVsZW1lbnQgc2kgb24gZXN0IGludMOpcmVzc8OpIHBhciBsZXMgbMOpZ2lzbGF0dXJlc1xuICAgICAgLy8gcHLDqWPDqWRlbnRlcy5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzQwX2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXNfZGl2aXNlc19YVkkuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubWtkaXJTeW5jKHRhcmdldERpcilcbiAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwiYWN0ZXVyXCIpLFxuICAgICAgICAgIHBhdGguam9pbih0YXJnZXREaXIsIFwiYWN0ZXVyXCIpLFxuICAgICAgICApXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcIm9yZ2FuZVwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcIm9yZ2FuZVwiKSxcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkTDqXB1dMOpcyBhY3RpZnMgZXQgb3JnYW5lcyBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTYvYW1vL2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXNfZGl2aXNlcy9BTU80MF9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzX2RpdmlzZXMuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEFNTzQwIChYVilcbiAgICAgIC8vXG4gICAgICAvLyBDb250aWVudCBsZXMgZMOpcHV0w6lzIGFjdGlmcyAobGVzIG3Dqm1lcyBxdSdBTU8yMClcbiAgICAgIC8vICogYXZlYyBwcmVzcXVlIHRvdXMgbGV1cnMgbWFuZGF0c1xuICAgICAgLy8gKiB5IGNvbXByaXMgbGVzIG1hbmRhdHMgYWNoZXbDqXMgZXQgY2V1eCBkZXMgbMOpZ2lzbGF0dXJlcyBwcsOpY8OpZGVudGVzXG4gICAgICAvLyAqIHkgY29tcHJpcyBsZXVycyBwYXJ0aXMgcG9saXRpcXVlcyBwcsOpY8OpZGVudHNcbiAgICAgIC8vICogbWFpcyBzYW5zIGxldXIgcGFydGkgcG9saXRpcXVlIGFjdHVlbCAodHlwZU9yZ2FuZTogXCJQQVJQT0xcIilcbiAgICAgIC8vXG4gICAgICAvLyBDb250aWVudCBiZWF1Y291cCBkJ29yZ2FuZXMgcsOpZsOpcmVuY8OpcywgeSBjb21wcmlzIGNldXggZGVzIGzDqWdpc2xhdHVyZXNcbiAgICAgIC8vIHByw6ljw6lkZW50ZXNcbiAgICAgIC8vICogbWFpcyBpbCBtYW5xdWUgbGUgeHNpVHlwZSBkZXMgb3JnYW5lc1xuICAgICAgLy8gKiBuZSBjb250aWVudCBwYXMgbGVzIG9yZ2FuZXMgc8OpbmF0b3JpYXV4XG4gICAgICAvLyAqIG5lIGNvbnRpZW50IHBhcyBsZXMgbWluaXN0w6hyZXNcbiAgICAgIC8vICogbmUgY29udGllbnQgcGFzIGxhIFByw6lzaWRlbmNlIGRlIGxhIFLDqXB1YmxpcXVlXG4gICAgICAvLyAqIG5lIGNvbnRpZW50IHBhcyBsZSBDb25zZWlsIGNvbnN0aXR1dGlvbm5lbFxuICAgICAgLy9cbiAgICAgIC8vIFBvdXIgbGVzIGFjdGV1cnMsIGNlIGTDqXDDtHQgZXN0IHVuIHNvdXMtZW5zZW1ibGUgc3RyaWN0IGRlIEFNTzMwIDpcbiAgICAgIC8vIElsIGEgbW9pbnMgZCdhY3RldXJzIGV0IGlsIHNvbnQgbW9pbnMgY29tcGxldHMuXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgb3JnYW5lcyA6XG4gICAgICAvLyBRdWFuZCBsJ29yZ2FuZSBlc3QgYXVzc2kgcHLDqXNlbnQgZGFucyBBTU8zMCwgaWwgdmF1dCBtaWV1eCBwcmVuZHJlIGNlbHVpXG4gICAgICAvLyBkJ0FNTzMwLCBjYXIgaWwgY29udGllbnQgbGUgeHNpVHlwZSAoYydlc3QgbGEgc2V1bGUgZGlmZsOpcmVuY2Ugc2VtYmxlLXQtaSkuXG4gICAgICAvLyBTaW5vbiwgaWwgZmF1dCBsZSBwcmVuZHJlIHNldWxlbWVudCBzaSBvbiBlc3QgaW50w6lyZXNzw6kgcGFyIGxlcyBsw6lnaXNsYXR1cmVzXG4gICAgICAvLyBwcsOpY8OpZGVudGVzLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PNDBfZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lc19kaXZpc2VzX1hWLmpzb25cIixcbiAgICAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWluemUsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5ta2RpclN5bmModGFyZ2V0RGlyKVxuICAgICAgICBmcy5tb3ZlU3luYyhcbiAgICAgICAgICBwYXRoLmpvaW4oZGF0YURpciwgXCJhY3RldXJcIiksXG4gICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJhY3RldXJcIiksXG4gICAgICAgIClcbiAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwib3JnYW5lXCIpLFxuICAgICAgICAgIHBhdGguam9pbih0YXJnZXREaXIsIFwib3JnYW5lXCIpLFxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiRMOpcHV0w6lzIGFjdGlmcyBldCBvcmdhbmVzIGRlIGxhIFhWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE1L2Ftby9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzX2RpdmlzZXMvQU1PNDBfZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lc19kaXZpc2VzX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU81MCAoWFZJKVxuICAgICAgLy9cbiAgICAgIC8vIEF0dGVudGlvbiwgY2UgZmljaGllciBuJ2VzdCBwYXMgbWlzIMOgIGpvdXIgcsOpZ3VsacOocmVtZW50ICFcbiAgICAgIC8vXG4gICAgICAvLyBQb3VyIGxlcyBhY3RldXJzIDpcbiAgICAgIC8vICogYydlc3QgdW4gc291cyBlbnNlbWJsZSBvYnNvbMOodGUgZCdBTU8zMFxuICAgICAgLy8gKiBpbCBtYW5xdWUgbGVzIHhzaVR5cGUgYXV4IG1hbmRhdHNcbiAgICAgIC8vXG4gICAgICAvLyBQb3VyIGxlcyBvcmdhbmVzIDpcbiAgICAgIC8vICogYydlc3QgdW4gc291cyBlbnNlbWJsZSBvYnNvbMOodGUgZCdBTU8zMFxuICAgICAgLy8gKiBpbCBtYW5xdWUgbGVzIHhzaVR5cGVcbiAgICAgIC8vXG4gICAgICAvLyBDZSBmaWNoaWVyIG4nYXBwb3J0ZSBkb25jIGFic29sdW1lbnQgcmllbiBwYXIgcmFwcG9ydCDDoCBsJ0FNTzMwLFxuICAgICAgLy8gZG9udCBpbCBlc3QgdW4gc291cyBlbnNlbWJsZSBvYnNvbMOodGUuXG4gICAgICBmaWxlbmFtZTogXCJBTU81MF9hY3RldXJzX21hbmRhdHNfb3JnYW5lc19kaXZpc2VzX1hWSS5qc29uXCIsXG4gICAgICBpZ25vcmVGb3JXZWI6IHRydWUsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuU2VpemUsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5ta2RpclN5bmModGFyZ2V0RGlyKVxuICAgICAgICBmcy5tb3ZlU3luYyhcbiAgICAgICAgICBwYXRoLmpvaW4oZGF0YURpciwgXCJtYW5kYXRcIiksXG4gICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJtYW5kYXRcIiksXG4gICAgICAgIClcbiAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwiYWN0ZXVyXCIpLFxuICAgICAgICAgIHBhdGguam9pbih0YXJnZXREaXIsIFwiYWN0ZXVyXCIpLFxuICAgICAgICApXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcIm9yZ2FuZVwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcIm9yZ2FuZVwiKSxcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOlxuICAgICAgICBcIkFjdGV1cnMsIG1hbmRhdHMgZXQgb3JnYW5lcyBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZSAoZmljaGllcnMgc8OpcGFyw6lzLCB5IGNvbXByaXMgbWFuZGF0cylcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L2Ftby9hY3RldXJzX21hbmRhdHNfb3JnYW5lc19kaXZpc2VzL0FNTzUwX2FjdGV1cnNfbWFuZGF0c19vcmdhbmVzX2RpdmlzZXMuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEFNTzUwIChYVilcbiAgICAgIC8vXG4gICAgICAvLyBBdHRlbnRpb24sIGNlIGZpY2hpZXIgbidlc3QgcGFzIG1pcyDDoCBqb3VyIHLDqWd1bGnDqHJlbWVudCAhXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgYWN0ZXVycyA6XG4gICAgICAvLyAqIGMnZXN0IHVuIHNvdXMgZW5zZW1ibGUgb2Jzb2zDqHRlIGQnQU1PMzBcbiAgICAgIC8vICogaWwgbWFucXVlIGxlcyB4c2lUeXBlIGF1eCBtYW5kYXRzXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgb3JnYW5lcyA6XG4gICAgICAvLyAqIGMnZXN0IHVuIHNvdXMgZW5zZW1ibGUgb2Jzb2zDqHRlIGQnQU1PMzBcbiAgICAgIC8vICogaWwgbWFucXVlIGxlcyB4c2lUeXBlXG4gICAgICAvL1xuICAgICAgLy8gQ2UgZmljaGllciBuJ2FwcG9ydGUgZG9uYyBhYnNvbHVtZW50IHJpZW4gcGFyIHJhcHBvcnQgw6AgbCdBTU8zMCxcbiAgICAgIC8vIGRvbnQgaWwgZXN0IHVuIHNvdXMgZW5zZW1ibGUgb2Jzb2zDqHRlLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PNTBfYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXNfZGl2aXNlc19YVi5qc29uXCIsXG4gICAgICBpZ25vcmVGb3JXZWI6IHRydWUsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuUXVpbnplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubWtkaXJTeW5jKHRhcmdldERpcilcbiAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwibWFuZGF0XCIpLFxuICAgICAgICAgIHBhdGguam9pbih0YXJnZXREaXIsIFwibWFuZGF0XCIpLFxuICAgICAgICApXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgKVxuICAgICAgICBmcy5tb3ZlU3luYyhcbiAgICAgICAgICBwYXRoLmpvaW4oZGF0YURpciwgXCJvcmdhbmVcIiksXG4gICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJvcmdhbmVcIiksXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTpcbiAgICAgICAgXCJBY3RldXJzLCBtYW5kYXRzIGV0IG9yZ2FuZXMgZGUgbGEgWFbDqG1lIGzDqWdpc2xhdHVyZSAoZmljaGllcnMgc8OpcGFyw6lzLCB5IGNvbXByaXMgbWFuZGF0cylcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE1L2Ftby9hY3RldXJzX21hbmRhdHNfb3JnYW5lc19kaXZpc2VzL0FNTzUwX2FjdGV1cnNfbWFuZGF0c19vcmdhbmVzX2RpdmlzZXNfWFYuanNvbi56aXBcIixcbiAgICB9LFxuICBdLFxuICBhZ2VuZGFzOiBbXG4gICAge1xuICAgICAgZmlsZW5hbWU6IFwiQWdlbmRhX1hWSS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuU2VpemUsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5tb3ZlU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJqc29uXCIpLCB0YXJnZXREaXIpXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiQWdlbmRhIGRlIGxhIFhWScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi92cC9yZXVuaW9ucy9BZ2VuZGEuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkFnZW5kYV9YVi5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuUXVpbnplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkFnZW5kYSBkZSBsYSBYVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS92cC9yZXVuaW9ucy9BZ2VuZGFfWFYuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkFnZW5kYV9YSVYuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1YXRvcnplLFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGUsXG4gICAgICB0aXRsZTogXCJBZ2VuZGEgZGUgbGEgWElWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE0L3ZwL3JldW5pb25zL0FnZW5kYV9YSVYuanNvbi56aXBcIixcbiAgICB9LFxuICBdLFxuICBhbWVuZGVtZW50czogW1xuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkFtZW5kZW1lbnRzX1hWSS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuU2VpemUsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5tb3ZlU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJqc29uXCIpLCB0YXJnZXREaXIpXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiQW1lbmRlbWVudHMgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L2xvaS9hbWVuZGVtZW50c19kaXZfbGVnaXMvQW1lbmRlbWVudHMuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkFtZW5kZW1lbnRzX1hWLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWluemUsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5tb3ZlU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJqc29uXCIpLCB0YXJnZXREaXIpXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiQW1lbmRlbWVudHMgZGUgbGEgWFbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTUvbG9pL2FtZW5kZW1lbnRzX2xlZ2lzL0FtZW5kZW1lbnRzX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICAvLyB7XG4gICAgLy8gICBmaWxlbmFtZTogXCJBbWVuZGVtZW50c19YSVYuanNvblwiLFxuICAgIC8vICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgIC8vICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1YXRvcnplLFxuICAgIC8vICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGUsXG4gICAgLy8gICB0aXRsZTogXCJBbWVuZGVtZW50cyBkZSBsYSBYSVbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgIC8vICAgdXJsOlxuICAgIC8vICAgICBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTQvbG9pL2FtZW5kZW1lbnRzX2xlZ2lzX1hJVi9BbWVuZGVtZW50c19YSVYuanNvbi56aXBcIixcbiAgICAvLyB9LFxuICBdLFxuICBkb3NzaWVyc0xlZ2lzbGF0aWZzOiBbXG4gICAge1xuICAgICAgZmlsZW5hbWU6IFwiRG9zc2llcnNfTGVnaXNsYXRpZnNfWFZJLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5TZWl6ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1vdmVTeW5jKHBhdGguam9pbihkYXRhRGlyLCBcImpzb25cIiksIHRhcmdldERpcilcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJEb3NzaWVycyBsw6lnaXNsYXRpZnMgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L2xvaS9kb3NzaWVyc19sZWdpc2xhdGlmcy9Eb3NzaWVyc19MZWdpc2xhdGlmcy5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZW5hbWU6IFwiRG9zc2llcnNfTGVnaXNsYXRpZnNfWFYuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1vdmVTeW5jKHBhdGguam9pbihkYXRhRGlyLCBcImpzb25cIiksIHRhcmdldERpcilcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJEb3NzaWVycyBsw6lnaXNsYXRpZnMgZGUgbGEgWFbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTUvbG9pL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzL0Rvc3NpZXJzX0xlZ2lzbGF0aWZzX1hWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJEb3NzaWVyc19MZWdpc2xhdGlmc19YSVYuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1YXRvcnplLFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGUsXG4gICAgICB0aXRsZTogXCJEb3NzaWVycyBsw6lnaXNsYXRpZnMgZGUgbGEgWElWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE0L2xvaS9kb3NzaWVyc19sZWdpc2xhdGlmcy9Eb3NzaWVyc19MZWdpc2xhdGlmc19YSVYuanNvbi56aXBcIixcbiAgICB9LFxuICBdLFxuICBzY3J1dGluczogW1xuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIlNjcnV0aW5zX1hWSS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuU2VpemUsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5tb3ZlU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJqc29uXCIpLCB0YXJnZXREaXIpXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiU2NydXRpbnMgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L2xvaS9zY3J1dGlucy9TY3J1dGlucy5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZW5hbWU6IFwiU2NydXRpbnNfWFYuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1vdmVTeW5jKHBhdGguam9pbihkYXRhRGlyLCBcImpzb25cIiksIHRhcmdldERpcilcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJTY3J1dGlucyBkZSBsYSBYVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS9sb2kvc2NydXRpbnMvU2NydXRpbnNfWFYuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIlNjcnV0aW5zX1hJVi5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuUXVhdG9yemUsXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZSxcbiAgICAgIHRpdGxlOiBcIlNjcnV0aW5zIGRlIGxhIFhJVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNC9sb2kvc2NydXRpbnMvU2NydXRpbnNfWElWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgXSxcbiAgcXVlc3Rpb25zOiBbXG4gICAge1xuICAgICAgZmlsZW5hbWU6IFwiUXVlc3Rpb25zX2Vjcml0ZXNfWFZJLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5TZWl6ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1vdmVTeW5jKHBhdGguam9pbihkYXRhRGlyLCBcImpzb25cIiksIHRhcmdldERpcilcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJRdWVzdGlvbnMgw6ljcml0ZXMgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L3F1ZXN0aW9ucy9xdWVzdGlvbnNfZWNyaXRlcy9RdWVzdGlvbnNfZWNyaXRlcy5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZW5hbWU6IFwiUXVlc3Rpb25zX2dvdXZlcm5lbWVudF9YVkkuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwianNvblwiKSwgdGFyZ2V0RGlyKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIlF1ZXN0aW9ucyBhdSBnb3V2ZXJuZW1lbnQgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L3F1ZXN0aW9ucy9xdWVzdGlvbnNfZ291dmVybmVtZW50L1F1ZXN0aW9uc19nb3V2ZXJuZW1lbnQuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIlF1ZXN0aW9uc19vcmFsZXNfWFZJLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5TZWl6ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1vdmVTeW5jKHBhdGguam9pbihkYXRhRGlyLCBcImpzb25cIiksIHRhcmdldERpcilcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJRdWVzdGlvbnMgb3JhbGVzIHNhbnMgZMOpYmF0cyBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTYvcXVlc3Rpb25zL3F1ZXN0aW9uc19vcmFsZXNfc2Fuc19kZWJhdC9RdWVzdGlvbnNfb3JhbGVzX3NhbnNfZGViYXQuanNvbi56aXBcIixcbiAgICB9LFxuICBdLFxuICBjb21wdGVzUmVuZHVzU2VhbmNlczogW1xuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkNvbXB0ZXNfUmVuZHVzX1NlYW5jZXNfWFZJLnhtbFwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwieG1sXCIpLCB0YXJnZXREaXIpXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiQ29tcHRlcyByZW5kdXMgZGVzIHPDqWFuY2VzIHB1YmxpcXVlcyBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHBzOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L3ZwL3N5Y2Vyb25icnV0L3N5c2Vyb24ueG1sLnppcFwiLFxuICAgIH0sXG4gIF0sXG59XG5cbmNvbnN0IGRpcmVjdG9yeTJzY2hlbWE6IGFueSA9IHtcbiAgXCIuKkFnZW5kYV8uKlwiOiBcImFnZW5kYVwiLFxuICBcIi4qU2NydXRpbnNfLipcIjogXCJzY3J1dGluXCIsXG4gIFwiLipRdWVzdGlvbnNfLipcIjogXCJxdWVzdGlvblwiLFxuICBcIi4qQW1lbmRlbWVudHNfLipcIjogXCJhbWVuZGVtZW50XCIsXG4gIFwiLipEb3NzaWVyc19MZWdpc2xhdGlmc18uKi9kb2N1bWVudHNcIjogXCJkb2N1bWVudFwiLFxuICBcIi4qRG9zc2llcnNfTGVnaXNsYXRpZnNfLiovZG9zc2llcnNcIjogXCJkb3NzaWVyXCIsXG4gIFwiLiphY3RldXJzX21hbmRhdHNfb3JnYW5lcy9vcmdhbmVzXCI6IFwib3JnYW5lXCIsXG4gIFwiLiphY3RldXJzX21hbmRhdHNfb3JnYW5lcy9hY3RldXJzXCI6IFwiYWN0ZXVyXCIsXG4gIFwiLipBTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlLiovb3JnYW5lc1wiOlxuICAgIFwib3JnYW5lXCIsXG4gIFwiLipBTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlLiovYWN0ZXVyc1wiOlxuICAgIFwiYWN0ZXVyXCIsXG4gIFwiLipDb21wdGVzX1JlbmR1c19TZWFuY2VzXy4qXCI6IFwiZGViYXRcIixcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGFzZXRzKCk6IGFueSB7XG4gIHJldHVybiBbXG4gICAgXCJBZ2VuZGFfWElWXCIsXG4gICAgXCJBZ2VuZGFfWFZcIixcbiAgICBcIkFnZW5kYV9YVklcIixcbiAgICBcIlNjcnV0aW5zX1hJVlwiLFxuICAgIFwiU2NydXRpbnNfWFZcIixcbiAgICBcIlNjcnV0aW5zX1hWSVwiLFxuICAgIFwiUXVlc3Rpb25zX0Vjcml0ZXNfWFZJXCIsXG4gICAgXCJRdWVzdGlvbnNfR291dmVybmVtZW50X1hWSVwiLFxuICAgIFwiQW1lbmRlbWVudHNfWElWXCIsXG4gICAgXCJBbWVuZGVtZW50c19YVlwiLFxuICAgIFwiQW1lbmRlbWVudHNfWFZJXCIsXG4gICAgXCJEb3NzaWVyc19MZWdpc2xhdGlmc19YSVZcIixcbiAgICBcIkRvc3NpZXJzX0xlZ2lzbGF0aWZzX1hWXCIsXG4gICAgXCJEb3NzaWVyc19MZWdpc2xhdGlmc19YVklcIixcbiAgICBcIkFNTzMwX3RvdXNfYWN0ZXVyc190b3VzX21hbmRhdHNfdG91c19vcmdhbmVzX2hpc3RvcmlxdWVcIixcbiAgICBcImFjdGV1cnNfbWFuZGF0c19vcmdhbmVzXCIsXG4gICAgXCJDb21wdGVzX1JlbmR1c19TZWFuY2VzX1hWSVwiLFxuICBdXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZERhdGFzZXQoZGlyOiBhbnkpOiBhbnkge1xuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZ2V0RGF0YXNldHMoKSkge1xuICAgIGlmIChkaXIuaW5jbHVkZXMoZGF0YXNldCkpIHJldHVybiB0cnVlXG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY2hlbWFzKCk6IGFueSB7XG4gIHJldHVybiBPYmplY3QudmFsdWVzKGRpcmVjdG9yeTJzY2hlbWEpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRhc2V0RGlyZWN0b3J5U2NoZW1hKGRhdGFzZXQ6IHN0cmluZyk6IGFueSB7XG4gIGxldCBkaXJlY3RvcmllczogYW55XG4gIGlmIChkYXRhc2V0LmluY2x1ZGVzKFwiRG9zc2llcnNfTGVnaXNsYXRpZnNfXCIpKSB7XG4gICAgZGlyZWN0b3JpZXMgPSBbYCR7ZGF0YXNldH0vZG9jdW1lbnRzYCwgYCR7ZGF0YXNldH0vZG9zc2llcnNgXVxuICB9IGVsc2UgaWYgKFxuICAgIGRhdGFzZXQuaW5jbHVkZXMoXCJhY3RldXJzX21hbmRhdHNfb3JnYW5lc1wiKSB8fFxuICAgIGRhdGFzZXQuaW5jbHVkZXMoXCJBTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlXCIpXG4gICkge1xuICAgIGRpcmVjdG9yaWVzID0gW2Ake2RhdGFzZXR9L29yZ2FuZXNgLCBgJHtkYXRhc2V0fS9hY3RldXJzYF1cbiAgfSBlbHNlIHtcbiAgICBkaXJlY3RvcmllcyA9IFtkYXRhc2V0XVxuICB9XG5cbiAgbGV0IHJlc3VsdHMgPSBbXVxuICBmb3IgKGNvbnN0IGRpcmVjdG9yeSBvZiBkaXJlY3Rvcmllcykge1xuICAgIGZvciAoY29uc3QgcmUgb2YgT2JqZWN0LmtleXMoZGlyZWN0b3J5MnNjaGVtYSkpIHtcbiAgICAgIGlmIChuZXcgUmVnRXhwKHJlKS5leGVjKGRpcmVjdG9yeSkpXG4gICAgICAgIHJlc3VsdHMucHVzaChbYCR7ZGlyZWN0b3J5fS8qKi8qLmpzb25gLCBkaXJlY3Rvcnkyc2NoZW1hW3JlXV0pXG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHRzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWxlRGF0YXNldFVybChmaWxlbmFtZTogc3RyaW5nKTogW3N0cmluZywgc3RyaW5nXSB8IG51bGwge1xuICBjb25zdCByZSA9IFwiXi4qLyguKilfbmV0dG95ZS8oLiopXCJcbiAgY29uc3QgbWF0Y2ggPSBuZXcgUmVnRXhwKHJlKS5leGVjKGZpbGVuYW1lKVxuICBpZiAobWF0Y2ggPT0gbnVsbCkgcmV0dXJuIG51bGxcbiAgbGV0IFtkYXRhc2V0LCBmaWxlXSA9IFttYXRjaFsxXSwgbWF0Y2hbMl1dXG4gIGlmIChkYXRhc2V0ID09IFwiQU1PMzBfdG91c19hY3RldXJzX3RvdXNfbWFuZGF0c190b3VzX29yZ2FuZXNfaGlzdG9yaXF1ZVwiKVxuICAgIGRhdGFzZXQgPSBcImFjdGV1cnNfbWFuZGF0c19vcmdhbmVzXCJcbiAgcmV0dXJuIFtkYXRhc2V0LCBmaWxlXVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlmZlVwc3RyZWFtKGZpbGVuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBkYXRhc2V0VXJsID0gZmlsZURhdGFzZXRVcmwoZmlsZW5hbWUpXG4gIGlmIChkYXRhc2V0VXJsID09IG51bGwpIHJldHVybiBmaWxlbmFtZVxuICBjb25zdCBbZGF0YXNldCwgZmlsZV0gPSBkYXRhc2V0VXJsXG4gIGNvbnN0IHN1bSA9IGNyZWF0ZUhhc2goXCJzaGExXCIpLnVwZGF0ZShmaWxlKS5kaWdlc3QoXCJoZXhcIikudG9TdHJpbmcoKVxuICByZXR1cm4gYFske2ZpbGV9XShodHRwczovL2dpdC5lbi1yb290Lm9yZy90cmljb3RldXNlcy9kYXRhLnRyaWNvdGV1c2VzLmZyLyR7ZGF0YXNldH0vLS9jb21wYXJlL3Vwc3RyZWFtLi4ubWFzdGVyIyR7c3VtfSlgXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXN0ZXJVcmwoZmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGRhdGFzZXRVcmwgPSBmaWxlRGF0YXNldFVybChmaWxlbmFtZSlcbiAgaWYgKGRhdGFzZXRVcmwgPT0gbnVsbCkgcmV0dXJuIGZpbGVuYW1lXG4gIGNvbnN0IFtkYXRhc2V0LCBmaWxlXSA9IGRhdGFzZXRVcmxcbiAgcmV0dXJuIGBbJHtmaWxlfV0oaHR0cHM6Ly9naXQuZW4tcm9vdC5vcmcvdHJpY290ZXVzZXMvZGF0YS50cmljb3RldXNlcy5mci8ke2RhdGFzZXR9Ly0vdHJlZS9tYXN0ZXIvJHtmaWxlfSlgXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJCeUxlZ2lzbGF0dXJlKFxuICBkYXRhc2V0czogRGF0YXNldHMsXG4gIGxlZ2lzbGF0dXJlOiBhbnksXG4pOiBEYXRhc2V0cyB7XG4gIC8vIFdoZW4gYSBnaXZlbiBsZWdpc2xhdHVyZSBpcyAwLCBpdCBpcyB0aGUgc2FtZSBhcyBnaXZpbmcgbm8gbGVnaXNsYXR1cmU6XG4gIC8vIEl0IG1lYW5zIFwiZXZlcnkgbGVnaXNsYXR1cmVzXCIuXG4gIGNvbnN0IGxlZ2lzbGF0dXJlcyA9IGxlZ2lzbGF0dXJlPy5zb21lKFxuICAgIChsZWdpc2xhdHVyZTogbnVtYmVyKSA9PiBsZWdpc2xhdHVyZSA9PT0gMCxcbiAgKVxuICAgID8gdW5kZWZpbmVkXG4gICAgOiBsZWdpc2xhdHVyZVxuICBpZiAobGVnaXNsYXR1cmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBlbmFibGVkTGVnaXNsYXR1cmVzID0gbGVnaXNsYXR1cmVzLm1hcCgobGVnaXNsYXR1cmU6IG51bWJlcikgPT5cbiAgICAgIGxlZ2lzbGF0dXJlLnRvU3RyaW5nKCksXG4gICAgKVxuICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhkYXRhc2V0cykpIHtcbiAgICAgIGRhdGFzZXRzW2tleSBhcyBrZXlvZiB0eXBlb2YgZGF0YXNldHNdID0gdmFsdWUuZmlsdGVyKFxuICAgICAgICAoZGF0YXNldDogeyBsZWdpc2xhdHVyZTogYW55IH0pID0+XG4gICAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSA9PT0gTGVnaXNsYXR1cmUuQWxsIHx8XG4gICAgICAgICAgZW5hYmxlZExlZ2lzbGF0dXJlcy5pbmNsdWRlcyhkYXRhc2V0LmxlZ2lzbGF0dXJlKSxcbiAgICAgIClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRhdGFzZXRzXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFVBQVUsUUFBUSxRQUFRO0FBQ25DLE9BQU9DLEVBQUUsTUFBTSxVQUFVO0FBQ3pCLE9BQU9DLElBQUksTUFBTSxNQUFNO0FBQUEsU0FFZEMsV0FBVztBQXNCcEIsV0FBWUMsZ0JBQWdCLDBCQUFoQkEsZ0JBQWdCO0VBQWhCQSxnQkFBZ0IsQ0FBaEJBLGdCQUFnQjtFQUFoQkEsZ0JBQWdCLENBQWhCQSxnQkFBZ0I7RUFBQSxPQUFoQkEsZ0JBQWdCO0FBQUE7QUFLNUIsV0FBWUMsZUFBZSwwQkFBZkEsZUFBZTtFQUFmQSxlQUFlLENBQWZBLGVBQWU7RUFBZkEsZUFBZSxDQUFmQSxlQUFlO0VBQWZBLGVBQWUsQ0FBZkEsZUFBZTtFQUFmQSxlQUFlLENBQWZBLGVBQWU7RUFBZkEsZUFBZSxDQUFmQSxlQUFlO0VBQWZBLGVBQWUsQ0FBZkEsZUFBZTtFQUFmQSxlQUFlLENBQWZBLGVBQWU7RUFBZkEsZUFBZSxDQUFmQSxlQUFlO0VBQWZBLGVBQWUsQ0FBZkEsZUFBZTtFQUFmQSxlQUFlLENBQWZBLGVBQWU7RUFBQSxPQUFmQSxlQUFlO0FBQUE7QUFvQjNCLE9BQU8sTUFBTUMsUUFBa0IsR0FBRztFQUNoQ0MsZ0JBQWdCLEVBQUUsQ0FDaEI7SUFDRTtJQUNBO0lB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
|
|
541
|
+
export function getEnabledDatasets(categories) {
|
|
542
|
+
categories.map(datasetName => assert.notStrictEqual(EnabledDatasets[datasetName], undefined, `Unknown name of dataset: ${datasetName}`));
|
|
543
|
+
return categories.reduce((enabledDatasets, datasetName) => enabledDatasets | EnabledDatasets[datasetName], EnabledDatasets.None);
|
|
544
|
+
}
|
|
545
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVIYXNoIiwiYXNzZXJ0IiwiZnMiLCJwYXRoIiwiTGVnaXNsYXR1cmUiLCJEYXRhc2V0U3RydWN0dXJlIiwiRW5hYmxlZERhdGFzZXRzIiwicmVwYWlyRm9ySnNvblN1YmRpcmVjdG9yeSIsImRhdGFzZXQiLCJkYXRhRGlyIiwidGFyZ2V0RGlyIiwiam9pbiIsImZpbGVuYW1lIiwiZXhpc3RzU3luYyIsInJlbW92ZVN5bmMiLCJtb3ZlU3luYyIsImRhdGFzZXRzIiwiYWN0ZXVyc0V0T3JnYW5lcyIsImlnbm9yZUZvcldlYiIsImxlZ2lzbGF0dXJlIiwiU2VpemUiLCJyZXBhaXJaaXAiLCJzdHJ1Y3R1cmUiLCJTZWdtZW50ZWRGaWxlcyIsInRpdGxlIiwidXJsIiwiUXVpbnplIiwiUXVhdG9yemUiLCJTaW5nbGVGaWxlIiwiQWxsIiwibWtkaXJTeW5jIiwicGF0aEV4aXN0c1N5bmMiLCJhZ2VuZGFzIiwiYW1lbmRlbWVudHMiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzIiwic2NydXRpbnMiLCJxdWVzdGlvbnMiLCJjb21wdGVzUmVuZHVzU2VhbmNlcyIsImRpcmVjdG9yeTJzY2hlbWEiLCJnZXREYXRhc2V0cyIsInZhbGlkRGF0YXNldCIsImRpciIsImluY2x1ZGVzIiwiZ2V0U2NoZW1hcyIsIk9iamVjdCIsInZhbHVlcyIsImRhdGFzZXREaXJlY3RvcnlTY2hlbWEiLCJkaXJlY3RvcmllcyIsInJlc3VsdHMiLCJkaXJlY3RvcnkiLCJyZSIsImtleXMiLCJSZWdFeHAiLCJleGVjIiwicHVzaCIsImZpbGVEYXRhc2V0VXJsIiwibWF0Y2giLCJmaWxlIiwiZGlmZlVwc3RyZWFtIiwiZGF0YXNldFVybCIsInN1bSIsInVwZGF0ZSIsImRpZ2VzdCIsInRvU3RyaW5nIiwibWFzdGVyVXJsIiwiZmlsdGVyQnlMZWdpc2xhdHVyZSIsInVuZGVmaW5lZCIsImtleSIsInZhbHVlIiwiZW50cmllcyIsImZpbHRlciIsImdldEVuYWJsZWREYXRhc2V0cyIsImNhdGVnb3JpZXMiLCJtYXAiLCJkYXRhc2V0TmFtZSIsIm5vdFN0cmljdEVxdWFsIiwicmVkdWNlIiwiZW5hYmxlZERhdGFzZXRzIiwiTm9uZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kYXRhc2V0cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSBcImNyeXB0b1wiXG5pbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbmltcG9ydCB7IExlZ2lzbGF0dXJlIH0gZnJvbSBcIi4vdHlwZXMvbGVnaXNsYXR1cmVzXCJcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhc2V0IHtcbiAgZmlsZW5hbWU6IHN0cmluZ1xuICBpZ25vcmVGb3JXZWI/OiBib29sZWFuXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZVxuICByZXBhaXJaaXA/OiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB2b2lkXG4gIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZVxuICB0aXRsZTogc3RyaW5nXG4gIHVybDogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXNldHMge1xuICBhY3RldXJzRXRPcmdhbmVzOiBEYXRhc2V0W11cbiAgYWdlbmRhczogRGF0YXNldFtdXG4gIGFtZW5kZW1lbnRzOiBEYXRhc2V0W11cbiAgZG9zc2llcnNMZWdpc2xhdGlmczogRGF0YXNldFtdXG4gIHNjcnV0aW5zOiBEYXRhc2V0W11cbiAgcXVlc3Rpb25zOiBEYXRhc2V0W11cbiAgY29tcHRlc1JlbmR1c1NlYW5jZXM6IERhdGFzZXRbXVxufVxuXG5leHBvcnQgZW51bSBEYXRhc2V0U3RydWN0dXJlIHtcbiAgU2luZ2xlRmlsZSxcbiAgU2VnbWVudGVkRmlsZXMsXG59XG5cbmV4cG9ydCBlbnVtIEVuYWJsZWREYXRhc2V0cyB7XG4gIE5vbmUgPSAwLFxuICBBY3RldXJzRXRPcmdhbmVzID0gMSA8PCAwLFxuICBBZ2VuZGFzID0gMSA8PCAxLFxuICBBbWVuZGVtZW50cyA9IDEgPDwgMixcbiAgRG9zc2llcnNMZWdpc2xhdGlmcyA9IDEgPDwgMyxcbiAgUGhvdG9zID0gMSA8PCA0LFxuICBTY3J1dGlucyA9IDEgPDwgNSxcbiAgUXVlc3Rpb25zID0gMSA8PCA2LFxuICBDb21wdGVzUmVuZHVzU2VhbmNlcyA9IDEgPDwgNyxcbiAgQWxsID0gQWN0ZXVyc0V0T3JnYW5lcyB8XG4gICAgQWdlbmRhcyB8XG4gICAgQW1lbmRlbWVudHMgfFxuICAgIERvc3NpZXJzTGVnaXNsYXRpZnMgfFxuICAgIFBob3RvcyB8XG4gICAgU2NydXRpbnMgfFxuICAgIFF1ZXN0aW9ucyB8XG4gICAgQ29tcHRlc1JlbmR1c1NlYW5jZXMsXG59XG5cbi8vIFRoZSB6aXAgZmlsZXMgKG5hbWVkIE5BTUUuanNvbi56aXApIHVzdWFsbHkgY29udGFpbiBhIHNpbmdsZSBzdWJmb2xkZXIgbmFtZWQgXCJqc29uXCJcbi8vIGNvbnRhaW5pbmcgdGhlIGFjdHVhbCBjb250ZW50c1xuLy8gV2UnZCByYXRoZXIgcmVuYW1lIHRoZSBmb2xkZXIgTkFNRS5qc29uXG5mdW5jdGlvbiByZXBhaXJGb3JKc29uU3ViZGlyZWN0b3J5KGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykge1xuICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICB9XG4gIGZzLm1vdmVTeW5jKHBhdGguam9pbihkYXRhRGlyLCBcImpzb25cIiksIHRhcmdldERpcilcbn1cblxuZXhwb3J0IGNvbnN0IGRhdGFzZXRzOiBEYXRhc2V0cyA9IHtcbiAgYWN0ZXVyc0V0T3JnYW5lczogW1xuICAgIHtcbiAgICAgIC8vIEFNTzEwIChYVkkpXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgbGVzIGTDqXB1dMOpcyBhY3RpZnNcbiAgICAgIC8vICogYXZlYyB0b3VzIGxlcyBtYW5kYXRzIGVuIGNvdXJzXG4gICAgICAvLyAqIHkgY29tcHJpcyBhdmVjIGxldXIgcGFydGkgcG9saXRpcXVlICh0eXBlT3JnYW5lOiBcIlBBUlBPTFwiKVxuICAgICAgLy8gKiBtYWlzIHNhbnMgbGVzIG1hbmRhdHMgYWNoZXbDqXMgKHkgY29tcHJpcyBkYW5zIGNldHRlIGzDqWdpc2xhdHVyZSlcbiAgICAgIC8vXG4gICAgICAvLyBPcmdhbmVzIDpcbiAgICAgIC8vICogQ29udGllbnQgc2V1bGVtZW50IGxlcyBvcmdhbmVzIGNvcnJlc3BvbmRhbnRzIGF1eCBtYW5kYXRzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgbGUgeHNpVHlwZSBkZSBsJ29yZ2FuZVxuICAgICAgLy8gKiBhdmVjIGRlcyBjb21taXNzaW9ucyBzw6luYXRvcmlhbGVzIChwZXJtYW5lbnRlcyBldCBzcMOpY2lhbGVzKSBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGRlcyBkw6lsw6lnYXRpb25zIHPDqW5hdG9yaWFsZXMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZ3JvdXBlcyBzw6luYXRvcmlhdXggZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgbWluaXN0w6hyZXMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBsZXMgUHLDqXNpZGVuY2VzIGRlIGxhIFLDqXB1YmxpcXVlICh5IGNvbXByaXMgU2Fya296eSlcbiAgICAgIC8vICogYXZlYyBsZSBDb25zZWlsIGNvbnN0aXR1dGlvbm5lbFxuICAgICAgLy9cbiAgICAgIC8vIENlIGZpY2hpZXIgZXN0IHVuIHNvdXMtZW5zZW1ibGUgw6AgdG91cyBsZXMgbml2ZWF1eCBkdSBmaWNoaWVyIEFNTzIwXG4gICAgICAvLyAocXVpIGVzdCBsdWkgbcOqbWUgdW4gc291cy1lbnNlbWJsZSBkZSBsJ0FNTzMwKS5cbiAgICAgIC8vIElsIG4nYXBwb3J0ZSBkb25jIGFic29sdW1lbnQgcmllbiBwYXIgcmFwcG9ydCDDoCBBTU8yMCBvdSBsJ0FNTzMwLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PMTBfZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lc19YVkkuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiByZXBhaXJGb3JKc29uU3ViZGlyZWN0b3J5LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiRMOpcHV0w6lzIGFjdGlmcyBldCBvcmdhbmVzIGRlIGxhIFhWScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9hbW8vZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lcy9BTU8xMF9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBBTU8xMCAoWFYpXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgbGVzIGTDqXB1dMOpcyBhY3RpZnNcbiAgICAgIC8vICogYXZlYyB0b3VzIGxlcyBtYW5kYXRzIGVuIGNvdXJzXG4gICAgICAvLyAqIHkgY29tcHJpcyBhdmVjIGxldXIgcGFydGkgcG9saXRpcXVlICh0eXBlT3JnYW5lOiBcIlBBUlBPTFwiKVxuICAgICAgLy8gKiBtYWlzIHNhbnMgbGVzIG1hbmRhdHMgYWNoZXbDqXMgKHkgY29tcHJpcyBkYW5zIGNldHRlIGzDqWdpc2xhdHVyZSlcbiAgICAgIC8vXG4gICAgICAvLyBPcmdhbmVzIDpcbiAgICAgIC8vICogQ29udGllbnQgc2V1bGVtZW50IGxlcyBvcmdhbmVzIGNvcnJlc3BvbmRhbnRzIGF1eCBtYW5kYXRzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgbGUgeHNpVHlwZSBkZSBsJ29yZ2FuZVxuICAgICAgLy8gKiBhdmVjIGRlcyBjb21taXNzaW9ucyBzw6luYXRvcmlhbGVzIChwZXJtYW5lbnRlcyBldCBzcMOpY2lhbGVzKSBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGRlcyBkw6lsw6lnYXRpb25zIHPDqW5hdG9yaWFsZXMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZ3JvdXBlcyBzw6luYXRvcmlhdXggZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgbWluaXN0w6hyZXMgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBsZXMgUHLDqXNpZGVuY2VzIGRlIGxhIFLDqXB1YmxpcXVlICh5IGNvbXByaXMgU2Fya296eSlcbiAgICAgIC8vICogYXZlYyBsZSBDb25zZWlsIGNvbnN0aXR1dGlvbm5lbFxuICAgICAgLy9cbiAgICAgIC8vIENlIGZpY2hpZXIgZXN0IHVuIHNvdXMtZW5zZW1ibGUgw6AgdG91cyBsZXMgbml2ZWF1eCBkdSBmaWNoaWVyIEFNTzIwXG4gICAgICAvLyAocXVpIGVzdCBsdWkgbcOqbWUgdW4gc291cy1lbnNlbWJsZSBkZSBsJ0FNTzMwKS5cbiAgICAgIC8vIElsIG4nYXBwb3J0ZSBkb25jIGFic29sdW1lbnQgcmllbiBwYXIgcmFwcG9ydCDDoCBBTU8yMCBvdSBsJ0FNTzMwLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PMTBfZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lc19YVi5qc29uXCIsXG4gICAgICBpZ25vcmVGb3JXZWI6IHRydWUsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuUXVpbnplLFxuICAgICAgcmVwYWlyWmlwOiByZXBhaXJGb3JKc29uU3ViZGlyZWN0b3J5LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiRMOpcHV0w6lzIGFjdGlmcyBldCBvcmdhbmVzIGRlIGxhIFhWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE1L2Ftby9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzL0FNTzEwX2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXNfWFYuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEFNTzIwIChYVkkpXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgbGVzIGTDqXB1dMOpcyBkZSBsYSBsw6lnaXNsYXR1cmUsIGFjdGlmcyBvdSBub24gKGludmFsaWTDqXMsIGV0YyksIGxlcyBzw6luYXRldXJzIGFjdHVlbHNcbiAgICAgIC8vIFBvdXIgbGVzIGTDqXB1dMOpcyA6XG4gICAgICAvLyAqIGF2ZWMgdG91cyBsZXVycyBtYW5kYXRzIGRlIGxhIGzDqWdpc2xhdHVyZVxuICAgICAgLy8gKiB5IGNvbXByaXMgbGVzIG1hbmRhdHMgYWNoZXbDqXNcbiAgICAgIC8vICogeSBjb21wcmlzIGxldXJzIHBhcnRpcyBwb2xpdGlxdWVzICAodHlwZU9yZ2FuZTogXCJQQVJQT0xcIilcbiAgICAgIC8vICogbWFpcyBzYW5zIGxlcyBtYW5kYXRzIGRlcyBsw6lnaXNsYXR1cmVzIHByw6ljw6lkZW50ZXMgKHF1aSBzb250IGRhbnMgQU1PNDApXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgdG91cyBsZXMgb3JnYW5lcyByw6lmw6lyZW5jw6lzIHBhciBsZXMgbWFuZGF0c1xuICAgICAgLy8gKiBhdmVjIGxlIHhzaVR5cGUgZGUgbCdvcmdhbmVcbiAgICAgIC8vICogYXZlYyBkZXMgY29tbWlzc2lvbnMgc8OpbmF0b3JpYWxlcyAocGVybWFuZW50ZXMgZXQgc3DDqWNpYWxlcykgZW4gY291cnNcbiAgICAgIC8vICogYXZlYyBkZXMgZMOpbMOpZ2F0aW9ucyBzw6luYXRvcmlhbGVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIGdyb3VwZXMgc8OpbmF0b3JpYXV4IGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIG1pbmlzdMOocmVzIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgbGVzIFByw6lzaWRlbmNlcyBkZSBsYSBSw6lwdWJsaXF1ZSAoeSBjb21wcmlzIFNhcmtvenkpXG4gICAgICAvLyAqIGF2ZWMgbGUgQ29uc2VpbCBjb25zdGl0dXRpb25uZWxcbiAgICAgIC8vXG4gICAgICAvLyBDZSBmaWNoaWVyIGVzdCB1biBzb3VzLWVuc2VtYmxlIMOgIHRvdXMgbGVzIG5pdmVhdXggZHUgZmljaGllciBBTU8zMC5cbiAgICAgIC8vIElsIG4nYXBwb3J0ZSBkb25jIGFic29sdW1lbnQgcmllbiBwYXIgcmFwcG9ydCDDoCBsJ0FNTzMwLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PMjBfZGVwX3Nlbl9taW5fdG91c19tYW5kYXRzX2V0X29yZ2FuZXNfWFZJLmpzb25cIixcbiAgICAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5TZWl6ZSxcbiAgICAgIHJlcGFpclppcDogcmVwYWlyRm9ySnNvblN1YmRpcmVjdG9yeSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkFjdGV1cnMgZXQgb3JnYW5lcyBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTYvYW1vL2RlcHV0ZXNfc2VuYXRldXJzX21pbmlzdHJlc19sZWdpc2xhdHVyZS9BTU8yMF9kZXBfc2VuX21pbl90b3VzX21hbmRhdHNfZXRfb3JnYW5lcy5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQU1PMjAgKFhWKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGxlcyBkw6lwdXTDqXMgZGUgbGEgbMOpZ2lzbGF0dXJlLCBhY3RpZnMgb3Ugbm9uIChpbnZhbGlkw6lzLCBldGMpLCBsZXMgc8OpbmF0ZXVycyBhY3R1ZWxzXG4gICAgICAvLyBQb3VyIGxlcyBkw6lwdXTDqXMgOlxuICAgICAgLy8gKiBhdmVjIHRvdXMgbGV1cnMgbWFuZGF0cyBkZSBsYSBsw6lnaXNsYXR1cmVcbiAgICAgIC8vICogeSBjb21wcmlzIGxlcyBtYW5kYXRzIGFjaGV2w6lzXG4gICAgICAvLyAqIHkgY29tcHJpcyBsZXVycyBwYXJ0aXMgcG9saXRpcXVlcyAgKHR5cGVPcmdhbmU6IFwiUEFSUE9MXCIpXG4gICAgICAvLyAqIG1haXMgc2FucyBsZXMgbWFuZGF0cyBkZXMgbMOpZ2lzbGF0dXJlcyBwcsOpY8OpZGVudGVzIChxdWkgc29udCBkYW5zIEFNTzQwKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IHRvdXMgbGVzIG9yZ2FuZXMgcsOpZsOpcmVuY8OpcyBwYXIgbGVzIG1hbmRhdHNcbiAgICAgIC8vICogYXZlYyBsZSB4c2lUeXBlIGRlIGwnb3JnYW5lXG4gICAgICAvLyAqIGF2ZWMgZGVzIGNvbW1pc3Npb25zIHPDqW5hdG9yaWFsZXMgKHBlcm1hbmVudGVzIGV0IHNww6ljaWFsZXMpIGVuIGNvdXJzXG4gICAgICAvLyAqIGF2ZWMgZGVzIGTDqWzDqWdhdGlvbnMgc8OpbmF0b3JpYWxlcyBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGRlcyBncm91cGVzIHPDqW5hdG9yaWF1eCBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGRlcyBtaW5pc3TDqHJlcyBlbiBjb3Vyc1xuICAgICAgLy8gKiBhdmVjIGxlcyBQcsOpc2lkZW5jZXMgZGUgbGEgUsOpcHVibGlxdWUgKHkgY29tcHJpcyBTYXJrb3p5KVxuICAgICAgLy8gKiBhdmVjIGxlIENvbnNlaWwgY29uc3RpdHV0aW9ubmVsXG4gICAgICAvL1xuICAgICAgLy8gQ2UgZmljaGllciBlc3QgdW4gc291cy1lbnNlbWJsZSDDoCB0b3VzIGxlcyBuaXZlYXV4IGR1IGZpY2hpZXIgQU1PMzAuXG4gICAgICAvLyBJbCBuJ2FwcG9ydGUgZG9uYyBhYnNvbHVtZW50IHJpZW4gcGFyIHJhcHBvcnQgw6AgbCdBTU8zMC5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzIwX2RlcF9zZW5fbWluX3RvdXNfbWFuZGF0c19ldF9vcmdhbmVzX1hWLmpzb25cIixcbiAgICAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWluemUsXG4gICAgICByZXBhaXJaaXA6IHJlcGFpckZvckpzb25TdWJkaXJlY3RvcnksXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJBY3RldXJzIGV0IG9yZ2FuZXMgZGUgbGEgWFbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTUvYW1vL2RlcHV0ZXNfc2VuYXRldXJzX21pbmlzdHJlc19sZWdpc2xhdHVyZS9BTU8yMF9kZXBfc2VuX21pbl90b3VzX21hbmRhdHNfZXRfb3JnYW5lc19YVi5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQU1PMjAgKFhJVilcbiAgICAgIC8vXG4gICAgICAvLyBDb21tZSBBTU8yMCAoWFYpIG1haXMgcG91ciBsYSBYSVbDqG1lIGzDqWdpc2xhdHVyZVxuICAgICAgLy8gVG91cyBsZXMgYWN0ZXVycyBzYXVmIHVuIChQQTQyOTg5Mikgc29udCBwcsOpc2VudHMgZW4gcGx1cyDDoCBqb3VyIGRhbnMgQU1PMzAuXG4gICAgICAvLyBDZXQgYWN0ZXVyIFBBNDI5ODkyIChhbmNpZW5uZSBTw6luYXRyaWNlKSBuJ2VzdCBwcsOpc2VudCBkYW5zIGF1Y3VuIGRlcyBhdXRyZXNcbiAgICAgIC8vIGZpY2hpZXJzIEFNTy5cbiAgICAgIC8vIFRvdXMgbGVzIG9yZ2FuZXMgc29udCBwcsOpc2VudHMgZW4gcGx1cyBjb21wbGV0cyBkYW5zIEFNTzMwLlxuICAgICAgLy9cbiAgICAgIC8vIENlIGZpY2hpZXIgZXN0IGRvbmMgw6AgdW4gZMOpdGFpbCBwcsOqdCAoUEE0Mjk4OTIpIHVuIHNvdXMtZW5zZW1ibGUgZCdBTU8zMC5cbiAgICAgIC8vIElsIG4nYXBwb3J0ZSBkb25jIHF1YXNpbWVudCByaWVuIHBhciByYXBwb3J0IMOgIGwnQU1PMzAuXG4gICAgICBmaWxlbmFtZTogXCJBTU8yMF9kZXBfc2VuX21pbl90b3VzX21hbmRhdHNfZXRfb3JnYW5lc19YSVYuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1YXRvcnplLFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGUsXG4gICAgICB0aXRsZTogXCJBY3RldXJzIGV0IG9yZ2FuZXMgZGUgbGEgWElWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE0L2Ftby9kZXB1dGVzX3NlbmF0ZXVyc19taW5pc3RyZXNfbGVnaXNsYXR1cmVzX1hJVi9BTU8yMF9kZXBfc2VuX21pbl90b3VzX21hbmRhdHNfZXRfb3JnYW5lc19YSVYuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEFNTzMwIChYVkkpXG4gICAgICAvL1xuICAgICAgLy8gQ2UgZmljaGllciBjb250aWVudCB0b3VzIGxlcyBhY3RldXJzIGV0IG9yZ2FuZXMuXG4gICAgICAvLyBDJ2VzdCB1biBzdXItZW5zZW1ibGUgZGVzIGZpY2hpZXJzIEFNTzIwLlxuICAgICAgZmlsZW5hbWU6IFwiQU1PMzBfdG91c19hY3RldXJzX3RvdXNfbWFuZGF0c190b3VzX29yZ2FuZXNfaGlzdG9yaXF1ZS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuQWxsLFxuICAgICAgcmVwYWlyWmlwOiByZXBhaXJGb3JKc29uU3ViZGlyZWN0b3J5LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6XG4gICAgICAgIFwiSGlzdG9yaXF1ZSBkZSB0b3VzIGxlcyBhY3RldXJzIGV0IG9yZ2FuZXMgZGVwdWlzIGxhIFhJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L2Ftby90b3VzX2FjdGV1cnNfbWFuZGF0c19vcmdhbmVzX3hpX2xlZ2lzbGF0dXJlL0FNTzMwX3RvdXNfYWN0ZXVyc190b3VzX21hbmRhdHNfdG91c19vcmdhbmVzX2hpc3RvcmlxdWUuanNvbi56aXBcIixcbiAgICB9LFxuICAgIC8vIHtcbiAgICAvLyAgIC8vIEFNTzMwIChYVilcbiAgICAvLyAgIC8vXG4gICAgLy8gICAvLyBDZSBmaWNoaWVyIGNvbnRpZW50IHRvdXMgbGVzIGFjdGV1cnMgZXQgb3JnYW5lcy5cbiAgICAvLyAgIC8vIEMnZXN0IHVuIHN1ci1lbnNlbWJsZSBkZXMgZmljaGllcnMgQU1PMjAuXG4gICAgLy8gICBmaWxlbmFtZTogXCJBTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlLmpzb25cIixcbiAgICAvLyAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5BbGwsXG4gICAgLy8gICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAvLyAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgLy8gICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAvLyAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAvLyAgICAgfVxuICAgIC8vICAgICBmcy5tb3ZlU3luYyhwYXRoLmpvaW4oZGF0YURpciwgXCJqc29uXCIpLCB0YXJnZXREaXIpXG4gICAgLy8gICB9LFxuICAgIC8vICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgIC8vICAgdGl0bGU6XG4gICAgLy8gICAgIFwiSGlzdG9yaXF1ZSBkZSB0b3VzIGxlcyBhY3RldXJzIGV0IG9yZ2FuZXMgZGVwdWlzIGxhIFhJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAvLyAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE1L2Ftby90b3VzX2FjdGV1cnNfbWFuZGF0c19vcmdhbmVzX3hpX2xlZ2lzbGF0dXJlL0FNTzMwX3RvdXNfYWN0ZXVyc190b3VzX21hbmRhdHNfdG91c19vcmdhbmVzX2hpc3RvcmlxdWUuanNvbi56aXBcIixcbiAgICAvLyB9LFxuICAgIHtcbiAgICAgIC8vIEFNTzQwIChYVkkpXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgbGVzIGTDqXB1dMOpcyBhY3RpZnMgKGxlcyBtw6ptZXMgcXUnQU1PMjApXG4gICAgICAvLyAqIGF2ZWMgcHJlc3F1ZSB0b3VzIGxldXJzIG1hbmRhdHNcbiAgICAgIC8vICogeSBjb21wcmlzIGxlcyBtYW5kYXRzIGFjaGV2w6lzIGV0IGNldXggZGVzIGzDqWdpc2xhdHVyZXMgcHLDqWPDqWRlbnRlc1xuICAgICAgLy8gKiB5IGNvbXByaXMgbGV1cnMgcGFydGlzIHBvbGl0aXF1ZXMgcHLDqWPDqWRlbnRzXG4gICAgICAvLyAqIG1haXMgc2FucyBsZXVyIHBhcnRpIHBvbGl0aXF1ZSBhY3R1ZWwgKHR5cGVPcmdhbmU6IFwiUEFSUE9MXCIpXG4gICAgICAvL1xuICAgICAgLy8gQ29udGllbnQgYmVhdWNvdXAgZCdvcmdhbmVzIHLDqWbDqXJlbmPDqXMsIHkgY29tcHJpcyBjZXV4IGRlcyBsw6lnaXNsYXR1cmVzXG4gICAgICAvLyBwcsOpY8OpZGVudGVzXG4gICAgICAvLyAqIG1haXMgaWwgbWFucXVlIGxlIHhzaVR5cGUgZGVzIG9yZ2FuZXNcbiAgICAgIC8vICogbmUgY29udGllbnQgcGFzIGxlcyBvcmdhbmVzIHPDqW5hdG9yaWF1eFxuICAgICAgLy8gKiBuZSBjb250aWVudCBwYXMgbGVzIG1pbmlzdMOocmVzXG4gICAgICAvLyAqIG5lIGNvbnRpZW50IHBhcyBsYSBQcsOpc2lkZW5jZSBkZSBsYSBSw6lwdWJsaXF1ZVxuICAgICAgLy8gKiBuZSBjb250aWVudCBwYXMgbGUgQ29uc2VpbCBjb25zdGl0dXRpb25uZWxcbiAgICAgIC8vXG4gICAgICAvLyBQb3VyIGxlcyBhY3RldXJzLCBjZSBkw6lww7R0IGVzdCB1biBzb3VzLWVuc2VtYmxlIHN0cmljdCBkZSBBTU8zMCA6XG4gICAgICAvLyBJbCBhIG1vaW5zIGQnYWN0ZXVycyBldCBpbCBzb250IG1vaW5zIGNvbXBsZXRzLlxuICAgICAgLy9cbiAgICAgIC8vIFBvdXIgbGVzIG9yZ2FuZXMgOlxuICAgICAgLy8gUXVhbmQgbCdvcmdhbmUgZXN0IGF1c3NpIHByw6lzZW50IGRhbnMgQU1PMzAsIGlsIHZhdXQgbWlldXggcHJlbmRyZSBjZWx1aVxuICAgICAgLy8gZCdBTU8zMCwgY2FyIGlsIGNvbnRpZW50IGxlIHhzaVR5cGUgKGMnZXN0IGxhIHNldWxlIGRpZmbDqXJlbmNlIHNlbWJsZS10LWkpLlxuICAgICAgLy8gU2lub24sIGlsIGZhdXQgbGUgcHJlbmRyZSBzZXVsZW1lbnQgc2kgb24gZXN0IGludMOpcmVzc8OpIHBhciBsZXMgbMOpZ2lzbGF0dXJlc1xuICAgICAgLy8gcHLDqWPDqWRlbnRlcy5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzQwX2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXNfZGl2aXNlc19YVkkuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubWtkaXJTeW5jKHRhcmdldERpcilcbiAgICAgICAgaWYgKGZzLnBhdGhFeGlzdHNTeW5jKHBhdGguam9pbihkYXRhRGlyLCBcImFjdGV1clwiKSkpIHtcbiAgICAgICAgICAvLyBOb3RlOyBMZSByw6lwZXJ0b2lyZSBhY3RldXIgcGV1dCBkaXNwYXJhw650cmUgZW4gZmluIGRlIGzDqWdpc2xhdHVyZVxuICAgICAgICAgIC8vIHF1YW5kIGxlcyBtYW5kYXRzIGRlcyBkw6lwdXTDqXMgcydpbnRlcnJvbXBlbnQuXG4gICAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgICBwYXRoLmpvaW4oZGF0YURpciwgXCJhY3RldXJcIiksXG4gICAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwib3JnYW5lXCIpLFxuICAgICAgICAgIHBhdGguam9pbih0YXJnZXREaXIsIFwib3JnYW5lXCIpLFxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiRMOpcHV0w6lzIGFjdGlmcyBldCBvcmdhbmVzIGRlIGxhIFhWScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9hbW8vZGVwdXRlc19hY3RpZnNfbWFuZGF0c19hY3RpZnNfb3JnYW5lc19kaXZpc2VzL0FNTzQwX2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXNfZGl2aXNlcy5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQU1PNDAgKFhWKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGxlcyBkw6lwdXTDqXMgYWN0aWZzIChsZXMgbcOqbWVzIHF1J0FNTzIwKVxuICAgICAgLy8gKiBhdmVjIHByZXNxdWUgdG91cyBsZXVycyBtYW5kYXRzXG4gICAgICAvLyAqIHkgY29tcHJpcyBsZXMgbWFuZGF0cyBhY2hldsOpcyBldCBjZXV4IGRlcyBsw6lnaXNsYXR1cmVzIHByw6ljw6lkZW50ZXNcbiAgICAgIC8vICogeSBjb21wcmlzIGxldXJzIHBhcnRpcyBwb2xpdGlxdWVzIHByw6ljw6lkZW50c1xuICAgICAgLy8gKiBtYWlzIHNhbnMgbGV1ciBwYXJ0aSBwb2xpdGlxdWUgYWN0dWVsICh0eXBlT3JnYW5lOiBcIlBBUlBPTFwiKVxuICAgICAgLy9cbiAgICAgIC8vIENvbnRpZW50IGJlYXVjb3VwIGQnb3JnYW5lcyByw6lmw6lyZW5jw6lzLCB5IGNvbXByaXMgY2V1eCBkZXMgbMOpZ2lzbGF0dXJlc1xuICAgICAgLy8gcHLDqWPDqWRlbnRlc1xuICAgICAgLy8gKiBtYWlzIGlsIG1hbnF1ZSBsZSB4c2lUeXBlIGRlcyBvcmdhbmVzXG4gICAgICAvLyAqIG5lIGNvbnRpZW50IHBhcyBsZXMgb3JnYW5lcyBzw6luYXRvcmlhdXhcbiAgICAgIC8vICogbmUgY29udGllbnQgcGFzIGxlcyBtaW5pc3TDqHJlc1xuICAgICAgLy8gKiBuZSBjb250aWVudCBwYXMgbGEgUHLDqXNpZGVuY2UgZGUgbGEgUsOpcHVibGlxdWVcbiAgICAgIC8vICogbmUgY29udGllbnQgcGFzIGxlIENvbnNlaWwgY29uc3RpdHV0aW9ubmVsXG4gICAgICAvL1xuICAgICAgLy8gUG91ciBsZXMgYWN0ZXVycywgY2UgZMOpcMO0dCBlc3QgdW4gc291cy1lbnNlbWJsZSBzdHJpY3QgZGUgQU1PMzAgOlxuICAgICAgLy8gSWwgYSBtb2lucyBkJ2FjdGV1cnMgZXQgaWwgc29udCBtb2lucyBjb21wbGV0cy5cbiAgICAgIC8vXG4gICAgICAvLyBQb3VyIGxlcyBvcmdhbmVzIDpcbiAgICAgIC8vIFF1YW5kIGwnb3JnYW5lIGVzdCBhdXNzaSBwcsOpc2VudCBkYW5zIEFNTzMwLCBpbCB2YXV0IG1pZXV4IHByZW5kcmUgY2VsdWlcbiAgICAgIC8vIGQnQU1PMzAsIGNhciBpbCBjb250aWVudCBsZSB4c2lUeXBlIChjJ2VzdCBsYSBzZXVsZSBkaWZmw6lyZW5jZSBzZW1ibGUtdC1pKS5cbiAgICAgIC8vIFNpbm9uLCBpbCBmYXV0IGxlIHByZW5kcmUgc2V1bGVtZW50IHNpIG9uIGVzdCBpbnTDqXJlc3PDqSBwYXIgbGVzIGzDqWdpc2xhdHVyZXNcbiAgICAgIC8vIHByw6ljw6lkZW50ZXMuXG4gICAgICBmaWxlbmFtZTogXCJBTU80MF9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzX2RpdmlzZXNfWFYuanNvblwiLFxuICAgICAgaWdub3JlRm9yV2ViOiB0cnVlLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1rZGlyU3luYyh0YXJnZXREaXIpXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcImFjdGV1clwiKSxcbiAgICAgICAgKVxuICAgICAgICBmcy5tb3ZlU3luYyhcbiAgICAgICAgICBwYXRoLmpvaW4oZGF0YURpciwgXCJvcmdhbmVcIiksXG4gICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJvcmdhbmVcIiksXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJEw6lwdXTDqXMgYWN0aWZzIGV0IG9yZ2FuZXMgZGUgbGEgWFbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTUvYW1vL2RlcHV0ZXNfYWN0aWZzX21hbmRhdHNfYWN0aWZzX29yZ2FuZXNfZGl2aXNlcy9BTU80MF9kZXB1dGVzX2FjdGlmc19tYW5kYXRzX2FjdGlmc19vcmdhbmVzX2RpdmlzZXNfWFYuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIC8vIEFNTzUwIChYVkkpXG4gICAgICAvL1xuICAgICAgLy8gQXR0ZW50aW9uLCBjZSBmaWNoaWVyIG4nZXN0IHBhcyBtaXMgw6Agam91ciByw6lndWxpw6hyZW1lbnQgIVxuICAgICAgLy9cbiAgICAgIC8vIFBvdXIgbGVzIGFjdGV1cnMgOlxuICAgICAgLy8gKiBjJ2VzdCB1biBzb3VzIGVuc2VtYmxlIG9ic29sw6h0ZSBkJ0FNTzMwXG4gICAgICAvLyAqIGlsIG1hbnF1ZSBsZXMgeHNpVHlwZSBhdXggbWFuZGF0c1xuICAgICAgLy9cbiAgICAgIC8vIFBvdXIgbGVzIG9yZ2FuZXMgOlxuICAgICAgLy8gKiBjJ2VzdCB1biBzb3VzIGVuc2VtYmxlIG9ic29sw6h0ZSBkJ0FNTzMwXG4gICAgICAvLyAqIGlsIG1hbnF1ZSBsZXMgeHNpVHlwZVxuICAgICAgLy9cbiAgICAgIC8vIENlIGZpY2hpZXIgbidhcHBvcnRlIGRvbmMgYWJzb2x1bWVudCByaWVuIHBhciByYXBwb3J0IMOgIGwnQU1PMzAsXG4gICAgICAvLyBkb250IGlsIGVzdCB1biBzb3VzIGVuc2VtYmxlIG9ic29sw6h0ZS5cbiAgICAgIGZpbGVuYW1lOiBcIkFNTzUwX2FjdGV1cnNfbWFuZGF0c19vcmdhbmVzX2RpdmlzZXNfWFZJLmpzb25cIixcbiAgICAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5TZWl6ZSxcbiAgICAgIHJlcGFpclppcDogKGRhdGFzZXQ6IERhdGFzZXQsIGRhdGFEaXI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YXJnZXREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmModGFyZ2V0RGlyKSkge1xuICAgICAgICAgIGZzLnJlbW92ZVN5bmModGFyZ2V0RGlyKVxuICAgICAgICB9XG4gICAgICAgIGZzLm1rZGlyU3luYyh0YXJnZXREaXIpXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcIm1hbmRhdFwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcIm1hbmRhdFwiKSxcbiAgICAgICAgKVxuICAgICAgICBmcy5tb3ZlU3luYyhcbiAgICAgICAgICBwYXRoLmpvaW4oZGF0YURpciwgXCJhY3RldXJcIiksXG4gICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJhY3RldXJcIiksXG4gICAgICAgIClcbiAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwib3JnYW5lXCIpLFxuICAgICAgICAgIHBhdGguam9pbih0YXJnZXREaXIsIFwib3JnYW5lXCIpLFxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6XG4gICAgICAgIFwiQWN0ZXVycywgbWFuZGF0cyBldCBvcmdhbmVzIGRlIGxhIFhWScOobWUgbMOpZ2lzbGF0dXJlIChmaWNoaWVycyBzw6lwYXLDqXMsIHkgY29tcHJpcyBtYW5kYXRzKVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTYvYW1vL2FjdGV1cnNfbWFuZGF0c19vcmdhbmVzX2RpdmlzZXMvQU1PNTBfYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXNfZGl2aXNlcy5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgLy8gQU1PNTAgKFhWKVxuICAgICAgLy9cbiAgICAgIC8vIEF0dGVudGlvbiwgY2UgZmljaGllciBuJ2VzdCBwYXMgbWlzIMOgIGpvdXIgcsOpZ3VsacOocmVtZW50ICFcbiAgICAgIC8vXG4gICAgICAvLyBQb3VyIGxlcyBhY3RldXJzIDpcbiAgICAgIC8vICogYydlc3QgdW4gc291cyBlbnNlbWJsZSBvYnNvbMOodGUgZCdBTU8zMFxuICAgICAgLy8gKiBpbCBtYW5xdWUgbGVzIHhzaVR5cGUgYXV4IG1hbmRhdHNcbiAgICAgIC8vXG4gICAgICAvLyBQb3VyIGxlcyBvcmdhbmVzIDpcbiAgICAgIC8vICogYydlc3QgdW4gc291cyBlbnNlbWJsZSBvYnNvbMOodGUgZCdBTU8zMFxuICAgICAgLy8gKiBpbCBtYW5xdWUgbGVzIHhzaVR5cGVcbiAgICAgIC8vXG4gICAgICAvLyBDZSBmaWNoaWVyIG4nYXBwb3J0ZSBkb25jIGFic29sdW1lbnQgcmllbiBwYXIgcmFwcG9ydCDDoCBsJ0FNTzMwLFxuICAgICAgLy8gZG9udCBpbCBlc3QgdW4gc291cyBlbnNlbWJsZSBvYnNvbMOodGUuXG4gICAgICBmaWxlbmFtZTogXCJBTU81MF9hY3RldXJzX21hbmRhdHNfb3JnYW5lc19kaXZpc2VzX1hWLmpzb25cIixcbiAgICAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWluemUsXG4gICAgICByZXBhaXJaaXA6IChkYXRhc2V0OiBEYXRhc2V0LCBkYXRhRGlyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHRhcmdldERpcikpIHtcbiAgICAgICAgICBmcy5yZW1vdmVTeW5jKHRhcmdldERpcilcbiAgICAgICAgfVxuICAgICAgICBmcy5ta2RpclN5bmModGFyZ2V0RGlyKVxuICAgICAgICBmcy5tb3ZlU3luYyhcbiAgICAgICAgICBwYXRoLmpvaW4oZGF0YURpciwgXCJtYW5kYXRcIiksXG4gICAgICAgICAgcGF0aC5qb2luKHRhcmdldERpciwgXCJtYW5kYXRcIiksXG4gICAgICAgIClcbiAgICAgICAgZnMubW92ZVN5bmMoXG4gICAgICAgICAgcGF0aC5qb2luKGRhdGFEaXIsIFwiYWN0ZXVyXCIpLFxuICAgICAgICAgIHBhdGguam9pbih0YXJnZXREaXIsIFwiYWN0ZXVyXCIpLFxuICAgICAgICApXG4gICAgICAgIGZzLm1vdmVTeW5jKFxuICAgICAgICAgIHBhdGguam9pbihkYXRhRGlyLCBcIm9yZ2FuZVwiKSxcbiAgICAgICAgICBwYXRoLmpvaW4odGFyZ2V0RGlyLCBcIm9yZ2FuZVwiKSxcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOlxuICAgICAgICBcIkFjdGV1cnMsIG1hbmRhdHMgZXQgb3JnYW5lcyBkZSBsYSBYVsOobWUgbMOpZ2lzbGF0dXJlIChmaWNoaWVycyBzw6lwYXLDqXMsIHkgY29tcHJpcyBtYW5kYXRzKVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTUvYW1vL2FjdGV1cnNfbWFuZGF0c19vcmdhbmVzX2RpdmlzZXMvQU1PNTBfYWN0ZXVyc19tYW5kYXRzX29yZ2FuZXNfZGl2aXNlc19YVi5qc29uLnppcFwiLFxuICAgIH0sXG4gIF0sXG4gIGFnZW5kYXM6IFtcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJBZ2VuZGFfWFZJLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5TZWl6ZSxcbiAgICAgIHJlcGFpclppcDogcmVwYWlyRm9ySnNvblN1YmRpcmVjdG9yeSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkFnZW5kYSBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTYvdnAvcmV1bmlvbnMvQWdlbmRhLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJBZ2VuZGFfWFYuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogcmVwYWlyRm9ySnNvblN1YmRpcmVjdG9yeSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkFnZW5kYSBkZSBsYSBYVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS92cC9yZXVuaW9ucy9BZ2VuZGFfWFYuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkFnZW5kYV9YSVYuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1YXRvcnplLFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGUsXG4gICAgICB0aXRsZTogXCJBZ2VuZGEgZGUgbGEgWElWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE0L3ZwL3JldW5pb25zL0FnZW5kYV9YSVYuanNvbi56aXBcIixcbiAgICB9LFxuICBdLFxuICBhbWVuZGVtZW50czogW1xuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkFtZW5kZW1lbnRzX1hWSS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuU2VpemUsXG4gICAgICByZXBhaXJaaXA6IHJlcGFpckZvckpzb25TdWJkaXJlY3RvcnksXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJBbWVuZGVtZW50cyBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTYvbG9pL2FtZW5kZW1lbnRzX2Rpdl9sZWdpcy9BbWVuZGVtZW50cy5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZW5hbWU6IFwiQW1lbmRlbWVudHNfWFYuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogcmVwYWlyRm9ySnNvblN1YmRpcmVjdG9yeSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkFtZW5kZW1lbnRzIGRlIGxhIFhWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE1L2xvaS9hbWVuZGVtZW50c19sZWdpcy9BbWVuZGVtZW50c19YVi5qc29uLnppcFwiLFxuICAgIH0sXG4gICAgLy8ge1xuICAgIC8vICAgZmlsZW5hbWU6IFwiQW1lbmRlbWVudHNfWElWLmpzb25cIixcbiAgICAvLyAgIGlnbm9yZUZvcldlYjogdHJ1ZSxcbiAgICAvLyAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWF0b3J6ZSxcbiAgICAvLyAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlLFxuICAgIC8vICAgdGl0bGU6IFwiQW1lbmRlbWVudHMgZGUgbGEgWElWw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAvLyAgIHVybDpcbiAgICAvLyAgICAgXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE0L2xvaS9hbWVuZGVtZW50c19sZWdpc19YSVYvQW1lbmRlbWVudHNfWElWLmpzb24uemlwXCIsXG4gICAgLy8gfSxcbiAgXSxcbiAgZG9zc2llcnNMZWdpc2xhdGlmczogW1xuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkRvc3NpZXJzX0xlZ2lzbGF0aWZzX1hWSS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuU2VpemUsXG4gICAgICByZXBhaXJaaXA6IHJlcGFpckZvckpzb25TdWJkaXJlY3RvcnksXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJEb3NzaWVycyBsw6lnaXNsYXRpZnMgZGUgbGEgWFZJw6htZSBsw6lnaXNsYXR1cmVcIixcbiAgICAgIHVybDogXCJodHRwOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L2xvaS9kb3NzaWVyc19sZWdpc2xhdGlmcy9Eb3NzaWVyc19MZWdpc2xhdGlmcy5qc29uLnppcFwiLFxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZW5hbWU6IFwiRG9zc2llcnNfTGVnaXNsYXRpZnNfWFYuanNvblwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlF1aW56ZSxcbiAgICAgIHJlcGFpclppcDogcmVwYWlyRm9ySnNvblN1YmRpcmVjdG9yeSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIkRvc3NpZXJzIGzDqWdpc2xhdGlmcyBkZSBsYSBYVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS9sb2kvZG9zc2llcnNfbGVnaXNsYXRpZnMvRG9zc2llcnNfTGVnaXNsYXRpZnNfWFYuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkRvc3NpZXJzX0xlZ2lzbGF0aWZzX1hJVi5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuUXVhdG9yemUsXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZSxcbiAgICAgIHRpdGxlOiBcIkRvc3NpZXJzIGzDqWdpc2xhdGlmcyBkZSBsYSBYSVbDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTQvbG9pL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzL0Rvc3NpZXJzX0xlZ2lzbGF0aWZzX1hJVi5qc29uLnppcFwiLFxuICAgIH0sXG4gIF0sXG4gIHNjcnV0aW5zOiBbXG4gICAge1xuICAgICAgZmlsZW5hbWU6IFwiU2NydXRpbnNfWFZJLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5TZWl6ZSxcbiAgICAgIHJlcGFpclppcDogcmVwYWlyRm9ySnNvblN1YmRpcmVjdG9yeSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIlNjcnV0aW5zIGRlIGxhIFhWScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9sb2kvc2NydXRpbnMvU2NydXRpbnMuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIlNjcnV0aW5zX1hWLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5RdWluemUsXG4gICAgICByZXBhaXJaaXA6IHJlcGFpckZvckpzb25TdWJkaXJlY3RvcnksXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJTY3J1dGlucyBkZSBsYSBYVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNS9sb2kvc2NydXRpbnMvU2NydXRpbnNfWFYuanNvbi56aXBcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIlNjcnV0aW5zX1hJVi5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuUXVhdG9yemUsXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZSxcbiAgICAgIHRpdGxlOiBcIlNjcnV0aW5zIGRlIGxhIFhJVsOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNC9sb2kvc2NydXRpbnMvU2NydXRpbnNfWElWLmpzb24uemlwXCIsXG4gICAgfSxcbiAgXSxcbiAgcXVlc3Rpb25zOiBbXG4gICAge1xuICAgICAgZmlsZW5hbWU6IFwiUXVlc3Rpb25zX2Vjcml0ZXNfWFZJLmpzb25cIixcbiAgICAgIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZS5TZWl6ZSxcbiAgICAgIHJlcGFpclppcDogcmVwYWlyRm9ySnNvblN1YmRpcmVjdG9yeSxcbiAgICAgIHN0cnVjdHVyZTogRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlcyxcbiAgICAgIHRpdGxlOiBcIlF1ZXN0aW9ucyDDqWNyaXRlcyBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTYvcXVlc3Rpb25zL3F1ZXN0aW9uc19lY3JpdGVzL1F1ZXN0aW9uc19lY3JpdGVzLmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJRdWVzdGlvbnNfZ291dmVybmVtZW50X1hWSS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuU2VpemUsXG4gICAgICByZXBhaXJaaXA6IHJlcGFpckZvckpzb25TdWJkaXJlY3RvcnksXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJRdWVzdGlvbnMgYXUgZ291dmVybmVtZW50IGRlIGxhIFhWScOobWUgbMOpZ2lzbGF0dXJlXCIsXG4gICAgICB1cmw6IFwiaHR0cDovL2RhdGEuYXNzZW1ibGVlLW5hdGlvbmFsZS5mci9zdGF0aWMvb3BlbkRhdGEvcmVwb3NpdG9yeS8xNi9xdWVzdGlvbnMvcXVlc3Rpb25zX2dvdXZlcm5lbWVudC9RdWVzdGlvbnNfZ291dmVybmVtZW50Lmpzb24uemlwXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBmaWxlbmFtZTogXCJRdWVzdGlvbnNfb3JhbGVzX1hWSS5qc29uXCIsXG4gICAgICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUuU2VpemUsXG4gICAgICByZXBhaXJaaXA6IHJlcGFpckZvckpzb25TdWJkaXJlY3RvcnksXG4gICAgICBzdHJ1Y3R1cmU6IERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXMsXG4gICAgICB0aXRsZTogXCJRdWVzdGlvbnMgb3JhbGVzIHNhbnMgZMOpYmF0cyBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHA6Ly9kYXRhLmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvc3RhdGljL29wZW5EYXRhL3JlcG9zaXRvcnkvMTYvcXVlc3Rpb25zL3F1ZXN0aW9uc19vcmFsZXNfc2Fuc19kZWJhdC9RdWVzdGlvbnNfb3JhbGVzX3NhbnNfZGViYXQuanNvbi56aXBcIixcbiAgICB9LFxuICBdLFxuICBjb21wdGVzUmVuZHVzU2VhbmNlczogW1xuICAgIHtcbiAgICAgIGZpbGVuYW1lOiBcIkNvbXB0ZXNfUmVuZHVzX1NlYW5jZXNfWFZJLnhtbFwiLFxuICAgICAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLlNlaXplLFxuICAgICAgcmVwYWlyWmlwOiAoZGF0YXNldDogRGF0YXNldCwgZGF0YURpcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhcmdldERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyh0YXJnZXREaXIpKSB7XG4gICAgICAgICAgZnMucmVtb3ZlU3luYyh0YXJnZXREaXIpXG4gICAgICAgIH1cbiAgICAgICAgZnMubW92ZVN5bmMocGF0aC5qb2luKGRhdGFEaXIsIFwieG1sXCIpLCB0YXJnZXREaXIpXG4gICAgICB9LFxuICAgICAgc3RydWN0dXJlOiBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzLFxuICAgICAgdGl0bGU6IFwiQ29tcHRlcyByZW5kdXMgZGVzIHPDqWFuY2VzIHB1YmxpcXVlcyBkZSBsYSBYVknDqG1lIGzDqWdpc2xhdHVyZVwiLFxuICAgICAgdXJsOiBcImh0dHBzOi8vZGF0YS5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyL3N0YXRpYy9vcGVuRGF0YS9yZXBvc2l0b3J5LzE2L3ZwL3N5Y2Vyb25icnV0L3N5c2Vyb24ueG1sLnppcFwiLFxuICAgIH0sXG4gIF0sXG59XG5cbmNvbnN0IGRpcmVjdG9yeTJzY2hlbWE6IGFueSA9IHtcbiAgXCIuKkFnZW5kYV8uKlwiOiBcImFnZW5kYVwiLFxuICBcIi4qU2NydXRpbnNfLipcIjogXCJzY3J1dGluXCIsXG4gIFwiLipRdWVzdGlvbnNfLipcIjogXCJxdWVzdGlvblwiLFxuICBcIi4qQW1lbmRlbWVudHNfLipcIjogXCJhbWVuZGVtZW50XCIsXG4gIFwiLipEb3NzaWVyc19MZWdpc2xhdGlmc18uKi9kb2N1bWVudHNcIjogXCJkb2N1bWVudFwiLFxuICBcIi4qRG9zc2llcnNfTGVnaXNsYXRpZnNfLiovZG9zc2llcnNcIjogXCJkb3NzaWVyXCIsXG4gIFwiLiphY3RldXJzX21hbmRhdHNfb3JnYW5lcy9vcmdhbmVzXCI6IFwib3JnYW5lXCIsXG4gIFwiLiphY3RldXJzX21hbmRhdHNfb3JnYW5lcy9hY3RldXJzXCI6IFwiYWN0ZXVyXCIsXG4gIFwiLipBTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlLiovb3JnYW5lc1wiOlxuICAgIFwib3JnYW5lXCIsXG4gIFwiLipBTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlLiovYWN0ZXVyc1wiOlxuICAgIFwiYWN0ZXVyXCIsXG4gIFwiLipDb21wdGVzX1JlbmR1c19TZWFuY2VzXy4qXCI6IFwiZGViYXRcIixcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGFzZXRzKCk6IGFueSB7XG4gIHJldHVybiBbXG4gICAgXCJBZ2VuZGFfWElWXCIsXG4gICAgXCJBZ2VuZGFfWFZcIixcbiAgICBcIkFnZW5kYV9YVklcIixcbiAgICBcIlNjcnV0aW5zX1hJVlwiLFxuICAgIFwiU2NydXRpbnNfWFZcIixcbiAgICBcIlNjcnV0aW5zX1hWSVwiLFxuICAgIFwiUXVlc3Rpb25zX0Vjcml0ZXNfWFZJXCIsXG4gICAgXCJRdWVzdGlvbnNfR291dmVybmVtZW50X1hWSVwiLFxuICAgIFwiQW1lbmRlbWVudHNfWElWXCIsXG4gICAgXCJBbWVuZGVtZW50c19YVlwiLFxuICAgIFwiQW1lbmRlbWVudHNfWFZJXCIsXG4gICAgXCJEb3NzaWVyc19MZWdpc2xhdGlmc19YSVZcIixcbiAgICBcIkRvc3NpZXJzX0xlZ2lzbGF0aWZzX1hWXCIsXG4gICAgXCJEb3NzaWVyc19MZWdpc2xhdGlmc19YVklcIixcbiAgICBcIkFNTzMwX3RvdXNfYWN0ZXVyc190b3VzX21hbmRhdHNfdG91c19vcmdhbmVzX2hpc3RvcmlxdWVcIixcbiAgICBcImFjdGV1cnNfbWFuZGF0c19vcmdhbmVzXCIsXG4gICAgXCJDb21wdGVzX1JlbmR1c19TZWFuY2VzX1hWSVwiLFxuICBdXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZERhdGFzZXQoZGlyOiBhbnkpOiBhbnkge1xuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZ2V0RGF0YXNldHMoKSkge1xuICAgIGlmIChkaXIuaW5jbHVkZXMoZGF0YXNldCkpIHJldHVybiB0cnVlXG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY2hlbWFzKCk6IGFueSB7XG4gIHJldHVybiBPYmplY3QudmFsdWVzKGRpcmVjdG9yeTJzY2hlbWEpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRhc2V0RGlyZWN0b3J5U2NoZW1hKGRhdGFzZXQ6IHN0cmluZyk6IGFueSB7XG4gIGxldCBkaXJlY3RvcmllczogYW55XG4gIGlmIChkYXRhc2V0LmluY2x1ZGVzKFwiRG9zc2llcnNfTGVnaXNsYXRpZnNfXCIpKSB7XG4gICAgZGlyZWN0b3JpZXMgPSBbYCR7ZGF0YXNldH0vZG9jdW1lbnRzYCwgYCR7ZGF0YXNldH0vZG9zc2llcnNgXVxuICB9IGVsc2UgaWYgKFxuICAgIGRhdGFzZXQuaW5jbHVkZXMoXCJhY3RldXJzX21hbmRhdHNfb3JnYW5lc1wiKSB8fFxuICAgIGRhdGFzZXQuaW5jbHVkZXMoXCJBTU8zMF90b3VzX2FjdGV1cnNfdG91c19tYW5kYXRzX3RvdXNfb3JnYW5lc19oaXN0b3JpcXVlXCIpXG4gICkge1xuICAgIGRpcmVjdG9yaWVzID0gW2Ake2RhdGFzZXR9L29yZ2FuZXNgLCBgJHtkYXRhc2V0fS9hY3RldXJzYF1cbiAgfSBlbHNlIHtcbiAgICBkaXJlY3RvcmllcyA9IFtkYXRhc2V0XVxuICB9XG5cbiAgbGV0IHJlc3VsdHMgPSBbXVxuICBmb3IgKGNvbnN0IGRpcmVjdG9yeSBvZiBkaXJlY3Rvcmllcykge1xuICAgIGZvciAoY29uc3QgcmUgb2YgT2JqZWN0LmtleXMoZGlyZWN0b3J5MnNjaGVtYSkpIHtcbiAgICAgIGlmIChuZXcgUmVnRXhwKHJlKS5leGVjKGRpcmVjdG9yeSkpXG4gICAgICAgIHJlc3VsdHMucHVzaChbYCR7ZGlyZWN0b3J5fS8qKi8qLmpzb25gLCBkaXJlY3Rvcnkyc2NoZW1hW3JlXV0pXG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHRzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWxlRGF0YXNldFVybChmaWxlbmFtZTogc3RyaW5nKTogW3N0cmluZywgc3RyaW5nXSB8IG51bGwge1xuICBjb25zdCByZSA9IFwiXi4qLyguKilfbmV0dG95ZS8oLiopXCJcbiAgY29uc3QgbWF0Y2ggPSBuZXcgUmVnRXhwKHJlKS5leGVjKGZpbGVuYW1lKVxuICBpZiAobWF0Y2ggPT0gbnVsbCkgcmV0dXJuIG51bGxcbiAgbGV0IFtkYXRhc2V0LCBmaWxlXSA9IFttYXRjaFsxXSwgbWF0Y2hbMl1dXG4gIGlmIChkYXRhc2V0ID09IFwiQU1PMzBfdG91c19hY3RldXJzX3RvdXNfbWFuZGF0c190b3VzX29yZ2FuZXNfaGlzdG9yaXF1ZVwiKVxuICAgIGRhdGFzZXQgPSBcImFjdGV1cnNfbWFuZGF0c19vcmdhbmVzXCJcbiAgcmV0dXJuIFtkYXRhc2V0LCBmaWxlXVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlmZlVwc3RyZWFtKGZpbGVuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBkYXRhc2V0VXJsID0gZmlsZURhdGFzZXRVcmwoZmlsZW5hbWUpXG4gIGlmIChkYXRhc2V0VXJsID09IG51bGwpIHJldHVybiBmaWxlbmFtZVxuICBjb25zdCBbZGF0YXNldCwgZmlsZV0gPSBkYXRhc2V0VXJsXG4gIGNvbnN0IHN1bSA9IGNyZWF0ZUhhc2goXCJzaGExXCIpLnVwZGF0ZShmaWxlKS5kaWdlc3QoXCJoZXhcIikudG9TdHJpbmcoKVxuICByZXR1cm4gYFske2ZpbGV9XShodHRwczovL2dpdC5lbi1yb290Lm9yZy90cmljb3RldXNlcy9kYXRhLnRyaWNvdGV1c2VzLmZyLyR7ZGF0YXNldH0vLS9jb21wYXJlL3Vwc3RyZWFtLi4ubWFzdGVyIyR7c3VtfSlgXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXN0ZXJVcmwoZmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGRhdGFzZXRVcmwgPSBmaWxlRGF0YXNldFVybChmaWxlbmFtZSlcbiAgaWYgKGRhdGFzZXRVcmwgPT0gbnVsbCkgcmV0dXJuIGZpbGVuYW1lXG4gIGNvbnN0IFtkYXRhc2V0LCBmaWxlXSA9IGRhdGFzZXRVcmxcbiAgcmV0dXJuIGBbJHtmaWxlfV0oaHR0cHM6Ly9naXQuZW4tcm9vdC5vcmcvdHJpY290ZXVzZXMvZGF0YS50cmljb3RldXNlcy5mci8ke2RhdGFzZXR9Ly0vdHJlZS9tYXN0ZXIvJHtmaWxlfSlgXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJCeUxlZ2lzbGF0dXJlKFxuICBkYXRhc2V0czogRGF0YXNldHMsXG4gIGxlZ2lzbGF0dXJlOiBhbnksXG4pOiBEYXRhc2V0cyB7XG4gIC8vIFdoZW4gYSBnaXZlbiBsZWdpc2xhdHVyZSBpcyAwLCBpdCBpcyB0aGUgc2FtZSBhcyBnaXZpbmcgbm8gbGVnaXNsYXR1cmU6XG4gIC8vIEl0IG1lYW5zIFwiZXZlcnkgbGVnaXNsYXR1cmVzXCIuXG4gIGlmIChsZWdpc2xhdHVyZSAhPT0gMCAmJiBsZWdpc2xhdHVyZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGRhdGFzZXRzKSkge1xuICAgICAgZGF0YXNldHNba2V5IGFzIGtleW9mIHR5cGVvZiBkYXRhc2V0c10gPSB2YWx1ZS5maWx0ZXIoXG4gICAgICAgIChkYXRhc2V0OiB7IGxlZ2lzbGF0dXJlOiBhbnkgfSkgPT5cbiAgICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlID09PSBMZWdpc2xhdHVyZS5BbGwgfHxcbiAgICAgICAgICBsZWdpc2xhdHVyZSA9PT0gZGF0YXNldC5sZWdpc2xhdHVyZSxcbiAgICAgIClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRhdGFzZXRzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbmFibGVkRGF0YXNldHMoY2F0ZWdvcmllczogYW55KTogRW5hYmxlZERhdGFzZXRzIHtcbiAgY2F0ZWdvcmllcy5tYXAoKGRhdGFzZXROYW1lOiBzdHJpbmcpID0+XG4gICAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgICAgKEVuYWJsZWREYXRhc2V0cyBhcyBhbnkgYXMgeyBbbmFtZTogc3RyaW5nXTogRW5hYmxlZERhdGFzZXRzIH0pW1xuICAgICAgICBkYXRhc2V0TmFtZVxuICAgICAgXSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGBVbmtub3duIG5hbWUgb2YgZGF0YXNldDogJHtkYXRhc2V0TmFtZX1gLFxuICAgICksXG4gIClcblxuICByZXR1cm4gY2F0ZWdvcmllcy5yZWR1Y2UoXG4gICAgKGVuYWJsZWREYXRhc2V0czogRW5hYmxlZERhdGFzZXRzLCBkYXRhc2V0TmFtZTogc3RyaW5nKTogRW5hYmxlZERhdGFzZXRzID0+XG4gICAgICBlbmFibGVkRGF0YXNldHMgfFxuICAgICAgKEVuYWJsZWREYXRhc2V0cyBhcyBhbnkgYXMgeyBbbmFtZTogc3RyaW5nXTogRW5hYmxlZERhdGFzZXRzIH0pW1xuICAgICAgICBkYXRhc2V0TmFtZVxuICAgICAgXSxcbiAgICBFbmFibGVkRGF0YXNldHMuTm9uZSxcbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxVQUFVLFFBQVEsUUFBUTtBQUNuQyxPQUFPQyxNQUFNLE1BQU0sUUFBUTtBQUMzQixPQUFPQyxFQUFFLE1BQU0sVUFBVTtBQUN6QixPQUFPQyxJQUFJLE1BQU0sTUFBTTtBQUFBLFNBRWRDLFdBQVc7QUFzQnBCLFdBQVlDLGdCQUFnQiwwQkFBaEJBLGdCQUFnQjtFQUFoQkEsZ0JBQWdCLENBQWhCQSxnQkFBZ0I7RUFBaEJBLGdCQUFnQixDQUFoQkEsZ0JBQWdCO0VBQUEsT0FBaEJBLGdCQUFnQjtBQUFBO0FBSzVCLFdBQVlDLGVBQWUsMEJBQWZBLGVBQWU7RUFBZkEsZUFBZSxDQUFmQSxlQUFlO0VBQWZBLGVBQWUsQ0FBZkEsZUFBZTtFQUFmQSxlQUFlLENBQWZBLGVBQWU7RUFBZkEsZUFBZSxDQUFmQSxlQUFlO0VBQWZBLGVBQWUsQ0FBZkEsZUFBZTtFQUFmQSxlQUFlLENBQWZBLGVBQWU7RUFBZkEsZUFBZSxDQUFmQSxlQUFlO0VBQWZBLGVBQWUsQ0FBZkEsZUFBZTtFQUFmQSxlQUFlLENBQWZBLGVBQWU7RUFBZkEsZUFBZSxDQUFmQSxl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QUFDNkQsTUFBTSxDQUFDSixJQUFJLENBQUMsQ0FBQ0ssTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDQyxRQUFRLENBQUMsQ0FBQztFQUNwRSxPQUFPLElBQUlOLElBQUksNkRBQTZEakQsT0FBTyxnQ0FBZ0NvRCxHQUFHLEdBQUc7QUFDM0g7QUFFQSxPQUFPLFNBQVNJLFNBQVNBLENBQUNwRCxRQUFnQixFQUFVO0VBQ2xELE1BQU0rQyxVQUFVLEdBQUdKLGNBQWMsQ0FBQzNDLFFBQVEsQ0FBQztFQUMzQyxJQUFJK0MsVUFBVSxJQUFJLElBQUksRUFBRSxPQUFPL0MsUUFBUTtFQUN2QyxNQUFNLENBQUNKLE9BQU8sRUFBRWlELElBQUksQ0FBQyxHQUFHRSxVQUFVO0VBQ2xDLE9BQU8sSUFBSUYsSUFBSSw2REFBNkRqRCxPQUFPLGtCQUFrQmlELElBQUksR0FBRztBQUM5RztBQUVBLE9BQU8sU0FBU1EsbUJBQW1CQSxDQUNqQ2pELFFBQWtCLEVBQ2xCRyxXQUFnQixFQUNOO0VBQ1Y7RUFDQTtFQUNBLElBQUlBLFdBQVcsS0FBSyxDQUFDLElBQUlBLFdBQVcsS0FBSytDLFNBQVMsRUFBRTtJQUNsRCxLQUFLLElBQUksQ0FBQ0MsR0FBRyxFQUFFQyxLQUFLLENBQUMsSUFBSXhCLE1BQU0sQ0FBQ3lCLE9BQU8sQ0FBQ3JELFFBQVEsQ0FBQyxFQUFFO01BQ2pEQSxRQUFRLENBQUNtRCxHQUFHLENBQTBCLEdBQUdDLEtBQUssQ0FBQ0UsTUFBTSxDQUNsRDlELE9BQTZCLElBQzVCQSxPQUFPLENBQUNXLFdBQVcsS0FBS2YsV0FBVyxDQUFDeUIsR0FBRyxJQUN2Q1YsV0FBVyxLQUFLWCxPQUFPLENBQUNXLFdBQzVCLENBQUM7SUFDSDtFQUNGO0VBQ0EsT0FBT0gsUUFBUTtBQUNqQjtBQUVBLE9BQU8sU0FBU3VELGtCQUFrQkEsQ0FBQ0MsVUFBZSxFQUFtQjtFQUNuRUEsVUFBVSxDQUFDQyxHQUFHLENBQUVDLFdBQW1CLElBQ2pDekUsTUFBTSxDQUFDMEUsY0FBYyxDQUNsQnJFLGVBQWUsQ0FDZG9FLFdBQVcsQ0FDWixFQUNEUixTQUFTLEVBQ1QsNEJBQTRCUSxXQUFXLEVBQ3pDLENBQ0YsQ0FBQztFQUVELE9BQU9GLFVBQVUsQ0FBQ0ksTUFBTSxDQUN0QixDQUFDQyxlQUFnQyxFQUFFSCxXQUFtQixLQUNwREcsZUFBZSxHQUNkdkUsZUFBZSxDQUNkb0UsV0FBVyxDQUNaLEVBQ0hwRSxlQUFlLENBQUN3RSxJQUNsQixDQUFDO0FBQ0giLCJpZ25vcmVMaXN0IjpbXX0=
|