occam-verify-cli 1.0.123 → 1.0.125
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/constants.js +4 -4
- package/lib/dom/assertion/satisfies.js +229 -0
- package/lib/dom/axiom.js +17 -17
- package/lib/dom/reference.js +5 -5
- package/lib/dom/rule.js +2 -2
- package/lib/dom/topLevelAssertion.js +2 -2
- package/lib/dom/topLevelMetaAssertion.js +2 -2
- package/lib/index.js +2 -2
- package/lib/mixins/statement/verify.js +12 -12
- package/lib/mixins/step/unify.js +13 -13
- package/lib/utilities/context.js +6 -6
- package/lib/utilities/json.js +6 -6
- package/package.json +5 -5
- package/src/constants.js +1 -1
- package/src/dom/assertion/{satisfying.js → satisfies.js} +28 -28
- package/src/dom/axiom.js +21 -21
- package/src/dom/reference.js +4 -4
- package/src/dom/rule.js +1 -1
- package/src/dom/topLevelAssertion.js +1 -1
- package/src/dom/topLevelMetaAssertion.js +1 -1
- package/src/index.js +1 -1
- package/src/mixins/statement/verify.js +12 -12
- package/src/mixins/step/unify.js +13 -13
- package/src/utilities/context.js +4 -4
- package/src/utilities/json.js +3 -3
- package/lib/dom/assertion/satisfying.js +0 -229
package/src/dom/axiom.js
CHANGED
|
@@ -5,16 +5,16 @@ import { arrayUtilities } from "necessary";
|
|
|
5
5
|
import TopLevelAssertion from "./topLevelAssertion";
|
|
6
6
|
|
|
7
7
|
import { nodeQuery } from "../utilities/query";
|
|
8
|
-
import {
|
|
8
|
+
import { SATISFIABLE } from "../constants";
|
|
9
9
|
import { domAssigned } from "../dom";
|
|
10
10
|
import { labelsFromJSON,
|
|
11
11
|
deductionFromJSON,
|
|
12
|
-
|
|
12
|
+
satisfiableFromJSON,
|
|
13
13
|
labelsToLabelsJSON,
|
|
14
14
|
suppositionsFromJSON,
|
|
15
15
|
deductionToDeductionJSON,
|
|
16
16
|
suppositionsToSuppositionsJSON } from "../utilities/json";
|
|
17
|
-
import {
|
|
17
|
+
import { satisfiesAssertionFromStatement } from "../utilities/context";
|
|
18
18
|
import { proofFromNode, labelsFromNode, deductionFromNode, suppositionsFromNode, stringFromLabelsAndDeduction } from "./topLevelAssertion";
|
|
19
19
|
|
|
20
20
|
const { match, backwardsSome } = arrayUtilities;
|
|
@@ -22,14 +22,14 @@ const { match, backwardsSome } = arrayUtilities;
|
|
|
22
22
|
const firstPrimaryKeywordTerminalNodeQuery = nodeQuery("/axiom/@primary-keyword[0]");
|
|
23
23
|
|
|
24
24
|
export default domAssigned(class Axiom extends TopLevelAssertion {
|
|
25
|
-
constructor(fileContext, string, labels, suppositions, deduction, proof,
|
|
25
|
+
constructor(fileContext, string, labels, suppositions, deduction, proof, satisfiable) {
|
|
26
26
|
super(fileContext, string, labels, suppositions, deduction, proof);
|
|
27
27
|
|
|
28
|
-
this.
|
|
28
|
+
this.satisfiable = satisfiable;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
return this.
|
|
31
|
+
isSatisfiable() {
|
|
32
|
+
return this.satisfiable;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
verify() {
|
|
@@ -163,17 +163,17 @@ export default domAssigned(class Axiom extends TopLevelAssertion {
|
|
|
163
163
|
statementAndStepsOrSubproofsUnified = super.unifyStatementAndStepsOrSubproofs(statement, stepsOrSubproofs, substitutions, context);
|
|
164
164
|
|
|
165
165
|
if (statementAndStepsOrSubproofsUnified) {
|
|
166
|
-
if (this.
|
|
166
|
+
if (this.satisfiable) {
|
|
167
167
|
const substitutionsMatch = backwardsSome(stepsOrSubproofs, (stepOrSubproof) => {
|
|
168
168
|
const stepSubstep = stepOrSubproof.isStep();
|
|
169
169
|
|
|
170
170
|
if (stepSubstep) {
|
|
171
171
|
const step = stepOrSubproof, ///
|
|
172
172
|
statement = step.getStatement(),
|
|
173
|
-
|
|
173
|
+
satisfiesAssertion = satisfiesAssertionFromStatement(statement, context);
|
|
174
174
|
|
|
175
|
-
if (
|
|
176
|
-
const substitutionsMatch =
|
|
175
|
+
if (satisfiesAssertion !== null) {
|
|
176
|
+
const substitutionsMatch = satisfiesAssertion.matchSubstitutions(substitutions, context);
|
|
177
177
|
|
|
178
178
|
if (substitutionsMatch) {
|
|
179
179
|
return true;
|
|
@@ -202,12 +202,12 @@ export default domAssigned(class Axiom extends TopLevelAssertion {
|
|
|
202
202
|
deduction = deductionJSON; ///
|
|
203
203
|
suppositions = suppositionsJSON; ///
|
|
204
204
|
|
|
205
|
-
const
|
|
205
|
+
const satisfiable = this.satisfiable,
|
|
206
206
|
json = {
|
|
207
207
|
labels,
|
|
208
208
|
deduction,
|
|
209
209
|
suppositions,
|
|
210
|
-
|
|
210
|
+
satisfiable
|
|
211
211
|
};
|
|
212
212
|
|
|
213
213
|
return json;
|
|
@@ -220,9 +220,9 @@ export default domAssigned(class Axiom extends TopLevelAssertion {
|
|
|
220
220
|
suppositions = suppositionsFromJSON(json, fileContext),
|
|
221
221
|
deduction = deductionFromJSON(json, fileContext),
|
|
222
222
|
proof = null,
|
|
223
|
-
|
|
223
|
+
satisfiable = satisfiableFromJSON(json, fileContext),
|
|
224
224
|
string = stringFromLabelsAndDeduction(labels, deduction),
|
|
225
|
-
topLevelAssertion = new Axiom(fileContext, string, labels, suppositions, deduction, proof,
|
|
225
|
+
topLevelAssertion = new Axiom(fileContext, string, labels, suppositions, deduction, proof, satisfiable);
|
|
226
226
|
|
|
227
227
|
return topLevelAssertion;
|
|
228
228
|
}
|
|
@@ -233,20 +233,20 @@ export default domAssigned(class Axiom extends TopLevelAssertion {
|
|
|
233
233
|
suppositions = suppositionsFromNode(node, fileContext),
|
|
234
234
|
deduction = deductionFromNode(node, fileContext),
|
|
235
235
|
proof = proofFromNode(node, fileContext),
|
|
236
|
-
|
|
236
|
+
satisfiable = satisfiableFromNode(node, fileContext),
|
|
237
237
|
string = stringFromLabelsAndDeduction(labels, deduction),
|
|
238
|
-
topLevelAssertion = new Axiom(fileContext, string, labels, suppositions, deduction, proof,
|
|
238
|
+
topLevelAssertion = new Axiom(fileContext, string, labels, suppositions, deduction, proof, satisfiable);
|
|
239
239
|
|
|
240
240
|
return topLevelAssertion;
|
|
241
241
|
}
|
|
242
242
|
});
|
|
243
243
|
|
|
244
|
-
function
|
|
244
|
+
function satisfiableFromNode(node, fileContext) {
|
|
245
245
|
const firstPrimaryKeywordTerminalNode = firstPrimaryKeywordTerminalNodeQuery(node),
|
|
246
246
|
content = firstPrimaryKeywordTerminalNode.getContent(),
|
|
247
|
-
|
|
248
|
-
|
|
247
|
+
contentSatisfiable = (content === SATISFIABLE),
|
|
248
|
+
satisfiable = contentSatisfiable; ///
|
|
249
249
|
|
|
250
|
-
return
|
|
250
|
+
return satisfiable;
|
|
251
251
|
}
|
|
252
252
|
|
package/src/dom/reference.js
CHANGED
|
@@ -13,7 +13,7 @@ import { metavariableFromJSON, metavariableToMetavariableJSON } from "../utiliti
|
|
|
13
13
|
const stepReferenceNodeQuery = nodeQuery("/step/reference"),
|
|
14
14
|
procedureCallReferenceNodeQuery = nodeQuery("/procedureCall/reference"),
|
|
15
15
|
declarationMetavariableNodeQuery = nodeQuery("/declaration/metavariable"),
|
|
16
|
-
|
|
16
|
+
satisfiesAssertionMetavariableNodeQuery = nodeQuery("/satisfiesAssertion/metavariable");
|
|
17
17
|
|
|
18
18
|
export default domAssigned(class Reference {
|
|
19
19
|
constructor(metavariable) {
|
|
@@ -228,9 +228,9 @@ export default domAssigned(class Reference {
|
|
|
228
228
|
return reference;
|
|
229
229
|
}
|
|
230
230
|
|
|
231
|
-
static
|
|
232
|
-
const
|
|
233
|
-
metavariableNode =
|
|
231
|
+
static fromSatisfiesAssertionNode(satisfiesAssertionNode, fileContext) {
|
|
232
|
+
const satisfiesAssertionMetavariableNode = satisfiesAssertionMetavariableNodeQuery(satisfiesAssertionNode),
|
|
233
|
+
metavariableNode = satisfiesAssertionMetavariableNode, ///
|
|
234
234
|
reference = referenceFromMetavariableNode(metavariableNode, fileContext);
|
|
235
235
|
|
|
236
236
|
return reference;
|
package/src/dom/rule.js
CHANGED
|
@@ -19,7 +19,7 @@ import { labelsFromJSON,
|
|
|
19
19
|
const { reverse, extract, backwardsEvery } = arrayUtilities;
|
|
20
20
|
|
|
21
21
|
const proofNodeQuery = nodeQuery("/rule/proof"),
|
|
22
|
-
labelNodesQuery = nodesQuery("/rule/labels/label"),
|
|
22
|
+
labelNodesQuery = nodesQuery("/rule/parenthesisedLabels/labels/label"),
|
|
23
23
|
premiseNodesQuery = nodesQuery("/rule/premise"),
|
|
24
24
|
conclusionNodeQuery = nodeQuery("/rule/conclusion");
|
|
25
25
|
|
|
@@ -17,7 +17,7 @@ import { labelsFromJSON,
|
|
|
17
17
|
const { reverse, extract, backwardsEvery } = arrayUtilities;
|
|
18
18
|
|
|
19
19
|
const proofNodeQuery = nodeQuery("/*/proof"),
|
|
20
|
-
labelNodesQuery = nodesQuery("/*/labels/label"),
|
|
20
|
+
labelNodesQuery = nodesQuery("/*/parenthesisedLabels/labels/label"),
|
|
21
21
|
deductionNodeQuery = nodeQuery("/*/deduction"),
|
|
22
22
|
suppositionNodesQuery = nodesQuery("/*/supposition");
|
|
23
23
|
|
|
@@ -20,7 +20,7 @@ import { labelsFromJSON,
|
|
|
20
20
|
|
|
21
21
|
const { first } = arrayUtilities;
|
|
22
22
|
|
|
23
|
-
const labelNodeQuery = nodeQuery("/
|
|
23
|
+
const labelNodeQuery = nodeQuery("/*/parenthesisedLabel/label");
|
|
24
24
|
|
|
25
25
|
export default class TopLevelMetaAssertion extends TopLevelAssertion {
|
|
26
26
|
constructor(fileContext, string, labels, suppositions, deduction, proof, substitutions) {
|
package/src/index.js
CHANGED
|
@@ -41,7 +41,7 @@ import PropertyRelation from "./dom/relation/property";
|
|
|
41
41
|
import SubproofAssertion from "./dom/assertion/subproof";
|
|
42
42
|
import PropertyAssertion from "./dom/assertion/property";
|
|
43
43
|
import ContainedAssertion from "./dom/assertion/contained";
|
|
44
|
-
import
|
|
44
|
+
import SatisfiesAssertion from "./dom/assertion/satisfies";
|
|
45
45
|
import VariableDeclaration from "./dom/declaration/variable";
|
|
46
46
|
import BracketedCombinator from "./dom/combinator/bracketed";
|
|
47
47
|
import BracketedConstructor from "./dom/constructor/bracketed";
|
|
@@ -10,7 +10,7 @@ import { equalityFromStatement,
|
|
|
10
10
|
propertyAssertionFromStatement,
|
|
11
11
|
subproofAssertionFromStatement,
|
|
12
12
|
containedAssertionFromStatement,
|
|
13
|
-
|
|
13
|
+
satisfiesAssertionFromStatement } from "../../utilities/context";
|
|
14
14
|
|
|
15
15
|
function unifyWithBracketedCombinator(statement, assignments, stated, context) {
|
|
16
16
|
stated = true; ///
|
|
@@ -217,26 +217,26 @@ function verifyAsContainedAssertion(statement, assignments, stated, context) {
|
|
|
217
217
|
return verifiedAsContainedAssertion;
|
|
218
218
|
}
|
|
219
219
|
|
|
220
|
-
function
|
|
221
|
-
let
|
|
220
|
+
function verifyAsSatisfiesAssertion(statement, assignments, stated, context) {
|
|
221
|
+
let verifiedAsSatisfiesAssertion = false;
|
|
222
222
|
|
|
223
|
-
const
|
|
223
|
+
const satisfiesAssertion = satisfiesAssertionFromStatement(statement, context);
|
|
224
224
|
|
|
225
|
-
if (
|
|
225
|
+
if (satisfiesAssertion !== null) {
|
|
226
226
|
const statementString = statement.getString();
|
|
227
227
|
|
|
228
|
-
context.trace(`Verifying the '${statementString}' statement as a
|
|
228
|
+
context.trace(`Verifying the '${statementString}' statement as a satisfies assertion...`);
|
|
229
229
|
|
|
230
|
-
const
|
|
230
|
+
const satisfiesAssertionVerified = satisfiesAssertion.verify(assignments, stated, context);
|
|
231
231
|
|
|
232
|
-
|
|
232
|
+
verifiedAsSatisfiesAssertion = satisfiesAssertionVerified; ///
|
|
233
233
|
|
|
234
|
-
if (
|
|
235
|
-
context.debug(`...verified the '${statementString}' statement as a
|
|
234
|
+
if (verifiedAsSatisfiesAssertion) {
|
|
235
|
+
context.debug(`...verified the '${statementString}' statement as a satisfies assertion.`);
|
|
236
236
|
}
|
|
237
237
|
}
|
|
238
238
|
|
|
239
|
-
return
|
|
239
|
+
return verifiedAsSatisfiesAssertion;
|
|
240
240
|
}
|
|
241
241
|
|
|
242
242
|
const verifyMixins = [
|
|
@@ -250,7 +250,7 @@ const verifyMixins = [
|
|
|
250
250
|
verifyAsPropertyAssertion,
|
|
251
251
|
verifyAsSubproofAssertion,
|
|
252
252
|
verifyAsContainedAssertion,
|
|
253
|
-
|
|
253
|
+
verifyAsSatisfiesAssertion
|
|
254
254
|
];
|
|
255
255
|
|
|
256
256
|
export default verifyMixins;
|
package/src/mixins/step/unify.js
CHANGED
|
@@ -7,7 +7,7 @@ import { equalityFromStatement,
|
|
|
7
7
|
judgementFromStatement,
|
|
8
8
|
typeAssertionFromStatement,
|
|
9
9
|
propertyAssertionFromStatement,
|
|
10
|
-
|
|
10
|
+
satisfiesAssertionFromStatement } from "../../utilities/context";
|
|
11
11
|
|
|
12
12
|
function unifyAWithRule(statement, reference, substitutions, context) {
|
|
13
13
|
let unifiedWithRule = false;
|
|
@@ -65,40 +65,40 @@ function unifyAWithReference(statement, reference, substitutions, context) {
|
|
|
65
65
|
return unifiedWithReference;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
function
|
|
69
|
-
let
|
|
68
|
+
function unifyAsSatisfiesAssertion(statement, reference, substitutions, context) {
|
|
69
|
+
let unifiedAsSatisfiesAssertion = false;
|
|
70
70
|
|
|
71
71
|
if (reference !== null) {
|
|
72
|
-
const
|
|
72
|
+
const satisfiesAssertion = satisfiesAssertionFromStatement(statement, context);
|
|
73
73
|
|
|
74
|
-
if (
|
|
74
|
+
if (satisfiesAssertion !== null) {
|
|
75
75
|
const statementString = statement.getString();
|
|
76
76
|
|
|
77
|
-
context.trace(`Unifying the '${statementString}' statement as a
|
|
77
|
+
context.trace(`Unifying the '${statementString}' statement as a satisfies assertion...`);
|
|
78
78
|
|
|
79
79
|
const axiomLemmaTheoremConjecture = context.findAxiomLemmaTheoremConjectureByReference(reference);
|
|
80
80
|
|
|
81
81
|
if (axiomLemmaTheoremConjecture !== null) {
|
|
82
|
-
reference =
|
|
82
|
+
reference = satisfiesAssertion.getReference();
|
|
83
83
|
|
|
84
84
|
const axiom = context.findAxiomByReference(reference),
|
|
85
85
|
substitutions = Substitutions.fromNothing(),
|
|
86
86
|
axiomLemmaTheoremConjectureUnified = axiom.unifyAxiomLemmaTheoremConjecture(axiomLemmaTheoremConjecture, substitutions, context);
|
|
87
87
|
|
|
88
88
|
if (axiomLemmaTheoremConjectureUnified) {
|
|
89
|
-
const substitutionsMatch =
|
|
89
|
+
const substitutionsMatch = satisfiesAssertion.matchSubstitutions(substitutions, context);
|
|
90
90
|
|
|
91
|
-
|
|
91
|
+
unifiedAsSatisfiesAssertion = substitutionsMatch; ///
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
-
if (
|
|
96
|
-
context.debug(`...unified the '${statementString}' statement as a
|
|
95
|
+
if (unifiedAsSatisfiesAssertion) {
|
|
96
|
+
context.debug(`...unified the '${statementString}' statement as a satisfies assertion.`);
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
|
|
101
|
-
return
|
|
101
|
+
return unifiedAsSatisfiesAssertion;
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
function unifyAWithAxiomLemmaTheoremOrConjecture(statement, reference, substitutions, context) {
|
|
@@ -253,7 +253,7 @@ function unifyWithStepsOrSubproofs(statement, reference, substitutions, context)
|
|
|
253
253
|
const unifyMixins = [
|
|
254
254
|
unifyAWithRule,
|
|
255
255
|
unifyAWithReference,
|
|
256
|
-
|
|
256
|
+
unifyAsSatisfiesAssertion,
|
|
257
257
|
unifyAWithAxiomLemmaTheoremOrConjecture,
|
|
258
258
|
unifyAsEquality,
|
|
259
259
|
unifyAsJudgement,
|
package/src/utilities/context.js
CHANGED
|
@@ -93,14 +93,14 @@ export function containedAssertionFromStatement(statement, context) {
|
|
|
93
93
|
return containedAssertion;
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
-
export function
|
|
96
|
+
export function satisfiesAssertionFromStatement(statement, context) {
|
|
97
97
|
context = contextFromStatement(statement, context); ///
|
|
98
98
|
|
|
99
|
-
const {
|
|
99
|
+
const { SatisfiesAssertion } = dom,
|
|
100
100
|
statementNode = statement.getNode(),
|
|
101
|
-
|
|
101
|
+
satisfiesAssertion = SatisfiesAssertion.fromStatementNode(statementNode, context);
|
|
102
102
|
|
|
103
|
-
return
|
|
103
|
+
return satisfiesAssertion;
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
function contextFromFrame(frame, context) {
|
package/src/utilities/json.js
CHANGED
|
@@ -84,10 +84,10 @@ export function deductionFromJSON(json, fileContext) {
|
|
|
84
84
|
return deduction;
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
export function
|
|
88
|
-
const {
|
|
87
|
+
export function satisfiableFromJSON(json, fileContext) {
|
|
88
|
+
const { satisfiable } = json;
|
|
89
89
|
|
|
90
|
-
return
|
|
90
|
+
return satisfiable;
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
export function conclusionFromJSON(json, fileContext) {
|
|
@@ -1,229 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "default", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return _default;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
var _dom = /*#__PURE__*/ _interop_require_wildcard(require("../../dom"));
|
|
12
|
-
var _query = require("../../utilities/query");
|
|
13
|
-
function _class_call_check(instance, Constructor) {
|
|
14
|
-
if (!(instance instanceof Constructor)) {
|
|
15
|
-
throw new TypeError("Cannot call a class as a function");
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
function _defineProperties(target, props) {
|
|
19
|
-
for(var i = 0; i < props.length; i++){
|
|
20
|
-
var descriptor = props[i];
|
|
21
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
22
|
-
descriptor.configurable = true;
|
|
23
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
24
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
function _create_class(Constructor, protoProps, staticProps) {
|
|
28
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
29
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
30
|
-
return Constructor;
|
|
31
|
-
}
|
|
32
|
-
function _define_property(obj, key, value) {
|
|
33
|
-
if (key in obj) {
|
|
34
|
-
Object.defineProperty(obj, key, {
|
|
35
|
-
value: value,
|
|
36
|
-
enumerable: true,
|
|
37
|
-
configurable: true,
|
|
38
|
-
writable: true
|
|
39
|
-
});
|
|
40
|
-
} else {
|
|
41
|
-
obj[key] = value;
|
|
42
|
-
}
|
|
43
|
-
return obj;
|
|
44
|
-
}
|
|
45
|
-
function _getRequireWildcardCache(nodeInterop) {
|
|
46
|
-
if (typeof WeakMap !== "function") return null;
|
|
47
|
-
var cacheBabelInterop = new WeakMap();
|
|
48
|
-
var cacheNodeInterop = new WeakMap();
|
|
49
|
-
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
50
|
-
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
51
|
-
})(nodeInterop);
|
|
52
|
-
}
|
|
53
|
-
function _interop_require_wildcard(obj, nodeInterop) {
|
|
54
|
-
if (!nodeInterop && obj && obj.__esModule) {
|
|
55
|
-
return obj;
|
|
56
|
-
}
|
|
57
|
-
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
58
|
-
return {
|
|
59
|
-
default: obj
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
var cache = _getRequireWildcardCache(nodeInterop);
|
|
63
|
-
if (cache && cache.has(obj)) {
|
|
64
|
-
return cache.get(obj);
|
|
65
|
-
}
|
|
66
|
-
var newObj = {
|
|
67
|
-
__proto__: null
|
|
68
|
-
};
|
|
69
|
-
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
70
|
-
for(var key in obj){
|
|
71
|
-
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
72
|
-
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
73
|
-
if (desc && (desc.get || desc.set)) {
|
|
74
|
-
Object.defineProperty(newObj, key, desc);
|
|
75
|
-
} else {
|
|
76
|
-
newObj[key] = obj[key];
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
newObj.default = obj;
|
|
81
|
-
if (cache) {
|
|
82
|
-
cache.set(obj, newObj);
|
|
83
|
-
}
|
|
84
|
-
return newObj;
|
|
85
|
-
}
|
|
86
|
-
var _SatisfyingAssertion;
|
|
87
|
-
var termNodesQuery = (0, _query.nodesQuery)("/satisfyingAssertion/term"), satisfyingAssertionNodeQuery = (0, _query.nodeQuery)("/statement/satisfyingAssertion");
|
|
88
|
-
var _default = (0, _dom.domAssigned)((_SatisfyingAssertion = /*#__PURE__*/ function() {
|
|
89
|
-
function SatisfyingAssertion(string, node, tokens, terms, reference) {
|
|
90
|
-
_class_call_check(this, SatisfyingAssertion);
|
|
91
|
-
this.string = string;
|
|
92
|
-
this.node = node;
|
|
93
|
-
this.tokens = tokens;
|
|
94
|
-
this.terms = terms;
|
|
95
|
-
this.reference = reference;
|
|
96
|
-
}
|
|
97
|
-
_create_class(SatisfyingAssertion, [
|
|
98
|
-
{
|
|
99
|
-
key: "getString",
|
|
100
|
-
value: function getString() {
|
|
101
|
-
return this.string;
|
|
102
|
-
}
|
|
103
|
-
},
|
|
104
|
-
{
|
|
105
|
-
key: "getNode",
|
|
106
|
-
value: function getNode() {
|
|
107
|
-
return this.node;
|
|
108
|
-
}
|
|
109
|
-
},
|
|
110
|
-
{
|
|
111
|
-
key: "getTokens",
|
|
112
|
-
value: function getTokens() {
|
|
113
|
-
return this.tokens;
|
|
114
|
-
}
|
|
115
|
-
},
|
|
116
|
-
{
|
|
117
|
-
key: "getTerms",
|
|
118
|
-
value: function getTerms() {
|
|
119
|
-
return this.terms;
|
|
120
|
-
}
|
|
121
|
-
},
|
|
122
|
-
{
|
|
123
|
-
key: "getReference",
|
|
124
|
-
value: function getReference() {
|
|
125
|
-
return this.reference;
|
|
126
|
-
}
|
|
127
|
-
},
|
|
128
|
-
{
|
|
129
|
-
key: "matchSubstitutions",
|
|
130
|
-
value: function matchSubstitutions(substitutions, context) {
|
|
131
|
-
var substitutionsMatch;
|
|
132
|
-
var termsString = termsStringFromTerms(this.terms), substitutionsString = substitutions.asString(), satisfyingAssertionString = this.string; ///
|
|
133
|
-
context.trace("Matching the '".concat(substitutionsString, "' substitutions against the '").concat(satisfyingAssertionString, "' satisfying assertion's ").concat(termsString, " terms..."));
|
|
134
|
-
var termsEquate = substitutions.matchTerms(this.terms);
|
|
135
|
-
substitutionsMatch = termsEquate; ///
|
|
136
|
-
if (substitutionsMatch) {
|
|
137
|
-
context.debug("...matched the '".concat(substitutionsString, "' substitutions against the '").concat(satisfyingAssertionString, "' satisfying assertion's ").concat(termsString, " terms."));
|
|
138
|
-
}
|
|
139
|
-
return substitutionsMatch;
|
|
140
|
-
}
|
|
141
|
-
},
|
|
142
|
-
{
|
|
143
|
-
key: "verify",
|
|
144
|
-
value: function verify(assignments, stated, context) {
|
|
145
|
-
var verified = false;
|
|
146
|
-
var satisfyingAssertionString = this.string; ///
|
|
147
|
-
context.trace("Verifying the '".concat(satisfyingAssertionString, "' satisfying assertion..."));
|
|
148
|
-
var termsVerified = this.verifyTerms(assignments, stated, context);
|
|
149
|
-
if (termsVerified) {
|
|
150
|
-
var referenceVerified = this.verifyReference(assignments, stated, context);
|
|
151
|
-
verified = referenceVerified; ///
|
|
152
|
-
}
|
|
153
|
-
if (verified) {
|
|
154
|
-
context.debug("...verified the '".concat(satisfyingAssertionString, "' satisfying assertion."));
|
|
155
|
-
}
|
|
156
|
-
return verified;
|
|
157
|
-
}
|
|
158
|
-
},
|
|
159
|
-
{
|
|
160
|
-
key: "verifyTerms",
|
|
161
|
-
value: function verifyTerms(assignments, stated, context) {
|
|
162
|
-
var termsVerified;
|
|
163
|
-
var termsString = termsStringFromTerms(this.terms), satisfyingAssertionString = this.string; ///
|
|
164
|
-
context.trace("Verifying the '".concat(satisfyingAssertionString, "' satisfying assertion's ").concat(termsString, " terms..."));
|
|
165
|
-
termsVerified = this.terms.every(function(term) {
|
|
166
|
-
var termVerified = term.verify(context, function() {
|
|
167
|
-
var verifiedAhead = true;
|
|
168
|
-
return verifiedAhead;
|
|
169
|
-
});
|
|
170
|
-
return termVerified;
|
|
171
|
-
});
|
|
172
|
-
if (termsVerified) {
|
|
173
|
-
context.debug("...verified the '".concat(satisfyingAssertionString, "' satisfying assertion's ").concat(termsString, " terms."));
|
|
174
|
-
}
|
|
175
|
-
return termsVerified;
|
|
176
|
-
}
|
|
177
|
-
},
|
|
178
|
-
{
|
|
179
|
-
key: "verifyReference",
|
|
180
|
-
value: function verifyReference(assignments, stated, context) {
|
|
181
|
-
var referenceVerified = false;
|
|
182
|
-
var referenceString = this.reference.getString(), satisfyingAssertionString = this.string; ///
|
|
183
|
-
context.trace("Verifying the '".concat(satisfyingAssertionString, "' satisfying assertion's '").concat(referenceString, "' reference..."));
|
|
184
|
-
var axiom = context.findAxiomByReference(this.reference, context);
|
|
185
|
-
if (axiom !== null) {
|
|
186
|
-
var axiomSatisfying = axiom.isSatisfying();
|
|
187
|
-
if (axiomSatisfying) {
|
|
188
|
-
referenceVerified = true;
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
if (referenceVerified) {
|
|
192
|
-
context.debug("...verified the '".concat(satisfyingAssertionString, "' satisfying assertion's '").concat(referenceString, "' reference."));
|
|
193
|
-
}
|
|
194
|
-
return referenceVerified;
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
], [
|
|
198
|
-
{
|
|
199
|
-
key: "fromStatementNode",
|
|
200
|
-
value: function fromStatementNode(statementNode, context) {
|
|
201
|
-
var satisfyingAssertion = null;
|
|
202
|
-
var satisfyingAssertionNode = satisfyingAssertionNodeQuery(statementNode);
|
|
203
|
-
if (satisfyingAssertionNode !== null) {
|
|
204
|
-
var Reference = _dom.default.Reference, node = satisfyingAssertionNode, string = context.nodeAsString(node), tokens = context.nodeAsTokens(node), terms = termsFromSatisfyingAssertionNode(satisfyingAssertionNode, context), reference = Reference.fromSatisfyingAssertionNode(satisfyingAssertionNode, context);
|
|
205
|
-
satisfyingAssertion = new SatisfyingAssertion(string, node, tokens, terms, reference);
|
|
206
|
-
}
|
|
207
|
-
return satisfyingAssertion;
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
]);
|
|
211
|
-
return SatisfyingAssertion;
|
|
212
|
-
}(), _define_property(_SatisfyingAssertion, "name", "SatisfyingAssertion"), _SatisfyingAssertion));
|
|
213
|
-
function termsStringFromTerms(terms) {
|
|
214
|
-
var termsString = terms.reduce(function(termsString, term) {
|
|
215
|
-
var termString = term.getString();
|
|
216
|
-
termsString = termsString === null ? "'".concat(termString, "'") : "".concat(termsString, ", '").concat(termString, "'");
|
|
217
|
-
return termsString;
|
|
218
|
-
}, null);
|
|
219
|
-
return termsString;
|
|
220
|
-
}
|
|
221
|
-
function termsFromSatisfyingAssertionNode(satisfyingAssertionNode, context) {
|
|
222
|
-
var termNodes = termNodesQuery(satisfyingAssertionNode), terms = termNodes.map(function(termNode) {
|
|
223
|
-
var Term = _dom.default.Term, term = Term.fromTermNode(termNode, context);
|
|
224
|
-
return term;
|
|
225
|
-
});
|
|
226
|
-
return terms;
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kb20vYXNzZXJ0aW9uL3NhdGlzZnlpbmcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBkb20gZnJvbSBcIi4uLy4uL2RvbVwiO1xuXG5pbXBvcnQgeyBkb21Bc3NpZ25lZCB9IGZyb20gXCIuLi8uLi9kb21cIjtcbmltcG9ydCB7IG5vZGVRdWVyeSwgbm9kZXNRdWVyeSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgdGVybU5vZGVzUXVlcnkgPSBub2Rlc1F1ZXJ5KFwiL3NhdGlzZnlpbmdBc3NlcnRpb24vdGVybVwiKSxcbiAgICAgIHNhdGlzZnlpbmdBc3NlcnRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50L3NhdGlzZnlpbmdBc3NlcnRpb25cIik7XG5cbmV4cG9ydCBkZWZhdWx0IGRvbUFzc2lnbmVkKGNsYXNzIFNhdGlzZnlpbmdBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3RvcihzdHJpbmcsIG5vZGUsIHRva2VucywgdGVybXMsIHJlZmVyZW5jZSkge1xuICAgIHRoaXMuc3RyaW5nID0gc3RyaW5nO1xuICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gICAgdGhpcy50b2tlbnMgPSB0b2tlbnM7XG4gICAgdGhpcy50ZXJtcyA9IHRlcm1zO1xuICAgIHRoaXMucmVmZXJlbmNlID0gcmVmZXJlbmNlO1xuICB9XG5cbiAgZ2V0U3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLnN0cmluZztcbiAgfVxuXG4gIGdldE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZTtcbiAgfVxuXG4gIGdldFRva2VucygpIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbnM7XG4gIH1cblxuICBnZXRUZXJtcygpIHtcbiAgICByZXR1cm4gdGhpcy50ZXJtcztcbiAgfVxuXG4gIGdldFJlZmVyZW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2U7XG4gIH1cblxuICBtYXRjaFN1YnN0aXR1dGlvbnMoc3Vic3RpdHV0aW9ucywgY29udGV4dCkge1xuICAgIGxldCBzdWJzdGl0dXRpb25zTWF0Y2g7XG5cbiAgICBjb25zdCB0ZXJtc1N0cmluZyA9IHRlcm1zU3RyaW5nRnJvbVRlcm1zKHRoaXMudGVybXMpLFxuICAgICAgICAgIHN1YnN0aXR1dGlvbnNTdHJpbmcgPSBzdWJzdGl0dXRpb25zLmFzU3RyaW5nKCksXG4gICAgICAgICAgc2F0aXNmeWluZ0Fzc2VydGlvblN0cmluZyA9IHRoaXMuc3RyaW5nOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYE1hdGNoaW5nIHRoZSAnJHtzdWJzdGl0dXRpb25zU3RyaW5nfScgc3Vic3RpdHV0aW9ucyBhZ2FpbnN0IHRoZSAnJHtzYXRpc2Z5aW5nQXNzZXJ0aW9uU3RyaW5nfScgc2F0aXNmeWluZyBhc3NlcnRpb24ncyAke3Rlcm1zU3RyaW5nfSB0ZXJtcy4uLmApO1xuXG4gICAgY29uc3QgdGVybXNFcXVhdGUgPSBzdWJzdGl0dXRpb25zLm1hdGNoVGVybXModGhpcy50ZXJtcyk7XG5cbiAgICBzdWJzdGl0dXRpb25zTWF0Y2ggPSB0ZXJtc0VxdWF0ZTsgIC8vL1xuXG4gICAgaWYgKHN1YnN0aXR1dGlvbnNNYXRjaCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4ubWF0Y2hlZCB0aGUgJyR7c3Vic3RpdHV0aW9uc1N0cmluZ30nIHN1YnN0aXR1dGlvbnMgYWdhaW5zdCB0aGUgJyR7c2F0aXNmeWluZ0Fzc2VydGlvblN0cmluZ30nIHNhdGlzZnlpbmcgYXNzZXJ0aW9uJ3MgJHt0ZXJtc1N0cmluZ30gdGVybXMuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnNNYXRjaDtcbiAgfVxuXG4gIHZlcmlmeShhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KSB7XG4gICAgbGV0IHZlcmlmaWVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBzYXRpc2Z5aW5nQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5zdHJpbmc7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzYXRpc2Z5aW5nQXNzZXJ0aW9uU3RyaW5nfScgc2F0aXNmeWluZyBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IHRlcm1zVmVyaWZpZWQgPSB0aGlzLnZlcmlmeVRlcm1zKGFzc2lnbm1lbnRzLCBzdGF0ZWQsIGNvbnRleHQpO1xuXG4gICAgaWYgKHRlcm1zVmVyaWZpZWQpIHtcbiAgICAgIGNvbnN0IHJlZmVyZW5jZVZlcmlmaWVkID0gdGhpcy52ZXJpZnlSZWZlcmVuY2UoYXNzaWdubWVudHMsIHN0YXRlZCwgY29udGV4dCk7XG5cbiAgICAgIHZlcmlmaWVkID0gcmVmZXJlbmNlVmVyaWZpZWQ7IC8vL1xuICAgIH1cblxuICAgIGlmICh2ZXJpZmllZCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3NhdGlzZnlpbmdBc3NlcnRpb25TdHJpbmd9JyBzYXRpc2Z5aW5nIGFzc2VydGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZpZWQ7XG4gIH1cblxuICB2ZXJpZnlUZXJtcyhhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KSB7XG4gICAgbGV0IHRlcm1zVmVyaWZpZWQ7XG5cbiAgICBjb25zdCB0ZXJtc1N0cmluZyA9IHRlcm1zU3RyaW5nRnJvbVRlcm1zKHRoaXMudGVybXMpLFxuICAgICAgICAgIHNhdGlzZnlpbmdBc3NlcnRpb25TdHJpbmcgPSB0aGlzLnN0cmluZzsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3NhdGlzZnlpbmdBc3NlcnRpb25TdHJpbmd9JyBzYXRpc2Z5aW5nIGFzc2VydGlvbidzICR7dGVybXNTdHJpbmd9IHRlcm1zLi4uYCk7XG5cbiAgICB0ZXJtc1ZlcmlmaWVkID0gdGhpcy50ZXJtcy5ldmVyeSgodGVybSkgPT4ge1xuICAgICAgY29uc3QgdGVybVZlcmlmaWVkID0gdGVybS52ZXJpZnkoY29udGV4dCwgKCkgPT4ge1xuICAgICAgICBjb25zdCB2ZXJpZmllZEFoZWFkID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gdmVyaWZpZWRBaGVhZDtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gdGVybVZlcmlmaWVkO1xuICAgIH0pO1xuXG4gICAgaWYgKHRlcm1zVmVyaWZpZWQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzYXRpc2Z5aW5nQXNzZXJ0aW9uU3RyaW5nfScgc2F0aXNmeWluZyBhc3NlcnRpb24ncyAke3Rlcm1zU3RyaW5nfSB0ZXJtcy5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybXNWZXJpZmllZDtcbiAgfVxuXG4gIHZlcmlmeVJlZmVyZW5jZShhc3NpZ25tZW50cywgc3RhdGVkLCBjb250ZXh0KSB7XG4gICAgbGV0IHJlZmVyZW5jZVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgICBjb25zdCByZWZlcmVuY2VTdHJpbmcgPSB0aGlzLnJlZmVyZW5jZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzYXRpc2Z5aW5nQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5zdHJpbmc7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzYXRpc2Z5aW5nQXNzZXJ0aW9uU3RyaW5nfScgc2F0aXNmeWluZyBhc3NlcnRpb24ncyAnJHtyZWZlcmVuY2VTdHJpbmd9JyByZWZlcmVuY2UuLi5gKTtcblxuICAgIGNvbnN0IGF4aW9tID0gY29udGV4dC5maW5kQXhpb21CeVJlZmVyZW5jZSh0aGlzLnJlZmVyZW5jZSwgY29udGV4dCk7XG5cbiAgICBpZiAoYXhpb20gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGF4aW9tU2F0aXNmeWluZyA9IGF4aW9tLmlzU2F0aXNmeWluZygpO1xuXG4gICAgICBpZiAoYXhpb21TYXRpc2Z5aW5nKSB7XG4gICAgICAgIHJlZmVyZW5jZVZlcmlmaWVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocmVmZXJlbmNlVmVyaWZpZWQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzYXRpc2Z5aW5nQXNzZXJ0aW9uU3RyaW5nfScgc2F0aXNmeWluZyBhc3NlcnRpb24ncyAnJHtyZWZlcmVuY2VTdHJpbmd9JyByZWZlcmVuY2UuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZmVyZW5jZVZlcmlmaWVkO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIlNhdGlzZnlpbmdBc3NlcnRpb25cIjtcblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCkge1xuICAgIGxldCBzYXRpc2Z5aW5nQXNzZXJ0aW9uID0gbnVsbDtcblxuICAgIGNvbnN0IHNhdGlzZnlpbmdBc3NlcnRpb25Ob2RlID0gc2F0aXNmeWluZ0Fzc2VydGlvbk5vZGVRdWVyeShzdGF0ZW1lbnROb2RlKTtcblxuICAgIGlmIChzYXRpc2Z5aW5nQXNzZXJ0aW9uTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgeyBSZWZlcmVuY2UgfSA9IGRvbSxcbiAgICAgICAgICAgIG5vZGUgPSBzYXRpc2Z5aW5nQXNzZXJ0aW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgc3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgICAgICB0b2tlbnMgPSBjb250ZXh0Lm5vZGVBc1Rva2Vucyhub2RlKSxcbiAgICAgICAgICAgIHRlcm1zID0gdGVybXNGcm9tU2F0aXNmeWluZ0Fzc2VydGlvbk5vZGUoc2F0aXNmeWluZ0Fzc2VydGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgcmVmZXJlbmNlID0gUmVmZXJlbmNlLmZyb21TYXRpc2Z5aW5nQXNzZXJ0aW9uTm9kZShzYXRpc2Z5aW5nQXNzZXJ0aW9uTm9kZSwgY29udGV4dCk7XG5cbiAgICAgIHNhdGlzZnlpbmdBc3NlcnRpb24gPSBuZXcgU2F0aXNmeWluZ0Fzc2VydGlvbihzdHJpbmcsIG5vZGUsIHRva2VucywgdGVybXMsIHJlZmVyZW5jZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNhdGlzZnlpbmdBc3NlcnRpb247XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiB0ZXJtc1N0cmluZ0Zyb21UZXJtcyh0ZXJtcykge1xuICBjb25zdCB0ZXJtc1N0cmluZyA9IHRlcm1zLnJlZHVjZSgodGVybXNTdHJpbmcsIHRlcm0pID0+IHtcbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKTtcblxuICAgIHRlcm1zU3RyaW5nID0gKHRlcm1zU3RyaW5nID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgYCcke3Rlcm1TdHJpbmd9J2AgOiAgLy8vXG4gICAgICAgICAgICAgICAgICAgICBgJHt0ZXJtc1N0cmluZ30sICcke3Rlcm1TdHJpbmd9J2A7XG5cbiAgICByZXR1cm4gdGVybXNTdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiB0ZXJtc1N0cmluZztcbn1cblxuZnVuY3Rpb24gdGVybXNGcm9tU2F0aXNmeWluZ0Fzc2VydGlvbk5vZGUoc2F0aXNmeWluZ0Fzc2VydGlvbk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdGVybU5vZGVzID0gdGVybU5vZGVzUXVlcnkoc2F0aXNmeWluZ0Fzc2VydGlvbk5vZGUpLFxuICAgICAgICB0ZXJtcyA9IHRlcm1Ob2Rlcy5tYXAoKHRlcm1Ob2RlKSA9PiB7XG4gICAgICAgICAgY29uc3QgeyBUZXJtIH0gPSBkb20sXG4gICAgICAgICAgICAgICAgdGVybSA9IFRlcm0uZnJvbVRlcm1Ob2RlKHRlcm1Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICAgIHJldHVybiB0ZXJtO1xuICAgICAgICB9KTtcblxuICByZXR1cm4gdGVybXM7XG59XG4iXSwibmFtZXMiOlsidGVybU5vZGVzUXVlcnkiLCJub2Rlc1F1ZXJ5Iiwic2F0aXNmeWluZ0Fzc2VydGlvbk5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsImRvbUFzc2lnbmVkIiwiU2F0aXNmeWluZ0Fzc2VydGlvbiIsInN0cmluZyIsIm5vZGUiLCJ0b2tlbnMiLCJ0ZXJtcyIsInJlZmVyZW5jZSIsImdldFN0cmluZyIsImdldE5vZGUiLCJnZXRUb2tlbnMiLCJnZXRUZXJtcyIsImdldFJlZmVyZW5jZSIsIm1hdGNoU3Vic3RpdHV0aW9ucyIsInN1YnN0aXR1dGlvbnMiLCJjb250ZXh0Iiwic3Vic3RpdHV0aW9uc01hdGNoIiwidGVybXNTdHJpbmciLCJ0ZXJtc1N0cmluZ0Zyb21UZXJtcyIsInN1YnN0aXR1dGlvbnNTdHJpbmciLCJhc1N0cmluZyIsInNhdGlzZnlpbmdBc3NlcnRpb25TdHJpbmciLCJ0cmFjZSIsInRlcm1zRXF1YXRlIiwibWF0Y2hUZXJtcyIsImRlYnVnIiwidmVyaWZ5IiwiYXNzaWdubWVudHMiLCJzdGF0ZWQiLCJ2ZXJpZmllZCIsInRlcm1zVmVyaWZpZWQiLCJ2ZXJpZnlUZXJtcyIsInJlZmVyZW5jZVZlcmlmaWVkIiwidmVyaWZ5UmVmZXJlbmNlIiwiZXZlcnkiLCJ0ZXJtIiwidGVybVZlcmlmaWVkIiwidmVyaWZpZWRBaGVhZCIsInJlZmVyZW5jZVN0cmluZyIsImF4aW9tIiwiZmluZEF4aW9tQnlSZWZlcmVuY2UiLCJheGlvbVNhdGlzZnlpbmciLCJpc1NhdGlzZnlpbmciLCJmcm9tU3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE5vZGUiLCJzYXRpc2Z5aW5nQXNzZXJ0aW9uIiwic2F0aXNmeWluZ0Fzc2VydGlvbk5vZGUiLCJSZWZlcmVuY2UiLCJkb20iLCJub2RlQXNTdHJpbmciLCJub2RlQXNUb2tlbnMiLCJ0ZXJtc0Zyb21TYXRpc2Z5aW5nQXNzZXJ0aW9uTm9kZSIsImZyb21TYXRpc2Z5aW5nQXNzZXJ0aW9uTm9kZSIsIm5hbWUiLCJyZWR1Y2UiLCJ0ZXJtU3RyaW5nIiwidGVybU5vZGVzIiwibWFwIiwidGVybU5vZGUiLCJUZXJtIiwiZnJvbVRlcm1Ob2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFVQTs7O2VBQUE7OzsyREFSZ0I7cUJBR3NCOzs7Ozs7Ozs7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
|