@tricoteuses/senat 0.3.2 → 1.1.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 +55 -0
- package/lib/aggregates.d.ts +54 -0
- package/lib/aggregates.js +1122 -0
- package/lib/aggregates.mjs +802 -0
- package/lib/aggregates.ts +947 -0
- package/lib/config.d.ts +2 -0
- package/lib/config.js +49 -0
- package/lib/config.mjs +16 -0
- package/lib/config.ts +26 -0
- package/lib/databases.d.ts +11 -0
- package/lib/databases.js +125 -0
- package/lib/databases.mjs +26 -0
- package/lib/databases.ts +32 -0
- package/lib/datasets.d.ts +28 -0
- package/lib/datasets.js +93 -0
- package/lib/datasets.mjs +78 -0
- package/lib/datasets.ts +118 -0
- package/lib/fields.d.ts +10 -0
- package/lib/fields.js +68 -0
- package/lib/fields.mjs +22 -0
- package/lib/fields.ts +29 -0
- package/lib/index.d.ts +6 -5
- package/lib/index.js +236 -7
- package/lib/index.mjs +6 -1
- package/lib/index.ts +59 -0
- package/lib/inserters.d.ts +6 -2
- package/lib/inserters.js +86 -191
- package/lib/inserters.mjs +19 -3
- package/lib/inserters.ts +545 -0
- package/lib/model/ameli.d.ts +4 -0
- package/lib/model/ameli.js +167 -0
- package/lib/model/ameli.mjs +57 -0
- package/lib/model/ameli.ts +86 -0
- package/lib/model/debats.d.ts +4 -0
- package/lib/model/debats.js +123 -0
- package/lib/model/debats.mjs +43 -0
- package/lib/model/debats.ts +68 -0
- package/lib/model/dosleg.d.ts +29 -0
- package/lib/model/dosleg.js +840 -0
- package/lib/model/dosleg.mjs +337 -0
- package/lib/model/dosleg.ts +558 -0
- package/lib/model/index.d.ts +5 -0
- package/lib/model/index.js +48 -0
- package/lib/model/index.mjs +5 -0
- package/lib/model/index.ts +11 -0
- package/lib/model/questions.d.ts +2 -0
- package/lib/model/questions.js +52 -0
- package/lib/model/questions.mjs +8 -0
- package/lib/model/questions.ts +14 -0
- package/lib/model/sens.d.ts +2 -0
- package/lib/model/sens.js +57 -0
- package/lib/model/sens.mjs +9 -0
- package/lib/model/sens.ts +18 -0
- package/lib/model/util.d.ts +1 -0
- package/lib/model/util.js +60 -0
- package/lib/model/util.mjs +10 -0
- package/lib/model/util.ts +16 -0
- package/lib/raw_types/ameli.d.ts +416 -410
- package/lib/raw_types/ameli.js +26 -144
- package/lib/raw_types/ameli.ts +601 -0
- package/lib/raw_types/debats.d.ts +82 -80
- package/lib/raw_types/debats.js +8 -42
- package/lib/raw_types/debats.ts +145 -0
- package/lib/raw_types/dosleg.d.ts +936 -920
- package/lib/raw_types/dosleg.js +5 -345
- package/lib/raw_types/dosleg.ts +2193 -0
- package/lib/raw_types/questions.d.ts +226 -2
- package/lib/raw_types/questions.js +18 -5
- package/lib/raw_types/questions.mjs +1 -8
- package/lib/raw_types/questions.ts +249 -0
- package/lib/raw_types/sens.d.ts +1180 -1176
- package/lib/raw_types/sens.js +3 -397
- package/lib/raw_types/sens.ts +2907 -0
- package/lib/scripts/convert_data.d.ts +1 -0
- package/lib/scripts/convert_data.js +284 -0
- package/lib/scripts/convert_data.mjs +146 -0
- package/lib/scripts/convert_data.ts +182 -0
- package/lib/scripts/fix_db.d.ts +1 -0
- package/lib/scripts/fix_db.js +144 -0
- package/lib/scripts/fix_db.mjs +64 -0
- package/lib/scripts/fix_db.ts +75 -0
- package/lib/scripts/images/transparent_150x192.jpg +0 -0
- package/lib/scripts/images/transparent_155x225.jpg +0 -0
- package/lib/scripts/retrieve_open_data.d.ts +1 -0
- package/lib/scripts/retrieve_open_data.js +371 -0
- package/lib/scripts/retrieve_open_data.mjs +218 -0
- package/lib/scripts/retrieve_open_data.ts +258 -0
- package/lib/scripts/retrieve_senateurs_photos.d.ts +1 -0
- package/lib/scripts/retrieve_senateurs_photos.js +268 -0
- package/lib/scripts/retrieve_senateurs_photos.mjs +164 -0
- package/lib/scripts/retrieve_senateurs_photos.ts +200 -0
- package/lib/scripts/retrieve_textes.d.ts +1 -0
- package/lib/scripts/retrieve_textes.js +179 -0
- package/lib/scripts/retrieve_textes.mjs +77 -0
- package/lib/scripts/retrieve_textes.ts +95 -0
- package/lib/strings.d.ts +1 -0
- package/lib/strings.js +49 -0
- package/lib/strings.mjs +18 -0
- package/lib/strings.ts +26 -0
- package/lib/types/ameli.d.ts +5 -0
- package/lib/types/ameli.js +7 -4
- package/lib/types/ameli.mjs +13 -1
- package/lib/types/ameli.ts +21 -0
- package/lib/types/debats.d.ts +2 -0
- package/lib/types/debats.js +4 -3
- package/lib/types/debats.mjs +2 -1
- package/lib/types/debats.ts +6 -0
- package/lib/types/dosleg.d.ts +28 -0
- package/lib/types/dosleg.js +30 -3
- package/lib/types/dosleg.mjs +151 -1
- package/lib/types/dosleg.ts +284 -0
- package/lib/types/questions.d.ts +2 -0
- package/lib/types/questions.js +13 -1
- package/lib/types/questions.mjs +1 -1
- package/lib/types/questions.ts +3 -0
- package/lib/types/sens.d.ts +2 -0
- package/lib/types/sens.js +4 -3
- package/lib/types/sens.mjs +23 -1
- package/lib/types/sens.ts +36 -0
- package/lib/typings/windows-1252.d.js +2 -0
- package/lib/typings/windows-1252.d.mjs +2 -0
- package/lib/typings/windows-1252.d.ts +11 -0
- package/lib/validators/config.d.ts +1 -0
- package/lib/validators/config.js +121 -0
- package/lib/validators/config.mjs +54 -0
- package/lib/validators/config.ts +79 -0
- package/lib/validators/senat.d.ts +0 -0
- package/lib/validators/senat.js +28 -0
- package/lib/validators/senat.mjs +24 -0
- package/lib/validators/senat.ts +26 -0
- package/package.json +35 -4
package/lib/inserters.js
CHANGED
|
@@ -1,23 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
require("core-js/modules/es.array.slice.js");
|
|
4
|
-
|
|
5
|
-
require("core-js/modules/es.function.name.js");
|
|
6
|
-
|
|
7
|
-
require("core-js/modules/es.array.from.js");
|
|
8
|
-
|
|
9
|
-
require("core-js/modules/es.regexp.exec.js");
|
|
10
|
-
|
|
11
3
|
require("core-js/modules/es.symbol.js");
|
|
12
|
-
|
|
13
4
|
require("core-js/modules/es.symbol.description.js");
|
|
14
|
-
|
|
15
5
|
require("core-js/modules/es.symbol.iterator.js");
|
|
16
|
-
|
|
6
|
+
require("core-js/modules/es.array.from.js");
|
|
17
7
|
require("core-js/modules/es.array.is-array.js");
|
|
18
|
-
|
|
8
|
+
require("core-js/modules/es.array.slice.js");
|
|
9
|
+
require("core-js/modules/es.function.name.js");
|
|
19
10
|
require("core-js/modules/es.object.define-property.js");
|
|
20
|
-
|
|
11
|
+
require("core-js/modules/es.regexp.exec.js");
|
|
12
|
+
require("core-js/modules/es.regexp.to-string.js");
|
|
21
13
|
Object.defineProperty(exports, "__esModule", {
|
|
22
14
|
value: true
|
|
23
15
|
});
|
|
@@ -30,109 +22,85 @@ exports.insertLecassReferences = insertLecassReferences;
|
|
|
30
22
|
exports.insertLecassrapReferences = insertLecassrapReferences;
|
|
31
23
|
exports.insertLectureReferences = insertLectureReferences;
|
|
32
24
|
exports.insertLoiReferences = insertLoiReferences;
|
|
25
|
+
exports.insertQuestionReferences = insertQuestionReferences;
|
|
33
26
|
exports.insertRapReferences = insertRapReferences;
|
|
27
|
+
exports.insertSenReferences = insertSenReferences;
|
|
34
28
|
exports.insertTexteReferences = insertTexteReferences;
|
|
35
|
-
|
|
29
|
+
require("core-js/modules/es.array.concat.js");
|
|
36
30
|
require("core-js/modules/es.array.iterator.js");
|
|
37
|
-
|
|
31
|
+
require("core-js/modules/es.date.to-iso-string.js");
|
|
32
|
+
require("core-js/modules/es.date.to-string.js");
|
|
38
33
|
require("core-js/modules/es.object.to-string.js");
|
|
39
|
-
|
|
40
34
|
require("core-js/modules/es.set.js");
|
|
41
|
-
|
|
42
35
|
require("core-js/modules/es.string.iterator.js");
|
|
43
|
-
|
|
44
36
|
require("core-js/modules/web.dom-collections.iterator.js");
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
require("core-js/modules/es.date.to-iso-string.js");
|
|
49
|
-
|
|
50
|
-
require("core-js/modules/es.array.concat.js");
|
|
51
|
-
|
|
52
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, 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 normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
53
|
-
|
|
54
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
55
|
-
|
|
56
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
57
|
-
|
|
37
|
+
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; } } }; }
|
|
38
|
+
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; } }
|
|
39
|
+
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; }
|
|
58
40
|
function insertAudReferences(aud, data, visitedIdsByTableName) {
|
|
59
41
|
var visitedIds = visitedIdsByTableName.aud;
|
|
60
|
-
|
|
61
42
|
if (visitedIds === undefined) {
|
|
62
43
|
visitedIds = visitedIdsByTableName.aud = new Set();
|
|
63
44
|
}
|
|
64
|
-
|
|
65
45
|
if (!visitedIds.has(aud.audcle)) {
|
|
66
46
|
visitedIds.add(aud.audcle);
|
|
67
|
-
|
|
68
47
|
if (aud.orgcod !== null && data.org !== undefined) {
|
|
69
48
|
var org = data.org[aud.orgcod];
|
|
70
|
-
|
|
71
49
|
if (org !== undefined) {
|
|
72
|
-
aud.org = org;
|
|
50
|
+
aud.org = org;
|
|
51
|
+
// insertOrgReferences(org, data, visitedIdsByTableName)
|
|
73
52
|
}
|
|
74
|
-
}
|
|
53
|
+
}
|
|
75
54
|
|
|
55
|
+
// TODO
|
|
76
56
|
}
|
|
77
|
-
|
|
78
57
|
return aud;
|
|
79
58
|
}
|
|
80
|
-
|
|
81
59
|
function insertAuteurReferences(auteur, data, visitedIdsByTableName) {
|
|
82
60
|
var visitedIds = visitedIdsByTableName.auteur;
|
|
83
|
-
|
|
84
61
|
if (visitedIds === undefined) {
|
|
85
62
|
visitedIds = visitedIdsByTableName.auteur = new Set();
|
|
86
63
|
}
|
|
87
|
-
|
|
88
64
|
if (!visitedIds.has(auteur.autcod)) {
|
|
89
65
|
visitedIds.add(auteur.autcod);
|
|
90
|
-
|
|
91
66
|
if (data.qua !== undefined) {
|
|
92
67
|
var qua = data.qua[auteur.quacod];
|
|
93
|
-
|
|
94
68
|
if (qua !== undefined) {
|
|
95
|
-
auteur.qua = qua;
|
|
69
|
+
auteur.qua = qua;
|
|
70
|
+
// insertQuaReferences(qua, data, visitedIdsByTableName)
|
|
96
71
|
}
|
|
97
|
-
}
|
|
72
|
+
}
|
|
98
73
|
|
|
74
|
+
// TODO
|
|
99
75
|
}
|
|
100
|
-
|
|
101
76
|
return auteur;
|
|
102
77
|
}
|
|
103
|
-
|
|
104
78
|
function insertDateSeanceReferences(dateSeance, data, visitedIdsByTableName) {
|
|
105
79
|
var visitedIds = visitedIdsByTableName.date_seance;
|
|
106
|
-
|
|
107
80
|
if (visitedIds === undefined) {
|
|
108
81
|
visitedIds = visitedIdsByTableName.date_seance = new Set();
|
|
109
82
|
}
|
|
110
|
-
|
|
111
83
|
if (!visitedIds.has(dateSeance.code)) {
|
|
112
84
|
visitedIds.add(dateSeance.code);
|
|
113
|
-
|
|
114
85
|
if (dateSeance.date_s !== null && data.debats !== undefined) {
|
|
115
86
|
var dateString = dateSeance.date_s instanceof Date ? dateSeance.date_s.toISOString() : dateSeance.date_s;
|
|
116
87
|
var debat = data.debats[dateString];
|
|
117
|
-
|
|
118
88
|
if (debat !== undefined) {
|
|
119
|
-
dateSeance.debat = debat;
|
|
89
|
+
dateSeance.debat = debat;
|
|
90
|
+
// insertDebatReferences(debat, data, visitedIdsByTableName)
|
|
120
91
|
}
|
|
121
92
|
}
|
|
122
|
-
|
|
123
93
|
dateSeance.scrs = [];
|
|
124
|
-
|
|
125
94
|
if (dateSeance.scrids !== undefined && data.scr !== undefined) {
|
|
126
95
|
var _iterator = _createForOfIteratorHelper(dateSeance.scrids),
|
|
127
|
-
|
|
128
|
-
|
|
96
|
+
_step;
|
|
129
97
|
try {
|
|
130
98
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
131
99
|
var scrid = _step.value;
|
|
132
100
|
var scr = data.scr[scrid];
|
|
133
|
-
|
|
134
101
|
if (scr !== undefined) {
|
|
135
|
-
dateSeance.scrs.push(scr);
|
|
102
|
+
dateSeance.scrs.push(scr);
|
|
103
|
+
// insertScrReferences(scr, data, visitedIdsByTableName)
|
|
136
104
|
}
|
|
137
105
|
}
|
|
138
106
|
} catch (err) {
|
|
@@ -142,127 +110,99 @@ function insertDateSeanceReferences(dateSeance, data, visitedIdsByTableName) {
|
|
|
142
110
|
}
|
|
143
111
|
}
|
|
144
112
|
}
|
|
145
|
-
|
|
146
113
|
return dateSeance;
|
|
147
114
|
}
|
|
148
|
-
|
|
149
115
|
function insertDocAttReferences(docatt, data, visitedIdsByTableName) {
|
|
116
|
+
var performInsertRapReferences = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
|
|
150
117
|
var visitedIds = visitedIdsByTableName.docatt;
|
|
151
|
-
|
|
152
118
|
if (visitedIds === undefined) {
|
|
153
119
|
visitedIds = visitedIdsByTableName.docatt = new Set();
|
|
154
120
|
}
|
|
155
|
-
|
|
156
121
|
if (!visitedIds.has(docatt.docattcle)) {
|
|
157
122
|
visitedIds.add(docatt.docattcle);
|
|
158
|
-
|
|
159
|
-
if (docatt.rapcod !== null && data.rap !== undefined) {
|
|
123
|
+
if (performInsertRapReferences && docatt.rapcod !== null && data.rap !== undefined) {
|
|
160
124
|
var rap = data.rap[docatt.rapcod];
|
|
161
|
-
|
|
162
125
|
if (rap !== undefined) {
|
|
163
126
|
docatt.rap = rap;
|
|
164
127
|
insertRapReferences(rap, data, visitedIdsByTableName);
|
|
165
128
|
}
|
|
166
129
|
}
|
|
167
|
-
|
|
168
130
|
if (docatt.typattcod !== null && data.typatt !== undefined) {
|
|
169
131
|
var typatt = data.typatt[docatt.typattcod];
|
|
170
|
-
|
|
171
132
|
if (typatt !== undefined) {
|
|
172
|
-
docatt.typatt = typatt;
|
|
133
|
+
docatt.typatt = typatt;
|
|
134
|
+
// insertTypAttReferences(typatt, data, visitedIdsByTableName)
|
|
173
135
|
}
|
|
174
136
|
}
|
|
175
137
|
}
|
|
176
|
-
|
|
177
138
|
return docatt;
|
|
178
139
|
}
|
|
179
|
-
|
|
180
140
|
function insertEcrReferences(ecr, data, visitedIdsByTableName) {
|
|
181
141
|
var visitedIds = visitedIdsByTableName.ecr;
|
|
182
|
-
|
|
183
142
|
if (visitedIds === undefined) {
|
|
184
143
|
visitedIds = visitedIdsByTableName.ecr = new Set();
|
|
185
144
|
}
|
|
186
|
-
|
|
187
145
|
if (!visitedIds.has(ecr.ecrnum)) {
|
|
188
146
|
visitedIds.add(ecr.ecrnum);
|
|
189
|
-
|
|
190
147
|
if (ecr.autcod !== null && data.auteur !== undefined) {
|
|
191
148
|
var aut = data.auteur[ecr.autcod];
|
|
192
|
-
|
|
193
149
|
if (aut !== undefined) {
|
|
194
150
|
ecr.aut = aut;
|
|
195
151
|
insertAuteurReferences(aut, data, visitedIdsByTableName);
|
|
196
152
|
}
|
|
197
|
-
}
|
|
153
|
+
}
|
|
198
154
|
|
|
155
|
+
// TODO
|
|
199
156
|
}
|
|
200
|
-
|
|
201
157
|
return ecr;
|
|
202
158
|
}
|
|
203
|
-
|
|
204
159
|
function insertLecassrapReferences(lecassrap, data, visitedIdsByTableName) {
|
|
205
160
|
var visitedIds = visitedIdsByTableName.lecassrap;
|
|
206
|
-
|
|
207
161
|
if (visitedIds === undefined) {
|
|
208
162
|
visitedIds = visitedIdsByTableName.lecassrap = new Set();
|
|
209
163
|
}
|
|
210
|
-
|
|
211
164
|
var lecasrapid = "".concat(lecassrap.lecassidt, " ").concat(lecassrap.rapcod);
|
|
212
|
-
|
|
213
165
|
if (!visitedIds.has(lecasrapid)) {
|
|
214
166
|
visitedIds.add(lecasrapid);
|
|
215
|
-
|
|
216
167
|
if (lecassrap.rapcod !== null && data.rap !== undefined) {
|
|
217
168
|
var rap = data.rap[lecassrap.rapcod];
|
|
218
|
-
|
|
219
169
|
if (rap !== undefined) {
|
|
220
170
|
lecassrap.rap = rap;
|
|
221
171
|
insertRapReferences(rap, data, visitedIdsByTableName);
|
|
222
172
|
}
|
|
223
173
|
}
|
|
224
174
|
}
|
|
225
|
-
|
|
226
175
|
return lecassrap;
|
|
227
176
|
}
|
|
228
|
-
|
|
229
177
|
function insertLecassReferences(lecass, data, visitedIdsByTableName) {
|
|
230
178
|
var visitedIds = visitedIdsByTableName.lecass;
|
|
231
|
-
|
|
232
179
|
if (visitedIds === undefined) {
|
|
233
180
|
visitedIds = visitedIdsByTableName.lecass = new Set();
|
|
234
181
|
}
|
|
235
|
-
|
|
236
182
|
if (!visitedIds.has(lecass.lecassidt)) {
|
|
237
183
|
visitedIds.add(lecass.lecassidt);
|
|
238
|
-
|
|
239
184
|
if (lecass.codass !== null && data.ass !== undefined) {
|
|
240
185
|
var ass = data.ass[lecass.codass];
|
|
241
|
-
|
|
242
186
|
if (ass !== undefined) {
|
|
243
|
-
lecass.ass = ass;
|
|
187
|
+
lecass.ass = ass;
|
|
188
|
+
// insertAssReferences(ass, data, visitedIdsByTableName)
|
|
244
189
|
}
|
|
245
190
|
}
|
|
246
|
-
|
|
247
191
|
if (lecass.orgcod !== null && data.org !== undefined) {
|
|
248
192
|
var org = data.org[lecass.orgcod];
|
|
249
|
-
|
|
250
193
|
if (org !== undefined) {
|
|
251
|
-
lecass.org = org;
|
|
194
|
+
lecass.org = org;
|
|
195
|
+
// insertOrgReferences(org, data, visitedIdsByTableName)
|
|
252
196
|
}
|
|
253
197
|
}
|
|
254
|
-
|
|
255
198
|
lecass.auds = [];
|
|
256
|
-
|
|
257
199
|
if (lecass.audcles !== undefined && data.aud !== undefined) {
|
|
258
200
|
var _iterator2 = _createForOfIteratorHelper(lecass.audcles),
|
|
259
|
-
|
|
260
|
-
|
|
201
|
+
_step2;
|
|
261
202
|
try {
|
|
262
203
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
263
204
|
var audcle = _step2.value;
|
|
264
205
|
var aud = data.aud[audcle];
|
|
265
|
-
|
|
266
206
|
if (aud !== undefined) {
|
|
267
207
|
lecass.auds.push(aud);
|
|
268
208
|
insertAudReferences(aud, data, visitedIdsByTableName);
|
|
@@ -274,18 +214,14 @@ function insertLecassReferences(lecass, data, visitedIdsByTableName) {
|
|
|
274
214
|
_iterator2.f();
|
|
275
215
|
}
|
|
276
216
|
}
|
|
277
|
-
|
|
278
217
|
lecass.datesSeances = [];
|
|
279
|
-
|
|
280
218
|
if (lecass.datesSeancesCodes !== undefined && data.date_seance !== undefined) {
|
|
281
219
|
var _iterator3 = _createForOfIteratorHelper(lecass.datesSeancesCodes),
|
|
282
|
-
|
|
283
|
-
|
|
220
|
+
_step3;
|
|
284
221
|
try {
|
|
285
222
|
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
286
223
|
var dateSeanceCode = _step3.value;
|
|
287
224
|
var dateSeance = data.date_seance[dateSeanceCode];
|
|
288
|
-
|
|
289
225
|
if (dateSeance !== undefined) {
|
|
290
226
|
lecass.datesSeances.push(dateSeance);
|
|
291
227
|
insertDateSeanceReferences(dateSeance, data, visitedIdsByTableName);
|
|
@@ -297,18 +233,14 @@ function insertLecassReferences(lecass, data, visitedIdsByTableName) {
|
|
|
297
233
|
_iterator3.f();
|
|
298
234
|
}
|
|
299
235
|
}
|
|
300
|
-
|
|
301
236
|
lecass.lecassraps = [];
|
|
302
|
-
|
|
303
237
|
if (lecass.lecassrapids !== undefined && data.lecassrap !== undefined) {
|
|
304
238
|
var _iterator4 = _createForOfIteratorHelper(lecass.lecassrapids),
|
|
305
|
-
|
|
306
|
-
|
|
239
|
+
_step4;
|
|
307
240
|
try {
|
|
308
241
|
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
309
242
|
var lecassrapid = _step4.value;
|
|
310
243
|
var lecassrap = data.lecassrap[lecassrapid];
|
|
311
|
-
|
|
312
244
|
if (lecassrap !== undefined) {
|
|
313
245
|
lecass.lecassraps.push(lecassrap);
|
|
314
246
|
insertLecassrapReferences(lecassrap, data, visitedIdsByTableName);
|
|
@@ -320,18 +252,14 @@ function insertLecassReferences(lecass, data, visitedIdsByTableName) {
|
|
|
320
252
|
_iterator4.f();
|
|
321
253
|
}
|
|
322
254
|
}
|
|
323
|
-
|
|
324
255
|
lecass.textes = [];
|
|
325
|
-
|
|
326
256
|
if (lecass.texcods !== undefined && data.texte !== undefined) {
|
|
327
257
|
var _iterator5 = _createForOfIteratorHelper(lecass.texcods),
|
|
328
|
-
|
|
329
|
-
|
|
258
|
+
_step5;
|
|
330
259
|
try {
|
|
331
260
|
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
332
261
|
var texcod = _step5.value;
|
|
333
262
|
var texte = data.texte[texcod];
|
|
334
|
-
|
|
335
263
|
if (texte !== undefined) {
|
|
336
264
|
lecass.textes.push(texte);
|
|
337
265
|
insertTexteReferences(texte, data, visitedIdsByTableName);
|
|
@@ -344,39 +272,30 @@ function insertLecassReferences(lecass, data, visitedIdsByTableName) {
|
|
|
344
272
|
}
|
|
345
273
|
}
|
|
346
274
|
}
|
|
347
|
-
|
|
348
275
|
return lecass;
|
|
349
276
|
}
|
|
350
|
-
|
|
351
277
|
function insertLectureReferences(lecture, data, visitedIdsByTableName) {
|
|
352
278
|
var visitedIds = visitedIdsByTableName.lecture;
|
|
353
|
-
|
|
354
279
|
if (visitedIds === undefined) {
|
|
355
280
|
visitedIds = visitedIdsByTableName.lecture = new Set();
|
|
356
281
|
}
|
|
357
|
-
|
|
358
282
|
if (!visitedIds.has(lecture.lecidt)) {
|
|
359
283
|
visitedIds.add(lecture.lecidt);
|
|
360
|
-
|
|
361
284
|
if (lecture.typleccod !== null && data.typlec !== undefined) {
|
|
362
285
|
var typlec = data.typlec[lecture.typleccod];
|
|
363
|
-
|
|
364
286
|
if (typlec !== undefined) {
|
|
365
|
-
lecture.typlec = typlec;
|
|
287
|
+
lecture.typlec = typlec;
|
|
288
|
+
// insertTyplecReferences(typlec, data, visitedIdsByTableName)
|
|
366
289
|
}
|
|
367
290
|
}
|
|
368
|
-
|
|
369
291
|
lecture.lecasss = [];
|
|
370
|
-
|
|
371
292
|
if (lecture.lecassidts !== undefined && data.lecass !== undefined) {
|
|
372
293
|
var _iterator6 = _createForOfIteratorHelper(lecture.lecassidts),
|
|
373
|
-
|
|
374
|
-
|
|
294
|
+
_step6;
|
|
375
295
|
try {
|
|
376
296
|
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
377
297
|
var lecassidt = _step6.value;
|
|
378
298
|
var lecass = data.lecass[lecassidt];
|
|
379
|
-
|
|
380
299
|
if (lecass !== undefined) {
|
|
381
300
|
lecture.lecasss.push(lecass);
|
|
382
301
|
insertLecassReferences(lecass, data, visitedIdsByTableName);
|
|
@@ -389,55 +308,44 @@ function insertLectureReferences(lecture, data, visitedIdsByTableName) {
|
|
|
389
308
|
}
|
|
390
309
|
}
|
|
391
310
|
}
|
|
392
|
-
|
|
393
311
|
return lecture;
|
|
394
312
|
}
|
|
395
|
-
|
|
396
313
|
function insertLoiReferences(loi, data, visitedIdsByTableName) {
|
|
397
314
|
var visitedIds = visitedIdsByTableName.loi;
|
|
398
|
-
|
|
399
315
|
if (visitedIds === undefined) {
|
|
400
316
|
visitedIds = visitedIdsByTableName.loi = new Set();
|
|
401
317
|
}
|
|
402
|
-
|
|
403
318
|
if (!visitedIds.has(loi.loicod)) {
|
|
404
319
|
visitedIds.add(loi.loicod);
|
|
405
|
-
|
|
406
320
|
if (loi.typloicod !== null && data.typloi !== undefined) {
|
|
407
321
|
var typloi = data.typloi[loi.typloicod];
|
|
408
|
-
|
|
409
322
|
if (typloi !== undefined) {
|
|
410
|
-
loi.typloi = typloi;
|
|
323
|
+
loi.typloi = typloi;
|
|
324
|
+
// insertTyploiReferences(typloi, data, visitedIdsByTableName)
|
|
411
325
|
}
|
|
412
326
|
}
|
|
413
|
-
|
|
414
327
|
if (loi.etaloicod !== null && data.etaloi !== undefined) {
|
|
415
328
|
var etaloi = data.etaloi[loi.etaloicod];
|
|
416
|
-
|
|
417
329
|
if (etaloi !== undefined) {
|
|
418
|
-
loi.etaloi = etaloi;
|
|
330
|
+
loi.etaloi = etaloi;
|
|
331
|
+
// insertEtaloiReferences(etaloi, data, visitedIdsByTableName)
|
|
419
332
|
}
|
|
420
333
|
}
|
|
421
|
-
|
|
422
334
|
if (loi.deccoccod !== null && data.deccoc !== undefined) {
|
|
423
335
|
var deccoc = data.deccoc[loi.deccoccod];
|
|
424
|
-
|
|
425
336
|
if (deccoc !== undefined) {
|
|
426
|
-
loi.deccoc = deccoc;
|
|
337
|
+
loi.deccoc = deccoc;
|
|
338
|
+
// insertDeccocReferences(deccoc, data, visitedIdsByTableName)
|
|
427
339
|
}
|
|
428
340
|
}
|
|
429
|
-
|
|
430
341
|
loi.lectures = [];
|
|
431
|
-
|
|
432
342
|
if (loi.lecidts !== undefined && data.lecture !== undefined) {
|
|
433
343
|
var _iterator7 = _createForOfIteratorHelper(loi.lecidts),
|
|
434
|
-
|
|
435
|
-
|
|
344
|
+
_step7;
|
|
436
345
|
try {
|
|
437
346
|
for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
|
|
438
347
|
var lecidt = _step7.value;
|
|
439
348
|
var lecture = data.lecture[lecidt];
|
|
440
|
-
|
|
441
349
|
if (lecture !== undefined) {
|
|
442
350
|
loi.lectures.push(lecture);
|
|
443
351
|
insertLectureReferences(lecture, data, visitedIdsByTableName);
|
|
@@ -450,42 +358,41 @@ function insertLoiReferences(loi, data, visitedIdsByTableName) {
|
|
|
450
358
|
}
|
|
451
359
|
}
|
|
452
360
|
}
|
|
453
|
-
|
|
454
361
|
return loi;
|
|
455
362
|
}
|
|
456
|
-
|
|
363
|
+
function insertQuestionReferences(question,
|
|
364
|
+
// @ts-ignore TO BE REMOVED WHEN DONE
|
|
365
|
+
data,
|
|
366
|
+
// @ts-ignore TO BE REMOVED WHEN DONE
|
|
367
|
+
visitedIdsByTableName) {
|
|
368
|
+
// TODO
|
|
369
|
+
return question;
|
|
370
|
+
}
|
|
457
371
|
function insertRapReferences(rap, data, visitedIdsByTableName) {
|
|
458
372
|
var visitedIds = visitedIdsByTableName.rap;
|
|
459
|
-
|
|
460
373
|
if (visitedIds === undefined) {
|
|
461
374
|
visitedIds = visitedIdsByTableName.rap = new Set();
|
|
462
375
|
}
|
|
463
|
-
|
|
464
376
|
if (!visitedIds.has(rap.rapcod)) {
|
|
465
377
|
visitedIds.add(rap.rapcod);
|
|
466
|
-
|
|
467
378
|
if (rap.coddenrap !== null && data.denrap !== undefined) {
|
|
468
379
|
var denrap = data.denrap[rap.coddenrap];
|
|
469
|
-
|
|
470
380
|
if (denrap !== undefined) {
|
|
471
|
-
rap.denrap = denrap;
|
|
381
|
+
rap.denrap = denrap;
|
|
382
|
+
// insertDenrapReferences(denrap, data, visitedIdsByTableName)
|
|
472
383
|
}
|
|
473
384
|
}
|
|
474
|
-
|
|
475
385
|
rap.docatts = [];
|
|
476
|
-
|
|
477
386
|
if (rap.docattcles !== undefined && data.docatt !== undefined) {
|
|
478
387
|
var _iterator8 = _createForOfIteratorHelper(rap.docattcles),
|
|
479
|
-
|
|
480
|
-
|
|
388
|
+
_step8;
|
|
481
389
|
try {
|
|
482
390
|
for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
|
|
483
391
|
var docattcle = _step8.value;
|
|
484
392
|
var docatt = data.docatt[docattcle];
|
|
485
|
-
|
|
486
393
|
if (docatt !== undefined) {
|
|
487
394
|
rap.docatts.push(docatt);
|
|
488
|
-
insertDocAttReferences(docatt, data, visitedIdsByTableName);
|
|
395
|
+
insertDocAttReferences(docatt, data, visitedIdsByTableName, false);
|
|
489
396
|
}
|
|
490
397
|
}
|
|
491
398
|
} catch (err) {
|
|
@@ -494,18 +401,14 @@ function insertRapReferences(rap, data, visitedIdsByTableName) {
|
|
|
494
401
|
_iterator8.f();
|
|
495
402
|
}
|
|
496
403
|
}
|
|
497
|
-
|
|
498
404
|
rap.ecrs = [];
|
|
499
|
-
|
|
500
405
|
if (rap.ecrnums !== undefined && data.ecr !== undefined) {
|
|
501
406
|
var _iterator9 = _createForOfIteratorHelper(rap.ecrnums),
|
|
502
|
-
|
|
503
|
-
|
|
407
|
+
_step9;
|
|
504
408
|
try {
|
|
505
409
|
for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
|
|
506
410
|
var ecrnum = _step9.value;
|
|
507
411
|
var ecr = data.ecr[ecrnum];
|
|
508
|
-
|
|
509
412
|
if (ecr !== undefined) {
|
|
510
413
|
rap.ecrs.push(ecr);
|
|
511
414
|
insertEcrReferences(ecr, data, visitedIdsByTableName);
|
|
@@ -517,20 +420,17 @@ function insertRapReferences(rap, data, visitedIdsByTableName) {
|
|
|
517
420
|
_iterator9.f();
|
|
518
421
|
}
|
|
519
422
|
}
|
|
520
|
-
|
|
521
423
|
rap.orgs = [];
|
|
522
|
-
|
|
523
424
|
if (rap.orgcods !== undefined && data.org !== undefined) {
|
|
524
425
|
var _iterator10 = _createForOfIteratorHelper(rap.orgcods),
|
|
525
|
-
|
|
526
|
-
|
|
426
|
+
_step10;
|
|
527
427
|
try {
|
|
528
428
|
for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
|
|
529
429
|
var orgcod = _step10.value;
|
|
530
430
|
var org = data.org[orgcod];
|
|
531
|
-
|
|
532
431
|
if (org !== undefined) {
|
|
533
|
-
rap.orgs.push(org);
|
|
432
|
+
rap.orgs.push(org);
|
|
433
|
+
// insertOrgReferences(org, data, visitedIdsByTableName)
|
|
534
434
|
}
|
|
535
435
|
}
|
|
536
436
|
} catch (err) {
|
|
@@ -540,30 +440,31 @@ function insertRapReferences(rap, data, visitedIdsByTableName) {
|
|
|
540
440
|
}
|
|
541
441
|
}
|
|
542
442
|
}
|
|
543
|
-
|
|
544
443
|
return rap;
|
|
545
444
|
}
|
|
546
|
-
|
|
445
|
+
function insertSenReferences(sen,
|
|
446
|
+
// @ts-ignore TO BE REMOVED WHEN DONE
|
|
447
|
+
data,
|
|
448
|
+
// @ts-ignore TO BE REMOVED WHEN DONE
|
|
449
|
+
visitedIdsByTableName) {
|
|
450
|
+
// TODO
|
|
451
|
+
return sen;
|
|
452
|
+
}
|
|
547
453
|
function insertTexteReferences(texte, data, visitedIdsByTableName) {
|
|
548
454
|
var visitedIds = visitedIdsByTableName.texte;
|
|
549
|
-
|
|
550
455
|
if (visitedIds === undefined) {
|
|
551
456
|
visitedIds = visitedIdsByTableName.texte = new Set();
|
|
552
457
|
}
|
|
553
|
-
|
|
554
458
|
if (!visitedIds.has(texte.texcod)) {
|
|
555
459
|
visitedIds.add(texte.texcod);
|
|
556
460
|
texte.ecrs = [];
|
|
557
|
-
|
|
558
461
|
if (texte.ecrnums !== undefined && data.ecr !== undefined) {
|
|
559
462
|
var _iterator11 = _createForOfIteratorHelper(texte.ecrnums),
|
|
560
|
-
|
|
561
|
-
|
|
463
|
+
_step11;
|
|
562
464
|
try {
|
|
563
465
|
for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
|
|
564
466
|
var ecrnum = _step11.value;
|
|
565
467
|
var ecr = data.ecr[ecrnum];
|
|
566
|
-
|
|
567
468
|
if (ecr !== undefined) {
|
|
568
469
|
texte.ecrs.push(ecr);
|
|
569
470
|
insertEcrReferences(ecr, data, visitedIdsByTableName);
|
|
@@ -575,49 +476,43 @@ function insertTexteReferences(texte, data, visitedIdsByTableName) {
|
|
|
575
476
|
_iterator11.f();
|
|
576
477
|
}
|
|
577
478
|
}
|
|
578
|
-
|
|
579
479
|
if (texte.orgcod !== null && data.org !== undefined) {
|
|
580
480
|
var org = data.org[texte.orgcod];
|
|
581
|
-
|
|
582
481
|
if (org !== undefined) {
|
|
583
|
-
texte.org = org;
|
|
482
|
+
texte.org = org;
|
|
483
|
+
// insertOrgReferences(org, data, visitedIdsByTableName)
|
|
584
484
|
}
|
|
585
485
|
}
|
|
586
|
-
|
|
587
486
|
if (texte.oritxtcod !== null && data.oritxt !== undefined) {
|
|
588
487
|
var oritxt = data.oritxt[texte.oritxtcod];
|
|
589
|
-
|
|
590
488
|
if (oritxt !== undefined) {
|
|
591
|
-
texte.oritxt = oritxt;
|
|
489
|
+
texte.oritxt = oritxt;
|
|
490
|
+
// insertOritxtReferences(oritxt, data, visitedIdsByTableName)
|
|
592
491
|
}
|
|
593
492
|
}
|
|
594
|
-
|
|
595
493
|
if (texte.txtAmeliId !== undefined && data.txt_ameli !== undefined) {
|
|
596
494
|
var txtAmeli = data.txt_ameli[texte.txtAmeliId];
|
|
597
|
-
|
|
598
495
|
if (txtAmeli !== undefined) {
|
|
599
496
|
texte.txtAmeli = txtAmeli;
|
|
600
497
|
}
|
|
601
498
|
}
|
|
602
|
-
|
|
603
499
|
if (texte.typtxtcod !== null && data.typtxt !== undefined) {
|
|
604
500
|
var typtxt = data.typtxt[texte.typtxtcod];
|
|
605
|
-
|
|
606
501
|
if (typtxt !== undefined) {
|
|
607
|
-
texte.typtxt = typtxt;
|
|
502
|
+
texte.typtxt = typtxt;
|
|
503
|
+
// insertTyptxtReferences(typtxt, data, visitedIdsByTableName)
|
|
608
504
|
}
|
|
609
505
|
}
|
|
610
|
-
|
|
611
506
|
if (texte.typurl !== null && data.typurl !== undefined) {
|
|
612
507
|
var typurl = data.typurl[texte.typurl];
|
|
613
|
-
|
|
614
508
|
if (typurl !== undefined) {
|
|
615
|
-
texte.libtypurl = typurl.libtypurl;
|
|
509
|
+
texte.libtypurl = typurl.libtypurl;
|
|
510
|
+
// insertTypurlReferences(typurl, data, visitedIdsByTableName)
|
|
616
511
|
}
|
|
617
|
-
}
|
|
512
|
+
}
|
|
618
513
|
|
|
514
|
+
// TODO
|
|
619
515
|
}
|
|
620
|
-
|
|
621
516
|
return texte;
|
|
622
517
|
}
|
|
623
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbnNlcnRBdWRSZWZlcmVuY2VzIiwiYXVkIiwiZGF0YSIsInZpc2l0ZWRJZHNCeVRhYmxlTmFtZSIsInZpc2l0ZWRJZHMiLCJ1bmRlZmluZWQiLCJTZXQiLCJoYXMiLCJhdWRjbGUiLCJhZGQiLCJvcmdjb2QiLCJvcmciLCJpbnNlcnRBdXRldXJSZWZlcmVuY2VzIiwiYXV0ZXVyIiwiYXV0Y29kIiwicXVhIiwicXVhY29kIiwiaW5zZXJ0RGF0ZVNlYW5jZVJlZmVyZW5jZXMiLCJkYXRlU2VhbmNlIiwiZGF0ZV9zZWFuY2UiLCJjb2RlIiwiZGF0ZV9zIiwiZGViYXRzIiwiZGF0ZVN0cmluZyIsIkRhdGUiLCJ0b0lTT1N0cmluZyIsImRlYmF0Iiwic2NycyIsInNjcmlkcyIsInNjciIsInNjcmlkIiwicHVzaCIsImluc2VydERvY0F0dFJlZmVyZW5jZXMiLCJkb2NhdHQiLCJkb2NhdHRjbGUiLCJyYXBjb2QiLCJyYXAiLCJpbnNlcnRSYXBSZWZlcmVuY2VzIiwidHlwYXR0Y29kIiwidHlwYXR0IiwiaW5zZXJ0RWNyUmVmZXJlbmNlcyIsImVjciIsImVjcm51bSIsImF1dCIsImluc2VydExlY2Fzc3JhcFJlZmVyZW5jZXMiLCJsZWNhc3NyYXAiLCJsZWNhc3JhcGlkIiwibGVjYXNzaWR0IiwiaW5zZXJ0TGVjYXNzUmVmZXJlbmNlcyIsImxlY2FzcyIsImNvZGFzcyIsImFzcyIsImF1ZHMiLCJhdWRjbGVzIiwiZGF0ZXNTZWFuY2VzIiwiZGF0ZXNTZWFuY2VzQ29kZXMiLCJkYXRlU2VhbmNlQ29kZSIsImxlY2Fzc3JhcHMiLCJsZWNhc3NyYXBpZHMiLCJsZWNhc3NyYXBpZCIsInRleHRlcyIsInRleGNvZHMiLCJ0ZXh0ZSIsInRleGNvZCIsImluc2VydFRleHRlUmVmZXJlbmNlcyIsImluc2VydExlY3R1cmVSZWZlcmVuY2VzIiwibGVjdHVyZSIsImxlY2lkdCIsInR5cGxlY2NvZCIsInR5cGxlYyIsImxlY2Fzc3MiLCJsZWNhc3NpZHRzIiwiaW5zZXJ0TG9pUmVmZXJlbmNlcyIsImxvaSIsImxvaWNvZCIsInR5cGxvaWNvZCIsInR5cGxvaSIsImV0YWxvaWNvZCIsImV0YWxvaSIsImRlY2NvY2NvZCIsImRlY2NvYyIsImxlY3R1cmVzIiwibGVjaWR0cyIsImNvZGRlbnJhcCIsImRlbnJhcCIsImRvY2F0dHMiLCJkb2NhdHRjbGVzIiwiZWNycyIsImVjcm51bXMiLCJvcmdzIiwib3JnY29kcyIsIm9yaXR4dGNvZCIsIm9yaXR4dCIsInR4dEFtZWxpSWQiLCJ0eHRfYW1lbGkiLCJ0eHRBbWVsaSIsInR5cHR4dGNvZCIsInR5cHR4dCIsInR5cHVybCIsImxpYnR5cHVybCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbnNlcnRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHh0QW1lbGkgfSBmcm9tIFwiLi90eXBlcy9hbWVsaVwiXG5pbXBvcnQgeyBEZWJhdCB9IGZyb20gXCIuL3R5cGVzL2RlYmF0c1wiXG5pbXBvcnQge1xuICBBc3MsXG4gIEF1ZCxcbiAgQXV0ZXVyLFxuICBEYXRlU2VhbmNlLFxuICBEZWNDb2MsXG4gIERlblJhcCxcbiAgRG9jQXR0LFxuICBFY3IsXG4gIEV0YUxvaSxcbiAgTGVjQXNzLFxuICBMZWNBc3NSYXAsXG4gIExlY3R1cmUsXG4gIExvaSxcbiAgT3JnLFxuICBPcmlUeHQsXG4gIFF1YSxcbiAgUmFwLFxuICBTY3IsXG4gIFRleHRlLFxuICBUeXBBdHQsXG4gIFR5cExlYyxcbiAgVHlwTG9pLFxuICBUeXBUeHQsXG4gIFR5cFVybCxcbn0gZnJvbSBcIi4vdHlwZXMvZG9zbGVnXCJcblxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXREYXRhIHtcbiAgcmVhZG9ubHkgYXNzPzogeyBbaWQ6IHN0cmluZ106IEFzcyB9XG4gIHJlYWRvbmx5IGF1ZD86IHsgW2lkOiBzdHJpbmddOiBBdWQgfVxuICByZWFkb25seSBhdXRldXI/OiB7IFtpZDogc3RyaW5nXTogQXV0ZXVyIH1cbiAgcmVhZG9ubHkgZGF0ZV9zZWFuY2U/OiB7IFtpZDogc3RyaW5nXTogRGF0ZVNlYW5jZSB9XG4gIHJlYWRvbmx5IGRlYmF0cz86IHsgW2lkOiBzdHJpbmddOiBEZWJhdCB9XG4gIHJlYWRvbmx5IGRlY2NvYz86IHsgW2lkOiBzdHJpbmddOiBEZWNDb2MgfVxuICByZWFkb25seSBkZW5yYXA/OiB7IFtpZDogc3RyaW5nXTogRGVuUmFwIH1cbiAgcmVhZG9ubHkgZG9jYXR0PzogeyBbaWQ6IHN0cmluZ106IERvY0F0dCB9XG4gIHJlYWRvbmx5IGVjcj86IHsgW2lkOiBzdHJpbmddOiBFY3IgfVxuICByZWFkb25seSBldGFsb2k/OiB7IFtpZDogc3RyaW5nXTogRXRhTG9pIH1cbiAgcmVhZG9ubHkgbGVjYXNzPzogeyBbaWQ6IHN0cmluZ106IExlY0FzcyB9XG4gIHJlYWRvbmx5IGxlY2Fzc3JhcD86IHsgW2lkOiBzdHJpbmddOiBMZWNBc3NSYXAgfVxuICByZWFkb25seSBsZWN0dXJlPzogeyBbaWQ6IHN0cmluZ106IExlY3R1cmUgfVxuICByZWFkb25seSBsb2k/OiB7IFtpZDogc3RyaW5nXTogTG9pIH1cbiAgcmVhZG9ubHkgb3JnPzogeyBbaWQ6IHN0cmluZ106IE9yZyB9XG4gIHJlYWRvbmx5IG9yaXR4dD86IHsgW2lkOiBzdHJpbmddOiBPcmlUeHQgfVxuICByZWFkb25seSBxdWE/OiB7IFtpZDogc3RyaW5nXTogUXVhIH1cbiAgcmVhZG9ubHkgcmFwPzogeyBbaWQ6IHN0cmluZ106IFJhcCB9XG4gIHJlYWRvbmx5IHNjcj86IHsgW2lkOiBzdHJpbmddOiBTY3IgfVxuICByZWFkb25seSB0ZXh0ZT86IHsgW2lkOiBzdHJpbmddOiBUZXh0ZSB9XG4gIHJlYWRvbmx5IHR5cGF0dD86IHsgW2lkOiBzdHJpbmddOiBUeXBBdHQgfVxuICByZWFkb25seSB0eXBsZWM/OiB7IFtpZDogc3RyaW5nXTogVHlwTGVjIH1cbiAgcmVhZG9ubHkgdHlwbG9pPzogeyBbaWQ6IHN0cmluZ106IFR5cExvaSB9XG4gIHJlYWRvbmx5IHR5cHR4dD86IHsgW2lkOiBzdHJpbmddOiBUeXBUeHQgfVxuICByZWFkb25seSB0eXB1cmw/OiB7IFtpZDogc3RyaW5nXTogVHlwVXJsIH1cbiAgcmVhZG9ubHkgdHh0X2FtZWxpPzogeyBbaWQ6IHN0cmluZ106IFR4dEFtZWxpIH1cbn1cblxudHlwZSBWaXNpdGVkSWRzQnlUYWJsZU5hbWUgPSB7IFt0YWJsZU5hbWU6IHN0cmluZ106IFNldDxudW1iZXIgfCBzdHJpbmc+IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydEF1ZFJlZmVyZW5jZXMoXG4gIGF1ZDogQXVkLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkSWRzQnlUYWJsZU5hbWU6IFZpc2l0ZWRJZHNCeVRhYmxlTmFtZSxcbikge1xuICBsZXQgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5hdWRcbiAgaWYgKHZpc2l0ZWRJZHMgPT09IHVuZGVmaW5lZCkge1xuICAgIHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUuYXVkID0gbmV3IFNldCgpXG4gIH1cbiAgaWYgKCF2aXNpdGVkSWRzLmhhcyhhdWQuYXVkY2xlKSkge1xuICAgIHZpc2l0ZWRJZHMuYWRkKGF1ZC5hdWRjbGUpXG5cbiAgICBpZiAoYXVkLm9yZ2NvZCAhPT0gbnVsbCAmJiBkYXRhLm9yZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBvcmcgPSBkYXRhLm9yZ1thdWQub3JnY29kXVxuICAgICAgaWYgKG9yZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF1ZC5vcmcgPSBvcmdcbiAgICAgICAgLy8gaW5zZXJ0T3JnUmVmZXJlbmNlcyhvcmcsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUT0RPXG4gIH1cblxuICByZXR1cm4gYXVkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRBdXRldXJSZWZlcmVuY2VzKFxuICBhdXRldXI6IEF1dGV1cixcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZElkc0J5VGFibGVOYW1lOiBWaXNpdGVkSWRzQnlUYWJsZU5hbWUsXG4pIHtcbiAgbGV0IHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUuYXV0ZXVyXG4gIGlmICh2aXNpdGVkSWRzID09PSB1bmRlZmluZWQpIHtcbiAgICB2aXNpdGVkSWRzID0gdmlzaXRlZElkc0J5VGFibGVOYW1lLmF1dGV1ciA9IG5ldyBTZXQoKVxuICB9XG4gIGlmICghdmlzaXRlZElkcy5oYXMoYXV0ZXVyLmF1dGNvZCkpIHtcbiAgICB2aXNpdGVkSWRzLmFkZChhdXRldXIuYXV0Y29kKVxuXG4gICAgaWYgKGRhdGEucXVhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHF1YSA9IGRhdGEucXVhW2F1dGV1ci5xdWFjb2RdXG4gICAgICBpZiAocXVhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLnF1YSA9IHF1YVxuICAgICAgICAvLyBpbnNlcnRRdWFSZWZlcmVuY2VzKHF1YSwgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE9cbiAgfVxuXG4gIHJldHVybiBhdXRldXJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydERhdGVTZWFuY2VSZWZlcmVuY2VzKFxuICBkYXRlU2VhbmNlOiBEYXRlU2VhbmNlLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkSWRzQnlUYWJsZU5hbWU6IFZpc2l0ZWRJZHNCeVRhYmxlTmFtZSxcbikge1xuICBsZXQgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5kYXRlX3NlYW5jZVxuICBpZiAodmlzaXRlZElkcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5kYXRlX3NlYW5jZSA9IG5ldyBTZXQoKVxuICB9XG4gIGlmICghdmlzaXRlZElkcy5oYXMoZGF0ZVNlYW5jZS5jb2RlKSkge1xuICAgIHZpc2l0ZWRJZHMuYWRkKGRhdGVTZWFuY2UuY29kZSlcblxuICAgIGlmIChkYXRlU2VhbmNlLmRhdGVfcyAhPT0gbnVsbCAmJiBkYXRhLmRlYmF0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBkYXRlU3RyaW5nID1cbiAgICAgICAgZGF0ZVNlYW5jZS5kYXRlX3MgaW5zdGFuY2VvZiBEYXRlXG4gICAgICAgICAgPyBkYXRlU2VhbmNlLmRhdGVfcy50b0lTT1N0cmluZygpXG4gICAgICAgICAgOiBkYXRlU2VhbmNlLmRhdGVfc1xuICAgICAgY29uc3QgZGViYXQgPSBkYXRhLmRlYmF0c1tkYXRlU3RyaW5nXVxuICAgICAgaWYgKGRlYmF0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZGF0ZVNlYW5jZS5kZWJhdCA9IGRlYmF0XG4gICAgICAgIC8vIGluc2VydERlYmF0UmVmZXJlbmNlcyhkZWJhdCwgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgfVxuICAgIH1cblxuICAgIGRhdGVTZWFuY2Uuc2NycyA9IFtdXG4gICAgaWYgKGRhdGVTZWFuY2Uuc2NyaWRzICE9PSB1bmRlZmluZWQgJiYgZGF0YS5zY3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCBzY3JpZCBvZiBkYXRlU2VhbmNlLnNjcmlkcykge1xuICAgICAgICBjb25zdCBzY3IgPSBkYXRhLnNjcltzY3JpZF1cbiAgICAgICAgaWYgKHNjciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZGF0ZVNlYW5jZS5zY3JzLnB1c2goc2NyKVxuICAgICAgICAgIC8vIGluc2VydFNjclJlZmVyZW5jZXMoc2NyLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGF0ZVNlYW5jZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0RG9jQXR0UmVmZXJlbmNlcyhcbiAgZG9jYXR0OiBEb2NBdHQsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZTogVmlzaXRlZElkc0J5VGFibGVOYW1lLFxuKSB7XG4gIGxldCB2aXNpdGVkSWRzID0gdmlzaXRlZElkc0J5VGFibGVOYW1lLmRvY2F0dFxuICBpZiAodmlzaXRlZElkcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5kb2NhdHQgPSBuZXcgU2V0KClcbiAgfVxuICBpZiAoIXZpc2l0ZWRJZHMuaGFzKGRvY2F0dC5kb2NhdHRjbGUpKSB7XG4gICAgdmlzaXRlZElkcy5hZGQoZG9jYXR0LmRvY2F0dGNsZSlcblxuICAgIGlmIChkb2NhdHQucmFwY29kICE9PSBudWxsICYmIGRhdGEucmFwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHJhcCA9IGRhdGEucmFwW2RvY2F0dC5yYXBjb2RdXG4gICAgICBpZiAocmFwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZG9jYXR0LnJhcCA9IHJhcFxuICAgICAgICBpbnNlcnRSYXBSZWZlcmVuY2VzKHJhcCwgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkb2NhdHQudHlwYXR0Y29kICE9PSBudWxsICYmIGRhdGEudHlwYXR0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHR5cGF0dCA9IGRhdGEudHlwYXR0W2RvY2F0dC50eXBhdHRjb2RdXG4gICAgICBpZiAodHlwYXR0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZG9jYXR0LnR5cGF0dCA9IHR5cGF0dFxuICAgICAgICAvLyBpbnNlcnRUeXBBdHRSZWZlcmVuY2VzKHR5cGF0dCwgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkb2NhdHRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydEVjclJlZmVyZW5jZXMoXG4gIGVjcjogRWNyLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkSWRzQnlUYWJsZU5hbWU6IFZpc2l0ZWRJZHNCeVRhYmxlTmFtZSxcbikge1xuICBsZXQgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5lY3JcbiAgaWYgKHZpc2l0ZWRJZHMgPT09IHVuZGVmaW5lZCkge1xuICAgIHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUuZWNyID0gbmV3IFNldCgpXG4gIH1cbiAgaWYgKCF2aXNpdGVkSWRzLmhhcyhlY3IuZWNybnVtKSkge1xuICAgIHZpc2l0ZWRJZHMuYWRkKGVjci5lY3JudW0pXG5cbiAgICBpZiAoZWNyLmF1dGNvZCAhPT0gbnVsbCAmJiBkYXRhLmF1dGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBhdXQgPSBkYXRhLmF1dGV1cltlY3IuYXV0Y29kXVxuICAgICAgaWYgKGF1dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGVjci5hdXQgPSBhdXRcbiAgICAgICAgaW5zZXJ0QXV0ZXVyUmVmZXJlbmNlcyhhdXQsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUT0RPXG4gIH1cblxuICByZXR1cm4gZWNyXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRMZWNhc3NyYXBSZWZlcmVuY2VzKFxuICBsZWNhc3NyYXA6IExlY0Fzc1JhcCxcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZElkc0J5VGFibGVOYW1lOiBWaXNpdGVkSWRzQnlUYWJsZU5hbWUsXG4pIHtcbiAgbGV0IHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUubGVjYXNzcmFwXG4gIGlmICh2aXNpdGVkSWRzID09PSB1bmRlZmluZWQpIHtcbiAgICB2aXNpdGVkSWRzID0gdmlzaXRlZElkc0J5VGFibGVOYW1lLmxlY2Fzc3JhcCA9IG5ldyBTZXQoKVxuICB9XG4gIGNvbnN0IGxlY2FzcmFwaWQgPSBgJHtsZWNhc3NyYXAubGVjYXNzaWR0fSAke2xlY2Fzc3JhcC5yYXBjb2R9YFxuICBpZiAoIXZpc2l0ZWRJZHMuaGFzKGxlY2FzcmFwaWQpKSB7XG4gICAgdmlzaXRlZElkcy5hZGQobGVjYXNyYXBpZClcblxuICAgIGlmIChsZWNhc3NyYXAucmFwY29kICE9PSBudWxsICYmIGRhdGEucmFwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHJhcCA9IGRhdGEucmFwW2xlY2Fzc3JhcC5yYXBjb2RdXG4gICAgICBpZiAocmFwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGVjYXNzcmFwLnJhcCA9IHJhcFxuICAgICAgICBpbnNlcnRSYXBSZWZlcmVuY2VzKHJhcCwgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBsZWNhc3NyYXBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydExlY2Fzc1JlZmVyZW5jZXMoXG4gIGxlY2FzczogTGVjQXNzLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkSWRzQnlUYWJsZU5hbWU6IFZpc2l0ZWRJZHNCeVRhYmxlTmFtZSxcbikge1xuICBsZXQgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5sZWNhc3NcbiAgaWYgKHZpc2l0ZWRJZHMgPT09IHVuZGVmaW5lZCkge1xuICAgIHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUubGVjYXNzID0gbmV3IFNldCgpXG4gIH1cbiAgaWYgKCF2aXNpdGVkSWRzLmhhcyhsZWNhc3MubGVjYXNzaWR0KSkge1xuICAgIHZpc2l0ZWRJZHMuYWRkKGxlY2Fzcy5sZWNhc3NpZHQpXG5cbiAgICBpZiAobGVjYXNzLmNvZGFzcyAhPT0gbnVsbCAmJiBkYXRhLmFzcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBhc3MgPSBkYXRhLmFzc1tsZWNhc3MuY29kYXNzXVxuICAgICAgaWYgKGFzcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxlY2Fzcy5hc3MgPSBhc3NcbiAgICAgICAgLy8gaW5zZXJ0QXNzUmVmZXJlbmNlcyhhc3MsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobGVjYXNzLm9yZ2NvZCAhPT0gbnVsbCAmJiBkYXRhLm9yZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBvcmcgPSBkYXRhLm9yZ1tsZWNhc3Mub3JnY29kXVxuICAgICAgaWYgKG9yZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxlY2Fzcy5vcmcgPSBvcmdcbiAgICAgICAgLy8gaW5zZXJ0T3JnUmVmZXJlbmNlcyhvcmcsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZWNhc3MuYXVkcyA9IFtdXG4gICAgaWYgKGxlY2Fzcy5hdWRjbGVzICE9PSB1bmRlZmluZWQgJiYgZGF0YS5hdWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCBhdWRjbGUgb2YgbGVjYXNzLmF1ZGNsZXMpIHtcbiAgICAgICAgY29uc3QgYXVkID0gZGF0YS5hdWRbYXVkY2xlXVxuICAgICAgICBpZiAoYXVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBsZWNhc3MuYXVkcy5wdXNoKGF1ZClcbiAgICAgICAgICBpbnNlcnRBdWRSZWZlcmVuY2VzKGF1ZCwgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGVjYXNzLmRhdGVzU2VhbmNlcyA9IFtdXG4gICAgaWYgKGxlY2Fzcy5kYXRlc1NlYW5jZXNDb2RlcyAhPT0gdW5kZWZpbmVkICYmIGRhdGEuZGF0ZV9zZWFuY2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCBkYXRlU2VhbmNlQ29kZSBvZiBsZWNhc3MuZGF0ZXNTZWFuY2VzQ29kZXMpIHtcbiAgICAgICAgY29uc3QgZGF0ZVNlYW5jZSA9IGRhdGEuZGF0ZV9zZWFuY2VbZGF0ZVNlYW5jZUNvZGVdXG4gICAgICAgIGlmIChkYXRlU2VhbmNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBsZWNhc3MuZGF0ZXNTZWFuY2VzLnB1c2goZGF0ZVNlYW5jZSlcbiAgICAgICAgICBpbnNlcnREYXRlU2VhbmNlUmVmZXJlbmNlcyhkYXRlU2VhbmNlLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZWNhc3MubGVjYXNzcmFwcyA9IFtdXG4gICAgaWYgKGxlY2Fzcy5sZWNhc3NyYXBpZHMgIT09IHVuZGVmaW5lZCAmJiBkYXRhLmxlY2Fzc3JhcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKGNvbnN0IGxlY2Fzc3JhcGlkIG9mIGxlY2Fzcy5sZWNhc3NyYXBpZHMpIHtcbiAgICAgICAgY29uc3QgbGVjYXNzcmFwID0gZGF0YS5sZWNhc3NyYXBbbGVjYXNzcmFwaWRdXG4gICAgICAgIGlmIChsZWNhc3NyYXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGxlY2Fzcy5sZWNhc3NyYXBzLnB1c2gobGVjYXNzcmFwKVxuICAgICAgICAgIGluc2VydExlY2Fzc3JhcFJlZmVyZW5jZXMobGVjYXNzcmFwLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZWNhc3MudGV4dGVzID0gW11cbiAgICBpZiAobGVjYXNzLnRleGNvZHMgIT09IHVuZGVmaW5lZCAmJiBkYXRhLnRleHRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgdGV4Y29kIG9mIGxlY2Fzcy50ZXhjb2RzKSB7XG4gICAgICAgIGNvbnN0IHRleHRlID0gZGF0YS50ZXh0ZVt0ZXhjb2RdXG4gICAgICAgIGlmICh0ZXh0ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbGVjYXNzLnRleHRlcy5wdXNoKHRleHRlKVxuICAgICAgICAgIGluc2VydFRleHRlUmVmZXJlbmNlcyh0ZXh0ZSwgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGxlY2Fzc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0TGVjdHVyZVJlZmVyZW5jZXMoXG4gIGxlY3R1cmU6IExlY3R1cmUsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZTogVmlzaXRlZElkc0J5VGFibGVOYW1lLFxuKSB7XG4gIGxldCB2aXNpdGVkSWRzID0gdmlzaXRlZElkc0J5VGFibGVOYW1lLmxlY3R1cmVcbiAgaWYgKHZpc2l0ZWRJZHMgPT09IHVuZGVmaW5lZCkge1xuICAgIHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUubGVjdHVyZSA9IG5ldyBTZXQoKVxuICB9XG4gIGlmICghdmlzaXRlZElkcy5oYXMobGVjdHVyZS5sZWNpZHQpKSB7XG4gICAgdmlzaXRlZElkcy5hZGQobGVjdHVyZS5sZWNpZHQpXG5cbiAgICBpZiAobGVjdHVyZS50eXBsZWNjb2QgIT09IG51bGwgJiYgZGF0YS50eXBsZWMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgdHlwbGVjID0gZGF0YS50eXBsZWNbbGVjdHVyZS50eXBsZWNjb2RdXG4gICAgICBpZiAodHlwbGVjICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGVjdHVyZS50eXBsZWMgPSB0eXBsZWNcbiAgICAgICAgLy8gaW5zZXJ0VHlwbGVjUmVmZXJlbmNlcyh0eXBsZWMsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZWN0dXJlLmxlY2Fzc3MgPSBbXVxuICAgIGlmIChsZWN0dXJlLmxlY2Fzc2lkdHMgIT09IHVuZGVmaW5lZCAmJiBkYXRhLmxlY2FzcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKGNvbnN0IGxlY2Fzc2lkdCBvZiBsZWN0dXJlLmxlY2Fzc2lkdHMpIHtcbiAgICAgICAgY29uc3QgbGVjYXNzID0gZGF0YS5sZWNhc3NbbGVjYXNzaWR0XVxuICAgICAgICBpZiAobGVjYXNzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBsZWN0dXJlLmxlY2Fzc3MucHVzaChsZWNhc3MpXG4gICAgICAgICAgaW5zZXJ0TGVjYXNzUmVmZXJlbmNlcyhsZWNhc3MsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBsZWN0dXJlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRMb2lSZWZlcmVuY2VzKFxuICBsb2k6IExvaSxcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZElkc0J5VGFibGVOYW1lOiBWaXNpdGVkSWRzQnlUYWJsZU5hbWUsXG4pIHtcbiAgbGV0IHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUubG9pXG4gIGlmICh2aXNpdGVkSWRzID09PSB1bmRlZmluZWQpIHtcbiAgICB2aXNpdGVkSWRzID0gdmlzaXRlZElkc0J5VGFibGVOYW1lLmxvaSA9IG5ldyBTZXQoKVxuICB9XG4gIGlmICghdmlzaXRlZElkcy5oYXMobG9pLmxvaWNvZCkpIHtcbiAgICB2aXNpdGVkSWRzLmFkZChsb2kubG9pY29kKVxuXG4gICAgaWYgKGxvaS50eXBsb2ljb2QgIT09IG51bGwgJiYgZGF0YS50eXBsb2kgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgdHlwbG9pID0gZGF0YS50eXBsb2lbbG9pLnR5cGxvaWNvZF1cbiAgICAgIGlmICh0eXBsb2kgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsb2kudHlwbG9pID0gdHlwbG9pXG4gICAgICAgIC8vIGluc2VydFR5cGxvaVJlZmVyZW5jZXModHlwbG9pLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGxvaS5ldGFsb2ljb2QgIT09IG51bGwgJiYgZGF0YS5ldGFsb2kgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgZXRhbG9pID0gZGF0YS5ldGFsb2lbbG9pLmV0YWxvaWNvZF1cbiAgICAgIGlmIChldGFsb2kgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsb2kuZXRhbG9pID0gZXRhbG9pXG4gICAgICAgIC8vIGluc2VydEV0YWxvaVJlZmVyZW5jZXMoZXRhbG9pLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGxvaS5kZWNjb2Njb2QgIT09IG51bGwgJiYgZGF0YS5kZWNjb2MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgZGVjY29jID0gZGF0YS5kZWNjb2NbbG9pLmRlY2NvY2NvZF1cbiAgICAgIGlmIChkZWNjb2MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsb2kuZGVjY29jID0gZGVjY29jXG4gICAgICAgIC8vIGluc2VydERlY2NvY1JlZmVyZW5jZXMoZGVjY29jLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgbG9pLmxlY3R1cmVzID0gW11cbiAgICBpZiAobG9pLmxlY2lkdHMgIT09IHVuZGVmaW5lZCAmJiBkYXRhLmxlY3R1cmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCBsZWNpZHQgb2YgbG9pLmxlY2lkdHMpIHtcbiAgICAgICAgY29uc3QgbGVjdHVyZSA9IGRhdGEubGVjdHVyZVtsZWNpZHRdXG4gICAgICAgIGlmIChsZWN0dXJlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBsb2kubGVjdHVyZXMucHVzaChsZWN0dXJlKVxuICAgICAgICAgIGluc2VydExlY3R1cmVSZWZlcmVuY2VzKGxlY3R1cmUsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBsb2lcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydFJhcFJlZmVyZW5jZXMoXG4gIHJhcDogUmFwLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkSWRzQnlUYWJsZU5hbWU6IFZpc2l0ZWRJZHNCeVRhYmxlTmFtZSxcbikge1xuICBsZXQgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5yYXBcbiAgaWYgKHZpc2l0ZWRJZHMgPT09IHVuZGVmaW5lZCkge1xuICAgIHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUucmFwID0gbmV3IFNldCgpXG4gIH1cbiAgaWYgKCF2aXNpdGVkSWRzLmhhcyhyYXAucmFwY29kKSkge1xuICAgIHZpc2l0ZWRJZHMuYWRkKHJhcC5yYXBjb2QpXG5cbiAgICBpZiAocmFwLmNvZGRlbnJhcCAhPT0gbnVsbCAmJiBkYXRhLmRlbnJhcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBkZW5yYXAgPSBkYXRhLmRlbnJhcFtyYXAuY29kZGVucmFwXVxuICAgICAgaWYgKGRlbnJhcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJhcC5kZW5yYXAgPSBkZW5yYXBcbiAgICAgICAgLy8gaW5zZXJ0RGVucmFwUmVmZXJlbmNlcyhkZW5yYXAsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICByYXAuZG9jYXR0cyA9IFtdXG4gICAgaWYgKHJhcC5kb2NhdHRjbGVzICE9PSB1bmRlZmluZWQgJiYgZGF0YS5kb2NhdHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCBkb2NhdHRjbGUgb2YgcmFwLmRvY2F0dGNsZXMpIHtcbiAgICAgICAgY29uc3QgZG9jYXR0ID0gZGF0YS5kb2NhdHRbZG9jYXR0Y2xlXVxuICAgICAgICBpZiAoZG9jYXR0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByYXAuZG9jYXR0cy5wdXNoKGRvY2F0dClcbiAgICAgICAgICBpbnNlcnREb2NBdHRSZWZlcmVuY2VzKGRvY2F0dCwgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmFwLmVjcnMgPSBbXVxuICAgIGlmIChyYXAuZWNybnVtcyAhPT0gdW5kZWZpbmVkICYmIGRhdGEuZWNyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgZWNybnVtIG9mIHJhcC5lY3JudW1zKSB7XG4gICAgICAgIGNvbnN0IGVjciA9IGRhdGEuZWNyW2Vjcm51bV1cbiAgICAgICAgaWYgKGVjciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmFwLmVjcnMucHVzaChlY3IpXG4gICAgICAgICAgaW5zZXJ0RWNyUmVmZXJlbmNlcyhlY3IsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJhcC5vcmdzID0gW11cbiAgICBpZiAocmFwLm9yZ2NvZHMgIT09IHVuZGVmaW5lZCAmJiBkYXRhLm9yZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKGNvbnN0IG9yZ2NvZCBvZiByYXAub3JnY29kcykge1xuICAgICAgICBjb25zdCBvcmcgPSBkYXRhLm9yZ1tvcmdjb2RdXG4gICAgICAgIGlmIChvcmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJhcC5vcmdzLnB1c2gob3JnKVxuICAgICAgICAgIC8vIGluc2VydE9yZ1JlZmVyZW5jZXMob3JnLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmFwXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRUZXh0ZVJlZmVyZW5jZXMoXG4gIHRleHRlOiBUZXh0ZSxcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZElkc0J5VGFibGVOYW1lOiBWaXNpdGVkSWRzQnlUYWJsZU5hbWUsXG4pIHtcbiAgbGV0IHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUudGV4dGVcbiAgaWYgKHZpc2l0ZWRJZHMgPT09IHVuZGVmaW5lZCkge1xuICAgIHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUudGV4dGUgPSBuZXcgU2V0KClcbiAgfVxuICBpZiAoIXZpc2l0ZWRJZHMuaGFzKHRleHRlLnRleGNvZCkpIHtcbiAgICB2aXNpdGVkSWRzLmFkZCh0ZXh0ZS50ZXhjb2QpXG5cbiAgICB0ZXh0ZS5lY3JzID0gW11cbiAgICBpZiAodGV4dGUuZWNybnVtcyAhPT0gdW5kZWZpbmVkICYmIGRhdGEuZWNyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgZWNybnVtIG9mIHRleHRlLmVjcm51bXMpIHtcbiAgICAgICAgY29uc3QgZWNyID0gZGF0YS5lY3JbZWNybnVtXVxuICAgICAgICBpZiAoZWNyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0ZXh0ZS5lY3JzLnB1c2goZWNyKVxuICAgICAgICAgIGluc2VydEVjclJlZmVyZW5jZXMoZWNyLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGV4dGUub3JnY29kICE9PSBudWxsICYmIGRhdGEub3JnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9yZyA9IGRhdGEub3JnW3RleHRlLm9yZ2NvZF1cbiAgICAgIGlmIChvcmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0ZXh0ZS5vcmcgPSBvcmdcbiAgICAgICAgLy8gaW5zZXJ0T3JnUmVmZXJlbmNlcyhvcmcsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGV4dGUub3JpdHh0Y29kICE9PSBudWxsICYmIGRhdGEub3JpdHh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9yaXR4dCA9IGRhdGEub3JpdHh0W3RleHRlLm9yaXR4dGNvZF1cbiAgICAgIGlmIChvcml0eHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0ZXh0ZS5vcml0eHQgPSBvcml0eHRcbiAgICAgICAgLy8gaW5zZXJ0T3JpdHh0UmVmZXJlbmNlcyhvcml0eHQsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGV4dGUudHh0QW1lbGlJZCAhPT0gdW5kZWZpbmVkICYmIGRhdGEudHh0X2FtZWxpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHR4dEFtZWxpID0gZGF0YS50eHRfYW1lbGlbdGV4dGUudHh0QW1lbGlJZF1cbiAgICAgIGlmICh0eHRBbWVsaSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRleHRlLnR4dEFtZWxpID0gdHh0QW1lbGlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGV4dGUudHlwdHh0Y29kICE9PSBudWxsICYmIGRhdGEudHlwdHh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHR5cHR4dCA9IGRhdGEudHlwdHh0W3RleHRlLnR5cHR4dGNvZF1cbiAgICAgIGlmICh0eXB0eHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0ZXh0ZS50eXB0eHQgPSB0eXB0eHRcbiAgICAgICAgLy8gaW5zZXJ0VHlwdHh0UmVmZXJlbmNlcyh0eXB0eHQsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGV4dGUudHlwdXJsICE9PSBudWxsICYmIGRhdGEudHlwdXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHR5cHVybCA9IGRhdGEudHlwdXJsW3RleHRlLnR5cHVybF1cbiAgICAgIGlmICh0eXB1cmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0ZXh0ZS5saWJ0eXB1cmwgPSB0eXB1cmwubGlidHlwdXJsXG4gICAgICAgIC8vIGluc2VydFR5cHVybFJlZmVyZW5jZXModHlwdXJsLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ET1xuICB9XG5cbiAgcmV0dXJu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
|
|
518
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbnNlcnRBdWRSZWZlcmVuY2VzIiwiYXVkIiwiZGF0YSIsInZpc2l0ZWRJZHNCeVRhYmxlTmFtZSIsInZpc2l0ZWRJZHMiLCJ1bmRlZmluZWQiLCJTZXQiLCJoYXMiLCJhdWRjbGUiLCJhZGQiLCJvcmdjb2QiLCJvcmciLCJpbnNlcnRBdXRldXJSZWZlcmVuY2VzIiwiYXV0ZXVyIiwiYXV0Y29kIiwicXVhIiwicXVhY29kIiwiaW5zZXJ0RGF0ZVNlYW5jZVJlZmVyZW5jZXMiLCJkYXRlU2VhbmNlIiwiZGF0ZV9zZWFuY2UiLCJjb2RlIiwiZGF0ZV9zIiwiZGViYXRzIiwiZGF0ZVN0cmluZyIsIkRhdGUiLCJ0b0lTT1N0cmluZyIsImRlYmF0Iiwic2NycyIsInNjcmlkcyIsInNjciIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJzIiwibiIsImRvbmUiLCJzY3JpZCIsInZhbHVlIiwicHVzaCIsImVyciIsImUiLCJmIiwiaW5zZXJ0RG9jQXR0UmVmZXJlbmNlcyIsImRvY2F0dCIsInBlcmZvcm1JbnNlcnRSYXBSZWZlcmVuY2VzIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZG9jYXR0Y2xlIiwicmFwY29kIiwicmFwIiwiaW5zZXJ0UmFwUmVmZXJlbmNlcyIsInR5cGF0dGNvZCIsInR5cGF0dCIsImluc2VydEVjclJlZmVyZW5jZXMiLCJlY3IiLCJlY3JudW0iLCJhdXQiLCJpbnNlcnRMZWNhc3NyYXBSZWZlcmVuY2VzIiwibGVjYXNzcmFwIiwibGVjYXNyYXBpZCIsImNvbmNhdCIsImxlY2Fzc2lkdCIsImluc2VydExlY2Fzc1JlZmVyZW5jZXMiLCJsZWNhc3MiLCJjb2Rhc3MiLCJhc3MiLCJhdWRzIiwiYXVkY2xlcyIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJkYXRlc1NlYW5jZXMiLCJkYXRlc1NlYW5jZXNDb2RlcyIsIl9pdGVyYXRvcjMiLCJfc3RlcDMiLCJkYXRlU2VhbmNlQ29kZSIsImxlY2Fzc3JhcHMiLCJsZWNhc3NyYXBpZHMiLCJfaXRlcmF0b3I0IiwiX3N0ZXA0IiwibGVjYXNzcmFwaWQiLCJ0ZXh0ZXMiLCJ0ZXhjb2RzIiwidGV4dGUiLCJfaXRlcmF0b3I1IiwiX3N0ZXA1IiwidGV4Y29kIiwiaW5zZXJ0VGV4dGVSZWZlcmVuY2VzIiwiaW5zZXJ0TGVjdHVyZVJlZmVyZW5jZXMiLCJsZWN0dXJlIiwibGVjaWR0IiwidHlwbGVjY29kIiwidHlwbGVjIiwibGVjYXNzcyIsImxlY2Fzc2lkdHMiLCJfaXRlcmF0b3I2IiwiX3N0ZXA2IiwiaW5zZXJ0TG9pUmVmZXJlbmNlcyIsImxvaSIsImxvaWNvZCIsInR5cGxvaWNvZCIsInR5cGxvaSIsImV0YWxvaWNvZCIsImV0YWxvaSIsImRlY2NvY2NvZCIsImRlY2NvYyIsImxlY3R1cmVzIiwibGVjaWR0cyIsIl9pdGVyYXRvcjciLCJfc3RlcDciLCJpbnNlcnRRdWVzdGlvblJlZmVyZW5jZXMiLCJxdWVzdGlvbiIsImNvZGRlbnJhcCIsImRlbnJhcCIsImRvY2F0dHMiLCJkb2NhdHRjbGVzIiwiX2l0ZXJhdG9yOCIsIl9zdGVwOCIsImVjcnMiLCJlY3JudW1zIiwiX2l0ZXJhdG9yOSIsIl9zdGVwOSIsIm9yZ3MiLCJvcmdjb2RzIiwiX2l0ZXJhdG9yMTAiLCJfc3RlcDEwIiwiaW5zZXJ0U2VuUmVmZXJlbmNlcyIsInNlbiIsIl9pdGVyYXRvcjExIiwiX3N0ZXAxMSIsIm9yaXR4dGNvZCIsIm9yaXR4dCIsInR4dEFtZWxpSWQiLCJ0eHRfYW1lbGkiLCJ0eHRBbWVsaSIsInR5cHR4dGNvZCIsInR5cHR4dCIsInR5cHVybCIsImxpYnR5cHVybCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbnNlcnRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHh0QW1lbGkgfSBmcm9tIFwiLi90eXBlcy9hbWVsaVwiXG5pbXBvcnQgeyBEZWJhdCB9IGZyb20gXCIuL3R5cGVzL2RlYmF0c1wiXG5pbXBvcnQge1xuICBBc3MsXG4gIEF1ZCxcbiAgQXV0ZXVyLFxuICBEYXRlU2VhbmNlLFxuICBEZWNDb2MsXG4gIERlblJhcCxcbiAgRG9jQXR0LFxuICBFY3IsXG4gIEV0YUxvaSxcbiAgTGVjQXNzLFxuICBMZWNBc3NSYXAsXG4gIExlY3R1cmUsXG4gIExvaSxcbiAgT3JnLFxuICBPcmlUeHQsXG4gIFF1YSxcbiAgUmFwLFxuICBTY3IsXG4gIFRleHRlLFxuICBUeXBBdHQsXG4gIFR5cExlYyxcbiAgVHlwTG9pLFxuICBUeXBUeHQsXG4gIFR5cFVybCxcbn0gZnJvbSBcIi4vdHlwZXMvZG9zbGVnXCJcbmltcG9ydCB7IFF1ZXN0aW9uIH0gZnJvbSBcIi4vdHlwZXMvcXVlc3Rpb25zXCJcbmltcG9ydCB7IFNlbiB9IGZyb20gXCIuL3R5cGVzL3NlbnNcIlxuXG5leHBvcnQgaW50ZXJmYWNlIE91dHB1dERhdGEge1xuICByZWFkb25seSBhc3M/OiB7IFtpZDogc3RyaW5nXTogQXNzIH1cbiAgcmVhZG9ubHkgYXVkPzogeyBbaWQ6IHN0cmluZ106IEF1ZCB9XG4gIHJlYWRvbmx5IGF1dGV1cj86IHsgW2lkOiBzdHJpbmddOiBBdXRldXIgfVxuICByZWFkb25seSBkYXRlX3NlYW5jZT86IHsgW2lkOiBzdHJpbmddOiBEYXRlU2VhbmNlIH1cbiAgcmVhZG9ubHkgZGViYXRzPzogeyBbaWQ6IHN0cmluZ106IERlYmF0IH1cbiAgcmVhZG9ubHkgZGVjY29jPzogeyBbaWQ6IHN0cmluZ106IERlY0NvYyB9XG4gIHJlYWRvbmx5IGRlbnJhcD86IHsgW2lkOiBzdHJpbmddOiBEZW5SYXAgfVxuICByZWFkb25seSBkb2NhdHQ/OiB7IFtpZDogc3RyaW5nXTogRG9jQXR0IH1cbiAgcmVhZG9ubHkgZWNyPzogeyBbaWQ6IHN0cmluZ106IEVjciB9XG4gIHJlYWRvbmx5IGV0YWxvaT86IHsgW2lkOiBzdHJpbmddOiBFdGFMb2kgfVxuICByZWFkb25seSBsZWNhc3M/OiB7IFtpZDogc3RyaW5nXTogTGVjQXNzIH1cbiAgcmVhZG9ubHkgbGVjYXNzcmFwPzogeyBbaWQ6IHN0cmluZ106IExlY0Fzc1JhcCB9XG4gIHJlYWRvbmx5IGxlY3R1cmU/OiB7IFtpZDogc3RyaW5nXTogTGVjdHVyZSB9XG4gIHJlYWRvbmx5IGxvaT86IHsgW2lkOiBzdHJpbmddOiBMb2kgfVxuICByZWFkb25seSBvcmc/OiB7IFtpZDogc3RyaW5nXTogT3JnIH1cbiAgcmVhZG9ubHkgb3JpdHh0PzogeyBbaWQ6IHN0cmluZ106IE9yaVR4dCB9XG4gIHJlYWRvbmx5IHF1YT86IHsgW2lkOiBzdHJpbmddOiBRdWEgfVxuICByZWFkb25seSByYXA/OiB7IFtpZDogc3RyaW5nXTogUmFwIH1cbiAgcmVhZG9ubHkgc2NyPzogeyBbaWQ6IHN0cmluZ106IFNjciB9XG4gIHJlYWRvbmx5IHRleHRlPzogeyBbaWQ6IHN0cmluZ106IFRleHRlIH1cbiAgcmVhZG9ubHkgdHlwYXR0PzogeyBbaWQ6IHN0cmluZ106IFR5cEF0dCB9XG4gIHJlYWRvbmx5IHR5cGxlYz86IHsgW2lkOiBzdHJpbmddOiBUeXBMZWMgfVxuICByZWFkb25seSB0eXBsb2k/OiB7IFtpZDogc3RyaW5nXTogVHlwTG9pIH1cbiAgcmVhZG9ubHkgdHlwdHh0PzogeyBbaWQ6IHN0cmluZ106IFR5cFR4dCB9XG4gIHJlYWRvbmx5IHR5cHVybD86IHsgW2lkOiBzdHJpbmddOiBUeXBVcmwgfVxuICByZWFkb25seSB0eHRfYW1lbGk/OiB7IFtpZDogc3RyaW5nXTogVHh0QW1lbGkgfVxufVxuXG50eXBlIFZpc2l0ZWRJZHNCeVRhYmxlTmFtZSA9IHsgW3RhYmxlTmFtZTogc3RyaW5nXTogU2V0PG51bWJlciB8IHN0cmluZz4gfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0QXVkUmVmZXJlbmNlcyhcbiAgYXVkOiBBdWQsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZTogVmlzaXRlZElkc0J5VGFibGVOYW1lLFxuKSB7XG4gIGxldCB2aXNpdGVkSWRzID0gdmlzaXRlZElkc0J5VGFibGVOYW1lLmF1ZFxuICBpZiAodmlzaXRlZElkcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5hdWQgPSBuZXcgU2V0KClcbiAgfVxuICBpZiAoIXZpc2l0ZWRJZHMuaGFzKGF1ZC5hdWRjbGUpKSB7XG4gICAgdmlzaXRlZElkcy5hZGQoYXVkLmF1ZGNsZSlcblxuICAgIGlmIChhdWQub3JnY29kICE9PSBudWxsICYmIGRhdGEub3JnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9yZyA9IGRhdGEub3JnW2F1ZC5vcmdjb2RdXG4gICAgICBpZiAob3JnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXVkLm9yZyA9IG9yZ1xuICAgICAgICAvLyBpbnNlcnRPcmdSZWZlcmVuY2VzKG9yZywgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE9cbiAgfVxuXG4gIHJldHVybiBhdWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydEF1dGV1clJlZmVyZW5jZXMoXG4gIGF1dGV1cjogQXV0ZXVyLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkSWRzQnlUYWJsZU5hbWU6IFZpc2l0ZWRJZHNCeVRhYmxlTmFtZSxcbikge1xuICBsZXQgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5hdXRldXJcbiAgaWYgKHZpc2l0ZWRJZHMgPT09IHVuZGVmaW5lZCkge1xuICAgIHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUuYXV0ZXVyID0gbmV3IFNldCgpXG4gIH1cbiAgaWYgKCF2aXNpdGVkSWRzLmhhcyhhdXRldXIuYXV0Y29kKSkge1xuICAgIHZpc2l0ZWRJZHMuYWRkKGF1dGV1ci5hdXRjb2QpXG5cbiAgICBpZiAoZGF0YS5xdWEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgcXVhID0gZGF0YS5xdWFbYXV0ZXVyLnF1YWNvZF1cbiAgICAgIGlmIChxdWEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIucXVhID0gcXVhXG4gICAgICAgIC8vIGluc2VydFF1YVJlZmVyZW5jZXMocXVhLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ET1xuICB9XG5cbiAgcmV0dXJuIGF1dGV1clxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0RGF0ZVNlYW5jZVJlZmVyZW5jZXMoXG4gIGRhdGVTZWFuY2U6IERhdGVTZWFuY2UsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZTogVmlzaXRlZElkc0J5VGFibGVOYW1lLFxuKSB7XG4gIGxldCB2aXNpdGVkSWRzID0gdmlzaXRlZElkc0J5VGFibGVOYW1lLmRhdGVfc2VhbmNlXG4gIGlmICh2aXNpdGVkSWRzID09PSB1bmRlZmluZWQpIHtcbiAgICB2aXNpdGVkSWRzID0gdmlzaXRlZElkc0J5VGFibGVOYW1lLmRhdGVfc2VhbmNlID0gbmV3IFNldCgpXG4gIH1cbiAgaWYgKCF2aXNpdGVkSWRzLmhhcyhkYXRlU2VhbmNlLmNvZGUpKSB7XG4gICAgdmlzaXRlZElkcy5hZGQoZGF0ZVNlYW5jZS5jb2RlKVxuXG4gICAgaWYgKGRhdGVTZWFuY2UuZGF0ZV9zICE9PSBudWxsICYmIGRhdGEuZGViYXRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGRhdGVTdHJpbmcgPVxuICAgICAgICBkYXRlU2VhbmNlLmRhdGVfcyBpbnN0YW5jZW9mIERhdGVcbiAgICAgICAgICA/IGRhdGVTZWFuY2UuZGF0ZV9zLnRvSVNPU3RyaW5nKClcbiAgICAgICAgICA6IGRhdGVTZWFuY2UuZGF0ZV9zXG4gICAgICBjb25zdCBkZWJhdCA9IGRhdGEuZGViYXRzW2RhdGVTdHJpbmddXG4gICAgICBpZiAoZGViYXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBkYXRlU2VhbmNlLmRlYmF0ID0gZGViYXRcbiAgICAgICAgLy8gaW5zZXJ0RGViYXRSZWZlcmVuY2VzKGRlYmF0LCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgZGF0ZVNlYW5jZS5zY3JzID0gW11cbiAgICBpZiAoZGF0ZVNlYW5jZS5zY3JpZHMgIT09IHVuZGVmaW5lZCAmJiBkYXRhLnNjciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKGNvbnN0IHNjcmlkIG9mIGRhdGVTZWFuY2Uuc2NyaWRzKSB7XG4gICAgICAgIGNvbnN0IHNjciA9IGRhdGEuc2NyW3NjcmlkXVxuICAgICAgICBpZiAoc2NyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkYXRlU2VhbmNlLnNjcnMucHVzaChzY3IpXG4gICAgICAgICAgLy8gaW5zZXJ0U2NyUmVmZXJlbmNlcyhzY3IsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkYXRlU2VhbmNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnREb2NBdHRSZWZlcmVuY2VzKFxuICBkb2NhdHQ6IERvY0F0dCxcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZElkc0J5VGFibGVOYW1lOiBWaXNpdGVkSWRzQnlUYWJsZU5hbWUsXG4gIHBlcmZvcm1JbnNlcnRSYXBSZWZlcmVuY2VzPXRydWVcbikge1xuICBsZXQgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5kb2NhdHRcbiAgaWYgKHZpc2l0ZWRJZHMgPT09IHVuZGVmaW5lZCkge1xuICAgIHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUuZG9jYXR0ID0gbmV3IFNldCgpXG4gIH1cbiAgaWYgKCF2aXNpdGVkSWRzLmhhcyhkb2NhdHQuZG9jYXR0Y2xlKSkge1xuICAgIHZpc2l0ZWRJZHMuYWRkKGRvY2F0dC5kb2NhdHRjbGUpXG5cbiAgICBpZiAocGVyZm9ybUluc2VydFJhcFJlZmVyZW5jZXMgJiYgZG9jYXR0LnJhcGNvZCAhPT0gbnVsbCAmJiBkYXRhLnJhcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCByYXAgPSBkYXRhLnJhcFtkb2NhdHQucmFwY29kXVxuICAgICAgaWYgKHJhcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRvY2F0dC5yYXAgPSByYXBcbiAgICAgICAgaW5zZXJ0UmFwUmVmZXJlbmNlcyhyYXAsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZG9jYXR0LnR5cGF0dGNvZCAhPT0gbnVsbCAmJiBkYXRhLnR5cGF0dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCB0eXBhdHQgPSBkYXRhLnR5cGF0dFtkb2NhdHQudHlwYXR0Y29kXVxuICAgICAgaWYgKHR5cGF0dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRvY2F0dC50eXBhdHQgPSB0eXBhdHRcbiAgICAgICAgLy8gaW5zZXJ0VHlwQXR0UmVmZXJlbmNlcyh0eXBhdHQsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZG9jYXR0XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRFY3JSZWZlcmVuY2VzKFxuICBlY3I6IEVjcixcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZElkc0J5VGFibGVOYW1lOiBWaXNpdGVkSWRzQnlUYWJsZU5hbWUsXG4pIHtcbiAgbGV0IHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUuZWNyXG4gIGlmICh2aXNpdGVkSWRzID09PSB1bmRlZmluZWQpIHtcbiAgICB2aXNpdGVkSWRzID0gdmlzaXRlZElkc0J5VGFibGVOYW1lLmVjciA9IG5ldyBTZXQoKVxuICB9XG4gIGlmICghdmlzaXRlZElkcy5oYXMoZWNyLmVjcm51bSkpIHtcbiAgICB2aXNpdGVkSWRzLmFkZChlY3IuZWNybnVtKVxuXG4gICAgaWYgKGVjci5hdXRjb2QgIT09IG51bGwgJiYgZGF0YS5hdXRldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgYXV0ID0gZGF0YS5hdXRldXJbZWNyLmF1dGNvZF1cbiAgICAgIGlmIChhdXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBlY3IuYXV0ID0gYXV0XG4gICAgICAgIGluc2VydEF1dGV1clJlZmVyZW5jZXMoYXV0LCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ET1xuICB9XG5cbiAgcmV0dXJuIGVjclxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0TGVjYXNzcmFwUmVmZXJlbmNlcyhcbiAgbGVjYXNzcmFwOiBMZWNBc3NSYXAsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZTogVmlzaXRlZElkc0J5VGFibGVOYW1lLFxuKSB7XG4gIGxldCB2aXNpdGVkSWRzID0gdmlzaXRlZElkc0J5VGFibGVOYW1lLmxlY2Fzc3JhcFxuICBpZiAodmlzaXRlZElkcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5sZWNhc3NyYXAgPSBuZXcgU2V0KClcbiAgfVxuICBjb25zdCBsZWNhc3JhcGlkID0gYCR7bGVjYXNzcmFwLmxlY2Fzc2lkdH0gJHtsZWNhc3NyYXAucmFwY29kfWBcbiAgaWYgKCF2aXNpdGVkSWRzLmhhcyhsZWNhc3JhcGlkKSkge1xuICAgIHZpc2l0ZWRJZHMuYWRkKGxlY2FzcmFwaWQpXG5cbiAgICBpZiAobGVjYXNzcmFwLnJhcGNvZCAhPT0gbnVsbCAmJiBkYXRhLnJhcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCByYXAgPSBkYXRhLnJhcFtsZWNhc3NyYXAucmFwY29kXVxuICAgICAgaWYgKHJhcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxlY2Fzc3JhcC5yYXAgPSByYXBcbiAgICAgICAgaW5zZXJ0UmFwUmVmZXJlbmNlcyhyYXAsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbGVjYXNzcmFwXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRMZWNhc3NSZWZlcmVuY2VzKFxuICBsZWNhc3M6IExlY0FzcyxcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZElkc0J5VGFibGVOYW1lOiBWaXNpdGVkSWRzQnlUYWJsZU5hbWUsXG4pIHtcbiAgbGV0IHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUubGVjYXNzXG4gIGlmICh2aXNpdGVkSWRzID09PSB1bmRlZmluZWQpIHtcbiAgICB2aXNpdGVkSWRzID0gdmlzaXRlZElkc0J5VGFibGVOYW1lLmxlY2FzcyA9IG5ldyBTZXQoKVxuICB9XG4gIGlmICghdmlzaXRlZElkcy5oYXMobGVjYXNzLmxlY2Fzc2lkdCkpIHtcbiAgICB2aXNpdGVkSWRzLmFkZChsZWNhc3MubGVjYXNzaWR0KVxuXG4gICAgaWYgKGxlY2Fzcy5jb2Rhc3MgIT09IG51bGwgJiYgZGF0YS5hc3MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgYXNzID0gZGF0YS5hc3NbbGVjYXNzLmNvZGFzc11cbiAgICAgIGlmIChhc3MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsZWNhc3MuYXNzID0gYXNzXG4gICAgICAgIC8vIGluc2VydEFzc1JlZmVyZW5jZXMoYXNzLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGxlY2Fzcy5vcmdjb2QgIT09IG51bGwgJiYgZGF0YS5vcmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3Qgb3JnID0gZGF0YS5vcmdbbGVjYXNzLm9yZ2NvZF1cbiAgICAgIGlmIChvcmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsZWNhc3Mub3JnID0gb3JnXG4gICAgICAgIC8vIGluc2VydE9yZ1JlZmVyZW5jZXMob3JnLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgbGVjYXNzLmF1ZHMgPSBbXVxuICAgIGlmIChsZWNhc3MuYXVkY2xlcyAhPT0gdW5kZWZpbmVkICYmIGRhdGEuYXVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgYXVkY2xlIG9mIGxlY2Fzcy5hdWRjbGVzKSB7XG4gICAgICAgIGNvbnN0IGF1ZCA9IGRhdGEuYXVkW2F1ZGNsZV1cbiAgICAgICAgaWYgKGF1ZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbGVjYXNzLmF1ZHMucHVzaChhdWQpXG4gICAgICAgICAgaW5zZXJ0QXVkUmVmZXJlbmNlcyhhdWQsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGxlY2Fzcy5kYXRlc1NlYW5jZXMgPSBbXVxuICAgIGlmIChsZWNhc3MuZGF0ZXNTZWFuY2VzQ29kZXMgIT09IHVuZGVmaW5lZCAmJiBkYXRhLmRhdGVfc2VhbmNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgZGF0ZVNlYW5jZUNvZGUgb2YgbGVjYXNzLmRhdGVzU2VhbmNlc0NvZGVzKSB7XG4gICAgICAgIGNvbnN0IGRhdGVTZWFuY2UgPSBkYXRhLmRhdGVfc2VhbmNlW2RhdGVTZWFuY2VDb2RlXVxuICAgICAgICBpZiAoZGF0ZVNlYW5jZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbGVjYXNzLmRhdGVzU2VhbmNlcy5wdXNoKGRhdGVTZWFuY2UpXG4gICAgICAgICAgaW5zZXJ0RGF0ZVNlYW5jZVJlZmVyZW5jZXMoZGF0ZVNlYW5jZSwgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGVjYXNzLmxlY2Fzc3JhcHMgPSBbXVxuICAgIGlmIChsZWNhc3MubGVjYXNzcmFwaWRzICE9PSB1bmRlZmluZWQgJiYgZGF0YS5sZWNhc3NyYXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCBsZWNhc3NyYXBpZCBvZiBsZWNhc3MubGVjYXNzcmFwaWRzKSB7XG4gICAgICAgIGNvbnN0IGxlY2Fzc3JhcCA9IGRhdGEubGVjYXNzcmFwW2xlY2Fzc3JhcGlkXVxuICAgICAgICBpZiAobGVjYXNzcmFwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBsZWNhc3MubGVjYXNzcmFwcy5wdXNoKGxlY2Fzc3JhcClcbiAgICAgICAgICBpbnNlcnRMZWNhc3NyYXBSZWZlcmVuY2VzKGxlY2Fzc3JhcCwgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGVjYXNzLnRleHRlcyA9IFtdXG4gICAgaWYgKGxlY2Fzcy50ZXhjb2RzICE9PSB1bmRlZmluZWQgJiYgZGF0YS50ZXh0ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKGNvbnN0IHRleGNvZCBvZiBsZWNhc3MudGV4Y29kcykge1xuICAgICAgICBjb25zdCB0ZXh0ZSA9IGRhdGEudGV4dGVbdGV4Y29kXVxuICAgICAgICBpZiAodGV4dGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGxlY2Fzcy50ZXh0ZXMucHVzaCh0ZXh0ZSlcbiAgICAgICAgICBpbnNlcnRUZXh0ZVJlZmVyZW5jZXModGV4dGUsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBsZWNhc3Ncbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydExlY3R1cmVSZWZlcmVuY2VzKFxuICBsZWN0dXJlOiBMZWN0dXJlLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkSWRzQnlUYWJsZU5hbWU6IFZpc2l0ZWRJZHNCeVRhYmxlTmFtZSxcbikge1xuICBsZXQgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5sZWN0dXJlXG4gIGlmICh2aXNpdGVkSWRzID09PSB1bmRlZmluZWQpIHtcbiAgICB2aXNpdGVkSWRzID0gdmlzaXRlZElkc0J5VGFibGVOYW1lLmxlY3R1cmUgPSBuZXcgU2V0KClcbiAgfVxuICBpZiAoIXZpc2l0ZWRJZHMuaGFzKGxlY3R1cmUubGVjaWR0KSkge1xuICAgIHZpc2l0ZWRJZHMuYWRkKGxlY3R1cmUubGVjaWR0KVxuXG4gICAgaWYgKGxlY3R1cmUudHlwbGVjY29kICE9PSBudWxsICYmIGRhdGEudHlwbGVjICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHR5cGxlYyA9IGRhdGEudHlwbGVjW2xlY3R1cmUudHlwbGVjY29kXVxuICAgICAgaWYgKHR5cGxlYyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxlY3R1cmUudHlwbGVjID0gdHlwbGVjXG4gICAgICAgIC8vIGluc2VydFR5cGxlY1JlZmVyZW5jZXModHlwbGVjLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgbGVjdHVyZS5sZWNhc3NzID0gW11cbiAgICBpZiAobGVjdHVyZS5sZWNhc3NpZHRzICE9PSB1bmRlZmluZWQgJiYgZGF0YS5sZWNhc3MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCBsZWNhc3NpZHQgb2YgbGVjdHVyZS5sZWNhc3NpZHRzKSB7XG4gICAgICAgIGNvbnN0IGxlY2FzcyA9IGRhdGEubGVjYXNzW2xlY2Fzc2lkdF1cbiAgICAgICAgaWYgKGxlY2FzcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbGVjdHVyZS5sZWNhc3NzLnB1c2gobGVjYXNzKVxuICAgICAgICAgIGluc2VydExlY2Fzc1JlZmVyZW5jZXMobGVjYXNzLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbGVjdHVyZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0TG9pUmVmZXJlbmNlcyhcbiAgbG9pOiBMb2ksXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZTogVmlzaXRlZElkc0J5VGFibGVOYW1lLFxuKSB7XG4gIGxldCB2aXNpdGVkSWRzID0gdmlzaXRlZElkc0J5VGFibGVOYW1lLmxvaVxuICBpZiAodmlzaXRlZElkcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdmlzaXRlZElkcyA9IHZpc2l0ZWRJZHNCeVRhYmxlTmFtZS5sb2kgPSBuZXcgU2V0KClcbiAgfVxuICBpZiAoIXZpc2l0ZWRJZHMuaGFzKGxvaS5sb2ljb2QpKSB7XG4gICAgdmlzaXRlZElkcy5hZGQobG9pLmxvaWNvZClcblxuICAgIGlmIChsb2kudHlwbG9pY29kICE9PSBudWxsICYmIGRhdGEudHlwbG9pICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHR5cGxvaSA9IGRhdGEudHlwbG9pW2xvaS50eXBsb2ljb2RdXG4gICAgICBpZiAodHlwbG9pICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbG9pLnR5cGxvaSA9IHR5cGxvaVxuICAgICAgICAvLyBpbnNlcnRUeXBsb2lSZWZlcmVuY2VzKHR5cGxvaSwgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChsb2kuZXRhbG9pY29kICE9PSBudWxsICYmIGRhdGEuZXRhbG9pICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGV0YWxvaSA9IGRhdGEuZXRhbG9pW2xvaS5ldGFsb2ljb2RdXG4gICAgICBpZiAoZXRhbG9pICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbG9pLmV0YWxvaSA9IGV0YWxvaVxuICAgICAgICAvLyBpbnNlcnRFdGFsb2lSZWZlcmVuY2VzKGV0YWxvaSwgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChsb2kuZGVjY29jY29kICE9PSBudWxsICYmIGRhdGEuZGVjY29jICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGRlY2NvYyA9IGRhdGEuZGVjY29jW2xvaS5kZWNjb2Njb2RdXG4gICAgICBpZiAoZGVjY29jICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbG9pLmRlY2NvYyA9IGRlY2NvY1xuICAgICAgICAvLyBpbnNlcnREZWNjb2NSZWZlcmVuY2VzKGRlY2NvYywgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgfVxuICAgIH1cblxuICAgIGxvaS5sZWN0dXJlcyA9IFtdXG4gICAgaWYgKGxvaS5sZWNpZHRzICE9PSB1bmRlZmluZWQgJiYgZGF0YS5sZWN0dXJlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgbGVjaWR0IG9mIGxvaS5sZWNpZHRzKSB7XG4gICAgICAgIGNvbnN0IGxlY3R1cmUgPSBkYXRhLmxlY3R1cmVbbGVjaWR0XVxuICAgICAgICBpZiAobGVjdHVyZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbG9pLmxlY3R1cmVzLnB1c2gobGVjdHVyZSlcbiAgICAgICAgICBpbnNlcnRMZWN0dXJlUmVmZXJlbmNlcyhsZWN0dXJlLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbG9pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRRdWVzdGlvblJlZmVyZW5jZXMoXG4gIHF1ZXN0aW9uOiBRdWVzdGlvbixcbiAgLy8gQHRzLWlnbm9yZSBUTyBCRSBSRU1PVkVEIFdIRU4gRE9ORVxuICBkYXRhOiBPdXRwdXREYXRhLFxuICAvLyBAdHMtaWdub3JlIFRPIEJFIFJFTU9WRUQgV0hFTiBET05FXG4gIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZTogVmlzaXRlZElkc0J5VGFibGVOYW1lLFxuKSB7XG4gIC8vIFRPRE9cbiAgcmV0dXJuIHF1ZXN0aW9uXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRSYXBSZWZlcmVuY2VzKFxuICByYXA6IFJhcCxcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZElkc0J5VGFibGVOYW1lOiBWaXNpdGVkSWRzQnlUYWJsZU5hbWUsXG4pIHtcbiAgbGV0IHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUucmFwXG4gIGlmICh2aXNpdGVkSWRzID09PSB1bmRlZmluZWQpIHtcbiAgICB2aXNpdGVkSWRzID0gdmlzaXRlZElkc0J5VGFibGVOYW1lLnJhcCA9IG5ldyBTZXQoKVxuICB9XG4gIGlmICghdmlzaXRlZElkcy5oYXMocmFwLnJhcGNvZCkpIHtcbiAgICB2aXNpdGVkSWRzLmFkZChyYXAucmFwY29kKVxuXG4gICAgaWYgKHJhcC5jb2RkZW5yYXAgIT09IG51bGwgJiYgZGF0YS5kZW5yYXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgZGVucmFwID0gZGF0YS5kZW5yYXBbcmFwLmNvZGRlbnJhcF1cbiAgICAgIGlmIChkZW5yYXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByYXAuZGVucmFwID0gZGVucmFwXG4gICAgICAgIC8vIGluc2VydERlbnJhcFJlZmVyZW5jZXMoZGVucmFwLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmFwLmRvY2F0dHMgPSBbXVxuICAgIGlmIChyYXAuZG9jYXR0Y2xlcyAhPT0gdW5kZWZpbmVkICYmIGRhdGEuZG9jYXR0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgZG9jYXR0Y2xlIG9mIHJhcC5kb2NhdHRjbGVzKSB7XG4gICAgICAgIGNvbnN0IGRvY2F0dCA9IGRhdGEuZG9jYXR0W2RvY2F0dGNsZV1cbiAgICAgICAgaWYgKGRvY2F0dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmFwLmRvY2F0dHMucHVzaChkb2NhdHQpXG4gICAgICAgICAgaW5zZXJ0RG9jQXR0UmVmZXJlbmNlcyhkb2NhdHQsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSwgZmFsc2UpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByYXAuZWNycyA9IFtdXG4gICAgaWYgKHJhcC5lY3JudW1zICE9PSB1bmRlZmluZWQgJiYgZGF0YS5lY3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCBlY3JudW0gb2YgcmFwLmVjcm51bXMpIHtcbiAgICAgICAgY29uc3QgZWNyID0gZGF0YS5lY3JbZWNybnVtXVxuICAgICAgICBpZiAoZWNyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByYXAuZWNycy5wdXNoKGVjcilcbiAgICAgICAgICBpbnNlcnRFY3JSZWZlcmVuY2VzKGVjciwgZGF0YSwgdmlzaXRlZElkc0J5VGFibGVOYW1lKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmFwLm9yZ3MgPSBbXVxuICAgIGlmIChyYXAub3JnY29kcyAhPT0gdW5kZWZpbmVkICYmIGRhdGEub3JnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3Qgb3JnY29kIG9mIHJhcC5vcmdjb2RzKSB7XG4gICAgICAgIGNvbnN0IG9yZyA9IGRhdGEub3JnW29yZ2NvZF1cbiAgICAgICAgaWYgKG9yZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmFwLm9yZ3MucHVzaChvcmcpXG4gICAgICAgICAgLy8gaW5zZXJ0T3JnUmVmZXJlbmNlcyhvcmcsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByYXBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydFNlblJlZmVyZW5jZXMoXG4gIHNlbjogU2VuLFxuICAvLyBAdHMtaWdub3JlIFRPIEJFIFJFTU9WRUQgV0hFTiBET05FXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIC8vIEB0cy1pZ25vcmUgVE8gQkUgUkVNT1ZFRCBXSEVOIERPTkVcbiAgdmlzaXRlZElkc0J5VGFibGVOYW1lOiBWaXNpdGVkSWRzQnlUYWJsZU5hbWUsXG4pIHtcbiAgLy8gVE9ET1xuICByZXR1cm4gc2VuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRUZXh0ZVJlZmVyZW5jZXMoXG4gIHRleHRlOiBUZXh0ZSxcbiAgZGF0YTogT3V0cHV0RGF0YSxcbiAgdmlzaXRlZElkc0J5VGFibGVOYW1lOiBWaXNpdGVkSWRzQnlUYWJsZU5hbWUsXG4pIHtcbiAgbGV0IHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUudGV4dGVcbiAgaWYgKHZpc2l0ZWRJZHMgPT09IHVuZGVmaW5lZCkge1xuICAgIHZpc2l0ZWRJZHMgPSB2aXNpdGVkSWRzQnlUYWJsZU5hbWUudGV4dGUgPSBuZXcgU2V0KClcbiAgfVxuICBpZiAoIXZpc2l0ZWRJZHMuaGFzKHRleHRlLnRleGNvZCkpIHtcbiAgICB2aXNpdGVkSWRzLmFkZCh0ZXh0ZS50ZXhjb2QpXG5cbiAgICB0ZXh0ZS5lY3JzID0gW11cbiAgICBpZiAodGV4dGUuZWNybnVtcyAhPT0gdW5kZWZpbmVkICYmIGRhdGEuZWNyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3QgZWNybnVtIG9mIHRleHRlLmVjcm51bXMpIHtcbiAgICAgICAgY29uc3QgZWNyID0gZGF0YS5lY3JbZWNybnVtXVxuICAgICAgICBpZiAoZWNyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0ZXh0ZS5lY3JzLnB1c2goZWNyKVxuICAgICAgICAgIGluc2VydEVjclJlZmVyZW5jZXMoZWNyLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGV4dGUub3JnY29kICE9PSBudWxsICYmIGRhdGEub3JnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9yZyA9IGRhdGEub3JnW3RleHRlLm9yZ2NvZF1cbiAgICAgIGlmIChvcmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0ZXh0ZS5vcmcgPSBvcmdcbiAgICAgICAgLy8gaW5zZXJ0T3JnUmVmZXJlbmNlcyhvcmcsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGV4dGUub3JpdHh0Y29kICE9PSBudWxsICYmIGRhdGEub3JpdHh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9yaXR4dCA9IGRhdGEub3JpdHh0W3RleHRlLm9yaXR4dGNvZF1cbiAgICAgIGlmIChvcml0eHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0ZXh0ZS5vcml0eHQgPSBvcml0eHRcbiAgICAgICAgLy8gaW5zZXJ0T3JpdHh0UmVmZXJlbmNlcyhvcml0eHQsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGV4dGUudHh0QW1lbGlJZCAhPT0gdW5kZWZpbmVkICYmIGRhdGEudHh0X2FtZWxpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHR4dEFtZWxpID0gZGF0YS50eHRfYW1lbGlbdGV4dGUudHh0QW1lbGlJZF1cbiAgICAgIGlmICh0eHRBbWVsaSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRleHRlLnR4dEFtZWxpID0gdHh0QW1lbGlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGV4dGUudHlwdHh0Y29kICE9PSBudWxsICYmIGRhdGEudHlwdHh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHR5cHR4dCA9IGRhdGEudHlwdHh0W3RleHRlLnR5cHR4dGNvZF1cbiAgICAgIGlmICh0eXB0eHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0ZXh0ZS50eXB0eHQgPSB0eXB0eHRcbiAgICAgICAgLy8gaW5zZXJ0VHlwdHh0UmVmZXJlbmNlcyh0eXB0eHQsIGRhdGEsIHZpc2l0ZWRJZHNCeVRhYmxlTmFtZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGV4dGUudHlwdXJsICE9PSBudWxsICYmIGRhdGEudHlwdXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHR5cHVybCA9IGRhdGEudHlwdXJsW3RleHRlLnR5cHVybF1cbiAgICAgIGlmICh0eXB1cmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0ZXh0ZS5saWJ0eXB1cmwgPSB0eXB1cmwubGlidHlwdXJsXG4gICAgICAgIC8vIGluc2VydFR5cHVybFJlZmVyZW5jZXModHlwdXJsLCBkYXRhLCB2aXNpdGVkSWRzQnlUYWJsZU5hbWUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ET1xuICB9XG5cbiAgcmV0dXJuIHRleHRlXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQThETyxTQUFTQSxtQkFBbUJBLENBQ2pDQyxHQUFRLEVBQ1JDLElBQWdCLEVBQ2hCQyxxQkFBNEMsRUFDNUM7RUFDQSxJQUFJQyxVQUFVLEdBQUdELHFCQUFxQixDQUFDRixHQUFHO0VBQzFDLElBQUlHLFVBQVUsS0FBS0MsU0FBUyxFQUFFO0lBQzVCRCxVQUFVLEdBQUdELHFCQUFxQixDQUFDRixHQUFHLEdBQUcsSUFBSUssR0FBRyxDQUFDLENBQUM7RUFDcEQ7RUFDQSxJQUFJLENBQUNGLFVBQVUsQ0FBQ0csR0FBRyxDQUFDTixHQUFHLENBQUNPLE1BQU0sQ0FBQyxFQUFFO0lBQy9CSixVQUFVLENBQUNLLEdBQUcsQ0FBQ1IsR0FBRyxDQUFDTyxNQUFNLENBQUM7SUFFMUIsSUFBSVAsR0FBRyxDQUFDUyxNQUFNLEtBQUssSUFBSSxJQUFJUixJQUFJLENBQUNTLEdBQUcsS0FBS04sU0FBUyxFQUFFO01BQ2pELElBQU1NLEdBQUcsR0FBR1QsSUFBSSxDQUFDUyxHQUFHLENBQUNWLEdBQUcsQ0FBQ1MsTUFBTSxDQUFDO01BQ2hDLElBQUlDLEdBQUcsS0FBS04sU0FBUyxFQUFFO1FBQ3JCSixHQUFHLENBQUNVLEdBQUcsR0FBR0EsR0FBRztRQUNiO01BQ0Y7SUFDRjs7SUFFQTtFQUNGO0VBRUEsT0FBT1YsR0FBRztBQUNaO0FBRU8sU0FBU1csc0JBQXNCQSxDQUNwQ0MsTUFBYyxFQUNkWCxJQUFnQixFQUNoQkMscUJBQTRDLEVBQzVDO0VBQ0EsSUFB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
|