occam-verify-cli 1.0.581 → 1.0.583
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/lib/element/derivation.js +169 -14
- package/lib/element/parameter.js +6 -6
- package/lib/element/procedureCall.js +182 -22
- package/lib/element/proof.js +161 -17
- package/lib/element/proofAssertion/premise.js +210 -54
- package/lib/element/proofAssertion/step.js +235 -38
- package/lib/element/proofAssertion/supposition.js +43 -35
- package/lib/element/rule.js +142 -70
- package/lib/element/substitution.js +10 -1
- package/lib/element/topLevelMetaAssertion/metaLemma.js +22 -14
- package/lib/element/topLevelMetaAssertion/metatheorem.js +22 -14
- package/lib/utilities/context.js +53 -5
- package/lib/utilities/unification.js +397 -182
- package/package.json +4 -4
- package/src/element/derivation.js +6 -5
- package/src/element/parameter.js +4 -4
- package/src/element/procedureCall.js +19 -12
- package/src/element/proof.js +4 -4
- package/src/element/proofAssertion/premise.js +4 -4
- package/src/element/proofAssertion/step.js +7 -8
- package/src/element/proofAssertion/supposition.js +1 -1
- package/src/element/rule.js +11 -12
- package/src/element/substitution.js +12 -0
- package/src/element/topLevelMetaAssertion/metaLemma.js +1 -1
- package/src/element/topLevelMetaAssertion/metatheorem.js +1 -1
- package/src/utilities/context.js +19 -3
- package/src/utilities/unification.js +11 -11
|
@@ -10,7 +10,6 @@ Object.defineProperty(exports, "default", {
|
|
|
10
10
|
});
|
|
11
11
|
var _proofAssertion = /*#__PURE__*/ _interop_require_default(require("../proofAssertion"));
|
|
12
12
|
var _elements = require("../../elements");
|
|
13
|
-
var _unification = require("../../utilities/unification");
|
|
14
13
|
var _context = require("../../utilities/context");
|
|
15
14
|
var _statement = require("../../utilities/statement");
|
|
16
15
|
function _assert_this_initialized(self) {
|
|
@@ -19,6 +18,35 @@ function _assert_this_initialized(self) {
|
|
|
19
18
|
}
|
|
20
19
|
return self;
|
|
21
20
|
}
|
|
21
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
22
|
+
try {
|
|
23
|
+
var info = gen[key](arg);
|
|
24
|
+
var value = info.value;
|
|
25
|
+
} catch (error) {
|
|
26
|
+
reject(error);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (info.done) {
|
|
30
|
+
resolve(value);
|
|
31
|
+
} else {
|
|
32
|
+
Promise.resolve(value).then(_next, _throw);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function _async_to_generator(fn) {
|
|
36
|
+
return function() {
|
|
37
|
+
var self = this, args = arguments;
|
|
38
|
+
return new Promise(function(resolve, reject) {
|
|
39
|
+
var gen = fn.apply(self, args);
|
|
40
|
+
function _next(value) {
|
|
41
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
42
|
+
}
|
|
43
|
+
function _throw(err) {
|
|
44
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
45
|
+
}
|
|
46
|
+
_next(undefined);
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
}
|
|
22
50
|
function _call_super(_this, derived, args) {
|
|
23
51
|
derived = _get_prototype_of(derived);
|
|
24
52
|
return _possible_constructor_return(_this, _is_native_reflect_construct() ? Reflect.construct(derived, args || [], _get_prototype_of(_this).constructor) : derived.apply(_this, args));
|
|
@@ -104,6 +132,97 @@ function _is_native_reflect_construct() {
|
|
|
104
132
|
return !!result;
|
|
105
133
|
})();
|
|
106
134
|
}
|
|
135
|
+
function _ts_generator(thisArg, body) {
|
|
136
|
+
var f, y, t, _ = {
|
|
137
|
+
label: 0,
|
|
138
|
+
sent: function() {
|
|
139
|
+
if (t[0] & 1) throw t[1];
|
|
140
|
+
return t[1];
|
|
141
|
+
},
|
|
142
|
+
trys: [],
|
|
143
|
+
ops: []
|
|
144
|
+
}, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
145
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() {
|
|
146
|
+
return this;
|
|
147
|
+
}), g;
|
|
148
|
+
function verb(n) {
|
|
149
|
+
return function(v) {
|
|
150
|
+
return step([
|
|
151
|
+
n,
|
|
152
|
+
v
|
|
153
|
+
]);
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
function step(op) {
|
|
157
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
158
|
+
while(g && (g = 0, op[0] && (_ = 0)), _)try {
|
|
159
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
160
|
+
if (y = 0, t) op = [
|
|
161
|
+
op[0] & 2,
|
|
162
|
+
t.value
|
|
163
|
+
];
|
|
164
|
+
switch(op[0]){
|
|
165
|
+
case 0:
|
|
166
|
+
case 1:
|
|
167
|
+
t = op;
|
|
168
|
+
break;
|
|
169
|
+
case 4:
|
|
170
|
+
_.label++;
|
|
171
|
+
return {
|
|
172
|
+
value: op[1],
|
|
173
|
+
done: false
|
|
174
|
+
};
|
|
175
|
+
case 5:
|
|
176
|
+
_.label++;
|
|
177
|
+
y = op[1];
|
|
178
|
+
op = [
|
|
179
|
+
0
|
|
180
|
+
];
|
|
181
|
+
continue;
|
|
182
|
+
case 7:
|
|
183
|
+
op = _.ops.pop();
|
|
184
|
+
_.trys.pop();
|
|
185
|
+
continue;
|
|
186
|
+
default:
|
|
187
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
188
|
+
_ = 0;
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
192
|
+
_.label = op[1];
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
195
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
196
|
+
_.label = t[1];
|
|
197
|
+
t = op;
|
|
198
|
+
break;
|
|
199
|
+
}
|
|
200
|
+
if (t && _.label < t[2]) {
|
|
201
|
+
_.label = t[2];
|
|
202
|
+
_.ops.push(op);
|
|
203
|
+
break;
|
|
204
|
+
}
|
|
205
|
+
if (t[2]) _.ops.pop();
|
|
206
|
+
_.trys.pop();
|
|
207
|
+
continue;
|
|
208
|
+
}
|
|
209
|
+
op = body.call(thisArg, _);
|
|
210
|
+
} catch (e) {
|
|
211
|
+
op = [
|
|
212
|
+
6,
|
|
213
|
+
e
|
|
214
|
+
];
|
|
215
|
+
y = 0;
|
|
216
|
+
} finally{
|
|
217
|
+
f = t = 0;
|
|
218
|
+
}
|
|
219
|
+
if (op[0] & 5) throw op[1];
|
|
220
|
+
return {
|
|
221
|
+
value: op[0] ? op[1] : void 0,
|
|
222
|
+
done: true
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
}
|
|
107
226
|
var _Step;
|
|
108
227
|
var _default = (0, _elements.define)((_Step = /*#__PURE__*/ function(ProofAssertion) {
|
|
109
228
|
_inherits(Step, ProofAssertion);
|
|
@@ -168,45 +287,123 @@ var _default = (0, _elements.define)((_Step = /*#__PURE__*/ function(ProofAssert
|
|
|
168
287
|
{
|
|
169
288
|
key: "verify",
|
|
170
289
|
value: function verify(assignments, context) {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
290
|
+
return _async_to_generator(function() {
|
|
291
|
+
var _this, verifies, stepString, statement;
|
|
292
|
+
return _ts_generator(this, function(_state) {
|
|
293
|
+
switch(_state.label){
|
|
294
|
+
case 0:
|
|
295
|
+
_this = this;
|
|
296
|
+
verifies = false;
|
|
297
|
+
return [
|
|
298
|
+
4,
|
|
299
|
+
this.break(context)
|
|
300
|
+
];
|
|
301
|
+
case 1:
|
|
302
|
+
_state.sent();
|
|
303
|
+
stepString = this.getString(); ///
|
|
304
|
+
context.trace("Verifying the '".concat(stepString, "' step..."));
|
|
305
|
+
statement = this.getStatement();
|
|
306
|
+
if (statement !== null) {
|
|
307
|
+
(0, _context.asyncAttempt)(function(context) {
|
|
308
|
+
return _async_to_generator(function() {
|
|
309
|
+
var _this, referenceValidates, satisfiesAssertioValidates, statementValidates, reference, satisfiesAssertion, statementUnifies;
|
|
310
|
+
return _ts_generator(this, function(_state) {
|
|
311
|
+
switch(_state.label){
|
|
312
|
+
case 0:
|
|
313
|
+
_this = this;
|
|
314
|
+
referenceValidates = this.validateReference(context);
|
|
315
|
+
if (!referenceValidates) return [
|
|
316
|
+
3,
|
|
317
|
+
2
|
|
318
|
+
];
|
|
319
|
+
satisfiesAssertioValidates = this.validateSatisfiesAssertion(context);
|
|
320
|
+
if (!satisfiesAssertioValidates) return [
|
|
321
|
+
3,
|
|
322
|
+
2
|
|
323
|
+
];
|
|
324
|
+
statementValidates = this.validateStatement(assignments, context);
|
|
325
|
+
if (!statementValidates) return [
|
|
326
|
+
3,
|
|
327
|
+
2
|
|
328
|
+
];
|
|
329
|
+
reference = this.getReference(), satisfiesAssertion = this.getSatisfiesAssertion();
|
|
330
|
+
return [
|
|
331
|
+
4,
|
|
332
|
+
(0, _context.asyncLiminally)(function(context) {
|
|
333
|
+
return _async_to_generator(function() {
|
|
334
|
+
var _this, statementUnifies;
|
|
335
|
+
return _ts_generator(this, function(_state) {
|
|
336
|
+
switch(_state.label){
|
|
337
|
+
case 0:
|
|
338
|
+
_this = this;
|
|
339
|
+
return [
|
|
340
|
+
4,
|
|
341
|
+
asyncSome(function(unifyStatement) {
|
|
342
|
+
return _async_to_generator(function() {
|
|
343
|
+
var statementUnifies;
|
|
344
|
+
return _ts_generator(this, function(_state) {
|
|
345
|
+
switch(_state.label){
|
|
346
|
+
case 0:
|
|
347
|
+
return [
|
|
348
|
+
4,
|
|
349
|
+
unifyStatement(statement, reference, satisfiesAssertion, context)
|
|
350
|
+
];
|
|
351
|
+
case 1:
|
|
352
|
+
statementUnifies = _state.sent();
|
|
353
|
+
if (statementUnifies) {
|
|
354
|
+
this.setContext(context);
|
|
355
|
+
return [
|
|
356
|
+
2,
|
|
357
|
+
true
|
|
358
|
+
];
|
|
359
|
+
}
|
|
360
|
+
return [
|
|
361
|
+
2
|
|
362
|
+
];
|
|
363
|
+
}
|
|
364
|
+
});
|
|
365
|
+
}).call(_this);
|
|
366
|
+
})
|
|
367
|
+
];
|
|
368
|
+
case 1:
|
|
369
|
+
statementUnifies = _state.sent();
|
|
370
|
+
return [
|
|
371
|
+
2,
|
|
372
|
+
statementUnifies
|
|
373
|
+
];
|
|
374
|
+
}
|
|
375
|
+
});
|
|
376
|
+
}).call(_this);
|
|
377
|
+
}, context)
|
|
378
|
+
];
|
|
379
|
+
case 1:
|
|
380
|
+
statementUnifies = _state.sent();
|
|
381
|
+
if (statementUnifies) {
|
|
382
|
+
verifies = true;
|
|
383
|
+
}
|
|
384
|
+
_state.label = 2;
|
|
385
|
+
case 2:
|
|
386
|
+
return [
|
|
387
|
+
2,
|
|
388
|
+
verifies
|
|
389
|
+
];
|
|
390
|
+
}
|
|
391
|
+
});
|
|
392
|
+
}).call(_this);
|
|
194
393
|
}, context);
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
394
|
+
} else {
|
|
395
|
+
context.debug("Unable to verify the '".concat(stepString, "' step because it is nonsense."));
|
|
396
|
+
}
|
|
397
|
+
if (verifies) {
|
|
398
|
+
context.debug("...verified the '".concat(stepString, "' step."));
|
|
198
399
|
}
|
|
199
|
-
|
|
400
|
+
return [
|
|
401
|
+
2,
|
|
402
|
+
verifies
|
|
403
|
+
];
|
|
200
404
|
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
} else {
|
|
204
|
-
context.debug("Unable to verify the '".concat(stepString, "' step because it is nonsense."));
|
|
205
|
-
}
|
|
206
|
-
if (verifies) {
|
|
207
|
-
context.debug("...verified the '".concat(stepString, "' step."));
|
|
208
|
-
}
|
|
209
|
-
return verifies;
|
|
405
|
+
});
|
|
406
|
+
}).call(this);
|
|
210
407
|
}
|
|
211
408
|
},
|
|
212
409
|
{
|
|
@@ -266,4 +463,4 @@ var _default = (0, _elements.define)((_Step = /*#__PURE__*/ function(ProofAssert
|
|
|
266
463
|
return Step;
|
|
267
464
|
}(_proofAssertion.default), _define_property(_Step, "name", "Step"), _Step));
|
|
268
465
|
|
|
269
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L3Byb29mQXNzZXJ0aW9uL3N0ZXAuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBQcm9vZkFzc2VydGlvbiBmcm9tIFwiLi4vcHJvb2ZBc3NlcnRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyB1bmlmeVN0YXRlbWVudHMgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3VuaWZpY2F0aW9uXCI7XG5pbXBvcnQgeyBhdHRlbXB0LCBsaW1pbmFsbHkgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IHByb3BlcnR5QXNzZXJ0aW9uRnJvbVN0YXRlbWVudCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RhdGVtZW50XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBTdGVwIGV4dGVuZHMgUHJvb2ZBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIHN0YXRlbWVudCwgcmVmZXJlbmNlLCBzYXRpc2ZpZXNBc3NlcnRpb24pIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIHN0YXRlbWVudCk7XG5cbiAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZTtcbiAgICB0aGlzLnNhdGlzZmllc0Fzc2VydGlvbiA9IHNhdGlzZmllc0Fzc2VydGlvbjtcbiAgfVxuXG4gIGdldFJlZmVyZW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2U7XG4gIH1cblxuICBnZXRTYXRpc2ZpZXNBc3NlcnRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc2F0aXNmaWVzQXNzZXJ0aW9uO1xuICB9XG5cbiAgaXNTYXRpc2ZpZWQoKSB7XG4gICAgY29uc3Qgc2F0aXNmaWVkID0gKHRoaXMuc2F0aXNmaWVzQXNzZXJ0aW9uICE9PSBudWxsKTtcblxuICAgIHJldHVybiBzYXRpc2ZpZWQ7XG4gIH1cblxuICBpc1F1YWxpZmllZCgpIHtcbiAgICBjb25zdCBxdWFsaWZpZWQgPSAodGhpcy5yZWZlcmVuY2UgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHF1YWxpZmllZDtcbiAgfVxuXG4gIGlzU3RhdGVkKCkge1xuICAgIGNvbnN0IHF1YWxpZmllZCA9IHRoaXMuaXNRdWFsaWZpZWQoKSxcbiAgICAgICAgICBzdGF0ZWQgPSBxdWFsaWZpZWQ7IC8vL1xuXG4gICAgcmV0dXJuIHN0YXRlZDtcbiAgfVxuXG4gIGNvbXBhcmVUZXJtQW5kUHJvcGVydHlSZWxhdGlvbih0ZXJtLCBwcm9wZXJ0eVJlbGF0aW9uLCBjb250ZXh0KSB7XG4gICAgbGV0IGNvbXBhcmVzVG9UZXJtQW5kUHJvcGVydHlSZWxhdGlvbiA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0gdGhpcy5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICBwcm9wZXJ0eUFzc2VydGlvbiA9IHByb3BlcnR5QXNzZXJ0aW9uRnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gICAgaWYgKHByb3BlcnR5QXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb21wYXJlc1RvVGVybUFuZFByb3BlcnR5UmVsYXRpb24gPSBwcm9wZXJ0eUFzc2VydGlvbi5jb21wYXJlVGVybUFuZFByb3BlcnR5UmVsYXRpb24odGVybSwgcHJvcGVydHlSZWxhdGlvbiwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9UZXJtQW5kUHJvcGVydHlSZWxhdGlvbjtcbiAgfVxuXG4gIHZlcmlmeShhc3NpZ25tZW50cywgY29udGV4dCkge1xuICAgIGxldCB2ZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgdGhpcy5icmVhayhjb250ZXh0KTtcblxuICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAuLi5gKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudCA9IHRoaXMuZ2V0U3RhdGVtZW50KCk7XG5cbiAgICBpZiAoc3RhdGVtZW50ICE9PSBudWxsKSB7XG4gICAgICBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlZmVyZW5jZVZhbGlkYXRlcyA9IHRoaXMudmFsaWRhdGVSZWZlcmVuY2UoY29udGV4dCk7XG5cbiAgICAgICAgaWYgKHJlZmVyZW5jZVZhbGlkYXRlcykge1xuICAgICAgICAgIGNvbnN0IHNhdGlzZmllc0Fzc2VydGlvVmFsaWRhdGVzID0gdGhpcy52YWxpZGF0ZVNhdGlzZmllc0Fzc2VydGlvbihjb250ZXh0KTtcblxuICAgICAgICAgIGlmIChzYXRpc2ZpZXNBc3NlcnRpb1ZhbGlkYXRlcykge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGVtZW50VmFsaWRhdGVzID0gdGhpcy52YWxpZGF0ZVN0YXRlbWVudChhc3NpZ25tZW50cywgY29udGV4dCk7XG5cbiAgICAgICAgICAgIGlmIChzdGF0ZW1lbnRWYWxpZGF0ZXMpIHtcbiAgICAgICAgICAgICAgY29uc3QgcmVmZXJlbmNlID0gdGhpcy5nZXRSZWZlcmVuY2UoKSxcbiAgICAgICAgICAgICAgICAgICAgc2F0aXNmaWVzQXNzZXJ0aW9uID0gdGhpcy5nZXRTYXRpc2ZpZXNBc3NlcnRpb24oKSxcbiAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50VW5pZmllcyA9IGxpbWluYWxseSgoY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXRlbWVudFVuaWZpZXMgPSB1bmlmeVN0YXRlbWVudHMuc29tZSgodW5pZnlTdGF0ZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXRlbWVudFVuaWZpZXMgPSB1bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIHJlZmVyZW5jZSwgc2F0aXNmaWVzQXNzZXJ0aW9uLCBjb250ZXh0KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRDb250ZXh0KGNvbnRleHQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRlbWVudFVuaWZpZXM7XG4gICAgICAgICAgICAgICAgICAgIH0sIGNvbnRleHQpO1xuXG4gICAgICAgICAgICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgICAgICAgICAgdmVyaWZpZXMgPSB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZlcmlmaWVzO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIGJlY2F1c2UgaXQgaXMgbm9uc2Vuc2UuYCk7XG4gICAgfVxuXG4gICAgaWYgKHZlcmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmaWVzO1xuICB9XG5cbiAgdmFsaWRhdGVSZWZlcmVuY2UoY29udGV4dCkge1xuICAgIGxldCByZWZlcmVuY2VWYWxpZGF0ZXMgPSB0cnVlO1xuXG4gICAgaWYgKHRoaXMucmVmZXJlbmNlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdGVwU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgICAgcmVmZXJlbmNlU3RyaW5nID0gdGhpcy5yZWZlcmVuY2UuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwJ3MgJyR7cmVmZXJlbmNlU3RyaW5nfScgcmVmZXJlbmNlLi4uIGApO1xuXG4gICAgICByZWZlcmVuY2VWYWxpZGF0ZXMgPSB0aGlzLnJlZmVyZW5jZS52YWxpZGF0ZShjb250ZXh0KTtcblxuICAgICAgaWYgKHJlZmVyZW5jZVZhbGlkYXRlcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwJ3MgJyR7cmVmZXJlbmNlU3RyaW5nfScgcmVmZXJlbmNlLiBgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlVmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVTYXRpc2ZpZXNBc3NlcnRpb24oY29udGV4dCkge1xuICAgIGxldCBzYXRpc2ZpZXNBc3NlcnRpb25WYWxpZGF0ZXMgPSB0cnVlOyAgLy8vXG5cbiAgICBpZiAodGhpcy5zYXRpc2ZpZXNBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAgLy8vXG4gICAgICAgICAgICBzYXRpc2ZpZXNBc3NlcnRpb24gPSB0aGlzLnNhdGlzZmllc0Fzc2VydGlvbi5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAncyAnJHtzYXRpc2ZpZXNBc3NlcnRpb259JyBzYXRpc2ZpZXMgYXNzZXJ0aW9uLi4uIGApO1xuXG4gICAgICBjb25zdCBzdGF0ZWQgPSB0cnVlLFxuICAgICAgICAgICAgYXNzaWdubWVudHMgPSBudWxsO1xuXG4gICAgICBzYXRpc2ZpZXNBc3NlcnRpb25WYWxpZGF0ZXMgPSB0aGlzLnNhdGlzZmllc0Fzc2VydGlvbi52YWxpZGF0ZShhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHNhdGlzZmllc0Fzc2VydGlvblZhbGlkYXRlcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCdzICcke3NhdGlzZmllc0Fzc2VydGlvbn0nIHNhdGlzZmllcyBhc3NlcnRpb24uIGApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzYXRpc2ZpZXNBc3NlcnRpb25WYWxpZGF0ZXM7XG4gIH1cblxuICB1bmlmeVdpdGhTYXRpc2ZpZXNBc3NlcnRpb24oc2F0aXNmaWVzQXNzZXJ0aW9uLCBjb250ZXh0KSB7XG4gICAgbGV0IHVuaWZpZXNXaXRoU2F0aXNmaWVzQXNzZXJ0aW9uID0gZmFsc2U7XG5cbiAgICBjb25zdCBzdGVwU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgc2F0aXNmaWVzQXNzZXJ0aW9uU3RyaW5nID0gc2F0aXNmaWVzQXNzZXJ0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIHdpdGggdGhlICcke3NhdGlzZmllc0Fzc2VydGlvblN0cmluZ30nIHNhdGlzZmllcyBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IHJlZmVyZW5jZSA9IHNhdGlzZmllc0Fzc2VydGlvbi5nZXRSZWZlcmVuY2UoKSxcbiAgICAgICAgICBheGlvbSA9IGNvbnRleHQuZmluZEF4aW9tQnlSZWZlcmVuY2UocmVmZXJlbmNlKTtcblxuICAgIGlmIChheGlvbSAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3RlcCA9IHRoaXMsICAvLy9cbiAgICAgICAgICAgIHN1YnN0aXR1dGlvbnMgPSBbXSxcbiAgICAgICAgICAgIHN0ZXBVbmlmaWVzID0gYXhpb20udW5pZnlTdGVwKHN0ZXAsIHN1YnN0aXR1dGlvbnMsIGNvbnRleHQpO1xuXG4gICAgICBpZiAoc3RlcFVuaWZpZXMpIHtcbiAgICAgICAgY29uc3Qgc3Vic3RpdHV0aW9uc0NvbXBhcmUgPSBzYXRpc2ZpZXNBc3NlcnRpb24uY29tcGFyZVN1YnN0aXR1dGlvbnMoc3Vic3RpdHV0aW9ucywgY29udGV4dCk7XG5cbiAgICAgICAgaWYgKHN1YnN0aXR1dGlvbnNDb21wYXJlKSB7XG4gICAgICAgICAgdW5pZmllc1dpdGhTYXRpc2ZpZXNBc3NlcnRpb24gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHVuaWZpZXNXaXRoU2F0aXNmaWVzQXNzZXJ0aW9uKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHtzYXRpc2ZpZXNBc3NlcnRpb25TdHJpbmd9JyBzYXRpc2ZpZXMgYXNzZXJ0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiB1bmlmaWVzV2l0aFNhdGlzZmllc0Fzc2VydGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTdGVwXCI7XG59KTtcbiJdLCJuYW1lcyI6WyJkZWZpbmUiLCJTdGVwIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJzdGF0ZW1lbnQiLCJyZWZlcmVuY2UiLCJzYXRpc2ZpZXNBc3NlcnRpb24iLCJnZXRSZWZlcmVuY2UiLCJnZXRTYXRpc2ZpZXNBc3NlcnRpb24iLCJpc1NhdGlzZmllZCIsInNhdGlzZmllZCIsImlzUXVhbGlmaWVkIiwicXVhbGlmaWVkIiwiaXNTdGF0ZWQiLCJzdGF0ZWQiLCJjb21wYXJlVGVybUFuZFByb3BlcnR5UmVsYXRpb24iLCJ0ZXJtIiwicHJvcGVydHlSZWxhdGlvbiIsImNvbXBhcmVzVG9UZXJtQW5kUHJvcGVydHlSZWxhdGlvbiIsImdldFN0YXRlbWVudCIsInByb3BlcnR5QXNzZXJ0aW9uIiwicHJvcGVydHlBc3NlcnRpb25Gcm9tU3RhdGVtZW50IiwidmVyaWZ5IiwiYXNzaWdubWVudHMiLCJ2ZXJpZmllcyIsImJyZWFrIiwic3RlcFN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiYXR0ZW1wdCIsInJlZmVyZW5jZVZhbGlkYXRlcyIsInZhbGlkYXRlUmVmZXJlbmNlIiwic2F0aXNmaWVzQXNzZXJ0aW9WYWxpZGF0ZXMiLCJ2YWxpZGF0ZVNhdGlzZmllc0Fzc2VydGlvbiIsInN0YXRlbWVudFZhbGlkYXRlcyIsInZhbGlkYXRlU3RhdGVtZW50Iiwic3RhdGVtZW50VW5pZmllcyIsImxpbWluYWxseSIsInVuaWZ5U3RhdGVtZW50cyIsInNvbWUiLCJ1bmlmeVN0YXRlbWVudCIsInNldENvbnRleHQiLCJkZWJ1ZyIsInJlZmVyZW5jZVN0cmluZyIsInZhbGlkYXRlIiwic2F0aXNmaWVzQXNzZXJ0aW9uVmFsaWRhdGVzIiwidW5pZnlXaXRoU2F0aXNmaWVzQXNzZXJ0aW9uIiwidW5pZmllc1dpdGhTYXRpc2ZpZXNBc3NlcnRpb24iLCJzYXRpc2ZpZXNBc3NlcnRpb25TdHJpbmciLCJheGlvbSIsImZpbmRBeGlvbUJ5UmVmZXJlbmNlIiwic3RlcCIsInN1YnN0aXR1dGlvbnMiLCJzdGVwVW5pZmllcyIsInVuaWZ5U3RlcCIsInN1YnN0aXR1dGlvbnNDb21wYXJlIiwiY29tcGFyZVN1YnN0aXR1dGlvbnMiLCJQcm9vZkFzc2VydGlvbiIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVNBOzs7ZUFBQTs7O3FFQVAyQjt3QkFFSjsyQkFDUzt1QkFDRzt5QkFDWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRS9DLFdBQWVBLElBQUFBLGdCQUFNLHlCQUFDOzthQUFNQyxLQUNkQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxTQUFTLEVBQUVDLFNBQVMsRUFBRUMsa0JBQWtCO2dDQURqRE47O2dCQUV4QixrQkFGd0JBO1lBRWxCQztZQUFTQztZQUFRQztZQUFNQzs7UUFFN0IsTUFBS0Ms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
|
|
466
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L3Byb29mQXNzZXJ0aW9uL3N0ZXAuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBQcm9vZkFzc2VydGlvbiBmcm9tIFwiLi4vcHJvb2ZBc3NlcnRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBhc3luY0F0dGVtcHQsIGFzeW5jTGltaW5hbGx5IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyBwcm9wZXJ0eUFzc2VydGlvbkZyb21TdGF0ZW1lbnQgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N0YXRlbWVudFwiO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgU3RlcCBleHRlbmRzIFByb29mQXNzZXJ0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBzdGF0ZW1lbnQsIHJlZmVyZW5jZSwgc2F0aXNmaWVzQXNzZXJ0aW9uKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBzdGF0ZW1lbnQpO1xuXG4gICAgdGhpcy5yZWZlcmVuY2UgPSByZWZlcmVuY2U7XG4gICAgdGhpcy5zYXRpc2ZpZXNBc3NlcnRpb24gPSBzYXRpc2ZpZXNBc3NlcnRpb247XG4gIH1cblxuICBnZXRSZWZlcmVuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlO1xuICB9XG5cbiAgZ2V0U2F0aXNmaWVzQXNzZXJ0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnNhdGlzZmllc0Fzc2VydGlvbjtcbiAgfVxuXG4gIGlzU2F0aXNmaWVkKCkge1xuICAgIGNvbnN0IHNhdGlzZmllZCA9ICh0aGlzLnNhdGlzZmllc0Fzc2VydGlvbiAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gc2F0aXNmaWVkO1xuICB9XG5cbiAgaXNRdWFsaWZpZWQoKSB7XG4gICAgY29uc3QgcXVhbGlmaWVkID0gKHRoaXMucmVmZXJlbmNlICE9PSBudWxsKTtcblxuICAgIHJldHVybiBxdWFsaWZpZWQ7XG4gIH1cblxuICBpc1N0YXRlZCgpIHtcbiAgICBjb25zdCBxdWFsaWZpZWQgPSB0aGlzLmlzUXVhbGlmaWVkKCksXG4gICAgICAgICAgc3RhdGVkID0gcXVhbGlmaWVkOyAvLy9cblxuICAgIHJldHVybiBzdGF0ZWQ7XG4gIH1cblxuICBjb21wYXJlVGVybUFuZFByb3BlcnR5UmVsYXRpb24odGVybSwgcHJvcGVydHlSZWxhdGlvbiwgY29udGV4dCkge1xuICAgIGxldCBjb21wYXJlc1RvVGVybUFuZFByb3BlcnR5UmVsYXRpb24gPSBmYWxzZTtcblxuICAgIGNvbnN0IHN0YXRlbWVudCA9IHRoaXMuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgcHJvcGVydHlBc3NlcnRpb24gPSBwcm9wZXJ0eUFzc2VydGlvbkZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICAgIGlmIChwcm9wZXJ0eUFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29tcGFyZXNUb1Rlcm1BbmRQcm9wZXJ0eVJlbGF0aW9uID0gcHJvcGVydHlBc3NlcnRpb24uY29tcGFyZVRlcm1BbmRQcm9wZXJ0eVJlbGF0aW9uKHRlcm0sIHByb3BlcnR5UmVsYXRpb24sIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiBjb21wYXJlc1RvVGVybUFuZFByb3BlcnR5UmVsYXRpb247XG4gIH1cblxuICBhc3luYyB2ZXJpZnkoYXNzaWdubWVudHMsIGNvbnRleHQpIHtcbiAgICBsZXQgdmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGF3YWl0IHRoaXMuYnJlYWsoY29udGV4dCk7XG5cbiAgICBjb25zdCBzdGVwU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwLi4uYCk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnQgPSB0aGlzLmdldFN0YXRlbWVudCgpO1xuXG4gICAgaWYgKHN0YXRlbWVudCAhPT0gbnVsbCkge1xuICAgICAgYXN5bmNBdHRlbXB0KGFzeW5jIChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlZmVyZW5jZVZhbGlkYXRlcyA9IHRoaXMudmFsaWRhdGVSZWZlcmVuY2UoY29udGV4dCk7XG5cbiAgICAgICAgaWYgKHJlZmVyZW5jZVZhbGlkYXRlcykge1xuICAgICAgICAgIGNvbnN0IHNhdGlzZmllc0Fzc2VydGlvVmFsaWRhdGVzID0gdGhpcy52YWxpZGF0ZVNhdGlzZmllc0Fzc2VydGlvbihjb250ZXh0KTtcblxuICAgICAgICAgIGlmIChzYXRpc2ZpZXNBc3NlcnRpb1ZhbGlkYXRlcykge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGVtZW50VmFsaWRhdGVzID0gdGhpcy52YWxpZGF0ZVN0YXRlbWVudChhc3NpZ25tZW50cywgY29udGV4dCk7XG5cbiAgICAgICAgICAgIGlmIChzdGF0ZW1lbnRWYWxpZGF0ZXMpIHtcbiAgICAgICAgICAgICAgY29uc3QgcmVmZXJlbmNlID0gdGhpcy5nZXRSZWZlcmVuY2UoKSxcbiAgICAgICAgICAgICAgICAgICAgc2F0aXNmaWVzQXNzZXJ0aW9uID0gdGhpcy5nZXRTYXRpc2ZpZXNBc3NlcnRpb24oKSxcbiAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50VW5pZmllcyA9IGF3YWl0IGFzeW5jTGltaW5hbGx5KGFzeW5jIChjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhdGVtZW50VW5pZmllcyA9IGF3YWl0IGFzeW5jU29tZShhc3luYyAodW5pZnlTdGF0ZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXRlbWVudFVuaWZpZXMgPSBhd2FpdCB1bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIHJlZmVyZW5jZSwgc2F0aXNmaWVzQXNzZXJ0aW9uLCBjb250ZXh0KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRDb250ZXh0KGNvbnRleHQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRlbWVudFVuaWZpZXM7XG4gICAgICAgICAgICAgICAgICAgIH0sIGNvbnRleHQpO1xuXG4gICAgICAgICAgICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgICAgICAgICAgdmVyaWZpZXMgPSB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZlcmlmaWVzO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIGJlY2F1c2UgaXQgaXMgbm9uc2Vuc2UuYCk7XG4gICAgfVxuXG4gICAgaWYgKHZlcmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmaWVzO1xuICB9XG5cbiAgdmFsaWRhdGVSZWZlcmVuY2UoY29udGV4dCkge1xuICAgIGxldCByZWZlcmVuY2VWYWxpZGF0ZXMgPSB0cnVlO1xuXG4gICAgaWYgKHRoaXMucmVmZXJlbmNlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdGVwU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgICAgcmVmZXJlbmNlU3RyaW5nID0gdGhpcy5yZWZlcmVuY2UuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwJ3MgJyR7cmVmZXJlbmNlU3RyaW5nfScgcmVmZXJlbmNlLi4uIGApO1xuXG4gICAgICByZWZlcmVuY2VWYWxpZGF0ZXMgPSB0aGlzLnJlZmVyZW5jZS52YWxpZGF0ZShjb250ZXh0KTtcblxuICAgICAgaWYgKHJlZmVyZW5jZVZhbGlkYXRlcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwJ3MgJyR7cmVmZXJlbmNlU3RyaW5nfScgcmVmZXJlbmNlLiBgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlVmFsaWRhdGVzO1xuICB9XG5cbiAgdmFsaWRhdGVTYXRpc2ZpZXNBc3NlcnRpb24oY29udGV4dCkge1xuICAgIGxldCBzYXRpc2ZpZXNBc3NlcnRpb25WYWxpZGF0ZXMgPSB0cnVlOyAgLy8vXG5cbiAgICBpZiAodGhpcy5zYXRpc2ZpZXNBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAgLy8vXG4gICAgICAgICAgICBzYXRpc2ZpZXNBc3NlcnRpb24gPSB0aGlzLnNhdGlzZmllc0Fzc2VydGlvbi5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAncyAnJHtzYXRpc2ZpZXNBc3NlcnRpb259JyBzYXRpc2ZpZXMgYXNzZXJ0aW9uLi4uIGApO1xuXG4gICAgICBjb25zdCBzdGF0ZWQgPSB0cnVlLFxuICAgICAgICAgICAgYXNzaWdubWVudHMgPSBudWxsO1xuXG4gICAgICBzYXRpc2ZpZXNBc3NlcnRpb25WYWxpZGF0ZXMgPSB0aGlzLnNhdGlzZmllc0Fzc2VydGlvbi52YWxpZGF0ZShhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHNhdGlzZmllc0Fzc2VydGlvblZhbGlkYXRlcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCdzICcke3NhdGlzZmllc0Fzc2VydGlvbn0nIHNhdGlzZmllcyBhc3NlcnRpb24uIGApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzYXRpc2ZpZXNBc3NlcnRpb25WYWxpZGF0ZXM7XG4gIH1cblxuICB1bmlmeVdpdGhTYXRpc2ZpZXNBc3NlcnRpb24oc2F0aXNmaWVzQXNzZXJ0aW9uLCBjb250ZXh0KSB7XG4gICAgbGV0IHVuaWZpZXNXaXRoU2F0aXNmaWVzQXNzZXJ0aW9uID0gZmFsc2U7XG5cbiAgICBjb25zdCBzdGVwU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgc2F0aXNmaWVzQXNzZXJ0aW9uU3RyaW5nID0gc2F0aXNmaWVzQXNzZXJ0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIHdpdGggdGhlICcke3NhdGlzZmllc0Fzc2VydGlvblN0cmluZ30nIHNhdGlzZmllcyBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IHJlZmVyZW5jZSA9IHNhdGlzZmllc0Fzc2VydGlvbi5nZXRSZWZlcmVuY2UoKSxcbiAgICAgICAgICBheGlvbSA9IGNvbnRleHQuZmluZEF4aW9tQnlSZWZlcmVuY2UocmVmZXJlbmNlKTtcblxuICAgIGlmIChheGlvbSAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3RlcCA9IHRoaXMsICAvLy9cbiAgICAgICAgICAgIHN1YnN0aXR1dGlvbnMgPSBbXSxcbiAgICAgICAgICAgIHN0ZXBVbmlmaWVzID0gYXhpb20udW5pZnlTdGVwKHN0ZXAsIHN1YnN0aXR1dGlvbnMsIGNvbnRleHQpO1xuXG4gICAgICBpZiAoc3RlcFVuaWZpZXMpIHtcbiAgICAgICAgY29uc3Qgc3Vic3RpdHV0aW9uc0NvbXBhcmUgPSBzYXRpc2ZpZXNBc3NlcnRpb24uY29tcGFyZVN1YnN0aXR1dGlvbnMoc3Vic3RpdHV0aW9ucywgY29udGV4dCk7XG5cbiAgICAgICAgaWYgKHN1YnN0aXR1dGlvbnNDb21wYXJlKSB7XG4gICAgICAgICAgdW5pZmllc1dpdGhTYXRpc2ZpZXNBc3NlcnRpb24gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHVuaWZpZXNXaXRoU2F0aXNmaWVzQXNzZXJ0aW9uKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHtzYXRpc2ZpZXNBc3NlcnRpb25TdHJpbmd9JyBzYXRpc2ZpZXMgYXNzZXJ0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiB1bmlmaWVzV2l0aFNhdGlzZmllc0Fzc2VydGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTdGVwXCI7XG59KTtcbiJdLCJuYW1lcyI6WyJkZWZpbmUiLCJTdGVwIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJzdGF0ZW1lbnQiLCJyZWZlcmVuY2UiLCJzYXRpc2ZpZXNBc3NlcnRpb24iLCJnZXRSZWZlcmVuY2UiLCJnZXRTYXRpc2ZpZXNBc3NlcnRpb24iLCJpc1NhdGlzZmllZCIsInNhdGlzZmllZCIsImlzUXVhbGlmaWVkIiwicXVhbGlmaWVkIiwiaXNTdGF0ZWQiLCJzdGF0ZWQiLCJjb21wYXJlVGVybUFuZFByb3BlcnR5UmVsYXRpb24iLCJ0ZXJtIiwicHJvcGVydHlSZWxhdGlvbiIsImNvbXBhcmVzVG9UZXJtQW5kUHJvcGVydHlSZWxhdGlvbiIsImdldFN0YXRlbWVudCIsInByb3BlcnR5QXNzZXJ0aW9uIiwicHJvcGVydHlBc3NlcnRpb25Gcm9tU3RhdGVtZW50IiwidmVyaWZ5IiwiYXNzaWdubWVudHMiLCJ2ZXJpZmllcyIsInN0ZXBTdHJpbmciLCJicmVhayIsImdldFN0cmluZyIsInRyYWNlIiwiYXN5bmNBdHRlbXB0IiwicmVmZXJlbmNlVmFsaWRhdGVzIiwic2F0aXNmaWVzQXNzZXJ0aW9WYWxpZGF0ZXMiLCJzdGF0ZW1lbnRWYWxpZGF0ZXMiLCJzdGF0ZW1lbnRVbmlmaWVzIiwidmFsaWRhdGVSZWZlcmVuY2UiLCJ2YWxpZGF0ZVNhdGlzZmllc0Fzc2VydGlvbiIsInZhbGlkYXRlU3RhdGVtZW50IiwiYXN5bmNMaW1pbmFsbHkiLCJhc3luY1NvbWUiLCJ1bmlmeVN0YXRlbWVudCIsInNldENvbnRleHQiLCJkZWJ1ZyIsInJlZmVyZW5jZVN0cmluZyIsInZhbGlkYXRlIiwic2F0aXNmaWVzQXNzZXJ0aW9uVmFsaWRhdGVzIiwidW5pZnlXaXRoU2F0aXNmaWVzQXNzZXJ0aW9uIiwidW5pZmllc1dpdGhTYXRpc2ZpZXNBc3NlcnRpb24iLCJzYXRpc2ZpZXNBc3NlcnRpb25TdHJpbmciLCJheGlvbSIsImZpbmRBeGlvbUJ5UmVmZXJlbmNlIiwic3RlcCIsInN1YnN0aXR1dGlvbnMiLCJzdGVwVW5pZmllcyIsInVuaWZ5U3RlcCIsInN1YnN0aXR1dGlvbnNDb21wYXJlIiwiY29tcGFyZVN1YnN0aXR1dGlvbnMiLCJQcm9vZkFzc2VydGlvbiIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVFBOzs7ZUFBQTs7O3FFQU4yQjt3QkFFSjt1QkFDc0I7eUJBQ0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUUvQyxXQUFlQSxJQUFBQSxnQkFBTSx5QkFBQzs7YUFBTUMsS0FDZEMsT0FBTyxFQUFFQyxNQUFNLEVBQUVD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
|
|
@@ -259,44 +259,52 @@ var _default = (0, _elements.define)((_Supposition = /*#__PURE__*/ function(Proo
|
|
|
259
259
|
return _async_to_generator(function() {
|
|
260
260
|
var _this, verifies, suppositionString, statement, procedureCall;
|
|
261
261
|
return _ts_generator(this, function(_state) {
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
262
|
+
switch(_state.label){
|
|
263
|
+
case 0:
|
|
264
|
+
_this = this;
|
|
265
|
+
verifies = false;
|
|
266
|
+
return [
|
|
267
|
+
4,
|
|
268
|
+
this.break(context)
|
|
269
|
+
];
|
|
270
|
+
case 1:
|
|
271
|
+
_state.sent();
|
|
272
|
+
suppositionString = this.getString(); ///
|
|
273
|
+
context.trace("Verifying the '".concat(suppositionString, "' supposition..."));
|
|
274
|
+
statement = this.getStatement(), procedureCall = this.getProcedureCall();
|
|
275
|
+
if (statement !== null || procedureCall !== null) {
|
|
276
|
+
(0, _context.attempt)(function(context) {
|
|
277
|
+
if (statement !== null) {
|
|
278
|
+
var assignments = [], statementValidates = _this.validateStatement(assignments, context);
|
|
279
|
+
if (statementValidates) {
|
|
280
|
+
var assignmentsAssigned = (0, _assign.default)(assignments, context);
|
|
281
|
+
if (assignmentsAssigned) {
|
|
282
|
+
var subproofOrProofAssertion = _this; ///
|
|
283
|
+
context.addSubproofOrProofAssertion(subproofOrProofAssertion);
|
|
284
|
+
_this.setContext(context);
|
|
285
|
+
verifies = true;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
279
288
|
}
|
|
280
|
-
|
|
289
|
+
if (procedureCall !== null) {
|
|
290
|
+
var procedureCallValidates = procedureCall.validate(context);
|
|
291
|
+
if (procedureCallValidates) {
|
|
292
|
+
_this.setContext(context);
|
|
293
|
+
verifies = true;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
}, context);
|
|
297
|
+
} else {
|
|
298
|
+
context.debug("Unable to verify the '".concat(suppositionString, "' supposition because it is nonsense."));
|
|
281
299
|
}
|
|
282
|
-
if (
|
|
283
|
-
|
|
284
|
-
if (procedureCallValidates) {
|
|
285
|
-
_this.setContext(context);
|
|
286
|
-
verifies = true;
|
|
287
|
-
}
|
|
300
|
+
if (verifies) {
|
|
301
|
+
context.debug("...verified the '".concat(suppositionString, "' supposition."));
|
|
288
302
|
}
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
if (verifies) {
|
|
294
|
-
context.debug("...verified the '".concat(suppositionString, "' supposition."));
|
|
303
|
+
return [
|
|
304
|
+
2,
|
|
305
|
+
verifies
|
|
306
|
+
];
|
|
295
307
|
}
|
|
296
|
-
return [
|
|
297
|
-
2,
|
|
298
|
-
verifies
|
|
299
|
-
];
|
|
300
308
|
});
|
|
301
309
|
}).call(this);
|
|
302
310
|
}
|
|
@@ -450,4 +458,4 @@ var _default = (0, _elements.define)((_Supposition = /*#__PURE__*/ function(Proo
|
|
|
450
458
|
return Supposition;
|
|
451
459
|
}(_proofAssertion.default), _define_property(_Supposition, "name", "Supposition"), _Supposition));
|
|
452
460
|
|
|
453
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L3Byb29mQXNzZXJ0aW9uL3N1cHBvc2l0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgUHJvb2ZBc3NlcnRpb24gZnJvbSBcIi4uL3Byb29mQXNzZXJ0aW9uXCI7XG5pbXBvcnQgYXNzaWduQXNzaWdubWVudHMgZnJvbSBcIi4uLy4uL3Byb2Nlc3MvYXNzaWduXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgYXR0ZW1wdCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgc3RhdGVtZW50RnJvbUpTT04sIHByb2NlZHVyZUNhbGxGcm9tSlNPTiwgc3RhdGVtZW50VG9TdGF0ZW1lbnRKU09OLCBwcm9jZWR1cmVDYWxsVG9Qcm9jZWR1cmVDYWxsSlNPTiB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvanNvblwiO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgU3VwcG9zaXRpb24gZXh0ZW5kcyBQcm9vZkFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgc3RhdGVtZW50LCBwcm9jZWR1cmVDYWxsKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBzdGF0ZW1lbnQpO1xuXG4gICAgdGhpcy5wcm9jZWR1cmVDYWxsID0gcHJvY2VkdXJlQ2FsbDtcbiAgfVxuXG4gIGdldFByb2NlZHVyZUNhbGwoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvY2VkdXJlQ2FsbDtcbiAgfVxuXG4gIGlzU3RhdGVkKCkge1xuICAgIGNvbnN0IHN0YXRlZCA9IHRydWU7IC8vL1xuXG4gICAgcmV0dXJuIHN0YXRlZDtcbiAgfVxuXG4gIGFzeW5jIHZlcmlmeShjb250ZXh0KSB7XG4gICAgbGV0IHZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICB0aGlzLmJyZWFrKGNvbnRleHQpO1xuXG4gICAgY29uc3Qgc3VwcG9zaXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi4uLmApO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0gdGhpcy5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICBwcm9jZWR1cmVDYWxsID0gdGhpcy5nZXRQcm9jZWR1cmVDYWxsKCk7XG5cbiAgICBpZiAoKHN0YXRlbWVudCAhPT0gbnVsbCkgfHwgKHByb2NlZHVyZUNhbGwgIT09IG51bGwpKSB7XG4gICAgICBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICAgIGlmIChzdGF0ZW1lbnQgIT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCBhc3NpZ25tZW50cyA9IFtdLFxuICAgICAgICAgICAgICAgIHN0YXRlbWVudFZhbGlkYXRlcyA9IHRoaXMudmFsaWRhdGVTdGF0ZW1lbnQoYXNzaWdubWVudHMsIGNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKHN0YXRlbWVudFZhbGlkYXRlcykge1xuICAgICAgICAgICAgY29uc3QgYXNzaWdubWVudHNBc3NpZ25lZCA9IGFzc2lnbkFzc2lnbm1lbnRzKGFzc2lnbm1lbnRzLCBjb250ZXh0KTtcblxuICAgICAgICAgICAgaWYgKGFzc2lnbm1lbnRzQXNzaWduZWQpIHtcbiAgICAgICAgICAgICAgY29uc3Qgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uID0gdGhpczsgIC8vL1xuXG4gICAgICAgICAgICAgIGNvbnRleHQuYWRkU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uKHN1YnByb29mT3JQcm9vZkFzc2VydGlvbik7XG5cbiAgICAgICAgICAgICAgdGhpcy5zZXRDb250ZXh0KGNvbnRleHQpO1xuXG4gICAgICAgICAgICAgIHZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJvY2VkdXJlQ2FsbCAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHByb2NlZHVyZUNhbGxWYWxpZGF0ZXMgPSBwcm9jZWR1cmVDYWxsLnZhbGlkYXRlKGNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKHByb2NlZHVyZUNhbGxWYWxpZGF0ZXMpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0Q29udGV4dChjb250ZXh0KTtcblxuICAgICAgICAgICAgdmVyaWZpZXMgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24gYmVjYXVzZSBpdCBpcyBub25zZW5zZS5gKTtcbiAgICB9XG5cbiAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllcztcbiAgfVxuXG4gIHVuaWZ5SW5kZXBlbmRlbnRseShzdWJzdGl0dXRpb25zLCBjb250ZXh0KSB7XG4gICAgbGV0IHVuaWZpZXNJbmRlcGVuZGVudGx5ID0gZmFsc2U7XG5cbiAgICBjb25zdCBzdXBwb3NpdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24gaW5kZXBlbmRlbnRseS4uLmApO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0gdGhpcy5nZXRTdGF0ZW1lbnQoKTtcblxuICAgIGlmIChzdGF0ZW1lbnQgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudFVuaWZpZXNJbmRlcGVuZGVudGx5ID0gc3RhdGVtZW50LnVuaWZ5SW5kZXBlbmRlbnRseShjb250ZXh0KTtcblxuICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXNJbmRlcGVuZGVudGx5KSB7XG4gICAgICAgIHVuaWZpZXNJbmRlcGVuZGVudGx5ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5wcm9jZWR1cmVDYWxsICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBwcm9jZWR1cmVDYWxsUmVzb2x2ZWRJbmRlcGVuZGVudGx5ID0gdGhpcy5wcm9jZWR1cmVDYWxsLnVuaWZ5SW5kZXBlbmRlbnRseShjb250ZXh0KTtcblxuICAgICAgaWYgKHByb2NlZHVyZUNhbGxSZXNvbHZlZEluZGVwZW5kZW50bHkpIHtcbiAgICAgICAgdW5pZmllc0luZGVwZW5kZW50bHkgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh1bmlmaWVzSW5kZXBlbmRlbnRseSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbiBpbmRlcGVuZGVubHkuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuaWZpZXNJbmRlcGVuZGVudGx5O1xuICB9XG5cbiAgdW5pZnlTdWJwcm9vZk9yUHJvb3NBc3NlcnRpb24oc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uLCBzdWJzdGl0dXRpb25zLCBjb250ZXh0KSB7XG4gICAgbGV0IHN1YnByb29mT3JQcm9vZkFzc2VydGlvblVuaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHN1YnByb29mT3JQcm9vZkFzc2VydGlvblByb29mQXNzZXJ0aW9uID0gc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uLmlzUHJvb2ZBc3NlcnRpb24oKSxcbiAgICAgICAgICBzdWJwcm9vZiA9IHN1YnByb29mT3JQcm9vZkFzc2VydGlvblByb29mQXNzZXJ0aW9uID9cbiAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24sXG4gICAgICAgICAgcHJvb2ZBc3NlcnRpb24gPSBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25Qcm9vZkFzc2VydGlvbiA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnByb29mT3JQcm9vZkFzc2VydGlvbiA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICAgIHN1YnN0aXR1dGlvbnMuc25hcHNob3QoY29udGV4dCk7XG5cbiAgICBpZiAoc3VicHJvb2YgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN1YnByb29mVW5pZmllcyA9IHRoaXMudW5pZnlTdWJwcm9vZihzdWJwcm9vZiwgc3Vic3RpdHV0aW9ucywgY29udGV4dCk7XG5cbiAgICAgIGlmIChzdWJwcm9vZlVuaWZpZXMpIHtcbiAgICAgICAgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uVW5pZmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHByb29mQXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBwcm9vZkFzc2VydGlvblVuaWZpZXMgPSB0aGlzLnVuaWZ5UHJvb2ZBc3NlcnRpb24ocHJvb2ZBc3NlcnRpb24sIHN1YnN0aXR1dGlvbnMsIGNvbnRleHQpO1xuXG4gICAgICBpZiAocHJvb2ZBc3NlcnRpb25VbmlmaWVzKSB7XG4gICAgICAgIHN1YnByb29mT3JQcm9vZkFzc2VydGlvblVuaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25VbmlmaWVzKSB7XG4gICAgICBzdWJzdGl0dXRpb25zLnJlc29sdmUoY29udGV4dCk7XG4gICAgfVxuXG4gICAgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uVW5pZmllcyA/XG4gICAgICBzdWJzdGl0dXRpb25zLmNvbnRpbnVlKGNvbnRleHQpIDpcbiAgICAgICAgc3Vic3RpdHV0aW9ucy5yb2xsYmFjayhjb250ZXh0KTtcblxuICAgIHJldHVybiBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25VbmlmaWVzO1xuICB9XG5cbiAgdW5pZnlQcm9vZkFzc2VydGlvbihwcm9vZkFzc2VydGlvbiwgc3Vic3RpdHV0aW9ucywgY29udGV4dCkge1xuICAgIGxldCBwcm9vZkFzc2VydGlvblVuaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHN1cHBvc2l0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgcHJvb2ZBc3NlcnRpb25TdHJpbmcgPSBwcm9vZkFzc2VydGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtwcm9vZkFzc2VydGlvblN0cmluZ30nIHByb29mIGFzc2VydGlvbiB3aXRoIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0OyAgLy8vXG5cbiAgICBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb25zdCBnZW5lcmFsQ29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgZGVidWdnZXJcblxuICAgIC8vIGNvbnN0IHByb29mQXNzZXJ0aW9uQ29udGV4dCA9IHByb29mQXNzZXJ0aW9uLmdldENvbnRleHQoKSxcbiAgICAvLyAgICAgICBzdGF0ZW1lbnRVbmlmaWVzID0gc3ludGhldGljYWxseSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgLy8gICAgICAgICBjb25zdCBzdGF0ZW1lbnQgPSBwcm9vZkFzc2VydGlvbi5nZXRTdGF0ZW1lbnQoKSxcbiAgICAvLyAgICAgICAgICAgICAgIHN0YXRlbWVudFVuaWZpZXMgPSB0aGlzLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG4gICAgLy9cbiAgICAvLyAgICAgICAgIHJldHVybiBzdGF0ZW1lbnRVbmlmaWVzO1xuICAgIC8vICAgICAgIH0sIHNwZWNpZmljQ29udGV4dCwgcHJvb2ZBc3NlcnRpb25Db250ZXh0KTtcblxuICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICBwcm9vZkFzc2VydGlvblVuaWZpZXMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChwcm9vZkFzc2VydGlvblVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3Byb29mQXNzZXJ0aW9uU3RyaW5nfScgcHJvb2YgYXNzZXJ0aW9uIHdpdGggdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb29mQXNzZXJ0aW9uVW5pZmllcztcbiAgfVxuXG4gIHVuaWZ5U3VicHJvb2Yoc3VicHJvb2YsIHN1YnN0aXR1dGlvbnMsIGNvbnRleHQpIHtcbiAgICBsZXQgc3VicHJvb2ZVbmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBzdWJwcm9vZlN0cmluZyA9IHN1YnByb29mLmdldFN0cmluZygpLFxuICAgICAgICAgIHN1cHBvc2l0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3VicHJvb2ZTdHJpbmd9JyBzdWJwcm9vZiB3aXRoIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0OyAgLy8vXG5cbiAgICBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb25zdCBnZW5lcmFsQ29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0gdGhpcy5nZXRTdGF0ZW1lbnQoKTtcblxuICAgIGlmIChzdGF0ZW1lbnQgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICAgICAgc3VicHJvb2ZBc3NlcnRpb25Ob2RlID0gc3RhdGVtZW50Tm9kZS5nZXRTdWJwcm9vZkFzc2VydGlvbk5vZGUoKTtcblxuICAgICAgaWYgKHN1YnByb29mQXNzZXJ0aW9uTm9kZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQsIC8vL1xuICAgICAgICAgICAgICBhc3NlcnRpb25Ob2RlID0gc3VicHJvb2ZBc3NlcnRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICAgIGFzc2VydGlvbiA9IGNvbnRleHQuZmluZEFzc2VydGlvbkJ5QXNzZXJ0aW9uTm9kZShhc3NlcnRpb25Ob2RlKVxuXG4gICAgICAgIGlmIChhc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCBzdWJwcm9vZkFzc2VydGlvbiA9IGFzc2VydGlvbjsgIC8vL1xuXG4gICAgICAgICAgc3VicHJvb2ZVbmlmaWVzID0gc3VicHJvb2ZBc3NlcnRpb24udW5pZnlTdWJwcm9vZihzdWJwcm9vZiwgc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3VicHJvb2ZVbmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdWJwcm9vZlN0cmluZ30nIHN1YnByb29mIHdpdGggdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnByb29mVW5pZmllcztcbiAgfVxuXG4gIHVuaWZ5U3VwcG9zaXRpb24oc3VwcG9zaXRpb24sIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgICBsZXQgc3VwcG9zaXRpb25VbmlmaWVzO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIHNwZWNpZmljU3VwcG9zaXRpb24gPSBzdXBwb3NpdGlvbiwgIC8vL1xuICAgICAgICAgIGdlbmVyYWxTdXBwb3NpdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIHNwZWNpZmljU3VwcG9zaXRpb25TdHJpbmcgPSBzcGVjaWZpY1N1cHBvc2l0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3NwZWNpZmljU3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbiB3aXRoIHRoZSAnJHtnZW5lcmFsU3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi4uLmApO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0gc3BlY2lmaWNTdXBwb3NpdGlvbi5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICBzdGF0ZW1lbnRVbmlmaWVzID0gdGhpcy51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgc3VwcG9zaXRpb25VbmlmaWVzID0gc3RhdGVtZW50VW5pZmllczsgIC8vL1xuXG4gICAgaWYgKHN1cHBvc2l0aW9uVW5pZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3BlY2lmaWNTdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uIHdpdGggdGhlICcke2dlbmVyYWxTdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBwb3NpdGlvblVuaWZpZXM7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgcHJvY2VkdXJlQ2FsbEpTT04gPSBwcm9jZWR1cmVDYWxsVG9Qcm9jZWR1cmVDYWxsSlNPTih0aGlzLnByb2NlZHVyZUNhbGwpLFxuICAgICAgICAgIHN0YXRlbWVudEpTT04gPSBzdGF0ZW1lbnRUb1N0YXRlbWVudEpTT04odGhpcy5zdGF0ZW1lbnQpLFxuICAgICAgICAgIHByb2NlZHVyZUNhbGwgPSBwcm9jZWR1cmVDYWxsSlNPTiwgIC8vL1xuICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudEpTT04sICAvLy9cbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgc3RhdGVtZW50LFxuICAgICAgICAgICAgcHJvY2VkdXJlQ2FsbFxuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTdXBwb3NpdGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgcHJvY2VkdXJlQ2FsbCA9IHByb2NlZHVyZUNhbGxGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIGxldCBzdHJpbmc7XG5cbiAgICBpZiAoc3RhdGVtZW50ICE9PSBudWxsKSB7XG4gICAgICBzdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG4gICAgfVxuXG4gICAgaWYgKHByb2NlZHVyZUNhbGwgIT09IG51bGwpIHtcbiAgICAgIHN0cmluZyA9IHByb2NlZHVyZUNhbGwuZ2V0U3RyaW5nKCk7XG4gICAgfVxuXG4gICAgY29uc3Qgbm9kZSA9IG51bGw7XG5cbiAgICBjb25zdCBzdXBwb3NpdGlvbiA9IG5ldyBTdXBwb3NpdGlvbihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIHN0YXRlbWVudCwgcHJvY2VkdXJlQ2FsbCk7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb247XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImRlZmluZSIsIlN1cHBvc2l0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJzdGF0ZW1lbnQiLCJwcm9jZWR1cmVDYWxsIiwiZ2V0UHJvY2VkdXJlQ2FsbCIsImlzU3RhdGVkIiwic3RhdGVkIiwidmVyaWZ5IiwidmVyaWZpZXMiLCJzdXBwb3NpdGlvblN0cmluZyIsImJyZWFrIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJnZXRTdGF0ZW1lbnQiLCJhdHRlbXB0IiwiYXNzaWdubWVudHMiLCJzdGF0ZW1lbnRWYWxpZGF0ZXMiLCJ2YWxpZGF0ZVN0YXRlbWVudCIsImFzc2lnbm1lbnRzQXNzaWduZWQiLCJhc3NpZ25Bc3NpZ25tZW50cyIsInN1YnByb29mT3JQcm9vZkFzc2VydGlvbiIsImFkZFN1YnByb29mT3JQcm9vZkFzc2VydGlvbiIsInNldENvbnRleHQiLCJwcm9jZWR1cmVDYWxsVmFsaWRhdGVzIiwidmFsaWRhdGUiLCJkZWJ1ZyIsInVuaWZ5SW5kZXBlbmRlbnRseSIsInN1YnN0aXR1dGlvbnMiLCJ1bmlmaWVzSW5kZXBlbmRlbnRseSIsInN0YXRlbWVudFVuaWZpZXNJbmRlcGVuZGVudGx5IiwicHJvY2VkdXJlQ2FsbFJlc29sdmVkSW5kZXBlbmRlbnRseSIsInVuaWZ5U3VicHJvb2ZPclByb29zQXNzZXJ0aW9uIiwic3VicHJvb2ZPclByb29mQXNzZXJ0aW9uVW5pZmllcyIsInN1YnByb29mT3JQcm9vZkFzc2VydGlvblByb29mQXNzZXJ0aW9uIiwiaXNQcm9vZkFzc2VydGlvbiIsInN1YnByb29mIiwicHJvb2ZBc3NlcnRpb24iLCJzbmFwc2hvdCIsInN1YnByb29mVW5pZmllcyIsInVuaWZ5U3VicHJvb2YiLCJwcm9vZkFzc2VydGlvblVuaWZpZXMiLCJ1bmlmeVByb29mQXNzZXJ0aW9uIiwicmVzb2x2ZSIsImNvbnRpbnVlIiwicm9sbGJhY2siLCJwcm9vZkFzc2VydGlvblN0cmluZyIsInNwZWNpZmljQ29udGV4dCIsImdldENvbnRleHQiLCJnZW5lcmFsQ29udGV4dCIsInN0YXRlbWVudFVuaWZpZXMiLCJzdWJwcm9vZlN0cmluZyIsInN0YXRlbWVudE5vZGUiLCJnZXROb2RlIiwic3VicHJvb2ZBc3NlcnRpb25Ob2RlIiwiZ2V0U3VicHJvb2ZBc3NlcnRpb25Ob2RlIiwiYXNzZXJ0aW9uTm9kZSIsImFzc2VydGlvbiIsImZpbmRBc3NlcnRpb25CeUFzc2VydGlvbk5vZGUiLCJzdWJwcm9vZkFzc2VydGlvbiIsInVuaWZ5U3VwcG9zaXRpb24iLCJzdXBwb3NpdGlvbiIsInN1cHBvc2l0aW9uVW5pZmllcyIsInNwZWNpZmljU3VwcG9zaXRpb24iLCJnZW5lcmFsU3VwcG9zaXRpb25TdHJpbmciLCJzcGVjaWZpY1N1cHBvc2l0aW9uU3RyaW5nIiwidW5pZnlTdGF0ZW1lbnQiLCJ0b0pTT04iLCJwcm9jZWR1cmVDYWxsSlNPTiIsInByb2NlZHVyZUNhbGxUb1Byb2NlZHVyZUNhbGxKU09OIiwic3RhdGVtZW50SlNPTiIsInN0YXRlbWVudFRvU3RhdGVtZW50SlNPTiIsImpzb24iLCJmcm9tSlNPTiIsInN0YXRlbWVudEZyb21KU09OIiwicHJvY2VkdXJlQ2FsbEZyb21KU09OIiwiUHJvb2ZBc3NlcnRpb24iLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFTQTs7O2VBQUE7OztxRUFQMkI7NkRBQ0c7d0JBRVA7dUJBQ0M7b0JBQzZGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFckgsV0FBZUEsSUFBQUEsZ0JBQU0sZ0NBQUM7O2FBQU1DLFlBQ2RDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFNBQVMsRUFBRUMsYUFBYTtn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
|
|
461
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L3Byb29mQXNzZXJ0aW9uL3N1cHBvc2l0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgUHJvb2ZBc3NlcnRpb24gZnJvbSBcIi4uL3Byb29mQXNzZXJ0aW9uXCI7XG5pbXBvcnQgYXNzaWduQXNzaWdubWVudHMgZnJvbSBcIi4uLy4uL3Byb2Nlc3MvYXNzaWduXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgYXR0ZW1wdCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgc3RhdGVtZW50RnJvbUpTT04sIHByb2NlZHVyZUNhbGxGcm9tSlNPTiwgc3RhdGVtZW50VG9TdGF0ZW1lbnRKU09OLCBwcm9jZWR1cmVDYWxsVG9Qcm9jZWR1cmVDYWxsSlNPTiB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvanNvblwiO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgU3VwcG9zaXRpb24gZXh0ZW5kcyBQcm9vZkFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgc3RhdGVtZW50LCBwcm9jZWR1cmVDYWxsKSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBzdGF0ZW1lbnQpO1xuXG4gICAgdGhpcy5wcm9jZWR1cmVDYWxsID0gcHJvY2VkdXJlQ2FsbDtcbiAgfVxuXG4gIGdldFByb2NlZHVyZUNhbGwoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvY2VkdXJlQ2FsbDtcbiAgfVxuXG4gIGlzU3RhdGVkKCkge1xuICAgIGNvbnN0IHN0YXRlZCA9IHRydWU7IC8vL1xuXG4gICAgcmV0dXJuIHN0YXRlZDtcbiAgfVxuXG4gIGFzeW5jIHZlcmlmeShjb250ZXh0KSB7XG4gICAgbGV0IHZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBhd2FpdCB0aGlzLmJyZWFrKGNvbnRleHQpO1xuXG4gICAgY29uc3Qgc3VwcG9zaXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi4uLmApO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0gdGhpcy5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICBwcm9jZWR1cmVDYWxsID0gdGhpcy5nZXRQcm9jZWR1cmVDYWxsKCk7XG5cbiAgICBpZiAoKHN0YXRlbWVudCAhPT0gbnVsbCkgfHwgKHByb2NlZHVyZUNhbGwgIT09IG51bGwpKSB7XG4gICAgICBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICAgIGlmIChzdGF0ZW1lbnQgIT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCBhc3NpZ25tZW50cyA9IFtdLFxuICAgICAgICAgICAgICAgIHN0YXRlbWVudFZhbGlkYXRlcyA9IHRoaXMudmFsaWRhdGVTdGF0ZW1lbnQoYXNzaWdubWVudHMsIGNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKHN0YXRlbWVudFZhbGlkYXRlcykge1xuICAgICAgICAgICAgY29uc3QgYXNzaWdubWVudHNBc3NpZ25lZCA9IGFzc2lnbkFzc2lnbm1lbnRzKGFzc2lnbm1lbnRzLCBjb250ZXh0KTtcblxuICAgICAgICAgICAgaWYgKGFzc2lnbm1lbnRzQXNzaWduZWQpIHtcbiAgICAgICAgICAgICAgY29uc3Qgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uID0gdGhpczsgIC8vL1xuXG4gICAgICAgICAgICAgIGNvbnRleHQuYWRkU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uKHN1YnByb29mT3JQcm9vZkFzc2VydGlvbik7XG5cbiAgICAgICAgICAgICAgdGhpcy5zZXRDb250ZXh0KGNvbnRleHQpO1xuXG4gICAgICAgICAgICAgIHZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJvY2VkdXJlQ2FsbCAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHByb2NlZHVyZUNhbGxWYWxpZGF0ZXMgPSBwcm9jZWR1cmVDYWxsLnZhbGlkYXRlKGNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKHByb2NlZHVyZUNhbGxWYWxpZGF0ZXMpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0Q29udGV4dChjb250ZXh0KTtcblxuICAgICAgICAgICAgdmVyaWZpZXMgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYFVuYWJsZSB0byB2ZXJpZnkgdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24gYmVjYXVzZSBpdCBpcyBub25zZW5zZS5gKTtcbiAgICB9XG5cbiAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllcztcbiAgfVxuXG4gIHVuaWZ5SW5kZXBlbmRlbnRseShzdWJzdGl0dXRpb25zLCBjb250ZXh0KSB7XG4gICAgbGV0IHVuaWZpZXNJbmRlcGVuZGVudGx5ID0gZmFsc2U7XG5cbiAgICBjb25zdCBzdXBwb3NpdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24gaW5kZXBlbmRlbnRseS4uLmApO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0gdGhpcy5nZXRTdGF0ZW1lbnQoKTtcblxuICAgIGlmIChzdGF0ZW1lbnQgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudFVuaWZpZXNJbmRlcGVuZGVudGx5ID0gc3RhdGVtZW50LnVuaWZ5SW5kZXBlbmRlbnRseShjb250ZXh0KTtcblxuICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXNJbmRlcGVuZGVudGx5KSB7XG4gICAgICAgIHVuaWZpZXNJbmRlcGVuZGVudGx5ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5wcm9jZWR1cmVDYWxsICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBwcm9jZWR1cmVDYWxsUmVzb2x2ZWRJbmRlcGVuZGVudGx5ID0gdGhpcy5wcm9jZWR1cmVDYWxsLnVuaWZ5SW5kZXBlbmRlbnRseShjb250ZXh0KTtcblxuICAgICAgaWYgKHByb2NlZHVyZUNhbGxSZXNvbHZlZEluZGVwZW5kZW50bHkpIHtcbiAgICAgICAgdW5pZmllc0luZGVwZW5kZW50bHkgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh1bmlmaWVzSW5kZXBlbmRlbnRseSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbiBpbmRlcGVuZGVubHkuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuaWZpZXNJbmRlcGVuZGVudGx5O1xuICB9XG5cbiAgdW5pZnlTdWJwcm9vZk9yUHJvb3NBc3NlcnRpb24oc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uLCBzdWJzdGl0dXRpb25zLCBjb250ZXh0KSB7XG4gICAgbGV0IHN1YnByb29mT3JQcm9vZkFzc2VydGlvblVuaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHN1YnByb29mT3JQcm9vZkFzc2VydGlvblByb29mQXNzZXJ0aW9uID0gc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uLmlzUHJvb2ZBc3NlcnRpb24oKSxcbiAgICAgICAgICBzdWJwcm9vZiA9IHN1YnByb29mT3JQcm9vZkFzc2VydGlvblByb29mQXNzZXJ0aW9uID9cbiAgICAgICAgICAgICAgICAgICAgICAgIG51bGwgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24sXG4gICAgICAgICAgcHJvb2ZBc3NlcnRpb24gPSBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25Qcm9vZkFzc2VydGlvbiA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnByb29mT3JQcm9vZkFzc2VydGlvbiA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICAgIHN1YnN0aXR1dGlvbnMuc25hcHNob3QoY29udGV4dCk7XG5cbiAgICBpZiAoc3VicHJvb2YgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN1YnByb29mVW5pZmllcyA9IHRoaXMudW5pZnlTdWJwcm9vZihzdWJwcm9vZiwgc3Vic3RpdHV0aW9ucywgY29udGV4dCk7XG5cbiAgICAgIGlmIChzdWJwcm9vZlVuaWZpZXMpIHtcbiAgICAgICAgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uVW5pZmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHByb29mQXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBwcm9vZkFzc2VydGlvblVuaWZpZXMgPSB0aGlzLnVuaWZ5UHJvb2ZBc3NlcnRpb24ocHJvb2ZBc3NlcnRpb24sIHN1YnN0aXR1dGlvbnMsIGNvbnRleHQpO1xuXG4gICAgICBpZiAocHJvb2ZBc3NlcnRpb25VbmlmaWVzKSB7XG4gICAgICAgIHN1YnByb29mT3JQcm9vZkFzc2VydGlvblVuaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25VbmlmaWVzKSB7XG4gICAgICBzdWJzdGl0dXRpb25zLnJlc29sdmUoY29udGV4dCk7XG4gICAgfVxuXG4gICAgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uVW5pZmllcyA/XG4gICAgICBzdWJzdGl0dXRpb25zLmNvbnRpbnVlKGNvbnRleHQpIDpcbiAgICAgICAgc3Vic3RpdHV0aW9ucy5yb2xsYmFjayhjb250ZXh0KTtcblxuICAgIHJldHVybiBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25VbmlmaWVzO1xuICB9XG5cbiAgdW5pZnlQcm9vZkFzc2VydGlvbihwcm9vZkFzc2VydGlvbiwgc3Vic3RpdHV0aW9ucywgY29udGV4dCkge1xuICAgIGxldCBwcm9vZkFzc2VydGlvblVuaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHN1cHBvc2l0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgcHJvb2ZBc3NlcnRpb25TdHJpbmcgPSBwcm9vZkFzc2VydGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtwcm9vZkFzc2VydGlvblN0cmluZ30nIHByb29mIGFzc2VydGlvbiB3aXRoIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0OyAgLy8vXG5cbiAgICBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb25zdCBnZW5lcmFsQ29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgZGVidWdnZXJcblxuICAgIC8vIGNvbnN0IHByb29mQXNzZXJ0aW9uQ29udGV4dCA9IHByb29mQXNzZXJ0aW9uLmdldENvbnRleHQoKSxcbiAgICAvLyAgICAgICBzdGF0ZW1lbnRVbmlmaWVzID0gc3ludGhldGljYWxseSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgLy8gICAgICAgICBjb25zdCBzdGF0ZW1lbnQgPSBwcm9vZkFzc2VydGlvbi5nZXRTdGF0ZW1lbnQoKSxcbiAgICAvLyAgICAgICAgICAgICAgIHN0YXRlbWVudFVuaWZpZXMgPSB0aGlzLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG4gICAgLy9cbiAgICAvLyAgICAgICAgIHJldHVybiBzdGF0ZW1lbnRVbmlmaWVzO1xuICAgIC8vICAgICAgIH0sIHNwZWNpZmljQ29udGV4dCwgcHJvb2ZBc3NlcnRpb25Db250ZXh0KTtcblxuICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICBwcm9vZkFzc2VydGlvblVuaWZpZXMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChwcm9vZkFzc2VydGlvblVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3Byb29mQXNzZXJ0aW9uU3RyaW5nfScgcHJvb2YgYXNzZXJ0aW9uIHdpdGggdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb29mQXNzZXJ0aW9uVW5pZmllcztcbiAgfVxuXG4gIHVuaWZ5U3VicHJvb2Yoc3VicHJvb2YsIHN1YnN0aXR1dGlvbnMsIGNvbnRleHQpIHtcbiAgICBsZXQgc3VicHJvb2ZVbmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBzdWJwcm9vZlN0cmluZyA9IHN1YnByb29mLmdldFN0cmluZygpLFxuICAgICAgICAgIHN1cHBvc2l0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3VicHJvb2ZTdHJpbmd9JyBzdWJwcm9vZiB3aXRoIHRoZSAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0OyAgLy8vXG5cbiAgICBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICBjb25zdCBnZW5lcmFsQ29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0gdGhpcy5nZXRTdGF0ZW1lbnQoKTtcblxuICAgIGlmIChzdGF0ZW1lbnQgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICAgICAgc3VicHJvb2ZBc3NlcnRpb25Ob2RlID0gc3RhdGVtZW50Tm9kZS5nZXRTdWJwcm9vZkFzc2VydGlvbk5vZGUoKTtcblxuICAgICAgaWYgKHN1YnByb29mQXNzZXJ0aW9uTm9kZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQsIC8vL1xuICAgICAgICAgICAgICBhc3NlcnRpb25Ob2RlID0gc3VicHJvb2ZBc3NlcnRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICAgIGFzc2VydGlvbiA9IGNvbnRleHQuZmluZEFzc2VydGlvbkJ5QXNzZXJ0aW9uTm9kZShhc3NlcnRpb25Ob2RlKVxuXG4gICAgICAgIGlmIChhc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCBzdWJwcm9vZkFzc2VydGlvbiA9IGFzc2VydGlvbjsgIC8vL1xuXG4gICAgICAgICAgc3VicHJvb2ZVbmlmaWVzID0gc3VicHJvb2ZBc3NlcnRpb24udW5pZnlTdWJwcm9vZihzdWJwcm9vZiwgc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3VicHJvb2ZVbmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdWJwcm9vZlN0cmluZ30nIHN1YnByb29mIHdpdGggdGhlICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnByb29mVW5pZmllcztcbiAgfVxuXG4gIHVuaWZ5U3VwcG9zaXRpb24oc3VwcG9zaXRpb24sIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgICBsZXQgc3VwcG9zaXRpb25VbmlmaWVzO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIHNwZWNpZmljU3VwcG9zaXRpb24gPSBzdXBwb3NpdGlvbiwgIC8vL1xuICAgICAgICAgIGdlbmVyYWxTdXBwb3NpdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIHNwZWNpZmljU3VwcG9zaXRpb25TdHJpbmcgPSBzcGVjaWZpY1N1cHBvc2l0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3NwZWNpZmljU3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbiB3aXRoIHRoZSAnJHtnZW5lcmFsU3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi4uLmApO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0gc3BlY2lmaWNTdXBwb3NpdGlvbi5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICBzdGF0ZW1lbnRVbmlmaWVzID0gdGhpcy51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgc3VwcG9zaXRpb25VbmlmaWVzID0gc3RhdGVtZW50VW5pZmllczsgIC8vL1xuXG4gICAgaWYgKHN1cHBvc2l0aW9uVW5pZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3BlY2lmaWNTdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uIHdpdGggdGhlICcke2dlbmVyYWxTdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBwb3NpdGlvblVuaWZpZXM7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgcHJvY2VkdXJlQ2FsbEpTT04gPSBwcm9jZWR1cmVDYWxsVG9Qcm9jZWR1cmVDYWxsSlNPTih0aGlzLnByb2NlZHVyZUNhbGwpLFxuICAgICAgICAgIHN0YXRlbWVudEpTT04gPSBzdGF0ZW1lbnRUb1N0YXRlbWVudEpTT04odGhpcy5zdGF0ZW1lbnQpLFxuICAgICAgICAgIHByb2NlZHVyZUNhbGwgPSBwcm9jZWR1cmVDYWxsSlNPTiwgIC8vL1xuICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudEpTT04sICAvLy9cbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgc3RhdGVtZW50LFxuICAgICAgICAgICAgcHJvY2VkdXJlQ2FsbFxuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTdXBwb3NpdGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgcHJvY2VkdXJlQ2FsbCA9IHByb2NlZHVyZUNhbGxGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIGxldCBzdHJpbmc7XG5cbiAgICBpZiAoc3RhdGVtZW50ICE9PSBudWxsKSB7XG4gICAgICBzdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG4gICAgfVxuXG4gICAgaWYgKHByb2NlZHVyZUNhbGwgIT09IG51bGwpIHtcbiAgICAgIHN0cmluZyA9IHByb2NlZHVyZUNhbGwuZ2V0U3RyaW5nKCk7XG4gICAgfVxuXG4gICAgY29uc3Qgbm9kZSA9IG51bGw7XG5cbiAgICBjb25zdCBzdXBwb3NpdGlvbiA9IG5ldyBTdXBwb3NpdGlvbihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIHN0YXRlbWVudCwgcHJvY2VkdXJlQ2FsbCk7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb247XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImRlZmluZSIsIlN1cHBvc2l0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJzdGF0ZW1lbnQiLCJwcm9jZWR1cmVDYWxsIiwiZ2V0UHJvY2VkdXJlQ2FsbCIsImlzU3RhdGVkIiwic3RhdGVkIiwidmVyaWZ5IiwidmVyaWZpZXMiLCJzdXBwb3NpdGlvblN0cmluZyIsImJyZWFrIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJnZXRTdGF0ZW1lbnQiLCJhdHRlbXB0IiwiYXNzaWdubWVudHMiLCJzdGF0ZW1lbnRWYWxpZGF0ZXMiLCJ2YWxpZGF0ZVN0YXRlbWVudCIsImFzc2lnbm1lbnRzQXNzaWduZWQiLCJhc3NpZ25Bc3NpZ25tZW50cyIsInN1YnByb29mT3JQcm9vZkFzc2VydGlvbiIsImFkZFN1YnByb29mT3JQcm9vZkFzc2VydGlvbiIsInNldENvbnRleHQiLCJwcm9jZWR1cmVDYWxsVmFsaWRhdGVzIiwidmFsaWRhdGUiLCJkZWJ1ZyIsInVuaWZ5SW5kZXBlbmRlbnRseSIsInN1YnN0aXR1dGlvbnMiLCJ1bmlmaWVzSW5kZXBlbmRlbnRseSIsInN0YXRlbWVudFVuaWZpZXNJbmRlcGVuZGVudGx5IiwicHJvY2VkdXJlQ2FsbFJlc29sdmVkSW5kZXBlbmRlbnRseSIsInVuaWZ5U3VicHJvb2ZPclByb29zQXNzZXJ0aW9uIiwic3VicHJvb2ZPclByb29mQXNzZXJ0aW9uVW5pZmllcyIsInN1YnByb29mT3JQcm9vZkFzc2VydGlvblByb29mQXNzZXJ0aW9uIiwiaXNQcm9vZkFzc2VydGlvbiIsInN1YnByb29mIiwicHJvb2ZBc3NlcnRpb24iLCJzbmFwc2hvdCIsInN1YnByb29mVW5pZmllcyIsInVuaWZ5U3VicHJvb2YiLCJwcm9vZkFzc2VydGlvblVuaWZpZXMiLCJ1bmlmeVByb29mQXNzZXJ0aW9uIiwicmVzb2x2ZSIsImNvbnRpbnVlIiwicm9sbGJhY2siLCJwcm9vZkFzc2VydGlvblN0cmluZyIsInNwZWNpZmljQ29udGV4dCIsImdldENvbnRleHQiLCJnZW5lcmFsQ29udGV4dCIsInN0YXRlbWVudFVuaWZpZXMiLCJzdWJwcm9vZlN0cmluZyIsInN0YXRlbWVudE5vZGUiLCJnZXROb2RlIiwic3VicHJvb2ZBc3NlcnRpb25Ob2RlIiwiZ2V0U3VicHJvb2ZBc3NlcnRpb25Ob2RlIiwiYXNzZXJ0aW9uTm9kZSIsImFzc2VydGlvbiIsImZpbmRBc3NlcnRpb25CeUFzc2VydGlvbk5vZGUiLCJzdWJwcm9vZkFzc2VydGlvbiIsInVuaWZ5U3VwcG9zaXRpb24iLCJzdXBwb3NpdGlvbiIsInN1cHBvc2l0aW9uVW5pZmllcyIsInNwZWNpZmljU3VwcG9zaXRpb24iLCJnZW5lcmFsU3VwcG9zaXRpb25TdHJpbmciLCJzcGVjaWZpY1N1cHBvc2l0aW9uU3RyaW5nIiwidW5pZnlTdGF0ZW1lbnQiLCJ0b0pTT04iLCJwcm9jZWR1cmVDYWxsSlNPTiIsInByb2NlZHVyZUNhbGxUb1Byb2NlZHVyZUNhbGxKU09OIiwic3RhdGVtZW50SlNPTiIsInN0YXRlbWVudFRvU3RhdGVtZW50SlNPTiIsImpzb24iLCJmcm9tSlNPTiIsInN0YXRlbWVudEZyb21KU09OIiwicHJvY2VkdXJlQ2FsbEZyb21KU09OIiwiUHJvb2ZBc3NlcnRpb24iLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFTQTs7O2VBQUE7OztxRUFQMkI7NkRBQ0c7d0JBRVA7dUJBQ0M7b0JBQzZGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFckgsV0FBZUEsSUFBQUEsZ0JBQU0sZ0NBQUM7O2FBQU1DLFlBQ2RDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFNBQVMsRUFBRUMs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
|