occam-verify-cli 1.0.438 → 1.0.448
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/context/file.js +42 -39
- package/lib/context/local.js +34 -34
- package/lib/context/release.js +3 -7
- package/lib/context/temporary.js +26 -26
- package/lib/element/assertion/contained.js +45 -45
- package/lib/element/assertion/defined.js +13 -13
- package/lib/element/assertion/property.js +23 -22
- package/lib/element/assertion/satisfies.js +7 -6
- package/lib/element/assertion/subproof.js +20 -17
- package/lib/element/assertion/type.js +3 -2
- package/lib/element/assertion.js +1 -23
- package/lib/element/assumption.js +24 -22
- package/lib/element/axiom.js +27 -30
- package/lib/element/axiomLemmaTheoremConjecture.js +50 -57
- package/lib/element/{statement/combinator → combinator}/bracketed.js +16 -16
- package/lib/element/combinator.js +229 -0
- package/lib/element/conclusion.js +11 -9
- package/lib/element/{term/constructor → constructor}/bracketed.js +5 -5
- package/lib/element/constructor.js +232 -0
- package/lib/element/declaration/combinator.js +2 -16
- package/lib/element/declaration/complexType.js +12 -12
- package/lib/element/declaration/constructor.js +13 -11
- package/lib/element/declaration/simpleType.js +4 -4
- package/lib/element/declaration/typePrefix.js +2 -2
- package/lib/element/declaration/variable.js +3 -3
- package/lib/element/deduction.js +11 -9
- package/lib/element/derivation.js +17 -20
- package/lib/element/equivalence.js +10 -10
- package/lib/element/equivalences.js +5 -5
- package/lib/element/frame.js +32 -38
- package/lib/element/hypothesis.js +16 -57
- package/lib/element/judgement.js +6 -4
- package/lib/element/label.js +8 -8
- package/lib/element/metaLemmaMetatheorem.js +6 -39
- package/lib/element/metaType.js +17 -80
- package/lib/element/metavariable.js +38 -34
- package/lib/element/parameter.js +3 -3
- package/lib/element/premise.js +92 -174
- package/lib/element/proof.js +7 -7
- package/lib/element/proofAssertion.js +203 -0
- package/lib/element/property.js +9 -9
- package/lib/element/propertyRelation.js +13 -13
- package/lib/element/reference.js +16 -17
- package/lib/element/rule.js +46 -46
- package/lib/element/signature.js +11 -11
- package/lib/element/statement.js +18 -18
- package/lib/element/step.js +73 -124
- package/lib/element/subDerivation.js +17 -20
- package/lib/element/subproof.js +16 -24
- package/lib/element/substitution/frame.js +1 -7
- package/lib/element/substitution/reference.js +2 -3
- package/lib/element/substitution/statement.js +44 -15
- package/lib/element/substitution/term.js +10 -57
- package/lib/element/substitution.js +5 -11
- package/lib/element/substitutions.js +29 -29
- package/lib/element/supposition.js +95 -177
- package/lib/element/term.js +21 -34
- package/lib/element/type.js +47 -60
- package/lib/element/typePrefix.js +5 -5
- package/lib/element/variable.js +9 -9
- package/lib/element.js +9 -3
- package/lib/metaTypes.js +63 -0
- package/lib/node/axiomLemmaTheoremConjecture.js +9 -9
- package/lib/node/body/axiom.js +2 -25
- package/lib/node/body/conjecture.js +2 -25
- package/lib/node/body/lemma.js +2 -25
- package/lib/node/body/metaLemma.js +2 -25
- package/lib/node/body/metatheorem.js +2 -25
- package/lib/node/body/rule.js +15 -1
- package/lib/node/body/theorem.js +2 -25
- package/lib/node/body.js +25 -2
- package/lib/node/combinator.js +11 -2
- package/lib/node/constructor.js +11 -2
- package/lib/node/declaration/combinator.js +5 -5
- package/lib/node/declaration/constructor.js +8 -8
- package/lib/node/declaration/property.js +15 -15
- package/lib/node/declaration/simpleType.js +31 -31
- package/lib/node/declaration/variable.js +8 -8
- package/lib/node/equality.js +8 -8
- package/lib/node/frame.js +20 -20
- package/lib/node/header.js +22 -22
- package/lib/node/metaLemmaMetaTheorem.js +16 -16
- package/lib/node/metavariable.js +15 -15
- package/lib/node/property.js +8 -8
- package/lib/node/propertyRelation.js +8 -8
- package/lib/node/rule.js +16 -16
- package/lib/node/statement.js +12 -12
- package/lib/node/step.js +22 -22
- package/lib/node/subDerivation.js +1 -8
- package/lib/node/subproof.js +5 -12
- package/lib/node/substitution/frame.js +19 -19
- package/lib/node/substitution/statement.js +19 -19
- package/lib/node/substitution/term.js +19 -19
- package/lib/node/term.js +35 -35
- package/lib/preamble.js +5 -5
- package/lib/process/instantiate.js +20 -2
- package/lib/process/unify.js +39 -42
- package/lib/process/validate.js +431 -0
- package/lib/process/verify.js +44 -135
- package/lib/types.js +27 -0
- package/lib/utilities/brackets.js +9 -14
- package/lib/utilities/element.js +91 -55
- package/lib/utilities/instance.js +41 -28
- package/lib/utilities/statement.js +2 -2
- package/lib/utilities/string.js +25 -14
- package/lib/utilities/unification.js +237 -0
- package/lib/utilities/validation.js +251 -0
- package/package.json +6 -6
- package/src/context/file.js +40 -34
- package/src/context/local.js +34 -34
- package/src/context/release.js +2 -6
- package/src/context/temporary.js +15 -15
- package/src/element/assertion/contained.js +19 -20
- package/src/element/assertion/defined.js +11 -12
- package/src/element/assertion/property.js +20 -20
- package/src/element/assertion/satisfies.js +6 -6
- package/src/element/assertion/subproof.js +17 -15
- package/src/element/assertion/type.js +2 -2
- package/src/element/assertion.js +0 -2
- package/src/element/assumption.js +22 -19
- package/src/element/axiom.js +33 -37
- package/src/element/axiomLemmaTheoremConjecture.js +54 -73
- package/src/element/{statement/combinator → combinator}/bracketed.js +7 -7
- package/src/element/combinator.js +90 -0
- package/src/element/conclusion.js +12 -10
- package/src/element/{term/constructor → constructor}/bracketed.js +5 -5
- package/src/element/{term/constructor.js → constructor.js} +17 -25
- package/src/element/declaration/combinator.js +1 -22
- package/src/element/declaration/complexType.js +11 -11
- package/src/element/declaration/constructor.js +13 -10
- package/src/element/declaration/simpleType.js +3 -3
- package/src/element/declaration/typePrefix.js +1 -1
- package/src/element/declaration/variable.js +2 -2
- package/src/element/deduction.js +12 -9
- package/src/element/derivation.js +15 -19
- package/src/element/equivalence.js +8 -8
- package/src/element/equivalences.js +4 -4
- package/src/element/frame.js +28 -30
- package/src/element/hypothesis.js +16 -18
- package/src/element/judgement.js +6 -3
- package/src/element/label.js +4 -4
- package/src/element/metaLemmaMetatheorem.js +5 -69
- package/src/element/metaType.js +9 -45
- package/src/element/metavariable.js +34 -31
- package/src/element/parameter.js +2 -2
- package/src/element/premise.js +124 -99
- package/src/element/proof.js +6 -6
- package/src/element/proofAssertion.js +76 -0
- package/src/element/property.js +6 -6
- package/src/element/propertyRelation.js +11 -11
- package/src/element/reference.js +14 -21
- package/src/element/rule.js +39 -38
- package/src/element/signature.js +10 -9
- package/src/element/statement.js +16 -18
- package/src/element/step.js +78 -78
- package/src/element/subDerivation.js +15 -19
- package/src/element/subproof.js +11 -19
- package/src/element/substitution/frame.js +0 -2
- package/src/element/substitution/reference.js +1 -5
- package/src/element/substitution/statement.js +44 -14
- package/src/element/substitution/term.js +10 -13
- package/src/element/substitution.js +3 -5
- package/src/element/substitutions.js +48 -30
- package/src/element/supposition.js +127 -108
- package/src/element/term.js +18 -28
- package/src/element/type.js +42 -36
- package/src/element/typePrefix.js +3 -3
- package/src/element/variable.js +7 -7
- package/src/element.js +3 -1
- package/src/metaTypes.js +55 -0
- package/src/node/axiomLemmaTheoremConjecture.js +6 -6
- package/src/node/body/axiom.js +0 -21
- package/src/node/body/conjecture.js +0 -23
- package/src/node/body/lemma.js +0 -23
- package/src/node/body/metaLemma.js +0 -23
- package/src/node/body/metatheorem.js +0 -23
- package/src/node/body/rule.js +12 -0
- package/src/node/body/theorem.js +0 -23
- package/src/node/body.js +23 -0
- package/src/node/combinator.js +9 -0
- package/src/node/constructor.js +9 -0
- package/src/node/declaration/combinator.js +5 -5
- package/src/node/declaration/constructor.js +8 -8
- package/src/node/declaration/property.js +14 -14
- package/src/node/declaration/simpleType.js +31 -31
- package/src/node/declaration/variable.js +7 -7
- package/src/node/equality.js +7 -7
- package/src/node/frame.js +21 -21
- package/src/node/header.js +22 -22
- package/src/node/metaLemmaMetaTheorem.js +14 -14
- package/src/node/metavariable.js +14 -14
- package/src/node/property.js +7 -7
- package/src/node/propertyRelation.js +7 -7
- package/src/node/rule.js +15 -15
- package/src/node/statement.js +12 -12
- package/src/node/step.js +21 -21
- package/src/node/subDerivation.js +0 -7
- package/src/node/subproof.js +4 -11
- package/src/node/substitution/frame.js +18 -18
- package/src/node/substitution/statement.js +18 -18
- package/src/node/substitution/term.js +18 -18
- package/src/node/term.js +34 -34
- package/src/preamble.js +4 -4
- package/src/process/instantiate.js +12 -0
- package/src/process/unify.js +53 -57
- package/src/process/validate.js +316 -0
- package/src/process/verify.js +50 -138
- package/src/types.js +18 -0
- package/src/utilities/brackets.js +15 -14
- package/src/utilities/element.js +125 -82
- package/src/utilities/instance.js +42 -24
- package/src/utilities/statement.js +2 -2
- package/src/utilities/string.js +38 -24
- package/src/{mixins/step/unify.js → utilities/unification.js} +99 -85
- package/src/{mixins/statement/validate.js → utilities/validation.js} +143 -69
- package/lib/element/statement/combinator.js +0 -105
- package/lib/element/term/constructor.js +0 -172
- package/lib/mixins/statement/validate.js +0 -198
- package/lib/mixins/step/unify.js +0 -228
- package/lib/mixins/term/verify.js +0 -65
- package/src/element/statement/combinator.js +0 -59
- package/src/mixins/term/verify.js +0 -81
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "unifyStatements", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return unifyStatements;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _necessary = require("necessary");
|
|
12
|
+
var _elements = /*#__PURE__*/ _interop_require_default(require("../elements"));
|
|
13
|
+
var _statement = require("../utilities/statement");
|
|
14
|
+
function _interop_require_default(obj) {
|
|
15
|
+
return obj && obj.__esModule ? obj : {
|
|
16
|
+
default: obj
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
var backwardsSome = _necessary.arrayUtilities.backwardsSome;
|
|
20
|
+
function unifyStatementWithRule(statement, reference, satisfiesAssertion, substitutions, context) {
|
|
21
|
+
var statementUnifiesWithRule = false;
|
|
22
|
+
if (reference !== null) {
|
|
23
|
+
var rule = context.findRuleByReference(reference);
|
|
24
|
+
if (rule !== null) {
|
|
25
|
+
var ruleString = rule.getString(), statementString = statement.getString();
|
|
26
|
+
context.trace("Unifying the '".concat(statementString, "' statement with the '").concat(ruleString, "' rule..."));
|
|
27
|
+
var subproofOrProofAssertions = context.getSubproofOrProofAssertions(), statementAndSubproofOrProofAssertionsUnify = rule.unifyStatementAndSubproofOrProofAssertions(statement, subproofOrProofAssertions, context);
|
|
28
|
+
if (statementAndSubproofOrProofAssertionsUnify) {
|
|
29
|
+
statementUnifiesWithRule = true;
|
|
30
|
+
}
|
|
31
|
+
if (statementUnifiesWithRule) {
|
|
32
|
+
context.debug("...unified the '".concat(statementString, "' statement with the '").concat(ruleString, "' rule."));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return statementUnifiesWithRule;
|
|
37
|
+
}
|
|
38
|
+
function unifyStatementWithReference(statement, reference, satisfiesAssertion, substitutions, context) {
|
|
39
|
+
var statementUnifiesWithReference = false;
|
|
40
|
+
if (reference !== null) {
|
|
41
|
+
var statementString = statement.getString(), referenceString = reference.getString();
|
|
42
|
+
context.trace("Unifying the '".concat(statementString, "' statement with the '").concat(referenceString, "' reference..."));
|
|
43
|
+
var metavariableValidates = reference.validateMetavariable(context);
|
|
44
|
+
if (metavariableValidates) {
|
|
45
|
+
var StatementSubstitution = _elements.default.StatementSubstitution, metavariable = reference.getMetavariable(), statementSubstitution = StatementSubstitution.fromStatementAndMetavariable(statement, metavariable, context), substitution = statementSubstitution; ///
|
|
46
|
+
substitutions.addSubstitution(substitution, context);
|
|
47
|
+
statementUnifiesWithReference = true;
|
|
48
|
+
}
|
|
49
|
+
if (statementUnifiesWithReference) {
|
|
50
|
+
context.debug("...unified the '".concat(statementString, "' statement with the '").concat(referenceString, "' reference."));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return statementUnifiesWithReference;
|
|
54
|
+
}
|
|
55
|
+
function unifyStatementAsSatisfiesAssertion(statement, reference, satisfiesAssertion, substitutions, context) {
|
|
56
|
+
var statementUnifiesAsSatisfiesAssertion = false;
|
|
57
|
+
satisfiesAssertion = (0, _statement.satisfiesAssertionFromStatement)(statement, context);
|
|
58
|
+
if (satisfiesAssertion !== null) {
|
|
59
|
+
var statementString = statement.getString();
|
|
60
|
+
context.trace("Unifying the '".concat(statementString, "' statement as a satisfies assertion..."));
|
|
61
|
+
var stated = true, assignments = null;
|
|
62
|
+
satisfiesAssertion.verifySignature(assignments, stated, context);
|
|
63
|
+
if (reference === null) {
|
|
64
|
+
var subproofOrProofAssertions = context.getSubproofOrProofAssertions();
|
|
65
|
+
statementUnifiesAsSatisfiesAssertion = backwardsSome(subproofOrProofAssertions, function(stepsOrSubproof) {
|
|
66
|
+
var stepOrSubProofUnifiesWIthSatisfiesAssertion = stepsOrSubproof.unifyWithSatisfiesAssertion(satisfiesAssertion, context);
|
|
67
|
+
if (stepOrSubProofUnifiesWIthSatisfiesAssertion) {
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
} else {
|
|
72
|
+
var axiomLemmaTheoremOrConjecture = context.findAxiomLemmaTheoremOrConjectureByReference(reference);
|
|
73
|
+
if (axiomLemmaTheoremOrConjecture !== null) {
|
|
74
|
+
reference = satisfiesAssertion.getReference();
|
|
75
|
+
var axiom = context.findAxiomByReference(reference);
|
|
76
|
+
if (axiom !== null) {
|
|
77
|
+
var satisfiable = axiom.isSatisfiable();
|
|
78
|
+
if (satisfiable) {
|
|
79
|
+
var Substitutions = _elements.default.Substitutions, substitutions1 = Substitutions.fromNothing(), axiomLemmaTheoremOrConjectureUnifies = axiom.unifyAxiomLemmaTheoremOrConjecture(axiomLemmaTheoremOrConjecture, substitutions1, context);
|
|
80
|
+
if (axiomLemmaTheoremOrConjectureUnifies) {
|
|
81
|
+
var substitutionsCorrelates = satisfiesAssertion.correlateSubstitutions(substitutions1, context);
|
|
82
|
+
if (substitutionsCorrelates) {
|
|
83
|
+
statementUnifiesAsSatisfiesAssertion = true;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
} else {
|
|
87
|
+
var axiomString = axiom.getString();
|
|
88
|
+
context.debug("Unable to unify with the '".concat(axiomString, "' because it is not satisfiable."));
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (statementUnifiesAsSatisfiesAssertion) {
|
|
94
|
+
context.debug("...unified the '".concat(statementString, "' statement as a satisfies assertion."));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return statementUnifiesAsSatisfiesAssertion;
|
|
98
|
+
}
|
|
99
|
+
function unifyStatementWithAxiomLemmaTheoremOrConjecture(statement, reference, satisfiesAssertion, substitutions, context) {
|
|
100
|
+
var statementUnifiesWithAxiomLemmaTheoremOrConjecture = false;
|
|
101
|
+
if (reference !== null) {
|
|
102
|
+
var Substitutions = _elements.default.Substitutions, axiomLemmaTheoremOrConjecture = context.findAxiomLemmaTheoremOrConjectureByReference(reference), generalSubstitutions = substitutions; ///
|
|
103
|
+
if (axiomLemmaTheoremOrConjecture !== null) {
|
|
104
|
+
var statementString = statement.getString(), axiomLemmaTheoremOrConjectureString = reference.getString();
|
|
105
|
+
context.trace("Unifying the '".concat(statementString, "' statement with the '").concat(axiomLemmaTheoremOrConjectureString, "' axiom, lemma, theorem or conjecture..."));
|
|
106
|
+
var subproofOrProofAssertions = context.getSubproofOrProofAssertions();
|
|
107
|
+
substitutions = Substitutions.fromNothing();
|
|
108
|
+
var statementAndSubproofOrProofAssertionsUnify = axiomLemmaTheoremOrConjecture.unifyStatementAndSubproofOrProofAssertions(statement, subproofOrProofAssertions, substitutions, context);
|
|
109
|
+
if (statementAndSubproofOrProofAssertionsUnify) {
|
|
110
|
+
var StatementSubstitution = _elements.default.StatementSubstitution, metavariable = reference.getMetavariable(), statementSubstitution = StatementSubstitution.fromStatementAndMetavariable(statement, metavariable, context), substitution = statementSubstitution; ///
|
|
111
|
+
substitutions = generalSubstitutions; ///
|
|
112
|
+
substitutions.addSubstitution(substitution, context);
|
|
113
|
+
statementUnifiesWithAxiomLemmaTheoremOrConjecture = true;
|
|
114
|
+
}
|
|
115
|
+
if (statementUnifiesWithAxiomLemmaTheoremOrConjecture) {
|
|
116
|
+
context.debug("...unified the '".concat(statementString, "' statement with the '").concat(axiomLemmaTheoremOrConjectureString, "' axiom, lemma, theorem or conjecture."));
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return statementUnifiesWithAxiomLemmaTheoremOrConjecture;
|
|
121
|
+
}
|
|
122
|
+
function unifyStatementAEquality(statement, reference, satisfiesAssertion, substitutions, context) {
|
|
123
|
+
var statementUnifiesAEquality = false;
|
|
124
|
+
if (reference === null) {
|
|
125
|
+
var equality = (0, _statement.equalityFromStatement)(statement, context);
|
|
126
|
+
if (equality !== null) {
|
|
127
|
+
var statementString = statement.getString();
|
|
128
|
+
context.trace("Unifying the '".concat(statementString, "' statement as an equality..."));
|
|
129
|
+
var equalityEqual = equality.isEqual(context);
|
|
130
|
+
if (equalityEqual) {
|
|
131
|
+
statementUnifiesAEquality = true;
|
|
132
|
+
}
|
|
133
|
+
if (statementUnifiesAEquality) {
|
|
134
|
+
context.debug("...unified the '".concat(statementString, "' statement as an equality."));
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return statementUnifiesAEquality;
|
|
139
|
+
}
|
|
140
|
+
function unifyStatementAsJudgement(statement, reference, satisfiesAssertion, substitutions, context) {
|
|
141
|
+
var statementUnifiesAsJudgement = false;
|
|
142
|
+
if (reference === null) {
|
|
143
|
+
var judgement = (0, _statement.judgementFromStatement)(statement, context);
|
|
144
|
+
if (judgement !== null) {
|
|
145
|
+
var statementString = statement.getString();
|
|
146
|
+
context.trace("Unifying the '".concat(statementString, "' statement as a judgement..."));
|
|
147
|
+
statementUnifiesAsJudgement = true;
|
|
148
|
+
if (statementUnifiesAsJudgement) {
|
|
149
|
+
context.debug("...unified the '".concat(statementString, "' statement as a judgement."));
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return statementUnifiesAsJudgement;
|
|
154
|
+
}
|
|
155
|
+
function unifyStatementAsTypeAssertion(statement, reference, satisfiesAssertion, substitutions, context) {
|
|
156
|
+
var statementUnifiesAsTypeAssertion = false;
|
|
157
|
+
if (reference === null) {
|
|
158
|
+
var typeAssertion = (0, _statement.typeAssertionFromStatement)(statement, context);
|
|
159
|
+
if (typeAssertion !== null) {
|
|
160
|
+
var statementString = statement.getString();
|
|
161
|
+
context.trace("Unifying the '".concat(statementString, "' statement as a type assertion..."));
|
|
162
|
+
statementUnifiesAsTypeAssertion = true;
|
|
163
|
+
context.debug("...unified the '".concat(statementString, "' statement as a type assertion."));
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return statementUnifiesAsTypeAssertion;
|
|
167
|
+
}
|
|
168
|
+
function unifyStatementAsPropertyAssertion(statement, reference, satisfiesAssertion, substitutions, context) {
|
|
169
|
+
var statementUnifiesAsPropertyAssertion = false;
|
|
170
|
+
if (reference === null) {
|
|
171
|
+
var propertyAssertion = (0, _statement.propertyAssertionFromStatement)(statement, context);
|
|
172
|
+
if (propertyAssertion !== null) {
|
|
173
|
+
var statementString = statement.getString();
|
|
174
|
+
context.trace("Unifying the '".concat(statementString, "' statement as a property assertion..."));
|
|
175
|
+
var term = propertyAssertion.getTerm(), equivalence = context.findEquivalenceByTerm(term);
|
|
176
|
+
if (equivalence !== null) {
|
|
177
|
+
var propertyAssertionMatches = equivalence.someOtherTerm(term, function(term) {
|
|
178
|
+
var propertyRelation = propertyAssertion.getPropertyRelation(), comparesToTermAndPropertyRelation = context.compareTermAndPropertyRelation(term, propertyRelation);
|
|
179
|
+
if (comparesToTermAndPropertyRelation) {
|
|
180
|
+
return true;
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
if (propertyAssertionMatches) {
|
|
184
|
+
statementUnifiesAsPropertyAssertion = true;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
if (statementUnifiesAsPropertyAssertion) {
|
|
188
|
+
context.debug("...unified the '".concat(statementString, "' statement as a property assertion."));
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return statementUnifiesAsPropertyAssertion;
|
|
193
|
+
}
|
|
194
|
+
function unifyStatementWithSatisfiesAssertion(statement, reference, satisfiesAssertion, substitutions, context) {
|
|
195
|
+
var statementUnifiesWithSatisfiesAssertion = false;
|
|
196
|
+
if (satisfiesAssertion !== null) {
|
|
197
|
+
var statementString = statement.getString(), satisfiesAssertionString = satisfiesAssertion.getString();
|
|
198
|
+
context.trace("Unifying the '".concat(statementString, "' statememnt with the '").concat(satisfiesAssertionString, "' satisfies assertion..."));
|
|
199
|
+
var subproofOrProofAssertions = context.getSubproofOrProofAssertions(), statementUnifies = satisfiesAssertion.unifyStatementAndSubproofOrProofAssertions(statement, subproofOrProofAssertions, context);
|
|
200
|
+
if (statementUnifies) {
|
|
201
|
+
statementUnifiesWithSatisfiesAssertion = true;
|
|
202
|
+
}
|
|
203
|
+
if (statementUnifiesWithSatisfiesAssertion) {
|
|
204
|
+
context.debug("...unified the '".concat(statementString, "' statememnt with the '").concat(satisfiesAssertionString, "' satisfies assertion."));
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return statementUnifiesWithSatisfiesAssertion;
|
|
208
|
+
}
|
|
209
|
+
function compareStatementWithSubproofOrProofAssertions(statement, reference, satisfiesAssertion, substitutions, context) {
|
|
210
|
+
var statementEquatesWithStepOrSubproofs = false;
|
|
211
|
+
if (reference === null) {
|
|
212
|
+
var statementString = statement.getString();
|
|
213
|
+
context.trace("Comparing the '".concat(statementString, "' statement with the subproofs or proof asssertions..."));
|
|
214
|
+
var subproofOrProofAssertions = context.getSubproofOrProofAssertions(), statementUnifiesWithSteps = statement.compareSubproofOrProofAssertions(subproofOrProofAssertions, context);
|
|
215
|
+
if (statementUnifiesWithSteps) {
|
|
216
|
+
statementEquatesWithStepOrSubproofs = true;
|
|
217
|
+
}
|
|
218
|
+
if (statementEquatesWithStepOrSubproofs) {
|
|
219
|
+
context.debug("...compared the '".concat(statementString, "' statement with the subproofs or proof asssertions."));
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
return statementEquatesWithStepOrSubproofs;
|
|
223
|
+
}
|
|
224
|
+
var unifyStatements = [
|
|
225
|
+
unifyStatementWithRule,
|
|
226
|
+
unifyStatementWithReference,
|
|
227
|
+
unifyStatementAsSatisfiesAssertion,
|
|
228
|
+
unifyStatementWithAxiomLemmaTheoremOrConjecture,
|
|
229
|
+
unifyStatementAEquality,
|
|
230
|
+
unifyStatementAsJudgement,
|
|
231
|
+
unifyStatementAsTypeAssertion,
|
|
232
|
+
unifyStatementAsPropertyAssertion,
|
|
233
|
+
unifyStatementWithSatisfiesAssertion,
|
|
234
|
+
compareStatementWithSubproofOrProofAssertions
|
|
235
|
+
];
|
|
236
|
+
|
|
237
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdW5pZmljYXRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgZWxlbWVudHMgZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5cbmltcG9ydCB7IGVxdWFsaXR5RnJvbVN0YXRlbWVudCxcbiAgICAgICAgIGp1ZGdlbWVudEZyb21TdGF0ZW1lbnQsXG4gICAgICAgICB0eXBlQXNzZXJ0aW9uRnJvbVN0YXRlbWVudCxcbiAgICAgICAgIHByb3BlcnR5QXNzZXJ0aW9uRnJvbVN0YXRlbWVudCxcbiAgICAgICAgIHNhdGlzZmllc0Fzc2VydGlvbkZyb21TdGF0ZW1lbnQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0YXRlbWVudFwiO1xuXG5jb25zdCB7IGJhY2t3YXJkc1NvbWUgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5mdW5jdGlvbiB1bmlmeVN0YXRlbWVudFdpdGhSdWxlKHN0YXRlbWVudCwgcmVmZXJlbmNlLCBzYXRpc2ZpZXNBc3NlcnRpb24sIHN1YnN0aXR1dGlvbnMsIGNvbnRleHQpIHtcbiAgbGV0IHN0YXRlbWVudFVuaWZpZXNXaXRoUnVsZSA9IGZhbHNlO1xuXG4gIGlmIChyZWZlcmVuY2UgIT09IG51bGwpIHtcbiAgICBjb25zdCBydWxlID0gY29udGV4dC5maW5kUnVsZUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSk7XG5cbiAgICBpZiAocnVsZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgcnVsZVN0cmluZyA9IHJ1bGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgICBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7cnVsZVN0cmluZ30nIHJ1bGUuLi5gKTtcblxuICAgICAgY29uc3Qgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyA9IGNvbnRleHQuZ2V0U3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucygpLFxuICAgICAgICAgICAgc3RhdGVtZW50QW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZ5ID0gcnVsZS51bmlmeVN0YXRlbWVudEFuZFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMoc3RhdGVtZW50LCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHN0YXRlbWVudEFuZFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNVbmlmeSkge1xuICAgICAgICBzdGF0ZW1lbnRVbmlmaWVzV2l0aFJ1bGUgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGVtZW50VW5pZmllc1dpdGhSdWxlKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtydWxlU3RyaW5nfScgcnVsZS5gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50VW5pZmllc1dpdGhSdWxlO1xufVxuXG5mdW5jdGlvbiB1bmlmeVN0YXRlbWVudFdpdGhSZWZlcmVuY2Uoc3RhdGVtZW50LCByZWZlcmVuY2UsIHNhdGlzZmllc0Fzc2VydGlvbiwgc3Vic3RpdHV0aW9ucywgY29udGV4dCkge1xuICBsZXQgc3RhdGVtZW50VW5pZmllc1dpdGhSZWZlcmVuY2UgPSBmYWxzZTtcblxuICBpZiAocmVmZXJlbmNlICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICAgIHJlZmVyZW5jZVN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7cmVmZXJlbmNlU3RyaW5nfScgcmVmZXJlbmNlLi4uYCk7XG5cbiAgICBjb25zdCBtZXRhdmFyaWFibGVWYWxpZGF0ZXMgPSByZWZlcmVuY2UudmFsaWRhdGVNZXRhdmFyaWFibGUoY29udGV4dCk7XG5cbiAgICBpZiAobWV0YXZhcmlhYmxlVmFsaWRhdGVzKSB7XG4gICAgICBjb25zdCB7IFN0YXRlbWVudFN1YnN0aXR1dGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgICBtZXRhdmFyaWFibGUgPSByZWZlcmVuY2UuZ2V0TWV0YXZhcmlhYmxlKCksXG4gICAgICAgICAgICBzdGF0ZW1lbnRTdWJzdGl0dXRpb24gPSBTdGF0ZW1lbnRTdWJzdGl0dXRpb24uZnJvbVN0YXRlbWVudEFuZE1ldGF2YXJpYWJsZShzdGF0ZW1lbnQsIG1ldGF2YXJpYWJsZSwgY29udGV4dCksXG4gICAgICAgICAgICBzdWJzdGl0dXRpb24gPSBzdGF0ZW1lbnRTdWJzdGl0dXRpb247IC8vL1xuXG4gICAgICBzdWJzdGl0dXRpb25zLmFkZFN1YnN0aXR1dGlvbihzdWJzdGl0dXRpb24sIGNvbnRleHQpO1xuXG4gICAgICBzdGF0ZW1lbnRVbmlmaWVzV2l0aFJlZmVyZW5jZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHN0YXRlbWVudFVuaWZpZXNXaXRoUmVmZXJlbmNlKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7cmVmZXJlbmNlU3RyaW5nfScgcmVmZXJlbmNlLmApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnRVbmlmaWVzV2l0aFJlZmVyZW5jZTtcbn1cblxuZnVuY3Rpb24gdW5pZnlTdGF0ZW1lbnRBc1NhdGlzZmllc0Fzc2VydGlvbihzdGF0ZW1lbnQsIHJlZmVyZW5jZSwgc2F0aXNmaWVzQXNzZXJ0aW9uLCBzdWJzdGl0dXRpb25zLCBjb250ZXh0KSB7XG4gIGxldCBzdGF0ZW1lbnRVbmlmaWVzQXNTYXRpc2ZpZXNBc3NlcnRpb24gPSBmYWxzZTtcblxuICBzYXRpc2ZpZXNBc3NlcnRpb24gPSBzYXRpc2ZpZXNBc3NlcnRpb25Gcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgaWYgKHNhdGlzZmllc0Fzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBzYXRpc2ZpZXMgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBzdGF0ZWQgPSB0cnVlLFxuICAgICAgICAgIGFzc2lnbm1lbnRzID0gbnVsbDtcblxuICAgIHNhdGlzZmllc0Fzc2VydGlvbi52ZXJpZnlTaWduYXR1cmUoYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCk7XG5cbiAgICBpZiAocmVmZXJlbmNlID09PSBudWxsKSB7XG4gICAgICBjb25zdCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zID0gY29udGV4dC5nZXRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zKCk7XG5cbiAgICAgIHN0YXRlbWVudFVuaWZpZXNBc1NhdGlzZmllc0Fzc2VydGlvbiA9IGJhY2t3YXJkc1NvbWUoc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucywgKHN0ZXBzT3JTdWJwcm9vZikgPT4ge1xuICAgICAgICBjb25zdCBzdGVwT3JTdWJQcm9vZlVuaWZpZXNXSXRoU2F0aXNmaWVzQXNzZXJ0aW9uID0gc3RlcHNPclN1YnByb29mLnVuaWZ5V2l0aFNhdGlzZmllc0Fzc2VydGlvbihzYXRpc2ZpZXNBc3NlcnRpb24sIGNvbnRleHQpO1xuXG4gICAgICAgIGlmIChzdGVwT3JTdWJQcm9vZlVuaWZpZXNXSXRoU2F0aXNmaWVzQXNzZXJ0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBheGlvbUxlbW1hVGhlb3JlbU9yQ29uamVjdHVyZSA9IGNvbnRleHQuZmluZEF4aW9tTGVtbWFUaGVvcmVtT3JDb25qZWN0dXJlQnlSZWZlcmVuY2UocmVmZXJlbmNlKTtcblxuICAgICAgaWYgKGF4aW9tTGVtbWFUaGVvcmVtT3JDb25qZWN0dXJlICE9PSBudWxsKSB7XG4gICAgICAgIHJlZmVyZW5jZSA9IHNhdGlzZmllc0Fzc2VydGlvbi5nZXRSZWZlcmVuY2UoKTtcblxuICAgICAgICBjb25zdCBheGlvbSA9IGNvbnRleHQuZmluZEF4aW9tQnlSZWZlcmVuY2UocmVmZXJlbmNlKTtcblxuICAgICAgICBpZiAoYXhpb20gIT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCBzYXRpc2ZpYWJsZSA9IGF4aW9tLmlzU2F0aXNmaWFibGUoKTtcblxuICAgICAgICAgIGlmIChzYXRpc2ZpYWJsZSkge1xuICAgICAgICAgICAgY29uc3QgeyBTdWJzdGl0dXRpb25zIH0gPSBlbGVtZW50cyxcbiAgICAgICAgICAgICAgICAgIHN1YnN0aXR1dGlvbnMgPSBTdWJzdGl0dXRpb25zLmZyb21Ob3RoaW5nKCksXG4gICAgICAgICAgICAgICAgICBheGlvbUxlbW1hVGhlb3JlbU9yQ29uamVjdHVyZVVuaWZpZXMgPSBheGlvbS51bmlmeUF4aW9tTGVtbWFUaGVvcmVtT3JDb25qZWN0dXJlKGF4aW9tTGVtbWFUaGVvcmVtT3JDb25qZWN0dXJlLCBzdWJzdGl0dXRpb25zLCBjb250ZXh0KTtcblxuICAgICAgICAgICAgaWYgKGF4aW9tTGVtbWFUaGVvcmVtT3JDb25qZWN0dXJlVW5pZmllcykge1xuICAgICAgICAgICAgICBjb25zdCBzdWJzdGl0dXRpb25zQ29ycmVsYXRlcyA9IHNhdGlzZmllc0Fzc2VydGlvbi5jb3JyZWxhdGVTdWJzdGl0dXRpb25zKHN1YnN0aXR1dGlvbnMsIGNvbnRleHQpO1xuXG4gICAgICAgICAgICAgIGlmIChzdWJzdGl0dXRpb25zQ29ycmVsYXRlcykge1xuICAgICAgICAgICAgICAgIHN0YXRlbWVudFVuaWZpZXNBc1NhdGlzZmllc0Fzc2VydGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYXhpb21TdHJpbmcgPSBheGlvbS5nZXRTdHJpbmcoKTtcblxuICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgVW5hYmxlIHRvIHVuaWZ5IHdpdGggdGhlICcke2F4aW9tU3RyaW5nfScgYmVjYXVzZSBpdCBpcyBub3Qgc2F0aXNmaWFibGUuYClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RhdGVtZW50VW5pZmllc0FzU2F0aXNmaWVzQXNzZXJ0aW9uKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBzYXRpc2ZpZXMgYXNzZXJ0aW9uLmApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnRVbmlmaWVzQXNTYXRpc2ZpZXNBc3NlcnRpb247XG59XG5cbmZ1bmN0aW9uIHVuaWZ5U3RhdGVtZW50V2l0aEF4aW9tTGVtbWFUaGVvcmVtT3JDb25qZWN0dXJlKHN0YXRlbWVudCwgcmVmZXJlbmNlLCBzYXRpc2ZpZXNBc3NlcnRpb24sIHN1YnN0aXR1dGlvbnMsIGNvbnRleHQpIHtcbiAgbGV0IHN0YXRlbWVudFVuaWZpZXNXaXRoQXhpb21MZW1tYVRoZW9yZW1PckNvbmplY3R1cmUgPSBmYWxzZTtcblxuICBpZiAocmVmZXJlbmNlICE9PSBudWxsKSB7XG4gICAgY29uc3QgeyBTdWJzdGl0dXRpb25zIH0gPSBlbGVtZW50cyxcbiAgICAgICAgICBheGlvbUxlbW1hVGhlb3JlbU9yQ29uamVjdHVyZSA9IGNvbnRleHQuZmluZEF4aW9tTGVtbWFUaGVvcmVtT3JDb25qZWN0dXJlQnlSZWZlcmVuY2UocmVmZXJlbmNlKSxcbiAgICAgICAgICBnZW5lcmFsU3Vic3RpdHV0aW9ucyA9IHN1YnN0aXR1dGlvbnM7IC8vL1xuXG4gICAgaWYgKGF4aW9tTGVtbWFUaGVvcmVtT3JDb25qZWN0dXJlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgICBheGlvbUxlbW1hVGhlb3JlbU9yQ29uamVjdHVyZVN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtheGlvbUxlbW1hVGhlb3JlbU9yQ29uamVjdHVyZVN0cmluZ30nIGF4aW9tLCBsZW1tYSwgdGhlb3JlbSBvciBjb25qZWN0dXJlLi4uYCk7XG5cbiAgICAgIGNvbnN0IHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMgPSBjb250ZXh0LmdldFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMoKTtcblxuICAgICAgc3Vic3RpdHV0aW9ucyA9IFN1YnN0aXR1dGlvbnMuZnJvbU5vdGhpbmcoKTtcblxuICAgICAgY29uc3Qgc3RhdGVtZW50QW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZ5ID0gYXhpb21MZW1tYVRoZW9yZW1PckNvbmplY3R1cmUudW5pZnlTdGF0ZW1lbnRBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zKHN0YXRlbWVudCwgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucywgc3Vic3RpdHV0aW9ucywgY29udGV4dCk7XG5cbiAgICAgIGlmIChzdGF0ZW1lbnRBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZnkpIHtcbiAgICAgICAgY29uc3QgeyBTdGF0ZW1lbnRTdWJzdGl0dXRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICAgICAgICBtZXRhdmFyaWFibGUgPSByZWZlcmVuY2UuZ2V0TWV0YXZhcmlhYmxlKCksXG4gICAgICAgICAgICAgIHN0YXRlbWVudFN1YnN0aXR1dGlvbiA9IFN0YXRlbWVudFN1YnN0aXR1dGlvbi5mcm9tU3RhdGVtZW50QW5kTWV0YXZhcmlhYmxlKHN0YXRlbWVudCwgbWV0YXZhcmlhYmxlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgc3Vic3RpdHV0aW9uID0gc3RhdGVtZW50U3Vic3RpdHV0aW9uOyAgLy8vXG5cbiAgICAgICAgc3Vic3RpdHV0aW9ucyA9IGdlbmVyYWxTdWJzdGl0dXRpb25zOyAvLy9cblxuICAgICAgICBzdWJzdGl0dXRpb25zLmFkZFN1YnN0aXR1dGlvbihzdWJzdGl0dXRpb24sIGNvbnRleHQpO1xuXG4gICAgICAgIHN0YXRlbWVudFVuaWZpZXNXaXRoQXhpb21MZW1tYVRoZW9yZW1PckNvbmplY3R1cmUgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGVtZW50VW5pZmllc1dpdGhBeGlvbUxlbW1hVGhlb3JlbU9yQ29uamVjdHVyZSkge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7YXhpb21MZW1tYVRoZW9yZW1PckNvbmplY3R1cmVTdHJpbmd9JyBheGlvbSwgbGVtbWEsIHRoZW9yZW0gb3IgY29uamVjdHVyZS5gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50VW5pZmllc1dpdGhBeGlvbUxlbW1hVGhlb3JlbU9yQ29uamVjdHVyZTtcbn1cblxuZnVuY3Rpb24gdW5pZnlTdGF0ZW1lbnRBRXF1YWxpdHkoc3RhdGVtZW50LCByZWZlcmVuY2UsIHNhdGlzZmllc0Fzc2VydGlvbiwgc3Vic3RpdHV0aW9ucywgY29udGV4dCkge1xuICBsZXQgc3RhdGVtZW50VW5pZmllc0FFcXVhbGl0eSA9IGZhbHNlO1xuXG4gIGlmIChyZWZlcmVuY2UgPT09IG51bGwpIHtcbiAgICBjb25zdCBlcXVhbGl0eSA9IGVxdWFsaXR5RnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gICAgaWYgKGVxdWFsaXR5ICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYW4gZXF1YWxpdHkuLi5gKTtcblxuICAgICAgY29uc3QgZXF1YWxpdHlFcXVhbCA9IGVxdWFsaXR5LmlzRXF1YWwoY29udGV4dCk7XG5cbiAgICAgIGlmIChlcXVhbGl0eUVxdWFsKSB7XG4gICAgICAgIHN0YXRlbWVudFVuaWZpZXNBRXF1YWxpdHkgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGVtZW50VW5pZmllc0FFcXVhbGl0eSkge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYW4gZXF1YWxpdHkuYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFVuaWZpZXNBRXF1YWxpdHk7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5U3RhdGVtZW50QXNKdWRnZW1lbnQoc3RhdGVtZW50LCByZWZlcmVuY2UsIHNhdGlzZmllc0Fzc2VydGlvbiwgc3Vic3RpdHV0aW9ucywgY29udGV4dCkge1xuICBsZXQgc3RhdGVtZW50VW5pZmllc0FzSnVkZ2VtZW50ID0gZmFsc2U7XG5cbiAgaWYgKHJlZmVyZW5jZSA9PT0gbnVsbCkge1xuICAgIGNvbnN0IGp1ZGdlbWVudCA9IGp1ZGdlbWVudEZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICAgIGlmIChqdWRnZW1lbnQgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIGp1ZGdlbWVudC4uLmApO1xuXG4gICAgICBzdGF0ZW1lbnRVbmlmaWVzQXNKdWRnZW1lbnQgPSB0cnVlO1xuXG4gICAgICBpZiAoc3RhdGVtZW50VW5pZmllc0FzSnVkZ2VtZW50KSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIGp1ZGdlbWVudC5gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50VW5pZmllc0FzSnVkZ2VtZW50O1xufVxuXG5mdW5jdGlvbiB1bmlmeVN0YXRlbWVudEFzVHlwZUFzc2VydGlvbihzdGF0ZW1lbnQsIHJlZmVyZW5jZSwgc2F0aXNmaWVzQXNzZXJ0aW9uLCBzdWJzdGl0dXRpb25zLCBjb250ZXh0KSB7XG4gIGxldCBzdGF0ZW1lbnRVbmlmaWVzQXNUeXBlQXNzZXJ0aW9uID0gZmFsc2U7XG5cbiAgaWYgKHJlZmVyZW5jZSA9PT0gbnVsbCkge1xuICAgIGNvbnN0IHR5cGVBc3NlcnRpb24gPSB0eXBlQXNzZXJ0aW9uRnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gICAgaWYgKHR5cGVBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIHR5cGUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICAgIHN0YXRlbWVudFVuaWZpZXNBc1R5cGVBc3NlcnRpb24gPSB0cnVlO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSB0eXBlIGFzc2VydGlvbi5gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50VW5pZmllc0FzVHlwZUFzc2VydGlvbjtcbn1cblxuZnVuY3Rpb24gdW5pZnlTdGF0ZW1lbnRBc1Byb3BlcnR5QXNzZXJ0aW9uKHN0YXRlbWVudCwgcmVmZXJlbmNlLCBzYXRpc2ZpZXNBc3NlcnRpb24sIHN1YnN0aXR1dGlvbnMsIGNvbnRleHQpIHtcbiAgbGV0IHN0YXRlbWVudFVuaWZpZXNBc1Byb3BlcnR5QXNzZXJ0aW9uID0gZmFsc2U7XG5cbiAgaWYgKHJlZmVyZW5jZSA9PT0gbnVsbCkge1xuICAgIGNvbnN0IHByb3BlcnR5QXNzZXJ0aW9uID0gcHJvcGVydHlBc3NlcnRpb25Gcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgICBpZiAocHJvcGVydHlBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIHByb3BlcnR5IGFzc2VydGlvbi4uLmApO1xuXG4gICAgICBjb25zdCB0ZXJtID0gcHJvcGVydHlBc3NlcnRpb24uZ2V0VGVybSgpLFxuICAgICAgICAgICAgZXF1aXZhbGVuY2UgPSBjb250ZXh0LmZpbmRFcXVpdmFsZW5jZUJ5VGVybSh0ZXJtKTtcblxuICAgICAgaWYgKGVxdWl2YWxlbmNlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHByb3BlcnR5QXNzZXJ0aW9uTWF0Y2hlcyA9IGVxdWl2YWxlbmNlLnNvbWVPdGhlclRlcm0odGVybSwgKHRlcm0pID0+IHsgIC8vL1xuICAgICAgICAgIGNvbnN0IHByb3BlcnR5UmVsYXRpb24gPSBwcm9wZXJ0eUFzc2VydGlvbi5nZXRQcm9wZXJ0eVJlbGF0aW9uKCksXG4gICAgICAgICAgICAgICAgY29tcGFyZXNUb1Rlcm1BbmRQcm9wZXJ0eVJlbGF0aW9uID0gY29udGV4dC5jb21wYXJlVGVybUFuZFByb3BlcnR5UmVsYXRpb24odGVybSwgcHJvcGVydHlSZWxhdGlvbik7XG5cbiAgICAgICAgICBpZiAoY29tcGFyZXNUb1Rlcm1BbmRQcm9wZXJ0eVJlbGF0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChwcm9wZXJ0eUFzc2VydGlvbk1hdGNoZXMpIHtcbiAgICAgICAgICBzdGF0ZW1lbnRVbmlmaWVzQXNQcm9wZXJ0eUFzc2VydGlvbiA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXNBc1Byb3BlcnR5QXNzZXJ0aW9uKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIHByb3BlcnR5IGFzc2VydGlvbi5gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50VW5pZmllc0FzUHJvcGVydHlBc3NlcnRpb247XG59XG5cbmZ1bmN0aW9uIHVuaWZ5U3RhdGVtZW50V2l0aFNhdGlzZmllc0Fzc2VydGlvbihzdGF0ZW1lbnQsIHJlZmVyZW5jZSwgc2F0aXNmaWVzQXNzZXJ0aW9uLCBzdWJzdGl0dXRpb25zLCBjb250ZXh0KSB7XG4gIGxldCBzdGF0ZW1lbnRVbmlmaWVzV2l0aFNhdGlzZmllc0Fzc2VydGlvbiA9IGZhbHNlO1xuXG4gIGlmIChzYXRpc2ZpZXNBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc2F0aXNmaWVzQXNzZXJ0aW9uU3RyaW5nID0gc2F0aXNmaWVzQXNzZXJ0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVtbnQgd2l0aCB0aGUgJyR7c2F0aXNmaWVzQXNzZXJ0aW9uU3RyaW5nfScgc2F0aXNmaWVzIGFzc2VydGlvbi4uLmApO1xuXG4gICAgY29uc3Qgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyA9IGNvbnRleHQuZ2V0U3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucygpLFxuICAgICAgICAgIHN0YXRlbWVudFVuaWZpZXMgPSBzYXRpc2ZpZXNBc3NlcnRpb24udW5pZnlTdGF0ZW1lbnRBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zKHN0YXRlbWVudCwgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucywgY29udGV4dCk7XG5cbiAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgc3RhdGVtZW50VW5pZmllc1dpdGhTYXRpc2ZpZXNBc3NlcnRpb24gPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzV2l0aFNhdGlzZmllc0Fzc2VydGlvbikge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW1udCB3aXRoIHRoZSAnJHtzYXRpc2ZpZXNBc3NlcnRpb25TdHJpbmd9JyBzYXRpc2ZpZXMgYXNzZXJ0aW9uLmApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnRVbmlmaWVzV2l0aFNhdGlzZmllc0Fzc2VydGlvbjtcbn1cblxuZnVuY3Rpb24gY29tcGFyZVN0YXRlbWVudFdpdGhTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zKHN0YXRlbWVudCwgcmVmZXJlbmNlLCBzYXRpc2ZpZXNBc3NlcnRpb24sIHN1YnN0aXR1dGlvbnMsIGNvbnRleHQpIHtcbiAgbGV0IHN0YXRlbWVudEVxdWF0ZXNXaXRoU3RlcE9yU3VicHJvb2ZzID0gZmFsc2U7XG5cbiAgaWYgKHJlZmVyZW5jZSA9PT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYENvbXBhcmluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlIHN1YnByb29mcyBvciBwcm9vZiBhc3NzZXJ0aW9ucy4uLmApO1xuXG4gICAgY29uc3Qgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyA9IGNvbnRleHQuZ2V0U3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucygpLFxuICAgICAgICAgIHN0YXRlbWVudFVuaWZpZXNXaXRoU3RlcHMgPSBzdGF0ZW1lbnQuY29tcGFyZVN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMoc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucywgY29udGV4dCk7XG5cbiAgICBpZiAoc3RhdGVtZW50VW5pZmllc1dpdGhTdGVwcykge1xuICAgICAgc3RhdGVtZW50RXF1YXRlc1dpdGhTdGVwT3JTdWJwcm9vZnMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChzdGF0ZW1lbnRFcXVhdGVzV2l0aFN0ZXBPclN1YnByb29mcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4uY29tcGFyZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSBzdWJwcm9vZnMgb3IgcHJvb2YgYXNzc2VydGlvbnMuYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudEVxdWF0ZXNXaXRoU3RlcE9yU3VicHJvb2ZzO1xufVxuXG5leHBvcnQgY29uc3QgdW5pZnlTdGF0ZW1lbnRzID0gW1xuICB1bmlmeVN0YXRlbWVudFdpdGhSdWxlLFxuICB1bmlmeVN0YXRlbWVudFdpdGhSZWZlcmVuY2UsXG4gIHVuaWZ5U3RhdGVtZW50QXNTYXRpc2ZpZXNBc3NlcnRpb24sXG4gIHVuaWZ5U3RhdGVtZW50V2l0aEF4aW9tTGVtbWFUaGVvcmVtT3JDb25qZWN0dXJlLFxuICB1bmlmeVN0YXRlbWVudEFFcXVhbGl0eSxcbiAgdW5pZnlTdGF0ZW1lbnRBc0p1ZGdlbWVudCxcbiAgdW5pZnlTdGF0ZW1lbnRBc1R5cGVBc3NlcnRpb24sXG4gIHVuaWZ5U3RhdGVtZW50QXNQcm9wZXJ0eUFzc2VydGlvbixcbiAgdW5pZnlTdGF0ZW1lbnRXaXRoU2F0aXNmaWVzQXNzZXJ0aW9uLFxuICBjb21wYXJlU3RhdGVtZW50V2l0aFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNcbl07XG4iXSwibmFtZXMiOlsidW5pZnlTdGF0ZW1lbnRzIiwiYmFja3dhcmRzU29tZSIsImFycmF5VXRpbGl0aWVzIiwidW5pZnlTdGF0ZW1lbnRXaXRoUnVsZSIsInN0YXRlbWVudCIsInJlZmVyZW5jZSIsInNhdGlzZmllc0Fzc2VydGlvbiIsInN1YnN0aXR1dGlvbnMiLCJjb250ZXh0Iiwic3RhdGVtZW50VW5pZmllc1dpdGhSdWxlIiwicnVsZSIsImZpbmRSdWxlQnlSZWZlcmVuY2UiLCJydWxlU3RyaW5nIiwiZ2V0U3RyaW5nIiwic3RhdGVtZW50U3RyaW5nIiwidHJhY2UiLCJzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zIiwiZ2V0U3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyIsInN0YXRlbWVudEFuZFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNVbmlmeSIsInVuaWZ5U3RhdGVtZW50QW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyIsImRlYnVnIiwidW5pZnlTdGF0ZW1lbnRXaXRoUmVmZXJlbmNlIiwic3RhdGVtZW50VW5pZmllc1dpdGhSZWZlcmVuY2UiLCJyZWZlcmVuY2VTdHJpbmciLCJtZXRhdmFyaWFibGVWYWxpZGF0ZXMiLCJ2YWxpZGF0ZU1ldGF2YXJpYWJsZSIsIlN0YXRlbWVudFN1YnN0aXR1dGlvbiIsImVsZW1lbnRzIiwibWV0YXZhcmlhYmxlIiwiZ2V0TWV0YXZhcmlhYmxlIiwic3RhdGVtZW50U3Vic3RpdHV0aW9uIiwiZnJvbVN0YXRlbWVudEFuZE1ldGF2YXJpYWJsZSIsInN1YnN0aXR1dGlvbiIsImFkZFN1YnN0aXR1dGlvbiIsInVuaWZ5U3RhdGVtZW50QXNTYXRpc2ZpZXNBc3NlcnRpb24iLCJzdGF0ZW1lbnRVbmlmaWVzQXNTYXRpc2ZpZXNBc3NlcnRpb24iLCJzYXRpc2ZpZXNBc3NlcnRpb25Gcm9tU3RhdGVtZW50Iiwic3RhdGVkIiwiYXNzaWdubWVudHMiLCJ2ZXJpZnlTaWduYXR1cmUiLCJzdGVwc09yU3VicHJvb2YiLCJzdGVwT3JTdWJQcm9vZlVuaWZpZXNXSXRoU2F0aXNmaWVzQXNzZXJ0aW9uIiwidW5pZnlXaXRoU2F0aXNmaWVzQXNzZXJ0aW9uIiwiYXhpb21MZW1tYVRoZW9yZW1PckNvbmplY3R1cmUiLCJmaW5kQXhpb21MZW1tYVRoZW9yZW1PckNvbmplY3R1cmVCeVJlZmVyZW5jZSIsImdldFJlZmVyZW5jZSIsImF4aW9tIiwiZmluZEF4aW9tQnlSZWZlcmVuY2UiLCJzYXRpc2ZpYWJsZSIsImlzU2F0aXNmaWFibGUiLCJTdWJzdGl0dXRpb25zIiwiZnJvbU5vdGhpbmciLCJheGlvbUxlbW1hVGhlb3JlbU9yQ29uamVjdHVyZVVuaWZpZXMiLCJ1bmlmeUF4aW9tTGVtbWFUaGVvcmVtT3JDb25qZWN0dXJlIiwic3Vic3RpdHV0aW9uc0NvcnJlbGF0ZXMiLCJjb3JyZWxhdGVTdWJzdGl0dXRpb25zIiwiYXhpb21TdHJpbmciLCJ1bmlmeVN0YXRlbWVudFdpdGhBeGlvbUxlbW1hVGhlb3JlbU9yQ29uamVjdHVyZSIsInN0YXRlbWVudFVuaWZpZXNXaXRoQXhpb21MZW1tYVRoZW9yZW1PckNvbmplY3R1cmUiLCJnZW5lcmFsU3Vic3RpdHV0aW9ucyIsImF4aW9tTGVtbWFUaGVvcmVtT3JDb25qZWN0dXJlU3RyaW5nIiwidW5pZnlTdGF0ZW1lbnRBRXF1YWxpdHkiLCJzdGF0ZW1lbnRVbmlmaWVzQUVxdWFsaXR5IiwiZXF1YWxpdHkiLCJlcXVhbGl0eUZyb21TdGF0ZW1lbnQiLCJlcXVhbGl0eUVxdWFsIiwiaXNFcXVhbCIsInVuaWZ5U3RhdGVtZW50QXNKdWRnZW1lbnQiLCJzdGF0ZW1lbnRVbmlmaWVzQXNKdWRnZW1lbnQiLCJqdWRnZW1lbnQiLCJqdWRnZW1lbnRGcm9tU3RhdGVtZW50IiwidW5pZnlTdGF0ZW1lbnRBc1R5cGVBc3NlcnRpb24iLCJzdGF0ZW1lbnRVbmlmaWVzQXNUeXBlQXNzZXJ0aW9uIiwidHlwZUFzc2VydGlvbiIsInR5cGVBc3NlcnRpb25Gcm9tU3RhdGVtZW50IiwidW5pZnlTdGF0ZW1lbnRBc1Byb3BlcnR5QXNzZXJ0aW9uIiwic3RhdGVtZW50VW5pZmllc0FzUHJvcGVydHlBc3NlcnRpb24iLCJwcm9wZXJ0eUFzc2VydGlvbiIsInByb3BlcnR5QXNzZXJ0aW9uRnJvbVN0YXRlbWVudCIsInRlcm0iLCJnZXRUZXJtIiwiZXF1aXZhbGVuY2UiLCJmaW5kRXF1aXZhbGVuY2VCeVRlcm0iLCJwcm9wZXJ0eUFzc2VydGlvbk1hdGNoZXMiLCJzb21lT3RoZXJUZXJtIiwicHJvcGVydHlSZWxhdGlvbiIsImdldFByb3BlcnR5UmVsYXRpb24iLCJjb21wYXJlc1RvVGVybUFuZFByb3BlcnR5UmVsYXRpb24iLCJjb21wYXJlVGVybUFuZFByb3BlcnR5UmVsYXRpb24iLCJ1bmlmeVN0YXRlbWVudFdpdGhTYXRpc2ZpZXNBc3NlcnRpb24iLCJzdGF0ZW1lbnRVbmlmaWVzV2l0aFNhdGlzZmllc0Fzc2VydGlvbiIsInNhdGlzZmllc0Fzc2VydGlvblN0cmluZyIsInN0YXRlbWVudFVuaWZpZXMiLCJjb21wYXJlU3RhdGVtZW50V2l0aFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMiLCJzdGF0ZW1lbnRFcXVhdGVzV2l0aFN0ZXBPclN1YnByb29mcyIsInN0YXRlbWVudFVuaWZpZXNXaXRoU3RlcHMiLCJjb21wYXJlU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBNFVhQTs7O2VBQUFBOzs7eUJBMVVrQjsrREFFVjt5QkFNMkI7Ozs7OztBQUVoRCxJQUFNLEFBQUVDLGdCQUFrQkMseUJBQWMsQ0FBaENEO0FBRVIsU0FBU0UsdUJBQXVC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
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get validateStatements () {
|
|
13
|
+
return validateStatements;
|
|
14
|
+
},
|
|
15
|
+
get validateTerms () {
|
|
16
|
+
return validateTerms;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
var _elements = /*#__PURE__*/ _interop_require_default(require("../elements"));
|
|
20
|
+
var _statement = require("../utilities/statement");
|
|
21
|
+
function _interop_require_default(obj) {
|
|
22
|
+
return obj && obj.__esModule ? obj : {
|
|
23
|
+
default: obj
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function unifyTermWithBracketedConstructor(term, context, validateAhead) {
|
|
27
|
+
var termUnifiesWithBracketedConstructor;
|
|
28
|
+
var BracketedConstructor = _elements.default.BracketedConstructor, bracketedConstructor = BracketedConstructor.fromNothing();
|
|
29
|
+
termUnifiesWithBracketedConstructor = bracketedConstructor.unifyTerm(term, context, validateAhead);
|
|
30
|
+
return termUnifiesWithBracketedConstructor;
|
|
31
|
+
}
|
|
32
|
+
function unifyTermWithConstructors(term, context, validateAhead) {
|
|
33
|
+
var termUnifiesWithConstructors;
|
|
34
|
+
var constructors = context.getConstructors();
|
|
35
|
+
termUnifiesWithConstructors = constructors.some(function(constructor) {
|
|
36
|
+
var unifiesWithConstructor = constructor.unifyTerm(term, context, validateAhead);
|
|
37
|
+
if (unifiesWithConstructor) {
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
return termUnifiesWithConstructors;
|
|
42
|
+
}
|
|
43
|
+
function validateTermAsVariable(term, context, validateAhead) {
|
|
44
|
+
var termValidatesAsVariable = false;
|
|
45
|
+
var Variable = _elements.default.Variable, termNode = term.getNode(), singularVariableNode = termNode.getSingularVariableNode();
|
|
46
|
+
if (singularVariableNode !== null) {
|
|
47
|
+
var variable;
|
|
48
|
+
var termString = term.getString(), variableNode = singularVariableNode; ///
|
|
49
|
+
variable = Variable.fromVariableNode(variableNode, context);
|
|
50
|
+
context.trace("Verifying the '".concat(termString, "' term as a variable..."));
|
|
51
|
+
var variableValidates = variable.validate(context);
|
|
52
|
+
if (variableValidates) {
|
|
53
|
+
var verifiesAhead;
|
|
54
|
+
var variableIdentifier = variable.getIdentifier();
|
|
55
|
+
variable = context.findVariableByVariableIdentifier(variableIdentifier);
|
|
56
|
+
var type = variable.getType();
|
|
57
|
+
term.setType(type);
|
|
58
|
+
verifiesAhead = validateAhead();
|
|
59
|
+
termValidatesAsVariable = verifiesAhead; ///
|
|
60
|
+
}
|
|
61
|
+
if (termValidatesAsVariable) {
|
|
62
|
+
context.debug("...verified the '".concat(termString, "' term as a variable."));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return termValidatesAsVariable;
|
|
66
|
+
}
|
|
67
|
+
function validateStatementAsMetavariableAndSubstitution(statement, assignments, stated, context) {
|
|
68
|
+
var statementValidatesAsMetavariableAndSubstitution = false;
|
|
69
|
+
var metavariable = (0, _statement.metavariableFromStatement)(statement, context);
|
|
70
|
+
if (metavariable !== null) {
|
|
71
|
+
var statementString = statement.getString();
|
|
72
|
+
context.trace("Validating the '".concat(statementString, "' statement as a metavariable and substitution..."));
|
|
73
|
+
var metavariableValidates = metavariable.validate(context);
|
|
74
|
+
if (metavariableValidates) {
|
|
75
|
+
var TermSubstitution = _elements.default.TermSubstitution, FrameSubstitution = _elements.default.FrameSubstitution, frameSubstitution = FrameSubstitution.fromStatement(statement, context), termSubstitution = TermSubstitution.fromStatement(statement, context), substitution = termSubstitution || frameSubstitution;
|
|
76
|
+
if (substitution !== null) {
|
|
77
|
+
var substitutionValidates = substitution.validate(context);
|
|
78
|
+
if (substitutionValidates) {
|
|
79
|
+
statementValidatesAsMetavariableAndSubstitution = true;
|
|
80
|
+
}
|
|
81
|
+
} else {
|
|
82
|
+
statementValidatesAsMetavariableAndSubstitution = true;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (statementValidatesAsMetavariableAndSubstitution) {
|
|
86
|
+
context.debug("...validated the '".concat(statementString, "' statement as a metavariable and substitution."));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return statementValidatesAsMetavariableAndSubstitution;
|
|
90
|
+
}
|
|
91
|
+
function unifyStatementWithBracketedCombinator(statement, assignments, stated, context) {
|
|
92
|
+
stated = true; ///
|
|
93
|
+
assignments = null; ///
|
|
94
|
+
var BracketedCombinator = _elements.default.BracketedCombinator, bracketedCombinator = BracketedCombinator.fromNothing(), statementUnifiesWithBracketedCombinator = bracketedCombinator.unifyStatement(statement, assignments, stated, context);
|
|
95
|
+
return statementUnifiesWithBracketedCombinator;
|
|
96
|
+
}
|
|
97
|
+
function unifyStatementWithCombinators(statement, assignments, stated, context) {
|
|
98
|
+
stated = true; ///
|
|
99
|
+
assignments = null; ///
|
|
100
|
+
var combinators = context.getCombinators(), statementUnifiesWithCombinators = combinators.some(function(combinator) {
|
|
101
|
+
var unifiesWithCombinator = combinator.unifyStatement(statement, assignments, stated, context);
|
|
102
|
+
if (unifiesWithCombinator) {
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
return statementUnifiesWithCombinators;
|
|
107
|
+
}
|
|
108
|
+
function validateStatementAsEquality(statement, assignments, stated, context) {
|
|
109
|
+
var statementValidatesAsEquality = false;
|
|
110
|
+
var equality = (0, _statement.equalityFromStatement)(statement, context);
|
|
111
|
+
if (equality !== null) {
|
|
112
|
+
var statementString = statement.getString();
|
|
113
|
+
context.trace("Validating the '".concat(statementString, "' statement as an equality..."));
|
|
114
|
+
var equalityValidates = equality.validate(assignments, stated, context);
|
|
115
|
+
statementValidatesAsEquality = equalityValidates; ///
|
|
116
|
+
if (statementValidatesAsEquality) {
|
|
117
|
+
context.debug("...validated the '".concat(statementString, "' statement as an equality."));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return statementValidatesAsEquality;
|
|
121
|
+
}
|
|
122
|
+
function validateStatementAsJudgement(statement, assignments, stated, context) {
|
|
123
|
+
var validatesStatementAsJudgement = false;
|
|
124
|
+
var judgement = (0, _statement.judgementFromStatement)(statement, context);
|
|
125
|
+
if (judgement !== null) {
|
|
126
|
+
var statementString = statement.getString();
|
|
127
|
+
context.trace("Validating the '".concat(statementString, "' statement as a judgement..."));
|
|
128
|
+
var judgementValidates = judgement.validate(assignments, stated, context);
|
|
129
|
+
validatesStatementAsJudgement = judgementValidates; ///
|
|
130
|
+
if (validatesStatementAsJudgement) {
|
|
131
|
+
context.debug("...validated the '".concat(statementString, "' statement as a judgement."));
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return validatesStatementAsJudgement;
|
|
135
|
+
}
|
|
136
|
+
function validateStatementAsTypeAssertion(statement, assignments, stated, context) {
|
|
137
|
+
var validatesStatementAsTypeAssertion = false;
|
|
138
|
+
var typeAssertion = (0, _statement.typeAssertionFromStatement)(statement, context);
|
|
139
|
+
if (typeAssertion !== null) {
|
|
140
|
+
var statementString = statement.getString();
|
|
141
|
+
context.trace("Validating the '".concat(statementString, "' statement as a type assertion..."));
|
|
142
|
+
var typeAssertionValidates = typeAssertion.validate(assignments, stated, context);
|
|
143
|
+
validatesStatementAsTypeAssertion = typeAssertionValidates; ///
|
|
144
|
+
if (validatesStatementAsTypeAssertion) {
|
|
145
|
+
var assertion = typeAssertion; ///
|
|
146
|
+
context.addAssertion(assertion);
|
|
147
|
+
context.debug("...validated the '".concat(statementString, "' statement as a type assertion."));
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return validatesStatementAsTypeAssertion;
|
|
151
|
+
}
|
|
152
|
+
function validateStatementAsDefinedAssertion(statement, assignments, stated, context) {
|
|
153
|
+
var validatesStatementAsDefinedAssertion = false;
|
|
154
|
+
var definedAssertion = (0, _statement.definedAssertionFromStatement)(statement, context);
|
|
155
|
+
if (definedAssertion !== null) {
|
|
156
|
+
var statementString = statement.getString();
|
|
157
|
+
context.trace("Validating the '".concat(statementString, "' statement as a defined assertion..."));
|
|
158
|
+
var definedAssertionValidates = definedAssertion.validate(assignments, stated, context);
|
|
159
|
+
validatesStatementAsDefinedAssertion = definedAssertionValidates; ///
|
|
160
|
+
if (validatesStatementAsDefinedAssertion) {
|
|
161
|
+
var assertion = definedAssertion; ///
|
|
162
|
+
context.addAssertion(assertion);
|
|
163
|
+
context.debug("...validated the '".concat(statementString, "' statement as a defined assertion."));
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return validatesStatementAsDefinedAssertion;
|
|
167
|
+
}
|
|
168
|
+
function validateStatementAsPropertyAssertion(statement, assignments, stated, context) {
|
|
169
|
+
var statementValidatesAsPropertyAssertion = false;
|
|
170
|
+
var propertyAssertion = (0, _statement.propertyAssertionFromStatement)(statement, context);
|
|
171
|
+
if (propertyAssertion !== null) {
|
|
172
|
+
var statementString = statement.getString();
|
|
173
|
+
context.trace("Validating the '".concat(statementString, "' statement as a property assertion..."));
|
|
174
|
+
var propertyAssertionValidates = propertyAssertion.validate(assignments, stated, context);
|
|
175
|
+
statementValidatesAsPropertyAssertion = propertyAssertionValidates; ///
|
|
176
|
+
if (statementValidatesAsPropertyAssertion) {
|
|
177
|
+
var assertion = propertyAssertion; ///
|
|
178
|
+
context.addAssertion(assertion);
|
|
179
|
+
context.debug("...validated the '".concat(statementString, "' statement as a property assertion."));
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return statementValidatesAsPropertyAssertion;
|
|
183
|
+
}
|
|
184
|
+
function validateStatementAsSubproofAssertion(statement, assignments, stated, context) {
|
|
185
|
+
var statementValidatesAsSubproofAssertion = false;
|
|
186
|
+
var subproofAssertion = (0, _statement.subproofAssertionFromStatement)(statement, context);
|
|
187
|
+
if (subproofAssertion !== null) {
|
|
188
|
+
var statementString = statement.getString();
|
|
189
|
+
context.trace("Validating the '".concat(statementString, "' statement as a subproof assertion..."));
|
|
190
|
+
var subproofAssertionValidates = subproofAssertion.validate(assignments, stated, context);
|
|
191
|
+
statementValidatesAsSubproofAssertion = subproofAssertionValidates; ///
|
|
192
|
+
if (statementValidatesAsSubproofAssertion) {
|
|
193
|
+
var assertion = subproofAssertion; ///
|
|
194
|
+
context.addAssertion(assertion);
|
|
195
|
+
context.debug("...validated the '".concat(statementString, "' statement as a subproof assertion."));
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return statementValidatesAsSubproofAssertion;
|
|
199
|
+
}
|
|
200
|
+
function validateStatementAsContainedAssertion(statement, assignments, stated, context) {
|
|
201
|
+
var validatesStatementAsContainedAssertion = false;
|
|
202
|
+
var containedAssertion = (0, _statement.containedAssertionFromStatement)(statement, context);
|
|
203
|
+
if (containedAssertion !== null) {
|
|
204
|
+
var statementString = statement.getString();
|
|
205
|
+
context.trace("Validating the '".concat(statementString, "' statement as a contained assertion..."));
|
|
206
|
+
var containedAssertionValidates = containedAssertion.validate(assignments, stated, context);
|
|
207
|
+
validatesStatementAsContainedAssertion = containedAssertionValidates; ///
|
|
208
|
+
if (validatesStatementAsContainedAssertion) {
|
|
209
|
+
var assertion = containedAssertion; ///
|
|
210
|
+
context.addAssertion(assertion);
|
|
211
|
+
context.debug("...validated the '".concat(statementString, "' statement as a contained assertion."));
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return validatesStatementAsContainedAssertion;
|
|
215
|
+
}
|
|
216
|
+
function validateStatementAsSatisfiesAssertion(statement, assignments, stated, context) {
|
|
217
|
+
var validatesAStatementsSatisfiesAssertion = false;
|
|
218
|
+
var satisfiesAssertion = (0, _statement.satisfiesAssertionFromStatement)(statement, context);
|
|
219
|
+
if (satisfiesAssertion !== null) {
|
|
220
|
+
var statementString = statement.getString();
|
|
221
|
+
context.trace("Validating the '".concat(statementString, "' statement as a satisfies assertion..."));
|
|
222
|
+
var satisfiesAssertionValidates = satisfiesAssertion.validate(assignments, stated, context);
|
|
223
|
+
validatesAStatementsSatisfiesAssertion = satisfiesAssertionValidates; ///
|
|
224
|
+
if (validatesAStatementsSatisfiesAssertion) {
|
|
225
|
+
var assertion = satisfiesAssertion; ///
|
|
226
|
+
context.addAssertion(assertion);
|
|
227
|
+
context.debug("...validated the '".concat(statementString, "' statement as a satisfies assertion."));
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
return validatesAStatementsSatisfiesAssertion;
|
|
231
|
+
}
|
|
232
|
+
var validateTerms = [
|
|
233
|
+
unifyTermWithBracketedConstructor,
|
|
234
|
+
unifyTermWithConstructors,
|
|
235
|
+
validateTermAsVariable
|
|
236
|
+
];
|
|
237
|
+
var validateStatements = [
|
|
238
|
+
validateStatementAsMetavariableAndSubstitution,
|
|
239
|
+
unifyStatementWithBracketedCombinator,
|
|
240
|
+
unifyStatementWithCombinators,
|
|
241
|
+
validateStatementAsEquality,
|
|
242
|
+
validateStatementAsJudgement,
|
|
243
|
+
validateStatementAsTypeAssertion,
|
|
244
|
+
validateStatementAsDefinedAssertion,
|
|
245
|
+
validateStatementAsPropertyAssertion,
|
|
246
|
+
validateStatementAsSubproofAssertion,
|
|
247
|
+
validateStatementAsContainedAssertion,
|
|
248
|
+
validateStatementAsSatisfiesAssertion
|
|
249
|
+
];
|
|
250
|
+
|
|
251
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdmFsaWRhdGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuXG5pbXBvcnQgeyBlcXVhbGl0eUZyb21TdGF0ZW1lbnQsXG4gICAgICAgICBqdWRnZW1lbnRGcm9tU3RhdGVtZW50LFxuICAgICAgICAgbWV0YXZhcmlhYmxlRnJvbVN0YXRlbWVudCxcbiAgICAgICAgIHR5cGVBc3NlcnRpb25Gcm9tU3RhdGVtZW50LFxuICAgICAgICAgZGVmaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnQsXG4gICAgICAgICBwcm9wZXJ0eUFzc2VydGlvbkZyb21TdGF0ZW1lbnQsXG4gICAgICAgICBzdWJwcm9vZkFzc2VydGlvbkZyb21TdGF0ZW1lbnQsXG4gICAgICAgICBjb250YWluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50LFxuICAgICAgICAgc2F0aXNmaWVzQXNzZXJ0aW9uRnJvbVN0YXRlbWVudCB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RhdGVtZW50XCI7XG5cbmZ1bmN0aW9uIHVuaWZ5VGVybVdpdGhCcmFja2V0ZWRDb25zdHJ1Y3Rvcih0ZXJtLCBjb250ZXh0LCB2YWxpZGF0ZUFoZWFkKSB7XG4gIGxldCB0ZXJtVW5pZmllc1dpdGhCcmFja2V0ZWRDb25zdHJ1Y3RvcjtcblxuICBjb25zdCB7IEJyYWNrZXRlZENvbnN0cnVjdG9yIH0gPSBlbGVtZW50cyxcbiAgICBicmFja2V0ZWRDb25zdHJ1Y3RvciA9IEJyYWNrZXRlZENvbnN0cnVjdG9yLmZyb21Ob3RoaW5nKCk7XG5cbiAgdGVybVVuaWZpZXNXaXRoQnJhY2tldGVkQ29uc3RydWN0b3IgPSBicmFja2V0ZWRDb25zdHJ1Y3Rvci51bmlmeVRlcm0odGVybSwgY29udGV4dCwgdmFsaWRhdGVBaGVhZCk7XG5cbiAgcmV0dXJuIHRlcm1VbmlmaWVzV2l0aEJyYWNrZXRlZENvbnN0cnVjdG9yO1xufVxuXG5mdW5jdGlvbiB1bmlmeVRlcm1XaXRoQ29uc3RydWN0b3JzKHRlcm0sIGNvbnRleHQsIHZhbGlkYXRlQWhlYWQpIHtcbiAgbGV0IHRlcm1VbmlmaWVzV2l0aENvbnN0cnVjdG9ycztcblxuICBjb25zdCBjb25zdHJ1Y3RvcnMgPSBjb250ZXh0LmdldENvbnN0cnVjdG9ycygpO1xuXG4gIHRlcm1VbmlmaWVzV2l0aENvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9ycy5zb21lKChjb25zdHJ1Y3RvcikgPT4ge1xuICAgIGNvbnN0IHVuaWZpZXNXaXRoQ29uc3RydWN0b3IgPSBjb25zdHJ1Y3Rvci51bmlmeVRlcm0odGVybSwgY29udGV4dCwgdmFsaWRhdGVBaGVhZCk7XG5cbiAgICBpZiAodW5pZmllc1dpdGhDb25zdHJ1Y3Rvcikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gdGVybVVuaWZpZXNXaXRoQ29uc3RydWN0b3JzO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVRlcm1Bc1ZhcmlhYmxlKHRlcm0sIGNvbnRleHQsIHZhbGlkYXRlQWhlYWQpIHtcbiAgbGV0IHRlcm1WYWxpZGF0ZXNBc1ZhcmlhYmxlID0gZmFsc2U7XG5cbiAgY29uc3QgeyBWYXJpYWJsZSB9ID0gZWxlbWVudHMsXG4gICAgdGVybU5vZGUgPSB0ZXJtLmdldE5vZGUoKSxcbiAgICBzaW5ndWxhclZhcmlhYmxlTm9kZSA9IHRlcm1Ob2RlLmdldFNpbmd1bGFyVmFyaWFibGVOb2RlKCk7XG5cbiAgaWYgKHNpbmd1bGFyVmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgbGV0IHZhcmlhYmxlO1xuXG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCksXG4gICAgICB2YXJpYWJsZU5vZGUgPSBzaW5ndWxhclZhcmlhYmxlTm9kZTsgIC8vL1xuXG4gICAgdmFyaWFibGUgPSBWYXJpYWJsZS5mcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSwgY29udGV4dCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFzIGEgdmFyaWFibGUuLi5gKTtcblxuICAgIGNvbnN0IHZhcmlhYmxlVmFsaWRhdGVzID0gdmFyaWFibGUudmFsaWRhdGUoY29udGV4dCk7XG5cbiAgICBpZiAodmFyaWFibGVWYWxpZGF0ZXMpIHtcbiAgICAgIGxldCB2ZXJpZmllc0FoZWFkO1xuXG4gICAgICBjb25zdCB2YXJpYWJsZUlkZW50aWZpZXIgPSB2YXJpYWJsZS5nZXRJZGVudGlmaWVyKCk7XG5cbiAgICAgIHZhcmlhYmxlID0gY29udGV4dC5maW5kVmFyaWFibGVCeVZhcmlhYmxlSWRlbnRpZmllcih2YXJpYWJsZUlkZW50aWZpZXIpO1xuXG4gICAgICBjb25zdCB0eXBlID0gdmFyaWFibGUuZ2V0VHlwZSgpO1xuXG4gICAgICB0ZXJtLnNldFR5cGUodHlwZSk7XG5cbiAgICAgIHZlcmlmaWVzQWhlYWQgPSB2YWxpZGF0ZUFoZWFkKCk7XG5cbiAgICAgIHRlcm1WYWxpZGF0ZXNBc1ZhcmlhYmxlID0gdmVyaWZpZXNBaGVhZDsgLy8vXG4gICAgfVxuXG4gICAgaWYgKHRlcm1WYWxpZGF0ZXNBc1ZhcmlhYmxlKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gYXMgYSB2YXJpYWJsZS5gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGVybVZhbGlkYXRlc0FzVmFyaWFibGU7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlU3RhdGVtZW50QXNNZXRhdmFyaWFibGVBbmRTdWJzdGl0dXRpb24oc3RhdGVtZW50LCBhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KSB7XG4gIGxldCBzdGF0ZW1lbnRWYWxpZGF0ZXNBc01ldGF2YXJpYWJsZUFuZFN1YnN0aXR1dGlvbiA9IGZhbHNlO1xuXG4gIGNvbnN0IG1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZUZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICBpZiAobWV0YXZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgbWV0YXZhcmlhYmxlIGFuZCBzdWJzdGl0dXRpb24uLi5gKTtcblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZVZhbGlkYXRlcyA9IG1ldGF2YXJpYWJsZS52YWxpZGF0ZShjb250ZXh0KTtcblxuICAgIGlmIChtZXRhdmFyaWFibGVWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnN0IHsgVGVybVN1YnN0aXR1dGlvbiwgRnJhbWVTdWJzdGl0dXRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICAgICAgZnJhbWVTdWJzdGl0dXRpb24gPSBGcmFtZVN1YnN0aXR1dGlvbi5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCksXG4gICAgICAgICAgICB0ZXJtU3Vic3RpdHV0aW9uID0gVGVybVN1YnN0aXR1dGlvbi5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCksXG4gICAgICAgICAgICBzdWJzdGl0dXRpb24gPSAodGVybVN1YnN0aXR1dGlvbiB8fCBmcmFtZVN1YnN0aXR1dGlvbik7XG5cbiAgICAgIGlmIChzdWJzdGl0dXRpb24gIT09IG51bGwpIHtcbiAgICAgICAgY29uc3Qgc3Vic3RpdHV0aW9uVmFsaWRhdGVzID0gc3Vic3RpdHV0aW9uLnZhbGlkYXRlKGNvbnRleHQpO1xuXG4gICAgICAgIGlmIChzdWJzdGl0dXRpb25WYWxpZGF0ZXMpIHtcbiAgICAgICAgICBzdGF0ZW1lbnRWYWxpZGF0ZXNBc01ldGF2YXJpYWJsZUFuZFN1YnN0aXR1dGlvbiA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRlbWVudFZhbGlkYXRlc0FzTWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RhdGVtZW50VmFsaWRhdGVzQXNNZXRhdmFyaWFibGVBbmRTdWJzdGl0dXRpb24pIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgbWV0YXZhcmlhYmxlIGFuZCBzdWJzdGl0dXRpb24uYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZhbGlkYXRlc0FzTWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uO1xufVxuXG5mdW5jdGlvbiB1bmlmeVN0YXRlbWVudFdpdGhCcmFja2V0ZWRDb21iaW5hdG9yKHN0YXRlbWVudCwgYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCkge1xuICBzdGF0ZWQgPSB0cnVlOyAgLy8vXG5cbiAgYXNzaWdubWVudHMgPSBudWxsOyAvLy9cblxuICBjb25zdCB7IEJyYWNrZXRlZENvbWJpbmF0b3IgfSA9IGVsZW1lbnRzLFxuICAgICAgICBicmFja2V0ZWRDb21iaW5hdG9yID0gQnJhY2tldGVkQ29tYmluYXRvci5mcm9tTm90aGluZygpLFxuICAgICAgICBzdGF0ZW1lbnRVbmlmaWVzV2l0aEJyYWNrZXRlZENvbWJpbmF0b3IgPSBicmFja2V0ZWRDb21iaW5hdG9yLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudFVuaWZpZXNXaXRoQnJhY2tldGVkQ29tYmluYXRvcjtcbn1cblxuZnVuY3Rpb24gdW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvcnMoc3RhdGVtZW50LCBhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KSB7XG4gIHN0YXRlZCA9IHRydWU7ICAvLy9cblxuICBhc3NpZ25tZW50cyA9IG51bGw7IC8vL1xuXG4gIGNvbnN0IGNvbWJpbmF0b3JzID0gY29udGV4dC5nZXRDb21iaW5hdG9ycygpLFxuICAgICAgICBzdGF0ZW1lbnRVbmlmaWVzV2l0aENvbWJpbmF0b3JzID0gY29tYmluYXRvcnMuc29tZSgoY29tYmluYXRvcikgPT4ge1xuICAgICAgICAgIGNvbnN0IHVuaWZpZXNXaXRoQ29tYmluYXRvciA9IGNvbWJpbmF0b3IudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KTtcblxuICAgICAgICAgIGlmICh1bmlmaWVzV2l0aENvbWJpbmF0b3IpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudFVuaWZpZXNXaXRoQ29tYmluYXRvcnM7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlU3RhdGVtZW50QXNFcXVhbGl0eShzdGF0ZW1lbnQsIGFzc2lnbm1lbnRzLCBzdGF0ZWQsIGNvbnRleHQpIHtcbiAgbGV0IHN0YXRlbWVudFZhbGlkYXRlc0FzRXF1YWxpdHkgPSBmYWxzZTtcblxuICBjb25zdCBlcXVhbGl0eSA9IGVxdWFsaXR5RnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gIGlmIChlcXVhbGl0eSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhbiBlcXVhbGl0eS4uLmApO1xuXG4gICAgY29uc3QgZXF1YWxpdHlWYWxpZGF0ZXMgPSBlcXVhbGl0eS52YWxpZGF0ZShhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KTtcblxuICAgIHN0YXRlbWVudFZhbGlkYXRlc0FzRXF1YWxpdHkgPSBlcXVhbGl0eVZhbGlkYXRlczsgLy8vXG5cbiAgICBpZiAoc3RhdGVtZW50VmFsaWRhdGVzQXNFcXVhbGl0eSkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYW4gZXF1YWxpdHkuYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZhbGlkYXRlc0FzRXF1YWxpdHk7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlU3RhdGVtZW50QXNKdWRnZW1lbnQoc3RhdGVtZW50LCBhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KSB7XG4gIGxldCB2YWxpZGF0ZXNTdGF0ZW1lbnRBc0p1ZGdlbWVudCA9IGZhbHNlO1xuXG4gIGNvbnN0IGp1ZGdlbWVudCA9IGp1ZGdlbWVudEZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICBpZiAoanVkZ2VtZW50ICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEganVkZ2VtZW50Li4uYCk7XG5cbiAgICBjb25zdCBqdWRnZW1lbnRWYWxpZGF0ZXMgPSBqdWRnZW1lbnQudmFsaWRhdGUoYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCk7XG5cbiAgICB2YWxpZGF0ZXNTdGF0ZW1lbnRBc0p1ZGdlbWVudCA9IGp1ZGdlbWVudFZhbGlkYXRlczsgIC8vL1xuXG4gICAgaWYgKHZhbGlkYXRlc1N0YXRlbWVudEFzSnVkZ2VtZW50KSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIGp1ZGdlbWVudC5gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVzU3RhdGVtZW50QXNKdWRnZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlU3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uKHN0YXRlbWVudCwgYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCkge1xuICBsZXQgdmFsaWRhdGVzU3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uID0gZmFsc2U7XG5cbiAgY29uc3QgdHlwZUFzc2VydGlvbiA9IHR5cGVBc3NlcnRpb25Gcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgaWYgKHR5cGVBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSB0eXBlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgY29uc3QgdHlwZUFzc2VydGlvblZhbGlkYXRlcyA9IHR5cGVBc3NlcnRpb24udmFsaWRhdGUoYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCk7XG5cbiAgICB2YWxpZGF0ZXNTdGF0ZW1lbnRBc1R5cGVBc3NlcnRpb24gPSB0eXBlQXNzZXJ0aW9uVmFsaWRhdGVzOyAvLy9cblxuICAgIGlmICh2YWxpZGF0ZXNTdGF0ZW1lbnRBc1R5cGVBc3NlcnRpb24pIHtcbiAgICAgIGNvbnN0IGFzc2VydGlvbiA9IHR5cGVBc3NlcnRpb247ICAvLy9cblxuICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSB0eXBlIGFzc2VydGlvbi5gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVzU3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVN0YXRlbWVudEFzRGVmaW5lZEFzc2VydGlvbihzdGF0ZW1lbnQsIGFzc2lnbm1lbnRzLCBzdGF0ZWQsIGNvbnRleHQpIHtcbiAgbGV0IHZhbGlkYXRlc1N0YXRlbWVudEFzRGVmaW5lZEFzc2VydGlvbiA9IGZhbHNlO1xuXG4gIGNvbnN0IGRlZmluZWRBc3NlcnRpb24gPSBkZWZpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gIGlmIChkZWZpbmVkQXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgZGVmaW5lZCBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IGRlZmluZWRBc3NlcnRpb25WYWxpZGF0ZXMgPSBkZWZpbmVkQXNzZXJ0aW9uLnZhbGlkYXRlKGFzc2lnbm1lbnRzLCBzdGF0ZWQsIGNvbnRleHQpO1xuXG4gICAgdmFsaWRhdGVzU3RhdGVtZW50QXNEZWZpbmVkQXNzZXJ0aW9uID0gZGVmaW5lZEFzc2VydGlvblZhbGlkYXRlczsgLy8vXG5cbiAgICBpZiAodmFsaWRhdGVzU3RhdGVtZW50QXNEZWZpbmVkQXNzZXJ0aW9uKSB7XG4gICAgICBjb25zdCBhc3NlcnRpb24gPSBkZWZpbmVkQXNzZXJ0aW9uOyAgLy8vXG5cbiAgICAgIGNvbnRleHQuYWRkQXNzZXJ0aW9uKGFzc2VydGlvbik7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgZGVmaW5lZCBhc3NlcnRpb24uYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZhbGlkYXRlc1N0YXRlbWVudEFzRGVmaW5lZEFzc2VydGlvbjtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVTdGF0ZW1lbnRBc1Byb3BlcnR5QXNzZXJ0aW9uKHN0YXRlbWVudCwgYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCkge1xuICBsZXQgc3RhdGVtZW50VmFsaWRhdGVzQXNQcm9wZXJ0eUFzc2VydGlvbiA9IGZhbHNlO1xuXG4gIGNvbnN0IHByb3BlcnR5QXNzZXJ0aW9uID0gcHJvcGVydHlBc3NlcnRpb25Gcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgaWYgKHByb3BlcnR5QXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgcHJvcGVydHkgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBwcm9wZXJ0eUFzc2VydGlvblZhbGlkYXRlcyA9IHByb3BlcnR5QXNzZXJ0aW9uLnZhbGlkYXRlKGFzc2lnbm1lbnRzLCBzdGF0ZWQsIGNvbnRleHQpO1xuXG4gICAgc3RhdGVtZW50VmFsaWRhdGVzQXNQcm9wZXJ0eUFzc2VydGlvbiA9IHByb3BlcnR5QXNzZXJ0aW9uVmFsaWRhdGVzOyAvLy9cblxuICAgIGlmIChzdGF0ZW1lbnRWYWxpZGF0ZXNBc1Byb3BlcnR5QXNzZXJ0aW9uKSB7XG4gICAgICBjb25zdCBhc3NlcnRpb24gPSBwcm9wZXJ0eUFzc2VydGlvbjsgLy8vXG5cbiAgICAgIGNvbnRleHQuYWRkQXNzZXJ0aW9uKGFzc2VydGlvbik7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgcHJvcGVydHkgYXNzZXJ0aW9uLmApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnRWYWxpZGF0ZXNBc1Byb3BlcnR5QXNzZXJ0aW9uO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVN0YXRlbWVudEFzU3VicHJvb2ZBc3NlcnRpb24oc3RhdGVtZW50LCBhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KSB7XG4gIGxldCBzdGF0ZW1lbnRWYWxpZGF0ZXNBc1N1YnByb29mQXNzZXJ0aW9uID0gZmFsc2U7XG5cbiAgY29uc3Qgc3VicHJvb2ZBc3NlcnRpb24gPSBzdWJwcm9vZkFzc2VydGlvbkZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICBpZiAoc3VicHJvb2ZBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBzdWJwcm9vZiBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IHN1YnByb29mQXNzZXJ0aW9uVmFsaWRhdGVzID0gc3VicHJvb2ZBc3NlcnRpb24udmFsaWRhdGUoYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCk7XG5cbiAgICBzdGF0ZW1lbnRWYWxpZGF0ZXNBc1N1YnByb29mQXNzZXJ0aW9uID0gc3VicHJvb2ZBc3NlcnRpb25WYWxpZGF0ZXM7IC8vL1xuXG4gICAgaWYgKHN0YXRlbWVudFZhbGlkYXRlc0FzU3VicHJvb2ZBc3NlcnRpb24pIHtcbiAgICAgIGNvbnN0IGFzc2VydGlvbiA9IHN1YnByb29mQXNzZXJ0aW9uOyAvLy9cblxuICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBzdWJwcm9vZiBhc3NlcnRpb24uYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZhbGlkYXRlc0FzU3VicHJvb2ZBc3NlcnRpb247XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlU3RhdGVtZW50QXNDb250YWluZWRBc3NlcnRpb24oc3RhdGVtZW50LCBhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KSB7XG4gIGxldCB2YWxpZGF0ZXNTdGF0ZW1lbnRBc0NvbnRhaW5lZEFzc2VydGlvbiA9IGZhbHNlO1xuXG4gIGNvbnN0IGNvbnRhaW5lZEFzc2VydGlvbiA9IGNvbnRhaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICBpZiAoY29udGFpbmVkQXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGFzIGEgY29udGFpbmVkIGFzc2VydGlvbi4uLmApO1xuXG4gICAgY29uc3QgY29udGFpbmVkQXNzZXJ0aW9uVmFsaWRhdGVzID0gY29udGFpbmVkQXNzZXJ0aW9uLnZhbGlkYXRlKGFzc2lnbm1lbnRzLCBzdGF0ZWQsIGNvbnRleHQpO1xuXG4gICAgdmFsaWRhdGVzU3RhdGVtZW50QXNDb250YWluZWRBc3NlcnRpb24gPSBjb250YWluZWRBc3NlcnRpb25WYWxpZGF0ZXM7IC8vL1xuXG4gICAgaWYgKHZhbGlkYXRlc1N0YXRlbWVudEFzQ29udGFpbmVkQXNzZXJ0aW9uKSB7XG4gICAgICBjb25zdCBhc3NlcnRpb24gPSBjb250YWluZWRBc3NlcnRpb247IC8vL1xuXG4gICAgICBjb250ZXh0LmFkZEFzc2VydGlvbihhc3NlcnRpb24pO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIGNvbnRhaW5lZCBhc3NlcnRpb24uYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZhbGlkYXRlc1N0YXRlbWVudEFzQ29udGFpbmVkQXNzZXJ0aW9uO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVN0YXRlbWVudEFzU2F0aXNmaWVzQXNzZXJ0aW9uKHN0YXRlbWVudCwgYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCkge1xuICBsZXQgdmFsaWRhdGVzQVN0YXRlbWVudHNTYXRpc2ZpZXNBc3NlcnRpb24gPSBmYWxzZTtcblxuICBjb25zdCBzYXRpc2ZpZXNBc3NlcnRpb24gPSBzYXRpc2ZpZXNBc3NlcnRpb25Gcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgaWYgKHNhdGlzZmllc0Fzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhcyBhIHNhdGlzZmllcyBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IHNhdGlzZmllc0Fzc2VydGlvblZhbGlkYXRlcyA9IHNhdGlzZmllc0Fzc2VydGlvbi52YWxpZGF0ZShhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KTtcblxuICAgIHZhbGlkYXRlc0FTdGF0ZW1lbnRzU2F0aXNmaWVzQXNzZXJ0aW9uID0gc2F0aXNmaWVzQXNzZXJ0aW9uVmFsaWRhdGVzOyAvLy9cblxuICAgIGlmICh2YWxpZGF0ZXNBU3RhdGVtZW50c1NhdGlzZmllc0Fzc2VydGlvbikge1xuICAgICAgY29uc3QgYXNzZXJ0aW9uID0gc2F0aXNmaWVzQXNzZXJ0aW9uOyAvLy9cblxuICAgICAgY29udGV4dC5hZGRBc3NlcnRpb24oYXNzZXJ0aW9uKTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgYXMgYSBzYXRpc2ZpZXMgYXNzZXJ0aW9uLmApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB2YWxpZGF0ZXNBU3RhdGVtZW50c1NhdGlzZmllc0Fzc2VydGlvbjtcbn1cblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlVGVybXMgPSBbXG4gIHVuaWZ5VGVybVdpdGhCcmFja2V0ZWRDb25zdHJ1Y3RvcixcbiAgdW5pZnlUZXJtV2l0aENvbnN0cnVjdG9ycyxcbiAgdmFsaWRhdGVUZXJtQXNWYXJpYWJsZVxuXTtcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlU3RhdGVtZW50cyA9IFtcbiAgdmFsaWRhdGVTdGF0ZW1lbnRBc01ldGF2YXJpYWJsZUFuZFN1YnN0aXR1dGlvbixcbiAgdW5pZnlTdGF0ZW1lbnRXaXRoQnJhY2tldGVkQ29tYmluYXRvcixcbiAgdW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvcnMsXG4gIHZhbGlkYXRlU3RhdGVtZW50QXNFcXVhbGl0eSxcbiAgdmFsaWRhdGVTdGF0ZW1lbnRBc0p1ZGdlbWVudCxcbiAgdmFsaWRhdGVTdGF0ZW1lbnRBc1R5cGVBc3NlcnRpb24sXG4gIHZhbGlkYXRlU3RhdGVtZW50QXNEZWZpbmVkQXNzZXJ0aW9uLFxuICB2YWxpZGF0ZVN0YXRlbWVudEFzUHJvcGVydHlBc3NlcnRpb24sXG4gIHZhbGlkYXRlU3RhdGVtZW50QXNTdWJwcm9vZkFzc2VydGlvbixcbiAgdmFsaWRhdGVTdGF0ZW1lbnRBc0NvbnRhaW5lZEFzc2VydGlvbixcbiAgdmFsaWRhdGVTdGF0ZW1lbnRBc1NhdGlzZmllc0Fzc2VydGlvblxuXTtcbiJdLCJuYW1lcyI6WyJ2YWxpZGF0ZVN0YXRlbWVudHMiLCJ2YWxpZGF0ZVRlcm1zIiwidW5pZnlUZXJtV2l0aEJyYWNrZXRlZENvbnN0cnVjdG9yIiwidGVybSIsImNvbnRleHQiLCJ2YWxpZGF0ZUFoZWFkIiwidGVybVVuaWZpZXNXaXRoQnJhY2tldGVkQ29uc3RydWN0b3IiLCJCcmFja2V0ZWRDb25zdHJ1Y3RvciIsImVsZW1lbnRzIiwiYnJhY2tldGVkQ29uc3RydWN0b3IiLCJmcm9tTm90aGluZyIsInVuaWZ5VGVybSIsInVuaWZ5VGVybVdpdGhDb25zdHJ1Y3RvcnMiLCJ0ZXJtVW5pZmllc1dpdGhDb25zdHJ1Y3RvcnMiLCJjb25zdHJ1Y3RvcnMiLCJnZXRDb25zdHJ1Y3RvcnMiLCJzb21lIiwiY29uc3RydWN0b3IiLCJ1bmlmaWVzV2l0aENvbnN0cnVjdG9yIiwidmFsaWRhdGVUZXJtQXNWYXJpYWJsZSIsInRlcm1WYWxpZGF0ZXNBc1ZhcmlhYmxlIiwiVmFyaWFibGUiLCJ0ZXJtTm9kZSIsImdldE5vZGUiLCJzaW5ndWxhclZhcmlhYmxlTm9kZSIsImdldFNpbmd1bGFyVmFyaWFibGVOb2RlIiwidmFyaWFibGUiLCJ0ZXJtU3RyaW5nIiwiZ2V0U3RyaW5nIiwidmFyaWFibGVOb2RlIiwiZnJvbVZhcmlhYmxlTm9kZSIsInRyYWNlIiwidmFyaWFibGVWYWxpZGF0ZXMiLCJ2YWxpZGF0ZSIsInZlcmlmaWVzQWhlYWQiLCJ2YXJpYWJsZUlkZW50aWZpZXIiLCJnZXRJZGVudGlmaWVyIiwiZmluZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIiLCJ0eXBlIiwiZ2V0VHlwZSIsInNldFR5cGUiLCJkZWJ1ZyIsInZhbGlkYXRlU3RhdGVtZW50QXNNZXRhdmFyaWFibGVBbmRTdWJzdGl0dXRpb24iLCJzdGF0ZW1lbnQiLCJhc3NpZ25tZW50cyIsInN0YXRlZCIsInN0YXRlbWVudFZhbGlkYXRlc0FzTWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uIiwibWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlRnJvbVN0YXRlbWVudCIsInN0YXRlbWVudFN0cmluZyIsIm1ldGF2YXJpYWJsZVZhbGlkYXRlcyIsIlRlcm1TdWJzdGl0dXRpb24iLCJGcmFtZVN1YnN0aXR1dGlvbiIsImZyYW1lU3Vic3RpdHV0aW9uIiwiZnJvbVN0YXRlbWVudCIsInRlcm1TdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb25WYWxpZGF0ZXMiLCJ1bmlmeVN0YXRlbWVudFdpdGhCcmFja2V0ZWRDb21iaW5hdG9yIiwiQnJhY2tldGVkQ29tYmluYXRvciIsImJyYWNrZXRlZENvbWJpbmF0b3IiLCJzdGF0ZW1lbnRVbmlmaWVzV2l0aEJyYWNrZXRlZENvbWJpbmF0b3IiLCJ1bmlmeVN0YXRlbWVudCIsInVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3JzIiwiY29tYmluYXRvcnMiLCJnZXRDb21iaW5hdG9ycyIsInN0YXRlbWVudFVuaWZpZXNXaXRoQ29tYmluYXRvcnMiLCJjb21iaW5hdG9yIiwidW5pZmllc1dpdGhDb21iaW5hdG9yIiwidmFsaWRhdGVTdGF0ZW1lbnRBc0VxdWFsaXR5Iiwic3RhdGVtZW50VmFsaWRhdGVzQXNFcXVhbGl0eSIsImVxdWFsaXR5IiwiZXF1YWxpdHlGcm9tU3RhdGVtZW50IiwiZXF1YWxpdHlWYWxpZGF0ZXMiLCJ2YWxpZGF0ZVN0YXRlbWVudEFzSnVkZ2VtZW50IiwidmFsaWRhdGVzU3RhdGVtZW50QXNKdWRnZW1lbnQiLCJqdWRnZW1lbnQiLCJqdWRnZW1lbnRGcm9tU3RhdGVtZW50IiwianVkZ2VtZW50VmFsaWRhdGVzIiwidmFsaWRhdGVTdGF0ZW1lbnRBc1R5cGVBc3NlcnRpb24iLCJ2YWxpZGF0ZXNTdGF0ZW1lbnRBc1R5cGVBc3NlcnRpb24iLCJ0eXBlQXNzZXJ0aW9uIiwidHlwZUFzc2VydGlvbkZyb21TdGF0ZW1lbnQiLCJ0eXBlQXNzZXJ0aW9uVmFsaWRhdGVzIiwiYXNzZXJ0aW9uIiwiYWRkQXNzZXJ0aW9uIiwidmFsaWRhdGVTdGF0ZW1lbnRBc0RlZmluZWRBc3NlcnRpb24iLCJ2YWxpZGF0ZXNTdGF0ZW1lbnRBc0RlZmluZWRBc3NlcnRpb24iLCJkZWZpbmVkQXNzZXJ0aW9uIiwiZGVmaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnQiLCJkZWZpbmVkQXNzZXJ0aW9uVmFsaWRhdGVzIiwidmFsaWRhdGVTdGF0ZW1lbnRBc1Byb3BlcnR5QXNzZXJ0aW9uIiwic3RhdGVtZW50VmFsaWRhdGVzQXNQcm9wZXJ0eUFzc2VydGlvbiIsInByb3BlcnR5QXNzZXJ0aW9uIiwicHJvcGVydHlBc3NlcnRpb25Gcm9tU3RhdGVtZW50IiwicHJvcGVydHlBc3NlcnRpb25WYWxpZGF0ZXMiLCJ2YWxpZGF0ZVN0YXRlbWVudEFzU3VicHJvb2ZBc3NlcnRpb24iLCJzdGF0ZW1lbnRWYWxpZGF0ZXNBc1N1YnByb29mQXNzZXJ0aW9uIiwic3VicHJvb2ZBc3NlcnRpb24iLCJzdWJwcm9vZkFzc2VydGlvbkZyb21TdGF0ZW1lbnQiLCJzdWJwcm9vZkFzc2VydGlvblZhbGlkYXRlcyIsInZhbGlkYXRlU3RhdGVtZW50QXNDb250YWluZWRBc3NlcnRpb24iLCJ2YWxpZGF0ZXNTdGF0ZW1lbnRBc0NvbnRhaW5lZEFzc2VydGlvbiIsImNvbnRhaW5lZEFzc2VydGlvbiIsImNvbnRhaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnQiLCJjb250YWluZWRBc3NlcnRpb25WYWxpZGF0ZXMiLCJ2YWxpZGF0ZVN0YXRlbWVudEFzU2F0aXNmaWVzQXNzZXJ0aW9uIiwidmFsaWRhdGVzQVN0YXRlbWVudHNTYXRpc2ZpZXNBc3NlcnRpb24iLCJzYXRpc2ZpZXNBc3NlcnRpb24iLCJzYXRpc2ZpZXNBc3NlcnRpb25Gcm9tU3RhdGVtZW50Iiwic2F0aXNmaWVzQXNzZXJ0aW9uVmFsaWRhdGVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFvV2FBO2VBQUFBOztRQU5BQztlQUFBQTs7OytEQTVWUTt5QkFVMkI7Ozs7OztBQUVoRCxTQUFTQyxrQ0FBa0NDLElBQUksRUFBRUMsT0FBTyxFQUFFQyxhQUFhO0lBQ3JFLElBQUlDO0lBRUosSUFBTSxBQUFFQyx1QkFBeUJDLGlCQUFRLENBQWpDRCxzQkFDTkUsdUJBQXVCRixxQkFBcUJHLFdBQVc7SUFFekRKLHNDQUFzQ0cscUJBQXFCRSxTQUFTLENBQUNSLE1BQU1DLFNBQVNDO0lBRXBGLE9BQU9DO0FBQ1Q7QUFFQSxTQUFTTSwwQkFBMEJULElBQUksRUFBRUMsT0FBTyxFQUFFQyxhQUFhO0lBQzdELElBQUlRO0lBRUosSUFBTUMsZUFBZVYsUUFBUVcsZUFBZTtJQUU1Q0YsOEJBQThCQyxhQUFhRSxJQUFJLENBQUMsU0FBQ0M7UUFDL0MsSUFBTUMseUJBQXlCRCxZQUFZTixTQUFTLENBQUNSLE1BQU1DLFNBQVNDO1FBRXBFLElBQUlh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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "occam-verify-cli",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.448",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/occam-verify-cli",
|
|
7
7
|
"description": "Occam's Verifier",
|
|
@@ -12,11 +12,11 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"argumentative": "^2.0.36",
|
|
14
14
|
"necessary": "^17.0.9",
|
|
15
|
-
"occam-custom-grammars": "^5.0.
|
|
16
|
-
"occam-entities": "^1.0.
|
|
17
|
-
"occam-file-system": "^6.0.
|
|
18
|
-
"occam-furtle": "^2.0.
|
|
19
|
-
"occam-grammars": "^1.3.
|
|
15
|
+
"occam-custom-grammars": "^5.0.1340",
|
|
16
|
+
"occam-entities": "^1.0.444",
|
|
17
|
+
"occam-file-system": "^6.0.459",
|
|
18
|
+
"occam-furtle": "^2.0.278",
|
|
19
|
+
"occam-grammars": "^1.3.437",
|
|
20
20
|
"occam-lexers": "^23.1.34",
|
|
21
21
|
"occam-parsers": "^23.1.37",
|
|
22
22
|
"occam-query": "^4.1.142"
|