occam-verify-cli 1.0.792 → 1.0.799

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.
Files changed (69) hide show
  1. package/lib/context/ephemeral.js +41 -11
  2. package/lib/context/file/nominal.js +5 -1
  3. package/lib/context/liminal.js +39 -16
  4. package/lib/context/proof.js +35 -40
  5. package/lib/context.js +23 -3
  6. package/lib/element/assertion/contained.js +10 -14
  7. package/lib/element/assertion/defined.js +6 -8
  8. package/lib/element/assumption/metaLevel.js +181 -0
  9. package/lib/element/assumption.js +24 -44
  10. package/lib/element/frame.js +12 -18
  11. package/lib/element/hypothesis.js +1 -1
  12. package/lib/element/judgement.js +19 -15
  13. package/lib/element/metavariable.js +73 -48
  14. package/lib/element/proofAssertion/step.js +5 -7
  15. package/lib/element/reference.js +21 -19
  16. package/lib/element/substitution/frame.js +12 -16
  17. package/lib/element/substitution/reference.js +20 -1
  18. package/lib/element/substitution/statement.js +22 -2
  19. package/lib/element/topLevelMetaAssertion.js +9 -9
  20. package/lib/node/assumption/metaLevel.js +27 -0
  21. package/lib/node/assumption.js +5 -5
  22. package/lib/node/declaration/metavariable.js +4 -4
  23. package/lib/node/frame.js +5 -2
  24. package/lib/nonTerminalNodeMap.js +3 -1
  25. package/lib/preamble.js +2 -1
  26. package/lib/process/instantiate.js +8 -2
  27. package/lib/process/unify.js +22 -35
  28. package/lib/ruleNames.js +5 -1
  29. package/lib/utilities/context.js +5 -5
  30. package/lib/utilities/element.js +34 -26
  31. package/lib/utilities/json.js +23 -1
  32. package/lib/utilities/string.js +25 -14
  33. package/lib/utilities/unification.js +3 -3
  34. package/lib/utilities/validation.js +9 -14
  35. package/package.json +4 -4
  36. package/src/context/ephemeral.js +63 -12
  37. package/src/context/file/nominal.js +6 -0
  38. package/src/context/liminal.js +54 -16
  39. package/src/context/proof.js +41 -47
  40. package/src/context.js +35 -2
  41. package/src/element/assertion/contained.js +10 -14
  42. package/src/element/assertion/defined.js +6 -8
  43. package/src/element/assumption/metaLevel.js +263 -0
  44. package/src/element/assumption.js +35 -63
  45. package/src/element/frame.js +11 -17
  46. package/src/element/hypothesis.js +1 -1
  47. package/src/element/judgement.js +18 -19
  48. package/src/element/metavariable.js +98 -58
  49. package/src/element/proofAssertion/step.js +5 -7
  50. package/src/element/reference.js +30 -23
  51. package/src/element/substitution/frame.js +11 -15
  52. package/src/element/substitution/reference.js +33 -0
  53. package/src/element/substitution/statement.js +33 -1
  54. package/src/element/topLevelMetaAssertion.js +15 -15
  55. package/src/node/assumption/metaLevel.js +23 -0
  56. package/src/node/assumption.js +8 -8
  57. package/src/node/declaration/metavariable.js +4 -4
  58. package/src/node/frame.js +6 -1
  59. package/src/nonTerminalNodeMap.js +3 -0
  60. package/src/preamble.js +1 -0
  61. package/src/process/instantiate.js +4 -0
  62. package/src/process/unify.js +25 -50
  63. package/src/ruleNames.js +1 -0
  64. package/src/utilities/context.js +4 -4
  65. package/src/utilities/element.js +47 -35
  66. package/src/utilities/json.js +27 -1
  67. package/src/utilities/string.js +34 -19
  68. package/src/utilities/unification.js +3 -3
  69. package/src/utilities/validation.js +10 -16
@@ -41,7 +41,7 @@ function _interop_require_default(obj) {
41
41
  };
42
42
  }
43
43
  const { nodeQuery } = _occamlanguages.queryUtilities;
44
- const typeNodeQuery = nodeQuery("/type"), termNodeQuery = nodeQuery("/term"), frameNodeQuery = nodeQuery("/frame"), metaTypeNodeQuery = nodeQuery("/metaType"), statementNodeQuery = nodeQuery("/statement"), metavariableNodeQuery = nodeQuery("/metavariable"), termVariableNodeQuery = nodeQuery("/term/variable!"), frameMetavariableNodeQuery = nodeQuery("/frame/metavariable!"), statementMetavariableNodeQuery = nodeQuery("/statement/metavariable!"), assumptionMetavariableNodeQuery = nodeQuery("/assumption/metavariable!");
44
+ const typeNodeQuery = nodeQuery("/type"), termNodeQuery = nodeQuery("/term"), frameNodeQuery = nodeQuery("/frame"), metaTypeNodeQuery = nodeQuery("/metaType"), statementNodeQuery = nodeQuery("/statement"), metavariableNodeQuery = nodeQuery("/metavariable"), termVariableNodeQuery = nodeQuery("/term/variable!"), frameMetavariableNodeQuery = nodeQuery("/frame/metavariable!"), referenceMetavariableNodeQuery = nodeQuery("/reference/metavariable!"), statementMetavariableNodeQuery = nodeQuery("/statement/metavariable!"), assumptionMetavariableNodeQuery = nodeQuery("/assumption/metavariable!");
45
45
  class MetaLevelPass extends _occamlanguages.ZipPass {
46
46
  static maps = [
47
47
  {
@@ -49,13 +49,15 @@ class MetaLevelPass extends _occamlanguages.ZipPass {
49
49
  specificNodeQuery: assumptionMetavariableNodeQuery,
50
50
  run: (generalAssumptionMetavariableNode, specificAssumptionMetavariableNode, generalContext, specificContext)=>{
51
51
  let success = false;
52
- let context, metavariableNode;
52
+ let context, reference, metavariableNode;
53
53
  context = generalContext; ///
54
54
  metavariableNode = generalAssumptionMetavariableNode; ///
55
- const metavariableName = metavariableNode.getMetavariableName(), metavariable = context.findMetavariableByMetavariableName(metavariableName);
55
+ reference = context.findReferenceByMetavariableNode(metavariableNode);
56
+ const metavariable = reference.getMetavariable();
56
57
  context = specificContext; ///
57
58
  metavariableNode = specificAssumptionMetavariableNode; ///
58
- const reference = context.findReferenceByMetavariableNode(metavariableNode), referenceUnifies = metavariable.unifyReference(reference, generalContext, specificContext);
59
+ reference = context.findReferenceByMetavariableNode(metavariableNode);
60
+ const referenceUnifies = metavariable.unifyReference(reference, generalContext, specificContext);
59
61
  if (referenceUnifies) {
60
62
  success = true;
61
63
  }
@@ -69,7 +71,7 @@ class MetaLevelPass extends _occamlanguages.ZipPass {
69
71
  let success = false;
70
72
  let context, statementNode;
71
73
  context = generalContext; ///
72
- const metavariableNode = generalStatementMetavariableNode, metavariableName = metavariableNode.getMetavariableName(), metavariable = context.findMetavariableByMetavariableName(metavariableName), metavariableNodeParentNode = metavariableNode.getParentNode();
74
+ const metavariableNode = generalStatementMetavariableNode, metavariable = context.findMetavariableByMetavariableNode(metavariableNode), metavariableNodeParentNode = metavariableNode.getParentNode();
73
75
  statementNode = metavariableNodeParentNode; ///
74
76
  const substitutionNode = statementNode.getSubstitutionNode(), substitution = substitutionNode !== null ? context.findSubstitutionBySubstitutionNode(substitutionNode) : null;
75
77
  context = specificContext; ///
@@ -86,10 +88,10 @@ class MetaLevelPass extends _occamlanguages.ZipPass {
86
88
  specificNodeQuery: frameNodeQuery,
87
89
  run: (generalFrameMetavariableNode, specificFrameNode, generalContext, specificContext)=>{
88
90
  let success = false;
89
- const frameNode = specificFrameNode, metavariableNode = generalFrameMetavariableNode, metavariableName = metavariableNode.getMetavariableName();
91
+ const frameNode = specificFrameNode, metavariableNode = generalFrameMetavariableNode;
90
92
  let context;
91
93
  context = generalContext; ///
92
- const metavariable = context.findMetavariableByMetavariableName(metavariableName);
94
+ const metavariable = context.findMetavariableByMetavariableNode(metavariableNode);
93
95
  context = specificContext; ///
94
96
  const frame = context.findFrameByFrameNode(frameNode), frameUnifies = metavariable.unifyFrame(frame, generalContext, specificContext);
95
97
  if (frameUnifies) {
@@ -124,10 +126,10 @@ class AssumptionPass extends _zip.default {
124
126
  specificNodeQuery: statementNodeQuery,
125
127
  run: (generalStatementMetavariableNode, specificStatementNode, generalContext, specificContext)=>{
126
128
  let success = false;
127
- const statementNode = specificStatementNode, metavariableNode = generalStatementMetavariableNode, metavariableName = metavariableNode.getMetavariableName();
129
+ const statementNode = specificStatementNode, metavariableNode = generalStatementMetavariableNode; ///
128
130
  let context;
129
131
  context = generalContext; ///
130
- const metavariable = context.findMetavariableByMetavariableName(metavariableName);
132
+ const metavariable = context.findMetavariableByMetavariableNode(metavariableNode);
131
133
  context = specificContext; ///
132
134
  const statement = context.findStatementByStatementNode(statementNode), substitution = null, statementUnifies = metavariable.unifyStatement(statement, substitution, generalContext, specificContext);
133
135
  if (statementUnifies) {
@@ -138,38 +140,23 @@ class AssumptionPass extends _zip.default {
138
140
  },
139
141
  {
140
142
  generalNodeQuery: metavariableNodeQuery,
141
- specificNodeQuery: metavariableNodeQuery,
142
- run: (generalMetavariableNode, specificMetavariableNode, generalContext, specificContext)=>{
143
+ specificNodeQuery: referenceMetavariableNodeQuery,
144
+ run: (generalMetavariableNode, specificReferenceMetavariableNode, generalContext, specificContext)=>{
143
145
  let success = false;
144
- let context, metavariableNode;
146
+ let context, reference, metavariableNode;
145
147
  context = generalContext; ///
146
148
  metavariableNode = generalMetavariableNode; ///
147
- const metavariableName = metavariableNode.getMetavariableName(), metavariable = context.findMetavariableByMetavariableName(metavariableName);
149
+ reference = context.findReferenceByMetavariableNode(metavariableNode);
150
+ const metavariable = reference.getMetavariable();
148
151
  context = specificContext; ///
149
- metavariableNode = specificMetavariableNode; ///
150
- const reference = context.findReferenceByMetavariableNode(metavariableNode), referenceUnifies = metavariable.unifyReference(reference, generalContext, specificContext);
152
+ metavariableNode = specificReferenceMetavariableNode; ///
153
+ reference = context.findReferenceByMetavariableNode(metavariableNode);
154
+ const referenceUnifies = metavariable.unifyReference(reference, generalContext, specificContext);
151
155
  if (referenceUnifies) {
152
156
  success = true;
153
157
  }
154
158
  return success;
155
159
  }
156
- },
157
- {
158
- generalNodeQuery: termVariableNodeQuery,
159
- specificNodeQuery: termNodeQuery,
160
- run: (generalTermVariableNode, specificTermNode, generalContext, specificContext)=>{
161
- let success = false;
162
- const termNode = specificTermNode, variableNode = generalTermVariableNode, variableIdentifier = variableNode.getVariableIdentifier();
163
- let context;
164
- context = generalContext; ///
165
- const variable = context.findVariableByVariableIdentifier(variableIdentifier);
166
- context = specificContext; ///
167
- const term = context.findTermByTermNode(termNode), termUnifies = variable.unifyTerm(term, generalContext, specificContext);
168
- if (termUnifies) {
169
- success = true;
170
- }
171
- return success;
172
- }
173
160
  }
174
161
  ];
175
162
  }
@@ -280,10 +267,10 @@ class SubstitutionPass extends _zip.default {
280
267
  specificNodeQuery: frameNodeQuery,
281
268
  run: (generalFrameMetavariableNode, specificFrameNode, generalContext, specificContext)=>{
282
269
  let success = false;
283
- const frameNode = specificFrameNode, metavariableNode = generalFrameMetavariableNode, metavariableName = metavariableNode.getMetavariableName();
270
+ const frameNode = specificFrameNode, metavariableNode = generalFrameMetavariableNode; ///
284
271
  let context;
285
272
  context = generalContext; ///
286
- const metavariable = context.findMetavariableByMetavariableName(metavariableName);
273
+ const metavariable = context.findMetavariableByMetavariableNode(metavariableNode);
287
274
  context = specificContext; ///
288
275
  const frame = context.findFrameByFrameNode(frameNode), frameUnifies = metavariable.unifyFrame(frame, generalContext, specificContext);
289
276
  if (frameUnifies) {
@@ -390,4 +377,4 @@ function unifyMetavariableIntrinsically(generalMetavariable, specificMetavariabl
390
377
  return metavariableUnifiesIntrinsically;
391
378
  }
392
379
 
393
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzL3VuaWZ5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBxdWVyeVV0aWxpdGllcywgWmlwUGFzcyBhcyBaaXBQYXNzQmFzZSB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IFppcFBhc3MgZnJvbSBcIi4uL3Bhc3MvemlwXCI7XG5cbmltcG9ydCB7IEZSQU1FX01FVEFfVFlQRV9OQU1FLCBTVEFURU1FTlRfTUVUQV9UWVBFX05BTUUgfSBmcm9tIFwiLi4vbWV0YVR5cGVOYW1lc1wiO1xuaW1wb3J0IHsgdGVybUZyb21UZXJtTm9kZSwgZnJhbWVGcm9tRnJhbWVOb2RlLCBzdGF0ZW1lbnRGcm9tU3RhdGVtZW50Tm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5jb25zdCB7IG5vZGVRdWVyeSB9ID0gcXVlcnlVdGlsaXRpZXM7XG5cbmNvbnN0IHR5cGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdHlwZVwiKSxcbiAgICAgIHRlcm1Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdGVybVwiKSxcbiAgICAgIGZyYW1lTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2ZyYW1lXCIpLFxuICAgICAgbWV0YVR5cGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvbWV0YVR5cGVcIiksXG4gICAgICBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50XCIpLFxuICAgICAgbWV0YXZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGF2YXJpYWJsZVwiKSxcbiAgICAgIHRlcm1WYXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90ZXJtL3ZhcmlhYmxlIVwiKSxcbiAgICAgIGZyYW1lTWV0YXZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2ZyYW1lL21ldGF2YXJpYWJsZSFcIiksXG4gICAgICBzdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50L21ldGF2YXJpYWJsZSFcIiksXG4gICAgICBhc3N1bXB0aW9uTWV0YXZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2Fzc3VtcHRpb24vbWV0YXZhcmlhYmxlIVwiKTtcblxuY2xhc3MgTWV0YUxldmVsUGFzcyBleHRlbmRzIFppcFBhc3NCYXNlIHtcbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogYXNzdW1wdGlvbk1ldGF2YXJpYWJsZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiBhc3N1bXB0aW9uTWV0YXZhcmlhYmxlTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbEFzc3VtcHRpb25NZXRhdmFyaWFibGVOb2RlLCBzcGVjaWZpY0Fzc3VtcHRpb25NZXRhdmFyaWFibGVOb2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgbGV0IGNvbnRleHQsXG4gICAgICAgICAgICBtZXRhdmFyaWFibGVOb2RlO1xuXG4gICAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgLy8vXG5cbiAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IGdlbmVyYWxBc3N1bXB0aW9uTWV0YXZhcmlhYmxlTm9kZTsgIC8vL1xuXG4gICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5hbWUgPSBtZXRhdmFyaWFibGVOb2RlLmdldE1ldGF2YXJpYWJsZU5hbWUoKSxcbiAgICAgICAgICAgICAgbWV0YXZhcmlhYmxlID0gY29udGV4dC5maW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpO1xuXG4gICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICBtZXRhdmFyaWFibGVOb2RlID0gc3BlY2lmaWNBc3N1bXB0aW9uTWV0YXZhcmlhYmxlTm9kZTsgLy8vXG5cbiAgICAgICAgY29uc3QgcmVmZXJlbmNlID0gY29udGV4dC5maW5kUmVmZXJlbmNlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgICAgICByZWZlcmVuY2VVbmlmaWVzID0gbWV0YXZhcmlhYmxlLnVuaWZ5UmVmZXJlbmNlKHJlZmVyZW5jZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICAgICAgaWYgKHJlZmVyZW5jZVVuaWZpZXMpIHtcbiAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogc3RhdGVtZW50TWV0YXZhcmlhYmxlTm9kZVF1ZXJ5LFxuICAgICAgc3BlY2lmaWNOb2RlUXVlcnk6IHN0YXRlbWVudE5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKGdlbmVyYWxTdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlLCBzcGVjaWZpY1N0YXRlbWVudE5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBsZXQgY29udGV4dCxcbiAgICAgICAgICAgIHN0YXRlbWVudE5vZGU7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlID0gZ2VuZXJhbFN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGUsICAvLy9cbiAgICAgICAgICAgICAgbWV0YXZhcmlhYmxlTmFtZSA9IG1ldGF2YXJpYWJsZU5vZGUuZ2V0TWV0YXZhcmlhYmxlTmFtZSgpLFxuICAgICAgICAgICAgICBtZXRhdmFyaWFibGUgPSBjb250ZXh0LmZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSksXG4gICAgICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGVQYXJlbnROb2RlID0gbWV0YXZhcmlhYmxlTm9kZS5nZXRQYXJlbnROb2RlKCk7XG5cbiAgICAgICAgc3RhdGVtZW50Tm9kZSA9IG1ldGF2YXJpYWJsZU5vZGVQYXJlbnROb2RlOyAvLy9cblxuICAgICAgICBjb25zdCBzdWJzdGl0dXRpb25Ob2RlID0gc3RhdGVtZW50Tm9kZS5nZXRTdWJzdGl0dXRpb25Ob2RlKCksXG4gICAgICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IChzdWJzdGl0dXRpb25Ob2RlICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5maW5kU3Vic3RpdHV0aW9uQnlTdWJzdGl0dXRpb25Ob2RlKHN1YnN0aXR1dGlvbk5vZGUpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgLy8vXG5cbiAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHNwZWNpZmljU3RhdGVtZW50Tm9kZTsgIC8vL1xuXG4gICAgICAgIGNvbnN0IHN0YXRlbWVudCA9IGNvbnRleHQuZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICAgICAgc3RhdGVtZW50VW5pZmllcyA9IG1ldGF2YXJpYWJsZS51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIHN1YnN0aXR1dGlvbiwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogZnJhbWVNZXRhdmFyaWFibGVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogZnJhbWVOb2RlUXVlcnksXG4gICAgICBydW46IChnZW5lcmFsRnJhbWVNZXRhdmFyaWFibGVOb2RlLCBzcGVjaWZpY0ZyYW1lTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IGZyYW1lTm9kZSA9IHNwZWNpZmljRnJhbWVOb2RlLCAvLy9cbiAgICAgICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IGdlbmVyYWxGcmFtZU1ldGF2YXJpYWJsZU5vZGUsICAvLy9cbiAgICAgICAgICAgICAgbWV0YXZhcmlhYmxlTmFtZSA9IG1ldGF2YXJpYWJsZU5vZGUuZ2V0TWV0YXZhcmlhYmxlTmFtZSgpO1xuXG4gICAgICAgIGxldCBjb250ZXh0O1xuXG4gICAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgLy8vXG5cbiAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlID0gY29udGV4dC5maW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpO1xuXG4gICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICBjb25zdCBmcmFtZSA9IGNvbnRleHQuZmluZEZyYW1lQnlGcmFtZU5vZGUoZnJhbWVOb2RlKSxcbiAgICAgICAgICAgICAgZnJhbWVVbmlmaWVzID0gbWV0YXZhcmlhYmxlLnVuaWZ5RnJhbWUoZnJhbWUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICAgIGlmIChmcmFtZVVuaWZpZXMpIHtcbiAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogdGVybVZhcmlhYmxlTm9kZVF1ZXJ5LFxuICAgICAgc3BlY2lmaWNOb2RlUXVlcnk6IHRlcm1Ob2RlUXVlcnksXG4gICAgICBydW46IChnZW5lcmFsVGVybVZhcmlhYmxlTm9kZSwgc3BlY2lmaWNUZXJtTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IHRlcm1Ob2RlID0gc3BlY2lmaWNUZXJtTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHZhcmlhYmxlTm9kZSA9IGdlbmVyYWxUZXJtVmFyaWFibGVOb2RlLCAvLy9cbiAgICAgICAgICAgICAgdmFyaWFibGVJZGVudGlmaWVyID0gdmFyaWFibGVOb2RlLmdldFZhcmlhYmxlSWRlbnRpZmllcigpO1xuXG4gICAgICAgIGxldCBjb250ZXh0O1xuXG4gICAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgLy8vXG5cbiAgICAgICAgY29uc3QgdmFyaWFibGUgPSBjb250ZXh0LmZpbmRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcik7XG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIGNvbnN0IHRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSksXG4gICAgICAgICAgICAgIHRlcm1VbmlmaWVzID0gdmFyaWFibGUudW5pZnlUZXJtKHRlcm0sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICAgIGlmICh0ZXJtVW5pZmllcykge1xuICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jbGFzcyBBc3N1bXB0aW9uUGFzcyBleHRlbmRzIFppcFBhc3Mge1xuICBzdGF0aWMgbWFwcyA9IFtcbiAgICB7XG4gICAgICBnZW5lcmFsTm9kZVF1ZXJ5OiBzdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogc3RhdGVtZW50Tm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGUsIHNwZWNpZmljU3RhdGVtZW50Tm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzcGVjaWZpY1N0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICAgICAgICBtZXRhdmFyaWFibGVOb2RlID0gZ2VuZXJhbFN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGUsICAvLy9cbiAgICAgICAgICAgICAgbWV0YXZhcmlhYmxlTmFtZSA9IG1ldGF2YXJpYWJsZU5vZGUuZ2V0TWV0YXZhcmlhYmxlTmFtZSgpO1xuXG4gICAgICAgIGxldCBjb250ZXh0O1xuXG4gICAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgLy8vXG5cbiAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlID0gY29udGV4dC5maW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpO1xuXG4gICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICBjb25zdCBzdGF0ZW1lbnQgPSBjb250ZXh0LmZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IG51bGwsXG4gICAgICAgICAgICAgIHN0YXRlbWVudFVuaWZpZXMgPSBtZXRhdmFyaWFibGUudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBzdWJzdGl0dXRpb24sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IG1ldGF2YXJpYWJsZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiBtZXRhdmFyaWFibGVOb2RlUXVlcnksXG4gICAgICBydW46IChnZW5lcmFsTWV0YXZhcmlhYmxlTm9kZSwgc3BlY2lmaWNNZXRhdmFyaWFibGVOb2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgbGV0IGNvbnRleHQsXG4gICAgICAgICAgICBtZXRhdmFyaWFibGVOb2RlO1xuXG4gICAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgLy8vXG5cbiAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IGdlbmVyYWxNZXRhdmFyaWFibGVOb2RlOyAgLy8vXG5cbiAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlTmFtZSA9IG1ldGF2YXJpYWJsZU5vZGUuZ2V0TWV0YXZhcmlhYmxlTmFtZSgpLFxuICAgICAgICAgICAgICBtZXRhdmFyaWFibGUgPSBjb250ZXh0LmZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSk7XG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSBzcGVjaWZpY01ldGF2YXJpYWJsZU5vZGU7IC8vL1xuXG4gICAgICAgIGNvbnN0IHJlZmVyZW5jZSA9IGNvbnRleHQuZmluZFJlZmVyZW5jZUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgICAgICAgcmVmZXJlbmNlVW5pZmllcyA9IG1ldGF2YXJpYWJsZS51bmlmeVJlZmVyZW5jZShyZWZlcmVuY2UsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICAgIGlmIChyZWZlcmVuY2VVbmlmaWVzKSB7XG4gICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IHRlcm1WYXJpYWJsZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFRlcm1WYXJpYWJsZU5vZGUsIHNwZWNpZmljVGVybU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCB0ZXJtTm9kZSA9IHNwZWNpZmljVGVybU5vZGUsIC8vL1xuICAgICAgICAgICAgICB2YXJpYWJsZU5vZGUgPSBnZW5lcmFsVGVybVZhcmlhYmxlTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHZhcmlhYmxlSWRlbnRpZmllciA9IHZhcmlhYmxlTm9kZS5nZXRWYXJpYWJsZUlkZW50aWZpZXIoKTtcblxuICAgICAgICBsZXQgY29udGV4dDtcblxuICAgICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IHZhcmlhYmxlID0gY29udGV4dC5maW5kVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpO1xuXG4gICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICBjb25zdCB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpLFxuICAgICAgICAgICAgICB0ZXJtVW5pZmllcyA9IHZhcmlhYmxlLnVuaWZ5VGVybSh0ZXJtLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgICBpZiAodGVybVVuaWZpZXMpIHtcbiAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuY2xhc3MgQ29tYmluYXRvclBhc3MgZXh0ZW5kcyBaaXBQYXNzIHtcbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogbWV0YVR5cGVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogc3RhdGVtZW50Tm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbE1ldGFUeXBlTm9kZSwgc3BlY2lmaWNTdGF0ZW1lbnROb2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgbWV0YVR5cGVOb2RlID0gZ2VuZXJhbE1ldGFUeXBlTm9kZSwgLy8vXG4gICAgICAgICAgICAgIG1ldGFUeXBlTmFtZSA9IG1ldGFUeXBlTm9kZS5nZXRNZXRhVHlwZU5hbWUoKSxcbiAgICAgICAgICAgICAgbWV0YVR5cGVOYW1lU3RhdGVtZW50TWV0YVR5cGVOYW1lID0gKG1ldGFUeXBlTmFtZSA9PT0gU1RBVEVNRU5UX01FVEFfVFlQRV9OQU1FKTtcblxuICAgICAgICBpZiAobWV0YVR5cGVOYW1lU3RhdGVtZW50TWV0YVR5cGVOYW1lKSB7XG4gICAgICAgICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgICAgICAgIHN0YXRlbWVudE5vZGUgPSBzcGVjaWZpY1N0YXRlbWVudE5vZGU7ICAvLy9cblxuICAgICAgICAgIGxldCBzdGF0ZW1lbnQ7XG5cbiAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudC52YWxpZGF0ZShjb250ZXh0KTsgIC8vL1xuXG4gICAgICAgICAgaWYgKHN0YXRlbWVudCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBnZW5lcmFsTm9kZVF1ZXJ5OiBtZXRhVHlwZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiBmcmFtZU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKGdlbmVyYWxNZXRhVHlwZU5vZGUsIHNwZWNpZmljRnJhbWVOb2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgbWV0YVR5cGVOb2RlID0gZ2VuZXJhbE1ldGFUeXBlTm9kZSwgLy8vXG4gICAgICAgICAgICAgIG1ldGFUeXBlTmFtZSA9IG1ldGFUeXBlTm9kZS5nZXRNZXRhVHlwZU5hbWUoKSxcbiAgICAgICAgICAgICAgbWV0YVR5cGVOYW1lRnJhbWVNZXRhVHlwZU5hbWUgPSAobWV0YVR5cGVOYW1lID09PSBGUkFNRV9NRVRBX1RZUEVfTkFNRSk7XG5cbiAgICAgICAgaWYgKG1ldGFUeXBlTmFtZUZyYW1lTWV0YVR5cGVOYW1lKSB7XG4gICAgICAgICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgICAgICAgIGZyYW1lTm9kZSA9IHNwZWNpZmljRnJhbWVOb2RlOyAgLy8vXG5cbiAgICAgICAgICBsZXQgZnJhbWU7XG5cbiAgICAgICAgICBmcmFtZSA9IGZyYW1lRnJvbUZyYW1lTm9kZShmcmFtZU5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgICAgZnJhbWUgPSBmcmFtZS52YWxpZGF0ZShjb250ZXh0KTsgIC8vL1xuXG4gICAgICAgICAgaWYgKGZyYW1lICE9PSBudWxsKSB7XG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IHR5cGVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogdGVybU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKGdlbmVyYWxUeXBlTm9kZSwgc3BlY2lmaWNUZXJtTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IHR5cGVOb2RlID0gZ2VuZXJhbFR5cGVOb2RlLCAvLy9cbiAgICAgICAgICAgICAgdGVybU5vZGUgPSBzcGVjaWZpY1Rlcm1Ob2RlLCAvLy9cbiAgICAgICAgICAgICAgbm9taW5hbFR5cGVOYW1lID0gdHlwZU5vZGUuZ2V0Tm9taW5hbFR5cGVOYW1lKCk7XG5cbiAgICAgICAgbGV0IGNvbnRleHQ7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBjb25zdCB0eXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIGxldCB0ZXJtO1xuXG4gICAgICAgIHRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICB0ZXJtID0gdGVybS52YWxpZGF0ZUdpdmVuVHlwZSh0eXBlLCBjb250ZXh0KTtcblxuICAgICAgICBpZiAodGVybSAhPT0gbnVsbCkge1xuICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jbGFzcyBDb25zdHJ1Y3RvclBhc3MgZXh0ZW5kcyBaaXBQYXNzIHtcbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogdHlwZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFR5cGVOb2RlLCBzcGVjaWZpY1Rlcm1Ob2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgdHlwZU5vZGUgPSBnZW5lcmFsVHlwZU5vZGUsIC8vL1xuICAgICAgICAgICAgICB0ZXJtTm9kZSA9IHNwZWNpZmljVGVybU5vZGUsIC8vL1xuICAgICAgICAgICAgICBub21pbmFsVHlwZU5hbWUgPSB0eXBlTm9kZS5nZXROb21pbmFsVHlwZU5hbWUoKTtcblxuICAgICAgICBsZXQgY29udGV4dDtcblxuICAgICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcblxuICAgICAgICBpZiAodHlwZSAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICAgIGxldCB0ZXJtO1xuXG4gICAgICAgICAgdGVybSA9IHRlcm1Gcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgICAgdGVybSA9IHRlcm0udmFsaWRhdGVHaXZlblR5cGUodHlwZSwgY29udGV4dCk7XG5cbiAgICAgICAgICBpZiAodGVybSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jbGFzcyBNZXRhdmFyaWFibGVQYXNzIGV4dGVuZHMgWmlwUGFzcyB7XG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IHR5cGVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogdGVybU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKGdlbmVyYWxUeXBlTm9kZSwgc3BlY2lmaWNUZXJtTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IHR5cGVOb2RlID0gZ2VuZXJhbFR5cGVOb2RlLCAvLy9cbiAgICAgICAgICAgICAgdGVybU5vZGUgPSBzcGVjaWZpY1Rlcm1Ob2RlLCAvLy9cbiAgICAgICAgICAgICAgbm9taW5hbFR5cGVOYW1lID0gdHlwZU5vZGUuZ2V0Tm9taW5hbFR5cGVOYW1lKCksXG4gICAgICAgICAgICAgIHR5cGUgPSBnZW5lcmFsQ29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSksXG4gICAgICAgICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsIC8vL1xuICAgICAgICAgICAgICB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpLFxuICAgICAgICAgICAgICB0ZXJtVHlwZSA9IHRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICB0ZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZkdpdmVuVHlwZVR5cGUgPSB0ZXJtVHlwZS5pc0VxdWFsVG9PclN1YlR5cGVPZih0eXBlKTtcblxuICAgICAgICBpZiAodGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZHaXZlblR5cGVUeXBlKSB7XG4gICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNsYXNzIFN1YnN0aXR1dGlvblBhc3MgZXh0ZW5kcyBaaXBQYXNzIHtcbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogZnJhbWVNZXRhdmFyaWFibGVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogZnJhbWVOb2RlUXVlcnksXG4gICAgICBydW46IChnZW5lcmFsRnJhbWVNZXRhdmFyaWFibGVOb2RlLCBzcGVjaWZpY0ZyYW1lTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IGZyYW1lTm9kZSA9IHNwZWNpZmljRnJhbWVOb2RlLCAvLy9cbiAgICAgICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IGdlbmVyYWxGcmFtZU1ldGF2YXJpYWJsZU5vZGUsICAvLy9cbiAgICAgICAgICAgICAgbWV0YXZhcmlhYmxlTmFtZSA9IG1ldGF2YXJpYWJsZU5vZGUuZ2V0TWV0YXZhcmlhYmxlTmFtZSgpO1xuXG4gICAgICAgIGxldCBjb250ZXh0O1xuXG4gICAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgLy8vXG5cbiAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlID0gY29udGV4dC5maW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpO1xuXG4gICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICBjb25zdCBmcmFtZSA9IGNvbnRleHQuZmluZEZyYW1lQnlGcmFtZU5vZGUoZnJhbWVOb2RlKSxcbiAgICAgICAgICAgICAgZnJhbWVVbmlmaWVzID0gbWV0YXZhcmlhYmxlLnVuaWZ5RnJhbWUoZnJhbWUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICAgIGlmIChmcmFtZVVuaWZpZXMpIHtcbiAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogdGVybVZhcmlhYmxlTm9kZVF1ZXJ5LFxuICAgICAgc3BlY2lmaWNOb2RlUXVlcnk6IHRlcm1Ob2RlUXVlcnksXG4gICAgICBydW46IChnZW5lcmFsVGVybVZhcmlhYmxlTm9kZSwgc3BlY2lmaWNUZXJtTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IHRlcm1Ob2RlID0gc3BlY2lmaWNUZXJtTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHZhcmlhYmxlTm9kZSA9IGdlbmVyYWxUZXJtVmFyaWFibGVOb2RlLCAvLy9cbiAgICAgICAgICAgICAgdmFyaWFibGVJZGVudGlmaWVyID0gdmFyaWFibGVOb2RlLmdldFZhcmlhYmxlSWRlbnRpZmllcigpO1xuXG4gICAgICAgIGxldCBjb250ZXh0O1xuXG4gICAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgLy8vXG5cbiAgICAgICAgY29uc3QgdmFyaWFibGUgPSBjb250ZXh0LmZpbmRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcik7XG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIGNvbnN0IHRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSksXG4gICAgICAgICAgICAgIHRlcm1VbmlmaWVzID0gdmFyaWFibGUudW5pZnlUZXJtKHRlcm0sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICAgIGlmICh0ZXJtVW5pZmllcykge1xuICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jbGFzcyBJbnRyaW5zaWNMZXZlbFBhc3MgZXh0ZW5kcyBaaXBQYXNzIHtcbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogdGVybVZhcmlhYmxlTm9kZVF1ZXJ5LFxuICAgICAgc3BlY2lmaWNOb2RlUXVlcnk6IHRlcm1Ob2RlUXVlcnksXG4gICAgICBydW46IChnZW5lcmFsVGVybVZhcmlhYmxlTm9kZSwgc3BlY2lmaWNUZXJtTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IHRlcm1Ob2RlID0gc3BlY2lmaWNUZXJtTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHZhcmlhYmxlTm9kZSA9IGdlbmVyYWxUZXJtVmFyaWFibGVOb2RlLCAvLy9cbiAgICAgICAgICAgICAgdmFyaWFibGVJZGVudGlmaWVyID0gdmFyaWFibGVOb2RlLmdldFZhcmlhYmxlSWRlbnRpZmllcigpO1xuXG4gICAgICAgIGxldCBjb250ZXh0O1xuXG4gICAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgLy8vXG5cbiAgICAgICAgY29uc3QgdmFyaWFibGUgPSBjb250ZXh0LmZpbmRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyKHZhcmlhYmxlSWRlbnRpZmllcik7XG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIGNvbnN0IHRlcm0gPSBjb250ZXh0LmZpbmRUZXJtQnlUZXJtTm9kZSh0ZXJtTm9kZSksXG4gICAgICAgICAgICAgIHRlcm1VbmlmaWVzID0gdmFyaWFibGUudW5pZnlUZXJtKHRlcm0sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICAgIGlmICh0ZXJtVW5pZmllcykge1xuICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jb25zdCBtZXRhTGV2ZWxQYXNzID0gbmV3IE1ldGFMZXZlbFBhc3MoKSxcbiAgICAgIGFzc3VtcHRpb25QYXNzID0gbmV3IEFzc3VtcHRpb25QYXNzKCksXG4gICAgICBjb21iaW5hdG9yUGFzcyA9IG5ldyBDb21iaW5hdG9yUGFzcygpLFxuICAgICAgY29uc3RydWN0b3JQYXNzID0gbmV3IENvbnN0cnVjdG9yUGFzcygpLFxuICAgICAgbWV0YXZhcmlhYmxlUGFzcyA9IG5ldyBNZXRhdmFyaWFibGVQYXNzKCksXG4gICAgICBzdWJzdGl0dXRpb25QYXNzID0gbmV3IFN1YnN0aXR1dGlvblBhc3MoKSxcbiAgICAgIGludHJpbnNpY0xldmVsUGFzcyA9IG5ldyBJbnRyaW5zaWNMZXZlbFBhc3MoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVuaWZ5U3RhdGVtZW50KGdlbmVyYWxTdGF0ZW1lbnQsIHNwZWNpZmljU3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gIGxldCBzdGF0ZW1lbnRVbmlmaWVzID0gZmFsc2U7XG5cbiAgY29uc3QgZ2VuZXJhbFN0YXRlbWVudE5vZGUgPSBnZW5lcmFsU3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgc3BlY2lmaWNTdGF0ZW1lbnROb2RlID0gc3BlY2lmaWNTdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICBnZW5lcmFsTm9kZSA9IGdlbmVyYWxTdGF0ZW1lbnROb2RlLCAvLy9cbiAgICAgICAgc3BlY2lmaWNOb2RlID0gc3BlY2lmaWNTdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgIHN1Y2Nlc3MgPSBtZXRhTGV2ZWxQYXNzLnJ1bihnZW5lcmFsTm9kZSwgc3BlY2lmaWNOb2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICBpZiAoc3VjY2Vzcykge1xuICAgIHN0YXRlbWVudFVuaWZpZXMgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFVuaWZpZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmlmeUFzc3VtcHRpb24oZ2VuZXJhbEFzc3VtcHRpb24sIHNwZWNpZmljQXNzdW1wdGlvbiwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuICBsZXQgYXNzdW1wdGlvblVuaWZpZXMgPSBmYWxzZTtcblxuICBjb25zdCBnZW5lcmFsQXNzdW1wdGlvbk5vZGUgPSBnZW5lcmFsQXNzdW1wdGlvbi5nZXROb2RlKCksXG4gICAgICAgIHNwZWNpZmljQXNzdW1wdGlvbk5vZGUgPSBzcGVjaWZpY0Fzc3VtcHRpb24uZ2V0Tm9kZSgpLFxuICAgICAgICBnZW5lcmFsTm9kZSA9IGdlbmVyYWxBc3N1bXB0aW9uTm9kZSwgLy8vXG4gICAgICAgIHNwZWNpZmljTm9kZSA9IHNwZWNpZmljQXNzdW1wdGlvbk5vZGUsICAvLy9cbiAgICAgICAgc3VjY2VzcyA9IGFzc3VtcHRpb25QYXNzLnJ1bihnZW5lcmFsTm9kZSwgc3BlY2lmaWNOb2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICBpZiAoc3VjY2Vzcykge1xuICAgIGFzc3VtcHRpb25VbmlmaWVzID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBhc3N1bXB0aW9uVW5pZmllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuaWZ5U3Vic3RpdHV0aW9uKGdlbmVyYWxTdWJzdGl0dXRpb24sIHNwZWNpZmljU3Vic3RpdHV0aW9uLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gIGxldCBzdWJzdGl0dXRpb25VbmlmaWVzID0gZmFsc2U7XG5cbiAgY29uc3QgZ2VuZXJhbFN1YnN0aXR1dGlvbk5vZGUgPSBnZW5lcmFsU3Vic3RpdHV0aW9uLmdldE5vZGUoKSxcbiAgICBzcGVjaWZpY1N1YnN0aXR1dGlvbk5vZGUgPSBzcGVjaWZpY1N1YnN0aXR1dGlvbi5nZXROb2RlKCksXG4gICAgZ2VuZXJhbE5vZGUgPSBnZW5lcmFsU3Vic3RpdHV0aW9uTm9kZSwgLy8vXG4gICAgc3BlY2lmaWNOb2RlID0gc3BlY2lmaWNTdWJzdGl0dXRpb25Ob2RlLCAgLy8vXG4gICAgc3VjY2VzcyA9IHN1YnN0aXR1dGlvblBhc3MucnVuKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gIGlmIChzdWNjZXNzKSB7XG4gICAgc3Vic3RpdHV0aW9uVW5pZmllcyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc3Vic3RpdHV0aW9uVW5pZmllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuaWZ5TWV0YXZhcmlhYmxlKGdlbmVyYWxNZXRhdmFyaWFibGUsIHNwZWNpZmljTWV0YXZhcmlhYmxlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gIGxldCBtZXRhdmFyaWFibGVVbmlmaWVzID0gZmFsc2U7XG5cbiAgY29uc3QgZ2VuZXJhbE1ldGF2YXJpYWJsZU5vZGUgPSBnZW5lcmFsTWV0YXZhcmlhYmxlLmdldE5vZGUoKSxcbiAgICAgICAgc3BlY2lmaWNNZXRhdmFyaWFibGVOb2RlID0gc3BlY2lmaWNNZXRhdmFyaWFibGUuZ2V0Tm9kZSgpLFxuICAgICAgICBzdWNjZXNzID0gbWV0YXZhcmlhYmxlUGFzcy5ydW4oZ2VuZXJhbE1ldGF2YXJpYWJsZU5vZGUsIHNwZWNpZmljTWV0YXZhcmlhYmxlTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgaWYgKHN1Y2Nlc3MpIHtcbiAgICBtZXRhdmFyaWFibGVVbmlmaWVzID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBtZXRhdmFyaWFibGVVbmlmaWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yKHRlcm0sIGNvbnN0cnVjdG9yLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gIGxldCB0ZXJtVW5pZmllc1dpdGhDb25zdHJ1Y3RvciA9IGZhbHNlO1xuXG4gIGNvbnN0IHRlcm1Ob2RlID0gdGVybS5nZXROb2RlKCksXG4gICAgICAgIGNvbnN0cnVjdG9yVGVybSA9IGNvbnN0cnVjdG9yLmdldFRlcm0oKSxcbiAgICAgICAgY29uc3RydWN0b3JUZXJtTm9kZSA9IGNvbnN0cnVjdG9yVGVybS5nZXROb2RlKCksXG4gICAgICAgIHN1Y2Nlc3MgPSBjb25zdHJ1Y3RvclBhc3MucnVuKGNvbnN0cnVjdG9yVGVybU5vZGUsIHRlcm1Ob2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICBpZiAoc3VjY2Vzcykge1xuICAgIHRlcm1VbmlmaWVzV2l0aENvbnN0cnVjdG9yID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtVW5pZmllc1dpdGhDb25zdHJ1Y3Rvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3Ioc3RhdGVtZW50LCBjb21iaW5hdG9yLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gIGxldCBzdGF0ZW1lbnRVbmlmaWVzV2l0aENvbWJpbmF0b3IgPSBmYWxzZTtcblxuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgY29tYmluYXRvclN0YXRlbWVudCA9IGNvbWJpbmF0b3IuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgIGNvbWJpbmF0b3JTdGF0ZW1lbnROb2RlID0gY29tYmluYXRvclN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgIHN1Y2Nlc3MgPSBjb21iaW5hdG9yUGFzcy5ydW4oY29tYmluYXRvclN0YXRlbWVudE5vZGUsIHN0YXRlbWVudE5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gIGlmIChzdWNjZXNzKSB7XG4gICAgc3RhdGVtZW50VW5pZmllc1dpdGhDb21iaW5hdG9yID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnRVbmlmaWVzV2l0aENvbWJpbmF0b3I7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmlmeU1ldGF2YXJpYWJsZUludHJpbnNpY2FsbHkoZ2VuZXJhbE1ldGF2YXJpYWJsZSwgc3BlY2lmaWNNZXRhdmFyaWFibGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgbGV0IG1ldGF2YXJpYWJsZVVuaWZpZXNJbnRyaW5zaWNhbGx5ID0gZmFsc2U7XG5cbiAgY29uc3QgZ2VuZXJhbE1ldGF2YXJpYWJsZU5vZGUgPSBnZW5lcmFsTWV0YXZhcmlhYmxlLmdldE5vZGUoKSxcbiAgICAgICAgc3BlY2lmaWNNZXRhdmFyaWFibGVOb2RlID0gc3BlY2lmaWNNZXRhdmFyaWFibGUuZ2V0Tm9kZSgpLFxuICAgICAgICBnZW5lcmFsTm9kZSA9IGdlbmVyYWxNZXRhdmFyaWFibGVOb2RlLCAvLy9cbiAgICAgICAgc3BlY2lmaWNOb2RlID0gc3BlY2lmaWNNZXRhdmFyaWFibGVOb2RlLCAvLy9cbiAgICAgICAgc3VjY2VzcyA9IGludHJpbnNpY0xldmVsUGFzcy5ydW4oZ2VuZXJhbE5vZGUsIHNwZWNpZmljTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgaWYgKHN1Y2Nlc3MpIHtcbiAgICBtZXRhdmFyaWFibGVVbmlmaWVzSW50cmluc2ljYWxseSA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gbWV0YXZhcmlhYmxlVW5pZmllc0ludHJpbnNpY2FsbHk7XG59XG4iXSwibmFtZXMiOlsidW5pZnlBc3N1bXB0aW9uIiwidW5pZnlNZXRhdmFyaWFibGUiLCJ1bmlmeU1ldGF2YXJpYWJsZUludHJpbnNpY2FsbHkiLCJ1bmlmeVN0YXRlbWVudCIsInVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3IiLCJ1bmlmeVN1YnN0aXR1dGlvbiIsInVuaWZ5VGVybVdpdGhDb25zdHJ1Y3RvciIsIm5vZGVRdWVyeSIsInF1ZXJ5VXRpbGl0aWVzIiwidHlwZU5vZGVRdWVyeSIsInRlcm1Ob2RlUXVlcnkiLCJmcmFtZU5vZGVRdWVyeSIsIm1ldGFUeXBlTm9kZVF1ZXJ5Iiwic3RhdGVtZW50Tm9kZVF1ZXJ5IiwibWV0YXZhcmlhYmxlTm9kZVF1ZXJ5IiwidGVybVZhcmlhYmxlTm9kZVF1ZXJ5IiwiZnJhbWVNZXRhdmFyaWFibGVOb2RlUXVlcnkiLCJzdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlUXVlcnkiLCJhc3N1bXB0aW9uTWV0YXZhcmlhYmxlTm9kZVF1ZXJ5IiwiTWV0YUxldmVsUGFzcyIsIlppcFBhc3NCYXNlIiwibWFwcyIsImdlbmVyYWxOb2RlUXVlcnkiLCJzcGVjaWZpY05vZGVRdWVyeSIsInJ1biIsImdlbmVyYWxBc3N1bXB0aW9uTWV0YXZhcmlhYmxlTm9kZSIsInNwZWNpZmljQXNzdW1wdGlvbk1ldGF2YXJpYWJsZU5vZGUiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInN1Y2Nlc3MiLCJjb250ZXh0IiwibWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5hbWUiLCJnZXRNZXRhdmFyaWFibGVOYW1lIiwibWV0YXZhcmlhYmxlIiwiZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTmFtZSIsInJlZmVyZW5jZSIsImZpbmRSZWZlcmVuY2VCeU1ldGF2YXJpYWJsZU5vZGUiLCJyZWZlcmVuY2VVbmlmaWVzIiwidW5pZnlSZWZlcmVuY2UiLCJnZW5lcmFsU3RhdGVtZW50TWV0YXZhcmlhYmxlTm9kZSIsInNwZWNpZmljU3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE5vZGUiLCJtZXRhdmFyaWFibGVOb2RlUGFyZW50Tm9kZSIsImdldFBhcmVudE5vZGUiLCJzdWJzdGl0dXRpb25Ob2RlIiwiZ2V0U3Vic3RpdHV0aW9uTm9kZSIsInN1YnN0aXR1dGlvbiIsImZpbmRTdWJzdGl0dXRpb25CeVN1YnN0aXR1dGlvbk5vZGUiLCJzdGF0ZW1lbnQiLCJmaW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50VW5pZmllcyIsImdlbmVyYWxGcmFtZU1ldGF2YXJpYWJsZU5vZGUiLCJzcGVjaWZpY0ZyYW1lTm9kZSIsImZyYW1lTm9kZSIsImZyYW1lIiwiZmluZEZyYW1lQnlGcmFtZU5vZGUiLCJmcmFtZVVuaWZpZXMiLCJ1bmlmeUZyYW1lIiwiZ2VuZXJhbFRlcm1WYXJpYWJsZU5vZGUiLCJzcGVjaWZpY1Rlcm1Ob2RlIiwidGVybU5vZGUiLCJ2YXJpYWJsZU5vZGUiLCJ2YXJpYWJsZUlkZW50aWZpZXIiLCJnZXRWYXJpYWJsZUlkZW50aWZpZXIiLCJ2YXJpYWJsZSIsImZpbmRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyIiwidGVybSIsImZpbmRUZXJtQnlUZXJtTm9kZSIsInRlcm1VbmlmaWVzIiwidW5pZnlUZXJtIiwiQXNzdW1wdGlvblBhc3MiLCJaaXBQYXNzIiwiZ2VuZXJhbE1ldGF2YXJpYWJsZU5vZGUiLCJzcGVjaWZpY01ldGF2YXJpYWJsZU5vZGUiLCJDb21iaW5hdG9yUGFzcyIsImdlbmVyYWxNZXRhVHlwZU5vZGUiLCJtZXRhVHlwZU5vZGUiLCJtZXRhVHlwZU5hbWUiLCJnZXRNZXRhVHlwZU5hbWUiLCJtZXRhVHlwZU5hbWVTdGF0ZW1lbnRNZXRhVHlwZU5hbWUiLCJTVEFURU1FTlRfTUVUQV9UWVBFX05BTUUiLCJzdGF0ZW1lbnRGcm9tU3RhdGVtZW50Tm9kZSIsInZhbGlkYXRlIiwibWV0YVR5cGVOYW1lRnJhbWVNZXRhVHlwZU5hbWUiLCJGUkFNRV9NRVRBX1RZUEVfTkFNRSIsImZyYW1lRnJvbUZyYW1lTm9kZSIsImdlbmVyYWxUeXBlTm9kZSIsInR5cGVOb2RlIiwibm9taW5hbFR5cGVOYW1lIiwiZ2V0Tm9taW5hbFR5cGVOYW1lIiwidHlwZSIsImZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUiLCJ0ZXJtRnJvbVRlcm1Ob2RlIiwidmFsaWRhdGVHaXZlblR5cGUiLCJDb25zdHJ1Y3RvclBhc3MiLCJNZXRhdmFyaWFibGVQYXNzIiwidGVybVR5cGUiLCJnZXRUeXBlIiwidGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZHaXZlblR5cGVUeXBlIiwiaXNFcXVhbFRvT3JTdWJUeXBlT2YiLCJTdWJzdGl0dXRpb25QYXNzIiwiSW50cmluc2ljTGV2ZWxQYXNzIiwibWV0YUxldmVsUGFzcyIsImFzc3VtcHRpb25QYXNzIiwiY29tYmluYXRvclBhc3MiLCJjb25zdHJ1Y3RvclBhc3MiLCJtZXRhdmFyaWFibGVQYXNzIiwic3Vic3RpdHV0aW9uUGFzcyIsImludHJpbnNpY0xldmVsUGFzcyIsImdlbmVyYWxTdGF0ZW1lbnQiLCJzcGVjaWZpY1N0YXRlbWVudCIsImdlbmVyYWxTdGF0ZW1lbnROb2RlIiwiZ2V0Tm9kZSIsImdlbmVyYWxOb2RlIiwic3BlY2lmaWNOb2RlIiwiZ2VuZXJhbEFzc3VtcHRpb24iLCJzcGVjaWZpY0Fzc3VtcHRpb24iLCJhc3N1bXB0aW9uVW5pZmllcyIsImdlbmVyYWxBc3N1bXB0aW9uTm9kZSIsInNwZWNpZmljQXNzdW1wdGlvbk5vZGUiLCJnZW5lcmFsU3Vic3RpdHV0aW9uIiwic3BlY2lmaWNTdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb25VbmlmaWVzIiwiZ2VuZXJhbFN1YnN0aXR1dGlvbk5vZGUiLCJzcGVjaWZpY1N1YnN0aXR1dGlvbk5vZGUiLCJnZW5lcmFsTWV0YXZhcmlhYmxlIiwic3BlY2lmaWNNZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGVVbmlmaWVzIiwiY29uc3RydWN0b3IiLCJ0ZXJtVW5pZmllc1dpdGhDb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yVGVybSIsImdldFRlcm0iLCJjb25zdHJ1Y3RvclRlcm1Ob2RlIiwiY29tYmluYXRvciIsInN0YXRlbWVudFVuaWZpZXNXaXRoQ29tYmluYXRvciIsImNvbWJpbmF0b3JTdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJjb21iaW5hdG9yU3RhdGVt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
380
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzL3VuaWZ5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBxdWVyeVV0aWxpdGllcywgWmlwUGFzcyBhcyBaaXBQYXNzQmFzZSB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IFppcFBhc3MgZnJvbSBcIi4uL3Bhc3MvemlwXCI7XG5cbmltcG9ydCB7IEZSQU1FX01FVEFfVFlQRV9OQU1FLCBTVEFURU1FTlRfTUVUQV9UWVBFX05BTUUgfSBmcm9tIFwiLi4vbWV0YVR5cGVOYW1lc1wiO1xuaW1wb3J0IHsgdGVybUZyb21UZXJtTm9kZSwgZnJhbWVGcm9tRnJhbWVOb2RlLCBzdGF0ZW1lbnRGcm9tU3RhdGVtZW50Tm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5jb25zdCB7IG5vZGVRdWVyeSB9ID0gcXVlcnlVdGlsaXRpZXM7XG5cbmNvbnN0IHR5cGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdHlwZVwiKSxcbiAgICAgIHRlcm1Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdGVybVwiKSxcbiAgICAgIGZyYW1lTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2ZyYW1lXCIpLFxuICAgICAgbWV0YVR5cGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvbWV0YVR5cGVcIiksXG4gICAgICBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50XCIpLFxuICAgICAgbWV0YXZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGF2YXJpYWJsZVwiKSxcbiAgICAgIHRlcm1WYXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90ZXJtL3ZhcmlhYmxlIVwiKSxcbiAgICAgIGZyYW1lTWV0YXZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2ZyYW1lL21ldGF2YXJpYWJsZSFcIiksXG4gICAgICByZWZlcmVuY2VNZXRhdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvcmVmZXJlbmNlL21ldGF2YXJpYWJsZSFcIiksXG4gICAgICBzdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50L21ldGF2YXJpYWJsZSFcIiksXG4gICAgICBhc3N1bXB0aW9uTWV0YXZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2Fzc3VtcHRpb24vbWV0YXZhcmlhYmxlIVwiKTtcblxuY2xhc3MgTWV0YUxldmVsUGFzcyBleHRlbmRzIFppcFBhc3NCYXNlIHtcbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogYXNzdW1wdGlvbk1ldGF2YXJpYWJsZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiBhc3N1bXB0aW9uTWV0YXZhcmlhYmxlTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbEFzc3VtcHRpb25NZXRhdmFyaWFibGVOb2RlLCBzcGVjaWZpY0Fzc3VtcHRpb25NZXRhdmFyaWFibGVOb2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgbGV0IGNvbnRleHQsXG4gICAgICAgICAgICByZWZlcmVuY2UsXG4gICAgICAgICAgICBtZXRhdmFyaWFibGVOb2RlO1xuXG4gICAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgLy8vXG5cbiAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IGdlbmVyYWxBc3N1bXB0aW9uTWV0YXZhcmlhYmxlTm9kZTsgIC8vL1xuXG4gICAgICAgIHJlZmVyZW5jZSA9IGNvbnRleHQuZmluZFJlZmVyZW5jZUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICBjb25zdCBtZXRhdmFyaWFibGUgPSByZWZlcmVuY2UuZ2V0TWV0YXZhcmlhYmxlKCk7XG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSBzcGVjaWZpY0Fzc3VtcHRpb25NZXRhdmFyaWFibGVOb2RlOyAvLy9cblxuICAgICAgICByZWZlcmVuY2UgPSBjb250ZXh0LmZpbmRSZWZlcmVuY2VCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgICAgY29uc3QgcmVmZXJlbmNlVW5pZmllcyA9IG1ldGF2YXJpYWJsZS51bmlmeVJlZmVyZW5jZShyZWZlcmVuY2UsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICAgIGlmIChyZWZlcmVuY2VVbmlmaWVzKSB7XG4gICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IHN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiBzdGF0ZW1lbnROb2RlUXVlcnksXG4gICAgICBydW46IChnZW5lcmFsU3RhdGVtZW50TWV0YXZhcmlhYmxlTm9kZSwgc3BlY2lmaWNTdGF0ZW1lbnROb2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgbGV0IGNvbnRleHQsXG4gICAgICAgICAgICBzdGF0ZW1lbnROb2RlO1xuXG4gICAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgLy8vXG5cbiAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZSA9IGdlbmVyYWxTdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlLCAgLy8vXG4gICAgICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IGNvbnRleHQuZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZVBhcmVudE5vZGUgPSBtZXRhdmFyaWFibGVOb2RlLmdldFBhcmVudE5vZGUoKTtcblxuICAgICAgICBzdGF0ZW1lbnROb2RlID0gbWV0YXZhcmlhYmxlTm9kZVBhcmVudE5vZGU7IC8vL1xuXG4gICAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbk5vZGUgPSBzdGF0ZW1lbnROb2RlLmdldFN1YnN0aXR1dGlvbk5vZGUoKSxcbiAgICAgICAgICAgICAgc3Vic3RpdHV0aW9uID0gKHN1YnN0aXR1dGlvbk5vZGUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmZpbmRTdWJzdGl0dXRpb25CeVN1YnN0aXR1dGlvbk5vZGUoc3Vic3RpdHV0aW9uTm9kZSkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAvLy9cblxuICAgICAgICBzdGF0ZW1lbnROb2RlID0gc3BlY2lmaWNTdGF0ZW1lbnROb2RlOyAgLy8vXG5cbiAgICAgICAgY29uc3Qgc3RhdGVtZW50ID0gY29udGV4dC5maW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgICAgICBzdGF0ZW1lbnRVbmlmaWVzID0gbWV0YXZhcmlhYmxlLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgc3Vic3RpdHV0aW9uLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBnZW5lcmFsTm9kZVF1ZXJ5OiBmcmFtZU1ldGF2YXJpYWJsZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiBmcmFtZU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKGdlbmVyYWxGcmFtZU1ldGF2YXJpYWJsZU5vZGUsIHNwZWNpZmljRnJhbWVOb2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgZnJhbWVOb2RlID0gc3BlY2lmaWNGcmFtZU5vZGUsIC8vL1xuICAgICAgICAgICAgICBtZXRhdmFyaWFibGVOb2RlID0gZ2VuZXJhbEZyYW1lTWV0YXZhcmlhYmxlTm9kZTtcblxuICAgICAgICBsZXQgY29udGV4dDtcblxuICAgICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZSA9IGNvbnRleHQuZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgY29uc3QgZnJhbWUgPSBjb250ZXh0LmZpbmRGcmFtZUJ5RnJhbWVOb2RlKGZyYW1lTm9kZSksXG4gICAgICAgICAgICAgIGZyYW1lVW5pZmllcyA9IG1ldGF2YXJpYWJsZS51bmlmeUZyYW1lKGZyYW1lLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgICBpZiAoZnJhbWVVbmlmaWVzKSB7XG4gICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IHRlcm1WYXJpYWJsZU5vZGVRdWVyeSxcbiAgICAgIHNwZWNpZmljTm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbFRlcm1WYXJpYWJsZU5vZGUsIHNwZWNpZmljVGVybU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCB0ZXJtTm9kZSA9IHNwZWNpZmljVGVybU5vZGUsIC8vL1xuICAgICAgICAgICAgICB2YXJpYWJsZU5vZGUgPSBnZW5lcmFsVGVybVZhcmlhYmxlTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHZhcmlhYmxlSWRlbnRpZmllciA9IHZhcmlhYmxlTm9kZS5nZXRWYXJpYWJsZUlkZW50aWZpZXIoKTtcblxuICAgICAgICBsZXQgY29udGV4dDtcblxuICAgICAgICBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGNvbnN0IHZhcmlhYmxlID0gY29udGV4dC5maW5kVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpO1xuXG4gICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICBjb25zdCB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpLFxuICAgICAgICAgICAgICB0ZXJtVW5pZmllcyA9IHZhcmlhYmxlLnVuaWZ5VGVybSh0ZXJtLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgICBpZiAodGVybVVuaWZpZXMpIHtcbiAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuY2xhc3MgQXNzdW1wdGlvblBhc3MgZXh0ZW5kcyBaaXBQYXNzIHtcbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogc3RhdGVtZW50TWV0YXZhcmlhYmxlTm9kZVF1ZXJ5LFxuICAgICAgc3BlY2lmaWNOb2RlUXVlcnk6IHN0YXRlbWVudE5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKGdlbmVyYWxTdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlLCBzcGVjaWZpY1N0YXRlbWVudE5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3BlY2lmaWNTdGF0ZW1lbnROb2RlLCAvLy9cbiAgICAgICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IGdlbmVyYWxTdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlOyAgLy8vXG5cbiAgICAgICAgbGV0IGNvbnRleHQ7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBjb25zdCBtZXRhdmFyaWFibGUgPSBjb250ZXh0LmZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIGNvbnN0IHN0YXRlbWVudCA9IGNvbnRleHQuZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICAgICAgc3Vic3RpdHV0aW9uID0gbnVsbCxcbiAgICAgICAgICAgICAgc3RhdGVtZW50VW5pZmllcyA9IG1ldGF2YXJpYWJsZS51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIHN1YnN0aXR1dGlvbiwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogbWV0YXZhcmlhYmxlTm9kZVF1ZXJ5LFxuICAgICAgc3BlY2lmaWNOb2RlUXVlcnk6IHJlZmVyZW5jZU1ldGF2YXJpYWJsZU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKGdlbmVyYWxNZXRhdmFyaWFibGVOb2RlLCBzcGVjaWZpY1JlZmVyZW5jZU1ldGF2YXJpYWJsZU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBsZXQgY29udGV4dCxcbiAgICAgICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGU7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBtZXRhdmFyaWFibGVOb2RlID0gZ2VuZXJhbE1ldGF2YXJpYWJsZU5vZGU7ICAvLy9cblxuICAgICAgICByZWZlcmVuY2UgPSBjb250ZXh0LmZpbmRSZWZlcmVuY2VCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlID0gcmVmZXJlbmNlLmdldE1ldGF2YXJpYWJsZSgpO1xuXG4gICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICBtZXRhdmFyaWFibGVOb2RlID0gc3BlY2lmaWNSZWZlcmVuY2VNZXRhdmFyaWFibGVOb2RlOyAvLy9cblxuICAgICAgICByZWZlcmVuY2UgPSBjb250ZXh0LmZpbmRSZWZlcmVuY2VCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgICAgY29uc3QgcmVmZXJlbmNlVW5pZmllcyA9IG1ldGF2YXJpYWJsZS51bmlmeVJlZmVyZW5jZShyZWZlcmVuY2UsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICAgIGlmIChyZWZlcmVuY2VVbmlmaWVzKSB7XG4gICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNsYXNzIENvbWJpbmF0b3JQYXNzIGV4dGVuZHMgWmlwUGFzcyB7XG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IG1ldGFUeXBlTm9kZVF1ZXJ5LFxuICAgICAgc3BlY2lmaWNOb2RlUXVlcnk6IHN0YXRlbWVudE5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKGdlbmVyYWxNZXRhVHlwZU5vZGUsIHNwZWNpZmljU3RhdGVtZW50Tm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IG1ldGFUeXBlTm9kZSA9IGdlbmVyYWxNZXRhVHlwZU5vZGUsIC8vL1xuICAgICAgICAgICAgICBtZXRhVHlwZU5hbWUgPSBtZXRhVHlwZU5vZGUuZ2V0TWV0YVR5cGVOYW1lKCksXG4gICAgICAgICAgICAgIG1ldGFUeXBlTmFtZVN0YXRlbWVudE1ldGFUeXBlTmFtZSA9IChtZXRhVHlwZU5hbWUgPT09IFNUQVRFTUVOVF9NRVRBX1RZUEVfTkFNRSk7XG5cbiAgICAgICAgaWYgKG1ldGFUeXBlTmFtZVN0YXRlbWVudE1ldGFUeXBlTmFtZSkge1xuICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICAgICAgICBzdGF0ZW1lbnROb2RlID0gc3BlY2lmaWNTdGF0ZW1lbnROb2RlOyAgLy8vXG5cbiAgICAgICAgICBsZXQgc3RhdGVtZW50O1xuXG4gICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnQudmFsaWRhdGUoY29udGV4dCk7ICAvLy9cblxuICAgICAgICAgIGlmIChzdGF0ZW1lbnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgZ2VuZXJhbE5vZGVRdWVyeTogbWV0YVR5cGVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogZnJhbWVOb2RlUXVlcnksXG4gICAgICBydW46IChnZW5lcmFsTWV0YVR5cGVOb2RlLCBzcGVjaWZpY0ZyYW1lTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IG1ldGFUeXBlTm9kZSA9IGdlbmVyYWxNZXRhVHlwZU5vZGUsIC8vL1xuICAgICAgICAgICAgICBtZXRhVHlwZU5hbWUgPSBtZXRhVHlwZU5vZGUuZ2V0TWV0YVR5cGVOYW1lKCksXG4gICAgICAgICAgICAgIG1ldGFUeXBlTmFtZUZyYW1lTWV0YVR5cGVOYW1lID0gKG1ldGFUeXBlTmFtZSA9PT0gRlJBTUVfTUVUQV9UWVBFX05BTUUpO1xuXG4gICAgICAgIGlmIChtZXRhVHlwZU5hbWVGcmFtZU1ldGFUeXBlTmFtZSkge1xuICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICAgICAgICBmcmFtZU5vZGUgPSBzcGVjaWZpY0ZyYW1lTm9kZTsgIC8vL1xuXG4gICAgICAgICAgbGV0IGZyYW1lO1xuXG4gICAgICAgICAgZnJhbWUgPSBmcmFtZUZyb21GcmFtZU5vZGUoZnJhbWVOb2RlLCBjb250ZXh0KTtcblxuICAgICAgICAgIGZyYW1lID0gZnJhbWUudmFsaWRhdGUoY29udGV4dCk7ICAvLy9cblxuICAgICAgICAgIGlmIChmcmFtZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBnZW5lcmFsTm9kZVF1ZXJ5OiB0eXBlTm9kZVF1ZXJ5LFxuICAgICAgc3BlY2lmaWNOb2RlUXVlcnk6IHRlcm1Ob2RlUXVlcnksXG4gICAgICBydW46IChnZW5lcmFsVHlwZU5vZGUsIHNwZWNpZmljVGVybU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCB0eXBlTm9kZSA9IGdlbmVyYWxUeXBlTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHRlcm1Ob2RlID0gc3BlY2lmaWNUZXJtTm9kZSwgLy8vXG4gICAgICAgICAgICAgIG5vbWluYWxUeXBlTmFtZSA9IHR5cGVOb2RlLmdldE5vbWluYWxUeXBlTmFtZSgpO1xuXG4gICAgICAgIGxldCBjb250ZXh0O1xuXG4gICAgICAgIGNvbnRleHQgPSBnZW5lcmFsQ29udGV4dDsgLy8vXG5cbiAgICAgICAgY29uc3QgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgICAgIGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICBsZXQgdGVybTtcblxuICAgICAgICB0ZXJtID0gdGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgdGVybSA9IHRlcm0udmFsaWRhdGVHaXZlblR5cGUodHlwZSwgY29udGV4dCk7XG5cbiAgICAgICAgaWYgKHRlcm0gIT09IG51bGwpIHtcbiAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuY2xhc3MgQ29uc3RydWN0b3JQYXNzIGV4dGVuZHMgWmlwUGFzcyB7XG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IHR5cGVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogdGVybU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKGdlbmVyYWxUeXBlTm9kZSwgc3BlY2lmaWNUZXJtTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IHR5cGVOb2RlID0gZ2VuZXJhbFR5cGVOb2RlLCAvLy9cbiAgICAgICAgICAgICAgdGVybU5vZGUgPSBzcGVjaWZpY1Rlcm1Ob2RlLCAvLy9cbiAgICAgICAgICAgICAgbm9taW5hbFR5cGVOYW1lID0gdHlwZU5vZGUuZ2V0Tm9taW5hbFR5cGVOYW1lKCk7XG5cbiAgICAgICAgbGV0IGNvbnRleHQ7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBjb25zdCB0eXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICAgICAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgICBsZXQgdGVybTtcblxuICAgICAgICAgIHRlcm0gPSB0ZXJtRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICAgIHRlcm0gPSB0ZXJtLnZhbGlkYXRlR2l2ZW5UeXBlKHR5cGUsIGNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKHRlcm0gIT09IG51bGwpIHtcbiAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuY2xhc3MgTWV0YXZhcmlhYmxlUGFzcyBleHRlbmRzIFppcFBhc3Mge1xuICBzdGF0aWMgbWFwcyA9IFtcbiAgICB7XG4gICAgICBnZW5lcmFsTm9kZVF1ZXJ5OiB0eXBlTm9kZVF1ZXJ5LFxuICAgICAgc3BlY2lmaWNOb2RlUXVlcnk6IHRlcm1Ob2RlUXVlcnksXG4gICAgICBydW46IChnZW5lcmFsVHlwZU5vZGUsIHNwZWNpZmljVGVybU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCB0eXBlTm9kZSA9IGdlbmVyYWxUeXBlTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHRlcm1Ob2RlID0gc3BlY2lmaWNUZXJtTm9kZSwgLy8vXG4gICAgICAgICAgICAgIG5vbWluYWxUeXBlTmFtZSA9IHR5cGVOb2RlLmdldE5vbWluYWxUeXBlTmFtZSgpLFxuICAgICAgICAgICAgICB0eXBlID0gZ2VuZXJhbENvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpLFxuICAgICAgICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAvLy9cbiAgICAgICAgICAgICAgdGVybSA9IGNvbnRleHQuZmluZFRlcm1CeVRlcm1Ob2RlKHRlcm1Ob2RlKSxcbiAgICAgICAgICAgICAgdGVybVR5cGUgPSB0ZXJtLmdldFR5cGUoKSxcbiAgICAgICAgICAgICAgdGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZHaXZlblR5cGVUeXBlID0gdGVybVR5cGUuaXNFcXVhbFRvT3JTdWJUeXBlT2YodHlwZSk7XG5cbiAgICAgICAgaWYgKHRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mR2l2ZW5UeXBlVHlwZSkge1xuICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jbGFzcyBTdWJzdGl0dXRpb25QYXNzIGV4dGVuZHMgWmlwUGFzcyB7XG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IGZyYW1lTWV0YXZhcmlhYmxlTm9kZVF1ZXJ5LFxuICAgICAgc3BlY2lmaWNOb2RlUXVlcnk6IGZyYW1lTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZ2VuZXJhbEZyYW1lTWV0YXZhcmlhYmxlTm9kZSwgc3BlY2lmaWNGcmFtZU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCBmcmFtZU5vZGUgPSBzcGVjaWZpY0ZyYW1lTm9kZSwgLy8vXG4gICAgICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSBnZW5lcmFsRnJhbWVNZXRhdmFyaWFibGVOb2RlOyAgLy8vXG5cbiAgICAgICAgbGV0IGNvbnRleHQ7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBjb25zdCBtZXRhdmFyaWFibGUgPSBjb250ZXh0LmZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgIGNvbnN0IGZyYW1lID0gY29udGV4dC5maW5kRnJhbWVCeUZyYW1lTm9kZShmcmFtZU5vZGUpLFxuICAgICAgICAgICAgICBmcmFtZVVuaWZpZXMgPSBtZXRhdmFyaWFibGUudW5pZnlGcmFtZShmcmFtZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICAgICAgaWYgKGZyYW1lVW5pZmllcykge1xuICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBnZW5lcmFsTm9kZVF1ZXJ5OiB0ZXJtVmFyaWFibGVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogdGVybU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKGdlbmVyYWxUZXJtVmFyaWFibGVOb2RlLCBzcGVjaWZpY1Rlcm1Ob2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgdGVybU5vZGUgPSBzcGVjaWZpY1Rlcm1Ob2RlLCAvLy9cbiAgICAgICAgICAgICAgdmFyaWFibGVOb2RlID0gZ2VuZXJhbFRlcm1WYXJpYWJsZU5vZGUsIC8vL1xuICAgICAgICAgICAgICB2YXJpYWJsZUlkZW50aWZpZXIgPSB2YXJpYWJsZU5vZGUuZ2V0VmFyaWFibGVJZGVudGlmaWVyKCk7XG5cbiAgICAgICAgbGV0IGNvbnRleHQ7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBjb25zdCB2YXJpYWJsZSA9IGNvbnRleHQuZmluZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKTtcblxuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgY29uc3QgdGVybSA9IGNvbnRleHQuZmluZFRlcm1CeVRlcm1Ob2RlKHRlcm1Ob2RlKSxcbiAgICAgICAgICAgICAgdGVybVVuaWZpZXMgPSB2YXJpYWJsZS51bmlmeVRlcm0odGVybSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICAgICAgaWYgKHRlcm1VbmlmaWVzKSB7XG4gICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNsYXNzIEludHJpbnNpY0xldmVsUGFzcyBleHRlbmRzIFppcFBhc3Mge1xuICBzdGF0aWMgbWFwcyA9IFtcbiAgICB7XG4gICAgICBnZW5lcmFsTm9kZVF1ZXJ5OiB0ZXJtVmFyaWFibGVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogdGVybU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKGdlbmVyYWxUZXJtVmFyaWFibGVOb2RlLCBzcGVjaWZpY1Rlcm1Ob2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgdGVybU5vZGUgPSBzcGVjaWZpY1Rlcm1Ob2RlLCAvLy9cbiAgICAgICAgICAgICAgdmFyaWFibGVOb2RlID0gZ2VuZXJhbFRlcm1WYXJpYWJsZU5vZGUsIC8vL1xuICAgICAgICAgICAgICB2YXJpYWJsZUlkZW50aWZpZXIgPSB2YXJpYWJsZU5vZGUuZ2V0VmFyaWFibGVJZGVudGlmaWVyKCk7XG5cbiAgICAgICAgbGV0IGNvbnRleHQ7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBjb25zdCB2YXJpYWJsZSA9IGNvbnRleHQuZmluZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKTtcblxuICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgY29uc3QgdGVybSA9IGNvbnRleHQuZmluZFRlcm1CeVRlcm1Ob2RlKHRlcm1Ob2RlKSxcbiAgICAgICAgICAgICAgdGVybVVuaWZpZXMgPSB2YXJpYWJsZS51bmlmeVRlcm0odGVybSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICAgICAgaWYgKHRlcm1VbmlmaWVzKSB7XG4gICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNvbnN0IG1ldGFMZXZlbFBhc3MgPSBuZXcgTWV0YUxldmVsUGFzcygpLFxuICAgICAgYXNzdW1wdGlvblBhc3MgPSBuZXcgQXNzdW1wdGlvblBhc3MoKSxcbiAgICAgIGNvbWJpbmF0b3JQYXNzID0gbmV3IENvbWJpbmF0b3JQYXNzKCksXG4gICAgICBjb25zdHJ1Y3RvclBhc3MgPSBuZXcgQ29uc3RydWN0b3JQYXNzKCksXG4gICAgICBtZXRhdmFyaWFibGVQYXNzID0gbmV3IE1ldGF2YXJpYWJsZVBhc3MoKSxcbiAgICAgIHN1YnN0aXR1dGlvblBhc3MgPSBuZXcgU3Vic3RpdHV0aW9uUGFzcygpLFxuICAgICAgaW50cmluc2ljTGV2ZWxQYXNzID0gbmV3IEludHJpbnNpY0xldmVsUGFzcygpO1xuXG5leHBvcnQgZnVuY3Rpb24gdW5pZnlTdGF0ZW1lbnQoZ2VuZXJhbFN0YXRlbWVudCwgc3BlY2lmaWNTdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgbGV0IHN0YXRlbWVudFVuaWZpZXMgPSBmYWxzZTtcblxuICBjb25zdCBnZW5lcmFsU3RhdGVtZW50Tm9kZSA9IGdlbmVyYWxTdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICBzcGVjaWZpY1N0YXRlbWVudE5vZGUgPSBzcGVjaWZpY1N0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgIGdlbmVyYWxOb2RlID0gZ2VuZXJhbFN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICBzcGVjaWZpY05vZGUgPSBzcGVjaWZpY1N0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgc3VjY2VzcyA9IG1ldGFMZXZlbFBhc3MucnVuKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gIGlmIChzdWNjZXNzKSB7XG4gICAgc3RhdGVtZW50VW5pZmllcyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50VW5pZmllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuaWZ5QXNzdW1wdGlvbihnZW5lcmFsQXNzdW1wdGlvbiwgc3BlY2lmaWNBc3N1bXB0aW9uLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gIGxldCBhc3N1bXB0aW9uVW5pZmllcyA9IGZhbHNlO1xuXG4gIGNvbnN0IGdlbmVyYWxBc3N1bXB0aW9uTm9kZSA9IGdlbmVyYWxBc3N1bXB0aW9uLmdldE5vZGUoKSxcbiAgICAgICAgc3BlY2lmaWNBc3N1bXB0aW9uTm9kZSA9IHNwZWNpZmljQXNzdW1wdGlvbi5nZXROb2RlKCksXG4gICAgICAgIGdlbmVyYWxOb2RlID0gZ2VuZXJhbEFzc3VtcHRpb25Ob2RlLCAvLy9cbiAgICAgICAgc3BlY2lmaWNOb2RlID0gc3BlY2lmaWNBc3N1bXB0aW9uTm9kZSwgIC8vL1xuICAgICAgICBzdWNjZXNzID0gYXNzdW1wdGlvblBhc3MucnVuKGdlbmVyYWxOb2RlLCBzcGVjaWZpY05vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gIGlmIChzdWNjZXNzKSB7XG4gICAgYXNzdW1wdGlvblVuaWZpZXMgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGFzc3VtcHRpb25VbmlmaWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5pZnlTdWJzdGl0dXRpb24oZ2VuZXJhbFN1YnN0aXR1dGlvbiwgc3BlY2lmaWNTdWJzdGl0dXRpb24sIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgbGV0IHN1YnN0aXR1dGlvblVuaWZpZXMgPSBmYWxzZTtcblxuICBjb25zdCBnZW5lcmFsU3Vic3RpdHV0aW9uTm9kZSA9IGdlbmVyYWxTdWJzdGl0dXRpb24uZ2V0Tm9kZSgpLFxuICAgIHNwZWNpZmljU3Vic3RpdHV0aW9uTm9kZSA9IHNwZWNpZmljU3Vic3RpdHV0aW9uLmdldE5vZGUoKSxcbiAgICBnZW5lcmFsTm9kZSA9IGdlbmVyYWxTdWJzdGl0dXRpb25Ob2RlLCAvLy9cbiAgICBzcGVjaWZpY05vZGUgPSBzcGVjaWZpY1N1YnN0aXR1dGlvbk5vZGUsICAvLy9cbiAgICBzdWNjZXNzID0gc3Vic3RpdHV0aW9uUGFzcy5ydW4oZ2VuZXJhbE5vZGUsIHNwZWNpZmljTm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgaWYgKHN1Y2Nlc3MpIHtcbiAgICBzdWJzdGl0dXRpb25VbmlmaWVzID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBzdWJzdGl0dXRpb25VbmlmaWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5pZnlNZXRhdmFyaWFibGUoZ2VuZXJhbE1ldGF2YXJpYWJsZSwgc3BlY2lmaWNNZXRhdmFyaWFibGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgbGV0IG1ldGF2YXJpYWJsZVVuaWZpZXMgPSBmYWxzZTtcblxuICBjb25zdCBnZW5lcmFsTWV0YXZhcmlhYmxlTm9kZSA9IGdlbmVyYWxNZXRhdmFyaWFibGUuZ2V0Tm9kZSgpLFxuICAgICAgICBzcGVjaWZpY01ldGF2YXJpYWJsZU5vZGUgPSBzcGVjaWZpY01ldGF2YXJpYWJsZS5nZXROb2RlKCksXG4gICAgICAgIHN1Y2Nlc3MgPSBtZXRhdmFyaWFibGVQYXNzLnJ1bihnZW5lcmFsTWV0YXZhcmlhYmxlTm9kZSwgc3BlY2lmaWNNZXRhdmFyaWFibGVOb2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICBpZiAoc3VjY2Vzcykge1xuICAgIG1ldGF2YXJpYWJsZVVuaWZpZXMgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZVVuaWZpZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3IodGVybSwgY29uc3RydWN0b3IsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgbGV0IHRlcm1VbmlmaWVzV2l0aENvbnN0cnVjdG9yID0gZmFsc2U7XG5cbiAgY29uc3QgdGVybU5vZGUgPSB0ZXJtLmdldE5vZGUoKSxcbiAgICAgICAgY29uc3RydWN0b3JUZXJtID0gY29uc3RydWN0b3IuZ2V0VGVybSgpLFxuICAgICAgICBjb25zdHJ1Y3RvclRlcm1Ob2RlID0gY29uc3RydWN0b3JUZXJtLmdldE5vZGUoKSxcbiAgICAgICAgc3VjY2VzcyA9IGNvbnN0cnVjdG9yUGFzcy5ydW4oY29uc3RydWN0b3JUZXJtTm9kZSwgdGVybU5vZGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gIGlmIChzdWNjZXNzKSB7XG4gICAgdGVybVVuaWZpZXNXaXRoQ29uc3RydWN0b3IgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHRlcm1VbmlmaWVzV2l0aENvbnN0cnVjdG9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvcihzdGF0ZW1lbnQsIGNvbWJpbmF0b3IsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgbGV0IHN0YXRlbWVudFVuaWZpZXNXaXRoQ29tYmluYXRvciA9IGZhbHNlO1xuXG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICBjb21iaW5hdG9yU3RhdGVtZW50ID0gY29tYmluYXRvci5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgY29tYmluYXRvclN0YXRlbWVudE5vZGUgPSBjb21iaW5hdG9yU3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgc3VjY2VzcyA9IGNvbWJpbmF0b3JQYXNzLnJ1bihjb21iaW5hdG9yU3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50Tm9kZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgaWYgKHN1Y2Nlc3MpIHtcbiAgICBzdGF0ZW1lbnRVbmlmaWVzV2l0aENvbWJpbmF0b3IgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFVuaWZpZXNXaXRoQ29tYmluYXRvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuaWZ5TWV0YXZhcmlhYmxlSW50cmluc2ljYWxseShnZW5lcmFsTWV0YXZhcmlhYmxlLCBzcGVjaWZpY01ldGF2YXJpYWJsZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCkge1xuICBsZXQgbWV0YXZhcmlhYmxlVW5pZmllc0ludHJpbnNpY2FsbHkgPSBmYWxzZTtcblxuICBjb25zdCBnZW5lcmFsTWV0YXZhcmlhYmxlTm9kZSA9IGdlbmVyYWxNZXRhdmFyaWFibGUuZ2V0Tm9kZSgpLFxuICAgICAgICBzcGVjaWZpY01ldGF2YXJpYWJsZU5vZGUgPSBzcGVjaWZpY01ldGF2YXJpYWJsZS5nZXROb2RlKCksXG4gICAgICAgIGdlbmVyYWxOb2RlID0gZ2VuZXJhbE1ldGF2YXJpYWJsZU5vZGUsIC8vL1xuICAgICAgICBzcGVjaWZpY05vZGUgPSBzcGVjaWZpY01ldGF2YXJpYWJsZU5vZGUsIC8vL1xuICAgICAgICBzdWNjZXNzID0gaW50cmluc2ljTGV2ZWxQYXNzLnJ1bihnZW5lcmFsTm9kZSwgc3BlY2lmaWNOb2RlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICBpZiAoc3VjY2Vzcykge1xuICAgIG1ldGF2YXJpYWJsZVVuaWZpZXNJbnRyaW5zaWNhbGx5ID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBtZXRhdmFyaWFibGVVbmlmaWVzSW50cmluc2ljYWxseTtcbn1cbiJdLCJuYW1lcyI6WyJ1bmlmeUFzc3VtcHRpb24iLCJ1bmlmeU1ldGF2YXJpYWJsZSIsInVuaWZ5TWV0YXZhcmlhYmxlSW50cmluc2ljYWxseSIsInVuaWZ5U3RhdGVtZW50IiwidW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvciIsInVuaWZ5U3Vic3RpdHV0aW9uIiwidW5pZnlUZXJtV2l0aENvbnN0cnVjdG9yIiwibm9kZVF1ZXJ5IiwicXVlcnlVdGlsaXRpZXMiLCJ0eXBlTm9kZVF1ZXJ5IiwidGVybU5vZGVRdWVyeSIsImZyYW1lTm9kZVF1ZXJ5IiwibWV0YVR5cGVOb2RlUXVlcnkiLCJzdGF0ZW1lbnROb2RlUXVlcnkiLCJtZXRhdmFyaWFibGVOb2RlUXVlcnkiLCJ0ZXJtVmFyaWFibGVOb2RlUXVlcnkiLCJmcmFtZU1ldGF2YXJpYWJsZU5vZGVRdWVyeSIsInJlZmVyZW5jZU1ldGF2YXJpYWJsZU5vZGVRdWVyeSIsInN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGVRdWVyeSIsImFzc3VtcHRpb25NZXRhdmFyaWFibGVOb2RlUXVlcnkiLCJNZXRhTGV2ZWxQYXNzIiwiWmlwUGFzc0Jhc2UiLCJtYXBzIiwiZ2VuZXJhbE5vZGVRdWVyeSIsInNwZWNpZmljTm9kZVF1ZXJ5IiwicnVuIiwiZ2VuZXJhbEFzc3VtcHRpb25NZXRhdmFyaWFibGVOb2RlIiwic3BlY2lmaWNBc3N1bXB0aW9uTWV0YXZhcmlhYmxlTm9kZSIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0Iiwic3VjY2VzcyIsImNvbnRleHQiLCJyZWZlcmVuY2UiLCJtZXRhdmFyaWFibGVOb2RlIiwiZmluZFJlZmVyZW5jZUJ5TWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZSIsImdldE1ldGF2YXJpYWJsZSIsInJlZmVyZW5jZVVuaWZpZXMiLCJ1bmlmeVJlZmVyZW5jZSIsImdlbmVyYWxTdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlIiwic3BlY2lmaWNTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZSIsImZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlUGFyZW50Tm9kZSIsImdldFBhcmVudE5vZGUiLCJzdWJzdGl0dXRpb25Ob2RlIiwiZ2V0U3Vic3RpdHV0aW9uTm9kZSIsInN1YnN0aXR1dGlvbiIsImZpbmRTdWJzdGl0dXRpb25CeVN1YnN0aXR1dGlvbk5vZGUiLCJzdGF0ZW1lbnQiLCJmaW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50VW5pZmllcyIsImdlbmVyYWxGcmFtZU1ldGF2YXJpYWJsZU5vZGUiLCJzcGVjaWZpY0ZyYW1lTm9kZSIsImZyYW1lTm9kZSIsImZyYW1lIiwiZmluZEZyYW1lQnlGcmFtZU5vZGUiLCJmcmFtZVVuaWZpZXMiLCJ1bmlmeUZyYW1lIiwiZ2VuZXJhbFRlcm1WYXJpYWJsZU5vZGUiLCJzcGVjaWZpY1Rlcm1Ob2RlIiwidGVybU5vZGUiLCJ2YXJpYWJsZU5vZGUiLCJ2YXJpYWJsZUlkZW50aWZpZXIiLCJnZXRWYXJpYWJsZUlkZW50aWZpZXIiLCJ2YXJpYWJsZSIsImZpbmRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyIiwidGVybSIsImZpbmRUZXJtQnlUZXJtTm9kZSIsInRlcm1VbmlmaWVzIiwidW5pZnlUZXJtIiwiQXNzdW1wdGlvblBhc3MiLCJaaXBQYXNzIiwiZ2VuZXJhbE1ldGF2YXJpYWJsZU5vZGUiLCJzcGVjaWZpY1JlZmVyZW5jZU1ldGF2YXJpYWJsZU5vZGUiLCJDb21iaW5hdG9yUGFzcyIsImdlbmVyYWxNZXRhVHlwZU5vZGUiLCJtZXRhVHlwZU5vZGUiLCJtZXRhVHlwZU5hbWUiLCJnZXRNZXRhVHlwZU5hbWUiLCJtZXRhVHlwZU5hbWVTdGF0ZW1lbnRNZXRhVHlwZU5hbWUiLCJTVEFURU1FTlRfTUVUQV9UWVBFX05BTUUiLCJzdGF0ZW1lbnRGcm9tU3RhdGVtZW50Tm9kZSIsInZhbGlkYXRlIiwibWV0YVR5cGVOYW1lRnJhbWVNZXRhVHlwZU5hbWUiLCJGUkFNRV9NRVRBX1RZUEVfTkFNRSIsImZyYW1lRnJvbUZyYW1lTm9kZSIsImdlbmVyYWxUeXBlTm9kZSIsInR5cGVOb2RlIiwibm9taW5hbFR5cGVOYW1lIiwiZ2V0Tm9taW5hbFR5cGVOYW1lIiwidHlwZSIsImZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUiLCJ0ZXJtRnJvbVRlcm1Ob2RlIiwidmFsaWRhdGVHaXZlblR5cGUiLCJDb25zdHJ1Y3RvclBhc3MiLCJNZXRhdmFyaWFibGVQYXNzIiwidGVybVR5cGUiLCJnZXRUeXBlIiwidGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZHaXZlblR5cGVUeXBlIiwiaXNFcXVhbFRvT3JTdWJUeXBlT2YiLCJTdWJzdGl0dXRpb25QYXNzIiwiSW50cmluc2ljTGV2ZWxQYXNzIiwibWV0YUxldmVsUGFzcyIsImFzc3VtcHRpb25QYXNzIiwiY29tYmluYXRvclBhc3MiLCJjb25zdHJ1Y3RvclBhc3MiLCJtZXRhdmFyaWFibGVQYXNzIiwic3Vic3RpdHV0aW9uUGFzcyIsImludHJpbnNpY0xldmVsUGFzcyIsImdlbmVyYWxTdGF0ZW1lbnQiLCJzcGVjaWZpY1N0YXRlbWVudCIsImdlbmVyYWxTdGF0ZW1lbnROb2RlIiwiZ2V0Tm9kZSIsImdlbmVyYWxOb2RlIiwic3BlY2lmaWNOb2RlIiwiZ2VuZXJhbEFzc3VtcHRpb24iLCJzcGVjaWZpY0Fzc3VtcHRpb24iLCJhc3N1bXB0aW9uVW5pZmllcyIsImdlbmVyYWxBc3N1bXB0aW9uTm9kZSIsInNwZWNpZmljQXNzdW1wdGlvbk5vZGUiLCJnZW5lcmFsU3Vic3RpdHV0aW9uIiwic3BlY2lmaWNTdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb25VbmlmaWVzIiwiZ2VuZXJhbFN1YnN0aXR1dGlvbk5vZGUiLCJzcGVjaWZpY1N1YnN0aXR1dGlvbk5vZGUiLCJnZW5lcmFsTWV0YXZhcmlhYmxlIiwic3BlY2lmaWNNZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGVVbmlmaWVzIiwic3BlY2lmaWNNZXRhdmFyaWFibGVOb2RlIiwiY29uc3RydWN0b3IiLCJ0ZXJtVW5pZmllc1dpdGhDb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yVGVybSIsImdldFRlcm0iLCJjb25zdHJ1Y3RvclRlcm1Ob2RlIiwiY29tYmluYXRvciIsInN0YXRlbWVudFVuaWZpZXNXaXRoQ29tYmluYXRvciIsImNvbWJpbmF0b3JTdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJjb21iaW5hdG9yU3RhdGVtZW50Tm9kZSIsIm1ldGF2YXJpYWJsZVVuaWZpZXNJbnRyaW5zaWNhbGx5Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUE0ZWdCQTtlQUFBQTs7UUFnQ0FDO2VBQUFBOztRQTRDQUM7ZUFBQUE7O1FBNUZB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
package/lib/ruleNames.js CHANGED
@@ -132,6 +132,9 @@ _export(exports, {
132
132
  get META_LEMMA_RULE_NAME () {
133
133
  return META_LEMMA_RULE_NAME;
134
134
  },
135
+ get META_LEVEL_ASSUMPTION_RULE_NAME () {
136
+ return META_LEVEL_ASSUMPTION_RULE_NAME;
137
+ },
135
138
  get META_TYPE_RULE_NAME () {
136
139
  return META_TYPE_RULE_NAME;
137
140
  },
@@ -334,6 +337,7 @@ const SATISFIES_ASSERTION_RULE_NAME = "satisfiesAssertion";
334
337
  const PARENTHESISED_LABELS_RULE_NAME = "parenthesisedLabels";
335
338
  const PROPERTY_DECLARATION_RULE_NAME = "propertyDeclaration";
336
339
  const VARIABLE_DECLARATION_RULE_NAME = "variableDeclaration";
340
+ const META_LEVEL_ASSUMPTION_RULE_NAME = "metaLevelAssumption";
337
341
  const COMBINATOR_DECLARATION_RULE_NAME = "combinatorDeclaration";
338
342
  const STATEMENT_SUBSTITUTION_RULE_NAME = "statementSubstitution";
339
343
  const REFERENCE_SUBSTITUTION_RULE_NAME = "referenceSubstitution";
@@ -343,4 +347,4 @@ const CONSTRUCTOR_DECLARATION_RULE_NAME = "constructorDeclaration";
343
347
  const COMPLEX_TYPE_DECLARATION_RULE_NAME = "complexTypeDeclaration";
344
348
  const METAVARIABLE_DECLARATION_RULE_NAME = "metavariableDeclaration";
345
349
 
346
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9ydWxlTmFtZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBSVUxFX1JVTEVfTkFNRSA9IFwicnVsZVwiO1xuZXhwb3J0IGNvbnN0IFNURVBfUlVMRV9OQU1FID0gXCJzdGVwXCI7XG5leHBvcnQgY29uc3QgVEVSTV9SVUxFX05BTUUgPSBcInRlcm1cIjtcbmV4cG9ydCBjb25zdCBUWVBFX1JVTEVfTkFNRSA9IFwidHlwZVwiO1xuZXhwb3J0IGNvbnN0IFRZUEVTX1JVTEVfTkFNRSA9IFwidHlwZXNcIjtcbmV4cG9ydCBjb25zdCBMRU1NQV9SVUxFX05BTUUgPSBcImxlbW1hXCI7XG5leHBvcnQgY29uc3QgQVhJT01fUlVMRV9OQU1FID0gXCJheGlvbVwiO1xuZXhwb3J0IGNvbnN0IEVSUk9SX1JVTEVfTkFNRSA9IFwiZXJyb3JcIjtcbmV4cG9ydCBjb25zdCBGUkFNRV9SVUxFX05BTUUgPSBcImZyYW1lXCI7XG5leHBvcnQgY29uc3QgUFJPT0ZfUlVMRV9OQU1FID0gXCJwcm9vZlwiO1xuZXhwb3J0IGNvbnN0IExBQkVMX1JVTEVfTkFNRSA9IFwibGFiZWxcIjtcbmV4cG9ydCBjb25zdCBMQUJFTFNfUlVMRV9OQU1FID0gXCJsYWJlbHNcIjtcbmV4cG9ydCBjb25zdCBUSEVPUkVNX1JVTEVfTkFNRSA9IFwidGhlb3JlbVwiO1xuZXhwb3J0IGNvbnN0IFBSRU1JU0VfUlVMRV9OQU1FID0gXCJwcmVtaXNlXCI7XG5leHBvcnQgY29uc3QgU0VDVElPTl9SVUxFX05BTUUgPSBcInNlY3Rpb25cIjtcbmV4cG9ydCBjb25zdCBBUkdVTUVOVF9SVUxFX05BTUUgPSBcImFyZ3VtZW50XCI7XG5leHBvcnQgY29uc3QgUFJPUEVSVFlfUlVMRV9OQU1FID0gXCJwcm9wZXJ0eVwiO1xuZXhwb3J0IGNvbnN0IEVRVUFMSVRZX1JVTEVfTkFNRSA9IFwiZXF1YWxpdHlcIjtcbmV4cG9ydCBjb25zdCBWQVJJQUJMRV9SVUxFX05BTUUgPSBcInZhcmlhYmxlXCI7XG5leHBvcnQgY29uc3QgU1VCUFJPT0ZfUlVMRV9OQU1FID0gXCJzdWJwcm9vZlwiO1xuZXhwb3J0IGNvbnN0IERPQ1VNRU5UX1JVTEVfTkFNRSA9IFwiZG9jdW1lbnRcIjtcbmV4cG9ydCBjb25zdCBSVUxFX0JPRFlfUlVMRV9OQU1FID0gXCJydWxlQm9keVwiO1xuZXhwb3J0IGNvbnN0IE1FVEFfVFlQRV9SVUxFX05BTUUgPSBcIm1ldGFUeXBlXCI7XG5leHBvcnQgY29uc3QgU0lHTkFUVVJFX1JVTEVfTkFNRSA9IFwic2lnbmF0dXJlXCI7XG5leHBvcnQgY29uc3QgUEFSQU1FVEVSX1JVTEVfTkFNRSA9IFwicGFyYW1ldGVyXCI7XG5leHBvcnQgY29uc3QgREVEVUNUSU9OX1JVTEVfTkFNRSA9IFwiZGVkdWN0aW9uXCI7XG5leHBvcnQgY29uc3QgSlVER0VNRU5UX1JVTEVfTkFNRSA9IFwianVkZ2VtZW50XCI7XG5leHBvcnQgY29uc3QgUkVGRVJFTkNFX1JVTEVfTkFNRSA9IFwicmVmZXJlbmNlXCI7XG5leHBvcnQgY29uc3QgU1RBVEVNRU5UX1JVTEVfTkFNRSA9IFwic3RhdGVtZW50XCI7XG5leHBvcnQgY29uc3QgTUVUQV9MRU1NQV9SVUxFX05BTUUgPSBcIm1ldGFMZW1tYVwiO1xuZXhwb3J0IGNvbnN0IEFYSU9NX0JPRFlfUlVMRV9OQU1FID0gXCJheGlvbUJvZHlcIjtcbmV4cG9ydCBjb25zdCBMRU1NQV9CT0RZX1JVTEVfTkFNRSA9IFwibGVtbWFCb2R5XCI7XG5leHBvcnQgY29uc3QgQ09NQklOQVRPUl9SVUxFX05BTUUgPSBcImNvbWJpbmF0b3JcIjtcbmV4cG9ydCBjb25zdCBDT05DTFVTSU9OX1JVTEVfTkFNRSA9IFwiY29uY2x1c2lvblwiO1xuZXhwb3J0IGNvbnN0IENPTkpFQ1RVUkVfUlVMRV9OQU1FID0gXCJjb25qZWN0dXJlXCI7XG5leHBvcnQgY29uc3QgREVSSVZBVElPTl9SVUxFX05BTUUgPSBcImRlcml2YXRpb25cIjtcbmV4cG9ydCBjb25zdCBIWVBPVEhFU0lTX1JVTEVfTkFNRSA9IFwiaHlwb3RoZXNpc1wiO1xuZXhwb3J0IGNvbnN0IEFTU1VNUFRJT05fUlVMRV9OQU1FID0gXCJhc3N1bXB0aW9uXCI7XG5leHBvcnQgY29uc3QgUExBQ0VIT0xERVJfUlVMRV9OQU1FID0gXCJfXCI7IC8vL1xuZXhwb3J0IGNvbnN0IFJVTEVfSEVBREVSX1JVTEVfTkFNRSA9IFwicnVsZUhlYWRlclwiO1xuZXhwb3J0IGNvbnN0IFRZUEVfUFJFRklYX1JVTEVfTkFNRSA9IFwidHlwZVByZWZpeFwiO1xuZXhwb3J0IGNvbnN0IFNVUFBPU0lUSU9OX1JVTEVfTkFNRSA9IFwic3VwcG9zaXRpb25cIjtcbmV4cG9ydCBjb25zdCBDT05TVFJVQ1RPUl9SVUxFX05BTUUgPSBcImNvbnN0cnVjdG9yXCI7XG5leHBvcnQgY29uc3QgTUVUQVRIRU9SRU1fUlVMRV9OQU1FID0gXCJtZXRhdGhlb3JlbVwiO1xuZXhwb3J0IGNvbnN0IEVRVUlWQUxFTkNFX1JVTEVfTkFNRSA9IFwiZXF1aXZhbGVuY2VcIjtcbmV4cG9ydCBjb25zdCBBWElPTV9IRUFERVJfUlVMRV9OQU1FID0gXCJheGlvbUhlYWRlclwiO1xuZXhwb3J0IGNvbnN0IExFTU1BX0hFQURFUl9SVUxFX05BTUUgPSBcImxlbW1hSGVhZGVyXCI7XG5leHBvcnQgY29uc3QgVEhFT1JFTV9CT0RZX1JVTEVfTkFNRSA9IFwidGhlb3JlbUJvZHlcIjtcbmV4cG9ydCBjb25zdCBNRVRBVkFSSUFCTEVfUlVMRV9OQU1FID0gXCJtZXRhdmFyaWFibGVcIjtcbmV4cG9ydCBjb25zdCBFUVVJVkFMRU5DRVNfUlVMRV9OQU1FID0gXCJlcXVpdmFsZW5jZXNcIjtcbmV4cG9ydCBjb25zdCBNRVRBX0FSR1VNRU5UX1JVTEVfTkFNRSA9IFwibWV0YUFyZ3VtZW50XCI7XG5leHBvcnQgY29uc3QgUVVBTElGSUNBVElPTl9SVUxFX05BTUUgPSBcInF1YWxpZmljYXRpb25cIjtcbmV4cG9ydCBjb25zdCBQUk9DRURVUkVfQ0FMTF9SVUxFX05BTUUgPSBcInByb2NlZHVyZUNhbGxcIjtcbmV4cG9ydCBjb25zdCBTVUJfREVSSVZBVElPTl9SVUxFX05BTUUgPSBcInN1YkRlcml2YXRpb25cIjtcbmV4cG9ydCBjb25zdCBUWVBFX0FTU0VSVElPTl9SVUxFX05BTUUgPSBcInR5cGVBc3NlcnRpb25cIjtcbmV4cG9ydCBjb25zdCBUSEVPUkVNX0hFQURFUl9SVUxFX05BTUUgPSBcInRoZW9yZW1IZWFkZXJcIjtcbmV4cG9ydCBjb25zdCBNRVRBX0xFTU1BX0JPRFlfUlVMRV9OQU1FID0gXCJtZXRhTGVtbWFCb2R5XCI7XG5leHBvcnQgY29uc3QgQ09OSkVDVFVSRV9CT0RZX1JVTEVfTkFNRSA9IFwiY29uamVjdHVyZUJvZHlcIjtcbmV4cG9ydCBjb25zdCBNRVRBVEhFT1JFTV9CT0RZX1JVTEVfTkFNRSA9IFwibWV0YXRoZW9yZW1Cb2R5XCI7XG5leHBvcnQgY29uc3QgTUVUQV9MRU1NQV9IRUFERVJfUlVMRV9OQU1FID0gXCJtZXRhTGVtbWFIZWFkZXJcIjtcbmV4cG9ydCBjb25zdCBDT05KRUNUVVJFX0hFQURFUl9SVUxFX05BTUUgPSBcImNvbmplY3R1cmVIZWFkZXJcIjtcbmV4cG9ydCBjb25zdCBQUk9QRVJUWV9SRUxBVElPTl9SVUxFX05BTUUgPSBcInByb3BlcnR5UmVsYXRpb25cIjtcbmV4cG9ydCBjb25zdCBERUZJTkVEX0FTU0VSVElPTl9SVUxFX05BTUUgPSBcImRlZmluZWRBc3NlcnRpb25cIjtcbmV4cG9ydCBjb25zdCBURVJNX1NVQlNUSVRVVElPTl9SVUxFX05BTUUgPSBcInRlcm1TdWJzdGl0dXRpb25cIjtcbmV4cG9ydCBjb25zdCBNRVRBVEhFT1JFTV9IRUFERVJfUlVMRV9OQU1FID0gXCJtZXRhdGhlb3JlbUhlYWRlclwiO1xuZXhwb3J0IGNvbnN0IFBST1BFUlRZX0FTU0VSVElPTl9SVUxFX05BTUUgPSBcInByb3BlcnR5QXNzZXJ0aW9uXCI7XG5leHBvcnQgY29uc3QgU1VCUFJPT0ZfQVNTRVJUSU9OX1JVTEVfTkFNRSA9IFwic3VicHJvb2ZBc3NlcnRpb25cIjtcbmV4cG9ydCBjb25zdCBGUkFNRV9TVUJTVElUVVRJT05fUlVMRV9OQU1FID0gXCJmcmFtZVN1YnN0aXR1dGlvblwiO1xuZXhwb3J0IGNvbnN0IFBBUkVOVEhFU0lTRURfTEFCRUxfUlVMRV9OQU1FID0gXCJwYXJlbnRoZXNpc2VkTGFiZWxcIjtcbmV4cG9ydCBjb25zdCBQUk9DRURVUkVfUkVGRVJFTkNFX1JVTEVfTkFNRSA9IFwicHJvY2VkdXJlUmVmZXJlbmNlXCI7XG5leHBvcnQgY29uc3QgQ09OVEFJTkVEX0FTU0VSVElPTl9SVUxFX05BTUUgPSBcImNvbnRhaW5lZEFzc2VydGlvblwiO1xuZXhwb3J0IGNvbnN0IFNBVElTRklFU19BU1NFUlRJT05fUlVMRV9OQU1FID0gXCJzYXRpc2ZpZXNBc3NlcnRpb25cIjtcbmV4cG9ydCBjb25zdCBQQVJFTlRIRVNJU0VEX0xBQkVMU19SVUxFX05BTUUgPSBcInBhcmVudGhlc2lzZWRMYWJlbHNcIjtcbmV4cG9ydCBjb25zdCBQUk9QRVJUWV9ERUNMQVJBVElPTl9SVUxFX05BTUUgPSBcInByb3BlcnR5RGVjbGFyYXRpb25cIjtcbmV4cG9ydCBjb25zdCBWQVJJQUJMRV9ERUNMQVJBVElPTl9SVUxFX05BTUUgPSBcInZhcmlhYmxlRGVjbGFyYXRpb25cIjtcbmV4cG9ydCBjb25zdCBDT01CSU5BVE9SX0RFQ0xBUkFUSU9OX1JVTEVfTkFNRSA9IFwiY29tYmluYXRvckRlY2xhcmF0aW9uXCI7XG5leHBvcnQgY29uc3QgU1RBVEVNRU5UX1NVQlNUSVRVVElPTl9SVUxFX05BTUUgPSBcInN0YXRlbWVudFN1YnN0aXR1dGlvblwiO1xuZXhwb3J0IGNvbnN0IFJFRkVSRU5DRV9TVUJTVElUVVRJT05fUlVMRV9OQU1FID0gXCJyZWZlcmVuY2VTdWJzdGl0dXRpb25cIjtcbmV4cG9ydCBjb25zdCBUWVBFX1BSRUZJWF9ERUNMQVJBVElPTl9SVUxFX05BTUUgPSBcInR5cGVQcmVmaXhEZWNsYXJhdGlvblwiO1xuZXhwb3J0IGNvbnN0IFNJTVBMRV9UWVBFX0RFQ0xBUkFUSU9OX1JVTEVfTkFNRSA9IFwic2ltcGxlVHlwZURlY2xhcmF0aW9uXCI7XG5leHBvcnQgY29uc3QgQ09OU1RSVUNUT1JfREVDTEFSQVRJT05fUlVMRV9OQU1FID0gXCJjb25zdHJ1Y3RvckRlY2xhcmF0aW9uXCI7XG5leHBvcnQgY29uc3QgQ09NUExFWF9UWVBFX0RFQ0xBUkFUSU9OX1JVTEVfTkFNRSA9IFwiY29tcGxleFR5cGVEZWNsYXJhdGlvblwiO1xuZXhwb3J0IGNvbnN0IE1FVEFWQVJJQUJMRV9ERUNMQVJBVElPTl9SVUxFX05BTUUgPSBcIm1ldGF2YXJpYWJsZURlY2xhcmF0aW9uXCI7XG4iXSwibmFtZXMiOlsiQVJHVU1FTlRfUlVMRV9OQU1FIiwiQVNTVU1QVElPTl9SVUxFX05BTUUiLCJBWElPTV9CT0RZX1JVTEVfTkFNRSIsIkFYSU9NX0hFQURFUl9SVUxFX05BTUUiLCJBWElPTV9SVUxFX05BTUUiLCJDT01CSU5BVE9SX0RFQ0xBUkFUSU9OX1JVTEVfTkFNRSIsIkNPTUJJTkFUT1JfUlVMRV9OQU1FIiwiQ09NUExFWF9UWVBFX0RFQ0xBUkFUSU9OX1JVTEVfTkFNRSIsIkNPTkNMVVNJT05fUlVMRV9OQU1FIiwiQ09OSkVDVFVSRV9CT0RZX1JVTEVfTkFNRSIsIkNPTkpFQ1RVUkVfSEVBREVSX1JVTEVfTkFNRSIsIkNPTkpFQ1RVUkVfUlVMRV9OQU1FIiwiQ09OU1RSVUNUT1JfREVDTEFSQVRJT05fUlVMRV9OQU1FIiwiQ09OU1RSVUNUT1JfUlVMRV9OQU1FIiwiQ09OVEFJTkVEX0FTU0VSVElPTl9SVUxFX05BTUUiLCJERURVQ1RJT05fUlVMRV9OQU1FIiwiREVGSU5FRF9BU1NFUlRJT05fUlVMRV9OQU1FIiwiREVSSVZBVElPTl9SVUxFX05BTUUiLCJET0NVTUVOVF9SVUxFX05BTUUiLCJFUVVBTElUWV9SVUxFX05BTUUiLCJFUVVJVkFMRU5DRVNfUlVMRV9OQU1FIiwiRVFVSVZBTEVOQ0VfUlVMRV9OQU1FIiwiRVJST1JfUlVMRV9OQU1FIiwiRlJBTUVfUlVMRV9OQU1FIiwiRlJBTUVfU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSIsIkhZUE9USEVTSVNfUlVMRV9OQU1FIiwiSlVER0VNRU5UX1JVTEVfTkFNRSIsIkxBQkVMU19SVUxFX05BTUUiLCJMQUJFTF9SVUxFX05BTUUiLCJMRU1NQV9CT0RZX1JVTEVfTkFNRSIsIkxFTU1BX0hFQURFUl9SVUxFX05BTUUiLCJMRU1NQV9SVUxFX05BTUUiLCJNRVRBVEhFT1JFTV9CT0RZX1JVTEVfTkFNRSIsIk1FVEFUSEVPUkVNX0hFQURFUl9SVUxFX05BTUUiLCJNRVRBVEhFT1JFTV9SVUxFX05BTUUiLCJNRVRBVkFSSUFCTEVfREVDTEFSQVRJT05fUlVMRV9OQU1FIiwiTUVUQVZBUklBQkxFX1JVTEVfTkFNRSIsIk1FVEFfQVJHVU1FTlRfUlVMRV9OQU1FIiwiTUVUQV9MRU1NQV9CT0RZX1JVTEVfTkFNRSIsIk1FVEFfTEVNTUFfSEVBREVSX1JVTEVfTkFNRSIsIk1FVEFfTEVNTUFfUlVMRV9OQU1FIiwiTUVUQV9UWVBFX1JVTEVfTkFNRSIsIlBBUkFNRVRFUl9SVUxFX05BTUUiLCJQQVJFTlRIRVNJU0VEX0xBQkVMU19SVUxFX05BTUUiLCJQQVJFTlRIRVNJU0VEX0xBQkVMX1JVTEVfTkFNRSIsIlBMQUNFSE9MREVSX1JVTEVfTkFNRSIsIlBSRU1JU0VfUlVMRV9OQU1FIiwiUFJPQ0VEVVJFX0NBTExfUlVMRV9OQU1FIiwiUFJPQ0VEVVJFX1JFRkVSRU5DRV9SVUxFX05BTUUiLCJQUk9PRl9SVUxFX05BTUUiLCJQUk9QRVJUWV9BU1NFUlRJT05fUlVMRV9OQU1FIiwiUFJPUEVSVFlfREVDTEFSQVRJT05fUlVMRV9OQU1FIiwiUFJPUEVSVFlfUkVMQVRJT05fUlVMRV9OQU1FIiwiUFJPUEVSVFlfUlVMRV9OQU1FIiwiUVVBTElGSUNBVElPTl9SVUxFX05BTUUiLCJSRUZFUkVOQ0VfUlVMRV9OQU1FIiwiUkVGRVJFTkNFX1NVQlNUSVRVVElPTl9SVUxFX05BTUUiLCJSVUxFX0JPRFlfUlVMRV9OQU1FIiwiUlVMRV9IRUFERVJfUlVMRV9OQU1FIiwiUlVMRV9SVUxFX05BTUUiLCJTQVRJU0ZJRVNfQVNTRVJUSU9OX1JVTEVfTkFNRSIsIlNFQ1RJT05fUlVMRV9OQU1FIiwiU0lHTkFUVVJFX1JVTEVfTkFNRSIsIlNJTVBMRV9UWVBFX0RFQ0xBUkFUSU9OX1JVTEVfTkFNRSIsIlNUQVRFTUVOVF9SVUxFX05BTUUiLCJTVEFURU1FTlRfU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSIsIlNURVBfUlVMRV9OQU1FIiwiU1VCUFJPT0ZfQVNTRVJUSU9OX1JVTEVfTkFNRSIsIlNVQlBST09GX1JVTEVfTkFNRSIsIlNVQl9ERVJJVkFUSU9OX1JVTEVfTkFNRSIsIlNVUFBPU0lUSU9OX1JVTEVfTkFNRSIsIlRFUk1fUlVMRV9OQU1FIiwiVEVSTV9TVUJTVElUVVRJT05fUlVMRV9OQU1FIiwiVEhFT1JFTV9CT0RZX1JVTEVfTkFNRSIsIlRIRU9SRU1fSEVBREVSX1JVTEVfTkFNRSIsIlRIRU9SRU1fUlVMRV9OQU1FIiwiVFlQRVNfUlVMRV9OQU1FIiwiVFlQRV9BU1NFUlRJT05fUlVMRV9OQU1FIiwiVFlQRV9QUkVGSVhfREVDTEFSQVRJT05fUlVMRV9OQU1FIiwiVFlQRV9QUkVGSVhfUlVMRV9OQU1FIiwiVFlQRV9SVUxFX05BTUUiLCJWQVJJQUJMRV9ERUNMQVJBVElPTl9SVUxFX05BTUUiLCJWQVJJQUJMRV9SVUxFX05BTUUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQWlCYUE7ZUFBQUE7O1FBc0JBQztlQUFBQTs7UUFQQUM7ZUFBQUE7O1FBZUFDO2VBQUFBOztRQXZDQUM7ZUFBQUE7O1FBcUVBQztlQUFBQTs7UUEzQ0FDO2VBQUFBOztRQWlEQUM7ZUFBQUE7O1FBaERBQztlQUFBQTs7UUF3QkFDO2VBQUFBOztRQUdBQztlQUFBQTs7UUExQkFDO2VBQUFBOztRQThDQUM7ZUFBQUE7O1FBdENBQztlQUFBQTs7UUE0QkFDO2VBQUFBOztRQTdDQUM7ZUFBQUE7O1FB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
350
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9ydWxlTmFtZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBSVUxFX1JVTEVfTkFNRSA9IFwicnVsZVwiO1xuZXhwb3J0IGNvbnN0IFNURVBfUlVMRV9OQU1FID0gXCJzdGVwXCI7XG5leHBvcnQgY29uc3QgVEVSTV9SVUxFX05BTUUgPSBcInRlcm1cIjtcbmV4cG9ydCBjb25zdCBUWVBFX1JVTEVfTkFNRSA9IFwidHlwZVwiO1xuZXhwb3J0IGNvbnN0IFRZUEVTX1JVTEVfTkFNRSA9IFwidHlwZXNcIjtcbmV4cG9ydCBjb25zdCBMRU1NQV9SVUxFX05BTUUgPSBcImxlbW1hXCI7XG5leHBvcnQgY29uc3QgQVhJT01fUlVMRV9OQU1FID0gXCJheGlvbVwiO1xuZXhwb3J0IGNvbnN0IEVSUk9SX1JVTEVfTkFNRSA9IFwiZXJyb3JcIjtcbmV4cG9ydCBjb25zdCBGUkFNRV9SVUxFX05BTUUgPSBcImZyYW1lXCI7XG5leHBvcnQgY29uc3QgUFJPT0ZfUlVMRV9OQU1FID0gXCJwcm9vZlwiO1xuZXhwb3J0IGNvbnN0IExBQkVMX1JVTEVfTkFNRSA9IFwibGFiZWxcIjtcbmV4cG9ydCBjb25zdCBMQUJFTFNfUlVMRV9OQU1FID0gXCJsYWJlbHNcIjtcbmV4cG9ydCBjb25zdCBUSEVPUkVNX1JVTEVfTkFNRSA9IFwidGhlb3JlbVwiO1xuZXhwb3J0IGNvbnN0IFBSRU1JU0VfUlVMRV9OQU1FID0gXCJwcmVtaXNlXCI7XG5leHBvcnQgY29uc3QgU0VDVElPTl9SVUxFX05BTUUgPSBcInNlY3Rpb25cIjtcbmV4cG9ydCBjb25zdCBBUkdVTUVOVF9SVUxFX05BTUUgPSBcImFyZ3VtZW50XCI7XG5leHBvcnQgY29uc3QgUFJPUEVSVFlfUlVMRV9OQU1FID0gXCJwcm9wZXJ0eVwiO1xuZXhwb3J0IGNvbnN0IEVRVUFMSVRZX1JVTEVfTkFNRSA9IFwiZXF1YWxpdHlcIjtcbmV4cG9ydCBjb25zdCBWQVJJQUJMRV9SVUxFX05BTUUgPSBcInZhcmlhYmxlXCI7XG5leHBvcnQgY29uc3QgU1VCUFJPT0ZfUlVMRV9OQU1FID0gXCJzdWJwcm9vZlwiO1xuZXhwb3J0IGNvbnN0IERPQ1VNRU5UX1JVTEVfTkFNRSA9IFwiZG9jdW1lbnRcIjtcbmV4cG9ydCBjb25zdCBSVUxFX0JPRFlfUlVMRV9OQU1FID0gXCJydWxlQm9keVwiO1xuZXhwb3J0IGNvbnN0IE1FVEFfVFlQRV9SVUxFX05BTUUgPSBcIm1ldGFUeXBlXCI7XG5leHBvcnQgY29uc3QgU0lHTkFUVVJFX1JVTEVfTkFNRSA9IFwic2lnbmF0dXJlXCI7XG5leHBvcnQgY29uc3QgUEFSQU1FVEVSX1JVTEVfTkFNRSA9IFwicGFyYW1ldGVyXCI7XG5leHBvcnQgY29uc3QgREVEVUNUSU9OX1JVTEVfTkFNRSA9IFwiZGVkdWN0aW9uXCI7XG5leHBvcnQgY29uc3QgSlVER0VNRU5UX1JVTEVfTkFNRSA9IFwianVkZ2VtZW50XCI7XG5leHBvcnQgY29uc3QgUkVGRVJFTkNFX1JVTEVfTkFNRSA9IFwicmVmZXJlbmNlXCI7XG5leHBvcnQgY29uc3QgU1RBVEVNRU5UX1JVTEVfTkFNRSA9IFwic3RhdGVtZW50XCI7XG5leHBvcnQgY29uc3QgTUVUQV9MRU1NQV9SVUxFX05BTUUgPSBcIm1ldGFMZW1tYVwiO1xuZXhwb3J0IGNvbnN0IEFYSU9NX0JPRFlfUlVMRV9OQU1FID0gXCJheGlvbUJvZHlcIjtcbmV4cG9ydCBjb25zdCBMRU1NQV9CT0RZX1JVTEVfTkFNRSA9IFwibGVtbWFCb2R5XCI7XG5leHBvcnQgY29uc3QgQ09NQklOQVRPUl9SVUxFX05BTUUgPSBcImNvbWJpbmF0b3JcIjtcbmV4cG9ydCBjb25zdCBDT05DTFVTSU9OX1JVTEVfTkFNRSA9IFwiY29uY2x1c2lvblwiO1xuZXhwb3J0IGNvbnN0IENPTkpFQ1RVUkVfUlVMRV9OQU1FID0gXCJjb25qZWN0dXJlXCI7XG5leHBvcnQgY29uc3QgREVSSVZBVElPTl9SVUxFX05BTUUgPSBcImRlcml2YXRpb25cIjtcbmV4cG9ydCBjb25zdCBIWVBPVEhFU0lTX1JVTEVfTkFNRSA9IFwiaHlwb3RoZXNpc1wiO1xuZXhwb3J0IGNvbnN0IEFTU1VNUFRJT05fUlVMRV9OQU1FID0gXCJhc3N1bXB0aW9uXCI7XG5leHBvcnQgY29uc3QgUExBQ0VIT0xERVJfUlVMRV9OQU1FID0gXCJfXCI7IC8vL1xuZXhwb3J0IGNvbnN0IFJVTEVfSEVBREVSX1JVTEVfTkFNRSA9IFwicnVsZUhlYWRlclwiO1xuZXhwb3J0IGNvbnN0IFRZUEVfUFJFRklYX1JVTEVfTkFNRSA9IFwidHlwZVByZWZpeFwiO1xuZXhwb3J0IGNvbnN0IFNVUFBPU0lUSU9OX1JVTEVfTkFNRSA9IFwic3VwcG9zaXRpb25cIjtcbmV4cG9ydCBjb25zdCBDT05TVFJVQ1RPUl9SVUxFX05BTUUgPSBcImNvbnN0cnVjdG9yXCI7XG5leHBvcnQgY29uc3QgTUVUQVRIRU9SRU1fUlVMRV9OQU1FID0gXCJtZXRhdGhlb3JlbVwiO1xuZXhwb3J0IGNvbnN0IEVRVUlWQUxFTkNFX1JVTEVfTkFNRSA9IFwiZXF1aXZhbGVuY2VcIjtcbmV4cG9ydCBjb25zdCBBWElPTV9IRUFERVJfUlVMRV9OQU1FID0gXCJheGlvbUhlYWRlclwiO1xuZXhwb3J0IGNvbnN0IExFTU1BX0hFQURFUl9SVUxFX05BTUUgPSBcImxlbW1hSGVhZGVyXCI7XG5leHBvcnQgY29uc3QgVEhFT1JFTV9CT0RZX1JVTEVfTkFNRSA9IFwidGhlb3JlbUJvZHlcIjtcbmV4cG9ydCBjb25zdCBNRVRBVkFSSUFCTEVfUlVMRV9OQU1FID0gXCJtZXRhdmFyaWFibGVcIjtcbmV4cG9ydCBjb25zdCBFUVVJVkFMRU5DRVNfUlVMRV9OQU1FID0gXCJlcXVpdmFsZW5jZXNcIjtcbmV4cG9ydCBjb25zdCBNRVRBX0FSR1VNRU5UX1JVTEVfTkFNRSA9IFwibWV0YUFyZ3VtZW50XCI7XG5leHBvcnQgY29uc3QgUVVBTElGSUNBVElPTl9SVUxFX05BTUUgPSBcInF1YWxpZmljYXRpb25cIjtcbmV4cG9ydCBjb25zdCBQUk9DRURVUkVfQ0FMTF9SVUxFX05BTUUgPSBcInByb2NlZHVyZUNhbGxcIjtcbmV4cG9ydCBjb25zdCBTVUJfREVSSVZBVElPTl9SVUxFX05BTUUgPSBcInN1YkRlcml2YXRpb25cIjtcbmV4cG9ydCBjb25zdCBUWVBFX0FTU0VSVElPTl9SVUxFX05BTUUgPSBcInR5cGVBc3NlcnRpb25cIjtcbmV4cG9ydCBjb25zdCBUSEVPUkVNX0hFQURFUl9SVUxFX05BTUUgPSBcInRoZW9yZW1IZWFkZXJcIjtcbmV4cG9ydCBjb25zdCBNRVRBX0xFTU1BX0JPRFlfUlVMRV9OQU1FID0gXCJtZXRhTGVtbWFCb2R5XCI7XG5leHBvcnQgY29uc3QgQ09OSkVDVFVSRV9CT0RZX1JVTEVfTkFNRSA9IFwiY29uamVjdHVyZUJvZHlcIjtcbmV4cG9ydCBjb25zdCBNRVRBVEhFT1JFTV9CT0RZX1JVTEVfTkFNRSA9IFwibWV0YXRoZW9yZW1Cb2R5XCI7XG5leHBvcnQgY29uc3QgTUVUQV9MRU1NQV9IRUFERVJfUlVMRV9OQU1FID0gXCJtZXRhTGVtbWFIZWFkZXJcIjtcbmV4cG9ydCBjb25zdCBDT05KRUNUVVJFX0hFQURFUl9SVUxFX05BTUUgPSBcImNvbmplY3R1cmVIZWFkZXJcIjtcbmV4cG9ydCBjb25zdCBQUk9QRVJUWV9SRUxBVElPTl9SVUxFX05BTUUgPSBcInByb3BlcnR5UmVsYXRpb25cIjtcbmV4cG9ydCBjb25zdCBERUZJTkVEX0FTU0VSVElPTl9SVUxFX05BTUUgPSBcImRlZmluZWRBc3NlcnRpb25cIjtcbmV4cG9ydCBjb25zdCBURVJNX1NVQlNUSVRVVElPTl9SVUxFX05BTUUgPSBcInRlcm1TdWJzdGl0dXRpb25cIjtcbmV4cG9ydCBjb25zdCBNRVRBVEhFT1JFTV9IRUFERVJfUlVMRV9OQU1FID0gXCJtZXRhdGhlb3JlbUhlYWRlclwiO1xuZXhwb3J0IGNvbnN0IFBST1BFUlRZX0FTU0VSVElPTl9SVUxFX05BTUUgPSBcInByb3BlcnR5QXNzZXJ0aW9uXCI7XG5leHBvcnQgY29uc3QgU1VCUFJPT0ZfQVNTRVJUSU9OX1JVTEVfTkFNRSA9IFwic3VicHJvb2ZBc3NlcnRpb25cIjtcbmV4cG9ydCBjb25zdCBGUkFNRV9TVUJTVElUVVRJT05fUlVMRV9OQU1FID0gXCJmcmFtZVN1YnN0aXR1dGlvblwiO1xuZXhwb3J0IGNvbnN0IFBBUkVOVEhFU0lTRURfTEFCRUxfUlVMRV9OQU1FID0gXCJwYXJlbnRoZXNpc2VkTGFiZWxcIjtcbmV4cG9ydCBjb25zdCBQUk9DRURVUkVfUkVGRVJFTkNFX1JVTEVfTkFNRSA9IFwicHJvY2VkdXJlUmVmZXJlbmNlXCI7XG5leHBvcnQgY29uc3QgQ09OVEFJTkVEX0FTU0VSVElPTl9SVUxFX05BTUUgPSBcImNvbnRhaW5lZEFzc2VydGlvblwiO1xuZXhwb3J0IGNvbnN0IFNBVElTRklFU19BU1NFUlRJT05fUlVMRV9OQU1FID0gXCJzYXRpc2ZpZXNBc3NlcnRpb25cIjtcbmV4cG9ydCBjb25zdCBQQVJFTlRIRVNJU0VEX0xBQkVMU19SVUxFX05BTUUgPSBcInBhcmVudGhlc2lzZWRMYWJlbHNcIjtcbmV4cG9ydCBjb25zdCBQUk9QRVJUWV9ERUNMQVJBVElPTl9SVUxFX05BTUUgPSBcInByb3BlcnR5RGVjbGFyYXRpb25cIjtcbmV4cG9ydCBjb25zdCBWQVJJQUJMRV9ERUNMQVJBVElPTl9SVUxFX05BTUUgPSBcInZhcmlhYmxlRGVjbGFyYXRpb25cIjtcbmV4cG9ydCBjb25zdCBNRVRBX0xFVkVMX0FTU1VNUFRJT05fUlVMRV9OQU1FID0gXCJtZXRhTGV2ZWxBc3N1bXB0aW9uXCI7XG5leHBvcnQgY29uc3QgQ09NQklOQVRPUl9ERUNMQVJBVElPTl9SVUxFX05BTUUgPSBcImNvbWJpbmF0b3JEZWNsYXJhdGlvblwiO1xuZXhwb3J0IGNvbnN0IFNUQVRFTUVOVF9TVUJTVElUVVRJT05fUlVMRV9OQU1FID0gXCJzdGF0ZW1lbnRTdWJzdGl0dXRpb25cIjtcbmV4cG9ydCBjb25zdCBSRUZFUkVOQ0VfU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSA9IFwicmVmZXJlbmNlU3Vic3RpdHV0aW9uXCI7XG5leHBvcnQgY29uc3QgVFlQRV9QUkVGSVhfREVDTEFSQVRJT05fUlVMRV9OQU1FID0gXCJ0eXBlUHJlZml4RGVjbGFyYXRpb25cIjtcbmV4cG9ydCBjb25zdCBTSU1QTEVfVFlQRV9ERUNMQVJBVElPTl9SVUxFX05BTUUgPSBcInNpbXBsZVR5cGVEZWNsYXJhdGlvblwiO1xuZXhwb3J0IGNvbnN0IENPTlNUUlVDVE9SX0RFQ0xBUkFUSU9OX1JVTEVfTkFNRSA9IFwiY29uc3RydWN0b3JEZWNsYXJhdGlvblwiO1xuZXhwb3J0IGNvbnN0IENPTVBMRVhfVFlQRV9ERUNMQVJBVElPTl9SVUxFX05BTUUgPSBcImNvbXBsZXhUeXBlRGVjbGFyYXRpb25cIjtcbmV4cG9ydCBjb25zdCBNRVRBVkFSSUFCTEVfREVDTEFSQVRJT05fUlVMRV9OQU1FID0gXCJtZXRhdmFyaWFibGVEZWNsYXJhdGlvblwiO1xuIl0sIm5hbWVzIjpbIkFSR1VNRU5UX1JVTEVfTkFNRSIsIkFTU1VNUFRJT05fUlVMRV9OQU1FIiwiQVhJT01fQk9EWV9SVUxFX05BTUUiLCJBWElPTV9IRUFERVJfUlVMRV9OQU1FIiwiQVhJT01fUlVMRV9OQU1FIiwiQ09NQklOQVRPUl9ERUNMQVJBVElPTl9SVUxFX05BTUUiLCJDT01CSU5BVE9SX1JVTEVfTkFNRSIsIkNPTVBMRVhfVFlQRV9ERUNMQVJBVElPTl9SVUxFX05BTUUiLCJDT05DTFVTSU9OX1JVTEVfTkFNRSIsIkNPTkpFQ1RVUkVfQk9EWV9SVUxFX05BTUUiLCJDT05KRUNUVVJFX0hFQURFUl9SVUxFX05BTUUiLCJDT05KRUNUVVJFX1JVTEVfTkFNRSIsIkNPTlNUUlVDVE9SX0RFQ0xBUkFUSU9OX1JVTEVfTkFNRSIsIkNPTlNUUlVDVE9SX1JVTEVfTkFNRSIsIkNPTlRBSU5FRF9BU1NFUlRJT05fUlVMRV9OQU1FIiwiREVEVUNUSU9OX1JVTEVfTkFNRSIsIkRFRklORURfQVNTRVJUSU9OX1JVTEVfTkFNRSIsIkRFUklWQVRJT05fUlVMRV9OQU1FIiwiRE9DVU1FTlRfUlVMRV9OQU1FIiwiRVFVQUxJVFlfUlVMRV9OQU1FIiwiRVFVSVZBTEVOQ0VTX1JVTEVfTkFNRSIsIkVRVUlWQUxFTkNFX1JVTEVfTkFNRSIsIkVSUk9SX1JVTEVfTkFNRSIsIkZSQU1FX1JVTEVfTkFNRSIsIkZSQU1FX1NVQlNUSVRVVElPTl9SVUxFX05BTUUiLCJIWVBPVEhFU0lTX1JVTEVfTkFNRSIsIkpVREdFTUVOVF9SVUxFX05BTUUiLCJMQUJFTFNfUlVMRV9OQU1FIiwiTEFCRUxfUlVMRV9OQU1FIiwiTEVNTUFfQk9EWV9SVUxFX05BTUUiLCJMRU1NQV9IRUFERVJfUlVMRV9OQU1FIiwiTEVNTUFfUlVMRV9OQU1FIiwiTUVUQVRIRU9SRU1fQk9EWV9SVUxFX05BTUUiLCJNRVRBVEhFT1JFTV9IRUFERVJfUlVMRV9OQU1FIiwiTUVUQVRIRU9SRU1fUlVMRV9OQU1FIiwiTUVUQVZBUklBQkxFX0RFQ0xBUkFUSU9OX1JVTEVfTkFNRSIsIk1FVEFWQVJJQUJMRV9SVUxFX05BTUUiLCJNRVRBX0FSR1VNRU5UX1JVTEVfTkFNRSIsIk1FVEFfTEVNTUFfQk9EWV9SVUxFX05BTUUiLCJNRVRBX0xFTU1BX0hFQURFUl9SVUxFX05BTUUiLCJNRVRBX0xFTU1BX1JVTEVfTkFNRSIsIk1FVEFfTEVWRUxfQVNTVU1QVElPTl9SVUxFX05BTUUiLCJNRVRBX1RZUEVfUlVMRV9OQU1FIiwiUEFSQU1FVEVSX1JVTEVfTkFNRSIsIlBBUkVOVEhFU0lTRURfTEFCRUxTX1JVTEVfTkFNRSIsIlBBUkVOVEhFU0lTRURfTEFCRUxfUlVMRV9OQU1FIiwiUExBQ0VIT0xERVJfUlVMRV9OQU1FIiwiUFJFTUlTRV9SVUxFX05BTUUiLCJQUk9DRURVUkVfQ0FMTF9SVUxFX05BTUUiLCJQUk9DRURVUkVfUkVGRVJFTkNFX1JVTEVfTkFNRSIsIlBST09GX1JVTEVfTkFNRSIsIlBST1BFUlRZX0FTU0VSVElPTl9SVUxFX05BTUUiLCJQUk9QRVJUWV9ERUNMQVJBVElPTl9SVUxFX05BTUUiLCJQUk9QRVJUWV9SRUxBVElPTl9SVUxFX05BTUUiLCJQUk9QRVJUWV9SVUxFX05BTUUiLCJRVUFMSUZJQ0FUSU9OX1JVTEVfTkFNRSIsIlJFRkVSRU5DRV9SVUxFX05BTUUiLCJSRUZFUkVOQ0VfU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSIsIlJVTEVfQk9EWV9SVUxFX05BTUUiLCJSVUxFX0hFQURFUl9SVUxFX05BTUUiLCJSVUxFX1JVTEVfTkFNRSIsIlNBVElTRklFU19BU1NFUlRJT05fUlVMRV9OQU1FIiwiU0VDVElPTl9SVUxFX05BTUUiLCJTSUdOQVRVUkVfUlVMRV9OQU1FIiwiU0lNUExFX1RZUEVfREVDTEFSQVRJT05fUlVMRV9OQU1FIiwiU1RBVEVNRU5UX1JVTEVfTkFNRSIsIlNUQVRFTUVOVF9TVUJTVElUVVRJT05fUlVMRV9OQU1FIiwiU1RFUF9SVUxFX05BTUUiLCJTVUJQUk9PRl9BU1NFUlRJT05fUlVMRV9OQU1FIiwiU1VCUFJPT0ZfUlVMRV9OQU1FIiwiU1VCX0RFUklWQVRJT05fUlVMRV9OQU1FIiwiU1VQUE9TSVRJT05fUlVMRV9OQU1FIiwiVEVSTV9SVUxFX05BTUUiLCJURVJNX1NVQlNUSVRVVElPTl9SVUxFX05BTUUiLCJUSEVPUkVNX0JPRFlfUlVMRV9OQU1FIiwiVEhFT1JFTV9IRUFERVJfUlVMRV9OQU1FIiwiVEhFT1JFTV9SVUxFX05BTUUiLCJUWVBFU19SVUxFX05BTUUiLCJUWVBFX0FTU0VSVElPTl9SVUxFX05BTUUiLCJUWVBFX1BSRUZJWF9ERUNMQVJBVElPTl9SVUxFX05BTUUiLCJUWVBFX1BSRUZJWF9SVUxFX05BTUUiLCJUWVBFX1JVTEVfTkFNRSIsIlZBUklBQkxFX0RFQ0xBUkFUSU9OX1JVTEVfTkFNRSIsIlZBUklBQkxFX1JVTEVfTkFNRSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBaUJhQTtlQUFBQTs7UUFzQkFDO2VBQUFBOztRQVBBQztlQUFBQTs7UUFlQUM7ZUFBQUE7O1FBdkNBQztlQUFBQTs7UUFzRUFDO2VBQUFBOztRQTVDQUM7ZUFBQUE7O1FBa0RBQztlQUFBQTs7UUFqREFD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
@@ -126,12 +126,12 @@ function unserialise(innerFunction, json, context) {
126
126
  context = ephemeralContext; ///
127
127
  return innerFunction(json, context);
128
128
  }
129
- async function asyncRestrict(innerFunction, assumptions, context) {
129
+ async function asyncRestrict(innerFunction, metaLevelAssumptions, context) {
130
130
  if (context === undefined) {
131
- context = assumptions; ///
132
- assumptions = null;
131
+ context = metaLevelAssumptions; ///
132
+ metaLevelAssumptions = null;
133
133
  }
134
- const proofContext = _proof.default.fromAssumptions(assumptions, context);
134
+ const proofContext = _proof.default.fromMetaLevelAssumptions(metaLevelAssumptions, context);
135
135
  context = proofContext; ///
136
136
  return await innerFunction(context);
137
137
  }
@@ -141,4 +141,4 @@ async function asyncReconcile(innerFunction, context) {
141
141
  return await innerFunction(context);
142
142
  }
143
143
 
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udGV4dC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFByb29mQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9wcm9vZlwiO1xuaW1wb3J0IE5lc3RlZENvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvbmVzdGVkXCI7XG5pbXBvcnQgVGhldGljQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC90aGV0aWNcIjtcbmltcG9ydCBOb21pbmFsQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9ub21pbmFsXCI7XG5pbXBvcnQgTGl0ZXJhbENvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvbGl0ZXJhbFwiO1xuaW1wb3J0IExpbWluYWxDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L2xpbWluYWxcIjtcbmltcG9ydCBJbGxhdGl2ZUNvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvaWxsYXRpdmVcIjtcbmltcG9ydCBFcGhlbWVyYWxDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L2VwaGVtZXJhbFwiO1xuaW1wb3J0IEJyYW5jaGluZ0NvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvYnJhbmNoaW5nXCI7XG5pbXBvcnQgU3ludGhldGljQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9zeW50aGV0aWNcIjtcblxuaW1wb3J0IHsgZXBoZW1lcmFsQ29udGV4dEZyb21KU09OLCBlcGhlbWVyYWxDb250ZXh0VG9FcGhlbWVyYWxDb250ZXh0SlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5leHBvcnQgZnVuY3Rpb24gam9pbihpbm5lckZ1bmN0aW9uLCAuLi5jb250ZXh0cykge1xuICBjb25zdCBzeW50aGV0aWNDb250ZXh0ID0gU3ludGhldGljQ29udGV4dC5mcm9tQ29udGV4dHMoLi4uY29udGV4dHMpLFxuICAgICAgICBjb250ZXh0ID0gc3ludGhldGljQ29udGV4dDsgIC8vL1xuXG4gIHJldHVybiBpbm5lckZ1bmN0aW9uKGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hvb3NlKGlubmVyRnVuY3Rpb24sIGNvbnRleHQpIHtcbiAgY29uc3QgYnJhbmNoaW5nQ29udGV4dCA9IEJyYW5jaGluZ0NvbnRleHQuZnJvbU5vdGhpbmcoY29udGV4dCk7XG5cbiAgY29udGV4dCA9IGJyYW5jaGluZ0NvbnRleHQ7ICAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbihjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcml2ZShpbm5lckZ1bmN0aW9uLCBjb250ZXh0KSB7XG4gIGNvbnN0IGlsbGF0aXZlQ29udGV4dCA9IElsbGF0aXZlQ29udGV4dC5mcm9tTm90aGluZyhjb250ZXh0KTtcblxuICBjb250ZXh0ID0gaWxsYXRpdmVDb250ZXh0OyAgLy8vXG5cbiAgcmV0dXJuIGlubmVyRnVuY3Rpb24oY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNsYXJlKGlubmVyRnVuY3Rpb24sIGNvbnRleHQpIHtcbiAgY29uc3QgdGhldGljQ29udGV4dCA9IFRoZXRpY0NvbnRleHQuZnJvbU5vdGhpbmcoY29udGV4dCk7XG5cbiAgY29udGV4dCA9IHRoZXRpY0NvbnRleHQ7ICAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbihjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2NlbmQoaW5uZXJGdW5jdGlvbiwgY29udGV4dCkge1xuICBjb25zdCBuZXN0ZWRDb250ZXh0ID0gTmVzdGVkQ29udGV4dC5mcm9tTm90aGluZyhjb250ZXh0KTtcblxuICBjb250ZXh0ID0gbmVzdGVkQ29udGV4dDsgIC8vL1xuXG4gIHJldHVybiBpbm5lckZ1bmN0aW9uKGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXR0ZW1wdChpbm5lckZ1bmN0aW9uLCBjb250ZXh0KSB7XG4gIGNvbnN0IGNvbnRleHRFcGhlbWVyYWxDb250ZXh0ID0gKGNvbnRleHQgaW5zdGFuY2VvZiBFcGhlbWVyYWxDb250ZXh0KTtcblxuICBpZiAoY29udGV4dEVwaGVtZXJhbENvbnRleHQpIHtcbiAgICBjb250ZXh0ID0gY29udGV4dC5nZXRDb250ZXh0KCk7XG4gIH1cblxuICBjb25zdCBlcGhlbWVyYWxDb250ZXh0ID0gRXBoZW1lcmFsQ29udGV4dC5mcm9tTm90aGluZyhjb250ZXh0KTtcblxuICBjb250ZXh0ID0gZXBoZW1lcmFsQ29udGV4dDsgIC8vL1xuXG4gIHJldHVybiBpbm5lckZ1bmN0aW9uKGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVjb25jaWxlKGlubmVyRnVuY3Rpb24sIGNvbnRleHQpIHtcbiAgY29uc3QgbGltaW5hbENvbnRleHQgPSBMaW1pbmFsQ29udGV4dC5mcm9tTm90aGluZyhjb250ZXh0KTtcblxuICBjb250ZXh0ID0gbGltaW5hbENvbnRleHQ7ICAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbihjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlKGlubmVyRnVuY3Rpb24sIGNvbnRleHQpIHtcbiAgY29uc3QgbGl0ZXJhbENvbnRleHQgPSBMaXRlcmFsQ29udGV4dC5mcm9tTm90aGluZyhjb250ZXh0KTtcblxuICBjb250ZXh0ID0gbGl0ZXJhbENvbnRleHQ7ICAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbihjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vbWluYWxseShpbm5lckZ1bmN0aW9uKSB7XG4gIGxldCBjb250ZXh0O1xuXG4gIGNvbnN0IG5vbWluYWxDb250ZXh0ID0gTm9taW5hbENvbnRleHQuZnJvbU5vdGhpbmcoKTtcblxuICBjb250ZXh0ID0gbm9taW5hbENvbnRleHQ7IC8vL1xuXG4gIGNvbnN0IGxpdGVyYWxDb250ZXh0ID0gTGl0ZXJhbENvbnRleHQuZnJvbU5vdGhpbmcoY29udGV4dCk7XG5cbiAgY29udGV4dCA9IGxpdGVyYWxDb250ZXh0OyAgLy8vXG5cbiAgcmV0dXJuIGlubmVyRnVuY3Rpb24oY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpc2UoaW5uZXJGdW5jdGlvbiwgY29udGV4dCkge1xuICBjb25zdCBlcGhlbWVyYWxDb250ZXh0ID0gY29udGV4dCwgLy8vXG4gICAgICAgIGVwaGVtZXJhbENvbnRleHRKU09OID0gZXBoZW1lcmFsQ29udGV4dFRvRXBoZW1lcmFsQ29udGV4dEpTT04oZXBoZW1lcmFsQ29udGV4dCksXG4gICAgICAgIGNvbnRleHRKU09OID0gZXBoZW1lcmFsQ29udGV4dEpTT047IC8vL1xuXG4gIGNvbnRleHQgPSBjb250ZXh0SlNPTjsgIC8vL1xuXG4gIHJldHVybiBpbm5lckZ1bmN0aW9uKGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5zZXJpYWxpc2UoaW5uZXJGdW5jdGlvbiwganNvbiwgY29udGV4dCkge1xuICBjb25zdCBlcGhlbWVyYWxDb250ZXh0ID0gZXBoZW1lcmFsQ29udGV4dEZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBlcGhlbWVyYWxDb250ZXh0OyAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbihqc29uLCBjb250ZXh0KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzeW5jUmVzdHJpY3QoaW5uZXJGdW5jdGlvbiwgYXNzdW1wdGlvbnMsIGNvbnRleHQpIHtcbiAgaWYgKGNvbnRleHQgPT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnRleHQgPSBhc3N1bXB0aW9uczsgIC8vL1xuXG4gICAgYXNzdW1wdGlvbnMgPSBudWxsO1xuICB9XG5cbiAgY29uc3QgcHJvb2ZDb250ZXh0ID0gUHJvb2ZDb250ZXh0LmZyb21Bc3N1bXB0aW9ucyhhc3N1bXB0aW9ucywgY29udGV4dCk7XG5cbiAgY29udGV4dCA9IHByb29mQ29udGV4dDsgIC8vL1xuXG4gIHJldHVybiBhd2FpdCBpbm5lckZ1bmN0aW9uKGNvbnRleHQpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXN5bmNSZWNvbmNpbGUoaW5uZXJGdW5jdGlvbiwgY29udGV4dCkge1xuICBjb25zdCBsaW1pbmFsQ29udGV4dCA9IExpbWluYWxDb250ZXh0LmZyb21Ob3RoaW5nKGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBsaW1pbmFsQ29udGV4dDsgIC8vL1xuXG4gIHJldHVybiBhd2FpdCBpbm5lckZ1bmN0aW9uKGNvbnRleHQpO1xufVxuIl0sIm5hbWVzIjpbImFzeW5jUmVjb25jaWxlIiwiYXN5bmNSZXN0cmljdCIsImF0dGVtcHQiLCJjaG9vc2UiLCJkZWNsYXJlIiwiZGVyaXZlIiwiZGVzY2VuZCIsImluc3RhbnRpYXRlIiwiam9pbiIsIm5vbWluYWxseSIsInJlY29uY2lsZSIsInNlcmlhbGlzZSIsInVuc2VyaWFsaXNlIiwiaW5uZXJGdW5jdGlvbiIsImNvbnRleHRzIiwic3ludGhldGljQ29udGV4dCIsIlN5bnRoZXRpY0NvbnRleHQiLCJmcm9tQ29udGV4dHMiLCJjb250ZXh0IiwiYnJhbmNoaW5nQ29udGV4dCIsIkJyYW5jaGluZ0NvbnRleHQiLCJmcm9tTm90aGluZyIsImlsbGF0aXZlQ29udGV4dCIsIklsbGF0aXZlQ29udGV4dCIsInRoZXRpY0NvbnRleHQiLCJUaGV0aWNDb250ZXh0IiwibmVzdGVkQ29udGV4dCIsIk5lc3RlZENvbnRleHQiLCJjb250ZXh0RXBoZW1lcmFsQ29udGV4dCIsIkVwaGVtZXJhbENvbnRleHQiLCJnZXRDb250ZXh0IiwiZXBoZW1lcmFsQ29udGV4dCIsImxpbWluYWxDb250ZXh0IiwiTGltaW5hbENvbnRleHQiLCJsaXRlcmFsQ29udGV4dCIsIkxpdGVyYWxDb250ZXh0Iiwibm9taW5hbENvbnRleHQiLCJOb21pbmFsQ29udGV4dCIsImVwaGVtZXJhbENvbnRleHRKU09OIiwiZXBoZW1lcmFsQ29udGV4dFRvRXBoZW1lcmFsQ29udGV4dEpTT04iLCJjb250ZXh0SlNPTiIsImpzb24iLCJlcGhlbWVyYWxDb250ZXh0RnJvbUpTT04iLCJhc3N1bXB0aW9ucyIsInVuZGVmaW5lZCIsInByb29mQ29udGV4dCIsIlByb29mQ29udGV4dCIsImZyb21Bc3N1bXB0aW9ucyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBa0lzQkE7ZUFBQUE7O1FBZEFDO2VBQUFBOztRQTlETkM7ZUFBQUE7O1FBaENBQztlQUFBQTs7UUFnQkFDO2VBQUFBOztRQVJBQztlQUFBQTs7UUFnQkFDO2VBQUFBOztRQThCQUM7ZUFBQUE7O1FBN0RBQztlQUFBQTs7UUFxRUFDO2VBQUFBOztRQWhCQUM7ZUFBQUE7O1FBOEJBQztlQUFBQTs7UUFVQUM7ZUFBQUE7Ozs4REExR1M7K0RBQ0M7K0RBQ0E7Z0VBQ0M7Z0VBQ0E7Z0VBQ0E7aUVBQ0M7a0VBQ0M7a0VBQ0E7a0VBQ0E7c0JBRW9EOzs7Ozs7QUFFMUUsU0FBU0osS0FBS0ssYUFBYSxFQUFFLEdBQUdDLFFBQVE7SUFDN0MsTUFBTUMsbUJBQW1CQyxrQkFBZ0IsQ0FBQ0MsWUFBWSxJQUFJSCxXQUNwREksVUFBVUgsa0JBQW1CLEdBQUc7SUFFdEMsT0FBT0YsY0FBY0s7QUFDdkI7QUFFTyxTQUFTZixPQUFPVSxhQUFhLEVBQUVLLE9BQU87SUFDM0MsTUFBTUMsbUJBQW1CQyxrQkFBZ0IsQ0FBQ0MsV0FBVyxDQUFDSDtJQUV0REEsVUFBVUMsa0JBQW1CLEdBQUc7SUFFaEMsT0FBT04sY0FBY0s7QUFDdkI7QUFFTyxTQUFTYixPQUFPUSxhQUFhLEVBQUVLLE9BQU87SUFDM0MsTUFBTUksa0JBQWtCQyxpQkFBZSxDQUFDRixXQUFXLENBQUNIO0lBRXBEQSxVQUFVSSxpQkFBa0IsR0FBRztJQUUvQixPQUFPVCxjQUFjSztBQUN2QjtBQUVPLFNBQVNkLFFBQVFTLGFBQWEsRUFBRUssT0FBTztJQUM1QyxNQUFNTSxnQkFBZ0JDLGVBQWEsQ0FBQ0osV0FBVyxDQUFDSDtJQUVoREEsVUFBVU0sZUFBZ0IsR0FBRztJQUU3QixPQUFPWCxjQUFjSztBQUN2QjtBQUVPLFNBQVNaLFFBQVFPLGFBQWEsRUFBRUssT0FBTztJQUM1QyxNQUFNUSxnQkFBZ0JDLGVBQWEsQ0FBQ04sV0FBVyxDQUFDSDtJQUVoREEsVUFBVVEsZUFBZ0IsR0FBRztJQUU3QixPQUFPYixjQUFjSztBQUN2QjtBQUVPLFNBQVNoQixRQUFRVyxhQUFhLEVBQUVLLE9BQU87SUFDNUMsTUFBTVUsMEJBQTJCVixtQkFBbUJXLGtCQUFnQjtJQUVwRSxJQUFJRCx5QkFBeUI7UUFDM0JWLFVBQVVBLFFBQVFZLFVBQVU7SUFDOUI7SUFFQSxNQUFNQyxtQkFBbUJGLGtCQUFnQixDQUFDUixXQUFXLENBQUNIO0lBRXREQSxVQUFVYSxrQkFBbUIsR0FBRztJQUVoQyxPQUFPbEIsY0FBY0s7QUFDdkI7QUFFTyxTQUFTUixVQUFVRyxhQUFhLEVBQUVLLE9BQU87SUFDOUMsTUFBTWMsaUJBQWlCQyxnQkFBYyxDQUFDWixXQUFXLENBQUNIO0lBRWxEQSxVQUFVYyxnQkFBaUIsR0FBRztJQUU5QixPQUFPbkIsY0FBY0s7QUFDdkI7QUFFTyxTQUFTWCxZQUFZTSxhQUFhLEVBQUVLLE9BQU87SUFDaEQsTUFBTWdCLGlCQUFpQkMsZ0JBQWMsQ0FBQ2QsV0FBVyxDQUFDSDtJQUVsREEsVUFBVWdCLGdCQUFpQixHQUFHO0lBRTlCLE9BQU9yQixjQUFjSztBQUN2QjtBQUVPLFNBQVNULFVBQVVJLGFBQWE7SUFDckMsSUFBSUs7SUFFSixNQUFNa0IsaUJBQWlCQyxnQkFBYyxDQUFDaEIsV0FBVztJQUVqREgsVUFBVWtCLGdCQUFnQixHQUFHO0lBRTdCLE1BQU1GLGlCQUFpQkMsZ0JBQWMsQ0FBQ2QsV0FBVyxDQUFDSDtJQUVsREEsVUFBVWdCLGdCQUFpQixHQUFHO0lBRTlCLE9BQU9yQixjQUFjSztBQUN2QjtBQUVPLFNBQVNQLFVBQVVFLGFBQWEsRUFBRUssT0FBTztJQUM5QyxNQUFNYSxtQkFBbUJiLFNBQ25Cb0IsdUJBQXVCQyxJQUFBQSw0Q0FBc0MsRUFBQ1IsbUJBQzlEUyxjQUFjRixzQkFBc0IsR0FBRztJQUU3Q3BCLFVBQVVzQixhQUFjLEdBQUc7SUFFM0IsT0FBTzNCLGNBQWNLO0FBQ3ZCO0FBRU8sU0FBU04sWUFBWUMsYUFBYSxFQUFFNEIsSUFBSSxFQUFFdkIsT0FBTztJQUN0RCxNQUFNYSxtQkFBbUJXLElBQUFBLDhCQUF3QixFQUFDRCxNQUFNdkI7SUFFeERBLFVBQVVhLGtCQUFrQixHQUFHO0lBRS9CLE9BQU9sQixjQUFjNEIsTUFBTXZCO0FBQzdCO0FBRU8sZUFBZWpCLGNBQWNZLGFBQWEsRUFBRThCLFdBQVcsRUFBRXpCLE9BQU87SUFDckUsSUFBSUEsWUFBWTBCLFdBQVc7UUFDekIxQixVQUFVeUIsYUFBYyxHQUFHO1FBRTNCQSxjQUFjO0lBQ2hCO0lBRUEsTUFBTUUsZUFBZUMsY0FBWSxDQUFDQyxlQUFlLENBQUNKLGFBQWF6QjtJQUUvREEsVUFBVTJCLGNBQWUsR0FBRztJQUU1QixPQUFPLE1BQU1oQyxjQUFjSztBQUM3QjtBQUVPLGVBQWVsQixlQUFlYSxhQUFhLEVBQUVLLE9BQU87SUFDekQsTUFBTWMsaUJBQWlCQyxnQkFBYyxDQUFDWixXQUFXLENBQUNIO0lBRWxEQSxVQUFVYyxnQkFBaUIsR0FBRztJQUU5QixPQUFPLE1BQU1uQixjQUFjSztBQUM3QiJ9
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udGV4dC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFByb29mQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9wcm9vZlwiO1xuaW1wb3J0IE5lc3RlZENvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvbmVzdGVkXCI7XG5pbXBvcnQgVGhldGljQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC90aGV0aWNcIjtcbmltcG9ydCBOb21pbmFsQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9ub21pbmFsXCI7XG5pbXBvcnQgTGl0ZXJhbENvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvbGl0ZXJhbFwiO1xuaW1wb3J0IExpbWluYWxDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L2xpbWluYWxcIjtcbmltcG9ydCBJbGxhdGl2ZUNvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvaWxsYXRpdmVcIjtcbmltcG9ydCBFcGhlbWVyYWxDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L2VwaGVtZXJhbFwiO1xuaW1wb3J0IEJyYW5jaGluZ0NvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvYnJhbmNoaW5nXCI7XG5pbXBvcnQgU3ludGhldGljQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9zeW50aGV0aWNcIjtcblxuaW1wb3J0IHsgZXBoZW1lcmFsQ29udGV4dEZyb21KU09OLCBlcGhlbWVyYWxDb250ZXh0VG9FcGhlbWVyYWxDb250ZXh0SlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5leHBvcnQgZnVuY3Rpb24gam9pbihpbm5lckZ1bmN0aW9uLCAuLi5jb250ZXh0cykge1xuICBjb25zdCBzeW50aGV0aWNDb250ZXh0ID0gU3ludGhldGljQ29udGV4dC5mcm9tQ29udGV4dHMoLi4uY29udGV4dHMpLFxuICAgICAgICBjb250ZXh0ID0gc3ludGhldGljQ29udGV4dDsgIC8vL1xuXG4gIHJldHVybiBpbm5lckZ1bmN0aW9uKGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hvb3NlKGlubmVyRnVuY3Rpb24sIGNvbnRleHQpIHtcbiAgY29uc3QgYnJhbmNoaW5nQ29udGV4dCA9IEJyYW5jaGluZ0NvbnRleHQuZnJvbU5vdGhpbmcoY29udGV4dCk7XG5cbiAgY29udGV4dCA9IGJyYW5jaGluZ0NvbnRleHQ7ICAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbihjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcml2ZShpbm5lckZ1bmN0aW9uLCBjb250ZXh0KSB7XG4gIGNvbnN0IGlsbGF0aXZlQ29udGV4dCA9IElsbGF0aXZlQ29udGV4dC5mcm9tTm90aGluZyhjb250ZXh0KTtcblxuICBjb250ZXh0ID0gaWxsYXRpdmVDb250ZXh0OyAgLy8vXG5cbiAgcmV0dXJuIGlubmVyRnVuY3Rpb24oY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNsYXJlKGlubmVyRnVuY3Rpb24sIGNvbnRleHQpIHtcbiAgY29uc3QgdGhldGljQ29udGV4dCA9IFRoZXRpY0NvbnRleHQuZnJvbU5vdGhpbmcoY29udGV4dCk7XG5cbiAgY29udGV4dCA9IHRoZXRpY0NvbnRleHQ7ICAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbihjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2NlbmQoaW5uZXJGdW5jdGlvbiwgY29udGV4dCkge1xuICBjb25zdCBuZXN0ZWRDb250ZXh0ID0gTmVzdGVkQ29udGV4dC5mcm9tTm90aGluZyhjb250ZXh0KTtcblxuICBjb250ZXh0ID0gbmVzdGVkQ29udGV4dDsgIC8vL1xuXG4gIHJldHVybiBpbm5lckZ1bmN0aW9uKGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXR0ZW1wdChpbm5lckZ1bmN0aW9uLCBjb250ZXh0KSB7XG4gIGNvbnN0IGNvbnRleHRFcGhlbWVyYWxDb250ZXh0ID0gKGNvbnRleHQgaW5zdGFuY2VvZiBFcGhlbWVyYWxDb250ZXh0KTtcblxuICBpZiAoY29udGV4dEVwaGVtZXJhbENvbnRleHQpIHtcbiAgICBjb250ZXh0ID0gY29udGV4dC5nZXRDb250ZXh0KCk7XG4gIH1cblxuICBjb25zdCBlcGhlbWVyYWxDb250ZXh0ID0gRXBoZW1lcmFsQ29udGV4dC5mcm9tTm90aGluZyhjb250ZXh0KTtcblxuICBjb250ZXh0ID0gZXBoZW1lcmFsQ29udGV4dDsgIC8vL1xuXG4gIHJldHVybiBpbm5lckZ1bmN0aW9uKGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVjb25jaWxlKGlubmVyRnVuY3Rpb24sIGNvbnRleHQpIHtcbiAgY29uc3QgbGltaW5hbENvbnRleHQgPSBMaW1pbmFsQ29udGV4dC5mcm9tTm90aGluZyhjb250ZXh0KTtcblxuICBjb250ZXh0ID0gbGltaW5hbENvbnRleHQ7ICAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbihjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlKGlubmVyRnVuY3Rpb24sIGNvbnRleHQpIHtcbiAgY29uc3QgbGl0ZXJhbENvbnRleHQgPSBMaXRlcmFsQ29udGV4dC5mcm9tTm90aGluZyhjb250ZXh0KTtcblxuICBjb250ZXh0ID0gbGl0ZXJhbENvbnRleHQ7ICAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbihjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vbWluYWxseShpbm5lckZ1bmN0aW9uKSB7XG4gIGxldCBjb250ZXh0O1xuXG4gIGNvbnN0IG5vbWluYWxDb250ZXh0ID0gTm9taW5hbENvbnRleHQuZnJvbU5vdGhpbmcoKTtcblxuICBjb250ZXh0ID0gbm9taW5hbENvbnRleHQ7IC8vL1xuXG4gIGNvbnN0IGxpdGVyYWxDb250ZXh0ID0gTGl0ZXJhbENvbnRleHQuZnJvbU5vdGhpbmcoY29udGV4dCk7XG5cbiAgY29udGV4dCA9IGxpdGVyYWxDb250ZXh0OyAgLy8vXG5cbiAgcmV0dXJuIGlubmVyRnVuY3Rpb24oY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpc2UoaW5uZXJGdW5jdGlvbiwgY29udGV4dCkge1xuICBjb25zdCBlcGhlbWVyYWxDb250ZXh0ID0gY29udGV4dCwgLy8vXG4gICAgICAgIGVwaGVtZXJhbENvbnRleHRKU09OID0gZXBoZW1lcmFsQ29udGV4dFRvRXBoZW1lcmFsQ29udGV4dEpTT04oZXBoZW1lcmFsQ29udGV4dCksXG4gICAgICAgIGNvbnRleHRKU09OID0gZXBoZW1lcmFsQ29udGV4dEpTT047IC8vL1xuXG4gIGNvbnRleHQgPSBjb250ZXh0SlNPTjsgIC8vL1xuXG4gIHJldHVybiBpbm5lckZ1bmN0aW9uKGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5zZXJpYWxpc2UoaW5uZXJGdW5jdGlvbiwganNvbiwgY29udGV4dCkge1xuICBjb25zdCBlcGhlbWVyYWxDb250ZXh0ID0gZXBoZW1lcmFsQ29udGV4dEZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBlcGhlbWVyYWxDb250ZXh0OyAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbihqc29uLCBjb250ZXh0KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzeW5jUmVzdHJpY3QoaW5uZXJGdW5jdGlvbiwgbWV0YUxldmVsQXNzdW1wdGlvbnMsIGNvbnRleHQpIHtcbiAgaWYgKGNvbnRleHQgPT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnRleHQgPSBtZXRhTGV2ZWxBc3N1bXB0aW9uczsgIC8vL1xuXG4gICAgbWV0YUxldmVsQXNzdW1wdGlvbnMgPSBudWxsO1xuICB9XG5cbiAgY29uc3QgcHJvb2ZDb250ZXh0ID0gUHJvb2ZDb250ZXh0LmZyb21NZXRhTGV2ZWxBc3N1bXB0aW9ucyhtZXRhTGV2ZWxBc3N1bXB0aW9ucywgY29udGV4dCk7XG5cbiAgY29udGV4dCA9IHByb29mQ29udGV4dDsgIC8vL1xuXG4gIHJldHVybiBhd2FpdCBpbm5lckZ1bmN0aW9uKGNvbnRleHQpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXN5bmNSZWNvbmNpbGUoaW5uZXJGdW5jdGlvbiwgY29udGV4dCkge1xuICBjb25zdCBsaW1pbmFsQ29udGV4dCA9IExpbWluYWxDb250ZXh0LmZyb21Ob3RoaW5nKGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBsaW1pbmFsQ29udGV4dDsgIC8vL1xuXG4gIHJldHVybiBhd2FpdCBpbm5lckZ1bmN0aW9uKGNvbnRleHQpO1xufVxuIl0sIm5hbWVzIjpbImFzeW5jUmVjb25jaWxlIiwiYXN5bmNSZXN0cmljdCIsImF0dGVtcHQiLCJjaG9vc2UiLCJkZWNsYXJlIiwiZGVyaXZlIiwiZGVzY2VuZCIsImluc3RhbnRpYXRlIiwiam9pbiIsIm5vbWluYWxseSIsInJlY29uY2lsZSIsInNlcmlhbGlzZSIsInVuc2VyaWFsaXNlIiwiaW5uZXJGdW5jdGlvbiIsImNvbnRleHRzIiwic3ludGhldGljQ29udGV4dCIsIlN5bnRoZXRpY0NvbnRleHQiLCJmcm9tQ29udGV4dHMiLCJjb250ZXh0IiwiYnJhbmNoaW5nQ29udGV4dCIsIkJyYW5jaGluZ0NvbnRleHQiLCJmcm9tTm90aGluZyIsImlsbGF0aXZlQ29udGV4dCIsIklsbGF0aXZlQ29udGV4dCIsInRoZXRpY0NvbnRleHQiLCJUaGV0aWNDb250ZXh0IiwibmVzdGVkQ29udGV4dCIsIk5lc3RlZENvbnRleHQiLCJjb250ZXh0RXBoZW1lcmFsQ29udGV4dCIsIkVwaGVtZXJhbENvbnRleHQiLCJnZXRDb250ZXh0IiwiZXBoZW1lcmFsQ29udGV4dCIsImxpbWluYWxDb250ZXh0IiwiTGltaW5hbENvbnRleHQiLCJsaXRlcmFsQ29udGV4dCIsIkxpdGVyYWxDb250ZXh0Iiwibm9taW5hbENvbnRleHQiLCJOb21pbmFsQ29udGV4dCIsImVwaGVtZXJhbENvbnRleHRKU09OIiwiZXBoZW1lcmFsQ29udGV4dFRvRXBoZW1lcmFsQ29udGV4dEpTT04iLCJjb250ZXh0SlNPTiIsImpzb24iLCJlcGhlbWVyYWxDb250ZXh0RnJvbUpTT04iLCJtZXRhTGV2ZWxBc3N1bXB0aW9ucyIsInVuZGVmaW5lZCIsInByb29mQ29udGV4dCIsIlByb29mQ29udGV4dCIsImZyb21NZXRhTGV2ZWxBc3N1bXB0aW9ucyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBa0lzQkE7ZUFBQUE7O1FBZEFDO2VBQUFBOztRQTlETkM7ZUFBQUE7O1FBaENBQztlQUFBQTs7UUFnQkFDO2VBQUFBOztRQVJBQztlQUFBQTs7UUFnQkFDO2VBQUFBOztRQThCQUM7ZUFBQUE7O1FBN0RBQztlQUFBQTs7UUFxRUFDO2VBQUFBOztRQWhCQUM7ZUFBQUE7O1FBOEJBQztlQUFBQTs7UUFVQUM7ZUFBQUE7Ozs4REExR1M7K0RBQ0M7K0RBQ0E7Z0VBQ0M7Z0VBQ0E7Z0VBQ0E7aUVBQ0M7a0VBQ0M7a0VBQ0E7a0VBQ0E7c0JBRW9EOzs7Ozs7QUFFMUUsU0FBU0osS0FBS0ssYUFBYSxFQUFFLEdBQUdDLFFBQVE7SUFDN0MsTUFBTUMsbUJBQW1CQyxrQkFBZ0IsQ0FBQ0MsWUFBWSxJQUFJSCxXQUNwREksVUFBVUgsa0JBQW1CLEdBQUc7SUFFdEMsT0FBT0YsY0FBY0s7QUFDdkI7QUFFTyxTQUFTZixPQUFPVSxhQUFhLEVBQUVLLE9BQU87SUFDM0MsTUFBTUMsbUJBQW1CQyxrQkFBZ0IsQ0FBQ0MsV0FBVyxDQUFDSDtJQUV0REEsVUFBVUMsa0JBQW1CLEdBQUc7SUFFaEMsT0FBT04sY0FBY0s7QUFDdkI7QUFFTyxTQUFTYixPQUFPUSxhQUFhLEVBQUVLLE9BQU87SUFDM0MsTUFBTUksa0JBQWtCQyxpQkFBZSxDQUFDRixXQUFXLENBQUNIO0lBRXBEQSxVQUFVSSxpQkFBa0IsR0FBRztJQUUvQixPQUFPVCxjQUFjSztBQUN2QjtBQUVPLFNBQVNkLFFBQVFTLGFBQWEsRUFBRUssT0FBTztJQUM1QyxNQUFNTSxnQkFBZ0JDLGVBQWEsQ0FBQ0osV0FBVyxDQUFDSDtJQUVoREEsVUFBVU0sZUFBZ0IsR0FBRztJQUU3QixPQUFPWCxjQUFjSztBQUN2QjtBQUVPLFNBQVNaLFFBQVFPLGFBQWEsRUFBRUssT0FBTztJQUM1QyxNQUFNUSxnQkFBZ0JDLGVBQWEsQ0FBQ04sV0FBVyxDQUFDSDtJQUVoREEsVUFBVVEsZUFBZ0IsR0FBRztJQUU3QixPQUFPYixjQUFjSztBQUN2QjtBQUVPLFNBQVNoQixRQUFRVyxhQUFhLEVBQUVLLE9BQU87SUFDNUMsTUFBTVUsMEJBQTJCVixtQkFBbUJXLGtCQUFnQjtJQUVwRSxJQUFJRCx5QkFBeUI7UUFDM0JWLFVBQVVBLFFBQVFZLFVBQVU7SUFDOUI7SUFFQSxNQUFNQyxtQkFBbUJGLGtCQUFnQixDQUFDUixXQUFXLENBQUNIO0lBRXREQSxVQUFVYSxrQkFBbUIsR0FBRztJQUVoQyxPQUFPbEIsY0FBY0s7QUFDdkI7QUFFTyxTQUFTUixVQUFVRyxhQUFhLEVBQUVLLE9BQU87SUFDOUMsTUFBTWMsaUJBQWlCQyxnQkFBYyxDQUFDWixXQUFXLENBQUNIO0lBRWxEQSxVQUFVYyxnQkFBaUIsR0FBRztJQUU5QixPQUFPbkIsY0FBY0s7QUFDdkI7QUFFTyxTQUFTWCxZQUFZTSxhQUFhLEVBQUVLLE9BQU87SUFDaEQsTUFBTWdCLGlCQUFpQkMsZ0JBQWMsQ0FBQ2QsV0FBVyxDQUFDSDtJQUVsREEsVUFBVWdCLGdCQUFpQixHQUFHO0lBRTlCLE9BQU9yQixjQUFjSztBQUN2QjtBQUVPLFNBQVNULFVBQVVJLGFBQWE7SUFDckMsSUFBSUs7SUFFSixNQUFNa0IsaUJBQWlCQyxnQkFBYyxDQUFDaEIsV0FBVztJQUVqREgsVUFBVWtCLGdCQUFnQixHQUFHO0lBRTdCLE1BQU1GLGlCQUFpQkMsZ0JBQWMsQ0FBQ2QsV0FBVyxDQUFDSDtJQUVsREEsVUFBVWdCLGdCQUFpQixHQUFHO0lBRTlCLE9BQU9yQixjQUFjSztBQUN2QjtBQUVPLFNBQVNQLFVBQVVFLGFBQWEsRUFBRUssT0FBTztJQUM5QyxNQUFNYSxtQkFBbUJiLFNBQ25Cb0IsdUJBQXVCQyxJQUFBQSw0Q0FBc0MsRUFBQ1IsbUJBQzlEUyxjQUFjRixzQkFBc0IsR0FBRztJQUU3Q3BCLFVBQVVzQixhQUFjLEdBQUc7SUFFM0IsT0FBTzNCLGNBQWNLO0FBQ3ZCO0FBRU8sU0FBU04sWUFBWUMsYUFBYSxFQUFFNEIsSUFBSSxFQUFFdkIsT0FBTztJQUN0RCxNQUFNYSxtQkFBbUJXLElBQUFBLDhCQUF3QixFQUFDRCxNQUFNdkI7SUFFeERBLFVBQVVhLGtCQUFrQixHQUFHO0lBRS9CLE9BQU9sQixjQUFjNEIsTUFBTXZCO0FBQzdCO0FBRU8sZUFBZWpCLGNBQWNZLGFBQWEsRUFBRThCLG9CQUFvQixFQUFFekIsT0FBTztJQUM5RSxJQUFJQSxZQUFZMEIsV0FBVztRQUN6QjFCLFVBQVV5QixzQkFBdUIsR0FBRztRQUVwQ0EsdUJBQXVCO0lBQ3pCO0lBRUEsTUFBTUUsZUFBZUMsY0FBWSxDQUFDQyx3QkFBd0IsQ0FBQ0osc0JBQXNCekI7SUFFakZBLFVBQVUyQixjQUFlLEdBQUc7SUFFNUIsT0FBTyxNQUFNaEMsY0FBY0s7QUFDN0I7QUFFTyxlQUFlbEIsZUFBZWEsYUFBYSxFQUFFSyxPQUFPO0lBQ3pELE1BQU1jLGlCQUFpQkMsZ0JBQWMsQ0FBQ1osV0FBVyxDQUFDSDtJQUVsREEsVUFBVWMsZ0JBQWlCLEdBQUc7SUFFOUIsT0FBTyxNQUFNbkIsY0FBY0s7QUFDN0IifQ==