occam-verify-cli 1.0.421 → 1.0.427

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (272) hide show
  1. package/lib/action/verify.js +7 -3
  2. package/lib/context/file.js +8 -44
  3. package/lib/context/local.js +8 -26
  4. package/lib/context/nominal.js +64 -0
  5. package/lib/context/release.js +2 -2
  6. package/lib/context/temporary.js +6 -58
  7. package/lib/element/assertion/contained.js +303 -0
  8. package/lib/element/assertion/defined.js +318 -0
  9. package/lib/element/assertion/property.js +299 -0
  10. package/lib/element/assertion/satisfies.js +264 -0
  11. package/lib/element/assertion/subproof.js +178 -0
  12. package/lib/element/assertion/type.js +294 -0
  13. package/lib/{ontology → element}/assertion.js +9 -9
  14. package/lib/element/assumption.js +365 -0
  15. package/lib/element/axiom.js +332 -0
  16. package/lib/element/axiomLemmaTheoremConjecture.js +346 -0
  17. package/lib/element/conclusion.js +151 -0
  18. package/lib/{ontology → element}/conjecture.js +7 -14
  19. package/lib/element/declaration/combinator.js +161 -0
  20. package/lib/element/declaration/complexType.js +343 -0
  21. package/lib/element/declaration/constructor.js +193 -0
  22. package/lib/element/declaration/metavariable.js +193 -0
  23. package/lib/element/declaration/simpleType.js +240 -0
  24. package/lib/element/declaration/typePrefix.js +179 -0
  25. package/lib/element/declaration/variable.js +196 -0
  26. package/lib/{ontology → element}/declaration.js +9 -9
  27. package/lib/element/deduction.js +207 -0
  28. package/lib/element/derivation.js +96 -0
  29. package/lib/element/equality.js +275 -0
  30. package/lib/element/equivalence.js +316 -0
  31. package/lib/element/equivalences.js +264 -0
  32. package/lib/{ontology → element}/error.js +12 -12
  33. package/lib/element/frame.js +387 -0
  34. package/lib/element/hypothesis.js +195 -0
  35. package/lib/element/judgement.js +243 -0
  36. package/lib/element/label.js +198 -0
  37. package/lib/{ontology → element}/lemma.js +7 -7
  38. package/lib/{ontology → element}/metaLemma.js +8 -8
  39. package/lib/element/metaLemmaMetatheorem.js +234 -0
  40. package/lib/{ontology → element}/metaType.js +18 -11
  41. package/lib/{ontology → element}/metatheorem.js +8 -8
  42. package/lib/element/metavariable.js +459 -0
  43. package/lib/element/parameter.js +108 -0
  44. package/lib/element/premise.js +310 -0
  45. package/lib/element/procedureCall.js +243 -0
  46. package/lib/{ontology → element}/procedureReference.js +3 -3
  47. package/lib/{ontology → element}/proof.js +4 -4
  48. package/lib/element/property.js +128 -0
  49. package/lib/element/propertyRelation.js +195 -0
  50. package/lib/element/reference.js +304 -0
  51. package/lib/element/rule.js +373 -0
  52. package/lib/element/section.js +255 -0
  53. package/lib/element/signature.js +217 -0
  54. package/lib/element/statement/combinator/bracketed.js +166 -0
  55. package/lib/element/statement/combinator.js +105 -0
  56. package/lib/element/statement.js +386 -0
  57. package/lib/element/step.js +274 -0
  58. package/lib/element/subDerivation.js +137 -0
  59. package/lib/element/subproof.js +240 -0
  60. package/lib/element/substitution/frame.js +216 -0
  61. package/lib/{ontology → element}/substitution/reference.js +5 -4
  62. package/lib/{ontology → element}/substitution/statement.js +7 -6
  63. package/lib/element/substitution/term.js +265 -0
  64. package/lib/element/substitution.js +206 -0
  65. package/lib/element/substitutions.js +425 -0
  66. package/lib/element/supposition.js +323 -0
  67. package/lib/{ontology → element/term}/constructor/bracketed.js +11 -7
  68. package/lib/element/term/constructor.js +172 -0
  69. package/lib/element/term.js +322 -0
  70. package/lib/{ontology → element}/theorem.js +8 -8
  71. package/lib/element/type.js +490 -0
  72. package/lib/element/typePrefix.js +99 -0
  73. package/lib/element/variable.js +345 -0
  74. package/lib/elements.js +27 -0
  75. package/lib/mixins/statement/verify.js +14 -14
  76. package/lib/mixins/step/unify.js +12 -12
  77. package/lib/mixins/term/verify.js +4 -4
  78. package/lib/node/substitution/frame.js +15 -1
  79. package/lib/node/substitution/statement.js +37 -1
  80. package/lib/node/substitution/term.js +15 -1
  81. package/lib/preamble.js +63 -63
  82. package/lib/process/assign.js +58 -0
  83. package/lib/process/instantiate.js +68 -7
  84. package/lib/process/unify.js +26 -26
  85. package/lib/process/verify.js +21 -21
  86. package/lib/utilities/brackets.js +9 -18
  87. package/lib/utilities/customGrammar.js +1 -1
  88. package/lib/utilities/element.js +1128 -0
  89. package/lib/utilities/json.js +32 -32
  90. package/lib/utilities/node.js +49 -61
  91. package/lib/utilities/statement.js +83 -0
  92. package/lib/utilities/string.js +98 -56
  93. package/package.json +6 -6
  94. package/src/action/verify.js +8 -1
  95. package/src/context/file.js +9 -39
  96. package/src/context/local.js +5 -11
  97. package/src/context/nominal.js +30 -0
  98. package/src/context/release.js +1 -1
  99. package/src/context/temporary.js +6 -63
  100. package/src/{ontology → element}/assertion/contained.js +4 -25
  101. package/src/{ontology → element}/assertion/defined.js +7 -26
  102. package/src/{ontology → element}/assertion/property.js +7 -26
  103. package/src/{ontology → element}/assertion/satisfies.js +5 -53
  104. package/src/{ontology → element}/assertion/subproof.js +3 -32
  105. package/src/{ontology → element}/assertion/type.js +7 -26
  106. package/src/{ontology → element}/assertion.js +6 -6
  107. package/src/{ontology → element}/assumption.js +3 -27
  108. package/src/{ontology → element}/axiom.js +4 -11
  109. package/src/{ontology/topLevelAssertion.js → element/axiomLemmaTheoremConjecture.js} +9 -105
  110. package/src/{ontology → element}/conclusion.js +4 -19
  111. package/src/{ontology → element}/conjecture.js +4 -11
  112. package/src/{ontology → element}/declaration/combinator.js +3 -14
  113. package/src/{ontology → element}/declaration/complexType.js +3 -19
  114. package/src/{ontology → element}/declaration/constructor.js +3 -14
  115. package/src/{ontology → element}/declaration/metavariable.js +3 -39
  116. package/src/{ontology → element}/declaration/simpleType.js +3 -19
  117. package/src/{ontology → element}/declaration/typePrefix.js +3 -15
  118. package/src/{ontology → element}/declaration/variable.js +3 -14
  119. package/src/{ontology → element}/declaration.js +6 -6
  120. package/src/{ontology → element}/deduction.js +9 -22
  121. package/src/{ontology → element}/derivation.js +2 -32
  122. package/src/{ontology → element}/equality.js +18 -42
  123. package/src/{ontology → element}/equivalence.js +17 -2
  124. package/src/{ontology → element}/equivalences.js +1 -1
  125. package/src/{ontology → element}/error.js +8 -8
  126. package/src/{ontology → element}/frame.js +8 -56
  127. package/src/{ontology → element}/hypothesis.js +5 -5
  128. package/src/{ontology → element}/judgement.js +7 -7
  129. package/src/{ontology → element}/label.js +3 -3
  130. package/src/{ontology → element}/lemma.js +4 -4
  131. package/src/{ontology → element}/metaLemma.js +5 -5
  132. package/src/{ontology/topLevelMetaAssertion.js → element/metaLemmaMetatheorem.js} +11 -11
  133. package/src/{ontology → element}/metaType.js +11 -7
  134. package/src/{ontology → element}/metatheorem.js +5 -5
  135. package/src/{ontology → element}/metavariable.js +10 -60
  136. package/src/{ontology → element}/parameter.js +1 -1
  137. package/src/{ontology → element}/premise.js +14 -14
  138. package/src/{ontology → element}/procedureCall.js +4 -4
  139. package/src/{ontology → element}/procedureReference.js +1 -1
  140. package/src/{ontology → element}/proof.js +3 -3
  141. package/src/{ontology → element}/property.js +7 -15
  142. package/src/{ontology → element}/propertyRelation.js +5 -11
  143. package/src/{ontology → element}/reference.js +5 -19
  144. package/src/{ontology → element}/rule.js +13 -13
  145. package/src/{ontology → element}/section.js +10 -10
  146. package/src/{ontology → element}/signature.js +12 -15
  147. package/src/element/statement/combinator/bracketed.js +38 -0
  148. package/src/element/statement/combinator.js +59 -0
  149. package/src/{ontology → element}/statement.js +11 -27
  150. package/src/{ontology → element}/step.js +10 -44
  151. package/src/{ontology → element}/subDerivation.js +3 -24
  152. package/src/{ontology → element}/subproof.js +3 -43
  153. package/src/{ontology → element}/substitution/frame.js +4 -21
  154. package/src/{ontology → element}/substitution/reference.js +3 -3
  155. package/src/{ontology → element}/substitution/statement.js +6 -10
  156. package/src/{ontology → element}/substitution/term.js +7 -23
  157. package/src/{ontology → element}/substitutions.js +1 -1
  158. package/src/{ontology → element}/supposition.js +10 -10
  159. package/src/{ontology → element/term}/constructor/bracketed.js +12 -13
  160. package/src/element/term/constructor.js +82 -0
  161. package/src/{ontology → element}/term.js +6 -38
  162. package/src/{ontology → element}/theorem.js +5 -5
  163. package/src/{ontology → element}/type.js +17 -64
  164. package/src/{ontology → element}/typePrefix.js +8 -12
  165. package/src/{ontology → element}/variable.js +9 -20
  166. package/src/elements.js +13 -0
  167. package/src/mixins/statement/verify.js +4 -4
  168. package/src/mixins/step/unify.js +6 -6
  169. package/src/mixins/term/verify.js +3 -3
  170. package/src/node/substitution/frame.js +14 -0
  171. package/src/node/substitution/statement.js +40 -0
  172. package/src/node/substitution/term.js +15 -0
  173. package/src/preamble.js +62 -62
  174. package/src/process/assign.js +59 -0
  175. package/src/process/instantiate.js +67 -15
  176. package/src/process/unify.js +37 -39
  177. package/src/process/verify.js +20 -20
  178. package/src/utilities/brackets.js +12 -17
  179. package/src/utilities/customGrammar.js +3 -3
  180. package/src/utilities/element.js +1380 -0
  181. package/src/utilities/json.js +31 -31
  182. package/src/utilities/node.js +56 -64
  183. package/src/utilities/{context.js → statement.js} +10 -39
  184. package/src/utilities/string.js +120 -52
  185. package/lib/assignment/equality.js +0 -62
  186. package/lib/assignment/judgement.js +0 -62
  187. package/lib/assignment/variable.js +0 -64
  188. package/lib/context/bracketed/combinator.js +0 -121
  189. package/lib/context/bracketed/constructor.js +0 -121
  190. package/lib/context/bracketted.js +0 -86
  191. package/lib/context/partial/metavariable.js +0 -180
  192. package/lib/context/partial/statement.js +0 -180
  193. package/lib/context/partial/term.js +0 -192
  194. package/lib/context/partial/variable.js +0 -192
  195. package/lib/context/partial.js +0 -93
  196. package/lib/ontology/assertion/contained.js +0 -357
  197. package/lib/ontology/assertion/defined.js +0 -331
  198. package/lib/ontology/assertion/property.js +0 -313
  199. package/lib/ontology/assertion/satisfies.js +0 -302
  200. package/lib/ontology/assertion/subproof.js +0 -240
  201. package/lib/ontology/assertion/type.js +0 -308
  202. package/lib/ontology/assumption.js +0 -383
  203. package/lib/ontology/axiom.js +0 -339
  204. package/lib/ontology/combinator/bracketed.js +0 -202
  205. package/lib/ontology/combinator.js +0 -155
  206. package/lib/ontology/conclusion.js +0 -201
  207. package/lib/ontology/constructor.js +0 -185
  208. package/lib/ontology/declaration/combinator.js +0 -210
  209. package/lib/ontology/declaration/complexType.js +0 -393
  210. package/lib/ontology/declaration/constructor.js +0 -242
  211. package/lib/ontology/declaration/metavariable.js +0 -257
  212. package/lib/ontology/declaration/simpleType.js +0 -290
  213. package/lib/ontology/declaration/typePrefix.js +0 -228
  214. package/lib/ontology/declaration/variable.js +0 -245
  215. package/lib/ontology/deduction.js +0 -215
  216. package/lib/ontology/derivation.js +0 -155
  217. package/lib/ontology/equality.js +0 -288
  218. package/lib/ontology/equivalence.js +0 -295
  219. package/lib/ontology/equivalences.js +0 -264
  220. package/lib/ontology/frame.js +0 -419
  221. package/lib/ontology/hypothesis.js +0 -190
  222. package/lib/ontology/judgement.js +0 -248
  223. package/lib/ontology/label.js +0 -198
  224. package/lib/ontology/metavariable.js +0 -502
  225. package/lib/ontology/parameter.js +0 -108
  226. package/lib/ontology/premise.js +0 -310
  227. package/lib/ontology/procedureCall.js +0 -243
  228. package/lib/ontology/property.js +0 -166
  229. package/lib/ontology/propertyRelation.js +0 -202
  230. package/lib/ontology/reference.js +0 -315
  231. package/lib/ontology/rule.js +0 -373
  232. package/lib/ontology/section.js +0 -255
  233. package/lib/ontology/signature.js +0 -217
  234. package/lib/ontology/statement.js +0 -398
  235. package/lib/ontology/step.js +0 -295
  236. package/lib/ontology/subDerivation.js +0 -147
  237. package/lib/ontology/subproof.js +0 -265
  238. package/lib/ontology/substitution/frame.js +0 -261
  239. package/lib/ontology/substitution/term.js +0 -269
  240. package/lib/ontology/substitution.js +0 -206
  241. package/lib/ontology/substitutions.js +0 -425
  242. package/lib/ontology/supposition.js +0 -323
  243. package/lib/ontology/term.js +0 -351
  244. package/lib/ontology/topLevelAssertion.js +0 -431
  245. package/lib/ontology/topLevelMetaAssertion.js +0 -234
  246. package/lib/ontology/type.js +0 -556
  247. package/lib/ontology/typePrefix.js +0 -99
  248. package/lib/ontology/variable.js +0 -343
  249. package/lib/ontology.js +0 -27
  250. package/lib/utilities/assignments.js +0 -19
  251. package/lib/utilities/context.js +0 -101
  252. package/lib/utilities/subproof.js +0 -42
  253. package/lib/utilities/type.js +0 -40
  254. package/src/assignment/equality.js +0 -29
  255. package/src/assignment/judgement.js +0 -29
  256. package/src/assignment/variable.js +0 -34
  257. package/src/context/bracketed/combinator.js +0 -31
  258. package/src/context/bracketed/constructor.js +0 -31
  259. package/src/context/bracketted.js +0 -41
  260. package/src/context/partial/metavariable.js +0 -39
  261. package/src/context/partial/statement.js +0 -39
  262. package/src/context/partial/term.js +0 -49
  263. package/src/context/partial/variable.js +0 -49
  264. package/src/context/partial.js +0 -71
  265. package/src/ontology/combinator/bracketed.js +0 -38
  266. package/src/ontology/combinator.js +0 -72
  267. package/src/ontology/constructor.js +0 -105
  268. package/src/ontology.js +0 -13
  269. package/src/utilities/assignments.js +0 -11
  270. package/src/utilities/subproof.js +0 -56
  271. package/src/utilities/type.js +0 -35
  272. /package/src/{ontology → element}/substitution.js +0 -0
@@ -0,0 +1,195 @@
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 _elements = /*#__PURE__*/ _interop_require_wildcard(require("../elements"));
12
+ function _class_call_check(instance, Constructor) {
13
+ if (!(instance instanceof Constructor)) {
14
+ throw new TypeError("Cannot call a class as a function");
15
+ }
16
+ }
17
+ function _defineProperties(target, props) {
18
+ for(var i = 0; i < props.length; i++){
19
+ var descriptor = props[i];
20
+ descriptor.enumerable = descriptor.enumerable || false;
21
+ descriptor.configurable = true;
22
+ if ("value" in descriptor) descriptor.writable = true;
23
+ Object.defineProperty(target, descriptor.key, descriptor);
24
+ }
25
+ }
26
+ function _create_class(Constructor, protoProps, staticProps) {
27
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
28
+ if (staticProps) _defineProperties(Constructor, staticProps);
29
+ return Constructor;
30
+ }
31
+ function _define_property(obj, key, value) {
32
+ if (key in obj) {
33
+ Object.defineProperty(obj, key, {
34
+ value: value,
35
+ enumerable: true,
36
+ configurable: true,
37
+ writable: true
38
+ });
39
+ } else {
40
+ obj[key] = value;
41
+ }
42
+ return obj;
43
+ }
44
+ function _getRequireWildcardCache(nodeInterop) {
45
+ if (typeof WeakMap !== "function") return null;
46
+ var cacheBabelInterop = new WeakMap();
47
+ var cacheNodeInterop = new WeakMap();
48
+ return (_getRequireWildcardCache = function(nodeInterop) {
49
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
50
+ })(nodeInterop);
51
+ }
52
+ function _interop_require_wildcard(obj, nodeInterop) {
53
+ if (!nodeInterop && obj && obj.__esModule) {
54
+ return obj;
55
+ }
56
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
57
+ return {
58
+ default: obj
59
+ };
60
+ }
61
+ var cache = _getRequireWildcardCache(nodeInterop);
62
+ if (cache && cache.has(obj)) {
63
+ return cache.get(obj);
64
+ }
65
+ var newObj = {
66
+ __proto__: null
67
+ };
68
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
69
+ for(var key in obj){
70
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
71
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
72
+ if (desc && (desc.get || desc.set)) {
73
+ Object.defineProperty(newObj, key, desc);
74
+ } else {
75
+ newObj[key] = obj[key];
76
+ }
77
+ }
78
+ }
79
+ newObj.default = obj;
80
+ if (cache) {
81
+ cache.set(obj, newObj);
82
+ }
83
+ return newObj;
84
+ }
85
+ var _PropertyRelation;
86
+ var _default = (0, _elements.define)((_PropertyRelation = /*#__PURE__*/ function() {
87
+ function PropertyRelation(string, node, property, term) {
88
+ _class_call_check(this, PropertyRelation);
89
+ this.string = string;
90
+ this.node = node;
91
+ this.property = property;
92
+ this.term = term;
93
+ }
94
+ _create_class(PropertyRelation, [
95
+ {
96
+ key: "getString",
97
+ value: function getString() {
98
+ return this.string;
99
+ }
100
+ },
101
+ {
102
+ key: "getNode",
103
+ value: function getNode() {
104
+ return this.node;
105
+ }
106
+ },
107
+ {
108
+ key: "getProperty",
109
+ value: function getProperty() {
110
+ return this.property;
111
+ }
112
+ },
113
+ {
114
+ key: "getTerm",
115
+ value: function getTerm() {
116
+ return this.term;
117
+ }
118
+ },
119
+ {
120
+ key: "isEqualTo",
121
+ value: function isEqualTo(propertyRelation) {
122
+ var propertyRelationNode = propertyRelation.getNode(), matches = this.node.match(propertyRelationNode), equalTo = matches; ///
123
+ return equalTo;
124
+ }
125
+ },
126
+ {
127
+ key: "verify",
128
+ value: function verify(context) {
129
+ var verifies = false;
130
+ var propertyRelationString = this.string; ///
131
+ context.trace("Verifying the '".concat(propertyRelationString, "' property relation..."));
132
+ var termVerifies = this.verifyTerm(context);
133
+ if (termVerifies) {
134
+ var propertyVerifies = this.verifyProperty(context);
135
+ verifies = propertyVerifies;
136
+ }
137
+ if (verifies) {
138
+ context.debug("...verified the '".concat(propertyRelationString, "' property relation."));
139
+ }
140
+ return verifies;
141
+ }
142
+ },
143
+ {
144
+ key: "verifyTerm",
145
+ value: function verifyTerm(context) {
146
+ var termVerifies;
147
+ var termString = this.term.getString();
148
+ context.trace("Verifying the '".concat(termString, "' term..."));
149
+ termVerifies = this.term.verify(context, function() {
150
+ var verifiesAhead = true;
151
+ return verifiesAhead;
152
+ });
153
+ if (termVerifies) {
154
+ context.debug("...verified the '".concat(termString, "' term."));
155
+ }
156
+ return termVerifies;
157
+ }
158
+ },
159
+ {
160
+ key: "verifyProperty",
161
+ value: function verifyProperty(context) {
162
+ var propertyVerifies;
163
+ var propertyString = this.property.getString();
164
+ context.trace("Verifying the '".concat(propertyString, "' property..."));
165
+ var termType = this.term.getType(), propertyName = this.property.getName(), termTypeProperties = termType.getProperties(), variableTypeProperty = termTypeProperties.find(function(termTypeProperty) {
166
+ var propertyNameMatches = termTypeProperty.matchPropertyName(propertyName);
167
+ if (propertyNameMatches) {
168
+ return true;
169
+ }
170
+ }) || null;
171
+ if (variableTypeProperty === null) {
172
+ var variableString = this.term.getString(), variableTypeString = termType.getString();
173
+ context.debug("The '".concat(propertyName, "' property is not a property of the '").concat(variableString, "' variable's '").concat(variableTypeString, "' type."));
174
+ } else {
175
+ propertyVerifies = true;
176
+ }
177
+ if (propertyVerifies) {
178
+ context.debug("...verified the '".concat(propertyString, "' property."));
179
+ }
180
+ return propertyVerifies;
181
+ }
182
+ }
183
+ ], [
184
+ {
185
+ key: "fromPropertyAssertionNode",
186
+ value: function fromPropertyAssertionNode(propertyAssertionNode, context) {
187
+ var Term = _elements.default.Term, Property = _elements.default.Property, propertyRelationNode = propertyAssertionNode.getPropertyRelationNode(), node = propertyRelationNode, string = context.nodeAsString(node), property = Property.fromPropertyRelationNode(propertyRelationNode, context), term = Term.fromPropertyRelationNode(propertyRelationNode, context), propertyRelation = new PropertyRelation(string, node, property, term);
188
+ return propertyRelation;
189
+ }
190
+ }
191
+ ]);
192
+ return PropertyRelation;
193
+ }(), _define_property(_PropertyRelation, "name", "PropertyRelation"), _PropertyRelation));
194
+
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3Byb3BlcnR5UmVsYXRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBlbGVtZW50cyBmcm9tIFwiLi4vZWxlbWVudHNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBQcm9wZXJ0eVJlbGF0aW9uIHtcbiAgY29uc3RydWN0b3Ioc3RyaW5nLCBub2RlLCBwcm9wZXJ0eSwgdGVybSkge1xuICAgIHRoaXMuc3RyaW5nID0gc3RyaW5nO1xuICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gICAgdGhpcy5wcm9wZXJ0eSA9IHByb3BlcnR5O1xuICAgIHRoaXMudGVybSA9IHRlcm07XG4gIH1cblxuICBnZXRTdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RyaW5nO1xuICB9XG5cbiAgZ2V0Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlO1xuICB9XG5cbiAgZ2V0UHJvcGVydHkoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHk7XG4gIH1cblxuICBnZXRUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLnRlcm07XG4gIH1cblxuICBpc0VxdWFsVG8ocHJvcGVydHlSZWxhdGlvbikge1xuICAgIGNvbnN0IHByb3BlcnR5UmVsYXRpb25Ob2RlID0gcHJvcGVydHlSZWxhdGlvbi5nZXROb2RlKCksXG4gICAgICAgICAgbWF0Y2hlcyA9IHRoaXMubm9kZS5tYXRjaChwcm9wZXJ0eVJlbGF0aW9uTm9kZSksXG4gICAgICAgICAgZXF1YWxUbyA9IG1hdGNoZXM7ICAvLy9cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgdmVyaWZ5KGNvbnRleHQpIHtcbiAgICBsZXQgdmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHByb3BlcnR5UmVsYXRpb25TdHJpbmcgPSB0aGlzLnN0cmluZzsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3Byb3BlcnR5UmVsYXRpb25TdHJpbmd9JyBwcm9wZXJ0eSByZWxhdGlvbi4uLmApO1xuXG4gICAgY29uc3QgdGVybVZlcmlmaWVzID0gdGhpcy52ZXJpZnlUZXJtKGNvbnRleHQpO1xuXG4gICAgaWYgKHRlcm1WZXJpZmllcykge1xuICAgICAgY29uc3QgcHJvcGVydHlWZXJpZmllcyA9IHRoaXMudmVyaWZ5UHJvcGVydHkoY29udGV4dCk7XG5cbiAgICAgIHZlcmlmaWVzID0gcHJvcGVydHlWZXJpZmllcztcbiAgICB9XG5cbiAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtwcm9wZXJ0eVJlbGF0aW9uU3RyaW5nfScgcHJvcGVydHkgcmVsYXRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmaWVzO1xuICB9XG5cbiAgdmVyaWZ5VGVybShjb250ZXh0KSB7XG4gICAgbGV0IHRlcm1WZXJpZmllcztcblxuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSB0aGlzLnRlcm0uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLi4uYCk7XG5cbiAgICB0ZXJtVmVyaWZpZXMgPSB0aGlzLnRlcm0udmVyaWZ5KGNvbnRleHQsICgpID0+IHtcbiAgICAgIGNvbnN0IHZlcmlmaWVzQWhlYWQgPSB0cnVlO1xuXG4gICAgICByZXR1cm4gdmVyaWZpZXNBaGVhZDtcbiAgICB9KTtcblxuICAgIGlmICh0ZXJtVmVyaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybVZlcmlmaWVzO1xuICB9XG5cbiAgdmVyaWZ5UHJvcGVydHkoY29udGV4dCkge1xuICAgIGxldCBwcm9wZXJ0eVZlcmlmaWVzO1xuXG4gICAgY29uc3QgcHJvcGVydHlTdHJpbmcgPSB0aGlzLnByb3BlcnR5LmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtwcm9wZXJ0eVN0cmluZ30nIHByb3BlcnR5Li4uYCk7XG5cbiAgICBjb25zdCB0ZXJtVHlwZSA9IHRoaXMudGVybS5nZXRUeXBlKCksXG4gICAgICAgICAgcHJvcGVydHlOYW1lID0gdGhpcy5wcm9wZXJ0eS5nZXROYW1lKCksXG4gICAgICAgICAgdGVybVR5cGVQcm9wZXJ0aWVzID0gdGVybVR5cGUuZ2V0UHJvcGVydGllcygpLFxuICAgICAgICAgIHZhcmlhYmxlVHlwZVByb3BlcnR5ID0gdGVybVR5cGVQcm9wZXJ0aWVzLmZpbmQoKHRlcm1UeXBlUHJvcGVydHkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5TmFtZU1hdGNoZXMgPSB0ZXJtVHlwZVByb3BlcnR5Lm1hdGNoUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSk7XG5cbiAgICAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICBpZiAodmFyaWFibGVUeXBlUHJvcGVydHkgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHZhcmlhYmxlU3RyaW5nID0gdGhpcy50ZXJtLmdldFN0cmluZygpLFxuICAgICAgICAgICAgdmFyaWFibGVUeXBlU3RyaW5nID0gdGVybVR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHtwcm9wZXJ0eU5hbWV9JyBwcm9wZXJ0eSBpcyBub3QgYSBwcm9wZXJ0eSBvZiB0aGUgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZSdzICcke3ZhcmlhYmxlVHlwZVN0cmluZ30nIHR5cGUuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb3BlcnR5VmVyaWZpZXMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChwcm9wZXJ0eVZlcmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cHJvcGVydHlTdHJpbmd9JyBwcm9wZXJ0eS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcGVydHlWZXJpZmllcztcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJQcm9wZXJ0eVJlbGF0aW9uXCI7XG5cbiAgc3RhdGljIGZyb21Qcm9wZXJ0eUFzc2VydGlvbk5vZGUocHJvcGVydHlBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSB7XG4gICAgY29uc3QgeyBUZXJtLCBQcm9wZXJ0eSB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgcHJvcGVydHlSZWxhdGlvbk5vZGUgPSBwcm9wZXJ0eUFzc2VydGlvbk5vZGUuZ2V0UHJvcGVydHlSZWxhdGlvbk5vZGUoKSxcbiAgICAgICAgICBub2RlID0gcHJvcGVydHlSZWxhdGlvbk5vZGUsICAvLy9cbiAgICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgICBwcm9wZXJ0eSA9IFByb3BlcnR5LmZyb21Qcm9wZXJ0eVJlbGF0aW9uTm9kZShwcm9wZXJ0eVJlbGF0aW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgdGVybSA9IFRlcm0uZnJvbVByb3BlcnR5UmVsYXRpb25Ob2RlKHByb3BlcnR5UmVsYXRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICBwcm9wZXJ0eVJlbGF0aW9uID0gbmV3IFByb3BlcnR5UmVsYXRpb24oc3RyaW5nLCBub2RlLCBwcm9wZXJ0eSwgdGVybSk7XG5cbiAgICByZXR1cm4gcHJvcGVydHlSZWxhdGlvbjtcbiAgfVxufSk7XG4iXSwibmFtZXMiOlsiZGVmaW5lIiwiUHJvcGVydHlSZWxhdGlvbiIsInN0cmluZyIsIm5vZGUiLCJwcm9wZXJ0eSIsInRlcm0iLCJnZXRTdHJpbmciLCJnZXROb2RlIiwiZ2V0UHJvcGVydHkiLCJnZXRUZXJtIiwiaXNFcXVhbFRvIiwicHJvcGVydHlSZWxhdGlvbiIsInByb3BlcnR5UmVsYXRpb25Ob2RlIiwibWF0Y2hlcyIsIm1hdGNoIiwiZXF1YWxUbyIsInZlcmlmeSIsImNvbnRleHQiLCJ2ZXJpZmllcyIsInByb3BlcnR5UmVsYXRpb25TdHJpbmciLCJ0cmFjZSIsInRlcm1WZXJpZmllcyIsInZlcmlmeVRlcm0iLCJwcm9wZXJ0eVZlcmlmaWVzIiwidmVyaWZ5UHJvcGVydHkiLCJkZWJ1ZyIsInRlcm1TdHJpbmciLCJ2ZXJpZmllc0FoZWFkIiwicHJvcGVydHlTdHJpbmciLCJ0ZXJtVHlwZSIsImdldFR5cGUiLCJwcm9wZXJ0eU5hbWUiLCJnZXROYW1lIiwidGVybVR5cGVQcm9wZXJ0aWVzIiwiZ2V0UHJvcGVydGllcyIsInZhcmlhYmxlVHlwZVByb3BlcnR5IiwiZmluZCIsInRlcm1UeXBlUHJvcGVydHkiLCJwcm9wZXJ0eU5hbWVNYXRjaGVzIiwibWF0Y2hQcm9wZXJ0eU5hbWUiLCJ2YXJpYWJsZVN0cmluZyIsInZhcmlhYmxlVHlwZVN0cmluZyIsImZyb21Qcm9wZXJ0eUFzc2VydGlvbk5vZGUiLCJwcm9wZXJ0eUFzc2VydGlvbk5vZGUiLCJUZXJtIiwiZWxlbWVudHMiLCJQcm9wZXJ0eSIsImdldFByb3BlcnR5UmVsYXRpb25Ob2RlIiwibm9kZUFzU3RyaW5nIiwiZnJvbVByb3BlcnR5UmVsYXRpb25Ob2RlIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBTUE7OztlQUFBOzs7Z0VBSnFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFJckIsV0FBZUEsSUFBQUEsZ0JBQU0scUNBQUM7YUFBTUMsaUJBQ2RDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxRQUFRLEVBQUVDLElBQUk7Z0NBRGRKO1FBRXhCLElBQUksQ0FBQ0MsTUFBTSxHQUFHQTtRQUNkLElBQUksQ0FBQ0MsSUFBSSxH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
@@ -0,0 +1,304 @@
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 _elements = /*#__PURE__*/ _interop_require_wildcard(require("../elements"));
12
+ var _metaType = require(".//metaType");
13
+ var _unify = require("../process/unify");
14
+ var _json = require("../utilities/json");
15
+ function _class_call_check(instance, Constructor) {
16
+ if (!(instance instanceof Constructor)) {
17
+ throw new TypeError("Cannot call a class as a function");
18
+ }
19
+ }
20
+ function _defineProperties(target, props) {
21
+ for(var i = 0; i < props.length; i++){
22
+ var descriptor = props[i];
23
+ descriptor.enumerable = descriptor.enumerable || false;
24
+ descriptor.configurable = true;
25
+ if ("value" in descriptor) descriptor.writable = true;
26
+ Object.defineProperty(target, descriptor.key, descriptor);
27
+ }
28
+ }
29
+ function _create_class(Constructor, protoProps, staticProps) {
30
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
31
+ if (staticProps) _defineProperties(Constructor, staticProps);
32
+ return Constructor;
33
+ }
34
+ function _define_property(obj, key, value) {
35
+ if (key in obj) {
36
+ Object.defineProperty(obj, key, {
37
+ value: value,
38
+ enumerable: true,
39
+ configurable: true,
40
+ writable: true
41
+ });
42
+ } else {
43
+ obj[key] = value;
44
+ }
45
+ return obj;
46
+ }
47
+ function _getRequireWildcardCache(nodeInterop) {
48
+ if (typeof WeakMap !== "function") return null;
49
+ var cacheBabelInterop = new WeakMap();
50
+ var cacheNodeInterop = new WeakMap();
51
+ return (_getRequireWildcardCache = function(nodeInterop) {
52
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
53
+ })(nodeInterop);
54
+ }
55
+ function _interop_require_wildcard(obj, nodeInterop) {
56
+ if (!nodeInterop && obj && obj.__esModule) {
57
+ return obj;
58
+ }
59
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
60
+ return {
61
+ default: obj
62
+ };
63
+ }
64
+ var cache = _getRequireWildcardCache(nodeInterop);
65
+ if (cache && cache.has(obj)) {
66
+ return cache.get(obj);
67
+ }
68
+ var newObj = {
69
+ __proto__: null
70
+ };
71
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
72
+ for(var key in obj){
73
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
74
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
75
+ if (desc && (desc.get || desc.set)) {
76
+ Object.defineProperty(newObj, key, desc);
77
+ } else {
78
+ newObj[key] = obj[key];
79
+ }
80
+ }
81
+ }
82
+ newObj.default = obj;
83
+ if (cache) {
84
+ cache.set(obj, newObj);
85
+ }
86
+ return newObj;
87
+ }
88
+ var _Reference;
89
+ var _default = (0, _elements.define)((_Reference = /*#__PURE__*/ function() {
90
+ function Reference(metavariable) {
91
+ _class_call_check(this, Reference);
92
+ this.metavariable = metavariable;
93
+ }
94
+ _create_class(Reference, [
95
+ {
96
+ key: "getMetavariable",
97
+ value: function getMetavariable() {
98
+ return this.metavariable;
99
+ }
100
+ },
101
+ {
102
+ key: "getName",
103
+ value: function getName() {
104
+ return this.metavariable.getName();
105
+ }
106
+ },
107
+ {
108
+ key: "getString",
109
+ value: function getString() {
110
+ return this.metavariable.getString();
111
+ }
112
+ },
113
+ {
114
+ key: "getMetavariableName",
115
+ value: function getMetavariableName() {
116
+ var metavariableName = this.metavariable.getName();
117
+ return metavariableName;
118
+ }
119
+ },
120
+ {
121
+ key: "getMetavariableNode",
122
+ value: function getMetavariableNode() {
123
+ var metavariableNode = this.metavariable.getNode();
124
+ return metavariableNode;
125
+ }
126
+ },
127
+ {
128
+ key: "isEqualTo",
129
+ value: function isEqualTo(refernece) {
130
+ var metavariable = refernece.getMetavariable(), metavariableEqualToMetvariable = this.metavariable.isEqualTo(metavariable), equalTo = metavariableEqualToMetvariable; ///
131
+ return equalTo;
132
+ }
133
+ },
134
+ {
135
+ key: "isMetavariableEqualToMetavariable",
136
+ value: function isMetavariableEqualToMetavariable(metavariable) {
137
+ return this.metavariable.isEqualTo(metavariable);
138
+ }
139
+ },
140
+ {
141
+ key: "matchMetavariableName",
142
+ value: function matchMetavariableName(metavariableName) {
143
+ return this.metavariable.matchMetavariableName(metavariableName);
144
+ }
145
+ },
146
+ {
147
+ key: "matchMetavariableNode",
148
+ value: function matchMetavariableNode(metavariableNode) {
149
+ var metavariableNodeA = metavariableNode; ///
150
+ metavariableNode = this.metavariable.getNode();
151
+ var metavariableNodeB = metavariableNode, matches = metavariableNodeA.match(metavariableNodeB), metavariableNodeMatches = matches; ///
152
+ return metavariableNodeMatches; ///
153
+ }
154
+ },
155
+ {
156
+ key: "verify",
157
+ value: function verify(context) {
158
+ var verifies = false;
159
+ var referenceString = this.getString(); ///
160
+ context.trace("Verifying the '".concat(referenceString, "' reference..."));
161
+ if (!verifies) {
162
+ var metavariableVerifies = this.verifyMetavariable(context);
163
+ verifies = metavariableVerifies; ///
164
+ }
165
+ if (!verifies) {
166
+ var reference = this, labelPresent = context.isLabelPresentByReference(reference);
167
+ verifies = labelPresent; ///
168
+ }
169
+ if (verifies) {
170
+ var reference1 = this; ///
171
+ context.addReference(reference1);
172
+ context.debug("...verified the '".concat(referenceString, "' reference."));
173
+ }
174
+ return verifies;
175
+ }
176
+ },
177
+ {
178
+ key: "verifyMetavariable",
179
+ value: function verifyMetavariable(context) {
180
+ var metavariableVerifies;
181
+ var metaType = _metaType.referenceMetaType, metavariableVerifiesGivenMetaType = this.metavariable.verifyGivenMetaType(metaType, context);
182
+ metavariableVerifies = metavariableVerifiesGivenMetaType; ///
183
+ return metavariableVerifies;
184
+ }
185
+ },
186
+ {
187
+ key: "unifyLabel",
188
+ value: function unifyLabel(label, substitutions, context) {
189
+ var labelUnifies;
190
+ var specificContext = context; ///
191
+ context = label.getContext();
192
+ var generalContext = context; ///
193
+ context = specificContext; ///
194
+ var reference = this, labelString = label.getString(), referenceString = reference.getString();
195
+ context.trace("Unifying the '".concat(labelString, "' label with the '").concat(referenceString, "' reference..."));
196
+ var labelMetavariable = label.getMetavariable(), generalMetavariable = this.metavariable, specificMetavariable = labelMetavariable, metavariableUnifiesIntrinsically = (0, _unify.unifyMetavariableIntrinsically)(generalMetavariable, specificMetavariable, substitutions, generalContext, specificContext);
197
+ labelUnifies = metavariableUnifiesIntrinsically; ///
198
+ if (labelUnifies) {
199
+ context.debug("...unified the '".concat(labelString, "' label with the '").concat(referenceString, "' reference."));
200
+ }
201
+ return labelUnifies;
202
+ }
203
+ },
204
+ {
205
+ key: "unifyMetavariable",
206
+ value: function unifyMetavariable(metavariable, context) {
207
+ var metavariableUnifies;
208
+ var reference = this, metavariableString = metavariable.getString(), referenceString = reference.getString();
209
+ context.trace("Unifying the '".concat(metavariableString, "' metavariable with the '").concat(referenceString, "' reference..."));
210
+ var Substitutions = _elements.default.Substitutions, substitutions = Substitutions.fromNothing(), generalContext = context, specificContext = context, generalMetavariable = this.metavariable, specificMetavariable = metavariable, metavariableUnifiesIntrinsically = (0, _unify.unifyMetavariableIntrinsically)(generalMetavariable, specificMetavariable, substitutions, generalContext, specificContext);
211
+ metavariableUnifies = metavariableUnifiesIntrinsically; ///
212
+ if (metavariableUnifies) {
213
+ context.debug("...unified the '".concat(metavariableString, "' metavariable with the '").concat(referenceString, "' reference."));
214
+ }
215
+ return metavariableUnifies;
216
+ }
217
+ },
218
+ {
219
+ key: "unifyMetaLemmaMetatheorem",
220
+ value: function unifyMetaLemmaMetatheorem(metaLemmaMetatheorem, context) {
221
+ var metaLemmaMetatheoremUnifies;
222
+ var reference = this, referenceString = reference.getString(), metaLemmaMetatheoremString = metaLemmaMetatheorem.getString();
223
+ context.trace("Unifying the '".concat(metaLemmaMetatheoremString, "' meta-lemma or metatheorem with the '").concat(referenceString, "' reference..."));
224
+ var Substitutions = _elements.default.Substitutions, label = metaLemmaMetatheorem.getLabel(), substitutions = Substitutions.fromNothing(), labelUnifies = this.unifyLabel(label, substitutions, context);
225
+ metaLemmaMetatheoremUnifies = labelUnifies; ///
226
+ if (metaLemmaMetatheoremUnifies) {
227
+ context.trace("...unified the '".concat(metaLemmaMetatheoremString, "' meta-lemma or metatheorem with the '").concat(referenceString, "' reference."));
228
+ }
229
+ return metaLemmaMetatheoremUnifies;
230
+ }
231
+ },
232
+ {
233
+ key: "toJSON",
234
+ value: function toJSON() {
235
+ var metavariableJSON = (0, _json.metavariableToMetavariableJSON)(this.metavariable), metavariable = metavariableJSON, json = {
236
+ metavariable: metavariable
237
+ };
238
+ return json;
239
+ }
240
+ }
241
+ ], [
242
+ {
243
+ key: "fromJSON",
244
+ value: function fromJSON(json, context) {
245
+ var metavariable = (0, _json.metavariableFromJSON)(json, context), reference = new Reference(metavariable);
246
+ return reference;
247
+ }
248
+ },
249
+ {
250
+ key: "fromStepNode",
251
+ value: function fromStepNode(stepNode, context) {
252
+ var reference = null;
253
+ var referenceNode = stepNode.getReferenceNode();
254
+ if (referenceNode !== null) {
255
+ reference = referenceFromReferenceNode(referenceNode, context);
256
+ }
257
+ return reference;
258
+ }
259
+ },
260
+ {
261
+ key: "fromAssumptionNode",
262
+ value: function fromAssumptionNode(assumptionNode, context) {
263
+ var reference = null;
264
+ var metavariableNode = assumptionNode.getMetavariableNode();
265
+ if (metavariableNode !== null) {
266
+ reference = referenceFromMetavariableNode(metavariableNode, context);
267
+ }
268
+ return reference;
269
+ }
270
+ },
271
+ {
272
+ key: "fromMetavariableNode",
273
+ value: function fromMetavariableNode(metavariableNode, context) {
274
+ var reference = referenceFromMetavariableNode(metavariableNode, context);
275
+ return reference;
276
+ }
277
+ },
278
+ {
279
+ key: "fromProcedureCallNode",
280
+ value: function fromProcedureCallNode(procedureCallNode, context) {
281
+ var reference = null;
282
+ var referenceNode = procedureCallNode.getReferenceNode();
283
+ if (referenceNode !== null) {
284
+ reference = referenceFromReferenceNode(referenceNode, context);
285
+ }
286
+ return reference;
287
+ }
288
+ },
289
+ {
290
+ key: "fromSatisfiesAssertionNode",
291
+ value: function fromSatisfiesAssertionNode(satisfiesAssertionNode, context) {
292
+ var metavariableNode = satisfiesAssertionNode.getMetavariableNode(), reference = referenceFromMetavariableNode(metavariableNode, context);
293
+ return reference;
294
+ }
295
+ }
296
+ ]);
297
+ return Reference;
298
+ }(), _define_property(_Reference, "name", "Reference"), _Reference));
299
+ function referenceFromMetavariableNode(metavariableNode, context) {
300
+ var Reference = _elements.default.Reference, Metavariable = _elements.default.Metavariable, metavariable = Metavariable.fromMetavariableNode(metavariableNode, context), reference = new Reference(metavariable);
301
+ return reference;
302
+ }
303
+
304
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3JlZmVyZW5jZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IHJlZmVyZW5jZU1ldGFUeXBlIH0gZnJvbSBcIi4vL21ldGFUeXBlXCI7XG5pbXBvcnQgeyB1bmlmeU1ldGF2YXJpYWJsZUludHJpbnNpY2FsbHkgfSBmcm9tIFwiLi4vcHJvY2Vzcy91bmlmeVwiO1xuaW1wb3J0IHsgbWV0YXZhcmlhYmxlRnJvbUpTT04sIG1ldGF2YXJpYWJsZVRvTWV0YXZhcmlhYmxlSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgUmVmZXJlbmNlIHtcbiAgY29uc3RydWN0b3IobWV0YXZhcmlhYmxlKSB7XG4gICAgdGhpcy5tZXRhdmFyaWFibGUgPSBtZXRhdmFyaWFibGU7XG4gIH1cblxuICBnZXRNZXRhdmFyaWFibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgZ2V0TmFtZSgpIHsgcmV0dXJuIHRoaXMubWV0YXZhcmlhYmxlLmdldE5hbWUoKTsgfVxuXG4gIGdldE5hbWUoKSB7IHJldHVybiB0aGlzLm1ldGF2YXJpYWJsZS5nZXROYW1lKCk7IH1cblxuICBnZXRTdHJpbmcoKSB7IHJldHVybiB0aGlzLm1ldGF2YXJpYWJsZS5nZXRTdHJpbmcoKTsgfVxuXG4gIGdldE1ldGF2YXJpYWJsZU5hbWUoKSB7XG4gICAgY29uc3QgbWV0YXZhcmlhYmxlTmFtZSA9IHRoaXMubWV0YXZhcmlhYmxlLmdldE5hbWUoKTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVOYW1lO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlTm9kZSgpIHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlID0gdGhpcy5tZXRhdmFyaWFibGUuZ2V0Tm9kZSgpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZU5vZGU7XG4gIH1cblxuICBpc0VxdWFsVG8ocmVmZXJuZWNlKSB7XG4gICAgY29uc3QgbWV0YXZhcmlhYmxlID0gcmVmZXJuZWNlLmdldE1ldGF2YXJpYWJsZSgpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZUVxdWFsVG9NZXR2YXJpYWJsZSA9IHRoaXMubWV0YXZhcmlhYmxlLmlzRXF1YWxUbyhtZXRhdmFyaWFibGUpLFxuICAgICAgICAgIGVxdWFsVG8gPSBtZXRhdmFyaWFibGVFcXVhbFRvTWV0dmFyaWFibGU7IC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBpc01ldGF2YXJpYWJsZUVxdWFsVG9NZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlKSB7IHJldHVybiB0aGlzLm1ldGF2YXJpYWJsZS5pc0VxdWFsVG8obWV0YXZhcmlhYmxlKTsgfVxuXG4gIG1hdGNoTWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKSB7IHJldHVybiB0aGlzLm1ldGF2YXJpYWJsZS5tYXRjaE1ldGF2YXJpYWJsZU5hbWUobWV0YXZhcmlhYmxlTmFtZSk7IH1cblxuICBtYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVBID0gbWV0YXZhcmlhYmxlTm9kZTsgLy8vXG5cbiAgICBtZXRhdmFyaWFibGVOb2RlID0gdGhpcy5tZXRhdmFyaWFibGUuZ2V0Tm9kZSgpO1xuXG4gICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZUIgPSBtZXRhdmFyaWFibGVOb2RlLCAvLy9cbiAgICAgICAgICBtYXRjaGVzID0gbWV0YXZhcmlhYmxlTm9kZUEubWF0Y2gobWV0YXZhcmlhYmxlTm9kZUIpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gbWF0Y2hlczsgIC8vL1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzOyAvLy9cbiAgfVxuXG4gIHZlcmlmeShjb250ZXh0KSB7XG4gICAgbGV0IHZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCByZWZlcmVuY2VTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cmVmZXJlbmNlU3RyaW5nfScgcmVmZXJlbmNlLi4uYCk7XG5cbiAgICBpZiAoIXZlcmlmaWVzKSB7XG4gICAgICBjb25zdCBtZXRhdmFyaWFibGVWZXJpZmllcyA9IHRoaXMudmVyaWZ5TWV0YXZhcmlhYmxlKGNvbnRleHQpO1xuXG4gICAgICB2ZXJpZmllcyA9IG1ldGF2YXJpYWJsZVZlcmlmaWVzOyAvLy9cbiAgICB9XG5cbiAgICBpZiAoIXZlcmlmaWVzKSB7XG4gICAgICBjb25zdCByZWZlcmVuY2UgPSB0aGlzLCAvLy9cbiAgICAgICAgICAgIGxhYmVsUHJlc2VudCA9IGNvbnRleHQuaXNMYWJlbFByZXNlbnRCeVJlZmVyZW5jZShyZWZlcmVuY2UpO1xuXG4gICAgICB2ZXJpZmllcyA9IGxhYmVsUHJlc2VudDsgIC8vL1xuICAgIH1cblxuICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgY29uc3QgcmVmZXJlbmNlID0gdGhpczsgLy8vXG5cbiAgICAgIGNvbnRleHQuYWRkUmVmZXJlbmNlKHJlZmVyZW5jZSk7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyByZWZlcmVuY2UuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmaWVzO1xuICB9XG5cbiAgdmVyaWZ5TWV0YXZhcmlhYmxlKGNvbnRleHQpIHtcbiAgICBsZXQgbWV0YXZhcmlhYmxlVmVyaWZpZXM7XG5cbiAgICBjb25zdCBtZXRhVHlwZSA9IHJlZmVyZW5jZU1ldGFUeXBlLCAvLy9cbiAgICAgICAgICBtZXRhdmFyaWFibGVWZXJpZmllc0dpdmVuTWV0YVR5cGUgPSB0aGlzLm1ldGF2YXJpYWJsZS52ZXJpZnlHaXZlbk1ldGFUeXBlKG1ldGFUeXBlLCBjb250ZXh0KTtcblxuICAgIG1ldGF2YXJpYWJsZVZlcmlmaWVzID0gbWV0YXZhcmlhYmxlVmVyaWZpZXNHaXZlbk1ldGFUeXBlOyAvLy9cblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVWZXJpZmllcztcbiAgfVxuXG4gIHVuaWZ5TGFiZWwobGFiZWwsIHN1YnN0aXR1dGlvbnMsIGNvbnRleHQpIHtcbiAgICBsZXQgbGFiZWxVbmlmaWVzO1xuXG4gICAgY29uc3Qgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgLy8vXG5cbiAgICBjb250ZXh0ID0gbGFiZWwuZ2V0Q29udGV4dCgpO1xuXG4gICAgY29uc3QgZ2VuZXJhbENvbnRleHQgPSBjb250ZXh0OyAgLy8vXG5cbiAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICBjb25zdCByZWZlcmVuY2UgPSB0aGlzLCAvLy9cbiAgICAgICAgICBsYWJlbFN0cmluZyA9IGxhYmVsLmdldFN0cmluZygpLFxuICAgICAgICAgIHJlZmVyZW5jZVN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtsYWJlbFN0cmluZ30nIGxhYmVsIHdpdGggdGhlICcke3JlZmVyZW5jZVN0cmluZ30nIHJlZmVyZW5jZS4uLmApO1xuXG4gICAgY29uc3QgbGFiZWxNZXRhdmFyaWFibGUgPSBsYWJlbC5nZXRNZXRhdmFyaWFibGUoKSxcbiAgICAgICAgICBnZW5lcmFsTWV0YXZhcmlhYmxlID0gdGhpcy5tZXRhdmFyaWFibGUsICAvLy9cbiAgICAgICAgICBzcGVjaWZpY01ldGF2YXJpYWJsZSA9IGxhYmVsTWV0YXZhcmlhYmxlLCAvLy9cbiAgICAgICAgICBtZXRhdmFyaWFibGVVbmlmaWVzSW50cmluc2ljYWxseSA9IHVuaWZ5TWV0YXZhcmlhYmxlSW50cmluc2ljYWxseShnZW5lcmFsTWV0YXZhcmlhYmxlLCBzcGVjaWZpY01ldGF2YXJpYWJsZSwgc3Vic3RpdHV0aW9ucywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICBsYWJlbFVuaWZpZXMgPSBtZXRhdmFyaWFibGVVbmlmaWVzSW50cmluc2ljYWxseTsgLy8vXG5cbiAgICBpZiAobGFiZWxVbmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtsYWJlbFN0cmluZ30nIGxhYmVsIHdpdGggdGhlICcke3JlZmVyZW5jZVN0cmluZ30nIHJlZmVyZW5jZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGFiZWxVbmlmaWVzO1xuICB9XG5cbiAgdW5pZnlNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlLCBjb250ZXh0KSB7XG4gICAgbGV0IG1ldGF2YXJpYWJsZVVuaWZpZXM7XG5cbiAgICBjb25zdCByZWZlcmVuY2UgPSB0aGlzLCAvLy9cbiAgICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBtZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgcmVmZXJlbmNlU3RyaW5nID0gcmVmZXJlbmNlLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZSB3aXRoIHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyByZWZlcmVuY2UuLi5gKTtcblxuICAgIGNvbnN0IHsgU3Vic3RpdHV0aW9ucyB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgc3Vic3RpdHV0aW9ucyA9IFN1YnN0aXR1dGlvbnMuZnJvbU5vdGhpbmcoKSxcbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IGNvbnRleHQsIC8vL1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQsICAvLy9cbiAgICAgICAgICBnZW5lcmFsTWV0YXZhcmlhYmxlID0gdGhpcy5tZXRhdmFyaWFibGUsICAvLy9cbiAgICAgICAgICBzcGVjaWZpY01ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZSwgLy8vXG4gICAgICAgICAgbWV0YXZhcmlhYmxlVW5pZmllc0ludHJpbnNpY2FsbHkgPSB1bmlmeU1ldGF2YXJpYWJsZUludHJpbnNpY2FsbHkoZ2VuZXJhbE1ldGF2YXJpYWJsZSwgc3BlY2lmaWNNZXRhdmFyaWFibGUsIHN1YnN0aXR1dGlvbnMsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgbWV0YXZhcmlhYmxlVW5pZmllcyA9IG1ldGF2YXJpYWJsZVVuaWZpZXNJbnRyaW5zaWNhbGx5OyAvLy9cblxuICAgIGlmIChtZXRhdmFyaWFibGVVbmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBtZXRhdmFyaWFibGUgd2l0aCB0aGUgJyR7cmVmZXJlbmNlU3RyaW5nfScgcmVmZXJlbmNlLmApO1xuICAgIH1cblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVVbmlmaWVzO1xuICB9XG5cbiAgdW5pZnlNZXRhTGVtbWFNZXRhdGhlb3JlbShtZXRhTGVtbWFNZXRhdGhlb3JlbSwgY29udGV4dCkge1xuICAgIGxldCBtZXRhTGVtbWFNZXRhdGhlb3JlbVVuaWZpZXM7XG5cbiAgICBjb25zdCByZWZlcmVuY2UgPSB0aGlzLCAvLy9cbiAgICAgICAgICByZWZlcmVuY2VTdHJpbmcgPSByZWZlcmVuY2UuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgbWV0YUxlbW1hTWV0YXRoZW9yZW1TdHJpbmcgPSBtZXRhTGVtbWFNZXRhdGhlb3JlbS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHttZXRhTGVtbWFNZXRhdGhlb3JlbVN0cmluZ30nIG1ldGEtbGVtbWEgb3IgbWV0YXRoZW9yZW0gd2l0aCB0aGUgJyR7cmVmZXJlbmNlU3RyaW5nfScgcmVmZXJlbmNlLi4uYCk7XG5cbiAgICBjb25zdCB7IFN1YnN0aXR1dGlvbnMgfSA9IGVsZW1lbnRzLFxuICAgICAgICAgIGxhYmVsID0gbWV0YUxlbW1hTWV0YXRoZW9yZW0uZ2V0TGFiZWwoKSxcbiAgICAgICAgICBzdWJzdGl0dXRpb25zID0gU3Vic3RpdHV0aW9ucy5mcm9tTm90aGluZygpLFxuICAgICAgICAgIGxhYmVsVW5pZmllcyA9IHRoaXMudW5pZnlMYWJlbChsYWJlbCwgc3Vic3RpdHV0aW9ucywgY29udGV4dCk7XG5cbiAgICBtZXRhTGVtbWFNZXRhdGhlb3JlbVVuaWZpZXMgPSBsYWJlbFVuaWZpZXM7ICAvLy9cblxuICAgIGlmIChtZXRhTGVtbWFNZXRhdGhlb3JlbVVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQudHJhY2UoYC4uLnVuaWZpZWQgdGhlICcke21ldGFMZW1tYU1ldGF0aGVvcmVtU3RyaW5nfScgbWV0YS1sZW1tYSBvciBtZXRhdGhlb3JlbSB3aXRoIHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyByZWZlcmVuY2UuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1ldGFMZW1tYU1ldGF0aGVvcmVtVW5pZmllcztcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVKU09OID0gbWV0YXZhcmlhYmxlVG9NZXRhdmFyaWFibGVKU09OKHRoaXMubWV0YXZhcmlhYmxlKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSBtZXRhdmFyaWFibGVKU09OLCAgLy8vXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIG1ldGF2YXJpYWJsZVxuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJSZWZlcmVuY2VcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZUZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIHJlZmVyZW5jZSA9IG5ldyBSZWZlcmVuY2UobWV0YXZhcmlhYmxlKTtcblxuICAgIHJldHVybiByZWZlcmVuY2U7XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0ZXBOb2RlKHN0ZXBOb2RlLCBjb250ZXh0KSB7XG4gICAgbGV0IHJlZmVyZW5jZSA9IG51bGw7XG5cbiAgICBjb25zdCByZWZlcmVuY2VOb2RlID0gc3RlcE5vZGUuZ2V0UmVmZXJlbmNlTm9kZSgpO1xuXG4gICAgaWYgKHJlZmVyZW5jZU5vZGUgIT09IG51bGwpIHtcbiAgICAgIHJlZmVyZW5jZSA9IHJlZmVyZW5jZUZyb21SZWZlcmVuY2VOb2RlKHJlZmVyZW5jZU5vZGUsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiByZWZlcmVuY2U7XG4gIH1cblxuICBzdGF0aWMgZnJvbUFzc3VtcHRpb25Ob2RlKGFzc3VtcHRpb25Ob2RlLCBjb250ZXh0KSB7XG4gICAgbGV0IHJlZmVyZW5jZSA9IG51bGw7XG5cbiAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlID0gYXNzdW1wdGlvbk5vZGUuZ2V0TWV0YXZhcmlhYmxlTm9kZSgpO1xuXG4gICAgaWYgKG1ldGF2YXJpYWJsZU5vZGUgIT09IG51bGwpIHtcbiAgICAgIHJlZmVyZW5jZSA9IHJlZmVyZW5jZUZyb21NZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiByZWZlcmVuY2U7XG4gIH1cblxuICBzdGF0aWMgZnJvbU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSwgY29udGV4dCkge1xuICAgIGNvbnN0IHJlZmVyZW5jZSA9IHJlZmVyZW5jZUZyb21NZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHJlZmVyZW5jZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tUHJvY2VkdXJlQ2FsbE5vZGUocHJvY2VkdXJlQ2FsbE5vZGUsIGNvbnRleHQpIHtcbiAgICBsZXQgcmVmZXJlbmNlID0gbnVsbDtcblxuICAgIGNvbnN0IHJlZmVyZW5jZU5vZGUgPSBwcm9jZWR1cmVDYWxsTm9kZS5nZXRSZWZlcmVuY2VOb2RlKCk7XG5cbiAgICBpZiAocmVmZXJlbmNlTm9kZSAhPT0gbnVsbCkge1xuICAgICAgcmVmZXJlbmNlID0gcmVmZXJlbmNlRnJvbVJlZmVyZW5jZU5vZGUocmVmZXJlbmNlTm9kZSwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZmVyZW5jZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU2F0aXNmaWVzQXNzZXJ0aW9uTm9kZShzYXRpc2ZpZXNBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSB7XG4gICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZSA9IHNhdGlzZmllc0Fzc2VydGlvbk5vZGUuZ2V0TWV0YXZhcmlhYmxlTm9kZSgpLFxuICAgICAgICAgIHJlZmVyZW5jZSA9IHJlZmVyZW5jZUZyb21NZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHJlZmVyZW5jZTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIHJlZmVyZW5jZUZyb21NZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBSZWZlcmVuY2UsIE1ldGF2YXJpYWJsZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgcmVmZXJlbmNlID0gbmV3IFJlZmVyZW5jZShtZXRhdmFyaWFibGUpO1xuXG4gIHJldHVybiByZWZlcmVuY2U7XG59XG4iXSwibmFtZXMiOlsiZGVmaW5lIiwiUmVmZXJlbmNlIiwibWV0YXZhcmlhYmxlIiwiZ2V0TWV0YXZhcmlhYmxlIiwiZ2V0TmFtZSIsImdldFN0cmluZyIsImdldE1ldGF2YXJpYWJsZU5hbWUiLCJtZXRhdmFyaWFibGVOYW1lIiwiZ2V0TWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJnZXROb2RlIiwiaXNFcXVhbFRvIiwicmVmZXJuZWNlIiwibWV0YXZhcmlhYmxlRXF1YWxUb01ldHZhcmlhYmxlIiwiZXF1YWxUbyIsImlzTWV0YXZhcmlhYmxlRXF1YWxUb01ldGF2YXJpYWJsZSIsIm1hdGNoTWV0YXZhcmlhYmxlTmFtZSIsIm1hdGNoTWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGVBIiwibWV0YXZhcmlhYmxlTm9kZUIiLCJtYXRjaGVzIiwibWF0Y2giLCJtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyIsInZlcmlmeSIsImNvbnRleHQiLCJ2ZXJpZmllcyIsInJlZmVyZW5jZVN0cmluZyIsInRyYWNlIiwibWV0YXZhcmlhYmxlVmVyaWZpZXMiLCJ2ZXJpZnlNZXRhdmFyaWFibGUiLCJyZWZlcmVuY2UiLCJsYWJlbFByZXNlbnQiLCJpc0xhYmVsUHJlc2VudEJ5UmVmZXJlbmNlIiwiYWRkUmVmZXJlbmNlIiwiZGVidWciLCJtZXRhVHlwZSIsInJlZmVyZW5jZU1ldGFUeXBlIiwibWV0YXZhcmlhYmxlVmVyaWZpZXNHaXZlbk1ldGFUeXBlIiwidmVyaWZ5R2l2ZW5NZXRhVHlwZSIsInVuaWZ5TGFiZWwiLCJsYWJlbCIsInN1YnN0aXR1dGlvbnMiLCJsYWJlbFVuaWZpZXMiLCJzcGVjaWZpY0NvbnRleHQiLCJnZXRDb250ZXh0IiwiZ2VuZXJhbENvbnRleHQiLCJsYWJlbFN0cmluZyIsImxhYmVsTWV0YXZhcmlhYmxlIiwiZ2VuZXJhbE1ldGF2YXJpYWJsZSIsInNwZWNpZmljTWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlVW5pZmllc0ludHJpbnNpY2FsbHkiLCJ1bmlmeU1ldGF2YXJpYWJsZUludHJpbnNpY2FsbHkiLCJ1bmlmeU1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZVVuaWZpZXMiLCJtZXRhdmFyaWFibGVTdHJpbmciLCJTdWJzdGl0dXRpb25zIiwiZWxlbWVudHMiLCJmcm9tTm90aGluZyIsInVuaWZ5TWV0YUxlbW1hTWV0YXRoZW9yZW0iLCJtZXRhTGVtbWFNZXRhdGhlb3JlbSIsIm1ldGFMZW1tYU1ldGF0aGVvcmVtVW5pZmllcyIsIm1ldGFMZW1tYU1ldGF0aGVvcmVtU3RyaW5nIiwiZ2V0TGFiZWwiLCJ0b0pTT04iLCJtZXRhdmFyaWFibGVKU09OIiwibWV0YXZhcmlhYmxlVG9NZXRhdmFyaWFibGVKU09OIiwianNvbiIsImZyb21KU09OIiwibWV0YXZhcmlhYmxlRnJvbUpTT04iLCJmcm9tU3RlcE5vZGUiLCJzdGVwTm9kZSIsInJlZmVyZW5jZU5vZGUiLCJnZXRSZWZlcmVuY2VOb2RlIiwicmVmZXJlbmNlRnJvbVJlZmVyZW5jZU5vZGUiLCJmcm9tQXNzdW1wdGlvbk5vZGUiLCJhc3N1bXB0aW9uTm9kZSIsInJlZmVyZW5jZUZyb21NZXRhdmFyaWFibGVOb2RlIiwiZnJvbU1ldGF2YXJpYWJsZU5vZGUiLCJmcm9tUHJvY2VkdXJlQ2FsbE5vZGUiLCJwcm9jZWR1cmVDYWxsTm9kZSIsImZyb21TYXRpc2ZpZXNBc3NlcnRpb25Ob2RlIiwic2F0aXNmaWVzQXNzZXJ0aW9uTm9kZSIsIm5hbWUiLCJNZXRhdmFyaWFibGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVNBOzs7ZUFBQTs7O2dFQVBxQjt3QkFHYTtxQkFDYTtvQkFDc0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVyRSxXQUFlQSxJQUFBQSxnQkFBTSw4QkFBQzthQUFNQyxVQUNkQyxZQUFZO2dDQURFRDtRQUV4QixJQUFJLENBQUNDLFlBQVksR0FBR0E7Ozs7WUFHdEJDLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0QsWUFBWTtZQUMxQjs7O1lBRUFFLEtBQUFBO21CQUVBQSxTQUFBQTtnQkFBWSxPQUFPLElBQUksQ0FBQ0YsWUFBWSxDQUFDRSxPQUFPO1lBQUk7OztZQUVoREMsS0FBQUE7bUJBQUFB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