@tricoteuses/senat 2.9.0 → 2.9.5
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/LICENSE.md +22 -22
- package/README.md +116 -115
- package/lib/loaders.d.ts +1 -1
- package/lib/model/agenda.js +2 -0
- package/lib/scripts/retrieve_videos.js +420 -0
- package/lib/types/agenda.d.ts +2 -0
- package/package.json +95 -94
- package/lib/aggregates.d.ts +0 -52
- package/lib/aggregates.js +0 -949
- package/lib/aggregates.mjs +0 -726
- package/lib/aggregates.ts +0 -852
- package/lib/config.mjs +0 -16
- package/lib/config.ts +0 -26
- package/lib/databases.mjs +0 -55
- package/lib/databases.ts +0 -68
- package/lib/datasets.mjs +0 -78
- package/lib/datasets.ts +0 -118
- package/lib/fields.d.ts +0 -10
- package/lib/fields.js +0 -68
- package/lib/fields.mjs +0 -22
- package/lib/fields.ts +0 -29
- package/lib/index.mjs +0 -7
- package/lib/index.ts +0 -64
- package/lib/inserters.d.ts +0 -98
- package/lib/inserters.js +0 -500
- package/lib/inserters.mjs +0 -360
- package/lib/inserters.ts +0 -521
- package/lib/legislatures.json +0 -38
- package/lib/loaders.mjs +0 -97
- package/lib/loaders.ts +0 -173
- package/lib/model/ameli.mjs +0 -57
- package/lib/model/ameli.ts +0 -86
- package/lib/model/debats.mjs +0 -43
- package/lib/model/debats.ts +0 -68
- package/lib/model/dosleg.mjs +0 -163
- package/lib/model/dosleg.ts +0 -204
- package/lib/model/index.mjs +0 -4
- package/lib/model/index.ts +0 -13
- package/lib/model/questions.mjs +0 -76
- package/lib/model/questions.ts +0 -102
- package/lib/model/sens.mjs +0 -339
- package/lib/model/sens.ts +0 -432
- package/lib/model/texte.mjs +0 -156
- package/lib/model/texte.ts +0 -174
- package/lib/raw_types_kysely/ameli.d.ts +0 -915
- package/lib/raw_types_kysely/ameli.js +0 -7
- package/lib/raw_types_kysely/ameli.mjs +0 -5
- package/lib/raw_types_kysely/ameli.ts +0 -951
- package/lib/raw_types_kysely/debats.d.ts +0 -207
- package/lib/raw_types_kysely/debats.js +0 -7
- package/lib/raw_types_kysely/debats.mjs +0 -5
- package/lib/raw_types_kysely/debats.ts +0 -222
- package/lib/raw_types_kysely/dosleg.d.ts +0 -3532
- package/lib/raw_types_kysely/dosleg.js +0 -7
- package/lib/raw_types_kysely/dosleg.mjs +0 -5
- package/lib/raw_types_kysely/dosleg.ts +0 -3621
- package/lib/raw_types_kysely/questions.d.ts +0 -414
- package/lib/raw_types_kysely/questions.js +0 -7
- package/lib/raw_types_kysely/questions.mjs +0 -5
- package/lib/raw_types_kysely/questions.ts +0 -426
- package/lib/raw_types_kysely/sens.d.ts +0 -4394
- package/lib/raw_types_kysely/sens.js +0 -7
- package/lib/raw_types_kysely/sens.mjs +0 -5
- package/lib/raw_types_kysely/sens.ts +0 -4499
- package/lib/raw_types_schemats/ameli.mjs +0 -2
- package/lib/raw_types_schemats/ameli.ts +0 -601
- package/lib/raw_types_schemats/debats.mjs +0 -2
- package/lib/raw_types_schemats/debats.ts +0 -145
- package/lib/raw_types_schemats/dosleg.mjs +0 -2
- package/lib/raw_types_schemats/dosleg.ts +0 -2193
- package/lib/raw_types_schemats/questions.mjs +0 -2
- package/lib/raw_types_schemats/questions.ts +0 -249
- package/lib/raw_types_schemats/sens.mjs +0 -2
- package/lib/raw_types_schemats/sens.ts +0 -2907
- package/lib/scripts/convert_data.mjs +0 -95
- package/lib/scripts/convert_data.ts +0 -119
- package/lib/scripts/datautil.mjs +0 -16
- package/lib/scripts/datautil.ts +0 -19
- package/lib/scripts/images/transparent_150x192.jpg +0 -0
- package/lib/scripts/images/transparent_155x225.jpg +0 -0
- package/lib/scripts/parse_textes.mjs +0 -38
- package/lib/scripts/parse_textes.ts +0 -52
- package/lib/scripts/retrieve_documents.mjs +0 -243
- package/lib/scripts/retrieve_documents.ts +0 -279
- package/lib/scripts/retrieve_open_data.mjs +0 -214
- package/lib/scripts/retrieve_open_data.ts +0 -261
- package/lib/scripts/retrieve_senateurs_photos.mjs +0 -147
- package/lib/scripts/retrieve_senateurs_photos.ts +0 -177
- package/lib/scripts/retrieve_textes.mjs +0 -165
- package/lib/scripts/retrieve_textes.ts +0 -79
- package/lib/scripts/shared/cli_helpers.ts +0 -36
- package/lib/scripts/shared/util.ts +0 -33
- package/lib/strings.mjs +0 -18
- package/lib/strings.ts +0 -26
- package/lib/types/ameli.mjs +0 -13
- package/lib/types/ameli.ts +0 -21
- package/lib/types/debats.mjs +0 -2
- package/lib/types/debats.ts +0 -6
- package/lib/types/dosleg.mjs +0 -151
- package/lib/types/dosleg.ts +0 -284
- package/lib/types/questions.mjs +0 -1
- package/lib/types/questions.ts +0 -3
- package/lib/types/sens.mjs +0 -1
- package/lib/types/sens.ts +0 -12
- package/lib/types/sessions.mjs +0 -43
- package/lib/types/sessions.ts +0 -42
- package/lib/types/texte.mjs +0 -16
- package/lib/types/texte.ts +0 -66
- package/lib/typings/windows-1252.d.js +0 -2
- package/lib/typings/windows-1252.d.mjs +0 -2
- package/lib/typings/windows-1252.d.ts +0 -11
- package/lib/validators/config.mjs +0 -54
- package/lib/validators/config.ts +0 -79
- package/lib/validators/senat.mjs +0 -24
- package/lib/validators/senat.ts +0 -26
- /package/lib/scripts/{retrieve_textes.d.ts → retrieve_videos.d.ts} +0 -0
package/lib/inserters.js
DELETED
|
@@ -1,500 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
require("core-js/modules/es.symbol.js");
|
|
4
|
-
require("core-js/modules/es.symbol.description.js");
|
|
5
|
-
require("core-js/modules/es.symbol.iterator.js");
|
|
6
|
-
require("core-js/modules/es.array.from.js");
|
|
7
|
-
require("core-js/modules/es.array.is-array.js");
|
|
8
|
-
require("core-js/modules/es.array.slice.js");
|
|
9
|
-
require("core-js/modules/es.function.name.js");
|
|
10
|
-
require("core-js/modules/es.object.define-property.js");
|
|
11
|
-
require("core-js/modules/es.regexp.exec.js");
|
|
12
|
-
require("core-js/modules/es.regexp.to-string.js");
|
|
13
|
-
Object.defineProperty(exports, "__esModule", {
|
|
14
|
-
value: true
|
|
15
|
-
});
|
|
16
|
-
exports.insertAudReferences = insertAudReferences;
|
|
17
|
-
exports.insertAuteurReferences = insertAuteurReferences;
|
|
18
|
-
exports.insertDateSeanceReferences = insertDateSeanceReferences;
|
|
19
|
-
exports.insertDocAttReferences = insertDocAttReferences;
|
|
20
|
-
exports.insertEcrReferences = insertEcrReferences;
|
|
21
|
-
exports.insertLecassReferences = insertLecassReferences;
|
|
22
|
-
exports.insertLecassrapReferences = insertLecassrapReferences;
|
|
23
|
-
exports.insertLectureReferences = insertLectureReferences;
|
|
24
|
-
exports.insertLoiReferences = insertLoiReferences;
|
|
25
|
-
exports.insertRapReferences = insertRapReferences;
|
|
26
|
-
exports.insertTexteReferences = insertTexteReferences;
|
|
27
|
-
require("core-js/modules/es.array.concat.js");
|
|
28
|
-
require("core-js/modules/es.array.iterator.js");
|
|
29
|
-
require("core-js/modules/es.date.to-iso-string.js");
|
|
30
|
-
require("core-js/modules/es.date.to-string.js");
|
|
31
|
-
require("core-js/modules/es.object.to-string.js");
|
|
32
|
-
require("core-js/modules/es.set.js");
|
|
33
|
-
require("core-js/modules/es.string.iterator.js");
|
|
34
|
-
require("core-js/modules/web.dom-collections.iterator.js");
|
|
35
|
-
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
36
|
-
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
37
|
-
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
38
|
-
function insertAudReferences(aud, data, visitedIdsByTableName) {
|
|
39
|
-
var visitedIds = visitedIdsByTableName.aud;
|
|
40
|
-
if (visitedIds === undefined) {
|
|
41
|
-
visitedIds = visitedIdsByTableName.aud = new Set();
|
|
42
|
-
}
|
|
43
|
-
if (!visitedIds.has(aud.audcle)) {
|
|
44
|
-
visitedIds.add(aud.audcle);
|
|
45
|
-
if (aud.orgcod !== null && data.org !== undefined) {
|
|
46
|
-
var org = data.org[aud.orgcod];
|
|
47
|
-
if (org !== undefined) {
|
|
48
|
-
aud.org = org;
|
|
49
|
-
// insertOrgReferences(org, data, visitedIdsByTableName)
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
// TODO
|
|
54
|
-
}
|
|
55
|
-
return aud;
|
|
56
|
-
}
|
|
57
|
-
function insertAuteurReferences(auteur, data, visitedIdsByTableName) {
|
|
58
|
-
var visitedIds = visitedIdsByTableName.auteur;
|
|
59
|
-
if (visitedIds === undefined) {
|
|
60
|
-
visitedIds = visitedIdsByTableName.auteur = new Set();
|
|
61
|
-
}
|
|
62
|
-
if (!visitedIds.has(auteur.autcod)) {
|
|
63
|
-
visitedIds.add(auteur.autcod);
|
|
64
|
-
if (data.qua !== undefined) {
|
|
65
|
-
var qua = data.qua[auteur.quacod];
|
|
66
|
-
if (qua !== undefined) {
|
|
67
|
-
auteur.qua = qua;
|
|
68
|
-
// insertQuaReferences(qua, data, visitedIdsByTableName)
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
// TODO
|
|
73
|
-
}
|
|
74
|
-
return auteur;
|
|
75
|
-
}
|
|
76
|
-
function insertDateSeanceReferences(dateSeance, data, visitedIdsByTableName) {
|
|
77
|
-
var visitedIds = visitedIdsByTableName.date_seance;
|
|
78
|
-
if (visitedIds === undefined) {
|
|
79
|
-
visitedIds = visitedIdsByTableName.date_seance = new Set();
|
|
80
|
-
}
|
|
81
|
-
if (!visitedIds.has(dateSeance.code)) {
|
|
82
|
-
visitedIds.add(dateSeance.code);
|
|
83
|
-
if (dateSeance.date_s !== null && data.debats !== undefined) {
|
|
84
|
-
var dateString = dateSeance.date_s instanceof Date ? dateSeance.date_s.toISOString() : dateSeance.date_s;
|
|
85
|
-
var debat = data.debats[dateString];
|
|
86
|
-
if (debat !== undefined) {
|
|
87
|
-
dateSeance.debat = debat;
|
|
88
|
-
// insertDebatReferences(debat, data, visitedIdsByTableName)
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
dateSeance.scrs = [];
|
|
92
|
-
if (dateSeance.scrids !== undefined && data.scr !== undefined) {
|
|
93
|
-
var _iterator = _createForOfIteratorHelper(dateSeance.scrids),
|
|
94
|
-
_step;
|
|
95
|
-
try {
|
|
96
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
97
|
-
var scrid = _step.value;
|
|
98
|
-
var scr = data.scr[scrid];
|
|
99
|
-
if (scr !== undefined) {
|
|
100
|
-
dateSeance.scrs.push(scr);
|
|
101
|
-
// insertScrReferences(scr, data, visitedIdsByTableName)
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
} catch (err) {
|
|
105
|
-
_iterator.e(err);
|
|
106
|
-
} finally {
|
|
107
|
-
_iterator.f();
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
return dateSeance;
|
|
112
|
-
}
|
|
113
|
-
function insertDocAttReferences(docatt, data, visitedIdsByTableName) {
|
|
114
|
-
var performInsertRapReferences = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
|
|
115
|
-
var visitedIds = visitedIdsByTableName.docatt;
|
|
116
|
-
if (visitedIds === undefined) {
|
|
117
|
-
visitedIds = visitedIdsByTableName.docatt = new Set();
|
|
118
|
-
}
|
|
119
|
-
if (!visitedIds.has(docatt.docattcle)) {
|
|
120
|
-
visitedIds.add(docatt.docattcle);
|
|
121
|
-
if (performInsertRapReferences && docatt.rapcod !== null && data.rap !== undefined) {
|
|
122
|
-
var rap = data.rap[docatt.rapcod];
|
|
123
|
-
if (rap !== undefined) {
|
|
124
|
-
docatt.rap = rap;
|
|
125
|
-
insertRapReferences(rap, data, visitedIdsByTableName);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
if (docatt.typattcod !== null && data.typatt !== undefined) {
|
|
129
|
-
var typatt = data.typatt[docatt.typattcod];
|
|
130
|
-
if (typatt !== undefined) {
|
|
131
|
-
docatt.typatt = typatt;
|
|
132
|
-
// insertTypAttReferences(typatt, data, visitedIdsByTableName)
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
return docatt;
|
|
137
|
-
}
|
|
138
|
-
function insertEcrReferences(ecr, data, visitedIdsByTableName) {
|
|
139
|
-
var visitedIds = visitedIdsByTableName.ecr;
|
|
140
|
-
if (visitedIds === undefined) {
|
|
141
|
-
visitedIds = visitedIdsByTableName.ecr = new Set();
|
|
142
|
-
}
|
|
143
|
-
if (!visitedIds.has(ecr.ecrnum)) {
|
|
144
|
-
visitedIds.add(ecr.ecrnum);
|
|
145
|
-
if (ecr.autcod !== null && data.auteur !== undefined) {
|
|
146
|
-
var aut = data.auteur[ecr.autcod];
|
|
147
|
-
if (aut !== undefined) {
|
|
148
|
-
ecr.aut = aut;
|
|
149
|
-
insertAuteurReferences(aut, data, visitedIdsByTableName);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
// TODO
|
|
154
|
-
}
|
|
155
|
-
return ecr;
|
|
156
|
-
}
|
|
157
|
-
function insertLecassrapReferences(lecassrap, data, visitedIdsByTableName) {
|
|
158
|
-
var visitedIds = visitedIdsByTableName.lecassrap;
|
|
159
|
-
if (visitedIds === undefined) {
|
|
160
|
-
visitedIds = visitedIdsByTableName.lecassrap = new Set();
|
|
161
|
-
}
|
|
162
|
-
var lecasrapid = "".concat(lecassrap.lecassidt, " ").concat(lecassrap.rapcod);
|
|
163
|
-
if (!visitedIds.has(lecasrapid)) {
|
|
164
|
-
visitedIds.add(lecasrapid);
|
|
165
|
-
if (lecassrap.rapcod !== null && data.rap !== undefined) {
|
|
166
|
-
var rap = data.rap[lecassrap.rapcod];
|
|
167
|
-
if (rap !== undefined) {
|
|
168
|
-
lecassrap.rap = rap;
|
|
169
|
-
insertRapReferences(rap, data, visitedIdsByTableName);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
return lecassrap;
|
|
174
|
-
}
|
|
175
|
-
function insertLecassReferences(lecass, data, visitedIdsByTableName) {
|
|
176
|
-
var visitedIds = visitedIdsByTableName.lecass;
|
|
177
|
-
if (visitedIds === undefined) {
|
|
178
|
-
visitedIds = visitedIdsByTableName.lecass = new Set();
|
|
179
|
-
}
|
|
180
|
-
if (!visitedIds.has(lecass.lecassidt)) {
|
|
181
|
-
visitedIds.add(lecass.lecassidt);
|
|
182
|
-
if (lecass.codass !== null && data.ass !== undefined) {
|
|
183
|
-
var ass = data.ass[lecass.codass];
|
|
184
|
-
if (ass !== undefined) {
|
|
185
|
-
lecass.ass = ass;
|
|
186
|
-
// insertAssReferences(ass, data, visitedIdsByTableName)
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
if (lecass.orgcod !== null && data.org !== undefined) {
|
|
190
|
-
var org = data.org[lecass.orgcod];
|
|
191
|
-
if (org !== undefined) {
|
|
192
|
-
lecass.org = org;
|
|
193
|
-
// insertOrgReferences(org, data, visitedIdsByTableName)
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
lecass.auds = [];
|
|
197
|
-
if (lecass.audcles !== undefined && data.aud !== undefined) {
|
|
198
|
-
var _iterator2 = _createForOfIteratorHelper(lecass.audcles),
|
|
199
|
-
_step2;
|
|
200
|
-
try {
|
|
201
|
-
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
202
|
-
var audcle = _step2.value;
|
|
203
|
-
var aud = data.aud[audcle];
|
|
204
|
-
if (aud !== undefined) {
|
|
205
|
-
lecass.auds.push(aud);
|
|
206
|
-
insertAudReferences(aud, data, visitedIdsByTableName);
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
} catch (err) {
|
|
210
|
-
_iterator2.e(err);
|
|
211
|
-
} finally {
|
|
212
|
-
_iterator2.f();
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
lecass.datesSeances = [];
|
|
216
|
-
if (lecass.datesSeancesCodes !== undefined && data.date_seance !== undefined) {
|
|
217
|
-
var _iterator3 = _createForOfIteratorHelper(lecass.datesSeancesCodes),
|
|
218
|
-
_step3;
|
|
219
|
-
try {
|
|
220
|
-
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
221
|
-
var dateSeanceCode = _step3.value;
|
|
222
|
-
var dateSeance = data.date_seance[dateSeanceCode];
|
|
223
|
-
if (dateSeance !== undefined) {
|
|
224
|
-
lecass.datesSeances.push(dateSeance);
|
|
225
|
-
insertDateSeanceReferences(dateSeance, data, visitedIdsByTableName);
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
} catch (err) {
|
|
229
|
-
_iterator3.e(err);
|
|
230
|
-
} finally {
|
|
231
|
-
_iterator3.f();
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
lecass.lecassraps = [];
|
|
235
|
-
if (lecass.lecassrapids !== undefined && data.lecassrap !== undefined) {
|
|
236
|
-
var _iterator4 = _createForOfIteratorHelper(lecass.lecassrapids),
|
|
237
|
-
_step4;
|
|
238
|
-
try {
|
|
239
|
-
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
240
|
-
var lecassrapid = _step4.value;
|
|
241
|
-
var lecassrap = data.lecassrap[lecassrapid];
|
|
242
|
-
if (lecassrap !== undefined) {
|
|
243
|
-
lecass.lecassraps.push(lecassrap);
|
|
244
|
-
insertLecassrapReferences(lecassrap, data, visitedIdsByTableName);
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
} catch (err) {
|
|
248
|
-
_iterator4.e(err);
|
|
249
|
-
} finally {
|
|
250
|
-
_iterator4.f();
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
lecass.textes = [];
|
|
254
|
-
if (lecass.texcods !== undefined && data.texte !== undefined) {
|
|
255
|
-
var _iterator5 = _createForOfIteratorHelper(lecass.texcods),
|
|
256
|
-
_step5;
|
|
257
|
-
try {
|
|
258
|
-
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
259
|
-
var texcod = _step5.value;
|
|
260
|
-
var texte = data.texte[texcod];
|
|
261
|
-
if (texte !== undefined) {
|
|
262
|
-
lecass.textes.push(texte);
|
|
263
|
-
insertTexteReferences(texte, data, visitedIdsByTableName);
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
} catch (err) {
|
|
267
|
-
_iterator5.e(err);
|
|
268
|
-
} finally {
|
|
269
|
-
_iterator5.f();
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
return lecass;
|
|
274
|
-
}
|
|
275
|
-
function insertLectureReferences(lecture, data, visitedIdsByTableName) {
|
|
276
|
-
var visitedIds = visitedIdsByTableName.lecture;
|
|
277
|
-
if (visitedIds === undefined) {
|
|
278
|
-
visitedIds = visitedIdsByTableName.lecture = new Set();
|
|
279
|
-
}
|
|
280
|
-
if (!visitedIds.has(lecture.lecidt)) {
|
|
281
|
-
visitedIds.add(lecture.lecidt);
|
|
282
|
-
if (lecture.typleccod !== null && data.typlec !== undefined) {
|
|
283
|
-
var typlec = data.typlec[lecture.typleccod];
|
|
284
|
-
if (typlec !== undefined) {
|
|
285
|
-
lecture.typlec = typlec;
|
|
286
|
-
// insertTyplecReferences(typlec, data, visitedIdsByTableName)
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
lecture.lecasss = [];
|
|
290
|
-
if (lecture.lecassidts !== undefined && data.lecass !== undefined) {
|
|
291
|
-
var _iterator6 = _createForOfIteratorHelper(lecture.lecassidts),
|
|
292
|
-
_step6;
|
|
293
|
-
try {
|
|
294
|
-
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
295
|
-
var lecassidt = _step6.value;
|
|
296
|
-
var lecass = data.lecass[lecassidt];
|
|
297
|
-
if (lecass !== undefined) {
|
|
298
|
-
lecture.lecasss.push(lecass);
|
|
299
|
-
insertLecassReferences(lecass, data, visitedIdsByTableName);
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
} catch (err) {
|
|
303
|
-
_iterator6.e(err);
|
|
304
|
-
} finally {
|
|
305
|
-
_iterator6.f();
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
return lecture;
|
|
310
|
-
}
|
|
311
|
-
function insertLoiReferences(loi, data, visitedIdsByTableName) {
|
|
312
|
-
var visitedIds = visitedIdsByTableName.loi;
|
|
313
|
-
if (visitedIds === undefined) {
|
|
314
|
-
visitedIds = visitedIdsByTableName.loi = new Set();
|
|
315
|
-
}
|
|
316
|
-
if (!visitedIds.has(loi.loicod)) {
|
|
317
|
-
visitedIds.add(loi.loicod);
|
|
318
|
-
if (loi.typloicod !== null && data.typloi !== undefined) {
|
|
319
|
-
var typloi = data.typloi[loi.typloicod];
|
|
320
|
-
if (typloi !== undefined) {
|
|
321
|
-
loi.typloi = typloi;
|
|
322
|
-
// insertTyploiReferences(typloi, data, visitedIdsByTableName)
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
if (loi.etaloicod !== null && data.etaloi !== undefined) {
|
|
326
|
-
var etaloi = data.etaloi[loi.etaloicod];
|
|
327
|
-
if (etaloi !== undefined) {
|
|
328
|
-
loi.etaloi = etaloi;
|
|
329
|
-
// insertEtaloiReferences(etaloi, data, visitedIdsByTableName)
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
if (loi.deccoccod !== null && data.deccoc !== undefined) {
|
|
333
|
-
var deccoc = data.deccoc[loi.deccoccod];
|
|
334
|
-
if (deccoc !== undefined) {
|
|
335
|
-
loi.deccoc = deccoc;
|
|
336
|
-
// insertDeccocReferences(deccoc, data, visitedIdsByTableName)
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
loi.lectures = [];
|
|
340
|
-
if (loi.lecidts !== undefined && data.lecture !== undefined) {
|
|
341
|
-
var _iterator7 = _createForOfIteratorHelper(loi.lecidts),
|
|
342
|
-
_step7;
|
|
343
|
-
try {
|
|
344
|
-
for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
|
|
345
|
-
var lecidt = _step7.value;
|
|
346
|
-
var lecture = data.lecture[lecidt];
|
|
347
|
-
if (lecture !== undefined) {
|
|
348
|
-
loi.lectures.push(lecture);
|
|
349
|
-
insertLectureReferences(lecture, data, visitedIdsByTableName);
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
} catch (err) {
|
|
353
|
-
_iterator7.e(err);
|
|
354
|
-
} finally {
|
|
355
|
-
_iterator7.f();
|
|
356
|
-
}
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
return loi;
|
|
360
|
-
}
|
|
361
|
-
function insertRapReferences(rap, data, visitedIdsByTableName) {
|
|
362
|
-
var visitedIds = visitedIdsByTableName.rap;
|
|
363
|
-
if (visitedIds === undefined) {
|
|
364
|
-
visitedIds = visitedIdsByTableName.rap = new Set();
|
|
365
|
-
}
|
|
366
|
-
if (!visitedIds.has(rap.rapcod)) {
|
|
367
|
-
visitedIds.add(rap.rapcod);
|
|
368
|
-
if (rap.coddenrap !== null && data.denrap !== undefined) {
|
|
369
|
-
var denrap = data.denrap[rap.coddenrap];
|
|
370
|
-
if (denrap !== undefined) {
|
|
371
|
-
rap.denrap = denrap;
|
|
372
|
-
// insertDenrapReferences(denrap, data, visitedIdsByTableName)
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
rap.docatts = [];
|
|
376
|
-
if (rap.docattcles !== undefined && data.docatt !== undefined) {
|
|
377
|
-
var _iterator8 = _createForOfIteratorHelper(rap.docattcles),
|
|
378
|
-
_step8;
|
|
379
|
-
try {
|
|
380
|
-
for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
|
|
381
|
-
var docattcle = _step8.value;
|
|
382
|
-
var docatt = data.docatt[docattcle];
|
|
383
|
-
if (docatt !== undefined) {
|
|
384
|
-
rap.docatts.push(docatt);
|
|
385
|
-
insertDocAttReferences(docatt, data, visitedIdsByTableName, false);
|
|
386
|
-
}
|
|
387
|
-
}
|
|
388
|
-
} catch (err) {
|
|
389
|
-
_iterator8.e(err);
|
|
390
|
-
} finally {
|
|
391
|
-
_iterator8.f();
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
rap.ecrs = [];
|
|
395
|
-
if (rap.ecrnums !== undefined && data.ecr !== undefined) {
|
|
396
|
-
var _iterator9 = _createForOfIteratorHelper(rap.ecrnums),
|
|
397
|
-
_step9;
|
|
398
|
-
try {
|
|
399
|
-
for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
|
|
400
|
-
var ecrnum = _step9.value;
|
|
401
|
-
var ecr = data.ecr[ecrnum];
|
|
402
|
-
if (ecr !== undefined) {
|
|
403
|
-
rap.ecrs.push(ecr);
|
|
404
|
-
insertEcrReferences(ecr, data, visitedIdsByTableName);
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
|
-
} catch (err) {
|
|
408
|
-
_iterator9.e(err);
|
|
409
|
-
} finally {
|
|
410
|
-
_iterator9.f();
|
|
411
|
-
}
|
|
412
|
-
}
|
|
413
|
-
rap.orgs = [];
|
|
414
|
-
if (rap.orgcods !== undefined && data.org !== undefined) {
|
|
415
|
-
var _iterator10 = _createForOfIteratorHelper(rap.orgcods),
|
|
416
|
-
_step10;
|
|
417
|
-
try {
|
|
418
|
-
for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
|
|
419
|
-
var orgcod = _step10.value;
|
|
420
|
-
var org = data.org[orgcod];
|
|
421
|
-
if (org !== undefined) {
|
|
422
|
-
rap.orgs.push(org);
|
|
423
|
-
// insertOrgReferences(org, data, visitedIdsByTableName)
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
} catch (err) {
|
|
427
|
-
_iterator10.e(err);
|
|
428
|
-
} finally {
|
|
429
|
-
_iterator10.f();
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
}
|
|
433
|
-
return rap;
|
|
434
|
-
}
|
|
435
|
-
function insertTexteReferences(texte, data, visitedIdsByTableName) {
|
|
436
|
-
var visitedIds = visitedIdsByTableName.texte;
|
|
437
|
-
if (visitedIds === undefined) {
|
|
438
|
-
visitedIds = visitedIdsByTableName.texte = new Set();
|
|
439
|
-
}
|
|
440
|
-
if (!visitedIds.has(texte.texcod)) {
|
|
441
|
-
visitedIds.add(texte.texcod);
|
|
442
|
-
texte.ecrs = [];
|
|
443
|
-
if (texte.ecrnums !== undefined && data.ecr !== undefined) {
|
|
444
|
-
var _iterator11 = _createForOfIteratorHelper(texte.ecrnums),
|
|
445
|
-
_step11;
|
|
446
|
-
try {
|
|
447
|
-
for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
|
|
448
|
-
var ecrnum = _step11.value;
|
|
449
|
-
var ecr = data.ecr[ecrnum];
|
|
450
|
-
if (ecr !== undefined) {
|
|
451
|
-
texte.ecrs.push(ecr);
|
|
452
|
-
insertEcrReferences(ecr, data, visitedIdsByTableName);
|
|
453
|
-
}
|
|
454
|
-
}
|
|
455
|
-
} catch (err) {
|
|
456
|
-
_iterator11.e(err);
|
|
457
|
-
} finally {
|
|
458
|
-
_iterator11.f();
|
|
459
|
-
}
|
|
460
|
-
}
|
|
461
|
-
if (texte.orgcod !== null && data.org !== undefined) {
|
|
462
|
-
var org = data.org[texte.orgcod];
|
|
463
|
-
if (org !== undefined) {
|
|
464
|
-
texte.org = org;
|
|
465
|
-
// insertOrgReferences(org, data, visitedIdsByTableName)
|
|
466
|
-
}
|
|
467
|
-
}
|
|
468
|
-
if (texte.oritxtcod !== null && data.oritxt !== undefined) {
|
|
469
|
-
var oritxt = data.oritxt[texte.oritxtcod];
|
|
470
|
-
if (oritxt !== undefined) {
|
|
471
|
-
texte.oritxt = oritxt;
|
|
472
|
-
// insertOritxtReferences(oritxt, data, visitedIdsByTableName)
|
|
473
|
-
}
|
|
474
|
-
}
|
|
475
|
-
if (texte.txtAmeliId !== undefined && data.txt_ameli !== undefined) {
|
|
476
|
-
var txtAmeli = data.txt_ameli[texte.txtAmeliId];
|
|
477
|
-
if (txtAmeli !== undefined) {
|
|
478
|
-
texte.txtAmeli = txtAmeli;
|
|
479
|
-
}
|
|
480
|
-
}
|
|
481
|
-
if (texte.typtxtcod !== null && data.typtxt !== undefined) {
|
|
482
|
-
var typtxt = data.typtxt[texte.typtxtcod];
|
|
483
|
-
if (typtxt !== undefined) {
|
|
484
|
-
texte.typtxt = typtxt;
|
|
485
|
-
// insertTyptxtReferences(typtxt, data, visitedIdsByTableName)
|
|
486
|
-
}
|
|
487
|
-
}
|
|
488
|
-
if (texte.typurl !== null && data.typurl !== undefined) {
|
|
489
|
-
var typurl = data.typurl[texte.typurl];
|
|
490
|
-
if (typurl !== undefined) {
|
|
491
|
-
texte.libtypurl = typurl.libtypurl;
|
|
492
|
-
// insertTypurlReferences(typurl, data, visitedIdsByTableName)
|
|
493
|
-
}
|
|
494
|
-
}
|
|
495
|
-
|
|
496
|
-
// TODO
|
|
497
|
-
}
|
|
498
|
-
return texte;
|
|
499
|
-
}
|
|
500
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbnNlcnRBdWRSZWZlcmVuY2VzIiwiYXVkIiwiZGF0YSIsInZpc2l0ZWRJZHNCeVRhYmxlTmFtZSIsInZpc2l0ZWRJZHMiLCJ1bmRlZmluZWQiLCJTZXQiLCJoYXMiLCJhdWRjbGUiLCJhZGQiLCJvcmdjb2QiLCJvcmciLCJpbnNlcnRBdXRldXJSZWZlcmVuY2VzIiwiYXV0ZXVyIiwiYXV0Y29kIiwicXVhIiwicXVhY29kIiwiaW5zZXJ0RGF0ZVNlYW5jZVJlZmVyZW5jZXMiLCJkYXRlU2VhbmNlIiwiZGF0ZV9zZWFuY2UiLCJjb2RlIiwiZGF0ZV9zIiwiZGViYXRzIiwiZGF0ZVN0cmluZyIsIkRhdGUiLCJ0b0lTT1N0cmluZyIsImRlYmF0Iiwic2NycyIsInNjcmlkcyIsInNjciIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJzIiwibiIsImRvbmUiLCJzY3JpZCIsInZhbHVlIiwicHVzaCIsImVyciIsImUiLCJmIiwiaW5zZXJ0RG9jQXR0UmVmZXJlbmNlcyIsImRvY2F0dCIsInBlcmZvcm1JbnNlcnRSYXBSZWZlcmVuY2VzIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZG9jYXR0Y2xlIiwicmFwY29kIiwicmFwIiwiaW5zZXJ0UmFwUmVmZXJlbmNlcyIsInR5cGF0dGNvZCIsInR5cGF0dCIsImluc2VydEVjclJlZmVyZW5jZXMiLCJlY3IiLCJlY3JudW0iLCJhdXQiLCJpbnNlcnRMZWNhc3NyYXBSZWZlcmVuY2VzIiwibGVjYXNzcmFwIiwibGVjYXNyYXBpZCIsImNvbmNhdCIsImxlY2Fzc2lkdCIsImluc2VydExlY2Fzc1JlZmVyZW5jZXMiLCJsZWNhc3MiLCJjb2Rhc3MiLCJhc3MiLCJhdWRzIiwiYXVkY2xlcyIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJkYXRlc1NlYW5jZXMiLCJkYXRlc1NlYW5jZXNDb2RlcyIsIl9pdGVyYXRvcjMiLCJfc3RlcDMiLCJkYXRlU2VhbmNlQ29kZSIsImxlY2Fzc3JhcHMiLCJsZWNhc3NyYXBpZHMiLCJfaXRlcmF0b3I0IiwiX3N0ZXA0IiwibGVjYXNzcmFwaWQiLCJ0ZXh0ZXMiLCJ0ZXhjb2RzIiwidGV4dGUiLCJfaXRlcmF0b3I1IiwiX3N0ZXA1IiwidGV4Y29kIiwiaW5zZXJ0VGV4dGVSZWZlcmVuY2VzIiwiaW5zZXJ0TGVjdHVyZVJlZmVyZW5jZXMiLCJsZWN0dXJlIiwibGVjaWR0IiwidHlwbGVjY29kIiwidHlwbGVjIiwibGVjYXNzcyIsImxlY2Fzc2lkdHMiLCJfaXRlcmF0b3I2IiwiX3N0ZXA2IiwiaW5zZXJ0TG9pUmVmZXJlbmNlcyIsImxvaSIsImxvaWNvZCIsInR5cGxvaWNvZCIsInR5cGxvaSIsImV0YWxvaWNvZCIsImV0YWxvaSIsImRlY2NvY2NvZCIsImRlY2NvYyIsImxlY3R1cmVzIiwibGVjaWR0cyIsIl9pdGVyYXRvcjciLCJfc3RlcDciLCJjb2RkZW5yYXAiLCJkZW5yYXAiLCJkb2NhdHRzIiwiZG9jYXR0Y2xlcyIsIl9pdGVyYXRvcjgiLCJfc3RlcDgiLCJlY3JzIiwiZWNybnVtcyIsIl9pdGVyYXRvcjkiLCJfc3RlcDkiLCJvcmdzIiwib3JnY29kcyIsIl9pdGVyYXRvcjEwIiwiX3N0ZXAxMCIsIl9pdGVyYXRvcjExIiwiX3N0ZXAxMSIsIm9yaXR4dGNvZCIsIm9yaXR4dCIsInR4dEFtZWxpSWQiLCJ0eHRfYW1lbGkiLCJ0eHRBbWVsaSIsInR5cHR4dGNvZCIsInR5cHR4dCIsInR5cHVybCIsImxpYnR5cHVybCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbnNlcnRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHh0QW1lbGkgfSBmcm9tIFwiLi90eXBlcy9hbWVsaVwiXG5pbXBvcnQgeyBEZWJhdCB9IGZyb20gXCIuL3R5cGVzL2RlYmF0c1wiXG5pbXBvcnQge1xuICBBc3MsXG4gIEF1ZCxcbiAgQXV0ZXVyLFxuICBEYXRlU2VhbmNlLFxuICBEZWNDb2MsXG4gIERlblJhcCxcbiAgRG9jQXR0LFxuICBFY3IsXG4gIEV0YUxvaSxcbiAgTGVjQXNzLFxuICBMZWNBc3NSYXAsXG4gIExlY3R1cmUsXG4gIExvaSxcbiAgT3JnLFxuICBPcmlUeHQsXG4gIFF1YSxcbiAgUmFwLFxuICBTY3IsXG4gIFRleHRlLFxuICBUeXBBdHQsXG4gIFR5cExlYyxcbiAgVHlwTG9pLFxuICBUeXBUeHQsXG4gIFR5cFVybCxcbn0gZnJvbSBcIi4vdHlwZXMvZG9zbGVnXCJcblxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXREYXRhIHtcbiAgcmVhZG9ubHkgYXNzPzogeyBbaWQ6IHN0cmluZ106IEFzcyB9XG4gIHJlYWRvbmx5IGF1ZD86IHsgW2lkOiBzdHJpbmddOiBBdWQgfVxuICByZWFkb25seSBhdXRldXI/OiB7IFtpZDogc3RyaW5nXTogQXV0ZXVyIH1cbiAgcmVhZG9ubHkgZGF0ZV9zZWFuY2U/OiB7IFtpZDogc3RyaW5nXTogRGF0ZVNlYW5jZSB9XG4gIHJlYWRvbmx5IGRlYmF0cz86IHsgW2lkOiBzdHJpbmddOiBEZWJhdCB9XG4gIHJlYWRvbmx5IGRlY2NvYz86IHsgW2lkOiBzdHJpbmddOiBEZWNDb2MgfVxuICByZWFkb25seSBkZW5yYXA/OiB7IFtpZDogc3RyaW5nXTogRGVuUmFwIH1cbiAgcmVhZG9ubHkgZG9jYXR0PzogeyBbaWQ6IHN0cmluZ106IERvY0F0dCB9XG4gIHJlYWRvbmx5IGVjcj86IHsgW2lkOiBzdHJpbmddOiBFY3IgfVxuICByZWFkb25seSBldGFsb2k/OiB7IFtpZDogc3RyaW5nXTogRXRhTG9pIH1cbiAgcmVhZG9ubHkgbGVjYXNzPzogeyBbaWQ6IHN0cmluZ106IExlY0FzcyB9XG4gIHJlYWRvbmx5IGxlY2Fzc3JhcD86IHsgW2lkOiBzdHJpbmddOiBMZWNBc3NSYXAgfVxuICByZWFkb25seSBsZWN0dXJlPzogeyBbaWQ6IHN0cmluZ106IExlY3R1cmUgfVxuICByZWFkb25seSBsb2k/OiB7IFtpZDogc3RyaW5nXTogTG9pIH1cbiAgcmVhZG9ubHkgb3JnPzogeyBbaWQ6IHN0cmluZ106IE9yZyB9XG4gIHJlYWRvbmx5IG9yaXR4dD86IHsgW2lkOiBzdHJpbmddOiBPcmlUeHQgfVxuICByZWFkb25seSBxdWE/OiB7IFtpZDogc3RyaW5nXTogUXVhIH1cbiAgcmVhZG9ubHkgcmFwPzogeyBbaWQ6IHN0cmluZ106IFJhcCB9XG4gIHJlYWRvbmx5IHNjcj86IHsgW2lkOiBzdHJpbmddOiBTY3IgfVxuICByZWFkb25seSB0ZXh0ZT86IHsgW2lkOiBzdHJpbmddOiBUZXh0ZSB9XG4gIHJlYWRvbmx5IHR5cGF0dD86IHsgW2lkOiBzdHJpbmddOiBUeXBBdHQgfVxuICByZWFkb25seSB0eXBsZWM/OiB7IFtpZDogc3RyaW5nXTogVHlwTGVjIH1cbiAgcmVhZG9ubHkgdHlwbG9pPzogeyBbaWQ6IHN0cmluZ106IFR5cExvaSB9XG4gIHJlYWRvbmx5IHR5cHR4dD86IHsgW2lkOiBzdHJpbmddOiBUeXBUeHQgfVxuICByZWFkb25seSB0eXB1cmw/OiB7IFtpZDogc3RyaW5nXTogVHlwVXJsIH1cbiAgcmVhZG9ubHkgdHh0X2FtZWxpPzogeyBbaWQ6IHN0cmluZ106IFR4dEFtZWxpIH1cbn1cblxudHlwZSBWaXNpdGVkSWRzQnlUYWJsZU5hbWUgPSB7IFt0YWJsZU5hbWU6IHN0cmluZ106IFNldDxudW1iZXIgfCBzdHJpbmc+IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydEF1ZFJlZmVyZW5jZXMoXG4gIGF1ZDogQXVkLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkSWRzQnlUYWJsZU5hbWU6IFZpc2l0ZWRJZHNCeVRhYmxlTmFtZSxcbikge1xuICBsZXQgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5hdWRcbiAgaWYgKHZpc2l0ZWRJZHMgPT09IHVuZGVmaW5lZCkge1xuICAgIHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUuYXVkID0gbmV3IFNldCgpXG4gIH1cbiAgaWYgKCF2aXNpdGVkSWRzLmhhcyhhdWQuYXVkY2xlKSkge1xuICAgIHZpc2l0ZWRJZHMuYWRkKGF1ZC5hdWRjbGUpXG5cbiAgICBpZiAoYXVkLm9yZ2NvZCAhPT0gbnVsbCAmJiBkYXRhLm9yZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBvcmcgPSBkYXRhLm9yZ1thdWQub3JnY29kXVxuICAgICAgaWYgKG9yZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF1ZC5vcmcgPSBvcmdcbiAgICAgICAgLy8gaW5zZXJ0T3JnUmVmZXJlbmNlcyhvcmcsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUT0RPXG4gIH1cblxuICByZXR1cm4gYXVkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRBdXRldXJSZWZlcmVuY2VzKFxuICBhdXRldXI6IEF1dGV1cixcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZElkc0J5VGFibGVOYW1lOiBWaXNpdGVkSWRzQnlUYWJsZU5hbWUsXG4pIHtcbiAgbGV0IHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUuYXV0ZXVyXG4gIGlmICh2aXNpdGVkSWRzID09PSB1bmRlZmluZWQpIHtcbiAgICB2aXNpdGVkSWRzID0gdmlzaXRlZElkc0J5VGFibGVOYW1lLmF1dGV1ciA9IG5ldyBTZXQoKVxuICB9XG4gIGlmICghdmlzaXRlZElkcy5oYXMoYXV0ZXVyLmF1dGNvZCkpIHtcbiAgICB2aXNpdGVkSWRzLmFkZChhdXRldXIuYXV0Y29kKVxuXG4gICAgaWYgKGRhdGEucXVhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHF1YSA9IGRhdGEucXVhW2F1dGV1ci5xdWFjb2RdXG4gICAgICBpZiAocXVhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLnF1YSA9IHF1YVxuICAgICAgICAvLyBpbnNlcnRRdWFSZWZlcmVuY2VzKHF1YSwgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE9cbiAgfVxuXG4gIHJldHVybiBhdXRldXJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydERhdGVTZWFuY2VSZWZlcmVuY2VzKFxuICBkYXRlU2VhbmNlOiBEYXRlU2VhbmNlLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkSWRzQnlUYWJsZU5hbWU6IFZpc2l0ZWRJZHNCeVRhYmxlTmFtZSxcbikge1xuICBsZXQgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5kYXRlX3NlYW5jZVxuICBpZiAodmlzaXRlZElkcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5kYXRlX3NlYW5jZSA9IG5ldyBTZXQoKVxuICB9XG4gIGlmICghdmlzaXRlZElkcy5oYXMoZGF0ZVNlYW5jZS5jb2RlKSkge1xuICAgIHZpc2l0ZWRJZHMuYWRkKGRhdGVTZWFuY2UuY29kZSlcblxuICAgIGlmIChkYXRlU2VhbmNlLmRhdGVfcyAhPT0gbnVsbCAmJiBkYXRhLmRlYmF0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBkYXRlU3RyaW5nID1cbiAgICAgICAgZGF0ZVNlYW5jZS5kYXRlX3MgaW5zdGFuY2VvZiBEYXRlXG4gICAgICAgICAgPyBkYXRlU2VhbmNlLmRhdGVfcy50b0lTT1N0cmluZygpXG4gICAgICAgICAgOiBkYXRlU2VhbmNlLmRhdGVfc1xuICAgICAgY29uc3QgZGViYXQgPSBkYXRhLmRlYmF0c1tkYXRlU3RyaW5nXVxuICAgICAgaWYgKGRlYmF0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZGF0ZVNlYW5jZS5kZWJhdCA9IGRlYmF0XG4gICAgICAgIC8vIGluc2VydERlYmF0UmVmZXJlbmNlcyhkZWJhdCwgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgfVxuICAgIH1cblxuICAgIGRhdGVTZWFuY2Uuc2NycyA9IFtdXG4gICAgaWYgKGRhdGVTZWFuY2Uuc2NyaWRzICE9PSB1bmRlZmluZWQgJiYgZGF0YS5zY3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCBzY3JpZCBvZiBkYXRlU2VhbmNlLnNjcmlkcykge1xuICAgICAgICBjb25zdCBzY3IgPSBkYXRhLnNjcltzY3JpZF1cbiAgICAgICAgaWYgKHNjciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZGF0ZVNlYW5jZS5zY3JzLnB1c2goc2NyKVxuICAgICAgICAgIC8vIGluc2VydFNjclJlZmVyZW5jZXMoc2NyLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGF0ZVNlYW5jZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0RG9jQXR0UmVmZXJlbmNlcyhcbiAgZG9jYXR0OiBEb2NBdHQsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZTogVmlzaXRlZElkc0J5VGFibGVOYW1lLFxuICBwZXJmb3JtSW5zZXJ0UmFwUmVmZXJlbmNlcz10cnVlXG4pIHtcbiAgbGV0IHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUuZG9jYXR0XG4gIGlmICh2aXNpdGVkSWRzID09PSB1bmRlZmluZWQpIHtcbiAgICB2aXNpdGVkSWRzID0gdmlzaXRlZElkc0J5VGFibGVOYW1lLmRvY2F0dCA9IG5ldyBTZXQoKVxuICB9XG4gIGlmICghdmlzaXRlZElkcy5oYXMoZG9jYXR0LmRvY2F0dGNsZSkpIHtcbiAgICB2aXNpdGVkSWRzLmFkZChkb2NhdHQuZG9jYXR0Y2xlKVxuXG4gICAgaWYgKHBlcmZvcm1JbnNlcnRSYXBSZWZlcmVuY2VzICYmIGRvY2F0dC5yYXBjb2QgIT09IG51bGwgJiYgZGF0YS5yYXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgcmFwID0gZGF0YS5yYXBbZG9jYXR0LnJhcGNvZF1cbiAgICAgIGlmIChyYXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBkb2NhdHQucmFwID0gcmFwXG4gICAgICAgIGluc2VydFJhcFJlZmVyZW5jZXMocmFwLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRvY2F0dC50eXBhdHRjb2QgIT09IG51bGwgJiYgZGF0YS50eXBhdHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgdHlwYXR0ID0gZGF0YS50eXBhdHRbZG9jYXR0LnR5cGF0dGNvZF1cbiAgICAgIGlmICh0eXBhdHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBkb2NhdHQudHlwYXR0ID0gdHlwYXR0XG4gICAgICAgIC8vIGluc2VydFR5cEF0dFJlZmVyZW5jZXModHlwYXR0LCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRvY2F0dFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0RWNyUmVmZXJlbmNlcyhcbiAgZWNyOiBFY3IsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZTogVmlzaXRlZElkc0J5VGFibGVOYW1lLFxuKSB7XG4gIGxldCB2aXNpdGVkSWRzID0gdmlzaXRlZElkc0J5VGFibGVOYW1lLmVjclxuICBpZiAodmlzaXRlZElkcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5lY3IgPSBuZXcgU2V0KClcbiAgfVxuICBpZiAoIXZpc2l0ZWRJZHMuaGFzKGVjci5lY3JudW0pKSB7XG4gICAgdmlzaXRlZElkcy5hZGQoZWNyLmVjcm51bSlcblxuICAgIGlmIChlY3IuYXV0Y29kICE9PSBudWxsICYmIGRhdGEuYXV0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGF1dCA9IGRhdGEuYXV0ZXVyW2Vjci5hdXRjb2RdXG4gICAgICBpZiAoYXV0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZWNyLmF1dCA9IGF1dFxuICAgICAgICBpbnNlcnRBdXRldXJSZWZlcmVuY2VzKGF1dCwgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE9cbiAgfVxuXG4gIHJldHVybiBlY3Jcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydExlY2Fzc3JhcFJlZmVyZW5jZXMoXG4gIGxlY2Fzc3JhcDogTGVjQXNzUmFwLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkSWRzQnlUYWJsZU5hbWU6IFZpc2l0ZWRJZHNCeVRhYmxlTmFtZSxcbikge1xuICBsZXQgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5sZWNhc3NyYXBcbiAgaWYgKHZpc2l0ZWRJZHMgPT09IHVuZGVmaW5lZCkge1xuICAgIHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUubGVjYXNzcmFwID0gbmV3IFNldCgpXG4gIH1cbiAgY29uc3QgbGVjYXNyYXBpZCA9IGAke2xlY2Fzc3JhcC5sZWNhc3NpZHR9ICR7bGVjYXNzcmFwLnJhcGNvZH1gXG4gIGlmICghdmlzaXRlZElkcy5oYXMobGVjYXNyYXBpZCkpIHtcbiAgICB2aXNpdGVkSWRzLmFkZChsZWNhc3JhcGlkKVxuXG4gICAgaWYgKGxlY2Fzc3JhcC5yYXBjb2QgIT09IG51bGwgJiYgZGF0YS5yYXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgcmFwID0gZGF0YS5yYXBbbGVjYXNzcmFwLnJhcGNvZF1cbiAgICAgIGlmIChyYXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsZWNhc3NyYXAucmFwID0gcmFwXG4gICAgICAgIGluc2VydFJhcFJlZmVyZW5jZXMocmFwLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGxlY2Fzc3JhcFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0TGVjYXNzUmVmZXJlbmNlcyhcbiAgbGVjYXNzOiBMZWNBc3MsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZTogVmlzaXRlZElkc0J5VGFibGVOYW1lLFxuKSB7XG4gIGxldCB2aXNpdGVkSWRzID0gdmlzaXRlZElkc0J5VGFibGVOYW1lLmxlY2Fzc1xuICBpZiAodmlzaXRlZElkcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5sZWNhc3MgPSBuZXcgU2V0KClcbiAgfVxuICBpZiAoIXZpc2l0ZWRJZHMuaGFzKGxlY2Fzcy5sZWNhc3NpZHQpKSB7XG4gICAgdmlzaXRlZElkcy5hZGQobGVjYXNzLmxlY2Fzc2lkdClcblxuICAgIGlmIChsZWNhc3MuY29kYXNzICE9PSBudWxsICYmIGRhdGEuYXNzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGFzcyA9IGRhdGEuYXNzW2xlY2Fzcy5jb2Rhc3NdXG4gICAgICBpZiAoYXNzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGVjYXNzLmFzcyA9IGFzc1xuICAgICAgICAvLyBpbnNlcnRBc3NSZWZlcmVuY2VzKGFzcywgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChsZWNhc3Mub3JnY29kICE9PSBudWxsICYmIGRhdGEub3JnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9yZyA9IGRhdGEub3JnW2xlY2Fzcy5vcmdjb2RdXG4gICAgICBpZiAob3JnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGVjYXNzLm9yZyA9IG9yZ1xuICAgICAgICAvLyBpbnNlcnRPcmdSZWZlcmVuY2VzKG9yZywgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgfVxuICAgIH1cblxuICAgIGxlY2Fzcy5hdWRzID0gW11cbiAgICBpZiAobGVjYXNzLmF1ZGNsZXMgIT09IHVuZGVmaW5lZCAmJiBkYXRhLmF1ZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKGNvbnN0IGF1ZGNsZSBvZiBsZWNhc3MuYXVkY2xlcykge1xuICAgICAgICBjb25zdCBhdWQgPSBkYXRhLmF1ZFthdWRjbGVdXG4gICAgICAgIGlmIChhdWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGxlY2Fzcy5hdWRzLnB1c2goYXVkKVxuICAgICAgICAgIGluc2VydEF1ZFJlZmVyZW5jZXMoYXVkLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZWNhc3MuZGF0ZXNTZWFuY2VzID0gW11cbiAgICBpZiAobGVjYXNzLmRhdGVzU2VhbmNlc0NvZGVzICE9PSB1bmRlZmluZWQgJiYgZGF0YS5kYXRlX3NlYW5jZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKGNvbnN0IGRhdGVTZWFuY2VDb2RlIG9mIGxlY2Fzcy5kYXRlc1NlYW5jZXNDb2Rlcykge1xuICAgICAgICBjb25zdCBkYXRlU2VhbmNlID0gZGF0YS5kYXRlX3NlYW5jZVtkYXRlU2VhbmNlQ29kZV1cbiAgICAgICAgaWYgKGRhdGVTZWFuY2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGxlY2Fzcy5kYXRlc1NlYW5jZXMucHVzaChkYXRlU2VhbmNlKVxuICAgICAgICAgIGluc2VydERhdGVTZWFuY2VSZWZlcmVuY2VzKGRhdGVTZWFuY2UsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGxlY2Fzcy5sZWNhc3NyYXBzID0gW11cbiAgICBpZiAobGVjYXNzLmxlY2Fzc3JhcGlkcyAhPT0gdW5kZWZpbmVkICYmIGRhdGEubGVjYXNzcmFwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgbGVjYXNzcmFwaWQgb2YgbGVjYXNzLmxlY2Fzc3JhcGlkcykge1xuICAgICAgICBjb25zdCBsZWNhc3NyYXAgPSBkYXRhLmxlY2Fzc3JhcFtsZWNhc3NyYXBpZF1cbiAgICAgICAgaWYgKGxlY2Fzc3JhcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbGVjYXNzLmxlY2Fzc3JhcHMucHVzaChsZWNhc3NyYXApXG4gICAgICAgICAgaW5zZXJ0TGVjYXNzcmFwUmVmZXJlbmNlcyhsZWNhc3NyYXAsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGxlY2Fzcy50ZXh0ZXMgPSBbXVxuICAgIGlmIChsZWNhc3MudGV4Y29kcyAhPT0gdW5kZWZpbmVkICYmIGRhdGEudGV4dGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCB0ZXhjb2Qgb2YgbGVjYXNzLnRleGNvZHMpIHtcbiAgICAgICAgY29uc3QgdGV4dGUgPSBkYXRhLnRleHRlW3RleGNvZF1cbiAgICAgICAgaWYgKHRleHRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBsZWNhc3MudGV4dGVzLnB1c2godGV4dGUpXG4gICAgICAgICAgaW5zZXJ0VGV4dGVSZWZlcmVuY2VzKHRleHRlLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbGVjYXNzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRMZWN0dXJlUmVmZXJlbmNlcyhcbiAgbGVjdHVyZTogTGVjdHVyZSxcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZElkc0J5VGFibGVOYW1lOiBWaXNpdGVkSWRzQnlUYWJsZU5hbWUsXG4pIHtcbiAgbGV0IHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUubGVjdHVyZVxuICBpZiAodmlzaXRlZElkcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5sZWN0dXJlID0gbmV3IFNldCgpXG4gIH1cbiAgaWYgKCF2aXNpdGVkSWRzLmhhcyhsZWN0dXJlLmxlY2lkdCkpIHtcbiAgICB2aXNpdGVkSWRzLmFkZChsZWN0dXJlLmxlY2lkdClcblxuICAgIGlmIChsZWN0dXJlLnR5cGxlY2NvZCAhPT0gbnVsbCAmJiBkYXRhLnR5cGxlYyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCB0eXBsZWMgPSBkYXRhLnR5cGxlY1tsZWN0dXJlLnR5cGxlY2NvZF1cbiAgICAgIGlmICh0eXBsZWMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsZWN0dXJlLnR5cGxlYyA9IHR5cGxlY1xuICAgICAgICAvLyBpbnNlcnRUeXBsZWNSZWZlcmVuY2VzKHR5cGxlYywgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgfVxuICAgIH1cblxuICAgIGxlY3R1cmUubGVjYXNzcyA9IFtdXG4gICAgaWYgKGxlY3R1cmUubGVjYXNzaWR0cyAhPT0gdW5kZWZpbmVkICYmIGRhdGEubGVjYXNzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgbGVjYXNzaWR0IG9mIGxlY3R1cmUubGVjYXNzaWR0cykge1xuICAgICAgICBjb25zdCBsZWNhc3MgPSBkYXRhLmxlY2Fzc1tsZWNhc3NpZHRdXG4gICAgICAgIGlmIChsZWNhc3MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGxlY3R1cmUubGVjYXNzcy5wdXNoKGxlY2FzcylcbiAgICAgICAgICBpbnNlcnRMZWNhc3NSZWZlcmVuY2VzKGxlY2FzcywgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGxlY3R1cmVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydExvaVJlZmVyZW5jZXMoXG4gIGxvaTogTG9pLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkSWRzQnlUYWJsZU5hbWU6IFZpc2l0ZWRJZHNCeVRhYmxlTmFtZSxcbikge1xuICBsZXQgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5sb2lcbiAgaWYgKHZpc2l0ZWRJZHMgPT09IHVuZGVmaW5lZCkge1xuICAgIHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUubG9pID0gbmV3IFNldCgpXG4gIH1cbiAgaWYgKCF2aXNpdGVkSWRzLmhhcyhsb2kubG9pY29kKSkge1xuICAgIHZpc2l0ZWRJZHMuYWRkKGxvaS5sb2ljb2QpXG5cbiAgICBpZiAobG9pLnR5cGxvaWNvZCAhPT0gbnVsbCAmJiBkYXRhLnR5cGxvaSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCB0eXBsb2kgPSBkYXRhLnR5cGxvaVtsb2kudHlwbG9pY29kXVxuICAgICAgaWYgKHR5cGxvaSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxvaS50eXBsb2kgPSB0eXBsb2lcbiAgICAgICAgLy8gaW5zZXJ0VHlwbG9pUmVmZXJlbmNlcyh0eXBsb2ksIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobG9pLmV0YWxvaWNvZCAhPT0gbnVsbCAmJiBkYXRhLmV0YWxvaSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBldGFsb2kgPSBkYXRhLmV0YWxvaVtsb2kuZXRhbG9pY29kXVxuICAgICAgaWYgKGV0YWxvaSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxvaS5ldGFsb2kgPSBldGFsb2lcbiAgICAgICAgLy8gaW5zZXJ0RXRhbG9pUmVmZXJlbmNlcyhldGFsb2ksIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobG9pLmRlY2NvY2NvZCAhPT0gbnVsbCAmJiBkYXRhLmRlY2NvYyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBkZWNjb2MgPSBkYXRhLmRlY2NvY1tsb2kuZGVjY29jY29kXVxuICAgICAgaWYgKGRlY2NvYyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxvaS5kZWNjb2MgPSBkZWNjb2NcbiAgICAgICAgLy8gaW5zZXJ0RGVjY29jUmVmZXJlbmNlcyhkZWNjb2MsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsb2kubGVjdHVyZXMgPSBbXVxuICAgIGlmIChsb2kubGVjaWR0cyAhPT0gdW5kZWZpbmVkICYmIGRhdGEubGVjdHVyZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKGNvbnN0IGxlY2lkdCBvZiBsb2kubGVjaWR0cykge1xuICAgICAgICBjb25zdCBsZWN0dXJlID0gZGF0YS5sZWN0dXJlW2xlY2lkdF1cbiAgICAgICAgaWYgKGxlY3R1cmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGxvaS5sZWN0dXJlcy5wdXNoKGxlY3R1cmUpXG4gICAgICAgICAgaW5zZXJ0TGVjdHVyZVJlZmVyZW5jZXMobGVjdHVyZSwgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGxvaVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0UmFwUmVmZXJlbmNlcyhcbiAgcmFwOiBSYXAsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZTogVmlzaXRlZElkc0J5VGFibGVOYW1lLFxuKSB7XG4gIGxldCB2aXNpdGVkSWRzID0gdmlzaXRlZElkc0J5VGFibGVOYW1lLnJhcFxuICBpZiAodmlzaXRlZElkcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5yYXAgPSBuZXcgU2V0KClcbiAgfVxuICBpZiAoIXZpc2l0ZWRJZHMuaGFzKHJhcC5yYXBjb2QpKSB7XG4gICAgdmlzaXRlZElkcy5hZGQocmFwLnJhcGNvZClcblxuICAgIGlmIChyYXAuY29kZGVucmFwICE9PSBudWxsICYmIGRhdGEuZGVucmFwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGRlbnJhcCA9IGRhdGEuZGVucmFwW3JhcC5jb2RkZW5yYXBdXG4gICAgICBpZiAoZGVucmFwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmFwLmRlbnJhcCA9IGRlbnJhcFxuICAgICAgICAvLyBpbnNlcnREZW5yYXBSZWZlcmVuY2VzKGRlbnJhcCwgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJhcC5kb2NhdHRzID0gW11cbiAgICBpZiAocmFwLmRvY2F0dGNsZXMgIT09IHVuZGVmaW5lZCAmJiBkYXRhLmRvY2F0dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKGNvbnN0IGRvY2F0dGNsZSBvZiByYXAuZG9jYXR0Y2xlcykge1xuICAgICAgICBjb25zdCBkb2NhdHQgPSBkYXRhLmRvY2F0dFtkb2NhdHRjbGVdXG4gICAgICAgIGlmIChkb2NhdHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJhcC5kb2NhdHRzLnB1c2goZG9jYXR0KVxuICAgICAgICAgIGluc2VydERvY0F0dFJlZmVyZW5jZXMoZG9jYXR0LCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUsIGZhbHNlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmFwLmVjcnMgPSBbXVxuICAgIGlmIChyYXAuZWNybnVtcyAhPT0gdW5kZWZpbmVkICYmIGRhdGEuZWNyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgZWNybnVtIG9mIHJhcC5lY3JudW1zKSB7XG4gICAgICAgIGNvbnN0IGVjciA9IGRhdGEuZWNyW2Vjcm51bV1cbiAgICAgICAgaWYgKGVjciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmFwLmVjcnMucHVzaChlY3IpXG4gICAgICAgICAgaW5zZXJ0RWNyUmVmZXJlbmNlcyhlY3IsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJhcC5vcmdzID0gW11cbiAgICBpZiAocmFwLm9yZ2NvZHMgIT09IHVuZGVmaW5lZCAmJiBkYXRhLm9yZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKGNvbnN0IG9yZ2NvZCBvZiByYXAub3JnY29kcykge1xuICAgICAgICBjb25zdCBvcmcgPSBkYXRhLm9yZ1tvcmdjb2RdXG4gICAgICAgIGlmIChvcmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJhcC5vcmdzLnB1c2gob3JnKVxuICAgICAgICAgIC8vIGluc2VydE9yZ1JlZmVyZW5jZXMob3JnLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmFwXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRUZXh0ZVJlZmVyZW5jZXMoXG4gIHRleHRlOiBUZXh0ZSxcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZElkc0J5VGFibGVOYW1lOiBWaXNpdGVkSWRzQnlUYWJsZU5hbWUsXG4pIHtcbiAgbGV0IHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUudGV4dGVcbiAgaWYgKHZpc2l0ZWRJZHMgPT09IHVuZGVmaW5lZCkge1xuICAgIHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUudGV4dGUgPSBuZXcgU2V0KClcbiAgfVxuICBpZiAoIXZpc2l0ZWRJZHMuaGFzKHRleHRlLnRleGNvZCkpIHtcbiAgICB2aXNpdGVkSWRzLmFkZCh0ZXh0ZS50ZXhjb2QpXG5cbiAgICB0ZXh0ZS5lY3JzID0gW11cbiAgICBpZiAodGV4dGUuZWNybnVtcyAhPT0gdW5kZWZpbmVkICYmIGRhdGEuZWNyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgZWNybnVtIG9mIHRleHRlLmVjcm51bXMpIHtcbiAgICAgICAgY29uc3QgZWNyID0gZGF0YS5lY3JbZWNybnVtXVxuICAgICAgICBpZiAoZWNyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0ZXh0ZS5lY3JzLnB1c2goZWNyKVxuICAgICAgICAgIGluc2VydEVjclJlZmVyZW5jZXMoZWNyLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGV4dGUub3JnY29kICE9PSBudWxsICYmIGRhdGEub3JnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9yZyA9IGRhdGEub3JnW3RleHRlLm9yZ2NvZF1cbiAgICAgIGlmIChvcmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0ZXh0ZS5vcmcgPSBvcmdcbiAgICAgICAgLy8gaW5zZXJ0T3JnUmVmZXJlbmNlcyhvcmcsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGV4dGUub3JpdHh0Y29kICE9PSBudWxsICYmIGRhdGEub3JpdHh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9yaXR4dCA9IGRhdGEub3JpdHh0W3RleHRlLm9yaXR4dGNvZF1cbiAgICAgIGlmIChvcml0eHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0ZXh0ZS5vcml0eHQgPSBvcml0eHRcbiAgICAgICAgLy8gaW5zZXJ0T3JpdHh0UmVmZXJlbmNlcyhvcml0eHQsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGV4dGUudHh0QW1lbGlJZCAhPT0gdW5kZWZpbmVkICYmIGRhdGEudHh0X2FtZWxpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHR4dEFtZWxpID0gZGF0YS50eHRfYW1lbGlbdGV4dGUudHh0QW1lbGlJZF1cbiAgICAgIGlmICh0eHRBbWVsaSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRleHRlLnR4dEFtZWxpID0gdHh0QW1lbGlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGV4dGUudHlwdHh0Y29kICE9PSBudWxsICYmIGRhdGEudHlwdHh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHR5cHR4dCA9IGRhdGEudHlwdHh0W3RleHRlLnR5cHR4dGNvZF1cbiAgICAgIGlmICh0eXB0eHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0ZXh0ZS50eXB0eHQgPSB0eXB0eHRcbiAgICAgICAgLy8gaW5zZXJ0VHlwdHh0UmVmZXJlbmNlcyh0eXB0eHQsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGV4dGUudHlwdXJsICE9PSBudWxsICYmIGRhdGEudHlwdXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHR5cHVybCA9IGRhdGEudHlwdXJsW3RleHRlLnR5cHVybF1cbiAgICAgIGlmICh0eXB1cmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0ZXh0ZS5saWJ0eXB1cmwgPSB0eXB1cmwubGlidHlwdXJsXG4gICAgICAgIC8vIGluc2VydFR5cHVybFJlZmVyZW5jZXModHlwdXJsLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ET1xuICB9XG5cbiAgcmV0dXJuIHRleHRlXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE0RE8sU0FBU0EsbUJBQW1CQSxDQUNqQ0MsR0FBUSxFQUNSQyxJQUFnQixFQUNoQkMscUJBQTRDLEVBQzVDO0VBQ0EsSUFBSUMsVUFBVSxHQUFHRCxxQkFBcUIsQ0FBQ0YsR0FBRztFQUMxQyxJQUFJRyxVQUFVLEtBQUtDLFNBQVMsRUFBRTtJQUM1QkQsVUFBVSxHQUFHRCxxQkFBcUIsQ0FBQ0YsR0FBRyxHQUFHLElBQUlLLEdBQUcsQ0FBQyxDQUFDO0VBQ3BEO0VBQ0EsSUFBSSxDQUFDRixVQUFVLENBQUNHLEdBQUcsQ0FBQ04sR0FBRyxDQUFDTyxNQUFNLENBQUMsRUFBRTtJQUMvQkosVUFBVSxDQUFDSyxHQUFHLENBQUNSLEdBQUcsQ0FBQ08sTUFBTSxDQUFDO0lBRTFCLElBQUlQLEdBQUcsQ0FBQ1MsTUFBTSxLQUFLLElBQUksSUFBSVIsSUFBSSxDQUFDUyxHQUFHLEtBQUtOLFNBQVMsRUFBRTtN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
|