occam-verify-cli 1.0.685 → 1.0.687

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.
@@ -66,6 +66,9 @@ _export(exports, {
66
66
  get equalitiesToEqualitiesJSON () {
67
67
  return equalitiesToEqualitiesJSON;
68
68
  },
69
+ get frameFromJSON () {
70
+ return frameFromJSON;
71
+ },
69
72
  get frameToFrameJSON () {
70
73
  return frameToFrameJSON;
71
74
  },
@@ -81,6 +84,9 @@ _export(exports, {
81
84
  get hypothesesToHypothesesJSON () {
82
85
  return hypothesesToHypothesesJSON;
83
86
  },
87
+ get identifierFromJSON () {
88
+ return identifierFromJSON;
89
+ },
84
90
  get identifierToIdentifierJSON () {
85
91
  return identifierToIdentifierJSON;
86
92
  },
@@ -138,6 +144,9 @@ _export(exports, {
138
144
  get nameToNameJSON () {
139
145
  return nameToNameJSON;
140
146
  },
147
+ get negatedFromJSON () {
148
+ return negatedFromJSON;
149
+ },
141
150
  get negatedToNegatedJSON () {
142
151
  return negatedToNegatedJSON;
143
152
  },
@@ -171,6 +180,9 @@ _export(exports, {
171
180
  get propertiesToPropertiesJSON () {
172
181
  return propertiesToPropertiesJSON;
173
182
  },
183
+ get propertyRelationsFromJSON () {
184
+ return propertyRelationsFromJSON;
185
+ },
174
186
  get propertyRelationsToPropertyRelationsJSON () {
175
187
  return propertyRelationsToPropertyRelationsJSON;
176
188
  },
@@ -297,10 +309,12 @@ function nameFromJSON(json, context) {
297
309
  }
298
310
  function termFromJSON(json, context) {
299
311
  let { term } = json;
300
- const termJSON = term; ///
301
- json = termJSON; ///
302
- const { Term } = _elements.default;
303
- term = Term.fromJSON(json, context);
312
+ if (term !== null) {
313
+ const termJSON = term; ///
314
+ json = termJSON; ///
315
+ const { Term } = _elements.default;
316
+ term = Term.fromJSON(json, context);
317
+ }
304
318
  return term;
305
319
  }
306
320
  function typeFromJSON(json, context) {
@@ -312,6 +326,20 @@ function typeFromJSON(json, context) {
312
326
  }
313
327
  return type;
314
328
  }
329
+ function frameFromJSON(json, context) {
330
+ let { frame } = json;
331
+ if (frame !== null) {
332
+ const frameJSON = frame; ///
333
+ json = frameJSON; ///
334
+ const { Frame } = _elements.default;
335
+ frame = Frame.fromJSON(json, context);
336
+ }
337
+ return frame;
338
+ }
339
+ function negatedFromJSON(json, context) {
340
+ const { negated } = json;
341
+ return negated;
342
+ }
315
343
  function metaTypeFromJSON(json, context) {
316
344
  let { metaType } = json;
317
345
  if (metaType !== null) {
@@ -353,6 +381,12 @@ function referenceFromJSON(json, context) {
353
381
  reference = Reference.fromJSON(json, context);
354
382
  return reference;
355
383
  }
384
+ function identifierFromJSON(json, context) {
385
+ let { identifier } = json;
386
+ const identifierJSON = identifier; ///
387
+ identifier = identifierJSON; ///
388
+ return identifier;
389
+ }
356
390
  function conclusionFromJSON(json, context) {
357
391
  let { conclusion } = json;
358
392
  const { Conclusion } = _elements.default, conclusionJSON = conclusion; ///
@@ -639,6 +673,15 @@ function ephemeralContextFromJSON(json, context) {
639
673
  const emphemeralContext = _ephemeral.default.fromJSON(json, context);
640
674
  return emphemeralContext;
641
675
  }
676
+ function propertyRelationsFromJSON(json, context) {
677
+ let { propertyRelations } = json;
678
+ const { PropertyRelation } = _elements.default, propertyRelationsJSON = propertyRelations; ///
679
+ propertyRelations = propertyRelationsJSON.map((propertyRelationJSON)=>{
680
+ const json = propertyRelationJSON, propertyRelation = PropertyRelation.fromJSON(json, context);
681
+ return propertyRelation;
682
+ });
683
+ return propertyRelations;
684
+ }
642
685
  function nameToNameJSON(name) {
643
686
  const nameJSON = name; ///
644
687
  return nameJSON;
@@ -904,4 +947,4 @@ function propertyRelationsToPropertyRelationsJSON(propertyRelations) {
904
947
  return propertyRelationsJSON;
905
948
  }
906
949
 
907
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvanNvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IEVwaGVtZXJhbENvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvZXBoZW1lcmFsXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBsZW1tYXNGcm9tTm90aGluZygpIHtcbiAgY29uc3QgbGVtbWFzID0gW107XG5cbiAgcmV0dXJuIGxlbW1hcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFMZW1tYXNGcm9tTm90aGluZygpIHtcbiAgY29uc3QgbWV0YUxlbW1hcyA9IFtdO1xuXG4gIHJldHVybiBtZXRhTGVtbWFzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmFtZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbmFtZSB9ID0ganNvbjtcblxuICBjb25zdCBuYW1lSlNPTiA9IG5hbWU7ICAvLy9cblxuICBuYW1lID0gbmFtZUpTT047ICAvLy9cblxuICByZXR1cm4gbmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1Gcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHRlcm0gfSA9IGpzb247XG5cbiAgY29uc3QgdGVybUpTT04gPSB0ZXJtOyAgLy8vXG5cbiAganNvbiA9IHRlcm1KU09OOyAgLy8vXG5cbiAgY29uc3QgeyBUZXJtIH0gPSBlbGVtZW50cztcblxuICB0ZXJtID0gVGVybS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gdGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHR5cGUgfSA9IGpzb247XG5cbiAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICBqc29uID0gdHlwZTsgIC8vL1xuXG4gICAgY29uc3QgeyBuYW1lLCBwcmVmaXhOYW1lIH0gPSBqc29uLFxuICAgICAgICAgIG5vbWluYWxUeXBlTmFtZSA9IChwcmVmaXhOYW1lICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7cHJlZml4TmFtZX0ke25hbWV9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTsgLy8vXG5cbiAgICB0eXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG4gIH1cblxuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFUeXBlRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBtZXRhVHlwZSB9ID0ganNvbjtcblxuICBpZiAobWV0YVR5cGUgIT09IG51bGwpIHtcbiAgICBqc29uID0gbWV0YVR5cGU7ICAvLy9cblxuICAgIGNvbnN0IHsgbmFtZSB9ID0ganNvbixcbiAgICAgICAgICBtZXRhVHlwZU5hbWUgPSBuYW1lOyAgLy8vXG5cbiAgICBtZXRhVHlwZSA9IGNvbnRleHQuZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUobWV0YVR5cGVOYW1lKTtcbiAgfVxuXG4gIHJldHVybiBtZXRhVHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudEZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc3RhdGVtZW50ID0gbnVsbCB9ID0ganNvbjtcblxuICBpZiAoc3RhdGVtZW50ICE9PSBudWxsKSB7XG4gICAgY29uc3QgeyBTdGF0ZW1lbnQgfSA9IGVsZW1lbnRzLFxuICAgICAgICAgIHN0YXRlbWVudEpTT04gPSBzdGF0ZW1lbnQ7ICAvLy9cblxuICAgIGpzb24gPSBzdGF0ZW1lbnRKU09OOyAvLy9cblxuICAgIHN0YXRlbWVudCA9IFN0YXRlbWVudC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWR1Y3Rpb25Gcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGRlZHVjdGlvbiB9ID0ganNvbjtcblxuICBjb25zdCB7IERlZHVjdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIGRlZHVjdGlvbkpTT04gPSBkZWR1Y3Rpb247ICAvLy9cblxuICBqc29uID0gZGVkdWN0aW9uSlNPTjsgIC8vL1xuXG4gIGRlZHVjdGlvbiA9IERlZHVjdGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gZGVkdWN0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmF0dXJlRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzaWduYXR1cmUgPSBudWxsIH0gPSBqc29uO1xuXG4gIGlmIChzaWduYXR1cmUgIT09IG51bGwpIHtcbiAgICBjb25zdCB7IFNpZ25hdHVyZSB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgc2lnbmF0dXJlSlNPTiA9IHNpZ25hdHVyZTsgIC8vL1xuXG4gICAganNvbiA9IHNpZ25hdHVyZUpTT047IC8vL1xuXG4gICAgc2lnbmF0dXJlID0gU2lnbmF0dXJlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHNpZ25hdHVyZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcmVmZXJlbmNlIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUmVmZXJlbmNlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcmVmZXJlbmNlSlNPTiA9IHJlZmVyZW5jZTsgIC8vL1xuXG4gIGpzb24gPSByZWZlcmVuY2VKU09OOyAvLy9cblxuICByZWZlcmVuY2UgPSBSZWZlcmVuY2UuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmNsdXNpb25Gcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbmNsdXNpb24gfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb25jbHVzaW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgY29uY2x1c2lvbkpTT04gPSBjb25jbHVzaW9uOyAgLy8vXG5cbiAganNvbiA9IGNvbmNsdXNpb25KU09OOyAgLy8vXG5cbiAgY29uY2x1c2lvbiA9IENvbmNsdXNpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGNvbmNsdXNpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdmFyaWFibGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGF2YXJpYWJsZSB9ID0ganNvbjtcblxuICBjb25zdCB7IE1ldGF2YXJpYWJsZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG1ldGF2YXJpYWJsZUpTT04gPSBtZXRhdmFyaWFibGU7ICAvLy9cblxuICBqc29uID0gbWV0YXZhcmlhYmxlSlNPTjsgLy8vXG5cbiAgbWV0YXZhcmlhYmxlID0gTWV0YXZhcmlhYmxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVDYWxsRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcm9jZWR1cmVDYWxsID0gbnVsbCB9ID0ganNvbjtcblxuICBpZiAocHJvY2VkdXJlQ2FsbCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHsgUHJvY2VkdXJlQ2FsbCB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgcHJvY2VkdXJlQ2FsbEpTT04gPSBwcm9jZWR1cmVDYWxsOyAgLy8vXG5cbiAgICBqc29uID0gcHJvY2VkdXJlQ2FsbEpTT047IC8vL1xuXG4gICAgcHJvY2VkdXJlQ2FsbCA9IFByb2NlZHVyZUNhbGwuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gcHJvY2VkdXJlQ2FsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZVJlZmVyZW5jZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcHJvY2VkdXJlUmVmZXJlbmNlIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUHJvY2VkdXJlUmVmZXJlbmNlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcHJvY2VkdXJlUmVmZXJlbmNlSlNPTiA9IHByb2NlZHVyZVJlZmVyZW5jZTsgIC8vL1xuXG4gIGpzb24gPSBwcm9jZWR1cmVSZWZlcmVuY2VKU09OOyAgLy8vXG5cbiAgcHJvY2VkdXJlUmVmZXJlbmNlID0gUHJvY2VkdXJlUmVmZXJlbmNlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBwcm9jZWR1cmVSZWZlcmVuY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlc0Zyb21KU09OKGpzb24sIHR5cGVzLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgdHlwZXM6IHR5cGVzSlNPTiB9ID0ganNvbjtcblxuICBjb25zdCB7IFR5cGUgfSA9IGVsZW1lbnRzO1xuXG4gIHR5cGVzSlNPTi5mb3JFYWNoKCh0eXBlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0eXBlSlNPTiwgIC8vL1xuICAgICAgICAgIHR5cGUgPSBUeXBlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgdHlwZXMucHVzaCh0eXBlKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdGVybXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBUZXJtIH0gPSBlbGVtZW50cyxcbiAgICAgICAgdGVybXNKU09OID0gdGVybXM7IC8vL1xuXG4gIHRlcm1zID0gdGVybXNKU09OLm1hcCgodGVybUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdGVybUpTT04sICAvLy9cbiAgICAgICAgICB0ZXJtID0gVGVybS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB0ZXJtO1xuICB9KTtcblxuICByZXR1cm4gdGVybXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBydWxlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcnVsZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBSdWxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcnVsZXNKU09OID0gcnVsZXM7IC8vL1xuXG4gIHJ1bGVzID0gcnVsZXNKU09OLm1hcCgocnVsZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcnVsZUpTT04sICAvLy9cbiAgICAgICAgICBydWxlID0gUnVsZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBydWxlO1xuICB9KTtcblxuICByZXR1cm4gcnVsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbEZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbGFiZWwgfSA9IGpzb247XG5cbiAgY29uc3QgeyBMYWJlbCB9ID0gZWxlbWVudHMsXG4gICAgICAgIGxhYmVsSlNPTiA9IGxhYmVsOyAgLy8vXG5cbiAganNvbiA9IGxhYmVsSlNPTjsgLy8vXG5cbiAgbGFiZWwgPSBMYWJlbC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gbGFiZWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmcmFtZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGZyYW1lcyB9ID0ganNvbjtcblxuICBjb25zdCB7IEZyYW1lIH0gPSBlbGVtZW50cyxcbiAgICAgICAgZnJhbWVzSlNPTiA9IGZyYW1lczsgLy8vXG5cbiAgZnJhbWVzID0gZnJhbWVzSlNPTi5tYXAoKGZyYW1lSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBmcmFtZUpTT04sICAvLy9cbiAgICAgICAgICBmcmFtZSA9IEZyYW1lLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9KTtcblxuICByZXR1cm4gZnJhbWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBsYWJlbHMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBMYWJlbCB9ID0gZWxlbWVudHMsXG4gICAgICAgIGxhYmVsc0pTT04gPSBsYWJlbHM7ICAvLy9cblxuICBsYWJlbHMgPSBsYWJlbHNKU09OLm1hcCgobGFiZWxKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGxhYmVsSlNPTiwgLy8vXG4gICAgICAgICAgbGFiZWwgPSBMYWJlbC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBsYWJlbDtcbiAgfSk7XG5cbiAgcmV0dXJuIGxhYmVscztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF4aW9tc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgYXhpb21zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQXhpb20gfSA9IGVsZW1lbnRzLFxuICAgICAgICBheGlvbXNKU09OID0gYXhpb21zOyAvLy9cblxuICBheGlvbXMgPSBheGlvbXNKU09OLm1hcCgoYXhpb21KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGF4aW9tSlNPTiwgIC8vL1xuICAgICAgICAgIGF4aW9tID0gQXhpb20uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gYXhpb207XG4gIH0pO1xuXG4gIHJldHVybiBheGlvbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVtaXNlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcHJlbWlzZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBQcmVtaXNlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcHJlbWlzZXNKU09OID0gcHJlbWlzZXM7ICAvLy9cblxuICBwcmVtaXNlcyA9IHByZW1pc2VzSlNPTi5tYXAoKHByZW1pc2VKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHByZW1pc2VKU09OLCAvLy9cbiAgICAgICAgICBwcmVtaXNlID0gUHJlbWlzZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBwcmVtaXNlO1xuICB9KTtcblxuICByZXR1cm4gcHJlbWlzZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGVvcmVtc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdGhlb3JlbXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBUaGVvcmVtIH0gPSBlbGVtZW50cyxcbiAgICAgICAgdGhlb3JlbXNKU09OID0gdGhlb3JlbXM7IC8vL1xuXG4gIHRoZW9yZW1zID0gdGhlb3JlbXNKU09OLm1hcCgodGhlb3JlbUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdGhlb3JlbUpTT04sICAvLy9cbiAgICAgICAgICB0aGVvcmVtID0gVGhlb3JlbS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB0aGVvcmVtO1xuICB9KTtcblxuICByZXR1cm4gdGhlb3JlbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHZhcmlhYmxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFZhcmlhYmxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgdmFyaWFibGVzSlNPTiA9IHZhcmlhYmxlczsgLy8vXG5cbiAgdmFyaWFibGVzID0gdmFyaWFibGVzSlNPTi5tYXAoKHZhcmlhYmxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB2YXJpYWJsZUpTT04sICAvLy9cbiAgICAgICAgICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlO1xuICB9KTtcblxuICByZXR1cm4gdmFyaWFibGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXF1YWxpdGllc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgZXF1YWxpdGllcyB9ID0ganNvbjtcblxuICBjb25zdCB7IEVxdWFsaXR5IH0gPSBlbGVtZW50cyxcbiAgICAgICAgZXF1YWxpdGllc0pTT04gPSBlcXVhbGl0aWVzOyAvLy9cblxuICBlcXVhbGl0aWVzID0gZXF1YWxpdGllc0pTT04ubWFwKChlcXVhbGl0eUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gZXF1YWxpdHlKU09OLCAgLy8vXG4gICAgICAgICAgZXF1YWxpdHkgPSBFcXVhbGl0eS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBlcXVhbGl0eTtcbiAgfSk7XG5cbiAgcmV0dXJuIGVxdWFsaXRpZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0aWVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcm9wZXJ0aWVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUHJvcGVydHkgfSA9IGVsZW1lbnRzLFxuICAgICAgICBwcm9wZXJ0aWVzSlNPTiA9IHByb3BlcnRpZXM7IC8vL1xuXG4gIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzSlNPTi5tYXAoKHByb3BlcnR5SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBwcm9wZXJ0eUpTT04sICAvLy9cbiAgICAgICAgICBwcm9wZXJ0eSA9IFByb3BlcnR5LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByb3BlcnR5O1xuICB9KTtcblxuICByZXR1cm4gcHJvcGVydGllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyVHlwZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgc3VwZXJUeXBlczogc3VwZXJUeXBlc0pTT04gfSA9IGpzb247XG5cbiAgY29uc3Qgc3VwZXJUeXBlcyA9IHN1cGVyVHlwZXNKU09OLm1hcCgoc3VwZXJUeXBlSlNPTikgPT4ge1xuICAgICAgICAgIGNvbnN0IGpzb24gPSBzdXBlclR5cGVKU09OLCAgLy8vXG4gICAgICAgICAgICAgICAgeyBuYW1lLCBwcmVmaXhOYW1lIH0gPSBqc29uLFxuICAgICAgICAgICAgICAgIG5vbWluYWxTdXBlclR5cGVOYW1lID0gKHByZWZpeE5hbWUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7cHJlZml4TmFtZX0ke25hbWV9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIC8vL1xuICAgICAgICAgICAgICAgIHN1cGVyVHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsU3VwZXJUeXBlTmFtZSk7XG5cbiAgICAgICAgICByZXR1cm4gc3VwZXJUeXBlO1xuICAgICAgICB9KTtcblxuICByZXR1cm4gc3VwZXJUeXBlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh5cG90aGVzZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGh5cG90aGVzZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBIeXBvdGhlc2lzIH0gPSBlbGVtZW50cyxcbiAgICAgICAgaHlwb3RoZXNlc0pTT04gPSBoeXBvdGhlc2VzOyAgLy8vXG5cbiAgaHlwb3RoZXNlcyA9IGh5cG90aGVzZXNKU09OLm1hcCgoaHlwb3RoZXNpc0pTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gaHlwb3RoZXNpc0pTT04sIC8vL1xuICAgICAgICAgIGh5cG90aGVzaXMgPSBIeXBvdGhlc2lzLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGh5cG90aGVzaXM7XG4gIH0pO1xuXG4gIHJldHVybiBoeXBvdGhlc2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyYW1ldGVyc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcGFyYW1ldGVycyB9ID0ganNvbjtcblxuICBjb25zdCB7IFBhcmFtZXRlciB9ID0gZWxlbWVudHMsXG4gICAgICAgIHBhcmFtZXRlcnNKU09OID0gcGFyYW1ldGVyczsgLy8vXG5cbiAgcGFyYW1ldGVycyA9IHBhcmFtZXRlcnNKU09OLm1hcCgocGFyYW1ldGVySlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBwYXJhbWV0ZXJKU09OLCAgLy8vXG4gICAgICAgICAgcGFyYW1ldGVyID0gUGFyYW1ldGVyLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHBhcmFtZXRlcjtcbiAgfSk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBqdWRnZW1lbnRzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBqdWRnZW1lbnRzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgSnVkZ2VtZW50IH0gPSBlbGVtZW50cyxcbiAgICAgICAganVkZ2VtZW50c0pTT04gPSBqdWRnZW1lbnRzOyAvLy9cblxuICBqdWRnZW1lbnRzID0ganVkZ2VtZW50c0pTT04ubWFwKChqdWRnZW1lbnRKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGp1ZGdlbWVudEpTT04sICAvLy9cbiAgICAgICAgICBqdWRnZW1lbnQgPSBKdWRnZW1lbnQuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4ganVkZ2VtZW50O1xuICB9KTtcblxuICByZXR1cm4ganVkZ2VtZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudHNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHN0YXRlbWVudHMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBTdGF0ZW1lbnQgfSA9IGVsZW1lbnRzLFxuICAgICAgICBzdGF0ZW1lbnRzSlNPTiA9IHN0YXRlbWVudHM7IC8vL1xuXG4gIHN0YXRlbWVudHMgPSBzdGF0ZW1lbnRzSlNPTi5tYXAoKHN0YXRlbWVudEpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gc3RhdGVtZW50SlNPTiwgIC8vL1xuICAgICAgICAgIHN0YXRlbWVudCA9IFN0YXRlbWVudC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnQ7XG4gIH0pO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgYXNzZXJ0aW9ucyB9ID0ganNvbjtcblxuICBjb25zdCB7IFR5cGVBc3NlcnRpb24sIERlZmluZWRBc3NlcnRpb24sIFByb3BlcnR5QXNzZXJ0aW9uLCBTdWJwcm9vZkFzc2VydGlvbiwgU2F0aXNmaWVzQXNzZXJ0aW9uLCBDb250YWluZWRBc3NlcnRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBhc3NlcnRpb25zSlNPTiA9IGFzc2VydGlvbnM7IC8vL1xuXG4gIGFzc2VydGlvbnMgPSBhc3NlcnRpb25zSlNPTi5tYXAoKGFzc2VydGlvbkpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gYXNzZXJ0aW9uSlNPTiwgIC8vL1xuICAgICAgICAgIGFzc2VydGlvbiA9IFR5cGVBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgRGVmaW5lZEFzc2VydGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0eUFzc2VydGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICBTdWJwcm9vZkFzc2VydGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICBTYXRpc2ZpZXNBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgQ29udGFpbmVkQXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGFzc2VydGlvbjtcbiAgfSk7XG5cbiAgcmV0dXJuIGFzc2VydGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyByZWZlcmVuY2VzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUmVmZXJlbmNlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcmVmZXJlbmNlc0pTT04gPSByZWZlcmVuY2VzOyAvLy9cblxuICByZWZlcmVuY2VzID0gcmVmZXJlbmNlc0pTT04ubWFwKChyZWZlcmVuY2VKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHJlZmVyZW5jZUpTT04sICAvLy9cbiAgICAgICAgICByZWZlcmVuY2UgPSBSZWZlcmVuY2UuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlO1xuICB9KTtcblxuICByZXR1cm4gcmVmZXJlbmNlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmplY3R1cmVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBjb25qZWN0dXJlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbmplY3R1cmUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBjb25qZWN0dXJlc0pTT04gPSBjb25qZWN0dXJlczsgLy8vXG5cbiAgY29uamVjdHVyZXMgPSBjb25qZWN0dXJlc0pTT04ubWFwKChjb25qZWN0dXJlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBjb25qZWN0dXJlSlNPTiwgIC8vL1xuICAgICAgICAgIGNvbmplY3R1cmUgPSBDb25qZWN0dXJlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbmplY3R1cmU7XG4gIH0pO1xuXG4gIHJldHVybiBjb25qZWN0dXJlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmF0b3JzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBjb21iaW5hdG9ycyB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbWJpbmF0b3IgfSA9IGVsZW1lbnRzLFxuICAgICAgICBjb21iaW5hdG9yc0pTT04gPSBjb21iaW5hdG9yczsgLy8vXG5cbiAgY29tYmluYXRvcnMgPSBjb21iaW5hdG9yc0pTT04ubWFwKChjb21iaW5hdG9ySlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBjb21iaW5hdG9ySlNPTiwgIC8vL1xuICAgICAgICAgIGNvbWJpbmF0b3IgPSBDb21iaW5hdG9yLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbWJpbmF0b3I7XG4gIH0pO1xuXG4gIHJldHVybiBjb21iaW5hdG9ycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc3VtcHRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBhc3N1bXB0aW9ucyB9ID0ganNvbjtcblxuICBjb25zdCB7IEFzc3VtcHRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBhc3N1bXB0aW9uc0pTT04gPSBhc3N1bXB0aW9uczsgLy8vXG5cbiAgYXNzdW1wdGlvbnMgPSBhc3N1bXB0aW9uc0pTT04ubWFwKChhc3N1bXB0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBhc3N1bXB0aW9uSlNPTiwgIC8vL1xuICAgICAgICAgIGFzc3VtcHRpb24gPSBBc3N1bXB0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb247XG4gIH0pO1xuXG4gIHJldHVybiBhc3N1bXB0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVQcmVmaXhlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdHlwZVByZWZpeGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVHlwZVByZWZpeCB9ID0gZWxlbWVudHMsXG4gICAgICAgIHR5cGVQcmVmaXhlc0pTT04gPSB0eXBlUHJlZml4ZXM7IC8vL1xuXG4gIHR5cGVQcmVmaXhlcyA9IHR5cGVQcmVmaXhlc0pTT04ubWFwKCh0eXBlUHJlZml4SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0eXBlUHJlZml4SlNPTiwgIC8vL1xuICAgICAgICAgIHR5cGVQcmVmaXggPSBUeXBlUHJlZml4LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVmaXg7XG4gIH0pO1xuXG4gIHJldHVybiB0eXBlUHJlZml4ZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RvcnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbnN0cnVjdG9ycyB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbnN0cnVjdG9yIH0gPSBlbGVtZW50cyxcbiAgICAgICAgY29uc3RydWN0b3JzSlNPTiA9IGNvbnN0cnVjdG9yczsgLy8vXG5cbiAgY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzSlNPTi5tYXAoKGNvbnN0cnVjdG9ySlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBjb25zdHJ1Y3RvckpTT04sICAvLy9cbiAgICAgICAgICBjb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9yO1xuICB9KTtcblxuICByZXR1cm4gY29uc3RydWN0b3JzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXRoZW9yZW1zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBtZXRhdGhlb3JlbXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBNZXRhdGhlb3JlbSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG1ldGF0aGVvcmVtc0pTT04gPSBtZXRhdGhlb3JlbXM7IC8vL1xuXG4gIG1ldGF0aGVvcmVtcyA9IG1ldGF0aGVvcmVtc0pTT04ubWFwKChtZXRhdGhlb3JlbUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gbWV0YXRoZW9yZW1KU09OLCAgLy8vXG4gICAgICAgICAgbWV0YXRoZW9yZW0gPSBNZXRhdGhlb3JlbS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBtZXRhdGhlb3JlbTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF0aGVvcmVtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cHBvc2l0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc3VwcG9zaXRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgU3VwcG9zaXRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBzdXBwb3NpdGlvbnNKU09OID0gc3VwcG9zaXRpb25zOyAgLy8vXG5cbiAgc3VwcG9zaXRpb25zID0gc3VwcG9zaXRpb25zSlNPTi5tYXAoKHN1cHBvc2l0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdXBwb3NpdGlvbkpTT04sIC8vL1xuICAgICAgICAgIHN1cHBvc2l0aW9uID0gU3VwcG9zaXRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb247XG4gIH0pO1xuXG4gIHJldHVybiBzdXBwb3NpdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdGl0dXRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzdWJzdGl0dXRpb25zID0gW10gfSA9IGpzb247ICAvLy9cblxuICBjb25zdCB7IFN0YXRlbWVudFN1YnN0aXR1dGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIHN1YnN0aXR1dGlvbnNKU09OID0gc3Vic3RpdHV0aW9ucywgIC8vL1xuICAgICAgICBTdWJzdGl0dXRpb24gPSBTdGF0ZW1lbnRTdWJzdGl0dXRpb247IC8vL1xuXG4gIHN1YnN0aXR1dGlvbnMgPSBzdWJzdGl0dXRpb25zSlNPTi5tYXAoKHN1YnN0aXR1dGlvbkpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gc3Vic3RpdHV0aW9uSlNPTiwgIC8vL1xuICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IFN1YnN0aXR1dGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb247XG4gIH0pO1xuXG4gIHJldHVybiBzdWJzdGl0dXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbWV0YXZhcmlhYmxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IE1ldGF2YXJpYWJsZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG1ldGF2YXJpYWJsZXNKU09OID0gbWV0YXZhcmlhYmxlczsgLy8vXG5cbiAgbWV0YXZhcmlhYmxlcyA9IG1ldGF2YXJpYWJsZXNKU09OLm1hcCgobWV0YXZhcmlhYmxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBtZXRhdmFyaWFibGVKU09OLCAgLy8vXG4gICAgICAgICAgbWV0YXZhcmlhYmxlID0gTWV0YXZhcmlhYmxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcGhlbWVyYWxDb250ZXh0RnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBjb25zdCByZWxlYXNlQ29udGV4dCA9IGNvbnRleHQ7XG5cbiAgKHtjb250ZXh0fSA9IGpzb24pO1xuXG4gIGpzb24gPSBjb250ZXh0OyAvLy9cblxuICBjb250ZXh0ID0gcmVsZWFzZUNvbnRleHQ7IC8vL1xuXG4gIGNvbnN0IGVtcGhlbWVyYWxDb250ZXh0ID0gRXBoZW1lcmFsQ29udGV4dC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gZW1waGVtZXJhbENvbnRleHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuYW1lVG9OYW1lSlNPTihuYW1lKSB7XG4gIGNvbnN0IG5hbWVKU09OID0gbmFtZTsgIC8vL1xuXG4gIHJldHVybiBuYW1lSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1Ub1Rlcm1KU09OKHRlcm0pIHtcbiAgY29uc3QgdGVybUpTT04gPSAodGVybSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgdGVybS50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIHRlcm1KU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZVRvVHlwZUpTT04odHlwZSkge1xuICBjb25zdCB0eXBlSlNPTiA9ICh0eXBlICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICB0eXBlLnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICByZXR1cm4gdHlwZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmcmFtZVRvRnJhbWVKU09OKGZyYW1lKSB7XG4gIGNvbnN0IGZyYW1lSlNPTiA9IChmcmFtZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIGZyYW1lSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsVG9MYWJlbEpTT04obGFiZWwpIHtcbiAgY29uc3QgbGFiZWxKU09OID0gbGFiZWwudG9KU09OKCk7XG5cbiAgcmV0dXJuIGxhYmVsSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5lZ2F0ZWRUb05lZ2F0ZWRKU09OKG5lZ2F0ZWQpIHtcbiAgY29uc3QgbmVnYXRlZEpTT04gPSBuZWdhdGVkOyAgLy8vXG5cbiAgcmV0dXJuIG5lZ2F0ZWRKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVR5cGVUb01ldGFUeXBlSlNPTihtZXRhVHlwZSkge1xuICBjb25zdCBtZXRhVHlwZUpTT04gPSAobWV0YVR5cGUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhVHlwZS50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBtZXRhVHlwZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VUb1JlZmVyZW5jZUpTT04ocmVmZXJlbmNlKSB7XG4gIGNvbnN0IHJlZmVyZW5jZUpTT04gPSByZWZlcmVuY2UudG9KU09OKCk7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRUb1N0YXRlbWVudEpTT04oc3RhdGVtZW50KSB7XG4gIGNvbnN0IHN0YXRlbWVudEpTT04gPSAoc3RhdGVtZW50ICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudC50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICByZXR1cm4gc3RhdGVtZW50SlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZHVjdGlvblRvRGVkdWN0aW9uSlNPTihkZWR1Y3Rpb24pIHtcbiAgY29uc3QgZGVkdWN0aW9uSlNPTiA9IGRlZHVjdGlvbi50b0pTT04oKTtcblxuICByZXR1cm4gZGVkdWN0aW9uSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hdHVyZVRvU2lnbmF0dXJlSlNPTihzaWduYXR1cmUpIHtcbiAgY29uc3Qgc2lnbmF0dXJlSlNPTiA9IChzaWduYXR1cmUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlLnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBzaWduYXR1cmVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaWRlbnRpZmllclRvSWRlbnRpZmllckpTT04oaWRlbnRpZmllcikge1xuICBjb25zdCBpZGVudGlmaWVySlNPTiA9IGlkZW50aWZpZXI7ICAvLy9cblxuICByZXR1cm4gaWRlbnRpZmllckpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25jbHVzaW9uVG9Db25jbHVzaW9uSlNPTihjb25jbHVzaW9uKSB7XG4gIGNvbnN0IGNvbmNsdXNpb25KU09OID0gY29uY2x1c2lvbi50b0pTT04oKTtcblxuICByZXR1cm4gY29uY2x1c2lvbkpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aXNpb25hbFRvUHJvdmlzaW9uYWxKU09OKHByb3Zpc2lvbmFsKSB7XG4gIGNvbnN0IHByb3Zpc2lvbmFsSlNPTiA9IHByb3Zpc2lvbmFsOyAgLy8vXG5cbiAgcmV0dXJuIHByb3Zpc2lvbmFsSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZVRvTWV0YXZhcmlhYmxlSlNPTihtZXRhdmFyaWFibGUpIHtcbiAgY29uc3QgbWV0YXZhcmlhYmxlSlNPTiA9IG1ldGF2YXJpYWJsZS50b0pTT04oKTtcblxuICByZXR1cm4gbWV0YXZhcmlhYmxlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZUNhbGxUb1Byb2NlZHVyZUNhbGxKU09OKHByb2NlZHVyZUNhbGwpIHtcbiAgY29uc3QgcHJvY2VkdXJlQ2FsbEpTT04gPSAocHJvY2VkdXJlQ2FsbCAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2VkdXJlQ2FsbC50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIHByb2NlZHVyZUNhbGxKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlUmVmZXJlbmNlVG9Qcm9jZWR1cmVSZWZlcmVuY2VKU09OKHByb2NlZHVyZVJlZmVyZW5jZSkge1xuICBjb25zdCBwcm9jZWR1cmVSZWZlcmVuY2VKU09OID0gcHJvY2VkdXJlUmVmZXJlbmNlLnRvSlNPTigpO1xuXG4gIHJldHVybiBwcm9jZWR1cmVSZWZlcmVuY2VKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybXNUb1Rlcm1zSlNPTih0ZXJtcykge1xuICBjb25zdCB0ZXJtc0pTT04gPSB0ZXJtcy5tYXAoKHRlcm0pID0+IHtcbiAgICBjb25zdCB0ZXJtSlNPTiA9IHRlcm0udG9KU09OKCk7XG5cbiAgICByZXR1cm4gdGVybUpTT047XG4gIH0pO1xuXG4gIHJldHVybiB0ZXJtc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlc1RvVHlwZXNKU09OKHR5cGVzKSB7XG4gIGNvbnN0IHR5cGVzSlNPTiA9IHR5cGVzLm1hcCgodHlwZSkgPT4ge1xuICAgIGNvbnN0IHR5cGVKU09OID0gdHlwZS50b0pTT04oKTtcblxuICAgIHJldHVybiB0eXBlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHR5cGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVzVG9SdWxlc0pTT04ocnVsZXMpIHtcbiAgY29uc3QgcnVsZXNKU09OID0gcnVsZXMubWFwKChydWxlKSA9PiB7XG4gICAgY29uc3QgcnVsZUpTT04gPSBydWxlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHJ1bGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gcnVsZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxzVG9MYWJlbHNKU09OKGxhYmVscykge1xuICBjb25zdCBsYWJlbHNKU09OID0gbGFiZWxzLm1hcCgobGFiZWwpID0+IHtcbiAgICBjb25zdCBsYWJlbEpTT04gPSBsYWJlbC50b0pTT04oKTtcblxuICAgIHJldHVybiBsYWJlbEpTT047XG4gIH0pO1xuXG4gIHJldHVybiBsYWJlbHNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJhbWVzVG9GcmFtZXNKU09OKGZyYW1lcykge1xuICBjb25zdCBmcmFtZXNKU09OID0gZnJhbWVzLm1hcCgoZnJhbWUpID0+IHtcbiAgICBjb25zdCBmcmFtZUpTT04gPSBmcmFtZS50b0pTT04oKTtcblxuICAgIHJldHVybiBmcmFtZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBmcmFtZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXhpb21zVG9BeGlvbXNKU09OKGF4aW9tcykge1xuICBjb25zdCBheGlvbXNKU09OID0gYXhpb21zLm1hcCgoYXhpb20pID0+IHtcbiAgICBjb25zdCBheGlvbUpTT04gPSBheGlvbS50b0pTT04oKTtcblxuICAgIHJldHVybiBheGlvbUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBheGlvbXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlbWlzZXNUb1ByZW1pc2VzSlNPTihwcmVtaXNlcykge1xuICBjb25zdCBwcmVtaXNlc0pTT04gPSBwcmVtaXNlcy5tYXAoKHByZW1pc2UpID0+IHtcbiAgICBjb25zdCBwcmVtaXNlSlNPTiA9IHByZW1pc2UudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcHJlbWlzZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBwcmVtaXNlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGVvcmVtc1RvVGhlb3JlbXNKU09OKHRoZW9yZW1zKSB7XG4gIGNvbnN0IHRoZW9yZW1zSlNPTiA9IHRoZW9yZW1zLm1hcCgodGhlb3JlbSkgPT4ge1xuICAgIGNvbnN0IHRoZW9yZW1KU09OID0gdGhlb3JlbS50b0pTT04oKTtcblxuICAgIHJldHVybiB0aGVvcmVtSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHRoZW9yZW1zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlc1RvVmFyaWFibGVzSlNPTih2YXJpYWJsZXMpIHtcbiAgY29uc3QgdmFyaWFibGVzSlNPTiA9IHZhcmlhYmxlcy5tYXAoKHZhcmlhYmxlKSA9PiB7XG4gICAgY29uc3QgdmFyaWFibGVKU09OID0gdmFyaWFibGUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gdmFyaWFibGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gdmFyaWFibGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OKGh5cG90aGVzZXMpIHtcbiAgY29uc3QgaHlwb3RoZXNlc0pTT04gPSBoeXBvdGhlc2VzLm1hcCgoaHlwb3RoZXNpcykgPT4ge1xuICAgIGNvbnN0IGh5cG90aGVzaXNKU09OID0gaHlwb3RoZXNpcy50b0pTT04oKTtcblxuICAgIHJldHVybiBoeXBvdGhlc2lzSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGh5cG90aGVzZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwZXJUeXBlc1RvU3VwZXJUeXBlc0pTT04oc3VwZXJUeXBlcykge1xuICBjb25zdCBzdXBlclR5cGVzSlNPTiA9IHN1cGVyVHlwZXMubWFwKChzdXBlclR5cGUpID0+IHtcbiAgICBjb25zdCBzdXBlclR5cGVKU09OID0gc3VwZXJUeXBlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHN1cGVyVHlwZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBzdXBlclR5cGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcmFtZXRlcnNUb1BhcmFtZXRlcnNKU09OKHBhcmFtZXRlcnMpIHtcbiAgY29uc3QgcGFyYW1ldGVyc0pTT04gPSBwYXJhbWV0ZXJzLm1hcCgocGFyYW1ldGVyKSA9PiB7XG4gICAgY29uc3QgcGFyYW1ldGVySlNPTiA9IHBhcmFtZXRlci50b0pTT04oKTtcblxuICAgIHJldHVybiBwYXJhbWV0ZXJKU09OO1xuICB9KTtcblxuICByZXR1cm4gcGFyYW1ldGVyc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0aWVzVG9Qcm9wZXJ0aWVzSlNPTihwcm9wZXJ0aWVzKSB7XG4gIGNvbnN0IHByb3BlcnRpZXNKU09OID0gcHJvcGVydGllcy5tYXAoKHByb3BlcnR5KSA9PiB7XG4gICAgY29uc3QgcHJvcGVydHlKU09OID0gcHJvcGVydHkudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcHJvcGVydHlKU09OO1xuICB9KTtcblxuICByZXR1cm4gcHJvcGVydGllc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBqdWRnZW1lbnRzVG9KdWRnZW1lbnRzSlNPTihqdWRnZW1lbnRzKSB7XG4gIGNvbnN0IGp1ZGdlbWVudHNKU09OID0ganVkZ2VtZW50cy5tYXAoKGp1ZGdlbWVudCkgPT4ge1xuICAgIGNvbnN0IGp1ZGdlbWVudEpTT04gPSBqdWRnZW1lbnQudG9KU09OKCk7XG5cbiAgICByZXR1cm4ganVkZ2VtZW50SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGp1ZGdlbWVudHNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXF1YWxpdGllc1RvRXF1YWxpdGllc0pTT04oZXF1YWxpdGllcykge1xuICBjb25zdCBlcXVhbGl0aWVzSlNPTiA9IGVxdWFsaXRpZXMubWFwKChlcXVhbGl0eSkgPT4ge1xuICAgIGNvbnN0IGVxdWFsaXR5SlNPTiA9IGVxdWFsaXR5LnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGVxdWFsaXRpZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVtZW50c1RvU3RhdGVtZW50c0pTT04oc3RhdGVtZW50cykge1xuICBjb25zdCBzdGF0ZW1lbnRzSlNPTiA9IHN0YXRlbWVudHMubWFwKChzdGF0ZW1lbnQpID0+IHtcbiAgICBjb25zdCBzdGF0ZW1lbnRKU09OID0gc3RhdGVtZW50LnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudEpTT047XG4gIH0pO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydGlvbnNUb0Fzc2VydGlvbnNKU09OKGFzc2VydGlvbnMpIHtcbiAgY29uc3QgYXNzZXJ0aW9uc0pTT04gPSBhc3NlcnRpb25zLm1hcCgoYXNzZXJ0aW9uKSA9PiB7XG4gICAgY29uc3QgYXNzZXJ0aW9uSlNPTiA9IGFzc2VydGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBhc3NlcnRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gYXNzZXJ0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VzVG9SZWZlcmVuY2VzSlNPTihyZWZlcmVuY2VzKSB7XG4gIGNvbnN0IHJlZmVyZW5jZXNKU09OID0gcmVmZXJlbmNlcy5tYXAoKHJlZmVyZW5jZSkgPT4ge1xuICAgIGNvbnN0IHJlZmVyZW5jZUpTT04gPSByZWZlcmVuY2UudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uamVjdHVyZXNUb0NvbmplY3R1cmVzSlNPTihjb25qZWN0dXJlcykge1xuICBjb25zdCBjb25qZWN0dXJlc0pTT04gPSBjb25qZWN0dXJlcy5tYXAoKGNvbmplY3R1cmUpID0+IHtcbiAgICBjb25zdCBjb25qZWN0dXJlSlNPTiA9IGNvbmplY3R1cmUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gY29uamVjdHVyZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBjb25qZWN0dXJlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5hdG9yc1RvQ29tYmluYXRvcnNKU09OKGNvbWJpbmF0b3JzKSB7XG4gIGNvbnN0IGNvbWJpbmF0b3JzSlNPTiA9IGNvbWJpbmF0b3JzLm1hcCgoY29tYmluYXRvcikgPT4ge1xuICAgIGNvbnN0IGNvbWJpbmF0b3JKU09OID0gY29tYmluYXRvci50b0pTT04oKTtcblxuICAgIHJldHVybiBjb21iaW5hdG9ySlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbWJpbmF0b3JzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc3VtcHRpb25zVG9Bc3N1bXB0aW9uc0pTT04oYXNzdW1wdGlvbnMpIHtcbiAgY29uc3QgYXNzdW1wdGlvbnNKU09OID0gYXNzdW1wdGlvbnMubWFwKChhc3N1bXB0aW9uKSA9PiB7XG4gICAgY29uc3QgYXNzdW1wdGlvbkpTT04gPSBhc3N1bXB0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gYXNzdW1wdGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwcG9zaXRpb25zVG9TdXBwb3NpdGlvbnNKU09OKHN1cHBvc2l0aW9ucykge1xuICBjb25zdCBzdXBwb3NpdGlvbnNKU09OID0gc3VwcG9zaXRpb25zLm1hcCgoc3VwcG9zaXRpb24pID0+IHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbkpTT04gPSBzdXBwb3NpdGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBzdXBwb3NpdGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBzdXBwb3NpdGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0b3JzVG9Db25zdHJ1Y3RvcnNKU09OKGNvbnN0cnVjdG9ycykge1xuICBjb25zdCBjb25zdHJ1Y3RvcnNKU09OID0gY29uc3RydWN0b3JzLm1hcCgoY29uc3RydWN0b3IpID0+IHtcbiAgICBjb25zdCBjb25zdHJ1Y3RvckpTT04gPSBjb25zdHJ1Y3Rvci50b0pTT04oKTtcblxuICAgIHJldHVybiBjb25zdHJ1Y3RvckpTT047XG4gIH0pO1xuXG4gIHJldHVybiBjb25zdHJ1Y3RvcnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXRoZW9yZW1zVG9NZXRhdGhlb3JlbXNKU09OKG1ldGF0aGVvcmVtcykge1xuICBjb25zdCBtZXRhdGhlb3JlbXNKU09OID0gbWV0YXRoZW9yZW1zLm1hcCgobWV0YXRoZW9yZW0pID0+IHtcbiAgICBjb25zdCBtZXRhdGhlb3JlbUpTT04gPSBtZXRhdGhlb3JlbS50b0pTT04oKTtcblxuICAgIHJldHVybiBtZXRhdGhlb3JlbUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBtZXRhdGhlb3JlbXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZVByZWZpeGVzVG9UeXBlUHJlZml4ZXNKU09OKHR5cGVQcmVmaXhlcykge1xuICBjb25zdCB0eXBlUHJlZml4ZXNKU09OID0gdHlwZVByZWZpeGVzLm1hcCgodHlwZVByZWZpeCkgPT4ge1xuICAgIGNvbnN0IHR5cGVQcmVmaXhKU09OID0gdHlwZVByZWZpeC50b0pTT04oKTtcblxuICAgIHJldHVybiB0eXBlUHJlZml4SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHR5cGVQcmVmaXhlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdGl0dXRpb25zVG9TdWJzdGl0dXRpb25zSlNPTihzdWJzdGl0dXRpb25zKSB7XG4gIGNvbnN0IHN1YnN0aXR1dGlvbnNKU09OID0gc3Vic3RpdHV0aW9ucy5tYXAoKHN1YnN0aXR1dGlvbikgPT4ge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvbkpTT04gPSBzdWJzdGl0dXRpb24udG9KU09OKCk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1YnN0aXR1dGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlc1RvTWV0YXZhcmlhYmxlc0pTT04obWV0YXZhcmlhYmxlcykge1xuICBjb25zdCBtZXRhdmFyaWFibGVzSlNPTiA9IG1ldGF2YXJpYWJsZXMubWFwKChtZXRhdmFyaWFibGUpID0+IHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVKU09OID0gbWV0YXZhcmlhYmxlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3BlcnR5UmVsYXRpb25zVG9Qcm9wZXJ0eVJlbGF0aW9uc0pTT04ocHJvcGVydHlSZWxhdGlvbnMpIHtcbiAgY29uc3QgcHJvcGVydHlSZWxhdGlvbnNKU09OID0gcHJvcGVydHlSZWxhdGlvbnMubWFwKChwcm9wZXJ0eVJlbGF0aW9uKSA9PiB7XG4gICAgY29uc3QgcHJvcGVydHlSZWxhdGlvbkpTT04gPSBwcm9wZXJ0eVJlbGF0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHByb3BlcnR5UmVsYXRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gcHJvcGVydHlSZWxhdGlvbnNKU09OO1xufVxuIl0sIm5hbWVzIjpbImFzc2VydGlvbnNGcm9tSlNPTiIsImFzc2VydGlvbnNUb0Fzc2VydGlvbnNKU09OIiwiYXNzdW1wdGlvbnNGcm9tSlNPTiIsImFzc3VtcHRpb25zVG9Bc3N1bXB0aW9uc0pTT04iLCJheGlvbXNGcm9tSlNPTiIsImF4aW9tc1RvQXhpb21zSlNPTiIsImNvbWJpbmF0b3JzRnJvbUpTT04iLCJjb21iaW5hdG9yc1RvQ29tYmluYXRvcnNKU09OIiwiY29uY2x1c2lvbkZyb21KU09OIiwiY29uY2x1c2lvblRvQ29uY2x1c2lvbkpTT04iLCJjb25qZWN0dXJlc0Zyb21KU09OIiwiY29uamVjdHVyZXNUb0NvbmplY3R1cmVzSlNPTiIsImNvbnN0cnVjdG9yc0Zyb21KU09OIiwiY29uc3RydWN0b3JzVG9Db25zdHJ1Y3RvcnNKU09OIiwiZGVkdWN0aW9uRnJvbUpTT04iLCJkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04iLCJlcGhlbWVyYWxDb250ZXh0RnJvbUpTT04iLCJlcXVhbGl0aWVzRnJvbUpTT04iLCJlcXVhbGl0aWVzVG9FcXVhbGl0aWVzSlNPTiIsImZyYW1lVG9GcmFtZUpTT04iLCJmcmFtZXNGcm9tSlNPTiIsImZyYW1lc1RvRnJhbWVzSlNPTiIsImh5cG90aGVzZXNGcm9tSlNPTiIsImh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OIiwiaWRlbnRpZmllclRvSWRlbnRpZmllckpTT04iLCJqdWRnZW1lbnRzRnJvbUpTT04iLCJqdWRnZW1lbnRzVG9KdWRnZW1lbnRzSlNPTiIsImxhYmVsRnJvbUpTT04iLCJsYWJlbFRvTGFiZWxKU09OIiwibGFiZWxzRnJvbUpTT04iLCJsYWJlbHNUb0xhYmVsc0pTT04iLCJsZW1tYXNGcm9tTm90aGluZyIsIm1ldGFMZW1tYXNGcm9tTm90aGluZyIsIm1ldGFUeXBlRnJvbUpTT04iLCJtZXRhVHlwZVRvTWV0YVR5cGVKU09OIiwibWV0YXRoZW9yZW1zRnJvbUpTT04iLCJtZXRhdGhlb3JlbXNUb01ldGF0aGVvcmVtc0pTT04iLCJtZXRhdmFyaWFibGVGcm9tSlNPTiIsIm1ldGF2YXJpYWJsZVRvTWV0YXZhcmlhYmxlSlNPTiIsIm1ldGF2YXJpYWJsZXNGcm9tSlNPTiIsIm1ldGF2YXJpYWJsZXNUb01ldGF2YXJpYWJsZXNKU09OIiwibmFtZUZyb21KU09OIiwibmFtZVRvTmFtZUpTT04iLCJuZWdhdGVkVG9OZWdhdGVkSlNPTiIsInBhcmFtZXRlcnNGcm9tSlNPTiIsInBhcmFtZXRlcnNUb1BhcmFtZXRlcnNKU09OIiwicHJlbWlzZXNGcm9tSlNPTiIsInByZW1pc2VzVG9QcmVtaXNlc0pTT04iLCJwcm9jZWR1cmVDYWxsRnJvbUpTT04iLCJwcm9jZWR1cmVDYWxsVG9Qcm9jZWR1cmVDYWxsSlNPTiIsInByb2NlZHVyZVJlZmVyZW5jZUZyb21KU09OIiwicHJvY2VkdXJlUmVmZXJlbmNlVG9Qcm9jZWR1cmVSZWZlcmVuY2VKU09OIiwicHJvcGVydGllc0Zyb21KU09OIiwicHJvcGVydGllc1RvUHJvcGVydGllc0pTT04iLCJwcm9wZXJ0eVJlbGF0aW9uc1RvUHJvcGVydHlSZWxhdGlvbnNKU09OIiwicHJvdmlzaW9uYWxUb1Byb3Zpc2lvbmFsSlNPTiIsInJlZmVyZW5jZUZyb21KU09OIiwicmVmZXJlbmNlVG9SZWZlcmVuY2VKU09OIiwicmVmZXJlbmNlc0Zyb21KU09OIiwicmVmZXJlbmNlc1RvUmVmZXJlbmNlc0pTT04iLCJydWxlc0Zyb21KU09OIiwicnVsZXNUb1J1bGVzSlNPTiIsInNpZ25hdHVyZUZyb21KU09OIiwic2lnbmF0dXJlVG9TaWduYXR1cmVKU09OIiwic3RhdGVtZW50RnJvbUpTT04iLCJzdGF0ZW1lbnRUb1N0YXRlbWVudEpTT04iLCJzdGF0ZW1lbnRzRnJvbUpTT04iLCJzdGF0ZW1lbnRzVG9TdGF0ZW1lbnRzSlNPTiIsInN1YnN0aXR1dGlvbnNGcm9tSlNPTiIsInN1YnN0aXR1dGlvbnNUb1N1YnN0aXR1dGlvbnNKU09OIiwic3VwZXJUeXBlc0Zyb21KU09OIiwic3VwZXJUeXBlc1RvU3VwZXJUeXBlc0pTT04iLCJzdXBwb3NpdGlvbnNGcm9tSlNPTiIsInN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiIsInRlcm1Gcm9tSlNPTiIsInRlcm1Ub1Rlcm1KU09OIiwidGVybXNGcm9tSlNPTiIsInRlcm1zVG9UZXJtc0pTT04iLCJ0aGVvcmVtc0Zyb21KU09OIiwidGhlb3JlbXNUb1RoZW9yZW1zSlNPTiIsInR5cGVGcm9tSlNPTiIsInR5cGVQcmVmaXhlc0Zyb21KU09OIiwidHlwZVByZWZpeGVzVG9UeXBlUHJlZml4ZXNKU09OIiwidHlwZVRvVHlwZUpTT04iLCJ0eXBlc0Zyb21KU09OIiwidHlwZXNUb1R5cGVzSlNPTiIsInZhcmlhYmxlc0Zyb21KU09OIiwidmFyaWFibGVzVG9WYXJpYWJsZXNKU09OIiwibGVtbWFzIiwibWV0YUxlbW1hcyIsImpzb24iLCJjb250ZXh0IiwibmFtZSIsIm5hbWVKU09OIiwidGVybSIsInRlcm1KU09OIiwiVGVybSIsImVsZW1lbnRzIiwiZnJvbUpTT04iLCJ0eXBlIiwicHJlZml4TmFtZSIsIm5vbWluYWxUeXBlTmFtZSIsImZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUiLCJtZXRhVHlwZSIsIm1ldGFUeXBlTmFtZSIsImZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lIiwic3RhdGVtZW50IiwiU3RhdGVtZW50Iiwic3RhdGVtZW50SlNPTiIsImRlZHVjdGlvbiIsIkRlZHVjdGlvbiIsImRlZHVjdGlvbkpTT04iLCJzaWduYXR1cmUiLCJTaWduYXR1cmUiLCJzaWduYXR1cmVKU09OIiwicmVmZXJlbmNlIiwiUmVmZXJlbmNlIiwicmVmZXJlbmNlSlNPTiIsImNvbmNsdXNpb24iLCJDb25jbHVzaW9uIiwiY29uY2x1c2lvbkpTT04iLCJtZXRhdmFyaWFibGUiLCJNZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGVKU09OIiwicHJvY2VkdXJlQ2FsbCIsIlByb2NlZHVyZUNhbGwiLCJwcm9jZWR1cmVDYWxsSlNPTiIsInByb2NlZHVyZVJlZmVyZW5jZSIsIlByb2NlZHVyZVJlZmVyZW5jZSIsInByb2NlZHVyZVJlZmVyZW5jZUpTT04iLCJ0eXBlcyIsInR5cGVzSlNPTiIsIlR5cGUiLCJmb3JFYWNoIiwidHlwZUpTT04iLCJwdXNoIiwidGVybXMiLCJ0ZXJtc0pTT04iLCJtYXAiLCJydWxlcyIsIlJ1bGUiLCJydWxlc0pTT04iLCJydWxlSlNPTiIsInJ1bGUiLCJsYWJlbCIsIkxhYmVsIiwibGFiZWxKU09OIiwiZnJhbWVzIiwiRnJhbWUiLCJmcmFtZXNKU09OIiwiZnJhbWVKU09OIiwiZnJhbWUiLCJsYWJlbHMiLCJsYWJlbHNKU09OIiwiYXhpb21zIiwiQXhpb20iLCJheGlvbXNKU09OIiwiYXhpb21KU09OIiwiYXhpb20iLCJwcmVtaXNlcyIsIlByZW1pc2UiLCJwcmVtaXNlc0pTT04iLCJwcmVtaXNlSlNPTiIsInByZW1pc2UiLCJ0aGVvcmVtcyIsIlRoZW9yZW0iLCJ0aGVvcmVtc0pTT04iLCJ0aGVvcmVtSlNPTiIsInRoZW9yZW0iLCJ2YXJpYWJsZXMiLCJWYXJpYWJsZSIsInZhcmlhYmxlc0pTT04iLCJ2YXJpYWJsZUpTT04iLCJ2YXJpYWJsZSIsImVxdWFsaXRpZXMiLCJFcXVhbGl0eSIsImVxdWFsaXRpZXNKU09OIiwiZXF1YWxpdHlKU09OIiwiZXF1YWxpdHkiLCJwcm9wZXJ0aWVzIiwiUHJvcGVydHkiLCJwcm9wZXJ0aWVzSlNPTiIsInByb3BlcnR5SlNPTiIsInByb3BlcnR5Iiwic3VwZXJUeXBlcyIsInN1cGVyVHlwZXNKU09OIiwic3VwZXJUeXBlSlNPTiIsIm5vbWluYWxTdXBlclR5cGVOYW1lIiwic3VwZXJUeXBlIiwiaHlwb3RoZXNlcyIsIkh5cG90aGVzaXMiLCJoeXBvdGhlc2VzSlNPTiIsImh5cG90aGVzaXNKU09OIiwiaHlwb3RoZXNpcyIsInBhcmFtZXRlcnMiLCJQYXJhbWV0ZXIiLCJwYXJhbWV0ZXJzSlNPTiIsInBhcmFtZXRlckpTT04iLCJwYXJhbWV0ZXIiLCJqdWRnZW1lbnRzIiwiSnVkZ2VtZW50IiwianVkZ2VtZW50c0pTT04iLCJqdWRnZW1lbnRKU09OIiwianVkZ2VtZW50Iiwic3RhdGVtZW50cyIsInN0YXRlbWVudHNKU09OIiwiYXNzZXJ0aW9ucyIsIlR5cGVBc3NlcnRpb24iLCJEZWZpbmVkQXNzZXJ0aW9uIiwiUHJvcGVydHlBc3NlcnRpb24iLCJTdWJwcm9vZkFzc2VydGlvbiIsIlNhdGlzZmllc0Fzc2VydGlvbiIsIkNvbnRhaW5lZEFzc2VydGlvbiIsImFzc2VydGlvbnNKU09OIiwiYXNzZXJ0aW9uSlNPTiIsImFzc2VydGlvbiIsInJlZmVyZW5jZXMiLCJyZWZlcmVuY2VzSlNPTiIsImNvbmplY3R1cmVzIiwiQ29uamVjdHVyZSIsImNvbmplY3R1cmVzSlNPTiIsImNvbmplY3R1cmVKU09OIiwiY29uamVjdHVyZSIsImNvbWJpbmF0b3JzIiwiQ29tYmluYXRvciIsImNvbWJpbmF0b3JzSlNPTiIsImNvbWJpbmF0b3JKU09OIiwiY29tYmluYXRvciIsImFzc3VtcHRpb25zIiwiQXNzdW1wdGlvbiIsImFzc3VtcHRpb25zSlNPTiIsImFzc3VtcHRpb25KU09OIiwiYXNzdW1wdGlvbiIsInR5cGVQcmVmaXhlcyIsIlR5cGVQcmVmaXgiLCJ0eXBlUHJlZml4ZXNKU09OIiwidHlwZVByZWZpeEpTT04iLCJ0eXBlUHJlZml4IiwiY29uc3RydWN0b3JzIiwiQ29uc3RydWN0b3IiLCJjb25zdHJ1Y3RvcnNKU09OIiwiY29uc3RydWN0b3JKU09OIiwiY29uc3RydWN0b3IiLCJtZXRhdGhlb3JlbXMiLCJNZXRhdGhlb3JlbSIsIm1ldGF0aGVvcmVtc0pTT04iLCJtZXRhdGhlb3JlbUpTT04iLCJtZXRhdGhlb3JlbSIsInN1cHBvc2l0aW9ucyIsIlN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb25zSlNPTiIsInN1cHBvc2l0aW9uSlNPTiIsInN1cHBvc2l0aW9uIiwic3Vic3RpdHV0aW9ucyIsIlN0YXRlbWVudFN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvbnNKU09OIiwiU3Vic3RpdHV0aW9uIiwic3Vic3RpdHV0aW9uSlNPTiIsInN1YnN0aXR1dGlvbiIsIm1ldGF2YXJpYWJsZXMiLCJtZXRhdmFyaWFibGVzSlNPTiIsInJlbGVhc2VDb250ZXh0IiwiZW1waGVtZXJhbENvbnRleHQiLCJFcGhlbWVyYWxDb250ZXh0IiwidG9KU09OIiwibmVnYXRlZCIsIm5lZ2F0ZWRKU09OIiwibWV0YVR5cGVKU09OIiwiaWRlbnRpZmllciIsImlkZW50aWZpZXJKU09OIiwicHJvdmlzaW9uYWwiLCJwcm92aXNpb25hbEpTT04iLCJwcm9wZXJ0eVJlbGF0aW9ucyIsInByb3BlcnR5UmVsYXRpb25zSlNPTiIsInByb3BlcnR5UmVsYXRpb24iLCJwcm9wZXJ0eVJlbGF0aW9uSlNPTiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBa2NnQkE7ZUFBQUE7O1FBd2RBQztlQUFBQTs7UUFuWkFDO2VBQUFBOztRQTJiQUM7ZUFBQUE7O1FBanJCQUM7ZUFBQUE7O1FBMmhCQUM7ZUFBQUE7O1FBclRBQztlQUFBQTs7UUFpY0FDO2VBQUFBOztRQXZ6QkFDO2VBQUFBOztRQXlsQkFDO2VBQUFBOztRQW5QQUM7ZUFBQUE7O1FBdWNBQztlQUFBQTs7UUF2WUFDO2VBQUFBOztRQSthQUM7ZUFBQUE7O1FBOTNCQUM7ZUFBQUE7O1FBOG1CQUM7ZUFBQUE7O1FBOUVBQztlQUFBQTs7UUF2U0FDO2VBQUFBOztRQXFqQkFDO2VBQUFBOztRQTFPQUM7ZUFBQUE7O1FBM2FBQztlQUFBQTs7UUFpakJBQztlQUFBQTs7UUFoYUFDO2VBQUFBOztRQWtkQUM7ZUFBQUE7O1FBaElBQztlQUFBQTs7UUFsVEFDO2VBQUFBOztRQTBkQUM7ZUFBQUE7O1FBeHBCQUM7ZUFBQUE7O1FBZ2NBQztlQUFBQTs7UUFuYUFDO2VBQUFBOztRQXVoQkFDO2VBQUFBOztRQW54QkFDO2VBQUFBOztRQU1BQztlQUFBQTs7UUErQ0FDO2VBQUFBOztRQXNuQkFDO2VBQUFBOztRQXpIQUM7ZUFBQUE7O1FBeWFBQztlQUFBQTs7UUFsMUJBQztlQUFBQTs7UUF3bEJBQztlQUFBQTs7UUE5SEFD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
950
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvanNvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IEVwaGVtZXJhbENvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvZXBoZW1lcmFsXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBsZW1tYXNGcm9tTm90aGluZygpIHtcbiAgY29uc3QgbGVtbWFzID0gW107XG5cbiAgcmV0dXJuIGxlbW1hcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFMZW1tYXNGcm9tTm90aGluZygpIHtcbiAgY29uc3QgbWV0YUxlbW1hcyA9IFtdO1xuXG4gIHJldHVybiBtZXRhTGVtbWFzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmFtZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbmFtZSB9ID0ganNvbjtcblxuICBjb25zdCBuYW1lSlNPTiA9IG5hbWU7ICAvLy9cblxuICBuYW1lID0gbmFtZUpTT047ICAvLy9cblxuICByZXR1cm4gbmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1Gcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHRlcm0gfSA9IGpzb247XG5cbiAgaWYgKHRlcm0gIT09IG51bGwpIHtcbiAgICBjb25zdCB0ZXJtSlNPTiA9IHRlcm07ICAvLy9cblxuICAgIGpzb24gPSB0ZXJtSlNPTjsgIC8vL1xuXG4gICAgY29uc3QgeyBUZXJtIH0gPSBlbGVtZW50cztcblxuICAgIHRlcm0gPSBUZXJtLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHRlcm07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB0eXBlIH0gPSBqc29uO1xuXG4gIGlmICh0eXBlICE9PSBudWxsKSB7XG4gICAganNvbiA9IHR5cGU7ICAvLy9cblxuICAgIGNvbnN0IHsgbmFtZSwgcHJlZml4TmFtZSB9ID0ganNvbixcbiAgICAgICAgICBub21pbmFsVHlwZU5hbWUgPSAocHJlZml4TmFtZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3ByZWZpeE5hbWV9JHtuYW1lfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU7IC8vL1xuXG4gICAgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuICB9XG5cbiAgcmV0dXJuIHR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmcmFtZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgZnJhbWUgfSA9IGpzb247XG5cbiAgaWYgKGZyYW1lICE9PSBudWxsKSB7XG4gICAgY29uc3QgZnJhbWVKU09OID0gZnJhbWU7ICAvLy9cblxuICAgIGpzb24gPSBmcmFtZUpTT047ICAvLy9cblxuICAgIGNvbnN0IHsgRnJhbWUgfSA9IGVsZW1lbnRzO1xuXG4gICAgZnJhbWUgPSBGcmFtZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBmcmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5lZ2F0ZWRGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgbmVnYXRlZCB9ID0ganNvbjtcblxuICByZXR1cm4gbmVnYXRlZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFUeXBlRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBtZXRhVHlwZSB9ID0ganNvbjtcblxuICBpZiAobWV0YVR5cGUgIT09IG51bGwpIHtcbiAgICBqc29uID0gbWV0YVR5cGU7ICAvLy9cblxuICAgIGNvbnN0IHsgbmFtZSB9ID0ganNvbixcbiAgICAgICAgICBtZXRhVHlwZU5hbWUgPSBuYW1lOyAgLy8vXG5cbiAgICBtZXRhVHlwZSA9IGNvbnRleHQuZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUobWV0YVR5cGVOYW1lKTtcbiAgfVxuXG4gIHJldHVybiBtZXRhVHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudEZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc3RhdGVtZW50ID0gbnVsbCB9ID0ganNvbjtcblxuICBpZiAoc3RhdGVtZW50ICE9PSBudWxsKSB7XG4gICAgY29uc3QgeyBTdGF0ZW1lbnQgfSA9IGVsZW1lbnRzLFxuICAgICAgICAgIHN0YXRlbWVudEpTT04gPSBzdGF0ZW1lbnQ7ICAvLy9cblxuICAgIGpzb24gPSBzdGF0ZW1lbnRKU09OOyAvLy9cblxuICAgIHN0YXRlbWVudCA9IFN0YXRlbWVudC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWR1Y3Rpb25Gcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGRlZHVjdGlvbiB9ID0ganNvbjtcblxuICBjb25zdCB7IERlZHVjdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIGRlZHVjdGlvbkpTT04gPSBkZWR1Y3Rpb247ICAvLy9cblxuICBqc29uID0gZGVkdWN0aW9uSlNPTjsgIC8vL1xuXG4gIGRlZHVjdGlvbiA9IERlZHVjdGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gZGVkdWN0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmF0dXJlRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzaWduYXR1cmUgPSBudWxsIH0gPSBqc29uO1xuXG4gIGlmIChzaWduYXR1cmUgIT09IG51bGwpIHtcbiAgICBjb25zdCB7IFNpZ25hdHVyZSB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgc2lnbmF0dXJlSlNPTiA9IHNpZ25hdHVyZTsgIC8vL1xuXG4gICAganNvbiA9IHNpZ25hdHVyZUpTT047IC8vL1xuXG4gICAgc2lnbmF0dXJlID0gU2lnbmF0dXJlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHNpZ25hdHVyZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcmVmZXJlbmNlIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUmVmZXJlbmNlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcmVmZXJlbmNlSlNPTiA9IHJlZmVyZW5jZTsgIC8vL1xuXG4gIGpzb24gPSByZWZlcmVuY2VKU09OOyAvLy9cblxuICByZWZlcmVuY2UgPSBSZWZlcmVuY2UuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlkZW50aWZpZXJGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGlkZW50aWZpZXIgfSA9IGpzb247XG5cbiAgY29uc3QgaWRlbnRpZmllckpTT04gPSBpZGVudGlmaWVyOyAgLy8vXG5cbiAgaWRlbnRpZmllciA9IGlkZW50aWZpZXJKU09OOyAgLy8vXG5cbiAgcmV0dXJuIGlkZW50aWZpZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25jbHVzaW9uRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBjb25jbHVzaW9uIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQ29uY2x1c2lvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIGNvbmNsdXNpb25KU09OID0gY29uY2x1c2lvbjsgIC8vL1xuXG4gIGpzb24gPSBjb25jbHVzaW9uSlNPTjsgIC8vL1xuXG4gIGNvbmNsdXNpb24gPSBDb25jbHVzaW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBjb25jbHVzaW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBtZXRhdmFyaWFibGUgfSA9IGpzb247XG5cbiAgY29uc3QgeyBNZXRhdmFyaWFibGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBtZXRhdmFyaWFibGVKU09OID0gbWV0YXZhcmlhYmxlOyAgLy8vXG5cbiAganNvbiA9IG1ldGF2YXJpYWJsZUpTT047IC8vL1xuXG4gIG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gbWV0YXZhcmlhYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlQ2FsbEZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcHJvY2VkdXJlQ2FsbCA9IG51bGwgfSA9IGpzb247XG5cbiAgaWYgKHByb2NlZHVyZUNhbGwgIT09IG51bGwpIHtcbiAgICBjb25zdCB7IFByb2NlZHVyZUNhbGwgfSA9IGVsZW1lbnRzLFxuICAgICAgICAgIHByb2NlZHVyZUNhbGxKU09OID0gcHJvY2VkdXJlQ2FsbDsgIC8vL1xuXG4gICAganNvbiA9IHByb2NlZHVyZUNhbGxKU09OOyAvLy9cblxuICAgIHByb2NlZHVyZUNhbGwgPSBQcm9jZWR1cmVDYWxsLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHByb2NlZHVyZUNhbGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVSZWZlcmVuY2VGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHByb2NlZHVyZVJlZmVyZW5jZSB9ID0ganNvbjtcblxuICBjb25zdCB7IFByb2NlZHVyZVJlZmVyZW5jZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHByb2NlZHVyZVJlZmVyZW5jZUpTT04gPSBwcm9jZWR1cmVSZWZlcmVuY2U7ICAvLy9cblxuICBqc29uID0gcHJvY2VkdXJlUmVmZXJlbmNlSlNPTjsgIC8vL1xuXG4gIHByb2NlZHVyZVJlZmVyZW5jZSA9IFByb2NlZHVyZVJlZmVyZW5jZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gcHJvY2VkdXJlUmVmZXJlbmNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZXNGcm9tSlNPTihqc29uLCB0eXBlcywgY29udGV4dCkge1xuICBjb25zdCB7IHR5cGVzOiB0eXBlc0pTT04gfSA9IGpzb247XG5cbiAgY29uc3QgeyBUeXBlIH0gPSBlbGVtZW50cztcblxuICB0eXBlc0pTT04uZm9yRWFjaCgodHlwZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdHlwZUpTT04sICAvLy9cbiAgICAgICAgICB0eXBlID0gVHlwZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHR5cGVzLnB1c2godHlwZSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHRlcm1zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVGVybSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHRlcm1zSlNPTiA9IHRlcm1zOyAvLy9cblxuICB0ZXJtcyA9IHRlcm1zSlNPTi5tYXAoKHRlcm1KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHRlcm1KU09OLCAgLy8vXG4gICAgICAgICAgdGVybSA9IFRlcm0uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdGVybTtcbiAgfSk7XG5cbiAgcmV0dXJuIHRlcm1zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVsZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHJ1bGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUnVsZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHJ1bGVzSlNPTiA9IHJ1bGVzOyAvLy9cblxuICBydWxlcyA9IHJ1bGVzSlNPTi5tYXAoKHJ1bGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHJ1bGVKU09OLCAgLy8vXG4gICAgICAgICAgcnVsZSA9IFJ1bGUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcnVsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJ1bGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGxhYmVsIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTGFiZWwgfSA9IGVsZW1lbnRzLFxuICAgICAgICBsYWJlbEpTT04gPSBsYWJlbDsgIC8vL1xuXG4gIGpzb24gPSBsYWJlbEpTT047IC8vL1xuXG4gIGxhYmVsID0gTGFiZWwuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGxhYmVsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJhbWVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBmcmFtZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBGcmFtZSB9ID0gZWxlbWVudHMsXG4gICAgZnJhbWVzSlNPTiA9IGZyYW1lczsgLy8vXG5cbiAgZnJhbWVzID0gZnJhbWVzSlNPTi5tYXAoKGZyYW1lSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBmcmFtZUpTT04sICAvLy9cbiAgICAgIGZyYW1lID0gRnJhbWUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZnJhbWU7XG4gIH0pO1xuXG4gIHJldHVybiBmcmFtZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbHNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGxhYmVscyB9ID0ganNvbjtcblxuICBjb25zdCB7IExhYmVsIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbGFiZWxzSlNPTiA9IGxhYmVsczsgIC8vL1xuXG4gIGxhYmVscyA9IGxhYmVsc0pTT04ubWFwKChsYWJlbEpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gbGFiZWxKU09OLCAvLy9cbiAgICAgICAgICBsYWJlbCA9IExhYmVsLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGxhYmVsO1xuICB9KTtcblxuICByZXR1cm4gbGFiZWxzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXhpb21zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBheGlvbXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBBeGlvbSB9ID0gZWxlbWVudHMsXG4gICAgICAgIGF4aW9tc0pTT04gPSBheGlvbXM7IC8vL1xuXG4gIGF4aW9tcyA9IGF4aW9tc0pTT04ubWFwKChheGlvbUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gYXhpb21KU09OLCAgLy8vXG4gICAgICAgICAgYXhpb20gPSBBeGlvbS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBheGlvbTtcbiAgfSk7XG5cbiAgcmV0dXJuIGF4aW9tcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZW1pc2VzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcmVtaXNlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFByZW1pc2UgfSA9IGVsZW1lbnRzLFxuICAgICAgICBwcmVtaXNlc0pTT04gPSBwcmVtaXNlczsgIC8vL1xuXG4gIHByZW1pc2VzID0gcHJlbWlzZXNKU09OLm1hcCgocHJlbWlzZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcHJlbWlzZUpTT04sIC8vL1xuICAgICAgICAgIHByZW1pc2UgPSBQcmVtaXNlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByZW1pc2U7XG4gIH0pO1xuXG4gIHJldHVybiBwcmVtaXNlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRoZW9yZW1zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB0aGVvcmVtcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFRoZW9yZW0gfSA9IGVsZW1lbnRzLFxuICAgICAgICB0aGVvcmVtc0pTT04gPSB0aGVvcmVtczsgLy8vXG5cbiAgdGhlb3JlbXMgPSB0aGVvcmVtc0pTT04ubWFwKCh0aGVvcmVtSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0aGVvcmVtSlNPTiwgIC8vL1xuICAgICAgICAgIHRoZW9yZW0gPSBUaGVvcmVtLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHRoZW9yZW07XG4gIH0pO1xuXG4gIHJldHVybiB0aGVvcmVtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdmFyaWFibGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVmFyaWFibGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICB2YXJpYWJsZXNKU09OID0gdmFyaWFibGVzOyAvLy9cblxuICB2YXJpYWJsZXMgPSB2YXJpYWJsZXNKU09OLm1hcCgodmFyaWFibGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHZhcmlhYmxlSlNPTiwgIC8vL1xuICAgICAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdmFyaWFibGU7XG4gIH0pO1xuXG4gIHJldHVybiB2YXJpYWJsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcXVhbGl0aWVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBlcXVhbGl0aWVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgRXF1YWxpdHkgfSA9IGVsZW1lbnRzLFxuICAgICAgICBlcXVhbGl0aWVzSlNPTiA9IGVxdWFsaXRpZXM7IC8vL1xuXG4gIGVxdWFsaXRpZXMgPSBlcXVhbGl0aWVzSlNPTi5tYXAoKGVxdWFsaXR5SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBlcXVhbGl0eUpTT04sICAvLy9cbiAgICAgICAgICBlcXVhbGl0eSA9IEVxdWFsaXR5LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5O1xuICB9KTtcblxuICByZXR1cm4gZXF1YWxpdGllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3BlcnRpZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHByb3BlcnRpZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBQcm9wZXJ0eSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHByb3BlcnRpZXNKU09OID0gcHJvcGVydGllczsgLy8vXG5cbiAgcHJvcGVydGllcyA9IHByb3BlcnRpZXNKU09OLm1hcCgocHJvcGVydHlKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHByb3BlcnR5SlNPTiwgIC8vL1xuICAgICAgICAgIHByb3BlcnR5ID0gUHJvcGVydHkuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcHJvcGVydHk7XG4gIH0pO1xuXG4gIHJldHVybiBwcm9wZXJ0aWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwZXJUeXBlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgeyBzdXBlclR5cGVzOiBzdXBlclR5cGVzSlNPTiB9ID0ganNvbjtcblxuICBjb25zdCBzdXBlclR5cGVzID0gc3VwZXJUeXBlc0pTT04ubWFwKChzdXBlclR5cGVKU09OKSA9PiB7XG4gICAgICAgICAgY29uc3QganNvbiA9IHN1cGVyVHlwZUpTT04sICAvLy9cbiAgICAgICAgICAgICAgICB7IG5hbWUsIHByZWZpeE5hbWUgfSA9IGpzb24sXG4gICAgICAgICAgICAgICAgbm9taW5hbFN1cGVyVHlwZU5hbWUgPSAocHJlZml4TmFtZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtwcmVmaXhOYW1lfSR7bmFtZX1gIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgLy8vXG4gICAgICAgICAgICAgICAgc3VwZXJUeXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxTdXBlclR5cGVOYW1lKTtcblxuICAgICAgICAgIHJldHVybiBzdXBlclR5cGU7XG4gICAgICAgIH0pO1xuXG4gIHJldHVybiBzdXBlclR5cGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaHlwb3RoZXNlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgaHlwb3RoZXNlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IEh5cG90aGVzaXMgfSA9IGVsZW1lbnRzLFxuICAgICAgICBoeXBvdGhlc2VzSlNPTiA9IGh5cG90aGVzZXM7ICAvLy9cblxuICBoeXBvdGhlc2VzID0gaHlwb3RoZXNlc0pTT04ubWFwKChoeXBvdGhlc2lzSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBoeXBvdGhlc2lzSlNPTiwgLy8vXG4gICAgICAgICAgaHlwb3RoZXNpcyA9IEh5cG90aGVzaXMuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gaHlwb3RoZXNpcztcbiAgfSk7XG5cbiAgcmV0dXJuIGh5cG90aGVzZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJhbWV0ZXJzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwYXJhbWV0ZXJzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUGFyYW1ldGVyIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcGFyYW1ldGVyc0pTT04gPSBwYXJhbWV0ZXJzOyAvLy9cblxuICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVyc0pTT04ubWFwKChwYXJhbWV0ZXJKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHBhcmFtZXRlckpTT04sICAvLy9cbiAgICAgICAgICBwYXJhbWV0ZXIgPSBQYXJhbWV0ZXIuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcGFyYW1ldGVyO1xuICB9KTtcblxuICByZXR1cm4gcGFyYW1ldGVycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGp1ZGdlbWVudHNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGp1ZGdlbWVudHMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBKdWRnZW1lbnQgfSA9IGVsZW1lbnRzLFxuICAgICAgICBqdWRnZW1lbnRzSlNPTiA9IGp1ZGdlbWVudHM7IC8vL1xuXG4gIGp1ZGdlbWVudHMgPSBqdWRnZW1lbnRzSlNPTi5tYXAoKGp1ZGdlbWVudEpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0ganVkZ2VtZW50SlNPTiwgIC8vL1xuICAgICAgICAgIGp1ZGdlbWVudCA9IEp1ZGdlbWVudC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBqdWRnZW1lbnQ7XG4gIH0pO1xuXG4gIHJldHVybiBqdWRnZW1lbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVtZW50c0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc3RhdGVtZW50cyB9ID0ganNvbjtcblxuICBjb25zdCB7IFN0YXRlbWVudCB9ID0gZWxlbWVudHMsXG4gICAgICAgIHN0YXRlbWVudHNKU09OID0gc3RhdGVtZW50czsgLy8vXG5cbiAgc3RhdGVtZW50cyA9IHN0YXRlbWVudHNKU09OLm1hcCgoc3RhdGVtZW50SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdGF0ZW1lbnRKU09OLCAgLy8vXG4gICAgICAgICAgc3RhdGVtZW50ID0gU3RhdGVtZW50LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudDtcbiAgfSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBhc3NlcnRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVHlwZUFzc2VydGlvbiwgRGVmaW5lZEFzc2VydGlvbiwgUHJvcGVydHlBc3NlcnRpb24sIFN1YnByb29mQXNzZXJ0aW9uLCBTYXRpc2ZpZXNBc3NlcnRpb24sIENvbnRhaW5lZEFzc2VydGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIGFzc2VydGlvbnNKU09OID0gYXNzZXJ0aW9uczsgLy8vXG5cbiAgYXNzZXJ0aW9ucyA9IGFzc2VydGlvbnNKU09OLm1hcCgoYXNzZXJ0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBhc3NlcnRpb25KU09OLCAgLy8vXG4gICAgICAgICAgYXNzZXJ0aW9uID0gVHlwZUFzc2VydGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICBEZWZpbmVkQXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgIFByb3BlcnR5QXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgIFN1YnByb29mQXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgIFNhdGlzZmllc0Fzc2VydGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICBDb250YWluZWRBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gYXNzZXJ0aW9uO1xuICB9KTtcblxuICByZXR1cm4gYXNzZXJ0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHJlZmVyZW5jZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBSZWZlcmVuY2UgfSA9IGVsZW1lbnRzLFxuICAgICAgICByZWZlcmVuY2VzSlNPTiA9IHJlZmVyZW5jZXM7IC8vL1xuXG4gIHJlZmVyZW5jZXMgPSByZWZlcmVuY2VzSlNPTi5tYXAoKHJlZmVyZW5jZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcmVmZXJlbmNlSlNPTiwgIC8vL1xuICAgICAgICAgIHJlZmVyZW5jZSA9IFJlZmVyZW5jZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiByZWZlcmVuY2U7XG4gIH0pO1xuXG4gIHJldHVybiByZWZlcmVuY2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uamVjdHVyZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbmplY3R1cmVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQ29uamVjdHVyZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIGNvbmplY3R1cmVzSlNPTiA9IGNvbmplY3R1cmVzOyAvLy9cblxuICBjb25qZWN0dXJlcyA9IGNvbmplY3R1cmVzSlNPTi5tYXAoKGNvbmplY3R1cmVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGNvbmplY3R1cmVKU09OLCAgLy8vXG4gICAgICAgICAgY29uamVjdHVyZSA9IENvbmplY3R1cmUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29uamVjdHVyZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbmplY3R1cmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tYmluYXRvcnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbWJpbmF0b3JzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQ29tYmluYXRvciB9ID0gZWxlbWVudHMsXG4gICAgICAgIGNvbWJpbmF0b3JzSlNPTiA9IGNvbWJpbmF0b3JzOyAvLy9cblxuICBjb21iaW5hdG9ycyA9IGNvbWJpbmF0b3JzSlNPTi5tYXAoKGNvbWJpbmF0b3JKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGNvbWJpbmF0b3JKU09OLCAgLy8vXG4gICAgICAgICAgY29tYmluYXRvciA9IENvbWJpbmF0b3IuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29tYmluYXRvcjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbWJpbmF0b3JzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzdW1wdGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGFzc3VtcHRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQXNzdW1wdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIGFzc3VtcHRpb25zSlNPTiA9IGFzc3VtcHRpb25zOyAvLy9cblxuICBhc3N1bXB0aW9ucyA9IGFzc3VtcHRpb25zSlNPTi5tYXAoKGFzc3VtcHRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGFzc3VtcHRpb25KU09OLCAgLy8vXG4gICAgICAgICAgYXNzdW1wdGlvbiA9IEFzc3VtcHRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gYXNzdW1wdGlvbjtcbiAgfSk7XG5cbiAgcmV0dXJuIGFzc3VtcHRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZVByZWZpeGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB0eXBlUHJlZml4ZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBUeXBlUHJlZml4IH0gPSBlbGVtZW50cyxcbiAgICAgICAgdHlwZVByZWZpeGVzSlNPTiA9IHR5cGVQcmVmaXhlczsgLy8vXG5cbiAgdHlwZVByZWZpeGVzID0gdHlwZVByZWZpeGVzSlNPTi5tYXAoKHR5cGVQcmVmaXhKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHR5cGVQcmVmaXhKU09OLCAgLy8vXG4gICAgICAgICAgdHlwZVByZWZpeCA9IFR5cGVQcmVmaXguZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdHlwZVByZWZpeDtcbiAgfSk7XG5cbiAgcmV0dXJuIHR5cGVQcmVmaXhlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cnVjdG9yc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29uc3RydWN0b3JzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQ29uc3RydWN0b3IgfSA9IGVsZW1lbnRzLFxuICAgICAgICBjb25zdHJ1Y3RvcnNKU09OID0gY29uc3RydWN0b3JzOyAvLy9cblxuICBjb25zdHJ1Y3RvcnMgPSBjb25zdHJ1Y3RvcnNKU09OLm1hcCgoY29uc3RydWN0b3JKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGNvbnN0cnVjdG9ySlNPTiwgIC8vL1xuICAgICAgICAgIGNvbnN0cnVjdG9yID0gQ29uc3RydWN0b3IuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29uc3RydWN0b3I7XG4gIH0pO1xuXG4gIHJldHVybiBjb25zdHJ1Y3RvcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdGhlb3JlbXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGF0aGVvcmVtcyB9ID0ganNvbjtcblxuICBjb25zdCB7IE1ldGF0aGVvcmVtIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbWV0YXRoZW9yZW1zSlNPTiA9IG1ldGF0aGVvcmVtczsgLy8vXG5cbiAgbWV0YXRoZW9yZW1zID0gbWV0YXRoZW9yZW1zSlNPTi5tYXAoKG1ldGF0aGVvcmVtSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBtZXRhdGhlb3JlbUpTT04sICAvLy9cbiAgICAgICAgICBtZXRhdGhlb3JlbSA9IE1ldGF0aGVvcmVtLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG1ldGF0aGVvcmVtO1xuICB9KTtcblxuICByZXR1cm4gbWV0YXRoZW9yZW1zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwcG9zaXRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzdXBwb3NpdGlvbnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBTdXBwb3NpdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIHN1cHBvc2l0aW9uc0pTT04gPSBzdXBwb3NpdGlvbnM7ICAvLy9cblxuICBzdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnNKU09OLm1hcCgoc3VwcG9zaXRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHN1cHBvc2l0aW9uSlNPTiwgLy8vXG4gICAgICAgICAgc3VwcG9zaXRpb24gPSBTdXBwb3NpdGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzdXBwb3NpdGlvbjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1cHBvc2l0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnN0aXR1dGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHN1YnN0aXR1dGlvbnMgPSBbXSB9ID0ganNvbjsgIC8vL1xuXG4gIGNvbnN0IHsgU3RhdGVtZW50U3Vic3RpdHV0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgc3Vic3RpdHV0aW9uc0pTT04gPSBzdWJzdGl0dXRpb25zLCAgLy8vXG4gICAgICAgIFN1YnN0aXR1dGlvbiA9IFN0YXRlbWVudFN1YnN0aXR1dGlvbjsgLy8vXG5cbiAgc3Vic3RpdHV0aW9ucyA9IHN1YnN0aXR1dGlvbnNKU09OLm1hcCgoc3Vic3RpdHV0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdWJzdGl0dXRpb25KU09OLCAgLy8vXG4gICAgICAgICAgc3Vic3RpdHV0aW9uID0gU3Vic3RpdHV0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1YnN0aXR1dGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdmFyaWFibGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBtZXRhdmFyaWFibGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTWV0YXZhcmlhYmxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbWV0YXZhcmlhYmxlc0pTT04gPSBtZXRhdmFyaWFibGVzOyAvLy9cblxuICBtZXRhdmFyaWFibGVzID0gbWV0YXZhcmlhYmxlc0pTT04ubWFwKChtZXRhdmFyaWFibGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IG1ldGF2YXJpYWJsZUpTT04sICAvLy9cbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSBNZXRhdmFyaWFibGUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlO1xuICB9KTtcblxuICByZXR1cm4gbWV0YXZhcmlhYmxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVwaGVtZXJhbENvbnRleHRGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHJlbGVhc2VDb250ZXh0ID0gY29udGV4dDtcblxuICAoe2NvbnRleHR9ID0ganNvbik7XG5cbiAganNvbiA9IGNvbnRleHQ7IC8vL1xuXG4gIGNvbnRleHQgPSByZWxlYXNlQ29udGV4dDsgLy8vXG5cbiAgY29uc3QgZW1waGVtZXJhbENvbnRleHQgPSBFcGhlbWVyYWxDb250ZXh0LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBlbXBoZW1lcmFsQ29udGV4dDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3BlcnR5UmVsYXRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcm9wZXJ0eVJlbGF0aW9ucyB9ID0ganNvbjtcblxuICBjb25zdCB7IFByb3BlcnR5UmVsYXRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBwcm9wZXJ0eVJlbGF0aW9uc0pTT04gPSBwcm9wZXJ0eVJlbGF0aW9uczsgLy8vXG5cbiAgcHJvcGVydHlSZWxhdGlvbnMgPSBwcm9wZXJ0eVJlbGF0aW9uc0pTT04ubWFwKChwcm9wZXJ0eVJlbGF0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBwcm9wZXJ0eVJlbGF0aW9uSlNPTiwgIC8vL1xuICAgICAgICAgIHByb3BlcnR5UmVsYXRpb24gPSBQcm9wZXJ0eVJlbGF0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByb3BlcnR5UmVsYXRpb247XG4gIH0pO1xuXG4gIHJldHVybiBwcm9wZXJ0eVJlbGF0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5hbWVUb05hbWVKU09OKG5hbWUpIHtcbiAgY29uc3QgbmFtZUpTT04gPSBuYW1lOyAgLy8vXG5cbiAgcmV0dXJuIG5hbWVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybVRvVGVybUpTT04odGVybSkge1xuICBjb25zdCB0ZXJtSlNPTiA9ICh0ZXJtICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICB0ZXJtLnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICByZXR1cm4gdGVybUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlVG9UeXBlSlNPTih0eXBlKSB7XG4gIGNvbnN0IHR5cGVKU09OID0gKHR5cGUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgIHR5cGUudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiB0eXBlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyYW1lVG9GcmFtZUpTT04oZnJhbWUpIHtcbiAgY29uc3QgZnJhbWVKU09OID0gKGZyYW1lICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgZnJhbWUudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICByZXR1cm4gZnJhbWVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxUb0xhYmVsSlNPTihsYWJlbCkge1xuICBjb25zdCBsYWJlbEpTT04gPSBsYWJlbC50b0pTT04oKTtcblxuICByZXR1cm4gbGFiZWxKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmVnYXRlZFRvTmVnYXRlZEpTT04obmVnYXRlZCkge1xuICBjb25zdCBuZWdhdGVkSlNPTiA9IG5lZ2F0ZWQ7ICAvLy9cblxuICByZXR1cm4gbmVnYXRlZEpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhVHlwZVRvTWV0YVR5cGVKU09OKG1ldGFUeXBlKSB7XG4gIGNvbnN0IG1ldGFUeXBlSlNPTiA9IChtZXRhVHlwZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFUeXBlLnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIG1ldGFUeXBlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZVRvUmVmZXJlbmNlSlNPTihyZWZlcmVuY2UpIHtcbiAgY29uc3QgcmVmZXJlbmNlSlNPTiA9IHJlZmVyZW5jZS50b0pTT04oKTtcblxuICByZXR1cm4gcmVmZXJlbmNlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudFRvU3RhdGVtZW50SlNPTihzdGF0ZW1lbnQpIHtcbiAgY29uc3Qgc3RhdGVtZW50SlNPTiA9IChzdGF0ZW1lbnQgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50LnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OKGRlZHVjdGlvbikge1xuICBjb25zdCBkZWR1Y3Rpb25KU09OID0gZGVkdWN0aW9uLnRvSlNPTigpO1xuXG4gIHJldHVybiBkZWR1Y3Rpb25KU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmF0dXJlVG9TaWduYXR1cmVKU09OKHNpZ25hdHVyZSkge1xuICBjb25zdCBzaWduYXR1cmVKU09OID0gKHNpZ25hdHVyZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYXR1cmUudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIHNpZ25hdHVyZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpZGVudGlmaWVyVG9JZGVudGlmaWVySlNPTihpZGVudGlmaWVyKSB7XG4gIGNvbnN0IGlkZW50aWZpZXJKU09OID0gaWRlbnRpZmllcjsgIC8vL1xuXG4gIHJldHVybiBpZGVudGlmaWVySlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmNsdXNpb25Ub0NvbmNsdXNpb25KU09OKGNvbmNsdXNpb24pIHtcbiAgY29uc3QgY29uY2x1c2lvbkpTT04gPSBjb25jbHVzaW9uLnRvSlNPTigpO1xuXG4gIHJldHVybiBjb25jbHVzaW9uSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3Zpc2lvbmFsVG9Qcm92aXNpb25hbEpTT04ocHJvdmlzaW9uYWwpIHtcbiAgY29uc3QgcHJvdmlzaW9uYWxKU09OID0gcHJvdmlzaW9uYWw7ICAvLy9cblxuICByZXR1cm4gcHJvdmlzaW9uYWxKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlVG9NZXRhdmFyaWFibGVKU09OKG1ldGF2YXJpYWJsZSkge1xuICBjb25zdCBtZXRhdmFyaWFibGVKU09OID0gbWV0YXZhcmlhYmxlLnRvSlNPTigpO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlQ2FsbFRvUHJvY2VkdXJlQ2FsbEpTT04ocHJvY2VkdXJlQ2FsbCkge1xuICBjb25zdCBwcm9jZWR1cmVDYWxsSlNPTiA9IChwcm9jZWR1cmVDYWxsICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZWR1cmVDYWxsLnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICByZXR1cm4gcHJvY2VkdXJlQ2FsbEpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVSZWZlcmVuY2VUb1Byb2NlZHVyZVJlZmVyZW5jZUpTT04ocHJvY2VkdXJlUmVmZXJlbmNlKSB7XG4gIGNvbnN0IHByb2NlZHVyZVJlZmVyZW5jZUpTT04gPSBwcm9jZWR1cmVSZWZlcmVuY2UudG9KU09OKCk7XG5cbiAgcmV0dXJuIHByb2NlZHVyZVJlZmVyZW5jZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtc1RvVGVybXNKU09OKHRlcm1zKSB7XG4gIGNvbnN0IHRlcm1zSlNPTiA9IHRlcm1zLm1hcCgodGVybSkgPT4ge1xuICAgIGNvbnN0IHRlcm1KU09OID0gdGVybS50b0pTT04oKTtcblxuICAgIHJldHVybiB0ZXJtSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHRlcm1zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVzVG9UeXBlc0pTT04odHlwZXMpIHtcbiAgY29uc3QgdHlwZXNKU09OID0gdHlwZXMubWFwKCh0eXBlKSA9PiB7XG4gICAgY29uc3QgdHlwZUpTT04gPSB0eXBlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHR5cGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gdHlwZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVsZXNUb1J1bGVzSlNPTihydWxlcykge1xuICBjb25zdCBydWxlc0pTT04gPSBydWxlcy5tYXAoKHJ1bGUpID0+IHtcbiAgICBjb25zdCBydWxlSlNPTiA9IHJ1bGUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcnVsZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBydWxlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbHNUb0xhYmVsc0pTT04obGFiZWxzKSB7XG4gIGNvbnN0IGxhYmVsc0pTT04gPSBsYWJlbHMubWFwKChsYWJlbCkgPT4ge1xuICAgIGNvbnN0IGxhYmVsSlNPTiA9IGxhYmVsLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGxhYmVsSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGxhYmVsc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmcmFtZXNUb0ZyYW1lc0pTT04oZnJhbWVzKSB7XG4gIGNvbnN0IGZyYW1lc0pTT04gPSBmcmFtZXMubWFwKChmcmFtZSkgPT4ge1xuICAgIGNvbnN0IGZyYW1lSlNPTiA9IGZyYW1lLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGZyYW1lSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGZyYW1lc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBheGlvbXNUb0F4aW9tc0pTT04oYXhpb21zKSB7XG4gIGNvbnN0IGF4aW9tc0pTT04gPSBheGlvbXMubWFwKChheGlvbSkgPT4ge1xuICAgIGNvbnN0IGF4aW9tSlNPTiA9IGF4aW9tLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGF4aW9tSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGF4aW9tc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVtaXNlc1RvUHJlbWlzZXNKU09OKHByZW1pc2VzKSB7XG4gIGNvbnN0IHByZW1pc2VzSlNPTiA9IHByZW1pc2VzLm1hcCgocHJlbWlzZSkgPT4ge1xuICAgIGNvbnN0IHByZW1pc2VKU09OID0gcHJlbWlzZS50b0pTT04oKTtcblxuICAgIHJldHVybiBwcmVtaXNlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHByZW1pc2VzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRoZW9yZW1zVG9UaGVvcmVtc0pTT04odGhlb3JlbXMpIHtcbiAgY29uc3QgdGhlb3JlbXNKU09OID0gdGhlb3JlbXMubWFwKCh0aGVvcmVtKSA9PiB7XG4gICAgY29uc3QgdGhlb3JlbUpTT04gPSB0aGVvcmVtLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHRoZW9yZW1KU09OO1xuICB9KTtcblxuICByZXR1cm4gdGhlb3JlbXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVzVG9WYXJpYWJsZXNKU09OKHZhcmlhYmxlcykge1xuICBjb25zdCB2YXJpYWJsZXNKU09OID0gdmFyaWFibGVzLm1hcCgodmFyaWFibGUpID0+IHtcbiAgICBjb25zdCB2YXJpYWJsZUpTT04gPSB2YXJpYWJsZS50b0pTT04oKTtcblxuICAgIHJldHVybiB2YXJpYWJsZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiB2YXJpYWJsZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04oaHlwb3RoZXNlcykge1xuICBjb25zdCBoeXBvdGhlc2VzSlNPTiA9IGh5cG90aGVzZXMubWFwKChoeXBvdGhlc2lzKSA9PiB7XG4gICAgY29uc3QgaHlwb3RoZXNpc0pTT04gPSBoeXBvdGhlc2lzLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGh5cG90aGVzaXNKU09OO1xuICB9KTtcblxuICByZXR1cm4gaHlwb3RoZXNlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBlclR5cGVzVG9TdXBlclR5cGVzSlNPTihzdXBlclR5cGVzKSB7XG4gIGNvbnN0IHN1cGVyVHlwZXNKU09OID0gc3VwZXJUeXBlcy5tYXAoKHN1cGVyVHlwZSkgPT4ge1xuICAgIGNvbnN0IHN1cGVyVHlwZUpTT04gPSBzdXBlclR5cGUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gc3VwZXJUeXBlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1cGVyVHlwZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyYW1ldGVyc1RvUGFyYW1ldGVyc0pTT04ocGFyYW1ldGVycykge1xuICBjb25zdCBwYXJhbWV0ZXJzSlNPTiA9IHBhcmFtZXRlcnMubWFwKChwYXJhbWV0ZXIpID0+IHtcbiAgICBjb25zdCBwYXJhbWV0ZXJKU09OID0gcGFyYW1ldGVyLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHBhcmFtZXRlckpTT047XG4gIH0pO1xuXG4gIHJldHVybiBwYXJhbWV0ZXJzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3BlcnRpZXNUb1Byb3BlcnRpZXNKU09OKHByb3BlcnRpZXMpIHtcbiAgY29uc3QgcHJvcGVydGllc0pTT04gPSBwcm9wZXJ0aWVzLm1hcCgocHJvcGVydHkpID0+IHtcbiAgICBjb25zdCBwcm9wZXJ0eUpTT04gPSBwcm9wZXJ0eS50b0pTT04oKTtcblxuICAgIHJldHVybiBwcm9wZXJ0eUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBwcm9wZXJ0aWVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGp1ZGdlbWVudHNUb0p1ZGdlbWVudHNKU09OKGp1ZGdlbWVudHMpIHtcbiAgY29uc3QganVkZ2VtZW50c0pTT04gPSBqdWRnZW1lbnRzLm1hcCgoanVkZ2VtZW50KSA9PiB7XG4gICAgY29uc3QganVkZ2VtZW50SlNPTiA9IGp1ZGdlbWVudC50b0pTT04oKTtcblxuICAgIHJldHVybiBqdWRnZW1lbnRKU09OO1xuICB9KTtcblxuICByZXR1cm4ganVkZ2VtZW50c0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcXVhbGl0aWVzVG9FcXVhbGl0aWVzSlNPTihlcXVhbGl0aWVzKSB7XG4gIGNvbnN0IGVxdWFsaXRpZXNKU09OID0gZXF1YWxpdGllcy5tYXAoKGVxdWFsaXR5KSA9PiB7XG4gICAgY29uc3QgZXF1YWxpdHlKU09OID0gZXF1YWxpdHkudG9KU09OKCk7XG5cbiAgICByZXR1cm4gZXF1YWxpdHlKU09OO1xuICB9KTtcblxuICByZXR1cm4gZXF1YWxpdGllc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRzVG9TdGF0ZW1lbnRzSlNPTihzdGF0ZW1lbnRzKSB7XG4gIGNvbnN0IHN0YXRlbWVudHNKU09OID0gc3RhdGVtZW50cy5tYXAoKHN0YXRlbWVudCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlbWVudEpTT04gPSBzdGF0ZW1lbnQudG9KU09OKCk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudHNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0aW9uc1RvQXNzZXJ0aW9uc0pTT04oYXNzZXJ0aW9ucykge1xuICBjb25zdCBhc3NlcnRpb25zSlNPTiA9IGFzc2VydGlvbnMubWFwKChhc3NlcnRpb24pID0+IHtcbiAgICBjb25zdCBhc3NlcnRpb25KU09OID0gYXNzZXJ0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGFzc2VydGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBhc3NlcnRpb25zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZXNUb1JlZmVyZW5jZXNKU09OKHJlZmVyZW5jZXMpIHtcbiAgY29uc3QgcmVmZXJlbmNlc0pTT04gPSByZWZlcmVuY2VzLm1hcCgocmVmZXJlbmNlKSA9PiB7XG4gICAgY29uc3QgcmVmZXJlbmNlSlNPTiA9IHJlZmVyZW5jZS50b0pTT04oKTtcblxuICAgIHJldHVybiByZWZlcmVuY2VKU09OO1xuICB9KTtcblxuICByZXR1cm4gcmVmZXJlbmNlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25qZWN0dXJlc1RvQ29uamVjdHVyZXNKU09OKGNvbmplY3R1cmVzKSB7XG4gIGNvbnN0IGNvbmplY3R1cmVzSlNPTiA9IGNvbmplY3R1cmVzLm1hcCgoY29uamVjdHVyZSkgPT4ge1xuICAgIGNvbnN0IGNvbmplY3R1cmVKU09OID0gY29uamVjdHVyZS50b0pTT04oKTtcblxuICAgIHJldHVybiBjb25qZWN0dXJlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbmplY3R1cmVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmF0b3JzVG9Db21iaW5hdG9yc0pTT04oY29tYmluYXRvcnMpIHtcbiAgY29uc3QgY29tYmluYXRvcnNKU09OID0gY29tYmluYXRvcnMubWFwKChjb21iaW5hdG9yKSA9PiB7XG4gICAgY29uc3QgY29tYmluYXRvckpTT04gPSBjb21iaW5hdG9yLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGNvbWJpbmF0b3JKU09OO1xuICB9KTtcblxuICByZXR1cm4gY29tYmluYXRvcnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzdW1wdGlvbnNUb0Fzc3VtcHRpb25zSlNPTihhc3N1bXB0aW9ucykge1xuICBjb25zdCBhc3N1bXB0aW9uc0pTT04gPSBhc3N1bXB0aW9ucy5tYXAoKGFzc3VtcHRpb24pID0+IHtcbiAgICBjb25zdCBhc3N1bXB0aW9uSlNPTiA9IGFzc3VtcHRpb24udG9KU09OKCk7XG5cbiAgICByZXR1cm4gYXNzdW1wdGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBhc3N1bXB0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBwb3NpdGlvbnNUb1N1cHBvc2l0aW9uc0pTT04oc3VwcG9zaXRpb25zKSB7XG4gIGNvbnN0IHN1cHBvc2l0aW9uc0pTT04gPSBzdXBwb3NpdGlvbnMubWFwKChzdXBwb3NpdGlvbikgPT4ge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uSlNPTiA9IHN1cHBvc2l0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1cHBvc2l0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RvcnNUb0NvbnN0cnVjdG9yc0pTT04oY29uc3RydWN0b3JzKSB7XG4gIGNvbnN0IGNvbnN0cnVjdG9yc0pTT04gPSBjb25zdHJ1Y3RvcnMubWFwKChjb25zdHJ1Y3RvcikgPT4ge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9ySlNPTiA9IGNvbnN0cnVjdG9yLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9ySlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbnN0cnVjdG9yc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdGhlb3JlbXNUb01ldGF0aGVvcmVtc0pTT04obWV0YXRoZW9yZW1zKSB7XG4gIGNvbnN0IG1ldGF0aGVvcmVtc0pTT04gPSBtZXRhdGhlb3JlbXMubWFwKChtZXRhdGhlb3JlbSkgPT4ge1xuICAgIGNvbnN0IG1ldGF0aGVvcmVtSlNPTiA9IG1ldGF0aGVvcmVtLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIG1ldGF0aGVvcmVtSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF0aGVvcmVtc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlUHJlZml4ZXNUb1R5cGVQcmVmaXhlc0pTT04odHlwZVByZWZpeGVzKSB7XG4gIGNvbnN0IHR5cGVQcmVmaXhlc0pTT04gPSB0eXBlUHJlZml4ZXMubWFwKCh0eXBlUHJlZml4KSA9PiB7XG4gICAgY29uc3QgdHlwZVByZWZpeEpTT04gPSB0eXBlUHJlZml4LnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVmaXhKU09OO1xuICB9KTtcblxuICByZXR1cm4gdHlwZVByZWZpeGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnN0aXR1dGlvbnNUb1N1YnN0aXR1dGlvbnNKU09OKHN1YnN0aXR1dGlvbnMpIHtcbiAgY29uc3Qgc3Vic3RpdHV0aW9uc0pTT04gPSBzdWJzdGl0dXRpb25zLm1hcCgoc3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uSlNPTiA9IHN1YnN0aXR1dGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gc3Vic3RpdHV0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdmFyaWFibGVzVG9NZXRhdmFyaWFibGVzSlNPTihtZXRhdmFyaWFibGVzKSB7XG4gIGNvbnN0IG1ldGF2YXJpYWJsZXNKU09OID0gbWV0YXZhcmlhYmxlcy5tYXAoKG1ldGF2YXJpYWJsZSkgPT4ge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZUpTT04gPSBtZXRhdmFyaWFibGUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydHlSZWxhdGlvbnNUb1Byb3BlcnR5UmVsYXRpb25zSlNPTihwcm9wZXJ0eVJlbGF0aW9ucykge1xuICBjb25zdCBwcm9wZXJ0eVJlbGF0aW9uc0pTT04gPSBwcm9wZXJ0eVJlbGF0aW9ucy5tYXAoKHByb3BlcnR5UmVsYXRpb24pID0+IHtcbiAgICBjb25zdCBwcm9wZXJ0eVJlbGF0aW9uSlNPTiA9IHByb3BlcnR5UmVsYXRpb24udG9KU09OKCk7XG5cbiAgICByZXR1cm4gcHJvcGVydHlSZWxhdGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBwcm9wZXJ0eVJlbGF0aW9uc0pTT047XG59XG4iXSwibmFtZXMiOlsiYXNzZXJ0aW9uc0Zyb21KU09OIiwiYXNzZXJ0aW9uc1RvQXNzZXJ0aW9uc0pTT04iLCJhc3N1bXB0aW9uc0Zyb21KU09OIiwiYXNzdW1wdGlvbnNUb0Fzc3VtcHRpb25zSlNPTiIsImF4aW9tc0Zyb21KU09OIiwiYXhpb21zVG9BeGlvbXNKU09OIiwiY29tYmluYXRvcnNGcm9tSlNPTiIsImNvbWJpbmF0b3JzVG9Db21iaW5hdG9yc0pTT04iLCJjb25jbHVzaW9uRnJvbUpTT04iLCJjb25jbHVzaW9uVG9Db25jbHVzaW9uSlNPTiIsImNvbmplY3R1cmVzRnJvbUpTT04iLCJjb25qZWN0dXJlc1RvQ29uamVjdHVyZXNKU09OIiwiY29uc3RydWN0b3JzRnJvbUpTT04iLCJjb25zdHJ1Y3RvcnNUb0NvbnN0cnVjdG9yc0pTT04iLCJkZWR1Y3Rpb25Gcm9tSlNPTiIsImRlZHVjdGlvblRvRGVkdWN0aW9uSlNPTiIsImVwaGVtZXJhbENvbnRleHRGcm9tSlNPTiIsImVxdWFsaXRpZXNGcm9tSlNPTiIsImVxdWFsaXRpZXNUb0VxdWFsaXRpZXNKU09OIiwiZnJhbWVGcm9tSlNPTiIsImZyYW1lVG9GcmFtZUpTT04iLCJmcmFtZXNGcm9tSlNPTiIsImZyYW1lc1RvRnJhbWVzSlNPTiIsImh5cG90aGVzZXNGcm9tSlNPTiIsImh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OIiwiaWRlbnRpZmllckZyb21KU09OIiwiaWRlbnRpZmllclRvSWRlbnRpZmllckpTT04iLCJqdWRnZW1lbnRzRnJvbUpTT04iLCJqdWRnZW1lbnRzVG9KdWRnZW1lbnRzSlNPTiIsImxhYmVsRnJvbUpTT04iLCJsYWJlbFRvTGFiZWxKU09OIiwibGFiZWxzRnJvbUpTT04iLCJsYWJlbHNUb0xhYmVsc0pTT04iLCJsZW1tYXNGcm9tTm90aGluZyIsIm1ldGFMZW1tYXNGcm9tTm90aGluZyIsIm1ldGFUeXBlRnJvbUpTT04iLCJtZXRhVHlwZVRvTWV0YVR5cGVKU09OIiwibWV0YXRoZW9yZW1zRnJvbUpTT04iLCJtZXRhdGhlb3JlbXNUb01ldGF0aGVvcmVtc0pTT04iLCJtZXRhdmFyaWFibGVGcm9tSlNPTiIsIm1ldGF2YXJpYWJsZVRvTWV0YXZhcmlhYmxlSlNPTiIsIm1ldGF2YXJpYWJsZXNGcm9tSlNPTiIsIm1ldGF2YXJpYWJsZXNUb01ldGF2YXJpYWJsZXNKU09OIiwibmFtZUZyb21KU09OIiwibmFtZVRvTmFtZUpTT04iLCJuZWdhdGVkRnJvbUpTT04iLCJuZWdhdGVkVG9OZWdhdGVkSlNPTiIsInBhcmFtZXRlcnNGcm9tSlNPTiIsInBhcmFtZXRlcnNUb1BhcmFtZXRlcnNKU09OIiwicHJlbWlzZXNGcm9tSlNPTiIsInByZW1pc2VzVG9QcmVtaXNlc0pTT04iLCJwcm9jZWR1cmVDYWxsRnJvbUpTT04iLCJwcm9jZWR1cmVDYWxsVG9Qcm9jZWR1cmVDYWxsSlNPTiIsInByb2NlZHVyZVJlZmVyZW5jZUZyb21KU09OIiwicHJvY2VkdXJlUmVmZXJlbmNlVG9Qcm9jZWR1cmVSZWZlcmVuY2VKU09OIiwicHJvcGVydGllc0Zyb21KU09OIiwicHJvcGVydGllc1RvUHJvcGVydGllc0pTT04iLCJwcm9wZXJ0eVJlbGF0aW9uc0Zyb21KU09OIiwicHJvcGVydHlSZWxhdGlvbnNUb1Byb3BlcnR5UmVsYXRpb25zSlNPTiIsInByb3Zpc2lvbmFsVG9Qcm92aXNpb25hbEpTT04iLCJyZWZlcmVuY2VGcm9tSlNPTiIsInJlZmVyZW5jZVRvUmVmZXJlbmNlSlNPTiIsInJlZmVyZW5jZXNGcm9tSlNPTiIsInJlZmVyZW5jZXNUb1JlZmVyZW5jZXNKU09OIiwicnVsZXNGcm9tSlNPTiIsInJ1bGVzVG9SdWxlc0pTT04iLCJzaWduYXR1cmVGcm9tSlNPTiIsInNpZ25hdHVyZVRvU2lnbmF0dXJlSlNPTiIsInN0YXRlbWVudEZyb21KU09OIiwic3RhdGVtZW50VG9TdGF0ZW1lbnRKU09OIiwic3RhdGVtZW50c0Zyb21KU09OIiwic3RhdGVtZW50c1RvU3RhdGVtZW50c0pTT04iLCJzdWJzdGl0dXRpb25zRnJvbUpTT04iLCJzdWJzdGl0dXRpb25zVG9TdWJzdGl0dXRpb25zSlNPTiIsInN1cGVyVHlwZXNGcm9tSlNPTiIsInN1cGVyVHlwZXNUb1N1cGVyVHlwZXNKU09OIiwic3VwcG9zaXRpb25zRnJvbUpTT04iLCJzdXBwb3NpdGlvbnNUb1N1cHBvc2l0aW9uc0pTT04iLCJ0ZXJtRnJvbUpTT04iLCJ0ZXJtVG9UZXJtSlNPTiIsInRlcm1zRnJvbUpTT04iLCJ0ZXJtc1RvVGVybXNKU09OIiwidGhlb3JlbXNGcm9tSlNPTiIsInRoZW9yZW1zVG9UaGVvcmVtc0pTT04iLCJ0eXBlRnJvbUpTT04iLCJ0eXBlUHJlZml4ZXNGcm9tSlNPTiIsInR5cGVQcmVmaXhlc1RvVHlwZVByZWZpeGVzSlNPTiIsInR5cGVUb1R5cGVKU09OIiwidHlwZXNGcm9tSlNPTiIsInR5cGVzVG9UeXBlc0pTT04iLCJ2YXJpYWJsZXNGcm9tSlNPTiIsInZhcmlhYmxlc1RvVmFyaWFibGVzSlNPTiIsImxlbW1hcyIsIm1ldGFMZW1tYXMiLCJqc29uIiwiY29udGV4dCIsIm5hbWUiLCJuYW1lSlNPTiIsInRlcm0iLCJ0ZXJtSlNPTiIsIlRlcm0iLCJlbGVtZW50cyIsImZyb21KU09OIiwidHlwZSIsInByZWZpeE5hbWUiLCJub21pbmFsVHlwZU5hbWUiLCJmaW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lIiwiZnJhbWUiLCJmcmFtZUpTT04iLCJGcmFtZSIsIm5lZ2F0ZWQiLCJtZXRhVHlwZSIsIm1ldGFUeXBlTmFtZSIsImZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lIiwic3RhdGVtZW50IiwiU3RhdGVtZW50Iiwic3RhdGVtZW50SlNPTiIsImRlZHVjdGlvbiIsIkRlZHVjdGlvbiIsImRlZHVjdGlvbkpTT04iLCJzaWduYXR1cmUiLCJTaWduYXR1cmUiLCJzaWduYXR1cmVKU09OIiwicmVmZXJlbmNlIiwiUmVmZXJlbmNlIiwicmVmZXJlbmNlSlNPTiIsImlkZW50aWZpZXIiLCJpZGVudGlmaWVySlNPTiIsImNvbmNsdXNpb24iLCJDb25jbHVzaW9uIiwiY29uY2x1c2lvbkpTT04iLCJtZXRhdmFyaWFibGUiLCJNZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGVKU09OIiwicHJvY2VkdXJlQ2FsbCIsIlByb2NlZHVyZUNhbGwiLCJwcm9jZWR1cmVDYWxsSlNPTiIsInByb2NlZHVyZVJlZmVyZW5jZSIsIlByb2NlZHVyZVJlZmVyZW5jZSIsInByb2NlZHVyZVJlZmVyZW5jZUpTT04iLCJ0eXBlcyIsInR5cGVzSlNPTiIsIlR5cGUiLCJmb3JFYWNoIiwidHlwZUpTT04iLCJwdXNoIiwidGVybXMiLCJ0ZXJtc0pTT04iLCJtYXAiLCJydWxlcyIsIlJ1bGUiLCJydWxlc0pTT04iLCJydWxlSlNPTiIsInJ1bGUiLCJsYWJlbCIsIkxhYmVsIiwibGFiZWxKU09OIiwiZnJhbWVzIiwiZnJhbWVzSlNPTiIsImxhYmVscyIsImxhYmVsc0pTT04iLCJheGlvbXMiLCJBeGlvbSIsImF4aW9tc0pTT04iLCJheGlvbUpTT04iLCJheGlvbSIsInByZW1pc2VzIiwiUHJlbWlzZSIsInByZW1pc2VzSlNPTiIsInByZW1pc2VKU09OIiwicHJlbWlzZSIsInRoZW9yZW1zIiwiVGhlb3JlbSIsInRoZW9yZW1zSlNPTiIsInRoZW9yZW1KU09OIiwidGhlb3JlbSIsInZhcmlhYmxlcyIsIlZhcmlhYmxlIiwidmFyaWFibGVzSlNPTiIsInZhcmlhYmxlSlNPTiIsInZhcmlhYmxlIiwiZXF1YWxpdGllcyIsIkVxdWFsaXR5IiwiZXF1YWxpdGllc0pTT04iLCJlcXVhbGl0eUpTT04iLCJlcXVhbGl0eSIsInByb3BlcnRpZXMiLCJQcm9wZXJ0eSIsInByb3BlcnRpZXNKU09OIiwicHJvcGVydHlKU09OIiwicHJvcGVydHkiLCJzdXBlclR5cGVzIiwic3VwZXJUeXBlc0pTT04iLCJzdXBlclR5cGVKU09OIiwibm9taW5hbFN1cGVyVHlwZU5hbWUiLCJzdXBlclR5cGUiLCJoeXBvdGhlc2VzIiwiSHlwb3RoZXNpcyIsImh5cG90aGVzZXNKU09OIiwiaHlwb3RoZXNpc0pTT04iLCJoeXBvdGhlc2lzIiwicGFyYW1ldGVycyIsIlBhcmFtZXRlciIsInBhcmFtZXRlcnNKU09OIiwicGFyYW1ldGVySlNPTiIsInBhcmFtZXRlciIsImp1ZGdlbWVudHMiLCJKdWRnZW1lbnQiLCJqdWRnZW1lbnRzSlNPTiIsImp1ZGdlbWVudEpTT04iLCJqdWRnZW1lbnQiLCJzdGF0ZW1lbnRzIiwic3RhdGVtZW50c0pTT04iLCJhc3NlcnRpb25zIiwiVHlwZUFzc2VydGlvbiIsIkRlZmluZWRBc3NlcnRpb24iLCJQcm9wZXJ0eUFzc2VydGlvbiIsIlN1YnByb29mQXNzZXJ0aW9uIiwiU2F0aXNmaWVzQXNzZXJ0aW9uIiwiQ29udGFpbmVkQXNzZXJ0aW9uIiwiYXNzZXJ0aW9uc0pTT04iLCJhc3NlcnRpb25KU09OIiwiYXNzZXJ0aW9uIiwicmVmZXJlbmNlcyIsInJlZmVyZW5jZXNKU09OIiwiY29uamVjdHVyZXMiLCJDb25qZWN0dXJlIiwiY29uamVjdHVyZXNKU09OIiwiY29uamVjdHVyZUpTT04iLCJjb25qZWN0dXJlIiwiY29tYmluYXRvcnMiLCJDb21iaW5hdG9yIiwiY29tYmluYXRvcnNKU09OIiwiY29tYmluYXRvckpTT04iLCJjb21iaW5hdG9yIiwiYXNzdW1wdGlvbnMiLCJBc3N1bXB0aW9uIiwiYXNzdW1wdGlvbnNKU09OIiwiYXNzdW1wdGlvbkpTT04iLCJhc3N1bXB0aW9uIiwidHlwZVByZWZpeGVzIiwiVHlwZVByZWZpeCIsInR5cGVQcmVmaXhlc0pTT04iLCJ0eXBlUHJlZml4SlNPTiIsInR5cGVQcmVmaXgiLCJjb25zdHJ1Y3RvcnMiLCJDb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yc0pTT04iLCJjb25zdHJ1Y3RvckpTT04iLCJjb25zdHJ1Y3RvciIsIm1ldGF0aGVvcmVtcyIsIk1ldGF0aGVvcmVtIiwibWV0YXRoZW9yZW1zSlNPTiIsIm1ldGF0aGVvcmVtSlNPTiIsIm1ldGF0aGVvcmVtIiwic3VwcG9zaXRpb25zIiwiU3VwcG9zaXRpb24iLCJzdXBwb3NpdGlvbnNKU09OIiwic3VwcG9zaXRpb25KU09OIiwic3VwcG9zaXRpb24iLCJzdWJzdGl0dXRpb25zIiwiU3RhdGVtZW50U3Vic3RpdHV0aW9uIiwic3Vic3RpdHV0aW9uc0pTT04iLCJTdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb25KU09OIiwic3Vic3RpdHV0aW9uIiwibWV0YXZhcmlhYmxlcyIsIm1ldGF2YXJpYWJsZXNKU09OIiwicmVsZWFzZUNvbnRleHQiLCJlbXBoZW1lcmFsQ29udGV4dCIsIkVwaGVtZXJhbENvbnRleHQiLCJwcm9wZXJ0eVJlbGF0aW9ucyIsIlByb3BlcnR5UmVsYXRpb24iLCJwcm9wZXJ0eVJlbGF0aW9uc0pTT04iLCJwcm9wZXJ0eVJlbGF0aW9uSlNPTiIsInByb3BlcnR5UmVsYXRpb24iLCJ0b0pTT04iLCJuZWdhdGVkSlNPTiIsIm1ldGFUeXBlSlNPTiIsInByb3Zpc2lvbmFsIiwicHJvdmlzaW9uYWxKU09OIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFvZWdCQTtlQUFBQTs7UUF3ZUFDO2VBQUFBOztRQW5hQUM7ZUFBQUE7O1FBMmNBQztlQUFBQTs7UUFqc0JBQztlQUFBQTs7UUEyaUJBQztlQUFBQTs7UUFyVUFDO2VBQUFBOztRQWlkQUM7ZUFBQUE7O1FBdjBCQUM7ZUFBQUE7O1FBeW1CQUM7ZUFBQUE7O1FBblFBQztlQUFBQTs7UUF1ZEFDO2VBQUFBOztRQXZaQUM7ZUFBQUE7O1FBK2JBQztlQUFBQTs7UUF4NUJBQztlQUFBQTs7UUF3b0JBQztlQUFBQTs7UUE5RkFDO2VBQUFBOztRQXZTQUM7ZUFBQUE7O1FBcWtCQUM7ZUFBQUE7O1FBNTNCQUM7ZUFBQUE7O1FB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
@@ -188,7 +188,7 @@ function typeStringFromTypeNameTypePrefixNameAndSuperTypes(typeName, typePrefixN
188
188
  return typeString;
189
189
  }
190
190
  function procedureCallStringFromProcedureReferenceAndParameters(procedureReference, parameters) {
191
- const procedureReferenceName = procedureReference.getName(), parametersString = parametersStringFromParameters(parameters), procedureCallString = `${procedureReferenceName}(${parametersString})`;
191
+ const procedureReferenceName = procedureReference.getName(), parametersString = parametersStringFromParameters(parameters), procedureCallString = `@${procedureReferenceName}(${parametersString})`;
192
192
  return procedureCallString;
193
193
  }
194
194
  function statementSubstitutionStringFromStatementAndMetavariable(statement, metavariable) {
@@ -218,4 +218,4 @@ function statementSubstitutionStringFromStatementMetavariableAndSubstitution(sta
218
218
  return statementSubstitutionString;
219
219
  }
220
220
 
221
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RyaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBiYXNlVHlwZUZyb21Ob3RoaW5nIH0gZnJvbSBcIi4uL3V0aWxpdGllcy90eXBlXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtc1N0cmluZ0Zyb21UZXJtcyh0ZXJtcykge1xuICBjb25zdCB0ZXJtc1N0cmluZyA9IHRlcm1zLnJlZHVjZSgodGVybXNTdHJpbmcsIHRlcm0pID0+IHtcbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKTtcblxuICAgIHRlcm1zU3RyaW5nID0gKHRlcm1zU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgYCR7dGVybXNTdHJpbmd9LCAke3Rlcm1TdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgdGVybVN0cmluZztcblxuICAgIHJldHVybiB0ZXJtc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIHRlcm1zU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxzU3RyaW5nRnJvbUxhYmVscyhsYWJlbHMpIHtcbiAgY29uc3QgbGFiZWxzU3RyaW5nID0gbGFiZWxzLnJlZHVjZSgobGFiZWxzU3RyaW5nLCBsYWJlbCkgPT4ge1xuICAgIGNvbnN0IGxhYmVsU3RyaW5nID0gbGFiZWwuZ2V0U3RyaW5nKCk7XG5cbiAgICBsYWJlbHNTdHJpbmcgPSAobGFiZWxzU3RyaW5nID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICBsYWJlbFN0cmluZzogLy8vXG4gICAgICAgICAgICAgICAgICAgICAgYCR7bGFiZWxzU3RyaW5nfSwgJHtsYWJlbFN0cmluZ31gO1xuXG4gICAgcmV0dXJuIGxhYmVsc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIGxhYmVsc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZW1pc2VzU3RyaW5nRnJvbVByZW1pc2VzKHByZW1pc2VzKSB7XG4gIGNvbnN0IHByZW1pc2VzU3RyaW5nID0gcHJlbWlzZXMucmVkdWNlKChwcmVtaXNlc1N0cmluZywgcHJlbWlzZSkgPT4ge1xuICAgIGNvbnN0IHByZW1pc2VTdHJpbmcgPSBwcmVtaXNlLmdldFN0cmluZygpO1xuXG4gICAgcHJlbWlzZXNTdHJpbmcgPSAocHJlbWlzZXNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgYCR7cHJlbWlzZXNTdHJpbmd9LCAke3ByZW1pc2VTdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgcHJlbWlzZVN0cmluZzsgIC8vL1xuXG4gICAgcmV0dXJuIHByZW1pc2VzU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICByZXR1cm4gcHJlbWlzZXNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoeXBvdGhlc2VzU3RyaW5nRnJvbUh5cG90aGVzZXMoaHlwb3RoZXNlcykge1xuICBjb25zdCBoeXBvdGhlc2VzU3RyaW5nID0gaHlwb3RoZXNlcy5yZWR1Y2UoKGh5cG90aGVzZXNTdHJpbmcsIGh5cG90aGVzaXMpID0+IHtcbiAgICBjb25zdCBoeXBvdGhlc2lzU3RyaW5nID0gaHlwb3RoZXNpcy5nZXRTdHJpbmcoKTtcblxuICAgIGh5cG90aGVzZXNTdHJpbmcgPSAoaHlwb3RoZXNlc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtoeXBvdGhlc2VzU3RyaW5nfSwgJHtoeXBvdGhlc2lzU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh5cG90aGVzaXNTdHJpbmc7ICAvLy9cblxuICAgIHJldHVybiBoeXBvdGhlc2VzU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICByZXR1cm4gaHlwb3RoZXNlc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyVHlwZXNTdHJpbmdGcm9tU3VwZXJUeXBlcyhzdXBlclR5cGVzKSB7XG4gIGNvbnN0IGJhc2VUeXBlID0gYmFzZVR5cGVGcm9tTm90aGluZygpLFxuICAgICAgICBzdXBlclR5cGVzU3RyaW5nID0gc3VwZXJUeXBlcy5yZWR1Y2UoKHN1cGVyVHlwZXNTdHJpbmcsIHN1cGVyVHlwZSkgPT4ge1xuICAgICAgICAgIGlmIChzdXBlclR5cGUgIT09IGJhc2VUeXBlKSB7XG4gICAgICAgICAgICBjb25zdCBzdXBlclR5cGVTdHJpbmcgPSBzdXBlclR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgICAgICAgIHN1cGVyVHlwZXNTdHJpbmcgPSAoc3VwZXJUeXBlc1N0cmluZyA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCcke3N1cGVyVHlwZVN0cmluZ30nYCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3N1cGVyVHlwZXNTdHJpbmd9LCAnJHtzdXBlclR5cGVTdHJpbmd9J2A7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHN1cGVyVHlwZXNTdHJpbmc7XG4gICAgICAgIH0sIG51bGwpO1xuXG4gIHJldHVybiBzdXBlclR5cGVzU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyYW1ldGVyc1N0cmluZ0Zyb21QYXJhbWV0ZXJzKHBhcmFtZXRlcnMpIHtcbiAgY29uc3QgcGFyYW1ldGVyc1N0cmluZyA9IHBhcmFtZXRlcnMucmVkdWNlKChwYXJhbWV0ZXJzU3RyaW5nLCBwYXJhbWV0ZXIpID0+IHtcbiAgICBjb25zdCBwYXJhbWV0ZXJTdHJpbmcgPSBwYXJhbWV0ZXIuZ2V0U3RyaW5nKCk7XG5cbiAgICBwYXJhbWV0ZXJzU3RyaW5nID0gKHBhcmFtZXRlcnNTdHJpbmcgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJTdHJpbmcgOiAvLy9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7cGFyYW1ldGVyc1N0cmluZ30sICR7cGFyYW1ldGVyU3RyaW5nfWA7XG5cbiAgICByZXR1cm4gcGFyYW1ldGVyc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlcnNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3N1bXB0aW9uc1N0cmluZ0Zyb21Bc3N1bXB0aW9ucyhhc3N1bXB0aW9ucykge1xuICBjb25zdCBhc3N1bXB0aW9uc1N0cmluZyA9IGFzc3VtcHRpb25zLnJlZHVjZSgoYXNzdW1wdGlvbnNTdHJpbmcsIGFzc3VtcHRpb24pID0+IHtcbiAgICBjb25zdCBhc3N1bXB0aW9uU3RyaW5nID0gYXNzdW1wdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGFzc3VtcHRpb25zU3RyaW5nID0gKGFzc3VtcHRpb25zU3RyaW5nID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFzc3VtcHRpb25TdHJpbmc6IC8vL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7YXNzdW1wdGlvbnNTdHJpbmd9LCAke2Fzc3VtcHRpb25TdHJpbmd9YDtcblxuICAgIHJldHVybiBhc3N1bXB0aW9uc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIGFzc3VtcHRpb25zU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwcG9zaXRpb25zU3RyaW5nRnJvbVN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbnMpIHtcbiAgY29uc3Qgc3VwcG9zaXRpb25zU3RyaW5nID0gc3VwcG9zaXRpb25zLnJlZHVjZSgoc3VwcG9zaXRpb25zU3RyaW5nLCBzdXBwb3NpdGlvbikgPT4ge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uU3RyaW5nID0gc3VwcG9zaXRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBzdXBwb3NpdGlvbnNTdHJpbmcgPSAoc3VwcG9zaXRpb25zU3RyaW5nID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3NpdGlvblN0cmluZzogLy8vXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7c3VwcG9zaXRpb25zU3RyaW5nfSwgJHtzdXBwb3NpdGlvblN0cmluZ31gO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIHN1cHBvc2l0aW9uc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hdHVyZVN0cmluZ0Zyb21UZXJtcyh0ZXJtcykge1xuICBjb25zdCB0ZXJtc1N0cmluZyA9IHRlcm1zU3RyaW5nRnJvbVRlcm1zKHRlcm1zKSxcbiAgICAgICAgc2lnbmF0dXJlU3RyaW5nID0gYFske3Rlcm1zU3RyaW5nfV1gO1xuXG4gIHJldHVybiBzaWduYXR1cmVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcXVpdmFsZW5jZVN0cmluZ0Zyb21UZXJtcyh0ZXJtcykge1xuICBjb25zdCB0ZXJtc1N0cmluZyA9IHRlcm1zU3RyaW5nRnJvbVRlcm1zKHRlcm1zKSxcbiAgICAgICAgZXF1aXZhbGVuY2VTdHJpbmcgPSBgWyR7dGVybXNTdHJpbmd9XWA7XG5cbiAgcmV0dXJuIGVxdWl2YWxlbmNlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZVN0cmluZ0Zyb21Ob21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKSB7XG4gIGNvbnN0IHR5cGVTdHJpbmcgPSBub21pbmFsVHlwZU5hbWU7ICAvLy9cblxuICByZXR1cm4gdHlwZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1TdWJzdGl0dXRpb25TdHJpbmdGcm9tVGVybUFuZFZhcmlhYmxlKHRlcm0sIHZhcmlhYmxlKSB7XG4gIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICB2YXJpYWJsZVN0cmluZyA9IHZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICB0ZXJtU3Vic3RpdHV0aW9uU3RyaW5nID0gYFske3Rlcm1TdHJpbmd9IGZvciAke3ZhcmlhYmxlU3RyaW5nfV1gO1xuXG4gIHJldHVybiB0ZXJtU3Vic3RpdHV0aW9uU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVsc1N0cmluZ0Zyb21MYWJlbHNQcmVtaXNlc0FuZENvbmNsdXNpb24obGFiZWxzLCBwcmVtaXNlcywgY29uY2x1c2lvbikge1xuICBjb25zdCBwcmVtaXNlc1N0cmluZyA9IHByZW1pc2VzU3RyaW5nRnJvbVByZW1pc2VzKHByZW1pc2VzKSxcbiAgICAgICAgY29uY2x1c2lvblN0cmluZyA9IGNvbmNsdXNpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgIGxhYmVsc1N0cmluZyA9IGxhYmVsc1N0cmluZ0Zyb21MYWJlbHMobGFiZWxzKSxcbiAgICAgICAgcnVsZVN0cmluZyA9IChwcmVtaXNlc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICBgJHtsYWJlbHNTdHJpbmd9IDo6IFske3ByZW1pc2VzU3RyaW5nfV0uLi4ke2NvbmNsdXNpb25TdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgYCR7bGFiZWxzU3RyaW5nfSA6OiAke2NvbmNsdXNpb25TdHJpbmd9YDtcblxuICByZXR1cm4gcnVsZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlY3Rpb25TdHJpbmdGcm9tSHlwb3RoZXNlc1RvcExldmVsQXNzZXJ0aW9uKGh5cG90aGVzZXMsIGF4aW9tLCBsZW1tYSwgdGhlb3JlbSwgY29uamVjdHVyZSkge1xuICBjb25zdCB0b3BMZXZlbEFzc2VydGlvbiA9IChheGlvbSB8fCBsZW1tYSB8fCB0aGVvcmVtIHx8IGNvbmplY3R1cmUpLFxuICAgICAgICB0b3BMZXZlbEFzc2VydGlvblN0cmluZyA9IHRvcExldmVsQXNzZXJ0aW9uLmdldFN0cmluZygpLFxuICAgICAgICBoeXBvdGhlc2VzU3RyaW5nID0gaHlwb3RoZXNlc1N0cmluZ0Zyb21IeXBvdGhlc2VzKGh5cG90aGVzZXMpLFxuICAgICAgICBzZWN0aW9uU3RyaW5nID0gKHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBbJHtoeXBvdGhlc2VzU3RyaW5nfV06OjogJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ31gIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgWyR7aHlwb3RoZXNlc1N0cmluZ31dOjo6IGA7XG5cbiAgcmV0dXJuIHNlY3Rpb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJwcm9vZlN0cmluZ0Zyb21TdXBwb3NpdGlvbnNBbmRTdWJEZXJpdmF0aW9uKHN1cHBvc2l0aW9ucywgc3ViRGVyaXZhdGlvbikge1xuICBjb25zdCBsYXN0UHJvb2ZBc3NlcnRpb24gPSBzdWJEZXJpdmF0aW9uLmdldExhc3RQcm9vZkFzc2VydGlvbigpLFxuICAgICAgICBzdXBwb3NpdGlvbnNTdHJpbmcgPSBzdXBwb3NpdGlvbnNTdHJpbmdGcm9tU3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucyksXG4gICAgICAgIGxhc3RQcm9vZkFzc2VydGlvblN0cmluZyA9IGxhc3RQcm9vZkFzc2VydGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3VicHJvb2ZTdHJpbmcgPSBgWyR7c3VwcG9zaXRpb25zU3RyaW5nfV0uLi4ke2xhc3RQcm9vZkFzc2VydGlvblN0cmluZ31gO1xuXG4gIHJldHVybiBzdWJwcm9vZlN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyYW1lU3Vic3RpdHV0aW9uU3RyaW5nRnJvbUZyYW1lQW5kTWV0YXZhcmlhYmxlKGZyYW1lLCBtZXRhdmFyaWFibGUpIHtcbiAgY29uc3QgZnJhbWVTdHJpbmcgPSBmcmFtZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICBzdHJpbmcgPSBgWyR7ZnJhbWVTdHJpbmd9IGZvciBbJHttZXRhdmFyaWFibGVTdHJpbmd9XV1gO1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlU3RyaW5nRnJvbVR5cGVOYW1lVHlwZVByZWZpeE5hbWVBbmRTdXBlclR5cGVzKHR5cGVOYW1lLCB0eXBlUHJlZml4TmFtZSwgc3VwZXJUeXBlcykge1xuICBsZXQgdHlwZVN0cmluZztcblxuICB0eXBlU3RyaW5nID0gKHR5cGVQcmVmaXhOYW1lICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgIGAke3R5cGVQcmVmaXhOYW1lfSR7dHlwZU5hbWV9YDpcbiAgICAgICAgICAgICAgICAgICB0eXBlTmFtZTtcblxuICBjb25zdCBzdXBlclR5cGVzU3RyaW5nID0gc3VwZXJUeXBlc1N0cmluZ0Zyb21TdXBlclR5cGVzKHN1cGVyVHlwZXMpO1xuXG4gIGlmIChzdXBlclR5cGVzU3RyaW5nICE9PSBudWxsKSB7XG4gICAgdHlwZVN0cmluZyA9IGAke3R5cGVTdHJpbmd9OiR7c3VwZXJUeXBlc1N0cmluZ31gO1xuICB9XG5cbiAgcmV0dXJuIHR5cGVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVDYWxsU3RyaW5nRnJvbVByb2NlZHVyZVJlZmVyZW5jZUFuZFBhcmFtZXRlcnMocHJvY2VkdXJlUmVmZXJlbmNlLCBwYXJhbWV0ZXJzKSB7XG4gIGNvbnN0IHByb2NlZHVyZVJlZmVyZW5jZU5hbWUgPSBwcm9jZWR1cmVSZWZlcmVuY2UuZ2V0TmFtZSgpLFxuICAgICAgICBwYXJhbWV0ZXJzU3RyaW5nID0gcGFyYW1ldGVyc1N0cmluZ0Zyb21QYXJhbWV0ZXJzKHBhcmFtZXRlcnMpLFxuICAgICAgICBwcm9jZWR1cmVDYWxsU3RyaW5nID0gYCR7cHJvY2VkdXJlUmVmZXJlbmNlTmFtZX0oJHtwYXJhbWV0ZXJzU3RyaW5nfSlgO1xuXG4gIHJldHVybiBwcm9jZWR1cmVDYWxsU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nRnJvbVN0YXRlbWVudEFuZE1ldGF2YXJpYWJsZShzdGF0ZW1lbnQsIG1ldGF2YXJpYWJsZSkge1xuICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IG1ldGF2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nID0gYFske3N0YXRlbWVudFN0cmluZ30gZm9yICR7bWV0YXZhcmlhYmxlU3RyaW5nfV1gO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VTdWJzdGl0dXRpb25TdHJpbmdGcm9tUmVmZXJlbmNlQW5kTWV0YXZhcmlhYmxlKHJlZmVyZW5jZSwgbWV0YXZhcmlhYmxlKSB7XG4gIGNvbnN0IHJlZmVyZW5jZVN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICByZWZlcmVuY2VTdWJzdGl0dXRpb25TdHJpbmcgPSBgWyR7cmVmZXJlbmNlU3RyaW5nfSBmb3IgJHttZXRhdmFyaWFibGVTdHJpbmd9XWA7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZVN1YnN0aXR1dGlvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nRnJvbUxhYmVsc1N1cHBvc2l0aW9uc0FuZERlZHVjdGlvbihsYWJlbHMsIHN1cHBvc2l0aW9ucywgZGVkdWN0aW9uKSB7XG4gIGxldCB0b3BMZXZlbEFzc2VydGlvblN0cmluZztcblxuICBjb25zdCBzdXBwb3NpdGlvbnNTdHJpbmcgPSBzdXBwb3NpdGlvbnNTdHJpbmdGcm9tU3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucyksXG4gICAgICAgIGRlZHVjdGlvblN0cmluZyA9IGRlZHVjdGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgbGFiZWxzU3RyaW5nID0gbGFiZWxzU3RyaW5nRnJvbUxhYmVscyhsYWJlbHMpO1xuXG4gIGlmIChsYWJlbHNTdHJpbmcgIT09IG51bGwpIHtcbiAgICB0b3BMZXZlbEFzc2VydGlvblN0cmluZyA9IChzdXBwb3NpdGlvbnNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtsYWJlbHNTdHJpbmd9IDo6IFske3N1cHBvc2l0aW9uc1N0cmluZ31dLi4uJHtkZWR1Y3Rpb25TdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtsYWJlbHNTdHJpbmd9IDo6ICR7ZGVkdWN0aW9uU3RyaW5nfWA7XG4gIH0gZWxzZSB7XG4gICAgdG9wTGV2ZWxBc3NlcnRpb25TdHJpbmcgPSAoc3VwcG9zaXRpb25zU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYFske3N1cHBvc2l0aW9uc1N0cmluZ31dLi4uJHtkZWR1Y3Rpb25TdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVkdWN0aW9uU3RyaW5nO1xuICB9XG5cbiAgcmV0dXJuIHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9wTGV2ZWxNZXRhQXNzZXJ0aW9uU3RyaW5nRnJvbUxhYmVsU3VwcG9zaXRpb25zQW5kRGVkdWN0aW9uKGxhYmVsLCBzdXBwb3NpdGlvbnMsIGRlZHVjdGlvbikge1xuICBjb25zdCBzdXBwb3NpdGlvbnNTdHJpbmcgPSBzdXBwb3NpdGlvbnNTdHJpbmdGcm9tU3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucyksXG4gICAgICAgIGRlZHVjdGlvblN0cmluZyA9IGRlZHVjdGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgbGFiZWxTdHJpbmcgPSBsYWJlbC5nZXRTdHJpbmcoKSxcbiAgICAgICAgdG9wTGV2ZWxNZXRhQXNzZXJ0aW9uU3RyaW5nID0gKHN1cHBvc2l0aW9uc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7bGFiZWxTdHJpbmd9IDo6IFske3N1cHBvc2l0aW9uc1N0cmluZ31dLi4uJHtkZWR1Y3Rpb25TdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke2xhYmVsU3RyaW5nfSA6OiAke2RlZHVjdGlvblN0cmluZ31gO1xuXG4gIHJldHVybiB0b3BMZXZlbE1ldGFBc3NlcnRpb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmdGcm9tU3RhdGVtZW50TWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uKHN0YXRlbWVudCwgbWV0YXZhcmlhYmxlLCBzdWJzdGl0dXRpb24pIHtcbiAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBtZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHN1YnN0aXR1dGlvblN0cmluZyA9IHN1YnN0aXR1dGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nID0gYFske3N0YXRlbWVudFN0cmluZ30gZm9yICR7bWV0YXZhcmlhYmxlU3RyaW5nfSR7c3Vic3RpdHV0aW9uU3RyaW5nfV1gO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmc7XG59XG4iXSwibmFtZXMiOlsiYXNzdW1wdGlvbnNTdHJpbmdGcm9tQXNzdW1wdGlvbnMiLCJlcXVpdmFsZW5jZVN0cmluZ0Zyb21UZXJtcyIsImZyYW1lU3Vic3RpdHV0aW9uU3RyaW5nRnJvbUZyYW1lQW5kTWV0YXZhcmlhYmxlIiwiaHlwb3RoZXNlc1N0cmluZ0Zyb21IeXBvdGhlc2VzIiwibGFiZWxzU3RyaW5nRnJvbUxhYmVscyIsInBhcmFtZXRlcnNTdHJpbmdGcm9tUGFyYW1ldGVycyIsInByZW1pc2VzU3RyaW5nRnJvbVByZW1pc2VzIiwicHJvY2VkdXJlQ2FsbFN0cmluZ0Zyb21Qcm9jZWR1cmVSZWZlcmVuY2VBbmRQYXJhbWV0ZXJzIiwicmVmZXJlbmNlU3Vic3RpdHV0aW9uU3RyaW5nRnJvbVJlZmVyZW5jZUFuZE1ldGF2YXJpYWJsZSIsInJ1bHNTdHJpbmdGcm9tTGFiZWxzUHJlbWlzZXNBbmRDb25jbHVzaW9uIiwic2VjdGlvblN0cmluZ0Zyb21IeXBvdGhlc2VzVG9wTGV2ZWxBc3NlcnRpb24iLCJzaWduYXR1cmVTdHJpbmdGcm9tVGVybXMiLCJzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmdGcm9tU3RhdGVtZW50QW5kTWV0YXZhcmlhYmxlIiwic3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nRnJvbVN0YXRlbWVudE1ldGF2YXJpYWJsZUFuZFN1YnN0aXR1dGlvbiIsInN1YnByb29mU3RyaW5nRnJvbVN1cHBvc2l0aW9uc0FuZFN1YkRlcml2YXRpb24iLCJzdXBlclR5cGVzU3RyaW5nRnJvbVN1cGVyVHlwZXMiLCJzdXBwb3NpdGlvbnNTdHJpbmdGcm9tU3VwcG9zaXRpb25zIiwidGVybVN1YnN0aXR1dGlvblN0cmluZ0Zyb21UZXJtQW5kVmFyaWFibGUiLCJ0ZXJtc1N0cmluZ0Zyb21UZXJtcyIsInRvcExldmVsQXNzZXJ0aW9uU3RyaW5nRnJvbUxhYmVsc1N1cHBvc2l0aW9uc0FuZERlZHVjdGlvbiIsInRvcExldmVsTWV0YUFzc2VydGlvblN0cmluZ0Zyb21MYWJlbFN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbiIsInR5cGVTdHJpbmdGcm9tTm9taW5hbFR5cGVOYW1lIiwidHlwZVN0cmluZ0Zyb21UeXBlTmFtZVR5cGVQcmVmaXhOYW1lQW5kU3VwZXJUeXBlcyIsInRlcm1zIiwidGVybXNTdHJpbmciLCJyZWR1Y2UiLCJ0ZXJtIiwidGVybVN0cmluZyIsImdldFN0cmluZyIsImxhYmVscyIsImxhYmVsc1N0cmluZyIsImxhYmVsIiwibGFiZWxTdHJpbmciLCJwcmVtaXNlcyIsInByZW1pc2VzU3RyaW5nIiwicHJlbWlzZSIsInByZW1pc2VTdHJpbmciLCJoeXBvdGhlc2VzIiwiaHlwb3RoZXNlc1N0cmluZyIsImh5cG90aGVzaXMiLCJoeXBvdGhlc2lzU3RyaW5nIiwic3VwZXJUeXBlcyIsImJhc2VUeXBlIiwiYmFzZVR5cGVGcm9tTm90aGluZyIsInN1cGVyVHlwZXNTdHJpbmciLCJzdXBlclR5cGUiLCJzdXBlclR5cGVTdHJpbmciLCJwYXJhbWV0ZXJzIiwicGFyYW1ldGVyc1N0cmluZyIsInBhcmFtZXRlciIsInBhcmFtZXRlclN0cmluZyIsImFzc3VtcHRpb25zIiwiYXNzdW1wdGlvbnNTdHJpbmciLCJhc3N1bXB0aW9uIiwiYXNzdW1wdGlvblN0cmluZyIsInN1cHBvc2l0aW9ucyIsInN1cHBvc2l0aW9uc1N0cmluZyIsInN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb25TdHJpbmciLCJzaWduYXR1cmVTdHJpbmciLCJlcXVpdmFsZW5jZVN0cmluZyIsIm5vbWluYWxUeXBlTmFtZSIsInR5cGVTdHJpbmciLCJ2YXJpYWJsZSIsInZhcmlhYmxlU3RyaW5nIiwidGVybVN1YnN0aXR1dGlvblN0cmluZyIsImNvbmNsdXNpb24iLCJjb25jbHVzaW9uU3RyaW5nIiwicnVsZVN0cmluZyIsImF4aW9tIiwibGVtbWEiLCJ0aGVvcmVtIiwiY29uamVjdHVyZSIsInRvcExldmVsQXNzZXJ0aW9uIiwidG9wTGV2ZWxBc3NlcnRpb25TdHJpbmciLCJzZWN0aW9uU3RyaW5nIiwic3ViRGVyaXZhdGlvbiIsImxhc3RQcm9vZkFzc2VydGlvbiIsImdldExhc3RQcm9vZkFzc2VydGlvbiIsImxhc3RQcm9vZkFzc2VydGlvblN0cmluZyIsInN1YnByb29mU3RyaW5nIiwiZnJhbWUiLCJtZXRhdmFyaWFibGUiLCJmcmFtZVN0cmluZyIsIm1ldGF2YXJpYWJsZVN0cmluZyIsInN0cmluZyIsInR5cGVOYW1lIiwidHlwZVByZWZpeE5hbWUiLCJwcm9jZWR1cmVSZWZlcmVuY2UiLCJwcm9jZWR1cmVSZWZlcmVuY2VOYW1lIiwiZ2V0TmFtZSIsInByb2NlZHVyZUNhbGxTdHJpbmciLCJzdGF0ZW1lbnQiLCJzdGF0ZW1lbnRTdHJpbmciLCJzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmciLCJyZWZlcmVuY2UiLCJyZWZlcmVuY2VTdHJpbmciLCJyZWZlcmVuY2VTdWJzdGl0dXRpb25TdHJpbmciLCJkZWR1Y3Rpb24iLCJkZWR1Y3Rpb25TdHJpbmciLCJ0b3BMZXZlbE1ldGFBc3NlcnRpb25TdHJpbmciLCJzdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb25TdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQTJGZ0JBO2VBQUFBOztRQW1DQUM7ZUFBQUE7O1FBb0RBQztlQUFBQTs7UUFwSUFDO2VBQUFBOztRQTVCQUM7ZUFBQUE7O1FBMkRBQztlQUFBQTs7UUE3Q0FDO2VBQUFBOztRQTBLQUM7ZUFBQUE7O1FBZ0JBQztlQUFBQTs7UUF2RUFDO2VBQUFBOztRQVdBQztlQUFBQTs7UUF2Q0FDO2VBQUFBOztRQTJGQUM7ZUFBQUE7O1FBK0NBQztlQUFBQTs7UUF4RkFDO2VBQUFBOztRQTdHQUM7ZUFBQUE7O1FBNkNBQztlQUFBQTs7UUFrQ0FDO2VBQUFBOztRQXZJQUM7ZUFBQUE7O1FBOE5BQztlQUFBQTs7UUFvQkFDO2VBQUFBOztRQWpIQUM7ZUFBQUE7O1FBcURBQztlQUFBQTs7O3NCQXhMb0I7QUFFN0IsU0FBU0oscUJBQXFCSyxLQUFLO0lBQ3hDLE1BQU1DLGNBQWNELE1BQU1FLE1BQU0sQ0FBQyxDQUFDRCxhQUFhRTtRQUM3QyxNQUFNQyxhQUFhRCxLQUFLRSxTQUFTO1FBRWpDSixjQUFjLEFBQUNBLGdCQUFnQixPQUNoQixHQUFHQSxZQUFZLEVBQUUsRUFBRUcsWUFBWSxHQUM1QkE7UUFFbEIsT0FBT0g7SUFDVCxHQUFHO0lBRUgsT0FBT0E7QUFDVDtBQUVPLFNBQVNwQix1QkFBdUJ5QixNQUFNO0lBQzNDLE1BQU1DLGVBQWVELE9BQU9KLE1BQU0sQ0FBQyxD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
221
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RyaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBiYXNlVHlwZUZyb21Ob3RoaW5nIH0gZnJvbSBcIi4uL3V0aWxpdGllcy90eXBlXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtc1N0cmluZ0Zyb21UZXJtcyh0ZXJtcykge1xuICBjb25zdCB0ZXJtc1N0cmluZyA9IHRlcm1zLnJlZHVjZSgodGVybXNTdHJpbmcsIHRlcm0pID0+IHtcbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKTtcblxuICAgIHRlcm1zU3RyaW5nID0gKHRlcm1zU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgYCR7dGVybXNTdHJpbmd9LCAke3Rlcm1TdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgdGVybVN0cmluZztcblxuICAgIHJldHVybiB0ZXJtc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIHRlcm1zU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxzU3RyaW5nRnJvbUxhYmVscyhsYWJlbHMpIHtcbiAgY29uc3QgbGFiZWxzU3RyaW5nID0gbGFiZWxzLnJlZHVjZSgobGFiZWxzU3RyaW5nLCBsYWJlbCkgPT4ge1xuICAgIGNvbnN0IGxhYmVsU3RyaW5nID0gbGFiZWwuZ2V0U3RyaW5nKCk7XG5cbiAgICBsYWJlbHNTdHJpbmcgPSAobGFiZWxzU3RyaW5nID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICBsYWJlbFN0cmluZzogLy8vXG4gICAgICAgICAgICAgICAgICAgICAgYCR7bGFiZWxzU3RyaW5nfSwgJHtsYWJlbFN0cmluZ31gO1xuXG4gICAgcmV0dXJuIGxhYmVsc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIGxhYmVsc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZW1pc2VzU3RyaW5nRnJvbVByZW1pc2VzKHByZW1pc2VzKSB7XG4gIGNvbnN0IHByZW1pc2VzU3RyaW5nID0gcHJlbWlzZXMucmVkdWNlKChwcmVtaXNlc1N0cmluZywgcHJlbWlzZSkgPT4ge1xuICAgIGNvbnN0IHByZW1pc2VTdHJpbmcgPSBwcmVtaXNlLmdldFN0cmluZygpO1xuXG4gICAgcHJlbWlzZXNTdHJpbmcgPSAocHJlbWlzZXNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgYCR7cHJlbWlzZXNTdHJpbmd9LCAke3ByZW1pc2VTdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgcHJlbWlzZVN0cmluZzsgIC8vL1xuXG4gICAgcmV0dXJuIHByZW1pc2VzU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICByZXR1cm4gcHJlbWlzZXNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoeXBvdGhlc2VzU3RyaW5nRnJvbUh5cG90aGVzZXMoaHlwb3RoZXNlcykge1xuICBjb25zdCBoeXBvdGhlc2VzU3RyaW5nID0gaHlwb3RoZXNlcy5yZWR1Y2UoKGh5cG90aGVzZXNTdHJpbmcsIGh5cG90aGVzaXMpID0+IHtcbiAgICBjb25zdCBoeXBvdGhlc2lzU3RyaW5nID0gaHlwb3RoZXNpcy5nZXRTdHJpbmcoKTtcblxuICAgIGh5cG90aGVzZXNTdHJpbmcgPSAoaHlwb3RoZXNlc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtoeXBvdGhlc2VzU3RyaW5nfSwgJHtoeXBvdGhlc2lzU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh5cG90aGVzaXNTdHJpbmc7ICAvLy9cblxuICAgIHJldHVybiBoeXBvdGhlc2VzU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICByZXR1cm4gaHlwb3RoZXNlc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyVHlwZXNTdHJpbmdGcm9tU3VwZXJUeXBlcyhzdXBlclR5cGVzKSB7XG4gIGNvbnN0IGJhc2VUeXBlID0gYmFzZVR5cGVGcm9tTm90aGluZygpLFxuICAgICAgICBzdXBlclR5cGVzU3RyaW5nID0gc3VwZXJUeXBlcy5yZWR1Y2UoKHN1cGVyVHlwZXNTdHJpbmcsIHN1cGVyVHlwZSkgPT4ge1xuICAgICAgICAgIGlmIChzdXBlclR5cGUgIT09IGJhc2VUeXBlKSB7XG4gICAgICAgICAgICBjb25zdCBzdXBlclR5cGVTdHJpbmcgPSBzdXBlclR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgICAgICAgIHN1cGVyVHlwZXNTdHJpbmcgPSAoc3VwZXJUeXBlc1N0cmluZyA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCcke3N1cGVyVHlwZVN0cmluZ30nYCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3N1cGVyVHlwZXNTdHJpbmd9LCAnJHtzdXBlclR5cGVTdHJpbmd9J2A7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHN1cGVyVHlwZXNTdHJpbmc7XG4gICAgICAgIH0sIG51bGwpO1xuXG4gIHJldHVybiBzdXBlclR5cGVzU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyYW1ldGVyc1N0cmluZ0Zyb21QYXJhbWV0ZXJzKHBhcmFtZXRlcnMpIHtcbiAgY29uc3QgcGFyYW1ldGVyc1N0cmluZyA9IHBhcmFtZXRlcnMucmVkdWNlKChwYXJhbWV0ZXJzU3RyaW5nLCBwYXJhbWV0ZXIpID0+IHtcbiAgICBjb25zdCBwYXJhbWV0ZXJTdHJpbmcgPSBwYXJhbWV0ZXIuZ2V0U3RyaW5nKCk7XG5cbiAgICBwYXJhbWV0ZXJzU3RyaW5nID0gKHBhcmFtZXRlcnNTdHJpbmcgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJTdHJpbmcgOiAvLy9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7cGFyYW1ldGVyc1N0cmluZ30sICR7cGFyYW1ldGVyU3RyaW5nfWA7XG5cbiAgICByZXR1cm4gcGFyYW1ldGVyc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlcnNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3N1bXB0aW9uc1N0cmluZ0Zyb21Bc3N1bXB0aW9ucyhhc3N1bXB0aW9ucykge1xuICBjb25zdCBhc3N1bXB0aW9uc1N0cmluZyA9IGFzc3VtcHRpb25zLnJlZHVjZSgoYXNzdW1wdGlvbnNTdHJpbmcsIGFzc3VtcHRpb24pID0+IHtcbiAgICBjb25zdCBhc3N1bXB0aW9uU3RyaW5nID0gYXNzdW1wdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGFzc3VtcHRpb25zU3RyaW5nID0gKGFzc3VtcHRpb25zU3RyaW5nID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFzc3VtcHRpb25TdHJpbmc6IC8vL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7YXNzdW1wdGlvbnNTdHJpbmd9LCAke2Fzc3VtcHRpb25TdHJpbmd9YDtcblxuICAgIHJldHVybiBhc3N1bXB0aW9uc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIGFzc3VtcHRpb25zU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwcG9zaXRpb25zU3RyaW5nRnJvbVN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbnMpIHtcbiAgY29uc3Qgc3VwcG9zaXRpb25zU3RyaW5nID0gc3VwcG9zaXRpb25zLnJlZHVjZSgoc3VwcG9zaXRpb25zU3RyaW5nLCBzdXBwb3NpdGlvbikgPT4ge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uU3RyaW5nID0gc3VwcG9zaXRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBzdXBwb3NpdGlvbnNTdHJpbmcgPSAoc3VwcG9zaXRpb25zU3RyaW5nID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3NpdGlvblN0cmluZzogLy8vXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7c3VwcG9zaXRpb25zU3RyaW5nfSwgJHtzdXBwb3NpdGlvblN0cmluZ31gO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIHN1cHBvc2l0aW9uc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hdHVyZVN0cmluZ0Zyb21UZXJtcyh0ZXJtcykge1xuICBjb25zdCB0ZXJtc1N0cmluZyA9IHRlcm1zU3RyaW5nRnJvbVRlcm1zKHRlcm1zKSxcbiAgICAgICAgc2lnbmF0dXJlU3RyaW5nID0gYFske3Rlcm1zU3RyaW5nfV1gO1xuXG4gIHJldHVybiBzaWduYXR1cmVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcXVpdmFsZW5jZVN0cmluZ0Zyb21UZXJtcyh0ZXJtcykge1xuICBjb25zdCB0ZXJtc1N0cmluZyA9IHRlcm1zU3RyaW5nRnJvbVRlcm1zKHRlcm1zKSxcbiAgICAgICAgZXF1aXZhbGVuY2VTdHJpbmcgPSBgWyR7dGVybXNTdHJpbmd9XWA7XG5cbiAgcmV0dXJuIGVxdWl2YWxlbmNlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZVN0cmluZ0Zyb21Ob21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKSB7XG4gIGNvbnN0IHR5cGVTdHJpbmcgPSBub21pbmFsVHlwZU5hbWU7ICAvLy9cblxuICByZXR1cm4gdHlwZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1TdWJzdGl0dXRpb25TdHJpbmdGcm9tVGVybUFuZFZhcmlhYmxlKHRlcm0sIHZhcmlhYmxlKSB7XG4gIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICB2YXJpYWJsZVN0cmluZyA9IHZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICB0ZXJtU3Vic3RpdHV0aW9uU3RyaW5nID0gYFske3Rlcm1TdHJpbmd9IGZvciAke3ZhcmlhYmxlU3RyaW5nfV1gO1xuXG4gIHJldHVybiB0ZXJtU3Vic3RpdHV0aW9uU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVsc1N0cmluZ0Zyb21MYWJlbHNQcmVtaXNlc0FuZENvbmNsdXNpb24obGFiZWxzLCBwcmVtaXNlcywgY29uY2x1c2lvbikge1xuICBjb25zdCBwcmVtaXNlc1N0cmluZyA9IHByZW1pc2VzU3RyaW5nRnJvbVByZW1pc2VzKHByZW1pc2VzKSxcbiAgICAgICAgY29uY2x1c2lvblN0cmluZyA9IGNvbmNsdXNpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgIGxhYmVsc1N0cmluZyA9IGxhYmVsc1N0cmluZ0Zyb21MYWJlbHMobGFiZWxzKSxcbiAgICAgICAgcnVsZVN0cmluZyA9IChwcmVtaXNlc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICBgJHtsYWJlbHNTdHJpbmd9IDo6IFske3ByZW1pc2VzU3RyaW5nfV0uLi4ke2NvbmNsdXNpb25TdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgYCR7bGFiZWxzU3RyaW5nfSA6OiAke2NvbmNsdXNpb25TdHJpbmd9YDtcblxuICByZXR1cm4gcnVsZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlY3Rpb25TdHJpbmdGcm9tSHlwb3RoZXNlc1RvcExldmVsQXNzZXJ0aW9uKGh5cG90aGVzZXMsIGF4aW9tLCBsZW1tYSwgdGhlb3JlbSwgY29uamVjdHVyZSkge1xuICBjb25zdCB0b3BMZXZlbEFzc2VydGlvbiA9IChheGlvbSB8fCBsZW1tYSB8fCB0aGVvcmVtIHx8IGNvbmplY3R1cmUpLFxuICAgICAgICB0b3BMZXZlbEFzc2VydGlvblN0cmluZyA9IHRvcExldmVsQXNzZXJ0aW9uLmdldFN0cmluZygpLFxuICAgICAgICBoeXBvdGhlc2VzU3RyaW5nID0gaHlwb3RoZXNlc1N0cmluZ0Zyb21IeXBvdGhlc2VzKGh5cG90aGVzZXMpLFxuICAgICAgICBzZWN0aW9uU3RyaW5nID0gKHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBbJHtoeXBvdGhlc2VzU3RyaW5nfV06OjogJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ31gIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgWyR7aHlwb3RoZXNlc1N0cmluZ31dOjo6IGA7XG5cbiAgcmV0dXJuIHNlY3Rpb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJwcm9vZlN0cmluZ0Zyb21TdXBwb3NpdGlvbnNBbmRTdWJEZXJpdmF0aW9uKHN1cHBvc2l0aW9ucywgc3ViRGVyaXZhdGlvbikge1xuICBjb25zdCBsYXN0UHJvb2ZBc3NlcnRpb24gPSBzdWJEZXJpdmF0aW9uLmdldExhc3RQcm9vZkFzc2VydGlvbigpLFxuICAgICAgICBzdXBwb3NpdGlvbnNTdHJpbmcgPSBzdXBwb3NpdGlvbnNTdHJpbmdGcm9tU3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucyksXG4gICAgICAgIGxhc3RQcm9vZkFzc2VydGlvblN0cmluZyA9IGxhc3RQcm9vZkFzc2VydGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3VicHJvb2ZTdHJpbmcgPSBgWyR7c3VwcG9zaXRpb25zU3RyaW5nfV0uLi4ke2xhc3RQcm9vZkFzc2VydGlvblN0cmluZ31gO1xuXG4gIHJldHVybiBzdWJwcm9vZlN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyYW1lU3Vic3RpdHV0aW9uU3RyaW5nRnJvbUZyYW1lQW5kTWV0YXZhcmlhYmxlKGZyYW1lLCBtZXRhdmFyaWFibGUpIHtcbiAgY29uc3QgZnJhbWVTdHJpbmcgPSBmcmFtZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICBzdHJpbmcgPSBgWyR7ZnJhbWVTdHJpbmd9IGZvciBbJHttZXRhdmFyaWFibGVTdHJpbmd9XV1gO1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlU3RyaW5nRnJvbVR5cGVOYW1lVHlwZVByZWZpeE5hbWVBbmRTdXBlclR5cGVzKHR5cGVOYW1lLCB0eXBlUHJlZml4TmFtZSwgc3VwZXJUeXBlcykge1xuICBsZXQgdHlwZVN0cmluZztcblxuICB0eXBlU3RyaW5nID0gKHR5cGVQcmVmaXhOYW1lICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgIGAke3R5cGVQcmVmaXhOYW1lfSR7dHlwZU5hbWV9YDpcbiAgICAgICAgICAgICAgICAgICB0eXBlTmFtZTtcblxuICBjb25zdCBzdXBlclR5cGVzU3RyaW5nID0gc3VwZXJUeXBlc1N0cmluZ0Zyb21TdXBlclR5cGVzKHN1cGVyVHlwZXMpO1xuXG4gIGlmIChzdXBlclR5cGVzU3RyaW5nICE9PSBudWxsKSB7XG4gICAgdHlwZVN0cmluZyA9IGAke3R5cGVTdHJpbmd9OiR7c3VwZXJUeXBlc1N0cmluZ31gO1xuICB9XG5cbiAgcmV0dXJuIHR5cGVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVDYWxsU3RyaW5nRnJvbVByb2NlZHVyZVJlZmVyZW5jZUFuZFBhcmFtZXRlcnMocHJvY2VkdXJlUmVmZXJlbmNlLCBwYXJhbWV0ZXJzKSB7XG4gIGNvbnN0IHByb2NlZHVyZVJlZmVyZW5jZU5hbWUgPSBwcm9jZWR1cmVSZWZlcmVuY2UuZ2V0TmFtZSgpLFxuICAgICAgICBwYXJhbWV0ZXJzU3RyaW5nID0gcGFyYW1ldGVyc1N0cmluZ0Zyb21QYXJhbWV0ZXJzKHBhcmFtZXRlcnMpLFxuICAgICAgICBwcm9jZWR1cmVDYWxsU3RyaW5nID0gYEAke3Byb2NlZHVyZVJlZmVyZW5jZU5hbWV9KCR7cGFyYW1ldGVyc1N0cmluZ30pYDtcblxuICByZXR1cm4gcHJvY2VkdXJlQ2FsbFN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudFN1YnN0aXR1dGlvblN0cmluZ0Zyb21TdGF0ZW1lbnRBbmRNZXRhdmFyaWFibGUoc3RhdGVtZW50LCBtZXRhdmFyaWFibGUpIHtcbiAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBtZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHN0YXRlbWVudFN1YnN0aXR1dGlvblN0cmluZyA9IGBbJHtzdGF0ZW1lbnRTdHJpbmd9IGZvciAke21ldGF2YXJpYWJsZVN0cmluZ31dYDtcblxuICByZXR1cm4gc3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVmZXJlbmNlU3Vic3RpdHV0aW9uU3RyaW5nRnJvbVJlZmVyZW5jZUFuZE1ldGF2YXJpYWJsZShyZWZlcmVuY2UsIG1ldGF2YXJpYWJsZSkge1xuICBjb25zdCByZWZlcmVuY2VTdHJpbmcgPSByZWZlcmVuY2UuZ2V0U3RyaW5nKCksXG4gICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IG1ldGF2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgcmVmZXJlbmNlU3Vic3RpdHV0aW9uU3RyaW5nID0gYFske3JlZmVyZW5jZVN0cmluZ30gZm9yICR7bWV0YXZhcmlhYmxlU3RyaW5nfV1gO1xuXG4gIHJldHVybiByZWZlcmVuY2VTdWJzdGl0dXRpb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b3BMZXZlbEFzc2VydGlvblN0cmluZ0Zyb21MYWJlbHNTdXBwb3NpdGlvbnNBbmREZWR1Y3Rpb24obGFiZWxzLCBzdXBwb3NpdGlvbnMsIGRlZHVjdGlvbikge1xuICBsZXQgdG9wTGV2ZWxBc3NlcnRpb25TdHJpbmc7XG5cbiAgY29uc3Qgc3VwcG9zaXRpb25zU3RyaW5nID0gc3VwcG9zaXRpb25zU3RyaW5nRnJvbVN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbnMpLFxuICAgICAgICBkZWR1Y3Rpb25TdHJpbmcgPSBkZWR1Y3Rpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgIGxhYmVsc1N0cmluZyA9IGxhYmVsc1N0cmluZ0Zyb21MYWJlbHMobGFiZWxzKTtcblxuICBpZiAobGFiZWxzU3RyaW5nICE9PSBudWxsKSB7XG4gICAgdG9wTGV2ZWxBc3NlcnRpb25TdHJpbmcgPSAoc3VwcG9zaXRpb25zU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7bGFiZWxzU3RyaW5nfSA6OiBbJHtzdXBwb3NpdGlvbnNTdHJpbmd9XS4uLiR7ZGVkdWN0aW9uU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7bGFiZWxzU3RyaW5nfSA6OiAke2RlZHVjdGlvblN0cmluZ31gO1xuICB9IGVsc2Uge1xuICAgIHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nID0gKHN1cHBvc2l0aW9uc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBbJHtzdXBwb3NpdGlvbnNTdHJpbmd9XS4uLiR7ZGVkdWN0aW9uU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZHVjdGlvblN0cmluZztcbiAgfVxuXG4gIHJldHVybiB0b3BMZXZlbEFzc2VydGlvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvcExldmVsTWV0YUFzc2VydGlvblN0cmluZ0Zyb21MYWJlbFN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbihsYWJlbCwgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24pIHtcbiAgY29uc3Qgc3VwcG9zaXRpb25zU3RyaW5nID0gc3VwcG9zaXRpb25zU3RyaW5nRnJvbVN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbnMpLFxuICAgICAgICBkZWR1Y3Rpb25TdHJpbmcgPSBkZWR1Y3Rpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgIGxhYmVsU3RyaW5nID0gbGFiZWwuZ2V0U3RyaW5nKCksXG4gICAgICAgIHRvcExldmVsTWV0YUFzc2VydGlvblN0cmluZyA9IChzdXBwb3NpdGlvbnNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke2xhYmVsU3RyaW5nfSA6OiBbJHtzdXBwb3NpdGlvbnNTdHJpbmd9XS4uLiR7ZGVkdWN0aW9uU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtsYWJlbFN0cmluZ30gOjogJHtkZWR1Y3Rpb25TdHJpbmd9YDtcblxuICByZXR1cm4gdG9wTGV2ZWxNZXRhQXNzZXJ0aW9uU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nRnJvbVN0YXRlbWVudE1ldGF2YXJpYWJsZUFuZFN1YnN0aXR1dGlvbihzdGF0ZW1lbnQsIG1ldGF2YXJpYWJsZSwgc3Vic3RpdHV0aW9uKSB7XG4gIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICBzdWJzdGl0dXRpb25TdHJpbmcgPSBzdWJzdGl0dXRpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgIHN0YXRlbWVudFN1YnN0aXR1dGlvblN0cmluZyA9IGBbJHtzdGF0ZW1lbnRTdHJpbmd9IGZvciAke21ldGF2YXJpYWJsZVN0cmluZ30ke3N1YnN0aXR1dGlvblN0cmluZ31dYDtcblxuICByZXR1cm4gc3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nO1xufVxuIl0sIm5hbWVzIjpbImFzc3VtcHRpb25zU3RyaW5nRnJvbUFzc3VtcHRpb25zIiwiZXF1aXZhbGVuY2VTdHJpbmdGcm9tVGVybXMiLCJmcmFtZVN1YnN0aXR1dGlvblN0cmluZ0Zyb21GcmFtZUFuZE1ldGF2YXJpYWJsZSIsImh5cG90aGVzZXNTdHJpbmdGcm9tSHlwb3RoZXNlcyIsImxhYmVsc1N0cmluZ0Zyb21MYWJlbHMiLCJwYXJhbWV0ZXJzU3RyaW5nRnJvbVBhcmFtZXRlcnMiLCJwcmVtaXNlc1N0cmluZ0Zyb21QcmVtaXNlcyIsInByb2NlZHVyZUNhbGxTdHJpbmdGcm9tUHJvY2VkdXJlUmVmZXJlbmNlQW5kUGFyYW1ldGVycyIsInJlZmVyZW5jZVN1YnN0aXR1dGlvblN0cmluZ0Zyb21SZWZlcmVuY2VBbmRNZXRhdmFyaWFibGUiLCJydWxzU3RyaW5nRnJvbUxhYmVsc1ByZW1pc2VzQW5kQ29uY2x1c2lvbiIsInNlY3Rpb25TdHJpbmdGcm9tSHlwb3RoZXNlc1RvcExldmVsQXNzZXJ0aW9uIiwic2lnbmF0dXJlU3RyaW5nRnJvbVRlcm1zIiwic3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nRnJvbVN0YXRlbWVudEFuZE1ldGF2YXJpYWJsZSIsInN0YXRlbWVudFN1YnN0aXR1dGlvblN0cmluZ0Zyb21TdGF0ZW1lbnRNZXRhdmFyaWFibGVBbmRTdWJzdGl0dXRpb24iLCJzdWJwcm9vZlN0cmluZ0Zyb21TdXBwb3NpdGlvbnNBbmRTdWJEZXJpdmF0aW9uIiwic3VwZXJUeXBlc1N0cmluZ0Zyb21TdXBlclR5cGVzIiwic3VwcG9zaXRpb25zU3RyaW5nRnJvbVN1cHBvc2l0aW9ucyIsInRlcm1TdWJzdGl0dXRpb25TdHJpbmdGcm9tVGVybUFuZFZhcmlhYmxlIiwidGVybXNTdHJpbmdGcm9tVGVybXMiLCJ0b3BMZXZlbEFzc2VydGlvblN0cmluZ0Zyb21MYWJlbHNTdXBwb3NpdGlvbnNBbmREZWR1Y3Rpb24iLCJ0b3BMZXZlbE1ldGFBc3NlcnRpb25TdHJpbmdGcm9tTGFiZWxTdXBwb3NpdGlvbnNBbmREZWR1Y3Rpb24iLCJ0eXBlU3RyaW5nRnJvbU5vbWluYWxUeXBlTmFtZSIsInR5cGVTdHJpbmdGcm9tVHlwZU5hbWVUeXBlUHJlZml4TmFtZUFuZFN1cGVyVHlwZXMiLCJ0ZXJtcyIsInRlcm1zU3RyaW5nIiwicmVkdWNlIiwidGVybSIsInRlcm1TdHJpbmciLCJnZXRTdHJpbmciLCJsYWJlbHMiLCJsYWJlbHNTdHJpbmciLCJsYWJlbCIsImxhYmVsU3RyaW5nIiwicHJlbWlzZXMiLCJwcmVtaXNlc1N0cmluZyIsInByZW1pc2UiLCJwcmVtaXNlU3RyaW5nIiwiaHlwb3RoZXNlcyIsImh5cG90aGVzZXNTdHJpbmciLCJoeXBvdGhlc2lzIiwiaHlwb3RoZXNpc1N0cmluZyIsInN1cGVyVHlwZXMiLCJiYXNlVHlwZSIsImJhc2VUeXBlRnJvbU5vdGhpbmciLCJzdXBlclR5cGVzU3RyaW5nIiwic3VwZXJUeXBlIiwic3VwZXJUeXBlU3RyaW5nIiwicGFyYW1ldGVycyIsInBhcmFtZXRlcnNTdHJpbmciLCJwYXJhbWV0ZXIiLCJwYXJhbWV0ZXJTdHJpbmciLCJhc3N1bXB0aW9ucyIsImFzc3VtcHRpb25zU3RyaW5nIiwiYXNzdW1wdGlvbiIsImFzc3VtcHRpb25TdHJpbmciLCJzdXBwb3NpdGlvbnMiLCJzdXBwb3NpdGlvbnNTdHJpbmciLCJzdXBwb3NpdGlvbiIsInN1cHBvc2l0aW9uU3RyaW5nIiwic2lnbmF0dXJlU3RyaW5nIiwiZXF1aXZhbGVuY2VTdHJpbmciLCJub21pbmFsVHlwZU5hbWUiLCJ0eXBlU3RyaW5nIiwidmFyaWFibGUiLCJ2YXJpYWJsZVN0cmluZyIsInRlcm1TdWJzdGl0dXRpb25TdHJpbmciLCJjb25jbHVzaW9uIiwiY29uY2x1c2lvblN0cmluZyIsInJ1bGVTdHJpbmciLCJheGlvbSIsImxlbW1hIiwidGhlb3JlbSIsImNvbmplY3R1cmUiLCJ0b3BMZXZlbEFzc2VydGlvbiIsInRvcExldmVsQXNzZXJ0aW9uU3RyaW5nIiwic2VjdGlvblN0cmluZyIsInN1YkRlcml2YXRpb24iLCJsYXN0UHJvb2ZBc3NlcnRpb24iLCJnZXRMYXN0UHJvb2ZBc3NlcnRpb24iLCJsYXN0UHJvb2ZBc3NlcnRpb25TdHJpbmciLCJzdWJwcm9vZlN0cmluZyIsImZyYW1lIiwibWV0YXZhcmlhYmxlIiwiZnJhbWVTdHJpbmciLCJtZXRhdmFyaWFibGVTdHJpbmciLCJzdHJpbmciLCJ0eXBlTmFtZSIsInR5cGVQcmVmaXhOYW1lIiwicHJvY2VkdXJlUmVmZXJlbmNlIiwicHJvY2VkdXJlUmVmZXJlbmNlTmFtZSIsImdldE5hbWUiLCJwcm9jZWR1cmVDYWxsU3RyaW5nIiwic3RhdGVtZW50Iiwic3RhdGVtZW50U3RyaW5nIiwic3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nIiwicmVmZXJlbmNlIiwicmVmZXJlbmNlU3RyaW5nIiwicmVmZXJlbmNlU3Vic3RpdHV0aW9uU3RyaW5nIiwiZGVkdWN0aW9uIiwiZGVkdWN0aW9uU3RyaW5nIiwidG9wTGV2ZWxNZXRhQXNzZXJ0aW9uU3RyaW5nIiwic3Vic3RpdHV0aW9uIiwic3Vic3RpdHV0aW9uU3RyaW5nIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUEyRmdCQTtlQUFBQTs7UUFtQ0FDO2VBQUFBOztRQW9EQUM7ZUFBQUE7O1FBcElBQztlQUFBQTs7UUE1QkFDO2VBQUFBOztRQTJEQUM7ZUFBQUE7O1FBN0NBQztlQUFBQTs7UUEwS0FDO2VBQUFBOztRQWdCQUM7ZUFBQUE7O1FBdkVBQztlQUFBQTs7UUFXQUM7ZUFBQUE7O1FBdkNBQztlQUFBQTs7UUEyRkFDO2VBQUFBOztRQStDQUM7ZUFBQUE7O1FBeEZBQztlQUFBQTs7UUE3R0FDO2VBQUFBOztRQTZDQUM7ZUFBQUE7O1FBa0NBQztlQUFBQTs7UUF2SUFDO2VBQUFBOztRQThOQUM7ZUFBQUE7O1FBb0JBQztlQUFBQTs7UUFqSEFDO2VBQUFBOztRQXFEQUM7ZUFBQUE7OztzQkF4TG9CO0FBRTdCLFNBQVNKLHFCQUFxQkssS0FBSztJQUN4QyxNQUFNQyxjQUFjRCxNQUFNRSxNQUFNLENBQUMsQ0FBQ0QsYUFBYUU7UUFDN0MsTUFBTUMsYUFBYUQsS0FBS0UsU0FBUztRQUVqQ0osY0FBYyxBQUFDQSxnQkFBZ0IsT0FDaEIsR0FBR0EsWUFBWSxFQUFFLEVBQUVHLFlBQVksR0FDNUJBO1FBRWxCLE9BQU9IO0lBQ1QsR0FBRztJQUVILE9BQU9BO0FBQ1Q7QUFFTyxTQUFTcEIsdUJBQXVCeUIsTUFBTTtJQUMzQyxNQUFNQyxlQUFlRCxPQUFPSixNQUFNLENBQUMs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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-verify-cli",
3
3
  "author": "James Smith",
4
- "version": "1.0.685",
4
+ "version": "1.0.687",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-verify-cli",
7
7
  "description": "Occam's Verifier",
@@ -3,7 +3,16 @@
3
3
  import Assertion from "../assertion";
4
4
 
5
5
  import { define } from "../../elements";
6
- import { termToTermJSON, frameToFrameJSON, negatedToNegatedJSON, statementToStatementJSON } from "../../utilities/json";
6
+ import { literally } from "../../utilities/context";
7
+ import { instantiateContainedAssertion } from "../../process/instantiate";
8
+ import { termFromJSON,
9
+ frameFromJSON,
10
+ negatedFromJSON,
11
+ termToTermJSON,
12
+ frameToFrameJSON,
13
+ statementFromJSON,
14
+ negatedToNegatedJSON,
15
+ statementToStatementJSON } from "../../utilities/json";
7
16
  import { termFromTermAndSubstitutions, frameFromFrameAndSubstitutions, statementFromStatementAndSubstitutions } from "../../utilities/substitutions";
8
17
 
9
18
  export default define(class ContainedAssertion extends Assertion {
@@ -268,7 +277,17 @@ export default define(class ContainedAssertion extends Assertion {
268
277
  const { name } = json;
269
278
 
270
279
  if (this.name === name) {
271
- debugger
280
+ literally((context) => {
281
+ const { string } = json,
282
+ containedAssertionNode = instantiateContainedAssertion(string, context),
283
+ node = containedAssertionNode, ///
284
+ term = termFromJSON(json, context),
285
+ frame = frameFromJSON(json, context),
286
+ negated = negatedFromJSON(json, context),
287
+ statement = statementFromJSON(json, context);
288
+
289
+ containedAssertion = new ContainedAssertion(context, string, node, term, frame, negated, statement);
290
+ }, context);
272
291
  }
273
292
 
274
293
  return containedAssertion;
@@ -3,8 +3,10 @@
3
3
  import Assertion from "../assertion";
4
4
 
5
5
  import { define } from "../../elements";
6
- import { termToTermJSON, frameToFrameJSON, negatedToNegatedJSON } from "../../utilities/json";
6
+ import { literally } from "../../utilities/context";
7
+ import { instantiateDefinedAssertion } from "../../process/instantiate";
7
8
  import { termFromTermAndSubstitutions, frameFromFrameAndSubstitutions } from "../../utilities/substitutions";
9
+ import { termFromJSON, frameFromJSON, negatedFromJSON, termToTermJSON, frameToFrameJSON, negatedToNegatedJSON } from "../../utilities/json";
8
10
 
9
11
  export default define(class DefinedAssertion extends Assertion {
10
12
  constructor(context, string, node, term, frame, negated) {
@@ -234,7 +236,16 @@ export default define(class DefinedAssertion extends Assertion {
234
236
  const { name } = json;
235
237
 
236
238
  if (this.name === name) {
237
- debugger
239
+ literally((context) => {
240
+ const { string } = json,
241
+ definedAssertionNode = instantiateDefinedAssertion(string, context),
242
+ node = definedAssertionNode, ///
243
+ term = termFromJSON(json, context),
244
+ frame = frameFromJSON(json, context),
245
+ negated = negatedFromJSON(json, context);
246
+
247
+ definedAssertion = new DefinedAssertion(context, string, node, term, frame, negated);
248
+ }, context);
238
249
  }
239
250
 
240
251
  return definedAssertion;