occam-verify-cli 1.0.427 → 1.0.436

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 (125) hide show
  1. package/lib/context/file.js +1 -1
  2. package/lib/element/assertion.js +115 -24
  3. package/lib/element/assumption.js +120 -20
  4. package/lib/element/axiomLemmaTheoremConjecture.js +118 -30
  5. package/lib/element/conclusion.js +113 -25
  6. package/lib/element/declaration.js +112 -37
  7. package/lib/element/deduction.js +112 -66
  8. package/lib/element/derivation.js +114 -5
  9. package/lib/element/equality.js +119 -26
  10. package/lib/element/equivalence.js +129 -40
  11. package/lib/element/equivalences.js +122 -7
  12. package/lib/element/error.js +115 -32
  13. package/lib/element/frame.js +119 -59
  14. package/lib/element/hypothesis.js +115 -27
  15. package/lib/element/judgement.js +120 -33
  16. package/lib/element/label.js +116 -63
  17. package/lib/element/lemma.js +1 -9
  18. package/lib/element/metaLemma.js +1 -8
  19. package/lib/element/metaLemmaMetatheorem.js +117 -29
  20. package/lib/element/metaType.js +68 -61
  21. package/lib/element/metatheorem.js +1 -8
  22. package/lib/element/metavariable.js +122 -93
  23. package/lib/element/parameter.js +120 -20
  24. package/lib/element/premise.js +114 -35
  25. package/lib/element/procedureCall.js +117 -99
  26. package/lib/element/procedureReference.js +120 -20
  27. package/lib/element/proof.js +111 -55
  28. package/lib/element/property.js +121 -35
  29. package/lib/element/propertyRelation.js +116 -72
  30. package/lib/element/reference.js +120 -70
  31. package/lib/element/rule.js +116 -41
  32. package/lib/element/section.js +114 -133
  33. package/lib/element/signature.js +120 -20
  34. package/lib/element/statement/combinator/bracketed.js +4 -9
  35. package/lib/element/statement.js +110 -125
  36. package/lib/element/step.js +115 -27
  37. package/lib/element/subDerivation.js +111 -43
  38. package/lib/element/subproof.js +115 -20
  39. package/lib/element/substitution.js +115 -31
  40. package/lib/element/substitutions.js +120 -6
  41. package/lib/element/supposition.js +114 -35
  42. package/lib/element/term/constructor/bracketed.js +4 -8
  43. package/lib/element/term.js +111 -98
  44. package/lib/element/theorem.js +1 -8
  45. package/lib/element/type.js +71 -91
  46. package/lib/element/typePrefix.js +120 -20
  47. package/lib/element/variable.js +116 -111
  48. package/lib/element.js +67 -0
  49. package/lib/node/equivalence.js +116 -0
  50. package/lib/node/{nonsense.js → equivalences.js} +10 -10
  51. package/lib/node/frame.js +11 -5
  52. package/lib/node/procedureReference.js +6 -6
  53. package/lib/node/statement.js +11 -5
  54. package/lib/node/term.js +8 -1
  55. package/lib/nonTerminalNodeMap.js +5 -4
  56. package/lib/process/instantiate.js +13 -38
  57. package/lib/process/verify.js +22 -29
  58. package/lib/ruleNames.js +9 -5
  59. package/lib/utilities/brackets.js +11 -11
  60. package/lib/utilities/element.js +606 -99
  61. package/lib/utilities/instance.js +61 -0
  62. package/lib/utilities/string.js +87 -34
  63. package/package.json +6 -6
  64. package/src/context/file.js +1 -1
  65. package/src/element/assertion.js +4 -16
  66. package/src/element/assumption.js +5 -12
  67. package/src/element/axiomLemmaTheoremConjecture.js +4 -16
  68. package/src/element/conclusion.js +4 -16
  69. package/src/element/declaration.js +4 -16
  70. package/src/element/deduction.js +5 -19
  71. package/src/element/derivation.js +5 -2
  72. package/src/element/equality.js +4 -16
  73. package/src/element/equivalence.js +25 -37
  74. package/src/element/equivalences.js +12 -6
  75. package/src/element/error.js +4 -24
  76. package/src/element/frame.js +5 -56
  77. package/src/element/hypothesis.js +6 -23
  78. package/src/element/judgement.js +5 -30
  79. package/src/element/label.js +8 -19
  80. package/src/element/lemma.js +0 -7
  81. package/src/element/metaLemma.js +0 -7
  82. package/src/element/metaLemmaMetatheorem.js +4 -16
  83. package/src/element/metaType.js +23 -64
  84. package/src/element/metatheorem.js +0 -7
  85. package/src/element/metavariable.js +6 -94
  86. package/src/element/parameter.js +10 -18
  87. package/src/element/premise.js +4 -31
  88. package/src/element/procedureCall.js +5 -77
  89. package/src/element/procedureReference.js +7 -17
  90. package/src/element/proof.js +5 -17
  91. package/src/element/property.js +8 -30
  92. package/src/element/propertyRelation.js +5 -33
  93. package/src/element/reference.js +8 -72
  94. package/src/element/rule.js +4 -41
  95. package/src/element/section.js +4 -129
  96. package/src/element/signature.js +7 -13
  97. package/src/element/statement/combinator/bracketed.js +3 -9
  98. package/src/element/statement.js +3 -126
  99. package/src/element/step.js +4 -16
  100. package/src/element/subDerivation.js +5 -3
  101. package/src/element/subproof.js +5 -12
  102. package/src/element/substitution.js +4 -24
  103. package/src/element/substitutions.js +6 -2
  104. package/src/element/supposition.js +4 -31
  105. package/src/element/term/constructor/bracketed.js +4 -9
  106. package/src/element/term.js +6 -59
  107. package/src/element/theorem.js +0 -7
  108. package/src/element/type.js +9 -104
  109. package/src/element/typePrefix.js +8 -13
  110. package/src/element/variable.js +6 -109
  111. package/src/element.js +29 -0
  112. package/src/node/equivalence.js +16 -0
  113. package/src/node/{nonsense.js → equivalences.js} +2 -2
  114. package/src/node/frame.js +10 -5
  115. package/src/node/procedureReference.js +4 -4
  116. package/src/node/statement.js +10 -5
  117. package/src/node/term.js +7 -0
  118. package/src/nonTerminalNodeMap.js +7 -4
  119. package/src/process/instantiate.js +8 -36
  120. package/src/process/verify.js +42 -47
  121. package/src/ruleNames.js +2 -1
  122. package/src/utilities/brackets.js +13 -13
  123. package/src/utilities/element.js +760 -139
  124. package/src/utilities/instance.js +53 -0
  125. package/src/utilities/string.js +118 -59
@@ -22,9 +22,9 @@ _export(exports, {
22
22
  return verifyTerm;
23
23
  }
24
24
  });
25
- var _elements = /*#__PURE__*/ _interop_require_default(require("../elements"));
26
25
  var _query = require("../utilities/query");
27
26
  var _pass = require("../utilities/pass");
27
+ var _element = require("../utilities/element");
28
28
  function _array_like_to_array(arr, len) {
29
29
  if (len == null || len > arr.length) len = arr.length;
30
30
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
@@ -94,11 +94,6 @@ function _inherits(subClass, superClass) {
94
94
  });
95
95
  if (superClass) _set_prototype_of(subClass, superClass);
96
96
  }
97
- function _interop_require_default(obj) {
98
- return obj && obj.__esModule ? obj : {
99
- default: obj
100
- };
101
- }
102
97
  function _iterable_to_array(iter) {
103
98
  if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
104
99
  }
@@ -141,9 +136,7 @@ function _is_native_reflect_construct() {
141
136
  return !!result;
142
137
  })();
143
138
  }
144
- var nonTerminalNodeQuery = (0, _query.nodeQuery)("/*");
145
- var termNodeQuery = (0, _query.nodeQuery)("/term"), typeNodeQuery = (0, _query.nodeQuery)("/type"), statementNodeQuery = (0, _query.nodeQuery)("/statement");
146
- var errorNodeQuery = (0, _query.nodeQuery)("/error"), ruleNodeQuery = (0, _query.nodeQuery)("/rule"), axiomNodeQuery = (0, _query.nodeQuery)("/axiom"), lemmaNodeQuery = (0, _query.nodeQuery)("/lemma"), sectionNodeQuery = (0, _query.nodeQuery)("/section"), theoremNodeQuery = (0, _query.nodeQuery)("/theorem"), metaLemmaNodeQuery = (0, _query.nodeQuery)("/metaLemma"), conjectureNodeQuery = (0, _query.nodeQuery)("/conjecture"), metatheoremNodeQuery = (0, _query.nodeQuery)("/metatheorem"), variableDeclarationNodeQuery = (0, _query.nodeQuery)("/variableDeclaration"), combinatorDeclarationNodeQuery = (0, _query.nodeQuery)("/combinatorDeclaration"), simpleTypeDeclarationNodeQuery = (0, _query.nodeQuery)("/simpleTypeDeclaration"), typePrefixDeclarationNodeQuery = (0, _query.nodeQuery)("/typePrefixDeclaration"), constructorDeclarationNodeQuery = (0, _query.nodeQuery)("/constructorDeclaration"), complexTypeDeclarationNodeQuery = (0, _query.nodeQuery)("/complexTypeDeclaration"), metavariableDeclarationNodeQuery = (0, _query.nodeQuery)("/metavariableDeclaration");
139
+ var nonTerminalNodeQuery = (0, _query.nodeQuery)("/*"), termNodeQuery = (0, _query.nodeQuery)("/term"), typeNodeQuery = (0, _query.nodeQuery)("/type"), ruleNodeQuery = (0, _query.nodeQuery)("/rule"), errorNodeQuery = (0, _query.nodeQuery)("/error"), axiomNodeQuery = (0, _query.nodeQuery)("/axiom"), lemmaNodeQuery = (0, _query.nodeQuery)("/lemma"), sectionNodeQuery = (0, _query.nodeQuery)("/section"), theoremNodeQuery = (0, _query.nodeQuery)("/theorem"), statementNodeQuery = (0, _query.nodeQuery)("/statement"), metaLemmaNodeQuery = (0, _query.nodeQuery)("/metaLemma"), conjectureNodeQuery = (0, _query.nodeQuery)("/conjecture"), metatheoremNodeQuery = (0, _query.nodeQuery)("/metatheorem"), variableDeclarationNodeQuery = (0, _query.nodeQuery)("/variableDeclaration"), combinatorDeclarationNodeQuery = (0, _query.nodeQuery)("/combinatorDeclaration"), simpleTypeDeclarationNodeQuery = (0, _query.nodeQuery)("/simpleTypeDeclaration"), typePrefixDeclarationNodeQuery = (0, _query.nodeQuery)("/typePrefixDeclaration"), constructorDeclarationNodeQuery = (0, _query.nodeQuery)("/constructorDeclaration"), complexTypeDeclarationNodeQuery = (0, _query.nodeQuery)("/complexTypeDeclaration"), metavariableDeclarationNodeQuery = (0, _query.nodeQuery)("/metavariableDeclaration");
147
140
  var Pass = /*#__PURE__*/ function() {
148
141
  function Pass() {
149
142
  _class_call_check(this, Pass);
@@ -324,7 +317,7 @@ _define_property(TopLevelPass, "maps", [
324
317
  nodeQuery: errorNodeQuery,
325
318
  run: function(errorNode, context) {
326
319
  var success = false;
327
- var Error = _elements.default.Error, error = Error.fromErrorNode(errorNode, context), errorVerifies = error.verify();
320
+ var error = (0, _element.errorFromErrorNode)(errorNode, context), errorVerifies = error.verify();
328
321
  if (errorVerifies) {
329
322
  success = true;
330
323
  }
@@ -335,7 +328,7 @@ _define_property(TopLevelPass, "maps", [
335
328
  nodeQuery: ruleNodeQuery,
336
329
  run: function(ruleNode, context) {
337
330
  var success = false;
338
- var Rule = _elements.default.Rule, rule = Rule.fromRuleNode(ruleNode, context), ruleVerifies = rule.verify();
331
+ var rule = (0, _element.ruleFromRuleNode)(ruleNode, context), ruleVerifies = rule.verify();
339
332
  if (ruleVerifies) {
340
333
  success = true;
341
334
  }
@@ -346,7 +339,7 @@ _define_property(TopLevelPass, "maps", [
346
339
  nodeQuery: axiomNodeQuery,
347
340
  run: function(axiomNode, context) {
348
341
  var success = false;
349
- var Axiom = _elements.default.Axiom, axiom = Axiom.fromAxiomNode(axiomNode, context), axiomVerifies = axiom.verify();
342
+ var axiom = (0, _element.axiomFromAxiomNode)(axiomNode, context), axiomVerifies = axiom.verify();
350
343
  if (axiomVerifies) {
351
344
  success = true;
352
345
  }
@@ -357,7 +350,7 @@ _define_property(TopLevelPass, "maps", [
357
350
  nodeQuery: lemmaNodeQuery,
358
351
  run: function(lemmaNode, context) {
359
352
  var success = false;
360
- var Lemma = _elements.default.Lemma, lemma = Lemma.fromLemmaNode(lemmaNode, context), lemmaVerifies = lemma.verify();
353
+ var lemma = (0, _element.lemmaFromLemmaNode)(lemmaNode, context), lemmaVerifies = lemma.verify();
361
354
  if (lemmaVerifies) {
362
355
  success = true;
363
356
  }
@@ -368,7 +361,7 @@ _define_property(TopLevelPass, "maps", [
368
361
  nodeQuery: sectionNodeQuery,
369
362
  run: function(sectionNode, context) {
370
363
  var success = false;
371
- var Section = _elements.default.Section, section = Section.fromSectionNode(sectionNode, context), sectionVerifies = section.verify();
364
+ var section = (0, _element.sectionFromSectionNode)(sectionNode, context), sectionVerifies = section.verify();
372
365
  if (sectionVerifies) {
373
366
  success = true;
374
367
  }
@@ -379,7 +372,7 @@ _define_property(TopLevelPass, "maps", [
379
372
  nodeQuery: theoremNodeQuery,
380
373
  run: function(theoremNode, context) {
381
374
  var success = false;
382
- var Theorem = _elements.default.Theorem, theorem = Theorem.fromTheoremNode(theoremNode, context), theoremVerifies = theorem.verify();
375
+ var theorem = (0, _element.theoremFromTheoremNode)(theoremNode, context), theoremVerifies = theorem.verify();
383
376
  if (theoremVerifies) {
384
377
  success = true;
385
378
  }
@@ -390,7 +383,7 @@ _define_property(TopLevelPass, "maps", [
390
383
  nodeQuery: metaLemmaNodeQuery,
391
384
  run: function(metaLemmaNode, context) {
392
385
  var success = false;
393
- var MetaLemma = _elements.default.MetaLemma, metaLemma = MetaLemma.fromMetaLemmaNode(metaLemmaNode, context), metaLemmaVerifies = metaLemma.verify();
386
+ var metaLemma = (0, _element.metaLemmaFromMetaLemmaNode)(metaLemmaNode, context), metaLemmaVerifies = metaLemma.verify();
394
387
  if (metaLemmaVerifies) {
395
388
  success = true;
396
389
  }
@@ -401,7 +394,7 @@ _define_property(TopLevelPass, "maps", [
401
394
  nodeQuery: conjectureNodeQuery,
402
395
  run: function(conjectureNode, context) {
403
396
  var success = false;
404
- var Conjecture = _elements.default.Conjecture, conjecture = Conjecture.fromConjectureNode(conjectureNode, context), conjectureVerifies = conjecture.verify();
397
+ var conjecture = (0, _element.conjectureFromConjectureNode)(conjectureNode, context), conjectureVerifies = conjecture.verify();
405
398
  if (conjectureVerifies) {
406
399
  success = true;
407
400
  }
@@ -412,7 +405,7 @@ _define_property(TopLevelPass, "maps", [
412
405
  nodeQuery: metatheoremNodeQuery,
413
406
  run: function(metatheoremNode, context) {
414
407
  var success = false;
415
- var Metatheorem = _elements.default.Metatheorem, metatheorem = Metatheorem.fromMetatheoremNode(metatheoremNode, context), metatheoremVerifies = metatheorem.verify();
408
+ var metatheorem = (0, _element.metatheoremFromMetatheoremNode)(metatheoremNode, context), metatheoremVerifies = metatheorem.verify();
416
409
  if (metatheoremVerifies) {
417
410
  success = true;
418
411
  }
@@ -423,7 +416,7 @@ _define_property(TopLevelPass, "maps", [
423
416
  nodeQuery: variableDeclarationNodeQuery,
424
417
  run: function(variableDeclarationNode, context) {
425
418
  var success = false;
426
- var VariableDeclaration = _elements.default.VariableDeclaration, variableDeclaration = VariableDeclaration.fromVariableDeclarationNode(variableDeclarationNode, context), variableDeclarationVerifies = variableDeclaration.verify();
419
+ var variableDeclaration = (0, _element.variableDeclarationFromVariableDeclarationNode)(variableDeclarationNode, context), variableDeclarationVerifies = variableDeclaration.verify();
427
420
  if (variableDeclarationVerifies) {
428
421
  success = true;
429
422
  }
@@ -434,7 +427,7 @@ _define_property(TopLevelPass, "maps", [
434
427
  nodeQuery: simpleTypeDeclarationNodeQuery,
435
428
  run: function(simpleTypeDeclarationNode, context) {
436
429
  var success = false;
437
- var SimpleTypeDeclaration = _elements.default.SimpleTypeDeclaration, simpleTypeDeclaration = SimpleTypeDeclaration.fromSimpleTypeDeclarationNode(simpleTypeDeclarationNode, context), simpleTypeDeclarationVerifies = simpleTypeDeclaration.verify();
430
+ var simpleTypeDeclaration = (0, _element.simpleTypeDeclarationFromSimpleTypeDeclarationNode)(simpleTypeDeclarationNode, context), simpleTypeDeclarationVerifies = simpleTypeDeclaration.verify();
438
431
  if (simpleTypeDeclarationVerifies) {
439
432
  success = true;
440
433
  }
@@ -445,7 +438,7 @@ _define_property(TopLevelPass, "maps", [
445
438
  nodeQuery: typePrefixDeclarationNodeQuery,
446
439
  run: function(typePrefixDeclarationNode, context) {
447
440
  var success = false;
448
- var TypePrefixDeclaration = _elements.default.TypePrefixDeclaration, typePrefixDeclaration = TypePrefixDeclaration.fromTypePrefixDeclarationNode(typePrefixDeclarationNode, context), typePrefixDeclarationVerifies = typePrefixDeclaration.verify();
441
+ var typePrefixDeclaration = (0, _element.typePrefixDeclarationFromTypePrefixDeclarationNode)(typePrefixDeclarationNode, context), typePrefixDeclarationVerifies = typePrefixDeclaration.verify();
449
442
  if (typePrefixDeclarationVerifies) {
450
443
  success = true;
451
444
  }
@@ -456,7 +449,7 @@ _define_property(TopLevelPass, "maps", [
456
449
  nodeQuery: combinatorDeclarationNodeQuery,
457
450
  run: function(combinatorDeclarationNode, context) {
458
451
  var success = false;
459
- var CombinatorDeclaration = _elements.default.CombinatorDeclaration, combinatorDeclaration = CombinatorDeclaration.fromCombinatorDeclarationNode(combinatorDeclarationNode, context), combinatorDeclarationVerifies = combinatorDeclaration.verify();
452
+ var combinatorDeclaration = (0, _element.combinatorDeclarationFromCombinatorDeclarationNode)(combinatorDeclarationNode, context), combinatorDeclarationVerifies = combinatorDeclaration.verify();
460
453
  if (combinatorDeclarationVerifies) {
461
454
  success = true;
462
455
  }
@@ -467,7 +460,7 @@ _define_property(TopLevelPass, "maps", [
467
460
  nodeQuery: constructorDeclarationNodeQuery,
468
461
  run: function(constructorDeclarationNode, context) {
469
462
  var success = false;
470
- var ConstructorDeclaration = _elements.default.ConstructorDeclaration, constructorDeclaration = ConstructorDeclaration.fromConstructorDeclarationNode(constructorDeclarationNode, context), constructorDeclarationVerifies = constructorDeclaration.verify();
463
+ var constructorDeclaration = (0, _element.constructorDeclarationFromConstructorDeclarationNode)(constructorDeclarationNode, context), constructorDeclarationVerifies = constructorDeclaration.verify();
471
464
  if (constructorDeclarationVerifies) {
472
465
  success = true;
473
466
  }
@@ -478,7 +471,7 @@ _define_property(TopLevelPass, "maps", [
478
471
  nodeQuery: complexTypeDeclarationNodeQuery,
479
472
  run: function(complexTypeDeclarationNode, context) {
480
473
  var success = false;
481
- var ComplexTypeDeclaration = _elements.default.ComplexTypeDeclaration, complexTypeDeclaration = ComplexTypeDeclaration.fromComplexTypeDeclarationNode(complexTypeDeclarationNode, context), complexTypeDeclarationVerifies = complexTypeDeclaration.verify();
474
+ var complexTypeDeclaration = (0, _element.complexTypeDeclarationFromComplexTypeDeclarationNode)(complexTypeDeclarationNode, context), complexTypeDeclarationVerifies = complexTypeDeclaration.verify();
482
475
  if (complexTypeDeclarationVerifies) {
483
476
  success = true;
484
477
  }
@@ -489,7 +482,7 @@ _define_property(TopLevelPass, "maps", [
489
482
  nodeQuery: metavariableDeclarationNodeQuery,
490
483
  run: function(metavariableDeclarationNode, context) {
491
484
  var success = false;
492
- var MetavariableDeclaration = _elements.default.MetavariableDeclaration, metavariableDeclaration = MetavariableDeclaration.fromMetavariableDeclarationNode(metavariableDeclarationNode, context), metavariableDeclarationVerifies = metavariableDeclaration.verify();
485
+ var metavariableDeclaration = (0, _element.metavariableDeclarationFromMetavariableDeclarationNode)(metavariableDeclarationNode, context), metavariableDeclarationVerifies = metavariableDeclaration.verify();
493
486
  if (metavariableDeclarationVerifies) {
494
487
  success = true;
495
488
  }
@@ -523,7 +516,7 @@ _define_property(CombinatorPass, "maps", [
523
516
  nodeQuery: statementNodeQuery,
524
517
  run: function(statementNode, context) {
525
518
  var success = false;
526
- var Statement = _elements.default.Statement, statement = Statement.fromStatementNode(statementNode, context), assignments = null, stated = false, statementVerifies = statement.verify(assignments, stated, context);
519
+ var statement = (0, _element.statementFromStatementNode)(statementNode, context), assignments = null, stated = false, statementVerifies = statement.verify(assignments, stated, context);
527
520
  if (statementVerifies) {
528
521
  success = true;
529
522
  }
@@ -534,7 +527,7 @@ _define_property(CombinatorPass, "maps", [
534
527
  nodeQuery: termNodeQuery,
535
528
  run: function(termNode, context) {
536
529
  var success = false;
537
- var Term = _elements.default.Term, term = Term.fromTermNode(termNode, context), termVerifies = term.verify(context, function() {
530
+ var term = (0, _element.termFromTermNode)(termNode, context), termVerifies = term.verify(context, function() {
538
531
  var verifiesAhead = true;
539
532
  return verifiesAhead;
540
533
  });
@@ -582,7 +575,7 @@ _define_property(ConstructorPass, "maps", [
582
575
  nodeQuery: termNodeQuery,
583
576
  run: function(termNode, context, verifyAhead) {
584
577
  var success = false;
585
- var Term = _elements.default.Term, term = Term.fromTermNode(termNode, context), termVerifies = term.verify(context, verifyAhead);
578
+ var term = (0, _element.termFromTermNode)(termNode, context), termVerifies = term.verify(context, verifyAhead);
586
579
  if (termVerifies) {
587
580
  success = true;
588
581
  }
@@ -634,4 +627,4 @@ function verifyStatement(statementNode, context) {
634
627
  return statementVerifies;
635
628
  }
636
629
 
637
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzL3ZlcmlmeS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBpc0xhc3RSZW1haW5pbmdBcmd1bWVudEZ1bmN0aW9uIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9wYXNzXCI7XG5cbmNvbnN0IG5vblRlcm1pbmFsTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiLypcIik7XG5cbmNvbnN0IHRlcm1Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdGVybVwiKSxcbiAgICAgIHR5cGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdHlwZVwiKSxcbiAgICAgIHN0YXRlbWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnRcIik7XG5cbmNvbnN0IGVycm9yTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2Vycm9yXCIpLFxuICAgICAgcnVsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9ydWxlXCIpLFxuICAgICAgYXhpb21Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvYXhpb21cIiksXG4gICAgICBsZW1tYU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9sZW1tYVwiKSxcbiAgICAgIHNlY3Rpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc2VjdGlvblwiKSxcbiAgICAgIHRoZW9yZW1Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdGhlb3JlbVwiKSxcbiAgICAgIG1ldGFMZW1tYU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9tZXRhTGVtbWFcIiksXG4gICAgICBjb25qZWN0dXJlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2NvbmplY3R1cmVcIiksXG4gICAgICBtZXRhdGhlb3JlbU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9tZXRhdGhlb3JlbVwiKSxcbiAgICAgIHZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdmFyaWFibGVEZWNsYXJhdGlvblwiKSxcbiAgICAgIGNvbWJpbmF0b3JEZWNsYXJhdGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9jb21iaW5hdG9yRGVjbGFyYXRpb25cIiksXG4gICAgICBzaW1wbGVUeXBlRGVjbGFyYXRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc2ltcGxlVHlwZURlY2xhcmF0aW9uXCIpLFxuICAgICAgdHlwZVByZWZpeERlY2xhcmF0aW9uTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3R5cGVQcmVmaXhEZWNsYXJhdGlvblwiKSxcbiAgICAgIGNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvY29uc3RydWN0b3JEZWNsYXJhdGlvblwiKSxcbiAgICAgIGNvbXBsZXhUeXBlRGVjbGFyYXRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvY29tcGxleFR5cGVEZWNsYXJhdGlvblwiKSxcbiAgICAgIG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGF2YXJpYWJsZURlY2xhcmF0aW9uXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQYXNzIHtcbiAgcnVuKG5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGxldCBzdWNjZXNzO1xuXG4gICAgY29uc3QgdmlzaXRlZCA9IHRoaXMudmlzaXROb2RlKG5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICBzdWNjZXNzID0gdmlzaXRlZDsgIC8vL1xuXG4gICAgcmV0dXJuIHN1Y2Nlc3M7XG4gIH1cblxuICBkZXNjZW5kKGNoaWxkTm9kZXMsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGxldCBkZXNjZW5kZWRBaGVhZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgbGFzdFJlbWFpbmluZ0FyZ3VtZW50RnVuY3Rpb24gPSBpc0xhc3RSZW1haW5pbmdBcmd1bWVudEZ1bmN0aW9uKHJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICBpZiAobGFzdFJlbWFpbmluZ0FyZ3VtZW50RnVuY3Rpb24pIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gMDtcblxuICAgICAgZGVzY2VuZGVkQWhlYWQgPSB0aGlzLmRlc2NlbmRBaGVhZChpbmRleCwgY2hpbGROb2RlcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKTsgLy8vXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZpc2l0ZWQgPSBjaGlsZE5vZGVzLmV2ZXJ5KChjaGlsZE5vZGUpID0+IHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IGNoaWxkTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHZpc2l0ZWQgPSB0aGlzLnZpc2l0Tm9kZShub2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgICAgIGlmICh2aXNpdGVkKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAodmlzaXRlZCkge1xuICAgICAgICBkZXNjZW5kZWRBaGVhZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlc2NlbmRlZEFoZWFkO1xuICB9XG5cbiAgZGVzY2VuZEFoZWFkKGluZGV4LCBjaGlsZE5vZGVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBsZXQgZGVzY2VuZGVkQWhlYWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGRlc2NlbmRBaGVhZCA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKSwgLy8vXG4gICAgICAgICAgY2hpbGROb2Rlc0xlbmd0aCA9IGNoaWxkTm9kZXMubGVuZ3RoO1xuXG4gICAgaWYgKGluZGV4ID09PSBjaGlsZE5vZGVzTGVuZ3RoKSB7XG4gICAgICBkZXNjZW5kZWRBaGVhZCA9IGRlc2NlbmRBaGVhZCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjaGlsZE5vZGUgPSBjaGlsZE5vZGVzW2luZGV4XSxcbiAgICAgICAgICAgIG5vZGUgPSBjaGlsZE5vZGUsIC8vL1xuICAgICAgICAgICAgdmlzaXRlZCA9IHRoaXMudmlzaXROb2RlKG5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgKCkgPT4ge1xuICAgICAgICAgICAgICByZW1haW5pbmdBcmd1bWVudHMucHVzaChkZXNjZW5kQWhlYWQpO1xuXG4gICAgICAgICAgICAgIGNvbnN0IGFoZWFkSW5kZXggPSBpbmRleCArIDEsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NlbmRlZEFoZWFkID0gdGhpcy5kZXNjZW5kQWhlYWQoYWhlYWRJbmRleCwgY2hpbGROb2RlcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgICAgICAgICAgICByZXR1cm4gZGVzY2VuZGVkQWhlYWQ7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgaWYgKHZpc2l0ZWQpIHtcbiAgICAgICAgZGVzY2VuZGVkQWhlYWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkZXNjZW5kZWRBaGVhZDtcbiAgfVxuXG4gIHZpc2l0Tm9kZShub2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBsZXQgdmlzaXRlZDtcblxuICAgIGNvbnN0IG5vZGVUZXJtaW5hbE5vZGUgPSBub2RlLmlzVGVybWluYWxOb2RlKCk7XG5cbiAgICBpZiAobm9kZVRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3QgdGVybWluYWxOb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgICB2aXNpdGVkID0gdGhpcy52aXNpdFRlcm1pbmFsTm9kZSh0ZXJtaW5hbE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgICAgdmlzaXRlZCA9IHRoaXMudmlzaXROb25UZXJtaW5hbE5vZGUobm9uVGVybWluYWxOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuICAgIH1cblxuICAgIHJldHVybiB2aXNpdGVkO1xuICB9XG5cbiAgdmlzaXRUZXJtaW5hbE5vZGUodGVybWluYWxOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBsZXQgdmlzaXRlZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgbGFzdFJlbWFpbmluZ0FyZ3VtZW50RnVuY3Rpb24gPSBpc0xhc3RSZW1haW5pbmdBcmd1bWVudEZ1bmN0aW9uKHJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICBpZiAobGFzdFJlbWFpbmluZ0FyZ3VtZW50RnVuY3Rpb24pIHtcbiAgICAgIGNvbnN0IGRlc2NlbmRBaGVhZCA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKSwgLy8vXG4gICAgICAgICAgICBkZXNjZW5kZWRBaGVhZCA9IGRlc2NlbmRBaGVhZCgpO1xuXG4gICAgICBpZiAoZGVzY2VuZGVkQWhlYWQpIHtcbiAgICAgICAgdmlzaXRlZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJlbWFpbmluZ0FyZ3VtZW50cy5wdXNoKGRlc2NlbmRBaGVhZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZpc2l0ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB2aXNpdGVkO1xuICB9XG5cbiAgdmlzaXROb25UZXJtaW5hbE5vZGUobm9uVGVybWluYWxOb2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBsZXQgdmlzaXRlZCA9IGZhbHNlO1xuXG4gICAgbGV0IHsgbWFwcyB9ID0gdGhpcy5jb25zdHJ1Y3RvcjtcblxuICAgIG1hcHMgPSBbIC8vL1xuICAgICAgLi4ubWFwcyxcbiAgICAgIHtcbiAgICAgICAgbm9kZVF1ZXJ5OiBub25UZXJtaW5hbE5vZGVRdWVyeSxcbiAgICAgICAgcnVuOiAobm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSA9PiB7XG4gICAgICAgICAgbGV0IHZpc2l0ZWQgPSBmYWxzZTtcblxuICAgICAgICAgIGNvbnN0IGNoaWxkTm9kZXMgPSBub25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLCAvLy9cbiAgICAgICAgICAgICAgICBkZXNjZW5kZWQgPSB0aGlzLmRlc2NlbmQoY2hpbGROb2RlcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgICAgICAgIGlmIChkZXNjZW5kZWQpIHtcbiAgICAgICAgICAgIHZpc2l0ZWQgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB2aXNpdGVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuXG4gICAgbWFwcy5zb21lKChtYXApID0+IHtcbiAgICAgIGNvbnN0IHsgbm9kZVF1ZXJ5LCBydW4gfSA9IG1hcDtcblxuICAgICAgY29uc3Qgbm9kZSA9IG5vZGVRdWVyeShub25UZXJtaW5hbE5vZGUpO1xuXG4gICAgICBpZiAobm9kZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBzdWNjZXNzID0gcnVuKG5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICAgICAgdmlzaXRlZCA9IHN1Y2Nlc3M7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdmlzaXRlZDtcbiAgfVxufVxuXG5jbGFzcyBUb3BMZXZlbFBhc3MgZXh0ZW5kcyBQYXNzIHtcbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiBlcnJvck5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKGVycm9yTm9kZSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IHsgRXJyb3IgfSA9IGVsZW1lbnRzLFxuICAgICAgICAgICAgICBlcnJvciA9IEVycm9yLmZyb21FcnJvck5vZGUoZXJyb3JOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgZXJyb3JWZXJpZmllcyA9IGVycm9yLnZlcmlmeSgpO1xuXG4gICAgICAgIGlmIChlcnJvclZlcmlmaWVzKSB7XG4gICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogcnVsZU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKHJ1bGVOb2RlLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgeyBSdWxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgICAgICAgcnVsZSA9IFJ1bGUuZnJvbVJ1bGVOb2RlKHJ1bGVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgcnVsZVZlcmlmaWVzID0gcnVsZS52ZXJpZnkoKTtcblxuICAgICAgICBpZiAocnVsZVZlcmlmaWVzKSB7XG4gICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogYXhpb21Ob2RlUXVlcnksXG4gICAgICBydW46IChheGlvbU5vZGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCB7IEF4aW9tIH0gPSBlbGVtZW50cyxcbiAgICAgICAgICAgICAgYXhpb20gPSBBeGlvbS5mcm9tQXhpb21Ob2RlKGF4aW9tTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIGF4aW9tVmVyaWZpZXMgPSBheGlvbS52ZXJpZnkoKTtcblxuICAgICAgICBpZiAoYXhpb21WZXJpZmllcykge1xuICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IGxlbW1hTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAobGVtbWFOb2RlLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgeyBMZW1tYSB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgICAgIGxlbW1hID0gTGVtbWEuZnJvbUxlbW1hTm9kZShsZW1tYU5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBsZW1tYVZlcmlmaWVzID0gbGVtbWEudmVyaWZ5KCk7XG5cbiAgICAgICAgaWYgKGxlbW1hVmVyaWZpZXMpIHtcbiAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiBzZWN0aW9uTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoc2VjdGlvbk5vZGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCB7IFNlY3Rpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICAgICAgICBzZWN0aW9uID0gU2VjdGlvbi5mcm9tU2VjdGlvbk5vZGUoc2VjdGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBzZWN0aW9uVmVyaWZpZXMgPSBzZWN0aW9uLnZlcmlmeSgpO1xuXG4gICAgICAgIGlmIChzZWN0aW9uVmVyaWZpZXMpIHtcbiAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiB0aGVvcmVtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAodGhlb3JlbU5vZGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCB7IFRoZW9yZW0gfSA9IGVsZW1lbnRzLFxuICAgICAgICAgICAgICB0aGVvcmVtID0gVGhlb3JlbS5mcm9tVGhlb3JlbU5vZGUodGhlb3JlbU5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICB0aGVvcmVtVmVyaWZpZXMgPSB0aGVvcmVtLnZlcmlmeSgpO1xuXG4gICAgICAgIGlmICh0aGVvcmVtVmVyaWZpZXMpIHtcbiAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiBtZXRhTGVtbWFOb2RlUXVlcnksXG4gICAgICBydW46IChtZXRhTGVtbWFOb2RlLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgeyBNZXRhTGVtbWEgfSA9IGVsZW1lbnRzLFxuICAgICAgICAgICAgICBtZXRhTGVtbWEgPSBNZXRhTGVtbWEuZnJvbU1ldGFMZW1tYU5vZGUobWV0YUxlbW1hTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIG1ldGFMZW1tYVZlcmlmaWVzID0gbWV0YUxlbW1hLnZlcmlmeSgpO1xuXG4gICAgICAgIGlmIChtZXRhTGVtbWFWZXJpZmllcykge1xuICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IGNvbmplY3R1cmVOb2RlUXVlcnksXG4gICAgICBydW46IChjb25qZWN0dXJlTm9kZSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IHsgQ29uamVjdHVyZSB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgICAgIGNvbmplY3R1cmUgPSBDb25qZWN0dXJlLmZyb21Db25qZWN0dXJlTm9kZShjb25qZWN0dXJlTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIGNvbmplY3R1cmVWZXJpZmllcyA9IGNvbmplY3R1cmUudmVyaWZ5KCk7XG5cbiAgICAgICAgaWYgKGNvbmplY3R1cmVWZXJpZmllcykge1xuICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IG1ldGF0aGVvcmVtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAobWV0YXRoZW9yZW1Ob2RlLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgeyBNZXRhdGhlb3JlbSB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgICAgIG1ldGF0aGVvcmVtID0gTWV0YXRoZW9yZW0uZnJvbU1ldGF0aGVvcmVtTm9kZShtZXRhdGhlb3JlbU5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBtZXRhdGhlb3JlbVZlcmlmaWVzID0gbWV0YXRoZW9yZW0udmVyaWZ5KCk7XG5cbiAgICAgICAgaWYgKG1ldGF0aGVvcmVtVmVyaWZpZXMpIHtcbiAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiB2YXJpYWJsZURlY2xhcmF0aW9uTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAodmFyaWFibGVEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCB7IFZhcmlhYmxlRGVjbGFyYXRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICAgICAgICB2YXJpYWJsZURlY2xhcmF0aW9uID0gVmFyaWFibGVEZWNsYXJhdGlvbi5mcm9tVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUodmFyaWFibGVEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICB2YXJpYWJsZURlY2xhcmF0aW9uVmVyaWZpZXMgPSB2YXJpYWJsZURlY2xhcmF0aW9uLnZlcmlmeSgpO1xuXG4gICAgICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9uVmVyaWZpZXMpIHtcbiAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiBzaW1wbGVUeXBlRGVjbGFyYXRpb25Ob2RlUXVlcnksXG4gICAgICBydW46IChzaW1wbGVUeXBlRGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgeyBTaW1wbGVUeXBlRGVjbGFyYXRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICAgICAgICBzaW1wbGVUeXBlRGVjbGFyYXRpb24gPSBTaW1wbGVUeXBlRGVjbGFyYXRpb24uZnJvbVNpbXBsZVR5cGVEZWNsYXJhdGlvbk5vZGUoc2ltcGxlVHlwZURlY2xhcmF0aW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHNpbXBsZVR5cGVEZWNsYXJhdGlvblZlcmlmaWVzID0gc2ltcGxlVHlwZURlY2xhcmF0aW9uLnZlcmlmeSgpO1xuXG4gICAgICAgIGlmIChzaW1wbGVUeXBlRGVjbGFyYXRpb25WZXJpZmllcykge1xuICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IHR5cGVQcmVmaXhEZWNsYXJhdGlvbk5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKHR5cGVQcmVmaXhEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCB7IFR5cGVQcmVmaXhEZWNsYXJhdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgICAgIHR5cGVQcmVmaXhEZWNsYXJhdGlvbiA9IFR5cGVQcmVmaXhEZWNsYXJhdGlvbi5mcm9tVHlwZVByZWZpeERlY2xhcmF0aW9uTm9kZSh0eXBlUHJlZml4RGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgdHlwZVByZWZpeERlY2xhcmF0aW9uVmVyaWZpZXMgPSB0eXBlUHJlZml4RGVjbGFyYXRpb24udmVyaWZ5KCk7XG5cbiAgICAgICAgaWYgKHR5cGVQcmVmaXhEZWNsYXJhdGlvblZlcmlmaWVzKSB7XG4gICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogY29tYmluYXRvckRlY2xhcmF0aW9uTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoY29tYmluYXRvckRlY2xhcmF0aW9uTm9kZSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IHsgQ29tYmluYXRvckRlY2xhcmF0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgICAgICAgY29tYmluYXRvckRlY2xhcmF0aW9uID0gQ29tYmluYXRvckRlY2xhcmF0aW9uLmZyb21Db21iaW5hdG9yRGVjbGFyYXRpb25Ob2RlKGNvbWJpbmF0b3JEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBjb21iaW5hdG9yRGVjbGFyYXRpb25WZXJpZmllcyA9IGNvbWJpbmF0b3JEZWNsYXJhdGlvbi52ZXJpZnkoKTtcblxuICAgICAgICBpZiAoY29tYmluYXRvckRlY2xhcmF0aW9uVmVyaWZpZXMpIHtcbiAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiBjb25zdHJ1Y3RvckRlY2xhcmF0aW9uTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoY29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCB7IENvbnN0cnVjdG9yRGVjbGFyYXRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICAgICAgICBjb25zdHJ1Y3RvckRlY2xhcmF0aW9uID0gQ29uc3RydWN0b3JEZWNsYXJhdGlvbi5mcm9tQ29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUoY29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBjb25zdHJ1Y3RvckRlY2xhcmF0aW9uVmVyaWZpZXMgPSBjb25zdHJ1Y3RvckRlY2xhcmF0aW9uLnZlcmlmeSgpO1xuXG4gICAgICAgIGlmIChjb25zdHJ1Y3RvckRlY2xhcmF0aW9uVmVyaWZpZXMpIHtcbiAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiBjb21wbGV4VHlwZURlY2xhcmF0aW9uTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoY29tcGxleFR5cGVEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCB7IENvbXBsZXhUeXBlRGVjbGFyYXRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICAgICAgICBjb21wbGV4VHlwZURlY2xhcmF0aW9uID0gQ29tcGxleFR5cGVEZWNsYXJhdGlvbi5mcm9tQ29tcGxleFR5cGVEZWNsYXJhdGlvbk5vZGUoY29tcGxleFR5cGVEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBjb21wbGV4VHlwZURlY2xhcmF0aW9uVmVyaWZpZXMgPSBjb21wbGV4VHlwZURlY2xhcmF0aW9uLnZlcmlmeSgpO1xuXG4gICAgICAgIGlmIChjb21wbGV4VHlwZURlY2xhcmF0aW9uVmVyaWZpZXMpIHtcbiAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiBtZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IHsgTWV0YXZhcmlhYmxlRGVjbGFyYXRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICAgICAgICBtZXRhdmFyaWFibGVEZWNsYXJhdGlvbiA9IE1ldGF2YXJpYWJsZURlY2xhcmF0aW9uLmZyb21NZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGUobWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbWV0YXZhcmlhYmxlRGVjbGFyYXRpb25WZXJpZmllcyA9IG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uLnZlcmlmeSgpO1xuXG4gICAgICAgIGlmIChtZXRhdmFyaWFibGVEZWNsYXJhdGlvblZlcmlmaWVzKSB7XG4gICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNsYXNzIENvbWJpbmF0b3JQYXNzIGV4dGVuZHMgUGFzcyB7XG4gIHJ1bihzdGF0ZW1lbnROb2RlLCBjb250ZXh0KSB7XG4gICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSwgLy8vXG4gICAgICAgICAgZGVzY2VuZGVkID0gdGhpcy5kZXNjZW5kKGNoaWxkTm9kZXMsY29udGV4dCk7XG5cbiAgICBpZiAoZGVzY2VuZGVkKSB7XG4gICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VjY2VzcztcbiAgfVxuXG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogc3RhdGVtZW50Tm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoc3RhdGVtZW50Tm9kZSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IHsgU3RhdGVtZW50IH0gPSBlbGVtZW50cyxcbiAgICAgICAgICAgICAgc3RhdGVtZW50ID0gU3RhdGVtZW50LmZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBhc3NpZ25tZW50cyA9IG51bGwsXG4gICAgICAgICAgICAgIHN0YXRlZCA9IGZhbHNlLFxuICAgICAgICAgICAgICBzdGF0ZW1lbnRWZXJpZmllcyA9IHN0YXRlbWVudC52ZXJpZnkoYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCk7XG5cbiAgICAgICAgaWYgKHN0YXRlbWVudFZlcmlmaWVzKSB7XG4gICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogdGVybU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKHRlcm1Ob2RlLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgeyBUZXJtIH0gPSBlbGVtZW50cyxcbiAgICAgICAgICAgICAgdGVybSA9IFRlcm0uZnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgdGVybVZlcmlmaWVzID0gdGVybS52ZXJpZnkoY29udGV4dCwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZlcmlmaWVzQWhlYWQgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZlcmlmaWVzQWhlYWQ7XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0ZXJtVmVyaWZpZXMpIHtcbiAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiB0eXBlTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAodHlwZU5vZGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCBub21pbmFsVHlwZU5hbWUgPSB0eXBlTm9kZS5nZXROb21pbmFsVHlwZU5hbWUoKSxcbiAgICAgICAgICAgICAgdHlwZVByZXNlbnQgPSBjb250ZXh0LmlzVHlwZVByZXNlbnRCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgICAgIGlmICh0eXBlUHJlc2VudCkge1xuICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jbGFzcyBDb25zdHJ1Y3RvclBhc3MgZXh0ZW5kcyBQYXNzIHtcbiAgcnVuKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpIHtcbiAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgIGNoaWxkTm9kZXMgPSBub25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLCAvLy9cbiAgICAgICAgICBkZXNjZW5kZWQgPSB0aGlzLmRlc2NlbmQoY2hpbGROb2Rlcyxjb250ZXh0KTtcblxuICAgIGlmIChkZXNjZW5kZWQpIHtcbiAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBzdWNjZXNzO1xuICB9XG5cbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAodGVybU5vZGUsIGNvbnRleHQsIHZlcmlmeUFoZWFkKSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgeyBUZXJtIH0gPSBlbGVtZW50cyxcbiAgICAgICAgICAgICAgdGVybSA9IFRlcm0uZnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgdGVybVZlcmlmaWVzID0gdGVybS52ZXJpZnkoY29udGV4dCwgdmVyaWZ5QWhlYWQpO1xuXG4gICAgICAgIGlmICh0ZXJtVmVyaWZpZXMpIHtcbiAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiB0eXBlTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAodHlwZU5vZGUsIGNvbnRleHQsIHZlcmlmeUFoZWFkKSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3Qgbm9taW5hbFR5cGVOYW1lID0gdHlwZU5vZGUuZ2V0Tm9taW5hbFR5cGVOYW1lKCksXG4gICAgICAgICAgICAgIHR5cGVQcmVzZW50ID0gY29udGV4dC5pc1R5cGVQcmVzZW50QnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcblxuICAgICAgICBpZiAodHlwZVByZXNlbnQpIHtcbiAgICAgICAgICBjb25zdCB2ZXJpZmllc0FoZWFkID0gdmVyaWZ5QWhlYWQoKTtcblxuICAgICAgICAgIGlmICh2ZXJpZmllc0FoZWFkKSB7XG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgdHlwZVN0cmluZyA9IG5vbWluYWxUeXBlTmFtZTsgLy8vXG5cbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgbm90IHByZXNlbnQuYCk7XG5cbiAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNvbnN0IHRvcExldmVsUGFzcyA9IG5ldyBUb3BMZXZlbFBhc3MoKSxcbiAgICAgIGNvbWJpbmF0b3JQYXNzID0gbmV3IENvbWJpbmF0b3JQYXNzKCksXG4gICAgICBjb25zdHJ1Y3RvclBhc3MgPSBuZXcgQ29uc3RydWN0b3JQYXNzKCk7XG5cbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlGaWxlKGZpbGVOb2RlLCBjb250ZXh0KSB7XG4gIGxldCBmaWxlVmVyaWZpZXMgPSBmYWxzZTtcblxuICBjb25zdCBub2RlID0gZmlsZU5vZGUsIC8vL1xuICAgICAgICBzdWNlc3MgPSB0b3BMZXZlbFBhc3MucnVuKG5vZGUsIGNvbnRleHQpO1xuXG4gIGlmIChzdWNlc3MpIHtcbiAgICBmaWxlVmVyaWZpZXMgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZpbGVWZXJpZmllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVRlcm0odGVybU5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHRlcm1WZXJpZmllcyA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGUgPSB0ZXJtTm9kZSwgLy8vXG4gICAgICAgIHN1Y2VzcyA9IGNvbnN0cnVjdG9yUGFzcy5ydW4obm9kZSwgY29udGV4dCk7XG5cbiAgaWYgKHN1Y2Vzcykge1xuICAgIHRlcm1WZXJpZmllcyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gdGVybVZlcmlmaWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5U3RhdGVtZW50KHN0YXRlbWVudE5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHN0YXRlbWVudFZlcmlmaWVzID0gZmFsc2U7XG5cbiAgY29uc3Qgbm9kZSA9IHN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICBzdWNlc3MgPSBjb21iaW5hdG9yUGFzcy5ydW4obm9kZSwgY29udGV4dCk7XG5cbiAgaWYgKHN1Y2Vzcykge1xuICAgIHN0YXRlbWVudFZlcmlmaWVzID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnRWZXJpZmllcztcbn1cbiJdLCJuYW1lcyI6WyJQYXNzIiwidmVyaWZ5RmlsZSIsInZlcmlmeVN0YXRlbWVudCIsInZlcmlmeVRlcm0iLCJub25UZXJtaW5hbE5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInRlcm1Ob2RlUXVlcnkiLCJ0eXBlTm9kZVF1ZXJ5Iiwic3RhdGVtZW50Tm9kZVF1ZXJ5IiwiZXJyb3JOb2RlUXVlcnkiLCJydWxlTm9kZVF1ZXJ5IiwiYXhpb21Ob2RlUXVlcnkiLCJsZW1tYU5vZGVRdWVyeSIsInNlY3Rpb25Ob2RlUXVlcnkiLCJ0aGVvcmVtTm9kZVF1ZXJ5IiwibWV0YUxlbW1hTm9kZVF1ZXJ5IiwiY29uamVjdHVyZU5vZGVRdWVyeSIsIm1ldGF0aGVvcmVtTm9kZVF1ZXJ5IiwidmFyaWFibGVEZWNsYXJhdGlvbk5vZGVRdWVyeSIsImNvbWJpbmF0b3JEZWNsYXJhdGlvbk5vZGVRdWVyeSIsInNpbXBsZVR5cGVEZWNsYXJhdGlvbk5vZGVRdWVyeSIsInR5cGVQcmVmaXhEZWNsYXJhdGlvbk5vZGVRdWVyeSIsImNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ob2RlUXVlcnkiLCJjb21wbGV4VHlwZURlY2xhcmF0aW9uTm9kZVF1ZXJ5IiwibWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlUXVlcnkiLCJydW4iLCJub2RlIiwicmVtYWluaW5nQXJndW1lbnRzIiwic3VjY2VzcyIsInZpc2l0ZWQiLCJ2aXNpdE5vZGUiLCJkZXNjZW5kIiwiY2hpbGROb2RlcyIsImRlc2NlbmRlZEFoZWFkIiwibGFzdFJlbWFpbmluZ0FyZ3VtZW50RnVuY3Rpb24iLCJpc0xhc3RSZW1haW5pbmdBcmd1bWVudEZ1bmN0aW9uIiwiaW5kZXgiLCJkZXNjZW5kQWhlYWQiLCJldmVyeSIsImNoaWxkTm9kZSIsInBvcCIsImNoaWxkTm9kZXNMZW5ndGgiLCJsZW5ndGgiLCJwdXNoIiwiYWhlYWRJbmRleCIsIm5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZSIsInZpc2l0VGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlIiwidmlzaXROb25UZXJtaW5hbE5vZGUiLCJtYXBzIiwiZ2V0Q2hpbGROb2RlcyIsImRlc2NlbmRlZCIsInNvbWUiLCJtYXAiLCJUb3BMZXZlbFBhc3MiLCJlcnJvck5vZGUiLCJjb250ZXh0IiwiRXJyb3IiLCJlbGVtZW50cyIsImVycm9yIiwiZnJvbUVycm9yTm9kZSIsImVycm9yVmVyaWZpZXMiLCJ2ZXJpZnkiLCJydWxlTm9kZSIsIlJ1bGUiLCJydWxlIiwiZnJvbVJ1bGVOb2RlIiwicnVsZVZlcmlmaWVzIiwiYXhpb21Ob2RlIiwiQXhpb20iLCJheGlvbSIsImZyb21BeGlvbU5vZGUiLCJheGlvbVZlcmlmaWVzIiwibGVtbWFOb2RlIiwiTGVtbWEiLCJsZW1tYSIsImZyb21MZW1tYU5vZGUiLCJsZW1tYVZlcmlmaWVzIiwic2VjdGlvbk5vZGUiLCJTZWN0aW9uIiwic2VjdGlvbiIsImZyb21TZWN0aW9uTm9kZSIsInNlY3Rpb25WZXJpZmllcyIsInRoZW9yZW1Ob2RlIiwiVGhlb3JlbSIsInRoZW9yZW0iLCJmcm9tVGhlb3JlbU5vZGUiLCJ0aGVvcmVtVmVyaWZpZXMiLCJtZXRhTGVtbWFOb2RlIiwiTWV0YUxlbW1hIiwibWV0YUxlbW1hIiwiZnJvbU1ldGFMZW1tYU5vZGUiLCJtZXRhTGVtbWFWZXJpZmllcyIsImNvbmplY3R1cmVOb2RlIiwiQ29uamVjdHVyZSIsImNvbmplY3R1cmUiLCJmcm9tQ29uamVjdHVyZU5vZGUiLCJjb25qZWN0dXJlVmVyaWZpZXMiLCJtZXRhdGhlb3JlbU5vZGUiLCJNZXRhdGhlb3JlbSIsIm1ldGF0aGVvcmVtIiwiZnJvbU1ldGF0aGVvcmVtTm9kZSIsIm1ldGF0aGVvcmVtVmVyaWZpZXMiLCJ2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSIsIlZhcmlhYmxlRGVjbGFyYXRpb24iLCJ2YXJpYWJsZURlY2xhcmF0aW9uIiwiZnJvbVZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlIiwidmFyaWFibGVEZWNsYXJhdGlvblZlcmlmaWVzIiwic2ltcGxlVHlwZURlY2xhcmF0aW9uTm9kZSIsIlNpbXBsZVR5cGVEZWNsYXJhdGlvbiIsInNpbXBsZVR5cGVEZWNsYXJhdGlvbiIsImZyb21TaW1wbGVUeXBlRGVjbGFyYXRpb25Ob2RlIiwic2ltcGxlVHlwZURlY2xhcmF0aW9uVmVyaWZpZXMiLCJ0eXBlUHJlZml4RGVjbGFyYXRpb25Ob2RlIiwiVHlwZVByZWZpeERlY2xhcmF0aW9uIiwidHlwZVByZWZpeERlY2xhcmF0aW9uIiwiZnJvbVR5cGVQcmVmaXhEZWNsYXJhdGlvbk5vZGUiLCJ0eXBlUHJlZml4RGVjbGFyYXRpb25WZXJpZmllcyIsImNvbWJpbmF0b3JEZWNsYXJhdGlvbk5vZGUiLCJDb21iaW5hdG9yRGVjbGFyYXRpb24iLCJjb21iaW5hdG9yRGVjbGFyYXRpb24iLCJmcm9tQ29tYmluYXRvckRlY2xhcmF0aW9uTm9kZSIsImNvbWJpbmF0b3JEZWNsYXJhdGlvblZlcmlmaWVzIiwiY29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUiLCJDb25zdHJ1Y3RvckRlY2xhcmF0aW9uIiwiY29uc3RydWN0b3JEZWNsYXJhdGlvbiIsImZyb21Db25zdHJ1Y3RvckRlY2xhcmF0aW9uTm9kZSIsImNvbnN0cnVjdG9yRGVjbGFyYXRpb25WZXJpZmllcyIsImNvbXBsZXhUeXBlRGVjbGFyYXRpb25Ob2RlIiwiQ29tcGxleFR5cGVEZWNsYXJhdGlvbiIsImNvbXBsZXhUeXBlRGVjbGFyYXRpb24iLCJmcm9tQ29tcGxleFR5cGVEZWNsYXJhdGlvbk5vZGUiLCJjb21wbGV4VHlwZURlY2xhcmF0aW9uVmVyaWZpZXMiLCJtZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGUiLCJNZXRhdmFyaWFibGVEZWNsYXJhdGlvbiIsIm1ldGF2YXJpYWJsZURlY2xhcmF0aW9uIiwiZnJvbU1ldGF2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSIsIm1ldGF2YXJpYWJsZURlY2xhcmF0aW9uVmVyaWZpZXMiLCJDb21iaW5hdG9yUGFzcyIsInN0YXRlbWVudE5vZGUiLCJTdGF0ZW1lbnQiLCJzdGF0ZW1lbnQiLCJmcm9tU3RhdGVtZW50Tm9kZSIsImFzc2lnbm1lbnRzIiwic3RhdGVkIiwic3RhdGVtZW50VmVyaWZpZXMiLCJ0ZXJtTm9kZSIsIlRlcm0iLCJ0ZXJtIiwiZnJvbVRlcm1Ob2RlIiwidGVybVZlcmlmaWVzIiwidmVyaWZpZXNBaGVhZCIsInR5cGVOb2RlIiwibm9taW5hbFR5cGVOYW1lIiwiZ2V0Tm9taW5hbFR5cGVOYW1lIiwidHlwZVByZXNlbnQiLCJpc1R5cGVQcmVzZW50QnlOb21pbmFsVHlwZU5hbWUiLCJDb25zdHJ1Y3RvclBhc3MiLCJ2ZXJpZnlBaGVhZCIsInR5cGVTdHJpbmciLCJkZWJ1ZyIsInRvcExldmVsUGFzcyIsImNvbWJpbmF0b3JQYXNzIiwiY29uc3RydWN0b3JQYXNzIiwiZmlsZU5vZGUiLCJmaWxlVmVyaWZpZXMiLCJzdWNlc3MiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7ZUE4QnFCQTs7UUFnaUJMQztlQUFBQTs7UUEwQkFDO2VBQUFBOztRQWJBQztlQUFBQTs7OytEQXprQks7cUJBRUs7b0JBQ3NCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFaEQsSUFBTUMsdUJBQXVCQyxJQUFBQSxnQkFBUyxFQUFD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
630
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzL3ZlcmlmeS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgaXNMYXN0UmVtYWluaW5nQXJndW1lbnRGdW5jdGlvbiB9IGZyb20gXCIuLi91dGlsaXRpZXMvcGFzc1wiO1xuaW1wb3J0IHsgdGVybUZyb21UZXJtTm9kZSxcbiAgICAgICAgIHJ1bGVGcm9tUnVsZU5vZGUsXG4gICAgICAgICBlcnJvckZyb21FcnJvck5vZGUsXG4gICAgICAgICBheGlvbUZyb21BeGlvbU5vZGUsXG4gICAgICAgICBsZW1tYUZyb21MZW1tYU5vZGUsXG4gICAgICAgICBzZWN0aW9uRnJvbVNlY3Rpb25Ob2RlLFxuICAgICAgICAgdGhlb3JlbUZyb21UaGVvcmVtTm9kZSxcbiAgICAgICAgIG1ldGFMZW1tYUZyb21NZXRhTGVtbWFOb2RlLFxuICAgICAgICAgc3RhdGVtZW50RnJvbVN0YXRlbWVudE5vZGUsXG4gICAgICAgICBjb25qZWN0dXJlRnJvbUNvbmplY3R1cmVOb2RlLFxuICAgICAgICAgbWV0YXRoZW9yZW1Gcm9tTWV0YXRoZW9yZW1Ob2RlLFxuICAgICAgICAgdmFyaWFibGVEZWNsYXJhdGlvbkZyb21WYXJpYWJsZURlY2xhcmF0aW9uTm9kZSxcbiAgICAgICAgIHNpbXBsZVR5cGVEZWNsYXJhdGlvbkZyb21TaW1wbGVUeXBlRGVjbGFyYXRpb25Ob2RlLFxuICAgICAgICAgdHlwZVByZWZpeERlY2xhcmF0aW9uRnJvbVR5cGVQcmVmaXhEZWNsYXJhdGlvbk5vZGUsXG4gICAgICAgICBjb21iaW5hdG9yRGVjbGFyYXRpb25Gcm9tQ29tYmluYXRvckRlY2xhcmF0aW9uTm9kZSxcbiAgICAgICAgIGNvbnN0cnVjdG9yRGVjbGFyYXRpb25Gcm9tQ29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUsXG4gICAgICAgICBjb21wbGV4VHlwZURlY2xhcmF0aW9uRnJvbUNvbXBsZXhUeXBlRGVjbGFyYXRpb25Ob2RlLFxuICAgICAgICAgbWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Gcm9tTWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5cbmNvbnN0IG5vblRlcm1pbmFsTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiLypcIiksXG4gICAgICB0ZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm1cIiksXG4gICAgICB0eXBlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3R5cGVcIiksXG4gICAgICBydWxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3J1bGVcIiksXG4gICAgICBlcnJvck5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9lcnJvclwiKSxcbiAgICAgIGF4aW9tTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2F4aW9tXCIpLFxuICAgICAgbGVtbWFOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvbGVtbWFcIiksXG4gICAgICBzZWN0aW9uTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3NlY3Rpb25cIiksXG4gICAgICB0aGVvcmVtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3RoZW9yZW1cIiksXG4gICAgICBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50XCIpLFxuICAgICAgbWV0YUxlbW1hTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGFMZW1tYVwiKSxcbiAgICAgIGNvbmplY3R1cmVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvY29uamVjdHVyZVwiKSxcbiAgICAgIG1ldGF0aGVvcmVtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGF0aGVvcmVtXCIpLFxuICAgICAgdmFyaWFibGVEZWNsYXJhdGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi92YXJpYWJsZURlY2xhcmF0aW9uXCIpLFxuICAgICAgY29tYmluYXRvckRlY2xhcmF0aW9uTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2NvbWJpbmF0b3JEZWNsYXJhdGlvblwiKSxcbiAgICAgIHNpbXBsZVR5cGVEZWNsYXJhdGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zaW1wbGVUeXBlRGVjbGFyYXRpb25cIiksXG4gICAgICB0eXBlUHJlZml4RGVjbGFyYXRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdHlwZVByZWZpeERlY2xhcmF0aW9uXCIpLFxuICAgICAgY29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9jb25zdHJ1Y3RvckRlY2xhcmF0aW9uXCIpLFxuICAgICAgY29tcGxleFR5cGVEZWNsYXJhdGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9jb21wbGV4VHlwZURlY2xhcmF0aW9uXCIpLFxuICAgICAgbWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvbWV0YXZhcmlhYmxlRGVjbGFyYXRpb25cIik7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhc3Mge1xuICBydW4obm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IHN1Y2Nlc3M7XG5cbiAgICBjb25zdCB2aXNpdGVkID0gdGhpcy52aXNpdE5vZGUobm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgIHN1Y2Nlc3MgPSB2aXNpdGVkOyAgLy8vXG5cbiAgICByZXR1cm4gc3VjY2VzcztcbiAgfVxuXG4gIGRlc2NlbmQoY2hpbGROb2RlcywgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IGRlc2NlbmRlZEFoZWFkID0gZmFsc2U7XG5cbiAgICBjb25zdCBsYXN0UmVtYWluaW5nQXJndW1lbnRGdW5jdGlvbiA9IGlzTGFzdFJlbWFpbmluZ0FyZ3VtZW50RnVuY3Rpb24ocmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgIGlmIChsYXN0UmVtYWluaW5nQXJndW1lbnRGdW5jdGlvbikge1xuICAgICAgY29uc3QgaW5kZXggPSAwO1xuXG4gICAgICBkZXNjZW5kZWRBaGVhZCA9IHRoaXMuZGVzY2VuZEFoZWFkKGluZGV4LCBjaGlsZE5vZGVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpOyAvLy9cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdmlzaXRlZCA9IGNoaWxkTm9kZXMuZXZlcnkoKGNoaWxkTm9kZSkgPT4ge1xuICAgICAgICBjb25zdCBub2RlID0gY2hpbGROb2RlLCAvLy9cbiAgICAgICAgICAgICAgdmlzaXRlZCA9IHRoaXMudmlzaXROb2RlKG5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICAgICAgaWYgKHZpc2l0ZWQpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmICh2aXNpdGVkKSB7XG4gICAgICAgIGRlc2NlbmRlZEFoZWFkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGVzY2VuZGVkQWhlYWQ7XG4gIH1cblxuICBkZXNjZW5kQWhlYWQoaW5kZXgsIGNoaWxkTm9kZXMsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGxldCBkZXNjZW5kZWRBaGVhZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgZGVzY2VuZEFoZWFkID0gcmVtYWluaW5nQXJndW1lbnRzLnBvcCgpLCAvLy9cbiAgICAgICAgICBjaGlsZE5vZGVzTGVuZ3RoID0gY2hpbGROb2Rlcy5sZW5ndGg7XG5cbiAgICBpZiAoaW5kZXggPT09IGNoaWxkTm9kZXNMZW5ndGgpIHtcbiAgICAgIGRlc2NlbmRlZEFoZWFkID0gZGVzY2VuZEFoZWFkKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNoaWxkTm9kZSA9IGNoaWxkTm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgbm9kZSA9IGNoaWxkTm9kZSwgLy8vXG4gICAgICAgICAgICB2aXNpdGVkID0gdGhpcy52aXNpdE5vZGUobm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzLCAoKSA9PiB7XG4gICAgICAgICAgICAgIHJlbWFpbmluZ0FyZ3VtZW50cy5wdXNoKGRlc2NlbmRBaGVhZCk7XG5cbiAgICAgICAgICAgICAgY29uc3QgYWhlYWRJbmRleCA9IGluZGV4ICsgMSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY2VuZGVkQWhlYWQgPSB0aGlzLmRlc2NlbmRBaGVhZChhaGVhZEluZGV4LCBjaGlsZE5vZGVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgICAgICAgICAgIHJldHVybiBkZXNjZW5kZWRBaGVhZDtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICBpZiAodmlzaXRlZCkge1xuICAgICAgICBkZXNjZW5kZWRBaGVhZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlc2NlbmRlZEFoZWFkO1xuICB9XG5cbiAgdmlzaXROb2RlKG5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGxldCB2aXNpdGVkO1xuXG4gICAgY29uc3Qgbm9kZVRlcm1pbmFsTm9kZSA9IG5vZGUuaXNUZXJtaW5hbE5vZGUoKTtcblxuICAgIGlmIChub2RlVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICAgIHZpc2l0ZWQgPSB0aGlzLnZpc2l0VGVybWluYWxOb2RlKHRlcm1pbmFsTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgICB2aXNpdGVkID0gdGhpcy52aXNpdE5vblRlcm1pbmFsTm9kZShub25UZXJtaW5hbE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZpc2l0ZWQ7XG4gIH1cblxuICB2aXNpdFRlcm1pbmFsTm9kZSh0ZXJtaW5hbE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGxldCB2aXNpdGVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBsYXN0UmVtYWluaW5nQXJndW1lbnRGdW5jdGlvbiA9IGlzTGFzdFJlbWFpbmluZ0FyZ3VtZW50RnVuY3Rpb24ocmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgIGlmIChsYXN0UmVtYWluaW5nQXJndW1lbnRGdW5jdGlvbikge1xuICAgICAgY29uc3QgZGVzY2VuZEFoZWFkID0gcmVtYWluaW5nQXJndW1lbnRzLnBvcCgpLCAvLy9cbiAgICAgICAgICAgIGRlc2NlbmRlZEFoZWFkID0gZGVzY2VuZEFoZWFkKCk7XG5cbiAgICAgIGlmIChkZXNjZW5kZWRBaGVhZCkge1xuICAgICAgICB2aXNpdGVkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcmVtYWluaW5nQXJndW1lbnRzLnB1c2goZGVzY2VuZEFoZWFkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmlzaXRlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZpc2l0ZWQ7XG4gIH1cblxuICB2aXNpdE5vblRlcm1pbmFsTm9kZShub25UZXJtaW5hbE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGxldCB2aXNpdGVkID0gZmFsc2U7XG5cbiAgICBsZXQgeyBtYXBzIH0gPSB0aGlzLmNvbnN0cnVjdG9yO1xuXG4gICAgbWFwcyA9IFsgLy8vXG4gICAgICAuLi5tYXBzLFxuICAgICAge1xuICAgICAgICBub2RlUXVlcnk6IG5vblRlcm1pbmFsTm9kZVF1ZXJ5LFxuICAgICAgICBydW46IChub2RlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpID0+IHtcbiAgICAgICAgICBsZXQgdmlzaXRlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgY29uc3QgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksIC8vL1xuICAgICAgICAgICAgICAgIGRlc2NlbmRlZCA9IHRoaXMuZGVzY2VuZChjaGlsZE5vZGVzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgICAgICAgaWYgKGRlc2NlbmRlZCkge1xuICAgICAgICAgICAgdmlzaXRlZCA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHZpc2l0ZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBdXG5cbiAgICBtYXBzLnNvbWUoKG1hcCkgPT4ge1xuICAgICAgY29uc3QgeyBub2RlUXVlcnksIHJ1biB9ID0gbWFwO1xuXG4gICAgICBjb25zdCBub2RlID0gbm9kZVF1ZXJ5KG5vblRlcm1pbmFsTm9kZSk7XG5cbiAgICAgIGlmIChub2RlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBydW4obm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgICAgICB2aXNpdGVkID0gc3VjY2VzcztcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB2aXNpdGVkO1xuICB9XG59XG5cbmNsYXNzIFRvcExldmVsUGFzcyBleHRlbmRzIFBhc3Mge1xuICBzdGF0aWMgbWFwcyA9IFtcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IGVycm9yTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoZXJyb3JOb2RlLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgZXJyb3IgPSBlcnJvckZyb21FcnJvck5vZGUoZXJyb3JOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgZXJyb3JWZXJpZmllcyA9IGVycm9yLnZlcmlmeSgpO1xuXG4gICAgICAgIGlmIChlcnJvclZlcmlmaWVzKSB7XG4gICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogcnVsZU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKHJ1bGVOb2RlLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgcnVsZSA9IHJ1bGVGcm9tUnVsZU5vZGUocnVsZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBydWxlVmVyaWZpZXMgPSBydWxlLnZlcmlmeSgpO1xuXG4gICAgICAgIGlmIChydWxlVmVyaWZpZXMpIHtcbiAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiBheGlvbU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKGF4aW9tTm9kZSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IGF4aW9tID0gYXhpb21Gcm9tQXhpb21Ob2RlKGF4aW9tTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIGF4aW9tVmVyaWZpZXMgPSBheGlvbS52ZXJpZnkoKTtcblxuICAgICAgICBpZiAoYXhpb21WZXJpZmllcykge1xuICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IGxlbW1hTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAobGVtbWFOb2RlLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgbGVtbWEgPSBsZW1tYUZyb21MZW1tYU5vZGUobGVtbWFOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbGVtbWFWZXJpZmllcyA9IGxlbW1hLnZlcmlmeSgpO1xuXG4gICAgICAgIGlmIChsZW1tYVZlcmlmaWVzKSB7XG4gICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogc2VjdGlvbk5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKHNlY3Rpb25Ob2RlLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3Qgc2VjdGlvbiA9IHNlY3Rpb25Gcm9tU2VjdGlvbk5vZGUoc2VjdGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBzZWN0aW9uVmVyaWZpZXMgPSBzZWN0aW9uLnZlcmlmeSgpO1xuXG4gICAgICAgIGlmIChzZWN0aW9uVmVyaWZpZXMpIHtcbiAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiB0aGVvcmVtTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAodGhlb3JlbU5vZGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCB0aGVvcmVtID0gdGhlb3JlbUZyb21UaGVvcmVtTm9kZSh0aGVvcmVtTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHRoZW9yZW1WZXJpZmllcyA9IHRoZW9yZW0udmVyaWZ5KCk7XG5cbiAgICAgICAgaWYgKHRoZW9yZW1WZXJpZmllcykge1xuICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IG1ldGFMZW1tYU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKG1ldGFMZW1tYU5vZGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCBtZXRhTGVtbWEgPSBtZXRhTGVtbWFGcm9tTWV0YUxlbW1hTm9kZShtZXRhTGVtbWFOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbWV0YUxlbW1hVmVyaWZpZXMgPSBtZXRhTGVtbWEudmVyaWZ5KCk7XG5cbiAgICAgICAgaWYgKG1ldGFMZW1tYVZlcmlmaWVzKSB7XG4gICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogY29uamVjdHVyZU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKGNvbmplY3R1cmVOb2RlLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgY29uamVjdHVyZSA9IGNvbmplY3R1cmVGcm9tQ29uamVjdHVyZU5vZGUoY29uamVjdHVyZU5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBjb25qZWN0dXJlVmVyaWZpZXMgPSBjb25qZWN0dXJlLnZlcmlmeSgpO1xuXG4gICAgICAgIGlmIChjb25qZWN0dXJlVmVyaWZpZXMpIHtcbiAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiBtZXRhdGhlb3JlbU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKG1ldGF0aGVvcmVtTm9kZSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IG1ldGF0aGVvcmVtID0gbWV0YXRoZW9yZW1Gcm9tTWV0YXRoZW9yZW1Ob2RlKG1ldGF0aGVvcmVtTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIG1ldGF0aGVvcmVtVmVyaWZpZXMgPSBtZXRhdGhlb3JlbS52ZXJpZnkoKTtcblxuICAgICAgICBpZiAobWV0YXRoZW9yZW1WZXJpZmllcykge1xuICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IHZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlUXVlcnksXG4gICAgICBydW46ICh2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IHZhcmlhYmxlRGVjbGFyYXRpb24gPSB2YXJpYWJsZURlY2xhcmF0aW9uRnJvbVZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlKHZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgdmFyaWFibGVEZWNsYXJhdGlvblZlcmlmaWVzID0gdmFyaWFibGVEZWNsYXJhdGlvbi52ZXJpZnkoKTtcblxuICAgICAgICBpZiAodmFyaWFibGVEZWNsYXJhdGlvblZlcmlmaWVzKSB7XG4gICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogc2ltcGxlVHlwZURlY2xhcmF0aW9uTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoc2ltcGxlVHlwZURlY2xhcmF0aW9uTm9kZSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IHNpbXBsZVR5cGVEZWNsYXJhdGlvbiA9IHNpbXBsZVR5cGVEZWNsYXJhdGlvbkZyb21TaW1wbGVUeXBlRGVjbGFyYXRpb25Ob2RlKHNpbXBsZVR5cGVEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBzaW1wbGVUeXBlRGVjbGFyYXRpb25WZXJpZmllcyA9IHNpbXBsZVR5cGVEZWNsYXJhdGlvbi52ZXJpZnkoKTtcblxuICAgICAgICBpZiAoc2ltcGxlVHlwZURlY2xhcmF0aW9uVmVyaWZpZXMpIHtcbiAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiB0eXBlUHJlZml4RGVjbGFyYXRpb25Ob2RlUXVlcnksXG4gICAgICBydW46ICh0eXBlUHJlZml4RGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgdHlwZVByZWZpeERlY2xhcmF0aW9uID0gdHlwZVByZWZpeERlY2xhcmF0aW9uRnJvbVR5cGVQcmVmaXhEZWNsYXJhdGlvbk5vZGUodHlwZVByZWZpeERlY2xhcmF0aW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHR5cGVQcmVmaXhEZWNsYXJhdGlvblZlcmlmaWVzID0gdHlwZVByZWZpeERlY2xhcmF0aW9uLnZlcmlmeSgpO1xuXG4gICAgICAgIGlmICh0eXBlUHJlZml4RGVjbGFyYXRpb25WZXJpZmllcykge1xuICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IGNvbWJpbmF0b3JEZWNsYXJhdGlvbk5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKGNvbWJpbmF0b3JEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCBjb21iaW5hdG9yRGVjbGFyYXRpb24gPSBjb21iaW5hdG9yRGVjbGFyYXRpb25Gcm9tQ29tYmluYXRvckRlY2xhcmF0aW9uTm9kZShjb21iaW5hdG9yRGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgY29tYmluYXRvckRlY2xhcmF0aW9uVmVyaWZpZXMgPSBjb21iaW5hdG9yRGVjbGFyYXRpb24udmVyaWZ5KCk7XG5cbiAgICAgICAgaWYgKGNvbWJpbmF0b3JEZWNsYXJhdGlvblZlcmlmaWVzKSB7XG4gICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogY29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKGNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgY29uc3RydWN0b3JEZWNsYXJhdGlvbiA9IGNvbnN0cnVjdG9yRGVjbGFyYXRpb25Gcm9tQ29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUoY29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBjb25zdHJ1Y3RvckRlY2xhcmF0aW9uVmVyaWZpZXMgPSBjb25zdHJ1Y3RvckRlY2xhcmF0aW9uLnZlcmlmeSgpO1xuXG4gICAgICAgIGlmIChjb25zdHJ1Y3RvckRlY2xhcmF0aW9uVmVyaWZpZXMpIHtcbiAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdWNjZXNzO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiBjb21wbGV4VHlwZURlY2xhcmF0aW9uTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoY29tcGxleFR5cGVEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCBjb21wbGV4VHlwZURlY2xhcmF0aW9uID0gY29tcGxleFR5cGVEZWNsYXJhdGlvbkZyb21Db21wbGV4VHlwZURlY2xhcmF0aW9uTm9kZShjb21wbGV4VHlwZURlY2xhcmF0aW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIGNvbXBsZXhUeXBlRGVjbGFyYXRpb25WZXJpZmllcyA9IGNvbXBsZXhUeXBlRGVjbGFyYXRpb24udmVyaWZ5KCk7XG5cbiAgICAgICAgaWYgKGNvbXBsZXhUeXBlRGVjbGFyYXRpb25WZXJpZmllcykge1xuICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uTm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAobWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgbWV0YXZhcmlhYmxlRGVjbGFyYXRpb24gPSBtZXRhdmFyaWFibGVEZWNsYXJhdGlvbkZyb21NZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGUobWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbWV0YXZhcmlhYmxlRGVjbGFyYXRpb25WZXJpZmllcyA9IG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uLnZlcmlmeSgpO1xuXG4gICAgICAgIGlmIChtZXRhdmFyaWFibGVEZWNsYXJhdGlvblZlcmlmaWVzKSB7XG4gICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNsYXNzIENvbWJpbmF0b3JQYXNzIGV4dGVuZHMgUGFzcyB7XG4gIHJ1bihzdGF0ZW1lbnROb2RlLCBjb250ZXh0KSB7XG4gICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSwgLy8vXG4gICAgICAgICAgZGVzY2VuZGVkID0gdGhpcy5kZXNjZW5kKGNoaWxkTm9kZXMsY29udGV4dCk7XG5cbiAgICBpZiAoZGVzY2VuZGVkKSB7XG4gICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VjY2VzcztcbiAgfVxuXG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogc3RhdGVtZW50Tm9kZVF1ZXJ5LFxuICAgICAgcnVuOiAoc3RhdGVtZW50Tm9kZSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IHN0YXRlbWVudCA9IHN0YXRlbWVudEZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBhc3NpZ25tZW50cyA9IG51bGwsXG4gICAgICAgICAgICAgIHN0YXRlZCA9IGZhbHNlLFxuICAgICAgICAgICAgICBzdGF0ZW1lbnRWZXJpZmllcyA9IHN0YXRlbWVudC52ZXJpZnkoYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCk7XG5cbiAgICAgICAgaWYgKHN0YXRlbWVudFZlcmlmaWVzKSB7XG4gICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogdGVybU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKHRlcm1Ob2RlLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgdGVybSA9IHRlcm1Gcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICB0ZXJtVmVyaWZpZXMgPSB0ZXJtLnZlcmlmeShjb250ZXh0LCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmVyaWZpZXNBaGVhZCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdmVyaWZpZXNBaGVhZDtcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRlcm1WZXJpZmllcykge1xuICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IHR5cGVOb2RlUXVlcnksXG4gICAgICBydW46ICh0eXBlTm9kZSwgY29udGV4dCkgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IG5vbWluYWxUeXBlTmFtZSA9IHR5cGVOb2RlLmdldE5vbWluYWxUeXBlTmFtZSgpLFxuICAgICAgICAgICAgICB0eXBlUHJlc2VudCA9IGNvbnRleHQuaXNUeXBlUHJlc2VudEJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICAgICAgaWYgKHR5cGVQcmVzZW50KSB7XG4gICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNsYXNzIENvbnN0cnVjdG9yUGFzcyBleHRlbmRzIFBhc3Mge1xuICBydW4oc3RhdGVtZW50Tm9kZSwgY29udGV4dCkge1xuICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksIC8vL1xuICAgICAgICAgIGRlc2NlbmRlZCA9IHRoaXMuZGVzY2VuZChjaGlsZE5vZGVzLGNvbnRleHQpO1xuXG4gICAgaWYgKGRlc2NlbmRlZCkge1xuICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1Y2Nlc3M7XG4gIH1cblxuICBzdGF0aWMgbWFwcyA9IFtcbiAgICB7XG4gICAgICBub2RlUXVlcnk6IHRlcm1Ob2RlUXVlcnksXG4gICAgICBydW46ICh0ZXJtTm9kZSwgY29udGV4dCwgdmVyaWZ5QWhlYWQpID0+IHtcbiAgICAgICAgbGV0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICBjb25zdCB0ZXJtID0gdGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHRlcm1WZXJpZmllcyA9IHRlcm0udmVyaWZ5KGNvbnRleHQsIHZlcmlmeUFoZWFkKTtcblxuICAgICAgICBpZiAodGVybVZlcmlmaWVzKSB7XG4gICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogdHlwZU5vZGVRdWVyeSxcbiAgICAgIHJ1bjogKHR5cGVOb2RlLCBjb250ZXh0LCB2ZXJpZnlBaGVhZCkgPT4ge1xuICAgICAgICBsZXQgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IG5vbWluYWxUeXBlTmFtZSA9IHR5cGVOb2RlLmdldE5vbWluYWxUeXBlTmFtZSgpLFxuICAgICAgICAgICAgICB0eXBlUHJlc2VudCA9IGNvbnRleHQuaXNUeXBlUHJlc2VudEJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICAgICAgaWYgKHR5cGVQcmVzZW50KSB7XG4gICAgICAgICAgY29uc3QgdmVyaWZpZXNBaGVhZCA9IHZlcmlmeUFoZWFkKCk7XG5cbiAgICAgICAgICBpZiAodmVyaWZpZXNBaGVhZCkge1xuICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHR5cGVTdHJpbmcgPSBub21pbmFsVHlwZU5hbWU7IC8vL1xuXG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIG5vdCBwcmVzZW50LmApO1xuXG4gICAgICAgICAgc3VjY2VzcyA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jb25zdCB0b3BMZXZlbFBhc3MgPSBuZXcgVG9wTGV2ZWxQYXNzKCksXG4gICAgICBjb21iaW5hdG9yUGFzcyA9IG5ldyBDb21iaW5hdG9yUGFzcygpLFxuICAgICAgY29uc3RydWN0b3JQYXNzID0gbmV3IENvbnN0cnVjdG9yUGFzcygpO1xuXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5RmlsZShmaWxlTm9kZSwgY29udGV4dCkge1xuICBsZXQgZmlsZVZlcmlmaWVzID0gZmFsc2U7XG5cbiAgY29uc3Qgbm9kZSA9IGZpbGVOb2RlLCAvLy9cbiAgICAgICAgc3VjZXNzID0gdG9wTGV2ZWxQYXNzLnJ1bihub2RlLCBjb250ZXh0KTtcblxuICBpZiAoc3VjZXNzKSB7XG4gICAgZmlsZVZlcmlmaWVzID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmaWxlVmVyaWZpZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlUZXJtKHRlcm1Ob2RlLCBjb250ZXh0KSB7XG4gIGxldCB0ZXJtVmVyaWZpZXMgPSBmYWxzZTtcblxuICBjb25zdCBub2RlID0gdGVybU5vZGUsIC8vL1xuICAgICAgICBzdWNlc3MgPSBjb25zdHJ1Y3RvclBhc3MucnVuKG5vZGUsIGNvbnRleHQpO1xuXG4gIGlmIChzdWNlc3MpIHtcbiAgICB0ZXJtVmVyaWZpZXMgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHRlcm1WZXJpZmllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBjb250ZXh0KSB7XG4gIGxldCBzdGF0ZW1lbnRWZXJpZmllcyA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGUgPSBzdGF0ZW1lbnROb2RlLCAvLy9cbiAgICAgICAgc3VjZXNzID0gY29tYmluYXRvclBhc3MucnVuKG5vZGUsIGNvbnRleHQpO1xuXG4gIGlmIChzdWNlc3MpIHtcbiAgICBzdGF0ZW1lbnRWZXJpZmllcyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50VmVyaWZpZXM7XG59XG4iXSwibmFtZXMiOlsiUGFzcyIsInZlcmlmeUZpbGUiLCJ2ZXJpZnlTdGF0ZW1lbnQiLCJ2ZXJpZnlUZXJtIiwibm9uVGVybWluYWxOb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ0ZXJtTm9kZVF1ZXJ5IiwidHlwZU5vZGVRdWVyeSIsInJ1bGVOb2RlUXVlcnkiLCJlcnJvck5vZGVRdWVyeSIsImF4aW9tTm9kZVF1ZXJ5IiwibGVtbWFOb2RlUXVlcnkiLCJzZWN0aW9uTm9kZVF1ZXJ5IiwidGhlb3JlbU5vZGVRdWVyeSIsInN0YXRlbWVudE5vZGVRdWVyeSIsIm1ldGFMZW1tYU5vZGVRdWVyeSIsImNvbmplY3R1cmVOb2RlUXVlcnkiLCJtZXRhdGhlb3JlbU5vZGVRdWVyeSIsInZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlUXVlcnkiLCJjb21iaW5hdG9yRGVjbGFyYXRpb25Ob2RlUXVlcnkiLCJzaW1wbGVUeXBlRGVjbGFyYXRpb25Ob2RlUXVlcnkiLCJ0eXBlUHJlZml4RGVjbGFyYXRpb25Ob2RlUXVlcnkiLCJjb25zdHJ1Y3RvckRlY2xhcmF0aW9uTm9kZVF1ZXJ5IiwiY29tcGxleFR5cGVEZWNsYXJhdGlvbk5vZGVRdWVyeSIsIm1ldGF2YXJpYWJsZURlY2xhcmF0aW9uTm9kZVF1ZXJ5IiwicnVuIiwibm9kZSIsInJlbWFpbmluZ0FyZ3VtZW50cyIsInN1Y2Nlc3MiLCJ2aXNpdGVkIiwidmlzaXROb2RlIiwiZGVzY2VuZCIsImNoaWxkTm9kZXMiLCJkZXNjZW5kZWRBaGVhZCIsImxhc3RSZW1haW5pbmdBcmd1bWVudEZ1bmN0aW9uIiwiaXNMYXN0UmVtYWluaW5nQXJndW1lbnRGdW5jdGlvbiIsImluZGV4IiwiZGVzY2VuZEFoZWFkIiwiZXZlcnkiLCJjaGlsZE5vZGUiLCJwb3AiLCJjaGlsZE5vZGVzTGVuZ3RoIiwibGVuZ3RoIiwicHVzaCIsImFoZWFkSW5kZXgiLCJub2RlVGVybWluYWxOb2RlIiwiaXNUZXJtaW5hbE5vZGUiLCJ0ZXJtaW5hbE5vZGUiLCJ2aXNpdFRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZSIsInZpc2l0Tm9uVGVybWluYWxOb2RlIiwibWFwcyIsImdldENoaWxkTm9kZXMiLCJkZXNjZW5kZWQiLCJzb21lIiwibWFwIiwiVG9wTGV2ZWxQYXNzIiwiZXJyb3JOb2RlIiwiY29udGV4dCIsImVycm9yIiwiZXJyb3JGcm9tRXJyb3JOb2RlIiwiZXJyb3JWZXJpZmllcyIsInZlcmlmeSIsInJ1bGVOb2RlIiwicnVsZSIsInJ1bGVGcm9tUnVsZU5vZGUiLCJydWxlVmVyaWZpZXMiLCJheGlvbU5vZGUiLCJheGlvbSIsImF4aW9tRnJvbUF4aW9tTm9kZSIsImF4aW9tVmVyaWZpZXMiLCJsZW1tYU5vZGUiLCJsZW1tYSIsImxlbW1hRnJvbUxlbW1hTm9kZSIsImxlbW1hVmVyaWZpZXMiLCJzZWN0aW9uTm9kZSIsInNlY3Rpb24iLCJzZWN0aW9uRnJvbVNlY3Rpb25Ob2RlIiwic2VjdGlvblZlcmlmaWVzIiwidGhlb3JlbU5vZGUiLCJ0aGVvcmVtIiwidGhlb3JlbUZyb21UaGVvcmVtTm9kZSIsInRoZW9yZW1WZXJpZmllcyIsIm1ldGFMZW1tYU5vZGUiLCJtZXRhTGVtbWEiLCJtZXRhTGVtbWFGcm9tTWV0YUxlbW1hTm9kZSIsIm1ldGFMZW1tYVZlcmlmaWVzIiwiY29uamVjdHVyZU5vZGUiLCJjb25qZWN0dXJlIiwiY29uamVjdHVyZUZyb21Db25qZWN0dXJlTm9kZSIsImNvbmplY3R1cmVWZXJpZmllcyIsIm1ldGF0aGVvcmVtTm9kZSIsIm1ldGF0aGVvcmVtIiwibWV0YXRoZW9yZW1Gcm9tTWV0YXRoZW9yZW1Ob2RlIiwibWV0YXRoZW9yZW1WZXJpZmllcyIsInZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlIiwidmFyaWFibGVEZWNsYXJhdGlvbiIsInZhcmlhYmxlRGVjbGFyYXRpb25Gcm9tVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUiLCJ2YXJpYWJsZURlY2xhcmF0aW9uVmVyaWZpZXMiLCJzaW1wbGVUeXBlRGVjbGFyYXRpb25Ob2RlIiwic2ltcGxlVHlwZURlY2xhcmF0aW9uIiwic2ltcGxlVHlwZURlY2xhcmF0aW9uRnJvbVNpbXBsZVR5cGVEZWNsYXJhdGlvbk5vZGUiLCJzaW1wbGVUeXBlRGVjbGFyYXRpb25WZXJpZmllcyIsInR5cGVQcmVmaXhEZWNsYXJhdGlvbk5vZGUiLCJ0eXBlUHJlZml4RGVjbGFyYXRpb24iLCJ0eXBlUHJlZml4RGVjbGFyYXRpb25Gcm9tVHlwZVByZWZpeERlY2xhcmF0aW9uTm9kZSIsInR5cGVQcmVmaXhEZWNsYXJhdGlvblZlcmlmaWVzIiwiY29tYmluYXRvckRlY2xhcmF0aW9uTm9kZSIsImNvbWJpbmF0b3JEZWNsYXJhdGlvbiIsImNvbWJpbmF0b3JEZWNsYXJhdGlvbkZyb21Db21iaW5hdG9yRGVjbGFyYXRpb25Ob2RlIiwiY29tYmluYXRvckRlY2xhcmF0aW9uVmVyaWZpZXMiLCJjb25zdHJ1Y3RvckRlY2xhcmF0aW9uTm9kZSIsImNvbnN0cnVjdG9yRGVjbGFyYXRpb24iLCJjb25zdHJ1Y3RvckRlY2xhcmF0aW9uRnJvbUNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ob2RlIiwiY29uc3RydWN0b3JEZWNsYXJhdGlvblZlcmlmaWVzIiwiY29tcGxleFR5cGVEZWNsYXJhdGlvbk5vZGUiLCJjb21wbGV4VHlwZURlY2xhcmF0aW9uIiwiY29tcGxleFR5cGVEZWNsYXJhdGlvbkZyb21Db21wbGV4VHlwZURlY2xhcmF0aW9uTm9kZSIsImNvbXBsZXhUeXBlRGVjbGFyYXRpb25WZXJpZmllcyIsIm1ldGF2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSIsIm1ldGF2YXJpYWJsZURlY2xhcmF0aW9uIiwibWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Gcm9tTWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlIiwibWV0YXZhcmlhYmxlRGVjbGFyYXRpb25WZXJpZmllcyIsIkNvbWJpbmF0b3JQYXNzIiwic3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudCIsInN0YXRlbWVudEZyb21TdGF0ZW1lbnROb2RlIiwiYXNzaWdubWVudHMiLCJzdGF0ZWQiLCJzdGF0ZW1lbnRWZXJpZmllcyIsInRlcm1Ob2RlIiwidGVybSIsInRlcm1Gcm9tVGVybU5vZGUiLCJ0ZXJtVmVyaWZpZXMiLCJ2ZXJpZmllc0FoZWFkIiwidHlwZU5vZGUiLCJub21pbmFsVHlwZU5hbWUiLCJnZXROb21pbmFsVHlwZU5hbWUiLCJ0eXBlUHJlc2VudCIsImlzVHlwZVByZXNlbnRCeU5vbWluYWxUeXBlTmFtZSIsIkNvbnN0cnVjdG9yUGFzcyIsInZlcmlmeUFoZWFkIiwidHlwZVN0cmluZyIsImRlYnVnIiwidG9wTGV2ZWxQYXNzIiwiY29tYmluYXRvclBhc3MiLCJjb25zdHJ1Y3RvclBhc3MiLCJmaWxlTm9kZSIsImZpbGVWZXJpZmllcyIsInN1Y2VzcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7OztlQTRDcUJBOztRQTZnQkxDO2VBQUFBOztRQTBCQUM7ZUFBQUE7O1FBYkFDO2VBQUFBOzs7cUJBcGtCVTtvQkFDc0I7dUJBa0J1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV2RSxJQUFNQyx1QkFBdUJDLElBQUFBLGdCQUFTLEVBQUMsT0FDakNDLGdCQUFnQkQsSUFBQUEsZ0JBQVMsRUFBQyxVQUMxQkUsZ0JBQWdCRixJQUFBQSxnQkFBUyxFQUFDLFVBQzFCRyxnQkFBZ0JILElBQUFBLGdCQUFTLEVBQUMsVUFDMUJJLGlCQUFpQkosSUFBQUEsZ0JBQVMsRUFBQyxXQUMzQkssaUJBQWlCTCxJQUFBQSxnQkFBUyxFQUFDLFdBQzNCTSxpQkFBaUJOLElBQUFBLGdCQUFTLEVBQUMsV0FDM0JPLG1CQUFtQlAsSUFBQUEsZ0JBQVMsRUFBQyxhQUM3QlEsbUJBQW1CUixJQUFBQSxnQkFBUyxFQUFDLGFBQzdCUyxxQkFBcUJULElBQUFBLGdCQUFTLEVBQUMsZUFDL0JVLHFCQUFxQlYsSUFBQUEsZ0JBQVMsRUFBQyxlQUMvQlcsc0JBQXNCWCxJQUFBQSxnQkFBUyxFQUFDLGdCQUNoQ1ksdUJBQXVCWixJQUFBQSxnQkFBUyxFQUFDLGlCQUNqQ2EsK0JBQStCYixJQUFBQSxnQkFBUyxFQUFDLHlCQUN6Q2MsaUNBQWlDZCxJQUFBQSxnQkFBUyxFQUFDLDJCQUMzQ2UsaUNBQWlDZixJQUFBQSxnQkFBUyxFQUFDLDJCQUMzQ2dCLGlDQUFpQ2hCLElBQUFBLGdCQUFTLEVBQUMsMkJBQzNDaUIsa0NBQWtDakIsSUFBQUEsZ0JBQVMsRUFBQyw0QkFDNUNrQixrQ0FBa0NsQixJQUFBQSxnQkFBUyxFQUFDLDRCQUM1Q21CLG1DQUFtQ25CLElBQUFBLGdCQUFTLEVBQUM7QUFFcEMsSUFBQSxBQUFNTCxxQkFBTjthQUFNQTtnQ0FBQUE7O2tCQUFBQTs7WUFDbkJ5QixLQUFBQTttQkFBQUEsU0FBQUEsSUFBSUMsSUFBSTtnQkFBRSxJQUFBLElBQUEsT0FBQSxVQUFBLFFBQUEsQUFBR0MscUJBQUgsVUFBQSxPQUFBLElBQUEsT0FBQSxRQUFBLE9BQUEsR0FBQSxPQUFBLE1BQUE7b0JBQUdBLG1CQUFILE9BQUEsS0FBQSxTQUFBLENBQUEsS0FBcUI7O2dCQUM3QixJQUFJQztnQkFFSixJQUFNQyxVQUFVLElBQUksQ0FBQ0MsU0FBUyxPQUFkLElBQUksRUFBSjtvQkFBZUo7aUJBQTRCLENBQTNDLE9BQXFCLHFCQUFHQztnQkFFeENDLFVBQVVDLFNBQVUsR0FBRztnQkFFdkIsT0FBT0Q7WUFDVDs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQSxRQUFRQyxVQUFVOztnQkFBRSxJQUFBLElBQUEsT0FBQSxVQUFBLFFBQUEsQUFBR0wscUJBQUgsVUFBQSxPQUFBLElBQUEsT0FBQSxRQUFBLE9BQUEsR0FBQSxPQUFBLE1BQUE7b0JBQUdBLG1CQUFILE9BQUEsS0FBQSxTQUFBLENBQUEsS0FBcUI7O2dCQUN2QyxJQUFJTSxpQkFBaUI7Z0JBRXJCLElBQU1DLGdDQUFnQ0MsSUFBQUEscUNBQStCLEVBQUNSO2dCQUV0RSxJQUFJTywrQkFBK0I7b0JBQ2pDLElBQU1FLFFBQVE7b0JBRWRILGlCQUFpQixJQUFJLENBQUNJLFlBQVksT0FBakIsSUFBSSxFQUFKO3dCQUFrQkQ7d0JBQU9KO3FCQUFrQyxDQUEzRCxPQUFxQyxxQkFBR0wsdUJBQXFCLEdBQUc7Z0JBQ25GLE9BQU87b0JBQ0wsSUFBTUUsVUFBVUcsV0FBV00sS0FBSyxDQUFDLFNBQUNDO3dCQUNoQyxJQUFNYixPQUFPYSxXQUNQVixVQUFVLE1BQUtDLFNBQVMsY0FBZDs0QkFBZUo7eUJBQTRCLENBQTNDLE9BQXFCLHFCQUFHQzt3QkFFeEMsSUFBSUUsU0FBUzs0QkFDWCxPQUFPO3dCQUNUO29CQUNGO29CQUVBLElBQUlBLFNBQVM7d0JBQ1hJLGlCQUFpQjtvQkFDbkI7Z0JBQ0Y7Z0JBRUEsT0FBT0E7WUFDVDs7O1lBRUFJLEtBQUFBO21CQUFBQSxTQUFBQSxhQUFhRCxLQUFLLEVBQUVKLFVBQVU7O2dCQUFFLElBQUEsSUFBQSxPQUFBLFVBQUEsUUFBQSxBQUFHTCxxQkFBSCxVQUFBLE9BQUEsSUFBQSxPQUFBLFFBQUEsT0FBQSxHQUFBLE9BQUEsTUFBQTtvQkFBR0EsbUJBQUgsT0FBQSxLQUFBLFNBQUEsQ0FBQSxLQUFxQjs7Z0JBQ25ELElBQUlNLGlCQUFpQjtnQkFFckIsSUFBTUksZUFBZVYsbUJBQW1CYSxHQUFHLElBQ3JDQyxtQkFBbUJULFdBQVdVLE1BQU07Z0JBRTFDLElBQUlOLFVBQVVLLGtCQUFrQjtvQkFDOUJSLGlCQUFpQkk7Z0JBQ25CLE9BQU87b0JBQ0wsSUFBTUUsWUFBWVAsVUFBVSxDQUFDSSxNQUFNLEVBQzdCVixPQUFPYSxXQUNQVixVQUFVLElBQUksQ0FBQ0MsU0FBUyxPQUFkLElBQUksRUFBSjt3QkFBZUo7cUJBT3ZCLENBUFEsT0FBcUIscUJBQUdDLHFCQUF4Qjt3QkFBNEM7NEJBQ3BEQSxtQkFBbUJnQixJQUFJLENBQUNOOzRCQUV4QixJQUFNTyxhQUFhUixRQUFRLEdBQ3JCSCxpQkFBaUIsTUFBS0ksWUFBWSxjQUFqQjtnQ0FBa0JPO2dDQUFZWjs2QkFBa0MsQ0FBaEUsT0FBMEMscUJBQUdMOzRCQUVwRSxPQUFPTTt3QkFDVDtxQkFBRTtvQkFFUixJQUFJSixTQUFTO3dCQUNYSSxpQkFBaUI7b0JBQ25CO2dCQUNGO2dCQUVBLE9BQU9BO1lBQ1Q7OztZQUVBSCxLQUFBQTttQkFBQUEsU0FBQUEsVUFBVUosSUFBSTtnQkFBRSxJQUFBLElBQUEsT0FBQSxVQUFBLFFBQUEsQUFBR0MscUJBQUgsVUFBQSxPQUFBLElBQUEsT0FBQSxRQUFBLE9BQUEsR0FBQSxPQUFBLE1BQUE7b0JBQUdBLG1CQUFILE9BQUEsS0FBQSxTQUFBLENBQUEsS0FBcUI7O2dCQUNuQyxJQUFJRTtnQkFFSixJQUFNZ0IsbUJBQW1CbkIsS0FBS29CLGNBQWM7Z0JBRTVDLElBQUlELGtCQUFrQjtvQkFDcEIsSUFBTUUsZUFBZXJCLE1BQU8sR0FBRztvQkFFL0JHLFVBQVUsSUFBSSxDQUFDbUIsaUJBQWlCLE9BQXRCLElBQUksRUFBSjt3QkFBdUJEO3FCQUFvQyxDQUEzRCxPQUFxQyxxQkFBR3BCO2dCQUNwRCxPQUFPO29CQUNMLElBQU1zQixrQkFBa0J2QixNQUFPLEdBQUc7b0JBRWxDRyxVQUFVLElBQUksQ0FBQ3FCLG9CQUFvQixPQUF6QixJQUFJLEVBQUo7d0JBQTBCRDtxQkFBdUMsQ0FBakUsT0FBMkMscUJBQUd0QjtnQkFDMUQ7Z0JBRUEsT0FBT0U7WUFDVDs7O1lBRUFtQixLQUFBQTttQkFBQUEsU0FBQUEsa0JBQWtCRCxZQUFZO2dCQUFFLElBQUEsSUFBQSxPQUFBLFVBQUEsUUFBQSxBQUFHcEIscUJBQUgsVUFBQSxPQUFBLElBQUEsT0FBQSxRQUFBLE9BQUEsR0FBQSxPQUFBLE1BQUE7b0JBQUdBLG1CQUFILE9BQUEsS0FBQSxTQUFBLENBQUEsS0FBcUI7O2dCQUNuRCxJQUFJRSxVQUFVO2dCQUVkLElBQU1LLGdDQUFnQ0MsSUFBQUEscUNBQStCLEVBQUNSO2dCQUV0RSxJQUFJTywrQkFBK0I7b0JBQ2pDLElBQU1HLGVBQWVWLG1CQUFtQmEsR0FBRyxJQUNyQ1AsaUJBQWlCSTtvQkFFdkIsSUFBSUosZ0JBQWdCO3dCQUNsQkosVUFBVTtvQkFDWjtvQkFFQUYsbUJBQW1CZ0IsSUFBSSxDQUFDTjtnQkFDMUIsT0FBTztvQkFDTFIsVUFBVTtnQkFDWjtnQkFFQSxPQUFPQTtZQUNUOzs7WUFFQXFCLEtBQUFBO21CQUFBQSxTQUFBQSxxQkFBcUJELGVBQWU7Z0JBQUUsSUFBQSxJQUFBLE9BQUEsVUFBQSxRQUFBLEFBQUd0QixxQkFBSCxVQUFBLE9BQUEsSUFBQSxPQUFBLFFBQUEsT0FBQSxHQUFBLE9BQUEsTUFBQTtvQkFBR0EsbUJBQUgsT0FBQSxLQUFBLFNBQUEsQ0FBQSxLQUFxQjs7O2dCQUN6RCxJQUFJRSxVQUFVO2dCQUVkLElBQUksQUFBRXNCLE9BQVMsSUFBSSxDQUFDLFdBQVcsQ0FBekJBO2dCQUVOQSxPQUFPLEFBQ0wscUJBQUdBLGFBREU7b0JBRUw7d0JBQ0U5QyxXQUFXRDt3QkFDWHFCLEtBQUssU0FBQ0M7NkRBQVNDO2dDQUFBQTs7NEJBQ2IsSUFBSUUsVUFBVTs0QkFFZCxJQUFNRyxhQUFhaUIsZ0JBQWdCRyxhQUFhLElBQzFDQyxZQUFZLE1BQUt0QixPQUFPLGNBQVo7Z0NBQWFDOzZCQUFrQyxDQUEvQyxPQUF5QixxQkFBR0w7NEJBRTlDLElBQUkwQixXQUFXO2dDQUNieEIsVUFBVTs0QkFDWjs0QkFFQSxPQUFPQTt3QkFDVDtvQkFDRjtpQkFDRDtnQkFFRHNCLEtBQUtHLElBQUksQ0FBQyxTQUFDQztvQkFDVCxJQUFRbEQsY0FBbUJrRCxJQUFuQmxELFdBQVdvQixNQUFROEIsSUFBUjlCO29CQUVuQixJQUFNQyxPQUFPckIsWUFBVTRDO29CQUV2QixJQUFJdkIsU0FBUyxNQUFNO3dCQUNqQixJQUFNRSxVQUFVSCxVQUFBQSxLQUFBQSxHQUFBQTs0QkFBSUM7eUJBQTRCLENBQWhDRCxPQUFVLHFCQUFHRTt3QkFFN0JFLFVBQVVEO3dCQUVWLE9BQU87b0JBQ1Q7Z0JBQ0Y7Z0JBRUEsT0FBT0M7WUFDVDs7O1dBaEptQjdCOztBQW1KckIsSUFBQSxBQUFNd0QsNkJBQU47Y0FBTUE7YUFBQUE7Z0NBQUFBO1FBQU4sT0FBQSxrQkFBTUE7O1dBQUFBO0VBQXFCeEQ7QUFDekIsaUJBREl3RCxjQUNHTCxRQUFPO0lBQ1o7UUFDRTlDLFdBQVdJO1FBQ1hnQixLQUFLLFNBQUNnQyxXQUFXQztZQUNmLElBQUk5QixVQUFVO1lBRWQsSUFBTStCLFFBQVFDLElBQUFBLDJCQUFrQixFQUFDSCxXQUFXQyxVQUN0Q0csZ0JBQWdCRixNQUFNRyxNQUFNO1lBRWxDLElBQUlELGVBQWU7Z0JBQ2pCakMsVUFBVTtZQUNaO1lBRUEsT0FBT0E7UUFDVDtJQUNGO0lBQ0E7UUFDRXZCLFdBQVdHO1FBQ1hpQixLQUFLLFNBQUNzQyxVQUFVTDtZQUNkLElBQUk5QixVQUFVO1lBRWQsSUFBTW9DLE9BQU9DLElBQUFBLHlCQUFnQixFQUFDRixVQUFVTCxVQUNsQ1EsZUFBZUYsS0FBS0YsTUFBTTtZQUVoQyxJQUFJSSxjQUFjO2dCQUNoQnRDLFVBQVU7WUFDWjtZQUVBLE9BQU9BO1FBQ1Q7SUFDRjtJQUNBO1FBQ0V2QixXQUFXSztRQUNYZSxLQUFLLFNBQUMwQyxXQUFXVDtZQUNmLElBQUk5QixVQUFVO1lBRWQsSUFBTXdDLFFBQVFDLElBQUFBLDJCQUFrQixFQUFDRixXQUFXVCxVQUN0Q1ksZ0JBQWdCRixNQUFNTixNQUFNO1lBRWxDLElBQUlRLGVBQWU7Z0JBQ2pCMUMsVUFBVTtZQUNaO1lBRUEsT0FBT0E7UUFDVDtJQUNGO0lBQ0E7UUFDRXZCLFdBQVdNO1FBQ1hjLEtBQUssU0FBQzhDLFdBQVdiO1lBQ2YsSUFBSTlCLFVBQVU7WUFFZCxJQUFNNEMsUUFBUUMsSUFBQUEsMkJBQWtCLEVBQUNGLFdBQVdiLFVBQ3RDZ0IsZ0JBQWdCRixNQUFNVixNQUFNO1lBRWxDLElBQUlZLGVBQWU7Z0JBQ2pCOUMsVUFBVTtZQUNaO1lBRUEsT0FBT0E7UUFDVDtJQUNGO0lBQ0E7UUFDRXZCLFdBQVdPO1FBQ1hhLEtBQUssU0FBQ2tELGFBQWFqQjtZQUNqQixJQUFJOUIsVUFBVTtZQUVkLElBQU1nRCxVQUFVQyxJQUFBQSwrQkFBc0IsRUFBQ0YsYUFBYWpCLFVBQzlDb0Isa0JBQWtCRixRQUFRZCxNQUFNO1lBRXRDLElBQUlnQixpQkFBaUI7Z0JBQ25CbEQsVUFBVTtZQUNaO1lBRUEsT0FBT0E7UUFDVDtJQUNGO0lBQ0E7UUFDRXZCLFdBQVdRO1FBQ1hZLEtBQUssU0FBQ3NELGFBQWFyQjtZQUNqQixJQUFJOUIsVUFBVTtZQUVkLElBQU1vRCxVQUFVQyxJQUFBQSwrQkFBc0IsRUFBQ0YsYUFBYXJCLFVBQzlDd0Isa0JBQWtCRixRQUFRbEIsTUFBTTtZQUV0QyxJQUFJb0IsaUJBQWlCO2dCQUNuQnRELFVBQVU7WUFDWjtZQUVBLE9BQU9BO1FBQ1Q7SUFDRjtJQUNBO1FBQ0V2QixXQUFXVTtRQUNYVSxLQUFLLFNBQUMwRCxlQUFlekI7WUFDbkIsSUFBSTlCLFVBQVU7WUFFZCxJQUFNd0QsWUFBWUMsSUFBQUEsbUNBQTBCLEVBQUNGLGVBQWV6QixVQUN0RDRCLG9CQUFvQkYsVUFBVXRCLE1BQU07WUFFMUMsSUFBSXdCLG1CQUFtQjtnQkFDckIxRCxVQUFVO1lBQ1o7WUFFQSxPQUFPQTtRQUNUO0lBQ0Y7SUFDQTtRQUNFdkIsV0FBV1c7UUFDWFMsS0FBSyxTQUFDOEQsZ0JBQWdCN0I7WUFDcEIsSUFBSTlCLFVBQVU7WUFFZCxJQUFNNEQsYUFBYUMsSUFBQUEscUNBQTRCLEVBQUNGLGdCQUFnQjdCLFVBQzFEZ0MscUJBQXFCRixXQUFXMUIsTUFBTTtZQUU1QyxJQUFJNEIsb0JBQW9CO2dCQUN0QjlELFVBQVU7WUFDWjtZQUVBLE9BQU9BO1FBQ1Q7SUFDRjtJQUNBO1FBQ0V2QixXQUFXWTtRQUNYUSxLQUFLLFNBQUNrRSxpQkFBaUJqQztZQUNyQixJQUFJOUIsVUFBVTtZQUVkLElBQU1nRSxjQUFjQyxJQUFBQSx1Q0FBOEIsRUFBQ0YsaUJBQWlCakMsVUFDOURvQyxzQkFBc0JGLFlBQVk5QixNQUFNO1lBRTlDLElBQUlnQyxxQkFBcUI7Z0JBQ3ZCbEUsVUFBVTtZQUNaO1lBRUEsT0FBT0E7UUFDVDtJQUNGO0lBQ0E7UUFDRXZCLFdBQVdhO1FBQ1hPLEtBQUssU0FBQ3NFLHlCQUF5QnJDO1lBQzdCLElBQUk5QixVQUFVO1lBRWQsSUFBTW9FLHNCQUFzQkMsSUFBQUEsdURBQThDLEVBQUNGLHlCQUF5QnJDLFVBQzlGd0MsOEJBQThCRixvQkFBb0JsQyxNQUFNO1lBRTlELElBQUlvQyw2QkFBNkI7Z0JBQy9CdEUsVUFBVTtZQUNaO1lBRUEsT0FBT0E7UUFDVDtJQUNGO0lBQ0E7UUFDRXZCLFdBQVdlO1FBQ1hLLEtBQUssU0FBQzBFLDJCQUEyQnpDO1lBQy9CLElBQUk5QixVQUFVO1lBRWQsSUFBTXdFLHdCQUF3QkMsSUFBQUEsMkRBQWtELEVBQUNGLDJCQUEyQnpDLFVBQ3RHNEMsZ0NBQWdDRixzQkFBc0J0QyxNQUFNO1lBRWxFLElBQUl3QywrQkFBK0I7Z0JBQ2pDMUUsVUFBVTtZQUNaO1lBRUEsT0FBT0E7UUFDVDtJQUNGO0lBQ0E7UUFDRXZCLFdBQVdnQjtRQUNYSSxLQUFLLFNBQUM4RSwyQkFBMkI3QztZQUMvQixJQUFJOUIsVUFBVTtZQUVkLElBQU00RSx3QkFBd0JDLElBQUFBLDJEQUFrRCxFQUFDRiwyQkFBMkI3QyxVQUN0R2dELGdDQUFnQ0Ysc0JBQXNCMUMsTUFBTTtZQUVsRSxJQUFJNEMsK0JBQStCO2dCQUNqQzlFLFVBQVU7WUFDWjtZQUVBLE9BQU9BO1FBQ1Q7SUFDRjtJQUNBO1FBQ0V2QixXQUFXYztRQUNYTSxLQUFLLFNBQUNrRiwyQkFBMkJqRDtZQUMvQixJQUFJOUIsVUFBVTtZQUVkLElBQU1nRix3QkFBd0JDLElBQUFBLDJEQUFrRCxFQUFDRiwyQkFBMkJqRCxVQUN0R29ELGdDQUFnQ0Ysc0JBQXNCOUMsTUFBTTtZQUVsRSxJQUFJZ0QsK0JBQStCO2dCQUNqQ2xGLFVBQVU7WUFDWjtZQUVBLE9BQU9BO1FBQ1Q7SUFDRjtJQUNBO1FBQ0V2QixXQUFXaUI7UUFDWEcsS0FBSyxTQUFDc0YsNEJBQTRCckQ7WUFDaEMsSUFBSTlCLFVBQVU7WUFFZCxJQUFNb0YseUJBQXlCQyxJQUFBQSw2REFBb0QsRUFBQ0YsNEJBQTRCckQsVUFDMUd3RCxpQ0FBaUNGLHVCQUF1QmxELE1BQU07WUFFcEUsSUFBSW9ELGdDQUFnQztnQkFDbEN0RixVQUFVO1lBQ1o7WUFFQSxPQUFPQTtRQUNUO0lBQ0Y7SUFDQTtRQUNFdkIsV0FBV2tCO1FBQ1hFLEtBQUssU0FBQzBGLDRCQUE0QnpEO1lBQ2hDLElBQUk5QixVQUFVO1lBRWQsSUFBTXdGLHlCQUF5QkMsSUFBQUEsNkRBQW9ELEVBQUNGLDRCQUE0QnpELFVBQzFHNEQsaUNBQWlDRix1QkFBdUJ0RCxNQUFNO1lBRXBFLElBQUl3RCxnQ0FBZ0M7Z0JBQ2xDMUYsVUFBVTtZQUNaO1lBRUEsT0FBT0E7UUFDVDtJQUNGO0lBQ0E7UUFDRXZCLFdBQVdtQjtRQUNYQyxLQUFLLFNBQUM4Riw2QkFBNkI3RDtZQUNqQyxJQUFJOUIsVUFBVTtZQUVkLElBQU00RiwwQkFBMEJDLElBQUFBLCtEQUFzRCxFQUFDRiw2QkFBNkI3RCxVQUM5R2dFLGtDQUFrQ0Ysd0JBQXdCMUQsTUFBTTtZQUV0RSxJQUFJNEQsaUNBQWlDO2dCQUNuQzlGLFVBQVU7WUFDWjtZQUVBLE9BQU9BO1FBQ1Q7SUFDRjtDQUNEO0FBR0gsSUFBQSxBQUFNK0YsK0JBQU47Y0FBTUE7YUFBQUE7Z0NBQUFBO1FBQU4sT0FBQSxrQkFBTUE7O2tCQUFBQTs7WUFDSmxHLEtBQUFBO21CQUFBQSxTQUFBQSxJQUFJbUcsYUFBYSxFQUFFbEUsT0FBTztnQkFDeEIsSUFBSTlCLFVBQVU7Z0JBRWQsSUFBTXFCLGtCQUFrQjJFLGVBQ2xCNUYsYUFBYWlCLGdCQUFnQkcsYUFBYSxJQUMxQ0MsWUFBWSxJQUFJLENBQUN0QixPQUFPLENBQUNDLFlBQVcwQjtnQkFFMUMsSUFBSUwsV0FBVztvQkFDYnpCLFVBQVU7Z0JBQ1o7Z0JBRUEsT0FBT0E7WUFDVDs7O1dBYkkrRjtFQUF1QjNIO0FBZTNCLGlCQWZJMkgsZ0JBZUd4RSxRQUFPO0lBQ1o7UUFDRTlDLFdBQVdTO1FBQ1hXLEtBQUssU0FBQ21HLGVBQWVsRTtZQUNuQixJQUFJOUIsVUFBVTtZQUVkLElBQU1pRyxZQUFZQyxJQUFBQSxtQ0FBMEIsRUFBQ0YsZUFBZWxFLFVBQ3REcUUsY0FBYyxNQUNkQyxTQUFTLE9BQ1RDLG9CQUFvQkosVUFBVS9ELE1BQU0sQ0FBQ2lFLGFBQWFDLFFBQVF0RTtZQUVoRSxJQUFJdUUsbUJBQW1CO2dCQUNyQnJHLFVBQVU7WUFDWjtZQUVBLE9BQU9BO1FBQ1Q7SUFDRjtJQUNBO1FBQ0V2QixXQUFXQztRQUNYbUIsS0FBSyxTQUFDeUcsVUFBVXhFO1lBQ2QsSUFBSTlCLFVBQVU7WUFFZCxJQUFNdUcsT0FBT0MsSUFBQUEseUJBQWdCLEVBQUNGLFVBQVV4RSxVQUNsQzJFLGVBQWVGLEtBQUtyRSxNQUFNLENBQUNKLFNBQVM7Z0JBQ2xDLElBQU00RSxnQkFBZ0I7Z0JBRXRCLE9BQU9BO1lBQ1Q7WUFFTixJQUFJRCxjQUFjO2dCQUNoQnpHLFVBQVU7WUFDWjtZQUVBLE9BQU9BO1FBQ1Q7SUFDRjtJQUNBO1FBQ0V2QixXQUFXRTtRQUNYa0IsS0FBSyxTQUFDOEcsVUFBVTdFO1lBQ2QsSUFBSTlCLFVBQVU7WUFFZCxJQUFNNEcsa0JBQWtCRCxTQUFTRSxrQkFBa0IsSUFDN0NDLGNBQWNoRixRQUFRaUYsOEJBQThCLENBQUNIO1lBRTNELElBQUlFLGFBQWE7Z0JBQ2Y5RyxVQUFVO1lBQ1o7WUFFQSxPQUFPQTtRQUNUO0lBQ0Y7Q0FDRDtBQUdILElBQUEsQUFBTWdILGdDQUFOO2NBQU1BO2FBQUFBO2dDQUFBQTtRQUFOLE9BQUEsa0JBQU1BOztrQkFBQUE7O1lBQ0puSCxLQUFBQTttQkFBQUEsU0FBQUEsSUFBSW1HLGFBQWEsRUFBRWxFLE9BQU87Z0JBQ3hCLElBQUk5QixVQUFVO2dCQUVkLElBQU1xQixrQkFBa0IyRSxlQUNsQjVGLGFBQWFpQixnQkFBZ0JHLGFBQWEsSUFDMUNDLFlBQVksSUFBSSxDQUFDdEIsT0FBTyxDQUFDQyxZQUFXMEI7Z0JBRTFDLElBQUlMLFdBQVc7b0JBQ2J6QixVQUFVO2dCQUNaO2dCQUVBLE9BQU9BO1lBQ1Q7OztXQWJJZ0g7RUFBd0I1STtBQWU1QixpQkFmSTRJLGlCQWVHekYsUUFBTztJQUNaO1FBQ0U5QyxXQUFXQztRQUNYbUIsS0FBSyxTQUFDeUcsVUFBVXhFLFNBQVNtRjtZQUN2QixJQUFJakgsVUFBVTtZQUVkLElBQU11RyxPQUFPQyxJQUFBQSx5QkFBZ0IsRUFBQ0YsVUFBVXhFLFVBQ2xDMkUsZUFBZUYsS0FBS3JFLE1BQU0sQ0FBQ0osU0FBU21GO1lBRTFDLElBQUlSLGNBQWM7Z0JBQ2hCekcsVUFBVTtZQUNaO1lBRUEsT0FBT0E7UUFDVDtJQUNGO0lBQ0E7UUFDRXZCLFdBQVdFO1FBQ1hrQixLQUFLLFNBQUM4RyxVQUFVN0UsU0FBU21GO1lBQ3ZCLElBQUlqSCxVQUFVO1lBRWQsSUFBTTRHLGtCQUFrQkQsU0FBU0Usa0JBQWtCLElBQzdDQyxjQUFjaEYsUUFBUWlGLDhCQUE4QixDQUFDSDtZQUUzRCxJQUFJRSxhQUFhO2dCQUNmLElBQU1KLGdCQUFnQk87Z0JBRXRCLElBQUlQLGVBQWU7b0JBQ2pCMUcsVUFBVTtnQkFDWjtZQUNGLE9BQU87Z0JBQ0wsSUFBTWtILGFBQWFOLGlCQUFpQixHQUFHO2dCQUV2QzlFLFFBQVFxRixLQUFLLENBQUMsQUFBQyxRQUFrQixPQUFYRCxZQUFXO2dCQUVqQ2xILFVBQVU7WUFDWjtZQUVBLE9BQU9BO1FBQ1Q7SUFDRjtDQUNEO0FBR0gsSUFBTW9ILGVBQWUsSUFBSXhGLGdCQUNuQnlGLGlCQUFpQixJQUFJdEIsa0JBQ3JCdUIsa0JBQWtCLElBQUlOO0FBRXJCLFNBQVMzSSxXQUFXa0osUUFBUSxFQUFFekYsT0FBTztJQUMxQyxJQUFJMEYsZUFBZTtJQUVuQixJQUFNMUgsT0FBT3lILFVBQ1BFLFNBQVNMLGFBQWF2SCxHQUFHLENBQUNDLE1BQU1nQztJQUV0QyxJQUFJMkYsUUFBUTtRQUNWRCxlQUFlO0lBQ2pCO0lBRUEsT0FBT0E7QUFDVDtBQUVPLFNBQVNqSixXQUFXK0gsUUFBUSxFQUFFeEUsT0FBTztJQUMxQyxJQUFJMkUsZUFBZTtJQUVuQixJQUFNM0csT0FBT3dHLFVBQ1BtQixTQUFTSCxnQkFBZ0J6SCxHQUFHLENBQUNDLE1BQU1nQztJQUV6QyxJQUFJMkYsUUFBUTtRQUNWaEIsZUFBZTtJQUNqQjtJQUVBLE9BQU9BO0FBQ1Q7QUFFTyxTQUFTbkksZ0JBQWdCMEgsYUFBYSxFQUFFbEUsT0FBTztJQUNwRCxJQUFJdUUsb0JBQW9CO0lBRXhCLElBQU12RyxPQUFPa0csZUFDUHlCLFNBQVNKLGVBQWV4SCxHQUFHLENBQUNDLE1BQU1nQztJQUV4QyxJQUFJMkYsUUFBUTtRQUNWcEIsb0JBQW9CO0lBQ3RCO0lBRUEsT0FBT0E7QUFDVCJ9
package/lib/ruleNames.js CHANGED
@@ -69,6 +69,12 @@ _export(exports, {
69
69
  get EQUALITY_RULE_NAME () {
70
70
  return EQUALITY_RULE_NAME;
71
71
  },
72
+ get EQUIVALENCES_RULE_NAME () {
73
+ return EQUIVALENCES_RULE_NAME;
74
+ },
75
+ get EQUIVALENCE_RULE_NAME () {
76
+ return EQUIVALENCE_RULE_NAME;
77
+ },
72
78
  get ERROR_RULE_NAME () {
73
79
  return ERROR_RULE_NAME;
74
80
  },
@@ -129,9 +135,6 @@ _export(exports, {
129
135
  get META_TYPE_RULE_NAME () {
130
136
  return META_TYPE_RULE_NAME;
131
137
  },
132
- get NONSENSE_RULE_NAME () {
133
- return NONSENSE_RULE_NAME;
134
- },
135
138
  get PARAMETER_RULE_NAME () {
136
139
  return PARAMETER_RULE_NAME;
137
140
  },
@@ -273,7 +276,6 @@ var PROPERTY_RULE_NAME = "property";
273
276
  var EQUALITY_RULE_NAME = "equality";
274
277
  var VARIABLE_RULE_NAME = "variable";
275
278
  var SUBPROOF_RULE_NAME = "subproof";
276
- var NONSENSE_RULE_NAME = "nonsense";
277
279
  var DOCUMENT_RULE_NAME = "document";
278
280
  var RULE_BODY_RULE_NAME = "ruleBody";
279
281
  var META_TYPE_RULE_NAME = "metaType";
@@ -298,10 +300,12 @@ var TYPE_PREFIX_RULE_NAME = "typePrefix";
298
300
  var SUPPOSITION_RULE_NAME = "supposition";
299
301
  var CONSTRUCTOR_RULE_NAME = "constructor";
300
302
  var METATHEOREM_RULE_NAME = "metatheorem";
303
+ var EQUIVALENCE_RULE_NAME = "equivalence";
301
304
  var AXIOM_HEADER_RULE_NAME = "axiomHeader";
302
305
  var LEMMA_HEADER_RULE_NAME = "lemmaHeader";
303
306
  var THEOREM_BODY_RULE_NAME = "theoremBody";
304
307
  var METAVARIABLE_RULE_NAME = "metavariable";
308
+ var EQUIVALENCES_RULE_NAME = "equivalences";
305
309
  var META_ARGUMENT_RULE_NAME = "metaArgument";
306
310
  var QUALIFICATION_RULE_NAME = "qualification";
307
311
  var PROCEDURE_CALL_RULE_NAME = "procedureCall";
@@ -335,4 +339,4 @@ var CONSTRUCTOR_DECLARATION_RULE_NAME = "constructorDeclaration";
335
339
  var COMPLEX_TYPE_DECLARATION_RULE_NAME = "complexTypeDeclaration";
336
340
  var METAVARIABLE_DECLARATION_RULE_NAME = "metavariableDeclaration";
337
341
 
338
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9ydWxlTmFtZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBSVUxFX1JVTEVfTkFNRSA9IFwicnVsZVwiO1xuZXhwb3J0IGNvbnN0IFNURVBfUlVMRV9OQU1FID0gXCJzdGVwXCI7XG5leHBvcnQgY29uc3QgVEVSTV9SVUxFX05BTUUgPSBcInRlcm1cIjtcbmV4cG9ydCBjb25zdCBUWVBFX1JVTEVfTkFNRSA9IFwidHlwZVwiO1xuZXhwb3J0IGNvbnN0IFRZUEVTX1JVTEVfTkFNRSA9IFwidHlwZXNcIjtcbmV4cG9ydCBjb25zdCBMRU1NQV9SVUxFX05BTUUgPSBcImxlbW1hXCI7XG5leHBvcnQgY29uc3QgQVhJT01fUlVMRV9OQU1FID0gXCJheGlvbVwiO1xuZXhwb3J0IGNvbnN0IEVSUk9SX1JVTEVfTkFNRSA9IFwiZXJyb3JcIjtcbmV4cG9ydCBjb25zdCBGUkFNRV9SVUxFX05BTUUgPSBcImZyYW1lXCI7XG5leHBvcnQgY29uc3QgUFJPT0ZfUlVMRV9OQU1FID0gXCJwcm9vZlwiO1xuZXhwb3J0IGNvbnN0IExBQkVMX1JVTEVfTkFNRSA9IFwibGFiZWxcIjtcbmV4cG9ydCBjb25zdCBMQUJFTFNfUlVMRV9OQU1FID0gXCJsYWJlbHNcIjtcbmV4cG9ydCBjb25zdCBUSEVPUkVNX1JVTEVfTkFNRSA9IFwidGhlb3JlbVwiO1xuZXhwb3J0IGNvbnN0IFBSRU1JU0VfUlVMRV9OQU1FID0gXCJwcmVtaXNlXCI7XG5leHBvcnQgY29uc3QgU0VDVElPTl9SVUxFX05BTUUgPSBcInNlY3Rpb25cIjtcbmV4cG9ydCBjb25zdCBBUkdVTUVOVF9SVUxFX05BTUUgPSBcImFyZ3VtZW50XCI7XG5leHBvcnQgY29uc3QgUFJPUEVSVFlfUlVMRV9OQU1FID0gXCJwcm9wZXJ0eVwiO1xuZXhwb3J0IGNvbnN0IEVRVUFMSVRZX1JVTEVfTkFNRSA9IFwiZXF1YWxpdHlcIjtcbmV4cG9ydCBjb25zdCBWQVJJQUJMRV9SVUxFX05BTUUgPSBcInZhcmlhYmxlXCI7XG5leHBvcnQgY29uc3QgU1VCUFJPT0ZfUlVMRV9OQU1FID0gXCJzdWJwcm9vZlwiO1xuZXhwb3J0IGNvbnN0IE5PTlNFTlNFX1JVTEVfTkFNRSA9IFwibm9uc2Vuc2VcIjtcbmV4cG9ydCBjb25zdCBET0NVTUVOVF9SVUxFX05BTUUgPSBcImRvY3VtZW50XCI7XG5leHBvcnQgY29uc3QgUlVMRV9CT0RZX1JVTEVfTkFNRSA9IFwicnVsZUJvZHlcIjtcbmV4cG9ydCBjb25zdCBNRVRBX1RZUEVfUlVMRV9OQU1FID0gXCJtZXRhVHlwZVwiO1xuZXhwb3J0IGNvbnN0IFNJR05BVFVSRV9SVUxFX05BTUUgPSBcInNpZ25hdHVyZVwiO1xuZXhwb3J0IGNvbnN0IFBBUkFNRVRFUl9SVUxFX05BTUUgPSBcInBhcmFtZXRlclwiO1xuZXhwb3J0IGNvbnN0IERFRFVDVElPTl9SVUxFX05BTUUgPSBcImRlZHVjdGlvblwiO1xuZXhwb3J0IGNvbnN0IEpVREdFTUVOVF9SVUxFX05BTUUgPSBcImp1ZGdlbWVudFwiO1xuZXhwb3J0IGNvbnN0IFJFRkVSRU5DRV9SVUxFX05BTUUgPSBcInJlZmVyZW5jZVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRFTUVOVF9SVUxFX05BTUUgPSBcInN0YXRlbWVudFwiO1xuZXhwb3J0IGNvbnN0IE1FVEFfTEVNTUFfUlVMRV9OQU1FID0gXCJtZXRhTGVtbWFcIjtcbmV4cG9ydCBjb25zdCBBWElPTV9CT0RZX1JVTEVfTkFNRSA9IFwiYXhpb21Cb2R5XCI7XG5leHBvcnQgY29uc3QgTEVNTUFfQk9EWV9SVUxFX05BTUUgPSBcImxlbW1hQm9keVwiO1xuZXhwb3J0IGNvbnN0IENPTUJJTkFUT1JfUlVMRV9OQU1FID0gXCJjb21iaW5hdG9yXCI7XG5leHBvcnQgY29uc3QgQ09OQ0xVU0lPTl9SVUxFX05BTUUgPSBcImNvbmNsdXNpb25cIjtcbmV4cG9ydCBjb25zdCBDT05KRUNUVVJFX1JVTEVfTkFNRSA9IFwiY29uamVjdHVyZVwiO1xuZXhwb3J0IGNvbnN0IERFUklWQVRJT05fUlVMRV9OQU1FID0gXCJkZXJpdmF0aW9uXCI7XG5leHBvcnQgY29uc3QgSFlQT1RIRVNJU19SVUxFX05BTUUgPSBcImh5cG90aGVzaXNcIjtcbmV4cG9ydCBjb25zdCBBU1NVTVBUSU9OX1JVTEVfTkFNRSA9IFwiYXNzdW1wdGlvblwiO1xuZXhwb3J0IGNvbnN0IFBMQUNFSE9MREVSX1JVTEVfTkFNRSA9IFwiX1wiOyAvLy9cbmV4cG9ydCBjb25zdCBSVUxFX0hFQURFUl9SVUxFX05BTUUgPSBcInJ1bGVIZWFkZXJcIjtcbmV4cG9ydCBjb25zdCBUWVBFX1BSRUZJWF9SVUxFX05BTUUgPSBcInR5cGVQcmVmaXhcIjtcbmV4cG9ydCBjb25zdCBTVVBQT1NJVElPTl9SVUxFX05BTUUgPSBcInN1cHBvc2l0aW9uXCI7XG5leHBvcnQgY29uc3QgQ09OU1RSVUNUT1JfUlVMRV9OQU1FID0gXCJjb25zdHJ1Y3RvclwiO1xuZXhwb3J0IGNvbnN0IE1FVEFUSEVPUkVNX1JVTEVfTkFNRSA9IFwibWV0YXRoZW9yZW1cIjtcbmV4cG9ydCBjb25zdCBBWElPTV9IRUFERVJfUlVMRV9OQU1FID0gXCJheGlvbUhlYWRlclwiO1xuZXhwb3J0IGNvbnN0IExFTU1BX0hFQURFUl9SVUxFX05BTUUgPSBcImxlbW1hSGVhZGVyXCI7XG5leHBvcnQgY29uc3QgVEhFT1JFTV9CT0RZX1JVTEVfTkFNRSA9IFwidGhlb3JlbUJvZHlcIjtcbmV4cG9ydCBjb25zdCBNRVRBVkFSSUFCTEVfUlVMRV9OQU1FID0gXCJtZXRhdmFyaWFibGVcIjtcbmV4cG9ydCBjb25zdCBNRVRBX0FSR1VNRU5UX1JVTEVfTkFNRSA9IFwibWV0YUFyZ3VtZW50XCI7XG5leHBvcnQgY29uc3QgUVVBTElGSUNBVElPTl9SVUxFX05BTUUgPSBcInF1YWxpZmljYXRpb25cIjtcbmV4cG9ydCBjb25zdCBQUk9DRURVUkVfQ0FMTF9SVUxFX05BTUUgPSBcInByb2NlZHVyZUNhbGxcIjtcbmV4cG9ydCBjb25zdCBTVUJfREVSSVZBVElPTl9SVUxFX05BTUUgPSBcInN1YkRlcml2YXRpb25cIjtcbmV4cG9ydCBjb25zdCBUWVBFX0FTU0VSVElPTl9SVUxFX05BTUUgPSBcInR5cGVBc3NlcnRpb25cIjtcbmV4cG9ydCBjb25zdCBUSEVPUkVNX0hFQURFUl9SVUxFX05BTUUgPSBcInRoZW9yZW1IZWFkZXJcIjtcbmV4cG9ydCBjb25zdCBNRVRBX0xFTU1BX0JPRFlfUlVMRV9OQU1FID0gXCJtZXRhTGVtbWFCb2R5XCI7XG5leHBvcnQgY29uc3QgQ09OSkVDVFVSRV9CT0RZX1JVTEVfTkFNRSA9IFwiY29uamVjdHVyZUJvZHlcIjtcbmV4cG9ydCBjb25zdCBNRVRBVEhFT1JFTV9CT0RZX1JVTEVfTkFNRSA9IFwibWV0YXRoZW9yZW1Cb2R5XCI7XG5leHBvcnQgY29uc3QgTUVUQV9MRU1NQV9IRUFERVJfUlVMRV9OQU1FID0gXCJtZXRhTGVtbWFIZWFkZXJcIjtcbmV4cG9ydCBjb25zdCBDT05KRUNUVVJFX0hFQURFUl9SVUxFX05BTUUgPSBcImNvbmplY3R1cmVIZWFkZXJcIjtcbmV4cG9ydCBjb25zdCBQUk9QRVJUWV9SRUxBVElPTl9SVUxFX05BTUUgPSBcInByb3BlcnR5UmVsYXRpb25cIjtcbmV4cG9ydCBjb25zdCBERUZJTkVEX0FTU0VSVElPTl9SVUxFX05BTUUgPSBcImRlZmluZWRBc3NlcnRpb25cIjtcbmV4cG9ydCBjb25zdCBURVJNX1NVQlNUSVRVVElPTl9SVUxFX05BTUUgPSBcInRlcm1TdWJzdGl0dXRpb25cIjtcbmV4cG9ydCBjb25zdCBNRVRBVEhFT1JFTV9IRUFERVJfUlVMRV9OQU1FID0gXCJtZXRhdGhlb3JlbUhlYWRlclwiO1xuZXhwb3J0IGNvbnN0IFBST1BFUlRZX0FTU0VSVElPTl9SVUxFX05BTUUgPSBcInByb3BlcnR5QXNzZXJ0aW9uXCI7XG5leHBvcnQgY29uc3QgU1VCUFJPT0ZfQVNTRVJUSU9OX1JVTEVfTkFNRSA9IFwic3VicHJvb2ZBc3NlcnRpb25cIjtcbmV4cG9ydCBjb25zdCBGUkFNRV9TVUJTVElUVVRJT05fUlVMRV9OQU1FID0gXCJmcmFtZVN1YnN0aXR1dGlvblwiO1xuZXhwb3J0IGNvbnN0IFBBUkVOVEhFU0lTRURfTEFCRUxfUlVMRV9OQU1FID0gXCJwYXJlbnRoZXNpc2VkTGFiZWxcIjtcbmV4cG9ydCBjb25zdCBQUk9DRURVUkVfUkVGRVJFTkNFX1JVTEVfTkFNRSA9IFwicHJvY2VkdXJlUmVmZXJlbmNlXCI7XG5leHBvcnQgY29uc3QgQ09OVEFJTkVEX0FTU0VSVElPTl9SVUxFX05BTUUgPSBcImNvbnRhaW5lZEFzc2VydGlvblwiO1xuZXhwb3J0IGNvbnN0IFNBVElTRklFU19BU1NFUlRJT05fUlVMRV9OQU1FID0gXCJzYXRpc2ZpZXNBc3NlcnRpb25cIjtcbmV4cG9ydCBjb25zdCBQQVJFTlRIRVNJU0VEX0xBQkVMU19SVUxFX05BTUUgPSBcInBhcmVudGhlc2lzZWRMYWJlbHNcIjtcbmV4cG9ydCBjb25zdCBQUk9QRVJUWV9ERUNMQVJBVElPTl9SVUxFX05BTUUgPSBcInByb3BlcnR5RGVjbGFyYXRpb25cIjtcbmV4cG9ydCBjb25zdCBWQVJJQUJMRV9ERUNMQVJBVElPTl9SVUxFX05BTUUgPSBcInZhcmlhYmxlRGVjbGFyYXRpb25cIjtcbmV4cG9ydCBjb25zdCBTVEFURU1FTlRfU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSA9IFwic3RhdGVtZW50U3Vic3RpdHV0aW9uXCI7XG5leHBvcnQgY29uc3QgQ09NQklOQVRPUl9ERUNMQVJBVElPTl9SVUxFX05BTUUgPSBcImNvbWJpbmF0b3JEZWNsYXJhdGlvblwiO1xuZXhwb3J0IGNvbnN0IFRZUEVfUFJFRklYX0RFQ0xBUkFUSU9OX1JVTEVfTkFNRSA9IFwidHlwZVByZWZpeERlY2xhcmF0aW9uXCI7XG5leHBvcnQgY29uc3QgU0lNUExFX1RZUEVfREVDTEFSQVRJT05fUlVMRV9OQU1FID0gXCJzaW1wbGVUeXBlRGVjbGFyYXRpb25cIjtcbmV4cG9ydCBjb25zdCBDT05TVFJVQ1RPUl9ERUNMQVJBVElPTl9SVUxFX05BTUUgPSBcImNvbnN0cnVjdG9yRGVjbGFyYXRpb25cIjtcbmV4cG9ydCBjb25zdCBDT01QTEVYX1RZUEVfREVDTEFSQVRJT05fUlVMRV9OQU1FID0gXCJjb21wbGV4VHlwZURlY2xhcmF0aW9uXCI7XG5leHBvcnQgY29uc3QgTUVUQVZBUklBQkxFX0RFQ0xBUkFUSU9OX1JVTEVfTkFNRSA9IFwibWV0YXZhcmlhYmxlRGVjbGFyYXRpb25cIjtcbiJdLCJuYW1lcyI6WyJBUkdVTUVOVF9SVUxFX05BTUUiLCJBU1NVTVBUSU9OX1JVTEVfTkFNRSIsIkFYSU9NX0JPRFlfUlVMRV9OQU1FIiwiQVhJT01fSEVBREVSX1JVTEVfTkFNRSIsIkFYSU9NX1JVTEVfTkFNRSIsIkNPTUJJTkFUT1JfREVDTEFSQVRJT05fUlVMRV9OQU1FIiwiQ09NQklOQVRPUl9SVUxFX05BTUUiLCJDT01QTEVYX1RZUEVfREVDTEFSQVRJT05fUlVMRV9OQU1FIiwiQ09OQ0xVU0lPTl9SVUxFX05BTUUiLCJDT05KRUNUVVJFX0JPRFlfUlVMRV9OQU1FIiwiQ09OSkVDVFVSRV9IRUFERVJfUlVMRV9OQU1FIiwiQ09OSkVDVFVSRV9SVUxFX05BTUUiLCJDT05TVFJVQ1RPUl9ERUNMQVJBVElPTl9SVUxFX05BTUUiLCJDT05TVFJVQ1RPUl9SVUxFX05BTUUiLCJDT05UQUlORURfQVNTRVJUSU9OX1JVTEVfTkFNRSIsIkRFRFVDVElPTl9SVUxFX05BTUUiLCJERUZJTkVEX0FTU0VSVElPTl9SVUxFX05BTUUiLCJERVJJVkFUSU9OX1JVTEVfTkFNRSIsIkRPQ1VNRU5UX1JVTEVfTkFNRSIsIkVRVUFMSVRZX1JVTEVfTkFNRSIsIkVSUk9SX1JVTEVfTkFNRSIsIkZSQU1FX1JVTEVfTkFNRSIsIkZSQU1FX1NVQlNUSVRVVElPTl9SVUxFX05BTUUiLCJIWVBPVEhFU0lTX1JVTEVfTkFNRSIsIkpVREdFTUVOVF9SVUxFX05BTUUiLCJMQUJFTFNfUlVMRV9OQU1FIiwiTEFCRUxfUlVMRV9OQU1FIiwiTEVNTUFfQk9EWV9SVUxFX05BTUUiLCJMRU1NQV9IRUFERVJfUlVMRV9OQU1FIiwiTEVNTUFfUlVMRV9OQU1FIiwiTUVUQVRIRU9SRU1fQk9EWV9SVUxFX05BTUUiLCJNRVRBVEhFT1JFTV9IRUFERVJfUlVMRV9OQU1FIiwiTUVUQVRIRU9SRU1fUlVMRV9OQU1FIiwiTUVUQVZBUklBQkxFX0RFQ0xBUkFUSU9OX1JVTEVfTkFNRSIsIk1FVEFWQVJJQUJMRV9SVUxFX05BTUUiLCJNRVRBX0FSR1VNRU5UX1JVTEVfTkFNRSIsIk1FVEFfTEVNTUFfQk9EWV9SVUxFX05BTUUiLCJNRVRBX0xFTU1BX0hFQURFUl9SVUxFX05BTUUiLCJNRVRBX0xFTU1BX1JVTEVfTkFNRSIsIk1FVEFfVFlQRV9SVUxFX05BTUUiLCJOT05TRU5TRV9SVUxFX05BTUUiLCJQQVJBTUVURVJfUlVMRV9OQU1FIiwiUEFSRU5USEVTSVNFRF9MQUJFTFNfUlVMRV9OQU1FIiwiUEFSRU5USEVTSVNFRF9MQUJFTF9SVUxFX05BTUUiLCJQTEFDRUhPTERFUl9SVUxFX05BTUUiLCJQUkVNSVNFX1JVTEVfTkFNRSIsIlBST0NFRFVSRV9DQUxMX1JVTEVfTkFNRSIsIlBST0NFRFVSRV9SRUZFUkVOQ0VfUlVMRV9OQU1FIiwiUFJPT0ZfUlVMRV9OQU1FIiwiUFJPUEVSVFlfQVNTRVJUSU9OX1JVTEVfTkFNRSIsIlBST1BFUlRZX0RFQ0xBUkFUSU9OX1JVTEVfTkFNRSIsIlBST1BFUlRZX1JFTEFUSU9OX1JVTEVfTkFNRSIsIlBST1BFUlRZX1JVTEVfTkFNRSIsIlFVQUxJRklDQVRJT05fUlVMRV9OQU1FIiwiUkVGRVJFTkNFX1JVTEVfTkFNRSIsIlJVTEVfQk9EWV9SVUxFX05BTUUiLCJSVUxFX0hFQURFUl9SVUxFX05BTUUiLCJSVUxFX1JVTEVfTkFNRSIsIlNBVElTRklFU19BU1NFUlRJT05fUlVMRV9OQU1FIiwiU0VDVElPTl9SVUxFX05BTUUiLCJTSUdOQVRVUkVfUlVMRV9OQU1FIiwiU0lNUExFX1RZUEVfREVDTEFSQVRJT05fUlVMRV9OQU1FIiwiU1RBVEVNRU5UX1JVTEVfTkFNRSIsIlNUQVRFTUVOVF9TVUJTVElUVVRJT05fUlVMRV9OQU1FIiwiU1RFUF9SVUxFX05BTUUiLCJTVUJQUk9PRl9BU1NFUlRJT05fUlVMRV9OQU1FIiwiU1VCUFJPT0ZfUlVMRV9OQU1FIiwiU1VCX0RFUklWQVRJT05fUlVMRV9OQU1FIiwiU1VQUE9TSVRJT05fUlVMRV9OQU1FIiwiVEVSTV9SVUxFX05BTUUiLCJURVJNX1NVQlNUSVRVVElPTl9SVUxFX05BTUUiLCJUSEVPUkVNX0JPRFlfUlVMRV9OQU1FIiwiVEhFT1JFTV9IRUFERVJfUlVMRV9OQU1FIiwiVEhFT1JFTV9SVUxFX05BTUUiLCJUWVBFU19SVUxFX05BTUUiLCJUWVBFX0FTU0VSVElPTl9SVUxFX05BTUUiLCJUWVBFX1BSRUZJWF9ERUNMQVJBVElPTl9SVUxFX05BTUUiLCJUWVBFX1BSRUZJWF9SVUxFX05BTUUiLCJUWVBFX1JVTEVfTkFNRSIsIlZBUklBQkxFX0RFQ0xBUkFUSU9OX1JVTEVfTkFNRSIsIlZBUklBQkxFX1JVTEVfTkFNRSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBaUJhQTtlQUFBQTs7UUF1QkFDO2VBQUFBOztRQVBBQztlQUFBQTs7UUFjQUM7ZUFBQUE7O1FBdkNBQztlQUFBQTs7UUFxRUFDO2VBQUFBOztRQTFDQUM7ZUFBQUE7O1FBOENBQztlQUFBQTs7UUE3Q0FDO2VBQUFBOztRQXNCQUM7ZUFBQUE7O1FBR0FDO2VBQUFBOztRQXhCQUM7ZUFBQUE7O1FBMkNBQztlQUFBQTs7UUFuQ0FDO2VBQUFBOztRQTBCQUM7ZUFBQUE7O1FBM0NBQztlQUFBQTs7UUFtQ0FDO2VBQUFBOztRQXpCQUM7ZUFBQUE7O1FBZkFDO2VBQUFBOztRQUpBQztlQUFBQTs7UUFWQUM7ZUFBQUE7O1FBQ0FDO2VBQUFBOztRQTBEQUM7ZUFBQUE7O1FBN0JBQztlQUFBQTs7UUFWQUM7ZUFBQUE7O1FBaEJBQztlQUFBQTs7UUFEQUM7ZUFBQUE7O1FBc0JBQztlQUFBQTs7UUFjQUM7ZUFBQUE7O1FBekNBQztlQUFBQTs7UUFvREFDO2VBQUFBOztR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
342
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9ydWxlTmFtZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBSVUxFX1JVTEVfTkFNRSA9IFwicnVsZVwiO1xuZXhwb3J0IGNvbnN0IFNURVBfUlVMRV9OQU1FID0gXCJzdGVwXCI7XG5leHBvcnQgY29uc3QgVEVSTV9SVUxFX05BTUUgPSBcInRlcm1cIjtcbmV4cG9ydCBjb25zdCBUWVBFX1JVTEVfTkFNRSA9IFwidHlwZVwiO1xuZXhwb3J0IGNvbnN0IFRZUEVTX1JVTEVfTkFNRSA9IFwidHlwZXNcIjtcbmV4cG9ydCBjb25zdCBMRU1NQV9SVUxFX05BTUUgPSBcImxlbW1hXCI7XG5leHBvcnQgY29uc3QgQVhJT01fUlVMRV9OQU1FID0gXCJheGlvbVwiO1xuZXhwb3J0IGNvbnN0IEVSUk9SX1JVTEVfTkFNRSA9IFwiZXJyb3JcIjtcbmV4cG9ydCBjb25zdCBGUkFNRV9SVUxFX05BTUUgPSBcImZyYW1lXCI7XG5leHBvcnQgY29uc3QgUFJPT0ZfUlVMRV9OQU1FID0gXCJwcm9vZlwiO1xuZXhwb3J0IGNvbnN0IExBQkVMX1JVTEVfTkFNRSA9IFwibGFiZWxcIjtcbmV4cG9ydCBjb25zdCBMQUJFTFNfUlVMRV9OQU1FID0gXCJsYWJlbHNcIjtcbmV4cG9ydCBjb25zdCBUSEVPUkVNX1JVTEVfTkFNRSA9IFwidGhlb3JlbVwiO1xuZXhwb3J0IGNvbnN0IFBSRU1JU0VfUlVMRV9OQU1FID0gXCJwcmVtaXNlXCI7XG5leHBvcnQgY29uc3QgU0VDVElPTl9SVUxFX05BTUUgPSBcInNlY3Rpb25cIjtcbmV4cG9ydCBjb25zdCBBUkdVTUVOVF9SVUxFX05BTUUgPSBcImFyZ3VtZW50XCI7XG5leHBvcnQgY29uc3QgUFJPUEVSVFlfUlVMRV9OQU1FID0gXCJwcm9wZXJ0eVwiO1xuZXhwb3J0IGNvbnN0IEVRVUFMSVRZX1JVTEVfTkFNRSA9IFwiZXF1YWxpdHlcIjtcbmV4cG9ydCBjb25zdCBWQVJJQUJMRV9SVUxFX05BTUUgPSBcInZhcmlhYmxlXCI7XG5leHBvcnQgY29uc3QgU1VCUFJPT0ZfUlVMRV9OQU1FID0gXCJzdWJwcm9vZlwiO1xuZXhwb3J0IGNvbnN0IERPQ1VNRU5UX1JVTEVfTkFNRSA9IFwiZG9jdW1lbnRcIjtcbmV4cG9ydCBjb25zdCBSVUxFX0JPRFlfUlVMRV9OQU1FID0gXCJydWxlQm9keVwiO1xuZXhwb3J0IGNvbnN0IE1FVEFfVFlQRV9SVUxFX05BTUUgPSBcIm1ldGFUeXBlXCI7XG5leHBvcnQgY29uc3QgU0lHTkFUVVJFX1JVTEVfTkFNRSA9IFwic2lnbmF0dXJlXCI7XG5leHBvcnQgY29uc3QgUEFSQU1FVEVSX1JVTEVfTkFNRSA9IFwicGFyYW1ldGVyXCI7XG5leHBvcnQgY29uc3QgREVEVUNUSU9OX1JVTEVfTkFNRSA9IFwiZGVkdWN0aW9uXCI7XG5leHBvcnQgY29uc3QgSlVER0VNRU5UX1JVTEVfTkFNRSA9IFwianVkZ2VtZW50XCI7XG5leHBvcnQgY29uc3QgUkVGRVJFTkNFX1JVTEVfTkFNRSA9IFwicmVmZXJlbmNlXCI7XG5leHBvcnQgY29uc3QgU1RBVEVNRU5UX1JVTEVfTkFNRSA9IFwic3RhdGVtZW50XCI7XG5leHBvcnQgY29uc3QgTUVUQV9MRU1NQV9SVUxFX05BTUUgPSBcIm1ldGFMZW1tYVwiO1xuZXhwb3J0IGNvbnN0IEFYSU9NX0JPRFlfUlVMRV9OQU1FID0gXCJheGlvbUJvZHlcIjtcbmV4cG9ydCBjb25zdCBMRU1NQV9CT0RZX1JVTEVfTkFNRSA9IFwibGVtbWFCb2R5XCI7XG5leHBvcnQgY29uc3QgQ09NQklOQVRPUl9SVUxFX05BTUUgPSBcImNvbWJpbmF0b3JcIjtcbmV4cG9ydCBjb25zdCBDT05DTFVTSU9OX1JVTEVfTkFNRSA9IFwiY29uY2x1c2lvblwiO1xuZXhwb3J0IGNvbnN0IENPTkpFQ1RVUkVfUlVMRV9OQU1FID0gXCJjb25qZWN0dXJlXCI7XG5leHBvcnQgY29uc3QgREVSSVZBVElPTl9SVUxFX05BTUUgPSBcImRlcml2YXRpb25cIjtcbmV4cG9ydCBjb25zdCBIWVBPVEhFU0lTX1JVTEVfTkFNRSA9IFwiaHlwb3RoZXNpc1wiO1xuZXhwb3J0IGNvbnN0IEFTU1VNUFRJT05fUlVMRV9OQU1FID0gXCJhc3N1bXB0aW9uXCI7XG5leHBvcnQgY29uc3QgUExBQ0VIT0xERVJfUlVMRV9OQU1FID0gXCJfXCI7IC8vL1xuZXhwb3J0IGNvbnN0IFJVTEVfSEVBREVSX1JVTEVfTkFNRSA9IFwicnVsZUhlYWRlclwiO1xuZXhwb3J0IGNvbnN0IFRZUEVfUFJFRklYX1JVTEVfTkFNRSA9IFwidHlwZVByZWZpeFwiO1xuZXhwb3J0IGNvbnN0IFNVUFBPU0lUSU9OX1JVTEVfTkFNRSA9IFwic3VwcG9zaXRpb25cIjtcbmV4cG9ydCBjb25zdCBDT05TVFJVQ1RPUl9SVUxFX05BTUUgPSBcImNvbnN0cnVjdG9yXCI7XG5leHBvcnQgY29uc3QgTUVUQVRIRU9SRU1fUlVMRV9OQU1FID0gXCJtZXRhdGhlb3JlbVwiO1xuZXhwb3J0IGNvbnN0IEVRVUlWQUxFTkNFX1JVTEVfTkFNRSA9IFwiZXF1aXZhbGVuY2VcIjtcbmV4cG9ydCBjb25zdCBBWElPTV9IRUFERVJfUlVMRV9OQU1FID0gXCJheGlvbUhlYWRlclwiO1xuZXhwb3J0IGNvbnN0IExFTU1BX0hFQURFUl9SVUxFX05BTUUgPSBcImxlbW1hSGVhZGVyXCI7XG5leHBvcnQgY29uc3QgVEhFT1JFTV9CT0RZX1JVTEVfTkFNRSA9IFwidGhlb3JlbUJvZHlcIjtcbmV4cG9ydCBjb25zdCBNRVRBVkFSSUFCTEVfUlVMRV9OQU1FID0gXCJtZXRhdmFyaWFibGVcIjtcbmV4cG9ydCBjb25zdCBFUVVJVkFMRU5DRVNfUlVMRV9OQU1FID0gXCJlcXVpdmFsZW5jZXNcIjtcbmV4cG9ydCBjb25zdCBNRVRBX0FSR1VNRU5UX1JVTEVfTkFNRSA9IFwibWV0YUFyZ3VtZW50XCI7XG5leHBvcnQgY29uc3QgUVVBTElGSUNBVElPTl9SVUxFX05BTUUgPSBcInF1YWxpZmljYXRpb25cIjtcbmV4cG9ydCBjb25zdCBQUk9DRURVUkVfQ0FMTF9SVUxFX05BTUUgPSBcInByb2NlZHVyZUNhbGxcIjtcbmV4cG9ydCBjb25zdCBTVUJfREVSSVZBVElPTl9SVUxFX05BTUUgPSBcInN1YkRlcml2YXRpb25cIjtcbmV4cG9ydCBjb25zdCBUWVBFX0FTU0VSVElPTl9SVUxFX05BTUUgPSBcInR5cGVBc3NlcnRpb25cIjtcbmV4cG9ydCBjb25zdCBUSEVPUkVNX0hFQURFUl9SVUxFX05BTUUgPSBcInRoZW9yZW1IZWFkZXJcIjtcbmV4cG9ydCBjb25zdCBNRVRBX0xFTU1BX0JPRFlfUlVMRV9OQU1FID0gXCJtZXRhTGVtbWFCb2R5XCI7XG5leHBvcnQgY29uc3QgQ09OSkVDVFVSRV9CT0RZX1JVTEVfTkFNRSA9IFwiY29uamVjdHVyZUJvZHlcIjtcbmV4cG9ydCBjb25zdCBNRVRBVEhFT1JFTV9CT0RZX1JVTEVfTkFNRSA9IFwibWV0YXRoZW9yZW1Cb2R5XCI7XG5leHBvcnQgY29uc3QgTUVUQV9MRU1NQV9IRUFERVJfUlVMRV9OQU1FID0gXCJtZXRhTGVtbWFIZWFkZXJcIjtcbmV4cG9ydCBjb25zdCBDT05KRUNUVVJFX0hFQURFUl9SVUxFX05BTUUgPSBcImNvbmplY3R1cmVIZWFkZXJcIjtcbmV4cG9ydCBjb25zdCBQUk9QRVJUWV9SRUxBVElPTl9SVUxFX05BTUUgPSBcInByb3BlcnR5UmVsYXRpb25cIjtcbmV4cG9ydCBjb25zdCBERUZJTkVEX0FTU0VSVElPTl9SVUxFX05BTUUgPSBcImRlZmluZWRBc3NlcnRpb25cIjtcbmV4cG9ydCBjb25zdCBURVJNX1NVQlNUSVRVVElPTl9SVUxFX05BTUUgPSBcInRlcm1TdWJzdGl0dXRpb25cIjtcbmV4cG9ydCBjb25zdCBNRVRBVEhFT1JFTV9IRUFERVJfUlVMRV9OQU1FID0gXCJtZXRhdGhlb3JlbUhlYWRlclwiO1xuZXhwb3J0IGNvbnN0IFBST1BFUlRZX0FTU0VSVElPTl9SVUxFX05BTUUgPSBcInByb3BlcnR5QXNzZXJ0aW9uXCI7XG5leHBvcnQgY29uc3QgU1VCUFJPT0ZfQVNTRVJUSU9OX1JVTEVfTkFNRSA9IFwic3VicHJvb2ZBc3NlcnRpb25cIjtcbmV4cG9ydCBjb25zdCBGUkFNRV9TVUJTVElUVVRJT05fUlVMRV9OQU1FID0gXCJmcmFtZVN1YnN0aXR1dGlvblwiO1xuZXhwb3J0IGNvbnN0IFBBUkVOVEhFU0lTRURfTEFCRUxfUlVMRV9OQU1FID0gXCJwYXJlbnRoZXNpc2VkTGFiZWxcIjtcbmV4cG9ydCBjb25zdCBQUk9DRURVUkVfUkVGRVJFTkNFX1JVTEVfTkFNRSA9IFwicHJvY2VkdXJlUmVmZXJlbmNlXCI7XG5leHBvcnQgY29uc3QgQ09OVEFJTkVEX0FTU0VSVElPTl9SVUxFX05BTUUgPSBcImNvbnRhaW5lZEFzc2VydGlvblwiO1xuZXhwb3J0IGNvbnN0IFNBVElTRklFU19BU1NFUlRJT05fUlVMRV9OQU1FID0gXCJzYXRpc2ZpZXNBc3NlcnRpb25cIjtcbmV4cG9ydCBjb25zdCBQQVJFTlRIRVNJU0VEX0xBQkVMU19SVUxFX05BTUUgPSBcInBhcmVudGhlc2lzZWRMYWJlbHNcIjtcbmV4cG9ydCBjb25zdCBQUk9QRVJUWV9ERUNMQVJBVElPTl9SVUxFX05BTUUgPSBcInByb3BlcnR5RGVjbGFyYXRpb25cIjtcbmV4cG9ydCBjb25zdCBWQVJJQUJMRV9ERUNMQVJBVElPTl9SVUxFX05BTUUgPSBcInZhcmlhYmxlRGVjbGFyYXRpb25cIjtcbmV4cG9ydCBjb25zdCBTVEFURU1FTlRfU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSA9IFwic3RhdGVtZW50U3Vic3RpdHV0aW9uXCI7XG5leHBvcnQgY29uc3QgQ09NQklOQVRPUl9ERUNMQVJBVElPTl9SVUxFX05BTUUgPSBcImNvbWJpbmF0b3JEZWNsYXJhdGlvblwiO1xuZXhwb3J0IGNvbnN0IFRZUEVfUFJFRklYX0RFQ0xBUkFUSU9OX1JVTEVfTkFNRSA9IFwidHlwZVByZWZpeERlY2xhcmF0aW9uXCI7XG5leHBvcnQgY29uc3QgU0lNUExFX1RZUEVfREVDTEFSQVRJT05fUlVMRV9OQU1FID0gXCJzaW1wbGVUeXBlRGVjbGFyYXRpb25cIjtcbmV4cG9ydCBjb25zdCBDT05TVFJVQ1RPUl9ERUNMQVJBVElPTl9SVUxFX05BTUUgPSBcImNvbnN0cnVjdG9yRGVjbGFyYXRpb25cIjtcbmV4cG9ydCBjb25zdCBDT01QTEVYX1RZUEVfREVDTEFSQVRJT05fUlVMRV9OQU1FID0gXCJjb21wbGV4VHlwZURlY2xhcmF0aW9uXCI7XG5leHBvcnQgY29uc3QgTUVUQVZBUklBQkxFX0RFQ0xBUkFUSU9OX1JVTEVfTkFNRSA9IFwibWV0YXZhcmlhYmxlRGVjbGFyYXRpb25cIjtcbiJdLCJuYW1lcyI6WyJBUkdVTUVOVF9SVUxFX05BTUUiLCJBU1NVTVBUSU9OX1JVTEVfTkFNRSIsIkFYSU9NX0JPRFlfUlVMRV9OQU1FIiwiQVhJT01fSEVBREVSX1JVTEVfTkFNRSIsIkFYSU9NX1JVTEVfTkFNRSIsIkNPTUJJTkFUT1JfREVDTEFSQVRJT05fUlVMRV9OQU1FIiwiQ09NQklOQVRPUl9SVUxFX05BTUUiLCJDT01QTEVYX1RZUEVfREVDTEFSQVRJT05fUlVMRV9OQU1FIiwiQ09OQ0xVU0lPTl9SVUxFX05BTUUiLCJDT05KRUNUVVJFX0JPRFlfUlVMRV9OQU1FIiwiQ09OSkVDVFVSRV9IRUFERVJfUlVMRV9OQU1FIiwiQ09OSkVDVFVSRV9SVUxFX05BTUUiLCJDT05TVFJVQ1RPUl9ERUNMQVJBVElPTl9SVUxFX05BTUUiLCJDT05TVFJVQ1RPUl9SVUxFX05BTUUiLCJDT05UQUlORURfQVNTRVJUSU9OX1JVTEVfTkFNRSIsIkRFRFVDVElPTl9SVUxFX05BTUUiLCJERUZJTkVEX0FTU0VSVElPTl9SVUxFX05BTUUiLCJERVJJVkFUSU9OX1JVTEVfTkFNRSIsIkRPQ1VNRU5UX1JVTEVfTkFNRSIsIkVRVUFMSVRZX1JVTEVfTkFNRSIsIkVRVUlWQUxFTkNFU19SVUxFX05BTUUiLCJFUVVJVkFMRU5DRV9SVUxFX05BTUUiLCJFUlJPUl9SVUxFX05BTUUiLCJGUkFNRV9SVUxFX05BTUUiLCJGUkFNRV9TVUJTVElUVVRJT05fUlVMRV9OQU1FIiwiSFlQT1RIRVNJU19SVUxFX05BTUUiLCJKVURHRU1FTlRfUlVMRV9OQU1FIiwiTEFCRUxTX1JVTEVfTkFNRSIsIkxBQkVMX1JVTEVfTkFNRSIsIkxFTU1BX0JPRFlfUlVMRV9OQU1FIiwiTEVNTUFfSEVBREVSX1JVTEVfTkFNRSIsIkxFTU1BX1JVTEVfTkFNRSIsIk1FVEFUSEVPUkVNX0JPRFlfUlVMRV9OQU1FIiwiTUVUQVRIRU9SRU1fSEVBREVSX1JVTEVfTkFNRSIsIk1FVEFUSEVPUkVNX1JVTEVfTkFNRSIsIk1FVEFWQVJJQUJMRV9ERUNMQVJBVElPTl9SVUxFX05BTUUiLCJNRVRBVkFSSUFCTEVfUlVMRV9OQU1FIiwiTUVUQV9BUkdVTUVOVF9SVUxFX05BTUUiLCJNRVRBX0xFTU1BX0JPRFlfUlVMRV9OQU1FIiwiTUVUQV9MRU1NQV9IRUFERVJfUlVMRV9OQU1FIiwiTUVUQV9MRU1NQV9SVUxFX05BTUUiLCJNRVRBX1RZUEVfUlVMRV9OQU1FIiwiUEFSQU1FVEVSX1JVTEVfTkFNRSIsIlBBUkVOVEhFU0lTRURfTEFCRUxTX1JVTEVfTkFNRSIsIlBBUkVOVEhFU0lTRURfTEFCRUxfUlVMRV9OQU1FIiwiUExBQ0VIT0xERVJfUlVMRV9OQU1FIiwiUFJFTUlTRV9SVUxFX05BTUUiLCJQUk9DRURVUkVfQ0FMTF9SVUxFX05BTUUiLCJQUk9DRURVUkVfUkVGRVJFTkNFX1JVTEVfTkFNRSIsIlBST09GX1JVTEVfTkFNRSIsIlBST1BFUlRZX0FTU0VSVElPTl9SVUxFX05BTUUiLCJQUk9QRVJUWV9ERUNMQVJBVElPTl9SVUxFX05BTUUiLCJQUk9QRVJUWV9SRUxBVElPTl9SVUxFX05BTUUiLCJQUk9QRVJUWV9SVUxFX05BTUUiLCJRVUFMSUZJQ0FUSU9OX1JVTEVfTkFNRSIsIlJFRkVSRU5DRV9SVUxFX05BTUUiLCJSVUxFX0JPRFlfUlVMRV9OQU1FIiwiUlVMRV9IRUFERVJfUlVMRV9OQU1FIiwiUlVMRV9SVUxFX05BTUUiLCJTQVRJU0ZJRVNfQVNTRVJUSU9OX1JVTEVfTkFNRSIsIlNFQ1RJT05fUlVMRV9OQU1FIiwiU0lHTkFUVVJFX1JVTEVfTkFNRSIsIlNJTVBMRV9UWVBFX0RFQ0xBUkFUSU9OX1JVTEVfTkFNRSIsIlNUQVRFTUVOVF9SVUxFX05BTUUiLCJTVEFURU1FTlRfU1VCU1RJVFVUSU9OX1JVTEVfTkFNRSIsIlNURVBfUlVMRV9OQU1FIiwiU1VCUFJPT0ZfQVNTRVJUSU9OX1JVTEVfTkFNRSIsIlNVQlBST09GX1JVTEVfTkFNRSIsIlNVQl9ERVJJVkFUSU9OX1JVTEVfTkFNRSIsIlNVUFBPU0lUSU9OX1JVTEVfTkFNRSIsIlRFUk1fUlVMRV9OQU1FIiwiVEVSTV9TVUJTVElUVVRJT05fUlVMRV9OQU1FIiwiVEhFT1JFTV9CT0RZX1JVTEVfTkFNRSIsIlRIRU9SRU1fSEVBREVSX1JVTEVfTkFNRSIsIlRIRU9SRU1fUlVMRV9OQU1FIiwiVFlQRVNfUlVMRV9OQU1FIiwiVFlQRV9BU1NFUlRJT05fUlVMRV9OQU1FIiwiVFlQRV9QUkVGSVhfREVDTEFSQVRJT05fUlVMRV9OQU1FIiwiVFlQRV9QUkVGSVhfUlVMRV9OQU1FIiwiVFlQRV9SVUxFX05BTUUiLCJWQVJJQUJMRV9ERUNMQVJBVElPTl9SVUxFX05BTUUiLCJWQVJJQUJMRV9SVUxFX05BTUUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQWlCYUE7ZUFBQUE7O1FBc0JBQztlQUFBQTs7UUFQQUM7ZUFBQUE7O1FBZUFDO2VBQUFBOztRQXZDQUM7ZUFBQUE7O1FBc0VBQztlQUFBQTs7UUE1Q0FDO2VBQUFBOztRQWdEQUM7ZUFBQUE7O1FBL0NBQztlQUFBQTs7UUF3QkFDO2VBQUFBOztRQUdBQztlQUFBQTs7UUExQkFDO2VBQUFBOztRQTZDQUM7ZUFBQUE7O1FBckNBQztlQUFBQTs7UUE0QkFDO2VBQUFBOztRQTdDQUM7ZUFBQUE7O1FBcUNBQztlQUFBQTs7UUEzQkFDO2VBQUFBOztRQWZBQztlQUFBQTs7UUFIQUM7ZUFBQUE7O1FBZ0NBQztlQUFBQTs7UUFMQUM7ZUFBQUE7O1FBckNBQztlQUFBQTs7UUFDQUM7ZUFBQUE7O1FBMkRBQztlQUFBQTs7UUEvQkFDO2VBQUFBOztRQVZBQztlQUFBQTs7UUFmQUM7ZUFBQUE7O1FBREFDO2VBQUFBOztRQXFCQUM7ZUFBQUE7O1FBZUFDO2VBQUFBOztRQXpDQUM7ZUFBQUE7O1FBcURBQztlQUFBQTs7UUFNQUM7ZUFBQUE7O1FBckJBQztlQUFBQTs7UUFzQ0FDO2VBQUFBOztRQWpDQUM7ZUFBQUE7O1FBRUFDO2VBQUFBOztRQU1BQztlQUFBQTs7UUFHQUM7ZUFBQUE7O1FBOUJBQztlQUFBQTs7UUFQQUM7ZUFBQUE7O1FBRUFDO2VBQUFBOztRQWdEQUM7ZUFBQUE7O1FBSkFDO2VBQUFBOztRQTlCQUM7ZUFBQUE7O1FBekJBQztlQUFBQTs7UUF1Q0FDO2VBQUFBOztRQWlCQUM7ZUFBQUE7O1FBNURBQztlQUFBQTs7UUF3REFDO2VBQUFBOztRQVFBQztlQUFBQTs7UUFaQUM7ZUFBQUE7O1FBN0NBQztlQUFBQTs7UUFtQ0FDO2VBQUFBOztRQXhCQUM7ZUFBQUE7O1FBTkFDO2VBQUFBOztRQWtCQUM7ZUFBQUE7O1FBdkNBQztlQUFBQTs7UUF1RUFDO2VBQUFBOztRQXpEQUM7ZUFBQUE7O1FBU0FDO2VBQUFBOztRQXVEQUM7ZUFBQUE7O1FBbERBQztlQUFBQTs7UUErQ0FDO2VBQUFBOztRQTFFQUM7ZUFBQUE7O1FBaUVBQztlQUFBQTs7UUEvQ0FDO2VBQUFBOztRQWtDQUM7ZUFBQUE7O1FBWkFDO2VBQUFBOztRQXZDQUM7ZUFBQUE7O1FBNkRBQztlQUFBQTs7UUFoQkFDO2VBQUFBOztRQVFBQztlQUFBQTs7UUEzQ0FDO2VBQUFBOztRQVJBQztlQUFBQTs7UUFrREFDO2VBQUFBOztRQXVCQUM7ZUFBQUE7O1FBckNBQztlQUFBQTs7UUFyQ0FDO2VBQUFBOztRQXVFQUM7ZUFBQUE7O1FBeERBQztlQUFBQTs7O0FBbEJOLElBQU12QixpQkFBaUI7QUFDdkIsSUFBTU8saUJBQWlCO0FBQ3ZCLElBQU1LLGlCQUFpQjtBQUN2QixJQUFNUyxpQkFBaUI7QUFDdkIsSUFBTUosa0JBQWtCO0FBQ3hCLElBQU01QyxrQkFBa0I7QUFDeEIsSUFBTTNCLGtCQUFrQjtBQUN4QixJQUFNa0Isa0JBQWtCO0FBQ3hCLElBQU1DLGtCQUFrQjtBQUN4QixJQUFNMEIsa0JBQWtCO0FBQ3hCLElBQU1yQixrQkFBa0I7QUFDeEIsSUFBTUQsbUJBQW1CO0FBQ3pCLElBQU0rQyxvQkFBb0I7QUFDMUIsSUFBTTVCLG9CQUFvQjtBQUMxQixJQUFNYyxvQkFBb0I7QUFDMUIsSUFBTTVELHFCQUFxQjtBQUMzQixJQUFNcUQscUJBQXFCO0FBQzNCLElBQU1sQyxxQkFBcUI7QUFDM0IsSUFBTThELHFCQUFxQjtBQUMzQixJQUFNZCxxQkFBcUI7QUFDM0IsSUFBTWpELHFCQUFxQjtBQUMzQixJQUFNc0Msc0JBQXNCO0FBQzVCLElBQU1mLHNCQUFzQjtBQUM1QixJQUFNb0Isc0JBQXNCO0FBQzVCLElBQU1uQixzQkFBc0I7QUFDNUIsSUFBTTNCLHNCQUFzQjtBQUM1QixJQUFNVyxzQkFBc0I7QUFDNUIsSUFBTTZCLHNCQUFzQjtBQUM1QixJQUFNUSxzQkFBc0I7QUFDNUIsSUFBTXZCLHVCQUF1QjtBQUM3QixJQUFNdEMsdUJBQXVCO0FBQzdCLElBQU0yQix1QkFBdUI7QUFDN0IsSUFBTXZCLHVCQUF1QjtBQUM3QixJQUFNRSx1QkFBdUI7QUFDN0IsSUFBTUcsdUJBQXVCO0FBQzdCLElBQU1NLHVCQUF1QjtBQUM3QixJQUFNUSx1QkFBdUI7QUFDN0IsSUFBTXhCLHVCQUF1QjtBQUM3QixJQUFNNEMsd0JBQXdCLEtBQUssR0FBRztBQUN0QyxJQUFNWSx3QkFBd0I7QUFDOUIsSUFBTXFCLHdCQUF3QjtBQUM5QixJQUFNVCx3QkFBd0I7QUFDOUIsSUFBTXhELHdCQUF3QjtBQUM5QixJQUFNcUIsd0JBQXdCO0FBQzlCLElBQU1iLHdCQUF3QjtBQUM5QixJQUFNbEIseUJBQXlCO0FBQy9CLElBQU0yQix5QkFBeUI7QUFDL0IsSUFBTTBDLHlCQUF5QjtBQUMvQixJQUFNcEMseUJBQXlCO0FBQy9CLElBQU1oQix5QkFBeUI7QUFDL0IsSUFBTWlCLDBCQUEwQjtBQUNoQyxJQUFNaUIsMEJBQTBCO0FBQ2hDLElBQU1QLDJCQUEyQjtBQUNqQyxJQUFNcUIsMkJBQTJCO0FBQ2pDLElBQU1RLDJCQUEyQjtBQUNqQyxJQUFNSCwyQkFBMkI7QUFDakMsSUFBTW5DLDRCQUE0QjtBQUNsQyxJQUFNN0IsNEJBQTRCO0FBQ2xDLElBQU11Qiw2QkFBNkI7QUFDbkMsSUFBTU8sOEJBQThCO0FBQ3BDLElBQU03Qiw4QkFBOEI7QUFDcEMsSUFBTTBDLDhCQUE4QjtBQUNwQyxJQUFNcEMsOEJBQThCO0FBQ3BDLElBQU11RCw4QkFBOEI7QUFDcEMsSUFBTXRDLCtCQUErQjtBQUNyQyxJQUFNaUIsK0JBQStCO0FBQ3JDLElBQU1nQiwrQkFBK0I7QUFDckMsSUFBTTFDLCtCQUErQjtBQUNyQyxJQUFNb0IsZ0NBQWdDO0FBQ3RDLElBQU1JLGdDQUFnQztBQUN0QyxJQUFNbEMsZ0NBQWdDO0FBQ3RDLElBQU02QyxnQ0FBZ0M7QUFDdEMsSUFBTWhCLGlDQUFpQztBQUN2QyxJQUFNUSxpQ0FBaUM7QUFDdkMsSUFBTTZCLGlDQUFpQztBQUN2QyxJQUFNaEIsbUNBQW1DO0FBQ3pDLElBQU0zRCxtQ0FBbUM7QUFDekMsSUFBTXdFLG9DQUFvQztBQUMxQyxJQUFNZixvQ0FBb0M7QUFDMUMsSUFBTWxELG9DQUFvQztBQUMxQyxJQUFNTCxxQ0FBcUM7QUFDM0MsSUFBTTRCLHFDQUFxQyJ9
@@ -24,7 +24,7 @@ _export(exports, {
24
24
  });
25
25
  var _elements = /*#__PURE__*/ _interop_require_default(require("../elements"));
26
26
  var _constants = require("../constants");
27
- var _instantiate = require("../process/instantiate");
27
+ var _instance = require("../utilities/instance");
28
28
  function _interop_require_default(obj) {
29
29
  return obj && obj.__esModule ? obj : {
30
30
  default: obj
@@ -38,6 +38,13 @@ function stripBracketsFromTerm(term, context) {
38
38
  }
39
39
  return term;
40
40
  }
41
+ function stripBracketsFromTermNode(termNode) {
42
+ var bracketedTermChildNode = bracketedTermChildNodeFromTermNode(termNode);
43
+ if (bracketedTermChildNode !== null) {
44
+ termNode = bracketedTermChildNode; ///
45
+ }
46
+ return termNode;
47
+ }
41
48
  function stripBracketsFromStatement(statement, context) {
42
49
  var statementNode = statement.getNode(), bracketedStatementChildNode = bracketedStatementChildNodeFromStatementNode(statementNode);
43
50
  if (bracketedStatementChildNode !== null) {
@@ -46,13 +53,6 @@ function stripBracketsFromStatement(statement, context) {
46
53
  }
47
54
  return statement;
48
55
  }
49
- function stripBracketsFromTermNode(termNode) {
50
- var bracketedTermChildNode = bracketedTermChildNodeFromTermNode(termNode);
51
- if (bracketedTermChildNode !== null) {
52
- termNode = bracketedTermChildNode; ///
53
- }
54
- return termNode;
55
- }
56
56
  function stripBracketsFromStatementNode(statementNode) {
57
57
  var bracketedStatementChildNode = bracketedStatementChildNodeFromStatementNode(statementNode);
58
58
  if (bracketedStatementChildNode !== null) {
@@ -62,7 +62,7 @@ function stripBracketsFromStatementNode(statementNode) {
62
62
  }
63
63
  function bracketedTermChildNodeFromTermNode(termNode) {
64
64
  var bracketedTermChildNode = null;
65
- var depth = _constants.BRACKETED_TERM_DEPTH, bracketedConstructorTermNode = (0, _instantiate.instantiateBracketedConstructorTerm)(), termNodeMatchBracketedConstructorTermNode = termNode.match(bracketedConstructorTermNode, depth);
65
+ var depth = _constants.BRACKETED_TERM_DEPTH, bracketedConstructorTermNode = (0, _instance.bracketedConstructorTermFromNothing)(), termNodeMatchBracketedConstructorTermNode = termNode.match(bracketedConstructorTermNode, depth);
66
66
  if (termNodeMatchBracketedConstructorTermNode) {
67
67
  var singularTermNode = termNode.getSingularTermNode();
68
68
  bracketedTermChildNode = singularTermNode; ///
@@ -71,7 +71,7 @@ function bracketedTermChildNodeFromTermNode(termNode) {
71
71
  }
72
72
  function bracketedStatementChildNodeFromStatementNode(statementNode) {
73
73
  var bracketedStatementChildNode = null;
74
- var depth = _constants.BRACKETED_STATEMENT_DEPTH, bracketedCombinatorStatementNode = (0, _instantiate.instantiateBracketedCombinatorStatement)(), statementNodeMatchBracketedCombinatorStatementNode = statementNode.match(bracketedCombinatorStatementNode, depth);
74
+ var depth = _constants.BRACKETED_STATEMENT_DEPTH, bracketedCombinatorStatementNode = (0, _instance.bracketedCombinatorStatementFromNothing)(), statementNodeMatchBracketedCombinatorStatementNode = statementNode.match(bracketedCombinatorStatementNode, depth);
75
75
  if (statementNodeMatchBracketedCombinatorStatementNode) {
76
76
  var singularStatementNode = statementNode.getSingularStatementNode();
77
77
  bracketedStatementChildNode = singularStatementNode; ///
@@ -79,4 +79,4 @@ function bracketedStatementChildNodeFromStatementNode(statementNode) {
79
79
  return bracketedStatementChildNode;
80
80
  }
81
81
 
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYnJhY2tldHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBlbGVtZW50cyBmcm9tIFwiLi4vZWxlbWVudHNcIjtcblxuaW1wb3J0IHsgQlJBQ0tFVEVEX1RFUk1fREVQVEgsIEJSQUNLRVRFRF9TVEFURU1FTlRfREVQVEggfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUJyYWNrZXRlZENvbWJpbmF0b3JTdGF0ZW1lbnQsIGluc3RhbnRpYXRlQnJhY2tldGVkQ29uc3RydWN0b3JUZXJtIH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwQnJhY2tldHNGcm9tVGVybSh0ZXJtLCBjb250ZXh0KSB7XG4gIGNvbnN0IHRlcm1Ob2RlID0gdGVybS5nZXROb2RlKCksXG4gICAgICAgIGJyYWNrZXRlZFRlcm1DaGlsZE5vZGUgPSBicmFja2V0ZWRUZXJtQ2hpbGROb2RlRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlKTtcblxuICBpZiAoYnJhY2tldGVkVGVybUNoaWxkTm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHsgVGVybSB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgdGVybU5vZGUgPSBicmFja2V0ZWRUZXJtQ2hpbGROb2RlOyAgLy8vXG5cbiAgICB0ZXJtID0gVGVybS5mcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHRlcm07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcEJyYWNrZXRzRnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgIGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZSA9IGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZUZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gIGlmIChicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCB7IFN0YXRlbWVudCB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgc3RhdGVtZW50Tm9kZSA9IGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZTsgIC8vL1xuXG4gICAgc3RhdGVtZW50ID0gU3RhdGVtZW50LmZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwQnJhY2tldHNGcm9tVGVybU5vZGUodGVybU5vZGUpIHtcbiAgY29uc3QgYnJhY2tldGVkVGVybUNoaWxkTm9kZSA9IGJyYWNrZXRlZFRlcm1DaGlsZE5vZGVGcm9tVGVybU5vZGUodGVybU5vZGUpO1xuXG4gIGlmIChicmFja2V0ZWRUZXJtQ2hpbGROb2RlICE9PSBudWxsKSB7XG4gICAgdGVybU5vZGUgPSBicmFja2V0ZWRUZXJtQ2hpbGROb2RlOyAgLy8vXG4gIH1cblxuICByZXR1cm4gdGVybU5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcEJyYWNrZXRzRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSkge1xuICBjb25zdCBicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGUgPSBicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGVGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICBpZiAoYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlICE9PSBudWxsKSB7XG4gICAgc3RhdGVtZW50Tm9kZSA9IGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZTsgIC8vL1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudE5vZGU7XG59XG5cbmZ1bmN0aW9uIGJyYWNrZXRlZFRlcm1DaGlsZE5vZGVGcm9tVGVybU5vZGUodGVybU5vZGUpIHtcbiAgbGV0IGJyYWNrZXRlZFRlcm1DaGlsZE5vZGUgPSBudWxsO1xuXG4gIGNvbnN0IGRlcHRoID0gQlJBQ0tFVEVEX1RFUk1fREVQVEgsXG4gICAgICAgIGJyYWNrZXRlZENvbnN0cnVjdG9yVGVybU5vZGUgPSBpbnN0YW50aWF0ZUJyYWNrZXRlZENvbnN0cnVjdG9yVGVybSgpLFxuICAgICAgICB0ZXJtTm9kZU1hdGNoQnJhY2tldGVkQ29uc3RydWN0b3JUZXJtTm9kZSA9IHRlcm1Ob2RlLm1hdGNoKGJyYWNrZXRlZENvbnN0cnVjdG9yVGVybU5vZGUsIGRlcHRoKTtcblxuICBpZiAodGVybU5vZGVNYXRjaEJyYWNrZXRlZENvbnN0cnVjdG9yVGVybU5vZGUpIHtcbiAgICBjb25zdCBzaW5ndWxhclRlcm1Ob2RlID0gdGVybU5vZGUuZ2V0U2luZ3VsYXJUZXJtTm9kZSgpO1xuXG4gICAgYnJhY2tldGVkVGVybUNoaWxkTm9kZSA9IHNpbmd1bGFyVGVybU5vZGU7ICAvLy9cbiAgfVxuXG4gIHJldHVybiBicmFja2V0ZWRUZXJtQ2hpbGROb2RlO1xufVxuXG5mdW5jdGlvbiBicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGVGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKSB7XG4gIGxldCBicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGUgPSBudWxsO1xuXG4gIGNvbnN0IGRlcHRoID0gQlJBQ0tFVEVEX1NUQVRFTUVOVF9ERVBUSCxcbiAgICAgICAgYnJhY2tldGVkQ29tYmluYXRvclN0YXRlbWVudE5vZGUgPSBpbnN0YW50aWF0ZUJyYWNrZXRlZENvbWJpbmF0b3JTdGF0ZW1lbnQoKSxcbiAgICAgICAgc3RhdGVtZW50Tm9kZU1hdGNoQnJhY2tldGVkQ29tYmluYXRvclN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlLm1hdGNoKGJyYWNrZXRlZENvbWJpbmF0b3JTdGF0ZW1lbnROb2RlLCBkZXB0aCk7XG5cbiAgaWYgKHN0YXRlbWVudE5vZGVNYXRjaEJyYWNrZXRlZENvbWJpbmF0b3JTdGF0ZW1lbnROb2RlKSB7XG4gICAgY29uc3Qgc2luZ3VsYXJTdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZS5nZXRTaW5ndWxhclN0YXRlbWVudE5vZGUoKTtcblxuICAgIGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZSA9IHNpbmd1bGFyU3RhdGVtZW50Tm9kZTsgIC8vL1xuICB9XG5cbiAgcmV0dXJuIGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZTtcbn1cbiJdLCJuYW1lcyI6WyJzdHJpcEJyYWNrZXRzRnJvbVN0YXRlbWVudCIsInN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50Tm9kZSIsInN0cmlwQnJhY2tldHNGcm9tVGVybSIsInN0cmlwQnJhY2tldHNGcm9tVGVybU5vZGUiLCJ0ZXJtIiwiY29udGV4dCIsInRlcm1Ob2RlIiwiZ2V0Tm9kZSIsImJyYWNrZXRlZFRlcm1DaGlsZE5vZGUiLCJicmFja2V0ZWRUZXJtQ2hpbGROb2RlRnJvbVRlcm1Ob2RlIiwiVGVybSIsImVsZW1lbnRzIiwiZnJvbVRlcm1Ob2RlIiwic3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsImJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZSIsImJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZUZyb21TdGF0ZW1lbnROb2RlIiwiU3RhdGVtZW50IiwiZnJvbVN0YXRlbWVudE5vZGUiLCJkZXB0aCIsIkJSQUNLRVRFRF9URVJNX0RFUFRIIiwiYnJhY2tldGVkQ29uc3RydWN0b3JUZXJtTm9kZSIsImluc3RhbnRpYXRlQnJhY2tldGVkQ29uc3RydWN0b3JUZXJtIiwidGVybU5vZGVNYXRjaEJyYWNrZXRlZENvbnN0cnVjdG9yVGVybU5vZGUiLCJtYXRjaCIsInNpbmd1bGFyVGVybU5vZGUiLCJnZXRTaW5ndWxhclRlcm1Ob2RlIiwiQlJBQ0tFVEVEX1NUQVRFTUVOVF9ERVBUSCIsImJyYWNrZXRlZENvbWJpbmF0b3JTdGF0ZW1lbnROb2RlIiwiaW5zdGFudGlhdGVCcmFja2V0ZWRDb21iaW5hdG9yU3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZU1hdGNoQnJhY2tldGVkQ29tYmluYXRvclN0YXRlbWVudE5vZGUiLCJzaW5ndWxhclN0YXRlbWVudE5vZGUiLCJnZXRTaW5ndWxhclN0YXRlbWVudE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQXFCZ0JBO2VBQUFBOztRQXdCQUM7ZUFBQUE7O1FBdENBQztlQUFBQTs7UUE0QkFDO2VBQUFBOzs7K0RBakNLO3lCQUUyQzsyQkFDNkI7Ozs7OztBQUV0RixTQUFTRCxzQkFBc0JFLElBQUksRUFBRUMsT0FBTztJQUNqRCxJQUFNQyxXQUFXRixLQUFLRyxPQUFPLElBQ3ZCQyx5QkFBeUJDLG1DQUFtQ0g7SUFFbEUsSUFBSUUsMkJBQTJCLE1BQU07UUFDbkMsSUFBTSxBQUFFRSxPQUFTQyxpQkFBUSxDQUFqQkQsTUFDRkosWUFBV0Usd0JBQXlCLEdBQUc7UUFFN0NKLE9BQU9NLEtBQUtFLFlBQVksQ0FBQ04sV0FBVUQ7SUFDckM7SUFFQSxPQUFPRDtBQUNUO0FBRU8sU0FBU0osMkJBQTJCYSxTQUFTLEVBQUVSLE9BQU87SUFDM0QsSUFBTVMsZ0JBQWdCRCxVQUFVTixPQUFPLElBQ2pDUSw4QkFBOEJDLDZDQUE2Q0Y7SUFFakYsSUFBSUMsZ0NBQWdDLE1BQU07UUFDeEMsSUFBTSxBQUFFRSxZQUFjTixpQkFBUSxDQUF0Qk0sV0FDRkgsaUJBQWdCQyw2QkFBOEIsR0FBRztRQUV2REYsWUFBWUksVUFBVUMsaUJBQWlCLENBQUNKLGdCQUFlVDtJQUN6RDtJQUVBLE9BQU9RO0FBQ1Q7QUFFTyxTQUFTViwwQkFBMEJHLFFBQVE7SUFDaEQsSUFBTUUseUJBQXlCQyxtQ0FBbUNIO0lBRWxFLElBQUlFLDJCQUEyQixNQUFNO1FBQ25DRixXQUFXRSx3QkFBeUIsR0FBRztJQUN6QztJQUVBLE9BQU9GO0FBQ1Q7QUFFTyxTQUFTTCwrQkFBK0JhLGFBQWE7SUFDMUQsSUFBTUMsOEJBQThCQyw2Q0FBNkNGO0lBRWpGLElBQUlDLGdDQUFnQyxNQUFNO1FBQ3hDRCxnQkFBZ0JDLDZCQUE4QixHQUFHO0lBQ25EO0lBRUEsT0FBT0Q7QUFDVDtBQUVBLFNBQVNMLG1DQUFtQ0gsUUFBUTtJQUNsRCxJQUFJRSx5QkFBeUI7SUFFN0IsSUFBTVcsUUFBUUMsK0JBQW9CLEVBQzVCQywrQkFBK0JDLElBQUFBLGdEQUFtQyxLQUNsRUMsNENBQTRDakIsU0FBU2tCLEtBQUssQ0FBQ0gsOEJBQThCRjtJQUUvRixJQUFJSSwyQ0FBMkM7UUFDN0MsSUFBTUUsbUJBQW1CbkIsU0FBU29CLG1CQUFtQjtRQUVyRGxCLHlCQUF5QmlCLGtCQUFtQixHQUFHO0lBQ2pEO0lBRUEsT0FBT2pCO0FBQ1Q7QUFFQSxTQUFTUSw2Q0FBNkNGLGFBQWE7SUFDakUsSUFBSUMsOEJBQThCO0lBRWxDLElBQU1JLFFBQVFRLG9DQUF5QixFQUNqQ0MsbUNBQW1DQyxJQUFBQSxvREFBdUMsS0FDMUVDLHFEQUFxRGhCLGNBQWNVLEtBQUssQ0FBQ0ksa0NBQWtDVDtJQUVqSCxJQUFJVyxvREFBb0Q7UUFDdEQsSUFBTUMsd0JBQXdCakIsY0FBY2tCLHdCQUF3QjtRQUVwRWpCLDhCQUE4QmdCLHVCQUF3QixHQUFHO0lBQzNEO0lBRUEsT0FBT2hCO0FBQ1QifQ==
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYnJhY2tldHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBlbGVtZW50cyBmcm9tIFwiLi4vZWxlbWVudHNcIjtcblxuaW1wb3J0IHsgQlJBQ0tFVEVEX1RFUk1fREVQVEgsIEJSQUNLRVRFRF9TVEFURU1FTlRfREVQVEggfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBicmFja2V0ZWRDb25zdHJ1Y3RvclRlcm1Gcm9tTm90aGluZywgYnJhY2tldGVkQ29tYmluYXRvclN0YXRlbWVudEZyb21Ob3RoaW5nIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9pbnN0YW5jZVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gc3RyaXBCcmFja2V0c0Zyb21UZXJtKHRlcm0sIGNvbnRleHQpIHtcbiAgY29uc3QgdGVybU5vZGUgPSB0ZXJtLmdldE5vZGUoKSxcbiAgICAgICAgYnJhY2tldGVkVGVybUNoaWxkTm9kZSA9IGJyYWNrZXRlZFRlcm1DaGlsZE5vZGVGcm9tVGVybU5vZGUodGVybU5vZGUpO1xuXG4gIGlmIChicmFja2V0ZWRUZXJtQ2hpbGROb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgeyBUZXJtIH0gPSBlbGVtZW50cyxcbiAgICAgICAgICB0ZXJtTm9kZSA9IGJyYWNrZXRlZFRlcm1DaGlsZE5vZGU7ICAvLy9cblxuICAgIHRlcm0gPSBUZXJtLmZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gdGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwQnJhY2tldHNGcm9tVGVybU5vZGUodGVybU5vZGUpIHtcbiAgY29uc3QgYnJhY2tldGVkVGVybUNoaWxkTm9kZSA9IGJyYWNrZXRlZFRlcm1DaGlsZE5vZGVGcm9tVGVybU5vZGUodGVybU5vZGUpO1xuXG4gIGlmIChicmFja2V0ZWRUZXJtQ2hpbGROb2RlICE9PSBudWxsKSB7XG4gICAgdGVybU5vZGUgPSBicmFja2V0ZWRUZXJtQ2hpbGROb2RlOyAgLy8vXG4gIH1cblxuICByZXR1cm4gdGVybU5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcEJyYWNrZXRzRnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgIGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZSA9IGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZUZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gIGlmIChicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCB7IFN0YXRlbWVudCB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgc3RhdGVtZW50Tm9kZSA9IGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZTsgIC8vL1xuXG4gICAgc3RhdGVtZW50ID0gU3RhdGVtZW50LmZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKSB7XG4gIGNvbnN0IGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZSA9IGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZUZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gIGlmIChicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGUgIT09IG51bGwpIHtcbiAgICBzdGF0ZW1lbnROb2RlID0gYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlOyAgLy8vXG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50Tm9kZTtcbn1cblxuZnVuY3Rpb24gYnJhY2tldGVkVGVybUNoaWxkTm9kZUZyb21UZXJtTm9kZSh0ZXJtTm9kZSkge1xuICBsZXQgYnJhY2tldGVkVGVybUNoaWxkTm9kZSA9IG51bGw7XG5cbiAgY29uc3QgZGVwdGggPSBCUkFDS0VURURfVEVSTV9ERVBUSCxcbiAgICAgICAgYnJhY2tldGVkQ29uc3RydWN0b3JUZXJtTm9kZSA9IGJyYWNrZXRlZENvbnN0cnVjdG9yVGVybUZyb21Ob3RoaW5nKCksXG4gICAgICAgIHRlcm1Ob2RlTWF0Y2hCcmFja2V0ZWRDb25zdHJ1Y3RvclRlcm1Ob2RlID0gdGVybU5vZGUubWF0Y2goYnJhY2tldGVkQ29uc3RydWN0b3JUZXJtTm9kZSwgZGVwdGgpO1xuXG4gIGlmICh0ZXJtTm9kZU1hdGNoQnJhY2tldGVkQ29uc3RydWN0b3JUZXJtTm9kZSkge1xuICAgIGNvbnN0IHNpbmd1bGFyVGVybU5vZGUgPSB0ZXJtTm9kZS5nZXRTaW5ndWxhclRlcm1Ob2RlKCk7XG5cbiAgICBicmFja2V0ZWRUZXJtQ2hpbGROb2RlID0gc2luZ3VsYXJUZXJtTm9kZTsgIC8vL1xuICB9XG5cbiAgcmV0dXJuIGJyYWNrZXRlZFRlcm1DaGlsZE5vZGU7XG59XG5cbmZ1bmN0aW9uIGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZUZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpIHtcbiAgbGV0IGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZSA9IG51bGw7XG5cbiAgY29uc3QgZGVwdGggPSBCUkFDS0VURURfU1RBVEVNRU5UX0RFUFRILFxuICAgICAgICBicmFja2V0ZWRDb21iaW5hdG9yU3RhdGVtZW50Tm9kZSA9IGJyYWNrZXRlZENvbWJpbmF0b3JTdGF0ZW1lbnRGcm9tTm90aGluZygpLFxuICAgICAgICBzdGF0ZW1lbnROb2RlTWF0Y2hCcmFja2V0ZWRDb21iaW5hdG9yU3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGUubWF0Y2goYnJhY2tldGVkQ29tYmluYXRvclN0YXRlbWVudE5vZGUsIGRlcHRoKTtcblxuICBpZiAoc3RhdGVtZW50Tm9kZU1hdGNoQnJhY2tldGVkQ29tYmluYXRvclN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBzaW5ndWxhclN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlLmdldFNpbmd1bGFyU3RhdGVtZW50Tm9kZSgpO1xuXG4gICAgYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlID0gc2luZ3VsYXJTdGF0ZW1lbnROb2RlOyAgLy8vXG4gIH1cblxuICByZXR1cm4gYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlO1xufVxuIl0sIm5hbWVzIjpbInN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50Iiwic3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnROb2RlIiwic3RyaXBCcmFja2V0c0Zyb21UZXJtIiwic3RyaXBCcmFja2V0c0Zyb21UZXJtTm9kZSIsInRlcm0iLCJjb250ZXh0IiwidGVybU5vZGUiLCJnZXROb2RlIiwiYnJhY2tldGVkVGVybUNoaWxkTm9kZSIsImJyYWNrZXRlZFRlcm1DaGlsZE5vZGVGcm9tVGVybU5vZGUiLCJUZXJtIiwiZWxlbWVudHMiLCJmcm9tVGVybU5vZGUiLCJzdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwiYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlIiwiYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlRnJvbVN0YXRlbWVudE5vZGUiLCJTdGF0ZW1lbnQiLCJmcm9tU3RhdGVtZW50Tm9kZSIsImRlcHRoIiwiQlJBQ0tFVEVEX1RFUk1fREVQVEgiLCJicmFja2V0ZWRDb25zdHJ1Y3RvclRlcm1Ob2RlIiwiYnJhY2tldGVkQ29uc3RydWN0b3JUZXJtRnJvbU5vdGhpbmciLCJ0ZXJtTm9kZU1hdGNoQnJhY2tldGVkQ29uc3RydWN0b3JUZXJtTm9kZSIsIm1hdGNoIiwic2luZ3VsYXJUZXJtTm9kZSIsImdldFNpbmd1bGFyVGVybU5vZGUiLCJCUkFDS0VURURfU1RBVEVNRU5UX0RFUFRIIiwiYnJhY2tldGVkQ29tYmluYXRvclN0YXRlbWVudE5vZGUiLCJicmFja2V0ZWRDb21iaW5hdG9yU3RhdGVtZW50RnJvbU5vdGhpbmciLCJzdGF0ZW1lbnROb2RlTWF0Y2hCcmFja2V0ZWRDb21iaW5hdG9yU3RhdGVtZW50Tm9kZSIsInNpbmd1bGFyU3RhdGVtZW50Tm9kZSIsImdldFNpbmd1bGFyU3RhdGVtZW50Tm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBK0JnQkE7ZUFBQUE7O1FBY0FDO2VBQUFBOztRQXRDQUM7ZUFBQUE7O1FBY0FDO2VBQUFBOzs7K0RBbkJLO3lCQUUyQzt3QkFDNkI7Ozs7OztBQUV0RixTQUFTRCxzQkFBc0JFLElBQUksRUFBRUMsT0FBTztJQUNqRCxJQUFNQyxXQUFXRixLQUFLRyxPQUFPLElBQ3ZCQyx5QkFBeUJDLG1DQUFtQ0g7SUFFbEUsSUFBSUUsMkJBQTJCLE1BQU07UUFDbkMsSUFBTSxBQUFFRSxPQUFTQyxpQkFBUSxDQUFqQkQsTUFDRkosWUFBV0Usd0JBQXlCLEdBQUc7UUFFN0NKLE9BQU9NLEtBQUtFLFlBQVksQ0FBQ04sV0FBVUQ7SUFDckM7SUFFQSxPQUFPRDtBQUNUO0FBRU8sU0FBU0QsMEJBQTBCRyxRQUFRO0lBQ2hELElBQU1FLHlCQUF5QkMsbUNBQW1DSDtJQUVsRSxJQUFJRSwyQkFBMkIsTUFBTTtRQUNuQ0YsV0FBV0Usd0JBQXlCLEdBQUc7SUFDekM7SUFFQSxPQUFPRjtBQUNUO0FBRU8sU0FBU04sMkJBQTJCYSxTQUFTLEVBQUVSLE9BQU87SUFDM0QsSUFBTVMsZ0JBQWdCRCxVQUFVTixPQUFPLElBQ2pDUSw4QkFBOEJDLDZDQUE2Q0Y7SUFFakYsSUFBSUMsZ0NBQWdDLE1BQU07UUFDeEMsSUFBTSxBQUFFRSxZQUFjTixpQkFBUSxDQUF0Qk0sV0FDRkgsaUJBQWdCQyw2QkFBOEIsR0FBRztRQUV2REYsWUFBWUksVUFBVUMsaUJBQWlCLENBQUNKLGdCQUFlVDtJQUN6RDtJQUVBLE9BQU9RO0FBQ1Q7QUFFTyxTQUFTWiwrQkFBK0JhLGFBQWE7SUFDMUQsSUFBTUMsOEJBQThCQyw2Q0FBNkNGO0lBRWpGLElBQUlDLGdDQUFnQyxNQUFNO1FBQ3hDRCxnQkFBZ0JDLDZCQUE4QixHQUFHO0lBQ25EO0lBRUEsT0FBT0Q7QUFDVDtBQUVBLFNBQVNMLG1DQUFtQ0gsUUFBUTtJQUNsRCxJQUFJRSx5QkFBeUI7SUFFN0IsSUFBTVcsUUFBUUMsK0JBQW9CLEVBQzVCQywrQkFBK0JDLElBQUFBLDZDQUFtQyxLQUNsRUMsNENBQTRDakIsU0FBU2tCLEtBQUssQ0FBQ0gsOEJBQThCRjtJQUUvRixJQUFJSSwyQ0FBMkM7UUFDN0MsSUFBTUUsbUJBQW1CbkIsU0FBU29CLG1CQUFtQjtRQUVyRGxCLHlCQUF5QmlCLGtCQUFtQixHQUFHO0lBQ2pEO0lBRUEsT0FBT2pCO0FBQ1Q7QUFFQSxTQUFTUSw2Q0FBNkNGLGFBQWE7SUFDakUsSUFBSUMsOEJBQThCO0lBRWxDLElBQU1JLFFBQVFRLG9DQUF5QixFQUNqQ0MsbUNBQW1DQyxJQUFBQSxpREFBdUMsS0FDMUVDLHFEQUFxRGhCLGNBQWNVLEtBQUssQ0FBQ0ksa0NBQWtDVDtJQUVqSCxJQUFJVyxvREFBb0Q7UUFDdEQsSUFBTUMsd0JBQXdCakIsY0FBY2tCLHdCQUF3QjtRQUVwRWpCLDhCQUE4QmdCLHVCQUF3QixHQUFHO0lBQzNEO0lBRUEsT0FBT2hCO0FBQ1QifQ==